@kelceyp/caw-server 1.0.29 → 1.0.30

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.
Files changed (2) hide show
  1. package/dist/main.js +4 -4
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -494,7 +494,7 @@ globstar while`,$,P,K,w,T),this.matchOne($.slice(P),K.slice(w),q))return this.de
494
494
  content=entity_content,
495
495
  content_rowid=entity_id
496
496
  )
497
- `.execute($)};var NZ6=()=>new Date().toISOString(),c6=NZ6;var RZ6=async($,K,q,Y)=>{if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirst())await $.insertInto("sequences").values({scope_type:K,scope_id:q,type_code:Y,next_value:1}).execute();let z=await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirstOrThrow();return await $.updateTable("sequences").set((W)=>({next_value:W("next_value","+",1)})).where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).execute(),z.next_value},E1=Object.freeze({nextSeq:RZ6});var CZ6=Object.freeze([{name:"agent",label:"Agent",description:"Agent type (claude or codex)"},{name:"model",label:"Model",description:"Model name (optional)"},{name:"status",label:"Status",description:"Job status (pending/running/completed/error)"},{name:"startedAt",label:"Started At",description:"Job start timestamp",primitiveType:"date"},{name:"completedAt",label:"Completed At",description:"Job completion timestamp",primitiveType:"date"},{name:"tokensUsed",label:"Tokens Used",description:"Total tokens used by the job",primitiveType:"int"},{name:"exitCode",label:"Exit Code",description:"Process exit code",primitiveType:"int"},{name:"errorMessage",label:"Error Message",description:"Error message if job failed"},{name:"durationMs",label:"Duration (ms)",description:"Job execution duration in milliseconds",primitiveType:"int"},{name:"totalCostUsd",label:"Total Cost (USD)",description:"API cost in USD",primitiveType:"float"},{name:"numTurns",label:"Number of Turns",description:"Number of agent conversation turns",primitiveType:"int"},{name:"sessionId",label:"Session ID",description:"Agent session ID for conversation continuity"},{name:"workingDirectory",label:"Working Directory",description:"Working directory for job execution (optional, defaults to projectPath)"},{name:"pid",label:"PID",description:"Process ID of the running job",primitiveType:"int"},{name:"objectId",label:"Object ID",description:"ID of the entity this job is associated with"},{name:"streaming",label:"Streaming",description:"Enable realtime output streaming (true/false)"}]),FT=CZ6;var DZ6=[{code:"f",name:"Folder",subtype:null},{code:"f",name:"Document Root Folder",subtype:"root_d"},{code:"f",name:"Template Root Folder",subtype:"root_t"},{code:"f",name:"Story Root Folder",subtype:"root_s"},{code:"f",name:"Job Root Folder",subtype:"root_j"},{code:"f",name:"Tasks Folder",subtype:"tasks"},{code:"d",name:"Document",subtype:null},{code:"d",name:"Task",subtype:"task"},{code:"d",name:"Cartridge",subtype:"cartridge"},{code:"t",name:"Template",subtype:null},{code:"t",name:"Prompt",subtype:"prompt"},{code:"s",name:"Story",subtype:null},{code:"j",name:"Job",subtype:null},{code:"v",name:"Version",subtype:null},{code:"n",name:"field_definition",subtype:null},{code:"a",name:"asset",subtype:null}],R78=async($)=>{return(await $.selectFrom("entity_types").select("id").limit(1).execute()).length>0},i1=async($,K,q=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",K).where((J)=>q?J("subtype","=",q):J("subtype","is",null)).executeTakeFirstOrThrow()).id},jM=async($,K,q,Y)=>{let J=c6(),W={d:"root_d",t:"root_t",s:"root_s",j:"root_j"}[Y],H={d:"Documents",t:"Templates",s:"Stories",j:"Jobs"}[Y],O=await i1($,"f",W);if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst())await $.insertInto("sequences").values({scope_type:"store",scope_id:K,type_code:"f",next_value:1}).execute();let P=await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst();await $.updateTable("sequences").set((v)=>({next_value:v("next_value","+",1)})).where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").execute();let w=`${q}f${P.next_value}`,T=await $.insertInto("entities").values({store_id:K,object_id:w,entity_type_id:O,type_code:"f",seq:P.next_value,parent_folder_id:null,parent_object_id:null,name:H,created_at:J,updated_at:J}).returning("id").executeTakeFirstOrThrow();await $.insertInto("folders").values({entity_id:T.id}).execute();let j={d:"document",t:"template",s:"story",j:"job"}[Y];return T.id},hZ6=async($)=>{for(let K of DZ6)await $.insertInto("entity_types").values(K).execute()},EZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await E1.nextSeq($,"store",K,"n"),W=`${q}n${z}`;await $.insertInto("field_definitions").values({store_id:K,object_id:W,entity_type_id:J,type_code:"n",seq:z,owner_entity_id:null,name:"state",label:"State",description:"Workflow state",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},SZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","task"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"state",label:"State",description:"Task workflow state",primitive_type:"string",required:1,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},LZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null);for(let z of FT){let W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,name:z.name,label:z.label,description:z.description,primitive_type:z.primitiveType||"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},IZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await E1.nextSeq($,"store",K,"n"),W=`${q}n${z}`;await $.insertInto("field_definitions").values({store_id:K,object_id:W,entity_type_id:J,type_code:"n",seq:z,owner_entity_id:null,name:"default",label:"Default Field",description:"Auto-created for ad-hoc fields without explicit definitions",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},vM=Object.freeze(["prep","spec","design","plan","build","review","done"]),Oz=Object.freeze(["waiting","ready","in-progress","done"]),xZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"f","tasks"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"states",label:"States",description:"Ordered list of valid task states",primitive_type:"string",required:1,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},gZ6=async($,K,q,Y)=>{let J=c6(),z=await i1($,"n",null),W=await i1($,"f","root_s"),Z=await E1.nextSeq($,"store",K,"n"),H=`${q}n${Z}`,X=(await $.insertInto("field_definitions").values({store_id:K,object_id:H,entity_type_id:z,type_code:"n",seq:Z,owner_entity_id:null,owner_entity_type_id:W,name:"states",label:"States",description:"Ordered list of valid story states",primitive_type:"string",required:1,multiplicity:"multi",is_system:1,created_at:J,updated_at:J}).returning("id").executeTakeFirstOrThrow()).id;for(let P=0;P<vM.length;P++)await $.insertInto("string_fields").values({entity_id:Y,field_definition_id:X,value:vM[P],ordinal:P}).execute()},bZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","task"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"dependsOn",label:"Depends On",description:"Tasks that block this task",primitive_type:"object_ref",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},yZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","cartridge"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"synopsis",label:"Synopsis",description:"Brief description of the cartridge",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},uZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","cartridge"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"relatedActivities",label:"Related Activities",description:"Associated activity types",primitive_type:"string",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},mZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"t",null),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"associatedType",label:"Associated Type",description:"Entity types this template is associated with",primitive_type:"string",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},BZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"s",null),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"flag",label:"Flag",description:"Visual indicator for story attention",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},UZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"s",null),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"activeJobCount",label:"Active Job Count",description:"Number of active jobs associated with this story",primitive_type:"int",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},pZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"s",null),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"statusMessage",label:"Status Message",description:"Agent status message displayed in stories list",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},FZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d",null),W=await i1($,"t",null),Z=[{name:"draft_version",label:"Draft Version",description:"Points to current draft version entity"},{name:"latest_published_version",label:"Latest Published Version",description:"Points to most recent published version entity"}];for(let H of[z,W])for(let O of Z){let X=await E1.nextSeq($,"store",K,"n"),P=`${q}n${X}`;await $.insertInto("field_definitions").values({store_id:K,object_id:P,entity_type_id:J,type_code:"n",seq:X,owner_entity_id:null,owner_entity_type_id:H,name:O.name,label:O.label,description:O.description,primitive_type:"object_ref",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},cZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d",null),W=await i1($,"t",null),Z=[{name:"edit_session_id",label:"Edit Session ID",description:"UUID of the editing session",primitiveType:"string"},{name:"edit_started_at",label:"Edit Started At",description:"ISO 8601 timestamp when edit lock was acquired",primitiveType:"date"},{name:"edit_last_activity_at",label:"Edit Last Activity At",description:"ISO 8601 timestamp of last activity",primitiveType:"date"}];for(let H of[z,W])for(let O of Z){let X=await E1.nextSeq($,"store",K,"n"),P=`${q}n${X}`;await $.insertInto("field_definitions").values({store_id:K,object_id:P,entity_type_id:J,type_code:"n",seq:X,owner_entity_id:null,owner_entity_type_id:H,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType,required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},QZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"v",null),W=[{name:"document",label:"Document",description:"Parent document or template entity",primitiveType:"object_ref",required:1},{name:"version_number",label:"Version Number",description:"Version number (1, 2, 3...)",primitiveType:"int",required:1},{name:"published_at",label:"Published At",description:"ISO 8601 timestamp when published (null = draft)",primitiveType:"date",required:0}];for(let Z of W){let H=await E1.nextSeq($,"store",K,"n"),O=`${q}n${H}`;await $.insertInto("field_definitions").values({store_id:K,object_id:O,entity_type_id:J,type_code:"n",seq:H,owner_entity_id:null,owner_entity_type_id:z,name:Z.name,label:Z.label,description:Z.description,primitive_type:Z.primitiveType,required:Z.required,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},lZ6=async($)=>{let K=await $.selectFrom("sequences").select("next_value").where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").executeTakeFirstOrThrow();await $.updateTable("sequences").set((W)=>({next_value:W("next_value","+",1)})).where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").execute();let q=`S${K.next_value}`,Y=c6(),J=await $.insertInto("stores").values({id:K.next_value,object_id:q,type:"local",code:"B",name:"Shared",created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await jM($,J.id,"B","d"),await jM($,J.id,"B","t");let z=await jM($,J.id,"B","s");await jM($,J.id,"B","j"),await IZ6($,J.id,"B"),await EZ6($,J.id,"B"),await LZ6($,J.id,"B"),await SZ6($,J.id,"B"),await bZ6($,J.id,"B"),await yZ6($,J.id,"B"),await uZ6($,J.id,"B"),await gZ6($,J.id,"B",z),await xZ6($,J.id,"B"),await mZ6($,J.id,"B"),await BZ6($,J.id,"B"),await UZ6($,J.id,"B"),await pZ6($,J.id,"B"),await FZ6($,J.id,"B"),await cZ6($,J.id,"B"),await QZ6($,J.id,"B"),await $.insertInto("sequences").values({scope_type:"store",scope_id:J.id,type_code:"v",next_value:1}).execute()},C78=async($)=>{await hZ6($),await $.insertInto("sequences").values([{scope_type:"global",scope_id:null,type_code:"s",next_value:1},{scope_type:"global",scope_id:null,type_code:"p",next_value:1}]).execute(),await lZ6($)};var VM=n6(h78(),1),iZ6=($,K)=>{if($)throw Error(K)},E78=($,K)=>{if(VM.default.null($)||VM.default.undefined($))throw Error(`${K} is required`)},dZ6=($,K)=>{if(E78($,K),VM.default.empty($))throw Error(`${K} cannot be empty`)},nZ6=($,K,...q)=>{if($)throw K(...q)},oZ6={condition:iZ6,nullish:E78,empty:dZ6,factory:nZ6},y=oZ6;var bM6=typeof Bun<"u",yM6=async($)=>{if(bM6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => n6(WP8(),1)),Y=new K($);return Y.exec("PRAGMA journal_mode = WAL"),Y.exec("PRAGMA foreign_keys = ON"),new IK({dialect:new q({database:Y})})}else{let q=new(await import("better-sqlite3")).default($);return q.pragma("journal_mode = WAL"),q.pragma("foreign_keys = ON"),new IK({dialect:new _x({database:q})})}},uM6=($,K)=>{if(!IM6($)){if(!K)throw Error(`Database file not found: ${$}`);xM6(gM6($),{recursive:!0})}},mM6=async($,K)=>{if(!await f78($)){if(!K)throw Error("Database schema not found");await N78($)}},BM6=async($,K)=>{if(!await R78($)){if(!K)throw Error("Database seed data not found");await C78($)}},UM6=($)=>{let{kyselyFactory:K=yM6}=$??{};return Object.freeze({getDb:async(Y,J)=>{if(y.nullish(Y,"databaseFilepath"),Y!==":memory:")uM6(Y,J);let z=await K(Y);return await mM6(z,J),await BM6(z,J),z}})},ZP8={create:UM6};var pM6=($)=>{let{id:K,name:q,createdAt:Y,updatedAt:J}=$,O=Object.freeze({getObjectId:()=>K,getName:()=>q,getCreatedAt:()=>Y,getUpdatedAt:()=>J}),w=Object.freeze({setName:(T)=>{q=T},setUpdatedAt:(T)=>{J=T}});return{entityFns:O,mutationFns:w}},c3=Object.freeze({create:pM6});var FM6=($)=>{let{id:K,name:q,path:Y,createdAt:J,updatedAt:z}=$,{entityFns:W,mutationFns:Z}=c3.create({id:K,name:q,createdAt:J,updatedAt:z}),H=()=>Y,X=Object.freeze({...W,getPath:H,toJSON:()=>({objectId:W.getObjectId(),name:W.getName(),path:H(),createdAt:W.getCreatedAt(),updatedAt:W.getUpdatedAt()})}),w=Object.freeze({...Z,setPath:(T)=>{Y=T}});return{entity:X,mutationApi:w}},HP8=Object.freeze({create:FM6});var cM6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},d6=Object.freeze({create:cM6});var QM6=($)=>$.object_id,OP8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},qk=($)=>{let K=QM6($),q=$.id,{entity:Y,mutationApi:J}=HP8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:J,id:K,pk:q}},lM6=()=>{let $=new Map;return Object.freeze({createProject:async(W,Z,{name:H,path:O},X)=>{let P=c6(),w=await E1.nextSeq(W,"global",null,"p"),T=`P${w}`,G=await W.insertInto("projects").values({id:w,object_id:T,name:H,path:O,created_at:P,updated_at:P}).returningAll().executeTakeFirstOrThrow(),{entity:j,mutationApi:v,id:M,pk:f}=qk(G);return X(()=>{$.set(M,d6.create(j,v,f))}),j},readProject:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=OP8(H);if(X===null)return null;let P=await W.selectFrom("projects").selectAll().where("id","=",X).executeTakeFirst();if(!P)return null;let{entity:w,mutationApi:T,id:G,pk:j}=qk(P);return $.set(G,d6.create(w,T,j)),w},readProjectByObjectId:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=OP8(H);if(X===null)return null;let P=await W.selectFrom("projects").selectAll().where("id","=",X).executeTakeFirst();if(!P)return null;let{entity:w,mutationApi:T,id:G,pk:j}=qk(P);return $.set(G,d6.create(w,T,j)),w},readProjectByPath:async(W,Z,H)=>{let O=await W.selectFrom("projects").selectAll().where("path","=",H).executeTakeFirst();if(!O)return null;let{entity:X,mutationApi:P,id:w,pk:T}=qk(O),G=$.get(w);if(G)return G.getEntity();return $.set(w,d6.create(X,P,T)),X},evictProject:(W)=>{$.delete(W)}})},XP8=Object.freeze({create:lM6});var iM6=()=>{let $=new Map,K=new Map;return Object.freeze({get:(P)=>$.get(P),getByPk:(P)=>{let w=K.get(P);return w?$.get(w):void 0},has:(P)=>$.has(P),set:(P,w)=>{$.set(P,w),K.set(w.getPk(),P)},remove:(P)=>{let w=$.get(P);if(w)K.delete(w.getPk());$.delete(P)},getIdByPk:(P)=>K.get(P),setIdByPk:(P,w)=>K.set(P,w),clear:()=>{$.clear(),K.clear()},entries:()=>$.entries()})},pz=Object.freeze({create:iM6});var CP8=n6(I4(),1);Yk();var nM6=($)=>{let{id:K,name:q,parentId:Y,path:J,createdAt:z,updatedAt:W,publishedVersionNumber:Z,hasDraft:H,draftContent:O,publishedContent:X}=$,{entityFns:P,mutationFns:w}=c3.create({id:K,name:q,createdAt:z,updatedAt:W}),T=new Map,G=Z??null,j=H??!1,v=O??null,M=X??null,f=null,T8=Object.freeze({...P,getParentId:()=>Y,getPath:()=>J,getField:(L6)=>{return T.get(L6)},getFields:()=>{let L6={};for(let[P8,O8]of T.entries())L6[P8]=O8;return L6},getPublishedVersionNumber:()=>G,hasDraftContent:()=>j,getDraftContent:()=>v,getPublishedContent:()=>M,getEditState:()=>f,hasPublished:()=>G>0,isBeingEdited:()=>f!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),s6=Object.freeze({...w,setParentId:(L6)=>{Y=L6},setPath:(L6)=>{J=L6},setField:(L6,P8)=>{T.set(L6,P8)},removeField:(L6)=>{T.delete(L6)},setPublishedVersionNumber:(L6)=>{G=L6},setHasDraft:(L6)=>{j=L6},setDraftContent:(L6)=>{v=L6},setPublishedContent:(L6)=>{M=L6},setEditState:(L6)=>{f=L6}});return{entityFns:T8,mutationFns:s6}},uK=Object.freeze({create:nM6});var wP8=($)=>{let{entityFns:K,mutationFns:q}=uK.create($),Y=$.subtype||null,J=()=>Y,z=()=>K.getParentId()===null,W=()=>!0,H=Object.freeze({...K,getSubtype:J,isRoot:z,getIsFolder:W,toJSON:()=>{let X={};for(let[P,w]of Object.entries(K.getFields()))X[P]=w.toJSON();return{id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),subtype:J(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),isFolder:W(),isRoot:z(),fields:X}}}),O=Object.freeze({...q});return{entity:H,mutationApi:O}},oM6=($,K,q,Y)=>{return wP8({id:K,parentId:q,name:$.name,path:Y,subtype:$.subtype||null,createdAt:$.created_at,updatedAt:$.updated_at})},nq=Object.freeze({create:wP8,createFromRow:oM6});var TP8=($)=>{let{entityFns:K,mutationFns:q}=uK.create($),H=Object.freeze({...K,getTypeCode:()=>"s",getSubtype:()=>null,isStory:()=>!0,getIsFolder:()=>!1,toJSON:()=>{let X={};for(let[P,w]of Object.entries(K.getFields()))X[P]=w.toJSON();return{id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),type:"s",isStory:!0,isFolder:!1,fields:X}}}),O=Object.freeze({...q});return{entity:H,mutationApi:O}},aM6=($,K,q,Y)=>{return TP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},jO=Object.freeze({create:TP8,createFromRow:aM6});var GP8=($)=>{let{entityFns:K,mutationFns:q}=uK.create($),Z=Object.freeze({...K,getTypeCode:()=>"j",isJob:()=>!0,getIsFolder:()=>!1,toJSON:()=>{let O={};for(let[X,P]of Object.entries(K.getFields()))O[X]=P.toJSON();return{id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),type:"j",isJob:!0,isFolder:!1,fields:O}}}),H=Object.freeze({...q});return{entity:Z,mutationApi:H}},rM6=($,K,q,Y)=>{return GP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},Jk=Object.freeze({create:GP8,createFromRow:rM6});var jP8=($)=>{let{entityFns:K,mutationFns:q}=c3.create({id:$.id,name:$.name||$.originalFilename,createdAt:$.createdAt,updatedAt:$.updatedAt}),Y=$.hash,J=$.mimeType,z=$.sizeBytes,W=$.originalFilename,Z=$.widthPx,H=$.heightPx,O=$.displayWidth,X=$.displayHeight,E=Object.freeze({...K,getTypeCode:()=>"a",isAsset:()=>!0,getHash:()=>Y,getMimeType:()=>J,getSizeBytes:()=>z,getOriginalFilename:()=>W,getWidthPx:()=>Z,getHeightPx:()=>H,getDisplayWidth:()=>O,getDisplayHeight:()=>X,toJSON:()=>({id:K.getObjectId(),type:"a",hash:Y,mimeType:J,sizeBytes:z,originalFilename:W,widthPx:Z,heightPx:H,displayWidth:O,displayHeight:X,createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt()})}),C=Object.freeze({...q});return{entity:E,mutationApi:C}},sM6=($,K)=>{return jP8({id:K,name:$.name||$.original_filename,hash:$.hash,mimeType:$.mime_type,sizeBytes:$.size_bytes,originalFilename:$.original_filename,widthPx:$.width_px,heightPx:$.height_px,displayWidth:$.display_width,displayHeight:$.display_height,createdAt:$.created_at,updatedAt:$.updated_at})},zk=Object.freeze({create:jP8,createFromRow:sM6});var vP8=Object.freeze(["string","object_ref","int","text","date","float"]),tM6=($)=>{let{id:K,name:q,ownerEntityId:Y,label:J,description:z,primitiveType:W,required:Z,multiplicity:H,isSystem:O,allowedValues:X,createdAt:P,updatedAt:w}=$;if(!vP8.includes(W))throw Error(`Invalid primitive type: "${W}". Valid types are: ${vP8.join(", ")}`);let{entityFns:T,mutationFns:G}=c3.create({id:K,name:q,createdAt:P,updatedAt:w}),j=()=>Y,v=()=>J,M=()=>z,f=()=>W,k=()=>Z,N=()=>H,R=()=>O,E=()=>X??null,g=Object.freeze({...T,getOwnerEntityId:j,getLabel:v,getDescription:M,getPrimitiveType:f,getRequired:k,getMultiplicity:N,getIsSystem:R,getAllowedValues:E,toJSON:()=>({id:T.getObjectId(),ownerEntityId:j(),name:T.getName(),label:v(),description:M(),primitiveType:f(),required:k(),multiplicity:N(),isSystem:R(),allowedValues:E(),createdAt:T.getCreatedAt(),updatedAt:T.getUpdatedAt()})}),S=Object.freeze({...G});return{entity:g,mutationApi:S}},wu=Object.freeze({create:tM6});var eM6=({definition:$,values:K=[]})=>{let q=$,Y=[...K];if(q.getMultiplicity()==="single"&&Y.length>1)throw Error(`Field "${q.getName()}" is single-valued but received ${Y.length} values`);let J=(T=0)=>{return Y[T]},z=()=>{return[...Y]},W=()=>{return q},Z=()=>{return q.getMultiplicity()==="multi"};return Object.freeze({getValue:J,getValues:z,getDefinition:W,isMultiValued:Z,isRequired:()=>{return q.getRequired()},getType:()=>{return q.getPrimitiveType()},getLabel:()=>{return q.getLabel()||q.getName()},getName:()=>{return q.getName()},toJSON:()=>{if(Z())return Y;else return Y[0]}})},Wk=Object.freeze({create:eM6});Z4();Z4();var J_6=($)=>{let K=$.trim();y.factory(!K,I.validation,"Folder name cannot be empty","EMPTY_NAME"),y.factory(K.length>255,I.validation,"Folder name cannot exceed 255 characters","NAME_TOO_LONG");let q=/[/\\:*?"<>|]/;return y.factory(q.test(K),I.validation,'Folder name contains invalid characters: /\\:*?"<>|',"INVALID_CHARS"),K},z_6=($)=>{return $.getParentId()===null},Q3=Object.freeze({validateFolderName:J_6,isRootFolder:z_6});Z4();var W_6=($)=>{if(!$||$.length<3)return null;let K=$[0],q=$[1],Y=parseInt($.slice(2),10);if(isNaN(Y))return null;return{storeCode:K,typeCode:q,seq:Y}},Z_6=($,K,q)=>`${$}${K}${q}`,H_6=($,K)=>{y.factory($!==K,I.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},VO=Object.freeze({parseId:W_6,buildId:Z_6,validateStoreCode:H_6});var VP8=($)=>{let{subtype:K,...q}=$,{entityFns:Y,mutationFns:J}=uK.create(q),z=()=>"d",W=()=>K??null,H=Object.freeze({...Y,getTypeCode:z,getSubtype:W,toJSON:()=>{let X={};for(let[P,w]of Object.entries(Y.getFields()))X[P]=w.toJSON();return{id:Y.getObjectId(),parentId:Y.getParentId(),name:Y.getName(),path:Y.getPath(),publishedVersionNumber:Y.getPublishedVersionNumber(),hasDraft:Y.hasDraftContent(),draftContent:Y.getDraftContent(),publishedContent:Y.getPublishedContent(),editState:Y.getEditState(),createdAt:Y.getCreatedAt(),updatedAt:Y.getUpdatedAt(),versionCount:Y.getVersionCount(),isFolder:Y.getIsFolder(),type:z(),subtype:W(),hasPublished:Y.hasPublished(),isBeingEdited:Y.isBeingEdited(),fields:X}}}),O=Object.freeze({...J});return{entity:H,mutationApi:O}},O_6=($,K,q,Y,J,z,W=null,Z=null)=>{return VP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:J,hasDraft:z,draftContent:W,publishedContent:Z,createdAt:$.created_at,updatedAt:$.updated_at,subtype:$.subtype||null})},AP8=Object.freeze({create:VP8,createFromRow:O_6});var MP8=($)=>{let{subtype:K,...q}=$,{entityFns:Y,mutationFns:J}=uK.create(q),z=()=>"t",W=()=>K??null,H=Object.freeze({...Y,getTypeCode:z,getSubtype:W,toJSON:()=>{let X={};for(let[P,w]of Object.entries(Y.getFields()))X[P]=w.toJSON();return{id:Y.getObjectId(),parentId:Y.getParentId(),name:Y.getName(),path:Y.getPath(),publishedVersionNumber:Y.getPublishedVersionNumber(),hasDraft:Y.hasDraftContent(),draftContent:Y.getDraftContent(),publishedContent:Y.getPublishedContent(),editState:Y.getEditState(),createdAt:Y.getCreatedAt(),updatedAt:Y.getUpdatedAt(),versionCount:Y.getVersionCount(),isFolder:Y.getIsFolder(),type:z(),subtype:W(),hasPublished:Y.hasPublished(),isBeingEdited:Y.isBeingEdited(),fields:X}}}),O=Object.freeze({...J});return{entity:H,mutationApi:O}},X_6=($,K,q,Y,J,z,W=null,Z=null)=>{return MP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:J,hasDraft:z,draftContent:W,publishedContent:Z,createdAt:$.created_at,updatedAt:$.updated_at,subtype:$.subtype||null})},_P8=Object.freeze({create:MP8,createFromRow:X_6});var kP8=($)=>{let{id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:W,updatedAt:Z}=$,{entityFns:H,mutationFns:O}=c3.create({id:K,name:null,createdAt:W,updatedAt:Z}),X=()=>q,P=()=>Y,w=()=>J,T=()=>z,M=Object.freeze({...H,getDocumentId:X,getVersionNumber:P,getPublishedAt:w,getContent:T,isDraft:()=>J===null,getTypeCode:()=>"v",toJSON:()=>({id:H.getObjectId(),documentId:X(),versionNumber:P(),publishedAt:w(),content:T(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt()})}),f=Object.freeze({...O});return{entity:M,mutationApi:f}},P_6=($,K,q,Y,J,z=null)=>{return kP8({id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:$.created_at,updatedAt:$.updated_at})},fP8=Object.freeze({create:kP8,createFromRow:P_6});Z4();var NP8=($)=>{let K=VO.parseId($);if(!K)throw I.notFound(`Invalid entity ID format: ${$}`,"NOT_FOUND");let{storeCode:q,typeCode:Y,seq:J}=K;return{entityId:`${Y}${J}`,storeCode:q,typeCode:Y,seq:J}},w_6=($)=>{let{typeCode:K}=NP8($);return K},Tu={d:AP8.createFromRow,t:_P8.createFromRow,v:fP8.createFromRow},T_6=($)=>{if($==="s")return Tu.d;if(!$)return Tu.d;let K=Tu[$];if(!K)throw Error(`Unknown content type: ${$}`);return K},G_6=($)=>{return{d:"document",t:"template",v:"version"}[$]||"content"},a6=Object.freeze({resolveEntityId:NP8,getTypeFromId:w_6,getEntityFactory:T_6,getContentTypeLabel:G_6,buildId:VO.buildId,parseId:VO.parseId});var{parseId:r1,buildId:Fz,validateStoreCode:j_6}=VO,{validateFolderName:RP8,isRootFolder:b44}=Q3,w3=CP8.default("caw:stores:db"),gJ=3600000,v_6=({id:$,code:K,name:q,pk:Y,folderCache:J,createdAt:z,updatedAt:W})=>{let Z=new Map,{entityFns:H,mutationFns:O}=c3.create({id:$,name:q,createdAt:z,updatedAt:W}),X=()=>new Set([K]),P=()=>"local",w=()=>K,T=()=>Y,G=()=>({id:$,code:K,name:H.getName(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt(),type:"local"}),j=(x)=>{j_6(x,K)},v=async(x,w8)=>{if(!w8)return null;if(J){let Q=J.get(w8);if(Q)return Q.getPk()}if(!r1(w8))y.factory(!0,I.validation,`Invalid parent folder ID: ${w8}`,"INVALID_ID");let s=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",w8).where("deleted_at","is",null).executeTakeFirst();return s?s.id:null},M=async(x,w8)=>{let u=await x.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",w8).where("deleted_at","is",null).executeTakeFirst();y.factory(!u,I.notFound,`Entity not found for PK ${w8}`,"ENTITY_NOT_FOUND");let s=u.object_id,Q=J?J.get(s):null;if(Q){let H8=Q.getEntity();if(H8.getName()===u.name&&H8.getParentId()===u.parent_object_id)return H8.getPath()}if(!u.parent_object_id)return u.name;let a=J?J.get(u.parent_object_id):null;if(a){let j8=a.getEntity().getPath();return j8?`${j8}/${u.name}`:u.name}let n=[u.name],d=u.parent_folder_id;while(d!==null){let H8=Z.get(d),j8=H8&&J?J.get(H8):null;if(j8){let Y6=j8.getEntity().getPath();if(Y6){let t8=Y6.split("/").filter((F)=>F);n.unshift(...t8)}break}let E8=await x.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",d).where("deleted_at","is",null).executeTakeFirst();y.factory(!E8,I.notFound,`Folder not found for PK ${d}`,"FOLDER_NOT_FOUND"),n.unshift(E8.name),d=E8.parent_folder_id}return n.join("/")},f=async(x,w8)=>{let u=[],s=[w8];while(s.length>0){let Q=s.shift(),a=await x.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",Q).where("deleted_at","is",null).execute();for(let n of a)if(u.push(n.id),n.type_code==="f"||n.type_code==="s"||n.type_code==="j")s.push(n.id)}return u},k=async(x,w8,u,s)=>{let Q=c6(),a=await o6.readEntityTypeId(x,{},"f",s),n=await E1.nextSeq(x,"store",Y,"f"),d=await v(x,w8),H8=Fz(K,"f",n),j8=await x.insertInto("entities").values({store_id:Y,object_id:H8,entity_type_id:a,type_code:"f",seq:n,parent_folder_id:d,parent_object_id:w8,name:u,created_at:Q,updated_at:Q}).returningAll().executeTakeFirstOrThrow();return await x.insertInto("folders").values({entity_id:j8.id}).execute(),{row:{...j8,subtype:s},id:H8}},N=(x)=>{let w8=null;if(x.owner_entity_id!==null)w8=Z.get(x.owner_entity_id)??null;let u=null;if(x.config)try{u=JSON.parse(x.config).allowedValues||null}catch(a){}let{entity:s,mutationApi:Q}=wu.create({id:x.object_id,name:x.name,ownerEntityId:w8,label:x.label,description:x.description,primitiveType:x.primitive_type,required:x.required===1,multiplicity:x.multiplicity,isSystem:x.is_system===1,allowedValues:u,createdAt:x.created_at,updatedAt:x.updated_at});return{entity:s,mutationApi:Q,pk:x.id}},R=(x)=>{let u={int:"int_fields",string:"string_fields",text:"text_fields",date:"date_fields",float:"float_fields",object_ref:"obj_ref_fields"}[x];if(!u)throw Error(`Unknown primitive type: ${x}`);return u},E=async(x,w8,u,s,Q,a=0)=>{let n=R(s);if(s==="object_ref"){let d=await x.selectFrom("entities").select("id").where("object_id","=",Q).where("deleted_at","is",null).executeTakeFirst();if(!d)throw I.validation(`Target entity not found: ${Q}`,"INVALID_REFERENCE");await x.insertInto(n).values({entity_id:w8,field_definition_id:u,target_entity_id:d.id,ordinal:a}).execute()}else{let d=Q;if(s==="int")d=typeof Q==="string"?parseInt(Q,10):Q;else if(s==="float")d=typeof Q==="string"?parseFloat(Q):Q;await x.insertInto(n).values({entity_id:w8,field_definition_id:u,value:d,ordinal:a}).execute()}},C=async(x,w8,u,s)=>{let Q=R(s);await x.deleteFrom(Q).where("entity_id","=",w8).where("field_definition_id","=",u).execute()},g=async(x,w8)=>{let u=new Map,s=await x.selectFrom("int_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'int'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of s){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"int"});u.get(j8.def_id).values.push(j8.value)}let Q=await x.selectFrom("string_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'string'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of Q){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"string"});u.get(j8.def_id).values.push(j8.value)}let a=await x.selectFrom("text_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'text'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of a){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"text"});u.get(j8.def_id).values.push(j8.value)}let n=await x.selectFrom("date_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'date'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of n){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"date"});u.get(j8.def_id).values.push(j8.value)}let d=await x.selectFrom("float_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'float'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of d){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"float"});u.get(j8.def_id).values.push(j8.value)}let H8=await x.selectFrom("obj_ref_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").innerJoin("entities as e","e.id","f.target_entity_id").select(["f.field_definition_id as def_id","e.object_id as value","f.ordinal",f4`'object_ref'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of H8){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"object_ref"});u.get(j8.def_id).values.push(j8.value)}return u},S=new Map,D=!1,L=async(x)=>{if(D)return;let w8=await x.selectFrom("field_definitions").select(["id","object_id","name","primitive_type","owner_entity_type_id"]).where("store_id","=",Y).where("is_system","=",1).execute();for(let u of w8){let s=u.owner_entity_type_id?`${u.name}:${u.owner_entity_type_id}`:u.name;S.set(s,{pk:u.id,objectId:u.object_id,primitiveType:u.primitive_type})}D=!0,w3("System field definition cache initialized with %d entries",S.size)},m=(x,w8=null)=>{if(w8){let u=`${x}:${w8}`;if(S.has(u))return S.get(u)}return S.get(x)||null},c=async(x,w8)=>{let u=new Map,s=await g(x,w8);for(let[a,n]of s.entries()){let d=await x.selectFrom("field_definitions").selectAll().where("id","=",a).executeTakeFirst();if(!d)continue;let H8=null;if(d.config)try{H8=JSON.parse(d.config).allowedValues||null}catch(j8){}u.set(a,{definition:{id:d.object_id,name:d.name,label:d.label,description:d.description,primitiveType:d.primitive_type,required:d.required===1,multiplicity:d.multiplicity,isSystem:d.is_system===1,ownerEntityId:d.owner_entity_id?Z.get(d.owner_entity_id):null,allowedValues:H8,createdAt:d.created_at,updatedAt:d.updated_at},values:n.values})}let Q=[];for(let{definition:a,values:n}of u.values()){let{entity:d}=wu.create(a),H8=Wk.create({definition:d,values:n});Q.push(H8)}return Q},e=async(x,w8)=>{let u=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",1).where("type_code","=","n").executeTakeFirst();if(!u)return null;if(u.owner_entity_id){let Q=await x.selectFrom("entities").select("object_id").where("id","=",u.owner_entity_id).executeTakeFirst();if(Q)Z.set(u.owner_entity_id,Q.object_id)}let s=`${K}n1`;return Z.set(u.id,s),N(u)},_8=async(x,w8,{storeCode:u,parentId:s,name:Q,subtype:a})=>{if(u!==void 0)j(u);if(Q!==null&&Q!==void 0)RP8(Q);let{row:n,id:d}=await k(x,s,Q,a||null),H8=n.id;Z.set(H8,d);let j8=await M(x,H8),{entity:E8,mutationApi:I8}=nq.createFromRow(n,d,s,j8);return{entity:E8,mutationApi:I8,pk:H8}},T8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;if(s.typeCode!=="f"&&s.typeCode!=="s")return null;if(s.typeCode==="s")w3("readFolder called with story ID %s — consider using readStory instead",u);let Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.seq","=",s.seq).where("entities.type_code","=",s.typeCode).where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let{id:a,parent_object_id:n}=Q;Z.set(a,u);let d=await M(x,a),H8=await c(x,a),{entity:j8,mutationApi:E8}=s.typeCode==="s"?jO.createFromRow(Q,u,n,d):nq.createFromRow(Q,u,n,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:a}},d8=async(x,w8,{id:u,name:s,parentId:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid folder ID: ${u}`,"INVALID_ID");let n=["f","s","j"].includes(a.typeCode)?[a.typeCode]:null;y.factory(!n,I.validation,`Invalid type for folder update: ${u}`,"INVALID_TYPE");let d=await x.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","=",a.seq).where("entities.type_code","in",n).where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Folder not found: ${u}`,"FOLDER_NOT_FOUND");let{id:H8,subtype:j8}=d,E8={name:d.name,parentId:d.parent_object_id,path:null};if(Z.set(H8,u),E8.path=await M(x,H8),s!==void 0)RP8(s);let I8={};if(s!==void 0)I8.name=s;if(Q!==void 0){let i=await v(x,Q);I8.parent_folder_id=i,I8.parent_object_id=Q}I8.updated_at=c6();let Y6=await x.updateTable("entities").set(I8).where("id","=",H8).returningAll().executeTakeFirstOrThrow(),t8=await M(x,H8),F=await c(x,H8),{entity:l,mutationApi:p}=nq.createFromRow({...Y6,subtype:j8},u,Y6.parent_object_id,t8);for(let i of F)p.setField(i.getDefinition().getName(),i);return{entity:l,mutationApi:p,pk:H8,oldValues:E8}},H6=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid folder ID: ${u}`,"INVALID_ID");let Q=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",s.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();y.factory(!Q,I.notFound,`Folder not found: ${u}`,"FOLDER_NOT_FOUND");let a=Q.id;Z.set(a,u);let n=await M(x,a),d=await f(x,a),H8=c6();await x.updateTable("entities").set({deleted_at:H8}).where("id","in",[a,...d]).execute();let j8=[];for(let E8 of d){let I8=await x.selectFrom("entities").select("object_id").where("id","=",E8).executeTakeFirst();if(I8)j8.push(I8.object_id)}return{id:u,deleted:!0,descendantCount:d.length,path:n,descendantIds:j8,deletedPks:[a,...d]}},D8=async(x,w8,u,s,Q=null)=>{let a=await v(x,u),n=x.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",a===null?"is":"=",a).where("name","=",s).where("deleted_at","is",null);if(Q)n=n.where("object_id","!=",Q);return!!await n.executeTakeFirst()},m8=async(x,w8,u,s)=>{let Q=await v(x,u),a=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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",Q===null?"is":"=",Q).where("entities.name","=",s).where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let{id:n,object_id:d}=a;Z.set(n,d);let H8=await M(x,n),j8=await c(x,n),{entity:E8,mutationApi:I8}=nq.createFromRow(a,d,u,H8);for(let Y6 of j8)I8.setField(Y6.getDefinition().getName(),Y6);return{entity:E8,mutationApi:I8,pk:n}},a8=async(x,w8,{folderId:u,type:s})=>{let Q;if(u){if(Q=await v(x,u),Q===null)return[]}else if(s){let H8=await _6(x,w8,s);if(!H8)return[];Q=H8.pk}else Q=null;let a=x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",Q===null?"is":"=",Q).where("entities.deleted_at","is",null);if(s)a=a.where("entities.type_code","=","f").innerJoin("folders","folders.entity_id","entities.id").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select("entity_types.subtype");let n=await a.execute(),d=[];for(let H8 of n){let{id:j8,object_id:E8}=H8;Z.set(j8,E8);let I8=await M(x,j8),Y6=await c(x,j8),{entity:t8,mutationApi:F}=nq.createFromRow(H8,E8,H8.parent_object_id,I8);for(let l of Y6)F.setField(l.getDefinition().getName(),l);d.push({entity:t8,mutationApi:F,pk:j8})}return d},Z6=async(x,w8,{path:u,type:s})=>{y.factory(!s,I.validation,"type parameter is required for getFolderByPath","MISSING_TYPE");let Q=(u??"").trim(),n={d:"Documents",t:"Templates",s:"Stories"}[s];y.factory(!n,I.validation,`Invalid type: ${s}`,"INVALID_TYPE");let d;if(Q.startsWith(`${n}/`))d=Q;else if(Q===n)d=n;else d=Q?`${n}/${Q}`:n;let H8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where((j8)=>s==="s"?j8("type_code","in",["f","s"]):j8("type_code","=","f")).where("deleted_at","is",null).execute();for(let j8 of H8){let E8=await T8(x,w8,{id:j8.object_id});if(E8&&E8.entity.getPath()===d)return E8}return null},_6=async(x,w8,u,s)=>{if(s!==void 0)j(s);let a={d:"root_d",t:"root_t",s:"root_s"}[u];if(!a)throw I.validation(`Invalid type for root folder: ${u}`,"INVALID_TYPE");let n=await o6.readEntityTypeId(x,w8,"f",a),d=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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","=",n).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:H8,object_id:j8}=d;Z.set(H8,j8);let E8=await M(x,H8),I8=await c(x,H8),{entity:Y6,mutationApi:t8}=nq.createFromRow(d,j8,d.parent_object_id,E8);for(let F of I8)t8.setField(F.getDefinition().getName(),F);return{entity:Y6,mutationApi:t8,pk:H8}},u6=async(x,w8,{storeCode:u,ownerEntityId:s,ownerEntityTypePk:Q,name:a,label:n,description:d,primitiveType:H8,required:j8,multiplicity:E8,isSystem:I8=!1,allowedValues:Y6})=>{if(u!==void 0)j(u);let t8=["string","object_ref","int","text","date","float"];y.factory(!t8.includes(H8),I.validation,`Invalid primitiveType: ${H8}. Must be one of: ${t8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(E8!=="single"&&E8!=="multi",I.validation,`Invalid multiplicity: ${E8}`,"INVALID_MULTIPLICITY"),y.factory(s&&Q,I.validation,"Cannot set both ownerEntityId and ownerEntityTypePk","INVALID_FIELD_DEFINITION_SCOPE");let F=c6(),l=await o6.readEntityTypeId(x,w8,"n",null),p=await E1.nextSeq(x,"store",Y,"n"),i=Fz(K,"n",p),V8=s?await v(x,s):null,n8=null;if(Y6&&Y6.length>0)n8=JSON.stringify({allowedValues:Y6});let O6=await x.insertInto("field_definitions").values({store_id:Y,object_id:i,entity_type_id:l,type_code:"n",seq:p,owner_entity_id:V8,owner_entity_type_id:Q||null,name:a,label:n,description:d,primitive_type:H8,required:j8?1:0,multiplicity:E8,config:n8,is_system:I8?1:0,created_at:F,updated_at:F}).returningAll().executeTakeFirstOrThrow(),j6=O6.id;return Z.set(j6,i),N(O6)},y6=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;let Q=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",s.seq).where("type_code","=","n").executeTakeFirst();if(!Q)return null;if(Q.owner_entity_id){let a=await x.selectFrom("entities").select("object_id").where("id","=",Q.owner_entity_id).executeTakeFirst();if(a)Z.set(Q.owner_entity_id,a.object_id)}return Z.set(Q.id,u),N(Q)},s6=async(x,w8,u,s)=>{let Q=x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",u).where("owner_entity_id",s===null?"is":"=",s);if(s===null)Q=Q.where("owner_entity_type_id","is",null);let a=await Q.executeTakeFirst();if(!a)return null;if(a.owner_entity_id){let n=await x.selectFrom("entities").select("object_id").where("id","=",a.owner_entity_id).executeTakeFirst();if(n)Z.set(a.owner_entity_id,n.object_id)}return Z.set(a.id,a.object_id),N(a)},L6=async(x,w8,{fieldDefinitionId:u,fieldName:s,ownerEntityPk:Q,entityTypePk:a})=>{if(u){let d=await y6(x,w8,{id:u});if(d)return d}if(s&&Q){let d=await s6(x,w8,s,Q);if(d)return d}if(s&&a){let d=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",s).where("owner_entity_id","is",null).where("owner_entity_type_id","=",a).executeTakeFirst();if(d)return Z.set(d.id,d.object_id),N(d)}if(s){let d=await s6(x,w8,s,null);if(d)return d}let n=await e(x);return y.factory(!n,I.notFound,"No field definition found and no default available","NO_FIELD_DEFINITION"),n},P8=async(x,w8,{ownerEntityPk:u,includeSystem:s=!0})=>{let Q=x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id",u===null?"is":"=",u);if(u===null)Q=Q.where("owner_entity_type_id","is",null);if(!s)Q=Q.where("is_system","=",0);let a=await Q.execute(),n=[];for(let d of a){if(d.owner_entity_id){let H8=await x.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(H8)Z.set(d.owner_entity_id,H8.object_id)}Z.set(d.id,d.object_id),n.push(N(d))}return n},O8=async(x,w8,{code:u,subtype:s})=>{w3("resolveEntityTypePk called: code=%s, subtype=%s (store=%s)",u,s,K);try{let Q=await o6.readEntityTypeId(x,w8,u,s);return w3("resolveEntityTypePk succeeded: code=%s, subtype=%s -> pk=%d",u,s,Q),Q}catch(Q){if(Q.constructor?.name==="NoResultError")throw w3("resolveEntityTypePk failed: code=%s, subtype=%s (store=%s)",u,s,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw Q}},f8=async(x,w8,{code:u,subtype:s})=>{w3("getFieldDefinitionsForEntityType called: code=%s, subtype=%s (store=%s)",u,s,K);let Q;try{Q=await o6.readEntityTypeId(x,w8,u,s),w3("getFieldDefinitionsForEntityType resolved pk: code=%s, subtype=%s -> pk=%d",u,s,Q)}catch(d){if(d.constructor?.name==="NoResultError")throw w3("getFieldDefinitionsForEntityType failed: code=%s, subtype=%s (store=%s)",u,s,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw d}let a=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_type_id","=",Q).execute(),n=[];for(let d of a)Z.set(d.id,d.object_id),n.push(N(d));return n},y8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid definition ID: ${u}`,"INVALID_ID");let Q=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",s.seq).where("type_code","=","n").executeTakeFirst();y.factory(!Q,I.notFound,`Field definition not found: ${u}`,"DEFINITION_NOT_FOUND"),y.factory(Q.is_system===1,I.validation,`Cannot delete system field definition: ${u}`,"SYSTEM_DEFINITION");let a=Q.id;if(await x.deleteFrom("field_definitions").where("id","=",a).execute(),Q.owner_entity_id){let d=await x.selectFrom("entities").select("object_id").where("id","=",Q.owner_entity_id).executeTakeFirst();if(d)Z.set(Q.owner_entity_id,d.object_id)}let{entity:n}=N(Q);return n},i8=async(x,w8,{entityId:u,fieldDefinitionId:s,fieldName:Q,value:a,values:n})=>{let d=r1(u);y.factory(!d,I.validation,`Invalid entity ID: ${u}`,"INVALID_ID");let H8=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=",d.typeCode).where("deleted_at","is",null).executeTakeFirst();y.factory(!H8,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let j8=H8.id,{entity:E8,pk:I8}=await L6(x,w8,{fieldDefinitionId:s,fieldName:Q,ownerEntityPk:j8,entityTypePk:H8.entity_type_id}),Y6=E8.getMultiplicity(),t8;if(Y6==="single")if(n&&Array.isArray(n))y.factory(n.length>1||n.length===0,I.validation,`Field '${E8.getName()}' is single-valued but received ${n.length} values`,"MULTIPLICITY_VIOLATION"),t8=[n[0]];else y.factory(a===void 0,I.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),t8=[a];else if(n&&Array.isArray(n))t8=n;else if(a!==void 0)t8=[a];else y.factory(!0,I.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");let F=E8.getPrimitiveType();await C(x,j8,I8,F);for(let V8=0;V8<t8.length;V8++){let n8=t8[V8];await E(x,j8,I8,F,n8,V8)}let l=t8,p=Wk.create({definition:E8,values:l}),i;if(d.typeCode==="f")i=await T8(x,w8,{id:u});else if(d.typeCode==="s")i=await Q8(x,w8,{id:u});else if(d.typeCode==="j")i=await L$(x,w8,{id:u});else i=await q6(x,w8,{id:u});return y.factory(!i,I.notFound,`Entity not found after field update: ${u}`,"ENTITY_NOT_FOUND"),{...i,field:p,fieldName:E8.getName()}},o8=async(x,w8,{entityId:u,fieldDefinitionId:s,fieldName:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid entity ID: ${u}`,"INVALID_ID");let n=await x.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();y.factory(!n,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let d=n.id,{entity:H8,pk:j8}=await L6(x,w8,{fieldDefinitionId:s,fieldName:Q,ownerEntityPk:d,entityTypePk:n.entity_type_id}),E8=H8.getPrimitiveType();await C(x,d,j8,E8);let I8;if(a.typeCode==="f")I8=await T8(x,w8,{id:u});else if(a.typeCode==="s")I8=await Q8(x,w8,{id:u});else if(a.typeCode==="j")I8=await L$(x,w8,{id:u});else I8=await q6(x,w8,{id:u});return y.factory(!I8,I.notFound,`Entity not found after field delete: ${u}`,"ENTITY_NOT_FOUND"),{...I8,fieldName:H8.getName()}},z6=async(x,w8,{entityId:u,fieldDefinitionId:s,fieldName:Q})=>{let a=r1(u);if(!a)return null;let n=await x.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();if(!n)return null;let d=n.id,H8;try{H8=await L6(x,w8,{fieldDefinitionId:s,fieldName:Q,ownerEntityPk:d,entityTypePk:n.entity_type_id})}catch{return null}let{entity:j8,pk:E8}=H8,I8=j8.getPrimitiveType(),t8=(await g(x,d)).get(E8);if(!t8||t8.values.length===0)return null;let F=t8.values,l=j8.getMultiplicity()==="single";return Wk.create({definition:j8,values:F,isSingleValued:l})},h8=async(x,w8,{documentPk:u,documentObjectId:s,documentEntityTypeId:Q,content:a,versionNumber:n,publishedAt:d=null})=>{await L(x);let H8=c6(),j8=await o6.readEntityTypeId(x,w8,"v",null),E8=await E1.nextSeq(x,"store",Y,"v"),I8=Fz(K,"v",E8),t8=(await x.insertInto("entities").values({store_id:Y,object_id:I8,entity_type_id:j8,type_code:"v",seq:E8,parent_folder_id:null,parent_object_id:null,name:null,created_at:H8,updated_at:H8}).returningAll().executeTakeFirstOrThrow()).id;Z.set(t8,I8);let F=m("document",j8);if(!F)throw Error('System field definition "document" not found for version type');await x.insertInto("obj_ref_fields").values({entity_id:t8,field_definition_id:F.pk,target_entity_id:u,ordinal:0}).execute();let l=m("version_number",j8);if(!l)throw Error('System field definition "version_number" not found for version type');if(await x.insertInto("int_fields").values({entity_id:t8,field_definition_id:l.pk,value:n,ordinal:0}).execute(),d!==null){let p=m("published_at",j8);if(!p)throw Error('System field definition "published_at" not found for version type');await x.insertInto("date_fields").values({entity_id:t8,field_definition_id:p.pk,value:d,ordinal:0}).execute()}return await x.insertInto("entity_content").values({entity_id:t8,content_text:a,content_type:"markdown",updated_at:H8}).execute(),await f4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${t8}, ${a})`.execute(x),w3("Created version entity %s (pk=%d) for document %s, version %d, draft=%s",I8,t8,s,n,d===null),{pk:t8,objectId:I8}},p8=async(x,w8)=>{if(!w8)return null;await L(x);let u=await x.selectFrom("entities").select(["object_id","entity_type_id"]).where("id","=",w8).where("deleted_at","is",null).executeTakeFirst();if(!u)return null;let{entity_type_id:s,object_id:Q}=u;Z.set(w8,Q);let a=m("version_number",s),n=null;if(a)n=(await x.selectFrom("int_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",a.pk).executeTakeFirst())?.value??null;let d=m("published_at",s),H8=null;if(d)H8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",d.pk).executeTakeFirst())?.value??null;let E8=(await x.selectFrom("entity_content").select("content_text").where("entity_id","=",w8).executeTakeFirst())?.content_text??null;return{versionNumber:n,publishedAt:H8,content:E8,objectId:Q}},s8=async(x,w8,{type:u,storeCode:s,parentId:Q,name:a,initialContent:n,subtype:d})=>{let H8=a6.getEntityFactory(u);if(s!==void 0)j(s);await L(x);let j8=c6(),E8=await o6.readEntityTypeId(x,w8,u,d??null),I8=d?await o6.readEntityTypeId(x,w8,u,null):E8,Y6=await E1.nextSeq(x,"store",Y,u),t8=Fz(K,u,Y6),F=await v(x,Q),l=await x.insertInto("entities").values({store_id:Y,object_id:t8,entity_type_id:E8,type_code:u,seq:Y6,parent_folder_id:F,parent_object_id:Q,name:a,created_at:j8,updated_at:j8}).returningAll().executeTakeFirstOrThrow(),p=l.id;Z.set(p,t8);let i=n!==null&&n!==void 0,V8=null;if(i){let I6=await h8(x,w8,{documentPk:p,documentObjectId:t8,documentEntityTypeId:E8,content:n,versionNumber:1,publishedAt:null});V8=I6.objectId;let R6=m("draft_version",I8);if(!R6)throw Error(`System field definition "draft_version" not found for base type ${u}`);await x.insertInto("obj_ref_fields").values({entity_id:p,field_definition_id:R6.pk,target_entity_id:I6.pk,ordinal:0}).execute(),w3("Created document %s with draft version %s",t8,V8)}let n8=await M(x,p),O6={...l,subtype:d??null},{entity:j6,mutationApi:k6}=H8(O6,t8,Q,n8,null,i,i?n:null,null);return{entity:j6,mutationApi:k6,pk:p}},q6=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;let{typeCode:Q,seq:a}=s,n=a6.getEntityFactory(Q);await L(x);let d=await x.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.created_at","e.updated_at","e.deleted_at","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",Q).where("e.seq","=",a).where("e.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{entity_id:H8,entity_type_id:j8}=d;Z.set(H8,u);let E8=j8;if(d.subtype)E8=await o6.readEntityTypeId(x,w8,Q,null);let I8=m("draft_version",E8),Y6=m("latest_published_version",E8),t8=null,F=null;if(I8)t8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",H8).where("field_definition_id","=",I8.pk).executeTakeFirst())?.target_entity_id??null;if(Y6)F=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).executeTakeFirst())?.target_entity_id??null;let l=null,p=null,i=null,V8=!1;if(F){let t1=await p8(x,F);if(t1)l=t1.versionNumber,p=t1.content}if(t8){let t1=await p8(x,t8);if(t1)V8=!0,i=t1.content}let n8=null,O6=null,j6=null,k6=m("edit_session_id",E8),I6=m("edit_started_at",E8),R6=m("edit_last_activity_at",E8);if(k6)n8=(await x.selectFrom("string_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",k6.pk).executeTakeFirst())?.value??null;if(I6)O6=(await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",I6.pk).executeTakeFirst())?.value??null;if(R6)j6=(await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",R6.pk).executeTakeFirst())?.value??null;let j1=await M(x,H8),Q4=await c(x,H8),{entity:h4,mutationApi:q7}=n(d,d.object_id,d.parent_object_id,j1,l,V8,i,p);for(let t1 of Q4)q7.setField(t1.getDefinition().getName(),t1);if(n8)q7.setEditState({sessionId:n8,startedAt:O6,lastActivityAt:j6});return{entity:h4,mutationApi:q7,pk:H8}},X6=async(x,w8,{id:u,name:s,parentId:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:n,seq:d}=a,H8=a6.getContentTypeLabel(n),j8=a6.getEntityFactory(n),E8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d).where("type_code","=",n).where("deleted_at","is",null).executeTakeFirst();y.factory(!E8,I.notFound,`${H8} not found: ${u}`,"NOT_FOUND");let I8=E8.id,Y6={name:E8.name,parentId:E8.parent_object_id,path:null};Z.set(I8,u),Y6.path=await M(x,I8);let F={updated_at:c6()};if(s!==void 0)F.name=s;if(Q!==void 0){let p=await v(x,Q);F.parent_folder_id=p,F.parent_object_id=Q}await x.updateTable("entities").set(F).where("id","=",I8).execute();let l=await q6(x,w8,{id:u});return y.factory(!l,I.notFound,`${H8} not found after update: ${u}`,"NOT_FOUND"),{...l,oldValues:Y6}},f6=async(x,w8,{id:u,subtype:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:a,seq:n}=Q,d=a6.getContentTypeLabel(a),H8=a6.getEntityFactory(a),j8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",n).where("type_code","=",a).where("deleted_at","is",null).executeTakeFirst();y.factory(!j8,I.notFound,`${d} not found: ${u}`,"NOT_FOUND");let E8=j8.id,I8=await o6.readEntityTypeId(x,w8,a,s??null),Y6=c6();await x.updateTable("entities").set({entity_type_id:I8,updated_at:Y6}).where("id","=",E8).execute(),Z.set(E8,u);let t8=await q6(x,w8,{id:u});return y.factory(!t8,I.notFound,`${d} not found after type update: ${u}`,"NOT_FOUND"),t8},M8=async(x,w8,{entityId:u,entityTypePk:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid entity ID: ${u}`,"INVALID_ID");let{typeCode:a,seq:n}=Q,d=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",n).where("type_code","=",a).where("deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Entity not found: ${u}`,"NOT_FOUND");let H8=d.id,j8=await x.selectFrom("field_definitions").select(["id","primitive_type"]).where("owner_entity_type_id","=",s).execute(),E8=0;for(let I8 of j8)await C(x,H8,I8.id,I8.primitive_type),E8++;return{deletedCount:E8}},x8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:Q,seq:a}=s,n=a6.getContentTypeLabel(Q),d=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",a).where("type_code","=",Q).where("deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`${n} not found: ${u}`,"NOT_FOUND");let H8=d.id;Z.set(H8,u);let j8=await M(x,H8);await L(x);let E8=await o6.readEntityTypeId(x,w8,"v",null),I8=m("document",E8);if(I8){let t8=await x.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","=",I8.pk).where("orf.target_entity_id","=",H8).where("ve.deleted_at","is",null).execute();w3("Cascade deleting %d version entities for document %s",t8.length,u);let F=await o6.readEntityTypeId(x,w8,Q,null),l=m("draft_version",F),p=m("latest_published_version",F),i=[l?.pk,p?.pk].filter(Boolean);if(i.length>0)await x.deleteFrom("obj_ref_fields").where("entity_id","=",H8).where("field_definition_id","in",i).execute();for(let V8 of t8){let n8=V8.version_pk;await f4`DELETE FROM entity_content_fts WHERE rowid = ${n8}`.execute(x),await x.deleteFrom("entities").where("id","=",n8).execute()}}let Y6=c6();return await x.updateTable("entities").set({deleted_at:Y6}).where("id","=",H8).execute(),{id:u,deleted:!0,path:j8}},B8=async(x,w8,{id:u,content:s,sessionId:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid content ID: ${u}`,"INVALID_ID"),y.factory(!Q,I.validation,"sessionId is required","MISSING_SESSION_ID");let{typeCode:n,seq:d}=a,H8=a6.getContentTypeLabel(n);await L(x);let j8=c6(),E8=new Date(Date.now()-gJ).toISOString(),I8=await x.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","=",n).where("e.seq","=",d).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!I8,I.notFound,`${H8} not found: ${u}`,"NOT_FOUND");let{id:Y6,entity_type_id:t8}=I8,F=t8;if(I8.subtype)F=await o6.readEntityTypeId(x,w8,n,null);let l=m("edit_session_id",F),p=m("edit_last_activity_at",F);if(l&&p){let I6=await x.selectFrom("string_fields").select("value").where("entity_id","=",Y6).where("field_definition_id","=",l.pk).executeTakeFirst();if(I6&&I6.value!==Q){let R6=await x.selectFrom("date_fields").select("value").where("entity_id","=",Y6).where("field_definition_id","=",p.pk).executeTakeFirst();if(R6&&R6.value>=E8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let i=m("draft_version",F);if(!i)throw Error(`System field definition "draft_version" not found for base type ${n}`);let n8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",Y6).where("field_definition_id","=",i.pk).executeTakeFirst())?.target_entity_id??null;if(n8)await f4`DELETE FROM entity_content_fts WHERE rowid = ${n8}`.execute(x),await x.updateTable("entity_content").set({content_text:s,updated_at:j8}).where("entity_id","=",n8).execute(),await f4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${n8}, ${s})`.execute(x),w3("Updated draft version content for %s (version pk=%d)",u,n8);else{let I6=await o6.readEntityTypeId(x,w8,"v",null),R6=m("version_number",I6),j1=m("published_at",I6),Q4=m("document",I6),h4=0;if(Q4&&R6&&j1)h4=(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(l4)=>l4.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",R6.pk)).innerJoin("date_fields as df",(l4)=>l4.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",j1.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",Q4.pk).where("orf.target_entity_id","=",Y6).executeTakeFirst())?.max_version??0;let q7=h4+1,t1=await h8(x,w8,{documentPk:Y6,documentObjectId:u,documentEntityTypeId:t8,content:s,versionNumber:q7,publishedAt:null});await x.insertInto("obj_ref_fields").values({entity_id:Y6,field_definition_id:i.pk,target_entity_id:t1.pk,ordinal:0}).execute(),w3("Created new draft version %s (pk=%d) for %s, version_number=%d",t1.objectId,t1.pk,u,q7)}let j6=!await t(x,w8,{id:u,sessionId:Q}),k6=await q6(x,w8,{id:u});return y.factory(!k6,I.notFound,`${H8} not found after draft save: ${u}`,"NOT_FOUND"),{...k6,lockLost:j6}},F8=async(x,w8,{id:u,sessionId:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:a,seq:n}=Q,d=a6.getContentTypeLabel(a);await L(x);let H8=c6(),j8=new Date(Date.now()-gJ).toISOString(),E8=await x.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","=",a).where("e.seq","=",n).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!E8,I.notFound,`${d} not found: ${u}`,"NOT_FOUND");let{id:I8,entity_type_id:t8}=E8;if(E8.subtype)t8=await o6.readEntityTypeId(x,w8,a,null);let F=m("draft_version",t8),l=m("latest_published_version",t8);if(!F)throw Error(`System field definition "draft_version" not found for base type ${a}`);let p=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",I8).where("field_definition_id","=",F.pk).executeTakeFirst();y.factory(!p,I.notFound,`No draft found for ${d}: ${u}`,"DRAFT_NOT_FOUND");let i=p.target_entity_id,V8=m("edit_session_id",t8),n8=m("edit_last_activity_at",t8),O6=m("edit_started_at",t8);if(s&&V8&&n8){let l4=await x.selectFrom("string_fields").select("value").where("entity_id","=",I8).where("field_definition_id","=",V8.pk).executeTakeFirst();if(l4&&l4.value!==s){let w5=await x.selectFrom("date_fields").select("value").where("entity_id","=",I8).where("field_definition_id","=",n8.pk).executeTakeFirst();if(w5&&w5.value>=j8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let j6=await o6.readEntityTypeId(x,w8,"v",null),k6=m("version_number",j6),I6=m("published_at",j6),R6=m("document",j6);if(!k6||!I6||!R6)throw Error("Required version field definitions not found");let Q4=(await x.selectFrom("int_fields").select("value").where("entity_id","=",i).where("field_definition_id","=",k6.pk).executeTakeFirst())?.value??1,t1=((await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(l4)=>l4.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",k6.pk)).innerJoin("date_fields as df",(l4)=>l4.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",I6.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",R6.pk).where("orf.target_entity_id","=",I8).executeTakeFirst())?.max_version??0)+1;if(Q4!==t1)await x.updateTable("int_fields").set({value:t1}).where("entity_id","=",i).where("field_definition_id","=",k6.pk).execute();if(await x.insertInto("date_fields").values({entity_id:i,field_definition_id:I6.pk,value:H8,ordinal:0}).execute(),l)if(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",I8).where("field_definition_id","=",l.pk).executeTakeFirst())await x.updateTable("obj_ref_fields").set({target_entity_id:i}).where("entity_id","=",I8).where("field_definition_id","=",l.pk).execute();else await x.insertInto("obj_ref_fields").values({entity_id:I8,field_definition_id:l.pk,target_entity_id:i,ordinal:0}).execute();if(await x.deleteFrom("obj_ref_fields").where("entity_id","=",I8).where("field_definition_id","=",F.pk).execute(),V8)await x.deleteFrom("string_fields").where("entity_id","=",I8).where("field_definition_id","=",V8.pk).execute();if(O6)await x.deleteFrom("date_fields").where("entity_id","=",I8).where("field_definition_id","=",O6.pk).execute();if(n8)await x.deleteFrom("date_fields").where("entity_id","=",I8).where("field_definition_id","=",n8.pk).execute();w3("Published version %d for %s (version pk=%d)",t1,u,i);let P5=await q6(x,w8,{id:u});return y.factory(!P5,I.notFound,`${d} not found after publish: ${u}`,"NOT_FOUND"),P5},l8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:Q,seq:a}=s,n=a6.getContentTypeLabel(Q);await L(x);let d=await x.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","=",a).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`${n} not found: ${u}`,"NOT_FOUND");let{id:H8,entity_type_id:j8}=d;if(d.subtype)j8=await o6.readEntityTypeId(x,w8,Q,null);let E8=m("draft_version",j8);if(!E8)throw Error(`System field definition "draft_version" not found for base type ${Q}`);let I8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",H8).where("field_definition_id","=",E8.pk).executeTakeFirst();if(I8){let t8=I8.target_entity_id;await x.deleteFrom("obj_ref_fields").where("entity_id","=",H8).where("field_definition_id","=",E8.pk).execute(),await f4`DELETE FROM entity_content_fts WHERE rowid = ${t8}`.execute(x),await x.deleteFrom("entities").where("id","=",t8).execute(),w3("Discarded draft version (pk=%d) for %s",t8,u)}let Y6=await q6(x,w8,{id:u});return y.factory(!Y6,I.notFound,`${n} not found after discard: ${u}`,"NOT_FOUND"),Y6},Y8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;let{typeCode:Q,seq:a}=s;await L(x);let n=await x.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","=",Q).where("e.seq","=",a).where("e.deleted_at","is",null).executeTakeFirst();if(!n)return null;let{id:d,entity_type_id:H8}=n;if(n.subtype)H8=await o6.readEntityTypeId(x,w8,Q,null);let j8=m("draft_version",H8);if(!j8)return null;let E8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",d).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!E8)return null;let I8=E8.target_entity_id,Y6=await x.selectFrom("entity_content").select(["content_text","updated_at"]).where("entity_id","=",I8).executeTakeFirst();if(!Y6)return null;return{entityId:n.object_id,content:Y6.content_text,updatedAt:Y6.updated_at}},W8=async(x,w8,{id:u,versionNumber:s})=>{let Q=r1(u);if(!Q)return null;let{typeCode:a,seq:n}=Q;await L(x);let d=await x.selectFrom("entities").select(["id","object_id"]).where("store_id","=",Y).where("type_code","=",a).where("seq","=",n).where("deleted_at","is",null).executeTakeFirst();if(!d)return null;let H8=d.id,j8=await o6.readEntityTypeId(x,w8,"v",null),E8=m("document",j8),I8=m("version_number",j8),Y6=m("published_at",j8);if(!E8||!I8)return null;let t8=x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(i)=>i.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",I8.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["orf.entity_id as version_pk","ve.updated_at"]).where("orf.field_definition_id","=",E8.pk).where("orf.target_entity_id","=",H8).where("if.value","=",s).where("ve.deleted_at","is",null),F;if(Y6)F=await t8.innerJoin("date_fields as df",(i)=>i.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",Y6.pk)).select("df.value as published_at").executeTakeFirst();else F=await t8.executeTakeFirst();if(!F)return null;let l=F.version_pk,p=await x.selectFrom("entity_content").select("content_text").where("entity_id","=",l).executeTakeFirst();return{entityId:d.object_id,versionNumber:s,content:p?.content_text??null,publishedAt:F.published_at??null}},J8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return[];let{typeCode:Q,seq:a}=s;await L(x);let n=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",Q).where("seq","=",a).where("deleted_at","is",null).executeTakeFirst();if(!n)return[];let d=n.id,H8=await o6.readEntityTypeId(x,w8,"v",null),j8=m("document",H8),E8=m("version_number",H8),I8=m("published_at",H8);if(!j8||!E8||!I8)return[];return(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(t8)=>t8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",E8.pk)).innerJoin("date_fields as df",(t8)=>t8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",I8.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["if.value as version_number","df.value as published_at"]).where("orf.field_definition_id","=",j8.pk).where("orf.target_entity_id","=",d).where("ve.deleted_at","is",null).orderBy("if.value","desc").execute()).map((t8)=>({versionNumber:t8.version_number,publishedAt:t8.published_at}))},c8=async(x,w8,u,s,Q)=>{let a=await v(x,u),n=await x.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=",Q).where("e.parent_folder_id",a===null?"is":"=",a).where("e.name","=",s).where("e.deleted_at","is",null).executeTakeFirst();if(!n)return null;return q6(x,w8,{id:n.object_id})},o=async(x,w8,{parentId:u,type:s})=>{let Q=await v(x,u),a=await x.selectFrom("entities as e").select("e.object_id").where("e.store_id","=",Y).where("e.type_code","=",s).where("e.parent_folder_id",Q===null?"is":"=",Q).where("e.deleted_at","is",null).execute(),n=[];for(let d of a){let H8=await q6(x,w8,{id:d.object_id});if(H8)n.push(H8)}return n},X8=async(x,w8,{id:u,sessionId:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid ID: ${u}`,"INVALID_ID"),await L(x);let a=c6(),n=new Date(Date.now()-gJ).toISOString(),d=await x.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.typeCode).where("e.seq","=",Q.seq).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let{id:H8,entity_type_id:j8}=d;if(d.subtype)j8=await o6.readEntityTypeId(x,w8,Q.typeCode,null);let E8=m("edit_session_id",j8),I8=m("edit_started_at",j8),Y6=m("edit_last_activity_at",j8);if(!E8||!I8||!Y6)throw Error("Edit state field definitions not found");let t8=await x.selectFrom("string_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",E8.pk).executeTakeFirst(),F=await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",I8.pk).executeTakeFirst(),l=await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).executeTakeFirst(),p=t8?.value??null,i=F?.value??null,V8=l?.value??null;if(p)if(p===s)return await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",I8.pk).execute(),await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).execute(),{success:!0};else if(V8&&V8<n)return await x.updateTable("string_fields").set({value:s}).where("entity_id","=",H8).where("field_definition_id","=",E8.pk).execute(),await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",I8.pk).execute(),await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).execute(),{success:!0};else return{success:!1,meta:{lockedBy:p,lockedSince:i,timeoutSeconds:gJ/1000}};else return await x.insertInto("string_fields").values({entity_id:H8,field_definition_id:E8.pk,value:s,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:H8,field_definition_id:I8.pk,value:a,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:H8,field_definition_id:Y6.pk,value:a,ordinal:0}).execute(),{success:!0}},t=async(x,w8,{id:u,sessionId:s})=>{let Q=r1(u);if(!Q)return!1;await L(x);let a=c6(),n=await x.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.typeCode).where("e.seq","=",Q.seq).executeTakeFirst();if(!n)return!1;let{id:d,entity_type_id:H8}=n;if(n.subtype)H8=await o6.readEntityTypeId(x,w8,Q.typeCode,null);let j8=m("edit_session_id",H8),E8=m("edit_started_at",H8),I8=m("edit_last_activity_at",H8);if(!j8||!I8)return!1;let Y6=await x.selectFrom("string_fields").select("value").where("entity_id","=",d).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!Y6||Y6.value!==s)return!1;return((await x.updateTable("date_fields").set({value:a}).where("entity_id","=",d).where("field_definition_id","=",I8.pk).execute())[0]?.numUpdatedRows||0)>0},G8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid ID: ${u}`,"INVALID_ID"),await L(x);let Q=await x.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","=",s.typeCode).where("e.seq","=",s.seq).executeTakeFirst();y.factory(!Q,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let{id:a,entity_type_id:n}=Q;if(Q.subtype)n=await o6.readEntityTypeId(x,w8,s.typeCode,null);let d=m("edit_session_id",n),H8=m("edit_started_at",n),j8=m("edit_last_activity_at",n);if(d)await x.deleteFrom("string_fields").where("entity_id","=",a).where("field_definition_id","=",d.pk).execute();if(H8)await x.deleteFrom("date_fields").where("entity_id","=",a).where("field_definition_id","=",H8.pk).execute();if(j8)await x.deleteFrom("date_fields").where("entity_id","=",a).where("field_definition_id","=",j8.pk).execute()},z8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;await L(x);let Q=await x.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","=",s.typeCode).where("e.seq","=",s.seq).executeTakeFirst();if(!Q)return null;let{id:a,entity_type_id:n}=Q;if(Q.subtype)n=await o6.readEntityTypeId(x,w8,s.typeCode,null);let d=m("edit_session_id",n),H8=m("edit_started_at",n),j8=m("edit_last_activity_at",n);if(!d)return null;let E8=await x.selectFrom("string_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",d.pk).executeTakeFirst();if(!E8)return null;let I8=null,Y6=null;if(H8)I8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",H8.pk).executeTakeFirst())?.value??null;if(j8)Y6=(await x.selectFrom("date_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",j8.pk).executeTakeFirst())?.value??null;return{sessionId:E8.value,startedAt:I8,lastActivityAt:Y6}},k8=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"f","root_s"),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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","=",s).where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let{id:a,object_id:n}=Q;Z.set(a,n);let d=await M(x,a),H8=await c(x,a),{entity:j8,mutationApi:E8}=nq.createFromRow(Q,n,Q.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:a}},b8=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"s",null),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",s).where("entities.deleted_at","is",null).execute(),a=[];for(let n of Q){let{id:d,object_id:H8}=n;Z.set(d,H8);let j8=await M(x,d),E8=await c(x,d),{entity:I8,mutationApi:Y6}=jO.createFromRow(n,H8,n.parent_object_id,j8);for(let t8 of E8)Y6.setField(t8.getDefinition().getName(),t8);a.push({entity:I8,mutationApi:Y6,pk:d})}return a},Q8=async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);if(!Q)return null;if(Q.typeCode!=="s")return null;let a=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","s").where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await c(x,n),{entity:j8,mutationApi:E8}=jO.createFromRow(a,u,a.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:n}},l6=async(x,w8,{storeCode:u,parentId:s,name:Q})=>{if(u!==void 0)j(u);y.factory(!Q,I.validation,"Story name is required","MISSING_NAME");let a=c6(),n=await o6.readEntityTypeId(x,w8,"s",null),d=await E1.nextSeq(x,"store",Y,"s"),H8=await v(x,s),j8=Fz(K,"s",d),E8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:n,type_code:"s",seq:d,parent_folder_id:H8,parent_object_id:s,name:Q,created_at:a,updated_at:a}).returningAll().executeTakeFirstOrThrow();await x.insertInto("folders").values({entity_id:E8.id}).execute();let I8=E8.id;Z.set(I8,j8);let Y6=await M(x,I8),{entity:t8,mutationApi:F}=jO.createFromRow(E8,j8,s,Y6);return{entity:t8,mutationApi:F,pk:I8}},D4=async(x,w8,{id:u,name:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid story ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="s",I.validation,`Not a story ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Story not found: ${u}`,"STORY_NOT_FOUND");let n=a.id;Z.set(n,u);let d=a.name,H8=await M(x,n),j8=await x.updateTable("entities").set({name:s,updated_at:c6()}).where("id","=",n).returningAll().executeTakeFirstOrThrow(),E8=await M(x,n),I8=await c(x,n),{entity:Y6,mutationApi:t8}=jO.createFromRow(j8,u,j8.parent_object_id,E8);for(let F of I8)t8.setField(F.getDefinition().getName(),F);return{entity:Y6,mutationApi:t8,pk:n,oldValues:{name:d,path:H8}}},K3=async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);y.factory(!Q,I.validation,`Invalid story ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="s",I.validation,`Not a story ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Story not found: ${u}`,"STORY_NOT_FOUND");let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await f(x,n),j8=c6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[n,...H8]).execute();let E8=[];for(let I8 of H8){let Y6=await x.selectFrom("entities").select("object_id").where("id","=",I8).executeTakeFirst();if(Y6)E8.push(Y6.object_id)}return{id:u,deleted:!0,descendantCount:H8.length,path:d,descendantIds:E8,deletedPks:[n,...H8]}},K7=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"f","root_j"),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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","=",s).where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let{id:a,object_id:n}=Q;Z.set(a,n);let d=await M(x,a),H8=await c(x,a),{entity:j8,mutationApi:E8}=nq.createFromRow(Q,n,Q.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:a}},B1=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"j",null),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",s).where("entities.deleted_at","is",null).execute(),a=[];for(let n of Q){let{id:d,object_id:H8}=n;Z.set(d,H8);let j8=await M(x,d),E8=await c(x,d),{entity:I8,mutationApi:Y6}=Jk.createFromRow(n,H8,n.parent_object_id,j8);for(let t8 of E8)Y6.setField(t8.getDefinition().getName(),t8);a.push({entity:I8,mutationApi:Y6,pk:d})}return a},L$=async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);if(!Q)return null;if(Q.typeCode!=="j")return null;let a=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","j").where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await c(x,n),{entity:j8,mutationApi:E8}=Jk.createFromRow(a,u,a.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:n}},u8=Object.freeze({...H,getCodes:X,getType:P,getCode:w,getPk:T,toJSON:G,createFolder:_8,readFolder:T8,updateFolder:d8,deleteFolder:H6,isDuplicateNameInParent:D8,findFolderByName:m8,listFolderContents:a8,getFolderByPath:Z6,readRootFolderForType:_6,createContent:s8,readContent:q6,updateContent:X6,updateEntityType:f6,deleteTypeScopedFieldValues:M8,deleteContent:x8,saveDraft:B8,readDraft:Y8,publishContent:F8,discardDraft:l8,readVersion:W8,getVersions:J8,findContentByName:c8,listContent:o,createFieldDefinition:u6,readFieldDefinition:y6,readDefaultFieldDefinition:e,findFieldDefinitionByName:s6,resolveFieldDefinition:L6,getFieldDefinitionsForOwner:P8,getFieldDefinitionsForEntityType:f8,resolveEntityTypePk:O8,deleteFieldDefinition:y8,setFieldValue:i8,deleteFieldValue:o8,getFieldValue:z6,setEditState:X8,clearEditState:G8,getEditState:z8,readStoryRootFolder:k8,listStories:b8,readStory:Q8,createStory:l6,renameStory:D4,deleteStory:K3,readJobRootFolder:K7,listJobs:B1,readJob:L$,createJob:async(x,w8,{storeCode:u,parentId:s,name:Q})=>{if(u!==void 0)j(u);y.factory(!Q,I.validation,"Job name is required","MISSING_NAME");let a=c6(),n=await o6.readEntityTypeId(x,w8,"j",null),d=await E1.nextSeq(x,"store",Y,"j"),H8=await v(x,s),j8=Fz(K,"j",d),E8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:n,type_code:"j",seq:d,parent_folder_id:H8,parent_object_id:s,name:Q,created_at:a,updated_at:a}).returningAll().executeTakeFirstOrThrow();await x.insertInto("folders").values({entity_id:E8.id}).execute();let I8=E8.id;Z.set(I8,j8);let Y6=await M(x,I8),{entity:t8,mutationApi:F}=Jk.createFromRow(E8,j8,s,Y6);return{entity:t8,mutationApi:F,pk:I8}},deleteJob:async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);y.factory(!Q,I.validation,`Invalid job ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="j",I.validation,`Not a job ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","j").where("deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Job not found: ${u}`,"JOB_NOT_FOUND");let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await f(x,n),j8=c6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[n,...H8]).execute();let E8=[];for(let I8 of H8){let Y6=await x.selectFrom("entities").select("object_id").where("id","=",I8).executeTakeFirst();if(Y6)E8.push(Y6.object_id)}return{id:u,deleted:!0,descendantCount:H8.length,path:d,descendantIds:E8,deletedPks:[n,...H8]}},createAsset:async(x,w8,{storeCode:u,hash:s,mimeType:Q,sizeBytes:a,originalFilename:n,widthPx:d,heightPx:H8,displayWidth:j8,displayHeight:E8})=>{if(u!==void 0)j(u);let I8=c6(),Y6=await o6.readEntityTypeId(x,w8,"a",null),t8=await E1.nextSeq(x,"store",Y,"a"),F=Fz(K,"a",t8),l=await x.insertInto("entities").values({store_id:Y,object_id:F,entity_type_id:Y6,type_code:"a",seq:t8,parent_folder_id:null,parent_object_id:null,name:n,created_at:I8,updated_at:I8}).returningAll().executeTakeFirstOrThrow();await x.insertInto("assets").values({entity_id:l.id,hash:s,mime_type:Q,size_bytes:a,original_filename:n,width_px:d,height_px:H8,display_width:j8,display_height:E8}).execute();let p=l.id;Z.set(p,F);let{entity:i,mutationApi:V8}=zk.createFromRow({...l,hash:s,mime_type:Q,size_bytes:a,original_filename:n,width_px:d,height_px:H8,display_width:j8,display_height:E8},F);return{entity:i,mutationApi:V8,pk:p}},readAsset:async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);if(!Q)return null;if(Q.typeCode!=="a")return null;let a=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let n=a.id;Z.set(n,u);let{entity:d,mutationApi:H8}=zk.createFromRow(a,u);return{entity:d,mutationApi:H8,pk:n}},listAssets:async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.type_code","=","a").where("entities.deleted_at","is",null).execute(),Q=[];for(let a of s){let{id:n,object_id:d}=a;Z.set(n,d);let{entity:H8,mutationApi:j8}=zk.createFromRow(a,d);Q.push({entity:H8,mutationApi:j8,pk:n})}return Q},deleteAsset:async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);y.factory(!Q,I.validation,`Invalid asset ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="a",I.validation,`Not an asset ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Asset not found: ${u}`,"ASSET_NOT_FOUND");let n=c6();return await x.updateTable("entities").set({deleted_at:n}).where("id","=",a.id).execute(),Z.set(a.id,u),{id:u,deleted:!0,hash:a.hash}},findEntitiesByFieldValue:async(x,w8,{typeCode:u,subtype:s,fieldName:Q,fieldValue:a})=>{let n=x.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.type_code","entity_types.subtype"]).where("entities.store_id","=",Y).where("entities.type_code","=",u).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",Q).where("field_definitions.owner_entity_id","is",null).where("string_fields.value","=",a);if(s!==void 0&&s!==null)n=n.where("entity_types.subtype","=",s);let d=await n.execute(),H8=[];for(let j8 of d){let E8=await M(x,j8.id);H8.push({id:j8.id,object_id:j8.object_id,name:j8.name,path:E8,type_code:j8.type_code,subtype:j8.subtype})}return H8}}),M6=Object.freeze({...O});return{store:u8,mutationApi:M6}},DP8=Object.freeze({create:v_6});var V_6=({inner:$,folderCache:K,contentCache:q,fieldDefinitionCache:Y,storyCache:J,jobCache:z,assetCache:W})=>{let Z=async(o,X8,t,G8)=>{let z8=await $.createFolder(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{K.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},H=async(o,X8,{id:t})=>{let G8=K.get(t);if(G8)return G8.getEntity();let z8=await $.readFolder(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;if(t.length>=2&&t[1]!=="s")K.set(t,d6.create(k8,b8,Q8));return k8},O=async(o,X8,t,G8)=>{let{id:z8}=t,k8=K.get(z8),b8=z8&&z8.length>1&&z8[1]==="j",Q8=b8?z.get(z8):null;if(b8)z.remove(z8);let l6=await $.updateFolder(o,X8,t),D4=t.name!==void 0&&t.name!==l6.oldValues.name||t.parentId!==void 0&&t.parentId!==l6.oldValues.parentId;return G8(()=>{if(k8){let K7=k8.getMutationApi();if(t.name!==void 0)K7.setName(t.name);if(t.parentId!==void 0)K7.setParentId(t.parentId);K7.setUpdatedAt(l6.entity.getUpdatedAt()),K7.setPath(l6.entity.getPath())}else{let{entity:K7,mutationApi:B1,pk:L$}=l6;K.set(z8,d6.create(K7,B1,L$))}if(D4){let B1=l6.oldValues.path+"/";for(let[L$,f$]of K.entries())if(f$.getEntity().getPath().startsWith(B1))K.remove(L$);for(let[L$,f$]of q.entries())if(f$.getEntity().getPath().startsWith(B1))q.remove(L$)}}),{entity:k8?k8.getEntity():l6.entity,oldValues:l6.oldValues}},X=async(o,X8,{id:t},G8)=>{let z8=K.get(t),k8=z8?z8.getEntity().getPath():null,b8=await $.deleteFolder(o,X8,{id:t});return G8(()=>{K.remove(t);for(let Q8 of b8.descendantIds||[])K.remove(Q8)}),{...b8,path:k8}},P=async(o,X8,t)=>{let G8=await $.listFolderContents(o,X8,t);for(let z8 of G8)K.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},w=async(o,X8,t)=>{let G8=await $.getFolderByPath(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8,Q8=z8.getObjectId();if(Q8.length>=2&&Q8[1]!=="s")K.set(Q8,d6.create(z8,k8,b8));return z8},T=async(o,X8,t,G8)=>{let z8=await $.findFolderByName(o,X8,t,G8);if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return K.set(k8.getObjectId(),d6.create(k8,b8,Q8)),k8},G=async(o,X8,t)=>{let G8=await $.readRootFolderForType(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8;return K.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},j=async(o,X8,t,G8,z8)=>{return $.isDuplicateNameInParent(o,X8,t,G8,z8)},v=async(o,X8,t,G8)=>{let z8=await $.createContent(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{q.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},M=async(o,X8,{id:t})=>{let G8=q.get(t);if(G8)return G8.getEntity();let z8=await $.readContent(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return q.set(t,d6.create(k8,b8,Q8)),k8},f=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.updateContent(o,X8,t);return G8(()=>{if(k8){let Q8=k8.getMutationApi();if(t.name!==void 0)Q8.setName(t.name);if(t.parentId!==void 0)Q8.setParentId(t.parentId);Q8.setUpdatedAt(b8.entity.getUpdatedAt()),Q8.setPath(b8.entity.getPath())}else{let{entity:Q8,mutationApi:l6,pk:D4}=b8;q.set(z8,d6.create(Q8,l6,D4))}}),k8?k8.getEntity():b8.entity},k=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.updateEntityType(o,X8,t);return q.remove(z8),k8.entity},N=async(o,X8,t)=>{return $.deleteTypeScopedFieldValues(o,X8,t)},R=async(o,X8,{id:t},G8)=>{let z8=q.get(t),k8=z8?z8.getEntity().getPath():null,b8=await $.deleteContent(o,X8,{id:t});return G8(()=>{q.remove(t)}),{...b8,path:k8}},E=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.saveDraft(o,X8,t);G8(()=>{if(k8){let l6=k8.getMutationApi();l6.setDraftContent(b8.entity.getDraftContent()),l6.setHasDraft(b8.entity.hasDraftContent()),l6.setUpdatedAt(b8.entity.getUpdatedAt())}else{let{entity:l6,mutationApi:D4,pk:K3}=b8;q.set(z8,d6.create(l6,D4,K3))}});let Q8=k8?k8.getEntity():b8.entity;if(b8.lockLost!==void 0)return{entity:Q8,lockLost:b8.lockLost};return Q8},C=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.publishContent(o,X8,t);if(k8){let Q8=k8.getMutationApi();return Q8.setPublishedVersionNumber(b8.entity.getPublishedVersionNumber()),Q8.setPublishedContent(b8.entity.getPublishedContent()),Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(b8.entity.getUpdatedAt()),Q8.setEditState(null),k8.getEntity()}else return G8(()=>{let{entity:Q8,mutationApi:l6,pk:D4}=b8;q.set(z8,d6.create(Q8,l6,D4))}),b8.entity},g=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.discardDraft(o,X8,t);return G8(()=>{if(k8){let Q8=k8.getMutationApi();Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(b8.entity.getUpdatedAt())}else{let{entity:Q8,mutationApi:l6,pk:D4}=b8;q.set(z8,d6.create(Q8,l6,D4))}}),k8?k8.getEntity():b8.entity},S=async(o,X8,t)=>{return $.readDraft(o,X8,t)},D=async(o,X8,t)=>{return $.readVersion(o,X8,t)},L=async(o,X8,t)=>{return $.getVersions(o,X8,t)},m=async(o,X8,t,G8,z8)=>{let k8=await $.findContentByName(o,X8,t,G8,z8);if(!k8)return null;let{entity:b8,mutationApi:Q8,pk:l6}=k8;return q.set(b8.getObjectId(),d6.create(b8,Q8,l6)),b8},c=async(o,X8,t)=>{let G8=await $.listContent(o,X8,t);for(let z8 of G8)q.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},e=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.setEditState(o,X8,t);return G8(()=>{q.remove(z8)}),k8},_8=async(o,X8,t)=>{return $.getEditState(o,X8,t)},T8=async(o,X8,t,G8)=>{let{id:z8}=t;await $.clearEditState(o,X8,t),G8(()=>{q.remove(z8)})},d8=async(o,X8,t,G8)=>{let z8=await $.createFieldDefinition(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{Y.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},H6=async(o,X8,{id:t})=>{let G8=Y.get(t);if(G8)return G8.getEntity();let z8=await $.readFieldDefinition(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return Y.set(t,d6.create(k8,b8,Q8)),k8},D8=async(o,X8,t,G8)=>{let z8=await $.findFieldDefinitionByName(o,X8,t,G8);if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return Y.set(k8.getObjectId(),d6.create(k8,b8,Q8)),k8},m8=async(o,X8,t)=>{let G8=await $.getFieldDefinitionsForOwner(o,X8,t);for(let z8 of G8)Y.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},a8=async(o,X8,t)=>{let G8=await $.getFieldDefinitionsForEntityType(o,X8,t);for(let z8 of G8)Y.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},Z6=async(o,X8,t)=>{return $.resolveEntityTypePk(o,X8,t)},_6=async(o,X8)=>{let t=`${$.getCode()}n1`,G8=Y.get(t);if(G8)return G8.getEntity();let z8=await $.readDefaultFieldDefinition(o,X8),{entity:k8,mutationApi:b8,pk:Q8}=z8;return Y.set(k8.getObjectId(),d6.create(k8,b8,Q8)),k8},u6=async(o,X8,t)=>{let G8=await $.resolveFieldDefinition(o,X8,t),{entity:z8,mutationApi:k8,pk:b8}=G8;return Y.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},y6=async(o,X8,{id:t},G8)=>{let z8=await $.deleteFieldDefinition(o,X8,{id:t});return G8(()=>{Y.remove(t)}),z8},s6=async(o,X8,t,G8)=>{let{entityId:z8}=t,k8=await $.setFieldValue(o,X8,t);return G8(()=>{let b8=K.get(z8)||q.get(z8)||J.get(z8)||z.get(z8);if(b8){let Q8=b8.getMutationApi(),l6=k8.entity.getField(k8.fieldName);Q8.setField(k8.fieldName,l6)}}),k8.entity},L6=async(o,X8,t)=>{return $.getFieldValue(o,X8,t)},P8=async(o,X8,t,G8)=>{let{entityId:z8}=t,k8=await $.deleteFieldValue(o,X8,t);G8(()=>{let b8=K.get(z8)||q.get(z8)||J.get(z8)||z.get(z8);if(b8)b8.getMutationApi().removeField(k8.fieldName)})},O8=async(o,X8,t,G8)=>{let z8=await $.createStory(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{let l6=k8.getObjectId();if(!J.get(l6))J.set(l6,d6.create(k8,b8,Q8))}),k8},f8=async(o,X8,{id:t})=>{let G8=J.get(t);if(G8)return G8.getEntity();let z8=await $.readStory(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return J.set(t,d6.create(k8,b8,Q8)),k8},y8=async(o,X8,t)=>{let G8=await $.listStories(o,X8,t);for(let z8 of G8){let{entity:k8,mutationApi:b8,pk:Q8}=z8;J.set(k8.getObjectId(),d6.create(k8,b8,Q8))}return G8.map((z8)=>z8.entity)},i8=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.renameStory(o,X8,t),{entity:b8,mutationApi:Q8,pk:l6}=k8;return G8(()=>{let D4=J.get(z8);if(D4){let K3=D4.getMutationApi();K3.setName(b8.getName()),K3.setPath(b8.getPath())}else J.set(z8,d6.create(b8,Q8,l6))}),b8},o8=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.deleteStory(o,X8,t);return G8(()=>{J.remove(z8);for(let b8 of k8.descendantIds){let Q8=b8[0];if(b8.startsWith(Q8+"d")||b8.startsWith(Q8+"t"))q.remove(b8);else if(b8.startsWith(Q8+"f"))K.remove(b8)}}),k8},z6=async(o,X8,t)=>{let G8=await $.readStoryRootFolder(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8;return K.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},h8=async(o,X8,t,G8)=>{let z8=await $.createJob(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{let l6=k8.getObjectId();if(!z.get(l6))z.set(l6,d6.create(k8,b8,Q8))}),k8},p8=async(o,X8,{id:t})=>{let G8=z.get(t);if(G8)return G8.getEntity();let z8=await $.readJob(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return z.set(t,d6.create(k8,b8,Q8)),k8},s8=async(o,X8,t)=>{let G8=await $.listJobs(o,X8,t);for(let z8 of G8){let{entity:k8,mutationApi:b8,pk:Q8}=z8;z.set(k8.getObjectId(),d6.create(k8,b8,Q8))}return G8.map((z8)=>z8.entity)},q6=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.deleteJob(o,X8,t);return G8(()=>{z.remove(z8);for(let b8 of k8.descendantIds){let Q8=b8[0];if(b8.startsWith(Q8+"d")||b8.startsWith(Q8+"t"))q.remove(b8);else if(b8.startsWith(Q8+"f"))K.remove(b8)}}),k8},X6=async(o,X8,t)=>{let G8=await $.readJobRootFolder(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8;return K.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},f6=async(o,X8,t,G8)=>{let z8=await $.createAsset(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{W.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},M8=async(o,X8,{id:t})=>{let G8=W.get(t);if(G8)return G8.getEntity();let z8=await $.readAsset(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return W.set(t,d6.create(k8,b8,Q8)),k8},x8=async(o,X8,t)=>{let G8=await $.listAssets(o,X8,t),z8=[];for(let k8 of G8){let{entity:b8,mutationApi:Q8,pk:l6}=k8;W.set(b8.getObjectId(),d6.create(b8,Q8,l6)),z8.push(b8)}return z8},B8=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.deleteAsset(o,X8,t);return G8(()=>{W.remove(z8)}),k8},F8=async(o,X8,t)=>{return $.findEntitiesByFieldValue(o,X8,t)},l8=(o)=>{K.remove(o)},Y8=(o)=>{q.remove(o)},W8=(o)=>{J.remove(o)},J8=(o)=>{z.remove(o)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:Z,readFolder:H,updateFolder:O,deleteFolder:X,listFolderContents:P,getFolderByPath:w,findFolderByName:T,readRootFolderForType:G,isDuplicateNameInParent:j,createContent:v,readContent:M,updateContent:f,updateEntityType:k,deleteTypeScopedFieldValues:N,deleteContent:R,saveDraft:E,readDraft:S,publishContent:C,discardDraft:g,readVersion:D,getVersions:L,findContentByName:m,listContent:c,setEditState:e,getEditState:_8,clearEditState:T8,createFieldDefinition:d8,readFieldDefinition:H6,findFieldDefinitionByName:D8,getFieldDefinitionsForOwner:m8,getFieldDefinitionsForEntityType:a8,resolveEntityTypePk:Z6,readDefaultFieldDefinition:_6,resolveFieldDefinition:u6,deleteFieldDefinition:y6,setFieldValue:s6,getFieldValue:L6,deleteFieldValue:P8,createStory:O8,renameStory:i8,readStory:f8,listStories:y8,deleteStory:o8,readStoryRootFolder:z6,createJob:h8,readJob:p8,listJobs:s8,deleteJob:q6,readJobRootFolder:X6,createAsset:f6,readAsset:M8,listAssets:x8,deleteAsset:B8,findEntitiesByFieldValue:F8,evictFolder:l8,evictContent:Y8,evictStory:W8,evictJob:J8})},hP8=Object.freeze({create:V_6});var A_6=($)=>{let K=new Map;return $.forEach((z)=>K.set(z,new Set)),Object.freeze({subscribe:(z,W)=>{return K.get(z)?.add(W),()=>K.get(z)?.delete(W)},subscribeAll:(z)=>{let W=[];for(let[Z,H]of K){let O=`on${Z.charAt(0).toUpperCase()}${Z.slice(1)}`;if(z[O])H.add(z[O]),W.push(()=>H.delete(z[O]))}return()=>W.forEach((Z)=>Z())},notify:(z,W,Z)=>{let H=[];return K.get(z)?.forEach((O)=>{if(O===Z)return;try{O(W)}catch(X){H.push(X)}}),H.length>0?H:null}})},bJ=Object.freeze({create:A_6});var C6=Object.freeze({FOLDER_CREATED:"folderCreated",FOLDER_RENAMED:"folderRenamed",FOLDER_MOVED:"folderMoved",FOLDER_DELETED:"folderDeleted",DOCUMENT_CREATED:"documentCreated",DOCUMENT_RENAMED:"documentRenamed",DOCUMENT_MOVED:"documentMoved",DOCUMENT_DELETED:"documentDeleted",DOCUMENT_PUBLISHED:"documentPublished",DRAFT_SAVED:"draftSaved",DRAFT_DISCARDED:"draftDiscarded",TEMPLATE_CREATED:"templateCreated",TEMPLATE_RENAMED:"templateRenamed",TEMPLATE_MOVED:"templateMoved",TEMPLATE_DELETED:"templateDeleted",TEMPLATE_PUBLISHED:"templatePublished",TEMPLATE_DRAFT_SAVED:"templateDraftSaved",TEMPLATE_DRAFT_DISCARDED:"templateDraftDiscarded",EDIT_STATE_ACQUIRED:"editStateAcquired",EDIT_STATE_REFRESHED:"editStateRefreshed",EDIT_STATE_CLEARED:"editStateCleared",STORY_CREATED:"storyCreated",STORY_RENAMED:"storyRenamed",STORY_DELETED:"storyDeleted",STORY_STATE_CHANGED:"storyStateChanged",JOB_CREATED:"jobCreated",JOB_UPDATED:"jobUpdated",JOB_STATUS_CHANGED:"jobStatusChanged",JOB_COMPLETED:"jobCompleted",JOB_DELETED:"jobDeleted",FIELD_ADDED:"fieldAdded",FIELD_VALUE_CHANGED:"fieldValueChanged",FIELD_REMOVED:"fieldRemoved",ASSET_CREATED:"assetCreated",ASSET_DELETED:"assetDeleted"});var M_6=({inner:$,storeCode:K})=>{let q=bJ.create([C6.FOLDER_CREATED,C6.FOLDER_RENAMED,C6.FOLDER_MOVED,C6.FOLDER_DELETED,C6.DOCUMENT_CREATED,C6.DOCUMENT_RENAMED,C6.DOCUMENT_MOVED,C6.DOCUMENT_DELETED,C6.DOCUMENT_PUBLISHED,C6.DRAFT_SAVED,C6.DRAFT_DISCARDED,C6.TEMPLATE_CREATED,C6.TEMPLATE_RENAMED,C6.TEMPLATE_MOVED,C6.TEMPLATE_DELETED,C6.TEMPLATE_PUBLISHED,C6.TEMPLATE_DRAFT_SAVED,C6.TEMPLATE_DRAFT_DISCARDED,C6.EDIT_STATE_ACQUIRED,C6.EDIT_STATE_REFRESHED,C6.EDIT_STATE_CLEARED,C6.STORY_CREATED,C6.STORY_RENAMED,C6.STORY_DELETED,C6.JOB_CREATED,C6.JOB_DELETED,C6.FIELD_ADDED,C6.FIELD_VALUE_CHANGED,C6.FIELD_REMOVED,C6.ASSET_CREATED,C6.ASSET_DELETED]),Y=async(Y8,W8,J8)=>{let c8=await $.readFolder(Y8,W8,{id:J8});if(!c8)return null;let o=await Y8.selectFrom("entities").innerJoin("entity_types","entities.entity_type_id","entity_types.id").select(["entity_types.code as entity_type_code","entity_types.subtype as entity_type_subtype"]).where("entities.object_id","=",J8).executeTakeFirst();if(o?.entity_type_code==="f"&&o?.entity_type_subtype==="root_d")return"d";if(o?.entity_type_code==="f"&&o?.entity_type_subtype==="root_t")return"t";let X8=await $.readRootFolderForType(Y8,W8,"d"),t=await $.readRootFolderForType(Y8,W8,"t"),G8=c8;while(G8&&G8.getParentId()!==null){let z8=await $.readFolder(Y8,W8,{id:G8.getParentId()});if(!z8)break;G8=z8}if(G8&&G8.getObjectId()===X8?.getObjectId())return"d";else if(G8&&G8.getObjectId()===t?.getObjectId())return"t";return null},J=async(Y8,W8,J8,c8)=>{let{parentId:o,subtype:X8}=J8,t=await $.createFolder(Y8,W8,J8,c8),G8=null;if(X8==="root_d")G8="d";else if(X8==="root_t")G8="t";else{let z8=await $.readRootFolderForType(Y8,W8,"d"),k8=await $.readRootFolderForType(Y8,W8,"t");if(o===z8?.getObjectId())G8="d";else if(o===k8?.getObjectId())G8="t";else if(o){let b8=await $.readFolder(Y8,W8,{id:o});if(b8){let Q8=b8;while(Q8&&Q8.getParentId()!==null){let l6=await $.readFolder(Y8,W8,{id:Q8.getParentId()});if(!l6)break;Q8=l6}if(Q8&&Q8.getObjectId()===z8?.getObjectId())G8="d";else if(Q8&&Q8.getObjectId()===k8?.getObjectId())G8="t"}}}return c8(()=>{q.notify(C6.FOLDER_CREATED,{id:t.getObjectId(),storeCode:K,name:t.getName(),path:t.getPath(),parentFolderId:o,contentType:G8})}),t},z=async(Y8,W8,J8)=>{return $.readFolder(Y8,W8,J8)},W=async(Y8,W8,J8,c8)=>{let{id:o,name:X8,parentId:t}=J8,G8=await $.updateFolder(Y8,W8,J8,c8),z8=G8.entity,k8=G8.oldValues.name,b8=G8.oldValues.parentId,Q8=await Y(Y8,W8,o);if(X8!==void 0&&X8!==k8)c8(()=>{q.notify(C6.FOLDER_RENAMED,{id:o,storeCode:K,parentFolderId:z8.getParentId(),contentType:Q8,oldName:k8,newName:X8,path:z8.getPath()})});if(t!==void 0&&t!==b8)c8(()=>{q.notify(C6.FOLDER_MOVED,{id:o,storeCode:K,contentType:Q8,oldParentFolderId:b8,parentFolderId:t,path:z8.getPath()})});return z8},Z=async(Y8,W8,J8,c8)=>{let{id:o}=J8,t=(await $.readFolder(Y8,W8,{id:o}))?.getParentId(),G8=await Y(Y8,W8,o),z8=await $.deleteFolder(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FOLDER_DELETED,{id:o,storeCode:K,parentFolderId:t,contentType:G8,path:z8.path,descendantCount:z8.descendantIds?.length||0})}),z8},H=async(Y8,W8,J8)=>{return $.listFolderContents(Y8,W8,J8)},O=async(Y8,W8,J8)=>{return $.getFolderByPath(Y8,W8,J8)},X=async(Y8,W8,J8,c8)=>{return $.findFolderByName(Y8,W8,J8,c8)},P=async(Y8,W8,J8)=>{return $.readRootFolderForType(Y8,W8,J8)},w=async(Y8,W8,J8,c8,o)=>{return $.isDuplicateNameInParent(Y8,W8,J8,c8,o)},T=async(Y8,W8,J8,c8)=>{let{type:o,parentId:X8}=J8,t=await $.createContent(Y8,W8,J8,c8),G8=o==="t"?C6.TEMPLATE_CREATED:C6.DOCUMENT_CREATED;return c8(()=>{q.notify(G8,{storeCode:K,id:t.getObjectId(),type:o,parentFolderId:X8,name:t.getName(),path:t.getPath()})}),t},G=async(Y8,W8,J8)=>{return $.readContent(Y8,W8,J8)},j=async(Y8,W8,J8,c8)=>{let{id:o,name:X8,parentId:t}=J8,G8=a6.getTypeFromId(o),z8=await $.readContent(Y8,W8,{id:o}),k8=z8?.getName(),b8=z8?.getParentId(),Q8=await $.updateContent(Y8,W8,J8,c8),l6=G8==="t"?C6.TEMPLATE_RENAMED:C6.DOCUMENT_RENAMED,D4=G8==="t"?C6.TEMPLATE_MOVED:C6.DOCUMENT_MOVED;if(X8!==void 0&&X8!==k8)c8(()=>{q.notify(l6,{storeCode:K,id:o,type:G8,parentFolderId:Q8.getParentId(),oldName:k8,newName:X8,path:Q8.getPath()})});if(t!==void 0&&t!==b8)c8(()=>{q.notify(D4,{storeCode:K,id:o,type:G8,oldParentFolderId:b8,parentFolderId:t,path:Q8.getPath()})});return Q8},v=async(Y8,W8,J8,c8)=>{return $.updateEntityType(Y8,W8,J8,c8)},M=async(Y8,W8,J8)=>{return $.deleteTypeScopedFieldValues(Y8,W8,J8)},f=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),G8=(await $.readContent(Y8,W8,{id:o}))?.getParentId(),z8=await $.deleteContent(Y8,W8,J8,c8),k8=X8==="t"?C6.TEMPLATE_DELETED:C6.DOCUMENT_DELETED;return c8(()=>{q.notify(k8,{storeCode:K,id:o,type:X8,parentFolderId:G8,path:z8.path})}),z8},k=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),G8=(await $.readContent(Y8,W8,{id:o}))?.getParentId(),z8=await $.saveDraft(Y8,W8,J8,c8),k8=X8==="t"?C6.TEMPLATE_DRAFT_SAVED:C6.DRAFT_SAVED;return c8(()=>{let b8=z8.lockLost!==void 0?z8.entity:z8;q.notify(k8,{storeCode:K,id:o,type:X8,parentFolderId:G8,updatedAt:b8?b8.getUpdatedAt():null,lockLost:z8.lockLost})}),z8},N=async(Y8,W8,J8)=>{return $.readDraft(Y8,W8,J8)},R=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),t=await $.publishContent(Y8,W8,J8,c8),G8=X8==="t"?C6.TEMPLATE_PUBLISHED:C6.DOCUMENT_PUBLISHED;return c8(()=>{q.notify(G8,{storeCode:K,id:o,type:X8,parentFolderId:t.getParentId(),versionNumber:t.getPublishedVersionNumber()})}),{entityId:o,versionNumber:t.getPublishedVersionNumber(),content:t.getPublishedContent(),publishedAt:t.getUpdatedAt()}},E=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),t=await $.discardDraft(Y8,W8,J8,c8),G8=X8==="t"?C6.TEMPLATE_DRAFT_DISCARDED:C6.DRAFT_DISCARDED;return c8(()=>{q.notify(G8,{storeCode:K,id:o})}),t},C=async(Y8,W8,J8)=>{return $.readVersion(Y8,W8,J8)},g=async(Y8,W8,J8)=>{return $.getVersions(Y8,W8,J8)},S=async(Y8,W8,J8,c8,o)=>{return $.findContentByName(Y8,W8,J8,c8,o)},D=async(Y8,W8,J8)=>{return $.listContent(Y8,W8,J8)},L=async(Y8,W8,J8,c8)=>{let o=await $.setEditState(Y8,W8,J8,c8);if(o.success){let X8=a6.getTypeFromId(J8.id);c8(()=>{q.notify(C6.EDIT_STATE_ACQUIRED,{id:J8.id,type:X8,storeCode:K,sessionId:J8.sessionId})})}return o},m=async(Y8,W8,J8)=>{return $.getEditState(Y8,W8,J8)},c=async(Y8,W8,J8,c8)=>{await $.clearEditState(Y8,W8,J8,c8);let o=a6.getTypeFromId(J8.id);c8(()=>{q.notify(C6.EDIT_STATE_CLEARED,{id:J8.id,type:o,storeCode:K})})},e=async(Y8,W8,J8,c8)=>{return $.createFieldDefinition(Y8,W8,J8,c8)},_8=async(Y8,W8,J8)=>{return $.readFieldDefinition(Y8,W8,J8)},T8=async(Y8,W8,J8,c8)=>{return $.findFieldDefinitionByName(Y8,W8,J8,c8)},d8=async(Y8,W8,J8)=>{return $.getFieldDefinitionsForOwner(Y8,W8,J8)},H6=async(Y8,W8,J8)=>{return $.getFieldDefinitionsForEntityType(Y8,W8,J8)},D8=async(Y8,W8,J8)=>{return $.resolveEntityTypePk(Y8,W8,J8)},m8=async(Y8,W8)=>{return $.readDefaultFieldDefinition(Y8,W8)},a8=async(Y8,W8,J8)=>{return $.resolveFieldDefinition(Y8,W8,J8)},Z6=async(Y8,W8,J8,c8)=>{return $.deleteFieldDefinition(Y8,W8,J8,c8)},_6=async(Y8,W8,J8,c8)=>{return $.setFieldValue(Y8,W8,J8,c8)},u6=async(Y8,W8,J8,c8)=>{let{entityId:o,fieldName:X8}=J8,{typeCode:t}=a6.parseId(o),G8=await $.setFieldValue(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FIELD_ADDED,{entityType:t,entityId:o,fieldName:X8,value:J8.value??J8.values,storeCode:K})}),G8},y6=async(Y8,W8,J8,c8)=>{let{entityId:o,fieldName:X8,_oldValue:t}=J8,{typeCode:G8}=a6.parseId(o),z8=await $.setFieldValue(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FIELD_VALUE_CHANGED,{entityType:G8,entityId:o,fieldName:X8,oldValue:t,newValue:J8.value??J8.values,storeCode:K})}),z8},s6=async(Y8,W8,J8)=>{return $.getFieldValue(Y8,W8,J8)},L6=async(Y8,W8,J8,c8)=>{return $.deleteFieldValue(Y8,W8,J8,c8)},P8=async(Y8,W8,J8,c8)=>{let{entityId:o,fieldName:X8}=J8,{typeCode:t}=a6.parseId(o),G8=await $.deleteFieldValue(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FIELD_REMOVED,{entityType:t,entityId:o,fieldName:X8,storeCode:K})}),G8},O8=async(Y8,W8,J8,c8)=>{let{parentId:o,state:X8="prep"}=J8,t=await $.createStory(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.STORY_CREATED,{id:t.getObjectId(),storeCode:K,name:t.getName(),path:t.getPath(),parentFolderId:o,state:X8})}),t},f8=async(Y8,W8,J8)=>{return $.readStory(Y8,W8,J8)},y8=async(Y8,W8,J8)=>{return $.listStories(Y8,W8,J8)},i8=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=await $.renameStory(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.STORY_RENAMED,{id:o,storeCode:K,name:X8.getName(),path:X8.getPath()})}),X8},o8=async(Y8,W8,J8,c8)=>{let{id:o}=J8,t=(await $.readStory(Y8,W8,{id:o}))?.getParentId()??null,G8=await $.deleteStory(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.STORY_DELETED,{id:o,storeCode:K,path:G8.path,parentFolderId:t,descendantCount:G8.descendantCount})}),G8},z6=async(Y8,W8,J8)=>{return $.readStoryRootFolder(Y8,W8,J8)},h8=async(Y8,W8,J8)=>{return $.findEntitiesByFieldValue(Y8,W8,J8)},p8=async(Y8,W8,J8,c8)=>{let{parentId:o,status:X8="pending"}=J8,t=await $.createJob(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.JOB_CREATED,{id:t.getObjectId(),storeCode:K,name:t.getName(),path:t.getPath(),parentFolderId:o,status:X8})}),t},s8=async(Y8,W8,J8)=>{return $.readJob(Y8,W8,J8)},q6=async(Y8,W8,J8)=>{return $.listJobs(Y8,W8,J8)},X6=async(Y8,W8,J8,c8)=>{let{id:o}=J8,t=(await $.readJob(Y8,W8,{id:o}))?.getParentId()??null,G8=await $.deleteJob(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.JOB_DELETED,{id:o,storeCode:K,path:G8.path,parentFolderId:t,descendantCount:G8.descendantCount})}),G8},f6=async(Y8,W8,J8)=>{return $.readJobRootFolder(Y8,W8,J8)},M8=async(Y8,W8,J8,c8)=>{let o=await $.createAsset(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.ASSET_CREATED,{id:o.getObjectId(),storeCode:K,hash:o.getHash(),mimeType:o.getMimeType(),originalFilename:o.getOriginalFilename()})}),o},x8=async(Y8,W8,J8)=>{return $.readAsset(Y8,W8,J8)},B8=async(Y8,W8,J8)=>{return $.listAssets(Y8,W8,J8)},F8=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=await $.deleteAsset(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.ASSET_DELETED,{id:o,storeCode:K,hash:X8.hash})}),X8};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:J,readFolder:z,updateFolder:W,deleteFolder:Z,listFolderContents:H,getFolderByPath:O,findFolderByName:X,readRootFolderForType:P,isDuplicateNameInParent:w,createContent:T,readContent:G,updateContent:j,updateEntityType:v,deleteTypeScopedFieldValues:M,deleteContent:f,saveDraft:k,readDraft:N,publishContent:R,discardDraft:E,readVersion:C,getVersions:g,findContentByName:S,listContent:D,setEditState:L,getEditState:m,clearEditState:c,createFieldDefinition:e,readFieldDefinition:_8,findFieldDefinitionByName:T8,getFieldDefinitionsForOwner:d8,getFieldDefinitionsForEntityType:H6,resolveEntityTypePk:D8,readDefaultFieldDefinition:m8,resolveFieldDefinition:a8,deleteFieldDefinition:Z6,setFieldValue:_6,addFieldToEntity:u6,updateFieldValue:y6,getFieldValue:s6,deleteFieldValue:L6,removeFieldFromEntity:P8,createStory:O8,renameStory:i8,readStory:f8,listStories:y8,deleteStory:o8,readStoryRootFolder:z6,createJob:p8,readJob:s8,listJobs:q6,deleteJob:X6,readJobRootFolder:f6,findEntitiesByFieldValue:h8,createAsset:M8,readAsset:x8,listAssets:B8,deleteAsset:F8,evictFolder:$.evictFolder,evictContent:$.evictContent,evictStory:$.evictStory,evictJob:$.evictJob,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},EP8=Object.freeze({create:M_6});var __6=($)=>{let{id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W}=$,Z=pz.create(),H=pz.create(),O=pz.create(),X=pz.create(),P=pz.create(),w=pz.create(),{store:T,mutationApi:G}=DP8.create({id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W,folderCache:Z}),j=hP8.create({inner:T,folderCache:Z,contentCache:H,fieldDefinitionCache:O,storyCache:X,jobCache:P,assetCache:w});return{store:EP8.create({inner:j,storeCode:q}),mutationApi:G}},SP8=Object.freeze({create:__6});Z4();var k_6=({id:$,name:K,createdAt:q,updatedAt:Y,children:J=[]})=>{let z=[...J],W=new Map,{entityFns:Z,mutationFns:H}=c3.create({id:$,name:K,createdAt:q,updatedAt:Y}),O=()=>{W.clear();for(let N8 of z){let C8=N8.getCodes();for(let $8 of C8)W.set($8,N8)}};O();let X=()=>"demux",P=()=>z.map((N8)=>N8.getObjectId()),w=()=>[...z],T=()=>{return new Set(W.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:P()}),j=(N8)=>{z.push(N8),O()},v=(N8)=>{return W.get(N8)??null},M=async(N8,C8,{store:$8,storeCode:S8,parentId:L8,name:u8,subtype:M6},x)=>{let w8=$8??S8;y.factory(!w8,I.validation,"store parameter is required","MISSING_STORE_CODE");let u=v(w8);return y.factory(!u,I.notFound,`No child store with code: ${w8}`,"STORE_NOT_FOUND"),u.createFolder(N8,C8,{storeCode:w8,parentId:L8,name:u8,subtype:M6},x)},f=async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readFolder(N8,C8,{id:$8})},f$=Object.freeze({...Z,getType:X,getCodes:T,getChildIds:P,getChildren:w,toJSON:G,createFolder:M,readFolder:f,updateFolder:async(N8,C8,{id:$8,name:S8,parentId:L8},u8)=>{let M6=$8?.[0],x=v(M6);return y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND"),x.updateFolder(N8,C8,{id:$8,name:S8,parentId:L8},u8)},deleteFolder:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteFolder(N8,C8,{id:$8},S8)},evictFolder:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictFolder(N8)},evictContent:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictContent(N8)},evictStory:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictStory(N8)},evictJob:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictJob(N8)},getFolder:async(N8,C8,{id:$8})=>{return f(N8,C8,{id:$8})},listFolderContents:async(N8,C8,{folderId:$8,store:S8,storeCode:L8,type:u8})=>{let M6;if($8!==null&&$8!==void 0)M6=$8[0];else{let u=S8??L8;y.factory(!u,I.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),M6=u}let x=v(M6);y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND");let w8={...C8,storeCode:M6};return x.listFolderContents(N8,w8,{folderId:$8,type:u8})},getFolderByPath:async(N8,C8,{path:$8,type:S8,store:L8,storeCode:u8})=>{let M6=L8??u8;y.factory(!M6,I.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let x=v(M6);if(!x)return null;let w8={...C8,storeCode:M6};return x.getFolderByPath(N8,w8,{path:$8,type:S8})},isDuplicateNameInParent:async(N8,C8,$8,S8,L8=null)=>{let u8;if($8)u8=$8[0];else{let x=z[0];if(!x)y.factory(!0,I.notFound,"No child stores available","STORE_NOT_FOUND");u8=[...x.getCodes()][0]}let M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.isDuplicateNameInParent(N8,C8,$8,S8,L8)},findFolderByName:async(N8,C8,$8,S8)=>{let L8=$8[0],u8=v(L8);if(!u8)return null;return u8.findFolderByName(N8,C8,$8,S8)},readRootFolderForType:async(N8,C8,$8,S8)=>{let L8=v(S8);return y.factory(!L8,I.notFound,`No child store with code: ${S8}`,"STORE_NOT_FOUND"),L8.readRootFolderForType(N8,C8,$8,S8)},createFieldDefinition:async(N8,C8,{storeCode:$8,ownerEntityId:S8,ownerEntityTypePk:L8,name:u8,label:M6,description:x,primitiveType:w8,required:u,multiplicity:s,isSystem:Q,allowedValues:a},n)=>{let d=v($8);return y.factory(!d,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),d.createFieldDefinition(N8,C8,{storeCode:$8,ownerEntityId:S8,ownerEntityTypePk:L8,name:u8,label:M6,description:x,primitiveType:w8,required:u,multiplicity:s,isSystem:Q,allowedValues:a},n)},readFieldDefinition:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readFieldDefinition(N8,C8,{id:$8})},readDefaultFieldDefinition:async(N8,C8,$8)=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.readDefaultFieldDefinition(N8,C8)},getFieldDefinitionsForOwner:async(N8,C8,{storeCode:$8,ownerEntityPk:S8,includeSystem:L8})=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.getFieldDefinitionsForOwner(N8,C8,{ownerEntityPk:S8,includeSystem:L8})},getFieldDefinitionsForEntityType:async(N8,C8,{storeCode:$8,code:S8,subtype:L8})=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.getFieldDefinitionsForEntityType(N8,C8,{code:S8,subtype:L8})},resolveEntityTypePk:async(N8,C8,{storeCode:$8,code:S8,subtype:L8})=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.resolveEntityTypePk(N8,C8,{code:S8,subtype:L8})},resolveFieldDefinition:async(N8,C8,{storeCode:$8,fieldDefinitionId:S8,fieldName:L8,ownerEntityPk:u8,entityTypePk:M6})=>{let x=v($8);return y.factory(!x,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),x.resolveFieldDefinition(N8,C8,{fieldDefinitionId:S8,fieldName:L8,ownerEntityPk:u8,entityTypePk:M6})},deleteFieldDefinition:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteFieldDefinition(N8,C8,{id:$8},S8)},setFieldValue:async(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8,value:u8,values:M6},x)=>{let w8=$8?.[0],u=v(w8);return y.factory(!u,I.notFound,`No child store with code: ${w8}`,"STORE_NOT_FOUND"),u.setFieldValue(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8,value:u8,values:M6},x)},deleteFieldValue:async(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8},u8)=>{let M6=$8?.[0],x=v(M6);return y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND"),x.deleteFieldValue(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8},u8)},getFieldValue:async(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8})=>{let u8=$8?.[0],M6=v(u8);if(!M6)return null;return M6.getFieldValue(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8})},addFieldToEntity:async(N8,C8,$8,S8)=>{let L8=$8.entityId?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.addFieldToEntity(N8,C8,$8,S8)},updateFieldValue:async(N8,C8,$8,S8)=>{let L8=$8.entityId?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.updateFieldValue(N8,C8,$8,S8)},removeFieldFromEntity:async(N8,C8,$8,S8)=>{let L8=$8.entityId?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.removeFieldFromEntity(N8,C8,$8,S8)},createContent:async(N8,C8,{storeCode:$8,type:S8,...L8},u8)=>{let M6=v($8);return y.factory(!M6,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),M6.createContent(N8,C8,{type:S8,storeCode:$8,...L8},u8)},readContent:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readContent(N8,C8,{id:$8})},updateContent:async(N8,C8,{id:$8,...S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.updateContent(N8,C8,{id:$8,...S8},L8)},updateEntityType:async(N8,C8,{id:$8,subtype:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.updateEntityType(N8,C8,{id:$8,subtype:S8},L8)},deleteTypeScopedFieldValues:async(N8,C8,{entityId:$8,entityTypePk:S8})=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteTypeScopedFieldValues(N8,C8,{entityId:$8,entityTypePk:S8})},deleteContent:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteContent(N8,C8,{id:$8},S8)},saveDraft:async(N8,C8,{id:$8,content:S8,sessionId:L8},u8)=>{let M6=$8?.[0],x=v(M6);return y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND"),x.saveDraft(N8,C8,{id:$8,content:S8,sessionId:L8},u8)},readDraft:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readDraft(N8,C8,{id:$8})},publishContent:async(N8,C8,{id:$8,sessionId:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.publishContent(N8,C8,{id:$8,sessionId:S8},L8)},discardDraft:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.discardDraft(N8,C8,{id:$8},S8)},findContentByName:async(N8,C8,$8,S8,L8)=>{let u8=$8?.[0],M6=v(u8);if(!M6)return null;return M6.findContentByName(N8,C8,$8,S8,L8)},listContent:async(N8,C8,{parentId:$8,storeCode:S8,type:L8})=>{let u8,M6;if($8)u8=$8[0],M6=$8;else{y.factory(!S8,I.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),u8=S8;let w8=v(u8);y.factory(!w8,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND");try{M6=(await w8.readRootFolderForType(N8,C8,L8||"d",u8)).getObjectId()}catch(u){M6=null}}let x=v(u8);return y.factory(!x,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),x.listContent(N8,C8,{parentId:M6,type:L8})},setEditState:async(N8,C8,{id:$8,sessionId:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.setEditState(N8,C8,{id:$8,sessionId:S8},L8)},clearEditState:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.clearEditState(N8,C8,{id:$8},S8)},getEditState:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.getEditState(N8,C8,{id:$8})},readVersion:async(N8,C8,{id:$8,versionNumber:S8})=>{let L8=$8?.[0],u8=v(L8);if(!u8)return null;return u8.readVersion(N8,C8,{id:$8,versionNumber:S8})},getVersions:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return[];return L8.getVersions(N8,C8,{id:$8})},createStory:async(N8,C8,{storeCode:$8,...S8},L8)=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.createStory(N8,C8,{storeCode:$8,...S8},L8)},renameStory:async(N8,C8,{id:$8,name:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.renameStory(N8,C8,{id:$8,name:S8},L8)},readStory:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readStory(N8,C8,{id:$8})},listStories:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.listStories(N8,C8,{storeCode:$8})},deleteStory:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteStory(N8,C8,{id:$8},S8)},readStoryRootFolder:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.readStoryRootFolder(N8,C8,{storeCode:$8})},createJob:async(N8,C8,{storeCode:$8,...S8},L8)=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.createJob(N8,C8,{storeCode:$8,...S8},L8)},readJob:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readJob(N8,C8,{id:$8})},listJobs:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.listJobs(N8,C8,{storeCode:$8})},deleteJob:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteJob(N8,C8,{id:$8},S8)},readJobRootFolder:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.readJobRootFolder(N8,C8,{storeCode:$8})},findEntitiesByFieldValue:async(N8,C8,{storeCode:$8,typeCode:S8,subtype:L8,fieldName:u8,fieldValue:M6})=>{let x=v($8);return y.factory(!x,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),x.findEntitiesByFieldValue(N8,C8,{typeCode:S8,subtype:L8,fieldName:u8,fieldValue:M6})},createAsset:async(N8,C8,{storeCode:$8,...S8},L8)=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.createAsset(N8,C8,{storeCode:$8,...S8},L8)},readAsset:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readAsset(N8,C8,{id:$8})},listAssets:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.listAssets(N8,C8,{storeCode:$8})},deleteAsset:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteAsset(N8,C8,{id:$8},S8)},subscribe:(N8,C8)=>{let $8=z.map((S8)=>S8.subscribe(N8,C8));return()=>$8.forEach((S8)=>S8())},subscribeAll:(N8)=>{let C8=z.map(($8)=>$8.subscribeAll(N8));return()=>C8.forEach(($8)=>$8())}}),X5=Object.freeze({...H,addChild:j});return{store:f$,mutationApi:X5}},LP8=Object.freeze({create:k_6});Yk();Z4();var nG=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},ju=($)=>$.object_id,Gu=($)=>{let K=ju($),q=$.id,{store:Y,mutationApi:J}=SP8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:J,id:K,pk:q}},IP8=($,K)=>{let q=ju($),Y=$.id,{store:J,mutationApi:z}=LP8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:J,mutationApi:z,id:q,pk:Y}},f_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=c6();for(let W of FT){let Z=await E1.nextSeq($,"store",q,"n"),H=`${Y}n${Z}`;await $.insertInto("field_definitions").values({store_id:q,object_id:H,entity_type_id:J,type_code:"n",seq:Z,owner_entity_id:null,name:W.name,label:W.label,description:W.description,primitive_type:W.primitiveType||"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:z,updated_at:z}).execute()}},N_6=async($,K,q,Y,J)=>{let z=await o6.readEntityTypeId($,K,"n",null),W=await E1.nextSeq($,"store",q,"n"),Z=`${Y}n${W}`,H=c6();await $.insertInto("field_definitions").values({store_id:q,object_id:Z,entity_type_id:z,type_code:"n",seq:W,owner_entity_id:null,name:"default",label:"Default Field",description:"Auto-created for ad-hoc fields without explicit definitions",primitive_type:"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:H,updated_at:H}).execute()},R_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=await o6.readEntityTypeId($,K,"d",null),W=await o6.readEntityTypeId($,K,"t",null),Z=c6(),H=[{name:"draft_version",label:"Draft Version",description:"Points to current draft version entity"},{name:"latest_published_version",label:"Latest Published Version",description:"Points to most recent published version entity"}];for(let O of[z,W])for(let X of H){let P=await E1.nextSeq($,"store",q,"n"),w=`${Y}n${P}`;await $.insertInto("field_definitions").values({store_id:q,object_id:w,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,owner_entity_type_id:O,name:X.name,label:X.label,description:X.description,primitive_type:"object_ref",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:Z,updated_at:Z}).execute()}},C_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=await o6.readEntityTypeId($,K,"d",null),W=await o6.readEntityTypeId($,K,"t",null),Z=c6(),H=[{name:"edit_session_id",label:"Edit Session ID",description:"UUID of the editing session",primitiveType:"string"},{name:"edit_started_at",label:"Edit Started At",description:"ISO 8601 timestamp when edit lock was acquired",primitiveType:"date"},{name:"edit_last_activity_at",label:"Edit Last Activity At",description:"ISO 8601 timestamp of last activity",primitiveType:"date"}];for(let O of[z,W])for(let X of H){let P=await E1.nextSeq($,"store",q,"n"),w=`${Y}n${P}`;await $.insertInto("field_definitions").values({store_id:q,object_id:w,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,owner_entity_type_id:O,name:X.name,label:X.label,description:X.description,primitive_type:X.primitiveType,required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:Z,updated_at:Z}).execute()}},D_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=await o6.readEntityTypeId($,K,"v",null),W=c6(),Z=[{name:"document",label:"Document",description:"Parent document or template entity",primitiveType:"object_ref",required:1},{name:"version_number",label:"Version Number",description:"Version number (1, 2, 3...)",primitiveType:"int",required:1},{name:"published_at",label:"Published At",description:"ISO 8601 timestamp when published (null = draft)",primitiveType:"date",required:0}];for(let H of Z){let O=await E1.nextSeq($,"store",q,"n"),X=`${Y}n${O}`;await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:J,type_code:"n",seq:O,owner_entity_id:null,owner_entity_type_id:z,name:H.name,label:H.label,description:H.description,primitive_type:H.primitiveType,required:H.required,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:W,updated_at:W}).execute()}},h_6=()=>{let $=new Map,K=new Map,q=new Set,Y=async(w,T,G,j)=>{if(q.has(j))return;let v=await w.selectFrom("field_definitions").select("name").where("store_id","=",T).where("is_system","=",1).where("owner_entity_id","is",null).execute(),M=new Set(v.map((k)=>k.name)),f=FT.filter((k)=>!M.has(k.name)).map((k)=>k.name);if(f.length>0)throw I.validation(`Store ${G} is missing job field definitions: ${f.join(", ")}. Database may be corrupted.`,"MISSING_FIELD_DEFINITIONS");q.add(j)},J=async(w,T,{code:G,name:j},v)=>{let M=c6(),f=await E1.nextSeq(w,"global",null,"s"),k=`S${f}`,N=await w.insertInto("stores").values({id:f,object_id:k,type:"local",code:G,name:j,created_at:M,updated_at:M}).returningAll().executeTakeFirstOrThrow(),{store:R,mutationApi:E,id:C,pk:g}=Gu(N);return await N_6(w,T,g,G,v),await f_6(w,T,g,G),await R_6(w,T,g,G),await C_6(w,T,g,G),await D_6(w,T,g,G),v(()=>{$.set(C,d6.create(R,E,g)),K.set(g,C)}),R},z=async(w,T,{name:G},j)=>{let v=c6(),M=await E1.nextSeq(w,"global",null,"s"),f=`S${M}`,k=await w.insertInto("stores").values({id:M,object_id:f,type:"demux",code:null,name:G,created_at:v,updated_at:v}).returningAll().executeTakeFirstOrThrow(),{store:N,mutationApi:R,id:E,pk:C}=IP8(k,[]);return j(()=>{$.set(E,d6.create(N,R,C)),K.set(C,E)}),N},W=async(w,T,G)=>{let j=$.get(G);if(j)return j.getEntity();let v=nG(G);if(v===null)return null;let M=await w.selectFrom("stores").selectAll().where("id","=",v).executeTakeFirst();if(!M)return null;let f,k,N,R;if(M.type==="local"){let E=Gu(M);f=E.store,k=E.mutationApi,N=E.id,R=E.pk,await Y(w,R,M.code,N)}else{let E=await w.selectFrom("store_children").innerJoin("stores","stores.id","store_children.child_store_id").select(["stores.object_id"]).where("store_children.parent_store_id","=",M.id).execute(),C=[];for(let S of E){let D=await W(w,T,S.object_id);if(D)C.push(D)}let g=IP8(M,C);f=g.store,k=g.mutationApi,N=g.id,R=g.pk}return $.set(N,d6.create(f,k,R)),K.set(R,N),f};return Object.freeze({createLocalStore:J,createDemuxStore:z,readStore:W,readSharedStore:async(w,T)=>{let G=await w.selectFrom("stores").selectAll().where("code","=","B").executeTakeFirstOrThrow(),j=ju(G),v=$.get(j);if(v)return v.getEntity();let{store:M,mutationApi:f,pk:k}=Gu(G);return $.set(j,d6.create(M,f,k)),K.set(k,j),M},readRootStoreForProject:async(w,T,G)=>{let j=G&&G.length>=2&&G[0]==="P"?parseInt(G.slice(1),10):null;y.factory(j===null||isNaN(j),I.validation,`Invalid project ID: ${G}`,"INVALID_PROJECT_ID");let v=await w.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id"]).where("project_stores.project_id","=",j).where("project_stores.is_root","=",1).executeTakeFirst();return y.factory(!v,I.notFound,`Root store not found for project: ${G}`,"ROOT_STORE_NOT_FOUND"),await W(w,T,v.object_id)},addChildToDemux:async(w,T,{demuxId:G,childId:j},v)=>{let M=$.get(G),f=$.get(j),k,N;if(M)k=M.getPk();else{let R=nG(G);y.factory(R===null,I.validation,`Invalid demux store ID: ${G}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",R).executeTakeFirst();y.factory(!E,I.notFound,`Demux store not found: ${G}`,"STORE_NOT_FOUND"),k=E.id}if(f)N=f.getPk();else{let R=nG(j);y.factory(R===null,I.validation,`Invalid child store ID: ${j}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",R).executeTakeFirst();y.factory(!E,I.notFound,`Child store not found: ${j}`,"STORE_NOT_FOUND"),N=E.id}await w.insertInto("store_children").values({parent_store_id:k,child_store_id:N}).execute(),v(()=>{let R=$.get(G),E=$.get(j);if(R&&E)R.getMutationApi().addChild(E.getEntity())})},addStoresToProject:async(w,T,{projectId:G,rootStoreId:j,storeIds:v})=>{let M=G&&G.length>=2&&G[0]==="P"?parseInt(G.slice(1),10):null;y.factory(M===null||isNaN(M),I.validation,`Invalid project ID: ${G}`,"INVALID_PROJECT_ID");let f=await w.selectFrom("projects").select("id").where("id","=",M).executeTakeFirst();y.factory(!f,I.notFound,`Project not found: ${G}`,"PROJECT_NOT_FOUND");let k=f.id,N=$.get(j),R;if(N)R=N.getPk();else{let E=nG(j);y.factory(E===null,I.validation,`Invalid root store ID: ${j}`,"INVALID_ID");let C=await w.selectFrom("stores").select("id").where("id","=",E).executeTakeFirst();y.factory(!C,I.notFound,`Root store not found: ${j}`,"STORE_NOT_FOUND"),R=C.id}for(let E of v){let C=$.get(E),g;if(C)g=C.getPk();else{let S=nG(E);y.factory(S===null,I.validation,`Invalid store ID: ${E}`,"INVALID_ID");let D=await w.selectFrom("stores").select("id").where("id","=",S).executeTakeFirst();y.factory(!D,I.notFound,`Store not found: ${E}`,"STORE_NOT_FOUND"),g=D.id}await w.insertInto("project_stores").values({project_id:k,store_id:g,is_root:g===R?1:0}).execute()}},evictStore:(w)=>{let T=$.get(w);if(T)K.delete(T.getPk());$.delete(w)}})},xP8=Object.freeze({create:h_6});Z4();Z4();var E_6=($)=>{let K=$.split("/").filter((J)=>J.trim()),q=K[K.length-1];return{parentPath:K.slice(0,-1).join("/")||null,name:q,segments:K}},S_6=($)=>{return $[0]},w1=Object.freeze({parsePath:E_6,extractStoreCode:S_6});Z4();var L_6=["Documents/",/^Stories\/[^/]+\//],I_6=["Templates/"],x_6=["Documents/","Templates/",/^Stories\/[^/]+\//],g_6=($)=>{y.factory(!$||$.length===0,I.validation,"Path cannot be empty","EMPTY_PATH"),y.factory($.startsWith("/"),I.validation,"No leading slash allowed","INVALID_PATH"),y.factory($.endsWith("/"),I.validation,"No trailing slash allowed","INVALID_PATH"),y.factory($.includes("//"),I.validation,"No consecutive slashes allowed","INVALID_PATH")},b_6=($)=>{y.factory(!$||$.trim().length===0,I.validation,"Name cannot be empty","INVALID_NAME"),y.factory($.includes("/"),I.validation,"Name cannot contain /","INVALID_NAME"),y.factory($!==$.trim(),I.validation,"Name cannot have leading/trailing whitespace","INVALID_NAME")},y_6=async($,K,q,Y,J)=>{let z=q;while(z){let W=z.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==="tasks"&&Y.includes("tasks"))return;let Z=z.getParentId();if(!Z)break;z=await J.readFolder($,K,{id:Z})}throw I.validation(`Cannot create entity in this location. Allowed roots: ${Y.join(", ")}`,"INVALID_ROOT")},u_6=async($,K,q,Y)=>{let J=q;while(J){if(J.getSubtype()==="tasks")return!0;let z=J.getParentId();if(!z)break;J=await Y.readFolder($,K,{id:z})}return!1},m_6=($,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}},B_6=async($,K,q,Y)=>{let J=new Set,z=q;while(z){if(J.has(z))throw I.validation(`Cycle detected in parent chain for entity ${q}`,"CYCLE_DETECTED");J.add(z);let W=a6.parseId(z);if(!W)throw I.notFound(`Invalid entity ID format: ${z}`,"NOT_FOUND");let{typeCode:Z}=W,H,O=null;if(Z==="f"){if(H=await Y.readFolder($,K,{id:z}),!H)throw I.notFound(`Folder not found: ${z}`,"NOT_FOUND");if(O=H.getSubtype(),O==="root_d"||O==="root_t"||O==="root_s"||O==="tasks")return{id:z,type:Z,subtype:O};z=H.getParentId()}else if(Z==="s"){if(H=await Y.readStory($,K,{id:z}),!H)throw I.notFound(`Story not found: ${z}`,"NOT_FOUND");return{id:z,type:Z,subtype:null}}else if(Z==="d"||Z==="t"){if(H=await Y.readContent($,K,{id:z}),!H)throw I.notFound(`Content not found: ${z}`,"NOT_FOUND");z=H.getParentId()}else throw I.validation(`Unsupported entity type code: ${Z}`,"INVALID_TYPE")}throw I.validation(`No root found for entity ${q}`,"NO_ROOT_FOUND")},G4=Object.freeze({DOCUMENT_PREFIXES:L_6,TEMPLATE_PREFIXES:I_6,FOLDER_PREFIXES:x_6,validatePathFormat:g_6,validateName:b_6,validateRootInAllowedTree:y_6,isInsideTasksFolder:u_6,detectFullPathPrefix:m_6,getRootForEntity:B_6});var U_6=({store:$})=>{let K=async(w,T,G,j,v,M,f,k=!0,N=null)=>{let R=G.split("/").filter((D)=>D.trim());y.factory(R.length===0,I.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let E=R.slice(0,-1).join("/");if(E){let D=await $.getFolderByPath(w,T,{path:E,type:j,storeCode:v});if(D){let L=Q3.validateFolderName(R[R.length-1]);return{parentObjectId:D.getObjectId(),name:L}}}let C=M??j,g;if(N)g=await $.readFolder(w,T,{id:N}),y.factory(!g,I.notFound,`Starting folder not found: ${N}`,"FOLDER_NOT_FOUND");else g=await $.readRootFolderForType(w,T,C,v);for(let D=0;D<R.length-1;D++){let L=Q3.validateFolderName(R[D]),m=await $.findFolderByName(w,T,g.getObjectId(),L);if(m)g=m;else{if(!k)throw I.notFound(`Folder not found: "${L}"`,"FOLDER_NOT_FOUND");g=await $.createFolder(w,T,{storeCode:v,parentId:g.getObjectId(),name:L},f)}}let S=Q3.validateFolderName(R[R.length-1]);return{parentObjectId:g.getObjectId(),name:S}},q=async(w,T,G,j)=>{let{path:v,store:M}=G,f=["d","t","s"],k=G4.FOLDER_PREFIXES;G4.validatePathFormat(v);let N=G4.detectFullPathPrefix(v,k);y.factory(!N.valid,I.validation,`Path must start with one of: ${k.map((e)=>typeof e==="string"?e:e.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let R=v.slice(N.prefix.length);y.factory(!R||R.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let E,C,g=null;if(N.prefix==="Documents/")E="d",C="d";else if(N.prefix==="Templates/")E="t",C="t";else if(N.prefix.startsWith("Stories/")){E="s",C="d";let e=N.prefix.slice(8,-1),T8=(await $.listStories(w,T,{storeCode:M})).find((d8)=>d8.getName()===e);if(!T8)throw I.notFound(`Story not found: ${e}`,"STORY_NOT_FOUND");g=T8.getObjectId()}let{parentPath:S,name:D}=w1.parsePath(R),L;if(S){let e=await K(w,T,S,C,M,E,j,!0,g),_8=await $.findFolderByName(w,T,e.parentObjectId,e.name);if(_8)L=_8.getObjectId();else L=(await $.createFolder(w,T,{storeCode:M,parentId:e.parentObjectId,name:e.name},j)).getObjectId()}else if(g)L=g;else L=(await $.readRootFolderForType(w,T,E,M)).getObjectId();if(E==="s"){let e=await $.readFolder(w,T,{id:L});y.factory(!e,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(w,T,e,f,$)}let m=Q3.validateFolderName(D),c=await $.isDuplicateNameInParent(w,T,L,m);return y.factory(c,I.conflict,`Folder "${m}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:M,parentId:L,name:m},j)},Y=async(w,T,G,j)=>{let{root:v,path:M}=G,f=["d","t","s"],k=w1.extractStoreCode(v);G4.validatePathFormat(M);let N=await $.readFolder(w,T,{id:v});y.factory(!N,I.notFound,`Root folder not found: ${v}`,"FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(w,T,N,f,$);let{parentPath:R,name:E}=w1.parsePath(M),C;if(R){let D=R.split("/").filter((m)=>m.trim()),L=N;for(let m of D){let c=Q3.validateFolderName(m),e=await $.findFolderByName(w,T,L.getObjectId(),c);if(e)L=e;else L=await $.createFolder(w,T,{storeCode:k,parentId:L.getObjectId(),name:c},j)}C=L.getObjectId()}else C=v;let g=Q3.validateFolderName(E),S=await $.isDuplicateNameInParent(w,T,C,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:C,name:g},j)},J=async(w,T,G,j)=>{let{parentId:v,name:M}=G,f=["d","t","s"],k=w1.extractStoreCode(v);G4.validateName(M);let N=await $.readFolder(w,T,{id:v});y.factory(!N,I.notFound,`Parent folder not found: ${v}`,"FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(w,T,N,f,$);let R=Q3.validateFolderName(M),E=await $.isDuplicateNameInParent(w,T,v,R);return y.factory(E,I.conflict,`Folder "${R}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:v,name:R},j)},z=async(w,T,G,j)=>{let{mode:v,path:M,root:f,parentId:k,name:N,store:R,type:E}=G;if(y.factory(G.subtype==="tasks",I.validation,"Tasks folders are system-managed and cannot be created manually","RESERVED_SUBTYPE"),v==="fullPath")return y.factory(!R,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await q(w,T,{path:M,store:R},j);if(v==="rootRelative")return y.factory(!f,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),await Y(w,T,{root:f,path:M},j);if(v==="parentName")return y.factory(!k,I.validation,"parentId is required for parentName mode","MISSING_PARENT_ID"),y.factory(!N,I.validation,"name is required for parentName mode","MISSING_NAME"),await J(w,T,{parentId:k,name:N},j);if(E!==void 0){y.factory(!M||M==="/",I.validation,"Path cannot be empty","EMPTY_PATH"),y.factory(E!=="d"&&E!=="t",I.validation,'Type must be "d" or "t"',"INVALID_TYPE"),y.factory(!R,I.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:C,name:g}=await K(w,T,M,E,R,void 0,j),S=await $.isDuplicateNameInParent(w,T,C,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:R,parentId:C,name:g},j)}throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS")},W=async(w,T,{id:G})=>{return await $.readFolder(w,T,{id:G})};return Object.freeze({resolvePath:K,createFolder:z,readFolder:W,renameFolder:async(w,T,{id:G,name:j},v)=>{let M=await W(w,T,{id:G});y.factory(!M,I.notFound,`Folder not found: ${G}`,"FOLDER_NOT_FOUND"),y.factory(Q3.isRootFolder(M),I.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let f=Q3.validateFolderName(j),k=await $.isDuplicateNameInParent(w,T,M.getParentId(),f,G);return y.factory(k,I.conflict,`Folder "${f}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(w,T,{id:G,name:f},v)},moveFolder:async(w,T,{id:G,parentId:j},v)=>{let M=await W(w,T,{id:G});y.factory(!M,I.notFound,`Folder not found: ${G}`,"FOLDER_NOT_FOUND"),y.factory(Q3.isRootFolder(M),I.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let f=await W(w,T,{id:j});y.factory(!f,I.notFound,`Parent folder not found: ${j}`,"PARENT_NOT_FOUND"),y.factory(!G||G.length<1,I.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),y.factory(!j||j.length<1,I.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let k=G[0],N=j[0];y.factory(k!==N,I.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),y.factory(G===j,I.validation,"Cannot move folder into itself","SELF_MOVE");let R=j;while(R!==null){y.factory(R===G,I.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let C=await $.readFolder(w,T,{id:R});if(!C)break;R=C.getParentId()}let E=await $.isDuplicateNameInParent(w,T,j,M.getName(),G);return y.factory(E,I.conflict,`Folder "${M.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(w,T,{id:G,parentId:j},v)},deleteFolder:async(w,T,{id:G},j)=>{let v=await W(w,T,{id:G});return y.factory(!v,I.notFound,`Folder not found: ${G}`,"FOLDER_NOT_FOUND"),y.factory(Q3.isRootFolder(v),I.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(w,T,{id:G},j)},getFolderByPath:async(w,T,{path:G,type:j,storeCode:v})=>{return await $.getFolderByPath(w,T,{path:G,type:j,storeCode:v})},listFolderContents:async(w,T,{folderId:G,type:j,storeCode:v})=>{return await $.listFolderContents(w,T,{folderId:G,type:j,storeCode:v})}})},gP8=Object.freeze({create:U_6});Z4();var bP8=Object.freeze(["string","object_ref","int","text","date","float"]),p_6=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/,F_6=($,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(!p_6.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: ${$}`}}},c_6=({store:$})=>{let K=["fieldAdded","fieldValueChanged","fieldRemoved"],{notify:q,subscribe:Y,subscribeAll:J}=bJ.create(K),z=async(G,j,{store:v,ownerEntityId:M,ownerEntityTypeCode:f,ownerEntityTypeSubtype:k,name:N,label:R,description:E,primitiveType:C,required:g,multiplicity:S,isSystem:D=!1,allowedValues:L},m)=>{y.factory(!v,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(M&&f,I.validation,"Cannot specify both ownerEntityId and ownerEntityTypeCode","INVALID_FIELD_DEFINITION_SCOPE"),y.factory(!bP8.includes(C),I.validation,`Invalid primitiveType: ${C}. Must be one of: ${bP8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(S!=="single"&&S!=="multi",I.validation,`Invalid multiplicity: ${S}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let c=/^[a-zA-Z0-9_]+$/;y.factory(!N||!c.test(N),I.validation,`Invalid name: ${N}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME");let e=null;if(f)e=await $.resolveEntityTypePk(G,j,{storeCode:v,code:f,subtype:k});return await $.createFieldDefinition(G,j,{storeCode:v,ownerEntityId:M,ownerEntityTypePk:e,name:N,label:R,description:E,primitiveType:C,required:g,multiplicity:S,isSystem:D,allowedValues:L},m)},W=async(G,j,{id:v})=>{return y.factory(!v||v.length<3,I.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(G,j,{id:v})},Z=async(G,j,{store:v,ownerEntityId:M,includeSystem:f=!0})=>{y.factory(!v,I.validation,"store is required","MISSING_STORE_CODE");let k=null;if(M)k=null;return await $.getFieldDefinitionsForOwner(G,j,{storeCode:v,ownerEntityPk:k,includeSystem:f})},H=async(G,j,{store:v,code:M,subtype:f})=>{y.factory(!v,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(!M,I.validation,"code is required","MISSING_CODE"),y.factory(!f,I.validation,"subtype is required","MISSING_SUBTYPE");let k=await $.getFieldDefinitionsForEntityType(G,j,{storeCode:v,code:M,subtype:f}),N=await $.getFieldDefinitionsForOwner(G,j,{storeCode:v,ownerEntityPk:null,includeSystem:!0}),R=new Map;for(let E of k)R.set(E.getName(),E);for(let E of N)if(!R.has(E.getName()))R.set(E.getName(),E);return Array.from(R.values())},O=async(G,j,{id:v},M)=>{let f=await W(G,j,{id:v});return y.factory(!f,I.notFound,`Field definition not found: ${v}`,"DEFINITION_NOT_FOUND"),y.factory(f.getIsSystem(),I.validation,`Cannot delete system field definition: ${v}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(G,j,{id:v},M)},X=async(G,j,{entityId:v,parentId:M,values:f})=>{y.factory(f.includes(v),I.validation,`Self-reference not allowed: ${v} cannot depend on itself`,"SELF_REFERENCE");for(let k of f){let N=await $.readContent(G,j,{id:k});y.factory(!N,I.validation,`Referenced entity does not exist: ${k}`,"INVALID_REFERENCE");let{typeCode:R}=a6.parseId(k);y.factory(R!=="d",I.validation,`Referenced entity is not a document: ${k}`,"INVALID_REFERENCE_TYPE"),y.factory(N.getSubtype()!=="task",I.validation,`Referenced entity is not a task: ${k}`,"INVALID_REFERENCE_SUBTYPE"),y.factory(N.getParentId()!==M,I.validation,`Referenced task is in a different folder: ${k}`,"INVALID_REFERENCE_SCOPE")}for(let k of f){let N=new Set,R=async(C,g)=>{if(C===v)return g;if(N.has(C))return null;N.add(C);let S=await $.getFieldValue(G,j,{entityId:C,fieldName:"dependsOn"});if(!S)return null;let D=S.getValues();for(let L of D){let m=await R(L,[...g,L]);if(m)return m}return null},E=await R(k,[v,k]);if(E)throw I.validation(`Circular dependency detected: ${E.join(" -> ")}`,"CIRCULAR_DEPENDENCY")}};return Object.freeze({createFieldDefinition:z,readFieldDefinition:W,getFieldDefinitionsForOwner:Z,getFieldDefinitionsForType:H,deleteFieldDefinition:O,setFieldValue:async(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f,value:k,values:N},R,E)=>{y.factory(!v,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!M&&!f,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),y.factory(k!==void 0&&N!==void 0,I.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),y.factory(k===void 0&&N===void 0,I.validation,"Either value or values must be provided","MISSING_VALUE");let{typeCode:C}=a6.parseId(v),g=v[0],S=null,D=await $.getFieldValue(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f});if(D)S=D.getDefinition();else if(M)S=await $.readFieldDefinition(G,j,{id:M});else if(f&&$.resolveFieldDefinition){let D8=null;if((C==="d"||C==="t")&&$.resolveEntityTypePk){let a8=(await $.readContent(G,j,{id:v}))?.getSubtype?.()||null;if(a8)D8=await $.resolveEntityTypePk(G,j,{storeCode:g,code:C,subtype:a8})}S=await $.resolveFieldDefinition(G,j,{storeCode:g,fieldName:f,ownerEntityPk:null,entityTypePk:D8})}if(S){let D8=S.getAllowedValues();if(D8&&D8.length>0){let a8=N?[...N]:k!==void 0?[k]:[];if(a8.length>0){let Z6=a8.filter((_6)=>!D8.includes(_6));if(Z6.length>0)throw I.validation(`Invalid value(s): ${Z6.join(", ")}. Allowed: ${D8.join(", ")}`,"VALUE_NOT_ALLOWED")}}let m8=S.getPrimitiveType();if(["int","float","date"].includes(m8)){let a8=N?[...N]:k!==void 0?[k]:[];for(let Z6 of a8){let _6=F_6(m8,Z6);if(!_6.valid)throw I.validation(_6.error,"INVALID_TYPED_VALUE")}}}let L=N;if(C==="d"){let D8=await $.readContent(G,j,{id:v});if(D8&&D8.getSubtype()==="task"){let m8=S;if(!m8&&f)m8=(await $.getFieldDefinitionsForEntityType(G,j,{storeCode:g,code:"d",subtype:"task"})).find((Z6)=>Z6.getName()===f)||null;if(m8&&m8.getPrimitiveType()==="object_ref"){let a8=N?[...N]:k!==void 0?[k]:[];if(a8.length>0){if(a8=[...new Set(a8)],await X(G,j,{entityId:v,parentId:D8.getParentId(),values:a8}),N)L=a8}}}}let m={entityId:v,fieldDefinitionId:M,fieldName:f,value:k,values:L},c=!D,e=D?.getValue(),_8;if(c)_8=await $.addFieldToEntity(G,j,m,R);else _8=await $.updateFieldValue(G,j,{...m,_oldValue:e},R);let H6=q(c?"fieldAdded":"fieldValueChanged",c?{entityType:C,entityId:v,fieldName:f,value:k??N,enqueuePostCommit:R}:{entityType:C,entityId:v,fieldName:f,oldValue:e,newValue:k??N,enqueuePostCommit:R},E);if(H6){let D8=H6.map((m8)=>m8.message).join("; ");throw Error(`Field change rejected: ${D8}`)}return _8},deleteFieldValue:async(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f},k,N)=>{y.factory(!v,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!M&&!f,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER");let{typeCode:R}=a6.parseId(v),E=await $.removeFieldFromEntity(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f},k),C=q("fieldRemoved",{entityType:R,entityId:v,fieldName:f,enqueuePostCommit:k},N);if(C){let g=C.map((S)=>S.message).join("; ");throw Error(`Field removal rejected: ${g}`)}return E},validateRequiredFields:async(G,j,{store:v,code:M,subtype:f,fields:k})=>{let R=(await H(G,j,{store:v,code:M,subtype:f})).filter((g)=>g.getRequired());if(R.length===0)return;let E=k&&typeof k==="object"?Object.keys(k):[],C=R.filter((g)=>!E.includes(g.getName())).map((g)=>g.getName());if(C.length>0)throw I.validation(`Missing required fields: ${C.join(", ")}`,"MISSING_REQUIRED_FIELDS")},subscribe:Y,subscribeAll:J})},yP8=Object.freeze({create:c_6});Z4();function m5(){}m5.prototype={diff:function(K,q){var Y,J=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},z=J.callback;if(typeof J==="function")z=J,J={};var W=this;function Z(N){if(N=W.postProcess(N,J),z)return setTimeout(function(){z(N)},0),!0;else return N}K=this.castInput(K,J),q=this.castInput(q,J),K=this.removeEmpty(this.tokenize(K,J)),q=this.removeEmpty(this.tokenize(q,J));var H=q.length,O=K.length,X=1,P=H+O;if(J.maxEditLength!=null)P=Math.min(P,J.maxEditLength);var w=(Y=J.timeout)!==null&&Y!==void 0?Y:1/0,T=Date.now()+w,G=[{oldPos:-1,lastComponent:void 0}],j=this.extractCommon(G[0],q,K,0,J);if(G[0].oldPos+1>=O&&j+1>=H)return Z(uP8(W,G[0].lastComponent,q,K,W.useLongestToken));var v=-1/0,M=1/0;function f(){for(var N=Math.max(v,-X);N<=Math.min(M,X);N+=2){var R=void 0,E=G[N-1],C=G[N+1];if(E)G[N-1]=void 0;var g=!1;if(C){var S=C.oldPos-N;g=C&&0<=S&&S<H}var D=E&&E.oldPos+1<O;if(!g&&!D){G[N]=void 0;continue}if(!D||g&&E.oldPos<C.oldPos)R=W.addToPath(C,!0,!1,0,J);else R=W.addToPath(E,!1,!0,1,J);if(j=W.extractCommon(R,q,K,N,J),R.oldPos+1>=O&&j+1>=H)return Z(uP8(W,R.lastComponent,q,K,W.useLongestToken));else{if(G[N]=R,R.oldPos+1>=O)M=Math.min(M,N-1);if(j+1>=H)v=Math.max(v,N+1)}}X++}if(z)(function N(){setTimeout(function(){if(X>P||Date.now()>T)return z();if(!f())N()},0)})();else while(X<=P&&Date.now()<=T){var k=f();if(k)return k}},addToPath:function(K,q,Y,J,z){var W=K.lastComponent;if(W&&!z.oneChangePerToken&&W.added===q&&W.removed===Y)return{oldPos:K.oldPos+J,lastComponent:{count:W.count+1,added:q,removed:Y,previousComponent:W.previousComponent}};else return{oldPos:K.oldPos+J,lastComponent:{count:1,added:q,removed:Y,previousComponent:W}}},extractCommon:function(K,q,Y,J,z){var W=q.length,Z=Y.length,H=K.oldPos,O=H-J,X=0;while(O+1<W&&H+1<Z&&this.equals(Y[H+1],q[O+1],z))if(O++,H++,X++,z.oneChangePerToken)K.lastComponent={count:1,previousComponent:K.lastComponent,added:!1,removed:!1};if(X&&!z.oneChangePerToken)K.lastComponent={count:X,previousComponent:K.lastComponent,added:!1,removed:!1};return K.oldPos=H,O},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 uP8($,K,q,Y,J){var z=[],W;while(K)z.push(K),W=K.previousComponent,delete K.previousComponent,K=W;z.reverse();var Z=0,H=z.length,O=0,X=0;for(;Z<H;Z++){var P=z[Z];if(!P.removed){if(!P.added&&J){var w=q.slice(O,O+P.count);w=w.map(function(T,G){var j=Y[X+G];return j.length>T.length?j:T}),P.value=$.join(w)}else P.value=$.join(q.slice(O,O+P.count));if(O+=P.count,!P.added)X+=P.count}else P.value=$.join(Y.slice(X,X+P.count)),X+=P.count}return z}var C$4=new m5;function mP8($,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 BP8($,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 Vu($,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 Au($,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 oG($,K){return Vu($,K,"")}function Zk($,K){return Au($,K,"")}function UP8($,K){return K.slice(0,Q_6($,K))}function Q_6($,K){var q=0;if($.length>K.length)q=$.length-K.length;var Y=K.length;if($.length<K.length)Y=$.length;var J=Array(Y),z=0;J[0]=0;for(var W=1;W<Y;W++){if(K[W]==K[z])J[W]=J[z];else J[W]=z;while(z>0&&K[W]!=K[z])z=J[z];if(K[W]==K[z])z++}z=0;for(var Z=q;Z<$.length;Z++){while(z>0&&$[Z]!=K[z])z=J[z];if($[Z]==K[z])z++}return z}var Hk="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}",l_6=new RegExp("[".concat(Hk,"]+|\\s+|[^").concat(Hk,"]"),"ug"),Xk=new m5;Xk.equals=function($,K,q){if(q.ignoreCase)$=$.toLowerCase(),K=K.toLowerCase();return $.trim()===K.trim()};Xk.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(z){return z.segment})}else q=$.match(l_6)||[];var Y=[],J=null;return q.forEach(function(z){if(/\s/.test(z))if(J==null)Y.push(z);else Y.push(Y.pop()+z);else if(/\s/.test(J))if(Y[Y.length-1]==J)Y.push(Y.pop()+z);else Y.push(J+z);else Y.push(z);J=z}),Y};Xk.join=function($){return $.map(function(K,q){if(q==0)return K;else return K.replace(/^\s+/,"")}).join("")};Xk.postProcess=function($,K){if(!$||K.oneChangePerToken)return $;var q=null,Y=null,J=null;if($.forEach(function(z){if(z.added)Y=z;else if(z.removed)J=z;else{if(Y||J)pP8(q,J,Y,z);q=z,Y=null,J=null}}),Y||J)pP8(q,J,Y,null);return $};function pP8($,K,q,Y){if(K&&q){var J=K.value.match(/^\s*/)[0],z=K.value.match(/\s*$/)[0],W=q.value.match(/^\s*/)[0],Z=q.value.match(/\s*$/)[0];if($){var H=mP8(J,W);$.value=Au($.value,W,H),K.value=oG(K.value,H),q.value=oG(q.value,H)}if(Y){var O=BP8(z,Z);Y.value=Vu(Y.value,Z,O),K.value=Zk(K.value,O),q.value=Zk(q.value,O)}}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],P=K.value.match(/^\s*/)[0],w=K.value.match(/\s*$/)[0],T=mP8(X,P);K.value=oG(K.value,T);var G=BP8(oG(X,T),w);K.value=Zk(K.value,G),Y.value=Vu(Y.value,X,G),$.value=Au($.value,X,X.slice(0,X.length-G.length))}else if(Y){var j=Y.value.match(/^\s*/)[0],v=K.value.match(/\s*$/)[0],M=UP8(v,j);K.value=Zk(K.value,M)}else if($){var f=$.value.match(/\s*$/)[0],k=K.value.match(/^\s*/)[0],N=UP8(f,k);K.value=oG(K.value,N)}}var i_6=new m5;i_6.tokenize=function($){var K=new RegExp("(\\r?\\n)|[".concat(Hk,"]+|[^\\S\\n\\r]+|[^").concat(Hk,"]"),"ug");return $.match(K)||[]};var Pk=new m5;Pk.tokenize=function($,K){if(K.stripTrailingCr)$=$.replace(/\r\n/g,`
497
+ `.execute($)};var NZ6=()=>new Date().toISOString(),c6=NZ6;var RZ6=async($,K,q,Y)=>{if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirst())await $.insertInto("sequences").values({scope_type:K,scope_id:q,type_code:Y,next_value:1}).execute();let z=await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirstOrThrow();return await $.updateTable("sequences").set((W)=>({next_value:W("next_value","+",1)})).where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).execute(),z.next_value},E1=Object.freeze({nextSeq:RZ6});var CZ6=Object.freeze([{name:"agent",label:"Agent",description:"Agent type (claude or codex)"},{name:"model",label:"Model",description:"Model name (optional)"},{name:"status",label:"Status",description:"Job status (pending/running/completed/error)"},{name:"startedAt",label:"Started At",description:"Job start timestamp",primitiveType:"date"},{name:"completedAt",label:"Completed At",description:"Job completion timestamp",primitiveType:"date"},{name:"tokensUsed",label:"Tokens Used",description:"Total tokens used by the job",primitiveType:"int"},{name:"exitCode",label:"Exit Code",description:"Process exit code",primitiveType:"int"},{name:"errorMessage",label:"Error Message",description:"Error message if job failed"},{name:"durationMs",label:"Duration (ms)",description:"Job execution duration in milliseconds",primitiveType:"int"},{name:"totalCostUsd",label:"Total Cost (USD)",description:"API cost in USD",primitiveType:"float"},{name:"numTurns",label:"Number of Turns",description:"Number of agent conversation turns",primitiveType:"int"},{name:"sessionId",label:"Session ID",description:"Agent session ID for conversation continuity"},{name:"workingDirectory",label:"Working Directory",description:"Working directory for job execution (optional, defaults to projectPath)"},{name:"pid",label:"PID",description:"Process ID of the running job",primitiveType:"int"},{name:"objectId",label:"Object ID",description:"ID of the entity this job is associated with"},{name:"streaming",label:"Streaming",description:"Enable realtime output streaming (true/false)"}]),FT=CZ6;var DZ6=[{code:"f",name:"Folder",subtype:null},{code:"f",name:"Document Root Folder",subtype:"root_d"},{code:"f",name:"Template Root Folder",subtype:"root_t"},{code:"f",name:"Story Root Folder",subtype:"root_s"},{code:"f",name:"Job Root Folder",subtype:"root_j"},{code:"f",name:"Tasks Folder",subtype:"tasks"},{code:"d",name:"Document",subtype:null},{code:"d",name:"Task",subtype:"task"},{code:"d",name:"Cartridge",subtype:"cartridge"},{code:"t",name:"Template",subtype:null},{code:"t",name:"Prompt",subtype:"prompt"},{code:"s",name:"Story",subtype:null},{code:"j",name:"Job",subtype:null},{code:"v",name:"Version",subtype:null},{code:"n",name:"field_definition",subtype:null},{code:"a",name:"asset",subtype:null}],R78=async($)=>{return(await $.selectFrom("entity_types").select("id").limit(1).execute()).length>0},i1=async($,K,q=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",K).where((J)=>q?J("subtype","=",q):J("subtype","is",null)).executeTakeFirstOrThrow()).id},jM=async($,K,q,Y)=>{let J=c6(),W={d:"root_d",t:"root_t",s:"root_s",j:"root_j"}[Y],H={d:"Documents",t:"Templates",s:"Stories",j:"Jobs"}[Y],O=await i1($,"f",W);if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst())await $.insertInto("sequences").values({scope_type:"store",scope_id:K,type_code:"f",next_value:1}).execute();let P=await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst();await $.updateTable("sequences").set((v)=>({next_value:v("next_value","+",1)})).where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").execute();let w=`${q}f${P.next_value}`,T=await $.insertInto("entities").values({store_id:K,object_id:w,entity_type_id:O,type_code:"f",seq:P.next_value,parent_folder_id:null,parent_object_id:null,name:H,created_at:J,updated_at:J}).returning("id").executeTakeFirstOrThrow();await $.insertInto("folders").values({entity_id:T.id}).execute();let j={d:"document",t:"template",s:"story",j:"job"}[Y];return T.id},hZ6=async($)=>{for(let K of DZ6)await $.insertInto("entity_types").values(K).execute()},EZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await E1.nextSeq($,"store",K,"n"),W=`${q}n${z}`;await $.insertInto("field_definitions").values({store_id:K,object_id:W,entity_type_id:J,type_code:"n",seq:z,owner_entity_id:null,name:"state",label:"State",description:"Workflow state",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},SZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","task"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"state",label:"State",description:"Task workflow state",primitive_type:"string",required:1,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},LZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null);for(let z of FT){let W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,name:z.name,label:z.label,description:z.description,primitive_type:z.primitiveType||"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},IZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await E1.nextSeq($,"store",K,"n"),W=`${q}n${z}`;await $.insertInto("field_definitions").values({store_id:K,object_id:W,entity_type_id:J,type_code:"n",seq:z,owner_entity_id:null,name:"default",label:"Default Field",description:"Auto-created for ad-hoc fields without explicit definitions",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},vM=Object.freeze(["prep","spec","design","plan","build","review","done"]),Oz=Object.freeze(["waiting","ready","in-progress","done"]),xZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"f","tasks"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"states",label:"States",description:"Ordered list of valid task states",primitive_type:"string",required:1,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},gZ6=async($,K,q,Y)=>{let J=c6(),z=await i1($,"n",null),W=await i1($,"f","root_s"),Z=await E1.nextSeq($,"store",K,"n"),H=`${q}n${Z}`,X=(await $.insertInto("field_definitions").values({store_id:K,object_id:H,entity_type_id:z,type_code:"n",seq:Z,owner_entity_id:null,owner_entity_type_id:W,name:"states",label:"States",description:"Ordered list of valid story states",primitive_type:"string",required:1,multiplicity:"multi",is_system:1,created_at:J,updated_at:J}).returning("id").executeTakeFirstOrThrow()).id;for(let P=0;P<vM.length;P++)await $.insertInto("string_fields").values({entity_id:Y,field_definition_id:X,value:vM[P],ordinal:P}).execute()},bZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","task"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"dependsOn",label:"Depends On",description:"Tasks that block this task",primitive_type:"object_ref",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},yZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","cartridge"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"synopsis",label:"Synopsis",description:"Brief description of the cartridge",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},uZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d","cartridge"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"relatedActivities",label:"Related Activities",description:"Associated activity types",primitive_type:"string",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},mZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"t","prompt"),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"associatedType",label:"Associated Type",description:"Entity types this template is associated with",primitive_type:"string",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).execute()},BZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"s",null),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"flag",label:"Flag",description:"Visual indicator for story attention",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},UZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"s",null),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"activeJobCount",label:"Active Job Count",description:"Number of active jobs associated with this story",primitive_type:"int",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},pZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"s",null),W=await E1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`;await $.insertInto("field_definitions").values({store_id:K,object_id:Z,entity_type_id:J,type_code:"n",seq:W,owner_entity_id:null,owner_entity_type_id:z,name:"statusMessage",label:"Status Message",description:"Agent status message displayed in stories list",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()},FZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d",null),W=await i1($,"t",null),Z=[{name:"draft_version",label:"Draft Version",description:"Points to current draft version entity"},{name:"latest_published_version",label:"Latest Published Version",description:"Points to most recent published version entity"}];for(let H of[z,W])for(let O of Z){let X=await E1.nextSeq($,"store",K,"n"),P=`${q}n${X}`;await $.insertInto("field_definitions").values({store_id:K,object_id:P,entity_type_id:J,type_code:"n",seq:X,owner_entity_id:null,owner_entity_type_id:H,name:O.name,label:O.label,description:O.description,primitive_type:"object_ref",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},cZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"d",null),W=await i1($,"t",null),Z=[{name:"edit_session_id",label:"Edit Session ID",description:"UUID of the editing session",primitiveType:"string"},{name:"edit_started_at",label:"Edit Started At",description:"ISO 8601 timestamp when edit lock was acquired",primitiveType:"date"},{name:"edit_last_activity_at",label:"Edit Last Activity At",description:"ISO 8601 timestamp of last activity",primitiveType:"date"}];for(let H of[z,W])for(let O of Z){let X=await E1.nextSeq($,"store",K,"n"),P=`${q}n${X}`;await $.insertInto("field_definitions").values({store_id:K,object_id:P,entity_type_id:J,type_code:"n",seq:X,owner_entity_id:null,owner_entity_type_id:H,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType,required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},QZ6=async($,K,q)=>{let Y=c6(),J=await i1($,"n",null),z=await i1($,"v",null),W=[{name:"document",label:"Document",description:"Parent document or template entity",primitiveType:"object_ref",required:1},{name:"version_number",label:"Version Number",description:"Version number (1, 2, 3...)",primitiveType:"int",required:1},{name:"published_at",label:"Published At",description:"ISO 8601 timestamp when published (null = draft)",primitiveType:"date",required:0}];for(let Z of W){let H=await E1.nextSeq($,"store",K,"n"),O=`${q}n${H}`;await $.insertInto("field_definitions").values({store_id:K,object_id:O,entity_type_id:J,type_code:"n",seq:H,owner_entity_id:null,owner_entity_type_id:z,name:Z.name,label:Z.label,description:Z.description,primitive_type:Z.primitiveType,required:Z.required,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},lZ6=async($)=>{let K=await $.selectFrom("sequences").select("next_value").where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").executeTakeFirstOrThrow();await $.updateTable("sequences").set((W)=>({next_value:W("next_value","+",1)})).where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").execute();let q=`S${K.next_value}`,Y=c6(),J=await $.insertInto("stores").values({id:K.next_value,object_id:q,type:"local",code:"B",name:"Shared",created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await jM($,J.id,"B","d"),await jM($,J.id,"B","t");let z=await jM($,J.id,"B","s");await jM($,J.id,"B","j"),await IZ6($,J.id,"B"),await EZ6($,J.id,"B"),await LZ6($,J.id,"B"),await SZ6($,J.id,"B"),await bZ6($,J.id,"B"),await yZ6($,J.id,"B"),await uZ6($,J.id,"B"),await gZ6($,J.id,"B",z),await xZ6($,J.id,"B"),await mZ6($,J.id,"B"),await BZ6($,J.id,"B"),await UZ6($,J.id,"B"),await pZ6($,J.id,"B"),await FZ6($,J.id,"B"),await cZ6($,J.id,"B"),await QZ6($,J.id,"B"),await $.insertInto("sequences").values({scope_type:"store",scope_id:J.id,type_code:"v",next_value:1}).execute()},C78=async($)=>{await hZ6($),await $.insertInto("sequences").values([{scope_type:"global",scope_id:null,type_code:"s",next_value:1},{scope_type:"global",scope_id:null,type_code:"p",next_value:1}]).execute(),await lZ6($)};var VM=n6(h78(),1),iZ6=($,K)=>{if($)throw Error(K)},E78=($,K)=>{if(VM.default.null($)||VM.default.undefined($))throw Error(`${K} is required`)},dZ6=($,K)=>{if(E78($,K),VM.default.empty($))throw Error(`${K} cannot be empty`)},nZ6=($,K,...q)=>{if($)throw K(...q)},oZ6={condition:iZ6,nullish:E78,empty:dZ6,factory:nZ6},y=oZ6;var bM6=typeof Bun<"u",yM6=async($)=>{if(bM6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => n6(WP8(),1)),Y=new K($);return Y.exec("PRAGMA journal_mode = WAL"),Y.exec("PRAGMA foreign_keys = ON"),new IK({dialect:new q({database:Y})})}else{let q=new(await import("better-sqlite3")).default($);return q.pragma("journal_mode = WAL"),q.pragma("foreign_keys = ON"),new IK({dialect:new _x({database:q})})}},uM6=($,K)=>{if(!IM6($)){if(!K)throw Error(`Database file not found: ${$}`);xM6(gM6($),{recursive:!0})}},mM6=async($,K)=>{if(!await f78($)){if(!K)throw Error("Database schema not found");await N78($)}},BM6=async($,K)=>{if(!await R78($)){if(!K)throw Error("Database seed data not found");await C78($)}},UM6=($)=>{let{kyselyFactory:K=yM6}=$??{};return Object.freeze({getDb:async(Y,J)=>{if(y.nullish(Y,"databaseFilepath"),Y!==":memory:")uM6(Y,J);let z=await K(Y);return await mM6(z,J),await BM6(z,J),z}})},ZP8={create:UM6};var pM6=($)=>{let{id:K,name:q,createdAt:Y,updatedAt:J}=$,O=Object.freeze({getObjectId:()=>K,getName:()=>q,getCreatedAt:()=>Y,getUpdatedAt:()=>J}),w=Object.freeze({setName:(T)=>{q=T},setUpdatedAt:(T)=>{J=T}});return{entityFns:O,mutationFns:w}},c3=Object.freeze({create:pM6});var FM6=($)=>{let{id:K,name:q,path:Y,createdAt:J,updatedAt:z}=$,{entityFns:W,mutationFns:Z}=c3.create({id:K,name:q,createdAt:J,updatedAt:z}),H=()=>Y,X=Object.freeze({...W,getPath:H,toJSON:()=>({objectId:W.getObjectId(),name:W.getName(),path:H(),createdAt:W.getCreatedAt(),updatedAt:W.getUpdatedAt()})}),w=Object.freeze({...Z,setPath:(T)=>{Y=T}});return{entity:X,mutationApi:w}},HP8=Object.freeze({create:FM6});var cM6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},d6=Object.freeze({create:cM6});var QM6=($)=>$.object_id,OP8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},qk=($)=>{let K=QM6($),q=$.id,{entity:Y,mutationApi:J}=HP8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:J,id:K,pk:q}},lM6=()=>{let $=new Map;return Object.freeze({createProject:async(W,Z,{name:H,path:O},X)=>{let P=c6(),w=await E1.nextSeq(W,"global",null,"p"),T=`P${w}`,G=await W.insertInto("projects").values({id:w,object_id:T,name:H,path:O,created_at:P,updated_at:P}).returningAll().executeTakeFirstOrThrow(),{entity:j,mutationApi:v,id:M,pk:f}=qk(G);return X(()=>{$.set(M,d6.create(j,v,f))}),j},readProject:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=OP8(H);if(X===null)return null;let P=await W.selectFrom("projects").selectAll().where("id","=",X).executeTakeFirst();if(!P)return null;let{entity:w,mutationApi:T,id:G,pk:j}=qk(P);return $.set(G,d6.create(w,T,j)),w},readProjectByObjectId:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=OP8(H);if(X===null)return null;let P=await W.selectFrom("projects").selectAll().where("id","=",X).executeTakeFirst();if(!P)return null;let{entity:w,mutationApi:T,id:G,pk:j}=qk(P);return $.set(G,d6.create(w,T,j)),w},readProjectByPath:async(W,Z,H)=>{let O=await W.selectFrom("projects").selectAll().where("path","=",H).executeTakeFirst();if(!O)return null;let{entity:X,mutationApi:P,id:w,pk:T}=qk(O),G=$.get(w);if(G)return G.getEntity();return $.set(w,d6.create(X,P,T)),X},evictProject:(W)=>{$.delete(W)}})},XP8=Object.freeze({create:lM6});var iM6=()=>{let $=new Map,K=new Map;return Object.freeze({get:(P)=>$.get(P),getByPk:(P)=>{let w=K.get(P);return w?$.get(w):void 0},has:(P)=>$.has(P),set:(P,w)=>{$.set(P,w),K.set(w.getPk(),P)},remove:(P)=>{let w=$.get(P);if(w)K.delete(w.getPk());$.delete(P)},getIdByPk:(P)=>K.get(P),setIdByPk:(P,w)=>K.set(P,w),clear:()=>{$.clear(),K.clear()},entries:()=>$.entries()})},pz=Object.freeze({create:iM6});var CP8=n6(I4(),1);Yk();var nM6=($)=>{let{id:K,name:q,parentId:Y,path:J,createdAt:z,updatedAt:W,publishedVersionNumber:Z,hasDraft:H,draftContent:O,publishedContent:X}=$,{entityFns:P,mutationFns:w}=c3.create({id:K,name:q,createdAt:z,updatedAt:W}),T=new Map,G=Z??null,j=H??!1,v=O??null,M=X??null,f=null,T8=Object.freeze({...P,getParentId:()=>Y,getPath:()=>J,getField:(L6)=>{return T.get(L6)},getFields:()=>{let L6={};for(let[P8,O8]of T.entries())L6[P8]=O8;return L6},getPublishedVersionNumber:()=>G,hasDraftContent:()=>j,getDraftContent:()=>v,getPublishedContent:()=>M,getEditState:()=>f,hasPublished:()=>G>0,isBeingEdited:()=>f!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),s6=Object.freeze({...w,setParentId:(L6)=>{Y=L6},setPath:(L6)=>{J=L6},setField:(L6,P8)=>{T.set(L6,P8)},removeField:(L6)=>{T.delete(L6)},setPublishedVersionNumber:(L6)=>{G=L6},setHasDraft:(L6)=>{j=L6},setDraftContent:(L6)=>{v=L6},setPublishedContent:(L6)=>{M=L6},setEditState:(L6)=>{f=L6}});return{entityFns:T8,mutationFns:s6}},uK=Object.freeze({create:nM6});var wP8=($)=>{let{entityFns:K,mutationFns:q}=uK.create($),Y=$.subtype||null,J=()=>Y,z=()=>K.getParentId()===null,W=()=>!0,H=Object.freeze({...K,getSubtype:J,isRoot:z,getIsFolder:W,toJSON:()=>{let X={};for(let[P,w]of Object.entries(K.getFields()))X[P]=w.toJSON();return{id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),subtype:J(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),isFolder:W(),isRoot:z(),fields:X}}}),O=Object.freeze({...q});return{entity:H,mutationApi:O}},oM6=($,K,q,Y)=>{return wP8({id:K,parentId:q,name:$.name,path:Y,subtype:$.subtype||null,createdAt:$.created_at,updatedAt:$.updated_at})},nq=Object.freeze({create:wP8,createFromRow:oM6});var TP8=($)=>{let{entityFns:K,mutationFns:q}=uK.create($),H=Object.freeze({...K,getTypeCode:()=>"s",getSubtype:()=>null,isStory:()=>!0,getIsFolder:()=>!1,toJSON:()=>{let X={};for(let[P,w]of Object.entries(K.getFields()))X[P]=w.toJSON();return{id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),type:"s",isStory:!0,isFolder:!1,fields:X}}}),O=Object.freeze({...q});return{entity:H,mutationApi:O}},aM6=($,K,q,Y)=>{return TP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},jO=Object.freeze({create:TP8,createFromRow:aM6});var GP8=($)=>{let{entityFns:K,mutationFns:q}=uK.create($),Z=Object.freeze({...K,getTypeCode:()=>"j",isJob:()=>!0,getIsFolder:()=>!1,toJSON:()=>{let O={};for(let[X,P]of Object.entries(K.getFields()))O[X]=P.toJSON();return{id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),type:"j",isJob:!0,isFolder:!1,fields:O}}}),H=Object.freeze({...q});return{entity:Z,mutationApi:H}},rM6=($,K,q,Y)=>{return GP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},Jk=Object.freeze({create:GP8,createFromRow:rM6});var jP8=($)=>{let{entityFns:K,mutationFns:q}=c3.create({id:$.id,name:$.name||$.originalFilename,createdAt:$.createdAt,updatedAt:$.updatedAt}),Y=$.hash,J=$.mimeType,z=$.sizeBytes,W=$.originalFilename,Z=$.widthPx,H=$.heightPx,O=$.displayWidth,X=$.displayHeight,E=Object.freeze({...K,getTypeCode:()=>"a",isAsset:()=>!0,getHash:()=>Y,getMimeType:()=>J,getSizeBytes:()=>z,getOriginalFilename:()=>W,getWidthPx:()=>Z,getHeightPx:()=>H,getDisplayWidth:()=>O,getDisplayHeight:()=>X,toJSON:()=>({id:K.getObjectId(),type:"a",hash:Y,mimeType:J,sizeBytes:z,originalFilename:W,widthPx:Z,heightPx:H,displayWidth:O,displayHeight:X,createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt()})}),C=Object.freeze({...q});return{entity:E,mutationApi:C}},sM6=($,K)=>{return jP8({id:K,name:$.name||$.original_filename,hash:$.hash,mimeType:$.mime_type,sizeBytes:$.size_bytes,originalFilename:$.original_filename,widthPx:$.width_px,heightPx:$.height_px,displayWidth:$.display_width,displayHeight:$.display_height,createdAt:$.created_at,updatedAt:$.updated_at})},zk=Object.freeze({create:jP8,createFromRow:sM6});var vP8=Object.freeze(["string","object_ref","int","text","date","float"]),tM6=($)=>{let{id:K,name:q,ownerEntityId:Y,label:J,description:z,primitiveType:W,required:Z,multiplicity:H,isSystem:O,allowedValues:X,createdAt:P,updatedAt:w}=$;if(!vP8.includes(W))throw Error(`Invalid primitive type: "${W}". Valid types are: ${vP8.join(", ")}`);let{entityFns:T,mutationFns:G}=c3.create({id:K,name:q,createdAt:P,updatedAt:w}),j=()=>Y,v=()=>J,M=()=>z,f=()=>W,k=()=>Z,N=()=>H,R=()=>O,E=()=>X??null,g=Object.freeze({...T,getOwnerEntityId:j,getLabel:v,getDescription:M,getPrimitiveType:f,getRequired:k,getMultiplicity:N,getIsSystem:R,getAllowedValues:E,toJSON:()=>({id:T.getObjectId(),ownerEntityId:j(),name:T.getName(),label:v(),description:M(),primitiveType:f(),required:k(),multiplicity:N(),isSystem:R(),allowedValues:E(),createdAt:T.getCreatedAt(),updatedAt:T.getUpdatedAt()})}),S=Object.freeze({...G});return{entity:g,mutationApi:S}},wu=Object.freeze({create:tM6});var eM6=({definition:$,values:K=[]})=>{let q=$,Y=[...K];if(q.getMultiplicity()==="single"&&Y.length>1)throw Error(`Field "${q.getName()}" is single-valued but received ${Y.length} values`);let J=(T=0)=>{return Y[T]},z=()=>{return[...Y]},W=()=>{return q},Z=()=>{return q.getMultiplicity()==="multi"};return Object.freeze({getValue:J,getValues:z,getDefinition:W,isMultiValued:Z,isRequired:()=>{return q.getRequired()},getType:()=>{return q.getPrimitiveType()},getLabel:()=>{return q.getLabel()||q.getName()},getName:()=>{return q.getName()},toJSON:()=>{if(Z())return Y;else return Y[0]}})},Wk=Object.freeze({create:eM6});Z4();Z4();var J_6=($)=>{let K=$.trim();y.factory(!K,I.validation,"Folder name cannot be empty","EMPTY_NAME"),y.factory(K.length>255,I.validation,"Folder name cannot exceed 255 characters","NAME_TOO_LONG");let q=/[/\\:*?"<>|]/;return y.factory(q.test(K),I.validation,'Folder name contains invalid characters: /\\:*?"<>|',"INVALID_CHARS"),K},z_6=($)=>{return $.getParentId()===null},Q3=Object.freeze({validateFolderName:J_6,isRootFolder:z_6});Z4();var W_6=($)=>{if(!$||$.length<3)return null;let K=$[0],q=$[1],Y=parseInt($.slice(2),10);if(isNaN(Y))return null;return{storeCode:K,typeCode:q,seq:Y}},Z_6=($,K,q)=>`${$}${K}${q}`,H_6=($,K)=>{y.factory($!==K,I.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},VO=Object.freeze({parseId:W_6,buildId:Z_6,validateStoreCode:H_6});var VP8=($)=>{let{subtype:K,...q}=$,{entityFns:Y,mutationFns:J}=uK.create(q),z=()=>"d",W=()=>K??null,H=Object.freeze({...Y,getTypeCode:z,getSubtype:W,toJSON:()=>{let X={};for(let[P,w]of Object.entries(Y.getFields()))X[P]=w.toJSON();return{id:Y.getObjectId(),parentId:Y.getParentId(),name:Y.getName(),path:Y.getPath(),publishedVersionNumber:Y.getPublishedVersionNumber(),hasDraft:Y.hasDraftContent(),draftContent:Y.getDraftContent(),publishedContent:Y.getPublishedContent(),editState:Y.getEditState(),createdAt:Y.getCreatedAt(),updatedAt:Y.getUpdatedAt(),versionCount:Y.getVersionCount(),isFolder:Y.getIsFolder(),type:z(),subtype:W(),hasPublished:Y.hasPublished(),isBeingEdited:Y.isBeingEdited(),fields:X}}}),O=Object.freeze({...J});return{entity:H,mutationApi:O}},O_6=($,K,q,Y,J,z,W=null,Z=null)=>{return VP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:J,hasDraft:z,draftContent:W,publishedContent:Z,createdAt:$.created_at,updatedAt:$.updated_at,subtype:$.subtype||null})},AP8=Object.freeze({create:VP8,createFromRow:O_6});var MP8=($)=>{let{subtype:K,...q}=$,{entityFns:Y,mutationFns:J}=uK.create(q),z=()=>"t",W=()=>K??null,H=Object.freeze({...Y,getTypeCode:z,getSubtype:W,toJSON:()=>{let X={};for(let[P,w]of Object.entries(Y.getFields()))X[P]=w.toJSON();return{id:Y.getObjectId(),parentId:Y.getParentId(),name:Y.getName(),path:Y.getPath(),publishedVersionNumber:Y.getPublishedVersionNumber(),hasDraft:Y.hasDraftContent(),draftContent:Y.getDraftContent(),publishedContent:Y.getPublishedContent(),editState:Y.getEditState(),createdAt:Y.getCreatedAt(),updatedAt:Y.getUpdatedAt(),versionCount:Y.getVersionCount(),isFolder:Y.getIsFolder(),type:z(),subtype:W(),hasPublished:Y.hasPublished(),isBeingEdited:Y.isBeingEdited(),fields:X}}}),O=Object.freeze({...J});return{entity:H,mutationApi:O}},X_6=($,K,q,Y,J,z,W=null,Z=null)=>{return MP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:J,hasDraft:z,draftContent:W,publishedContent:Z,createdAt:$.created_at,updatedAt:$.updated_at,subtype:$.subtype||null})},_P8=Object.freeze({create:MP8,createFromRow:X_6});var kP8=($)=>{let{id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:W,updatedAt:Z}=$,{entityFns:H,mutationFns:O}=c3.create({id:K,name:null,createdAt:W,updatedAt:Z}),X=()=>q,P=()=>Y,w=()=>J,T=()=>z,M=Object.freeze({...H,getDocumentId:X,getVersionNumber:P,getPublishedAt:w,getContent:T,isDraft:()=>J===null,getTypeCode:()=>"v",toJSON:()=>({id:H.getObjectId(),documentId:X(),versionNumber:P(),publishedAt:w(),content:T(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt()})}),f=Object.freeze({...O});return{entity:M,mutationApi:f}},P_6=($,K,q,Y,J,z=null)=>{return kP8({id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:$.created_at,updatedAt:$.updated_at})},fP8=Object.freeze({create:kP8,createFromRow:P_6});Z4();var NP8=($)=>{let K=VO.parseId($);if(!K)throw I.notFound(`Invalid entity ID format: ${$}`,"NOT_FOUND");let{storeCode:q,typeCode:Y,seq:J}=K;return{entityId:`${Y}${J}`,storeCode:q,typeCode:Y,seq:J}},w_6=($)=>{let{typeCode:K}=NP8($);return K},Tu={d:AP8.createFromRow,t:_P8.createFromRow,v:fP8.createFromRow},T_6=($)=>{if($==="s")return Tu.d;if(!$)return Tu.d;let K=Tu[$];if(!K)throw Error(`Unknown content type: ${$}`);return K},G_6=($)=>{return{d:"document",t:"template",v:"version"}[$]||"content"},a6=Object.freeze({resolveEntityId:NP8,getTypeFromId:w_6,getEntityFactory:T_6,getContentTypeLabel:G_6,buildId:VO.buildId,parseId:VO.parseId});var{parseId:r1,buildId:Fz,validateStoreCode:j_6}=VO,{validateFolderName:RP8,isRootFolder:b44}=Q3,w3=CP8.default("caw:stores:db"),gJ=3600000,v_6=({id:$,code:K,name:q,pk:Y,folderCache:J,createdAt:z,updatedAt:W})=>{let Z=new Map,{entityFns:H,mutationFns:O}=c3.create({id:$,name:q,createdAt:z,updatedAt:W}),X=()=>new Set([K]),P=()=>"local",w=()=>K,T=()=>Y,G=()=>({id:$,code:K,name:H.getName(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt(),type:"local"}),j=(x)=>{j_6(x,K)},v=async(x,w8)=>{if(!w8)return null;if(J){let Q=J.get(w8);if(Q)return Q.getPk()}if(!r1(w8))y.factory(!0,I.validation,`Invalid parent folder ID: ${w8}`,"INVALID_ID");let s=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",w8).where("deleted_at","is",null).executeTakeFirst();return s?s.id:null},M=async(x,w8)=>{let u=await x.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",w8).where("deleted_at","is",null).executeTakeFirst();y.factory(!u,I.notFound,`Entity not found for PK ${w8}`,"ENTITY_NOT_FOUND");let s=u.object_id,Q=J?J.get(s):null;if(Q){let H8=Q.getEntity();if(H8.getName()===u.name&&H8.getParentId()===u.parent_object_id)return H8.getPath()}if(!u.parent_object_id)return u.name;let a=J?J.get(u.parent_object_id):null;if(a){let j8=a.getEntity().getPath();return j8?`${j8}/${u.name}`:u.name}let n=[u.name],d=u.parent_folder_id;while(d!==null){let H8=Z.get(d),j8=H8&&J?J.get(H8):null;if(j8){let Y6=j8.getEntity().getPath();if(Y6){let t8=Y6.split("/").filter((F)=>F);n.unshift(...t8)}break}let E8=await x.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",d).where("deleted_at","is",null).executeTakeFirst();y.factory(!E8,I.notFound,`Folder not found for PK ${d}`,"FOLDER_NOT_FOUND"),n.unshift(E8.name),d=E8.parent_folder_id}return n.join("/")},f=async(x,w8)=>{let u=[],s=[w8];while(s.length>0){let Q=s.shift(),a=await x.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",Q).where("deleted_at","is",null).execute();for(let n of a)if(u.push(n.id),n.type_code==="f"||n.type_code==="s"||n.type_code==="j")s.push(n.id)}return u},k=async(x,w8,u,s)=>{let Q=c6(),a=await o6.readEntityTypeId(x,{},"f",s),n=await E1.nextSeq(x,"store",Y,"f"),d=await v(x,w8),H8=Fz(K,"f",n),j8=await x.insertInto("entities").values({store_id:Y,object_id:H8,entity_type_id:a,type_code:"f",seq:n,parent_folder_id:d,parent_object_id:w8,name:u,created_at:Q,updated_at:Q}).returningAll().executeTakeFirstOrThrow();return await x.insertInto("folders").values({entity_id:j8.id}).execute(),{row:{...j8,subtype:s},id:H8}},N=(x)=>{let w8=null;if(x.owner_entity_id!==null)w8=Z.get(x.owner_entity_id)??null;let u=null;if(x.config)try{u=JSON.parse(x.config).allowedValues||null}catch(a){}let{entity:s,mutationApi:Q}=wu.create({id:x.object_id,name:x.name,ownerEntityId:w8,label:x.label,description:x.description,primitiveType:x.primitive_type,required:x.required===1,multiplicity:x.multiplicity,isSystem:x.is_system===1,allowedValues:u,createdAt:x.created_at,updatedAt:x.updated_at});return{entity:s,mutationApi:Q,pk:x.id}},R=(x)=>{let u={int:"int_fields",string:"string_fields",text:"text_fields",date:"date_fields",float:"float_fields",object_ref:"obj_ref_fields"}[x];if(!u)throw Error(`Unknown primitive type: ${x}`);return u},E=async(x,w8,u,s,Q,a=0)=>{let n=R(s);if(s==="object_ref"){let d=await x.selectFrom("entities").select("id").where("object_id","=",Q).where("deleted_at","is",null).executeTakeFirst();if(!d)throw I.validation(`Target entity not found: ${Q}`,"INVALID_REFERENCE");await x.insertInto(n).values({entity_id:w8,field_definition_id:u,target_entity_id:d.id,ordinal:a}).execute()}else{let d=Q;if(s==="int")d=typeof Q==="string"?parseInt(Q,10):Q;else if(s==="float")d=typeof Q==="string"?parseFloat(Q):Q;await x.insertInto(n).values({entity_id:w8,field_definition_id:u,value:d,ordinal:a}).execute()}},C=async(x,w8,u,s)=>{let Q=R(s);await x.deleteFrom(Q).where("entity_id","=",w8).where("field_definition_id","=",u).execute()},g=async(x,w8)=>{let u=new Map,s=await x.selectFrom("int_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'int'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of s){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"int"});u.get(j8.def_id).values.push(j8.value)}let Q=await x.selectFrom("string_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'string'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of Q){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"string"});u.get(j8.def_id).values.push(j8.value)}let a=await x.selectFrom("text_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'text'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of a){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"text"});u.get(j8.def_id).values.push(j8.value)}let n=await x.selectFrom("date_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'date'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of n){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"date"});u.get(j8.def_id).values.push(j8.value)}let d=await x.selectFrom("float_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").select(["f.field_definition_id as def_id","f.value","f.ordinal",f4`'float'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of d){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"float"});u.get(j8.def_id).values.push(j8.value)}let H8=await x.selectFrom("obj_ref_fields as f").innerJoin("field_definitions as fd","fd.id","f.field_definition_id").innerJoin("entities as e","e.id","f.target_entity_id").select(["f.field_definition_id as def_id","e.object_id as value","f.ordinal",f4`'object_ref'`.as("primitive_type")]).where("f.entity_id","=",w8).orderBy("f.ordinal").execute();for(let j8 of H8){if(!u.has(j8.def_id))u.set(j8.def_id,{values:[],primitiveType:"object_ref"});u.get(j8.def_id).values.push(j8.value)}return u},S=new Map,D=!1,L=async(x)=>{if(D)return;let w8=await x.selectFrom("field_definitions").select(["id","object_id","name","primitive_type","owner_entity_type_id"]).where("store_id","=",Y).where("is_system","=",1).execute();for(let u of w8){let s=u.owner_entity_type_id?`${u.name}:${u.owner_entity_type_id}`:u.name;S.set(s,{pk:u.id,objectId:u.object_id,primitiveType:u.primitive_type})}D=!0,w3("System field definition cache initialized with %d entries",S.size)},m=(x,w8=null)=>{if(w8){let u=`${x}:${w8}`;if(S.has(u))return S.get(u)}return S.get(x)||null},c=async(x,w8)=>{let u=new Map,s=await g(x,w8);for(let[a,n]of s.entries()){let d=await x.selectFrom("field_definitions").selectAll().where("id","=",a).executeTakeFirst();if(!d)continue;let H8=null;if(d.config)try{H8=JSON.parse(d.config).allowedValues||null}catch(j8){}u.set(a,{definition:{id:d.object_id,name:d.name,label:d.label,description:d.description,primitiveType:d.primitive_type,required:d.required===1,multiplicity:d.multiplicity,isSystem:d.is_system===1,ownerEntityId:d.owner_entity_id?Z.get(d.owner_entity_id):null,allowedValues:H8,createdAt:d.created_at,updatedAt:d.updated_at},values:n.values})}let Q=[];for(let{definition:a,values:n}of u.values()){let{entity:d}=wu.create(a),H8=Wk.create({definition:d,values:n});Q.push(H8)}return Q},e=async(x,w8)=>{let u=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",1).where("type_code","=","n").executeTakeFirst();if(!u)return null;if(u.owner_entity_id){let Q=await x.selectFrom("entities").select("object_id").where("id","=",u.owner_entity_id).executeTakeFirst();if(Q)Z.set(u.owner_entity_id,Q.object_id)}let s=`${K}n1`;return Z.set(u.id,s),N(u)},_8=async(x,w8,{storeCode:u,parentId:s,name:Q,subtype:a})=>{if(u!==void 0)j(u);if(Q!==null&&Q!==void 0)RP8(Q);let{row:n,id:d}=await k(x,s,Q,a||null),H8=n.id;Z.set(H8,d);let j8=await M(x,H8),{entity:E8,mutationApi:I8}=nq.createFromRow(n,d,s,j8);return{entity:E8,mutationApi:I8,pk:H8}},T8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;if(s.typeCode!=="f"&&s.typeCode!=="s")return null;if(s.typeCode==="s")w3("readFolder called with story ID %s — consider using readStory instead",u);let Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.seq","=",s.seq).where("entities.type_code","=",s.typeCode).where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let{id:a,parent_object_id:n}=Q;Z.set(a,u);let d=await M(x,a),H8=await c(x,a),{entity:j8,mutationApi:E8}=s.typeCode==="s"?jO.createFromRow(Q,u,n,d):nq.createFromRow(Q,u,n,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:a}},d8=async(x,w8,{id:u,name:s,parentId:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid folder ID: ${u}`,"INVALID_ID");let n=["f","s","j"].includes(a.typeCode)?[a.typeCode]:null;y.factory(!n,I.validation,`Invalid type for folder update: ${u}`,"INVALID_TYPE");let d=await x.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","=",a.seq).where("entities.type_code","in",n).where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Folder not found: ${u}`,"FOLDER_NOT_FOUND");let{id:H8,subtype:j8}=d,E8={name:d.name,parentId:d.parent_object_id,path:null};if(Z.set(H8,u),E8.path=await M(x,H8),s!==void 0)RP8(s);let I8={};if(s!==void 0)I8.name=s;if(Q!==void 0){let i=await v(x,Q);I8.parent_folder_id=i,I8.parent_object_id=Q}I8.updated_at=c6();let Y6=await x.updateTable("entities").set(I8).where("id","=",H8).returningAll().executeTakeFirstOrThrow(),t8=await M(x,H8),F=await c(x,H8),{entity:l,mutationApi:p}=nq.createFromRow({...Y6,subtype:j8},u,Y6.parent_object_id,t8);for(let i of F)p.setField(i.getDefinition().getName(),i);return{entity:l,mutationApi:p,pk:H8,oldValues:E8}},H6=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid folder ID: ${u}`,"INVALID_ID");let Q=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",s.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();y.factory(!Q,I.notFound,`Folder not found: ${u}`,"FOLDER_NOT_FOUND");let a=Q.id;Z.set(a,u);let n=await M(x,a),d=await f(x,a),H8=c6();await x.updateTable("entities").set({deleted_at:H8}).where("id","in",[a,...d]).execute();let j8=[];for(let E8 of d){let I8=await x.selectFrom("entities").select("object_id").where("id","=",E8).executeTakeFirst();if(I8)j8.push(I8.object_id)}return{id:u,deleted:!0,descendantCount:d.length,path:n,descendantIds:j8,deletedPks:[a,...d]}},D8=async(x,w8,u,s,Q=null)=>{let a=await v(x,u),n=x.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",a===null?"is":"=",a).where("name","=",s).where("deleted_at","is",null);if(Q)n=n.where("object_id","!=",Q);return!!await n.executeTakeFirst()},m8=async(x,w8,u,s)=>{let Q=await v(x,u),a=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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",Q===null?"is":"=",Q).where("entities.name","=",s).where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let{id:n,object_id:d}=a;Z.set(n,d);let H8=await M(x,n),j8=await c(x,n),{entity:E8,mutationApi:I8}=nq.createFromRow(a,d,u,H8);for(let Y6 of j8)I8.setField(Y6.getDefinition().getName(),Y6);return{entity:E8,mutationApi:I8,pk:n}},a8=async(x,w8,{folderId:u,type:s})=>{let Q;if(u){if(Q=await v(x,u),Q===null)return[]}else if(s){let H8=await _6(x,w8,s);if(!H8)return[];Q=H8.pk}else Q=null;let a=x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",Q===null?"is":"=",Q).where("entities.deleted_at","is",null);if(s)a=a.where("entities.type_code","=","f").innerJoin("folders","folders.entity_id","entities.id").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select("entity_types.subtype");let n=await a.execute(),d=[];for(let H8 of n){let{id:j8,object_id:E8}=H8;Z.set(j8,E8);let I8=await M(x,j8),Y6=await c(x,j8),{entity:t8,mutationApi:F}=nq.createFromRow(H8,E8,H8.parent_object_id,I8);for(let l of Y6)F.setField(l.getDefinition().getName(),l);d.push({entity:t8,mutationApi:F,pk:j8})}return d},Z6=async(x,w8,{path:u,type:s})=>{y.factory(!s,I.validation,"type parameter is required for getFolderByPath","MISSING_TYPE");let Q=(u??"").trim(),n={d:"Documents",t:"Templates",s:"Stories"}[s];y.factory(!n,I.validation,`Invalid type: ${s}`,"INVALID_TYPE");let d;if(Q.startsWith(`${n}/`))d=Q;else if(Q===n)d=n;else d=Q?`${n}/${Q}`:n;let H8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where((j8)=>s==="s"?j8("type_code","in",["f","s"]):j8("type_code","=","f")).where("deleted_at","is",null).execute();for(let j8 of H8){let E8=await T8(x,w8,{id:j8.object_id});if(E8&&E8.entity.getPath()===d)return E8}return null},_6=async(x,w8,u,s)=>{if(s!==void 0)j(s);let a={d:"root_d",t:"root_t",s:"root_s"}[u];if(!a)throw I.validation(`Invalid type for root folder: ${u}`,"INVALID_TYPE");let n=await o6.readEntityTypeId(x,w8,"f",a),d=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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","=",n).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:H8,object_id:j8}=d;Z.set(H8,j8);let E8=await M(x,H8),I8=await c(x,H8),{entity:Y6,mutationApi:t8}=nq.createFromRow(d,j8,d.parent_object_id,E8);for(let F of I8)t8.setField(F.getDefinition().getName(),F);return{entity:Y6,mutationApi:t8,pk:H8}},u6=async(x,w8,{storeCode:u,ownerEntityId:s,ownerEntityTypePk:Q,name:a,label:n,description:d,primitiveType:H8,required:j8,multiplicity:E8,isSystem:I8=!1,allowedValues:Y6})=>{if(u!==void 0)j(u);let t8=["string","object_ref","int","text","date","float"];y.factory(!t8.includes(H8),I.validation,`Invalid primitiveType: ${H8}. Must be one of: ${t8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(E8!=="single"&&E8!=="multi",I.validation,`Invalid multiplicity: ${E8}`,"INVALID_MULTIPLICITY"),y.factory(s&&Q,I.validation,"Cannot set both ownerEntityId and ownerEntityTypePk","INVALID_FIELD_DEFINITION_SCOPE");let F=c6(),l=await o6.readEntityTypeId(x,w8,"n",null),p=await E1.nextSeq(x,"store",Y,"n"),i=Fz(K,"n",p),V8=s?await v(x,s):null,n8=null;if(Y6&&Y6.length>0)n8=JSON.stringify({allowedValues:Y6});let O6=await x.insertInto("field_definitions").values({store_id:Y,object_id:i,entity_type_id:l,type_code:"n",seq:p,owner_entity_id:V8,owner_entity_type_id:Q||null,name:a,label:n,description:d,primitive_type:H8,required:j8?1:0,multiplicity:E8,config:n8,is_system:I8?1:0,created_at:F,updated_at:F}).returningAll().executeTakeFirstOrThrow(),j6=O6.id;return Z.set(j6,i),N(O6)},y6=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;let Q=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",s.seq).where("type_code","=","n").executeTakeFirst();if(!Q)return null;if(Q.owner_entity_id){let a=await x.selectFrom("entities").select("object_id").where("id","=",Q.owner_entity_id).executeTakeFirst();if(a)Z.set(Q.owner_entity_id,a.object_id)}return Z.set(Q.id,u),N(Q)},s6=async(x,w8,u,s)=>{let Q=x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",u).where("owner_entity_id",s===null?"is":"=",s);if(s===null)Q=Q.where("owner_entity_type_id","is",null);let a=await Q.executeTakeFirst();if(!a)return null;if(a.owner_entity_id){let n=await x.selectFrom("entities").select("object_id").where("id","=",a.owner_entity_id).executeTakeFirst();if(n)Z.set(a.owner_entity_id,n.object_id)}return Z.set(a.id,a.object_id),N(a)},L6=async(x,w8,{fieldDefinitionId:u,fieldName:s,ownerEntityPk:Q,entityTypePk:a})=>{if(u){let d=await y6(x,w8,{id:u});if(d)return d}if(s&&Q){let d=await s6(x,w8,s,Q);if(d)return d}if(s&&a){let d=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",s).where("owner_entity_id","is",null).where("owner_entity_type_id","=",a).executeTakeFirst();if(d)return Z.set(d.id,d.object_id),N(d)}if(s){let d=await s6(x,w8,s,null);if(d)return d}let n=await e(x);return y.factory(!n,I.notFound,"No field definition found and no default available","NO_FIELD_DEFINITION"),n},P8=async(x,w8,{ownerEntityPk:u,includeSystem:s=!0})=>{let Q=x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id",u===null?"is":"=",u);if(u===null)Q=Q.where("owner_entity_type_id","is",null);if(!s)Q=Q.where("is_system","=",0);let a=await Q.execute(),n=[];for(let d of a){if(d.owner_entity_id){let H8=await x.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(H8)Z.set(d.owner_entity_id,H8.object_id)}Z.set(d.id,d.object_id),n.push(N(d))}return n},O8=async(x,w8,{code:u,subtype:s})=>{w3("resolveEntityTypePk called: code=%s, subtype=%s (store=%s)",u,s,K);try{let Q=await o6.readEntityTypeId(x,w8,u,s);return w3("resolveEntityTypePk succeeded: code=%s, subtype=%s -> pk=%d",u,s,Q),Q}catch(Q){if(Q.constructor?.name==="NoResultError")throw w3("resolveEntityTypePk failed: code=%s, subtype=%s (store=%s)",u,s,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw Q}},f8=async(x,w8,{code:u,subtype:s})=>{w3("getFieldDefinitionsForEntityType called: code=%s, subtype=%s (store=%s)",u,s,K);let Q;try{Q=await o6.readEntityTypeId(x,w8,u,s),w3("getFieldDefinitionsForEntityType resolved pk: code=%s, subtype=%s -> pk=%d",u,s,Q)}catch(d){if(d.constructor?.name==="NoResultError")throw w3("getFieldDefinitionsForEntityType failed: code=%s, subtype=%s (store=%s)",u,s,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw d}let a=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_type_id","=",Q).execute(),n=[];for(let d of a)Z.set(d.id,d.object_id),n.push(N(d));return n},y8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid definition ID: ${u}`,"INVALID_ID");let Q=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",s.seq).where("type_code","=","n").executeTakeFirst();y.factory(!Q,I.notFound,`Field definition not found: ${u}`,"DEFINITION_NOT_FOUND"),y.factory(Q.is_system===1,I.validation,`Cannot delete system field definition: ${u}`,"SYSTEM_DEFINITION");let a=Q.id;if(await x.deleteFrom("field_definitions").where("id","=",a).execute(),Q.owner_entity_id){let d=await x.selectFrom("entities").select("object_id").where("id","=",Q.owner_entity_id).executeTakeFirst();if(d)Z.set(Q.owner_entity_id,d.object_id)}let{entity:n}=N(Q);return n},i8=async(x,w8,{entityId:u,fieldDefinitionId:s,fieldName:Q,value:a,values:n})=>{let d=r1(u);y.factory(!d,I.validation,`Invalid entity ID: ${u}`,"INVALID_ID");let H8=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=",d.typeCode).where("deleted_at","is",null).executeTakeFirst();y.factory(!H8,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let j8=H8.id,{entity:E8,pk:I8}=await L6(x,w8,{fieldDefinitionId:s,fieldName:Q,ownerEntityPk:j8,entityTypePk:H8.entity_type_id}),Y6=E8.getMultiplicity(),t8;if(Y6==="single")if(n&&Array.isArray(n))y.factory(n.length>1||n.length===0,I.validation,`Field '${E8.getName()}' is single-valued but received ${n.length} values`,"MULTIPLICITY_VIOLATION"),t8=[n[0]];else y.factory(a===void 0,I.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),t8=[a];else if(n&&Array.isArray(n))t8=n;else if(a!==void 0)t8=[a];else y.factory(!0,I.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");let F=E8.getPrimitiveType();await C(x,j8,I8,F);for(let V8=0;V8<t8.length;V8++){let n8=t8[V8];await E(x,j8,I8,F,n8,V8)}let l=t8,p=Wk.create({definition:E8,values:l}),i;if(d.typeCode==="f")i=await T8(x,w8,{id:u});else if(d.typeCode==="s")i=await Q8(x,w8,{id:u});else if(d.typeCode==="j")i=await L$(x,w8,{id:u});else i=await q6(x,w8,{id:u});return y.factory(!i,I.notFound,`Entity not found after field update: ${u}`,"ENTITY_NOT_FOUND"),{...i,field:p,fieldName:E8.getName()}},o8=async(x,w8,{entityId:u,fieldDefinitionId:s,fieldName:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid entity ID: ${u}`,"INVALID_ID");let n=await x.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();y.factory(!n,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let d=n.id,{entity:H8,pk:j8}=await L6(x,w8,{fieldDefinitionId:s,fieldName:Q,ownerEntityPk:d,entityTypePk:n.entity_type_id}),E8=H8.getPrimitiveType();await C(x,d,j8,E8);let I8;if(a.typeCode==="f")I8=await T8(x,w8,{id:u});else if(a.typeCode==="s")I8=await Q8(x,w8,{id:u});else if(a.typeCode==="j")I8=await L$(x,w8,{id:u});else I8=await q6(x,w8,{id:u});return y.factory(!I8,I.notFound,`Entity not found after field delete: ${u}`,"ENTITY_NOT_FOUND"),{...I8,fieldName:H8.getName()}},z6=async(x,w8,{entityId:u,fieldDefinitionId:s,fieldName:Q})=>{let a=r1(u);if(!a)return null;let n=await x.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();if(!n)return null;let d=n.id,H8;try{H8=await L6(x,w8,{fieldDefinitionId:s,fieldName:Q,ownerEntityPk:d,entityTypePk:n.entity_type_id})}catch{return null}let{entity:j8,pk:E8}=H8,I8=j8.getPrimitiveType(),t8=(await g(x,d)).get(E8);if(!t8||t8.values.length===0)return null;let F=t8.values,l=j8.getMultiplicity()==="single";return Wk.create({definition:j8,values:F,isSingleValued:l})},h8=async(x,w8,{documentPk:u,documentObjectId:s,documentEntityTypeId:Q,content:a,versionNumber:n,publishedAt:d=null})=>{await L(x);let H8=c6(),j8=await o6.readEntityTypeId(x,w8,"v",null),E8=await E1.nextSeq(x,"store",Y,"v"),I8=Fz(K,"v",E8),t8=(await x.insertInto("entities").values({store_id:Y,object_id:I8,entity_type_id:j8,type_code:"v",seq:E8,parent_folder_id:null,parent_object_id:null,name:null,created_at:H8,updated_at:H8}).returningAll().executeTakeFirstOrThrow()).id;Z.set(t8,I8);let F=m("document",j8);if(!F)throw Error('System field definition "document" not found for version type');await x.insertInto("obj_ref_fields").values({entity_id:t8,field_definition_id:F.pk,target_entity_id:u,ordinal:0}).execute();let l=m("version_number",j8);if(!l)throw Error('System field definition "version_number" not found for version type');if(await x.insertInto("int_fields").values({entity_id:t8,field_definition_id:l.pk,value:n,ordinal:0}).execute(),d!==null){let p=m("published_at",j8);if(!p)throw Error('System field definition "published_at" not found for version type');await x.insertInto("date_fields").values({entity_id:t8,field_definition_id:p.pk,value:d,ordinal:0}).execute()}return await x.insertInto("entity_content").values({entity_id:t8,content_text:a,content_type:"markdown",updated_at:H8}).execute(),await f4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${t8}, ${a})`.execute(x),w3("Created version entity %s (pk=%d) for document %s, version %d, draft=%s",I8,t8,s,n,d===null),{pk:t8,objectId:I8}},p8=async(x,w8)=>{if(!w8)return null;await L(x);let u=await x.selectFrom("entities").select(["object_id","entity_type_id"]).where("id","=",w8).where("deleted_at","is",null).executeTakeFirst();if(!u)return null;let{entity_type_id:s,object_id:Q}=u;Z.set(w8,Q);let a=m("version_number",s),n=null;if(a)n=(await x.selectFrom("int_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",a.pk).executeTakeFirst())?.value??null;let d=m("published_at",s),H8=null;if(d)H8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",d.pk).executeTakeFirst())?.value??null;let E8=(await x.selectFrom("entity_content").select("content_text").where("entity_id","=",w8).executeTakeFirst())?.content_text??null;return{versionNumber:n,publishedAt:H8,content:E8,objectId:Q}},s8=async(x,w8,{type:u,storeCode:s,parentId:Q,name:a,initialContent:n,subtype:d})=>{let H8=a6.getEntityFactory(u);if(s!==void 0)j(s);await L(x);let j8=c6(),E8=await o6.readEntityTypeId(x,w8,u,d??null),I8=d?await o6.readEntityTypeId(x,w8,u,null):E8,Y6=await E1.nextSeq(x,"store",Y,u),t8=Fz(K,u,Y6),F=await v(x,Q),l=await x.insertInto("entities").values({store_id:Y,object_id:t8,entity_type_id:E8,type_code:u,seq:Y6,parent_folder_id:F,parent_object_id:Q,name:a,created_at:j8,updated_at:j8}).returningAll().executeTakeFirstOrThrow(),p=l.id;Z.set(p,t8);let i=n!==null&&n!==void 0,V8=null;if(i){let I6=await h8(x,w8,{documentPk:p,documentObjectId:t8,documentEntityTypeId:E8,content:n,versionNumber:1,publishedAt:null});V8=I6.objectId;let R6=m("draft_version",I8);if(!R6)throw Error(`System field definition "draft_version" not found for base type ${u}`);await x.insertInto("obj_ref_fields").values({entity_id:p,field_definition_id:R6.pk,target_entity_id:I6.pk,ordinal:0}).execute(),w3("Created document %s with draft version %s",t8,V8)}let n8=await M(x,p),O6={...l,subtype:d??null},{entity:j6,mutationApi:k6}=H8(O6,t8,Q,n8,null,i,i?n:null,null);return{entity:j6,mutationApi:k6,pk:p}},q6=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;let{typeCode:Q,seq:a}=s,n=a6.getEntityFactory(Q);await L(x);let d=await x.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.created_at","e.updated_at","e.deleted_at","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",Q).where("e.seq","=",a).where("e.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{entity_id:H8,entity_type_id:j8}=d;Z.set(H8,u);let E8=j8;if(d.subtype)E8=await o6.readEntityTypeId(x,w8,Q,null);let I8=m("draft_version",E8),Y6=m("latest_published_version",E8),t8=null,F=null;if(I8)t8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",H8).where("field_definition_id","=",I8.pk).executeTakeFirst())?.target_entity_id??null;if(Y6)F=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).executeTakeFirst())?.target_entity_id??null;let l=null,p=null,i=null,V8=!1;if(F){let t1=await p8(x,F);if(t1)l=t1.versionNumber,p=t1.content}if(t8){let t1=await p8(x,t8);if(t1)V8=!0,i=t1.content}let n8=null,O6=null,j6=null,k6=m("edit_session_id",E8),I6=m("edit_started_at",E8),R6=m("edit_last_activity_at",E8);if(k6)n8=(await x.selectFrom("string_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",k6.pk).executeTakeFirst())?.value??null;if(I6)O6=(await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",I6.pk).executeTakeFirst())?.value??null;if(R6)j6=(await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",R6.pk).executeTakeFirst())?.value??null;let j1=await M(x,H8),Q4=await c(x,H8),{entity:h4,mutationApi:q7}=n(d,d.object_id,d.parent_object_id,j1,l,V8,i,p);for(let t1 of Q4)q7.setField(t1.getDefinition().getName(),t1);if(n8)q7.setEditState({sessionId:n8,startedAt:O6,lastActivityAt:j6});return{entity:h4,mutationApi:q7,pk:H8}},X6=async(x,w8,{id:u,name:s,parentId:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:n,seq:d}=a,H8=a6.getContentTypeLabel(n),j8=a6.getEntityFactory(n),E8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d).where("type_code","=",n).where("deleted_at","is",null).executeTakeFirst();y.factory(!E8,I.notFound,`${H8} not found: ${u}`,"NOT_FOUND");let I8=E8.id,Y6={name:E8.name,parentId:E8.parent_object_id,path:null};Z.set(I8,u),Y6.path=await M(x,I8);let F={updated_at:c6()};if(s!==void 0)F.name=s;if(Q!==void 0){let p=await v(x,Q);F.parent_folder_id=p,F.parent_object_id=Q}await x.updateTable("entities").set(F).where("id","=",I8).execute();let l=await q6(x,w8,{id:u});return y.factory(!l,I.notFound,`${H8} not found after update: ${u}`,"NOT_FOUND"),{...l,oldValues:Y6}},f6=async(x,w8,{id:u,subtype:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:a,seq:n}=Q,d=a6.getContentTypeLabel(a),H8=a6.getEntityFactory(a),j8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",n).where("type_code","=",a).where("deleted_at","is",null).executeTakeFirst();y.factory(!j8,I.notFound,`${d} not found: ${u}`,"NOT_FOUND");let E8=j8.id,I8=await o6.readEntityTypeId(x,w8,a,s??null),Y6=c6();await x.updateTable("entities").set({entity_type_id:I8,updated_at:Y6}).where("id","=",E8).execute(),Z.set(E8,u);let t8=await q6(x,w8,{id:u});return y.factory(!t8,I.notFound,`${d} not found after type update: ${u}`,"NOT_FOUND"),t8},M8=async(x,w8,{entityId:u,entityTypePk:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid entity ID: ${u}`,"INVALID_ID");let{typeCode:a,seq:n}=Q,d=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",n).where("type_code","=",a).where("deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Entity not found: ${u}`,"NOT_FOUND");let H8=d.id,j8=await x.selectFrom("field_definitions").select(["id","primitive_type"]).where("owner_entity_type_id","=",s).execute(),E8=0;for(let I8 of j8)await C(x,H8,I8.id,I8.primitive_type),E8++;return{deletedCount:E8}},x8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:Q,seq:a}=s,n=a6.getContentTypeLabel(Q),d=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",a).where("type_code","=",Q).where("deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`${n} not found: ${u}`,"NOT_FOUND");let H8=d.id;Z.set(H8,u);let j8=await M(x,H8);await L(x);let E8=await o6.readEntityTypeId(x,w8,"v",null),I8=m("document",E8);if(I8){let t8=await x.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","=",I8.pk).where("orf.target_entity_id","=",H8).where("ve.deleted_at","is",null).execute();w3("Cascade deleting %d version entities for document %s",t8.length,u);let F=await o6.readEntityTypeId(x,w8,Q,null),l=m("draft_version",F),p=m("latest_published_version",F),i=[l?.pk,p?.pk].filter(Boolean);if(i.length>0)await x.deleteFrom("obj_ref_fields").where("entity_id","=",H8).where("field_definition_id","in",i).execute();for(let V8 of t8){let n8=V8.version_pk;await f4`DELETE FROM entity_content_fts WHERE rowid = ${n8}`.execute(x),await x.deleteFrom("entities").where("id","=",n8).execute()}}let Y6=c6();return await x.updateTable("entities").set({deleted_at:Y6}).where("id","=",H8).execute(),{id:u,deleted:!0,path:j8}},B8=async(x,w8,{id:u,content:s,sessionId:Q})=>{let a=r1(u);y.factory(!a,I.validation,`Invalid content ID: ${u}`,"INVALID_ID"),y.factory(!Q,I.validation,"sessionId is required","MISSING_SESSION_ID");let{typeCode:n,seq:d}=a,H8=a6.getContentTypeLabel(n);await L(x);let j8=c6(),E8=new Date(Date.now()-gJ).toISOString(),I8=await x.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","=",n).where("e.seq","=",d).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!I8,I.notFound,`${H8} not found: ${u}`,"NOT_FOUND");let{id:Y6,entity_type_id:t8}=I8,F=t8;if(I8.subtype)F=await o6.readEntityTypeId(x,w8,n,null);let l=m("edit_session_id",F),p=m("edit_last_activity_at",F);if(l&&p){let I6=await x.selectFrom("string_fields").select("value").where("entity_id","=",Y6).where("field_definition_id","=",l.pk).executeTakeFirst();if(I6&&I6.value!==Q){let R6=await x.selectFrom("date_fields").select("value").where("entity_id","=",Y6).where("field_definition_id","=",p.pk).executeTakeFirst();if(R6&&R6.value>=E8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let i=m("draft_version",F);if(!i)throw Error(`System field definition "draft_version" not found for base type ${n}`);let n8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",Y6).where("field_definition_id","=",i.pk).executeTakeFirst())?.target_entity_id??null;if(n8)await f4`DELETE FROM entity_content_fts WHERE rowid = ${n8}`.execute(x),await x.updateTable("entity_content").set({content_text:s,updated_at:j8}).where("entity_id","=",n8).execute(),await f4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${n8}, ${s})`.execute(x),w3("Updated draft version content for %s (version pk=%d)",u,n8);else{let I6=await o6.readEntityTypeId(x,w8,"v",null),R6=m("version_number",I6),j1=m("published_at",I6),Q4=m("document",I6),h4=0;if(Q4&&R6&&j1)h4=(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(l4)=>l4.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",R6.pk)).innerJoin("date_fields as df",(l4)=>l4.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",j1.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",Q4.pk).where("orf.target_entity_id","=",Y6).executeTakeFirst())?.max_version??0;let q7=h4+1,t1=await h8(x,w8,{documentPk:Y6,documentObjectId:u,documentEntityTypeId:t8,content:s,versionNumber:q7,publishedAt:null});await x.insertInto("obj_ref_fields").values({entity_id:Y6,field_definition_id:i.pk,target_entity_id:t1.pk,ordinal:0}).execute(),w3("Created new draft version %s (pk=%d) for %s, version_number=%d",t1.objectId,t1.pk,u,q7)}let j6=!await t(x,w8,{id:u,sessionId:Q}),k6=await q6(x,w8,{id:u});return y.factory(!k6,I.notFound,`${H8} not found after draft save: ${u}`,"NOT_FOUND"),{...k6,lockLost:j6}},F8=async(x,w8,{id:u,sessionId:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:a,seq:n}=Q,d=a6.getContentTypeLabel(a);await L(x);let H8=c6(),j8=new Date(Date.now()-gJ).toISOString(),E8=await x.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","=",a).where("e.seq","=",n).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!E8,I.notFound,`${d} not found: ${u}`,"NOT_FOUND");let{id:I8,entity_type_id:t8}=E8;if(E8.subtype)t8=await o6.readEntityTypeId(x,w8,a,null);let F=m("draft_version",t8),l=m("latest_published_version",t8);if(!F)throw Error(`System field definition "draft_version" not found for base type ${a}`);let p=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",I8).where("field_definition_id","=",F.pk).executeTakeFirst();y.factory(!p,I.notFound,`No draft found for ${d}: ${u}`,"DRAFT_NOT_FOUND");let i=p.target_entity_id,V8=m("edit_session_id",t8),n8=m("edit_last_activity_at",t8),O6=m("edit_started_at",t8);if(s&&V8&&n8){let l4=await x.selectFrom("string_fields").select("value").where("entity_id","=",I8).where("field_definition_id","=",V8.pk).executeTakeFirst();if(l4&&l4.value!==s){let w5=await x.selectFrom("date_fields").select("value").where("entity_id","=",I8).where("field_definition_id","=",n8.pk).executeTakeFirst();if(w5&&w5.value>=j8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let j6=await o6.readEntityTypeId(x,w8,"v",null),k6=m("version_number",j6),I6=m("published_at",j6),R6=m("document",j6);if(!k6||!I6||!R6)throw Error("Required version field definitions not found");let Q4=(await x.selectFrom("int_fields").select("value").where("entity_id","=",i).where("field_definition_id","=",k6.pk).executeTakeFirst())?.value??1,t1=((await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(l4)=>l4.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",k6.pk)).innerJoin("date_fields as df",(l4)=>l4.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",I6.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",R6.pk).where("orf.target_entity_id","=",I8).executeTakeFirst())?.max_version??0)+1;if(Q4!==t1)await x.updateTable("int_fields").set({value:t1}).where("entity_id","=",i).where("field_definition_id","=",k6.pk).execute();if(await x.insertInto("date_fields").values({entity_id:i,field_definition_id:I6.pk,value:H8,ordinal:0}).execute(),l)if(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",I8).where("field_definition_id","=",l.pk).executeTakeFirst())await x.updateTable("obj_ref_fields").set({target_entity_id:i}).where("entity_id","=",I8).where("field_definition_id","=",l.pk).execute();else await x.insertInto("obj_ref_fields").values({entity_id:I8,field_definition_id:l.pk,target_entity_id:i,ordinal:0}).execute();if(await x.deleteFrom("obj_ref_fields").where("entity_id","=",I8).where("field_definition_id","=",F.pk).execute(),V8)await x.deleteFrom("string_fields").where("entity_id","=",I8).where("field_definition_id","=",V8.pk).execute();if(O6)await x.deleteFrom("date_fields").where("entity_id","=",I8).where("field_definition_id","=",O6.pk).execute();if(n8)await x.deleteFrom("date_fields").where("entity_id","=",I8).where("field_definition_id","=",n8.pk).execute();w3("Published version %d for %s (version pk=%d)",t1,u,i);let P5=await q6(x,w8,{id:u});return y.factory(!P5,I.notFound,`${d} not found after publish: ${u}`,"NOT_FOUND"),P5},l8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid content ID: ${u}`,"INVALID_ID");let{typeCode:Q,seq:a}=s,n=a6.getContentTypeLabel(Q);await L(x);let d=await x.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","=",a).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`${n} not found: ${u}`,"NOT_FOUND");let{id:H8,entity_type_id:j8}=d;if(d.subtype)j8=await o6.readEntityTypeId(x,w8,Q,null);let E8=m("draft_version",j8);if(!E8)throw Error(`System field definition "draft_version" not found for base type ${Q}`);let I8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",H8).where("field_definition_id","=",E8.pk).executeTakeFirst();if(I8){let t8=I8.target_entity_id;await x.deleteFrom("obj_ref_fields").where("entity_id","=",H8).where("field_definition_id","=",E8.pk).execute(),await f4`DELETE FROM entity_content_fts WHERE rowid = ${t8}`.execute(x),await x.deleteFrom("entities").where("id","=",t8).execute(),w3("Discarded draft version (pk=%d) for %s",t8,u)}let Y6=await q6(x,w8,{id:u});return y.factory(!Y6,I.notFound,`${n} not found after discard: ${u}`,"NOT_FOUND"),Y6},Y8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;let{typeCode:Q,seq:a}=s;await L(x);let n=await x.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","=",Q).where("e.seq","=",a).where("e.deleted_at","is",null).executeTakeFirst();if(!n)return null;let{id:d,entity_type_id:H8}=n;if(n.subtype)H8=await o6.readEntityTypeId(x,w8,Q,null);let j8=m("draft_version",H8);if(!j8)return null;let E8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",d).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!E8)return null;let I8=E8.target_entity_id,Y6=await x.selectFrom("entity_content").select(["content_text","updated_at"]).where("entity_id","=",I8).executeTakeFirst();if(!Y6)return null;return{entityId:n.object_id,content:Y6.content_text,updatedAt:Y6.updated_at}},W8=async(x,w8,{id:u,versionNumber:s})=>{let Q=r1(u);if(!Q)return null;let{typeCode:a,seq:n}=Q;await L(x);let d=await x.selectFrom("entities").select(["id","object_id"]).where("store_id","=",Y).where("type_code","=",a).where("seq","=",n).where("deleted_at","is",null).executeTakeFirst();if(!d)return null;let H8=d.id,j8=await o6.readEntityTypeId(x,w8,"v",null),E8=m("document",j8),I8=m("version_number",j8),Y6=m("published_at",j8);if(!E8||!I8)return null;let t8=x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(i)=>i.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",I8.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["orf.entity_id as version_pk","ve.updated_at"]).where("orf.field_definition_id","=",E8.pk).where("orf.target_entity_id","=",H8).where("if.value","=",s).where("ve.deleted_at","is",null),F;if(Y6)F=await t8.innerJoin("date_fields as df",(i)=>i.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",Y6.pk)).select("df.value as published_at").executeTakeFirst();else F=await t8.executeTakeFirst();if(!F)return null;let l=F.version_pk,p=await x.selectFrom("entity_content").select("content_text").where("entity_id","=",l).executeTakeFirst();return{entityId:d.object_id,versionNumber:s,content:p?.content_text??null,publishedAt:F.published_at??null}},J8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return[];let{typeCode:Q,seq:a}=s;await L(x);let n=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",Q).where("seq","=",a).where("deleted_at","is",null).executeTakeFirst();if(!n)return[];let d=n.id,H8=await o6.readEntityTypeId(x,w8,"v",null),j8=m("document",H8),E8=m("version_number",H8),I8=m("published_at",H8);if(!j8||!E8||!I8)return[];return(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(t8)=>t8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",E8.pk)).innerJoin("date_fields as df",(t8)=>t8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",I8.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["if.value as version_number","df.value as published_at"]).where("orf.field_definition_id","=",j8.pk).where("orf.target_entity_id","=",d).where("ve.deleted_at","is",null).orderBy("if.value","desc").execute()).map((t8)=>({versionNumber:t8.version_number,publishedAt:t8.published_at}))},c8=async(x,w8,u,s,Q)=>{let a=await v(x,u),n=await x.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=",Q).where("e.parent_folder_id",a===null?"is":"=",a).where("e.name","=",s).where("e.deleted_at","is",null).executeTakeFirst();if(!n)return null;return q6(x,w8,{id:n.object_id})},o=async(x,w8,{parentId:u,type:s})=>{let Q=await v(x,u),a=await x.selectFrom("entities as e").select("e.object_id").where("e.store_id","=",Y).where("e.type_code","=",s).where("e.parent_folder_id",Q===null?"is":"=",Q).where("e.deleted_at","is",null).execute(),n=[];for(let d of a){let H8=await q6(x,w8,{id:d.object_id});if(H8)n.push(H8)}return n},X8=async(x,w8,{id:u,sessionId:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid ID: ${u}`,"INVALID_ID"),await L(x);let a=c6(),n=new Date(Date.now()-gJ).toISOString(),d=await x.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.typeCode).where("e.seq","=",Q.seq).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let{id:H8,entity_type_id:j8}=d;if(d.subtype)j8=await o6.readEntityTypeId(x,w8,Q.typeCode,null);let E8=m("edit_session_id",j8),I8=m("edit_started_at",j8),Y6=m("edit_last_activity_at",j8);if(!E8||!I8||!Y6)throw Error("Edit state field definitions not found");let t8=await x.selectFrom("string_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",E8.pk).executeTakeFirst(),F=await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",I8.pk).executeTakeFirst(),l=await x.selectFrom("date_fields").select("value").where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).executeTakeFirst(),p=t8?.value??null,i=F?.value??null,V8=l?.value??null;if(p)if(p===s)return await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",I8.pk).execute(),await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).execute(),{success:!0};else if(V8&&V8<n)return await x.updateTable("string_fields").set({value:s}).where("entity_id","=",H8).where("field_definition_id","=",E8.pk).execute(),await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",I8.pk).execute(),await x.updateTable("date_fields").set({value:a}).where("entity_id","=",H8).where("field_definition_id","=",Y6.pk).execute(),{success:!0};else return{success:!1,meta:{lockedBy:p,lockedSince:i,timeoutSeconds:gJ/1000}};else return await x.insertInto("string_fields").values({entity_id:H8,field_definition_id:E8.pk,value:s,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:H8,field_definition_id:I8.pk,value:a,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:H8,field_definition_id:Y6.pk,value:a,ordinal:0}).execute(),{success:!0}},t=async(x,w8,{id:u,sessionId:s})=>{let Q=r1(u);if(!Q)return!1;await L(x);let a=c6(),n=await x.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.typeCode).where("e.seq","=",Q.seq).executeTakeFirst();if(!n)return!1;let{id:d,entity_type_id:H8}=n;if(n.subtype)H8=await o6.readEntityTypeId(x,w8,Q.typeCode,null);let j8=m("edit_session_id",H8),E8=m("edit_started_at",H8),I8=m("edit_last_activity_at",H8);if(!j8||!I8)return!1;let Y6=await x.selectFrom("string_fields").select("value").where("entity_id","=",d).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!Y6||Y6.value!==s)return!1;return((await x.updateTable("date_fields").set({value:a}).where("entity_id","=",d).where("field_definition_id","=",I8.pk).execute())[0]?.numUpdatedRows||0)>0},G8=async(x,w8,{id:u})=>{let s=r1(u);y.factory(!s,I.validation,`Invalid ID: ${u}`,"INVALID_ID"),await L(x);let Q=await x.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","=",s.typeCode).where("e.seq","=",s.seq).executeTakeFirst();y.factory(!Q,I.notFound,`Entity not found: ${u}`,"ENTITY_NOT_FOUND");let{id:a,entity_type_id:n}=Q;if(Q.subtype)n=await o6.readEntityTypeId(x,w8,s.typeCode,null);let d=m("edit_session_id",n),H8=m("edit_started_at",n),j8=m("edit_last_activity_at",n);if(d)await x.deleteFrom("string_fields").where("entity_id","=",a).where("field_definition_id","=",d.pk).execute();if(H8)await x.deleteFrom("date_fields").where("entity_id","=",a).where("field_definition_id","=",H8.pk).execute();if(j8)await x.deleteFrom("date_fields").where("entity_id","=",a).where("field_definition_id","=",j8.pk).execute()},z8=async(x,w8,{id:u})=>{let s=r1(u);if(!s)return null;await L(x);let Q=await x.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","=",s.typeCode).where("e.seq","=",s.seq).executeTakeFirst();if(!Q)return null;let{id:a,entity_type_id:n}=Q;if(Q.subtype)n=await o6.readEntityTypeId(x,w8,s.typeCode,null);let d=m("edit_session_id",n),H8=m("edit_started_at",n),j8=m("edit_last_activity_at",n);if(!d)return null;let E8=await x.selectFrom("string_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",d.pk).executeTakeFirst();if(!E8)return null;let I8=null,Y6=null;if(H8)I8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",H8.pk).executeTakeFirst())?.value??null;if(j8)Y6=(await x.selectFrom("date_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",j8.pk).executeTakeFirst())?.value??null;return{sessionId:E8.value,startedAt:I8,lastActivityAt:Y6}},k8=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"f","root_s"),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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","=",s).where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let{id:a,object_id:n}=Q;Z.set(a,n);let d=await M(x,a),H8=await c(x,a),{entity:j8,mutationApi:E8}=nq.createFromRow(Q,n,Q.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:a}},b8=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"s",null),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",s).where("entities.deleted_at","is",null).execute(),a=[];for(let n of Q){let{id:d,object_id:H8}=n;Z.set(d,H8);let j8=await M(x,d),E8=await c(x,d),{entity:I8,mutationApi:Y6}=jO.createFromRow(n,H8,n.parent_object_id,j8);for(let t8 of E8)Y6.setField(t8.getDefinition().getName(),t8);a.push({entity:I8,mutationApi:Y6,pk:d})}return a},Q8=async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);if(!Q)return null;if(Q.typeCode!=="s")return null;let a=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","s").where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await c(x,n),{entity:j8,mutationApi:E8}=jO.createFromRow(a,u,a.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:n}},l6=async(x,w8,{storeCode:u,parentId:s,name:Q})=>{if(u!==void 0)j(u);y.factory(!Q,I.validation,"Story name is required","MISSING_NAME");let a=c6(),n=await o6.readEntityTypeId(x,w8,"s",null),d=await E1.nextSeq(x,"store",Y,"s"),H8=await v(x,s),j8=Fz(K,"s",d),E8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:n,type_code:"s",seq:d,parent_folder_id:H8,parent_object_id:s,name:Q,created_at:a,updated_at:a}).returningAll().executeTakeFirstOrThrow();await x.insertInto("folders").values({entity_id:E8.id}).execute();let I8=E8.id;Z.set(I8,j8);let Y6=await M(x,I8),{entity:t8,mutationApi:F}=jO.createFromRow(E8,j8,s,Y6);return{entity:t8,mutationApi:F,pk:I8}},D4=async(x,w8,{id:u,name:s})=>{let Q=r1(u);y.factory(!Q,I.validation,`Invalid story ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="s",I.validation,`Not a story ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Story not found: ${u}`,"STORY_NOT_FOUND");let n=a.id;Z.set(n,u);let d=a.name,H8=await M(x,n),j8=await x.updateTable("entities").set({name:s,updated_at:c6()}).where("id","=",n).returningAll().executeTakeFirstOrThrow(),E8=await M(x,n),I8=await c(x,n),{entity:Y6,mutationApi:t8}=jO.createFromRow(j8,u,j8.parent_object_id,E8);for(let F of I8)t8.setField(F.getDefinition().getName(),F);return{entity:Y6,mutationApi:t8,pk:n,oldValues:{name:d,path:H8}}},K3=async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);y.factory(!Q,I.validation,`Invalid story ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="s",I.validation,`Not a story ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Story not found: ${u}`,"STORY_NOT_FOUND");let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await f(x,n),j8=c6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[n,...H8]).execute();let E8=[];for(let I8 of H8){let Y6=await x.selectFrom("entities").select("object_id").where("id","=",I8).executeTakeFirst();if(Y6)E8.push(Y6.object_id)}return{id:u,deleted:!0,descendantCount:H8.length,path:d,descendantIds:E8,deletedPks:[n,...H8]}},K7=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"f","root_j"),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").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","=",s).where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let{id:a,object_id:n}=Q;Z.set(a,n);let d=await M(x,a),H8=await c(x,a),{entity:j8,mutationApi:E8}=nq.createFromRow(Q,n,Q.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:a}},B1=async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await o6.readEntityTypeId(x,w8,"j",null),Q=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",s).where("entities.deleted_at","is",null).execute(),a=[];for(let n of Q){let{id:d,object_id:H8}=n;Z.set(d,H8);let j8=await M(x,d),E8=await c(x,d),{entity:I8,mutationApi:Y6}=Jk.createFromRow(n,H8,n.parent_object_id,j8);for(let t8 of E8)Y6.setField(t8.getDefinition().getName(),t8);a.push({entity:I8,mutationApi:Y6,pk:d})}return a},L$=async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);if(!Q)return null;if(Q.typeCode!=="j")return null;let a=await x.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","j").where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await c(x,n),{entity:j8,mutationApi:E8}=Jk.createFromRow(a,u,a.parent_object_id,d);for(let I8 of H8)E8.setField(I8.getDefinition().getName(),I8);return{entity:j8,mutationApi:E8,pk:n}},u8=Object.freeze({...H,getCodes:X,getType:P,getCode:w,getPk:T,toJSON:G,createFolder:_8,readFolder:T8,updateFolder:d8,deleteFolder:H6,isDuplicateNameInParent:D8,findFolderByName:m8,listFolderContents:a8,getFolderByPath:Z6,readRootFolderForType:_6,createContent:s8,readContent:q6,updateContent:X6,updateEntityType:f6,deleteTypeScopedFieldValues:M8,deleteContent:x8,saveDraft:B8,readDraft:Y8,publishContent:F8,discardDraft:l8,readVersion:W8,getVersions:J8,findContentByName:c8,listContent:o,createFieldDefinition:u6,readFieldDefinition:y6,readDefaultFieldDefinition:e,findFieldDefinitionByName:s6,resolveFieldDefinition:L6,getFieldDefinitionsForOwner:P8,getFieldDefinitionsForEntityType:f8,resolveEntityTypePk:O8,deleteFieldDefinition:y8,setFieldValue:i8,deleteFieldValue:o8,getFieldValue:z6,setEditState:X8,clearEditState:G8,getEditState:z8,readStoryRootFolder:k8,listStories:b8,readStory:Q8,createStory:l6,renameStory:D4,deleteStory:K3,readJobRootFolder:K7,listJobs:B1,readJob:L$,createJob:async(x,w8,{storeCode:u,parentId:s,name:Q})=>{if(u!==void 0)j(u);y.factory(!Q,I.validation,"Job name is required","MISSING_NAME");let a=c6(),n=await o6.readEntityTypeId(x,w8,"j",null),d=await E1.nextSeq(x,"store",Y,"j"),H8=await v(x,s),j8=Fz(K,"j",d),E8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:n,type_code:"j",seq:d,parent_folder_id:H8,parent_object_id:s,name:Q,created_at:a,updated_at:a}).returningAll().executeTakeFirstOrThrow();await x.insertInto("folders").values({entity_id:E8.id}).execute();let I8=E8.id;Z.set(I8,j8);let Y6=await M(x,I8),{entity:t8,mutationApi:F}=Jk.createFromRow(E8,j8,s,Y6);return{entity:t8,mutationApi:F,pk:I8}},deleteJob:async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);y.factory(!Q,I.validation,`Invalid job ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="j",I.validation,`Not a job ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","j").where("deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Job not found: ${u}`,"JOB_NOT_FOUND");let n=a.id;Z.set(n,u);let d=await M(x,n),H8=await f(x,n),j8=c6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[n,...H8]).execute();let E8=[];for(let I8 of H8){let Y6=await x.selectFrom("entities").select("object_id").where("id","=",I8).executeTakeFirst();if(Y6)E8.push(Y6.object_id)}return{id:u,deleted:!0,descendantCount:H8.length,path:d,descendantIds:E8,deletedPks:[n,...H8]}},createAsset:async(x,w8,{storeCode:u,hash:s,mimeType:Q,sizeBytes:a,originalFilename:n,widthPx:d,heightPx:H8,displayWidth:j8,displayHeight:E8})=>{if(u!==void 0)j(u);let I8=c6(),Y6=await o6.readEntityTypeId(x,w8,"a",null),t8=await E1.nextSeq(x,"store",Y,"a"),F=Fz(K,"a",t8),l=await x.insertInto("entities").values({store_id:Y,object_id:F,entity_type_id:Y6,type_code:"a",seq:t8,parent_folder_id:null,parent_object_id:null,name:n,created_at:I8,updated_at:I8}).returningAll().executeTakeFirstOrThrow();await x.insertInto("assets").values({entity_id:l.id,hash:s,mime_type:Q,size_bytes:a,original_filename:n,width_px:d,height_px:H8,display_width:j8,display_height:E8}).execute();let p=l.id;Z.set(p,F);let{entity:i,mutationApi:V8}=zk.createFromRow({...l,hash:s,mime_type:Q,size_bytes:a,original_filename:n,width_px:d,height_px:H8,display_width:j8,display_height:E8},F);return{entity:i,mutationApi:V8,pk:p}},readAsset:async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);if(!Q)return null;if(Q.typeCode!=="a")return null;let a=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let n=a.id;Z.set(n,u);let{entity:d,mutationApi:H8}=zk.createFromRow(a,u);return{entity:d,mutationApi:H8,pk:n}},listAssets:async(x,w8,{storeCode:u})=>{if(u!==void 0)j(u);let s=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.type_code","=","a").where("entities.deleted_at","is",null).execute(),Q=[];for(let a of s){let{id:n,object_id:d}=a;Z.set(n,d);let{entity:H8,mutationApi:j8}=zk.createFromRow(a,d);Q.push({entity:H8,mutationApi:j8,pk:n})}return Q},deleteAsset:async(x,w8,{id:u,storeCode:s})=>{if(s!==void 0)j(s);let Q=r1(u);y.factory(!Q,I.validation,`Invalid asset ID: ${u}`,"INVALID_ID"),y.factory(Q.typeCode!=="a",I.validation,`Not an asset ID: ${u}`,"INVALID_TYPE");let a=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!a,I.notFound,`Asset not found: ${u}`,"ASSET_NOT_FOUND");let n=c6();return await x.updateTable("entities").set({deleted_at:n}).where("id","=",a.id).execute(),Z.set(a.id,u),{id:u,deleted:!0,hash:a.hash}},findEntitiesByFieldValue:async(x,w8,{typeCode:u,subtype:s,fieldName:Q,fieldValue:a})=>{let n=x.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.type_code","entity_types.subtype"]).where("entities.store_id","=",Y).where("entities.type_code","=",u).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",Q).where("field_definitions.owner_entity_id","is",null).where("string_fields.value","=",a);if(s!==void 0&&s!==null)n=n.where("entity_types.subtype","=",s);let d=await n.execute(),H8=[];for(let j8 of d){let E8=await M(x,j8.id);H8.push({id:j8.id,object_id:j8.object_id,name:j8.name,path:E8,type_code:j8.type_code,subtype:j8.subtype})}return H8}}),M6=Object.freeze({...O});return{store:u8,mutationApi:M6}},DP8=Object.freeze({create:v_6});var V_6=({inner:$,folderCache:K,contentCache:q,fieldDefinitionCache:Y,storyCache:J,jobCache:z,assetCache:W})=>{let Z=async(o,X8,t,G8)=>{let z8=await $.createFolder(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{K.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},H=async(o,X8,{id:t})=>{let G8=K.get(t);if(G8)return G8.getEntity();let z8=await $.readFolder(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;if(t.length>=2&&t[1]!=="s")K.set(t,d6.create(k8,b8,Q8));return k8},O=async(o,X8,t,G8)=>{let{id:z8}=t,k8=K.get(z8),b8=z8&&z8.length>1&&z8[1]==="j",Q8=b8?z.get(z8):null;if(b8)z.remove(z8);let l6=await $.updateFolder(o,X8,t),D4=t.name!==void 0&&t.name!==l6.oldValues.name||t.parentId!==void 0&&t.parentId!==l6.oldValues.parentId;return G8(()=>{if(k8){let K7=k8.getMutationApi();if(t.name!==void 0)K7.setName(t.name);if(t.parentId!==void 0)K7.setParentId(t.parentId);K7.setUpdatedAt(l6.entity.getUpdatedAt()),K7.setPath(l6.entity.getPath())}else{let{entity:K7,mutationApi:B1,pk:L$}=l6;K.set(z8,d6.create(K7,B1,L$))}if(D4){let B1=l6.oldValues.path+"/";for(let[L$,f$]of K.entries())if(f$.getEntity().getPath().startsWith(B1))K.remove(L$);for(let[L$,f$]of q.entries())if(f$.getEntity().getPath().startsWith(B1))q.remove(L$)}}),{entity:k8?k8.getEntity():l6.entity,oldValues:l6.oldValues}},X=async(o,X8,{id:t},G8)=>{let z8=K.get(t),k8=z8?z8.getEntity().getPath():null,b8=await $.deleteFolder(o,X8,{id:t});return G8(()=>{K.remove(t);for(let Q8 of b8.descendantIds||[])K.remove(Q8)}),{...b8,path:k8}},P=async(o,X8,t)=>{let G8=await $.listFolderContents(o,X8,t);for(let z8 of G8)K.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},w=async(o,X8,t)=>{let G8=await $.getFolderByPath(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8,Q8=z8.getObjectId();if(Q8.length>=2&&Q8[1]!=="s")K.set(Q8,d6.create(z8,k8,b8));return z8},T=async(o,X8,t,G8)=>{let z8=await $.findFolderByName(o,X8,t,G8);if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return K.set(k8.getObjectId(),d6.create(k8,b8,Q8)),k8},G=async(o,X8,t)=>{let G8=await $.readRootFolderForType(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8;return K.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},j=async(o,X8,t,G8,z8)=>{return $.isDuplicateNameInParent(o,X8,t,G8,z8)},v=async(o,X8,t,G8)=>{let z8=await $.createContent(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{q.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},M=async(o,X8,{id:t})=>{let G8=q.get(t);if(G8)return G8.getEntity();let z8=await $.readContent(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return q.set(t,d6.create(k8,b8,Q8)),k8},f=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.updateContent(o,X8,t);return G8(()=>{if(k8){let Q8=k8.getMutationApi();if(t.name!==void 0)Q8.setName(t.name);if(t.parentId!==void 0)Q8.setParentId(t.parentId);Q8.setUpdatedAt(b8.entity.getUpdatedAt()),Q8.setPath(b8.entity.getPath())}else{let{entity:Q8,mutationApi:l6,pk:D4}=b8;q.set(z8,d6.create(Q8,l6,D4))}}),k8?k8.getEntity():b8.entity},k=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.updateEntityType(o,X8,t);return q.remove(z8),k8.entity},N=async(o,X8,t)=>{return $.deleteTypeScopedFieldValues(o,X8,t)},R=async(o,X8,{id:t},G8)=>{let z8=q.get(t),k8=z8?z8.getEntity().getPath():null,b8=await $.deleteContent(o,X8,{id:t});return G8(()=>{q.remove(t)}),{...b8,path:k8}},E=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.saveDraft(o,X8,t);G8(()=>{if(k8){let l6=k8.getMutationApi();l6.setDraftContent(b8.entity.getDraftContent()),l6.setHasDraft(b8.entity.hasDraftContent()),l6.setUpdatedAt(b8.entity.getUpdatedAt())}else{let{entity:l6,mutationApi:D4,pk:K3}=b8;q.set(z8,d6.create(l6,D4,K3))}});let Q8=k8?k8.getEntity():b8.entity;if(b8.lockLost!==void 0)return{entity:Q8,lockLost:b8.lockLost};return Q8},C=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.publishContent(o,X8,t);if(k8){let Q8=k8.getMutationApi();return Q8.setPublishedVersionNumber(b8.entity.getPublishedVersionNumber()),Q8.setPublishedContent(b8.entity.getPublishedContent()),Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(b8.entity.getUpdatedAt()),Q8.setEditState(null),k8.getEntity()}else return G8(()=>{let{entity:Q8,mutationApi:l6,pk:D4}=b8;q.set(z8,d6.create(Q8,l6,D4))}),b8.entity},g=async(o,X8,t,G8)=>{let{id:z8}=t,k8=q.get(z8),b8=await $.discardDraft(o,X8,t);return G8(()=>{if(k8){let Q8=k8.getMutationApi();Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(b8.entity.getUpdatedAt())}else{let{entity:Q8,mutationApi:l6,pk:D4}=b8;q.set(z8,d6.create(Q8,l6,D4))}}),k8?k8.getEntity():b8.entity},S=async(o,X8,t)=>{return $.readDraft(o,X8,t)},D=async(o,X8,t)=>{return $.readVersion(o,X8,t)},L=async(o,X8,t)=>{return $.getVersions(o,X8,t)},m=async(o,X8,t,G8,z8)=>{let k8=await $.findContentByName(o,X8,t,G8,z8);if(!k8)return null;let{entity:b8,mutationApi:Q8,pk:l6}=k8;return q.set(b8.getObjectId(),d6.create(b8,Q8,l6)),b8},c=async(o,X8,t)=>{let G8=await $.listContent(o,X8,t);for(let z8 of G8)q.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},e=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.setEditState(o,X8,t);return G8(()=>{q.remove(z8)}),k8},_8=async(o,X8,t)=>{return $.getEditState(o,X8,t)},T8=async(o,X8,t,G8)=>{let{id:z8}=t;await $.clearEditState(o,X8,t),G8(()=>{q.remove(z8)})},d8=async(o,X8,t,G8)=>{let z8=await $.createFieldDefinition(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{Y.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},H6=async(o,X8,{id:t})=>{let G8=Y.get(t);if(G8)return G8.getEntity();let z8=await $.readFieldDefinition(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return Y.set(t,d6.create(k8,b8,Q8)),k8},D8=async(o,X8,t,G8)=>{let z8=await $.findFieldDefinitionByName(o,X8,t,G8);if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return Y.set(k8.getObjectId(),d6.create(k8,b8,Q8)),k8},m8=async(o,X8,t)=>{let G8=await $.getFieldDefinitionsForOwner(o,X8,t);for(let z8 of G8)Y.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},a8=async(o,X8,t)=>{let G8=await $.getFieldDefinitionsForEntityType(o,X8,t);for(let z8 of G8)Y.set(z8.entity.getObjectId(),d6.create(z8.entity,z8.mutationApi,z8.pk));return G8.map((z8)=>z8.entity)},Z6=async(o,X8,t)=>{return $.resolveEntityTypePk(o,X8,t)},_6=async(o,X8)=>{let t=`${$.getCode()}n1`,G8=Y.get(t);if(G8)return G8.getEntity();let z8=await $.readDefaultFieldDefinition(o,X8),{entity:k8,mutationApi:b8,pk:Q8}=z8;return Y.set(k8.getObjectId(),d6.create(k8,b8,Q8)),k8},u6=async(o,X8,t)=>{let G8=await $.resolveFieldDefinition(o,X8,t),{entity:z8,mutationApi:k8,pk:b8}=G8;return Y.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},y6=async(o,X8,{id:t},G8)=>{let z8=await $.deleteFieldDefinition(o,X8,{id:t});return G8(()=>{Y.remove(t)}),z8},s6=async(o,X8,t,G8)=>{let{entityId:z8}=t,k8=await $.setFieldValue(o,X8,t);return G8(()=>{let b8=K.get(z8)||q.get(z8)||J.get(z8)||z.get(z8);if(b8){let Q8=b8.getMutationApi(),l6=k8.entity.getField(k8.fieldName);Q8.setField(k8.fieldName,l6)}}),k8.entity},L6=async(o,X8,t)=>{return $.getFieldValue(o,X8,t)},P8=async(o,X8,t,G8)=>{let{entityId:z8}=t,k8=await $.deleteFieldValue(o,X8,t);G8(()=>{let b8=K.get(z8)||q.get(z8)||J.get(z8)||z.get(z8);if(b8)b8.getMutationApi().removeField(k8.fieldName)})},O8=async(o,X8,t,G8)=>{let z8=await $.createStory(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{let l6=k8.getObjectId();if(!J.get(l6))J.set(l6,d6.create(k8,b8,Q8))}),k8},f8=async(o,X8,{id:t})=>{let G8=J.get(t);if(G8)return G8.getEntity();let z8=await $.readStory(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return J.set(t,d6.create(k8,b8,Q8)),k8},y8=async(o,X8,t)=>{let G8=await $.listStories(o,X8,t);for(let z8 of G8){let{entity:k8,mutationApi:b8,pk:Q8}=z8;J.set(k8.getObjectId(),d6.create(k8,b8,Q8))}return G8.map((z8)=>z8.entity)},i8=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.renameStory(o,X8,t),{entity:b8,mutationApi:Q8,pk:l6}=k8;return G8(()=>{let D4=J.get(z8);if(D4){let K3=D4.getMutationApi();K3.setName(b8.getName()),K3.setPath(b8.getPath())}else J.set(z8,d6.create(b8,Q8,l6))}),b8},o8=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.deleteStory(o,X8,t);return G8(()=>{J.remove(z8);for(let b8 of k8.descendantIds){let Q8=b8[0];if(b8.startsWith(Q8+"d")||b8.startsWith(Q8+"t"))q.remove(b8);else if(b8.startsWith(Q8+"f"))K.remove(b8)}}),k8},z6=async(o,X8,t)=>{let G8=await $.readStoryRootFolder(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8;return K.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},h8=async(o,X8,t,G8)=>{let z8=await $.createJob(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{let l6=k8.getObjectId();if(!z.get(l6))z.set(l6,d6.create(k8,b8,Q8))}),k8},p8=async(o,X8,{id:t})=>{let G8=z.get(t);if(G8)return G8.getEntity();let z8=await $.readJob(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return z.set(t,d6.create(k8,b8,Q8)),k8},s8=async(o,X8,t)=>{let G8=await $.listJobs(o,X8,t);for(let z8 of G8){let{entity:k8,mutationApi:b8,pk:Q8}=z8;z.set(k8.getObjectId(),d6.create(k8,b8,Q8))}return G8.map((z8)=>z8.entity)},q6=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.deleteJob(o,X8,t);return G8(()=>{z.remove(z8);for(let b8 of k8.descendantIds){let Q8=b8[0];if(b8.startsWith(Q8+"d")||b8.startsWith(Q8+"t"))q.remove(b8);else if(b8.startsWith(Q8+"f"))K.remove(b8)}}),k8},X6=async(o,X8,t)=>{let G8=await $.readJobRootFolder(o,X8,t);if(!G8)return null;let{entity:z8,mutationApi:k8,pk:b8}=G8;return K.set(z8.getObjectId(),d6.create(z8,k8,b8)),z8},f6=async(o,X8,t,G8)=>{let z8=await $.createAsset(o,X8,t),{entity:k8,mutationApi:b8,pk:Q8}=z8;return G8(()=>{W.set(k8.getObjectId(),d6.create(k8,b8,Q8))}),k8},M8=async(o,X8,{id:t})=>{let G8=W.get(t);if(G8)return G8.getEntity();let z8=await $.readAsset(o,X8,{id:t});if(!z8)return null;let{entity:k8,mutationApi:b8,pk:Q8}=z8;return W.set(t,d6.create(k8,b8,Q8)),k8},x8=async(o,X8,t)=>{let G8=await $.listAssets(o,X8,t),z8=[];for(let k8 of G8){let{entity:b8,mutationApi:Q8,pk:l6}=k8;W.set(b8.getObjectId(),d6.create(b8,Q8,l6)),z8.push(b8)}return z8},B8=async(o,X8,t,G8)=>{let{id:z8}=t,k8=await $.deleteAsset(o,X8,t);return G8(()=>{W.remove(z8)}),k8},F8=async(o,X8,t)=>{return $.findEntitiesByFieldValue(o,X8,t)},l8=(o)=>{K.remove(o)},Y8=(o)=>{q.remove(o)},W8=(o)=>{J.remove(o)},J8=(o)=>{z.remove(o)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:Z,readFolder:H,updateFolder:O,deleteFolder:X,listFolderContents:P,getFolderByPath:w,findFolderByName:T,readRootFolderForType:G,isDuplicateNameInParent:j,createContent:v,readContent:M,updateContent:f,updateEntityType:k,deleteTypeScopedFieldValues:N,deleteContent:R,saveDraft:E,readDraft:S,publishContent:C,discardDraft:g,readVersion:D,getVersions:L,findContentByName:m,listContent:c,setEditState:e,getEditState:_8,clearEditState:T8,createFieldDefinition:d8,readFieldDefinition:H6,findFieldDefinitionByName:D8,getFieldDefinitionsForOwner:m8,getFieldDefinitionsForEntityType:a8,resolveEntityTypePk:Z6,readDefaultFieldDefinition:_6,resolveFieldDefinition:u6,deleteFieldDefinition:y6,setFieldValue:s6,getFieldValue:L6,deleteFieldValue:P8,createStory:O8,renameStory:i8,readStory:f8,listStories:y8,deleteStory:o8,readStoryRootFolder:z6,createJob:h8,readJob:p8,listJobs:s8,deleteJob:q6,readJobRootFolder:X6,createAsset:f6,readAsset:M8,listAssets:x8,deleteAsset:B8,findEntitiesByFieldValue:F8,evictFolder:l8,evictContent:Y8,evictStory:W8,evictJob:J8})},hP8=Object.freeze({create:V_6});var A_6=($)=>{let K=new Map;return $.forEach((z)=>K.set(z,new Set)),Object.freeze({subscribe:(z,W)=>{return K.get(z)?.add(W),()=>K.get(z)?.delete(W)},subscribeAll:(z)=>{let W=[];for(let[Z,H]of K){let O=`on${Z.charAt(0).toUpperCase()}${Z.slice(1)}`;if(z[O])H.add(z[O]),W.push(()=>H.delete(z[O]))}return()=>W.forEach((Z)=>Z())},notify:(z,W,Z)=>{let H=[];return K.get(z)?.forEach((O)=>{if(O===Z)return;try{O(W)}catch(X){H.push(X)}}),H.length>0?H:null}})},bJ=Object.freeze({create:A_6});var C6=Object.freeze({FOLDER_CREATED:"folderCreated",FOLDER_RENAMED:"folderRenamed",FOLDER_MOVED:"folderMoved",FOLDER_DELETED:"folderDeleted",DOCUMENT_CREATED:"documentCreated",DOCUMENT_RENAMED:"documentRenamed",DOCUMENT_MOVED:"documentMoved",DOCUMENT_DELETED:"documentDeleted",DOCUMENT_PUBLISHED:"documentPublished",DRAFT_SAVED:"draftSaved",DRAFT_DISCARDED:"draftDiscarded",TEMPLATE_CREATED:"templateCreated",TEMPLATE_RENAMED:"templateRenamed",TEMPLATE_MOVED:"templateMoved",TEMPLATE_DELETED:"templateDeleted",TEMPLATE_PUBLISHED:"templatePublished",TEMPLATE_DRAFT_SAVED:"templateDraftSaved",TEMPLATE_DRAFT_DISCARDED:"templateDraftDiscarded",EDIT_STATE_ACQUIRED:"editStateAcquired",EDIT_STATE_REFRESHED:"editStateRefreshed",EDIT_STATE_CLEARED:"editStateCleared",STORY_CREATED:"storyCreated",STORY_RENAMED:"storyRenamed",STORY_DELETED:"storyDeleted",STORY_STATE_CHANGED:"storyStateChanged",JOB_CREATED:"jobCreated",JOB_UPDATED:"jobUpdated",JOB_STATUS_CHANGED:"jobStatusChanged",JOB_COMPLETED:"jobCompleted",JOB_DELETED:"jobDeleted",FIELD_ADDED:"fieldAdded",FIELD_VALUE_CHANGED:"fieldValueChanged",FIELD_REMOVED:"fieldRemoved",ASSET_CREATED:"assetCreated",ASSET_DELETED:"assetDeleted"});var M_6=({inner:$,storeCode:K})=>{let q=bJ.create([C6.FOLDER_CREATED,C6.FOLDER_RENAMED,C6.FOLDER_MOVED,C6.FOLDER_DELETED,C6.DOCUMENT_CREATED,C6.DOCUMENT_RENAMED,C6.DOCUMENT_MOVED,C6.DOCUMENT_DELETED,C6.DOCUMENT_PUBLISHED,C6.DRAFT_SAVED,C6.DRAFT_DISCARDED,C6.TEMPLATE_CREATED,C6.TEMPLATE_RENAMED,C6.TEMPLATE_MOVED,C6.TEMPLATE_DELETED,C6.TEMPLATE_PUBLISHED,C6.TEMPLATE_DRAFT_SAVED,C6.TEMPLATE_DRAFT_DISCARDED,C6.EDIT_STATE_ACQUIRED,C6.EDIT_STATE_REFRESHED,C6.EDIT_STATE_CLEARED,C6.STORY_CREATED,C6.STORY_RENAMED,C6.STORY_DELETED,C6.JOB_CREATED,C6.JOB_DELETED,C6.FIELD_ADDED,C6.FIELD_VALUE_CHANGED,C6.FIELD_REMOVED,C6.ASSET_CREATED,C6.ASSET_DELETED]),Y=async(Y8,W8,J8)=>{let c8=await $.readFolder(Y8,W8,{id:J8});if(!c8)return null;let o=await Y8.selectFrom("entities").innerJoin("entity_types","entities.entity_type_id","entity_types.id").select(["entity_types.code as entity_type_code","entity_types.subtype as entity_type_subtype"]).where("entities.object_id","=",J8).executeTakeFirst();if(o?.entity_type_code==="f"&&o?.entity_type_subtype==="root_d")return"d";if(o?.entity_type_code==="f"&&o?.entity_type_subtype==="root_t")return"t";let X8=await $.readRootFolderForType(Y8,W8,"d"),t=await $.readRootFolderForType(Y8,W8,"t"),G8=c8;while(G8&&G8.getParentId()!==null){let z8=await $.readFolder(Y8,W8,{id:G8.getParentId()});if(!z8)break;G8=z8}if(G8&&G8.getObjectId()===X8?.getObjectId())return"d";else if(G8&&G8.getObjectId()===t?.getObjectId())return"t";return null},J=async(Y8,W8,J8,c8)=>{let{parentId:o,subtype:X8}=J8,t=await $.createFolder(Y8,W8,J8,c8),G8=null;if(X8==="root_d")G8="d";else if(X8==="root_t")G8="t";else{let z8=await $.readRootFolderForType(Y8,W8,"d"),k8=await $.readRootFolderForType(Y8,W8,"t");if(o===z8?.getObjectId())G8="d";else if(o===k8?.getObjectId())G8="t";else if(o){let b8=await $.readFolder(Y8,W8,{id:o});if(b8){let Q8=b8;while(Q8&&Q8.getParentId()!==null){let l6=await $.readFolder(Y8,W8,{id:Q8.getParentId()});if(!l6)break;Q8=l6}if(Q8&&Q8.getObjectId()===z8?.getObjectId())G8="d";else if(Q8&&Q8.getObjectId()===k8?.getObjectId())G8="t"}}}return c8(()=>{q.notify(C6.FOLDER_CREATED,{id:t.getObjectId(),storeCode:K,name:t.getName(),path:t.getPath(),parentFolderId:o,contentType:G8})}),t},z=async(Y8,W8,J8)=>{return $.readFolder(Y8,W8,J8)},W=async(Y8,W8,J8,c8)=>{let{id:o,name:X8,parentId:t}=J8,G8=await $.updateFolder(Y8,W8,J8,c8),z8=G8.entity,k8=G8.oldValues.name,b8=G8.oldValues.parentId,Q8=await Y(Y8,W8,o);if(X8!==void 0&&X8!==k8)c8(()=>{q.notify(C6.FOLDER_RENAMED,{id:o,storeCode:K,parentFolderId:z8.getParentId(),contentType:Q8,oldName:k8,newName:X8,path:z8.getPath()})});if(t!==void 0&&t!==b8)c8(()=>{q.notify(C6.FOLDER_MOVED,{id:o,storeCode:K,contentType:Q8,oldParentFolderId:b8,parentFolderId:t,path:z8.getPath()})});return z8},Z=async(Y8,W8,J8,c8)=>{let{id:o}=J8,t=(await $.readFolder(Y8,W8,{id:o}))?.getParentId(),G8=await Y(Y8,W8,o),z8=await $.deleteFolder(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FOLDER_DELETED,{id:o,storeCode:K,parentFolderId:t,contentType:G8,path:z8.path,descendantCount:z8.descendantIds?.length||0})}),z8},H=async(Y8,W8,J8)=>{return $.listFolderContents(Y8,W8,J8)},O=async(Y8,W8,J8)=>{return $.getFolderByPath(Y8,W8,J8)},X=async(Y8,W8,J8,c8)=>{return $.findFolderByName(Y8,W8,J8,c8)},P=async(Y8,W8,J8)=>{return $.readRootFolderForType(Y8,W8,J8)},w=async(Y8,W8,J8,c8,o)=>{return $.isDuplicateNameInParent(Y8,W8,J8,c8,o)},T=async(Y8,W8,J8,c8)=>{let{type:o,parentId:X8}=J8,t=await $.createContent(Y8,W8,J8,c8),G8=o==="t"?C6.TEMPLATE_CREATED:C6.DOCUMENT_CREATED;return c8(()=>{q.notify(G8,{storeCode:K,id:t.getObjectId(),type:o,parentFolderId:X8,name:t.getName(),path:t.getPath()})}),t},G=async(Y8,W8,J8)=>{return $.readContent(Y8,W8,J8)},j=async(Y8,W8,J8,c8)=>{let{id:o,name:X8,parentId:t}=J8,G8=a6.getTypeFromId(o),z8=await $.readContent(Y8,W8,{id:o}),k8=z8?.getName(),b8=z8?.getParentId(),Q8=await $.updateContent(Y8,W8,J8,c8),l6=G8==="t"?C6.TEMPLATE_RENAMED:C6.DOCUMENT_RENAMED,D4=G8==="t"?C6.TEMPLATE_MOVED:C6.DOCUMENT_MOVED;if(X8!==void 0&&X8!==k8)c8(()=>{q.notify(l6,{storeCode:K,id:o,type:G8,parentFolderId:Q8.getParentId(),oldName:k8,newName:X8,path:Q8.getPath()})});if(t!==void 0&&t!==b8)c8(()=>{q.notify(D4,{storeCode:K,id:o,type:G8,oldParentFolderId:b8,parentFolderId:t,path:Q8.getPath()})});return Q8},v=async(Y8,W8,J8,c8)=>{return $.updateEntityType(Y8,W8,J8,c8)},M=async(Y8,W8,J8)=>{return $.deleteTypeScopedFieldValues(Y8,W8,J8)},f=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),G8=(await $.readContent(Y8,W8,{id:o}))?.getParentId(),z8=await $.deleteContent(Y8,W8,J8,c8),k8=X8==="t"?C6.TEMPLATE_DELETED:C6.DOCUMENT_DELETED;return c8(()=>{q.notify(k8,{storeCode:K,id:o,type:X8,parentFolderId:G8,path:z8.path})}),z8},k=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),G8=(await $.readContent(Y8,W8,{id:o}))?.getParentId(),z8=await $.saveDraft(Y8,W8,J8,c8),k8=X8==="t"?C6.TEMPLATE_DRAFT_SAVED:C6.DRAFT_SAVED;return c8(()=>{let b8=z8.lockLost!==void 0?z8.entity:z8;q.notify(k8,{storeCode:K,id:o,type:X8,parentFolderId:G8,updatedAt:b8?b8.getUpdatedAt():null,lockLost:z8.lockLost})}),z8},N=async(Y8,W8,J8)=>{return $.readDraft(Y8,W8,J8)},R=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),t=await $.publishContent(Y8,W8,J8,c8),G8=X8==="t"?C6.TEMPLATE_PUBLISHED:C6.DOCUMENT_PUBLISHED;return c8(()=>{q.notify(G8,{storeCode:K,id:o,type:X8,parentFolderId:t.getParentId(),versionNumber:t.getPublishedVersionNumber()})}),{entityId:o,versionNumber:t.getPublishedVersionNumber(),content:t.getPublishedContent(),publishedAt:t.getUpdatedAt()}},E=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=a6.getTypeFromId(o),t=await $.discardDraft(Y8,W8,J8,c8),G8=X8==="t"?C6.TEMPLATE_DRAFT_DISCARDED:C6.DRAFT_DISCARDED;return c8(()=>{q.notify(G8,{storeCode:K,id:o})}),t},C=async(Y8,W8,J8)=>{return $.readVersion(Y8,W8,J8)},g=async(Y8,W8,J8)=>{return $.getVersions(Y8,W8,J8)},S=async(Y8,W8,J8,c8,o)=>{return $.findContentByName(Y8,W8,J8,c8,o)},D=async(Y8,W8,J8)=>{return $.listContent(Y8,W8,J8)},L=async(Y8,W8,J8,c8)=>{let o=await $.setEditState(Y8,W8,J8,c8);if(o.success){let X8=a6.getTypeFromId(J8.id);c8(()=>{q.notify(C6.EDIT_STATE_ACQUIRED,{id:J8.id,type:X8,storeCode:K,sessionId:J8.sessionId})})}return o},m=async(Y8,W8,J8)=>{return $.getEditState(Y8,W8,J8)},c=async(Y8,W8,J8,c8)=>{await $.clearEditState(Y8,W8,J8,c8);let o=a6.getTypeFromId(J8.id);c8(()=>{q.notify(C6.EDIT_STATE_CLEARED,{id:J8.id,type:o,storeCode:K})})},e=async(Y8,W8,J8,c8)=>{return $.createFieldDefinition(Y8,W8,J8,c8)},_8=async(Y8,W8,J8)=>{return $.readFieldDefinition(Y8,W8,J8)},T8=async(Y8,W8,J8,c8)=>{return $.findFieldDefinitionByName(Y8,W8,J8,c8)},d8=async(Y8,W8,J8)=>{return $.getFieldDefinitionsForOwner(Y8,W8,J8)},H6=async(Y8,W8,J8)=>{return $.getFieldDefinitionsForEntityType(Y8,W8,J8)},D8=async(Y8,W8,J8)=>{return $.resolveEntityTypePk(Y8,W8,J8)},m8=async(Y8,W8)=>{return $.readDefaultFieldDefinition(Y8,W8)},a8=async(Y8,W8,J8)=>{return $.resolveFieldDefinition(Y8,W8,J8)},Z6=async(Y8,W8,J8,c8)=>{return $.deleteFieldDefinition(Y8,W8,J8,c8)},_6=async(Y8,W8,J8,c8)=>{return $.setFieldValue(Y8,W8,J8,c8)},u6=async(Y8,W8,J8,c8)=>{let{entityId:o,fieldName:X8}=J8,{typeCode:t}=a6.parseId(o),G8=await $.setFieldValue(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FIELD_ADDED,{entityType:t,entityId:o,fieldName:X8,value:J8.value??J8.values,storeCode:K})}),G8},y6=async(Y8,W8,J8,c8)=>{let{entityId:o,fieldName:X8,_oldValue:t}=J8,{typeCode:G8}=a6.parseId(o),z8=await $.setFieldValue(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FIELD_VALUE_CHANGED,{entityType:G8,entityId:o,fieldName:X8,oldValue:t,newValue:J8.value??J8.values,storeCode:K})}),z8},s6=async(Y8,W8,J8)=>{return $.getFieldValue(Y8,W8,J8)},L6=async(Y8,W8,J8,c8)=>{return $.deleteFieldValue(Y8,W8,J8,c8)},P8=async(Y8,W8,J8,c8)=>{let{entityId:o,fieldName:X8}=J8,{typeCode:t}=a6.parseId(o),G8=await $.deleteFieldValue(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.FIELD_REMOVED,{entityType:t,entityId:o,fieldName:X8,storeCode:K})}),G8},O8=async(Y8,W8,J8,c8)=>{let{parentId:o,state:X8="prep"}=J8,t=await $.createStory(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.STORY_CREATED,{id:t.getObjectId(),storeCode:K,name:t.getName(),path:t.getPath(),parentFolderId:o,state:X8})}),t},f8=async(Y8,W8,J8)=>{return $.readStory(Y8,W8,J8)},y8=async(Y8,W8,J8)=>{return $.listStories(Y8,W8,J8)},i8=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=await $.renameStory(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.STORY_RENAMED,{id:o,storeCode:K,name:X8.getName(),path:X8.getPath()})}),X8},o8=async(Y8,W8,J8,c8)=>{let{id:o}=J8,t=(await $.readStory(Y8,W8,{id:o}))?.getParentId()??null,G8=await $.deleteStory(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.STORY_DELETED,{id:o,storeCode:K,path:G8.path,parentFolderId:t,descendantCount:G8.descendantCount})}),G8},z6=async(Y8,W8,J8)=>{return $.readStoryRootFolder(Y8,W8,J8)},h8=async(Y8,W8,J8)=>{return $.findEntitiesByFieldValue(Y8,W8,J8)},p8=async(Y8,W8,J8,c8)=>{let{parentId:o,status:X8="pending"}=J8,t=await $.createJob(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.JOB_CREATED,{id:t.getObjectId(),storeCode:K,name:t.getName(),path:t.getPath(),parentFolderId:o,status:X8})}),t},s8=async(Y8,W8,J8)=>{return $.readJob(Y8,W8,J8)},q6=async(Y8,W8,J8)=>{return $.listJobs(Y8,W8,J8)},X6=async(Y8,W8,J8,c8)=>{let{id:o}=J8,t=(await $.readJob(Y8,W8,{id:o}))?.getParentId()??null,G8=await $.deleteJob(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.JOB_DELETED,{id:o,storeCode:K,path:G8.path,parentFolderId:t,descendantCount:G8.descendantCount})}),G8},f6=async(Y8,W8,J8)=>{return $.readJobRootFolder(Y8,W8,J8)},M8=async(Y8,W8,J8,c8)=>{let o=await $.createAsset(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.ASSET_CREATED,{id:o.getObjectId(),storeCode:K,hash:o.getHash(),mimeType:o.getMimeType(),originalFilename:o.getOriginalFilename()})}),o},x8=async(Y8,W8,J8)=>{return $.readAsset(Y8,W8,J8)},B8=async(Y8,W8,J8)=>{return $.listAssets(Y8,W8,J8)},F8=async(Y8,W8,J8,c8)=>{let{id:o}=J8,X8=await $.deleteAsset(Y8,W8,J8,c8);return c8(()=>{q.notify(C6.ASSET_DELETED,{id:o,storeCode:K,hash:X8.hash})}),X8};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:J,readFolder:z,updateFolder:W,deleteFolder:Z,listFolderContents:H,getFolderByPath:O,findFolderByName:X,readRootFolderForType:P,isDuplicateNameInParent:w,createContent:T,readContent:G,updateContent:j,updateEntityType:v,deleteTypeScopedFieldValues:M,deleteContent:f,saveDraft:k,readDraft:N,publishContent:R,discardDraft:E,readVersion:C,getVersions:g,findContentByName:S,listContent:D,setEditState:L,getEditState:m,clearEditState:c,createFieldDefinition:e,readFieldDefinition:_8,findFieldDefinitionByName:T8,getFieldDefinitionsForOwner:d8,getFieldDefinitionsForEntityType:H6,resolveEntityTypePk:D8,readDefaultFieldDefinition:m8,resolveFieldDefinition:a8,deleteFieldDefinition:Z6,setFieldValue:_6,addFieldToEntity:u6,updateFieldValue:y6,getFieldValue:s6,deleteFieldValue:L6,removeFieldFromEntity:P8,createStory:O8,renameStory:i8,readStory:f8,listStories:y8,deleteStory:o8,readStoryRootFolder:z6,createJob:p8,readJob:s8,listJobs:q6,deleteJob:X6,readJobRootFolder:f6,findEntitiesByFieldValue:h8,createAsset:M8,readAsset:x8,listAssets:B8,deleteAsset:F8,evictFolder:$.evictFolder,evictContent:$.evictContent,evictStory:$.evictStory,evictJob:$.evictJob,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},EP8=Object.freeze({create:M_6});var __6=($)=>{let{id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W}=$,Z=pz.create(),H=pz.create(),O=pz.create(),X=pz.create(),P=pz.create(),w=pz.create(),{store:T,mutationApi:G}=DP8.create({id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W,folderCache:Z}),j=hP8.create({inner:T,folderCache:Z,contentCache:H,fieldDefinitionCache:O,storyCache:X,jobCache:P,assetCache:w});return{store:EP8.create({inner:j,storeCode:q}),mutationApi:G}},SP8=Object.freeze({create:__6});Z4();var k_6=({id:$,name:K,createdAt:q,updatedAt:Y,children:J=[]})=>{let z=[...J],W=new Map,{entityFns:Z,mutationFns:H}=c3.create({id:$,name:K,createdAt:q,updatedAt:Y}),O=()=>{W.clear();for(let N8 of z){let C8=N8.getCodes();for(let $8 of C8)W.set($8,N8)}};O();let X=()=>"demux",P=()=>z.map((N8)=>N8.getObjectId()),w=()=>[...z],T=()=>{return new Set(W.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:P()}),j=(N8)=>{z.push(N8),O()},v=(N8)=>{return W.get(N8)??null},M=async(N8,C8,{store:$8,storeCode:S8,parentId:L8,name:u8,subtype:M6},x)=>{let w8=$8??S8;y.factory(!w8,I.validation,"store parameter is required","MISSING_STORE_CODE");let u=v(w8);return y.factory(!u,I.notFound,`No child store with code: ${w8}`,"STORE_NOT_FOUND"),u.createFolder(N8,C8,{storeCode:w8,parentId:L8,name:u8,subtype:M6},x)},f=async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readFolder(N8,C8,{id:$8})},f$=Object.freeze({...Z,getType:X,getCodes:T,getChildIds:P,getChildren:w,toJSON:G,createFolder:M,readFolder:f,updateFolder:async(N8,C8,{id:$8,name:S8,parentId:L8},u8)=>{let M6=$8?.[0],x=v(M6);return y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND"),x.updateFolder(N8,C8,{id:$8,name:S8,parentId:L8},u8)},deleteFolder:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteFolder(N8,C8,{id:$8},S8)},evictFolder:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictFolder(N8)},evictContent:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictContent(N8)},evictStory:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictStory(N8)},evictJob:(N8)=>{let C8=N8?.[0],$8=v(C8);if($8)$8.evictJob(N8)},getFolder:async(N8,C8,{id:$8})=>{return f(N8,C8,{id:$8})},listFolderContents:async(N8,C8,{folderId:$8,store:S8,storeCode:L8,type:u8})=>{let M6;if($8!==null&&$8!==void 0)M6=$8[0];else{let u=S8??L8;y.factory(!u,I.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),M6=u}let x=v(M6);y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND");let w8={...C8,storeCode:M6};return x.listFolderContents(N8,w8,{folderId:$8,type:u8})},getFolderByPath:async(N8,C8,{path:$8,type:S8,store:L8,storeCode:u8})=>{let M6=L8??u8;y.factory(!M6,I.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let x=v(M6);if(!x)return null;let w8={...C8,storeCode:M6};return x.getFolderByPath(N8,w8,{path:$8,type:S8})},isDuplicateNameInParent:async(N8,C8,$8,S8,L8=null)=>{let u8;if($8)u8=$8[0];else{let x=z[0];if(!x)y.factory(!0,I.notFound,"No child stores available","STORE_NOT_FOUND");u8=[...x.getCodes()][0]}let M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.isDuplicateNameInParent(N8,C8,$8,S8,L8)},findFolderByName:async(N8,C8,$8,S8)=>{let L8=$8[0],u8=v(L8);if(!u8)return null;return u8.findFolderByName(N8,C8,$8,S8)},readRootFolderForType:async(N8,C8,$8,S8)=>{let L8=v(S8);return y.factory(!L8,I.notFound,`No child store with code: ${S8}`,"STORE_NOT_FOUND"),L8.readRootFolderForType(N8,C8,$8,S8)},createFieldDefinition:async(N8,C8,{storeCode:$8,ownerEntityId:S8,ownerEntityTypePk:L8,name:u8,label:M6,description:x,primitiveType:w8,required:u,multiplicity:s,isSystem:Q,allowedValues:a},n)=>{let d=v($8);return y.factory(!d,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),d.createFieldDefinition(N8,C8,{storeCode:$8,ownerEntityId:S8,ownerEntityTypePk:L8,name:u8,label:M6,description:x,primitiveType:w8,required:u,multiplicity:s,isSystem:Q,allowedValues:a},n)},readFieldDefinition:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readFieldDefinition(N8,C8,{id:$8})},readDefaultFieldDefinition:async(N8,C8,$8)=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.readDefaultFieldDefinition(N8,C8)},getFieldDefinitionsForOwner:async(N8,C8,{storeCode:$8,ownerEntityPk:S8,includeSystem:L8})=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.getFieldDefinitionsForOwner(N8,C8,{ownerEntityPk:S8,includeSystem:L8})},getFieldDefinitionsForEntityType:async(N8,C8,{storeCode:$8,code:S8,subtype:L8})=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.getFieldDefinitionsForEntityType(N8,C8,{code:S8,subtype:L8})},resolveEntityTypePk:async(N8,C8,{storeCode:$8,code:S8,subtype:L8})=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.resolveEntityTypePk(N8,C8,{code:S8,subtype:L8})},resolveFieldDefinition:async(N8,C8,{storeCode:$8,fieldDefinitionId:S8,fieldName:L8,ownerEntityPk:u8,entityTypePk:M6})=>{let x=v($8);return y.factory(!x,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),x.resolveFieldDefinition(N8,C8,{fieldDefinitionId:S8,fieldName:L8,ownerEntityPk:u8,entityTypePk:M6})},deleteFieldDefinition:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteFieldDefinition(N8,C8,{id:$8},S8)},setFieldValue:async(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8,value:u8,values:M6},x)=>{let w8=$8?.[0],u=v(w8);return y.factory(!u,I.notFound,`No child store with code: ${w8}`,"STORE_NOT_FOUND"),u.setFieldValue(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8,value:u8,values:M6},x)},deleteFieldValue:async(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8},u8)=>{let M6=$8?.[0],x=v(M6);return y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND"),x.deleteFieldValue(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8},u8)},getFieldValue:async(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8})=>{let u8=$8?.[0],M6=v(u8);if(!M6)return null;return M6.getFieldValue(N8,C8,{entityId:$8,fieldDefinitionId:S8,fieldName:L8})},addFieldToEntity:async(N8,C8,$8,S8)=>{let L8=$8.entityId?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.addFieldToEntity(N8,C8,$8,S8)},updateFieldValue:async(N8,C8,$8,S8)=>{let L8=$8.entityId?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.updateFieldValue(N8,C8,$8,S8)},removeFieldFromEntity:async(N8,C8,$8,S8)=>{let L8=$8.entityId?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.removeFieldFromEntity(N8,C8,$8,S8)},createContent:async(N8,C8,{storeCode:$8,type:S8,...L8},u8)=>{let M6=v($8);return y.factory(!M6,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),M6.createContent(N8,C8,{type:S8,storeCode:$8,...L8},u8)},readContent:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readContent(N8,C8,{id:$8})},updateContent:async(N8,C8,{id:$8,...S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.updateContent(N8,C8,{id:$8,...S8},L8)},updateEntityType:async(N8,C8,{id:$8,subtype:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.updateEntityType(N8,C8,{id:$8,subtype:S8},L8)},deleteTypeScopedFieldValues:async(N8,C8,{entityId:$8,entityTypePk:S8})=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteTypeScopedFieldValues(N8,C8,{entityId:$8,entityTypePk:S8})},deleteContent:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteContent(N8,C8,{id:$8},S8)},saveDraft:async(N8,C8,{id:$8,content:S8,sessionId:L8},u8)=>{let M6=$8?.[0],x=v(M6);return y.factory(!x,I.notFound,`No child store with code: ${M6}`,"STORE_NOT_FOUND"),x.saveDraft(N8,C8,{id:$8,content:S8,sessionId:L8},u8)},readDraft:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readDraft(N8,C8,{id:$8})},publishContent:async(N8,C8,{id:$8,sessionId:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.publishContent(N8,C8,{id:$8,sessionId:S8},L8)},discardDraft:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.discardDraft(N8,C8,{id:$8},S8)},findContentByName:async(N8,C8,$8,S8,L8)=>{let u8=$8?.[0],M6=v(u8);if(!M6)return null;return M6.findContentByName(N8,C8,$8,S8,L8)},listContent:async(N8,C8,{parentId:$8,storeCode:S8,type:L8})=>{let u8,M6;if($8)u8=$8[0],M6=$8;else{y.factory(!S8,I.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),u8=S8;let w8=v(u8);y.factory(!w8,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND");try{M6=(await w8.readRootFolderForType(N8,C8,L8||"d",u8)).getObjectId()}catch(u){M6=null}}let x=v(u8);return y.factory(!x,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),x.listContent(N8,C8,{parentId:M6,type:L8})},setEditState:async(N8,C8,{id:$8,sessionId:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.setEditState(N8,C8,{id:$8,sessionId:S8},L8)},clearEditState:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.clearEditState(N8,C8,{id:$8},S8)},getEditState:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.getEditState(N8,C8,{id:$8})},readVersion:async(N8,C8,{id:$8,versionNumber:S8})=>{let L8=$8?.[0],u8=v(L8);if(!u8)return null;return u8.readVersion(N8,C8,{id:$8,versionNumber:S8})},getVersions:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return[];return L8.getVersions(N8,C8,{id:$8})},createStory:async(N8,C8,{storeCode:$8,...S8},L8)=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.createStory(N8,C8,{storeCode:$8,...S8},L8)},renameStory:async(N8,C8,{id:$8,name:S8},L8)=>{let u8=$8?.[0],M6=v(u8);return y.factory(!M6,I.notFound,`No child store with code: ${u8}`,"STORE_NOT_FOUND"),M6.renameStory(N8,C8,{id:$8,name:S8},L8)},readStory:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readStory(N8,C8,{id:$8})},listStories:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.listStories(N8,C8,{storeCode:$8})},deleteStory:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteStory(N8,C8,{id:$8},S8)},readStoryRootFolder:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.readStoryRootFolder(N8,C8,{storeCode:$8})},createJob:async(N8,C8,{storeCode:$8,...S8},L8)=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.createJob(N8,C8,{storeCode:$8,...S8},L8)},readJob:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readJob(N8,C8,{id:$8})},listJobs:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.listJobs(N8,C8,{storeCode:$8})},deleteJob:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteJob(N8,C8,{id:$8},S8)},readJobRootFolder:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.readJobRootFolder(N8,C8,{storeCode:$8})},findEntitiesByFieldValue:async(N8,C8,{storeCode:$8,typeCode:S8,subtype:L8,fieldName:u8,fieldValue:M6})=>{let x=v($8);return y.factory(!x,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),x.findEntitiesByFieldValue(N8,C8,{typeCode:S8,subtype:L8,fieldName:u8,fieldValue:M6})},createAsset:async(N8,C8,{storeCode:$8,...S8},L8)=>{let u8=v($8);return y.factory(!u8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),u8.createAsset(N8,C8,{storeCode:$8,...S8},L8)},readAsset:async(N8,C8,{id:$8})=>{let S8=$8?.[0],L8=v(S8);if(!L8)return null;return L8.readAsset(N8,C8,{id:$8})},listAssets:async(N8,C8,{storeCode:$8})=>{let S8=v($8);return y.factory(!S8,I.notFound,`No child store with code: ${$8}`,"STORE_NOT_FOUND"),S8.listAssets(N8,C8,{storeCode:$8})},deleteAsset:async(N8,C8,{id:$8},S8)=>{let L8=$8?.[0],u8=v(L8);return y.factory(!u8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),u8.deleteAsset(N8,C8,{id:$8},S8)},subscribe:(N8,C8)=>{let $8=z.map((S8)=>S8.subscribe(N8,C8));return()=>$8.forEach((S8)=>S8())},subscribeAll:(N8)=>{let C8=z.map(($8)=>$8.subscribeAll(N8));return()=>C8.forEach(($8)=>$8())}}),X5=Object.freeze({...H,addChild:j});return{store:f$,mutationApi:X5}},LP8=Object.freeze({create:k_6});Yk();Z4();var nG=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},ju=($)=>$.object_id,Gu=($)=>{let K=ju($),q=$.id,{store:Y,mutationApi:J}=SP8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:J,id:K,pk:q}},IP8=($,K)=>{let q=ju($),Y=$.id,{store:J,mutationApi:z}=LP8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:J,mutationApi:z,id:q,pk:Y}},f_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=c6();for(let W of FT){let Z=await E1.nextSeq($,"store",q,"n"),H=`${Y}n${Z}`;await $.insertInto("field_definitions").values({store_id:q,object_id:H,entity_type_id:J,type_code:"n",seq:Z,owner_entity_id:null,name:W.name,label:W.label,description:W.description,primitive_type:W.primitiveType||"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:z,updated_at:z}).execute()}},N_6=async($,K,q,Y,J)=>{let z=await o6.readEntityTypeId($,K,"n",null),W=await E1.nextSeq($,"store",q,"n"),Z=`${Y}n${W}`,H=c6();await $.insertInto("field_definitions").values({store_id:q,object_id:Z,entity_type_id:z,type_code:"n",seq:W,owner_entity_id:null,name:"default",label:"Default Field",description:"Auto-created for ad-hoc fields without explicit definitions",primitive_type:"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:H,updated_at:H}).execute()},R_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=await o6.readEntityTypeId($,K,"d",null),W=await o6.readEntityTypeId($,K,"t",null),Z=c6(),H=[{name:"draft_version",label:"Draft Version",description:"Points to current draft version entity"},{name:"latest_published_version",label:"Latest Published Version",description:"Points to most recent published version entity"}];for(let O of[z,W])for(let X of H){let P=await E1.nextSeq($,"store",q,"n"),w=`${Y}n${P}`;await $.insertInto("field_definitions").values({store_id:q,object_id:w,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,owner_entity_type_id:O,name:X.name,label:X.label,description:X.description,primitive_type:"object_ref",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:Z,updated_at:Z}).execute()}},C_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=await o6.readEntityTypeId($,K,"d",null),W=await o6.readEntityTypeId($,K,"t",null),Z=c6(),H=[{name:"edit_session_id",label:"Edit Session ID",description:"UUID of the editing session",primitiveType:"string"},{name:"edit_started_at",label:"Edit Started At",description:"ISO 8601 timestamp when edit lock was acquired",primitiveType:"date"},{name:"edit_last_activity_at",label:"Edit Last Activity At",description:"ISO 8601 timestamp of last activity",primitiveType:"date"}];for(let O of[z,W])for(let X of H){let P=await E1.nextSeq($,"store",q,"n"),w=`${Y}n${P}`;await $.insertInto("field_definitions").values({store_id:q,object_id:w,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,owner_entity_type_id:O,name:X.name,label:X.label,description:X.description,primitive_type:X.primitiveType,required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:Z,updated_at:Z}).execute()}},D_6=async($,K,q,Y)=>{let J=await o6.readEntityTypeId($,K,"n",null),z=await o6.readEntityTypeId($,K,"v",null),W=c6(),Z=[{name:"document",label:"Document",description:"Parent document or template entity",primitiveType:"object_ref",required:1},{name:"version_number",label:"Version Number",description:"Version number (1, 2, 3...)",primitiveType:"int",required:1},{name:"published_at",label:"Published At",description:"ISO 8601 timestamp when published (null = draft)",primitiveType:"date",required:0}];for(let H of Z){let O=await E1.nextSeq($,"store",q,"n"),X=`${Y}n${O}`;await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:J,type_code:"n",seq:O,owner_entity_id:null,owner_entity_type_id:z,name:H.name,label:H.label,description:H.description,primitive_type:H.primitiveType,required:H.required,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:W,updated_at:W}).execute()}},h_6=()=>{let $=new Map,K=new Map,q=new Set,Y=async(w,T,G,j)=>{if(q.has(j))return;let v=await w.selectFrom("field_definitions").select("name").where("store_id","=",T).where("is_system","=",1).where("owner_entity_id","is",null).execute(),M=new Set(v.map((k)=>k.name)),f=FT.filter((k)=>!M.has(k.name)).map((k)=>k.name);if(f.length>0)throw I.validation(`Store ${G} is missing job field definitions: ${f.join(", ")}. Database may be corrupted.`,"MISSING_FIELD_DEFINITIONS");q.add(j)},J=async(w,T,{code:G,name:j},v)=>{let M=c6(),f=await E1.nextSeq(w,"global",null,"s"),k=`S${f}`,N=await w.insertInto("stores").values({id:f,object_id:k,type:"local",code:G,name:j,created_at:M,updated_at:M}).returningAll().executeTakeFirstOrThrow(),{store:R,mutationApi:E,id:C,pk:g}=Gu(N);return await N_6(w,T,g,G,v),await f_6(w,T,g,G),await R_6(w,T,g,G),await C_6(w,T,g,G),await D_6(w,T,g,G),v(()=>{$.set(C,d6.create(R,E,g)),K.set(g,C)}),R},z=async(w,T,{name:G},j)=>{let v=c6(),M=await E1.nextSeq(w,"global",null,"s"),f=`S${M}`,k=await w.insertInto("stores").values({id:M,object_id:f,type:"demux",code:null,name:G,created_at:v,updated_at:v}).returningAll().executeTakeFirstOrThrow(),{store:N,mutationApi:R,id:E,pk:C}=IP8(k,[]);return j(()=>{$.set(E,d6.create(N,R,C)),K.set(C,E)}),N},W=async(w,T,G)=>{let j=$.get(G);if(j)return j.getEntity();let v=nG(G);if(v===null)return null;let M=await w.selectFrom("stores").selectAll().where("id","=",v).executeTakeFirst();if(!M)return null;let f,k,N,R;if(M.type==="local"){let E=Gu(M);f=E.store,k=E.mutationApi,N=E.id,R=E.pk,await Y(w,R,M.code,N)}else{let E=await w.selectFrom("store_children").innerJoin("stores","stores.id","store_children.child_store_id").select(["stores.object_id"]).where("store_children.parent_store_id","=",M.id).execute(),C=[];for(let S of E){let D=await W(w,T,S.object_id);if(D)C.push(D)}let g=IP8(M,C);f=g.store,k=g.mutationApi,N=g.id,R=g.pk}return $.set(N,d6.create(f,k,R)),K.set(R,N),f};return Object.freeze({createLocalStore:J,createDemuxStore:z,readStore:W,readSharedStore:async(w,T)=>{let G=await w.selectFrom("stores").selectAll().where("code","=","B").executeTakeFirstOrThrow(),j=ju(G),v=$.get(j);if(v)return v.getEntity();let{store:M,mutationApi:f,pk:k}=Gu(G);return $.set(j,d6.create(M,f,k)),K.set(k,j),M},readRootStoreForProject:async(w,T,G)=>{let j=G&&G.length>=2&&G[0]==="P"?parseInt(G.slice(1),10):null;y.factory(j===null||isNaN(j),I.validation,`Invalid project ID: ${G}`,"INVALID_PROJECT_ID");let v=await w.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id"]).where("project_stores.project_id","=",j).where("project_stores.is_root","=",1).executeTakeFirst();return y.factory(!v,I.notFound,`Root store not found for project: ${G}`,"ROOT_STORE_NOT_FOUND"),await W(w,T,v.object_id)},addChildToDemux:async(w,T,{demuxId:G,childId:j},v)=>{let M=$.get(G),f=$.get(j),k,N;if(M)k=M.getPk();else{let R=nG(G);y.factory(R===null,I.validation,`Invalid demux store ID: ${G}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",R).executeTakeFirst();y.factory(!E,I.notFound,`Demux store not found: ${G}`,"STORE_NOT_FOUND"),k=E.id}if(f)N=f.getPk();else{let R=nG(j);y.factory(R===null,I.validation,`Invalid child store ID: ${j}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",R).executeTakeFirst();y.factory(!E,I.notFound,`Child store not found: ${j}`,"STORE_NOT_FOUND"),N=E.id}await w.insertInto("store_children").values({parent_store_id:k,child_store_id:N}).execute(),v(()=>{let R=$.get(G),E=$.get(j);if(R&&E)R.getMutationApi().addChild(E.getEntity())})},addStoresToProject:async(w,T,{projectId:G,rootStoreId:j,storeIds:v})=>{let M=G&&G.length>=2&&G[0]==="P"?parseInt(G.slice(1),10):null;y.factory(M===null||isNaN(M),I.validation,`Invalid project ID: ${G}`,"INVALID_PROJECT_ID");let f=await w.selectFrom("projects").select("id").where("id","=",M).executeTakeFirst();y.factory(!f,I.notFound,`Project not found: ${G}`,"PROJECT_NOT_FOUND");let k=f.id,N=$.get(j),R;if(N)R=N.getPk();else{let E=nG(j);y.factory(E===null,I.validation,`Invalid root store ID: ${j}`,"INVALID_ID");let C=await w.selectFrom("stores").select("id").where("id","=",E).executeTakeFirst();y.factory(!C,I.notFound,`Root store not found: ${j}`,"STORE_NOT_FOUND"),R=C.id}for(let E of v){let C=$.get(E),g;if(C)g=C.getPk();else{let S=nG(E);y.factory(S===null,I.validation,`Invalid store ID: ${E}`,"INVALID_ID");let D=await w.selectFrom("stores").select("id").where("id","=",S).executeTakeFirst();y.factory(!D,I.notFound,`Store not found: ${E}`,"STORE_NOT_FOUND"),g=D.id}await w.insertInto("project_stores").values({project_id:k,store_id:g,is_root:g===R?1:0}).execute()}},evictStore:(w)=>{let T=$.get(w);if(T)K.delete(T.getPk());$.delete(w)}})},xP8=Object.freeze({create:h_6});Z4();Z4();var E_6=($)=>{let K=$.split("/").filter((J)=>J.trim()),q=K[K.length-1];return{parentPath:K.slice(0,-1).join("/")||null,name:q,segments:K}},S_6=($)=>{return $[0]},w1=Object.freeze({parsePath:E_6,extractStoreCode:S_6});Z4();var L_6=["Documents/",/^Stories\/[^/]+\//],I_6=["Templates/"],x_6=["Documents/","Templates/",/^Stories\/[^/]+\//],g_6=($)=>{y.factory(!$||$.length===0,I.validation,"Path cannot be empty","EMPTY_PATH"),y.factory($.startsWith("/"),I.validation,"No leading slash allowed","INVALID_PATH"),y.factory($.endsWith("/"),I.validation,"No trailing slash allowed","INVALID_PATH"),y.factory($.includes("//"),I.validation,"No consecutive slashes allowed","INVALID_PATH")},b_6=($)=>{y.factory(!$||$.trim().length===0,I.validation,"Name cannot be empty","INVALID_NAME"),y.factory($.includes("/"),I.validation,"Name cannot contain /","INVALID_NAME"),y.factory($!==$.trim(),I.validation,"Name cannot have leading/trailing whitespace","INVALID_NAME")},y_6=async($,K,q,Y,J)=>{let z=q;while(z){let W=z.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==="tasks"&&Y.includes("tasks"))return;let Z=z.getParentId();if(!Z)break;z=await J.readFolder($,K,{id:Z})}throw I.validation(`Cannot create entity in this location. Allowed roots: ${Y.join(", ")}`,"INVALID_ROOT")},u_6=async($,K,q,Y)=>{let J=q;while(J){if(J.getSubtype()==="tasks")return!0;let z=J.getParentId();if(!z)break;J=await Y.readFolder($,K,{id:z})}return!1},m_6=($,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}},B_6=async($,K,q,Y)=>{let J=new Set,z=q;while(z){if(J.has(z))throw I.validation(`Cycle detected in parent chain for entity ${q}`,"CYCLE_DETECTED");J.add(z);let W=a6.parseId(z);if(!W)throw I.notFound(`Invalid entity ID format: ${z}`,"NOT_FOUND");let{typeCode:Z}=W,H,O=null;if(Z==="f"){if(H=await Y.readFolder($,K,{id:z}),!H)throw I.notFound(`Folder not found: ${z}`,"NOT_FOUND");if(O=H.getSubtype(),O==="root_d"||O==="root_t"||O==="root_s"||O==="tasks")return{id:z,type:Z,subtype:O};z=H.getParentId()}else if(Z==="s"){if(H=await Y.readStory($,K,{id:z}),!H)throw I.notFound(`Story not found: ${z}`,"NOT_FOUND");return{id:z,type:Z,subtype:null}}else if(Z==="d"||Z==="t"){if(H=await Y.readContent($,K,{id:z}),!H)throw I.notFound(`Content not found: ${z}`,"NOT_FOUND");z=H.getParentId()}else throw I.validation(`Unsupported entity type code: ${Z}`,"INVALID_TYPE")}throw I.validation(`No root found for entity ${q}`,"NO_ROOT_FOUND")},G4=Object.freeze({DOCUMENT_PREFIXES:L_6,TEMPLATE_PREFIXES:I_6,FOLDER_PREFIXES:x_6,validatePathFormat:g_6,validateName:b_6,validateRootInAllowedTree:y_6,isInsideTasksFolder:u_6,detectFullPathPrefix:m_6,getRootForEntity:B_6});var U_6=({store:$})=>{let K=async(w,T,G,j,v,M,f,k=!0,N=null)=>{let R=G.split("/").filter((D)=>D.trim());y.factory(R.length===0,I.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let E=R.slice(0,-1).join("/");if(E){let D=await $.getFolderByPath(w,T,{path:E,type:j,storeCode:v});if(D){let L=Q3.validateFolderName(R[R.length-1]);return{parentObjectId:D.getObjectId(),name:L}}}let C=M??j,g;if(N)g=await $.readFolder(w,T,{id:N}),y.factory(!g,I.notFound,`Starting folder not found: ${N}`,"FOLDER_NOT_FOUND");else g=await $.readRootFolderForType(w,T,C,v);for(let D=0;D<R.length-1;D++){let L=Q3.validateFolderName(R[D]),m=await $.findFolderByName(w,T,g.getObjectId(),L);if(m)g=m;else{if(!k)throw I.notFound(`Folder not found: "${L}"`,"FOLDER_NOT_FOUND");g=await $.createFolder(w,T,{storeCode:v,parentId:g.getObjectId(),name:L},f)}}let S=Q3.validateFolderName(R[R.length-1]);return{parentObjectId:g.getObjectId(),name:S}},q=async(w,T,G,j)=>{let{path:v,store:M}=G,f=["d","t","s"],k=G4.FOLDER_PREFIXES;G4.validatePathFormat(v);let N=G4.detectFullPathPrefix(v,k);y.factory(!N.valid,I.validation,`Path must start with one of: ${k.map((e)=>typeof e==="string"?e:e.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let R=v.slice(N.prefix.length);y.factory(!R||R.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let E,C,g=null;if(N.prefix==="Documents/")E="d",C="d";else if(N.prefix==="Templates/")E="t",C="t";else if(N.prefix.startsWith("Stories/")){E="s",C="d";let e=N.prefix.slice(8,-1),T8=(await $.listStories(w,T,{storeCode:M})).find((d8)=>d8.getName()===e);if(!T8)throw I.notFound(`Story not found: ${e}`,"STORY_NOT_FOUND");g=T8.getObjectId()}let{parentPath:S,name:D}=w1.parsePath(R),L;if(S){let e=await K(w,T,S,C,M,E,j,!0,g),_8=await $.findFolderByName(w,T,e.parentObjectId,e.name);if(_8)L=_8.getObjectId();else L=(await $.createFolder(w,T,{storeCode:M,parentId:e.parentObjectId,name:e.name},j)).getObjectId()}else if(g)L=g;else L=(await $.readRootFolderForType(w,T,E,M)).getObjectId();if(E==="s"){let e=await $.readFolder(w,T,{id:L});y.factory(!e,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(w,T,e,f,$)}let m=Q3.validateFolderName(D),c=await $.isDuplicateNameInParent(w,T,L,m);return y.factory(c,I.conflict,`Folder "${m}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:M,parentId:L,name:m},j)},Y=async(w,T,G,j)=>{let{root:v,path:M}=G,f=["d","t","s"],k=w1.extractStoreCode(v);G4.validatePathFormat(M);let N=await $.readFolder(w,T,{id:v});y.factory(!N,I.notFound,`Root folder not found: ${v}`,"FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(w,T,N,f,$);let{parentPath:R,name:E}=w1.parsePath(M),C;if(R){let D=R.split("/").filter((m)=>m.trim()),L=N;for(let m of D){let c=Q3.validateFolderName(m),e=await $.findFolderByName(w,T,L.getObjectId(),c);if(e)L=e;else L=await $.createFolder(w,T,{storeCode:k,parentId:L.getObjectId(),name:c},j)}C=L.getObjectId()}else C=v;let g=Q3.validateFolderName(E),S=await $.isDuplicateNameInParent(w,T,C,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:C,name:g},j)},J=async(w,T,G,j)=>{let{parentId:v,name:M}=G,f=["d","t","s"],k=w1.extractStoreCode(v);G4.validateName(M);let N=await $.readFolder(w,T,{id:v});y.factory(!N,I.notFound,`Parent folder not found: ${v}`,"FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(w,T,N,f,$);let R=Q3.validateFolderName(M),E=await $.isDuplicateNameInParent(w,T,v,R);return y.factory(E,I.conflict,`Folder "${R}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:v,name:R},j)},z=async(w,T,G,j)=>{let{mode:v,path:M,root:f,parentId:k,name:N,store:R,type:E}=G;if(y.factory(G.subtype==="tasks",I.validation,"Tasks folders are system-managed and cannot be created manually","RESERVED_SUBTYPE"),v==="fullPath")return y.factory(!R,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await q(w,T,{path:M,store:R},j);if(v==="rootRelative")return y.factory(!f,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),await Y(w,T,{root:f,path:M},j);if(v==="parentName")return y.factory(!k,I.validation,"parentId is required for parentName mode","MISSING_PARENT_ID"),y.factory(!N,I.validation,"name is required for parentName mode","MISSING_NAME"),await J(w,T,{parentId:k,name:N},j);if(E!==void 0){y.factory(!M||M==="/",I.validation,"Path cannot be empty","EMPTY_PATH"),y.factory(E!=="d"&&E!=="t",I.validation,'Type must be "d" or "t"',"INVALID_TYPE"),y.factory(!R,I.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:C,name:g}=await K(w,T,M,E,R,void 0,j),S=await $.isDuplicateNameInParent(w,T,C,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:R,parentId:C,name:g},j)}throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS")},W=async(w,T,{id:G})=>{return await $.readFolder(w,T,{id:G})};return Object.freeze({resolvePath:K,createFolder:z,readFolder:W,renameFolder:async(w,T,{id:G,name:j},v)=>{let M=await W(w,T,{id:G});y.factory(!M,I.notFound,`Folder not found: ${G}`,"FOLDER_NOT_FOUND"),y.factory(Q3.isRootFolder(M),I.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let f=Q3.validateFolderName(j),k=await $.isDuplicateNameInParent(w,T,M.getParentId(),f,G);return y.factory(k,I.conflict,`Folder "${f}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(w,T,{id:G,name:f},v)},moveFolder:async(w,T,{id:G,parentId:j},v)=>{let M=await W(w,T,{id:G});y.factory(!M,I.notFound,`Folder not found: ${G}`,"FOLDER_NOT_FOUND"),y.factory(Q3.isRootFolder(M),I.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let f=await W(w,T,{id:j});y.factory(!f,I.notFound,`Parent folder not found: ${j}`,"PARENT_NOT_FOUND"),y.factory(!G||G.length<1,I.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),y.factory(!j||j.length<1,I.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let k=G[0],N=j[0];y.factory(k!==N,I.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),y.factory(G===j,I.validation,"Cannot move folder into itself","SELF_MOVE");let R=j;while(R!==null){y.factory(R===G,I.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let C=await $.readFolder(w,T,{id:R});if(!C)break;R=C.getParentId()}let E=await $.isDuplicateNameInParent(w,T,j,M.getName(),G);return y.factory(E,I.conflict,`Folder "${M.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(w,T,{id:G,parentId:j},v)},deleteFolder:async(w,T,{id:G},j)=>{let v=await W(w,T,{id:G});return y.factory(!v,I.notFound,`Folder not found: ${G}`,"FOLDER_NOT_FOUND"),y.factory(Q3.isRootFolder(v),I.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(w,T,{id:G},j)},getFolderByPath:async(w,T,{path:G,type:j,storeCode:v})=>{return await $.getFolderByPath(w,T,{path:G,type:j,storeCode:v})},listFolderContents:async(w,T,{folderId:G,type:j,storeCode:v})=>{return await $.listFolderContents(w,T,{folderId:G,type:j,storeCode:v})}})},gP8=Object.freeze({create:U_6});Z4();var bP8=Object.freeze(["string","object_ref","int","text","date","float"]),p_6=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/,F_6=($,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(!p_6.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: ${$}`}}},c_6=({store:$})=>{let K=["fieldAdded","fieldValueChanged","fieldRemoved"],{notify:q,subscribe:Y,subscribeAll:J}=bJ.create(K),z=async(G,j,{store:v,ownerEntityId:M,ownerEntityTypeCode:f,ownerEntityTypeSubtype:k,name:N,label:R,description:E,primitiveType:C,required:g,multiplicity:S,isSystem:D=!1,allowedValues:L},m)=>{y.factory(!v,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(M&&f,I.validation,"Cannot specify both ownerEntityId and ownerEntityTypeCode","INVALID_FIELD_DEFINITION_SCOPE"),y.factory(!bP8.includes(C),I.validation,`Invalid primitiveType: ${C}. Must be one of: ${bP8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(S!=="single"&&S!=="multi",I.validation,`Invalid multiplicity: ${S}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let c=/^[a-zA-Z0-9_]+$/;y.factory(!N||!c.test(N),I.validation,`Invalid name: ${N}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME");let e=null;if(f)e=await $.resolveEntityTypePk(G,j,{storeCode:v,code:f,subtype:k});return await $.createFieldDefinition(G,j,{storeCode:v,ownerEntityId:M,ownerEntityTypePk:e,name:N,label:R,description:E,primitiveType:C,required:g,multiplicity:S,isSystem:D,allowedValues:L},m)},W=async(G,j,{id:v})=>{return y.factory(!v||v.length<3,I.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(G,j,{id:v})},Z=async(G,j,{store:v,ownerEntityId:M,includeSystem:f=!0})=>{y.factory(!v,I.validation,"store is required","MISSING_STORE_CODE");let k=null;if(M)k=null;return await $.getFieldDefinitionsForOwner(G,j,{storeCode:v,ownerEntityPk:k,includeSystem:f})},H=async(G,j,{store:v,code:M,subtype:f})=>{y.factory(!v,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(!M,I.validation,"code is required","MISSING_CODE"),y.factory(!f,I.validation,"subtype is required","MISSING_SUBTYPE");let k=await $.getFieldDefinitionsForEntityType(G,j,{storeCode:v,code:M,subtype:f}),N=await $.getFieldDefinitionsForOwner(G,j,{storeCode:v,ownerEntityPk:null,includeSystem:!0}),R=new Map;for(let E of k)R.set(E.getName(),E);for(let E of N)if(!R.has(E.getName()))R.set(E.getName(),E);return Array.from(R.values())},O=async(G,j,{id:v},M)=>{let f=await W(G,j,{id:v});return y.factory(!f,I.notFound,`Field definition not found: ${v}`,"DEFINITION_NOT_FOUND"),y.factory(f.getIsSystem(),I.validation,`Cannot delete system field definition: ${v}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(G,j,{id:v},M)},X=async(G,j,{entityId:v,parentId:M,values:f})=>{y.factory(f.includes(v),I.validation,`Self-reference not allowed: ${v} cannot depend on itself`,"SELF_REFERENCE");for(let k of f){let N=await $.readContent(G,j,{id:k});y.factory(!N,I.validation,`Referenced entity does not exist: ${k}`,"INVALID_REFERENCE");let{typeCode:R}=a6.parseId(k);y.factory(R!=="d",I.validation,`Referenced entity is not a document: ${k}`,"INVALID_REFERENCE_TYPE"),y.factory(N.getSubtype()!=="task",I.validation,`Referenced entity is not a task: ${k}`,"INVALID_REFERENCE_SUBTYPE"),y.factory(N.getParentId()!==M,I.validation,`Referenced task is in a different folder: ${k}`,"INVALID_REFERENCE_SCOPE")}for(let k of f){let N=new Set,R=async(C,g)=>{if(C===v)return g;if(N.has(C))return null;N.add(C);let S=await $.getFieldValue(G,j,{entityId:C,fieldName:"dependsOn"});if(!S)return null;let D=S.getValues();for(let L of D){let m=await R(L,[...g,L]);if(m)return m}return null},E=await R(k,[v,k]);if(E)throw I.validation(`Circular dependency detected: ${E.join(" -> ")}`,"CIRCULAR_DEPENDENCY")}};return Object.freeze({createFieldDefinition:z,readFieldDefinition:W,getFieldDefinitionsForOwner:Z,getFieldDefinitionsForType:H,deleteFieldDefinition:O,setFieldValue:async(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f,value:k,values:N},R,E)=>{y.factory(!v,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!M&&!f,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),y.factory(k!==void 0&&N!==void 0,I.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),y.factory(k===void 0&&N===void 0,I.validation,"Either value or values must be provided","MISSING_VALUE");let{typeCode:C}=a6.parseId(v),g=v[0],S=null,D=await $.getFieldValue(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f});if(D)S=D.getDefinition();else if(M)S=await $.readFieldDefinition(G,j,{id:M});else if(f&&$.resolveFieldDefinition){let D8=null;if((C==="d"||C==="t")&&$.resolveEntityTypePk){let a8=(await $.readContent(G,j,{id:v}))?.getSubtype?.()||null;if(a8)D8=await $.resolveEntityTypePk(G,j,{storeCode:g,code:C,subtype:a8})}S=await $.resolveFieldDefinition(G,j,{storeCode:g,fieldName:f,ownerEntityPk:null,entityTypePk:D8})}if(S){let D8=S.getAllowedValues();if(D8&&D8.length>0){let a8=N?[...N]:k!==void 0?[k]:[];if(a8.length>0){let Z6=a8.filter((_6)=>!D8.includes(_6));if(Z6.length>0)throw I.validation(`Invalid value(s): ${Z6.join(", ")}. Allowed: ${D8.join(", ")}`,"VALUE_NOT_ALLOWED")}}let m8=S.getPrimitiveType();if(["int","float","date"].includes(m8)){let a8=N?[...N]:k!==void 0?[k]:[];for(let Z6 of a8){let _6=F_6(m8,Z6);if(!_6.valid)throw I.validation(_6.error,"INVALID_TYPED_VALUE")}}}let L=N;if(C==="d"){let D8=await $.readContent(G,j,{id:v});if(D8&&D8.getSubtype()==="task"){let m8=S;if(!m8&&f)m8=(await $.getFieldDefinitionsForEntityType(G,j,{storeCode:g,code:"d",subtype:"task"})).find((Z6)=>Z6.getName()===f)||null;if(m8&&m8.getPrimitiveType()==="object_ref"){let a8=N?[...N]:k!==void 0?[k]:[];if(a8.length>0){if(a8=[...new Set(a8)],await X(G,j,{entityId:v,parentId:D8.getParentId(),values:a8}),N)L=a8}}}}let m={entityId:v,fieldDefinitionId:M,fieldName:f,value:k,values:L},c=!D,e=D?.getValue(),_8;if(c)_8=await $.addFieldToEntity(G,j,m,R);else _8=await $.updateFieldValue(G,j,{...m,_oldValue:e},R);let H6=q(c?"fieldAdded":"fieldValueChanged",c?{entityType:C,entityId:v,fieldName:f,value:k??N,enqueuePostCommit:R}:{entityType:C,entityId:v,fieldName:f,oldValue:e,newValue:k??N,enqueuePostCommit:R},E);if(H6){let D8=H6.map((m8)=>m8.message).join("; ");throw Error(`Field change rejected: ${D8}`)}return _8},deleteFieldValue:async(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f},k,N)=>{y.factory(!v,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!M&&!f,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER");let{typeCode:R}=a6.parseId(v),E=await $.removeFieldFromEntity(G,j,{entityId:v,fieldDefinitionId:M,fieldName:f},k),C=q("fieldRemoved",{entityType:R,entityId:v,fieldName:f,enqueuePostCommit:k},N);if(C){let g=C.map((S)=>S.message).join("; ");throw Error(`Field removal rejected: ${g}`)}return E},validateRequiredFields:async(G,j,{store:v,code:M,subtype:f,fields:k})=>{let R=(await H(G,j,{store:v,code:M,subtype:f})).filter((g)=>g.getRequired());if(R.length===0)return;let E=k&&typeof k==="object"?Object.keys(k):[],C=R.filter((g)=>!E.includes(g.getName())).map((g)=>g.getName());if(C.length>0)throw I.validation(`Missing required fields: ${C.join(", ")}`,"MISSING_REQUIRED_FIELDS")},subscribe:Y,subscribeAll:J})},yP8=Object.freeze({create:c_6});Z4();function m5(){}m5.prototype={diff:function(K,q){var Y,J=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},z=J.callback;if(typeof J==="function")z=J,J={};var W=this;function Z(N){if(N=W.postProcess(N,J),z)return setTimeout(function(){z(N)},0),!0;else return N}K=this.castInput(K,J),q=this.castInput(q,J),K=this.removeEmpty(this.tokenize(K,J)),q=this.removeEmpty(this.tokenize(q,J));var H=q.length,O=K.length,X=1,P=H+O;if(J.maxEditLength!=null)P=Math.min(P,J.maxEditLength);var w=(Y=J.timeout)!==null&&Y!==void 0?Y:1/0,T=Date.now()+w,G=[{oldPos:-1,lastComponent:void 0}],j=this.extractCommon(G[0],q,K,0,J);if(G[0].oldPos+1>=O&&j+1>=H)return Z(uP8(W,G[0].lastComponent,q,K,W.useLongestToken));var v=-1/0,M=1/0;function f(){for(var N=Math.max(v,-X);N<=Math.min(M,X);N+=2){var R=void 0,E=G[N-1],C=G[N+1];if(E)G[N-1]=void 0;var g=!1;if(C){var S=C.oldPos-N;g=C&&0<=S&&S<H}var D=E&&E.oldPos+1<O;if(!g&&!D){G[N]=void 0;continue}if(!D||g&&E.oldPos<C.oldPos)R=W.addToPath(C,!0,!1,0,J);else R=W.addToPath(E,!1,!0,1,J);if(j=W.extractCommon(R,q,K,N,J),R.oldPos+1>=O&&j+1>=H)return Z(uP8(W,R.lastComponent,q,K,W.useLongestToken));else{if(G[N]=R,R.oldPos+1>=O)M=Math.min(M,N-1);if(j+1>=H)v=Math.max(v,N+1)}}X++}if(z)(function N(){setTimeout(function(){if(X>P||Date.now()>T)return z();if(!f())N()},0)})();else while(X<=P&&Date.now()<=T){var k=f();if(k)return k}},addToPath:function(K,q,Y,J,z){var W=K.lastComponent;if(W&&!z.oneChangePerToken&&W.added===q&&W.removed===Y)return{oldPos:K.oldPos+J,lastComponent:{count:W.count+1,added:q,removed:Y,previousComponent:W.previousComponent}};else return{oldPos:K.oldPos+J,lastComponent:{count:1,added:q,removed:Y,previousComponent:W}}},extractCommon:function(K,q,Y,J,z){var W=q.length,Z=Y.length,H=K.oldPos,O=H-J,X=0;while(O+1<W&&H+1<Z&&this.equals(Y[H+1],q[O+1],z))if(O++,H++,X++,z.oneChangePerToken)K.lastComponent={count:1,previousComponent:K.lastComponent,added:!1,removed:!1};if(X&&!z.oneChangePerToken)K.lastComponent={count:X,previousComponent:K.lastComponent,added:!1,removed:!1};return K.oldPos=H,O},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 uP8($,K,q,Y,J){var z=[],W;while(K)z.push(K),W=K.previousComponent,delete K.previousComponent,K=W;z.reverse();var Z=0,H=z.length,O=0,X=0;for(;Z<H;Z++){var P=z[Z];if(!P.removed){if(!P.added&&J){var w=q.slice(O,O+P.count);w=w.map(function(T,G){var j=Y[X+G];return j.length>T.length?j:T}),P.value=$.join(w)}else P.value=$.join(q.slice(O,O+P.count));if(O+=P.count,!P.added)X+=P.count}else P.value=$.join(Y.slice(X,X+P.count)),X+=P.count}return z}var C$4=new m5;function mP8($,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 BP8($,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 Vu($,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 Au($,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 oG($,K){return Vu($,K,"")}function Zk($,K){return Au($,K,"")}function UP8($,K){return K.slice(0,Q_6($,K))}function Q_6($,K){var q=0;if($.length>K.length)q=$.length-K.length;var Y=K.length;if($.length<K.length)Y=$.length;var J=Array(Y),z=0;J[0]=0;for(var W=1;W<Y;W++){if(K[W]==K[z])J[W]=J[z];else J[W]=z;while(z>0&&K[W]!=K[z])z=J[z];if(K[W]==K[z])z++}z=0;for(var Z=q;Z<$.length;Z++){while(z>0&&$[Z]!=K[z])z=J[z];if($[Z]==K[z])z++}return z}var Hk="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}",l_6=new RegExp("[".concat(Hk,"]+|\\s+|[^").concat(Hk,"]"),"ug"),Xk=new m5;Xk.equals=function($,K,q){if(q.ignoreCase)$=$.toLowerCase(),K=K.toLowerCase();return $.trim()===K.trim()};Xk.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(z){return z.segment})}else q=$.match(l_6)||[];var Y=[],J=null;return q.forEach(function(z){if(/\s/.test(z))if(J==null)Y.push(z);else Y.push(Y.pop()+z);else if(/\s/.test(J))if(Y[Y.length-1]==J)Y.push(Y.pop()+z);else Y.push(J+z);else Y.push(z);J=z}),Y};Xk.join=function($){return $.map(function(K,q){if(q==0)return K;else return K.replace(/^\s+/,"")}).join("")};Xk.postProcess=function($,K){if(!$||K.oneChangePerToken)return $;var q=null,Y=null,J=null;if($.forEach(function(z){if(z.added)Y=z;else if(z.removed)J=z;else{if(Y||J)pP8(q,J,Y,z);q=z,Y=null,J=null}}),Y||J)pP8(q,J,Y,null);return $};function pP8($,K,q,Y){if(K&&q){var J=K.value.match(/^\s*/)[0],z=K.value.match(/\s*$/)[0],W=q.value.match(/^\s*/)[0],Z=q.value.match(/\s*$/)[0];if($){var H=mP8(J,W);$.value=Au($.value,W,H),K.value=oG(K.value,H),q.value=oG(q.value,H)}if(Y){var O=BP8(z,Z);Y.value=Vu(Y.value,Z,O),K.value=Zk(K.value,O),q.value=Zk(q.value,O)}}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],P=K.value.match(/^\s*/)[0],w=K.value.match(/\s*$/)[0],T=mP8(X,P);K.value=oG(K.value,T);var G=BP8(oG(X,T),w);K.value=Zk(K.value,G),Y.value=Vu(Y.value,X,G),$.value=Au($.value,X,X.slice(0,X.length-G.length))}else if(Y){var j=Y.value.match(/^\s*/)[0],v=K.value.match(/\s*$/)[0],M=UP8(v,j);K.value=Zk(K.value,M)}else if($){var f=$.value.match(/\s*$/)[0],k=K.value.match(/^\s*/)[0],N=UP8(f,k);K.value=oG(K.value,N)}}var i_6=new m5;i_6.tokenize=function($){var K=new RegExp("(\\r?\\n)|[".concat(Hk,"]+|[^\\S\\n\\r]+|[^").concat(Hk,"]"),"ug");return $.match(K)||[]};var Pk=new m5;Pk.tokenize=function($,K){if(K.stripTrailingCr)$=$.replace(/\r\n/g,`
498
498
  `);var q=[],Y=$.split(/(\n|\r\n)/);if(!Y[Y.length-1])Y.pop();for(var J=0;J<Y.length;J++){var z=Y[J];if(J%2&&!K.newlineIsToken)q[q.length-1]+=z;else q.push(z)}return q};Pk.equals=function($,K,q){if(q.ignoreWhitespace){if(!q.newlineIsToken||!$.includes(`
499
499
  `))$=$.trim();if(!q.newlineIsToken||!K.includes(`
500
500
  `))K=K.trim()}else if(q.ignoreNewlineAtEof&&!q.newlineIsToken){if($.endsWith(`
@@ -531,7 +531,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
531
531
  `),details:{changed:!0,lineNumber:K,checked:q}}},Q08=($,{lineNumber:K})=>{let q=$===""?[""]:$.split(`
532
532
  `),Y=q.length;if(K<1||K>Y)throw I.validation(`Line ${K} is out of range (document has ${Y} lines)`,"LINE_OUT_OF_RANGE");let J=K-1,z=q[J],W=/^(?:[-*+] |\d+\. )\[([ xX])\] .+$/,Z=z.match(W);if(!Z)throw I.validation("Line is not a valid checklist item","NOT_CHECKLIST_ITEM");let H=Z[1]!==" ",O=!H;return q[J]=Am(z,O),{newContent:q.join(`
533
533
  `),details:{lineNumber:K,previousStatus:H,newStatus:O}}},l08=($,{items:K})=>{if(!K||K.length===0)throw I.validation("Items array cannot be empty","EMPTY_ITEMS");let q=$,Y=[],J=[...K].sort((z,W)=>W.lineNumber-z.lineNumber);for(let z of J){let W=Mm(q,z);q=W.newContent,Y.push(W.details)}return Y.reverse(),{newContent:q,details:{items:Y,count:Y.filter((z)=>z.changed).length}}},lk=($,K)=>{switch(K.type){case"replace_first":return ph6($,K);case"replace_all":return Fh6($,K);case"replace_regex":return ch6($,K);case"replace_regex_all":return Qh6($,K);case"replace_between_markers":return lh6($,K);case"replace_lines":return ih6($,K);case"insert_at":return dh6($,K);case"replace_all_content":return{newContent:K.content,details:{message:"Replaced all content"}};case"append":return nh6($,K);default:throw Error(`Unknown operation type: ${K.type}`)}},i08=($,K,q=!1)=>{let Y=lk($,K),J={originalLength:$.length,newLength:Y.newContent.length,changeCount:Y.details.count||Y.details.linesReplaced||Y.details.linesDeleted||1},z={matches:J.changeCount,stats:J};if(!q)z.diff=bO($,Y.newContent);return z};var d08=($,K)=>{let q=G4.detectFullPathPrefix($,K);if(q.valid)return $.slice(q.prefix.length);return $},oh6=({store:$,folderService:K,documentHooks:q,includeResolver:Y,fieldService:J})=>{let z=Y,W=(P8)=>{return P8==="t"?"Template":"Document"},Z=(P8)=>{let O8=P8.getParentId();if(!O8)return!1;try{let{typeCode:f8}=a6.resolveEntityId(O8);return f8==="j"}catch{return!1}},H=async(P8,O8,f8,y8,i8,o8,z6,h8={})=>{let{createMissing:p8=!0,startingFolderId:s8}=h8,q6=o8??y8;if(f8){let X6=await K.resolvePath(P8,O8,f8,y8,i8,q6,z6,p8,s8),f6=await $.findFolderByName(P8,O8,X6.parentObjectId,X6.name);if(f6)return f6.getObjectId();else{if(!p8)throw I.notFound(`Folder not found: "${X6.name}"`,"FOLDER_NOT_FOUND");return(await $.createFolder(P8,O8,{storeCode:i8,parentId:X6.parentObjectId,name:X6.name},z6)).getObjectId()}}else{if(s8)return s8;return(await $.readRootFolderForType(P8,O8,y8,i8)).getObjectId()}},O=async(P8,O8,f8,y8)=>{let{path:i8,store:o8,content:z6,allowedRoots:h8,validPrefixes:p8,entityType:s8,subtype:q6}=f8;G4.validatePathFormat(i8);let X6=G4.detectFullPathPrefix(i8,p8);y.factory(!X6.valid,I.validation,`Path must start with one of: ${p8.map((J8)=>typeof J8==="string"?J8:J8.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let f6=d08(i8,p8);y.factory(!f6||f6.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let M8,x8=null;if(X6.prefix==="Documents/")M8="d";else if(X6.prefix==="Templates/")M8="t";else if(X6.prefix.startsWith("Stories/")){M8="s";let J8=X6.prefix.slice(8,-1),o=(await $.listStories(P8,O8,{storeCode:o8})).find((X8)=>X8.getName()===J8);if(!o)throw I.notFound(`Story not found: ${J8}`,"STORY_NOT_FOUND");x8=o.getObjectId()}let{parentPath:B8,name:F8}=w1.parsePath(f6),l8=await H(P8,O8,B8,s8,o8,M8,y8,{startingFolderId:x8});if(M8==="s"){let J8=await $.readFolder(P8,O8,{id:l8});if(y.factory(!J8,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(P8,O8,J8,h8,$),await G4.isInsideTasksFolder(P8,O8,J8,$))y.factory(q6!=="task",I.validation,"Only task documents can be created inside a tasks folder","INVALID_DOCUMENT_TYPE")}let Y8=W(s8),W8=await $.findContentByName(P8,O8,l8,F8,s8);return y.factory(W8,I.conflict,`${Y8} "${F8}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(P8,O8,{storeCode:o8,type:s8,parentId:l8,name:F8,initialContent:z6,subtype:q6},y8)},X=async(P8,O8,f8,y8)=>{let{root:i8,path:o8,content:z6,allowedRoots:h8,entityType:p8,subtype:s8}=f8,q6=w1.extractStoreCode(i8);G4.validatePathFormat(o8);let X6=await $.readFolder(P8,O8,{id:i8});y.factory(!X6,I.notFound,`Root folder not found: ${i8}`,"FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(P8,O8,X6,h8,$);let{parentPath:f6,name:M8}=w1.parsePath(o8),x8;if(f6){let Y8=f6.split("/").filter((J8)=>J8.trim()),W8=X6;for(let J8 of Y8){let c8=await $.findFolderByName(P8,O8,W8.getObjectId(),J8);if(c8)W8=c8;else W8=await $.createFolder(P8,O8,{storeCode:q6,parentId:W8.getObjectId(),name:J8},y8)}x8=W8.getObjectId()}else x8=i8;let B8=await $.readFolder(P8,O8,{id:x8});if(B8&&await G4.isInsideTasksFolder(P8,O8,B8,$))y.factory(s8!=="task",I.validation,"Only task documents can be created inside a tasks folder","INVALID_DOCUMENT_TYPE");let F8=W(p8),l8=await $.findContentByName(P8,O8,x8,M8,p8);return y.factory(l8,I.conflict,`${F8} "${M8}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(P8,O8,{storeCode:q6,type:p8,parentId:x8,name:M8,initialContent:z6,subtype:s8},y8)},P=async(P8,O8,f8,y8)=>{let{parentId:i8,name:o8,content:z6,allowedRoots:h8,entityType:p8,subtype:s8}=f8,q6=w1.extractStoreCode(i8);G4.validateName(o8);let X6=await $.readFolder(P8,O8,{id:i8});if(y.factory(!X6,I.notFound,`Parent folder not found: ${i8}`,"FOLDER_NOT_FOUND"),await G4.validateRootInAllowedTree(P8,O8,X6,h8,$),await G4.isInsideTasksFolder(P8,O8,X6,$))y.factory(s8!=="task",I.validation,"Only task documents can be created inside a tasks folder","INVALID_DOCUMENT_TYPE");let f6=W(p8),M8=await $.findContentByName(P8,O8,i8,o8,p8);return y.factory(M8,I.conflict,`${f6} "${o8}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(P8,O8,{storeCode:q6,type:p8,parentId:i8,name:o8,initialContent:z6,subtype:s8},y8)},w=async(P8,O8,f8,y8)=>{let{mode:i8,path:o8,root:z6,parentId:h8,name:p8,store:s8,content:q6,type:X6,tree:f6,subtype:M8,fields:x8}=f8,B8=["d","s","tasks"],F8=G4.DOCUMENT_PREFIXES;if(M8&&J){let Y8=s8??(z6?w1.extractStoreCode(z6):null)??(h8?w1.extractStoreCode(h8):null);if(!Y8)throw I.validation("Cannot validate required fields: unable to determine store code from creation parameters","MISSING_STORE_CODE");let W8=X6??"d";await J.validateRequiredFields(P8,O8,{store:Y8,code:W8,subtype:M8,fields:x8})}let l8;if(i8==="fullPath")y.factory(!s8,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),l8=await O(P8,O8,{path:o8,store:s8,content:q6,allowedRoots:B8,validPrefixes:F8,entityType:"d",subtype:M8},y8);else if(i8==="rootRelative")y.factory(!z6,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),l8=await X(P8,O8,{root:z6,path:o8,content:q6,allowedRoots:B8,entityType:"d",subtype:M8},y8);else if(i8==="parentName")y.factory(!h8,I.validation,"parentId is required for parentName mode","MISSING_PARENT_ID"),y.factory(!p8,I.validation,"name is required for parentName mode","MISSING_NAME"),l8=await P(P8,O8,{parentId:h8,name:p8,content:q6,allowedRoots:B8,entityType:"d",subtype:M8},y8);else if(X6!==void 0){y.factory(X6!=="d"&&X6!=="t",I.validation,'type must be "d" or "t"',"INVALID_TYPE"),y.factory(!o8||o8==="/",I.validation,"Path cannot be empty","EMPTY_PATH"),y.factory(!s8,I.validation,"store is required","MISSING_STORE_CODE");let{parentPath:Y8,name:W8}=w1.parsePath(o8),J8=h8??await H(P8,O8,Y8,X6,s8,f6,y8),c8=W(X6),o=await $.findContentByName(P8,O8,J8,W8,X6);y.factory(o,I.conflict,`${c8} "${W8}" already exists in folder`,"DUPLICATE_NAME"),l8=await $.createContent(P8,O8,{storeCode:s8,type:X6,parentId:J8,name:W8,initialContent:q6,subtype:M8},y8)}else throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS");if(x8&&J&&Object.keys(x8).length>0)for(let[Y8,W8]of Object.entries(x8))await J.setFieldValue(P8,O8,{entityId:l8.getObjectId(),fieldName:Y8,...Array.isArray(W8)?{values:W8}:{value:W8}},y8);return l8},T=async(P8,O8,f8,y8)=>{let{mode:i8,path:o8,root:z6,parentId:h8,name:p8,store:s8,content:q6,subtype:X6}=f8,f6=["t"],M8=G4.TEMPLATE_PREFIXES;if(i8==="fullPath")return y.factory(!s8,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await O(P8,O8,{path:o8,store:s8,content:q6,allowedRoots:f6,validPrefixes:M8,entityType:"t",subtype:X6},y8);if(i8==="rootRelative")return y.factory(!z6,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),await X(P8,O8,{root:z6,path:o8,content:q6,allowedRoots:f6,entityType:"t",subtype:X6},y8);if(i8==="parentName")return y.factory(!h8,I.validation,"parentId is required for parentName mode","MISSING_PARENT_ID"),y.factory(!p8,I.validation,"name is required for parentName mode","MISSING_NAME"),await P(P8,O8,{parentId:h8,name:p8,content:q6,allowedRoots:f6,entityType:"t",subtype:X6},y8);throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS")},G=async(P8,O8,{id:f8,resolveIncludes:y8=!0})=>{let{typeCode:i8}=a6.resolveEntityId(f8),o8=W(i8),z6=await $.readContent(P8,O8,{id:f8});y.factory(!z6,I.notFound,`${o8} not found: ${f8}`,"NOT_FOUND");let h8=[],p8=z6.getParentId();while(p8){h8.unshift(p8);let q6=await $.readFolder(P8,O8,{id:p8});if(!q6)break;p8=q6.getParentId()}let s8=null;if(y8&&z&&z6.getPublishedContent())s8=await z.resolve(P8,O8,z6.getPublishedContent(),z6.getObjectId());return{entity:z6,ancestorFolderIds:h8,resolvedContent:s8}},j=async(P8,O8,{path:f8,type:y8,storeCode:i8})=>{y.factory(y8!=="d"&&y8!=="t",I.validation,'type must be "d" or "t"',"INVALID_TYPE");let{parentPath:o8,name:z6}=w1.parsePath(f8),h8=[],p8;if(o8){let q6=o8.split("/").filter((f6)=>f6),X6="";for(let f6 of q6){X6=X6?`${X6}/${f6}`:f6;let M8=await $.getFolderByPath(P8,O8,{path:X6,type:y8,storeCode:i8});if(!M8)return null;h8.push(M8.getObjectId())}p8=h8[h8.length-1]}else p8=(await $.readRootFolderForType(P8,O8,y8,i8)).getObjectId();let s8=await $.findContentByName(P8,O8,p8,z6,y8);if(!s8)return null;return{entity:s8,ancestorFolderIds:h8}},v=async(P8,O8,{id:f8,path:y8,parentId:i8,type:o8},z6)=>{y.factory(o8!=="d"&&o8!=="t",I.validation,'type must be "d" or "t"',"INVALID_TYPE");let h8=y8!==void 0&&y8!==null,p8=i8!==void 0&&i8!==null;if(y.factory(h8===p8,I.validation,"Either path OR parentId must be provided, not both or neither","INVALID_PARAMS"),h8)y.factory(y8==="/",I.validation,"Path cannot be empty","EMPTY_PATH");let{entity:s8}=await G(P8,O8,{id:f8}),q6=w1.extractStoreCode(f8),X6=W(o8),f6,M8;if(p8){let F8=await $.readFolder(P8,O8,{id:i8});y.factory(!F8,I.notFound,`Parent folder not found: ${i8}`,"PARENT_NOT_FOUND"),f6=s8.getName(),M8=i8}else{let F8=o8==="t"?G4.TEMPLATE_PREFIXES:G4.DOCUMENT_PREFIXES,l8=d08(y8,F8),{parentPath:Y8,name:W8}=w1.parsePath(l8);f6=W8;let J8=w1.parsePath(s8.getPath());if(Y8===J8.parentPath)M8=s8.getParentId();else M8=await H(P8,O8,Y8,o8,q6,void 0,z6,{createMissing:!1})}let x8=f6!==s8.getName(),B8=M8!==s8.getParentId();if(!x8&&!B8)return s8;if(x8||B8){let F8=await $.findContentByName(P8,O8,M8,f6,o8);y.factory(F8&&F8.getObjectId()!==f8,I.conflict,`${X6} "${f6}" already exists in target folder`,"DUPLICATE_NAME")}return await $.updateContent(P8,O8,{id:f8,name:x8?f6:void 0,parentId:B8?M8:void 0},z6)},M=async(P8,O8,{id:f8},y8)=>{let{entity:i8}=await G(P8,O8,{id:f8}),o8=await $.deleteContent(P8,O8,{id:f8},y8),{typeCode:z6}=a6.resolveEntityId(f8);if(z6==="d"&&i8.getSubtype()==="task"&&J){let h8=i8.getParentId(),p8=await $.listContent(P8,O8,{parentId:h8,type:"d"});for(let s8 of p8){if(s8.getObjectId()===f8)continue;if(s8.getSubtype()!=="task")continue;let q6=await $.getFieldValue(P8,O8,{entityId:s8.getObjectId(),fieldName:"dependsOn"});if(!q6)continue;let X6=q6.getValues();if(!X6.includes(f8))continue;let f6=X6.filter((M8)=>M8!==f8);if(f6.length>0)await J.setFieldValue(P8,O8,{entityId:s8.getObjectId(),fieldName:"dependsOn",values:f6},y8,!0);else await J.deleteFieldValue(P8,O8,{entityId:s8.getObjectId(),fieldName:"dependsOn"},y8,!0)}}return o8},f=async(P8,O8,{id:f8,content:y8,sessionId:i8},o8)=>{let{entity:z6}=await G(P8,O8,{id:f8});return y.factory(Z(z6),I.validation,"Documents inside jobs are read-only","JOB_DOCUMENT_READ_ONLY"),await $.saveDraft(P8,O8,{id:f8,content:y8,sessionId:i8},o8)},k=async(P8,O8,{id:f8})=>{let{typeCode:y8}=a6.resolveEntityId(f8),{entity:i8}=await G(P8,O8,{id:f8}),o8=W(y8),z6=await $.readDraft(P8,O8,{id:f8});return y.factory(!z6,I.notFound,`No draft found for ${o8}: ${f8}`,"DRAFT_NOT_FOUND"),z6},N=async(P8,O8,{id:f8,sessionId:y8},i8)=>{let{entity:o8}=await G(P8,O8,{id:f8,resolveIncludes:!1}),{typeCode:z6}=a6.resolveEntityId(f8),h8=q.getHook("prePublish",z6);if(h8)await h8(P8,O8,o8,y8,i8);return await $.publishContent(P8,O8,{id:f8,sessionId:y8},i8)},R=async(P8,O8,{id:f8},y8)=>{let{entity:i8}=await G(P8,O8,{id:f8});return await $.discardDraft(P8,O8,{id:f8},y8)},E=async(P8,O8,{id:f8,versionNumber:y8})=>{let{typeCode:i8}=a6.resolveEntityId(f8),{entity:o8}=await G(P8,O8,{id:f8}),z6=W(i8),h8=await $.readVersion(P8,O8,{id:f8,versionNumber:y8});return y.factory(!h8,I.notFound,`Version ${y8} not found for ${z6}: ${f8}`,"VERSION_NOT_FOUND"),h8},C=async(P8,O8,{id:f8})=>{let{entity:y8}=await G(P8,O8,{id:f8});return await $.getVersions(P8,O8,{id:f8})},g=async(P8,O8,{id:f8,sessionId:y8},i8)=>{let{entity:o8}=await G(P8,O8,{id:f8});return await $.setEditState(P8,O8,{id:f8,sessionId:y8},i8)},S=async(P8,O8,{id:f8},y8)=>{let{entity:i8}=await G(P8,O8,{id:f8});return await $.clearEditState(P8,O8,{id:f8},y8)},D=async(P8,O8,{id:f8})=>{let{entity:y8}=await G(P8,O8,{id:f8});return await $.getEditState(P8,O8,{id:f8})},L=async(P8,O8,{parentId:f8,storeCode:y8,type:i8="d"})=>{return await $.listContent(P8,O8,{parentId:f8,storeCode:y8,type:i8})},m=async(P8,O8,{id:f8,operation:y8,preview:i8=!1,ignoreContent:o8=!1,sessionId:z6},h8)=>{let{entity:p8}=await G(P8,O8,{id:f8}),s8=p8.getDraftContent()??p8.getPublishedContent()??"";if(i8)return{preview:!0,...i08(s8,y8,o8)};let q6=lk(s8,y8);return await f(P8,O8,{id:f8,content:q6.newContent,sessionId:z6},h8),{applied:!0,details:q6.details}},c=async(P8,O8,{id:f8,operations:y8,preview:i8=!1,ignoreContent:o8=!1,sessionId:z6},h8)=>{let p8=["replace_first","replace_all","replace_regex","replace_regex_all","replace_between_markers","replace_all_content","append"];for(let x8 of y8)if(!p8.includes(x8.type))throw I.validation(`Operation type "${x8.type}" is not batchable. Only line-agnostic operations are allowed in batch mode.`,"NON_BATCHABLE_OPERATION");let{entity:s8}=await G(P8,O8,{id:f8}),q6=s8.getDraftContent()??s8.getPublishedContent()??"",X6=q6,f6=[];for(let x8 of y8){let B8=lk(X6,x8);X6=B8.newContent,f6.push(B8.details)}let M8={originalLength:q6.length,newLength:X6.length,operationsApplied:y8.length};if(i8){let x8={preview:!0,stats:M8,operationResults:f6};if(!o8)x8.diff=bO(q6,X6);return x8}return await f(P8,O8,{id:f8,content:X6,sessionId:z6},h8),{applied:y8.length,results:f6}},e=async(P8,O8,{id:f8,startLine:y8,endLine:i8,includeDraft:o8=!1})=>{let{entity:z6}=await G(P8,O8,{id:f8}),h8=o8?z6.getDraftContent()??z6.getPublishedContent()??"":z6.getPublishedContent()??"";return xO(h8,y8,i8)},_8=async(P8,O8,{id:f8,startMarker:y8,endMarker:i8,inclusive:o8=!1,includeDraft:z6=!1})=>{let{entity:h8}=await G(P8,O8,{id:f8}),p8=z6?h8.getDraftContent()??h8.getPublishedContent()??"":h8.getPublishedContent()??"";return x08(p8,y8,i8,o8)},T8=async(P8,O8,{id:f8,includeDraft:y8=!1})=>{let{entity:i8}=await G(P8,O8,{id:f8}),o8=y8?i8.getDraftContent()??i8.getPublishedContent()??"":i8.getPublishedContent()??"";return g08(o8)},d8=async(P8,O8,{id:f8,maxDepth:y8,includeDraft:i8=!1})=>{let{entity:o8}=await G(P8,O8,{id:f8}),z6=i8?o8.getDraftContent()??o8.getPublishedContent()??"":o8.getPublishedContent()??"";return vm(z6,y8)},H6=async(P8,O8,{id:f8,heading:y8,includeHeading:i8=!0,includeDraft:o8=!1})=>{let{entity:z6}=await G(P8,O8,{id:f8}),h8=o8?z6.getDraftContent()??z6.getPublishedContent()??"":z6.getPublishedContent()??"";return Vm(h8,y8,i8)},D8=async(P8,O8,{id:f8,includeDraft:y8=!1})=>{let{entity:i8}=await G(P8,O8,{id:f8}),o8=y8?i8.getDraftContent()??i8.getPublishedContent()??"":i8.getPublishedContent()??"";return b08(o8)},m8=async(P8,O8,{id:f8,section:y8,includeDraft:i8=!1})=>{let{entity:o8}=await G(P8,O8,{id:f8}),z6=i8?o8.getDraftContent()??o8.getPublishedContent()??"":o8.getPublishedContent()??"";return y08(z6,y8)},a8=(P8,O8)=>{let f8=P8.split(`
534
- `),i8=f8[O8-1].match(/^(?:[-*+] |\d+\. )\[([ xX])\] (.+)$/),o8=0,z6=/^(?:[-*+] |\d+\. )\[([ xX])\] .+$/;for(let h8=0;h8<O8;h8++)if(z6.test(f8[h8]))o8++;return{text:i8[2],checked:i8[1]!==" ",lineNumber:O8,itemNumber:o8}};return Object.freeze({createDocument:w,createTemplate:T,readDocument:G,readDocumentByPath:j,updateDocumentPath:v,deleteDocument:M,saveDraft:f,readDraft:k,publishDocument:N,discardDraft:R,readVersion:E,getVersions:C,setEditState:g,clearEditState:S,getEditState:D,listDocuments:L,editDocument:m,batchEditDocument:c,readLines:e,readBetweenMarkers:_8,getDocumentStats:T8,readHeadings:d8,readSection:H6,readFrontmatter:D8,readChecklist:m8,checkChecklistItem:async(P8,O8,{id:f8,lineNumber:y8,checked:i8,includeDraft:o8=!1,preview:z6=!1,sessionId:h8},p8)=>{let{entity:s8}=await G(P8,O8,{id:f8}),q6=o8?s8.getDraftContent()??s8.getPublishedContent()??"":s8.getPublishedContent()??"",X6=Mm(q6,{lineNumber:y8,checked:i8});if(z6)return{preview:!0,diff:bO(q6,X6.newContent),item:a8(X6.newContent,y8)};return await f(P8,O8,{id:f8,content:X6.newContent,sessionId:h8},p8),{applied:!0,item:a8(X6.newContent,y8)}},toggleChecklistItem:async(P8,O8,{id:f8,lineNumber:y8,includeDraft:i8=!1,preview:o8=!1,sessionId:z6},h8)=>{let{entity:p8}=await G(P8,O8,{id:f8}),s8=i8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",q6=Q08(s8,{lineNumber:y8});if(o8)return{preview:!0,diff:bO(s8,q6.newContent),item:a8(q6.newContent,y8)};return await f(P8,O8,{id:f8,content:q6.newContent,sessionId:z6},h8),{applied:!0,item:a8(q6.newContent,y8)}},batchCheckChecklistItems:async(P8,O8,{id:f8,items:y8,includeDraft:i8=!1,preview:o8=!1,sessionId:z6},h8)=>{let{entity:p8}=await G(P8,O8,{id:f8}),s8=i8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",q6=l08(s8,{items:y8}),X6=y8.map((f6)=>a8(q6.newContent,f6.lineNumber));if(o8)return{preview:!0,diff:bO(s8,q6.newContent),items:X6,count:q6.details.count};return await f(P8,O8,{id:f8,content:q6.newContent,sessionId:z6},h8),{applied:!0,items:X6,count:q6.details.count}},specialiseDocument:async(P8,O8,{id:f8,subtype:y8,fields:i8},o8)=>{let{entity:z6}=await G(P8,O8,{id:f8});y.factory(z6.getSubtype()!==null,I.validation,`Entity is already specialised to subtype: ${z6.getSubtype()}`,"ALREADY_SPECIALISED");let{storeCode:h8,typeCode:p8}=a6.resolveEntityId(f8),s8=(await Promise.resolve().then(() => (Yk(),PP8))).default;try{await s8.readEntityTypeId(P8,O8,p8,y8)}catch(f6){throw I.validation(`Invalid subtype: ${y8}`,"INVALID_SUBTYPE")}await J.validateRequiredFields(P8,O8,{store:h8,code:p8,subtype:y8,fields:i8});let q6=await $.updateEntityType(P8,O8,{id:f8,subtype:y8},o8);if(i8&&Object.keys(i8).length>0)for(let[f6,M8]of Object.entries(i8))await J.setFieldValue(P8,O8,{entityId:f8,fieldName:f6,...Array.isArray(M8)?{values:M8}:{value:M8}},o8);let{entity:X6}=await G(P8,O8,{id:f8});return{entity:X6}},generaliseDocument:async(P8,O8,{id:f8},y8)=>{let{entity:i8}=await G(P8,O8,{id:f8}),o8=i8.getSubtype();y.factory(o8===null,I.validation,"Entity is already generic (has no subtype)","ALREADY_GENERIC");let z6=await $.readFolder(P8,O8,{id:i8.getParentId()});if(z6&&await G4.isInsideTasksFolder(P8,O8,z6,$))throw I.validation("Cannot generalise entity inside a tasks folder","INVALID_LOCATION");let{typeCode:h8}=a6.resolveEntityId(f8),p8=await $.getFieldDefinitionsForEntityType(P8,O8,{storeCode:"B",code:h8,subtype:o8}),s8=i8.getFields();for(let X6 of p8){let f6=X6.getName();if(s8&&s8[f6])await J.deleteFieldValue(P8,O8,{entityId:f8,fieldName:f6},y8)}await $.updateEntityType(P8,O8,{id:f8,subtype:null},y8);let{entity:q6}=await G(P8,O8,{id:f8});return{entity:q6}},setIncludeResolver:(P8)=>{z=P8}})},n08=Object.freeze({create:oh6});var ah6=()=>{let $=null,K=null,q={prePublish:{d:async(z,W,Z,H,O)=>{if(!$)return;let X=Z.getDraftContent();if(!X)return;let{content:P,pinned:w}=await $.pinIncludes(z,W,X,Z.getObjectId());if(w.length>0)await K.saveDraft(z,W,{id:Z.getObjectId(),content:P,sessionId:H},O)},t:null},postPublish:{},preDelete:{},postCreate:{}};return Object.freeze({getHook:(z,W)=>{return q[z]?.[W]||null},setIncludeResolver:(z,W)=>{$=z,K=W}})},o08=Object.freeze({create:ah6});Z4();var a08=n6(I4(),1),UJ=a08.default("caw:includes"),rh6=({store:$,documentService:K})=>{let q=/<include\s+(?:id="([^"]+)"|path="([^"]+)")(?:\s+version="(\d+)")?\s*\/>/g,Y=(X)=>{let P=X;return P=P.replace(/```[\s\S]*?```/g,(w)=>" ".repeat(w.length)),P=P.replace(/~~~[\s\S]*?~~~/g,(w)=>" ".repeat(w.length)),P=P.replace(/``[^`]+``/g,(w)=>" ".repeat(w.length)),P=P.replace(/`[^`]+`/g,(w)=>" ".repeat(w.length)),P},J=(X)=>{let P=Y(X),w=[],T,G=new RegExp(q.source,"g");while((T=G.exec(P))!==null){let j=X.substring(T.index,T.index+T[0].length),v=new RegExp(q.source).exec(j);if(v)w.push({fullMatch:j,id:v[1],path:v[2],versionStr:v[3],index:T.index})}return w},z=5,W=async(X,P,w,T,G=new Set,j=0)=>{if(UJ("Resolving includes in document, depth=%d, chain=%s, sourceDocId=%s",j,[...G].join(","),T),j>5)throw I.validation("Include depth limit exceeded (max 5 levels)","INCLUDE_DEPTH_EXCEEDED");if(T)G=new Set(G).add(T);let v=J(w);if(UJ("Found %d include directives",v.length),v.length===0)return w;let M=w;for(let f of v){let{fullMatch:k,id:N,path:R,versionStr:E}=f,C=E?parseInt(E,10):null;UJ("Resolving include: id=%s, path=%s, version=%s",N,R,E);try{let g;if(N)g=N;else{let L=T?T.charAt(0):"A",m=await K.readDocumentByPath(X,P,{path:R,type:"d",storeCode:L});if(!m)throw I.notFound(`Included document not found: ${R}`,"INCLUDE_NOT_FOUND");g=m.entity.getObjectId()}if(G.has(g)){let L=[...G,g].join(" -> ");throw I.validation(`Circular include detected: ${L}`,"INCLUDE_CYCLE")}if(C===null)throw I.validation(`Unpinned include found: ${k}. Includes must specify a version.`,"INCLUDE_UNPINNED");let S=await $.readVersion(X,P,{id:g,versionNumber:C});if(!S)throw I.notFound(`Version ${C} not found for included document: ${g}`,"INCLUDE_VERSION_NOT_FOUND");let D=await W(X,P,S.content,g,G,j+1);M=M.replace(k,D)}catch(g){let S=N||R,D=`> **Include Error** - couldn't include ${S}${C?` version ${C}`:""}: ${g.message}`;UJ("Include resolution failed for %s: %s",S,g.message),M=M.replace(k,D)}}return M};return Object.freeze({resolve:W,pinIncludes:async(X,P,w,T)=>{UJ("Auto-pinning unpinned includes in document: %s",T);let G=J(w),j=[],v=w;for(let M of G){let{fullMatch:f,id:k,path:N,versionStr:R}=M;if(R)continue;UJ("Pinning unpinned include: id=%s, path=%s",k,N);let E,C;if(k){E=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});C=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",D=await K.readDocumentByPath(X,P,{path:N,type:"d",storeCode:S});if(!D)throw I.notFound(`Included document not found: ${N}`,"INCLUDE_NOT_FOUND");E=D.entity.getObjectId(),C=D.entity.getPublishedVersionNumber()}if(!C)throw I.validation(`Cannot pin include - document has no published version: ${E}`,"INCLUDE_NO_VERSION");let g=k?`<include id="${k}" version="${C}" />`:`<include path="${N}" version="${C}" />`;UJ("Pinned include %s to version %d",E,C),v=v.replace(f,g),j.push({id:E,path:N,version:C})}return UJ("Auto-pinned %d unpinned includes",j.length),{content:v,pinned:j}},checkIncludes:async(X,P,w,T)=>{let G=J(w),j=[];for(let v of G){let{id:M,path:f,versionStr:k}=v,N=k?parseInt(k,10):null,R,E;if(M){R=M;let{entity:C}=await K.readDocument(X,P,{id:M,resolveIncludes:!1});E=C.getPublishedVersionNumber()}else{let C=T?T.charAt(0):"A",g=await K.readDocumentByPath(X,P,{path:f,type:"d",storeCode:C});R=g?.entity?.getObjectId(),E=g?.entity?.getPublishedVersionNumber()}j.push({id:R,path:f||null,pinnedVersion:N,latestVersion:E,outdated:N!==null&&E!==null&&N<E})}return j},updateIncludes:async(X,P,w,T)=>{let G=J(w),j=[],v=w;for(let M of G){let{fullMatch:f,id:k,path:N,versionStr:R}=M,E=R?parseInt(R,10):null,C,g;if(k){C=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});g=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",D=await K.readDocumentByPath(X,P,{path:N,type:"d",storeCode:S});C=D?.entity?.getObjectId(),g=D?.entity?.getPublishedVersionNumber()}if(g&&E!==g){let S=k?`<include id="${k}" version="${g}" />`:`<include path="${N}" version="${g}" />`;v=v.replace(f,S),j.push({id:C,path:N||null,fromVersion:E,toVersion:g})}}return{content:v,updated:j}}})},r08=Object.freeze({create:rh6});Z4();var qA8=n6(Gm(),1),YA8=n6(HB(),1),JA8=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,targetJobStreaming:!1,skipDialog:!1,body:""};let K=qA8.default($),q=K.data?.parameters||{},Y=K.data?.target||null,J=K.data?.targetPath||null,z=K.data?.targetParentId||null,W=K.data?.targetName||null,Z=K.data?.targetRoot||null,H=K.data?.targetStore||null,O=K.data?.targetJobName||null,X=K.data?.targetJobAgent||null,P=K.data?.targetJobModel||null,w=K.data?.targetJobWorktree||null,T=K.data?.targetJobSkipDialog??!1,G=K.data?.targetJobStreaming??!1,j=K.data?.skipDialog??!1,v=K.content;return{parameters:q,target:Y,targetPath:J,targetParentId:z,targetName:W,targetRoot:Z,targetStore:H,targetJobName:O,targetJobAgent:X,targetJobModel:P,targetJobWorktree:w,targetJobSkipDialog:T,targetJobStreaming:G,skipDialog:j,body:v}},yg6=($)=>{if(!$)return new Set;let K=new Set,q=new Set(["if","unless","each","with","lookup","log"]);try{let Y=YA8.default.parse($),J=(z,W=null,Z=null)=>{if(!z)return;if(z.type==="PathExpression"){if(z.data)return;let H=z.parts.join(".");if(!H||H.startsWith("@"))return;if(W?.type==="BlockStatement"&&Z==="path"||W?.type==="MustacheStatement"&&Z==="path"&&W.params?.length>0){if(q.has(H))return;return}K.add(H)}if(z.program)J(z.program,z,"program");if(z.inverse)J(z.inverse,z,"inverse");if(z.body)z.body.forEach((H)=>J(H,z,"body"));if(z.params)z.params.forEach((H)=>J(H,z,"params"));if(z.hash?.pairs)z.hash.pairs.forEach((H)=>J(H.value,z,"hash"));if(z.path)J(z.path,z,"path")};J(Y)}catch(Y){throw Error(`Invalid Handlebars template: ${Y.message}`)}return K},ug6=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,targetJobStreaming:!1,skipDialog:!1};let{parameters:K,target:q,targetPath:Y,targetParentId:J,targetName:z,targetRoot:W,targetStore:Z,targetJobName:H,targetJobAgent:O,targetJobModel:X,targetJobWorktree:P,targetJobSkipDialog:w,targetJobStreaming:T,skipDialog:G}=JA8($);return{parameters:K,target:q,targetPath:Y,targetParentId:J,targetName:z,targetRoot:W,targetStore:Z,targetJobName:H,targetJobAgent:O,targetJobModel:X,targetJobWorktree:P,targetJobSkipDialog:w,targetJobStreaming:T,skipDialog:G}},FK=Object.freeze({parseFrontMatter:JA8,extractVariables:yg6,getParameters:ug6});var OB=n6(HB(),1),mg6=($={})=>{return Object.freeze({renderTemplate:(Y,J={})=>{if(!Y)throw I.validation("Template content cannot be empty","EMPTY_TEMPLATE");let{body:z}=FK.parseFrontMatter(Y),W;try{W=OB.default.compile(z,{noEscape:!0})(J)}catch(Z){throw I.validation(`Failed to render template: ${Z.message}`,"RENDER_ERROR")}return W},extractTemplateParameters:(Y)=>{if(!Y)return{parameters:{},detectedVariables:[],target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,targetJobStreaming:!1};let{parameters:J,target:z,targetPath:W,targetParentId:Z,targetName:H,targetRoot:O,targetStore:X,targetJobName:P,targetJobAgent:w,targetJobModel:T,targetJobWorktree:G,targetJobSkipDialog:j,targetJobStreaming:v,body:M}=FK.parseFrontMatter(Y),f=FK.extractVariables(M),k=Array.from(f);return{parameters:J,detectedVariables:k,target:z,targetPath:W,targetParentId:Z,targetName:H,targetRoot:O,targetStore:X,targetJobName:P,targetJobAgent:w,targetJobModel:T,targetJobWorktree:G,targetJobSkipDialog:j,targetJobStreaming:v}}})},zA8=Object.freeze({create:mg6});import _j from"node:fs";import WA8 from"node:os";import Yf from"node:path";var Bg6=({projectStore:$,storeStore:K})=>{return Object.freeze({createProject:async(z,W,{name:Z,path:H},O)=>{if(await $.readProjectByPath(z,W,H)){let g=Error("Project with this path already exists");throw g.code="DUPLICATE_PATH",g}let P=await $.createProject(z,W,{name:Z,path:H},O),w=await K.createLocalStore(z,W,{code:"A",name:"Project"},O);await w.createFolder(z,W,{parentId:null,name:"Documents",subtype:"root_d"},O),await w.createFolder(z,W,{parentId:null,name:"Templates",subtype:"root_t"},O),await w.createFolder(z,W,{parentId:null,name:"Stories",subtype:"root_s"},O),await w.createFolder(z,W,{parentId:null,name:"Jobs",subtype:"root_j"},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,name:"state",label:"State",description:"Workflow state",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O);let T=await w.resolveEntityTypePk(z,W,{code:"f",subtype:"root_s"}),G=await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:T,name:"states",label:"States",description:"Ordered list of valid story states",primitiveType:"string",required:!0,multiplicity:"multi",isSystem:!0},O),v=(await w.readStoryRootFolder(z,W,{storeCode:"A"})).getObjectId();await w.setFieldValue(z,W,{entityId:v,fieldDefinitionId:G.getObjectId(),values:[...vM]},O);let M=await w.resolveEntityTypePk(z,W,{code:"d",subtype:"task"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:M,name:"dependsOn",label:"Depends On",description:"Tasks that block this task",primitiveType:"object_ref",required:!1,multiplicity:"multi",isSystem:!0},O);let f=await w.resolveEntityTypePk(z,W,{code:"d",subtype:"cartridge"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:f,name:"synopsis",label:"Synopsis",description:"Brief description of the cartridge",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:f,name:"relatedActivities",label:"Related Activities",description:"Associated activity types",primitiveType:"string",required:!1,multiplicity:"multi",isSystem:!0},O);let k=await w.resolveEntityTypePk(z,W,{code:"f",subtype:"tasks"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:k,name:"states",label:"States",description:"Ordered list of valid task states",primitiveType:"string",required:!0,multiplicity:"multi",isSystem:!0},O);let N=await w.resolveEntityTypePk(z,W,{code:"t",subtype:null});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:N,name:"associatedType",label:"Associated Type",description:"Entity types this template is associated with",primitiveType:"string",required:!1,multiplicity:"multi",isSystem:!0},O);let R=await w.resolveEntityTypePk(z,W,{code:"s",subtype:null});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"flag",label:"Flag",description:"Visual indicator for story attention",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"activeJobCount",label:"Active Job Count",description:"Number of active jobs associated with this story",primitiveType:"int",required:!1,multiplicity:"single",isSystem:!0},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"statusMessage",label:"Status Message",description:"Agent status message displayed in stories list",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O);let E=await K.readSharedStore(z,W),C=await K.createDemuxStore(z,W,{name:Z},O);return await K.addChildToDemux(z,W,{demuxId:C.getObjectId(),childId:w.getObjectId()},O),await K.addChildToDemux(z,W,{demuxId:C.getObjectId(),childId:E.getObjectId()},O),await K.addStoresToProject(z,W,{projectId:P.getObjectId(),rootStoreId:C.getObjectId(),storeIds:[C.getObjectId(),w.getObjectId(),E.getObjectId()]}),P},validateProjectPath:(z)=>{if(!z||typeof z!=="string"){let w=Error("Path is required and must be a non-empty string");throw w.code="VALIDATION_ERROR",w}let W;if(z==="~")W=WA8.homedir();else if(z.startsWith("~/"))W=Yf.join(WA8.homedir(),z.slice(2));else W=z;let Z=_j.existsSync(W),H=!1,O=!1,X=!1;if(Z)try{if(H=_j.statSync(W).isDirectory(),H){let T=Yf.join(W,".git");try{O=_j.statSync(T).isDirectory()}catch{O=!1}let G=Yf.join(W,".claude");try{X=_j.statSync(G).isDirectory()}catch{X=!1}}}catch(w){H=!1}let P=Yf.basename(W);return{path:W,exists:Z,isDirectory:H,hasGit:O,hasClaude:X,suggestedName:P}},listProjects:async(z)=>{let W=await z.selectFrom("projects").selectAll().where("name","!=","__system__").orderBy("created_at","desc").execute();return await Promise.all(W.map(async(H)=>{let X=(await z.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id","stores.code","stores.name","stores.type"]).where("project_stores.project_id","=",H.id).where("stores.type","=","local").execute()).map((P)=>({id:P.code==="B"?"store:B":`store:${P.code}:${H.object_id}`,code:P.code,name:P.name}));return{objectId:H.object_id,name:H.name,path:H.path,createdAt:H.created_at,updatedAt:H.updated_at,children:X}}))}})},Jf=Object.freeze({create:Bg6});var Ug6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},pg6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:J,projectService:z,clipboardService:W,storyService:Z,assetService:H,jobService:O,includeResolver:X,worktreeService:P})=>{let w=async(M8)=>{let x8=Ug6(),B8;return await $.transaction().execute(async(F8)=>{B8=await M8(F8,x8.enqueuePostCommitHook)}),x8.flush(),B8};return Object.freeze({createFolder:async(M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8})=>{return w(async(c8,o)=>{return await K.createFolder(c8,M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8},o)})},renameFolder:async(M8,{id:x8,name:B8})=>{return w(async(F8,l8)=>{return await K.renameFolder(F8,M8,{id:x8,name:B8},l8)})},moveFolder:async(M8,{id:x8,parentId:B8})=>{return w(async(F8,l8)=>{return await K.moveFolder(F8,M8,{id:x8,parentId:B8},l8)})},deleteFolder:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await K.deleteFolder(B8,M8,{id:x8},F8)})},createProject:async(M8,{name:x8,path:B8})=>{return w(async(F8,l8)=>{return await z.createProject(F8,M8,{name:x8,path:B8},l8)})},createFieldDefinition:async(M8,{store:x8,ownerEntityId:B8,ownerEntityTypeCode:F8,ownerEntityTypeSubtype:l8,name:Y8,label:W8,description:J8,primitiveType:c8,required:o,multiplicity:X8,isSystem:t})=>{return w(async(G8,z8)=>{return await q.createFieldDefinition(G8,M8,{store:x8,ownerEntityId:B8,ownerEntityTypeCode:F8,ownerEntityTypeSubtype:l8,name:Y8,label:W8,description:J8,primitiveType:c8,required:o,multiplicity:X8,isSystem:t},z8)})},setFieldValue:async(M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8,value:l8,values:Y8})=>{return w(async(W8,J8)=>{return await q.setFieldValue(W8,M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8,value:l8,values:Y8},J8)})},deleteFieldValue:async(M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8})=>{return w(async(l8,Y8)=>{return await q.deleteFieldValue(l8,M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8},Y8)})},deleteFieldDefinition:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await q.deleteFieldDefinition(B8,M8,{id:x8},F8)})},createDocument:async(M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8,content:c8,tree:o,subtype:X8,fields:t})=>{return w(async(G8,z8)=>{return await Y.createDocument(G8,M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8,content:c8,tree:o,subtype:X8,fields:t},z8)})},createTemplate:async(M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,content:J8,subtype:c8})=>{return w(async(o,X8)=>{return await Y.createTemplate(o,M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,content:J8,subtype:c8},X8)})},updateDocumentPath:async(M8,{id:x8,path:B8,parentId:F8,type:l8})=>{return w(async(Y8,W8)=>{return await Y.updateDocumentPath(Y8,M8,{id:x8,path:B8,parentId:F8,type:l8},W8)})},deleteDocument:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.deleteDocument(B8,M8,{id:x8},F8)})},saveDraft:async(M8,{id:x8,content:B8,sessionId:F8})=>{return w(async(l8,Y8)=>{return await Y.saveDraft(l8,M8,{id:x8,content:B8,sessionId:F8},Y8)})},publishDocument:async(M8,{id:x8,sessionId:B8})=>{return w(async(F8,l8)=>{return await Y.publishDocument(F8,M8,{id:x8,sessionId:B8},l8)})},discardDraft:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.discardDraft(B8,M8,{id:x8},F8)})},setEditState:async(M8,{id:x8,sessionId:B8})=>{return w(async(F8,l8)=>{return await Y.setEditState(F8,M8,{id:x8,sessionId:B8},l8)})},clearEditState:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.clearEditState(B8,M8,{id:x8},F8)})},editDocument:async(M8,{id:x8,operation:B8,preview:F8,ignoreContent:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.editDocument(W8,M8,{id:x8,operation:B8,preview:F8,ignoreContent:l8,sessionId:Y8},J8)})},batchEditDocument:async(M8,{id:x8,operations:B8,preview:F8,ignoreContent:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.batchEditDocument(W8,M8,{id:x8,operations:B8,preview:F8,ignoreContent:l8,sessionId:Y8},J8)})},checkChecklistItem:async(M8,{id:x8,lineNumber:B8,checked:F8,includeDraft:l8,preview:Y8,sessionId:W8})=>{return w(async(J8,c8)=>{return await Y.checkChecklistItem(J8,M8,{id:x8,lineNumber:B8,checked:F8,includeDraft:l8,preview:Y8,sessionId:W8},c8)})},toggleChecklistItem:async(M8,{id:x8,lineNumber:B8,includeDraft:F8,preview:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.toggleChecklistItem(W8,M8,{id:x8,lineNumber:B8,includeDraft:F8,preview:l8,sessionId:Y8},J8)})},batchCheckChecklistItems:async(M8,{id:x8,items:B8,includeDraft:F8,preview:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.batchCheckChecklistItems(W8,M8,{id:x8,items:B8,includeDraft:F8,preview:l8,sessionId:Y8},J8)})},specialiseDocument:async(M8,{id:x8,subtype:B8,fields:F8})=>{return w(async(l8,Y8)=>{return await Y.specialiseDocument(l8,M8,{id:x8,subtype:B8,fields:F8},Y8)})},generaliseDocument:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.generaliseDocument(B8,M8,{id:x8},F8)})},renderTemplate:async(M8,{id:x8,params:B8,target:F8,targetOptions:l8,sessionId:Y8})=>{let{entity:W8}=await Y.readDocument($,M8,{id:x8,resolveIncludes:!1});if(!W8.getPublishedContent())throw(await Promise.resolve().then(() => (Z4(),vO))).default.validation("Template has no published content","NO_PUBLISHED_CONTENT");let J8=W8.getPublishedContent(),{target:c8,targetPath:o,targetParentId:X8,targetName:t,targetRoot:G8,targetStore:z8,targetJobName:k8,targetJobAgent:b8,targetJobModel:Q8,targetJobWorktree:l6,targetJobStreaming:D4}=J.extractTemplateParameters(J8),K3=F8||c8||"stdout",B1=l8?.parentId||l8?.root||l8?.path?{path:l8?.path,parentId:l8?.parentId,name:l8?.name,root:l8?.root,store:l8?.store,publish:l8?.publish}:{path:l8?.path||o,parentId:l8?.parentId||X8,name:l8?.name||t,root:l8?.root||G8,store:l8?.store||z8,publish:l8?.publish},L$=J8;if(X)L$=await X.resolve($,M8,J8,x8);let f$=J.renderTemplate(L$,B8||{});if(B1.path)B1.path=J.renderTemplate(B1.path,B8||{});if(B1.name)B1.name=J.renderTemplate(B1.name,B8||{});switch(K3){case"stdout":return{content:f$,target:"stdout"};case"clipboard":return await W.copyToClipboard(f$),{target:"clipboard",message:"Copied to clipboard"};case"document":return w(async(C8,$8)=>{let S8=(await Promise.resolve().then(() => (Z4(),vO))).default,L8;if(B1.parentId){if(!B1.name)throw S8.validation("targetOptions.name is required when parentId is provided","MISSING_TARGET_NAME");L8={mode:"parentName",parentId:B1.parentId,name:B1.name,content:f$}}else if(B1.root){if(!B1.path)throw S8.validation("targetOptions.path is required when root is provided","MISSING_TARGET_PATH");L8={mode:"rootRelative",root:B1.root,path:B1.path,content:f$}}else{if(!B1.path)throw S8.validation("targetOptions.path is required for document target","MISSING_TARGET_PATH");L8={mode:"fullPath",store:B1.store||"A",path:B1.path,content:f$}}let u8=await Y.createDocument(C8,M8,L8,$8);if(B1.publish)await Y.publishDocument(C8,M8,{id:u8.getObjectId(),sessionId:Y8},$8);return{content:f$,target:"document",documentId:u8.getObjectId(),documentPath:B1.path||B1.name,published:!!B1.publish}});case"job":return w(async(C8,$8)=>{let S8=(await Promise.resolve().then(() => (Z4(),vO))).default;if(!f$||!f$.trim())throw S8.validation("Template rendered to empty prompt","MISSING_PROMPT");let L8=l8?.jobName||k8,u8=l8?.jobAgent||b8||"claude",M6=l8?.jobModel||Q8,x=l8?.jobWorktree||l6,w8=l8?.jobStreaming??D4,u=l8?.objectId,s=null;if(L8)s=J.renderTemplate(L8,B8||{});let Q=null;if(x&&P){let{worktrees:d}=await P.listWorktrees({projectPath:M8.projectPath}),H8=d.find((j8)=>j8.branch===x);if(!H8)throw S8.validation(`Worktree with branch '${x}' not found`,"WORKTREE_NOT_FOUND");Q=H8.path}let a=w1.extractStoreCode(x8),n=await O.createJob(C8,M8,{store:a,name:s,agent:u8,model:M6,prompt:f$,workingDirectory:Q,objectId:u,streaming:w8},$8);return{target:"job",jobId:n.id,jobName:n.name}});case"file":throw(await Promise.resolve().then(() => (Z4(),vO))).default.validation("file target not yet implemented","NOT_IMPLEMENTED");default:throw(await Promise.resolve().then(() => (Z4(),vO))).default.validation(`Unknown target: ${K3}`,"INVALID_TARGET")}},createStory:async(M8,{name:x8,storeCode:B8,state:F8})=>{return w(async(l8,Y8)=>{return await Z.createStory(l8,M8,{store:B8,name:x8,state:F8},Y8)})},renameStory:async(M8,{id:x8,name:B8})=>{return w(async(F8,l8)=>{return await Z.renameStory(F8,M8,{id:x8,name:B8},l8)})},updateStoryState:async(M8,{id:x8,state:B8})=>{return w(async(F8,l8)=>{return await Z.updateStoryState(F8,M8,{id:x8,state:B8},l8)})},deleteStory:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Z.deleteStory(B8,M8,{id:x8},F8)})},incrementStoryJobCount:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Z.incrementActiveJobCount(B8,M8,{id:x8},F8)})},decrementStoryJobCount:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Z.decrementActiveJobCount(B8,M8,{id:x8},F8)})},createAsset:async(M8,{store:x8,buffer:B8,mimeType:F8,originalFilename:l8,widthPx:Y8,heightPx:W8,displayWidth:J8,displayHeight:c8})=>{return w(async(o,X8)=>{return await H.createAsset(o,M8,{store:x8,buffer:B8,mimeType:F8,originalFilename:l8,widthPx:Y8,heightPx:W8,displayWidth:J8,displayHeight:c8},X8)})},deleteAsset:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await H.deleteAsset(B8,M8,{id:x8},F8)})},createJob:async(M8,{store:x8,name:B8,agent:F8,model:l8,prompt:Y8,workingDirectory:W8,objectId:J8,streaming:c8})=>{return w(async(o,X8)=>{return await O.createJob(o,M8,{store:x8,name:B8,agent:F8,model:l8,prompt:Y8,workingDirectory:W8,objectId:J8,streaming:c8},X8)})},deleteJob:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await O.deleteJob(B8,M8,{id:x8},F8)})},updateJobStatus:async(M8,{id:x8,status:B8,exitCode:F8,errorMessage:l8})=>{return w(async(Y8,W8)=>{return await O.updateJobStatus(Y8,M8,{id:x8,status:B8,exitCode:F8,errorMessage:l8},W8)})},updateJobOutput:async(M8,{id:x8,output:B8})=>{return w(async(F8,l8)=>{return await O.updateJobOutput(F8,M8,{id:x8,output:B8},l8)})},updateJobTokens:async(M8,{id:x8,tokensUsed:B8})=>{return w(async(F8,l8)=>{return await O.updateJobTokens(F8,M8,{id:x8,tokensUsed:B8},l8)})},updateJobMetadata:async(M8,{id:x8,durationMs:B8,totalCostUsd:F8,numTurns:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await O.updateJobMetadata(W8,M8,{id:x8,durationMs:B8,totalCostUsd:F8,numTurns:l8,sessionId:Y8},J8)})},continueJob:async(M8,{id:x8,prompt:B8,model:F8})=>{return w(async(l8,Y8)=>{return await O.continueJob(l8,M8,{id:x8,prompt:B8,model:F8},Y8)})},setJobPid:async(M8,{id:x8,pid:B8})=>{return w(async(F8,l8)=>{return await O.setJobPid(F8,M8,{id:x8,pid:B8},l8)})},clearJobPid:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await O.clearJobPid(B8,M8,{id:x8},F8)})},renameJob:async(M8,{id:x8,name:B8})=>{return w(async(F8,l8)=>{return await O.renameJob(F8,M8,{id:x8,name:B8},l8)})}})},XB=Object.freeze({create:pg6});Z4();var jB8=n6(wB8(),1),vB8=n6(I4(),1);import m$ from"fs/promises";import h$ from"path";import{createWriteStream as J21}from"fs";import z21 from"crypto";var R3=vB8.default("caw:export"),TB8=".caw-exports",GB8=".tmp",W21=2,Z21=({store:$,folderService:K,documentService:q,templateService:Y,storyService:J,assetService:z,assetsDir:W})=>{let Z=()=>{let R=new Date,E=R.getFullYear(),C=String(R.getMonth()+1).padStart(2,"0"),g=String(R.getDate()).padStart(2,"0"),S=String(R.getHours()).padStart(2,"0"),D=String(R.getMinutes()).padStart(2,"0"),L=String(R.getSeconds()).padStart(2,"0");return`${E}-${C}-${g}-${S}${D}${L}`},H=async(R)=>{let E=h$.join(R,TB8),C=h$.join(E,GB8);try{return await m$.mkdir(E,{recursive:!0}),await m$.mkdir(C,{recursive:!0}),E}catch(g){if(g.code==="EACCES")throw I.validation("Permission denied creating export directory","EXPORT_ERROR");if(g.code==="ENOSPC")throw I.validation("Insufficient disk space","EXPORT_ERROR");throw R3("Error creating export directory: [%s] %s",g.code||"UNKNOWN",g.message),I.validation(`Failed to create export directory: ${g.message} (${g.code||"UNKNOWN"})`,"EXPORT_ERROR")}},O=async(R,E,C,g)=>{let S=[],D=async(L,m)=>{let c=await K.listFolderContents(R,E,{folderId:L,type:C,storeCode:g});for(let e of c)if(e.getParentId()!==null)S.push({entity:e,depth:m,contentType:C}),await D(e.getObjectId(),m+1)};return await D(null,0),S},X=async(R,E,C)=>{let g=[],S=[],D=async(L)=>{let m=await q.listDocuments(R,E,{parentId:L,storeCode:C});for(let e of m){let _8=e.getPublishedVersionNumber();if(_8!==null){let T8=await q.readVersion(R,E,{id:e.getObjectId(),versionNumber:_8});g.push({entity:e,version:T8})}else S.push(e)}let c=await K.listFolderContents(R,E,{folderId:L,type:"d",storeCode:C});for(let e of c)await D(e.getObjectId())};return await D(null),{published:g,draftOnly:S}},P=async(R,E,C)=>{let g=[],S=[],D=async(L)=>{let m=await q.listDocuments(R,E,{parentId:L,storeCode:C,type:"t"});for(let e of m){let _8=e.getPublishedVersionNumber();if(_8!==null){let T8=await q.readVersion(R,E,{id:e.getObjectId(),versionNumber:_8});g.push({entity:e,version:T8})}else S.push(e)}let c=await K.listFolderContents(R,E,{folderId:L,type:"t",storeCode:C});for(let e of c)await D(e.getObjectId())};return await D(null),{published:g,draftOnly:S}},w=async(R,E,C)=>{let g=await z.listAssets(R,E,{store:C}),S=[];for(let D of g){let L=D.hash,m=L.substring(0,2),c=h$.join(W,m,L);try{let e=await m$.readFile(c);S.push({entity:D,buffer:e})}catch(e){if(e.code==="ENOENT"){R3("Warning: Skipping asset %s - blob file missing",D.id);continue}throw e}}return R3("Collected %d assets for export",S.length),S},T=new Set(["draft_version","latest_published_version"]),G=(R)=>{let E=typeof R.getFields==="function"?R.getFields():R.fields;if(!E||typeof E!=="object"||Object.keys(E).length===0)return;let C={};for(let[g,S]of Object.entries(E)){if(T.has(g))continue;let D;if(typeof S?.getValues==="function")D=S.getValues();else if(Array.isArray(S))D=S;else D=[S];C[g]=D.length===1?D[0]:D}return Object.keys(C).length>0?C:void 0},j=async(R,E,C)=>{let g=[],S=[],D={published:[],draftOnly:[]};if(!J)return R3("StoryService not available, skipping story export"),{stories:g,folders:S,documents:D};let L=await J.listStories(R,E,{store:C});R3("Found %d stories for export",L.length);for(let m of L)g.push(m),await v(R,E,m,C,S,D);return{stories:g,folders:S,documents:D}},v=async(R,E,C,g,S,D)=>{let L=C.id||C.getObjectId?.()||C,m=await $.listFolderContents(R,E,{folderId:L,type:"s",storeCode:g});for(let e of m){if(e.getParentId()!==null)S.push({entity:e,contentType:"s"});await v(R,E,e.getObjectId(),g,S,D)}let c=await q.listDocuments(R,E,{parentId:L,storeCode:g});for(let e of c){let _8=e.getPublishedVersionNumber();if(_8!==null){let T8=await q.readVersion(R,E,{id:e.getObjectId(),versionNumber:_8});D.published.push({entity:e,version:T8})}else D.draftOnly.push(e)}},M=async(R)=>{try{await m$.rm(R,{recursive:!0,force:!0})}catch(E){R3("Warning: Failed to cleanup temp directory: %s",E.message)}};return Object.freeze({listExports:async(R,E,{projectPath:C})=>{let g=h$.join(C,TB8);try{let S=await m$.readdir(g),D=[];for(let L of S)if(L.endsWith(".zip")){let m=h$.join(g,L),c=await m$.stat(m);D.push({filename:L,timestamp:c.mtime.toISOString(),size:c.size})}return R3("Found %d export files",D.length),D}catch(S){if(S.code==="ENOENT")return[];throw S}},exportPreview:async(R,E,{storeCode:C})=>{let g=await O(R,E,"d",C),S=await O(R,E,"t",C),{published:D,draftOnly:L}=await X(R,E,C),{published:m,draftOnly:c}=await P(R,E,C),_8={assets:(z?await z.listAssets(R,E,{store:C}):[]).map((D8)=>({id:D8.id,originalFilename:D8.originalFilename,mimeType:D8.mimeType,sizeBytes:D8.sizeBytes})),folders:[...g,...S].map((D8)=>({id:D8.entity.getObjectId(),path:D8.entity.getPath(),name:D8.entity.getName()})),documents:D.map((D8)=>({id:D8.entity.getObjectId(),path:D8.entity.getPath(),name:D8.entity.getName()})),templates:m.map((D8)=>({id:D8.entity.getObjectId(),path:D8.entity.getPath(),name:D8.entity.getName()}))},T8={documents:L.map((D8)=>({id:D8.getObjectId(),path:D8.getPath(),name:D8.getName()})),templates:c.map((D8)=>({id:D8.getObjectId(),path:D8.getPath(),name:D8.getName()}))},d8=_8.assets.length+_8.folders.length+_8.documents.length+_8.templates.length,H6=T8.documents.length+T8.templates.length;return R3("Preview: %d published (%d assets), %d draft-only",d8,_8.assets.length,H6),{toExport:_8,draftOnly:T8}},exportDocuments:async(R,E,{storeCode:C,projectPath:g})=>{R3("Starting export for store %s",C);let S=await H(g),D=z21.randomUUID(),L=h$.join(S,GB8,D);await m$.mkdir(L,{recursive:!0});try{let m=await O(R,E,"d",C),c=await O(R,E,"t",C),e=[...m,...c],{published:_8,draftOnly:T8}=await X(R,E,C),{published:d8,draftOnly:H6}=await P(R,E,C),D8=z?await w(R,E,C):[],{stories:m8,folders:a8,documents:Z6}=await j(R,E,C),_6=[...e,...a8],u6=[..._8,...Z6.published],y6=[...T8,...Z6.draftOnly];R3("Found %d folders, %d documents, %d templates, %d assets, %d stories",_6.length,u6.length,d8.length,D8.length,m8.length);let s6={},L6=await $.readStoryRootFolder(R,E,{storeCode:C});if(L6){let h8=L6.toJSON(),p8=G(h8);if(p8&&Object.keys(p8).length>0)s6[L6.getObjectId()]={subtype:"root_s",fields:p8}}let P8=[...D8.map((h8)=>({id:h8.entity.id,type:"asset",hash:h8.entity.hash,mimeType:h8.entity.mimeType,sizeBytes:h8.entity.sizeBytes,originalFilename:h8.entity.originalFilename,widthPx:h8.entity.widthPx,heightPx:h8.entity.heightPx,displayWidth:h8.entity.displayWidth,displayHeight:h8.entity.displayHeight})),...m8.map((h8)=>{let p8={id:h8.id,type:"story",name:h8.name},s8=G(h8);if(s8)p8.fields=s8;return p8}),..._6.map((h8)=>{let p8={id:h8.entity.getObjectId(),type:"folder",path:h8.entity.getPath(),contentType:h8.contentType},s8=h8.entity.getSubtype?.();if(s8)p8.subtype=s8;let q6=G(h8.entity);if(q6)p8.fields=q6;return p8}),...u6.map((h8)=>{let p8={id:h8.entity.getObjectId(),type:"document",path:h8.entity.getPath()},s8=h8.entity.getSubtype?.();if(s8)p8.subtype=s8;else{let X6=h8.entity.getPath(),f6=X6.split("/");if(f6.length>=4&&f6[2]==="tasks")R3('WARN: Document %s in tasks folder missing subtype, inferring "task"',X6),p8.subtype="task"}let q6=G(h8.entity);if(q6)p8.fields=q6;return p8}),...d8.map((h8)=>{let p8={id:h8.entity.getObjectId(),type:"template",path:h8.entity.getPath()},s8=h8.entity.getSubtype?.();if(s8)p8.subtype=s8;let q6=G(h8.entity);if(q6)p8.fields=q6;return p8})],O8={version:W21,exportedAt:new Date().toISOString(),entities:P8};if(Object.keys(s6).length>0)O8.rootFolderFields=s6;await m$.writeFile(h$.join(L,"manifest.json"),JSON.stringify(O8,null,2),"utf-8");for(let h8 of _6){if(h8.entity.getParentId()===null)continue;let p8=h$.join(L,h8.entity.getPath());await m$.mkdir(p8,{recursive:!0})}await m$.mkdir(h$.join(L,"Documents"),{recursive:!0}),await m$.mkdir(h$.join(L,"Templates"),{recursive:!0}),await m$.mkdir(h$.join(L,"Stories"),{recursive:!0});for(let h8 of u6){let p8=h$.join(L,h8.entity.getPath()),s8=h8.version.content;await m$.mkdir(h$.dirname(p8),{recursive:!0}),await m$.writeFile(p8,s8,"utf-8")}for(let h8 of d8){let p8=h$.join(L,h8.entity.getPath()),s8=h8.version.content;await m$.mkdir(h$.dirname(p8),{recursive:!0}),await m$.writeFile(p8,s8,"utf-8")}if(D8.length>0){let h8=h$.join(L,"assets");await m$.mkdir(h8,{recursive:!0});for(let p8 of D8){let s8=p8.entity.id,q6=h$.join(h8,`${s8}.bin`);await m$.writeFile(q6,p8.buffer);let X6=h$.join(h8,`${s8}.json`);await m$.writeFile(X6,JSON.stringify({id:s8,hash:p8.entity.hash,mimeType:p8.entity.mimeType,sizeBytes:p8.entity.sizeBytes,originalFilename:p8.entity.originalFilename,widthPx:p8.entity.widthPx,heightPx:p8.entity.heightPx,displayWidth:p8.entity.displayWidth,displayHeight:p8.entity.displayHeight},null,2),"utf-8")}}for(let h8 of P8){if(h8.type==="folder"||h8.type==="story")continue;let p8;if(h8.type==="asset")p8=h$.join(L,"assets",`${h8.id}.bin`);else if(h8.type==="document"||h8.type==="template")p8=h$.join(L,h8.path);else{R3("Unknown entity type in validation: %s",h8.type);continue}try{await m$.access(p8)}catch(s8){throw I.validation(`Manifest entry missing file: ${h8.id||h8.path}`,"EXPORT_VALIDATION_FAILED")}}let f8=`caw-export-${Z()}.zip`,y8=h$.join(S,f8),i8=J21(y8),o8=jB8.default("zip",{zlib:{level:9}});o8.on("error",async(h8)=>{throw await M(L),R3("Zip creation error: %s",h8.message),I.validation(`Export failed: ${h8.message}`,"EXPORT_ERROR")}),o8.pipe(i8),o8.directory(L,!1),await o8.finalize(),await new Promise((h8,p8)=>{i8.on("close",h8),i8.on("error",p8),setTimeout(()=>{p8(Error("Zip creation timeout"))},60000)}),R3("Created zip: %s (%d bytes)",f8,o8.pointer()),await M(L);let z6=P8.length;return R3("Export complete: %s (%d entities)",f8,z6),{success:!0,filename:f8,path:y8,counts:{assets:D8.length,stories:m8.length,folders:_6.length,documents:u6.length,templates:d8.length},draftOnlySkipped:{documents:y6.length,templates:H6.length}}}catch(m){throw await M(L),m}}})},VB8=Object.freeze({create:Z21});Z4();var tB8=n6(rB8(),1),eB8=n6(I4(),1);import Tq from"fs/promises";import s5 from"path";import b21 from"crypto";var P1=eB8.default("caw:import"),rl=($)=>{if(!$||typeof $!=="string")throw Error(`Invalid export path: ${$}`);let K={Documents:"d",Templates:"t",Stories:"s"},q=$.indexOf("/");if(q===-1){let z=K[$];if(z)return{path:"",type:z};throw Error(`Invalid export path: ${$}`)}let Y=$.slice(0,q),J=K[Y];if(!J)throw Error(`Unknown root folder: ${Y}`);return{path:$.slice(q+1),type:J}},sl=".caw-exports",sB8=".tmp",y21=[1,2],u21=/\b([A-Z][adtfns]\d+)\b/g,m21=({store:$,folderService:K,documentService:q,templateService:Y,storyService:J,fieldService:z,assetService:W,assetsDir:Z})=>{let H=(v,M)=>{if(!v)return v;return v.replace(u21,(f,k)=>{return M[k]??f})},O=(v)=>{if(!Array.isArray(v))return!1;if(v.length!==Oz.length)return!0;return!v.every((M,f)=>M===Oz[f])},X=async(v,M,f,k,N,R)=>{if(!k||typeof k!=="object"||!z)return;for(let[E,C]of Object.entries(k)){if(E==="activeJobCount")continue;let g=E==="dependsOn",S=C;if(g)if(Array.isArray(C))S=C.map((D)=>N[D]||D);else S=N[C]||C;if(Array.isArray(S))await z.setFieldValue(v,M,{entityId:f,fieldName:E,values:S},R);else await z.setFieldValue(v,M,{entityId:f,fieldName:E,value:S},R)}},P=async(v)=>{try{await Tq.rm(v,{recursive:!0,force:!0})}catch(M){P1("Warning: Failed to cleanup temp directory: %s",M.message)}},w=async(v,M,{storeCode:f})=>{let k=await K.listFolderContents(v,M,{folderId:null,type:"d",storeCode:f}),N=await K.listFolderContents(v,M,{folderId:null,type:"t",storeCode:f}),R=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"d"}),E=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"t"}),C=k.length===0&&N.length===0&&R.length===0&&E.length===0;return P1("Store %s empty check: %s",f,C),C},T=async(v,M,{tempPath:f,storeCode:k,idMapping:N,enqueuePostCommitHook:R})=>{let E=s5.join(f,"assets"),C;try{C=await Tq.readdir(E)}catch(D){if(D.code==="ENOENT")return P1("No assets directory in export"),0;throw D}let g=C.filter((D)=>D.endsWith(".json"));if(P1("Found %d assets to import",g.length),!W||!Z){if(g.length>0)throw I.validation("Export contains assets but asset service is not configured","ASSET_SERVICE_MISSING");return 0}let S=0;for(let D of g){let L=s5.join(E,D),m=await Tq.readFile(L,"utf-8"),c=JSON.parse(m),e=D.replace(".json",".bin"),_8=s5.join(E,e),T8=await Tq.readFile(_8),d8=await W.createAsset(v,M,{store:k,buffer:T8,mimeType:c.mimeType,originalFilename:c.originalFilename,widthPx:c.widthPx,heightPx:c.heightPx,displayWidth:c.displayWidth,displayHeight:c.displayHeight},R);N[c.id]=d8.id,S++}return P1("Imported %d assets",S),S},G=async(v,M,{manifest:f,tempPath:k,storeCode:N})=>{return P1("Starting transaction..."),await v.transaction().execute(async(R)=>{let E={},C=(m8)=>{},g=await T(R,M,{tempPath:k,storeCode:N,idMapping:E,enqueuePostCommitHook:C});if(P1("Phase 0 complete - imported %d assets",g),f.rootFolderFields&&z){P1("Phase 0.25: Restoring root folder fields");for(let[m8,a8]of Object.entries(f.rootFolderFields)){let Z6;if(a8.subtype==="root_s")Z6=await $.readStoryRootFolder(R,M,{storeCode:N});if(Z6&&a8.fields){for(let[_6,u6]of Object.entries(a8.fields))if(Array.isArray(u6))await z.setFieldValue(R,M,{entityId:Z6.getObjectId(),fieldName:_6,values:u6},C);else await z.setFieldValue(R,M,{entityId:Z6.getObjectId(),fieldName:_6,value:u6},C);P1("Restored fields for root folder %s (%s)",Z6.getObjectId(),a8.subtype)}}P1("Phase 0.25 complete - restored root folder fields")}let S=f.entities.filter((m8)=>m8.type==="story"),D=0,L={};if(S.length>0&&J){P1("Phase 0.5: Creating %d stories",S.length);let m8=f.entities.filter((a8)=>a8.type==="folder"&&a8.subtype==="tasks");for(let a8 of m8){let Z6=a8.path.split("/");if(Z6.length>=3&&Z6[0]==="Stories"){let _6=Z6[1];L[_6]=a8.id}}for(let a8 of S){let Z6=a8.fields?.state||"waiting",_6=await J.createStory(R,M,{store:N,name:a8.name,state:Z6},C);E[a8.id]=_6.id;let u6=L[a8.name];if(u6&&_6.tasksFolder){E[u6]=_6.tasksFolder.id;let y6=f.entities.find((s6)=>s6.id===u6);if(y6?.fields?.states){let s6=y6.fields.states;if(O(Array.isArray(s6)?s6:[s6]))await z.setFieldValue(R,M,{entityId:_6.tasksFolder.id,fieldName:"states",values:Array.isArray(s6)?s6:[s6]},C)}}D++}P1("Phase 0.5 complete - created %d stories",D)}let m=f.entities.filter((m8)=>m8.type==="folder"&&m8.subtype!=="tasks");P1("Phase 1: Creating %d folders (excluding tasks folders)",m.length);let c=0;for(let m8 of m){let{path:a8,type:Z6}=rl(m8.path);if(!a8)continue;if(E[m8.id])continue;let _6;if(Z6==="s"){let u6=a8.split("/"),y6=u6[u6.length-1],s6=u6.slice(0,-1).join("/"),L6;if(u6.length===1){P1("Unexpected folder directly under Stories root: %s",a8);continue}else if(u6.length===2){let P8=u6[0],O8=f.entities.find((f8)=>f8.type==="story"&&f8.name===P8);if(O8&&E[O8.id])L6=E[O8.id]}else{let P8=f.entities.find((O8)=>O8.type==="folder"&&O8.path===`Stories/${s6}`);if(P8&&E[P8.id])L6=E[P8.id]}if(!L6){P1("Could not resolve parent for story folder: %s",m8.path);continue}_6=await K.createFolder(R,M,{mode:"parentName",parentId:L6,name:y6},C)}else _6=await K.createFolder(R,M,{store:N,path:a8,type:Z6},C);E[m8.id]=_6.getObjectId(),c++}P1("Phase 1 complete - created %d folders (skipped root folders)",c);let e=f.entities.filter((m8)=>m8.type==="document"),_8=[];P1("Phase 2: Reading %d documents",e.length);for(let m8 of e){let a8=s5.join(k,m8.path),Z6=await Tq.readFile(a8,"utf-8");_8.push({oldId:m8.id,path:m8.path,content:Z6,subtype:m8.subtype,fields:m8.fields})}P1("Phase 2 complete - read %d documents",_8.length),P1("Phase 3: Creating %d document entities",_8.length);let T8=[];for(let m8 of _8){let{path:a8,type:Z6}=rl(m8.path),_6;if(Z6==="s"){let y6=a8.split("/"),s6=y6[0],L6=y6.slice(0,-1).join("/"),P8=y6[y6.length-1],O8=f.entities.find((y8)=>y8.type==="folder"&&y8.path===`Stories/${L6}`),f8;if(O8&&E[O8.id])f8=E[O8.id];else{let y8=f.entities.find((i8)=>i8.type==="story"&&i8.name===s6);if(y8&&E[y8.id])f8=E[y8.id]}if(!f8)throw I.validation(`Cannot resolve parent folder for story document: ${m8.path}`,"IMPORT_RESOLUTION_FAILED");_6={mode:"parentName",parentId:f8,name:P8}}else _6={store:N,path:a8,type:Z6};if(m8.subtype)_6.subtype=m8.subtype;else if(Z6==="s"){let y6=a8.split("/");if(y6.length>=3&&y6[1]==="tasks")P1('WARN: Document %s in tasks folder missing subtype, inferring "task"',m8.path),_6.subtype="task"}let u6=await q.createDocument(R,M,_6,C);E[m8.oldId]=u6.getObjectId(),T8.push({document:u6,originalContent:m8.content,fields:m8.fields})}P1("Phase 3 complete - created %d document entities",T8.length);let d8=f.entities.filter((m8)=>m8.type==="template"),H6=[];P1("Phase 4: Reading %d templates",d8.length);for(let m8 of d8){let a8=s5.join(k,m8.path),Z6=await Tq.readFile(a8,"utf-8");H6.push({oldId:m8.id,path:m8.path,content:Z6,subtype:m8.subtype,fields:m8.fields})}P1("Phase 4 complete - read %d templates",H6.length),P1("Phase 5: Creating %d template entities",H6.length);let D8=[];for(let m8 of H6){let{path:a8,type:Z6}=rl(m8.path),_6={store:N,path:a8,type:Z6};if(m8.subtype)_6.subtype=m8.subtype;let u6=await q.createDocument(R,M,_6,C);E[m8.oldId]=u6.getObjectId(),D8.push({template:u6,originalContent:m8.content,fields:m8.fields})}P1("Phase 5 complete - created %d template entities",D8.length),P1("Phase 6: Remapping and saving content for %d documents",T8.length);for(let{document:m8,originalContent:a8,fields:Z6}of T8){let _6=H(a8,E);if(await q.saveDraft(R,M,{id:m8.getObjectId(),content:_6,sessionId:"import-service"},C),await q.publishDocument(R,M,{id:m8.getObjectId()},C),Z6&&f.version>=2)await X(R,M,m8.getObjectId(),Z6,E,C)}P1("Phase 6 complete - saved and published %d documents",T8.length),P1("Phase 7: Remapping and saving content for %d templates",D8.length);for(let{template:m8,originalContent:a8,fields:Z6}of D8){let _6=H(a8,E);if(await q.saveDraft(R,M,{id:m8.getObjectId(),content:_6,sessionId:"import-service"},C),await q.publishDocument(R,M,{id:m8.getObjectId()},C),Z6&&f.version>=2)await X(R,M,m8.getObjectId(),Z6,E,C)}return P1("Phase 7 complete - saved and published %d templates",D8.length),P1("Transaction committed successfully"),{success:!0,counts:{assets:g,stories:D,folders:c,documents:T8.length,templates:D8.length},remapped:E}})};return Object.freeze({isStoreEmpty:w,importDocuments:async(v,M,{filename:f,storeCode:k,projectPath:N})=>{P1("Starting import from %s to store %s",f,k);let R=s5.join(N,sl,f);try{await Tq.access(R),P1("Zip file found: %s",R)}catch(D){throw I.notFound(`Export file not found: ${f}`,"EXPORT_NOT_FOUND")}P1("Validating zip and manifest...");let E=await w(v,M,{storeCode:k});if(!E)throw I.conflict("Store not empty - import requires empty store","STORE_NOT_EMPTY");P1("Store empty check: %s",E);let C=b21.randomUUID(),g=s5.join(N,sl,sB8,C),S=s5.join(N,sl,sB8);await Tq.mkdir(S,{recursive:!0});try{new tB8.default(R).extractAllTo(g,!0),P1("Extracted zip to: %s",g)}catch(D){throw I.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let D=s5.join(g,"manifest.json"),L;try{let e=await Tq.readFile(D,"utf-8");L=JSON.parse(e)}catch(e){throw I.validation(`Failed to read manifest: ${e.message}`,"MANIFEST_READ_FAILED")}if(!y21.includes(L.version))throw I.validation(`Unsupported manifest version: ${L.version}`,"UNSUPPORTED_VERSION");if(!L.entities||!Array.isArray(L.entities))throw I.validation("Invalid manifest structure","MANIFEST_READ_FAILED");P1("Manifest valid: version=%d, entities=%d",L.version,L.entities.length);for(let e of L.entities){if(e.type==="folder"||e.type==="story")continue;let _8;if(e.type==="asset")_8=s5.join(g,"assets",`${e.id}.bin`);else if(e.type==="document"||e.type==="template")_8=s5.join(g,e.path);else{P1("Unknown entity type in import validation: %s",e.type);continue}try{await Tq.access(_8)}catch(T8){throw I.validation(`Missing file for manifest entry: ${e.path||e.id}`,"IMPORT_VALIDATION_FAILED")}}P1("All content files validated");let m=await G(v,M,{manifest:L,tempPath:g,storeCode:k}),c=m.counts.folders+m.counts.documents+m.counts.templates;return P1("Import complete: %d entities imported",c),m}finally{await P(g)}}})},$U8=Object.freeze({create:m21});var B21=($)=>{let{name:K,interval:q,execute:Y}=$,J=null,z=!1,W=null,Z=null,H=0,O=null,M=Object.freeze({getName:()=>K,getInterval:()=>q,getIsRunning:()=>z,getLastRun:()=>W,getLastError:()=>Z,getRunCount:()=>H,getNextRun:()=>O}),f=async()=>{try{await Y(),W=new Date().toISOString(),Z=null,H++}catch(C){console.error(`[CronJob] ${K} failed:`,C),Z={message:C.message,timestamp:new Date().toISOString()}}if(z)O=new Date(Date.now()+q).toISOString()},k=()=>{if(J!==null)return;J=setInterval(f,q),z=!0,O=new Date(Date.now()+q).toISOString()},N=()=>{if(J===null)return;clearInterval(J),J=null,z=!1,O=null},E=Object.freeze({start:k,stop:N,restart:()=>{N(),k()}});return{jobFns:M,controlFns:E}},EC=Object.freeze({create:B21});var KU8=n6(I4(),1),U21=KU8.default("caw:cron:cleanup-edit-states"),qU8=async($)=>{let K=new Date(Date.now()-gJ).toISOString();try{let q=await $.selectFrom("field_definitions as fd").innerJoin("entity_types as et","et.id","fd.owner_entity_type_id").select(["fd.id","fd.name","fd.primitive_type"]).where("fd.name","in",["edit_session_id","edit_started_at","edit_last_activity_at"]).where("et.code","in",["d","t"]).where("et.subtype","is",null).execute(),Y=q.filter((O)=>O.name==="edit_last_activity_at").map((O)=>O.id),J=q.filter((O)=>O.name==="edit_session_id").map((O)=>O.id),z=q.filter((O)=>O.name==="edit_started_at").map((O)=>O.id);if(Y.length===0)return{expired:0};let W=await $.selectFrom("date_fields").select(["entity_id"]).where("field_definition_id","in",Y).where("value","<",K).execute();if(W.length===0)return{expired:0};let Z=W.map((O)=>O.entity_id);if(J.length>0)await $.deleteFrom("string_fields").where("entity_id","in",Z).where("field_definition_id","in",J).execute();let H=[...z,...Y];if(H.length>0)await $.deleteFrom("date_fields").where("entity_id","in",Z).where("field_definition_id","in",H).execute();if(W.length>0)U21("Cleaned up %d expired edit locks (older than %d minutes)",W.length,gJ/60000);return{expired:W.length}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var p21=({db:$})=>{let{jobFns:K,controlFns:q}=EC.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await qU8($)}});return{job:Object.freeze(K),control:q}},YU8=Object.freeze({create:p21});var F21=({db:$})=>{let K=new Map,q=(O,X)=>{let{job:P,control:w}=O.create(X);K.set(P.getName(),{job:P,control:w})},Y=(O)=>{let X=K.get(O);if(!X)throw Error(`Job not found: ${O}`);let P=X.job.getIsRunning();return X.control.start(),{name:O,status:P?"already-running":"started",isRunning:X.job.getIsRunning()}},J=(O)=>{let X=K.get(O);if(!X)throw Error(`Job not found: ${O}`);let P=X.job.getIsRunning();return X.control.stop(),{name:O,status:P?"stopped":"already-stopped",isRunning:X.job.getIsRunning()}},z=(O)=>{let X=K.get(O);if(!X)throw Error(`Job not found: ${O}`);return X.control.restart(),{name:O,status:"restarted",isRunning:X.job.getIsRunning()}},W=()=>{let O=[];for(let[X,{job:P}]of K.entries())O.push({name:P.getName(),interval:P.getInterval(),isRunning:P.getIsRunning(),lastRun:P.getLastRun(),lastError:P.getLastError(),runCount:P.getRunCount(),nextRun:P.getNextRun()});return O},Z=()=>{for(let[O,{control:X}]of K.entries())X.start()},H=()=>{for(let[O,{control:X}]of K.entries())X.stop()};return q(YU8,{db:$}),Object.freeze({register:q,start:Y,stop:J,restart:z,list:W,startAll:Z,stopAll:H})},JU8=Object.freeze({create:F21});import Ul8 from"node:process";import ZU8 from"node:process";import d21 from"node:os";import n21 from"node:fs";import l21 from"node:fs";import zU8 from"node:fs";var tl;function c21(){try{return zU8.statSync("/.dockerenv"),!0}catch{return!1}}function Q21(){try{return zU8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function el(){if(tl===void 0)tl=c21()||Q21();return tl}var $i,i21=()=>{try{return l21.statSync("/run/.containerenv"),!0}catch{return!1}};function SC(){if($i===void 0)$i=i21()||el();return $i}var WU8=()=>{if(ZU8.platform!=="linux")return!1;if(d21.release().toLowerCase().includes("microsoft")){if(SC())return!1;return!0}try{return n21.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!SC():!1}catch{return!1}},HU8=ZU8.env.__IS_WSL_TEST__?WU8:WU8();import Ki from"node:process";function qi(){if(Ki.platform!=="linux")return!1;if(Ki.env.WAYLAND_DISPLAY)return!0;if(Ki.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function E$($){if(typeof $!=="object"||$===null)return!1;let K=Object.getPrototypeOf($);return(K===null||K===Object.prototype||Object.getPrototypeOf(K)===null)&&!(Symbol.toStringTag in $)&&!(Symbol.iterator in $)}import{fileURLToPath as o21}from"node:url";var TP=($,K)=>{let q=Ji(a21($));if(typeof q!=="string")throw TypeError(`${K} must be a string or a file URL: ${q}.`);return q},a21=($)=>Yi($)?$.toString():$,Yi=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,Ji=($)=>$ instanceof URL?o21($):$;var LC=($,K=[],q={})=>{let Y=TP($,"First argument"),[J,z]=E$(K)?[[],K]:[K,q];if(!Array.isArray(J))throw TypeError(`Second argument must be either an array of arguments or an options object: ${J}`);if(J.some((H)=>typeof H==="object"&&H!==null))throw TypeError(`Second argument must be an array of strings: ${J}`);let W=J.map(String),Z=W.find((H)=>H.includes("\x00"));if(Z!==void 0)throw TypeError(`Arguments cannot contain null bytes ("\\0"): ${Z}`);if(!E$(z))throw TypeError(`Last argument must be an options object: ${z}`);return[Y,W,z]};import{ChildProcess as qz1}from"node:child_process";import{StringDecoder as r21}from"node:string_decoder";var{toString:OU8}=Object.prototype,XU8=($)=>OU8.call($)==="[object ArrayBuffer]",e$=($)=>OU8.call($)==="[object Uint8Array]",RY=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),s21=new TextEncoder,PU8=($)=>s21.encode($),t21=new TextDecoder,IC=($)=>t21.decode($),wU8=($,K)=>{return e21($,K).join("")},e21=($,K)=>{if(K==="utf8"&&$.every((z)=>typeof z==="string"))return $;let q=new r21(K),Y=$.map((z)=>typeof z==="string"?PU8(z):z).map((z)=>q.write(z)),J=q.end();return J===""?Y:[...Y,J]},Kv=($)=>{if($.length===1&&e$($[0]))return $[0];return zi($z1($))},$z1=($)=>$.map((K)=>typeof K==="string"?PU8(K):K),zi=($)=>{let K=new Uint8Array(Kz1($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},Kz1=($)=>{let K=0;for(let q of $)K+=q.length;return K};var vU8=($)=>Array.isArray($)&&Array.isArray($.raw),VU8=($,K)=>{let q=[];for(let[z,W]of $.entries())q=Yz1({templates:$,expressions:K,tokens:q,index:z,template:W});if(q.length===0)throw TypeError("Template script must not be empty");let[Y,...J]=q;return[Y,J,{}]},Yz1=({templates:$,expressions:K,tokens:q,index:Y,template:J})=>{if(J===void 0)throw TypeError(`Invalid backslash sequence: ${$.raw[Y]}`);let{nextTokens:z,leadingWhitespaces:W,trailingWhitespaces:Z}=Jz1(J,$.raw[Y]),H=GU8(q,z,W);if(Y===K.length)return H;let O=K[Y],X=Array.isArray(O)?O.map((P)=>jU8(P)):[jU8(O)];return GU8(H,X,Z)},Jz1=($,K)=>{if(K.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let q=[],Y=0,J=TU8.has(K[0]);for(let W=0,Z=0;W<$.length;W+=1,Z+=1){let H=K[Z];if(TU8.has(H)){if(Y!==W)q.push($.slice(Y,W));Y=W+1}else if(H==="\\"){let O=K[Z+1];if(O===`
534
+ `),i8=f8[O8-1].match(/^(?:[-*+] |\d+\. )\[([ xX])\] (.+)$/),o8=0,z6=/^(?:[-*+] |\d+\. )\[([ xX])\] .+$/;for(let h8=0;h8<O8;h8++)if(z6.test(f8[h8]))o8++;return{text:i8[2],checked:i8[1]!==" ",lineNumber:O8,itemNumber:o8}};return Object.freeze({createDocument:w,createTemplate:T,readDocument:G,readDocumentByPath:j,updateDocumentPath:v,deleteDocument:M,saveDraft:f,readDraft:k,publishDocument:N,discardDraft:R,readVersion:E,getVersions:C,setEditState:g,clearEditState:S,getEditState:D,listDocuments:L,editDocument:m,batchEditDocument:c,readLines:e,readBetweenMarkers:_8,getDocumentStats:T8,readHeadings:d8,readSection:H6,readFrontmatter:D8,readChecklist:m8,checkChecklistItem:async(P8,O8,{id:f8,lineNumber:y8,checked:i8,includeDraft:o8=!1,preview:z6=!1,sessionId:h8},p8)=>{let{entity:s8}=await G(P8,O8,{id:f8}),q6=o8?s8.getDraftContent()??s8.getPublishedContent()??"":s8.getPublishedContent()??"",X6=Mm(q6,{lineNumber:y8,checked:i8});if(z6)return{preview:!0,diff:bO(q6,X6.newContent),item:a8(X6.newContent,y8)};return await f(P8,O8,{id:f8,content:X6.newContent,sessionId:h8},p8),{applied:!0,item:a8(X6.newContent,y8)}},toggleChecklistItem:async(P8,O8,{id:f8,lineNumber:y8,includeDraft:i8=!1,preview:o8=!1,sessionId:z6},h8)=>{let{entity:p8}=await G(P8,O8,{id:f8}),s8=i8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",q6=Q08(s8,{lineNumber:y8});if(o8)return{preview:!0,diff:bO(s8,q6.newContent),item:a8(q6.newContent,y8)};return await f(P8,O8,{id:f8,content:q6.newContent,sessionId:z6},h8),{applied:!0,item:a8(q6.newContent,y8)}},batchCheckChecklistItems:async(P8,O8,{id:f8,items:y8,includeDraft:i8=!1,preview:o8=!1,sessionId:z6},h8)=>{let{entity:p8}=await G(P8,O8,{id:f8}),s8=i8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",q6=l08(s8,{items:y8}),X6=y8.map((f6)=>a8(q6.newContent,f6.lineNumber));if(o8)return{preview:!0,diff:bO(s8,q6.newContent),items:X6,count:q6.details.count};return await f(P8,O8,{id:f8,content:q6.newContent,sessionId:z6},h8),{applied:!0,items:X6,count:q6.details.count}},specialiseDocument:async(P8,O8,{id:f8,subtype:y8,fields:i8},o8)=>{let{entity:z6}=await G(P8,O8,{id:f8});y.factory(z6.getSubtype()!==null,I.validation,`Entity is already specialised to subtype: ${z6.getSubtype()}`,"ALREADY_SPECIALISED");let{storeCode:h8,typeCode:p8}=a6.resolveEntityId(f8),s8=(await Promise.resolve().then(() => (Yk(),PP8))).default;try{await s8.readEntityTypeId(P8,O8,p8,y8)}catch(f6){throw I.validation(`Invalid subtype: ${y8}`,"INVALID_SUBTYPE")}await J.validateRequiredFields(P8,O8,{store:h8,code:p8,subtype:y8,fields:i8});let q6=await $.updateEntityType(P8,O8,{id:f8,subtype:y8},o8);if(i8&&Object.keys(i8).length>0)for(let[f6,M8]of Object.entries(i8))await J.setFieldValue(P8,O8,{entityId:f8,fieldName:f6,...Array.isArray(M8)?{values:M8}:{value:M8}},o8);let{entity:X6}=await G(P8,O8,{id:f8});return{entity:X6}},generaliseDocument:async(P8,O8,{id:f8},y8)=>{let{entity:i8}=await G(P8,O8,{id:f8}),o8=i8.getSubtype();y.factory(o8===null,I.validation,"Entity is already generic (has no subtype)","ALREADY_GENERIC");let z6=await $.readFolder(P8,O8,{id:i8.getParentId()});if(z6&&await G4.isInsideTasksFolder(P8,O8,z6,$))throw I.validation("Cannot generalise entity inside a tasks folder","INVALID_LOCATION");let{typeCode:h8}=a6.resolveEntityId(f8),p8=await $.getFieldDefinitionsForEntityType(P8,O8,{storeCode:"B",code:h8,subtype:o8}),s8=i8.getFields();for(let X6 of p8){let f6=X6.getName();if(s8&&s8[f6])await J.deleteFieldValue(P8,O8,{entityId:f8,fieldName:f6},y8)}await $.updateEntityType(P8,O8,{id:f8,subtype:null},y8);let{entity:q6}=await G(P8,O8,{id:f8});return{entity:q6}},setIncludeResolver:(P8)=>{z=P8}})},n08=Object.freeze({create:oh6});var ah6=()=>{let $=null,K=null,q={prePublish:{d:async(z,W,Z,H,O)=>{if(!$)return;let X=Z.getDraftContent();if(!X)return;let{content:P,pinned:w}=await $.pinIncludes(z,W,X,Z.getObjectId());if(w.length>0)await K.saveDraft(z,W,{id:Z.getObjectId(),content:P,sessionId:H},O)},t:null},postPublish:{},preDelete:{},postCreate:{}};return Object.freeze({getHook:(z,W)=>{return q[z]?.[W]||null},setIncludeResolver:(z,W)=>{$=z,K=W}})},o08=Object.freeze({create:ah6});Z4();var a08=n6(I4(),1),UJ=a08.default("caw:includes"),rh6=({store:$,documentService:K})=>{let q=/<include\s+(?:id="([^"]+)"|path="([^"]+)")(?:\s+version="(\d+)")?\s*\/>/g,Y=(X)=>{let P=X;return P=P.replace(/```[\s\S]*?```/g,(w)=>" ".repeat(w.length)),P=P.replace(/~~~[\s\S]*?~~~/g,(w)=>" ".repeat(w.length)),P=P.replace(/``[^`]+``/g,(w)=>" ".repeat(w.length)),P=P.replace(/`[^`]+`/g,(w)=>" ".repeat(w.length)),P},J=(X)=>{let P=Y(X),w=[],T,G=new RegExp(q.source,"g");while((T=G.exec(P))!==null){let j=X.substring(T.index,T.index+T[0].length),v=new RegExp(q.source).exec(j);if(v)w.push({fullMatch:j,id:v[1],path:v[2],versionStr:v[3],index:T.index})}return w},z=5,W=async(X,P,w,T,G=new Set,j=0)=>{if(UJ("Resolving includes in document, depth=%d, chain=%s, sourceDocId=%s",j,[...G].join(","),T),j>5)throw I.validation("Include depth limit exceeded (max 5 levels)","INCLUDE_DEPTH_EXCEEDED");if(T)G=new Set(G).add(T);let v=J(w);if(UJ("Found %d include directives",v.length),v.length===0)return w;let M=w;for(let f of v){let{fullMatch:k,id:N,path:R,versionStr:E}=f,C=E?parseInt(E,10):null;UJ("Resolving include: id=%s, path=%s, version=%s",N,R,E);try{let g;if(N)g=N;else{let L=T?T.charAt(0):"A",m=await K.readDocumentByPath(X,P,{path:R,type:"d",storeCode:L});if(!m)throw I.notFound(`Included document not found: ${R}`,"INCLUDE_NOT_FOUND");g=m.entity.getObjectId()}if(G.has(g)){let L=[...G,g].join(" -> ");throw I.validation(`Circular include detected: ${L}`,"INCLUDE_CYCLE")}if(C===null)throw I.validation(`Unpinned include found: ${k}. Includes must specify a version.`,"INCLUDE_UNPINNED");let S=await $.readVersion(X,P,{id:g,versionNumber:C});if(!S)throw I.notFound(`Version ${C} not found for included document: ${g}`,"INCLUDE_VERSION_NOT_FOUND");let D=await W(X,P,S.content,g,G,j+1);M=M.replace(k,D)}catch(g){let S=N||R,D=`> **Include Error** - couldn't include ${S}${C?` version ${C}`:""}: ${g.message}`;UJ("Include resolution failed for %s: %s",S,g.message),M=M.replace(k,D)}}return M};return Object.freeze({resolve:W,pinIncludes:async(X,P,w,T)=>{UJ("Auto-pinning unpinned includes in document: %s",T);let G=J(w),j=[],v=w;for(let M of G){let{fullMatch:f,id:k,path:N,versionStr:R}=M;if(R)continue;UJ("Pinning unpinned include: id=%s, path=%s",k,N);let E,C;if(k){E=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});C=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",D=await K.readDocumentByPath(X,P,{path:N,type:"d",storeCode:S});if(!D)throw I.notFound(`Included document not found: ${N}`,"INCLUDE_NOT_FOUND");E=D.entity.getObjectId(),C=D.entity.getPublishedVersionNumber()}if(!C)throw I.validation(`Cannot pin include - document has no published version: ${E}`,"INCLUDE_NO_VERSION");let g=k?`<include id="${k}" version="${C}" />`:`<include path="${N}" version="${C}" />`;UJ("Pinned include %s to version %d",E,C),v=v.replace(f,g),j.push({id:E,path:N,version:C})}return UJ("Auto-pinned %d unpinned includes",j.length),{content:v,pinned:j}},checkIncludes:async(X,P,w,T)=>{let G=J(w),j=[];for(let v of G){let{id:M,path:f,versionStr:k}=v,N=k?parseInt(k,10):null,R,E;if(M){R=M;let{entity:C}=await K.readDocument(X,P,{id:M,resolveIncludes:!1});E=C.getPublishedVersionNumber()}else{let C=T?T.charAt(0):"A",g=await K.readDocumentByPath(X,P,{path:f,type:"d",storeCode:C});R=g?.entity?.getObjectId(),E=g?.entity?.getPublishedVersionNumber()}j.push({id:R,path:f||null,pinnedVersion:N,latestVersion:E,outdated:N!==null&&E!==null&&N<E})}return j},updateIncludes:async(X,P,w,T)=>{let G=J(w),j=[],v=w;for(let M of G){let{fullMatch:f,id:k,path:N,versionStr:R}=M,E=R?parseInt(R,10):null,C,g;if(k){C=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});g=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",D=await K.readDocumentByPath(X,P,{path:N,type:"d",storeCode:S});C=D?.entity?.getObjectId(),g=D?.entity?.getPublishedVersionNumber()}if(g&&E!==g){let S=k?`<include id="${k}" version="${g}" />`:`<include path="${N}" version="${g}" />`;v=v.replace(f,S),j.push({id:C,path:N||null,fromVersion:E,toVersion:g})}}return{content:v,updated:j}}})},r08=Object.freeze({create:rh6});Z4();var qA8=n6(Gm(),1),YA8=n6(HB(),1),JA8=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,targetJobStreaming:!1,skipDialog:!1,body:""};let K=qA8.default($),q=K.data?.parameters||{},Y=K.data?.target||null,J=K.data?.targetPath||null,z=K.data?.targetParentId||null,W=K.data?.targetName||null,Z=K.data?.targetRoot||null,H=K.data?.targetStore||null,O=K.data?.targetJobName||null,X=K.data?.targetJobAgent||null,P=K.data?.targetJobModel||null,w=K.data?.targetJobWorktree||null,T=K.data?.targetJobSkipDialog??!1,G=K.data?.targetJobStreaming??!1,j=K.data?.skipDialog??!1,v=K.content;return{parameters:q,target:Y,targetPath:J,targetParentId:z,targetName:W,targetRoot:Z,targetStore:H,targetJobName:O,targetJobAgent:X,targetJobModel:P,targetJobWorktree:w,targetJobSkipDialog:T,targetJobStreaming:G,skipDialog:j,body:v}},yg6=($)=>{if(!$)return new Set;let K=new Set,q=new Set(["if","unless","each","with","lookup","log"]);try{let Y=YA8.default.parse($),J=(z,W=null,Z=null)=>{if(!z)return;if(z.type==="PathExpression"){if(z.data)return;let H=z.parts.join(".");if(!H||H.startsWith("@"))return;if(W?.type==="BlockStatement"&&Z==="path"||W?.type==="MustacheStatement"&&Z==="path"&&W.params?.length>0){if(q.has(H))return;return}K.add(H)}if(z.program)J(z.program,z,"program");if(z.inverse)J(z.inverse,z,"inverse");if(z.body)z.body.forEach((H)=>J(H,z,"body"));if(z.params)z.params.forEach((H)=>J(H,z,"params"));if(z.hash?.pairs)z.hash.pairs.forEach((H)=>J(H.value,z,"hash"));if(z.path)J(z.path,z,"path")};J(Y)}catch(Y){throw Error(`Invalid Handlebars template: ${Y.message}`)}return K},ug6=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,targetJobStreaming:!1,skipDialog:!1};let{parameters:K,target:q,targetPath:Y,targetParentId:J,targetName:z,targetRoot:W,targetStore:Z,targetJobName:H,targetJobAgent:O,targetJobModel:X,targetJobWorktree:P,targetJobSkipDialog:w,targetJobStreaming:T,skipDialog:G}=JA8($);return{parameters:K,target:q,targetPath:Y,targetParentId:J,targetName:z,targetRoot:W,targetStore:Z,targetJobName:H,targetJobAgent:O,targetJobModel:X,targetJobWorktree:P,targetJobSkipDialog:w,targetJobStreaming:T,skipDialog:G}},FK=Object.freeze({parseFrontMatter:JA8,extractVariables:yg6,getParameters:ug6});var OB=n6(HB(),1),mg6=($={})=>{return Object.freeze({renderTemplate:(Y,J={})=>{if(!Y)throw I.validation("Template content cannot be empty","EMPTY_TEMPLATE");let{body:z}=FK.parseFrontMatter(Y),W;try{W=OB.default.compile(z,{noEscape:!0})(J)}catch(Z){throw I.validation(`Failed to render template: ${Z.message}`,"RENDER_ERROR")}return W},extractTemplateParameters:(Y)=>{if(!Y)return{parameters:{},detectedVariables:[],target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,targetJobStreaming:!1};let{parameters:J,target:z,targetPath:W,targetParentId:Z,targetName:H,targetRoot:O,targetStore:X,targetJobName:P,targetJobAgent:w,targetJobModel:T,targetJobWorktree:G,targetJobSkipDialog:j,targetJobStreaming:v,body:M}=FK.parseFrontMatter(Y),f=FK.extractVariables(M),k=Array.from(f);return{parameters:J,detectedVariables:k,target:z,targetPath:W,targetParentId:Z,targetName:H,targetRoot:O,targetStore:X,targetJobName:P,targetJobAgent:w,targetJobModel:T,targetJobWorktree:G,targetJobSkipDialog:j,targetJobStreaming:v}}})},zA8=Object.freeze({create:mg6});import _j from"node:fs";import WA8 from"node:os";import Yf from"node:path";var Bg6=({projectStore:$,storeStore:K})=>{return Object.freeze({createProject:async(z,W,{name:Z,path:H},O)=>{if(await $.readProjectByPath(z,W,H)){let g=Error("Project with this path already exists");throw g.code="DUPLICATE_PATH",g}let P=await $.createProject(z,W,{name:Z,path:H},O),w=await K.createLocalStore(z,W,{code:"A",name:"Project"},O);await w.createFolder(z,W,{parentId:null,name:"Documents",subtype:"root_d"},O),await w.createFolder(z,W,{parentId:null,name:"Templates",subtype:"root_t"},O),await w.createFolder(z,W,{parentId:null,name:"Stories",subtype:"root_s"},O),await w.createFolder(z,W,{parentId:null,name:"Jobs",subtype:"root_j"},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,name:"state",label:"State",description:"Workflow state",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O);let T=await w.resolveEntityTypePk(z,W,{code:"f",subtype:"root_s"}),G=await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:T,name:"states",label:"States",description:"Ordered list of valid story states",primitiveType:"string",required:!0,multiplicity:"multi",isSystem:!0},O),v=(await w.readStoryRootFolder(z,W,{storeCode:"A"})).getObjectId();await w.setFieldValue(z,W,{entityId:v,fieldDefinitionId:G.getObjectId(),values:[...vM]},O);let M=await w.resolveEntityTypePk(z,W,{code:"d",subtype:"task"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:M,name:"dependsOn",label:"Depends On",description:"Tasks that block this task",primitiveType:"object_ref",required:!1,multiplicity:"multi",isSystem:!0},O);let f=await w.resolveEntityTypePk(z,W,{code:"d",subtype:"cartridge"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:f,name:"synopsis",label:"Synopsis",description:"Brief description of the cartridge",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:f,name:"relatedActivities",label:"Related Activities",description:"Associated activity types",primitiveType:"string",required:!1,multiplicity:"multi",isSystem:!0},O);let k=await w.resolveEntityTypePk(z,W,{code:"f",subtype:"tasks"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:k,name:"states",label:"States",description:"Ordered list of valid task states",primitiveType:"string",required:!0,multiplicity:"multi",isSystem:!0},O);let N=await w.resolveEntityTypePk(z,W,{code:"t",subtype:"prompt"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:N,name:"associatedType",label:"Associated Type",description:"Entity types this template is associated with",primitiveType:"string",required:!1,multiplicity:"multi",isSystem:!0},O);let R=await w.resolveEntityTypePk(z,W,{code:"s",subtype:null});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"flag",label:"Flag",description:"Visual indicator for story attention",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"activeJobCount",label:"Active Job Count",description:"Number of active jobs associated with this story",primitiveType:"int",required:!1,multiplicity:"single",isSystem:!0},O),await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"statusMessage",label:"Status Message",description:"Agent status message displayed in stories list",primitiveType:"string",required:!1,multiplicity:"single",isSystem:!0},O);let E=await K.readSharedStore(z,W),C=await K.createDemuxStore(z,W,{name:Z},O);return await K.addChildToDemux(z,W,{demuxId:C.getObjectId(),childId:w.getObjectId()},O),await K.addChildToDemux(z,W,{demuxId:C.getObjectId(),childId:E.getObjectId()},O),await K.addStoresToProject(z,W,{projectId:P.getObjectId(),rootStoreId:C.getObjectId(),storeIds:[C.getObjectId(),w.getObjectId(),E.getObjectId()]}),P},validateProjectPath:(z)=>{if(!z||typeof z!=="string"){let w=Error("Path is required and must be a non-empty string");throw w.code="VALIDATION_ERROR",w}let W;if(z==="~")W=WA8.homedir();else if(z.startsWith("~/"))W=Yf.join(WA8.homedir(),z.slice(2));else W=z;let Z=_j.existsSync(W),H=!1,O=!1,X=!1;if(Z)try{if(H=_j.statSync(W).isDirectory(),H){let T=Yf.join(W,".git");try{O=_j.statSync(T).isDirectory()}catch{O=!1}let G=Yf.join(W,".claude");try{X=_j.statSync(G).isDirectory()}catch{X=!1}}}catch(w){H=!1}let P=Yf.basename(W);return{path:W,exists:Z,isDirectory:H,hasGit:O,hasClaude:X,suggestedName:P}},listProjects:async(z)=>{let W=await z.selectFrom("projects").selectAll().where("name","!=","__system__").orderBy("created_at","desc").execute();return await Promise.all(W.map(async(H)=>{let X=(await z.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id","stores.code","stores.name","stores.type"]).where("project_stores.project_id","=",H.id).where("stores.type","=","local").execute()).map((P)=>({id:P.code==="B"?"store:B":`store:${P.code}:${H.object_id}`,code:P.code,name:P.name}));return{objectId:H.object_id,name:H.name,path:H.path,createdAt:H.created_at,updatedAt:H.updated_at,children:X}}))}})},Jf=Object.freeze({create:Bg6});var Ug6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},pg6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:J,projectService:z,clipboardService:W,storyService:Z,assetService:H,jobService:O,includeResolver:X,worktreeService:P})=>{let w=async(M8)=>{let x8=Ug6(),B8;return await $.transaction().execute(async(F8)=>{B8=await M8(F8,x8.enqueuePostCommitHook)}),x8.flush(),B8};return Object.freeze({createFolder:async(M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8})=>{return w(async(c8,o)=>{return await K.createFolder(c8,M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8},o)})},renameFolder:async(M8,{id:x8,name:B8})=>{return w(async(F8,l8)=>{return await K.renameFolder(F8,M8,{id:x8,name:B8},l8)})},moveFolder:async(M8,{id:x8,parentId:B8})=>{return w(async(F8,l8)=>{return await K.moveFolder(F8,M8,{id:x8,parentId:B8},l8)})},deleteFolder:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await K.deleteFolder(B8,M8,{id:x8},F8)})},createProject:async(M8,{name:x8,path:B8})=>{return w(async(F8,l8)=>{return await z.createProject(F8,M8,{name:x8,path:B8},l8)})},createFieldDefinition:async(M8,{store:x8,ownerEntityId:B8,ownerEntityTypeCode:F8,ownerEntityTypeSubtype:l8,name:Y8,label:W8,description:J8,primitiveType:c8,required:o,multiplicity:X8,isSystem:t})=>{return w(async(G8,z8)=>{return await q.createFieldDefinition(G8,M8,{store:x8,ownerEntityId:B8,ownerEntityTypeCode:F8,ownerEntityTypeSubtype:l8,name:Y8,label:W8,description:J8,primitiveType:c8,required:o,multiplicity:X8,isSystem:t},z8)})},setFieldValue:async(M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8,value:l8,values:Y8})=>{return w(async(W8,J8)=>{return await q.setFieldValue(W8,M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8,value:l8,values:Y8},J8)})},deleteFieldValue:async(M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8})=>{return w(async(l8,Y8)=>{return await q.deleteFieldValue(l8,M8,{entityId:x8,fieldDefinitionId:B8,fieldName:F8},Y8)})},deleteFieldDefinition:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await q.deleteFieldDefinition(B8,M8,{id:x8},F8)})},createDocument:async(M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8,content:c8,tree:o,subtype:X8,fields:t})=>{return w(async(G8,z8)=>{return await Y.createDocument(G8,M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,type:J8,content:c8,tree:o,subtype:X8,fields:t},z8)})},createTemplate:async(M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,content:J8,subtype:c8})=>{return w(async(o,X8)=>{return await Y.createTemplate(o,M8,{mode:x8,store:B8,path:F8,root:l8,parentId:Y8,name:W8,content:J8,subtype:c8},X8)})},updateDocumentPath:async(M8,{id:x8,path:B8,parentId:F8,type:l8})=>{return w(async(Y8,W8)=>{return await Y.updateDocumentPath(Y8,M8,{id:x8,path:B8,parentId:F8,type:l8},W8)})},deleteDocument:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.deleteDocument(B8,M8,{id:x8},F8)})},saveDraft:async(M8,{id:x8,content:B8,sessionId:F8})=>{return w(async(l8,Y8)=>{return await Y.saveDraft(l8,M8,{id:x8,content:B8,sessionId:F8},Y8)})},publishDocument:async(M8,{id:x8,sessionId:B8})=>{return w(async(F8,l8)=>{return await Y.publishDocument(F8,M8,{id:x8,sessionId:B8},l8)})},discardDraft:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.discardDraft(B8,M8,{id:x8},F8)})},setEditState:async(M8,{id:x8,sessionId:B8})=>{return w(async(F8,l8)=>{return await Y.setEditState(F8,M8,{id:x8,sessionId:B8},l8)})},clearEditState:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.clearEditState(B8,M8,{id:x8},F8)})},editDocument:async(M8,{id:x8,operation:B8,preview:F8,ignoreContent:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.editDocument(W8,M8,{id:x8,operation:B8,preview:F8,ignoreContent:l8,sessionId:Y8},J8)})},batchEditDocument:async(M8,{id:x8,operations:B8,preview:F8,ignoreContent:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.batchEditDocument(W8,M8,{id:x8,operations:B8,preview:F8,ignoreContent:l8,sessionId:Y8},J8)})},checkChecklistItem:async(M8,{id:x8,lineNumber:B8,checked:F8,includeDraft:l8,preview:Y8,sessionId:W8})=>{return w(async(J8,c8)=>{return await Y.checkChecklistItem(J8,M8,{id:x8,lineNumber:B8,checked:F8,includeDraft:l8,preview:Y8,sessionId:W8},c8)})},toggleChecklistItem:async(M8,{id:x8,lineNumber:B8,includeDraft:F8,preview:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.toggleChecklistItem(W8,M8,{id:x8,lineNumber:B8,includeDraft:F8,preview:l8,sessionId:Y8},J8)})},batchCheckChecklistItems:async(M8,{id:x8,items:B8,includeDraft:F8,preview:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await Y.batchCheckChecklistItems(W8,M8,{id:x8,items:B8,includeDraft:F8,preview:l8,sessionId:Y8},J8)})},specialiseDocument:async(M8,{id:x8,subtype:B8,fields:F8})=>{return w(async(l8,Y8)=>{return await Y.specialiseDocument(l8,M8,{id:x8,subtype:B8,fields:F8},Y8)})},generaliseDocument:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Y.generaliseDocument(B8,M8,{id:x8},F8)})},renderTemplate:async(M8,{id:x8,params:B8,target:F8,targetOptions:l8,sessionId:Y8})=>{let{entity:W8}=await Y.readDocument($,M8,{id:x8,resolveIncludes:!1});if(!W8.getPublishedContent())throw(await Promise.resolve().then(() => (Z4(),vO))).default.validation("Template has no published content","NO_PUBLISHED_CONTENT");let J8=W8.getPublishedContent(),{target:c8,targetPath:o,targetParentId:X8,targetName:t,targetRoot:G8,targetStore:z8,targetJobName:k8,targetJobAgent:b8,targetJobModel:Q8,targetJobWorktree:l6,targetJobStreaming:D4}=J.extractTemplateParameters(J8),K3=F8||c8||"stdout",B1=l8?.parentId||l8?.root||l8?.path?{path:l8?.path,parentId:l8?.parentId,name:l8?.name,root:l8?.root,store:l8?.store,publish:l8?.publish}:{path:l8?.path||o,parentId:l8?.parentId||X8,name:l8?.name||t,root:l8?.root||G8,store:l8?.store||z8,publish:l8?.publish},L$=J8;if(X)L$=await X.resolve($,M8,J8,x8);let f$=J.renderTemplate(L$,B8||{});if(B1.path)B1.path=J.renderTemplate(B1.path,B8||{});if(B1.name)B1.name=J.renderTemplate(B1.name,B8||{});switch(K3){case"stdout":return{content:f$,target:"stdout"};case"clipboard":return await W.copyToClipboard(f$),{target:"clipboard",message:"Copied to clipboard"};case"document":return w(async(C8,$8)=>{let S8=(await Promise.resolve().then(() => (Z4(),vO))).default,L8;if(B1.parentId){if(!B1.name)throw S8.validation("targetOptions.name is required when parentId is provided","MISSING_TARGET_NAME");L8={mode:"parentName",parentId:B1.parentId,name:B1.name,content:f$}}else if(B1.root){if(!B1.path)throw S8.validation("targetOptions.path is required when root is provided","MISSING_TARGET_PATH");L8={mode:"rootRelative",root:B1.root,path:B1.path,content:f$}}else{if(!B1.path)throw S8.validation("targetOptions.path is required for document target","MISSING_TARGET_PATH");L8={mode:"fullPath",store:B1.store||"A",path:B1.path,content:f$}}let u8=await Y.createDocument(C8,M8,L8,$8);if(B1.publish)await Y.publishDocument(C8,M8,{id:u8.getObjectId(),sessionId:Y8},$8);return{content:f$,target:"document",documentId:u8.getObjectId(),documentPath:B1.path||B1.name,published:!!B1.publish}});case"job":return w(async(C8,$8)=>{let S8=(await Promise.resolve().then(() => (Z4(),vO))).default;if(!f$||!f$.trim())throw S8.validation("Template rendered to empty prompt","MISSING_PROMPT");let L8=l8?.jobName||k8,u8=l8?.jobAgent||b8||"claude",M6=l8?.jobModel||Q8,x=l8?.jobWorktree||l6,w8=l8?.jobStreaming??D4,u=l8?.objectId,s=null;if(L8)s=J.renderTemplate(L8,B8||{});let Q=null;if(x&&P){let{worktrees:d}=await P.listWorktrees({projectPath:M8.projectPath}),H8=d.find((j8)=>j8.branch===x);if(!H8)throw S8.validation(`Worktree with branch '${x}' not found`,"WORKTREE_NOT_FOUND");Q=H8.path}let a=w1.extractStoreCode(x8),n=await O.createJob(C8,M8,{store:a,name:s,agent:u8,model:M6,prompt:f$,workingDirectory:Q,objectId:u,streaming:w8},$8);return{target:"job",jobId:n.id,jobName:n.name}});case"file":throw(await Promise.resolve().then(() => (Z4(),vO))).default.validation("file target not yet implemented","NOT_IMPLEMENTED");default:throw(await Promise.resolve().then(() => (Z4(),vO))).default.validation(`Unknown target: ${K3}`,"INVALID_TARGET")}},createStory:async(M8,{name:x8,storeCode:B8,state:F8})=>{return w(async(l8,Y8)=>{return await Z.createStory(l8,M8,{store:B8,name:x8,state:F8},Y8)})},renameStory:async(M8,{id:x8,name:B8})=>{return w(async(F8,l8)=>{return await Z.renameStory(F8,M8,{id:x8,name:B8},l8)})},updateStoryState:async(M8,{id:x8,state:B8})=>{return w(async(F8,l8)=>{return await Z.updateStoryState(F8,M8,{id:x8,state:B8},l8)})},deleteStory:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Z.deleteStory(B8,M8,{id:x8},F8)})},incrementStoryJobCount:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Z.incrementActiveJobCount(B8,M8,{id:x8},F8)})},decrementStoryJobCount:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await Z.decrementActiveJobCount(B8,M8,{id:x8},F8)})},createAsset:async(M8,{store:x8,buffer:B8,mimeType:F8,originalFilename:l8,widthPx:Y8,heightPx:W8,displayWidth:J8,displayHeight:c8})=>{return w(async(o,X8)=>{return await H.createAsset(o,M8,{store:x8,buffer:B8,mimeType:F8,originalFilename:l8,widthPx:Y8,heightPx:W8,displayWidth:J8,displayHeight:c8},X8)})},deleteAsset:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await H.deleteAsset(B8,M8,{id:x8},F8)})},createJob:async(M8,{store:x8,name:B8,agent:F8,model:l8,prompt:Y8,workingDirectory:W8,objectId:J8,streaming:c8})=>{return w(async(o,X8)=>{return await O.createJob(o,M8,{store:x8,name:B8,agent:F8,model:l8,prompt:Y8,workingDirectory:W8,objectId:J8,streaming:c8},X8)})},deleteJob:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await O.deleteJob(B8,M8,{id:x8},F8)})},updateJobStatus:async(M8,{id:x8,status:B8,exitCode:F8,errorMessage:l8})=>{return w(async(Y8,W8)=>{return await O.updateJobStatus(Y8,M8,{id:x8,status:B8,exitCode:F8,errorMessage:l8},W8)})},updateJobOutput:async(M8,{id:x8,output:B8})=>{return w(async(F8,l8)=>{return await O.updateJobOutput(F8,M8,{id:x8,output:B8},l8)})},updateJobTokens:async(M8,{id:x8,tokensUsed:B8})=>{return w(async(F8,l8)=>{return await O.updateJobTokens(F8,M8,{id:x8,tokensUsed:B8},l8)})},updateJobMetadata:async(M8,{id:x8,durationMs:B8,totalCostUsd:F8,numTurns:l8,sessionId:Y8})=>{return w(async(W8,J8)=>{return await O.updateJobMetadata(W8,M8,{id:x8,durationMs:B8,totalCostUsd:F8,numTurns:l8,sessionId:Y8},J8)})},continueJob:async(M8,{id:x8,prompt:B8,model:F8})=>{return w(async(l8,Y8)=>{return await O.continueJob(l8,M8,{id:x8,prompt:B8,model:F8},Y8)})},setJobPid:async(M8,{id:x8,pid:B8})=>{return w(async(F8,l8)=>{return await O.setJobPid(F8,M8,{id:x8,pid:B8},l8)})},clearJobPid:async(M8,{id:x8})=>{return w(async(B8,F8)=>{return await O.clearJobPid(B8,M8,{id:x8},F8)})},renameJob:async(M8,{id:x8,name:B8})=>{return w(async(F8,l8)=>{return await O.renameJob(F8,M8,{id:x8,name:B8},l8)})}})},XB=Object.freeze({create:pg6});Z4();var jB8=n6(wB8(),1),vB8=n6(I4(),1);import m$ from"fs/promises";import h$ from"path";import{createWriteStream as J21}from"fs";import z21 from"crypto";var R3=vB8.default("caw:export"),TB8=".caw-exports",GB8=".tmp",W21=2,Z21=({store:$,folderService:K,documentService:q,templateService:Y,storyService:J,assetService:z,assetsDir:W})=>{let Z=()=>{let R=new Date,E=R.getFullYear(),C=String(R.getMonth()+1).padStart(2,"0"),g=String(R.getDate()).padStart(2,"0"),S=String(R.getHours()).padStart(2,"0"),D=String(R.getMinutes()).padStart(2,"0"),L=String(R.getSeconds()).padStart(2,"0");return`${E}-${C}-${g}-${S}${D}${L}`},H=async(R)=>{let E=h$.join(R,TB8),C=h$.join(E,GB8);try{return await m$.mkdir(E,{recursive:!0}),await m$.mkdir(C,{recursive:!0}),E}catch(g){if(g.code==="EACCES")throw I.validation("Permission denied creating export directory","EXPORT_ERROR");if(g.code==="ENOSPC")throw I.validation("Insufficient disk space","EXPORT_ERROR");throw R3("Error creating export directory: [%s] %s",g.code||"UNKNOWN",g.message),I.validation(`Failed to create export directory: ${g.message} (${g.code||"UNKNOWN"})`,"EXPORT_ERROR")}},O=async(R,E,C,g)=>{let S=[],D=async(L,m)=>{let c=await K.listFolderContents(R,E,{folderId:L,type:C,storeCode:g});for(let e of c)if(e.getParentId()!==null)S.push({entity:e,depth:m,contentType:C}),await D(e.getObjectId(),m+1)};return await D(null,0),S},X=async(R,E,C)=>{let g=[],S=[],D=async(L)=>{let m=await q.listDocuments(R,E,{parentId:L,storeCode:C});for(let e of m){let _8=e.getPublishedVersionNumber();if(_8!==null){let T8=await q.readVersion(R,E,{id:e.getObjectId(),versionNumber:_8});g.push({entity:e,version:T8})}else S.push(e)}let c=await K.listFolderContents(R,E,{folderId:L,type:"d",storeCode:C});for(let e of c)await D(e.getObjectId())};return await D(null),{published:g,draftOnly:S}},P=async(R,E,C)=>{let g=[],S=[],D=async(L)=>{let m=await q.listDocuments(R,E,{parentId:L,storeCode:C,type:"t"});for(let e of m){let _8=e.getPublishedVersionNumber();if(_8!==null){let T8=await q.readVersion(R,E,{id:e.getObjectId(),versionNumber:_8});g.push({entity:e,version:T8})}else S.push(e)}let c=await K.listFolderContents(R,E,{folderId:L,type:"t",storeCode:C});for(let e of c)await D(e.getObjectId())};return await D(null),{published:g,draftOnly:S}},w=async(R,E,C)=>{let g=await z.listAssets(R,E,{store:C}),S=[];for(let D of g){let L=D.hash,m=L.substring(0,2),c=h$.join(W,m,L);try{let e=await m$.readFile(c);S.push({entity:D,buffer:e})}catch(e){if(e.code==="ENOENT"){R3("Warning: Skipping asset %s - blob file missing",D.id);continue}throw e}}return R3("Collected %d assets for export",S.length),S},T=new Set(["draft_version","latest_published_version"]),G=(R)=>{let E=typeof R.getFields==="function"?R.getFields():R.fields;if(!E||typeof E!=="object"||Object.keys(E).length===0)return;let C={};for(let[g,S]of Object.entries(E)){if(T.has(g))continue;let D;if(typeof S?.getValues==="function")D=S.getValues();else if(Array.isArray(S))D=S;else D=[S];C[g]=D.length===1?D[0]:D}return Object.keys(C).length>0?C:void 0},j=async(R,E,C)=>{let g=[],S=[],D={published:[],draftOnly:[]};if(!J)return R3("StoryService not available, skipping story export"),{stories:g,folders:S,documents:D};let L=await J.listStories(R,E,{store:C});R3("Found %d stories for export",L.length);for(let m of L)g.push(m),await v(R,E,m,C,S,D);return{stories:g,folders:S,documents:D}},v=async(R,E,C,g,S,D)=>{let L=C.id||C.getObjectId?.()||C,m=await $.listFolderContents(R,E,{folderId:L,type:"s",storeCode:g});for(let e of m){if(e.getParentId()!==null)S.push({entity:e,contentType:"s"});await v(R,E,e.getObjectId(),g,S,D)}let c=await q.listDocuments(R,E,{parentId:L,storeCode:g});for(let e of c){let _8=e.getPublishedVersionNumber();if(_8!==null){let T8=await q.readVersion(R,E,{id:e.getObjectId(),versionNumber:_8});D.published.push({entity:e,version:T8})}else D.draftOnly.push(e)}},M=async(R)=>{try{await m$.rm(R,{recursive:!0,force:!0})}catch(E){R3("Warning: Failed to cleanup temp directory: %s",E.message)}};return Object.freeze({listExports:async(R,E,{projectPath:C})=>{let g=h$.join(C,TB8);try{let S=await m$.readdir(g),D=[];for(let L of S)if(L.endsWith(".zip")){let m=h$.join(g,L),c=await m$.stat(m);D.push({filename:L,timestamp:c.mtime.toISOString(),size:c.size})}return R3("Found %d export files",D.length),D}catch(S){if(S.code==="ENOENT")return[];throw S}},exportPreview:async(R,E,{storeCode:C})=>{let g=await O(R,E,"d",C),S=await O(R,E,"t",C),{published:D,draftOnly:L}=await X(R,E,C),{published:m,draftOnly:c}=await P(R,E,C),_8={assets:(z?await z.listAssets(R,E,{store:C}):[]).map((D8)=>({id:D8.id,originalFilename:D8.originalFilename,mimeType:D8.mimeType,sizeBytes:D8.sizeBytes})),folders:[...g,...S].map((D8)=>({id:D8.entity.getObjectId(),path:D8.entity.getPath(),name:D8.entity.getName()})),documents:D.map((D8)=>({id:D8.entity.getObjectId(),path:D8.entity.getPath(),name:D8.entity.getName()})),templates:m.map((D8)=>({id:D8.entity.getObjectId(),path:D8.entity.getPath(),name:D8.entity.getName()}))},T8={documents:L.map((D8)=>({id:D8.getObjectId(),path:D8.getPath(),name:D8.getName()})),templates:c.map((D8)=>({id:D8.getObjectId(),path:D8.getPath(),name:D8.getName()}))},d8=_8.assets.length+_8.folders.length+_8.documents.length+_8.templates.length,H6=T8.documents.length+T8.templates.length;return R3("Preview: %d published (%d assets), %d draft-only",d8,_8.assets.length,H6),{toExport:_8,draftOnly:T8}},exportDocuments:async(R,E,{storeCode:C,projectPath:g})=>{R3("Starting export for store %s",C);let S=await H(g),D=z21.randomUUID(),L=h$.join(S,GB8,D);await m$.mkdir(L,{recursive:!0});try{let m=await O(R,E,"d",C),c=await O(R,E,"t",C),e=[...m,...c],{published:_8,draftOnly:T8}=await X(R,E,C),{published:d8,draftOnly:H6}=await P(R,E,C),D8=z?await w(R,E,C):[],{stories:m8,folders:a8,documents:Z6}=await j(R,E,C),_6=[...e,...a8],u6=[..._8,...Z6.published],y6=[...T8,...Z6.draftOnly];R3("Found %d folders, %d documents, %d templates, %d assets, %d stories",_6.length,u6.length,d8.length,D8.length,m8.length);let s6={},L6=await $.readStoryRootFolder(R,E,{storeCode:C});if(L6){let h8=L6.toJSON(),p8=G(h8);if(p8&&Object.keys(p8).length>0)s6[L6.getObjectId()]={subtype:"root_s",fields:p8}}let P8=[...D8.map((h8)=>({id:h8.entity.id,type:"asset",hash:h8.entity.hash,mimeType:h8.entity.mimeType,sizeBytes:h8.entity.sizeBytes,originalFilename:h8.entity.originalFilename,widthPx:h8.entity.widthPx,heightPx:h8.entity.heightPx,displayWidth:h8.entity.displayWidth,displayHeight:h8.entity.displayHeight})),...m8.map((h8)=>{let p8={id:h8.id,type:"story",name:h8.name},s8=G(h8);if(s8)p8.fields=s8;return p8}),..._6.map((h8)=>{let p8={id:h8.entity.getObjectId(),type:"folder",path:h8.entity.getPath(),contentType:h8.contentType},s8=h8.entity.getSubtype?.();if(s8)p8.subtype=s8;let q6=G(h8.entity);if(q6)p8.fields=q6;return p8}),...u6.map((h8)=>{let p8={id:h8.entity.getObjectId(),type:"document",path:h8.entity.getPath()},s8=h8.entity.getSubtype?.();if(s8)p8.subtype=s8;else{let X6=h8.entity.getPath(),f6=X6.split("/");if(f6.length>=4&&f6[2]==="tasks")R3('WARN: Document %s in tasks folder missing subtype, inferring "task"',X6),p8.subtype="task"}let q6=G(h8.entity);if(q6)p8.fields=q6;return p8}),...d8.map((h8)=>{let p8={id:h8.entity.getObjectId(),type:"template",path:h8.entity.getPath()},s8=h8.entity.getSubtype?.();if(s8)p8.subtype=s8;let q6=G(h8.entity);if(q6)p8.fields=q6;return p8})],O8={version:W21,exportedAt:new Date().toISOString(),entities:P8};if(Object.keys(s6).length>0)O8.rootFolderFields=s6;await m$.writeFile(h$.join(L,"manifest.json"),JSON.stringify(O8,null,2),"utf-8");for(let h8 of _6){if(h8.entity.getParentId()===null)continue;let p8=h$.join(L,h8.entity.getPath());await m$.mkdir(p8,{recursive:!0})}await m$.mkdir(h$.join(L,"Documents"),{recursive:!0}),await m$.mkdir(h$.join(L,"Templates"),{recursive:!0}),await m$.mkdir(h$.join(L,"Stories"),{recursive:!0});for(let h8 of u6){let p8=h$.join(L,h8.entity.getPath()),s8=h8.version.content;await m$.mkdir(h$.dirname(p8),{recursive:!0}),await m$.writeFile(p8,s8,"utf-8")}for(let h8 of d8){let p8=h$.join(L,h8.entity.getPath()),s8=h8.version.content;await m$.mkdir(h$.dirname(p8),{recursive:!0}),await m$.writeFile(p8,s8,"utf-8")}if(D8.length>0){let h8=h$.join(L,"assets");await m$.mkdir(h8,{recursive:!0});for(let p8 of D8){let s8=p8.entity.id,q6=h$.join(h8,`${s8}.bin`);await m$.writeFile(q6,p8.buffer);let X6=h$.join(h8,`${s8}.json`);await m$.writeFile(X6,JSON.stringify({id:s8,hash:p8.entity.hash,mimeType:p8.entity.mimeType,sizeBytes:p8.entity.sizeBytes,originalFilename:p8.entity.originalFilename,widthPx:p8.entity.widthPx,heightPx:p8.entity.heightPx,displayWidth:p8.entity.displayWidth,displayHeight:p8.entity.displayHeight},null,2),"utf-8")}}for(let h8 of P8){if(h8.type==="folder"||h8.type==="story")continue;let p8;if(h8.type==="asset")p8=h$.join(L,"assets",`${h8.id}.bin`);else if(h8.type==="document"||h8.type==="template")p8=h$.join(L,h8.path);else{R3("Unknown entity type in validation: %s",h8.type);continue}try{await m$.access(p8)}catch(s8){throw I.validation(`Manifest entry missing file: ${h8.id||h8.path}`,"EXPORT_VALIDATION_FAILED")}}let f8=`caw-export-${Z()}.zip`,y8=h$.join(S,f8),i8=J21(y8),o8=jB8.default("zip",{zlib:{level:9}});o8.on("error",async(h8)=>{throw await M(L),R3("Zip creation error: %s",h8.message),I.validation(`Export failed: ${h8.message}`,"EXPORT_ERROR")}),o8.pipe(i8),o8.directory(L,!1),await o8.finalize(),await new Promise((h8,p8)=>{i8.on("close",h8),i8.on("error",p8),setTimeout(()=>{p8(Error("Zip creation timeout"))},60000)}),R3("Created zip: %s (%d bytes)",f8,o8.pointer()),await M(L);let z6=P8.length;return R3("Export complete: %s (%d entities)",f8,z6),{success:!0,filename:f8,path:y8,counts:{assets:D8.length,stories:m8.length,folders:_6.length,documents:u6.length,templates:d8.length},draftOnlySkipped:{documents:y6.length,templates:H6.length}}}catch(m){throw await M(L),m}}})},VB8=Object.freeze({create:Z21});Z4();var tB8=n6(rB8(),1),eB8=n6(I4(),1);import Tq from"fs/promises";import s5 from"path";import b21 from"crypto";var P1=eB8.default("caw:import"),rl=($)=>{if(!$||typeof $!=="string")throw Error(`Invalid export path: ${$}`);let K={Documents:"d",Templates:"t",Stories:"s"},q=$.indexOf("/");if(q===-1){let z=K[$];if(z)return{path:"",type:z};throw Error(`Invalid export path: ${$}`)}let Y=$.slice(0,q),J=K[Y];if(!J)throw Error(`Unknown root folder: ${Y}`);return{path:$.slice(q+1),type:J}},sl=".caw-exports",sB8=".tmp",y21=[1,2],u21=/\b([A-Z][adtfns]\d+)\b/g,m21=({store:$,folderService:K,documentService:q,templateService:Y,storyService:J,fieldService:z,assetService:W,assetsDir:Z})=>{let H=(v,M)=>{if(!v)return v;return v.replace(u21,(f,k)=>{return M[k]??f})},O=(v)=>{if(!Array.isArray(v))return!1;if(v.length!==Oz.length)return!0;return!v.every((M,f)=>M===Oz[f])},X=async(v,M,f,k,N,R)=>{if(!k||typeof k!=="object"||!z)return;for(let[E,C]of Object.entries(k)){if(E==="activeJobCount")continue;let g=E==="dependsOn",S=C;if(g)if(Array.isArray(C))S=C.map((D)=>N[D]||D);else S=N[C]||C;if(Array.isArray(S))await z.setFieldValue(v,M,{entityId:f,fieldName:E,values:S},R);else await z.setFieldValue(v,M,{entityId:f,fieldName:E,value:S},R)}},P=async(v)=>{try{await Tq.rm(v,{recursive:!0,force:!0})}catch(M){P1("Warning: Failed to cleanup temp directory: %s",M.message)}},w=async(v,M,{storeCode:f})=>{let k=await K.listFolderContents(v,M,{folderId:null,type:"d",storeCode:f}),N=await K.listFolderContents(v,M,{folderId:null,type:"t",storeCode:f}),R=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"d"}),E=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"t"}),C=k.length===0&&N.length===0&&R.length===0&&E.length===0;return P1("Store %s empty check: %s",f,C),C},T=async(v,M,{tempPath:f,storeCode:k,idMapping:N,enqueuePostCommitHook:R})=>{let E=s5.join(f,"assets"),C;try{C=await Tq.readdir(E)}catch(D){if(D.code==="ENOENT")return P1("No assets directory in export"),0;throw D}let g=C.filter((D)=>D.endsWith(".json"));if(P1("Found %d assets to import",g.length),!W||!Z){if(g.length>0)throw I.validation("Export contains assets but asset service is not configured","ASSET_SERVICE_MISSING");return 0}let S=0;for(let D of g){let L=s5.join(E,D),m=await Tq.readFile(L,"utf-8"),c=JSON.parse(m),e=D.replace(".json",".bin"),_8=s5.join(E,e),T8=await Tq.readFile(_8),d8=await W.createAsset(v,M,{store:k,buffer:T8,mimeType:c.mimeType,originalFilename:c.originalFilename,widthPx:c.widthPx,heightPx:c.heightPx,displayWidth:c.displayWidth,displayHeight:c.displayHeight},R);N[c.id]=d8.id,S++}return P1("Imported %d assets",S),S},G=async(v,M,{manifest:f,tempPath:k,storeCode:N})=>{return P1("Starting transaction..."),await v.transaction().execute(async(R)=>{let E={},C=(m8)=>{},g=await T(R,M,{tempPath:k,storeCode:N,idMapping:E,enqueuePostCommitHook:C});if(P1("Phase 0 complete - imported %d assets",g),f.rootFolderFields&&z){P1("Phase 0.25: Restoring root folder fields");for(let[m8,a8]of Object.entries(f.rootFolderFields)){let Z6;if(a8.subtype==="root_s")Z6=await $.readStoryRootFolder(R,M,{storeCode:N});if(Z6&&a8.fields){for(let[_6,u6]of Object.entries(a8.fields))if(Array.isArray(u6))await z.setFieldValue(R,M,{entityId:Z6.getObjectId(),fieldName:_6,values:u6},C);else await z.setFieldValue(R,M,{entityId:Z6.getObjectId(),fieldName:_6,value:u6},C);P1("Restored fields for root folder %s (%s)",Z6.getObjectId(),a8.subtype)}}P1("Phase 0.25 complete - restored root folder fields")}let S=f.entities.filter((m8)=>m8.type==="story"),D=0,L={};if(S.length>0&&J){P1("Phase 0.5: Creating %d stories",S.length);let m8=f.entities.filter((a8)=>a8.type==="folder"&&a8.subtype==="tasks");for(let a8 of m8){let Z6=a8.path.split("/");if(Z6.length>=3&&Z6[0]==="Stories"){let _6=Z6[1];L[_6]=a8.id}}for(let a8 of S){let Z6=a8.fields?.state||"waiting",_6=await J.createStory(R,M,{store:N,name:a8.name,state:Z6},C);E[a8.id]=_6.id;let u6=L[a8.name];if(u6&&_6.tasksFolder){E[u6]=_6.tasksFolder.id;let y6=f.entities.find((s6)=>s6.id===u6);if(y6?.fields?.states){let s6=y6.fields.states;if(O(Array.isArray(s6)?s6:[s6]))await z.setFieldValue(R,M,{entityId:_6.tasksFolder.id,fieldName:"states",values:Array.isArray(s6)?s6:[s6]},C)}}D++}P1("Phase 0.5 complete - created %d stories",D)}let m=f.entities.filter((m8)=>m8.type==="folder"&&m8.subtype!=="tasks");P1("Phase 1: Creating %d folders (excluding tasks folders)",m.length);let c=0;for(let m8 of m){let{path:a8,type:Z6}=rl(m8.path);if(!a8)continue;if(E[m8.id])continue;let _6;if(Z6==="s"){let u6=a8.split("/"),y6=u6[u6.length-1],s6=u6.slice(0,-1).join("/"),L6;if(u6.length===1){P1("Unexpected folder directly under Stories root: %s",a8);continue}else if(u6.length===2){let P8=u6[0],O8=f.entities.find((f8)=>f8.type==="story"&&f8.name===P8);if(O8&&E[O8.id])L6=E[O8.id]}else{let P8=f.entities.find((O8)=>O8.type==="folder"&&O8.path===`Stories/${s6}`);if(P8&&E[P8.id])L6=E[P8.id]}if(!L6){P1("Could not resolve parent for story folder: %s",m8.path);continue}_6=await K.createFolder(R,M,{mode:"parentName",parentId:L6,name:y6},C)}else _6=await K.createFolder(R,M,{store:N,path:a8,type:Z6},C);E[m8.id]=_6.getObjectId(),c++}P1("Phase 1 complete - created %d folders (skipped root folders)",c);let e=f.entities.filter((m8)=>m8.type==="document"),_8=[];P1("Phase 2: Reading %d documents",e.length);for(let m8 of e){let a8=s5.join(k,m8.path),Z6=await Tq.readFile(a8,"utf-8");_8.push({oldId:m8.id,path:m8.path,content:Z6,subtype:m8.subtype,fields:m8.fields})}P1("Phase 2 complete - read %d documents",_8.length),P1("Phase 3: Creating %d document entities",_8.length);let T8=[];for(let m8 of _8){let{path:a8,type:Z6}=rl(m8.path),_6;if(Z6==="s"){let y6=a8.split("/"),s6=y6[0],L6=y6.slice(0,-1).join("/"),P8=y6[y6.length-1],O8=f.entities.find((y8)=>y8.type==="folder"&&y8.path===`Stories/${L6}`),f8;if(O8&&E[O8.id])f8=E[O8.id];else{let y8=f.entities.find((i8)=>i8.type==="story"&&i8.name===s6);if(y8&&E[y8.id])f8=E[y8.id]}if(!f8)throw I.validation(`Cannot resolve parent folder for story document: ${m8.path}`,"IMPORT_RESOLUTION_FAILED");_6={mode:"parentName",parentId:f8,name:P8}}else _6={store:N,path:a8,type:Z6};if(m8.subtype)_6.subtype=m8.subtype;else if(Z6==="s"){let y6=a8.split("/");if(y6.length>=3&&y6[1]==="tasks")P1('WARN: Document %s in tasks folder missing subtype, inferring "task"',m8.path),_6.subtype="task"}let u6=await q.createDocument(R,M,_6,C);E[m8.oldId]=u6.getObjectId(),T8.push({document:u6,originalContent:m8.content,fields:m8.fields})}P1("Phase 3 complete - created %d document entities",T8.length);let d8=f.entities.filter((m8)=>m8.type==="template"),H6=[];P1("Phase 4: Reading %d templates",d8.length);for(let m8 of d8){let a8=s5.join(k,m8.path),Z6=await Tq.readFile(a8,"utf-8");H6.push({oldId:m8.id,path:m8.path,content:Z6,subtype:m8.subtype,fields:m8.fields})}P1("Phase 4 complete - read %d templates",H6.length),P1("Phase 5: Creating %d template entities",H6.length);let D8=[];for(let m8 of H6){let{path:a8,type:Z6}=rl(m8.path),_6={store:N,path:a8,type:Z6};if(m8.subtype)_6.subtype=m8.subtype;let u6=await q.createDocument(R,M,_6,C);E[m8.oldId]=u6.getObjectId(),D8.push({template:u6,originalContent:m8.content,fields:m8.fields})}P1("Phase 5 complete - created %d template entities",D8.length),P1("Phase 6: Remapping and saving content for %d documents",T8.length);for(let{document:m8,originalContent:a8,fields:Z6}of T8){let _6=H(a8,E);if(await q.saveDraft(R,M,{id:m8.getObjectId(),content:_6,sessionId:"import-service"},C),await q.publishDocument(R,M,{id:m8.getObjectId()},C),Z6&&f.version>=2)await X(R,M,m8.getObjectId(),Z6,E,C)}P1("Phase 6 complete - saved and published %d documents",T8.length),P1("Phase 7: Remapping and saving content for %d templates",D8.length);for(let{template:m8,originalContent:a8,fields:Z6}of D8){let _6=H(a8,E);if(await q.saveDraft(R,M,{id:m8.getObjectId(),content:_6,sessionId:"import-service"},C),await q.publishDocument(R,M,{id:m8.getObjectId()},C),Z6&&f.version>=2)await X(R,M,m8.getObjectId(),Z6,E,C)}return P1("Phase 7 complete - saved and published %d templates",D8.length),P1("Transaction committed successfully"),{success:!0,counts:{assets:g,stories:D,folders:c,documents:T8.length,templates:D8.length},remapped:E}})};return Object.freeze({isStoreEmpty:w,importDocuments:async(v,M,{filename:f,storeCode:k,projectPath:N})=>{P1("Starting import from %s to store %s",f,k);let R=s5.join(N,sl,f);try{await Tq.access(R),P1("Zip file found: %s",R)}catch(D){throw I.notFound(`Export file not found: ${f}`,"EXPORT_NOT_FOUND")}P1("Validating zip and manifest...");let E=await w(v,M,{storeCode:k});if(!E)throw I.conflict("Store not empty - import requires empty store","STORE_NOT_EMPTY");P1("Store empty check: %s",E);let C=b21.randomUUID(),g=s5.join(N,sl,sB8,C),S=s5.join(N,sl,sB8);await Tq.mkdir(S,{recursive:!0});try{new tB8.default(R).extractAllTo(g,!0),P1("Extracted zip to: %s",g)}catch(D){throw I.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let D=s5.join(g,"manifest.json"),L;try{let e=await Tq.readFile(D,"utf-8");L=JSON.parse(e)}catch(e){throw I.validation(`Failed to read manifest: ${e.message}`,"MANIFEST_READ_FAILED")}if(!y21.includes(L.version))throw I.validation(`Unsupported manifest version: ${L.version}`,"UNSUPPORTED_VERSION");if(!L.entities||!Array.isArray(L.entities))throw I.validation("Invalid manifest structure","MANIFEST_READ_FAILED");P1("Manifest valid: version=%d, entities=%d",L.version,L.entities.length);for(let e of L.entities){if(e.type==="folder"||e.type==="story")continue;let _8;if(e.type==="asset")_8=s5.join(g,"assets",`${e.id}.bin`);else if(e.type==="document"||e.type==="template")_8=s5.join(g,e.path);else{P1("Unknown entity type in import validation: %s",e.type);continue}try{await Tq.access(_8)}catch(T8){throw I.validation(`Missing file for manifest entry: ${e.path||e.id}`,"IMPORT_VALIDATION_FAILED")}}P1("All content files validated");let m=await G(v,M,{manifest:L,tempPath:g,storeCode:k}),c=m.counts.folders+m.counts.documents+m.counts.templates;return P1("Import complete: %d entities imported",c),m}finally{await P(g)}}})},$U8=Object.freeze({create:m21});var B21=($)=>{let{name:K,interval:q,execute:Y}=$,J=null,z=!1,W=null,Z=null,H=0,O=null,M=Object.freeze({getName:()=>K,getInterval:()=>q,getIsRunning:()=>z,getLastRun:()=>W,getLastError:()=>Z,getRunCount:()=>H,getNextRun:()=>O}),f=async()=>{try{await Y(),W=new Date().toISOString(),Z=null,H++}catch(C){console.error(`[CronJob] ${K} failed:`,C),Z={message:C.message,timestamp:new Date().toISOString()}}if(z)O=new Date(Date.now()+q).toISOString()},k=()=>{if(J!==null)return;J=setInterval(f,q),z=!0,O=new Date(Date.now()+q).toISOString()},N=()=>{if(J===null)return;clearInterval(J),J=null,z=!1,O=null},E=Object.freeze({start:k,stop:N,restart:()=>{N(),k()}});return{jobFns:M,controlFns:E}},EC=Object.freeze({create:B21});var KU8=n6(I4(),1),U21=KU8.default("caw:cron:cleanup-edit-states"),qU8=async($)=>{let K=new Date(Date.now()-gJ).toISOString();try{let q=await $.selectFrom("field_definitions as fd").innerJoin("entity_types as et","et.id","fd.owner_entity_type_id").select(["fd.id","fd.name","fd.primitive_type"]).where("fd.name","in",["edit_session_id","edit_started_at","edit_last_activity_at"]).where("et.code","in",["d","t"]).where("et.subtype","is",null).execute(),Y=q.filter((O)=>O.name==="edit_last_activity_at").map((O)=>O.id),J=q.filter((O)=>O.name==="edit_session_id").map((O)=>O.id),z=q.filter((O)=>O.name==="edit_started_at").map((O)=>O.id);if(Y.length===0)return{expired:0};let W=await $.selectFrom("date_fields").select(["entity_id"]).where("field_definition_id","in",Y).where("value","<",K).execute();if(W.length===0)return{expired:0};let Z=W.map((O)=>O.entity_id);if(J.length>0)await $.deleteFrom("string_fields").where("entity_id","in",Z).where("field_definition_id","in",J).execute();let H=[...z,...Y];if(H.length>0)await $.deleteFrom("date_fields").where("entity_id","in",Z).where("field_definition_id","in",H).execute();if(W.length>0)U21("Cleaned up %d expired edit locks (older than %d minutes)",W.length,gJ/60000);return{expired:W.length}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var p21=({db:$})=>{let{jobFns:K,controlFns:q}=EC.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await qU8($)}});return{job:Object.freeze(K),control:q}},YU8=Object.freeze({create:p21});var F21=({db:$})=>{let K=new Map,q=(O,X)=>{let{job:P,control:w}=O.create(X);K.set(P.getName(),{job:P,control:w})},Y=(O)=>{let X=K.get(O);if(!X)throw Error(`Job not found: ${O}`);let P=X.job.getIsRunning();return X.control.start(),{name:O,status:P?"already-running":"started",isRunning:X.job.getIsRunning()}},J=(O)=>{let X=K.get(O);if(!X)throw Error(`Job not found: ${O}`);let P=X.job.getIsRunning();return X.control.stop(),{name:O,status:P?"stopped":"already-stopped",isRunning:X.job.getIsRunning()}},z=(O)=>{let X=K.get(O);if(!X)throw Error(`Job not found: ${O}`);return X.control.restart(),{name:O,status:"restarted",isRunning:X.job.getIsRunning()}},W=()=>{let O=[];for(let[X,{job:P}]of K.entries())O.push({name:P.getName(),interval:P.getInterval(),isRunning:P.getIsRunning(),lastRun:P.getLastRun(),lastError:P.getLastError(),runCount:P.getRunCount(),nextRun:P.getNextRun()});return O},Z=()=>{for(let[O,{control:X}]of K.entries())X.start()},H=()=>{for(let[O,{control:X}]of K.entries())X.stop()};return q(YU8,{db:$}),Object.freeze({register:q,start:Y,stop:J,restart:z,list:W,startAll:Z,stopAll:H})},JU8=Object.freeze({create:F21});import Ul8 from"node:process";import ZU8 from"node:process";import d21 from"node:os";import n21 from"node:fs";import l21 from"node:fs";import zU8 from"node:fs";var tl;function c21(){try{return zU8.statSync("/.dockerenv"),!0}catch{return!1}}function Q21(){try{return zU8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function el(){if(tl===void 0)tl=c21()||Q21();return tl}var $i,i21=()=>{try{return l21.statSync("/run/.containerenv"),!0}catch{return!1}};function SC(){if($i===void 0)$i=i21()||el();return $i}var WU8=()=>{if(ZU8.platform!=="linux")return!1;if(d21.release().toLowerCase().includes("microsoft")){if(SC())return!1;return!0}try{return n21.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!SC():!1}catch{return!1}},HU8=ZU8.env.__IS_WSL_TEST__?WU8:WU8();import Ki from"node:process";function qi(){if(Ki.platform!=="linux")return!1;if(Ki.env.WAYLAND_DISPLAY)return!0;if(Ki.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function E$($){if(typeof $!=="object"||$===null)return!1;let K=Object.getPrototypeOf($);return(K===null||K===Object.prototype||Object.getPrototypeOf(K)===null)&&!(Symbol.toStringTag in $)&&!(Symbol.iterator in $)}import{fileURLToPath as o21}from"node:url";var TP=($,K)=>{let q=Ji(a21($));if(typeof q!=="string")throw TypeError(`${K} must be a string or a file URL: ${q}.`);return q},a21=($)=>Yi($)?$.toString():$,Yi=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,Ji=($)=>$ instanceof URL?o21($):$;var LC=($,K=[],q={})=>{let Y=TP($,"First argument"),[J,z]=E$(K)?[[],K]:[K,q];if(!Array.isArray(J))throw TypeError(`Second argument must be either an array of arguments or an options object: ${J}`);if(J.some((H)=>typeof H==="object"&&H!==null))throw TypeError(`Second argument must be an array of strings: ${J}`);let W=J.map(String),Z=W.find((H)=>H.includes("\x00"));if(Z!==void 0)throw TypeError(`Arguments cannot contain null bytes ("\\0"): ${Z}`);if(!E$(z))throw TypeError(`Last argument must be an options object: ${z}`);return[Y,W,z]};import{ChildProcess as qz1}from"node:child_process";import{StringDecoder as r21}from"node:string_decoder";var{toString:OU8}=Object.prototype,XU8=($)=>OU8.call($)==="[object ArrayBuffer]",e$=($)=>OU8.call($)==="[object Uint8Array]",RY=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),s21=new TextEncoder,PU8=($)=>s21.encode($),t21=new TextDecoder,IC=($)=>t21.decode($),wU8=($,K)=>{return e21($,K).join("")},e21=($,K)=>{if(K==="utf8"&&$.every((z)=>typeof z==="string"))return $;let q=new r21(K),Y=$.map((z)=>typeof z==="string"?PU8(z):z).map((z)=>q.write(z)),J=q.end();return J===""?Y:[...Y,J]},Kv=($)=>{if($.length===1&&e$($[0]))return $[0];return zi($z1($))},$z1=($)=>$.map((K)=>typeof K==="string"?PU8(K):K),zi=($)=>{let K=new Uint8Array(Kz1($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},Kz1=($)=>{let K=0;for(let q of $)K+=q.length;return K};var vU8=($)=>Array.isArray($)&&Array.isArray($.raw),VU8=($,K)=>{let q=[];for(let[z,W]of $.entries())q=Yz1({templates:$,expressions:K,tokens:q,index:z,template:W});if(q.length===0)throw TypeError("Template script must not be empty");let[Y,...J]=q;return[Y,J,{}]},Yz1=({templates:$,expressions:K,tokens:q,index:Y,template:J})=>{if(J===void 0)throw TypeError(`Invalid backslash sequence: ${$.raw[Y]}`);let{nextTokens:z,leadingWhitespaces:W,trailingWhitespaces:Z}=Jz1(J,$.raw[Y]),H=GU8(q,z,W);if(Y===K.length)return H;let O=K[Y],X=Array.isArray(O)?O.map((P)=>jU8(P)):[jU8(O)];return GU8(H,X,Z)},Jz1=($,K)=>{if(K.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let q=[],Y=0,J=TU8.has(K[0]);for(let W=0,Z=0;W<$.length;W+=1,Z+=1){let H=K[Z];if(TU8.has(H)){if(Y!==W)q.push($.slice(Y,W));Y=W+1}else if(H==="\\"){let O=K[Z+1];if(O===`
535
535
  `)W-=1,Z+=1;else if(O==="u"&&K[Z+2]==="{")Z=K.indexOf("}",Z+3);else Z+=zz1[O]??1}}let z=Y===$.length;if(!z)q.push($.slice(Y));return{nextTokens:q,leadingWhitespaces:J,trailingWhitespaces:z}},TU8=new Set([" ","\t","\r",`
536
536
  `]),zz1={x:3,u:5},GU8=($,K,q)=>q||$.length===0||K.length===0?[...$,...K]:[...$.slice(0,-1),`${$.at(-1)}${K[0]}`,...K.slice(1)],jU8=($)=>{let K=typeof $;if(K==="string")return $;if(K==="number")return String($);if(E$($)&&(("stdout"in $)||("isMaxBuffer"in $)))return Wz1($);if($ instanceof qz1||Object.prototype.toString.call($)==="[object Promise]")throw TypeError("Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}.");throw TypeError(`Unexpected "${K}" in template expression`)},Wz1=({stdout:$})=>{if(typeof $==="string")return $;if(e$($))return IC($);if($===void 0)throw TypeError(`Missing result.stdout in template expression. This is probably due to the previous subprocess' "stdout" option.`);throw TypeError(`Unexpected "${typeof $}" stdout in template expression`)};import{spawnSync as GX1}from"node:child_process";import{debuglog as Zz1}from"node:util";import Wi from"node:process";var t5=($)=>xC.includes($),xC=[Wi.stdin,Wi.stdout,Wi.stderr],s9=["stdin","stdout","stderr"],gC=($)=>s9[$]??`stdio[${$}]`;var MU8=($)=>{let K={...$};for(let q of Oi)K[q]=Zi($,q);return K},Zi=($,K)=>{let q=Array.from({length:Hz1($)+1}),Y=Oz1($[K],q,K);return Gz1(Y,K)},Hz1=({stdio:$})=>Array.isArray($)?Math.max($.length,s9.length):s9.length,Oz1=($,K,q)=>E$($)?Xz1($,K,q):K.fill($),Xz1=($,K,q)=>{for(let Y of Object.keys($).sort(Pz1))for(let J of wz1(Y,q,K))K[J]=$[Y];return K},Pz1=($,K)=>AU8($)<AU8(K)?1:-1,AU8=($)=>{if($==="stdout"||$==="stderr")return 0;return $==="all"?2:1},wz1=($,K,q)=>{if($==="ipc")return[q.length-1];let Y=Hi($);if(Y===void 0||Y===0)throw TypeError(`"${K}.${$}" is invalid.
537
537
  It must be "${K}.stdout", "${K}.stderr", "${K}.all", "${K}.ipc", or "${K}.fd3", "${K}.fd4" (and so on).`);if(Y>=q.length)throw TypeError(`"${K}.${$}" is invalid: that file descriptor does not exist.
@@ -606,7 +606,7 @@ try {
606
606
  `,_6=D8+Z6+T8;v4("runJob: Appending output for turn %d",a8),await K.updateJobOutput(Z,{id:W,output:_6})}if(d8.tokensUsed!==null)await K.updateJobTokens(Z,{id:W,tokensUsed:d8.tokensUsed});if(d8.durationMs!==null||d8.totalCostUsd!==null||d8.numTurns!==null||d8.sessionId!==null)await K.updateJobMetadata(Z,{id:W,durationMs:d8.durationMs,totalCostUsd:d8.totalCostUsd,numTurns:d8.numTurns,sessionId:d8.sessionId});if(c===0)await K.updateJobStatus(Z,{id:W,status:"completed",exitCode:0});else{let H6=_8.trim()||`Process exited with code ${c}`;await K.updateJobStatus(Z,{id:W,status:"error",exitCode:c,errorMessage:H6})}v4("runJob: Job %s completed with status %s",W,c===0?"completed":"error")}catch(T8){v4("runJob: Failed to update job after process close: %s",T8.message);try{await K.updateJobStatus(Z,{id:W,status:"error",errorMessage:`Database update failed: ${T8.message}`})}catch(d8){v4("runJob: Failed to set error status for job %s: %s",W,d8.message)}}}),v4("runJob: Process spawned, returning immediately")}})};var nD=Object.freeze({create:qT1});Z4();var Ji8=n6(I4(),1);import{spawn as YT1}from"child_process";import{join as JT1}from"path";var F4=Ji8.default("caw:worktree-service"),zT1=($)=>{if(!$||!$.trim())return[];let K=[],q=$.trim().split(`
607
607
 
608
608
  `);for(let Y of q){let J=Y.trim().split(`
609
- `),z={path:null,commit:null,branch:null,isLocked:!1,isMain:!1};for(let W of J)if(W.startsWith("worktree "))z.path=W.slice(9);else if(W.startsWith("HEAD "))z.commit=W.slice(5);else if(W.startsWith("branch ")){let Z=W.slice(7);z.branch=Z.replace("refs/heads/","")}else if(W==="detached");else if(W==="locked")z.isLocked=!0;else if(W.startsWith("locked "))z.isLocked=!0;if(z.path)K.push(z)}if(K.length>0)K[0].isMain=!0;return K},SP=($,K)=>{return new Promise((q)=>{let Y=YT1("git",$,{cwd:K}),J="",z="";Y.stdout.on("data",(W)=>{J+=W.toString()}),Y.stderr.on("data",(W)=>{z+=W.toString()}),Y.on("close",(W)=>{q({stdout:J,stderr:z,exitCode:W})}),Y.on("error",(W)=>{if(W.code==="ENOENT")q({stdout:"",stderr:"git: command not found",exitCode:-1,enoent:!0});else q({stdout:"",stderr:W.message,exitCode:-1})})})},WT1=()=>{let $=async({projectPath:Y})=>{y.factory(!Y,I.validation,"projectPath is required","MISSING_PROJECT_PATH"),F4("listWorktrees: Running git worktree list --porcelain in %s",Y);let J=await SP(["worktree","list","--porcelain"],Y);if(J.enoent)throw F4("listWorktrees: Git not found"),I.validation("Git not installed or not found in PATH","GIT_NOT_FOUND");if(J.stderr&&J.stderr.includes("not a git repository"))return F4("listWorktrees: Not a git repository"),{worktrees:[],isGitProject:!1};if(J.exitCode!==0)throw F4("listWorktrees: Git command failed with exit code %d: %s",J.exitCode,J.stderr),Error(`Git worktree list failed: ${J.stderr||"Unknown error"}`);let z=zT1(J.stdout);F4("listWorktrees: Parsed %d worktrees",z.length);let W=z.filter((Z)=>!Z.isMain).map((Z)=>({branch:Z.branch,path:Z.path,commit:Z.commit,isLocked:Z.isLocked}));return F4("listWorktrees: Returning %d worktrees (excluding main)",W.length),{worktrees:W,isGitProject:!0}},K=async(Y)=>{if(F4("getDefaultBaseBranch: Checking for main branch in %s",Y),(await SP(["show-ref","--verify","--quiet","refs/heads/main"],Y)).exitCode===0)return F4("getDefaultBaseBranch: Detected default branch: main"),"main";if(F4("getDefaultBaseBranch: main not found, checking for master branch"),(await SP(["show-ref","--verify","--quiet","refs/heads/master"],Y)).exitCode===0)return F4("getDefaultBaseBranch: Detected default branch: master"),"master";throw F4("getDefaultBaseBranch: Neither main nor master branch found"),I.validation("No default branch found (neither main nor master exists)","NO_DEFAULT_BRANCH")};return Object.freeze({listWorktrees:$,createWorktree:async({projectPath:Y,branch:J,baseBranch:z})=>{y.factory(!Y,I.validation,"projectPath is required","MISSING_PROJECT_PATH"),y.factory(!J,I.validation,"branch is required","MISSING_BRANCH"),F4("createWorktree: Creating worktree for branch %s in %s",J,Y),F4("createWorktree: Validating branch name: %s",J);let W=await SP(["check-ref-format","--branch",J],Y);if(W.enoent)throw F4("createWorktree: Git not found"),I.validation("Git not installed or not found in PATH","GIT_NOT_FOUND");if(W.exitCode!==0)throw F4("createWorktree: Invalid branch name: %s",J),I.validation(`Invalid branch name: ${J}`,"INVALID_BRANCH_NAME");let Z=z;if(!Z){F4("createWorktree: No baseBranch provided, detecting default");try{Z=await K(Y)}catch(X){if(X.code==="NO_DEFAULT_BRANCH"){let P=await SP(["status","--porcelain"],Y);if(P.stderr&&P.stderr.includes("not a git repository"))throw F4("createWorktree: Not a git repository"),I.validation("Not a git repository","NOT_GIT_REPOSITORY")}throw X}}let H=JT1(Y,"worktree",J);F4("createWorktree: Worktree path will be: %s",H),F4("createWorktree: Running git worktree add %s -b %s %s",H,J,Z);let O=await SP(["worktree","add",H,"-b",J,Z],Y);if(O.enoent)throw F4("createWorktree: Git not found"),I.validation("Git not installed or not found in PATH","GIT_NOT_FOUND");if(O.stderr&&O.stderr.includes("not a git repository"))throw F4("createWorktree: Not a git repository"),I.validation("Not a git repository","NOT_GIT_REPOSITORY");if(O.stderr&&O.stderr.includes("is already checked out"))throw F4("createWorktree: Branch %s is already checked out",J),I.conflict(`Branch '${J}' is already checked out in another worktree`,"BRANCH_ALREADY_CHECKED_OUT");if(O.stderr&&O.stderr.includes("already exists"))throw F4("createWorktree: Branch %s already exists",J),I.conflict(`Branch '${J}' already exists`,"BRANCH_ALREADY_EXISTS");if(O.exitCode!==0)throw F4("createWorktree: Git worktree add failed with exit code %d: %s",O.exitCode,O.stderr),Error(`Git worktree add failed: ${O.stderr||"Unknown error"}`);return F4("createWorktree: Successfully created worktree at %s for branch %s",H,J),{path:H,branch:J}},getDefaultBaseBranch:K})};var zi8=Object.freeze({create:WT1});var t7=bd.default("caw:core"),oD=bd.default("caw:story-job-tracking"),ZT1=async({databaseFilepath:$,assetsDir:K,lazilyCreateDb:q,kyselyFactory:Y},J)=>{let W=await ZP8.create({kyselyFactory:Y}).getDb($,q),Z=XP8.create(),H=xP8.create(),O=JU8.create({db:W}),X=Fl8.create(),P=new Map,w=async(F)=>{if(!F||!/^P\d+$/.test(F))y.factory(!0,I.notFound,`Project not found: ${F}`,"PROJECT_NOT_FOUND");let l=parseInt(F.slice(1),10);y.factory(l<1||l>Number.MAX_SAFE_INTEGER,I.notFound,`Project not found: ${F}`,"PROJECT_NOT_FOUND");let p=await Z.readProjectByObjectId(W,null,F);return y.factory(!p,I.notFound,`Project not found: ${F}`,"PROJECT_NOT_FOUND"),{projCtx:p.getObjectId(),projectPath:p.getPath(),authCtx:null}},T=async(F)=>{let l=P.get(F);if(l)return l;let p=await H.readRootStoreForProject(W,{},F),i=gP8.create({store:p}),V8=yP8.create({store:p}),n8=o08.create(),O6=n08.create({store:p,folderService:i,documentHooks:n8,fieldService:V8}),j6=r08.create({store:p,documentService:O6});n8.setIncludeResolver(j6,p),O6.setIncludeResolver(j6);let k6=zA8.create(),I6=Ql8.create({store:p,fieldService:V8}),R6=nl8.create({store:p,assetsDir:K}),j1=el8.create({store:p,fieldService:V8}),Q4=zi8.create(),h4=XB.create({db:W,folderService:i,fieldService:V8,documentService:O6,templateService:k6,projectService:null,clipboardService:X,storyService:I6,assetService:R6,jobService:j1,includeResolver:j6,worktreeService:Q4}),q7=VB8.create({store:p,folderService:i,documentService:O6,templateService:k6,storyService:I6,assetService:R6,assetsDir:K}),t1=$U8.create({store:p,folderService:i,documentService:O6,templateService:k6,storyService:I6,fieldService:V8,assetService:R6,assetsDir:K}),P5={folderService:i,fieldService:V8,documentService:O6,templateService:k6,transactionService:h4,exportService:q7,importService:t1,rootStore:p,storyService:I6,assetService:R6,jobService:j1,worktreeService:Q4,includeResolver:j6};return j1.subscribeAll({onJOB_STARTED:({id:l4})=>{setImmediate(async()=>{try{let e3=(await j1.getJob(W,{},{id:l4}))?.fields?.objectId;if(e3&&e3.startsWith("As"))oD("JOB_STARTED: job=%s, objectId=%s - incrementing activeJobCount",l4,e3),await h4.incrementStoryJobCount({},{id:e3})}catch(w5){oD("Error handling JOB_STARTED for job %s: %s",l4,w5.message)}})},onJOB_COMPLETED:({id:l4})=>{setImmediate(async()=>{try{let e3=(await j1.getJob(W,{},{id:l4}))?.fields?.objectId;if(e3&&e3.startsWith("As"))oD("JOB_COMPLETED: job=%s, objectId=%s - decrementing activeJobCount",l4,e3),await h4.decrementStoryJobCount({},{id:e3})}catch(w5){oD("Error handling JOB_COMPLETED for job %s: %s",l4,w5.message)}})}}),P.set(F,P5),P5},G=async()=>{return await Jf.create({projectStore:Z,storeStore:H}).listProjects(W)},j=async(F)=>{if(!F||!/^P\d+$/.test(F))return null;let l=parseInt(F.slice(1),10);if(l<1||l>Number.MAX_SAFE_INTEGER)return null;return await Z.readProjectByObjectId(W,null,F)},v=async(F,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6})=>{let k6=await w(F),{transactionService:I6}=await T(k6.projCtx);return await I6.createFolder(k6,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6})},M=async(F,{id:l,name:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.renameFolder(i,{id:l,name:p})},f=async(F,{id:l,parentId:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.moveFolder(i,{id:l,parentId:p})},k=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteFolder(p,{id:l})},N=async(F,{id:l})=>{let p=await w(F),{folderService:i}=await T(p.projCtx);return await i.readFolder(W,p,{id:l})},R=async(F,{store:l,path:p,type:i})=>{let V8=await w(F),{folderService:n8}=await T(V8.projCtx);return await n8.getFolderByPath(W,V8,{path:p,type:i,storeCode:l})},E=async(F,{id:l})=>{let p=await w(F);if(!a6.parseId(l))throw I.notFound(`Invalid entity ID format: ${l}`,"NOT_FOUND");let{rootStore:V8}=await T(p.projCtx);return{root:await G4.getRootForEntity(W,p,l,V8)}},C=async(F,{folderId:l,store:p,type:i})=>{let V8=await w(F);t7("listFolderContents: Listing contents for project %s: folderId=%s, store=%s, type=%s",V8.projCtx,l||"root",p,i);let{folderService:n8,documentService:O6,rootStore:j6}=await T(V8.projCtx),k6=i;if(l&&!i)k6=await g(W,j6,V8,l,p),t7("listFolderContents: Inferred type %s from folder %s",k6,l);if(!k6||k6!=="d"&&k6!=="t")k6="d",t7('listFolderContents: Defaulting effectiveType to "d"');let I6=await n8.listFolderContents(W,V8,{folderId:l,storeCode:p,type:k6}),R6=l;if((l===null||l===void 0)&&(k6==="d"||k6==="t"))R6=(await j6.readRootFolderForType(W,V8,k6,p)).getObjectId(),t7("listFolderContents: Resolved root folder for type %s: %s",k6,R6);t7("listFolderContents: Querying content with parentId=%s, store=%s, type=%s",R6,p,k6);let j1=await O6.listDocuments(W,V8,{parentId:R6,storeCode:p,type:k6});return t7("listFolderContents: Found %d folders, %d documents",I6?.length||0,j1?.length||0),{folders:I6,documents:j1}},g=async(F,l,p,i,V8)=>{let n8=a6.parseId(i);if(n8&&n8.typeCode==="s")return"d";let O6=await l.readFolder(F,p,{id:i});if(!O6)return null;let j6=await F.selectFrom("entities").innerJoin("entity_types","entities.entity_type_id","entity_types.id").select(["entity_types.code as entity_type_code","entity_types.subtype as entity_type_subtype"]).where("entities.object_id","=",i).executeTakeFirst();if(j6?.entity_type_code==="f"&&j6?.entity_type_subtype==="root_d")return"d";if(j6?.entity_type_code==="f"&&j6?.entity_type_subtype==="root_t")return"t";if(j6?.entity_type_code==="f"&&(j6?.entity_type_subtype==="root_s"||j6?.entity_type_subtype==="tasks"))return"d";if(j6?.entity_type_code==="s")return"d";let k6=await l.readRootFolderForType(F,p,"d",V8),I6=await l.readRootFolderForType(F,p,"t",V8),R6=O6;while(R6&&R6.getParentId()!==null){let j1=await l.readFolder(F,p,{id:R6.getParentId()});if(!j1)break;R6=j1}if(R6&&R6.getObjectId()===k6?.getObjectId())return"d";else if(R6&&R6.getObjectId()===I6?.getObjectId())return"t";return null},S=async(F)=>{let l=await w(F),{rootStore:p}=await T(l.projCtx);return p},D=async(F)=>{let l=await w(F),{storyService:p}=await T(l.projCtx);return p},L=async(F)=>{let l=await w(F),{jobService:p}=await T(l.projCtx);return p},m=async({name:F,path:l})=>{let p=Jf.create({projectStore:Z,storeStore:H}),i=XB.create({db:W,folderService:null,projectService:p}),V8={};return await i.createProject(V8,{name:F,path:l})},c=(F)=>{return Jf.create({projectStore:Z,storeStore:H}).validateProjectPath(F)},e=(F)=>{P.delete(F)},_8=async(F,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6,content:k6,tree:I6,subtype:R6,fields:j1})=>{let Q4=await w(F);t7("createDocument: Creating document in project %s: mode=%s, path=%s, store=%s, type=%s, subtype=%s",Q4.projCtx,l,i,p,j6,R6);let{transactionService:h4}=await T(Q4.projCtx),q7=await h4.createDocument(Q4,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6,content:k6,tree:I6,subtype:R6,fields:j1});return t7("createDocument: Document created: id=%s, path=%s",q7.getObjectId(),q7.getPath()),q7},T8=async(F,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,content:j6,subtype:k6})=>{let I6=await w(F);t7("createTemplate: Creating template in project %s: mode=%s, path=%s, store=%s",I6.projCtx,l,i,p);let{transactionService:R6}=await T(I6.projCtx),j1=await R6.createTemplate(I6,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,content:j6,subtype:k6});return t7("createTemplate: Template created: id=%s, path=%s",j1.getObjectId(),j1.getPath()),j1},d8=async(F,{id:l,resolveIncludes:p=!0})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.readDocument(W,i,{id:l,resolveIncludes:p})},H6=async(F,{path:l,store:p,type:i,resolveIncludes:V8=!0})=>{let n8=await w(F),{documentService:O6,includeResolver:j6}=await T(n8.projCtx),k6=await O6.readDocumentByPath(W,n8,{path:l,type:i,storeCode:p});if(!k6)return null;let{entity:I6,ancestorFolderIds:R6}=k6,j1=null;if(V8&&j6&&I6.getPublishedContent())j1=await j6.resolve(W,n8,I6.getPublishedContent(),I6.getObjectId());return{entity:I6,ancestorFolderIds:R6,resolvedContent:j1}},D8=async(F,{id:l})=>{let p=await w(F),{documentService:i,includeResolver:V8}=await T(p.projCtx),{entity:n8}=await i.readDocument(W,p,{id:l,resolveIncludes:!1}),O6=n8.getDraftContent()||n8.getPublishedContent();if(!O6)return[];return await V8.checkIncludes(W,p,O6,l)},m8=async(F,{id:l})=>{let p=await w(F),{documentService:i,includeResolver:V8,rootStore:n8}=await T(p.projCtx),{entity:O6}=await i.readDocument(W,p,{id:l,resolveIncludes:!1}),j6=O6.getDraftContent()||O6.getPublishedContent();if(!j6)return{updated:[]};let{content:k6,updated:I6}=await V8.updateIncludes(W,p,j6,l);if(I6.length>0)await n8.saveDraft(W,p,{id:l,content:k6});return{updated:I6}},a8=async(F,{id:l,path:p,parentId:i,type:V8})=>{let n8=await w(F),{transactionService:O6}=await T(n8.projCtx);return await O6.updateDocumentPath(n8,{id:l,path:p,parentId:i,type:V8})},Z6=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteDocument(p,{id:l})},_6=async(F,{id:l,subtype:p,fields:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.specialiseDocument(V8,{id:l,subtype:p,fields:i})},u6=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.generaliseDocument(p,{id:l})},y6=async(F,{id:l,content:p,sessionId:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.saveDraft(V8,{id:l,content:p,sessionId:i})},s6=async(F,{id:l})=>{let p=await w(F),{documentService:i}=await T(p.projCtx);return await i.readDraft(W,p,{id:l})},L6=async(F,{id:l,sessionId:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.publishDocument(i,{id:l,sessionId:p})},P8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.discardDraft(p,{id:l})},O8=async(F,{id:l,sessionId:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.setEditState(i,{id:l,sessionId:p})},f8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.clearEditState(p,{id:l})},y8=async(F,{id:l})=>{let p=await w(F),{documentService:i}=await T(p.projCtx);return await i.getEditState(W,p,{id:l})},i8=async(F,{id:l,versionNumber:p})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.readVersion(W,i,{id:l,versionNumber:p})},o8=async(F,{id:l})=>{let p=await w(F),{documentService:i}=await T(p.projCtx);return await i.getVersions(W,p,{id:l})},z6=async(F,{id:l,operation:p,preview:i,ignoreContent:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.editDocument(O6,{id:l,operation:p,preview:i,ignoreContent:V8,sessionId:n8})},h8=async(F,{id:l,operations:p,preview:i,ignoreContent:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.batchEditDocument(O6,{id:l,operations:p,preview:i,ignoreContent:V8,sessionId:n8})},p8=async(F,{id:l,lineNumber:p,checked:i,includeDraft:V8,preview:n8,sessionId:O6})=>{let j6=await w(F),{transactionService:k6}=await T(j6.projCtx);return await k6.checkChecklistItem(j6,{id:l,lineNumber:p,checked:i,includeDraft:V8,preview:n8,sessionId:O6})},s8=async(F,{id:l,lineNumber:p,includeDraft:i,preview:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.toggleChecklistItem(O6,{id:l,lineNumber:p,includeDraft:i,preview:V8,sessionId:n8})},q6=async(F,{id:l,items:p,includeDraft:i,preview:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.batchCheckChecklistItems(O6,{id:l,items:p,includeDraft:i,preview:V8,sessionId:n8})},X6=async(F,{id:l,startLine:p,endLine:i,includeDraft:V8})=>{let n8=await w(F),{documentService:O6}=await T(n8.projCtx);return await O6.readLines(W,n8,{id:l,startLine:p,endLine:i,includeDraft:V8})},f6=async(F,{id:l,startMarker:p,endMarker:i,inclusive:V8,includeDraft:n8})=>{let O6=await w(F),{documentService:j6}=await T(O6.projCtx);return await j6.readBetweenMarkers(W,O6,{id:l,startMarker:p,endMarker:i,inclusive:V8,includeDraft:n8})},M8=async(F,{id:l,includeDraft:p})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.getDocumentStats(W,i,{id:l,includeDraft:p})},x8=async(F,{id:l,maxDepth:p,includeDraft:i})=>{let V8=await w(F),{documentService:n8}=await T(V8.projCtx);return await n8.readHeadings(W,V8,{id:l,maxDepth:p,includeDraft:i})},B8=async(F,{id:l,heading:p,includeHeading:i,includeDraft:V8})=>{let n8=await w(F),{documentService:O6}=await T(n8.projCtx);return await O6.readSection(W,n8,{id:l,heading:p,includeHeading:i,includeDraft:V8})},F8=async(F,{id:l,includeDraft:p})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.readFrontmatter(W,i,{id:l,includeDraft:p})},l8=async(F,{id:l,section:p,includeDraft:i})=>{let V8=await w(F),{documentService:n8}=await T(V8.projCtx);return await n8.readChecklist(W,V8,{id:l,section:p,includeDraft:i})},Y8=async(F,{folderId:l,store:p,type:i="d"})=>{let V8=await w(F),{documentService:n8}=await T(V8.projCtx);return await n8.listDocuments(W,V8,{parentId:l,storeCode:p,type:i})},W8=async(F,{id:l,params:p,target:i,targetOptions:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6,jobService:k6,rootStore:I6}=await T(O6.projCtx),R6=await j6.renderTemplate(O6,{id:l,params:p,target:i,targetOptions:V8,sessionId:n8});if(R6.target==="job"&&R6.jobId){let j1=nD.create({jobService:k6,transactionService:j6,store:I6,db:W,projectPath:O6.projectPath});setImmediate(async()=>{try{await j1.runJob(R6.jobId,O6)}catch(Q4){t7("JobRunner error for job %s: %s",R6.jobId,Q4.message);try{await j6.updateJobStatus(O6,{id:R6.jobId,status:"error",errorMessage:Q4.message})}catch(h4){t7("Failed to update job %s status to error: %s",R6.jobId,h4.message)}}})}return R6},J8=async(F,{id:l})=>{let p=await w(F),{documentService:i,templateService:V8}=await T(p.projCtx),{entity:n8}=await i.readDocument(W,p,{id:l});if(!n8.getPublishedContent())return{parameters:{},detectedVariables:[],target:null,targetPath:null};return V8.extractTemplateParameters(n8.getPublishedContent())},c8=async(F,{typeCode:l,store:p="A"})=>{let i=await w(F),{rootStore:V8}=await T(i.projCtx);return{templates:(await V8.findEntitiesByFieldValue(W,i,{storeCode:p,typeCode:"t",subtype:null,fieldName:"associatedType",fieldValue:l})).map((O6)=>({id:O6.object_id,name:O6.name,path:O6.path}))}},o=async(F,{store:l,ownerEntityId:p,ownerEntityTypeCode:i,ownerEntityTypeSubtype:V8,name:n8,label:O6,description:j6,primitiveType:k6,required:I6,multiplicity:R6,isSystem:j1})=>{let Q4=await w(F),{transactionService:h4}=await T(Q4.projCtx);return await h4.createFieldDefinition(Q4,{store:l,ownerEntityId:p,ownerEntityTypeCode:i,ownerEntityTypeSubtype:V8,name:n8,label:O6,description:j6,primitiveType:k6,required:I6,multiplicity:R6,isSystem:j1})},X8=async(F,{id:l})=>{let p=await w(F),{fieldService:i}=await T(p.projCtx);return await i.readFieldDefinition(W,p,{id:l})},t=async(F,{store:l,ownerEntityId:p,includeSystem:i})=>{let V8=await w(F),{fieldService:n8}=await T(V8.projCtx);return await n8.getFieldDefinitionsForOwner(W,V8,{store:l,ownerEntityId:p,includeSystem:i})},G8=async(F,{store:l,code:p,subtype:i})=>{let V8=await w(F),{fieldService:n8}=await T(V8.projCtx);return await n8.getFieldDefinitionsForType(W,V8,{store:l,code:p,subtype:i})},z8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteFieldDefinition(p,{id:l})},k8=async(F,{entityId:l,fieldDefinitionId:p,fieldName:i,value:V8,values:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.setFieldValue(O6,{entityId:l,fieldDefinitionId:p,fieldName:i,value:V8,values:n8})},b8=async(F,{id:l})=>{let p=await w(F),i=a6.parseId(l);if(!i)throw Error(`Cannot parse entity ID: ${l}`);let{rootStore:V8}=await T(p.projCtx),{typeCode:n8}=i;switch(n8){case"f":return await V8.readFolder(W,p,{id:l});case"d":case"t":return await V8.readContent(W,p,{id:l});case"s":return await V8.readStory(W,p,{id:l});case"j":return await V8.readJob(W,p,{id:l});default:throw Error(`Unsupported entity type code: ${n8}`)}},Q8=async(F,{entityId:l})=>{let p;try{p=await b8(F,{id:l})}catch(i){if(i.code==="PROJECT_NOT_FOUND")throw i;return{}}if(!p)return{};return p.getFields()},l6=async(F,{entityId:l,fieldDefinitionId:p,fieldName:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.deleteFieldValue(V8,{entityId:l,fieldDefinitionId:p,fieldName:i})},D4=async(F)=>{let l=await w(F),{exportService:p}=await T(l.projCtx);return await p.listExports(W,l,{projectPath:l.projectPath})},K3=async(F,{store:l="A"}={})=>{let p=await w(F),{exportService:i}=await T(p.projCtx);return await i.exportPreview(W,p,{storeCode:l})},K7=async(F,{store:l="A",confirm:p=!1}={})=>{let i=await w(F),{exportService:V8}=await T(i.projCtx);if(!p)return await V8.exportPreview(W,i,{storeCode:l});return await V8.exportDocuments(W,i,{storeCode:l,projectPath:i.projectPath})},B1=async(F,{filename:l,store:p="A"})=>{let i=await w(F);y.factory(!l,I.validation,"filename is required","FILENAME_REQUIRED");let{importService:V8}=await T(i.projCtx);return await V8.importDocuments(W,i,{filename:l,storeCode:p,projectPath:i.projectPath})},L$=async(F,{name:l,store:p,state:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.createStory(V8,{name:l,storeCode:p,state:i})},f$=async(F,{store:l})=>{let p=await w(F),{storyService:i}=await T(p.projCtx);return await i.listStories(W,p,{store:l})},X5=async(F,{id:l})=>{let p=await w(F),{storyService:i}=await T(p.projCtx);return await i.getStory(W,p,{id:l})},N8=async(F,{id:l,state:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.updateStoryState(i,{id:l,state:p})},C8=async(F,{id:l,name:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.renameStory(i,{id:l,name:p})},$8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteStory(p,{id:l})},S8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.incrementStoryJobCount(p,{id:l})},L8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.decrementStoryJobCount(p,{id:l})},u8=async(F,{store:l,buffer:p,mimeType:i,originalFilename:V8,widthPx:n8,heightPx:O6,displayWidth:j6,displayHeight:k6})=>{let I6=await w(F),{transactionService:R6}=await T(I6.projCtx);return await R6.createAsset(I6,{store:l,buffer:p,mimeType:i,originalFilename:V8,widthPx:n8,heightPx:O6,displayWidth:j6,displayHeight:k6})},M6=async(F,{id:l})=>{let p=await w(F),{assetService:i}=await T(p.projCtx);return await i.readAsset(W,p,{id:l})},x=async(F,{id:l})=>{let p=await w(F),{assetService:i}=await T(p.projCtx);return await i.readAssetBinary(W,p,{id:l})},w8=async(F,{store:l})=>{let p=await w(F),{assetService:i}=await T(p.projCtx);return await i.listAssets(W,p,{store:l})},u=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteAsset(p,{id:l})},s=async(F,{name:l,agent:p,model:i,prompt:V8,store:n8="A",workingDirectory:O6,objectId:j6,streaming:k6})=>{let I6=await w(F),{transactionService:R6,jobService:j1,rootStore:Q4}=await T(I6.projCtx),h4=await R6.createJob(I6,{store:n8,name:l,agent:p,model:i,prompt:V8,workingDirectory:O6,objectId:j6,streaming:k6}),q7=nD.create({jobService:j1,transactionService:R6,store:Q4,db:W,projectPath:I6.projectPath});return setImmediate(async()=>{try{await q7.runJob(h4.id,I6)}catch(t1){t7("JobRunner error for job %s: %s",h4.id,t1.message);try{await R6.updateJobStatus(I6,{id:h4.id,status:"error",errorMessage:t1.message})}catch(P5){t7("Failed to update job %s status to error: %s",h4.id,P5.message)}}}),h4},Q=async(F,{store:l="A",status:p})=>{let i=await w(F),{jobService:V8}=await T(i.projCtx);return await V8.listJobs(W,i,{store:l,status:p})},a=async(F,{id:l})=>{let p=await w(F),{jobService:i}=await T(p.projCtx);return await i.getJob(W,p,{id:l})},n=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteJob(p,{id:l})},d=async(F,{id:l,prompt:p,model:i})=>{let V8=await w(F),{transactionService:n8,jobService:O6,rootStore:j6}=await T(V8.projCtx),k6=await n8.continueJob(V8,{id:l,prompt:p,model:i}),I6=nD.create({jobService:O6,transactionService:n8,store:j6,db:W,projectPath:V8.projectPath});return setImmediate(async()=>{try{await I6.runJob(k6.id,V8)}catch(R6){t7("JobRunner error for job %s: %s",k6.id,R6.message);try{await n8.updateJobStatus(V8,{id:k6.id,status:"error",errorMessage:R6.message})}catch(j1){t7("Failed to update job %s status to error: %s",k6.id,j1.message)}}}),k6},H8=async(F,{id:l,name:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.renameJob(i,{id:l,name:p})},j8=async(F,{id:l})=>{let p=await w(F),{jobService:i}=await T(p.projCtx);return await i.getProcessStatus(W,p,{id:l})},E8=async(F)=>{let l=await w(F),{worktreeService:p}=await T(l.projCtx);return await p.listWorktrees({projectPath:l.projectPath})},I8=async(F,{branch:l,baseBranch:p})=>{let i=await w(F),{worktreeService:V8}=await T(i.projCtx);return await V8.createWorktree({projectPath:i.projectPath,branch:l,baseBranch:p})};if(J)J({db:W,projectStore:Z,storeStore:H});return Object.freeze({getProjects:G,getProjectByObjectId:j,createProject:m,validateProjectPath:c,createFolder:v,renameFolder:M,moveFolder:f,deleteFolder:k,getFolder:N,getFolderByPath:R,getRootForEntity:E,listFolderContents:C,getRootStore:S,getStoryService:D,getJobService:L,evictProject:e,getDb:()=>W,createDocument:_8,createTemplate:T8,readDocument:d8,readDocumentByPath:H6,checkIncludes:D8,updateIncludes:m8,updateDocumentPath:a8,deleteDocument:Z6,specialiseDocument:_6,generaliseDocument:u6,saveDraft:y6,readDraft:s6,publishDocument:L6,discardDraft:P8,setEditState:O8,clearEditState:f8,getEditState:y8,readVersion:i8,getVersions:o8,editDocument:z6,batchEditDocument:h8,checkChecklistItem:p8,toggleChecklistItem:s8,batchCheckChecklistItems:q6,listDocuments:Y8,readLines:X6,readBetweenMarkers:f6,getDocumentStats:M8,readHeadings:x8,readSection:B8,readFrontmatter:F8,readChecklist:l8,renderTemplate:W8,getTemplateParameters:J8,listTemplatesByType:c8,createFieldDefinition:o,readFieldDefinition:X8,getFieldDefinitions:t,getTypeFields:G8,deleteFieldDefinition:z8,setField:k8,getFields:Q8,readEntity:b8,deleteField:l6,listExports:D4,exportPreview:K3,exportDocuments:K7,importDocuments:B1,createStory:L$,listStories:f$,getStory:X5,renameStory:C8,updateStoryState:N8,deleteStory:$8,incrementStoryJobCount:S8,decrementStoryJobCount:L8,createAsset:u8,readAsset:M6,readAssetBinary:x,listAssets:w8,deleteAsset:u,createJob:s,listJobs:Q,getJob:a,deleteJob:n,continueJob:d,renameJob:H8,getProcessStatus:j8,listWorktrees:E8,createWorktree:I8,listCrons:()=>O.list(),startCron:(F)=>O.start(F),stopCron:(F)=>O.stop(F),restartCron:(F)=>O.restart(F),startAllCrons:()=>O.startAll(),stopAllCrons:()=>O.stopAll(),registerCronJob:(F,l)=>{O.register(F,l)}})},Wi8=Object.freeze({create:ZT1});var Zi8=n6(AI(),1);import{join as HT1}from"path";var OT1=($,{staticPath:K})=>{return $.use(Zi8.default.static(K)),$.get("*",(q,Y,J)=>{if(q.path.startsWith("/api")||q.path==="/health")return J();Y.sendFile(HT1(K,"index.html"))}),Object.freeze({})},Hi8=Object.freeze({create:OT1});var Oi8=n6(I4(),1),aD=Oi8.default("caw:api:projects"),XT1=($,{core:K})=>{return $.get("/api/projects",async(q,Y)=>{try{aD("GET /api/projects - Fetching projects list");let J=await K.getProjects();aD("GET /api/projects - Returning %d projects",J.length),J.forEach((z)=>{aD(" - %s (%s) with %d children",z.name,z.objectId,z.children?.length||0)}),Y.json(J)}catch(J){aD("GET /api/projects - Error: %s",J.message),Y.status(500).json({error:J.message})}}),$.post("/api/projects/validate",async(q,Y)=>{try{let{path:J}=q.body,z=K.validateProjectPath(J);Y.json(z)}catch(J){if(J.code==="VALIDATION_ERROR")return Y.status(400).json({error:J.message,code:"VALIDATION_ERROR"});Y.status(500).json({error:J.message})}}),$.post("/api/projects",async(q,Y)=>{try{let{name:J,path:z}=q.body;if(!J||typeof J!=="string"||J.trim()==="")return Y.status(400).json({error:"Name is required",code:"VALIDATION_ERROR"});if(!z||typeof z!=="string"||z.trim()==="")return Y.status(400).json({error:"Path is required",code:"VALIDATION_ERROR"});if(J.length>255)return Y.status(400).json({error:"Name exceeds maximum length (255)",code:"VALIDATION_ERROR"});let W=await K.createProject({name:J.trim(),path:z.trim()});Y.status(201).json(W.toJSON())}catch(J){if(J.code==="DUPLICATE_PATH")return Y.status(409).json({error:J.message,code:"DUPLICATE_PATH"});console.error("Failed to create project:",J),Y.status(500).json({error:J.message})}}),Object.freeze({})},Xi8=Object.freeze({create:XT1});var wi8=n6(I4(),1);var PT1=($,K)=>{if($.isDomainError){let q=$.code==="UNAUTHORIZED"||$.code==="INVALID_TOKEN"?401:$.code==="NOT_FOUND"||$.code==="PROJECT_NOT_FOUND"||$.code==="EXPORT_NOT_FOUND"||$.code==="STORY_NOT_FOUND"||$.code==="JOB_NOT_FOUND"||$.code==="ASSET_NOT_FOUND"||$.code==="BLOB_NOT_FOUND"||$.code==="STORE_NOT_FOUND"||$.code==="INCLUDE_NOT_FOUND"||$.code==="INCLUDE_VERSION_NOT_FOUND"||$.code==="ENTITY_TYPE_NOT_FOUND"||$.code==="FOLDER_NOT_FOUND"?404:$.code==="CONFLICT"||$.code==="STORE_NOT_EMPTY"||$.code==="EDIT_CONFLICT"||$.code==="DUPLICATE_NAME"||$.code==="BRANCH_ALREADY_CHECKED_OUT"||$.code==="BRANCH_ALREADY_EXISTS"?409:$.code==="EXPORT_ERROR"||$.code==="STORY_ROOT_NOT_FOUND"?500:400;return K.status(q).json({error:$.message,code:$.code})}console.error("Unhandled error:",$),K.status(500).json({error:$.message})},A6=PT1;var e9=wi8.default("caw:api:folders"),Pi8=($)=>({folders:$.folders.map((K)=>K.toJSON()),documents:$.documents.map((K)=>K.toJSON())}),wT1=($,{core:K})=>{return $.get("/api/p/:projectId/folders/contents",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,type:W}=q.query;e9("GET /api/p/%s/folders/contents - Listing root contents: store=%s, type=%s",J,z,W);let Z=await K.listFolderContents(J,{folderId:null,store:z,type:W}),H=Pi8(Z);e9("GET /api/p/%s/folders/contents - Found %d folders, %d documents",J,H.folders.length,H.documents.length),Y.json(H)}catch(J){e9("GET /api/p/%s/folders/contents - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/folders/by-path",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,type:Z}=q.query,H=await K.getFolderByPath(J,{path:z,store:W,type:Z});if(!H)return Y.status(404).json({error:"Not found"});Y.json(H.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/contents",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{type:W}=q.query;e9("GET /api/p/%s/folders/%s/contents - Listing folder contents: type=%s",J,z,W);let Z=await K.listFolderContents(J,{folderId:z,type:W}),H=Pi8(Z);e9("GET /api/p/%s/folders/%s/contents - Found %d folders, %d documents",J,z,H.folders.length,H.documents.length),Y.json(H)}catch(J){e9("GET /api/p/%s/folders/%s/contents - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/root",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;e9("GET /api/p/%s/folders/%s/root - Getting root for entity",J,z);let W=await K.getRootForEntity(J,{id:z});e9("GET /api/p/%s/folders/%s/root - Found root: %s (type=%s, subtype=%s)",J,z,W.root.id,W.root.type,W.root.subtype),Y.json(W)}catch(J){e9("GET /api/p/%s/folders/%s/root - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/folders/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getFolder(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W.toJSON())}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/folders",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,root:Z,parentId:H,name:O}=q.body,X=z&&W&&!Z&&!H,P=Z&&z&&!W&&!H;if([X,P,H&&O&&!z&&!Z].filter(Boolean).length!==1)return Y.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let G;if(X)G="fullPath";else if(P)G="rootRelative";else G="parentName";e9("POST /api/p/%s/folders - Creating folder: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s",J,G,z,W,Z,H,O);let j=await K.createFolder(J,{mode:G,path:z,store:W,root:Z,parentId:H,name:O});e9("POST /api/p/%s/folders - Folder created: id=%s, path=%s",J,j.getObjectId(),j.getPath()),Y.status(201).json(j.toJSON())}catch(J){e9("POST /api/p/%s/folders - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.delete("/api/p/:projectId/folders/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.deleteFolder(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.patch("/api/p/:projectId/folders/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W,parentId:Z}=q.body;if(W&&Z)return Y.status(400).json({error:"Provide only name or parentId, not both",code:"INVALID_REQUEST"});if(!W&&!Z)return Y.status(400).json({error:"Provide name or parentId",code:"INVALID_REQUEST"});let H;if(W)H=await K.renameFolder(J,{id:z,name:W});else H=await K.moveFolder(J,{id:z,parentId:Z});Y.json(H.toJSON())}catch(J){A6(J,Y)}}),Object.freeze({})},Ti8=Object.freeze({create:wT1});var TT1=($,{core:K})=>{return $.post("/api/p/:projectId/field-definitions",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,ownerEntityId:W,ownerEntityTypeCode:Z,ownerEntityTypeSubtype:H,name:O,label:X,description:P,primitiveType:w,required:T,multiplicity:G}=q.body,j=await K.createFieldDefinition(J,{store:z,ownerEntityId:W??null,ownerEntityTypeCode:Z,ownerEntityTypeSubtype:H,name:O,label:X??null,description:P??null,primitiveType:w,required:T??!1,multiplicity:G??"single"});Y.status(201).json(j.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/types/:code/:subtype/fields",async(q,Y)=>{try{let{projectId:J,code:z,subtype:W}=q.params,{store:Z}=q.query,H=await K.getTypeFields(J,{store:Z||"A",code:z,subtype:W});Y.json({fields:H.map((O)=>O.toJSON())})}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/field-definitions/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.readFieldDefinition(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/field-definitions",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,ownerEntityId:W,includeSystem:Z}=q.query,H=await K.getFieldDefinitions(J,{store:z,ownerEntityId:W??null,includeSystem:Z==="true"});Y.json(H.map((O)=>O.toJSON()))}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/field-definitions/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.deleteFieldDefinition(J,{id:z});Y.json(W.toJSON())}catch(J){A6(J,Y)}}),$.put("/api/p/:projectId/entities/:id/fields/:fieldName",async(q,Y)=>{try{let{projectId:J,id:z,fieldName:W}=q.params,{fieldDefinitionId:Z,value:H,values:O}=q.body,X={entityId:z,fieldDefinitionId:Z!==void 0?Z:null,fieldName:W};if(H!==void 0)X.value=H;if(O!==void 0)X.values=O;await K.setField(J,X);let P=await K.readEntity(J,{id:z});Y.json(P.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/entities/:id/fields",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getFields(J,{entityId:z}),Z={};for(let[H,O]of Object.entries(W))Z[H]=O.toJSON();Y.json(Z)}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/entities/:id/fields/:fieldName",async(q,Y)=>{try{let{projectId:J,id:z,fieldName:W}=q.params,{fieldDefinitionId:Z}=q.query,H={entityId:z,fieldName:W};if(Z!==void 0)H.fieldDefinitionId=Z;await K.deleteField(J,H),Y.status(204).send()}catch(J){A6(J,Y)}}),Object.freeze({})},Gi8=Object.freeze({create:TT1});var ji8=n6(I4(),1);var $5=ji8.default("caw:api:documents"),GT1=($,{core:K})=>{return $.post("/api/p/:projectId/documents",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P,fields:w}=q.body,T=z&&W&&!Z&&!H,G=Z&&z&&!W&&!H;if([T,G,H&&O&&!z&&!Z].filter(Boolean).length!==1)return Y.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let M;if(T)M="fullPath";else if(G)M="rootRelative";else M="parentName";$5("POST /api/p/%s/documents - Creating document: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",J,M,z,W,Z,H,O,!!X);let k=(await K.createDocument(J,{mode:M,path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P,fields:w})).toJSON();$5("POST /api/p/%s/documents - Document created: id=%s, path=%s",J,k.id,k.path),Y.status(201).json(k)}catch(J){$5("POST /api/p/%s/documents - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/templates",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P}=q.body,w=z&&W&&!Z&&!H,T=Z&&z&&!W&&!H;if([w,T,H&&O&&!z&&!Z].filter(Boolean).length!==1)return Y.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let v;if(w)v="fullPath";else if(T)v="rootRelative";else v="parentName";$5("POST /api/p/%s/templates - Creating template: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",J,v,z,W,Z,H,O,!!X);let f=(await K.createTemplate(J,{mode:v,path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P})).toJSON();$5("POST /api/p/%s/templates - Template created: id=%s, path=%s",J,f.id,f.path),Y.status(201).json(f)}catch(J){$5("POST /api/p/%s/templates - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/documents/by-path",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,type:Z="d",resolveIncludes:H="true"}=q.query,O=await K.readDocumentByPath(J,{path:z,store:W,type:Z,resolveIncludes:H!=="false"});if(!O)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});let{entity:X,ancestorFolderIds:P,resolvedContent:w}=O,T={...X.toJSON(),ancestorFolderIds:P};if(w!==null)T.resolvedContent=w;Y.json(T)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents",async(q,Y)=>{try{let{projectId:J}=q.params,{folderId:z,store:W,type:Z="d"}=q.query,H=await K.listDocuments(J,{folderId:z??null,store:W,type:Z});Y.json(H.map((O)=>O.toJSON()))}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/templates/by-type/:typeCode",async(q,Y)=>{try{let{projectId:J,typeCode:z}=q.params,{store:W}=q.query,Z=await K.listTemplatesByType(J,{typeCode:z,store:W});Y.json(Z)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/parameters",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{entity:W}=await K.readDocument(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});let Z=W.getPublishedContent();if(!Z)return Y.json({id:z,path:W.getPath(),parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,skipDialog:!1,detectedVariables:[]});try{let{parameters:H,target:O,targetPath:X,targetParentId:P,targetName:w,targetRoot:T,targetStore:G,targetJobName:j,targetJobAgent:v,targetJobModel:M,targetJobWorktree:f,targetJobSkipDialog:k,skipDialog:N}=FK.getParameters(Z),{body:R}=FK.parseFrontMatter(Z),E=Array.from(FK.extractVariables(R));Y.json({id:z,path:W.getPath(),parameters:H,target:O,targetPath:X,targetParentId:P,targetName:w,targetRoot:T,targetStore:G,targetJobName:j,targetJobAgent:v,targetJobModel:M,targetJobWorktree:f,targetJobSkipDialog:k,skipDialog:N,detectedVariables:E})}catch(H){return Y.json({id:z,path:W.getPath(),parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,skipDialog:!1,detectedVariables:[],parseError:H.message})}}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/render",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{params:W,target:Z,targetOptions:H}=q.body,O=await K.renderTemplate(J,{id:z,params:W,target:Z,targetOptions:H,sessionId:q.sessionId});Y.json(O)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{resolveIncludes:W="true"}=q.query,{entity:Z,ancestorFolderIds:H,resolvedContent:O}=await K.readDocument(J,{id:z,resolveIncludes:W!=="false"});if(!Z)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});let X={...Z.toJSON(),ancestorFolderIds:H};if(O!==null)X.resolvedContent=O;Y.json(X)}catch(J){A6(J,Y)}}),$.patch("/api/p/:projectId/documents/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{path:W,parentId:Z}=q.body,H=a6.getTypeFromId(z),O=await K.updateDocumentPath(J,{id:z,path:W,parentId:Z,type:H});Y.json(O.toJSON())}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/documents/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.deleteDocument(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.put("/api/p/:projectId/documents/:id/draft",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{content:W}=q.body,Z=q.sessionId;if(W===void 0)return Y.status(400).json({error:"content is required",code:"MISSING_CONTENT"});let H=await K.saveDraft(J,{id:z,content:W,sessionId:Z});Y.json({id:z,updated:!0,lockLost:H.lockLost??!1})}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/draft",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.readDraft(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/publish",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.publishDocument(J,{id:z,sessionId:q.sessionId});Y.json(W)}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/documents/:id/draft",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;await K.discardDraft(J,{id:z}),Y.json({id:z,discarded:!0})}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/versions",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getVersions(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/versions/:versionNumber",async(q,Y)=>{try{let{projectId:J,id:z,versionNumber:W}=q.params,Z=await K.readVersion(J,{id:z,versionNumber:parseInt(W,10)});if(!Z)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(Z)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/edit-state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getEditState(J,{id:z});if(!W)return Y.json({locked:!1});Y.json({locked:!0,locked_at:W.startedAt})}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/edit-state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=q.sessionId;if(!W)return Y.status(400).json({error:"X-Session-Id header required",code:"MISSING_SESSION_ID"});let Z=await K.setEditState(J,{id:z,sessionId:W});if(!Z.success)return Y.status(409).json(Z);Y.json(Z)}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/documents/:id/edit-state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;await K.clearEditState(J,{id:z}),Y.json({success:!0})}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/specialise",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{subtype:W,fields:Z}=q.body;$5("POST /api/p/%s/documents/%s/specialise - subtype=%s, hasFields=%s",J,z,W,!!Z);let O=(await K.specialiseDocument(J,{id:z,subtype:W,fields:Z})).entity.toJSON();$5("POST /api/p/%s/documents/%s/specialise - Success: subtype=%s",J,z,O.subtype),Y.json(O)}catch(J){$5("POST /api/p/%s/documents/%s/specialise - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/generalise",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;$5("POST /api/p/%s/documents/%s/generalise",J,z);let Z=(await K.generaliseDocument(J,{id:z})).entity.toJSON();$5("POST /api/p/%s/documents/%s/generalise - Success: subtype=%s",J,z,Z.subtype),Y.json(Z)}catch(J){$5("POST /api/p/%s/documents/%s/generalise - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),Object.freeze({})},vi8=Object.freeze({create:GT1});var Vi8=n6(I4(),1);var k9=Vi8.default("caw:api:export"),jT1=($,{core:K})=>{return $.get("/api/p/:projectId/exports",async(q,Y)=>{try{let{projectId:J}=q.params;k9("GET /api/p/%s/exports - Listing export files",J);let z=await K.listExports(J);k9("GET /api/p/%s/exports - Found %d export files",J,z.length),Y.json({ok:!0,exports:z})}catch(J){k9("GET /api/p/:projectId/exports - Error: %s",J.message),A6(J,Y)}}),$.get("/api/p/:projectId/export/preview",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z}=q.query;k9("GET /api/p/%s/export/preview - Previewing export: store=%s",J,z);let W=await K.exportPreview(J,{store:z});k9("GET /api/p/%s/export/preview - Preview complete: %d to export, %d draft-only",J,(W.toExport?.folders?.length||0)+(W.toExport?.documents?.length||0)+(W.toExport?.templates?.length||0),(W.draftOnly?.documents?.length||0)+(W.draftOnly?.templates?.length||0)),Y.json(W)}catch(J){k9("GET /api/p/:projectId/export/preview - Error: %s",J.message),A6(J,Y)}}),$.post("/api/p/:projectId/export",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,confirm:W}=q.body;k9("POST /api/p/%s/export - Export request: store=%s, confirm=%s",J,z,W);let Z=await K.exportDocuments(J,{store:z,confirm:W});if(W)k9("POST /api/p/%s/export - Export complete: %s",J,Z.filename);else k9("POST /api/p/%s/export - Preview returned (confirm=false)",J);Y.json(Z)}catch(J){k9("POST /api/p/:projectId/export - Error: %s",J.message),A6(J,Y)}}),$.post("/api/p/:projectId/import",async(q,Y)=>{try{let{projectId:J}=q.params,{filename:z,store:W}=q.body;k9("POST /api/p/%s/import - Import request: filename=%s, store=%s",J,z,W);let Z=await K.importDocuments(J,{filename:z,store:W});k9("POST /api/p/%s/import - Import complete: %d folders, %d documents, %d templates",J,Z.counts?.folders||0,Z.counts?.documents||0,Z.counts?.templates||0),Y.json({ok:!0,...Z})}catch(J){k9("POST /api/p/:projectId/import - Error: %s",J.message),A6(J,Y)}}),Object.freeze({})},Ai8=Object.freeze({create:jT1});var Mi8=n6(I4(),1);var K5=Mi8.default("caw:api:stories"),vT1=($,{core:K})=>{return $.post("/api/p/:projectId/stories",async(q,Y)=>{try{let{projectId:J}=q.params,{name:z,store:W="A",state:Z}=q.body;K5("POST /api/p/%s/stories - Creating story: name=%s, store=%s, state=%s",J,z,W,Z);let H=await K.createStory(J,{name:z,store:W,state:Z});Y.status(201).json(H)}catch(J){K5("POST /api/p/%s/stories - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/stories",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query;K5("GET /api/p/%s/stories - Listing stories: store=%s",J,z);let W=await K.listStories(J,{store:z});Y.json(W)}catch(J){K5("GET /api/p/%s/stories - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;K5("GET /api/p/%s/stories/%s - Getting story",J,z);let W=await K.getStory(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W)}catch(J){K5("GET /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.patch("/api/p/:projectId/stories/:id/state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{state:W}=q.body;if(!W)return Y.status(400).json({error:"State is required",code:"MISSING_STATE"});K5("PATCH /api/p/%s/stories/%s/state - Updating state to: %s",J,z,W);let Z=await K.updateStoryState(J,{id:z,state:W});Y.json(Z)}catch(J){K5("PATCH /api/p/%s/stories/%s/state - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.patch("/api/p/:projectId/stories/:id/name",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W}=q.body;if(!W)return Y.status(400).json({error:"Name is required",code:"MISSING_NAME"});K5("PATCH /api/p/%s/stories/%s/name - Renaming to: %s",J,z,W);let Z=await K.renameStory(J,{id:z,name:W});Y.json(Z)}catch(J){K5("PATCH /api/p/%s/stories/%s/name - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.delete("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;K5("DELETE /api/p/%s/stories/%s - Deleting story",J,z);let W=await K.deleteStory(J,{id:z});Y.json(W)}catch(J){K5("DELETE /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),Object.freeze({})},_i8=Object.freeze({create:vT1});var ln8=n6(I4(),1),jh=n6(cn8(),1);var _q=ln8.default("caw:api:assets"),Qn8=["image/png","image/jpeg","image/gif","image/webp"],Jv1=jh.default({storage:jh.default.memoryStorage(),limits:{fileSize:10485760},fileFilter:($,K,q)=>{if(Qn8.includes(K.mimetype))q(null,!0);else q(Error(`Unsupported MIME type: ${K.mimetype}. Allowed: ${Qn8.join(", ")}`))}}),zv1=($,{core:K})=>{return $.post("/api/p/:projectId/assets",Jv1.single("file"),async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query,W=q.file;if(!W)return Y.status(400).json({error:"No file uploaded",code:"MISSING_FILE"});let Z=q.body.widthPx?parseInt(q.body.widthPx,10):void 0,H=q.body.heightPx?parseInt(q.body.heightPx,10):void 0,O=q.body.displayWidth?parseInt(q.body.displayWidth,10):void 0,X=q.body.displayHeight?parseInt(q.body.displayHeight,10):void 0;_q("POST /api/p/%s/assets - Uploading: %s (%s, %d bytes)",J,W.originalname,W.mimetype,W.size);let P=await K.createAsset(J,{store:z,buffer:W.buffer,mimeType:W.mimetype,originalFilename:W.originalname,widthPx:Z,heightPx:H,displayWidth:O,displayHeight:X});Y.status(201).json(P)}catch(J){_q("POST /api/p/%s/assets - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/assets/:id/binary",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;_q("GET /api/p/%s/assets/%s/binary - Retrieving binary",J,z);let W=await K.readAssetBinary(J,{id:z});Y.set("Content-Type",W.mimeType),Y.set("Content-Length",W.sizeBytes),Y.set("Cache-Control","public, max-age=31536000, immutable"),Y.set("Content-Disposition",`inline; filename="${W.originalFilename}"`),Y.send(W.buffer)}catch(J){_q("GET /api/p/%s/assets/%s/binary - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/assets/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;_q("GET /api/p/%s/assets/%s - Retrieving metadata",J,z);let W=await K.readAsset(J,{id:z});Y.json(W)}catch(J){_q("GET /api/p/%s/assets/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/assets",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query;_q("GET /api/p/%s/assets - Listing assets for store %s",J,z);let W=await K.listAssets(J,{store:z});Y.json(W)}catch(J){_q("GET /api/p/%s/assets - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.delete("/api/p/:projectId/assets/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;_q("DELETE /api/p/%s/assets/%s - Deleting asset",J,z);let W=await K.deleteAsset(J,{id:z});Y.json(W)}catch(J){_q("DELETE /api/p/%s/assets/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.use("/api/p/:projectId/assets",(q,Y,J,z)=>{if(q instanceof jh.default.MulterError){if(q.code==="LIMIT_FILE_SIZE")return J.status(400).json({error:"File too large. Maximum size is 10MB.",code:"FILE_TOO_LARGE"});return J.status(400).json({error:q.message,code:"UPLOAD_ERROR"})}if(q.message&&q.message.includes("Unsupported MIME type"))return J.status(400).json({error:q.message,code:"UNSUPPORTED_MIME_TYPE"});z(q)}),Object.freeze({})},in8=Object.freeze({create:zv1});var dn8=n6(I4(),1);var J5=dn8.default("caw:api:jobs"),Wv1=($,{core:K})=>{return $.post("/api/p/:projectId/jobs",async(q,Y)=>{try{let{projectId:J}=q.params,{name:z,agent:W,model:Z,prompt:H,store:O="A",workingDirectory:X,objectId:P,streaming:w}=q.body;J5("POST /api/p/%s/jobs - Creating job: agent=%s, model=%s, store=%s, workingDirectory=%s, objectId=%s, streaming=%s",J,W,Z,O,X||"default",P||"none",w||!1);let T=await K.createJob(J,{name:z,agent:W,model:Z,prompt:H,store:O,workingDirectory:X,objectId:P,streaming:w});Y.status(201).json(T)}catch(J){J5("POST /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/jobs",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A",status:W}=q.query;J5("GET /api/p/%s/jobs - Listing jobs: store=%s, status=%s",J,z,W||"all");let Z=await K.listJobs(J,{store:z,status:W});Y.json(Z)}catch(J){J5("GET /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;J5("GET /api/p/%s/jobs/%s - Getting job",J,z);let W=await K.getJob(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W)}catch(J){J5("GET /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/jobs/:id/continue",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{prompt:W,model:Z}=q.body;J5("POST /api/p/%s/jobs/%s/continue - Continuing job",J,z);let H=await K.continueJob(J,{id:z,prompt:W,model:Z});Y.json(H)}catch(J){J5("POST /api/p/%s/jobs/%s/continue - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id/process-status",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;J5("GET /api/p/%s/jobs/%s/process-status",J,z);let W=await K.getProcessStatus(J,{id:z});Y.json(W)}catch(J){J5("GET /api/p/%s/jobs/%s/process-status - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.patch("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W}=q.body;J5("PATCH /api/p/%s/jobs/%s - Renaming job",J,z);let Z=await K.renameJob(J,{id:z,name:W});Y.json(Z)}catch(J){J5("PATCH /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),Object.freeze({})},nn8=Object.freeze({create:Wv1});var on8=n6(I4(),1);var BP=on8.default("caw:api:worktrees"),Zv1=($,{core:K})=>{return $.get("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params;BP("GET /api/p/%s/worktrees - Listing worktrees",J);let z=await K.listWorktrees(J);BP("GET /api/p/%s/worktrees - Found %d worktrees, isGitProject=%s",J,z.worktrees.length,z.isGitProject),Y.json(z)}catch(J){BP("GET /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params,{branch:z,baseBranch:W}=q.body;BP("POST /api/p/%s/worktrees - Creating worktree: branch=%s, baseBranch=%s",J,z,W||"default");let Z=await K.createWorktree(J,{branch:z,baseBranch:W});BP("POST /api/p/%s/worktrees - Created worktree at %s for branch %s",J,Z.path,Z.branch),Y.status(201).json(Z)}catch(J){BP("POST /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),Object.freeze({})},an8=Object.freeze({create:Zv1});var rn8=n6(I4(),1);var vZ=rn8.default("caw:api:events"),Hv1=($,{core:K})=>{return $.get("/api/p/:projectId/events",async(q,Y)=>{try{let{projectId:J}=q.params;vZ("GET /api/p/%s/events - Client connecting",J);let z=await K.getRootStore(J),W=await K.getStoryService(J),Z=await K.getJobService(J);vZ("GET /api/p/%s/events - Got root store and services, setting up SSE subscription",J),Y.setHeader("Content-Type","text/event-stream"),Y.setHeader("Cache-Control","no-cache"),Y.setHeader("Connection","keep-alive"),Y.flushHeaders(),Y.write(`: connected
609
+ `),z={path:null,commit:null,branch:null,isLocked:!1,isMain:!1};for(let W of J)if(W.startsWith("worktree "))z.path=W.slice(9);else if(W.startsWith("HEAD "))z.commit=W.slice(5);else if(W.startsWith("branch ")){let Z=W.slice(7);z.branch=Z.replace("refs/heads/","")}else if(W==="detached");else if(W==="locked")z.isLocked=!0;else if(W.startsWith("locked "))z.isLocked=!0;if(z.path)K.push(z)}if(K.length>0)K[0].isMain=!0;return K},SP=($,K)=>{return new Promise((q)=>{let Y=YT1("git",$,{cwd:K}),J="",z="";Y.stdout.on("data",(W)=>{J+=W.toString()}),Y.stderr.on("data",(W)=>{z+=W.toString()}),Y.on("close",(W)=>{q({stdout:J,stderr:z,exitCode:W})}),Y.on("error",(W)=>{if(W.code==="ENOENT")q({stdout:"",stderr:"git: command not found",exitCode:-1,enoent:!0});else q({stdout:"",stderr:W.message,exitCode:-1})})})},WT1=()=>{let $=async({projectPath:Y})=>{y.factory(!Y,I.validation,"projectPath is required","MISSING_PROJECT_PATH"),F4("listWorktrees: Running git worktree list --porcelain in %s",Y);let J=await SP(["worktree","list","--porcelain"],Y);if(J.enoent)throw F4("listWorktrees: Git not found"),I.validation("Git not installed or not found in PATH","GIT_NOT_FOUND");if(J.stderr&&J.stderr.includes("not a git repository"))return F4("listWorktrees: Not a git repository"),{worktrees:[],isGitProject:!1};if(J.exitCode!==0)throw F4("listWorktrees: Git command failed with exit code %d: %s",J.exitCode,J.stderr),Error(`Git worktree list failed: ${J.stderr||"Unknown error"}`);let z=zT1(J.stdout);F4("listWorktrees: Parsed %d worktrees",z.length);let W=z.filter((Z)=>!Z.isMain).map((Z)=>({branch:Z.branch,path:Z.path,commit:Z.commit,isLocked:Z.isLocked}));return F4("listWorktrees: Returning %d worktrees (excluding main)",W.length),{worktrees:W,isGitProject:!0}},K=async(Y)=>{if(F4("getDefaultBaseBranch: Checking for main branch in %s",Y),(await SP(["show-ref","--verify","--quiet","refs/heads/main"],Y)).exitCode===0)return F4("getDefaultBaseBranch: Detected default branch: main"),"main";if(F4("getDefaultBaseBranch: main not found, checking for master branch"),(await SP(["show-ref","--verify","--quiet","refs/heads/master"],Y)).exitCode===0)return F4("getDefaultBaseBranch: Detected default branch: master"),"master";throw F4("getDefaultBaseBranch: Neither main nor master branch found"),I.validation("No default branch found (neither main nor master exists)","NO_DEFAULT_BRANCH")};return Object.freeze({listWorktrees:$,createWorktree:async({projectPath:Y,branch:J,baseBranch:z})=>{y.factory(!Y,I.validation,"projectPath is required","MISSING_PROJECT_PATH"),y.factory(!J,I.validation,"branch is required","MISSING_BRANCH"),F4("createWorktree: Creating worktree for branch %s in %s",J,Y),F4("createWorktree: Validating branch name: %s",J);let W=await SP(["check-ref-format","--branch",J],Y);if(W.enoent)throw F4("createWorktree: Git not found"),I.validation("Git not installed or not found in PATH","GIT_NOT_FOUND");if(W.exitCode!==0)throw F4("createWorktree: Invalid branch name: %s",J),I.validation(`Invalid branch name: ${J}`,"INVALID_BRANCH_NAME");let Z=z;if(!Z){F4("createWorktree: No baseBranch provided, detecting default");try{Z=await K(Y)}catch(X){if(X.code==="NO_DEFAULT_BRANCH"){let P=await SP(["status","--porcelain"],Y);if(P.stderr&&P.stderr.includes("not a git repository"))throw F4("createWorktree: Not a git repository"),I.validation("Not a git repository","NOT_GIT_REPOSITORY")}throw X}}let H=JT1(Y,"worktree",J);F4("createWorktree: Worktree path will be: %s",H),F4("createWorktree: Running git worktree add %s -b %s %s",H,J,Z);let O=await SP(["worktree","add",H,"-b",J,Z],Y);if(O.enoent)throw F4("createWorktree: Git not found"),I.validation("Git not installed or not found in PATH","GIT_NOT_FOUND");if(O.stderr&&O.stderr.includes("not a git repository"))throw F4("createWorktree: Not a git repository"),I.validation("Not a git repository","NOT_GIT_REPOSITORY");if(O.stderr&&O.stderr.includes("is already checked out"))throw F4("createWorktree: Branch %s is already checked out",J),I.conflict(`Branch '${J}' is already checked out in another worktree`,"BRANCH_ALREADY_CHECKED_OUT");if(O.stderr&&O.stderr.includes("already exists"))throw F4("createWorktree: Branch %s already exists",J),I.conflict(`Branch '${J}' already exists`,"BRANCH_ALREADY_EXISTS");if(O.exitCode!==0)throw F4("createWorktree: Git worktree add failed with exit code %d: %s",O.exitCode,O.stderr),Error(`Git worktree add failed: ${O.stderr||"Unknown error"}`);return F4("createWorktree: Successfully created worktree at %s for branch %s",H,J),{path:H,branch:J}},getDefaultBaseBranch:K})};var zi8=Object.freeze({create:WT1});var t7=bd.default("caw:core"),oD=bd.default("caw:story-job-tracking"),ZT1=async({databaseFilepath:$,assetsDir:K,lazilyCreateDb:q,kyselyFactory:Y},J)=>{let W=await ZP8.create({kyselyFactory:Y}).getDb($,q),Z=XP8.create(),H=xP8.create(),O=JU8.create({db:W}),X=Fl8.create(),P=new Map,w=async(F)=>{if(!F||!/^P\d+$/.test(F))y.factory(!0,I.notFound,`Project not found: ${F}`,"PROJECT_NOT_FOUND");let l=parseInt(F.slice(1),10);y.factory(l<1||l>Number.MAX_SAFE_INTEGER,I.notFound,`Project not found: ${F}`,"PROJECT_NOT_FOUND");let p=await Z.readProjectByObjectId(W,null,F);return y.factory(!p,I.notFound,`Project not found: ${F}`,"PROJECT_NOT_FOUND"),{projCtx:p.getObjectId(),projectPath:p.getPath(),authCtx:null}},T=async(F)=>{let l=P.get(F);if(l)return l;let p=await H.readRootStoreForProject(W,{},F),i=gP8.create({store:p}),V8=yP8.create({store:p}),n8=o08.create(),O6=n08.create({store:p,folderService:i,documentHooks:n8,fieldService:V8}),j6=r08.create({store:p,documentService:O6});n8.setIncludeResolver(j6,p),O6.setIncludeResolver(j6);let k6=zA8.create(),I6=Ql8.create({store:p,fieldService:V8}),R6=nl8.create({store:p,assetsDir:K}),j1=el8.create({store:p,fieldService:V8}),Q4=zi8.create(),h4=XB.create({db:W,folderService:i,fieldService:V8,documentService:O6,templateService:k6,projectService:null,clipboardService:X,storyService:I6,assetService:R6,jobService:j1,includeResolver:j6,worktreeService:Q4}),q7=VB8.create({store:p,folderService:i,documentService:O6,templateService:k6,storyService:I6,assetService:R6,assetsDir:K}),t1=$U8.create({store:p,folderService:i,documentService:O6,templateService:k6,storyService:I6,fieldService:V8,assetService:R6,assetsDir:K}),P5={folderService:i,fieldService:V8,documentService:O6,templateService:k6,transactionService:h4,exportService:q7,importService:t1,rootStore:p,storyService:I6,assetService:R6,jobService:j1,worktreeService:Q4,includeResolver:j6};return j1.subscribeAll({onJOB_STARTED:({id:l4})=>{setImmediate(async()=>{try{let e3=(await j1.getJob(W,{},{id:l4}))?.fields?.objectId;if(e3&&e3.startsWith("As"))oD("JOB_STARTED: job=%s, objectId=%s - incrementing activeJobCount",l4,e3),await h4.incrementStoryJobCount({},{id:e3})}catch(w5){oD("Error handling JOB_STARTED for job %s: %s",l4,w5.message)}})},onJOB_COMPLETED:({id:l4})=>{setImmediate(async()=>{try{let e3=(await j1.getJob(W,{},{id:l4}))?.fields?.objectId;if(e3&&e3.startsWith("As"))oD("JOB_COMPLETED: job=%s, objectId=%s - decrementing activeJobCount",l4,e3),await h4.decrementStoryJobCount({},{id:e3})}catch(w5){oD("Error handling JOB_COMPLETED for job %s: %s",l4,w5.message)}})}}),P.set(F,P5),P5},G=async()=>{return await Jf.create({projectStore:Z,storeStore:H}).listProjects(W)},j=async(F)=>{if(!F||!/^P\d+$/.test(F))return null;let l=parseInt(F.slice(1),10);if(l<1||l>Number.MAX_SAFE_INTEGER)return null;return await Z.readProjectByObjectId(W,null,F)},v=async(F,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6})=>{let k6=await w(F),{transactionService:I6}=await T(k6.projCtx);return await I6.createFolder(k6,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6})},M=async(F,{id:l,name:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.renameFolder(i,{id:l,name:p})},f=async(F,{id:l,parentId:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.moveFolder(i,{id:l,parentId:p})},k=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteFolder(p,{id:l})},N=async(F,{id:l})=>{let p=await w(F),{folderService:i}=await T(p.projCtx);return await i.readFolder(W,p,{id:l})},R=async(F,{store:l,path:p,type:i})=>{let V8=await w(F),{folderService:n8}=await T(V8.projCtx);return await n8.getFolderByPath(W,V8,{path:p,type:i,storeCode:l})},E=async(F,{id:l})=>{let p=await w(F);if(!a6.parseId(l))throw I.notFound(`Invalid entity ID format: ${l}`,"NOT_FOUND");let{rootStore:V8}=await T(p.projCtx);return{root:await G4.getRootForEntity(W,p,l,V8)}},C=async(F,{folderId:l,store:p,type:i})=>{let V8=await w(F);t7("listFolderContents: Listing contents for project %s: folderId=%s, store=%s, type=%s",V8.projCtx,l||"root",p,i);let{folderService:n8,documentService:O6,rootStore:j6}=await T(V8.projCtx),k6=i;if(l&&!i)k6=await g(W,j6,V8,l,p),t7("listFolderContents: Inferred type %s from folder %s",k6,l);if(!k6||k6!=="d"&&k6!=="t")k6="d",t7('listFolderContents: Defaulting effectiveType to "d"');let I6=await n8.listFolderContents(W,V8,{folderId:l,storeCode:p,type:k6}),R6=l;if((l===null||l===void 0)&&(k6==="d"||k6==="t"))R6=(await j6.readRootFolderForType(W,V8,k6,p)).getObjectId(),t7("listFolderContents: Resolved root folder for type %s: %s",k6,R6);t7("listFolderContents: Querying content with parentId=%s, store=%s, type=%s",R6,p,k6);let j1=await O6.listDocuments(W,V8,{parentId:R6,storeCode:p,type:k6});return t7("listFolderContents: Found %d folders, %d documents",I6?.length||0,j1?.length||0),{folders:I6,documents:j1}},g=async(F,l,p,i,V8)=>{let n8=a6.parseId(i);if(n8&&n8.typeCode==="s")return"d";let O6=await l.readFolder(F,p,{id:i});if(!O6)return null;let j6=await F.selectFrom("entities").innerJoin("entity_types","entities.entity_type_id","entity_types.id").select(["entity_types.code as entity_type_code","entity_types.subtype as entity_type_subtype"]).where("entities.object_id","=",i).executeTakeFirst();if(j6?.entity_type_code==="f"&&j6?.entity_type_subtype==="root_d")return"d";if(j6?.entity_type_code==="f"&&j6?.entity_type_subtype==="root_t")return"t";if(j6?.entity_type_code==="f"&&(j6?.entity_type_subtype==="root_s"||j6?.entity_type_subtype==="tasks"))return"d";if(j6?.entity_type_code==="s")return"d";let k6=await l.readRootFolderForType(F,p,"d",V8),I6=await l.readRootFolderForType(F,p,"t",V8),R6=O6;while(R6&&R6.getParentId()!==null){let j1=await l.readFolder(F,p,{id:R6.getParentId()});if(!j1)break;R6=j1}if(R6&&R6.getObjectId()===k6?.getObjectId())return"d";else if(R6&&R6.getObjectId()===I6?.getObjectId())return"t";return null},S=async(F)=>{let l=await w(F),{rootStore:p}=await T(l.projCtx);return p},D=async(F)=>{let l=await w(F),{storyService:p}=await T(l.projCtx);return p},L=async(F)=>{let l=await w(F),{jobService:p}=await T(l.projCtx);return p},m=async({name:F,path:l})=>{let p=Jf.create({projectStore:Z,storeStore:H}),i=XB.create({db:W,folderService:null,projectService:p}),V8={};return await i.createProject(V8,{name:F,path:l})},c=(F)=>{return Jf.create({projectStore:Z,storeStore:H}).validateProjectPath(F)},e=(F)=>{P.delete(F)},_8=async(F,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6,content:k6,tree:I6,subtype:R6,fields:j1})=>{let Q4=await w(F);t7("createDocument: Creating document in project %s: mode=%s, path=%s, store=%s, type=%s, subtype=%s",Q4.projCtx,l,i,p,j6,R6);let{transactionService:h4}=await T(Q4.projCtx),q7=await h4.createDocument(Q4,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,type:j6,content:k6,tree:I6,subtype:R6,fields:j1});return t7("createDocument: Document created: id=%s, path=%s",q7.getObjectId(),q7.getPath()),q7},T8=async(F,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,content:j6,subtype:k6})=>{let I6=await w(F);t7("createTemplate: Creating template in project %s: mode=%s, path=%s, store=%s",I6.projCtx,l,i,p);let{transactionService:R6}=await T(I6.projCtx),j1=await R6.createTemplate(I6,{mode:l,store:p,path:i,root:V8,parentId:n8,name:O6,content:j6,subtype:k6});return t7("createTemplate: Template created: id=%s, path=%s",j1.getObjectId(),j1.getPath()),j1},d8=async(F,{id:l,resolveIncludes:p=!0})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.readDocument(W,i,{id:l,resolveIncludes:p})},H6=async(F,{path:l,store:p,type:i,resolveIncludes:V8=!0})=>{let n8=await w(F),{documentService:O6,includeResolver:j6}=await T(n8.projCtx),k6=await O6.readDocumentByPath(W,n8,{path:l,type:i,storeCode:p});if(!k6)return null;let{entity:I6,ancestorFolderIds:R6}=k6,j1=null;if(V8&&j6&&I6.getPublishedContent())j1=await j6.resolve(W,n8,I6.getPublishedContent(),I6.getObjectId());return{entity:I6,ancestorFolderIds:R6,resolvedContent:j1}},D8=async(F,{id:l})=>{let p=await w(F),{documentService:i,includeResolver:V8}=await T(p.projCtx),{entity:n8}=await i.readDocument(W,p,{id:l,resolveIncludes:!1}),O6=n8.getDraftContent()||n8.getPublishedContent();if(!O6)return[];return await V8.checkIncludes(W,p,O6,l)},m8=async(F,{id:l})=>{let p=await w(F),{documentService:i,includeResolver:V8,rootStore:n8}=await T(p.projCtx),{entity:O6}=await i.readDocument(W,p,{id:l,resolveIncludes:!1}),j6=O6.getDraftContent()||O6.getPublishedContent();if(!j6)return{updated:[]};let{content:k6,updated:I6}=await V8.updateIncludes(W,p,j6,l);if(I6.length>0)await n8.saveDraft(W,p,{id:l,content:k6});return{updated:I6}},a8=async(F,{id:l,path:p,parentId:i,type:V8})=>{let n8=await w(F),{transactionService:O6}=await T(n8.projCtx);return await O6.updateDocumentPath(n8,{id:l,path:p,parentId:i,type:V8})},Z6=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteDocument(p,{id:l})},_6=async(F,{id:l,subtype:p,fields:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.specialiseDocument(V8,{id:l,subtype:p,fields:i})},u6=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.generaliseDocument(p,{id:l})},y6=async(F,{id:l,content:p,sessionId:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.saveDraft(V8,{id:l,content:p,sessionId:i})},s6=async(F,{id:l})=>{let p=await w(F),{documentService:i}=await T(p.projCtx);return await i.readDraft(W,p,{id:l})},L6=async(F,{id:l,sessionId:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.publishDocument(i,{id:l,sessionId:p})},P8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.discardDraft(p,{id:l})},O8=async(F,{id:l,sessionId:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.setEditState(i,{id:l,sessionId:p})},f8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.clearEditState(p,{id:l})},y8=async(F,{id:l})=>{let p=await w(F),{documentService:i}=await T(p.projCtx);return await i.getEditState(W,p,{id:l})},i8=async(F,{id:l,versionNumber:p})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.readVersion(W,i,{id:l,versionNumber:p})},o8=async(F,{id:l})=>{let p=await w(F),{documentService:i}=await T(p.projCtx);return await i.getVersions(W,p,{id:l})},z6=async(F,{id:l,operation:p,preview:i,ignoreContent:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.editDocument(O6,{id:l,operation:p,preview:i,ignoreContent:V8,sessionId:n8})},h8=async(F,{id:l,operations:p,preview:i,ignoreContent:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.batchEditDocument(O6,{id:l,operations:p,preview:i,ignoreContent:V8,sessionId:n8})},p8=async(F,{id:l,lineNumber:p,checked:i,includeDraft:V8,preview:n8,sessionId:O6})=>{let j6=await w(F),{transactionService:k6}=await T(j6.projCtx);return await k6.checkChecklistItem(j6,{id:l,lineNumber:p,checked:i,includeDraft:V8,preview:n8,sessionId:O6})},s8=async(F,{id:l,lineNumber:p,includeDraft:i,preview:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.toggleChecklistItem(O6,{id:l,lineNumber:p,includeDraft:i,preview:V8,sessionId:n8})},q6=async(F,{id:l,items:p,includeDraft:i,preview:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.batchCheckChecklistItems(O6,{id:l,items:p,includeDraft:i,preview:V8,sessionId:n8})},X6=async(F,{id:l,startLine:p,endLine:i,includeDraft:V8})=>{let n8=await w(F),{documentService:O6}=await T(n8.projCtx);return await O6.readLines(W,n8,{id:l,startLine:p,endLine:i,includeDraft:V8})},f6=async(F,{id:l,startMarker:p,endMarker:i,inclusive:V8,includeDraft:n8})=>{let O6=await w(F),{documentService:j6}=await T(O6.projCtx);return await j6.readBetweenMarkers(W,O6,{id:l,startMarker:p,endMarker:i,inclusive:V8,includeDraft:n8})},M8=async(F,{id:l,includeDraft:p})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.getDocumentStats(W,i,{id:l,includeDraft:p})},x8=async(F,{id:l,maxDepth:p,includeDraft:i})=>{let V8=await w(F),{documentService:n8}=await T(V8.projCtx);return await n8.readHeadings(W,V8,{id:l,maxDepth:p,includeDraft:i})},B8=async(F,{id:l,heading:p,includeHeading:i,includeDraft:V8})=>{let n8=await w(F),{documentService:O6}=await T(n8.projCtx);return await O6.readSection(W,n8,{id:l,heading:p,includeHeading:i,includeDraft:V8})},F8=async(F,{id:l,includeDraft:p})=>{let i=await w(F),{documentService:V8}=await T(i.projCtx);return await V8.readFrontmatter(W,i,{id:l,includeDraft:p})},l8=async(F,{id:l,section:p,includeDraft:i})=>{let V8=await w(F),{documentService:n8}=await T(V8.projCtx);return await n8.readChecklist(W,V8,{id:l,section:p,includeDraft:i})},Y8=async(F,{folderId:l,store:p,type:i="d"})=>{let V8=await w(F),{documentService:n8}=await T(V8.projCtx);return await n8.listDocuments(W,V8,{parentId:l,storeCode:p,type:i})},W8=async(F,{id:l,params:p,target:i,targetOptions:V8,sessionId:n8})=>{let O6=await w(F),{transactionService:j6,jobService:k6,rootStore:I6}=await T(O6.projCtx),R6=await j6.renderTemplate(O6,{id:l,params:p,target:i,targetOptions:V8,sessionId:n8});if(R6.target==="job"&&R6.jobId){let j1=nD.create({jobService:k6,transactionService:j6,store:I6,db:W,projectPath:O6.projectPath});setImmediate(async()=>{try{await j1.runJob(R6.jobId,O6)}catch(Q4){t7("JobRunner error for job %s: %s",R6.jobId,Q4.message);try{await j6.updateJobStatus(O6,{id:R6.jobId,status:"error",errorMessage:Q4.message})}catch(h4){t7("Failed to update job %s status to error: %s",R6.jobId,h4.message)}}})}return R6},J8=async(F,{id:l})=>{let p=await w(F),{documentService:i,templateService:V8}=await T(p.projCtx),{entity:n8}=await i.readDocument(W,p,{id:l});if(!n8.getPublishedContent())return{parameters:{},detectedVariables:[],target:null,targetPath:null};return V8.extractTemplateParameters(n8.getPublishedContent())},c8=async(F,{typeCode:l,store:p="A"})=>{let i=await w(F),{rootStore:V8}=await T(i.projCtx);return{templates:(await V8.findEntitiesByFieldValue(W,i,{storeCode:p,typeCode:"t",subtype:"prompt",fieldName:"associatedType",fieldValue:l})).map((O6)=>({id:O6.object_id,name:O6.name,path:O6.path}))}},o=async(F,{store:l,ownerEntityId:p,ownerEntityTypeCode:i,ownerEntityTypeSubtype:V8,name:n8,label:O6,description:j6,primitiveType:k6,required:I6,multiplicity:R6,isSystem:j1})=>{let Q4=await w(F),{transactionService:h4}=await T(Q4.projCtx);return await h4.createFieldDefinition(Q4,{store:l,ownerEntityId:p,ownerEntityTypeCode:i,ownerEntityTypeSubtype:V8,name:n8,label:O6,description:j6,primitiveType:k6,required:I6,multiplicity:R6,isSystem:j1})},X8=async(F,{id:l})=>{let p=await w(F),{fieldService:i}=await T(p.projCtx);return await i.readFieldDefinition(W,p,{id:l})},t=async(F,{store:l,ownerEntityId:p,includeSystem:i})=>{let V8=await w(F),{fieldService:n8}=await T(V8.projCtx);return await n8.getFieldDefinitionsForOwner(W,V8,{store:l,ownerEntityId:p,includeSystem:i})},G8=async(F,{store:l,code:p,subtype:i})=>{let V8=await w(F),{fieldService:n8}=await T(V8.projCtx);return await n8.getFieldDefinitionsForType(W,V8,{store:l,code:p,subtype:i})},z8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteFieldDefinition(p,{id:l})},k8=async(F,{entityId:l,fieldDefinitionId:p,fieldName:i,value:V8,values:n8})=>{let O6=await w(F),{transactionService:j6}=await T(O6.projCtx);return await j6.setFieldValue(O6,{entityId:l,fieldDefinitionId:p,fieldName:i,value:V8,values:n8})},b8=async(F,{id:l})=>{let p=await w(F),i=a6.parseId(l);if(!i)throw Error(`Cannot parse entity ID: ${l}`);let{rootStore:V8}=await T(p.projCtx),{typeCode:n8}=i;switch(n8){case"f":return await V8.readFolder(W,p,{id:l});case"d":case"t":return await V8.readContent(W,p,{id:l});case"s":return await V8.readStory(W,p,{id:l});case"j":return await V8.readJob(W,p,{id:l});default:throw Error(`Unsupported entity type code: ${n8}`)}},Q8=async(F,{entityId:l})=>{let p;try{p=await b8(F,{id:l})}catch(i){if(i.code==="PROJECT_NOT_FOUND")throw i;return{}}if(!p)return{};return p.getFields()},l6=async(F,{entityId:l,fieldDefinitionId:p,fieldName:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.deleteFieldValue(V8,{entityId:l,fieldDefinitionId:p,fieldName:i})},D4=async(F)=>{let l=await w(F),{exportService:p}=await T(l.projCtx);return await p.listExports(W,l,{projectPath:l.projectPath})},K3=async(F,{store:l="A"}={})=>{let p=await w(F),{exportService:i}=await T(p.projCtx);return await i.exportPreview(W,p,{storeCode:l})},K7=async(F,{store:l="A",confirm:p=!1}={})=>{let i=await w(F),{exportService:V8}=await T(i.projCtx);if(!p)return await V8.exportPreview(W,i,{storeCode:l});return await V8.exportDocuments(W,i,{storeCode:l,projectPath:i.projectPath})},B1=async(F,{filename:l,store:p="A"})=>{let i=await w(F);y.factory(!l,I.validation,"filename is required","FILENAME_REQUIRED");let{importService:V8}=await T(i.projCtx);return await V8.importDocuments(W,i,{filename:l,storeCode:p,projectPath:i.projectPath})},L$=async(F,{name:l,store:p,state:i})=>{let V8=await w(F),{transactionService:n8}=await T(V8.projCtx);return await n8.createStory(V8,{name:l,storeCode:p,state:i})},f$=async(F,{store:l})=>{let p=await w(F),{storyService:i}=await T(p.projCtx);return await i.listStories(W,p,{store:l})},X5=async(F,{id:l})=>{let p=await w(F),{storyService:i}=await T(p.projCtx);return await i.getStory(W,p,{id:l})},N8=async(F,{id:l,state:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.updateStoryState(i,{id:l,state:p})},C8=async(F,{id:l,name:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.renameStory(i,{id:l,name:p})},$8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteStory(p,{id:l})},S8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.incrementStoryJobCount(p,{id:l})},L8=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.decrementStoryJobCount(p,{id:l})},u8=async(F,{store:l,buffer:p,mimeType:i,originalFilename:V8,widthPx:n8,heightPx:O6,displayWidth:j6,displayHeight:k6})=>{let I6=await w(F),{transactionService:R6}=await T(I6.projCtx);return await R6.createAsset(I6,{store:l,buffer:p,mimeType:i,originalFilename:V8,widthPx:n8,heightPx:O6,displayWidth:j6,displayHeight:k6})},M6=async(F,{id:l})=>{let p=await w(F),{assetService:i}=await T(p.projCtx);return await i.readAsset(W,p,{id:l})},x=async(F,{id:l})=>{let p=await w(F),{assetService:i}=await T(p.projCtx);return await i.readAssetBinary(W,p,{id:l})},w8=async(F,{store:l})=>{let p=await w(F),{assetService:i}=await T(p.projCtx);return await i.listAssets(W,p,{store:l})},u=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteAsset(p,{id:l})},s=async(F,{name:l,agent:p,model:i,prompt:V8,store:n8="A",workingDirectory:O6,objectId:j6,streaming:k6})=>{let I6=await w(F),{transactionService:R6,jobService:j1,rootStore:Q4}=await T(I6.projCtx),h4=await R6.createJob(I6,{store:n8,name:l,agent:p,model:i,prompt:V8,workingDirectory:O6,objectId:j6,streaming:k6}),q7=nD.create({jobService:j1,transactionService:R6,store:Q4,db:W,projectPath:I6.projectPath});return setImmediate(async()=>{try{await q7.runJob(h4.id,I6)}catch(t1){t7("JobRunner error for job %s: %s",h4.id,t1.message);try{await R6.updateJobStatus(I6,{id:h4.id,status:"error",errorMessage:t1.message})}catch(P5){t7("Failed to update job %s status to error: %s",h4.id,P5.message)}}}),h4},Q=async(F,{store:l="A",status:p})=>{let i=await w(F),{jobService:V8}=await T(i.projCtx);return await V8.listJobs(W,i,{store:l,status:p})},a=async(F,{id:l})=>{let p=await w(F),{jobService:i}=await T(p.projCtx);return await i.getJob(W,p,{id:l})},n=async(F,{id:l})=>{let p=await w(F),{transactionService:i}=await T(p.projCtx);return await i.deleteJob(p,{id:l})},d=async(F,{id:l,prompt:p,model:i})=>{let V8=await w(F),{transactionService:n8,jobService:O6,rootStore:j6}=await T(V8.projCtx),k6=await n8.continueJob(V8,{id:l,prompt:p,model:i}),I6=nD.create({jobService:O6,transactionService:n8,store:j6,db:W,projectPath:V8.projectPath});return setImmediate(async()=>{try{await I6.runJob(k6.id,V8)}catch(R6){t7("JobRunner error for job %s: %s",k6.id,R6.message);try{await n8.updateJobStatus(V8,{id:k6.id,status:"error",errorMessage:R6.message})}catch(j1){t7("Failed to update job %s status to error: %s",k6.id,j1.message)}}}),k6},H8=async(F,{id:l,name:p})=>{let i=await w(F),{transactionService:V8}=await T(i.projCtx);return await V8.renameJob(i,{id:l,name:p})},j8=async(F,{id:l})=>{let p=await w(F),{jobService:i}=await T(p.projCtx);return await i.getProcessStatus(W,p,{id:l})},E8=async(F)=>{let l=await w(F),{worktreeService:p}=await T(l.projCtx);return await p.listWorktrees({projectPath:l.projectPath})},I8=async(F,{branch:l,baseBranch:p})=>{let i=await w(F),{worktreeService:V8}=await T(i.projCtx);return await V8.createWorktree({projectPath:i.projectPath,branch:l,baseBranch:p})};if(J)J({db:W,projectStore:Z,storeStore:H});return Object.freeze({getProjects:G,getProjectByObjectId:j,createProject:m,validateProjectPath:c,createFolder:v,renameFolder:M,moveFolder:f,deleteFolder:k,getFolder:N,getFolderByPath:R,getRootForEntity:E,listFolderContents:C,getRootStore:S,getStoryService:D,getJobService:L,evictProject:e,getDb:()=>W,createDocument:_8,createTemplate:T8,readDocument:d8,readDocumentByPath:H6,checkIncludes:D8,updateIncludes:m8,updateDocumentPath:a8,deleteDocument:Z6,specialiseDocument:_6,generaliseDocument:u6,saveDraft:y6,readDraft:s6,publishDocument:L6,discardDraft:P8,setEditState:O8,clearEditState:f8,getEditState:y8,readVersion:i8,getVersions:o8,editDocument:z6,batchEditDocument:h8,checkChecklistItem:p8,toggleChecklistItem:s8,batchCheckChecklistItems:q6,listDocuments:Y8,readLines:X6,readBetweenMarkers:f6,getDocumentStats:M8,readHeadings:x8,readSection:B8,readFrontmatter:F8,readChecklist:l8,renderTemplate:W8,getTemplateParameters:J8,listTemplatesByType:c8,createFieldDefinition:o,readFieldDefinition:X8,getFieldDefinitions:t,getTypeFields:G8,deleteFieldDefinition:z8,setField:k8,getFields:Q8,readEntity:b8,deleteField:l6,listExports:D4,exportPreview:K3,exportDocuments:K7,importDocuments:B1,createStory:L$,listStories:f$,getStory:X5,renameStory:C8,updateStoryState:N8,deleteStory:$8,incrementStoryJobCount:S8,decrementStoryJobCount:L8,createAsset:u8,readAsset:M6,readAssetBinary:x,listAssets:w8,deleteAsset:u,createJob:s,listJobs:Q,getJob:a,deleteJob:n,continueJob:d,renameJob:H8,getProcessStatus:j8,listWorktrees:E8,createWorktree:I8,listCrons:()=>O.list(),startCron:(F)=>O.start(F),stopCron:(F)=>O.stop(F),restartCron:(F)=>O.restart(F),startAllCrons:()=>O.startAll(),stopAllCrons:()=>O.stopAll(),registerCronJob:(F,l)=>{O.register(F,l)}})},Wi8=Object.freeze({create:ZT1});var Zi8=n6(AI(),1);import{join as HT1}from"path";var OT1=($,{staticPath:K})=>{return $.use(Zi8.default.static(K)),$.get("*",(q,Y,J)=>{if(q.path.startsWith("/api")||q.path==="/health")return J();Y.sendFile(HT1(K,"index.html"))}),Object.freeze({})},Hi8=Object.freeze({create:OT1});var Oi8=n6(I4(),1),aD=Oi8.default("caw:api:projects"),XT1=($,{core:K})=>{return $.get("/api/projects",async(q,Y)=>{try{aD("GET /api/projects - Fetching projects list");let J=await K.getProjects();aD("GET /api/projects - Returning %d projects",J.length),J.forEach((z)=>{aD(" - %s (%s) with %d children",z.name,z.objectId,z.children?.length||0)}),Y.json(J)}catch(J){aD("GET /api/projects - Error: %s",J.message),Y.status(500).json({error:J.message})}}),$.post("/api/projects/validate",async(q,Y)=>{try{let{path:J}=q.body,z=K.validateProjectPath(J);Y.json(z)}catch(J){if(J.code==="VALIDATION_ERROR")return Y.status(400).json({error:J.message,code:"VALIDATION_ERROR"});Y.status(500).json({error:J.message})}}),$.post("/api/projects",async(q,Y)=>{try{let{name:J,path:z}=q.body;if(!J||typeof J!=="string"||J.trim()==="")return Y.status(400).json({error:"Name is required",code:"VALIDATION_ERROR"});if(!z||typeof z!=="string"||z.trim()==="")return Y.status(400).json({error:"Path is required",code:"VALIDATION_ERROR"});if(J.length>255)return Y.status(400).json({error:"Name exceeds maximum length (255)",code:"VALIDATION_ERROR"});let W=await K.createProject({name:J.trim(),path:z.trim()});Y.status(201).json(W.toJSON())}catch(J){if(J.code==="DUPLICATE_PATH")return Y.status(409).json({error:J.message,code:"DUPLICATE_PATH"});console.error("Failed to create project:",J),Y.status(500).json({error:J.message})}}),Object.freeze({})},Xi8=Object.freeze({create:XT1});var wi8=n6(I4(),1);var PT1=($,K)=>{if($.isDomainError){let q=$.code==="UNAUTHORIZED"||$.code==="INVALID_TOKEN"?401:$.code==="NOT_FOUND"||$.code==="PROJECT_NOT_FOUND"||$.code==="EXPORT_NOT_FOUND"||$.code==="STORY_NOT_FOUND"||$.code==="JOB_NOT_FOUND"||$.code==="ASSET_NOT_FOUND"||$.code==="BLOB_NOT_FOUND"||$.code==="STORE_NOT_FOUND"||$.code==="INCLUDE_NOT_FOUND"||$.code==="INCLUDE_VERSION_NOT_FOUND"||$.code==="ENTITY_TYPE_NOT_FOUND"||$.code==="FOLDER_NOT_FOUND"?404:$.code==="CONFLICT"||$.code==="STORE_NOT_EMPTY"||$.code==="EDIT_CONFLICT"||$.code==="DUPLICATE_NAME"||$.code==="BRANCH_ALREADY_CHECKED_OUT"||$.code==="BRANCH_ALREADY_EXISTS"?409:$.code==="EXPORT_ERROR"||$.code==="STORY_ROOT_NOT_FOUND"?500:400;return K.status(q).json({error:$.message,code:$.code})}console.error("Unhandled error:",$),K.status(500).json({error:$.message})},A6=PT1;var e9=wi8.default("caw:api:folders"),Pi8=($)=>({folders:$.folders.map((K)=>K.toJSON()),documents:$.documents.map((K)=>K.toJSON())}),wT1=($,{core:K})=>{return $.get("/api/p/:projectId/folders/contents",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,type:W}=q.query;e9("GET /api/p/%s/folders/contents - Listing root contents: store=%s, type=%s",J,z,W);let Z=await K.listFolderContents(J,{folderId:null,store:z,type:W}),H=Pi8(Z);e9("GET /api/p/%s/folders/contents - Found %d folders, %d documents",J,H.folders.length,H.documents.length),Y.json(H)}catch(J){e9("GET /api/p/%s/folders/contents - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/folders/by-path",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,type:Z}=q.query,H=await K.getFolderByPath(J,{path:z,store:W,type:Z});if(!H)return Y.status(404).json({error:"Not found"});Y.json(H.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/contents",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{type:W}=q.query;e9("GET /api/p/%s/folders/%s/contents - Listing folder contents: type=%s",J,z,W);let Z=await K.listFolderContents(J,{folderId:z,type:W}),H=Pi8(Z);e9("GET /api/p/%s/folders/%s/contents - Found %d folders, %d documents",J,z,H.folders.length,H.documents.length),Y.json(H)}catch(J){e9("GET /api/p/%s/folders/%s/contents - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/root",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;e9("GET /api/p/%s/folders/%s/root - Getting root for entity",J,z);let W=await K.getRootForEntity(J,{id:z});e9("GET /api/p/%s/folders/%s/root - Found root: %s (type=%s, subtype=%s)",J,z,W.root.id,W.root.type,W.root.subtype),Y.json(W)}catch(J){e9("GET /api/p/%s/folders/%s/root - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/folders/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getFolder(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W.toJSON())}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/folders",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,root:Z,parentId:H,name:O}=q.body,X=z&&W&&!Z&&!H,P=Z&&z&&!W&&!H;if([X,P,H&&O&&!z&&!Z].filter(Boolean).length!==1)return Y.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let G;if(X)G="fullPath";else if(P)G="rootRelative";else G="parentName";e9("POST /api/p/%s/folders - Creating folder: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s",J,G,z,W,Z,H,O);let j=await K.createFolder(J,{mode:G,path:z,store:W,root:Z,parentId:H,name:O});e9("POST /api/p/%s/folders - Folder created: id=%s, path=%s",J,j.getObjectId(),j.getPath()),Y.status(201).json(j.toJSON())}catch(J){e9("POST /api/p/%s/folders - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.delete("/api/p/:projectId/folders/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.deleteFolder(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.patch("/api/p/:projectId/folders/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W,parentId:Z}=q.body;if(W&&Z)return Y.status(400).json({error:"Provide only name or parentId, not both",code:"INVALID_REQUEST"});if(!W&&!Z)return Y.status(400).json({error:"Provide name or parentId",code:"INVALID_REQUEST"});let H;if(W)H=await K.renameFolder(J,{id:z,name:W});else H=await K.moveFolder(J,{id:z,parentId:Z});Y.json(H.toJSON())}catch(J){A6(J,Y)}}),Object.freeze({})},Ti8=Object.freeze({create:wT1});var TT1=($,{core:K})=>{return $.post("/api/p/:projectId/field-definitions",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,ownerEntityId:W,ownerEntityTypeCode:Z,ownerEntityTypeSubtype:H,name:O,label:X,description:P,primitiveType:w,required:T,multiplicity:G}=q.body,j=await K.createFieldDefinition(J,{store:z,ownerEntityId:W??null,ownerEntityTypeCode:Z,ownerEntityTypeSubtype:H,name:O,label:X??null,description:P??null,primitiveType:w,required:T??!1,multiplicity:G??"single"});Y.status(201).json(j.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/types/:code/:subtype/fields",async(q,Y)=>{try{let{projectId:J,code:z,subtype:W}=q.params,{store:Z}=q.query,H=await K.getTypeFields(J,{store:Z||"A",code:z,subtype:W});Y.json({fields:H.map((O)=>O.toJSON())})}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/field-definitions/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.readFieldDefinition(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/field-definitions",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,ownerEntityId:W,includeSystem:Z}=q.query,H=await K.getFieldDefinitions(J,{store:z,ownerEntityId:W??null,includeSystem:Z==="true"});Y.json(H.map((O)=>O.toJSON()))}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/field-definitions/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.deleteFieldDefinition(J,{id:z});Y.json(W.toJSON())}catch(J){A6(J,Y)}}),$.put("/api/p/:projectId/entities/:id/fields/:fieldName",async(q,Y)=>{try{let{projectId:J,id:z,fieldName:W}=q.params,{fieldDefinitionId:Z,value:H,values:O}=q.body,X={entityId:z,fieldDefinitionId:Z!==void 0?Z:null,fieldName:W};if(H!==void 0)X.value=H;if(O!==void 0)X.values=O;await K.setField(J,X);let P=await K.readEntity(J,{id:z});Y.json(P.toJSON())}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/entities/:id/fields",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getFields(J,{entityId:z}),Z={};for(let[H,O]of Object.entries(W))Z[H]=O.toJSON();Y.json(Z)}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/entities/:id/fields/:fieldName",async(q,Y)=>{try{let{projectId:J,id:z,fieldName:W}=q.params,{fieldDefinitionId:Z}=q.query,H={entityId:z,fieldName:W};if(Z!==void 0)H.fieldDefinitionId=Z;await K.deleteField(J,H),Y.status(204).send()}catch(J){A6(J,Y)}}),Object.freeze({})},Gi8=Object.freeze({create:TT1});var ji8=n6(I4(),1);var $5=ji8.default("caw:api:documents"),GT1=($,{core:K})=>{return $.post("/api/p/:projectId/documents",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P,fields:w}=q.body,T=z&&W&&!Z&&!H,G=Z&&z&&!W&&!H;if([T,G,H&&O&&!z&&!Z].filter(Boolean).length!==1)return Y.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let M;if(T)M="fullPath";else if(G)M="rootRelative";else M="parentName";$5("POST /api/p/%s/documents - Creating document: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",J,M,z,W,Z,H,O,!!X);let k=(await K.createDocument(J,{mode:M,path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P,fields:w})).toJSON();$5("POST /api/p/%s/documents - Document created: id=%s, path=%s",J,k.id,k.path),Y.status(201).json(k)}catch(J){$5("POST /api/p/%s/documents - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/templates",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P}=q.body,w=z&&W&&!Z&&!H,T=Z&&z&&!W&&!H;if([w,T,H&&O&&!z&&!Z].filter(Boolean).length!==1)return Y.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let v;if(w)v="fullPath";else if(T)v="rootRelative";else v="parentName";$5("POST /api/p/%s/templates - Creating template: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",J,v,z,W,Z,H,O,!!X);let f=(await K.createTemplate(J,{mode:v,path:z,store:W,root:Z,parentId:H,name:O,content:X,subtype:P})).toJSON();$5("POST /api/p/%s/templates - Template created: id=%s, path=%s",J,f.id,f.path),Y.status(201).json(f)}catch(J){$5("POST /api/p/%s/templates - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/documents/by-path",async(q,Y)=>{try{let{projectId:J}=q.params,{path:z,store:W,type:Z="d",resolveIncludes:H="true"}=q.query,O=await K.readDocumentByPath(J,{path:z,store:W,type:Z,resolveIncludes:H!=="false"});if(!O)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});let{entity:X,ancestorFolderIds:P,resolvedContent:w}=O,T={...X.toJSON(),ancestorFolderIds:P};if(w!==null)T.resolvedContent=w;Y.json(T)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents",async(q,Y)=>{try{let{projectId:J}=q.params,{folderId:z,store:W,type:Z="d"}=q.query,H=await K.listDocuments(J,{folderId:z??null,store:W,type:Z});Y.json(H.map((O)=>O.toJSON()))}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/templates/by-type/:typeCode",async(q,Y)=>{try{let{projectId:J,typeCode:z}=q.params,{store:W}=q.query,Z=await K.listTemplatesByType(J,{typeCode:z,store:W});Y.json(Z)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/parameters",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{entity:W}=await K.readDocument(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});let Z=W.getPublishedContent();if(!Z)return Y.json({id:z,path:W.getPath(),parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,skipDialog:!1,detectedVariables:[]});try{let{parameters:H,target:O,targetPath:X,targetParentId:P,targetName:w,targetRoot:T,targetStore:G,targetJobName:j,targetJobAgent:v,targetJobModel:M,targetJobWorktree:f,targetJobSkipDialog:k,skipDialog:N}=FK.getParameters(Z),{body:R}=FK.parseFrontMatter(Z),E=Array.from(FK.extractVariables(R));Y.json({id:z,path:W.getPath(),parameters:H,target:O,targetPath:X,targetParentId:P,targetName:w,targetRoot:T,targetStore:G,targetJobName:j,targetJobAgent:v,targetJobModel:M,targetJobWorktree:f,targetJobSkipDialog:k,skipDialog:N,detectedVariables:E})}catch(H){return Y.json({id:z,path:W.getPath(),parameters:{},target:null,targetPath:null,targetParentId:null,targetName:null,targetRoot:null,targetStore:null,targetJobName:null,targetJobAgent:null,targetJobModel:null,targetJobWorktree:null,targetJobSkipDialog:!1,skipDialog:!1,detectedVariables:[],parseError:H.message})}}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/render",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{params:W,target:Z,targetOptions:H}=q.body,O=await K.renderTemplate(J,{id:z,params:W,target:Z,targetOptions:H,sessionId:q.sessionId});Y.json(O)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{resolveIncludes:W="true"}=q.query,{entity:Z,ancestorFolderIds:H,resolvedContent:O}=await K.readDocument(J,{id:z,resolveIncludes:W!=="false"});if(!Z)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});let X={...Z.toJSON(),ancestorFolderIds:H};if(O!==null)X.resolvedContent=O;Y.json(X)}catch(J){A6(J,Y)}}),$.patch("/api/p/:projectId/documents/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{path:W,parentId:Z}=q.body,H=a6.getTypeFromId(z),O=await K.updateDocumentPath(J,{id:z,path:W,parentId:Z,type:H});Y.json(O.toJSON())}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/documents/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.deleteDocument(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.put("/api/p/:projectId/documents/:id/draft",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{content:W}=q.body,Z=q.sessionId;if(W===void 0)return Y.status(400).json({error:"content is required",code:"MISSING_CONTENT"});let H=await K.saveDraft(J,{id:z,content:W,sessionId:Z});Y.json({id:z,updated:!0,lockLost:H.lockLost??!1})}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/draft",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.readDraft(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/publish",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.publishDocument(J,{id:z,sessionId:q.sessionId});Y.json(W)}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/documents/:id/draft",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;await K.discardDraft(J,{id:z}),Y.json({id:z,discarded:!0})}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/versions",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getVersions(J,{id:z});Y.json(W)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/versions/:versionNumber",async(q,Y)=>{try{let{projectId:J,id:z,versionNumber:W}=q.params,Z=await K.readVersion(J,{id:z,versionNumber:parseInt(W,10)});if(!Z)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(Z)}catch(J){A6(J,Y)}}),$.get("/api/p/:projectId/documents/:id/edit-state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=await K.getEditState(J,{id:z});if(!W)return Y.json({locked:!1});Y.json({locked:!0,locked_at:W.startedAt})}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/edit-state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,W=q.sessionId;if(!W)return Y.status(400).json({error:"X-Session-Id header required",code:"MISSING_SESSION_ID"});let Z=await K.setEditState(J,{id:z,sessionId:W});if(!Z.success)return Y.status(409).json(Z);Y.json(Z)}catch(J){A6(J,Y)}}),$.delete("/api/p/:projectId/documents/:id/edit-state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;await K.clearEditState(J,{id:z}),Y.json({success:!0})}catch(J){A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/specialise",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{subtype:W,fields:Z}=q.body;$5("POST /api/p/%s/documents/%s/specialise - subtype=%s, hasFields=%s",J,z,W,!!Z);let O=(await K.specialiseDocument(J,{id:z,subtype:W,fields:Z})).entity.toJSON();$5("POST /api/p/%s/documents/%s/specialise - Success: subtype=%s",J,z,O.subtype),Y.json(O)}catch(J){$5("POST /api/p/%s/documents/%s/specialise - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/generalise",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;$5("POST /api/p/%s/documents/%s/generalise",J,z);let Z=(await K.generaliseDocument(J,{id:z})).entity.toJSON();$5("POST /api/p/%s/documents/%s/generalise - Success: subtype=%s",J,z,Z.subtype),Y.json(Z)}catch(J){$5("POST /api/p/%s/documents/%s/generalise - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),Object.freeze({})},vi8=Object.freeze({create:GT1});var Vi8=n6(I4(),1);var k9=Vi8.default("caw:api:export"),jT1=($,{core:K})=>{return $.get("/api/p/:projectId/exports",async(q,Y)=>{try{let{projectId:J}=q.params;k9("GET /api/p/%s/exports - Listing export files",J);let z=await K.listExports(J);k9("GET /api/p/%s/exports - Found %d export files",J,z.length),Y.json({ok:!0,exports:z})}catch(J){k9("GET /api/p/:projectId/exports - Error: %s",J.message),A6(J,Y)}}),$.get("/api/p/:projectId/export/preview",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z}=q.query;k9("GET /api/p/%s/export/preview - Previewing export: store=%s",J,z);let W=await K.exportPreview(J,{store:z});k9("GET /api/p/%s/export/preview - Preview complete: %d to export, %d draft-only",J,(W.toExport?.folders?.length||0)+(W.toExport?.documents?.length||0)+(W.toExport?.templates?.length||0),(W.draftOnly?.documents?.length||0)+(W.draftOnly?.templates?.length||0)),Y.json(W)}catch(J){k9("GET /api/p/:projectId/export/preview - Error: %s",J.message),A6(J,Y)}}),$.post("/api/p/:projectId/export",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,confirm:W}=q.body;k9("POST /api/p/%s/export - Export request: store=%s, confirm=%s",J,z,W);let Z=await K.exportDocuments(J,{store:z,confirm:W});if(W)k9("POST /api/p/%s/export - Export complete: %s",J,Z.filename);else k9("POST /api/p/%s/export - Preview returned (confirm=false)",J);Y.json(Z)}catch(J){k9("POST /api/p/:projectId/export - Error: %s",J.message),A6(J,Y)}}),$.post("/api/p/:projectId/import",async(q,Y)=>{try{let{projectId:J}=q.params,{filename:z,store:W}=q.body;k9("POST /api/p/%s/import - Import request: filename=%s, store=%s",J,z,W);let Z=await K.importDocuments(J,{filename:z,store:W});k9("POST /api/p/%s/import - Import complete: %d folders, %d documents, %d templates",J,Z.counts?.folders||0,Z.counts?.documents||0,Z.counts?.templates||0),Y.json({ok:!0,...Z})}catch(J){k9("POST /api/p/:projectId/import - Error: %s",J.message),A6(J,Y)}}),Object.freeze({})},Ai8=Object.freeze({create:jT1});var Mi8=n6(I4(),1);var K5=Mi8.default("caw:api:stories"),vT1=($,{core:K})=>{return $.post("/api/p/:projectId/stories",async(q,Y)=>{try{let{projectId:J}=q.params,{name:z,store:W="A",state:Z}=q.body;K5("POST /api/p/%s/stories - Creating story: name=%s, store=%s, state=%s",J,z,W,Z);let H=await K.createStory(J,{name:z,store:W,state:Z});Y.status(201).json(H)}catch(J){K5("POST /api/p/%s/stories - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/stories",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query;K5("GET /api/p/%s/stories - Listing stories: store=%s",J,z);let W=await K.listStories(J,{store:z});Y.json(W)}catch(J){K5("GET /api/p/%s/stories - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;K5("GET /api/p/%s/stories/%s - Getting story",J,z);let W=await K.getStory(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W)}catch(J){K5("GET /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.patch("/api/p/:projectId/stories/:id/state",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{state:W}=q.body;if(!W)return Y.status(400).json({error:"State is required",code:"MISSING_STATE"});K5("PATCH /api/p/%s/stories/%s/state - Updating state to: %s",J,z,W);let Z=await K.updateStoryState(J,{id:z,state:W});Y.json(Z)}catch(J){K5("PATCH /api/p/%s/stories/%s/state - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.patch("/api/p/:projectId/stories/:id/name",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W}=q.body;if(!W)return Y.status(400).json({error:"Name is required",code:"MISSING_NAME"});K5("PATCH /api/p/%s/stories/%s/name - Renaming to: %s",J,z,W);let Z=await K.renameStory(J,{id:z,name:W});Y.json(Z)}catch(J){K5("PATCH /api/p/%s/stories/%s/name - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.delete("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;K5("DELETE /api/p/%s/stories/%s - Deleting story",J,z);let W=await K.deleteStory(J,{id:z});Y.json(W)}catch(J){K5("DELETE /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),Object.freeze({})},_i8=Object.freeze({create:vT1});var ln8=n6(I4(),1),jh=n6(cn8(),1);var _q=ln8.default("caw:api:assets"),Qn8=["image/png","image/jpeg","image/gif","image/webp"],Jv1=jh.default({storage:jh.default.memoryStorage(),limits:{fileSize:10485760},fileFilter:($,K,q)=>{if(Qn8.includes(K.mimetype))q(null,!0);else q(Error(`Unsupported MIME type: ${K.mimetype}. Allowed: ${Qn8.join(", ")}`))}}),zv1=($,{core:K})=>{return $.post("/api/p/:projectId/assets",Jv1.single("file"),async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query,W=q.file;if(!W)return Y.status(400).json({error:"No file uploaded",code:"MISSING_FILE"});let Z=q.body.widthPx?parseInt(q.body.widthPx,10):void 0,H=q.body.heightPx?parseInt(q.body.heightPx,10):void 0,O=q.body.displayWidth?parseInt(q.body.displayWidth,10):void 0,X=q.body.displayHeight?parseInt(q.body.displayHeight,10):void 0;_q("POST /api/p/%s/assets - Uploading: %s (%s, %d bytes)",J,W.originalname,W.mimetype,W.size);let P=await K.createAsset(J,{store:z,buffer:W.buffer,mimeType:W.mimetype,originalFilename:W.originalname,widthPx:Z,heightPx:H,displayWidth:O,displayHeight:X});Y.status(201).json(P)}catch(J){_q("POST /api/p/%s/assets - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/assets/:id/binary",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;_q("GET /api/p/%s/assets/%s/binary - Retrieving binary",J,z);let W=await K.readAssetBinary(J,{id:z});Y.set("Content-Type",W.mimeType),Y.set("Content-Length",W.sizeBytes),Y.set("Cache-Control","public, max-age=31536000, immutable"),Y.set("Content-Disposition",`inline; filename="${W.originalFilename}"`),Y.send(W.buffer)}catch(J){_q("GET /api/p/%s/assets/%s/binary - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/assets/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;_q("GET /api/p/%s/assets/%s - Retrieving metadata",J,z);let W=await K.readAsset(J,{id:z});Y.json(W)}catch(J){_q("GET /api/p/%s/assets/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/assets",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query;_q("GET /api/p/%s/assets - Listing assets for store %s",J,z);let W=await K.listAssets(J,{store:z});Y.json(W)}catch(J){_q("GET /api/p/%s/assets - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.delete("/api/p/:projectId/assets/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;_q("DELETE /api/p/%s/assets/%s - Deleting asset",J,z);let W=await K.deleteAsset(J,{id:z});Y.json(W)}catch(J){_q("DELETE /api/p/%s/assets/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.use("/api/p/:projectId/assets",(q,Y,J,z)=>{if(q instanceof jh.default.MulterError){if(q.code==="LIMIT_FILE_SIZE")return J.status(400).json({error:"File too large. Maximum size is 10MB.",code:"FILE_TOO_LARGE"});return J.status(400).json({error:q.message,code:"UPLOAD_ERROR"})}if(q.message&&q.message.includes("Unsupported MIME type"))return J.status(400).json({error:q.message,code:"UNSUPPORTED_MIME_TYPE"});z(q)}),Object.freeze({})},in8=Object.freeze({create:zv1});var dn8=n6(I4(),1);var J5=dn8.default("caw:api:jobs"),Wv1=($,{core:K})=>{return $.post("/api/p/:projectId/jobs",async(q,Y)=>{try{let{projectId:J}=q.params,{name:z,agent:W,model:Z,prompt:H,store:O="A",workingDirectory:X,objectId:P,streaming:w}=q.body;J5("POST /api/p/%s/jobs - Creating job: agent=%s, model=%s, store=%s, workingDirectory=%s, objectId=%s, streaming=%s",J,W,Z,O,X||"default",P||"none",w||!1);let T=await K.createJob(J,{name:z,agent:W,model:Z,prompt:H,store:O,workingDirectory:X,objectId:P,streaming:w});Y.status(201).json(T)}catch(J){J5("POST /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/jobs",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A",status:W}=q.query;J5("GET /api/p/%s/jobs - Listing jobs: store=%s, status=%s",J,z,W||"all");let Z=await K.listJobs(J,{store:z,status:W});Y.json(Z)}catch(J){J5("GET /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;J5("GET /api/p/%s/jobs/%s - Getting job",J,z);let W=await K.getJob(J,{id:z});if(!W)return Y.status(404).json({error:"Not found",code:"NOT_FOUND"});Y.json(W)}catch(J){J5("GET /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/jobs/:id/continue",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{prompt:W,model:Z}=q.body;J5("POST /api/p/%s/jobs/%s/continue - Continuing job",J,z);let H=await K.continueJob(J,{id:z,prompt:W,model:Z});Y.json(H)}catch(J){J5("POST /api/p/%s/jobs/%s/continue - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id/process-status",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;J5("GET /api/p/%s/jobs/%s/process-status",J,z);let W=await K.getProcessStatus(J,{id:z});Y.json(W)}catch(J){J5("GET /api/p/%s/jobs/%s/process-status - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),$.patch("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W}=q.body;J5("PATCH /api/p/%s/jobs/%s - Renaming job",J,z);let Z=await K.renameJob(J,{id:z,name:W});Y.json(Z)}catch(J){J5("PATCH /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),A6(J,Y)}}),Object.freeze({})},nn8=Object.freeze({create:Wv1});var on8=n6(I4(),1);var BP=on8.default("caw:api:worktrees"),Zv1=($,{core:K})=>{return $.get("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params;BP("GET /api/p/%s/worktrees - Listing worktrees",J);let z=await K.listWorktrees(J);BP("GET /api/p/%s/worktrees - Found %d worktrees, isGitProject=%s",J,z.worktrees.length,z.isGitProject),Y.json(z)}catch(J){BP("GET /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),$.post("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params,{branch:z,baseBranch:W}=q.body;BP("POST /api/p/%s/worktrees - Creating worktree: branch=%s, baseBranch=%s",J,z,W||"default");let Z=await K.createWorktree(J,{branch:z,baseBranch:W});BP("POST /api/p/%s/worktrees - Created worktree at %s for branch %s",J,Z.path,Z.branch),Y.status(201).json(Z)}catch(J){BP("POST /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),A6(J,Y)}}),Object.freeze({})},an8=Object.freeze({create:Zv1});var rn8=n6(I4(),1);var vZ=rn8.default("caw:api:events"),Hv1=($,{core:K})=>{return $.get("/api/p/:projectId/events",async(q,Y)=>{try{let{projectId:J}=q.params;vZ("GET /api/p/%s/events - Client connecting",J);let z=await K.getRootStore(J),W=await K.getStoryService(J),Z=await K.getJobService(J);vZ("GET /api/p/%s/events - Got root store and services, setting up SSE subscription",J),Y.setHeader("Content-Type","text/event-stream"),Y.setHeader("Cache-Control","no-cache"),Y.setHeader("Connection","keep-alive"),Y.flushHeaders(),Y.write(`: connected
610
610
 
611
611
  `);let H=!1,O=(w,T)=>{if(H)return;try{vZ("SSE sending event: %s with data: %o",w,T),Y.write(`event: ${w}
612
612
  `),Y.write(`data: ${JSON.stringify(T)}
@@ -679,7 +679,7 @@ Only supports batchable (line-agnostic) operation types:
679
679
  Note: Line-based operations (replace_lines, insert_at) are NOT supported in batch mode
680
680
  because they are position-sensitive and would produce unpredictable results.
681
681
 
682
- Use preview=true to see what changes would be made without saving.`,schema:oE1,execute:aE1};V6();V6();var K$=A.preprocess(($)=>$==="true"?!0:$==="false"?!1:$,A.boolean()),W66=($=A.any())=>A.preprocess((K)=>{if(typeof K==="string")try{return JSON.parse(K)}catch{return K}return K},A.record($)),Z66=($)=>A.preprocess((K)=>{if(typeof K==="string")try{return JSON.parse(K)}catch{return K}return K},$);var rE1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),start_line:A.coerce.number().int().min(1).describe("Start line number (1-based)"),end_line:A.coerce.number().int().min(1).describe("End line number (1-based, inclusive)"),include_draft:K$.optional().describe("Read draft instead of published")}),sE1=async({core:$,projectId:K},{id:q,start_line:Y,end_line:J,include_draft:z})=>{try{let W=await $.readLines(K,{id:q,startLine:Y,endLine:J,includeDraft:z}),Z={content:W.content,lineNumbers:W.lineNumbers,totalLines:W.totalLines};return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(W){return{content:[{type:"text",text:`Error: ${W.message}`}],isError:!0}}},H66={name:"read_lines",title:"Read Lines",description:"Read specific lines from a document. Returns content with line numbers in format { content, lineNumbers: { start, end }, totalLines }. Line numbers are 1-based and inclusive.",schema:rE1,execute:sE1};V6();var tE1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),start_marker:A.string().describe("String marking the start"),end_marker:A.string().describe("String marking the end"),inclusive:K$.optional().default(!1).describe("Include markers in output"),include_draft:K$.optional().describe("Read draft instead of published")}),eE1=async({core:$,projectId:K},{id:q,start_marker:Y,end_marker:J,inclusive:z,include_draft:W})=>{try{let Z=await $.readBetweenMarkers(K,{id:q,startMarker:Y,endMarker:J,inclusive:z,includeDraft:W}),H={content:Z.content,lineNumbers:Z.lineNumbers};return{content:[{type:"text",text:JSON.stringify(H,null,2)}]}}catch(Z){return{content:[{type:"text",text:`Error: ${Z.message}`}],isError:!0}}},O66={name:"read_between_markers",title:"Read Between Markers",description:"Read content between markers from a document. Returns content with line numbers in format { content, lineNumbers: { start, end } }.",schema:tE1,execute:eE1};V6();var $S1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),include_draft:K$.optional().describe("Read draft instead of published")}),KS1=async({core:$,projectId:K},{id:q,include_draft:Y})=>{try{let J=await $.getDocumentStats(K,{id:q,includeDraft:Y}),z={lines:J.lines,words:J.words,chars:J.chars,headings:J.headings,checklists:J.checklists,hasFrontmatter:J.hasFrontmatter};return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},X66={name:"get_document_stats",title:"Get Document Stats",description:"Get document statistics without transferring content. Returns { lines, words, chars, headings: { h1...h6 }, checklists: { checked, unchecked }, hasFrontmatter }.",schema:$S1,execute:KS1};V6();var qS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),max_depth:A.coerce.number().int().min(1).max(6).optional().describe("Maximum heading level to include (1-6)"),include_draft:K$.optional().describe("Read draft instead of published")}),YS1=async({core:$,projectId:K},{id:q,max_depth:Y,include_draft:J})=>{try{let z=await $.readHeadings(K,{id:q,maxDepth:Y,includeDraft:J});return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},P66={name:"read_headings",title:"Read Headings",description:"Extract heading structure from a document. Returns array of { level, text, lineNumber } objects. Ignores headings inside fenced code blocks.",schema:qS1,execute:YS1};V6();var JS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),heading:A.union([A.string(),A.coerce.number()]).describe("Heading text or line number (1-based)"),include_heading:K$.optional().default(!0).describe("Include the heading line in output"),include_draft:K$.optional().describe("Read draft instead of published")}),zS1=async({core:$,projectId:K},{id:q,heading:Y,include_heading:J,include_draft:z})=>{try{let W=await $.readSection(K,{id:q,heading:Y,includeHeading:J,includeDraft:z}),Z={content:W.content,lineNumbers:W.lineNumbers};return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(W){return{content:[{type:"text",text:`Error: ${W.message}`}],isError:!0}}},w66={name:"read_section",title:"Read Section",description:"Read a section from a document. Returns section content from heading to next same-or-higher level heading (or EOF). Returns { content, lineNumbers: { start, end } }.",schema:JS1,execute:zS1};V6();var WS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),include_draft:K$.optional().describe("Read draft instead of published")}),ZS1=async({core:$,projectId:K},{id:q,include_draft:Y})=>{try{let J=await $.readFrontmatter(K,{id:q,includeDraft:Y});return{content:[{type:"text",text:JSON.stringify(J,null,2)}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},T66={name:"read_frontmatter",title:"Read Frontmatter",description:"Extract parsed YAML frontmatter from a document. Returns { data: object|null, lineNumbers: { start, end }|null, hasFrontmatter: boolean }.",schema:WS1,execute:ZS1};V6();var HS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),section:A.string().optional().describe("Exact heading text to limit scope (includes nested checklists)"),include_draft:K$.optional().describe("Read draft instead of published")}),OS1=async({core:$,projectId:K},{id:q,section:Y,include_draft:J})=>{try{let z=await $.readChecklist(K,{id:q,section:Y,includeDraft:J});return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},G66={name:"read_checklist",title:"Read Checklist",description:"Extract checklist items from a document. Returns array of { text, checked, lineNumber, itemNumber } objects. Supports optional section filtering.",schema:HS1,execute:OS1};V6();var XS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lines:A.coerce.number().int().min(1).describe("Number of lines to return"),include_draft:K$.optional().describe("Read draft instead of published")}),PS1=async({core:$,projectId:K},{id:q,lines:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=u08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},j66={name:"read_head",title:"Read Head",description:"Read the first N lines from a document. Returns { content, lineNumbers: { start, end }, totalLines }. Convenience wrapper that clamps N to document length.",schema:XS1,execute:PS1};V6();var wS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lines:A.coerce.number().int().min(1).describe("Number of lines to return"),include_draft:K$.optional().describe("Read draft instead of published")}),TS1=async({core:$,projectId:K},{id:q,lines:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=m08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},v66={name:"read_tail",title:"Read Tail",description:"Read the last N lines from a document. Returns { content, lineNumbers: { start, end }, totalLines }. Convenience wrapper that clamps N to document length.",schema:wS1,execute:TS1};V6();var GS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),start_line:A.coerce.number().int().min(1).describe("Start line number (1-based)"),include_draft:K$.optional().describe("Read draft instead of published")}),jS1=async({core:$,projectId:K},{id:q,start_line:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=B08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},V66={name:"read_from_line",title:"Read From Line",description:"Read from a starting line to the end of a document. Returns { content, lineNumbers: { start, end }, totalLines }. Line numbers are 1-based.",schema:GS1,execute:jS1};V6();var vS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),end_line:A.coerce.number().int().min(1).describe("End line number (1-based, inclusive)"),include_draft:K$.optional().describe("Read draft instead of published")}),VS1=async({core:$,projectId:K},{id:q,end_line:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=U08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},A66={name:"read_to_line",title:"Read To Line",description:"Read from the beginning to an ending line in a document. Returns { content, lineNumbers: { start, end }, totalLines }. Line numbers are 1-based and inclusive.",schema:vS1,execute:VS1};V6();var AS1=A.object({id:A.string().describe("Document ID to check includes for")}),MS1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.checkIncludes(K,{id:q});return{content:[{type:"text",text:JSON.stringify({documentId:q,includes:Y,hasOutdated:Y.some((J)=>J.outdated)},null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},M66={name:"check_includes",title:"Check Includes",description:"Check which includes have newer versions available",schema:AS1,execute:MS1};V6();var _S1=A.object({id:A.string().describe("Document ID to update includes for")}),kS1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.updateIncludes(K,{id:q});return{content:[{type:"text",text:JSON.stringify({documentId:q,updated:Y.updated,message:Y.updated.length>0?`Updated ${Y.updated.length} include(s). Draft saved.`:"All includes already at latest versions."},null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},_66={name:"update_includes",title:"Update Includes",description:"Update all includes to latest available versions (creates draft)",schema:_S1,execute:kS1};V6();var fS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lineNumber:A.number().int().min(1).describe("Line number of the checklist item (1-based)"),checked:A.boolean().describe("New checked status (true = checked, false = unchecked)"),include_draft:A.boolean().optional().describe("Edit draft content instead of published"),session_id:A.string().optional().describe("Session UUID for edit lock tracking"),preview:A.boolean().optional().describe("If true, return diff without saving")}),NS1=async({core:$,projectId:K,sessionId:q},{id:Y,lineNumber:J,checked:z,include_draft:W,session_id:Z,preview:H})=>{try{if(!H&&!q)throw Error("Session ID required for this operation");let O=H?void 0:q,X=await $.checkChecklistItem(K,{id:Y,lineNumber:J,checked:z,includeDraft:W,sessionId:O,preview:H});return{content:[{type:"text",text:JSON.stringify(X.preview?X:X.item,null,2)}]}}catch(O){return{content:[{type:"text",text:`Error: ${O.message}`}],isError:!0}}},k66={name:"check_checklist_item",title:"Check Checklist Item",description:"Set the checked status of a checklist item by line number.",schema:fS1,execute:NS1};V6();var RS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lineNumber:A.number().int().min(1).describe("Line number of the checklist item (1-based)"),include_draft:A.boolean().optional().describe("Edit draft content instead of published"),session_id:A.string().optional().describe("Session UUID for edit lock tracking"),preview:A.boolean().optional().describe("If true, return diff without saving")}),CS1=async({core:$,projectId:K,sessionId:q},{id:Y,lineNumber:J,include_draft:z,session_id:W,preview:Z})=>{try{if(!Z&&!q)throw Error("Session ID required for this operation");let H=Z?void 0:q,O=await $.toggleChecklistItem(K,{id:Y,lineNumber:J,includeDraft:z,sessionId:H,preview:Z});return{content:[{type:"text",text:JSON.stringify(O.preview?O:O.item,null,2)}]}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}},f66={name:"toggle_checklist_item",title:"Toggle Checklist Item",description:"Toggle the checked status of a checklist item by line number.",schema:RS1,execute:CS1};V6();var DS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),items:A.array(A.object({lineNumber:A.number().int().min(1).describe("Line number (1-based)"),checked:A.boolean().describe("New checked status")})).min(1).describe("Array of items to update"),include_draft:A.boolean().optional().describe("Edit draft content instead of published"),session_id:A.string().optional().describe("Session UUID for edit lock tracking"),preview:A.boolean().optional().describe("If true, return diff without saving")}),hS1=async({core:$,projectId:K,sessionId:q},{id:Y,items:J,include_draft:z,session_id:W,preview:Z})=>{try{if(!Z&&!q)throw Error("Session ID required for this operation");let H=Z?void 0:q,O=await $.batchCheckChecklistItems(K,{id:Y,items:J,includeDraft:z,sessionId:H,preview:Z});if(O.preview)return{content:[{type:"text",text:JSON.stringify(O,null,2)}]};return{content:[{type:"text",text:JSON.stringify({items:O.items,count:O.count},null,2)}]}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}},N66={name:"batch_check_checklist_items",title:"Batch Check Checklist Items",description:"Update multiple checklist items in a single call.",schema:DS1,execute:hS1};V6();var ES1=A.object({id:A.string().describe('Document or Template ID (e.g., "Ad1", "At1")'),subtype:A.string().describe('Target subtype (e.g., "task", "prompt")'),fields:A.record(A.union([A.string(),A.array(A.string())])).optional().describe("Field values for required/optional fields of target subtype")}),SS1=async({core:$,projectId:K},q)=>{try{let{id:Y,subtype:J,fields:z}=q;return{content:[{type:"text",text:`Entity specialised: ${(await $.specialiseDocument(K,{id:Y,subtype:J,fields:z})).entity.getObjectId()} (subtype: ${J})`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},R66={name:"specialise_entity",title:"Specialise Entity",description:"Convert a generic entity to a specific subtype (e.g., document -> task, template -> prompt). Validates required fields for the target subtype.",schema:ES1,execute:SS1};V6();var LS1=A.object({id:A.string().describe('Document or Template ID (e.g., "Ad1", "At1")')}),IS1=async({core:$,projectId:K},q)=>{try{let{id:Y}=q;return await $.generaliseDocument(K,{id:Y}),{content:[{type:"text",text:`Entity generalised: ${Y} (now generic)`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},C66={name:"generalise_entity",title:"Generalise Entity",description:"Convert a subtyped entity back to its generic parent type (e.g., task -> document, prompt -> template). Type-scoped field values are cascade-deleted.",schema:LS1,execute:IS1};var D66=[l86,i86,d86,n86,o86,a86,r86,s86,t86,e86,$66,K66,q66,Y66,J66,z66,H66,O66,X66,P66,w66,T66,G66,j66,v66,V66,A66,M66,_66,k66,f66,N66,R66,C66];V6();var xS1=A.object({path:A.string().optional().describe("Path for document/file target"),store:A.string().optional().describe("Store code (for full-path mode)"),root:A.string().optional().describe('Root folder ID (e.g., "Af1")'),parentId:A.string().optional().describe("Parent folder ID"),name:A.string().optional().describe("Document name"),publish:A.boolean().optional().describe("Auto-publish document (document target only)"),jobName:A.string().optional().describe("Job name (supports Handlebars)"),jobAgent:A.string().optional().describe("Agent type (claude or codex)"),jobModel:A.string().optional().describe("Model identifier passed to agent"),jobWorktree:A.string().optional().describe("Worktree branch name to match"),jobStreaming:A.boolean().optional().describe("Enable realtime output streaming")}),gS1=A.object({id:A.string().describe('Template ID (e.g., "At1")'),params:W66(A.any()).optional().describe("Parameter values as key-value pairs"),target:A.enum(["stdout","clipboard","document","file","job"]).optional().describe("Output target (overrides template frontmatter)"),targetOptions:Z66(xS1).optional().describe("Target-specific options")}),bS1=async({core:$,projectId:K,sessionId:q},{id:Y,params:J,target:z,targetOptions:W})=>{try{let Z=await $.renderTemplate(K,{id:Y,params:J||{},target:z,targetOptions:W,sessionId:q}),H=Z.target;if(H==="stdout")return{content:[{type:"text",text:Z.content}]};else if(H==="clipboard")return{content:[{type:"text",text:"Template rendered to clipboard"}]};else if(H==="document")return{content:[{type:"text",text:`Template rendered to document: ${Z.documentId}`}]};else if(H==="file")return{content:[{type:"text",text:`Template rendered to file: ${Z.path}`}]};else if(H==="job")return{content:[{type:"text",text:`Job created: ${Z.jobId} (${Z.jobName})`}]}}catch(Z){return{content:[{type:"text",text:`Error: ${Z.message}`}],isError:!0}}},h66={name:"render_template",title:"Render Template",description:"Render a template with parameters. Template frontmatter provides defaults for target and targetPath; MCP parameters override when explicitly provided.",schema:gS1,execute:bS1};V6();var yS1=A.object({id:A.string().describe('Template ID (e.g., "At1")')}),uS1=async({core:$,projectId:K},{id:q})=>{try{let{entity:Y}=await $.readDocument(K,{id:q});if(!Y)return{content:[{type:"text",text:`Template not found: ${q}`}],isError:!0};let J=Y.getPublishedContent();if(!J)return{content:[{type:"text",text:`Template has no published version: ${q}`}],isError:!0};let{parameters:z,target:W,targetPath:Z}=FK.getParameters(J);return{content:[{type:"text",text:JSON.stringify({parameters:z,target:W,targetPath:Z},null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},E66={name:"get_template_parameters",title:"Get Template Parameters",description:"Get parameter definitions from a published template",schema:yS1,execute:uS1};V6();var mS1=A.object({typeCode:A.string().describe('Entity type code to match (e.g., "s" for stories)')}),BS1=async({core:$,projectId:K},{typeCode:q})=>{try{let Y=await $.listTemplatesByType(K,{typeCode:q});return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},S66={name:"list_templates_by_type",title:"List Templates by Type",description:"List templates associated with a given entity type code",schema:mS1,execute:BS1};var L66=[h66,E66,S66];V6();var US1=A.object({path:A.string().optional().describe('Full path from tree root (e.g., "Documents/specs/api-v2") or relative path from root'),store:A.string().optional().describe("Store code (required for full path mode)"),root:A.string().optional().describe('Root folder ID (e.g., "Af1")'),parentId:A.string().optional().describe("Parent folder ID"),name:A.string().optional().describe("Folder name")}),pS1=async({core:$,projectId:K},q)=>{try{let Y;if("store"in q&&!("root"in q)&&!("parentId"in q))Y=await $.createFolder(K,{mode:"fullPath",path:q.path,store:q.store});else if("root"in q)Y=await $.createFolder(K,{mode:"rootRelative",root:q.root,path:q.path});else Y=await $.createFolder(K,{mode:"parentName",parentId:q.parentId,name:q.name});return{content:[{type:"text",text:`Created folder: ${Y.getObjectId()} (path: ${Y.getPath()})`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},I66={name:"create_folder",title:"Create Folder",description:"Create a new folder. Supports three creation modes: full path (path+store), root+relative (root+path), or parent+name (parentId+name).",schema:US1,execute:pS1};V6();var FS1=A.object({id:A.string().describe('Folder ID (e.g., "Af2") or Story ID (e.g., "As1")')}),cS1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.getFolder(K,{id:q});if(!Y)return{content:[{type:"text",text:`Folder not found: ${q}`}],isError:!0};let J;if(Y.isStory?.()){let z=Y.toJSON();J={id:z.id,parentId:z.parentId,name:z.name,path:z.path,isRoot:!1,isStory:!0,isFolder:!1,type:"s",fields:z.fields,createdAt:z.createdAt,updatedAt:z.updatedAt}}else J={id:Y.getObjectId(),parentId:Y.getParentId(),name:Y.getName(),path:Y.getPath(),isRoot:Y.isRoot(),createdAt:Y.getCreatedAt(),updatedAt:Y.getUpdatedAt()};return{content:[{type:"text",text:JSON.stringify(J,null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},x66={name:"get_folder",title:"Get Folder",description:"Get folder information by ID",schema:FS1,execute:cS1};V6();var QS1=A.object({path:A.string().describe('Folder path (e.g., "docs/specs") or empty for root'),store:A.string().optional().describe('Store code (default: "A")'),type:A.enum(["d","t","s"]).describe('Folder tree: "d" (documents), "t" (templates), "s" (stories) - REQUIRED')}),lS1=async({core:$,projectId:K},{path:q,store:Y,type:J})=>{try{let z=await $.getFolderByPath(K,{store:Y||"A",path:q,type:J});if(!z)return{content:[{type:"text",text:`Folder not found: ${q}`}],isError:!0};let W;if(z.isStory?.()){let Z=z.toJSON();W={id:Z.id,parentId:Z.parentId,name:Z.name,path:Z.path,isRoot:!1,isStory:!0,isFolder:!1,type:"s",fields:Z.fields,createdAt:Z.createdAt,updatedAt:Z.updatedAt}}else W={id:z.getObjectId(),parentId:z.getParentId(),name:z.getName(),path:z.getPath(),isRoot:z.isRoot(),createdAt:z.getCreatedAt(),updatedAt:z.getUpdatedAt()};return{content:[{type:"text",text:JSON.stringify(W,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},g66={name:"get_folder_by_path",title:"Get Folder By Path",description:'Get folder information by type and path. Use type="d" for documents, type="t" for templates, type="s" for stories.',schema:QS1,execute:lS1};V6();var iS1=A.object({id:A.string().nullable().optional().describe('Folder ID (e.g., "Af2"), or omit for root folder'),store:A.string().optional().describe('Store code for root folder (default: "A")'),type:A.string().optional().describe('Document type code (e.g., "d" for document, "t" for template). Required for root folder listing. Default: "d"')}),dS1=async({core:$,projectId:K},{id:q,store:Y,type:J})=>{try{let z=await $.listFolderContents(K,{folderId:q??null,store:Y||"A",type:q?J:J||"d"}),W={folders:z.folders.map((Z)=>({id:Z.getObjectId(),parentId:Z.getParentId(),name:Z.getName(),path:Z.getPath(),isRoot:Z.isRoot?.()??!1})),documents:z.documents.map((Z)=>({id:Z.getObjectId(),path:Z.getPath(),type:Z.getTypeCode(),subtype:typeof Z.getSubtype==="function"?Z.getSubtype():null,hasPublished:Z.hasPublished(),hasDraft:Z.hasDraftContent()}))};return{content:[{type:"text",text:JSON.stringify(W,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},b66={name:"list_folder_contents",title:"List Folder Contents",description:"List contents of a folder (subfolders and documents)",schema:iS1,execute:dS1};V6();var nS1=A.object({id:A.string().describe('Folder ID (e.g., "Af2")'),name:A.string().describe("New folder name")}),oS1=async({core:$,projectId:K},{id:q,name:Y})=>{try{let J=await $.renameFolder(K,{id:q,name:Y});return{content:[{type:"text",text:`Renamed folder: ${J.getObjectId()} (new path: ${J.getPath()})`}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},y66={name:"rename_folder",title:"Rename Folder",description:"Rename a folder",schema:nS1,execute:oS1};V6();var aS1=A.object({id:A.string().describe('Folder ID to move (e.g., "Af3")'),newParentId:A.string().describe('Target parent folder ID (e.g., "Af2")')}),rS1=async({core:$,projectId:K},{id:q,newParentId:Y})=>{try{let J=await $.moveFolder(K,{id:q,parentId:Y});return{content:[{type:"text",text:`Moved folder: ${J.getObjectId()} (new path: ${J.getPath()})`}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},u66={name:"move_folder",title:"Move Folder",description:"Move a folder to a new parent folder",schema:aS1,execute:rS1};V6();var sS1=A.object({id:A.string().describe('Folder ID (e.g., "Af2")')}),tS1=async({core:$,projectId:K},{id:q})=>{try{return await $.deleteFolder(K,{id:q}),{content:[{type:"text",text:`Deleted folder: ${q}`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},m66={name:"delete_folder",title:"Delete Folder",description:"Soft delete a folder and all its contents (can be restored later)",schema:sS1,execute:tS1};var B66=[I66,x66,g66,b66,y66,u66,m66];V6();var eS1=A.object({ownerEntityId:A.string().optional().describe('Owner entity ID (e.g., "Ad1" for template). Omit for global/system fields.'),ownerEntityTypeCode:A.string().optional().describe('Entity type code for type-scoped definition (e.g., "d"). Mutually exclusive with ownerEntityId.'),ownerEntityTypeSubtype:A.string().optional().describe('Entity subtype for type-scoped definition (e.g., "task"). Used with ownerEntityTypeCode.'),name:A.string().describe("Field name (alphanumeric + underscores)"),primitiveType:A.enum(["string","object_ref"]).describe("Primitive type"),label:A.string().optional().describe("UI label"),description:A.string().optional().describe("Help text"),required:A.boolean().optional().describe("Whether field is required"),multiplicity:A.enum(["single","multi"]).optional().describe("Single or multi-valued"),isSystem:A.boolean().optional().describe("System/global field"),allowedValues:A.array(A.string()).optional().describe("Constrain values to this list (optional)"),store:A.string().optional().describe('Store code (default: "A" for project store)')}),$L1=async({core:$,projectId:K},{ownerEntityId:q,ownerEntityTypeCode:Y,ownerEntityTypeSubtype:J,name:z,primitiveType:W,label:Z,description:H,required:O,multiplicity:X,isSystem:P,allowedValues:w,store:T})=>{try{let G=await $.createFieldDefinition(K,{store:T||"A",ownerEntityId:q,ownerEntityTypeCode:Y,ownerEntityTypeSubtype:J,name:z,label:Z,description:H,primitiveType:W,required:O,multiplicity:X,isSystem:P,allowedValues:w});return{content:[{type:"text",text:`Field definition created: ${G.getName()} (id: ${G.getObjectId()}, type: ${G.getPrimitiveType()})`}]}}catch(G){return{content:[{type:"text",text:`Error: ${G.message}`}],isError:!0}}},U66={name:"create_field_definition",title:"Create Field Definition",description:"Create a field definition on an owner entity (template/workflow)",schema:eS1,execute:$L1};V6();var KL1=A.object({ownerEntityId:A.string().optional().describe("Owner entity ID. Omit for global/system fields."),includeSystem:A.boolean().optional().describe("Include system fields"),store:A.string().optional().describe('Store code (default: "A" for project store)')}),qL1=async({core:$,projectId:K},{ownerEntityId:q,includeSystem:Y,store:J})=>{try{let z=await $.getFieldDefinitions(K,{store:J||"A",ownerEntityId:q||null,includeSystem:Y});if(z.length===0)return{content:[{type:"text",text:"No field definitions found"}]};return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},p66={name:"get_field_definitions",title:"Get Field Definitions",description:"Get all field definitions for an owner entity",schema:KL1,execute:qL1};V6();var YL1=A.object({code:A.string().describe('Entity type code (e.g., "d" for document)'),subtype:A.string().describe('Entity subtype (e.g., "task")'),store:A.string().optional().describe('Store code (default: "A")')}),JL1=async({core:$,projectId:K},{code:q,subtype:Y,store:J})=>{try{let z=await $.getTypeFields(K,{store:J||"A",code:q,subtype:Y});if(z.length===0)return{content:[{type:"text",text:"No field definitions found for this entity type"}]};return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},F66={name:"get_type_fields",title:"Get Type Fields",description:"Get field definitions for an entity type/subtype combination",schema:YL1,execute:JL1};V6();var zL1=A.object({id:A.string().describe('Field definition ID (e.g., "An1")')}),WL1=async({core:$,projectId:K},{id:q})=>{try{return{content:[{type:"text",text:`Field definition deleted: ${(await $.deleteFieldDefinition(K,{id:q})).name}`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},c66={name:"delete_field_definition",title:"Delete Field Definition",description:"Delete a field definition (cascades to values)",schema:zL1,execute:WL1};V6();var ZL1=A.object({id:A.string().describe('Entity ID (e.g., "Ad1")')}),HL1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.getFields(K,{entityId:q});if(!Y||Object.keys(Y).length===0)return{content:[{type:"text",text:"No fields set"}]};return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},Q66={name:"get_fields",title:"Get Fields",description:"Get all field values for an entity as an object",schema:ZL1,execute:HL1};V6();var OL1=A.object({id:A.string().describe('Entity ID (e.g., "Ad1")'),fieldDefinitionId:A.string().optional().describe('Field definition ID (e.g., "An1")'),fieldName:A.string().optional().describe("Field name for auto-resolution"),value:A.string().optional().describe("Single value"),values:A.array(A.string()).optional().describe("Array of values (for multi-valued)")}),XL1=async({core:$,projectId:K},{id:q,fieldDefinitionId:Y,fieldName:J,value:z,values:W})=>{try{if(z===void 0&&W===void 0)return{content:[{type:"text",text:"Error: Either value or values is required"}],isError:!0};let Z=await $.setField(K,{entityId:q,fieldDefinitionId:Y,fieldName:J,value:z,values:W}),H=J||Y,O=W!==void 0?`[${W.join(", ")}]`:z;return{content:[{type:"text",text:`Field set: ${H} = ${O}`}]}}catch(Z){return{content:[{type:"text",text:`Error: ${Z.message}`}],isError:!0}}},l66={name:"set_field",title:"Set Field",description:"Set a field value (single-valued or multi-valued)",schema:OL1,execute:XL1};V6();var PL1=A.object({id:A.string().describe('Entity ID (e.g., "Ad1")'),fieldDefinitionId:A.string().optional().describe('Field definition ID (e.g., "An1")'),fieldName:A.string().optional().describe("Field name for auto-resolution")}),wL1=async({core:$,projectId:K},{id:q,fieldDefinitionId:Y,fieldName:J})=>{try{return{content:[{type:"text",text:`Field deleted: ${(await $.deleteField(K,{entityId:q,fieldDefinitionId:Y,fieldName:J})).name}`}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},i66={name:"delete_field",title:"Delete Field",description:"Remove a field from an entity",schema:PL1,execute:wL1};var d66=[U66,p66,F66,c66,Q66,l66,i66];V6();var TL1=A.object({}),GL1=async({core:$,projectId:K})=>{try{let q=await $.listExports(K);if(q.length===0)return{content:[{type:"text",text:"No exports found."}]};let Y=["Available exports:",""];for(let J of q)Y.push(`• ${J.filename} (${J.size} bytes)`);return{content:[{type:"text",text:Y.join(`
682
+ Use preview=true to see what changes would be made without saving.`,schema:oE1,execute:aE1};V6();V6();var K$=A.preprocess(($)=>$==="true"?!0:$==="false"?!1:$,A.boolean()),W66=($=A.any())=>A.preprocess((K)=>{if(typeof K==="string")try{return JSON.parse(K)}catch{return K}return K},A.record($)),Z66=($)=>A.preprocess((K)=>{if(typeof K==="string")try{return JSON.parse(K)}catch{return K}return K},$);var rE1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),start_line:A.coerce.number().int().min(1).describe("Start line number (1-based)"),end_line:A.coerce.number().int().min(1).describe("End line number (1-based, inclusive)"),include_draft:K$.optional().describe("Read draft instead of published")}),sE1=async({core:$,projectId:K},{id:q,start_line:Y,end_line:J,include_draft:z})=>{try{let W=await $.readLines(K,{id:q,startLine:Y,endLine:J,includeDraft:z}),Z={content:W.content,lineNumbers:W.lineNumbers,totalLines:W.totalLines};return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(W){return{content:[{type:"text",text:`Error: ${W.message}`}],isError:!0}}},H66={name:"read_lines",title:"Read Lines",description:"Read specific lines from a document. Returns content with line numbers in format { content, lineNumbers: { start, end }, totalLines }. Line numbers are 1-based and inclusive.",schema:rE1,execute:sE1};V6();var tE1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),start_marker:A.string().describe("String marking the start"),end_marker:A.string().describe("String marking the end"),inclusive:K$.optional().default(!1).describe("Include markers in output"),include_draft:K$.optional().describe("Read draft instead of published")}),eE1=async({core:$,projectId:K},{id:q,start_marker:Y,end_marker:J,inclusive:z,include_draft:W})=>{try{let Z=await $.readBetweenMarkers(K,{id:q,startMarker:Y,endMarker:J,inclusive:z,includeDraft:W}),H={content:Z.content,lineNumbers:Z.lineNumbers};return{content:[{type:"text",text:JSON.stringify(H,null,2)}]}}catch(Z){return{content:[{type:"text",text:`Error: ${Z.message}`}],isError:!0}}},O66={name:"read_between_markers",title:"Read Between Markers",description:"Read content between markers from a document. Returns content with line numbers in format { content, lineNumbers: { start, end } }.",schema:tE1,execute:eE1};V6();var $S1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),include_draft:K$.optional().describe("Read draft instead of published")}),KS1=async({core:$,projectId:K},{id:q,include_draft:Y})=>{try{let J=await $.getDocumentStats(K,{id:q,includeDraft:Y}),z={lines:J.lines,words:J.words,chars:J.chars,headings:J.headings,checklists:J.checklists,hasFrontmatter:J.hasFrontmatter};return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},X66={name:"get_document_stats",title:"Get Document Stats",description:"Get document statistics without transferring content. Returns { lines, words, chars, headings: { h1...h6 }, checklists: { checked, unchecked }, hasFrontmatter }.",schema:$S1,execute:KS1};V6();var qS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),max_depth:A.coerce.number().int().min(1).max(6).optional().describe("Maximum heading level to include (1-6)"),include_draft:K$.optional().describe("Read draft instead of published")}),YS1=async({core:$,projectId:K},{id:q,max_depth:Y,include_draft:J})=>{try{let z=await $.readHeadings(K,{id:q,maxDepth:Y,includeDraft:J});return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},P66={name:"read_headings",title:"Read Headings",description:"Extract heading structure from a document. Returns array of { level, text, lineNumber } objects. Ignores headings inside fenced code blocks.",schema:qS1,execute:YS1};V6();var JS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),heading:A.union([A.string(),A.coerce.number()]).describe("Heading text or line number (1-based)"),include_heading:K$.optional().default(!0).describe("Include the heading line in output"),include_draft:K$.optional().describe("Read draft instead of published")}),zS1=async({core:$,projectId:K},{id:q,heading:Y,include_heading:J,include_draft:z})=>{try{let W=await $.readSection(K,{id:q,heading:Y,includeHeading:J,includeDraft:z}),Z={content:W.content,lineNumbers:W.lineNumbers};return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(W){return{content:[{type:"text",text:`Error: ${W.message}`}],isError:!0}}},w66={name:"read_section",title:"Read Section",description:"Read a section from a document. Returns section content from heading to next same-or-higher level heading (or EOF). Returns { content, lineNumbers: { start, end } }.",schema:JS1,execute:zS1};V6();var WS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),include_draft:K$.optional().describe("Read draft instead of published")}),ZS1=async({core:$,projectId:K},{id:q,include_draft:Y})=>{try{let J=await $.readFrontmatter(K,{id:q,includeDraft:Y});return{content:[{type:"text",text:JSON.stringify(J,null,2)}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},T66={name:"read_frontmatter",title:"Read Frontmatter",description:"Extract parsed YAML frontmatter from a document. Returns { data: object|null, lineNumbers: { start, end }|null, hasFrontmatter: boolean }.",schema:WS1,execute:ZS1};V6();var HS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),section:A.string().optional().describe("Exact heading text to limit scope (includes nested checklists)"),include_draft:K$.optional().describe("Read draft instead of published")}),OS1=async({core:$,projectId:K},{id:q,section:Y,include_draft:J})=>{try{let z=await $.readChecklist(K,{id:q,section:Y,includeDraft:J});return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},G66={name:"read_checklist",title:"Read Checklist",description:"Extract checklist items from a document. Returns array of { text, checked, lineNumber, itemNumber } objects. Supports optional section filtering.",schema:HS1,execute:OS1};V6();var XS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lines:A.coerce.number().int().min(1).describe("Number of lines to return"),include_draft:K$.optional().describe("Read draft instead of published")}),PS1=async({core:$,projectId:K},{id:q,lines:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=u08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},j66={name:"read_head",title:"Read Head",description:"Read the first N lines from a document. Returns { content, lineNumbers: { start, end }, totalLines }. Convenience wrapper that clamps N to document length.",schema:XS1,execute:PS1};V6();var wS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lines:A.coerce.number().int().min(1).describe("Number of lines to return"),include_draft:K$.optional().describe("Read draft instead of published")}),TS1=async({core:$,projectId:K},{id:q,lines:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=m08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},v66={name:"read_tail",title:"Read Tail",description:"Read the last N lines from a document. Returns { content, lineNumbers: { start, end }, totalLines }. Convenience wrapper that clamps N to document length.",schema:wS1,execute:TS1};V6();var GS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),start_line:A.coerce.number().int().min(1).describe("Start line number (1-based)"),include_draft:K$.optional().describe("Read draft instead of published")}),jS1=async({core:$,projectId:K},{id:q,start_line:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=B08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},V66={name:"read_from_line",title:"Read From Line",description:"Read from a starting line to the end of a document. Returns { content, lineNumbers: { start, end }, totalLines }. Line numbers are 1-based.",schema:GS1,execute:jS1};V6();var vS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),end_line:A.coerce.number().int().min(1).describe("End line number (1-based, inclusive)"),include_draft:K$.optional().describe("Read draft instead of published")}),VS1=async({core:$,projectId:K},{id:q,end_line:Y,include_draft:J})=>{try{let{entity:z}=await $.readDocument(K,{id:q}),W=J?z.getDraftContent?.()??z.getPublishedContent?.()??"":z.getPublishedContent?.()??"",Z=U08(W,Y);return{content:[{type:"text",text:JSON.stringify(Z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},A66={name:"read_to_line",title:"Read To Line",description:"Read from the beginning to an ending line in a document. Returns { content, lineNumbers: { start, end }, totalLines }. Line numbers are 1-based and inclusive.",schema:vS1,execute:VS1};V6();var AS1=A.object({id:A.string().describe("Document ID to check includes for")}),MS1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.checkIncludes(K,{id:q});return{content:[{type:"text",text:JSON.stringify({documentId:q,includes:Y,hasOutdated:Y.some((J)=>J.outdated)},null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},M66={name:"check_includes",title:"Check Includes",description:"Check which includes have newer versions available",schema:AS1,execute:MS1};V6();var _S1=A.object({id:A.string().describe("Document ID to update includes for")}),kS1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.updateIncludes(K,{id:q});return{content:[{type:"text",text:JSON.stringify({documentId:q,updated:Y.updated,message:Y.updated.length>0?`Updated ${Y.updated.length} include(s). Draft saved.`:"All includes already at latest versions."},null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},_66={name:"update_includes",title:"Update Includes",description:"Update all includes to latest available versions (creates draft)",schema:_S1,execute:kS1};V6();var fS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lineNumber:A.number().int().min(1).describe("Line number of the checklist item (1-based)"),checked:A.boolean().describe("New checked status (true = checked, false = unchecked)"),include_draft:A.boolean().optional().describe("Edit draft content instead of published"),session_id:A.string().optional().describe("Session UUID for edit lock tracking"),preview:A.boolean().optional().describe("If true, return diff without saving")}),NS1=async({core:$,projectId:K,sessionId:q},{id:Y,lineNumber:J,checked:z,include_draft:W,session_id:Z,preview:H})=>{try{if(!H&&!q)throw Error("Session ID required for this operation");let O=H?void 0:q,X=await $.checkChecklistItem(K,{id:Y,lineNumber:J,checked:z,includeDraft:W,sessionId:O,preview:H});return{content:[{type:"text",text:JSON.stringify(X.preview?X:X.item,null,2)}]}}catch(O){return{content:[{type:"text",text:`Error: ${O.message}`}],isError:!0}}},k66={name:"check_checklist_item",title:"Check Checklist Item",description:"Set the checked status of a checklist item by line number.",schema:fS1,execute:NS1};V6();var RS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),lineNumber:A.number().int().min(1).describe("Line number of the checklist item (1-based)"),include_draft:A.boolean().optional().describe("Edit draft content instead of published"),session_id:A.string().optional().describe("Session UUID for edit lock tracking"),preview:A.boolean().optional().describe("If true, return diff without saving")}),CS1=async({core:$,projectId:K,sessionId:q},{id:Y,lineNumber:J,include_draft:z,session_id:W,preview:Z})=>{try{if(!Z&&!q)throw Error("Session ID required for this operation");let H=Z?void 0:q,O=await $.toggleChecklistItem(K,{id:Y,lineNumber:J,includeDraft:z,sessionId:H,preview:Z});return{content:[{type:"text",text:JSON.stringify(O.preview?O:O.item,null,2)}]}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}},f66={name:"toggle_checklist_item",title:"Toggle Checklist Item",description:"Toggle the checked status of a checklist item by line number.",schema:RS1,execute:CS1};V6();var DS1=A.object({id:A.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")'),items:A.array(A.object({lineNumber:A.number().int().min(1).describe("Line number (1-based)"),checked:A.boolean().describe("New checked status")})).min(1).describe("Array of items to update"),include_draft:A.boolean().optional().describe("Edit draft content instead of published"),session_id:A.string().optional().describe("Session UUID for edit lock tracking"),preview:A.boolean().optional().describe("If true, return diff without saving")}),hS1=async({core:$,projectId:K,sessionId:q},{id:Y,items:J,include_draft:z,session_id:W,preview:Z})=>{try{if(!Z&&!q)throw Error("Session ID required for this operation");let H=Z?void 0:q,O=await $.batchCheckChecklistItems(K,{id:Y,items:J,includeDraft:z,sessionId:H,preview:Z});if(O.preview)return{content:[{type:"text",text:JSON.stringify(O,null,2)}]};return{content:[{type:"text",text:JSON.stringify({items:O.items,count:O.count},null,2)}]}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}},N66={name:"batch_check_checklist_items",title:"Batch Check Checklist Items",description:"Update multiple checklist items in a single call.",schema:DS1,execute:hS1};V6();var ES1=A.object({id:A.string().describe('Document or Template ID (e.g., "Ad1", "At1")'),subtype:A.string().describe('Target subtype (e.g., "task", "prompt")'),fields:A.record(A.union([A.string(),A.array(A.string())])).optional().describe("Field values for required/optional fields of target subtype")}),SS1=async({core:$,projectId:K},q)=>{try{let{id:Y,subtype:J,fields:z}=q;return{content:[{type:"text",text:`Entity specialised: ${(await $.specialiseDocument(K,{id:Y,subtype:J,fields:z})).entity.getObjectId()} (subtype: ${J})`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},R66={name:"specialise_entity",title:"Specialise Entity",description:"Convert a generic entity to a specific subtype (e.g., document -> task, template -> prompt). Validates required fields for the target subtype.",schema:ES1,execute:SS1};V6();var LS1=A.object({id:A.string().describe('Document or Template ID (e.g., "Ad1", "At1")')}),IS1=async({core:$,projectId:K},q)=>{try{let{id:Y}=q;return await $.generaliseDocument(K,{id:Y}),{content:[{type:"text",text:`Entity generalised: ${Y} (now generic)`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},C66={name:"generalise_entity",title:"Generalise Entity",description:"Convert a subtyped entity back to its generic parent type (e.g., task -> document, prompt -> template). Type-scoped field values are cascade-deleted.",schema:LS1,execute:IS1};var D66=[l86,i86,d86,n86,o86,a86,r86,s86,t86,e86,$66,K66,q66,Y66,J66,z66,H66,O66,X66,P66,w66,T66,G66,j66,v66,V66,A66,M66,_66,k66,f66,N66,R66,C66];V6();var xS1=A.object({path:A.string().optional().describe("Path for document/file target"),store:A.string().optional().describe("Store code (for full-path mode)"),root:A.string().optional().describe('Root folder ID (e.g., "Af1")'),parentId:A.string().optional().describe("Parent folder ID"),name:A.string().optional().describe("Document name"),publish:A.boolean().optional().describe("Auto-publish document (document target only)"),jobName:A.string().optional().describe("Job name (supports Handlebars)"),jobAgent:A.string().optional().describe("Agent type (claude or codex)"),jobModel:A.string().optional().describe("Model identifier passed to agent"),jobWorktree:A.string().optional().describe("Worktree branch name to match"),jobStreaming:A.boolean().optional().describe("Enable realtime output streaming")}),gS1=A.object({id:A.string().describe('Template ID (e.g., "At1")'),params:W66(A.any()).optional().describe("Parameter values as key-value pairs"),target:A.enum(["stdout","clipboard","document","file","job"]).optional().describe("Output target (overrides template frontmatter)"),targetOptions:Z66(xS1).optional().describe("Target-specific options")}),bS1=async({core:$,projectId:K,sessionId:q},{id:Y,params:J,target:z,targetOptions:W})=>{try{let Z=await $.renderTemplate(K,{id:Y,params:J||{},target:z,targetOptions:W,sessionId:q}),H=Z.target;if(H==="stdout")return{content:[{type:"text",text:Z.content}]};else if(H==="clipboard")return{content:[{type:"text",text:"Template rendered to clipboard"}]};else if(H==="document")return{content:[{type:"text",text:`Template rendered to document: ${Z.documentId}`}]};else if(H==="file")return{content:[{type:"text",text:`Template rendered to file: ${Z.path}`}]};else if(H==="job")return{content:[{type:"text",text:`Job created: ${Z.jobId} (${Z.jobName})`}]}}catch(Z){return{content:[{type:"text",text:`Error: ${Z.message}`}],isError:!0}}},h66={name:"render_template",title:"Render Template",description:"Render a template with parameters. Template frontmatter provides defaults for target and targetPath; MCP parameters override when explicitly provided.",schema:gS1,execute:bS1};V6();var yS1=A.object({id:A.string().describe('Template ID (e.g., "At1")')}),uS1=async({core:$,projectId:K},{id:q})=>{try{let{entity:Y}=await $.readDocument(K,{id:q});if(!Y)return{content:[{type:"text",text:`Template not found: ${q}`}],isError:!0};let J=Y.getPublishedContent();if(!J)return{content:[{type:"text",text:`Template has no published version: ${q}`}],isError:!0};let{parameters:z,target:W,targetPath:Z}=FK.getParameters(J);return{content:[{type:"text",text:JSON.stringify({parameters:z,target:W,targetPath:Z},null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},E66={name:"get_template_parameters",title:"Get Template Parameters",description:"Get parameter definitions from a published template",schema:yS1,execute:uS1};V6();var mS1=A.object({typeCode:A.string().describe('Entity type code to match (e.g., "s" for stories)')}),BS1=async({core:$,projectId:K},{typeCode:q})=>{try{let Y=await $.listTemplatesByType(K,{typeCode:q});return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},S66={name:"list_templates_by_type",title:"List Templates by Type",description:"List prompts associated with a given entity type code",schema:mS1,execute:BS1};var L66=[h66,E66,S66];V6();var US1=A.object({path:A.string().optional().describe('Full path from tree root (e.g., "Documents/specs/api-v2") or relative path from root'),store:A.string().optional().describe("Store code (required for full path mode)"),root:A.string().optional().describe('Root folder ID (e.g., "Af1")'),parentId:A.string().optional().describe("Parent folder ID"),name:A.string().optional().describe("Folder name")}),pS1=async({core:$,projectId:K},q)=>{try{let Y;if("store"in q&&!("root"in q)&&!("parentId"in q))Y=await $.createFolder(K,{mode:"fullPath",path:q.path,store:q.store});else if("root"in q)Y=await $.createFolder(K,{mode:"rootRelative",root:q.root,path:q.path});else Y=await $.createFolder(K,{mode:"parentName",parentId:q.parentId,name:q.name});return{content:[{type:"text",text:`Created folder: ${Y.getObjectId()} (path: ${Y.getPath()})`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},I66={name:"create_folder",title:"Create Folder",description:"Create a new folder. Supports three creation modes: full path (path+store), root+relative (root+path), or parent+name (parentId+name).",schema:US1,execute:pS1};V6();var FS1=A.object({id:A.string().describe('Folder ID (e.g., "Af2") or Story ID (e.g., "As1")')}),cS1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.getFolder(K,{id:q});if(!Y)return{content:[{type:"text",text:`Folder not found: ${q}`}],isError:!0};let J;if(Y.isStory?.()){let z=Y.toJSON();J={id:z.id,parentId:z.parentId,name:z.name,path:z.path,isRoot:!1,isStory:!0,isFolder:!1,type:"s",fields:z.fields,createdAt:z.createdAt,updatedAt:z.updatedAt}}else J={id:Y.getObjectId(),parentId:Y.getParentId(),name:Y.getName(),path:Y.getPath(),isRoot:Y.isRoot(),createdAt:Y.getCreatedAt(),updatedAt:Y.getUpdatedAt()};return{content:[{type:"text",text:JSON.stringify(J,null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},x66={name:"get_folder",title:"Get Folder",description:"Get folder information by ID",schema:FS1,execute:cS1};V6();var QS1=A.object({path:A.string().describe('Folder path (e.g., "docs/specs") or empty for root'),store:A.string().optional().describe('Store code (default: "A")'),type:A.enum(["d","t","s"]).describe('Folder tree: "d" (documents), "t" (templates), "s" (stories) - REQUIRED')}),lS1=async({core:$,projectId:K},{path:q,store:Y,type:J})=>{try{let z=await $.getFolderByPath(K,{store:Y||"A",path:q,type:J});if(!z)return{content:[{type:"text",text:`Folder not found: ${q}`}],isError:!0};let W;if(z.isStory?.()){let Z=z.toJSON();W={id:Z.id,parentId:Z.parentId,name:Z.name,path:Z.path,isRoot:!1,isStory:!0,isFolder:!1,type:"s",fields:Z.fields,createdAt:Z.createdAt,updatedAt:Z.updatedAt}}else W={id:z.getObjectId(),parentId:z.getParentId(),name:z.getName(),path:z.getPath(),isRoot:z.isRoot(),createdAt:z.getCreatedAt(),updatedAt:z.getUpdatedAt()};return{content:[{type:"text",text:JSON.stringify(W,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},g66={name:"get_folder_by_path",title:"Get Folder By Path",description:'Get folder information by type and path. Use type="d" for documents, type="t" for templates, type="s" for stories.',schema:QS1,execute:lS1};V6();var iS1=A.object({id:A.string().nullable().optional().describe('Folder ID (e.g., "Af2"), or omit for root folder'),store:A.string().optional().describe('Store code for root folder (default: "A")'),type:A.string().optional().describe('Document type code (e.g., "d" for document, "t" for template). Required for root folder listing. Default: "d"')}),dS1=async({core:$,projectId:K},{id:q,store:Y,type:J})=>{try{let z=await $.listFolderContents(K,{folderId:q??null,store:Y||"A",type:q?J:J||"d"}),W={folders:z.folders.map((Z)=>({id:Z.getObjectId(),parentId:Z.getParentId(),name:Z.getName(),path:Z.getPath(),isRoot:Z.isRoot?.()??!1})),documents:z.documents.map((Z)=>({id:Z.getObjectId(),path:Z.getPath(),type:Z.getTypeCode(),subtype:typeof Z.getSubtype==="function"?Z.getSubtype():null,hasPublished:Z.hasPublished(),hasDraft:Z.hasDraftContent()}))};return{content:[{type:"text",text:JSON.stringify(W,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},b66={name:"list_folder_contents",title:"List Folder Contents",description:"List contents of a folder (subfolders and documents)",schema:iS1,execute:dS1};V6();var nS1=A.object({id:A.string().describe('Folder ID (e.g., "Af2")'),name:A.string().describe("New folder name")}),oS1=async({core:$,projectId:K},{id:q,name:Y})=>{try{let J=await $.renameFolder(K,{id:q,name:Y});return{content:[{type:"text",text:`Renamed folder: ${J.getObjectId()} (new path: ${J.getPath()})`}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},y66={name:"rename_folder",title:"Rename Folder",description:"Rename a folder",schema:nS1,execute:oS1};V6();var aS1=A.object({id:A.string().describe('Folder ID to move (e.g., "Af3")'),newParentId:A.string().describe('Target parent folder ID (e.g., "Af2")')}),rS1=async({core:$,projectId:K},{id:q,newParentId:Y})=>{try{let J=await $.moveFolder(K,{id:q,parentId:Y});return{content:[{type:"text",text:`Moved folder: ${J.getObjectId()} (new path: ${J.getPath()})`}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},u66={name:"move_folder",title:"Move Folder",description:"Move a folder to a new parent folder",schema:aS1,execute:rS1};V6();var sS1=A.object({id:A.string().describe('Folder ID (e.g., "Af2")')}),tS1=async({core:$,projectId:K},{id:q})=>{try{return await $.deleteFolder(K,{id:q}),{content:[{type:"text",text:`Deleted folder: ${q}`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},m66={name:"delete_folder",title:"Delete Folder",description:"Soft delete a folder and all its contents (can be restored later)",schema:sS1,execute:tS1};var B66=[I66,x66,g66,b66,y66,u66,m66];V6();var eS1=A.object({ownerEntityId:A.string().optional().describe('Owner entity ID (e.g., "Ad1" for template). Omit for global/system fields.'),ownerEntityTypeCode:A.string().optional().describe('Entity type code for type-scoped definition (e.g., "d"). Mutually exclusive with ownerEntityId.'),ownerEntityTypeSubtype:A.string().optional().describe('Entity subtype for type-scoped definition (e.g., "task"). Used with ownerEntityTypeCode.'),name:A.string().describe("Field name (alphanumeric + underscores)"),primitiveType:A.enum(["string","object_ref"]).describe("Primitive type"),label:A.string().optional().describe("UI label"),description:A.string().optional().describe("Help text"),required:A.boolean().optional().describe("Whether field is required"),multiplicity:A.enum(["single","multi"]).optional().describe("Single or multi-valued"),isSystem:A.boolean().optional().describe("System/global field"),allowedValues:A.array(A.string()).optional().describe("Constrain values to this list (optional)"),store:A.string().optional().describe('Store code (default: "A" for project store)')}),$L1=async({core:$,projectId:K},{ownerEntityId:q,ownerEntityTypeCode:Y,ownerEntityTypeSubtype:J,name:z,primitiveType:W,label:Z,description:H,required:O,multiplicity:X,isSystem:P,allowedValues:w,store:T})=>{try{let G=await $.createFieldDefinition(K,{store:T||"A",ownerEntityId:q,ownerEntityTypeCode:Y,ownerEntityTypeSubtype:J,name:z,label:Z,description:H,primitiveType:W,required:O,multiplicity:X,isSystem:P,allowedValues:w});return{content:[{type:"text",text:`Field definition created: ${G.getName()} (id: ${G.getObjectId()}, type: ${G.getPrimitiveType()})`}]}}catch(G){return{content:[{type:"text",text:`Error: ${G.message}`}],isError:!0}}},U66={name:"create_field_definition",title:"Create Field Definition",description:"Create a field definition on an owner entity (template/workflow)",schema:eS1,execute:$L1};V6();var KL1=A.object({ownerEntityId:A.string().optional().describe("Owner entity ID. Omit for global/system fields."),includeSystem:A.boolean().optional().describe("Include system fields"),store:A.string().optional().describe('Store code (default: "A" for project store)')}),qL1=async({core:$,projectId:K},{ownerEntityId:q,includeSystem:Y,store:J})=>{try{let z=await $.getFieldDefinitions(K,{store:J||"A",ownerEntityId:q||null,includeSystem:Y});if(z.length===0)return{content:[{type:"text",text:"No field definitions found"}]};return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},p66={name:"get_field_definitions",title:"Get Field Definitions",description:"Get all field definitions for an owner entity",schema:KL1,execute:qL1};V6();var YL1=A.object({code:A.string().describe('Entity type code (e.g., "d" for document)'),subtype:A.string().describe('Entity subtype (e.g., "task")'),store:A.string().optional().describe('Store code (default: "A")')}),JL1=async({core:$,projectId:K},{code:q,subtype:Y,store:J})=>{try{let z=await $.getTypeFields(K,{store:J||"A",code:q,subtype:Y});if(z.length===0)return{content:[{type:"text",text:"No field definitions found for this entity type"}]};return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},F66={name:"get_type_fields",title:"Get Type Fields",description:"Get field definitions for an entity type/subtype combination",schema:YL1,execute:JL1};V6();var zL1=A.object({id:A.string().describe('Field definition ID (e.g., "An1")')}),WL1=async({core:$,projectId:K},{id:q})=>{try{return{content:[{type:"text",text:`Field definition deleted: ${(await $.deleteFieldDefinition(K,{id:q})).name}`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},c66={name:"delete_field_definition",title:"Delete Field Definition",description:"Delete a field definition (cascades to values)",schema:zL1,execute:WL1};V6();var ZL1=A.object({id:A.string().describe('Entity ID (e.g., "Ad1")')}),HL1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.getFields(K,{entityId:q});if(!Y||Object.keys(Y).length===0)return{content:[{type:"text",text:"No fields set"}]};return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},Q66={name:"get_fields",title:"Get Fields",description:"Get all field values for an entity as an object",schema:ZL1,execute:HL1};V6();var OL1=A.object({id:A.string().describe('Entity ID (e.g., "Ad1")'),fieldDefinitionId:A.string().optional().describe('Field definition ID (e.g., "An1")'),fieldName:A.string().optional().describe("Field name for auto-resolution"),value:A.string().optional().describe("Single value"),values:A.array(A.string()).optional().describe("Array of values (for multi-valued)")}),XL1=async({core:$,projectId:K},{id:q,fieldDefinitionId:Y,fieldName:J,value:z,values:W})=>{try{if(z===void 0&&W===void 0)return{content:[{type:"text",text:"Error: Either value or values is required"}],isError:!0};let Z=await $.setField(K,{entityId:q,fieldDefinitionId:Y,fieldName:J,value:z,values:W}),H=J||Y,O=W!==void 0?`[${W.join(", ")}]`:z;return{content:[{type:"text",text:`Field set: ${H} = ${O}`}]}}catch(Z){return{content:[{type:"text",text:`Error: ${Z.message}`}],isError:!0}}},l66={name:"set_field",title:"Set Field",description:"Set a field value (single-valued or multi-valued)",schema:OL1,execute:XL1};V6();var PL1=A.object({id:A.string().describe('Entity ID (e.g., "Ad1")'),fieldDefinitionId:A.string().optional().describe('Field definition ID (e.g., "An1")'),fieldName:A.string().optional().describe("Field name for auto-resolution")}),wL1=async({core:$,projectId:K},{id:q,fieldDefinitionId:Y,fieldName:J})=>{try{return{content:[{type:"text",text:`Field deleted: ${(await $.deleteField(K,{entityId:q,fieldDefinitionId:Y,fieldName:J})).name}`}]}}catch(z){return{content:[{type:"text",text:`Error: ${z.message}`}],isError:!0}}},i66={name:"delete_field",title:"Delete Field",description:"Remove a field from an entity",schema:PL1,execute:wL1};var d66=[U66,p66,F66,c66,Q66,l66,i66];V6();var TL1=A.object({}),GL1=async({core:$,projectId:K})=>{try{let q=await $.listExports(K);if(q.length===0)return{content:[{type:"text",text:"No exports found."}]};let Y=["Available exports:",""];for(let J of q)Y.push(`• ${J.filename} (${J.size} bytes)`);return{content:[{type:"text",text:Y.join(`
683
683
  `)}]}}catch(q){return{content:[{type:"text",text:`Error: ${q.message}`}],isError:!0}}},n66={name:"list_exports",title:"List Exports",description:"List available export zip files in .caw-exports/",schema:TL1,execute:GL1};V6();var jL1=A.object({store:A.string().optional().describe('Store code (default: "A")')}),vL1=async({core:$,projectId:K},{store:q})=>{try{let Y=await $.exportPreview(K,{store:q}),J=Y.toExport.folders.length+Y.toExport.documents.length+Y.toExport.templates.length,z=Y.draftOnly.documents.length+Y.draftOnly.templates.length,W=`Export Preview:
684
684
 
685
685
  `;if(W+=`Will export (${J} items):