@kelceyp/caw-server 1.0.42 → 1.0.43

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 +6 -6
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -410,7 +410,7 @@ globstar while`,$,X,K,P,w),this.matchOne($.slice(X),K.slice(P),q))return this.de
410
410
  %s`,E,E,T,Y);let h=T.type==="*"?VB:T.type==="?"?_B:"\\"+T.type;J=!0,Y=Y.slice(0,T.reStart)+h+"\\("+E}if(k(),z)Y+="\\\\";let R=Yb6[Y.charAt(0)];for(let E=Z.length-1;E>-1;E--){let h=Z[E],g=Y.slice(0,h.reStart),S=Y.slice(h.reStart,h.reEnd-8),N=Y.slice(h.reEnd),L=Y.slice(h.reEnd-8,h.reEnd)+N,u=g.split(")").length,p=g.split("(").length-u,s=N;for(let v8=0;v8<p;v8++)s=s.replace(/\)[+*?]?/,"");N=s;let A8=N===""&&K!==AB?"(?:$|\\/)":"";Y=g+S+N+A8+L}if(Y!==""&&J)Y="(?=.)"+Y;if(R)Y=M()+Y;if(K===AB)return[Y,J];if(q.nocase&&!J)J=$.toUpperCase()!==$.toLowerCase();if(!J)return zb6($);let C=q.nocase?"i":"";try{return Object.assign(new RegExp("^"+Y+"$",C),{_glob:$,_src:Y})}catch(E){return new RegExp("$.")}}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let $=this.set;if(!$.length)return this.regexp=!1,this.regexp;let K=this.options,q=K.noglobstar?VB:K.dot?Kb6:qb6,Y=K.nocase?"i":"",J=$.map((z)=>{return z=z.map((W)=>typeof W==="string"?Zb6(W):W===m5?m5:W._src).reduce((W,Z)=>{if(!(W[W.length-1]===m5&&Z===m5))W.push(Z);return W},[]),z.forEach((W,Z)=>{if(W!==m5||z[Z-1]===m5)return;if(Z===0)if(z.length>1)z[Z+1]="(?:\\/|"+q+"\\/)?"+z[Z+1];else z[Z]=q;else if(Z===z.length-1)z[Z-1]+="(?:\\/|"+q+")?";else z[Z-1]+="(?:\\/|\\/"+q+"\\/)"+z[Z+1],z[Z+1]=m5}),z.filter((W)=>W!==m5).join("/")}).join("|");if(J="^(?:"+J+")$",this.negate)J="^(?!"+J+").*$";try{this.regexp=new RegExp(J,Y)}catch(z){this.regexp=!1}return this.regexp}match($,K=this.partial){if(this.debug("match",$,this.pattern),this.comment)return!1;if(this.empty)return $==="";if($==="/"&&K)return!0;let q=this.options;if(MB.sep!=="/")$=$.split(MB.sep).join("/");$=$.split(NA8),this.debug(this.pattern,"split",$);let Y=this.set;this.debug(this.pattern,"set",Y);let J;for(let z=$.length-1;z>=0;z--)if(J=$[z],J)break;for(let z=0;z<Y.length;z++){let W=Y[z],Z=$;if(q.matchBase&&W.length===1)Z=[J];if(this.matchOne(Z,W,K)){if(q.flipNegate)return!0;return!this.negate}}if(q.flipNegate)return!1;return this.negate}static defaults($){return V9.defaults($).Minimatch}}V9.Minimatch=C0});var IA8=V((v94,LA8)=>{LA8.exports=SA8;var NB=Y8("fs"),{EventEmitter:Ob6}=Y8("events"),{Minimatch:fB}=DA8(),{resolve:Xb6}=Y8("path");function Pb6($,K){return new Promise((q,Y)=>{NB.readdir($,{withFileTypes:!0},(J,z)=>{if(J)switch(J.code){case"ENOTDIR":if(K)Y(J);else q([]);break;case"ENOTSUP":case"ENOENT":case"ENAMETOOLONG":case"UNKNOWN":q([]);break;case"ELOOP":default:Y(J);break}else q(z)})})}function hA8($,K){return new Promise((q,Y)=>{(K?NB.stat:NB.lstat)($,(z,W)=>{if(z)switch(z.code){case"ENOENT":if(K)q(hA8($,!1));else q(null);break;default:q(null);break}else q(W)})})}async function*EA8($,K,q,Y,J,z){let W=await Pb6(K+$,z);for(let Z of W){let H=Z.name;if(H===void 0)H=Z,Y=!0;let O=$+"/"+H,X=O.slice(1),P=K+"/"+X,w=null;if(Y||q)w=await hA8(P,q);if(!w&&Z.name!==void 0)w=Z;if(w===null)w={isDirectory:()=>!1};if(w.isDirectory()){if(!J(X))yield{relative:X,absolute:P,stats:w},yield*EA8(O,K,q,Y,J,!1)}else yield{relative:X,absolute:P,stats:w}}}async function*wb6($,K,q,Y){yield*EA8("",$,K,q,Y,!0)}function Tb6($){return{pattern:$.pattern,dot:!!$.dot,noglobstar:!!$.noglobstar,matchBase:!!$.matchBase,nocase:!!$.nocase,ignore:$.ignore,skip:$.skip,follow:!!$.follow,stat:!!$.stat,nodir:!!$.nodir,mark:!!$.mark,silent:!!$.silent,absolute:!!$.absolute}}class RB extends Ob6{constructor($,K,q){super();if(typeof K==="function")q=K,K=null;if(this.options=Tb6(K||{}),this.matchers=[],this.options.pattern){let Y=Array.isArray(this.options.pattern)?this.options.pattern:[this.options.pattern];this.matchers=Y.map((J)=>new fB(J,{dot:this.options.dot,noglobstar:this.options.noglobstar,matchBase:this.options.matchBase,nocase:this.options.nocase}))}if(this.ignoreMatchers=[],this.options.ignore){let Y=Array.isArray(this.options.ignore)?this.options.ignore:[this.options.ignore];this.ignoreMatchers=Y.map((J)=>new fB(J,{dot:!0}))}if(this.skipMatchers=[],this.options.skip){let Y=Array.isArray(this.options.skip)?this.options.skip:[this.options.skip];this.skipMatchers=Y.map((J)=>new fB(J,{dot:!0}))}if(this.iterator=wb6(Xb6($||"."),this.options.follow,this.options.stat,this._shouldSkipDirectory.bind(this)),this.paused=!1,this.inactive=!1,this.aborted=!1,q)this._matches=[],this.on("match",(Y)=>this._matches.push(this.options.absolute?Y.absolute:Y.relative)),this.on("error",(Y)=>q(Y)),this.on("end",()=>q(null,this._matches));setTimeout(()=>this._next(),0)}_shouldSkipDirectory($){return this.skipMatchers.some((K)=>K.match($))}_fileMatches($,K){let q=$+(K?"/":"");return(this.matchers.length===0||this.matchers.some((Y)=>Y.match(q)))&&!this.ignoreMatchers.some((Y)=>Y.match(q))&&(!this.options.nodir||!K)}_next(){if(!this.paused&&!this.aborted)this.iterator.next().then(($)=>{if(!$.done){let K=$.value.stats.isDirectory();if(this._fileMatches($.value.relative,K)){let q=$.value.relative,Y=$.value.absolute;if(this.options.mark&&K)q+="/",Y+="/";if(this.options.stat)this.emit("match",{relative:q,absolute:Y,stat:$.value.stats});else this.emit("match",{relative:q,absolute:Y})}this._next(this.iterator)}else this.emit("end")}).catch(($)=>{if(this.abort(),this.emit("error",$),!$.code&&!this.options.silent)console.error($)});else this.inactive=!0}abort(){this.aborted=!0}pause(){this.paused=!0}resume(){if(this.paused=!1,this.inactive)this.inactive=!1,this._next()}}function SA8($,K,q){return new RB($,K,q)}SA8.ReaddirGlob=RB});var gA8=V((Of,xA8)=>{(function($,K){typeof Of==="object"&&typeof xA8<"u"?K(Of):typeof define==="function"&&define.amd?define(["exports"],K):($=typeof globalThis<"u"?globalThis:$||self,K($.async={}))})(Of,function($){function K(b,...B){return(...U)=>b(...B,...U)}function q(b){return function(...B){var U=B.pop();return b.call(this,B,U)}}var Y=typeof queueMicrotask==="function"&&queueMicrotask,J=typeof setImmediate==="function"&&setImmediate,z=typeof process==="object"&&typeof process.nextTick==="function";function W(b){setTimeout(b,0)}function Z(b){return(B,...U)=>b(()=>B(...U))}var H;if(Y)H=queueMicrotask;else if(J)H=setImmediate;else if(z)H=process.nextTick;else H=W;var O=Z(H);function X(b){if(T(b))return function(...B){let U=B.pop(),O8=b.apply(this,B);return P(O8,U)};return q(function(B,U){var O8;try{O8=b.apply(this,B)}catch(k8){return U(k8)}if(O8&&typeof O8.then==="function")return P(O8,U);else U(null,O8)})}function P(b,B){return b.then((U)=>{w(B,null,U)},(U)=>{w(B,U&&(U instanceof Error||U.message)?U:Error(U))})}function w(b,B,U){try{b(B,U)}catch(O8){O((k8)=>{throw k8},O8)}}function T(b){return b[Symbol.toStringTag]==="AsyncFunction"}function G(b){return b[Symbol.toStringTag]==="AsyncGenerator"}function j(b){return typeof b[Symbol.asyncIterator]==="function"}function v(b){if(typeof b!=="function")throw Error("expected a function");return T(b)?X(b):b}function M(b,B){if(!B)B=b.length;if(!B)throw Error("arity is undefined");function U(...O8){if(typeof O8[B-1]==="function")return b.apply(this,O8);return new Promise((k8,D8)=>{O8[B-1]=(x8,...U8)=>{if(x8)return D8(x8);k8(U8.length>1?U8:U8[0])},b.apply(this,O8)})}return U}function f(b){return function(U,...O8){return M(function(D8){var x8=this;return b(U,(U8,d8)=>{v(U8).apply(x8,O8.concat(d8))},D8)})}}function k(b,B,U,O8){B=B||[];var k8=[],D8=0,x8=v(U);return b(B,(U8,d8,I6)=>{var E1=D8++;x8(U8,(Q1,x1)=>{k8[E1]=x1,I6(Q1)})},(U8)=>{O8(U8,k8)})}function R(b){return b&&typeof b.length==="number"&&b.length>=0&&b.length%1===0}let C={};function E(b){function B(...U){if(b===null)return;var O8=b;b=null,O8.apply(this,U)}return Object.assign(B,b),B}function h(b){return b[Symbol.iterator]&&b[Symbol.iterator]()}function g(b){var B=-1,U=b.length;return function(){return++B<U?{value:b[B],key:B}:null}}function S(b){var B=-1;return function(){var O8=b.next();if(O8.done)return null;return B++,{value:O8.value,key:B}}}function N(b){var B=b?Object.keys(b):[],U=-1,O8=B.length;return function k8(){var D8=B[++U];if(D8==="__proto__")return k8();return U<O8?{value:b[D8],key:D8}:null}}function L(b){if(R(b))return g(b);var B=h(b);return B?S(B):N(b)}function u(b){return function(...B){if(b===null)throw Error("Callback was already called.");var U=b;b=null,U.apply(this,B)}}function p(b,B,U,O8){let k8=!1,D8=!1,x8=!1,U8=0,d8=0;function I6(){if(U8>=B||x8||k8)return;x8=!0,b.next().then(({value:x1,done:N9})=>{if(D8||k8)return;if(x8=!1,N9){if(k8=!0,U8<=0)O8(null);return}U8++,U(x1,d8,E1),d8++,I6()}).catch(Q1)}function E1(x1,N9){if(U8-=1,D8)return;if(x1)return Q1(x1);if(x1===!1){k8=!0,D8=!0;return}if(N9===C||k8&&U8<=0)return k8=!0,O8(null);I6()}function Q1(x1){if(D8)return;x8=!1,k8=!0,O8(x1)}I6()}var s=(b)=>{return(B,U,O8)=>{if(O8=E(O8),b<=0)throw RangeError("concurrency limit cannot be less than 1");if(!B)return O8(null);if(G(B))return p(B,b,U,O8);if(j(B))return p(B[Symbol.asyncIterator](),b,U,O8);var k8=L(B),D8=!1,x8=!1,U8=0,d8=!1;function I6(Q1,x1){if(x8)return;if(U8-=1,Q1)D8=!0,O8(Q1);else if(Q1===!1)D8=!0,x8=!0;else if(x1===C||D8&&U8<=0)return D8=!0,O8(null);else if(!d8)E1()}function E1(){d8=!0;while(U8<b&&!D8){var Q1=k8();if(Q1===null){if(D8=!0,U8<=0)O8(null);return}U8+=1,U(Q1.value,Q1.key,u(I6))}d8=!1}E1()}};function A8(b,B,U,O8){return s(B)(b,v(U),O8)}var v8=M(A8,4);function c8(b,B,U){U=E(U);var O8=0,k8=0,{length:D8}=b,x8=!1;if(D8===0)U(null);function U8(d8,I6){if(d8===!1)x8=!0;if(x8===!0)return;if(d8)U(d8);else if(++k8===D8||I6===C)U(null)}for(;O8<D8;O8++)B(b[O8],O8,u(U8))}function z6(b,B,U){return v8(b,1/0,B,U)}function u8(b,B,U){var O8=R(b)?c8:z6;return O8(b,v(B),U)}var I8=M(u8,3);function B8(b,B,U){return k(I8,b,B,U)}var q6=M(B8,3),j6=f(q6);function O6(b,B,U){return v8(b,1,B,U)}var w6=M(O6,3);function f6(b,B,U){return k(w6,b,B,U)}var E6=M(f6,3),P8=f(E6);let X8=Symbol("promiseCallback");function N8(){let b,B;function U(O8,...k8){if(O8)return B(O8);b(k8.length>1?k8:k8[0])}return U[X8]=new Promise((O8,k8)=>{b=O8,B=k8}),U}function g8(b,B,U){if(typeof B!=="number")U=B,B=null;U=E(U||N8());var O8=Object.keys(b).length;if(!O8)return U(null);if(!B)B=O8;var k8={},D8=0,x8=!1,U8=!1,d8=Object.create(null),I6=[],E1=[],Q1={};Object.keys(b).forEach((S6)=>{var m6=b[S6];if(!Array.isArray(m6)){x1(S6,[m6]),E1.push(S6);return}var g1=m6.slice(0,m6.length-1),Q4=g1.length;if(Q4===0){x1(S6,m6),E1.push(S6);return}Q1[S6]=Q4,g1.forEach(($7)=>{if(!b[$7])throw Error("async.auto task `"+S6+"` has a non-existent dependency `"+$7+"` in "+g1.join(", "));mZ($7,()=>{if(Q4--,Q4===0)x1(S6,m6)})})}),l1(),N9();function x1(S6,m6){I6.push(()=>fw(S6,m6))}function N9(){if(x8)return;if(I6.length===0&&D8===0)return U(null,k8);while(I6.length&&D8<B){var S6=I6.shift();S6()}}function mZ(S6,m6){var g1=d8[S6];if(!g1)g1=d8[S6]=[];g1.push(m6)}function y2(S6){var m6=d8[S6]||[];m6.forEach((g1)=>g1()),N9()}function fw(S6,m6){if(U8)return;var g1=u(($7,...R9)=>{if(D8--,$7===!1){x8=!0;return}if(R9.length<2)[R9]=R9;if($7){var BZ={};if(Object.keys(k8).forEach((u2)=>{BZ[u2]=k8[u2]}),BZ[S6]=R9,U8=!0,d8=Object.create(null),x8)return;U($7,BZ)}else k8[S6]=R9,y2(S6)});D8++;var Q4=v(m6[m6.length-1]);if(m6.length>1)Q4(k8,g1);else Q4(g1)}function l1(){var S6,m6=0;while(E1.length)S6=E1.pop(),m6++,u6(S6).forEach((g1)=>{if(--Q1[g1]===0)E1.push(g1)});if(m6!==O8)throw Error("async.auto cannot execute tasks due to a recursive dependency")}function u6(S6){var m6=[];return Object.keys(b).forEach((g1)=>{let Q4=b[g1];if(Array.isArray(Q4)&&Q4.indexOf(S6)>=0)m6.push(g1)}),m6}return U[X8]}var F8=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,l8=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,Y6=/,/,E8=/(=.+)?(\s*)$/;function p8(b){let B="",U=0,O8=b.indexOf("*/");while(U<b.length)if(b[U]==="/"&&b[U+1]==="/"){let k8=b.indexOf(`
411
411
  `,U);U=k8===-1?b.length:k8}else if(O8!==-1&&b[U]==="/"&&b[U+1]==="*"){let k8=b.indexOf("*/",U);if(k8!==-1)U=k8+2,O8=b.indexOf("*/",U);else B+=b[U],U++}else B+=b[U],U++;return B}function n8(b){let B=p8(b.toString()),U=B.match(F8);if(!U)U=B.match(l8);if(!U)throw Error(`could not parse args in autoInject
412
412
  Source:
413
- `+B);let[,O8]=U;return O8.replace(/\s/g,"").split(Y6).map((k8)=>k8.replace(E8,"").trim())}function e8(b,B){var U={};return Object.keys(b).forEach((O8)=>{var k8=b[O8],D8,x8=T(k8),U8=!x8&&k8.length===1||x8&&k8.length===0;if(Array.isArray(k8))D8=[...k8],k8=D8.pop(),U[O8]=D8.concat(D8.length>0?d8:k8);else if(U8)U[O8]=k8;else{if(D8=n8(k8),k8.length===0&&!x8&&D8.length===0)throw Error("autoInject task functions require explicit parameters.");if(!x8)D8.pop();U[O8]=D8.concat(d8)}function d8(I6,E1){var Q1=D8.map((x1)=>I6[x1]);Q1.push(E1),v(k8)(...Q1)}}),g8(U,B)}class W6{constructor(){this.head=this.tail=null,this.length=0}removeLink(b){if(b.prev)b.prev.next=b.next;else this.head=b.next;if(b.next)b.next.prev=b.prev;else this.tail=b.prev;return b.prev=b.next=null,this.length-=1,b}empty(){while(this.head)this.shift();return this}insertAfter(b,B){if(B.prev=b,B.next=b.next,b.next)b.next.prev=B;else this.tail=B;b.next=B,this.length+=1}insertBefore(b,B){if(B.prev=b.prev,B.next=b,b.prev)b.prev.next=B;else this.head=B;b.prev=B,this.length+=1}unshift(b){if(this.head)this.insertBefore(this.head,b);else N6(this,b)}push(b){if(this.tail)this.insertAfter(this.tail,b);else N6(this,b)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){var b=this.head;while(b)yield b.data,b=b.next}remove(b){var B=this.head;while(B){var{next:U}=B;if(b(B))this.removeLink(B);B=U}return this}}function N6(b,B){b.length=1,b.head=b.tail=B}function g6(b,B,U){if(B==null)B=1;else if(B===0)throw RangeError("Concurrency must not be zero");var O8=v(b),k8=0,D8=[];let x8={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function U8(u6,S6){x8[u6].push(S6)}function d8(u6,S6){let m6=(...g1)=>{I6(u6,m6),S6(...g1)};x8[u6].push(m6)}function I6(u6,S6){if(!u6)return Object.keys(x8).forEach((m6)=>x8[m6]=[]);if(!S6)return x8[u6]=[];x8[u6]=x8[u6].filter((m6)=>m6!==S6)}function E1(u6,...S6){x8[u6].forEach((m6)=>m6(...S6))}var Q1=!1;function x1(u6,S6,m6,g1){if(g1!=null&&typeof g1!=="function")throw Error("task callback must be a function");l1.started=!0;var Q4,$7;function R9(u2,...Nw){if(u2)return m6?$7(u2):Q4();if(Nw.length<=1)return Q4(Nw[0]);Q4(Nw)}var BZ=l1._createTaskItem(u6,m6?R9:g1||R9);if(S6)l1._tasks.unshift(BZ);else l1._tasks.push(BZ);if(!Q1)Q1=!0,O(()=>{Q1=!1,l1.process()});if(m6||!g1)return new Promise((u2,Nw)=>{Q4=u2,$7=Nw})}function N9(u6){return function(S6,...m6){k8-=1;for(var g1=0,Q4=u6.length;g1<Q4;g1++){var $7=u6[g1],R9=D8.indexOf($7);if(R9===0)D8.shift();else if(R9>0)D8.splice(R9,1);if($7.callback(S6,...m6),S6!=null)E1("error",S6,$7.data)}if(k8<=l1.concurrency-l1.buffer)E1("unsaturated");if(l1.idle())E1("drain");l1.process()}}function mZ(u6){if(u6.length===0&&l1.idle())return O(()=>E1("drain")),!0;return!1}let y2=(u6)=>(S6)=>{if(!S6)return new Promise((m6,g1)=>{d8(u6,(Q4,$7)=>{if(Q4)return g1(Q4);m6($7)})});I6(u6),U8(u6,S6)};var fw=!1,l1={_tasks:new W6,_createTaskItem(u6,S6){return{data:u6,callback:S6}},*[Symbol.iterator](){yield*l1._tasks[Symbol.iterator]()},concurrency:B,payload:U,buffer:B/4,started:!1,paused:!1,push(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!1,!1,S6))}return x1(u6,!1,!1,S6)},pushAsync(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!1,!0,S6))}return x1(u6,!1,!0,S6)},kill(){I6(),l1._tasks.empty()},unshift(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!0,!1,S6))}return x1(u6,!0,!1,S6)},unshiftAsync(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!0,!0,S6))}return x1(u6,!0,!0,S6)},remove(u6){l1._tasks.remove(u6)},process(){if(fw)return;fw=!0;while(!l1.paused&&k8<l1.concurrency&&l1._tasks.length){var u6=[],S6=[],m6=l1._tasks.length;if(l1.payload)m6=Math.min(m6,l1.payload);for(var g1=0;g1<m6;g1++){var Q4=l1._tasks.shift();u6.push(Q4),D8.push(Q4),S6.push(Q4.data)}if(k8+=1,l1._tasks.length===0)E1("empty");if(k8===l1.concurrency)E1("saturated");var $7=u(N9(u6));O8(S6,$7)}fw=!1},length(){return l1._tasks.length},running(){return k8},workersList(){return D8},idle(){return l1._tasks.length+k8===0},pause(){l1.paused=!0},resume(){if(l1.paused===!1)return;l1.paused=!1,O(l1.process)}};return Object.defineProperties(l1,{saturated:{writable:!1,value:y2("saturated")},unsaturated:{writable:!1,value:y2("unsaturated")},empty:{writable:!1,value:y2("empty")},drain:{writable:!1,value:y2("drain")},error:{writable:!1,value:y2("error")}}),l1}function $1(b,B){return g6(b,1,B)}function r1(b,B,U){return g6(b,B,U)}function m8(b,B,U,O8){O8=E(O8);var k8=v(U);return w6(b,(D8,x8,U8)=>{k8(B,D8,(d8,I6)=>{B=I6,U8(d8)})},(D8)=>O8(D8,B))}var i=M(m8,4);function l(...b){var B=b.map(v);return function(...U){var O8=this,k8=U[U.length-1];if(typeof k8=="function")U.pop();else k8=N8();return i(B,U,(D8,x8,U8)=>{x8.apply(O8,D8.concat((d8,...I6)=>{U8(d8,I6)}))},(D8,x8)=>k8(D8,...x8)),k8[X8]}}function c(...b){return l(...b.reverse())}function W8(b,B,U,O8){return k(s(B),b,U,O8)}var F=M(W8,4);function H8(b,B,U,O8){var k8=v(U);return F(b,B,(D8,x8)=>{k8(D8,(U8,...d8)=>{if(U8)return x8(U8);return x8(U8,d8)})},(D8,x8)=>{var U8=[];for(var d8=0;d8<x8.length;d8++)if(x8[d8])U8=U8.concat(...x8[d8]);return O8(D8,U8)})}var o=M(H8,4);function G8(b,B,U){return o(b,1/0,B,U)}var Z8=M(G8,3);function f8(b,B,U){return o(b,1,B,U)}var S8=M(f8,3);function Q8(...b){return function(...B){var U=B.pop();return U(null,...b)}}function C6(b,B){return(U,O8,k8,D8)=>{var x8=!1,U8;let d8=v(k8);U(O8,(I6,E1,Q1)=>{d8(I6,(x1,N9)=>{if(x1||x1===!1)return Q1(x1);if(b(N9)&&!U8)return x8=!0,U8=B(!0,I6),Q1(null,C);Q1()})},(I6)=>{if(I6)return D8(I6);D8(null,x8?U8:B(!1))})}}function $$(b,B,U){return C6((O8)=>O8,(O8,k8)=>k8)(I8,b,B,U)}var T7=M($$,3);function g7(b,B,U,O8){return C6((k8)=>k8,(k8,D8)=>D8)(s(B),b,U,O8)}var b7=M(g7,4);function L3(b,B,U){return C6((O8)=>O8,(O8,k8)=>k8)(s(1),b,B,U)}var e$=M(L3,3);function GK(b){return(B,...U)=>v(B)(...U,(O8,...k8)=>{if(typeof console==="object"){if(O8){if(console.error)console.error(O8)}else if(console[b])k8.forEach((D8)=>console[b](D8))}})}var Z4=GK("dir");function R8(b,B,U){U=u(U);var O8=v(b),k8=v(B),D8;function x8(d8,...I6){if(d8)return U(d8);if(d8===!1)return;D8=I6,k8(...I6,U8)}function U8(d8,I6){if(d8)return U(d8);if(d8===!1)return;if(!I6)return U(null,...D8);O8(x8)}return U8(null,!0)}var C8=M(R8,3);function z8(b,B,U){let O8=v(B);return C8(b,(...k8)=>{let D8=k8.pop();O8(...k8,(x8,U8)=>D8(x8,!U8))},U)}function b8(b){return(B,U,O8)=>b(B,O8)}function L8(b,B,U){return I8(b,b8(v(B)),U)}var y8=M(L8,3);function G6(b,B,U,O8){return s(B)(b,b8(v(U)),O8)}var x=M(G6,4);function T8(b,B,U){return x(b,1,B,U)}var m=M(T8,3);function $8(b){if(T(b))return b;return function(...B){var U=B.pop(),O8=!0;B.push((...k8)=>{if(O8)O(()=>U(...k8));else U(...k8)}),b.apply(this,B),O8=!1}}function d(b,B,U){return C6((O8)=>!O8,(O8)=>!O8)(I8,b,B,U)}var r=M(d,3);function t(b,B,U,O8){return C6((k8)=>!k8,(k8)=>!k8)(s(B),b,U,O8)}var e=M(t,4);function w8(b,B,U){return C6((O8)=>!O8,(O8)=>!O8)(w6,b,B,U)}var j8=M(w8,3);function M8(b,B,U,O8){var k8=Array(B.length);b(B,(D8,x8,U8)=>{U(D8,(d8,I6)=>{k8[x8]=!!I6,U8(d8)})},(D8)=>{if(D8)return O8(D8);var x8=[];for(var U8=0;U8<B.length;U8++)if(k8[U8])x8.push(B[U8]);O8(null,x8)})}function h8(b,B,U,O8){var k8=[];b(B,(D8,x8,U8)=>{U(D8,(d8,I6)=>{if(d8)return U8(d8);if(I6)k8.push({index:x8,value:D8});U8(d8)})},(D8)=>{if(D8)return O8(D8);O8(null,k8.sort((x8,U8)=>x8.index-U8.index).map((x8)=>x8.value))})}function t8(b,B,U,O8){var k8=R(B)?M8:h8;return k8(b,B,v(U),O8)}function o8(b,B,U){return t8(I8,b,B,U)}var _6=M(o8,3);function r6(b,B,U,O8){return t8(s(B),b,U,O8)}var a=M(r6,4);function n(b,B,U){return t8(w6,b,B,U)}var Q=M(n,3);function q8(b,B){var U=u(B),O8=v($8(b));function k8(D8){if(D8)return U(D8);if(D8===!1)return;O8(k8)}return k8()}var _8=M(q8,2);function i8(b,B,U,O8){var k8=v(U);return F(b,B,(D8,x8)=>{k8(D8,(U8,d8)=>{if(U8)return x8(U8);return x8(U8,{key:d8,val:D8})})},(D8,x8)=>{var U8={},{hasOwnProperty:d8}=Object.prototype;for(var I6=0;I6<x8.length;I6++)if(x8[I6]){var{key:E1}=x8[I6],{val:Q1}=x8[I6];if(d8.call(U8,E1))U8[E1].push(Q1);else U8[E1]=[Q1]}return O8(D8,U8)})}var $6=M(i8,4);function X6(b,B,U){return $6(b,1/0,B,U)}function k6(b,B,U){return $6(b,1,B,U)}var F6=GK("log");function y6(b,B,U,O8){O8=E(O8);var k8={},D8=v(U);return s(B)(b,(x8,U8,d8)=>{D8(x8,U8,(I6,E1)=>{if(I6)return d8(I6);k8[U8]=E1,d8(I6)})},(x8)=>O8(x8,k8))}var w1=M(y6,4);function h4(b,B,U){return w1(b,1/0,B,U)}function T1(b,B,U){return w1(b,1,B,U)}function y7(b,B=(U)=>U){var U=Object.create(null),O8=Object.create(null),k8=v(b),D8=q((x8,U8)=>{var d8=B(...x8);if(d8 in U)O(()=>U8(null,...U[d8]));else if(d8 in O8)O8[d8].push(U8);else O8[d8]=[U8],k8(...x8,(I6,...E1)=>{if(!I6)U[d8]=E1;var Q1=O8[d8];delete O8[d8];for(var x1=0,N9=Q1.length;x1<N9;x1++)Q1[x1](I6,...E1)})});return D8.memo=U,D8.unmemoized=b,D8}var k$;if(z)k$=process.nextTick;else if(J)k$=setImmediate;else k$=W;var Lq=Z(k$),uZ=M((b,B,U)=>{var O8=R(B)?[]:{};b(B,(k8,D8,x8)=>{v(k8)((U8,...d8)=>{if(d8.length<2)[d8]=d8;O8[D8]=d8,x8(U8)})},(k8)=>U(k8,O8))},3);function jK(b,B){return uZ(I8,b,B)}function QY(b,B,U){return uZ(s(B),b,U)}function $9(b,B){var U=v(b);return g6((O8,k8)=>{U(O8[0],k8)},B,1)}class Hr{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(b){let B;while(b>0&&ZS(this.heap[b],this.heap[B=Or(b)])){let U=this.heap[b];this.heap[b]=this.heap[B],this.heap[B]=U,b=B}}percDown(b){let B;while((B=z46(b))<this.heap.length){if(B+1<this.heap.length&&ZS(this.heap[B+1],this.heap[B]))B=B+1;if(ZS(this.heap[b],this.heap[B]))break;let U=this.heap[b];this.heap[b]=this.heap[B],this.heap[B]=U,b=B}}push(b){b.pushCount=++this.pushCount,this.heap.push(b),this.percUp(this.heap.length-1)}unshift(b){return this.heap.push(b)}shift(){let[b]=this.heap;return this.heap[0]=this.heap[this.heap.length-1],this.heap.pop(),this.percDown(0),b}toArray(){return[...this]}*[Symbol.iterator](){for(let b=0;b<this.heap.length;b++)yield this.heap[b].data}remove(b){let B=0;for(let U=0;U<this.heap.length;U++)if(!b(this.heap[U]))this.heap[B]=this.heap[U],B++;this.heap.splice(B);for(let U=Or(this.heap.length-1);U>=0;U--)this.percDown(U);return this}}function z46(b){return(b<<1)+1}function Or(b){return(b+1>>1)-1}function ZS(b,B){if(b.priority!==B.priority)return b.priority<B.priority;else return b.pushCount<B.pushCount}function Xr(b,B){var U=$9(b,B),{push:O8,pushAsync:k8}=U;U._tasks=new Hr,U._createTaskItem=({data:x8,priority:U8},d8)=>{return{data:x8,priority:U8,callback:d8}};function D8(x8,U8){if(!Array.isArray(x8))return{data:x8,priority:U8};return x8.map((d8)=>{return{data:d8,priority:U8}})}return U.push=function(x8,U8=0,d8){return O8(D8(x8,U8),d8)},U.pushAsync=function(x8,U8=0,d8){return k8(D8(x8,U8),d8)},delete U.unshift,delete U.unshiftAsync,U}function W46(b,B){if(B=E(B),!Array.isArray(b))return B(TypeError("First argument to race must be an array of functions"));if(!b.length)return B();for(var U=0,O8=b.length;U<O8;U++)v(b[U])(B)}var Pr=M(W46,2);function DV(b,B,U,O8){var k8=[...b].reverse();return i(k8,B,U,O8)}function hV(b){var B=v(b);return q(function(O8,k8){return O8.push((D8,...x8)=>{let U8={};if(D8)U8.error=D8;if(x8.length>0){var d8=x8;if(x8.length<=1)[d8]=x8;U8.value=d8}k8(null,U8)}),B.apply(this,O8)})}function wr(b){var B;if(Array.isArray(b))B=b.map(hV);else B={},Object.keys(b).forEach((U)=>{B[U]=hV.call(this,b[U])});return B}function HS(b,B,U,O8){let k8=v(U);return t8(b,B,(D8,x8)=>{k8(D8,(U8,d8)=>{x8(U8,!d8)})},O8)}function Z46(b,B,U){return HS(I8,b,B,U)}var Tr=M(Z46,3);function H46(b,B,U,O8){return HS(s(B),b,U,O8)}var Gr=M(H46,4);function O46(b,B,U){return HS(w6,b,B,U)}var jr=M(O46,3);function vr(b){return function(){return b}}let OS=5,Vr=0;function EV(b,B,U){var O8={times:OS,intervalFunc:vr(Vr)};if(arguments.length<3&&typeof b==="function")U=B||N8(),B=b;else X46(O8,b),U=U||N8();if(typeof B!=="function")throw Error("Invalid arguments for async.retry");var k8=v(B),D8=1;function x8(){k8((U8,...d8)=>{if(U8===!1)return;if(U8&&D8++<O8.times&&(typeof O8.errorFilter!="function"||O8.errorFilter(U8)))setTimeout(x8,O8.intervalFunc(D8-1));else U(U8,...d8)})}return x8(),U[X8]}function X46(b,B){if(typeof B==="object")b.times=+B.times||OS,b.intervalFunc=typeof B.interval==="function"?B.interval:vr(+B.interval||Vr),b.errorFilter=B.errorFilter;else if(typeof B==="number"||typeof B==="string")b.times=+B||OS;else throw Error("Invalid arguments for async.retry")}function Ar(b,B){if(!B)B=b,b=null;let U=b&&b.arity||B.length;if(T(B))U+=1;var O8=v(B);return q((k8,D8)=>{if(k8.length<U-1||D8==null)k8.push(D8),D8=N8();function x8(U8){O8(...k8,U8)}if(b)EV(b,x8,D8);else EV(x8,D8);return D8[X8]})}function Mr(b,B){return uZ(w6,b,B)}function P46(b,B,U){return C6(Boolean,(O8)=>O8)(I8,b,B,U)}var SV=M(P46,3);function w46(b,B,U,O8){return C6(Boolean,(k8)=>k8)(s(B),b,U,O8)}var LV=M(w46,4);function T46(b,B,U){return C6(Boolean,(O8)=>O8)(w6,b,B,U)}var IV=M(T46,3);function G46(b,B,U){var O8=v(B);return q6(b,(D8,x8)=>{O8(D8,(U8,d8)=>{if(U8)return x8(U8);x8(U8,{value:D8,criteria:d8})})},(D8,x8)=>{if(D8)return U(D8);U(null,x8.sort(k8).map((U8)=>U8.value))});function k8(D8,x8){var U8=D8.criteria,d8=x8.criteria;return U8<d8?-1:U8>d8?1:0}}var _r=M(G46,3);function kr(b,B,U){var O8=v(b);return q((k8,D8)=>{var x8=!1,U8;function d8(){var I6=b.name||"anonymous",E1=Error('Callback function "'+I6+'" timed out.');if(E1.code="ETIMEDOUT",U)E1.info=U;x8=!0,D8(E1)}k8.push((...I6)=>{if(!x8)D8(...I6),clearTimeout(U8)}),U8=setTimeout(d8,B),O8(...k8)})}function j46(b){var B=Array(b);while(b--)B[b]=b;return B}function xV(b,B,U,O8){var k8=v(U);return F(j46(b),B,k8,O8)}function fr(b,B,U){return xV(b,1/0,B,U)}function Nr(b,B,U){return xV(b,1,B,U)}function Rr(b,B,U,O8){if(arguments.length<=3&&typeof B==="function")O8=U,U=B,B=Array.isArray(b)?[]:{};O8=E(O8||N8());var k8=v(U);return I8(b,(D8,x8,U8)=>{k8(B,D8,x8,U8)},(D8)=>O8(D8,B)),O8[X8]}function v46(b,B){var U=null,O8;return m(b,(k8,D8)=>{v(k8)((x8,...U8)=>{if(x8===!1)return D8(x8);if(U8.length<2)[O8]=U8;else O8=U8;U=x8,D8(x8?null:{})})},()=>B(U,O8))}var Cr=M(v46);function Dr(b){return(...B)=>{return(b.unmemoized||b)(...B)}}function V46(b,B,U){U=u(U);var O8=v(B),k8=v(b),D8=[];function x8(d8,...I6){if(d8)return U(d8);if(D8=I6,d8===!1)return;k8(U8)}function U8(d8,I6){if(d8)return U(d8);if(d8===!1)return;if(!I6)return U(null,...D8);O8(x8)}return k8(U8)}var kw=M(V46,3);function hr(b,B,U){let O8=v(b);return kw((k8)=>O8((D8,x8)=>k8(D8,!x8)),B,U)}function A46(b,B){if(B=E(B),!Array.isArray(b))return B(Error("First argument to waterfall must be an array of functions"));if(!b.length)return B();var U=0;function O8(D8){var x8=v(b[U++]);x8(...D8,u(k8))}function k8(D8,...x8){if(D8===!1)return;if(D8||U===b.length)return B(D8,...x8);O8(x8)}O8([])}var Er=M(A46),M46={apply:K,applyEach:j6,applyEachSeries:P8,asyncify:X,auto:g8,autoInject:e8,cargo:$1,cargoQueue:r1,compose:c,concat:Z8,concatLimit:o,concatSeries:S8,constant:Q8,detect:T7,detectLimit:b7,detectSeries:e$,dir:Z4,doUntil:z8,doWhilst:C8,each:y8,eachLimit:x,eachOf:I8,eachOfLimit:v8,eachOfSeries:w6,eachSeries:m,ensureAsync:$8,every:r,everyLimit:e,everySeries:j8,filter:_6,filterLimit:a,filterSeries:Q,forever:_8,groupBy:X6,groupByLimit:$6,groupBySeries:k6,log:F6,map:q6,mapLimit:F,mapSeries:E6,mapValues:h4,mapValuesLimit:w1,mapValuesSeries:T1,memoize:y7,nextTick:Lq,parallel:jK,parallelLimit:QY,priorityQueue:Xr,queue:$9,race:Pr,reduce:i,reduceRight:DV,reflect:hV,reflectAll:wr,reject:Tr,rejectLimit:Gr,rejectSeries:jr,retry:EV,retryable:Ar,seq:l,series:Mr,setImmediate:O,some:SV,someLimit:LV,someSeries:IV,sortBy:_r,timeout:kr,times:fr,timesLimit:xV,timesSeries:Nr,transform:Rr,tryEach:Cr,unmemoize:Dr,until:hr,waterfall:Er,whilst:kw,all:r,allLimit:e,allSeries:j8,any:SV,anyLimit:LV,anySeries:IV,find:T7,findLimit:b7,findSeries:e$,flatMap:Z8,flatMapLimit:o,flatMapSeries:S8,forEach:y8,forEachSeries:m,forEachLimit:x,forEachOf:I8,forEachOfSeries:w6,forEachOfLimit:v8,inject:i,foldl:i,foldr:DV,select:_6,selectLimit:a,selectSeries:Q,wrapSync:X,during:kw,doDuring:C8};$.all=r,$.allLimit=e,$.allSeries=j8,$.any=SV,$.anyLimit=LV,$.anySeries=IV,$.apply=K,$.applyEach=j6,$.applyEachSeries=P8,$.asyncify=X,$.auto=g8,$.autoInject=e8,$.cargo=$1,$.cargoQueue=r1,$.compose=c,$.concat=Z8,$.concatLimit=o,$.concatSeries=S8,$.constant=Q8,$.default=M46,$.detect=T7,$.detectLimit=b7,$.detectSeries=e$,$.dir=Z4,$.doDuring=C8,$.doUntil=z8,$.doWhilst=C8,$.during=kw,$.each=y8,$.eachLimit=x,$.eachOf=I8,$.eachOfLimit=v8,$.eachOfSeries=w6,$.eachSeries=m,$.ensureAsync=$8,$.every=r,$.everyLimit=e,$.everySeries=j8,$.filter=_6,$.filterLimit=a,$.filterSeries=Q,$.find=T7,$.findLimit=b7,$.findSeries=e$,$.flatMap=Z8,$.flatMapLimit=o,$.flatMapSeries=S8,$.foldl=i,$.foldr=DV,$.forEach=y8,$.forEachLimit=x,$.forEachOf=I8,$.forEachOfLimit=v8,$.forEachOfSeries=w6,$.forEachSeries=m,$.forever=_8,$.groupBy=X6,$.groupByLimit=$6,$.groupBySeries=k6,$.inject=i,$.log=F6,$.map=q6,$.mapLimit=F,$.mapSeries=E6,$.mapValues=h4,$.mapValuesLimit=w1,$.mapValuesSeries=T1,$.memoize=y7,$.nextTick=Lq,$.parallel=jK,$.parallelLimit=QY,$.priorityQueue=Xr,$.queue=$9,$.race=Pr,$.reduce=i,$.reduceRight=DV,$.reflect=hV,$.reflectAll=wr,$.reject=Tr,$.rejectLimit=Gr,$.rejectSeries=jr,$.retry=EV,$.retryable=Ar,$.select=_6,$.selectLimit=a,$.selectSeries=Q,$.seq=l,$.series=Mr,$.setImmediate=O,$.some=SV,$.someLimit=LV,$.someSeries=IV,$.sortBy=_r,$.timeout=kr,$.times=fr,$.timesLimit=xV,$.timesSeries=Nr,$.transform=Rr,$.tryEach=Cr,$.unmemoize=Dr,$.until=hr,$.waterfall=Er,$.whilst=kw,$.wrapSync=X,Object.defineProperty($,"__esModule",{value:!0})})});var yA8=V((V94,bA8)=>{var QJ=Y8("constants"),Gb6=process.cwd,Xf=null,jb6=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!Xf)Xf=Gb6.call(process);return Xf};try{process.cwd()}catch($){}if(typeof process.chdir==="function"){if(Pf=process.chdir,process.chdir=function($){Xf=null,Pf.call(process,$)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,Pf)}var Pf;bA8.exports=vb6;function vb6($){if(QJ.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./))K($);if(!$.lutimes)q($);if($.chown=z($.chown),$.fchown=z($.fchown),$.lchown=z($.lchown),$.chmod=Y($.chmod),$.fchmod=Y($.fchmod),$.lchmod=Y($.lchmod),$.chownSync=W($.chownSync),$.fchownSync=W($.fchownSync),$.lchownSync=W($.lchownSync),$.chmodSync=J($.chmodSync),$.fchmodSync=J($.fchmodSync),$.lchmodSync=J($.lchmodSync),$.stat=Z($.stat),$.fstat=Z($.fstat),$.lstat=Z($.lstat),$.statSync=H($.statSync),$.fstatSync=H($.fstatSync),$.lstatSync=H($.lstatSync),$.chmod&&!$.lchmod)$.lchmod=function(X,P,w){if(w)process.nextTick(w)},$.lchmodSync=function(){};if($.chown&&!$.lchown)$.lchown=function(X,P,w,T){if(T)process.nextTick(T)},$.lchownSync=function(){};if(jb6==="win32")$.rename=typeof $.rename!=="function"?$.rename:function(X){function P(w,T,G){var j=Date.now(),v=0;X(w,T,function M(f){if(f&&(f.code==="EACCES"||f.code==="EPERM"||f.code==="EBUSY")&&Date.now()-j<60000){if(setTimeout(function(){$.stat(T,function(k,R){if(k&&k.code==="ENOENT")X(w,T,M);else G(f)})},v),v<100)v+=10;return}if(G)G(f)})}if(Object.setPrototypeOf)Object.setPrototypeOf(P,X);return P}($.rename);$.read=typeof $.read!=="function"?$.read:function(X){function P(w,T,G,j,v,M){var f;if(M&&typeof M==="function"){var k=0;f=function(R,C,E){if(R&&R.code==="EAGAIN"&&k<10)return k++,X.call($,w,T,G,j,v,f);M.apply(this,arguments)}}return X.call($,w,T,G,j,v,f)}if(Object.setPrototypeOf)Object.setPrototypeOf(P,X);return P}($.read),$.readSync=typeof $.readSync!=="function"?$.readSync:function(X){return function(P,w,T,G,j){var v=0;while(!0)try{return X.call($,P,w,T,G,j)}catch(M){if(M.code==="EAGAIN"&&v<10){v++;continue}throw M}}}($.readSync);function K(X){X.lchmod=function(P,w,T){X.open(P,QJ.O_WRONLY|QJ.O_SYMLINK,w,function(G,j){if(G){if(T)T(G);return}X.fchmod(j,w,function(v){X.close(j,function(M){if(T)T(v||M)})})})},X.lchmodSync=function(P,w){var T=X.openSync(P,QJ.O_WRONLY|QJ.O_SYMLINK,w),G=!0,j;try{j=X.fchmodSync(T,w),G=!1}finally{if(G)try{X.closeSync(T)}catch(v){}else X.closeSync(T)}return j}}function q(X){if(QJ.hasOwnProperty("O_SYMLINK")&&X.futimes)X.lutimes=function(P,w,T,G){X.open(P,QJ.O_SYMLINK,function(j,v){if(j){if(G)G(j);return}X.futimes(v,w,T,function(M){X.close(v,function(f){if(G)G(M||f)})})})},X.lutimesSync=function(P,w,T){var G=X.openSync(P,QJ.O_SYMLINK),j,v=!0;try{j=X.futimesSync(G,w,T),v=!1}finally{if(v)try{X.closeSync(G)}catch(M){}else X.closeSync(G)}return j};else if(X.futimes)X.lutimes=function(P,w,T,G){if(G)process.nextTick(G)},X.lutimesSync=function(){}}function Y(X){if(!X)return X;return function(P,w,T){return X.call($,P,w,function(G){if(O(G))G=null;if(T)T.apply(this,arguments)})}}function J(X){if(!X)return X;return function(P,w){try{return X.call($,P,w)}catch(T){if(!O(T))throw T}}}function z(X){if(!X)return X;return function(P,w,T,G){return X.call($,P,w,T,function(j){if(O(j))j=null;if(G)G.apply(this,arguments)})}}function W(X){if(!X)return X;return function(P,w,T){try{return X.call($,P,w,T)}catch(G){if(!O(G))throw G}}}function Z(X){if(!X)return X;return function(P,w,T){if(typeof w==="function")T=w,w=null;function G(j,v){if(v){if(v.uid<0)v.uid+=4294967296;if(v.gid<0)v.gid+=4294967296}if(T)T.apply(this,arguments)}return w?X.call($,P,w,G):X.call($,P,G)}}function H(X){if(!X)return X;return function(P,w){var T=w?X.call($,P,w):X.call($,P);if(T){if(T.uid<0)T.uid+=4294967296;if(T.gid<0)T.gid+=4294967296}return T}}function O(X){if(!X)return!0;if(X.code==="ENOSYS")return!0;var P=!process.getuid||process.getuid()!==0;if(P){if(X.code==="EINVAL"||X.code==="EPERM")return!0}return!1}}});var BA8=V((A94,mA8)=>{var uA8=Y8("stream").Stream;mA8.exports=Vb6;function Vb6($){return{ReadStream:K,WriteStream:q};function K(Y,J){if(!(this instanceof K))return new K(Y,J);uA8.call(this);var z=this;this.path=Y,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,J=J||{};var W=Object.keys(J);for(var Z=0,H=W.length;Z<H;Z++){var O=W[Z];this[O]=J[O]}if(this.encoding)this.setEncoding(this.encoding);if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!=="number")throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){z._read()});return}$.open(this.path,this.flags,this.mode,function(X,P){if(X){z.emit("error",X),z.readable=!1;return}z.fd=P,z.emit("open",P),z._read()})}function q(Y,J){if(!(this instanceof q))return new q(Y,J);uA8.call(this),this.path=Y,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,J=J||{};var z=Object.keys(J);for(var W=0,Z=z.length;W<Z;W++){var H=z[W];this[H]=J[H]}if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}if(this.busy=!1,this._queue=[],this.fd===null)this._open=$.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush()}}});var pA8=V((M94,UA8)=>{UA8.exports=Mb6;var Ab6=Object.getPrototypeOf||function($){return $.__proto__};function Mb6($){if($===null||typeof $!=="object")return $;if($ instanceof Object)var K={__proto__:Ab6($)};else var K=Object.create(null);return Object.getOwnPropertyNames($).forEach(function(q){Object.defineProperty(K,q,Object.getOwnPropertyDescriptor($,q))}),K}});var SB=V((_94,EB)=>{var J$=Y8("fs"),_b6=yA8(),kb6=BA8(),fb6=pA8(),wf=Y8("util"),k7,Gf;if(typeof Symbol==="function"&&typeof Symbol.for==="function")k7=Symbol.for("graceful-fs.queue"),Gf=Symbol.for("graceful-fs.previous");else k7="___graceful-fs.queue",Gf="___graceful-fs.previous";function Nb6(){}function cA8($,K){Object.defineProperty($,k7,{get:function(){return K}})}var KW=Nb6;if(wf.debuglog)KW=wf.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))KW=function(){var $=wf.format.apply(wf,arguments);$="GFS4: "+$.split(/\n/).join(`
413
+ `+B);let[,O8]=U;return O8.replace(/\s/g,"").split(Y6).map((k8)=>k8.replace(E8,"").trim())}function e8(b,B){var U={};return Object.keys(b).forEach((O8)=>{var k8=b[O8],D8,x8=T(k8),U8=!x8&&k8.length===1||x8&&k8.length===0;if(Array.isArray(k8))D8=[...k8],k8=D8.pop(),U[O8]=D8.concat(D8.length>0?d8:k8);else if(U8)U[O8]=k8;else{if(D8=n8(k8),k8.length===0&&!x8&&D8.length===0)throw Error("autoInject task functions require explicit parameters.");if(!x8)D8.pop();U[O8]=D8.concat(d8)}function d8(I6,E1){var Q1=D8.map((x1)=>I6[x1]);Q1.push(E1),v(k8)(...Q1)}}),g8(U,B)}class W6{constructor(){this.head=this.tail=null,this.length=0}removeLink(b){if(b.prev)b.prev.next=b.next;else this.head=b.next;if(b.next)b.next.prev=b.prev;else this.tail=b.prev;return b.prev=b.next=null,this.length-=1,b}empty(){while(this.head)this.shift();return this}insertAfter(b,B){if(B.prev=b,B.next=b.next,b.next)b.next.prev=B;else this.tail=B;b.next=B,this.length+=1}insertBefore(b,B){if(B.prev=b.prev,B.next=b,b.prev)b.prev.next=B;else this.head=B;b.prev=B,this.length+=1}unshift(b){if(this.head)this.insertBefore(this.head,b);else N6(this,b)}push(b){if(this.tail)this.insertAfter(this.tail,b);else N6(this,b)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){var b=this.head;while(b)yield b.data,b=b.next}remove(b){var B=this.head;while(B){var{next:U}=B;if(b(B))this.removeLink(B);B=U}return this}}function N6(b,B){b.length=1,b.head=b.tail=B}function g6(b,B,U){if(B==null)B=1;else if(B===0)throw RangeError("Concurrency must not be zero");var O8=v(b),k8=0,D8=[];let x8={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function U8(u6,S6){x8[u6].push(S6)}function d8(u6,S6){let m6=(...g1)=>{I6(u6,m6),S6(...g1)};x8[u6].push(m6)}function I6(u6,S6){if(!u6)return Object.keys(x8).forEach((m6)=>x8[m6]=[]);if(!S6)return x8[u6]=[];x8[u6]=x8[u6].filter((m6)=>m6!==S6)}function E1(u6,...S6){x8[u6].forEach((m6)=>m6(...S6))}var Q1=!1;function x1(u6,S6,m6,g1){if(g1!=null&&typeof g1!=="function")throw Error("task callback must be a function");l1.started=!0;var Q4,$7;function R9(u2,...Nw){if(u2)return m6?$7(u2):Q4();if(Nw.length<=1)return Q4(Nw[0]);Q4(Nw)}var BZ=l1._createTaskItem(u6,m6?R9:g1||R9);if(S6)l1._tasks.unshift(BZ);else l1._tasks.push(BZ);if(!Q1)Q1=!0,O(()=>{Q1=!1,l1.process()});if(m6||!g1)return new Promise((u2,Nw)=>{Q4=u2,$7=Nw})}function N9(u6){return function(S6,...m6){k8-=1;for(var g1=0,Q4=u6.length;g1<Q4;g1++){var $7=u6[g1],R9=D8.indexOf($7);if(R9===0)D8.shift();else if(R9>0)D8.splice(R9,1);if($7.callback(S6,...m6),S6!=null)E1("error",S6,$7.data)}if(k8<=l1.concurrency-l1.buffer)E1("unsaturated");if(l1.idle())E1("drain");l1.process()}}function mZ(u6){if(u6.length===0&&l1.idle())return O(()=>E1("drain")),!0;return!1}let y2=(u6)=>(S6)=>{if(!S6)return new Promise((m6,g1)=>{d8(u6,(Q4,$7)=>{if(Q4)return g1(Q4);m6($7)})});I6(u6),U8(u6,S6)};var fw=!1,l1={_tasks:new W6,_createTaskItem(u6,S6){return{data:u6,callback:S6}},*[Symbol.iterator](){yield*l1._tasks[Symbol.iterator]()},concurrency:B,payload:U,buffer:B/4,started:!1,paused:!1,push(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!1,!1,S6))}return x1(u6,!1,!1,S6)},pushAsync(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!1,!0,S6))}return x1(u6,!1,!0,S6)},kill(){I6(),l1._tasks.empty()},unshift(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!0,!1,S6))}return x1(u6,!0,!1,S6)},unshiftAsync(u6,S6){if(Array.isArray(u6)){if(mZ(u6))return;return u6.map((m6)=>x1(m6,!0,!0,S6))}return x1(u6,!0,!0,S6)},remove(u6){l1._tasks.remove(u6)},process(){if(fw)return;fw=!0;while(!l1.paused&&k8<l1.concurrency&&l1._tasks.length){var u6=[],S6=[],m6=l1._tasks.length;if(l1.payload)m6=Math.min(m6,l1.payload);for(var g1=0;g1<m6;g1++){var Q4=l1._tasks.shift();u6.push(Q4),D8.push(Q4),S6.push(Q4.data)}if(k8+=1,l1._tasks.length===0)E1("empty");if(k8===l1.concurrency)E1("saturated");var $7=u(N9(u6));O8(S6,$7)}fw=!1},length(){return l1._tasks.length},running(){return k8},workersList(){return D8},idle(){return l1._tasks.length+k8===0},pause(){l1.paused=!0},resume(){if(l1.paused===!1)return;l1.paused=!1,O(l1.process)}};return Object.defineProperties(l1,{saturated:{writable:!1,value:y2("saturated")},unsaturated:{writable:!1,value:y2("unsaturated")},empty:{writable:!1,value:y2("empty")},drain:{writable:!1,value:y2("drain")},error:{writable:!1,value:y2("error")}}),l1}function $1(b,B){return g6(b,1,B)}function r1(b,B,U){return g6(b,B,U)}function m8(b,B,U,O8){O8=E(O8);var k8=v(U);return w6(b,(D8,x8,U8)=>{k8(B,D8,(d8,I6)=>{B=I6,U8(d8)})},(D8)=>O8(D8,B))}var i=M(m8,4);function l(...b){var B=b.map(v);return function(...U){var O8=this,k8=U[U.length-1];if(typeof k8=="function")U.pop();else k8=N8();return i(B,U,(D8,x8,U8)=>{x8.apply(O8,D8.concat((d8,...I6)=>{U8(d8,I6)}))},(D8,x8)=>k8(D8,...x8)),k8[X8]}}function c(...b){return l(...b.reverse())}function W8(b,B,U,O8){return k(s(B),b,U,O8)}var F=M(W8,4);function H8(b,B,U,O8){var k8=v(U);return F(b,B,(D8,x8)=>{k8(D8,(U8,...d8)=>{if(U8)return x8(U8);return x8(U8,d8)})},(D8,x8)=>{var U8=[];for(var d8=0;d8<x8.length;d8++)if(x8[d8])U8=U8.concat(...x8[d8]);return O8(D8,U8)})}var o=M(H8,4);function G8(b,B,U){return o(b,1/0,B,U)}var Z8=M(G8,3);function f8(b,B,U){return o(b,1,B,U)}var S8=M(f8,3);function Q8(...b){return function(...B){var U=B.pop();return U(null,...b)}}function C6(b,B){return(U,O8,k8,D8)=>{var x8=!1,U8;let d8=v(k8);U(O8,(I6,E1,Q1)=>{d8(I6,(x1,N9)=>{if(x1||x1===!1)return Q1(x1);if(b(N9)&&!U8)return x8=!0,U8=B(!0,I6),Q1(null,C);Q1()})},(I6)=>{if(I6)return D8(I6);D8(null,x8?U8:B(!1))})}}function $$(b,B,U){return C6((O8)=>O8,(O8,k8)=>k8)(I8,b,B,U)}var T7=M($$,3);function g7(b,B,U,O8){return C6((k8)=>k8,(k8,D8)=>D8)(s(B),b,U,O8)}var b7=M(g7,4);function L3(b,B,U){return C6((O8)=>O8,(O8,k8)=>k8)(s(1),b,B,U)}var e$=M(L3,3);function GK(b){return(B,...U)=>v(B)(...U,(O8,...k8)=>{if(typeof console==="object"){if(O8){if(console.error)console.error(O8)}else if(console[b])k8.forEach((D8)=>console[b](D8))}})}var Z4=GK("dir");function R8(b,B,U){U=u(U);var O8=v(b),k8=v(B),D8;function x8(d8,...I6){if(d8)return U(d8);if(d8===!1)return;D8=I6,k8(...I6,U8)}function U8(d8,I6){if(d8)return U(d8);if(d8===!1)return;if(!I6)return U(null,...D8);O8(x8)}return U8(null,!0)}var C8=M(R8,3);function z8(b,B,U){let O8=v(B);return C8(b,(...k8)=>{let D8=k8.pop();O8(...k8,(x8,U8)=>D8(x8,!U8))},U)}function b8(b){return(B,U,O8)=>b(B,O8)}function L8(b,B,U){return I8(b,b8(v(B)),U)}var y8=M(L8,3);function G6(b,B,U,O8){return s(B)(b,b8(v(U)),O8)}var x=M(G6,4);function T8(b,B,U){return x(b,1,B,U)}var m=M(T8,3);function $8(b){if(T(b))return b;return function(...B){var U=B.pop(),O8=!0;B.push((...k8)=>{if(O8)O(()=>U(...k8));else U(...k8)}),b.apply(this,B),O8=!1}}function d(b,B,U){return C6((O8)=>!O8,(O8)=>!O8)(I8,b,B,U)}var t=M(d,3);function r(b,B,U,O8){return C6((k8)=>!k8,(k8)=>!k8)(s(B),b,U,O8)}var e=M(r,4);function w8(b,B,U){return C6((O8)=>!O8,(O8)=>!O8)(w6,b,B,U)}var j8=M(w8,3);function M8(b,B,U,O8){var k8=Array(B.length);b(B,(D8,x8,U8)=>{U(D8,(d8,I6)=>{k8[x8]=!!I6,U8(d8)})},(D8)=>{if(D8)return O8(D8);var x8=[];for(var U8=0;U8<B.length;U8++)if(k8[U8])x8.push(B[U8]);O8(null,x8)})}function h8(b,B,U,O8){var k8=[];b(B,(D8,x8,U8)=>{U(D8,(d8,I6)=>{if(d8)return U8(d8);if(I6)k8.push({index:x8,value:D8});U8(d8)})},(D8)=>{if(D8)return O8(D8);O8(null,k8.sort((x8,U8)=>x8.index-U8.index).map((x8)=>x8.value))})}function t8(b,B,U,O8){var k8=R(B)?M8:h8;return k8(b,B,v(U),O8)}function o8(b,B,U){return t8(I8,b,B,U)}var _6=M(o8,3);function r6(b,B,U,O8){return t8(s(B),b,U,O8)}var a=M(r6,4);function n(b,B,U){return t8(w6,b,B,U)}var Q=M(n,3);function q8(b,B){var U=u(B),O8=v($8(b));function k8(D8){if(D8)return U(D8);if(D8===!1)return;O8(k8)}return k8()}var _8=M(q8,2);function i8(b,B,U,O8){var k8=v(U);return F(b,B,(D8,x8)=>{k8(D8,(U8,d8)=>{if(U8)return x8(U8);return x8(U8,{key:d8,val:D8})})},(D8,x8)=>{var U8={},{hasOwnProperty:d8}=Object.prototype;for(var I6=0;I6<x8.length;I6++)if(x8[I6]){var{key:E1}=x8[I6],{val:Q1}=x8[I6];if(d8.call(U8,E1))U8[E1].push(Q1);else U8[E1]=[Q1]}return O8(D8,U8)})}var $6=M(i8,4);function X6(b,B,U){return $6(b,1/0,B,U)}function k6(b,B,U){return $6(b,1,B,U)}var F6=GK("log");function y6(b,B,U,O8){O8=E(O8);var k8={},D8=v(U);return s(B)(b,(x8,U8,d8)=>{D8(x8,U8,(I6,E1)=>{if(I6)return d8(I6);k8[U8]=E1,d8(I6)})},(x8)=>O8(x8,k8))}var w1=M(y6,4);function h4(b,B,U){return w1(b,1/0,B,U)}function T1(b,B,U){return w1(b,1,B,U)}function y7(b,B=(U)=>U){var U=Object.create(null),O8=Object.create(null),k8=v(b),D8=q((x8,U8)=>{var d8=B(...x8);if(d8 in U)O(()=>U8(null,...U[d8]));else if(d8 in O8)O8[d8].push(U8);else O8[d8]=[U8],k8(...x8,(I6,...E1)=>{if(!I6)U[d8]=E1;var Q1=O8[d8];delete O8[d8];for(var x1=0,N9=Q1.length;x1<N9;x1++)Q1[x1](I6,...E1)})});return D8.memo=U,D8.unmemoized=b,D8}var k$;if(z)k$=process.nextTick;else if(J)k$=setImmediate;else k$=W;var Lq=Z(k$),uZ=M((b,B,U)=>{var O8=R(B)?[]:{};b(B,(k8,D8,x8)=>{v(k8)((U8,...d8)=>{if(d8.length<2)[d8]=d8;O8[D8]=d8,x8(U8)})},(k8)=>U(k8,O8))},3);function jK(b,B){return uZ(I8,b,B)}function QY(b,B,U){return uZ(s(B),b,U)}function $9(b,B){var U=v(b);return g6((O8,k8)=>{U(O8[0],k8)},B,1)}class Hr{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(b){let B;while(b>0&&ZS(this.heap[b],this.heap[B=Or(b)])){let U=this.heap[b];this.heap[b]=this.heap[B],this.heap[B]=U,b=B}}percDown(b){let B;while((B=z46(b))<this.heap.length){if(B+1<this.heap.length&&ZS(this.heap[B+1],this.heap[B]))B=B+1;if(ZS(this.heap[b],this.heap[B]))break;let U=this.heap[b];this.heap[b]=this.heap[B],this.heap[B]=U,b=B}}push(b){b.pushCount=++this.pushCount,this.heap.push(b),this.percUp(this.heap.length-1)}unshift(b){return this.heap.push(b)}shift(){let[b]=this.heap;return this.heap[0]=this.heap[this.heap.length-1],this.heap.pop(),this.percDown(0),b}toArray(){return[...this]}*[Symbol.iterator](){for(let b=0;b<this.heap.length;b++)yield this.heap[b].data}remove(b){let B=0;for(let U=0;U<this.heap.length;U++)if(!b(this.heap[U]))this.heap[B]=this.heap[U],B++;this.heap.splice(B);for(let U=Or(this.heap.length-1);U>=0;U--)this.percDown(U);return this}}function z46(b){return(b<<1)+1}function Or(b){return(b+1>>1)-1}function ZS(b,B){if(b.priority!==B.priority)return b.priority<B.priority;else return b.pushCount<B.pushCount}function Xr(b,B){var U=$9(b,B),{push:O8,pushAsync:k8}=U;U._tasks=new Hr,U._createTaskItem=({data:x8,priority:U8},d8)=>{return{data:x8,priority:U8,callback:d8}};function D8(x8,U8){if(!Array.isArray(x8))return{data:x8,priority:U8};return x8.map((d8)=>{return{data:d8,priority:U8}})}return U.push=function(x8,U8=0,d8){return O8(D8(x8,U8),d8)},U.pushAsync=function(x8,U8=0,d8){return k8(D8(x8,U8),d8)},delete U.unshift,delete U.unshiftAsync,U}function W46(b,B){if(B=E(B),!Array.isArray(b))return B(TypeError("First argument to race must be an array of functions"));if(!b.length)return B();for(var U=0,O8=b.length;U<O8;U++)v(b[U])(B)}var Pr=M(W46,2);function DV(b,B,U,O8){var k8=[...b].reverse();return i(k8,B,U,O8)}function hV(b){var B=v(b);return q(function(O8,k8){return O8.push((D8,...x8)=>{let U8={};if(D8)U8.error=D8;if(x8.length>0){var d8=x8;if(x8.length<=1)[d8]=x8;U8.value=d8}k8(null,U8)}),B.apply(this,O8)})}function wr(b){var B;if(Array.isArray(b))B=b.map(hV);else B={},Object.keys(b).forEach((U)=>{B[U]=hV.call(this,b[U])});return B}function HS(b,B,U,O8){let k8=v(U);return t8(b,B,(D8,x8)=>{k8(D8,(U8,d8)=>{x8(U8,!d8)})},O8)}function Z46(b,B,U){return HS(I8,b,B,U)}var Tr=M(Z46,3);function H46(b,B,U,O8){return HS(s(B),b,U,O8)}var Gr=M(H46,4);function O46(b,B,U){return HS(w6,b,B,U)}var jr=M(O46,3);function vr(b){return function(){return b}}let OS=5,Vr=0;function EV(b,B,U){var O8={times:OS,intervalFunc:vr(Vr)};if(arguments.length<3&&typeof b==="function")U=B||N8(),B=b;else X46(O8,b),U=U||N8();if(typeof B!=="function")throw Error("Invalid arguments for async.retry");var k8=v(B),D8=1;function x8(){k8((U8,...d8)=>{if(U8===!1)return;if(U8&&D8++<O8.times&&(typeof O8.errorFilter!="function"||O8.errorFilter(U8)))setTimeout(x8,O8.intervalFunc(D8-1));else U(U8,...d8)})}return x8(),U[X8]}function X46(b,B){if(typeof B==="object")b.times=+B.times||OS,b.intervalFunc=typeof B.interval==="function"?B.interval:vr(+B.interval||Vr),b.errorFilter=B.errorFilter;else if(typeof B==="number"||typeof B==="string")b.times=+B||OS;else throw Error("Invalid arguments for async.retry")}function Ar(b,B){if(!B)B=b,b=null;let U=b&&b.arity||B.length;if(T(B))U+=1;var O8=v(B);return q((k8,D8)=>{if(k8.length<U-1||D8==null)k8.push(D8),D8=N8();function x8(U8){O8(...k8,U8)}if(b)EV(b,x8,D8);else EV(x8,D8);return D8[X8]})}function Mr(b,B){return uZ(w6,b,B)}function P46(b,B,U){return C6(Boolean,(O8)=>O8)(I8,b,B,U)}var SV=M(P46,3);function w46(b,B,U,O8){return C6(Boolean,(k8)=>k8)(s(B),b,U,O8)}var LV=M(w46,4);function T46(b,B,U){return C6(Boolean,(O8)=>O8)(w6,b,B,U)}var IV=M(T46,3);function G46(b,B,U){var O8=v(B);return q6(b,(D8,x8)=>{O8(D8,(U8,d8)=>{if(U8)return x8(U8);x8(U8,{value:D8,criteria:d8})})},(D8,x8)=>{if(D8)return U(D8);U(null,x8.sort(k8).map((U8)=>U8.value))});function k8(D8,x8){var U8=D8.criteria,d8=x8.criteria;return U8<d8?-1:U8>d8?1:0}}var _r=M(G46,3);function kr(b,B,U){var O8=v(b);return q((k8,D8)=>{var x8=!1,U8;function d8(){var I6=b.name||"anonymous",E1=Error('Callback function "'+I6+'" timed out.');if(E1.code="ETIMEDOUT",U)E1.info=U;x8=!0,D8(E1)}k8.push((...I6)=>{if(!x8)D8(...I6),clearTimeout(U8)}),U8=setTimeout(d8,B),O8(...k8)})}function j46(b){var B=Array(b);while(b--)B[b]=b;return B}function xV(b,B,U,O8){var k8=v(U);return F(j46(b),B,k8,O8)}function fr(b,B,U){return xV(b,1/0,B,U)}function Nr(b,B,U){return xV(b,1,B,U)}function Rr(b,B,U,O8){if(arguments.length<=3&&typeof B==="function")O8=U,U=B,B=Array.isArray(b)?[]:{};O8=E(O8||N8());var k8=v(U);return I8(b,(D8,x8,U8)=>{k8(B,D8,x8,U8)},(D8)=>O8(D8,B)),O8[X8]}function v46(b,B){var U=null,O8;return m(b,(k8,D8)=>{v(k8)((x8,...U8)=>{if(x8===!1)return D8(x8);if(U8.length<2)[O8]=U8;else O8=U8;U=x8,D8(x8?null:{})})},()=>B(U,O8))}var Cr=M(v46);function Dr(b){return(...B)=>{return(b.unmemoized||b)(...B)}}function V46(b,B,U){U=u(U);var O8=v(B),k8=v(b),D8=[];function x8(d8,...I6){if(d8)return U(d8);if(D8=I6,d8===!1)return;k8(U8)}function U8(d8,I6){if(d8)return U(d8);if(d8===!1)return;if(!I6)return U(null,...D8);O8(x8)}return k8(U8)}var kw=M(V46,3);function hr(b,B,U){let O8=v(b);return kw((k8)=>O8((D8,x8)=>k8(D8,!x8)),B,U)}function A46(b,B){if(B=E(B),!Array.isArray(b))return B(Error("First argument to waterfall must be an array of functions"));if(!b.length)return B();var U=0;function O8(D8){var x8=v(b[U++]);x8(...D8,u(k8))}function k8(D8,...x8){if(D8===!1)return;if(D8||U===b.length)return B(D8,...x8);O8(x8)}O8([])}var Er=M(A46),M46={apply:K,applyEach:j6,applyEachSeries:P8,asyncify:X,auto:g8,autoInject:e8,cargo:$1,cargoQueue:r1,compose:c,concat:Z8,concatLimit:o,concatSeries:S8,constant:Q8,detect:T7,detectLimit:b7,detectSeries:e$,dir:Z4,doUntil:z8,doWhilst:C8,each:y8,eachLimit:x,eachOf:I8,eachOfLimit:v8,eachOfSeries:w6,eachSeries:m,ensureAsync:$8,every:t,everyLimit:e,everySeries:j8,filter:_6,filterLimit:a,filterSeries:Q,forever:_8,groupBy:X6,groupByLimit:$6,groupBySeries:k6,log:F6,map:q6,mapLimit:F,mapSeries:E6,mapValues:h4,mapValuesLimit:w1,mapValuesSeries:T1,memoize:y7,nextTick:Lq,parallel:jK,parallelLimit:QY,priorityQueue:Xr,queue:$9,race:Pr,reduce:i,reduceRight:DV,reflect:hV,reflectAll:wr,reject:Tr,rejectLimit:Gr,rejectSeries:jr,retry:EV,retryable:Ar,seq:l,series:Mr,setImmediate:O,some:SV,someLimit:LV,someSeries:IV,sortBy:_r,timeout:kr,times:fr,timesLimit:xV,timesSeries:Nr,transform:Rr,tryEach:Cr,unmemoize:Dr,until:hr,waterfall:Er,whilst:kw,all:t,allLimit:e,allSeries:j8,any:SV,anyLimit:LV,anySeries:IV,find:T7,findLimit:b7,findSeries:e$,flatMap:Z8,flatMapLimit:o,flatMapSeries:S8,forEach:y8,forEachSeries:m,forEachLimit:x,forEachOf:I8,forEachOfSeries:w6,forEachOfLimit:v8,inject:i,foldl:i,foldr:DV,select:_6,selectLimit:a,selectSeries:Q,wrapSync:X,during:kw,doDuring:C8};$.all=t,$.allLimit=e,$.allSeries=j8,$.any=SV,$.anyLimit=LV,$.anySeries=IV,$.apply=K,$.applyEach=j6,$.applyEachSeries=P8,$.asyncify=X,$.auto=g8,$.autoInject=e8,$.cargo=$1,$.cargoQueue=r1,$.compose=c,$.concat=Z8,$.concatLimit=o,$.concatSeries=S8,$.constant=Q8,$.default=M46,$.detect=T7,$.detectLimit=b7,$.detectSeries=e$,$.dir=Z4,$.doDuring=C8,$.doUntil=z8,$.doWhilst=C8,$.during=kw,$.each=y8,$.eachLimit=x,$.eachOf=I8,$.eachOfLimit=v8,$.eachOfSeries=w6,$.eachSeries=m,$.ensureAsync=$8,$.every=t,$.everyLimit=e,$.everySeries=j8,$.filter=_6,$.filterLimit=a,$.filterSeries=Q,$.find=T7,$.findLimit=b7,$.findSeries=e$,$.flatMap=Z8,$.flatMapLimit=o,$.flatMapSeries=S8,$.foldl=i,$.foldr=DV,$.forEach=y8,$.forEachLimit=x,$.forEachOf=I8,$.forEachOfLimit=v8,$.forEachOfSeries=w6,$.forEachSeries=m,$.forever=_8,$.groupBy=X6,$.groupByLimit=$6,$.groupBySeries=k6,$.inject=i,$.log=F6,$.map=q6,$.mapLimit=F,$.mapSeries=E6,$.mapValues=h4,$.mapValuesLimit=w1,$.mapValuesSeries=T1,$.memoize=y7,$.nextTick=Lq,$.parallel=jK,$.parallelLimit=QY,$.priorityQueue=Xr,$.queue=$9,$.race=Pr,$.reduce=i,$.reduceRight=DV,$.reflect=hV,$.reflectAll=wr,$.reject=Tr,$.rejectLimit=Gr,$.rejectSeries=jr,$.retry=EV,$.retryable=Ar,$.select=_6,$.selectLimit=a,$.selectSeries=Q,$.seq=l,$.series=Mr,$.setImmediate=O,$.some=SV,$.someLimit=LV,$.someSeries=IV,$.sortBy=_r,$.timeout=kr,$.times=fr,$.timesLimit=xV,$.timesSeries=Nr,$.transform=Rr,$.tryEach=Cr,$.unmemoize=Dr,$.until=hr,$.waterfall=Er,$.whilst=kw,$.wrapSync=X,Object.defineProperty($,"__esModule",{value:!0})})});var yA8=V((V94,bA8)=>{var QJ=Y8("constants"),Gb6=process.cwd,Xf=null,jb6=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!Xf)Xf=Gb6.call(process);return Xf};try{process.cwd()}catch($){}if(typeof process.chdir==="function"){if(Pf=process.chdir,process.chdir=function($){Xf=null,Pf.call(process,$)},Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,Pf)}var Pf;bA8.exports=vb6;function vb6($){if(QJ.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./))K($);if(!$.lutimes)q($);if($.chown=z($.chown),$.fchown=z($.fchown),$.lchown=z($.lchown),$.chmod=Y($.chmod),$.fchmod=Y($.fchmod),$.lchmod=Y($.lchmod),$.chownSync=W($.chownSync),$.fchownSync=W($.fchownSync),$.lchownSync=W($.lchownSync),$.chmodSync=J($.chmodSync),$.fchmodSync=J($.fchmodSync),$.lchmodSync=J($.lchmodSync),$.stat=Z($.stat),$.fstat=Z($.fstat),$.lstat=Z($.lstat),$.statSync=H($.statSync),$.fstatSync=H($.fstatSync),$.lstatSync=H($.lstatSync),$.chmod&&!$.lchmod)$.lchmod=function(X,P,w){if(w)process.nextTick(w)},$.lchmodSync=function(){};if($.chown&&!$.lchown)$.lchown=function(X,P,w,T){if(T)process.nextTick(T)},$.lchownSync=function(){};if(jb6==="win32")$.rename=typeof $.rename!=="function"?$.rename:function(X){function P(w,T,G){var j=Date.now(),v=0;X(w,T,function M(f){if(f&&(f.code==="EACCES"||f.code==="EPERM"||f.code==="EBUSY")&&Date.now()-j<60000){if(setTimeout(function(){$.stat(T,function(k,R){if(k&&k.code==="ENOENT")X(w,T,M);else G(f)})},v),v<100)v+=10;return}if(G)G(f)})}if(Object.setPrototypeOf)Object.setPrototypeOf(P,X);return P}($.rename);$.read=typeof $.read!=="function"?$.read:function(X){function P(w,T,G,j,v,M){var f;if(M&&typeof M==="function"){var k=0;f=function(R,C,E){if(R&&R.code==="EAGAIN"&&k<10)return k++,X.call($,w,T,G,j,v,f);M.apply(this,arguments)}}return X.call($,w,T,G,j,v,f)}if(Object.setPrototypeOf)Object.setPrototypeOf(P,X);return P}($.read),$.readSync=typeof $.readSync!=="function"?$.readSync:function(X){return function(P,w,T,G,j){var v=0;while(!0)try{return X.call($,P,w,T,G,j)}catch(M){if(M.code==="EAGAIN"&&v<10){v++;continue}throw M}}}($.readSync);function K(X){X.lchmod=function(P,w,T){X.open(P,QJ.O_WRONLY|QJ.O_SYMLINK,w,function(G,j){if(G){if(T)T(G);return}X.fchmod(j,w,function(v){X.close(j,function(M){if(T)T(v||M)})})})},X.lchmodSync=function(P,w){var T=X.openSync(P,QJ.O_WRONLY|QJ.O_SYMLINK,w),G=!0,j;try{j=X.fchmodSync(T,w),G=!1}finally{if(G)try{X.closeSync(T)}catch(v){}else X.closeSync(T)}return j}}function q(X){if(QJ.hasOwnProperty("O_SYMLINK")&&X.futimes)X.lutimes=function(P,w,T,G){X.open(P,QJ.O_SYMLINK,function(j,v){if(j){if(G)G(j);return}X.futimes(v,w,T,function(M){X.close(v,function(f){if(G)G(M||f)})})})},X.lutimesSync=function(P,w,T){var G=X.openSync(P,QJ.O_SYMLINK),j,v=!0;try{j=X.futimesSync(G,w,T),v=!1}finally{if(v)try{X.closeSync(G)}catch(M){}else X.closeSync(G)}return j};else if(X.futimes)X.lutimes=function(P,w,T,G){if(G)process.nextTick(G)},X.lutimesSync=function(){}}function Y(X){if(!X)return X;return function(P,w,T){return X.call($,P,w,function(G){if(O(G))G=null;if(T)T.apply(this,arguments)})}}function J(X){if(!X)return X;return function(P,w){try{return X.call($,P,w)}catch(T){if(!O(T))throw T}}}function z(X){if(!X)return X;return function(P,w,T,G){return X.call($,P,w,T,function(j){if(O(j))j=null;if(G)G.apply(this,arguments)})}}function W(X){if(!X)return X;return function(P,w,T){try{return X.call($,P,w,T)}catch(G){if(!O(G))throw G}}}function Z(X){if(!X)return X;return function(P,w,T){if(typeof w==="function")T=w,w=null;function G(j,v){if(v){if(v.uid<0)v.uid+=4294967296;if(v.gid<0)v.gid+=4294967296}if(T)T.apply(this,arguments)}return w?X.call($,P,w,G):X.call($,P,G)}}function H(X){if(!X)return X;return function(P,w){var T=w?X.call($,P,w):X.call($,P);if(T){if(T.uid<0)T.uid+=4294967296;if(T.gid<0)T.gid+=4294967296}return T}}function O(X){if(!X)return!0;if(X.code==="ENOSYS")return!0;var P=!process.getuid||process.getuid()!==0;if(P){if(X.code==="EINVAL"||X.code==="EPERM")return!0}return!1}}});var BA8=V((A94,mA8)=>{var uA8=Y8("stream").Stream;mA8.exports=Vb6;function Vb6($){return{ReadStream:K,WriteStream:q};function K(Y,J){if(!(this instanceof K))return new K(Y,J);uA8.call(this);var z=this;this.path=Y,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=65536,J=J||{};var W=Object.keys(J);for(var Z=0,H=W.length;Z<H;Z++){var O=W[Z];this[O]=J[O]}if(this.encoding)this.setEncoding(this.encoding);if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!=="number")throw TypeError("end must be a Number");if(this.start>this.end)throw Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){z._read()});return}$.open(this.path,this.flags,this.mode,function(X,P){if(X){z.emit("error",X),z.readable=!1;return}z.fd=P,z.emit("open",P),z._read()})}function q(Y,J){if(!(this instanceof q))return new q(Y,J);uA8.call(this),this.path=Y,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,J=J||{};var z=Object.keys(J);for(var W=0,Z=z.length;W<Z;W++){var H=z[W];this[H]=J[H]}if(this.start!==void 0){if(typeof this.start!=="number")throw TypeError("start must be a Number");if(this.start<0)throw Error("start must be >= zero");this.pos=this.start}if(this.busy=!1,this._queue=[],this.fd===null)this._open=$.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush()}}});var pA8=V((M94,UA8)=>{UA8.exports=Mb6;var Ab6=Object.getPrototypeOf||function($){return $.__proto__};function Mb6($){if($===null||typeof $!=="object")return $;if($ instanceof Object)var K={__proto__:Ab6($)};else var K=Object.create(null);return Object.getOwnPropertyNames($).forEach(function(q){Object.defineProperty(K,q,Object.getOwnPropertyDescriptor($,q))}),K}});var SB=V((_94,EB)=>{var J$=Y8("fs"),_b6=yA8(),kb6=BA8(),fb6=pA8(),wf=Y8("util"),k7,Gf;if(typeof Symbol==="function"&&typeof Symbol.for==="function")k7=Symbol.for("graceful-fs.queue"),Gf=Symbol.for("graceful-fs.previous");else k7="___graceful-fs.queue",Gf="___graceful-fs.previous";function Nb6(){}function cA8($,K){Object.defineProperty($,k7,{get:function(){return K}})}var KW=Nb6;if(wf.debuglog)KW=wf.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))KW=function(){var $=wf.format.apply(wf,arguments);$="GFS4: "+$.split(/\n/).join(`
414
414
  GFS4: `),console.error($)};if(!J$[k7]){if(CB=global[k7]||[],cA8(J$,CB),J$.close=function($){function K(q,Y){return $.call(J$,q,function(J){if(!J)FA8();if(typeof Y==="function")Y.apply(this,arguments)})}return Object.defineProperty(K,Gf,{value:$}),K}(J$.close),J$.closeSync=function($){function K(q){$.apply(J$,arguments),FA8()}return Object.defineProperty(K,Gf,{value:$}),K}(J$.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))process.on("exit",function(){KW(J$[k7]),Y8("assert").equal(J$[k7].length,0)})}var CB;if(!global[k7])cA8(global,J$[k7]);EB.exports=DB(fb6(J$));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!J$.__patched)EB.exports=DB(J$),J$.__patched=!0;function DB($){_b6($),$.gracefulify=DB,$.createReadStream=C,$.createWriteStream=E;var K=$.readFile;$.readFile=q;function q(S,N,L){if(typeof N==="function")L=N,N=null;return u(S,N,L);function u(p,s,A8,v8){return K(p,s,function(c8){if(c8&&(c8.code==="EMFILE"||c8.code==="ENFILE"))nO([u,[p,s,A8],c8,v8||Date.now(),Date.now()]);else if(typeof A8==="function")A8.apply(this,arguments)})}}var Y=$.writeFile;$.writeFile=J;function J(S,N,L,u){if(typeof L==="function")u=L,L=null;return p(S,N,L,u);function p(s,A8,v8,c8,z6){return Y(s,A8,v8,function(u8){if(u8&&(u8.code==="EMFILE"||u8.code==="ENFILE"))nO([p,[s,A8,v8,c8],u8,z6||Date.now(),Date.now()]);else if(typeof c8==="function")c8.apply(this,arguments)})}}var z=$.appendFile;if(z)$.appendFile=W;function W(S,N,L,u){if(typeof L==="function")u=L,L=null;return p(S,N,L,u);function p(s,A8,v8,c8,z6){return z(s,A8,v8,function(u8){if(u8&&(u8.code==="EMFILE"||u8.code==="ENFILE"))nO([p,[s,A8,v8,c8],u8,z6||Date.now(),Date.now()]);else if(typeof c8==="function")c8.apply(this,arguments)})}}var Z=$.copyFile;if(Z)$.copyFile=H;function H(S,N,L,u){if(typeof L==="function")u=L,L=0;return p(S,N,L,u);function p(s,A8,v8,c8,z6){return Z(s,A8,v8,function(u8){if(u8&&(u8.code==="EMFILE"||u8.code==="ENFILE"))nO([p,[s,A8,v8,c8],u8,z6||Date.now(),Date.now()]);else if(typeof c8==="function")c8.apply(this,arguments)})}}var O=$.readdir;$.readdir=P;var X=/^v[0-5]\./;function P(S,N,L){if(typeof N==="function")L=N,N=null;var u=X.test(process.version)?function(A8,v8,c8,z6){return O(A8,p(A8,v8,c8,z6))}:function(A8,v8,c8,z6){return O(A8,v8,p(A8,v8,c8,z6))};return u(S,N,L);function p(s,A8,v8,c8){return function(z6,u8){if(z6&&(z6.code==="EMFILE"||z6.code==="ENFILE"))nO([u,[s,A8,v8],z6,c8||Date.now(),Date.now()]);else{if(u8&&u8.sort)u8.sort();if(typeof v8==="function")v8.call(this,z6,u8)}}}}if(process.version.substr(0,4)==="v0.8"){var w=kb6($);M=w.ReadStream,k=w.WriteStream}var T=$.ReadStream;if(T)M.prototype=Object.create(T.prototype),M.prototype.open=f;var G=$.WriteStream;if(G)k.prototype=Object.create(G.prototype),k.prototype.open=R;Object.defineProperty($,"ReadStream",{get:function(){return M},set:function(S){M=S},enumerable:!0,configurable:!0}),Object.defineProperty($,"WriteStream",{get:function(){return k},set:function(S){k=S},enumerable:!0,configurable:!0});var j=M;Object.defineProperty($,"FileReadStream",{get:function(){return j},set:function(S){j=S},enumerable:!0,configurable:!0});var v=k;Object.defineProperty($,"FileWriteStream",{get:function(){return v},set:function(S){v=S},enumerable:!0,configurable:!0});function M(S,N){if(this instanceof M)return T.apply(this,arguments),this;else return M.apply(Object.create(M.prototype),arguments)}function f(){var S=this;g(S.path,S.flags,S.mode,function(N,L){if(N){if(S.autoClose)S.destroy();S.emit("error",N)}else S.fd=L,S.emit("open",L),S.read()})}function k(S,N){if(this instanceof k)return G.apply(this,arguments),this;else return k.apply(Object.create(k.prototype),arguments)}function R(){var S=this;g(S.path,S.flags,S.mode,function(N,L){if(N)S.destroy(),S.emit("error",N);else S.fd=L,S.emit("open",L)})}function C(S,N){return new $.ReadStream(S,N)}function E(S,N){return new $.WriteStream(S,N)}var h=$.open;$.open=g;function g(S,N,L,u){if(typeof L==="function")u=L,L=null;return p(S,N,L,u);function p(s,A8,v8,c8,z6){return h(s,A8,v8,function(u8,I8){if(u8&&(u8.code==="EMFILE"||u8.code==="ENFILE"))nO([p,[s,A8,v8,c8],u8,z6||Date.now(),Date.now()]);else if(typeof c8==="function")c8.apply(this,arguments)})}}return $}function nO($){KW("ENQUEUE",$[0].name,$[1]),J$[k7].push($),hB()}var Tf;function FA8(){var $=Date.now();for(var K=0;K<J$[k7].length;++K)if(J$[k7][K].length>2)J$[k7][K][3]=$,J$[k7][K][4]=$;hB()}function hB(){if(clearTimeout(Tf),Tf=void 0,J$[k7].length===0)return;var $=J$[k7].shift(),K=$[0],q=$[1],Y=$[2],J=$[3],z=$[4];if(J===void 0)KW("RETRY",K.name,q),K.apply(null,q);else if(Date.now()-J>=60000){KW("TIMEOUT",K.name,q);var W=q.pop();if(typeof W==="function")W.call(null,Y)}else{var Z=Date.now()-z,H=Math.max(z-J,1),O=Math.min(H*1.2,100);if(Z>=O)KW("RETRY",K.name,q),K.apply(null,q.concat([J]));else J$[k7].push($)}if(Tf===void 0)Tf=setTimeout(hB,0)}});var jf=V((k94,QA8)=>{var cK=($)=>$!==null&&typeof $==="object"&&typeof $.pipe==="function";cK.writable=($)=>cK($)&&$.writable!==!1&&typeof $._write==="function"&&typeof $._writableState==="object";cK.readable=($)=>cK($)&&$.readable!==!1&&typeof $._read==="function"&&typeof $._readableState==="object";cK.duplex=($)=>cK.writable($)&&cK.readable($);cK.transform=($)=>cK.duplex($)&&typeof $._transform==="function";QA8.exports=cK});var D0=V((f94,LB)=>{if(typeof process>"u"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0)LB.exports={nextTick:Rb6};else LB.exports=process;function Rb6($,K,q,Y){if(typeof $!=="function")throw TypeError('"callback" argument must be a function');var J=arguments.length,z,W;switch(J){case 0:case 1:return process.nextTick($);case 2:return process.nextTick(function(){$.call(null,K)});case 3:return process.nextTick(function(){$.call(null,K,q)});case 4:return process.nextTick(function(){$.call(null,K,q,Y)});default:z=Array(J-1),W=0;while(W<z.length)z[W++]=arguments[W];return process.nextTick(function(){$.apply(null,z)})}}});var iA8=V((N94,lA8)=>{var Cb6={}.toString;lA8.exports=Array.isArray||function($){return Cb6.call($)=="[object Array]"}});var h0=V((IB,nA8)=>{var vf=Y8("buffer"),YY=vf.Buffer;function dA8($,K){for(var q in $)K[q]=$[q]}if(YY.from&&YY.alloc&&YY.allocUnsafe&&YY.allocUnsafeSlow)nA8.exports=vf;else dA8(vf,IB),IB.Buffer=oO;function oO($,K,q){return YY($,K,q)}dA8(YY,oO);oO.from=function($,K,q){if(typeof $==="number")throw TypeError("Argument must not be a number");return YY($,K,q)};oO.alloc=function($,K,q){if(typeof $!=="number")throw TypeError("Argument must be a number");var Y=YY($);if(K!==void 0)if(typeof q==="string")Y.fill(K,q);else Y.fill(K);else Y.fill(0);return Y};oO.allocUnsafe=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return YY($)};oO.allocUnsafeSlow=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return vf.SlowBuffer($)}});var aO=V((pb6)=>{function Db6($){if(Array.isArray)return Array.isArray($);return Vf($)==="[object Array]"}pb6.isArray=Db6;function hb6($){return typeof $==="boolean"}pb6.isBoolean=hb6;function Eb6($){return $===null}pb6.isNull=Eb6;function Sb6($){return $==null}pb6.isNullOrUndefined=Sb6;function Lb6($){return typeof $==="number"}pb6.isNumber=Lb6;function Ib6($){return typeof $==="string"}pb6.isString=Ib6;function xb6($){return typeof $==="symbol"}pb6.isSymbol=xb6;function gb6($){return $===void 0}pb6.isUndefined=gb6;function bb6($){return Vf($)==="[object RegExp]"}pb6.isRegExp=bb6;function yb6($){return typeof $==="object"&&$!==null}pb6.isObject=yb6;function ub6($){return Vf($)==="[object Date]"}pb6.isDate=ub6;function mb6($){return Vf($)==="[object Error]"||$ instanceof Error}pb6.isError=mb6;function Bb6($){return typeof $==="function"}pb6.isFunction=Bb6;function Ub6($){return $===null||typeof $==="boolean"||typeof $==="number"||typeof $==="string"||typeof $==="symbol"||typeof $>"u"}pb6.isPrimitive=Ub6;pb6.isBuffer=Y8("buffer").Buffer.isBuffer;function Vf($){return Object.prototype.toString.call($)}});var aA8=V((C94,xB)=>{function qy6($,K){if(!($ instanceof K))throw TypeError("Cannot call a class as a function")}var oA8=h0().Buffer,E0=Y8("util");function Yy6($,K,q){$.copy(K,q)}xB.exports=function(){function $(){qy6(this,$),this.head=null,this.tail=null,this.length=0}return $.prototype.push=function(q){var Y={data:q,next:null};if(this.length>0)this.tail.next=Y;else this.head=Y;this.tail=Y,++this.length},$.prototype.unshift=function(q){var Y={data:q,next:this.head};if(this.length===0)this.tail=Y;this.head=Y,++this.length},$.prototype.shift=function(){if(this.length===0)return;var q=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,q},$.prototype.clear=function(){this.head=this.tail=null,this.length=0},$.prototype.join=function(q){if(this.length===0)return"";var Y=this.head,J=""+Y.data;while(Y=Y.next)J+=q+Y.data;return J},$.prototype.concat=function(q){if(this.length===0)return oA8.alloc(0);var Y=oA8.allocUnsafe(q>>>0),J=this.head,z=0;while(J)Yy6(J.data,Y,z),z+=J.data.length,J=J.next;return Y},$}();if(E0&&E0.inspect&&E0.inspect.custom)xB.exports.prototype[E0.inspect.custom]=function(){var $=E0.inspect({length:this.length});return this.constructor.name+" "+$}});var gB=V((D94,rA8)=>{var Af=D0();function Jy6($,K){var q=this,Y=this._readableState&&this._readableState.destroyed,J=this._writableState&&this._writableState.destroyed;if(Y||J){if(K)K($);else if($){if(!this._writableState)Af.nextTick(Mf,this,$);else if(!this._writableState.errorEmitted)this._writableState.errorEmitted=!0,Af.nextTick(Mf,this,$)}return this}if(this._readableState)this._readableState.destroyed=!0;if(this._writableState)this._writableState.destroyed=!0;return this._destroy($||null,function(z){if(!K&&z){if(!q._writableState)Af.nextTick(Mf,q,z);else if(!q._writableState.errorEmitted)q._writableState.errorEmitted=!0,Af.nextTick(Mf,q,z)}else if(K)K(z)}),this}function zy6(){if(this._readableState)this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1;if(this._writableState)this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1}function Mf($,K){$.emit("error",K)}rA8.exports={destroy:Jy6,undestroy:zy6}});var bB=V((h94,sA8)=>{sA8.exports=Y8("util").deprecate});var uB=V((E94,zM8)=>{var qW=D0();zM8.exports=b$;function eA8($){var K=this;this.next=null,this.entry=null,this.finish=function(){Ny6(K,$)}}var Wy6=["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:qW.nextTick,rO;b$.WritableState=L0;var $M8=Object.create(aO());$M8.inherits=I3();var Zy6={deprecate:bB()},KM8=Y8("stream"),kf=h0().Buffer,Hy6=(typeof global<"u"?global:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function Oy6($){return kf.from($)}function Xy6($){return kf.isBuffer($)||$ instanceof Hy6}var qM8=gB();$M8.inherits(b$,KM8);function Py6(){}function L0($,K){rO=rO||YW(),$=$||{};var q=K instanceof rO;if(this.objectMode=!!$.objectMode,q)this.objectMode=this.objectMode||!!$.writableObjectMode;var{highWaterMark:Y,writableHighWaterMark:J}=$,z=this.objectMode?16:16384;if(Y||Y===0)this.highWaterMark=Y;else if(q&&(J||J===0))this.highWaterMark=J;else this.highWaterMark=z;this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var W=$.decodeStrings===!1;this.decodeStrings=!W,this.defaultEncoding=$.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(Z){Ay6(K,Z)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new eA8(this)}L0.prototype.getBuffer=function(){var K=this.bufferedRequest,q=[];while(K)q.push(K),K=K.next;return q};(function(){try{Object.defineProperty(L0.prototype,"buffer",{get:Zy6.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch($){}})();var _f;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function")_f=Function.prototype[Symbol.hasInstance],Object.defineProperty(b$,Symbol.hasInstance,{value:function($){if(_f.call(this,$))return!0;if(this!==b$)return!1;return $&&$._writableState instanceof L0}});else _f=function($){return $ instanceof this};function b$($){if(rO=rO||YW(),!_f.call(b$,this)&&!(this instanceof rO))return new b$($);if(this._writableState=new L0($,this),this.writable=!0,$){if(typeof $.write==="function")this._write=$.write;if(typeof $.writev==="function")this._writev=$.writev;if(typeof $.destroy==="function")this._destroy=$.destroy;if(typeof $.final==="function")this._final=$.final}KM8.call(this)}b$.prototype.pipe=function(){this.emit("error",Error("Cannot pipe, not readable"))};function wy6($,K){var q=Error("write after end");$.emit("error",q),qW.nextTick(K,q)}function Ty6($,K,q,Y){var J=!0,z=!1;if(q===null)z=TypeError("May not write null values to stream");else if(typeof q!=="string"&&q!==void 0&&!K.objectMode)z=TypeError("Invalid non-string/buffer chunk");if(z)$.emit("error",z),qW.nextTick(Y,z),J=!1;return J}b$.prototype.write=function($,K,q){var Y=this._writableState,J=!1,z=!Y.objectMode&&Xy6($);if(z&&!kf.isBuffer($))$=Oy6($);if(typeof K==="function")q=K,K=null;if(z)K="buffer";else if(!K)K=Y.defaultEncoding;if(typeof q!=="function")q=Py6;if(Y.ended)wy6(this,q);else if(z||Ty6(this,Y,$,q))Y.pendingcb++,J=jy6(this,Y,z,$,K,q);return J};b$.prototype.cork=function(){var $=this._writableState;$.corked++};b$.prototype.uncork=function(){var $=this._writableState;if($.corked){if($.corked--,!$.writing&&!$.corked&&!$.bufferProcessing&&$.bufferedRequest)YM8(this,$)}};b$.prototype.setDefaultEncoding=function(K){if(typeof K==="string")K=K.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((K+"").toLowerCase())>-1))throw TypeError("Unknown encoding: "+K);return this._writableState.defaultEncoding=K,this};function Gy6($,K,q){if(!$.objectMode&&$.decodeStrings!==!1&&typeof K==="string")K=kf.from(K,q);return K}Object.defineProperty(b$.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function jy6($,K,q,Y,J,z){if(!q){var W=Gy6(K,Y,J);if(Y!==W)q=!0,J="buffer",Y=W}var Z=K.objectMode?1:Y.length;K.length+=Z;var H=K.length<K.highWaterMark;if(!H)K.needDrain=!0;if(K.writing||K.corked){var O=K.lastBufferedRequest;if(K.lastBufferedRequest={chunk:Y,encoding:J,isBuf:q,callback:z,next:null},O)O.next=K.lastBufferedRequest;else K.bufferedRequest=K.lastBufferedRequest;K.bufferedRequestCount+=1}else yB($,K,!1,Z,Y,J,z);return H}function yB($,K,q,Y,J,z,W){if(K.writelen=Y,K.writecb=W,K.writing=!0,K.sync=!0,q)$._writev(J,K.onwrite);else $._write(J,z,K.onwrite);K.sync=!1}function vy6($,K,q,Y,J){if(--K.pendingcb,q)qW.nextTick(J,Y),qW.nextTick(S0,$,K),$._writableState.errorEmitted=!0,$.emit("error",Y);else J(Y),$._writableState.errorEmitted=!0,$.emit("error",Y),S0($,K)}function Vy6($){$.writing=!1,$.writecb=null,$.length-=$.writelen,$.writelen=0}function Ay6($,K){var q=$._writableState,Y=q.sync,J=q.writecb;if(Vy6(q),K)vy6($,q,Y,K,J);else{var z=JM8(q);if(!z&&!q.corked&&!q.bufferProcessing&&q.bufferedRequest)YM8($,q);if(Y)Wy6(tA8,$,q,z,J);else tA8($,q,z,J)}}function tA8($,K,q,Y){if(!q)My6($,K);K.pendingcb--,Y(),S0($,K)}function My6($,K){if(K.length===0&&K.needDrain)K.needDrain=!1,$.emit("drain")}function YM8($,K){K.bufferProcessing=!0;var q=K.bufferedRequest;if($._writev&&q&&q.next){var Y=K.bufferedRequestCount,J=Array(Y),z=K.corkedRequestsFree;z.entry=q;var W=0,Z=!0;while(q){if(J[W]=q,!q.isBuf)Z=!1;q=q.next,W+=1}if(J.allBuffers=Z,yB($,K,!0,K.length,J,"",z.finish),K.pendingcb++,K.lastBufferedRequest=null,z.next)K.corkedRequestsFree=z.next,z.next=null;else K.corkedRequestsFree=new eA8(K);K.bufferedRequestCount=0}else{while(q){var{chunk:H,encoding:O,callback:X}=q,P=K.objectMode?1:H.length;if(yB($,K,!1,P,H,O,X),q=q.next,K.bufferedRequestCount--,K.writing)break}if(q===null)K.lastBufferedRequest=null}K.bufferedRequest=q,K.bufferProcessing=!1}b$.prototype._write=function($,K,q){q(Error("_write() is not implemented"))};b$.prototype._writev=null;b$.prototype.end=function($,K,q){var Y=this._writableState;if(typeof $==="function")q=$,$=null,K=null;else if(typeof K==="function")q=K,K=null;if($!==null&&$!==void 0)this.write($,K);if(Y.corked)Y.corked=1,this.uncork();if(!Y.ending)fy6(this,Y,q)};function JM8($){return $.ending&&$.length===0&&$.bufferedRequest===null&&!$.finished&&!$.writing}function _y6($,K){$._final(function(q){if(K.pendingcb--,q)$.emit("error",q);K.prefinished=!0,$.emit("prefinish"),S0($,K)})}function ky6($,K){if(!K.prefinished&&!K.finalCalled)if(typeof $._final==="function")K.pendingcb++,K.finalCalled=!0,qW.nextTick(_y6,$,K);else K.prefinished=!0,$.emit("prefinish")}function S0($,K){var q=JM8(K);if(q){if(ky6($,K),K.pendingcb===0)K.finished=!0,$.emit("finish")}return q}function fy6($,K,q){if(K.ending=!0,S0($,K),q)if(K.finished)qW.nextTick(q);else $.once("finish",q);K.ended=!0,$.writable=!1}function Ny6($,K,q){var Y=$.entry;$.entry=null;while(Y){var J=Y.callback;K.pendingcb--,J(q),Y=Y.next}K.corkedRequestsFree.next=$}Object.defineProperty(b$.prototype,"destroyed",{get:function(){if(this._writableState===void 0)return!1;return this._writableState.destroyed},set:function($){if(!this._writableState)return;this._writableState.destroyed=$}});b$.prototype.destroy=qM8.destroy;b$.prototype._undestroy=qM8.undestroy;b$.prototype._destroy=function($,K){this.end(),K($)}});var YW=V((S94,OM8)=>{var WM8=D0(),Ry6=Object.keys||function($){var K=[];for(var q in $)K.push(q);return K};OM8.exports=JY;var ZM8=Object.create(aO());ZM8.inherits=I3();var HM8=BB(),mB=uB();ZM8.inherits(JY,HM8);{ff=Ry6(mB.prototype);for(I0=0;I0<ff.length;I0++)if(x0=ff[I0],!JY.prototype[x0])JY.prototype[x0]=mB.prototype[x0]}var ff,x0,I0;function JY($){if(!(this instanceof JY))return new JY($);if(HM8.call(this,$),mB.call(this,$),$&&$.readable===!1)this.readable=!1;if($&&$.writable===!1)this.writable=!1;if(this.allowHalfOpen=!0,$&&$.allowHalfOpen===!1)this.allowHalfOpen=!1;this.once("end",Cy6)}Object.defineProperty(JY.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Cy6(){if(this.allowHalfOpen||this._writableState.ended)return;WM8.nextTick(Dy6,this)}function Dy6($){$.end()}Object.defineProperty(JY.prototype,"destroyed",{get:function(){if(this._readableState===void 0||this._writableState===void 0)return!1;return this._readableState.destroyed&&this._writableState.destroyed},set:function($){if(this._readableState===void 0||this._writableState===void 0)return;this._readableState.destroyed=$,this._writableState.destroyed=$}});JY.prototype._destroy=function($,K){this.push(null),this.end(),WM8.nextTick(K,$)}});var FB=V((py6)=>{var pB=h0().Buffer,XM8=pB.isEncoding||function($){switch($=""+$,$&&$.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function hy6($){if(!$)return"utf8";var K;while(!0)switch($){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return $;default:if(K)return;$=(""+$).toLowerCase(),K=!0}}function Ey6($){var K=hy6($);if(typeof K!=="string"&&(pB.isEncoding===XM8||!XM8($)))throw Error("Unknown encoding: "+$);return K||$}py6.StringDecoder=g0;function g0($){this.encoding=Ey6($);var K;switch(this.encoding){case"utf16le":this.text=by6,this.end=yy6,K=4;break;case"utf8":this.fillLast=Iy6,K=4;break;case"base64":this.text=uy6,this.end=my6,K=3;break;default:this.write=By6,this.end=Uy6;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=pB.allocUnsafe(K)}g0.prototype.write=function($){if($.length===0)return"";var K,q;if(this.lastNeed){if(K=this.fillLast($),K===void 0)return"";q=this.lastNeed,this.lastNeed=0}else q=0;if(q<$.length)return K?K+this.text($,q):this.text($,q);return K||""};g0.prototype.end=gy6;g0.prototype.text=xy6;g0.prototype.fillLast=function($){if(this.lastNeed<=$.length)return $.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);$.copy(this.lastChar,this.lastTotal-this.lastNeed,0,$.length),this.lastNeed-=$.length};function UB($){if($<=127)return 0;else if($>>5===6)return 2;else if($>>4===14)return 3;else if($>>3===30)return 4;return $>>6===2?-1:-2}function Sy6($,K,q){var Y=K.length-1;if(Y<q)return 0;var J=UB(K[Y]);if(J>=0){if(J>0)$.lastNeed=J-1;return J}if(--Y<q||J===-2)return 0;if(J=UB(K[Y]),J>=0){if(J>0)$.lastNeed=J-2;return J}if(--Y<q||J===-2)return 0;if(J=UB(K[Y]),J>=0){if(J>0)if(J===2)J=0;else $.lastNeed=J-3;return J}return 0}function Ly6($,K,q){if((K[0]&192)!==128)return $.lastNeed=0,"�";if($.lastNeed>1&&K.length>1){if((K[1]&192)!==128)return $.lastNeed=1,"�";if($.lastNeed>2&&K.length>2){if((K[2]&192)!==128)return $.lastNeed=2,"�"}}}function Iy6($){var K=this.lastTotal-this.lastNeed,q=Ly6(this,$,K);if(q!==void 0)return q;if(this.lastNeed<=$.length)return $.copy(this.lastChar,K,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);$.copy(this.lastChar,K,0,$.length),this.lastNeed-=$.length}function xy6($,K){var q=Sy6(this,$,K);if(!this.lastNeed)return $.toString("utf8",K);this.lastTotal=q;var Y=$.length-(q-this.lastNeed);return $.copy(this.lastChar,0,Y),$.toString("utf8",K,Y)}function gy6($){var K=$&&$.length?this.write($):"";if(this.lastNeed)return K+"�";return K}function by6($,K){if(($.length-K)%2===0){var q=$.toString("utf16le",K);if(q){var Y=q.charCodeAt(q.length-1);if(Y>=55296&&Y<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=$[$.length-2],this.lastChar[1]=$[$.length-1],q.slice(0,-1)}return q}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=$[$.length-1],$.toString("utf16le",K,$.length-1)}function yy6($){var K=$&&$.length?this.write($):"";if(this.lastNeed){var q=this.lastTotal-this.lastNeed;return K+this.lastChar.toString("utf16le",0,q)}return K}function uy6($,K){var q=($.length-K)%3;if(q===0)return $.toString("base64",K);if(this.lastNeed=3-q,this.lastTotal=3,q===1)this.lastChar[0]=$[$.length-1];else this.lastChar[0]=$[$.length-2],this.lastChar[1]=$[$.length-1];return $.toString("base64",K,$.length-q)}function my6($){var K=$&&$.length?this.write($):"";if(this.lastNeed)return K+this.lastChar.toString("base64",0,3-this.lastNeed);return K}function By6($){return $.toString(this.encoding)}function Uy6($){return $&&$.length?this.write($):""}});var BB=V((x94,fM8)=>{var tO=D0();fM8.exports=b4;var cy6=iA8(),b0;b4.ReadableState=VM8;var I94=Y8("events").EventEmitter,GM8=function($,K){return $.listeners(K).length},dB=Y8("stream"),y0=h0().Buffer,Qy6=(typeof global<"u"?global:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function ly6($){return y0.from($)}function iy6($){return y0.isBuffer($)||$ instanceof Qy6}var jM8=Object.create(aO());jM8.inherits=I3();var cB=Y8("util"),e1=void 0;if(cB&&cB.debuglog)e1=cB.debuglog("stream");else e1=function(){};var dy6=aA8(),vM8=gB(),sO;jM8.inherits(b4,dB);var QB=["error","close","destroy","pause","resume"];function ny6($,K,q){if(typeof $.prependListener==="function")return $.prependListener(K,q);if(!$._events||!$._events[K])$.on(K,q);else if(cy6($._events[K]))$._events[K].unshift(q);else $._events[K]=[q,$._events[K]]}function VM8($,K){b0=b0||YW(),$=$||{};var q=K instanceof b0;if(this.objectMode=!!$.objectMode,q)this.objectMode=this.objectMode||!!$.readableObjectMode;var{highWaterMark:Y,readableHighWaterMark:J}=$,z=this.objectMode?16:16384;if(Y||Y===0)this.highWaterMark=Y;else if(q&&(J||J===0))this.highWaterMark=J;else this.highWaterMark=z;if(this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new dy6,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=$.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,$.encoding){if(!sO)sO=FB().StringDecoder;this.decoder=new sO($.encoding),this.encoding=$.encoding}}function b4($){if(b0=b0||YW(),!(this instanceof b4))return new b4($);if(this._readableState=new VM8($,this),this.readable=!0,$){if(typeof $.read==="function")this._read=$.read;if(typeof $.destroy==="function")this._destroy=$.destroy}dB.call(this)}Object.defineProperty(b4.prototype,"destroyed",{get:function(){if(this._readableState===void 0)return!1;return this._readableState.destroyed},set:function($){if(!this._readableState)return;this._readableState.destroyed=$}});b4.prototype.destroy=vM8.destroy;b4.prototype._undestroy=vM8.undestroy;b4.prototype._destroy=function($,K){this.push(null),K($)};b4.prototype.push=function($,K){var q=this._readableState,Y;if(!q.objectMode){if(typeof $==="string"){if(K=K||q.defaultEncoding,K!==q.encoding)$=y0.from($,K),K="";Y=!0}}else Y=!0;return AM8(this,$,K,!1,Y)};b4.prototype.unshift=function($){return AM8(this,$,null,!0,!1)};function AM8($,K,q,Y,J){var z=$._readableState;if(K===null)z.reading=!1,sy6($,z);else{var W;if(!J)W=oy6(z,K);if(W)$.emit("error",W);else if(z.objectMode||K&&K.length>0){if(typeof K!=="string"&&!z.objectMode&&Object.getPrototypeOf(K)!==y0.prototype)K=ly6(K);if(Y)if(z.endEmitted)$.emit("error",Error("stream.unshift() after end event"));else lB($,z,K,!0);else if(z.ended)$.emit("error",Error("stream.push() after EOF"));else if(z.reading=!1,z.decoder&&!q)if(K=z.decoder.write(K),z.objectMode||K.length!==0)lB($,z,K,!1);else MM8($,z);else lB($,z,K,!1)}else if(!Y)z.reading=!1}return ay6(z)}function lB($,K,q,Y){if(K.flowing&&K.length===0&&!K.sync)$.emit("data",q),$.read(0);else{if(K.length+=K.objectMode?1:q.length,Y)K.buffer.unshift(q);else K.buffer.push(q);if(K.needReadable)Nf($)}MM8($,K)}function oy6($,K){var q;if(!iy6(K)&&typeof K!=="string"&&K!==void 0&&!$.objectMode)q=TypeError("Invalid non-string/buffer chunk");return q}function ay6($){return!$.ended&&($.needReadable||$.length<$.highWaterMark||$.length===0)}b4.prototype.isPaused=function(){return this._readableState.flowing===!1};b4.prototype.setEncoding=function($){if(!sO)sO=FB().StringDecoder;return this._readableState.decoder=new sO($),this._readableState.encoding=$,this};var PM8=8388608;function ry6($){if($>=PM8)$=PM8;else $--,$|=$>>>1,$|=$>>>2,$|=$>>>4,$|=$>>>8,$|=$>>>16,$++;return $}function wM8($,K){if($<=0||K.length===0&&K.ended)return 0;if(K.objectMode)return 1;if($!==$)if(K.flowing&&K.length)return K.buffer.head.data.length;else return K.length;if($>K.highWaterMark)K.highWaterMark=ry6($);if($<=K.length)return $;if(!K.ended)return K.needReadable=!0,0;return K.length}b4.prototype.read=function($){e1("read",$),$=parseInt($,10);var K=this._readableState,q=$;if($!==0)K.emittedReadable=!1;if($===0&&K.needReadable&&(K.length>=K.highWaterMark||K.ended)){if(e1("read: emitReadable",K.length,K.ended),K.length===0&&K.ended)iB(this);else Nf(this);return null}if($=wM8($,K),$===0&&K.ended){if(K.length===0)iB(this);return null}var Y=K.needReadable;if(e1("need readable",Y),K.length===0||K.length-$<K.highWaterMark)Y=!0,e1("length less than watermark",Y);if(K.ended||K.reading)Y=!1,e1("reading or ended",Y);else if(Y){if(e1("do read"),K.reading=!0,K.sync=!0,K.length===0)K.needReadable=!0;if(this._read(K.highWaterMark),K.sync=!1,!K.reading)$=wM8(q,K)}var J;if($>0)J=_M8($,K);else J=null;if(J===null)K.needReadable=!0,$=0;else K.length-=$;if(K.length===0){if(!K.ended)K.needReadable=!0;if(q!==$&&K.ended)iB(this)}if(J!==null)this.emit("data",J);return J};function sy6($,K){if(K.ended)return;if(K.decoder){var q=K.decoder.end();if(q&&q.length)K.buffer.push(q),K.length+=K.objectMode?1:q.length}K.ended=!0,Nf($)}function Nf($){var K=$._readableState;if(K.needReadable=!1,!K.emittedReadable)if(e1("emitReadable",K.flowing),K.emittedReadable=!0,K.sync)tO.nextTick(TM8,$);else TM8($)}function TM8($){e1("emit readable"),$.emit("readable"),nB($)}function MM8($,K){if(!K.readingMore)K.readingMore=!0,tO.nextTick(ty6,$,K)}function ty6($,K){var q=K.length;while(!K.reading&&!K.flowing&&!K.ended&&K.length<K.highWaterMark)if(e1("maybeReadMore read 0"),$.read(0),q===K.length)break;else q=K.length;K.readingMore=!1}b4.prototype._read=function($){this.emit("error",Error("_read() is not implemented"))};b4.prototype.pipe=function($,K){var q=this,Y=this._readableState;switch(Y.pipesCount){case 0:Y.pipes=$;break;case 1:Y.pipes=[Y.pipes,$];break;default:Y.pipes.push($);break}Y.pipesCount+=1,e1("pipe count=%d opts=%j",Y.pipesCount,K);var J=(!K||K.end!==!1)&&$!==process.stdout&&$!==process.stderr,z=J?Z:v;if(Y.endEmitted)tO.nextTick(z);else q.once("end",z);$.on("unpipe",W);function W(M,f){if(e1("onunpipe"),M===q){if(f&&f.hasUnpiped===!1)f.hasUnpiped=!0,X()}}function Z(){e1("onend"),$.end()}var H=ey6(q);$.on("drain",H);var O=!1;function X(){if(e1("cleanup"),$.removeListener("close",G),$.removeListener("finish",j),$.removeListener("drain",H),$.removeListener("error",T),$.removeListener("unpipe",W),q.removeListener("end",Z),q.removeListener("end",v),q.removeListener("data",w),O=!0,Y.awaitDrain&&(!$._writableState||$._writableState.needDrain))H()}var P=!1;q.on("data",w);function w(M){e1("ondata"),P=!1;var f=$.write(M);if(f===!1&&!P){if((Y.pipesCount===1&&Y.pipes===$||Y.pipesCount>1&&kM8(Y.pipes,$)!==-1)&&!O)e1("false write response, pause",Y.awaitDrain),Y.awaitDrain++,P=!0;q.pause()}}function T(M){if(e1("onerror",M),v(),$.removeListener("error",T),GM8($,"error")===0)$.emit("error",M)}ny6($,"error",T);function G(){$.removeListener("finish",j),v()}$.once("close",G);function j(){e1("onfinish"),$.removeListener("close",G),v()}$.once("finish",j);function v(){e1("unpipe"),q.unpipe($)}if($.emit("pipe",q),!Y.flowing)e1("pipe resume"),q.resume();return $};function ey6($){return function(){var K=$._readableState;if(e1("pipeOnDrain",K.awaitDrain),K.awaitDrain)K.awaitDrain--;if(K.awaitDrain===0&&GM8($,"data"))K.flowing=!0,nB($)}}b4.prototype.unpipe=function($){var K=this._readableState,q={hasUnpiped:!1};if(K.pipesCount===0)return this;if(K.pipesCount===1){if($&&$!==K.pipes)return this;if(!$)$=K.pipes;if(K.pipes=null,K.pipesCount=0,K.flowing=!1,$)$.emit("unpipe",this,q);return this}if(!$){var{pipes:Y,pipesCount:J}=K;K.pipes=null,K.pipesCount=0,K.flowing=!1;for(var z=0;z<J;z++)Y[z].emit("unpipe",this,{hasUnpiped:!1});return this}var W=kM8(K.pipes,$);if(W===-1)return this;if(K.pipes.splice(W,1),K.pipesCount-=1,K.pipesCount===1)K.pipes=K.pipes[0];return $.emit("unpipe",this,q),this};b4.prototype.on=function($,K){var q=dB.prototype.on.call(this,$,K);if($==="data"){if(this._readableState.flowing!==!1)this.resume()}else if($==="readable"){var Y=this._readableState;if(!Y.endEmitted&&!Y.readableListening){if(Y.readableListening=Y.needReadable=!0,Y.emittedReadable=!1,!Y.reading)tO.nextTick($u6,this);else if(Y.length)Nf(this)}}return q};b4.prototype.addListener=b4.prototype.on;function $u6($){e1("readable nexttick read 0"),$.read(0)}b4.prototype.resume=function(){var $=this._readableState;if(!$.flowing)e1("resume"),$.flowing=!0,Ku6(this,$);return this};function Ku6($,K){if(!K.resumeScheduled)K.resumeScheduled=!0,tO.nextTick(qu6,$,K)}function qu6($,K){if(!K.reading)e1("resume read 0"),$.read(0);if(K.resumeScheduled=!1,K.awaitDrain=0,$.emit("resume"),nB($),K.flowing&&!K.reading)$.read(0)}b4.prototype.pause=function(){if(e1("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1)e1("pause"),this._readableState.flowing=!1,this.emit("pause");return this};function nB($){var K=$._readableState;e1("flow",K.flowing);while(K.flowing&&$.read()!==null);}b4.prototype.wrap=function($){var K=this,q=this._readableState,Y=!1;$.on("end",function(){if(e1("wrapped end"),q.decoder&&!q.ended){var W=q.decoder.end();if(W&&W.length)K.push(W)}K.push(null)}),$.on("data",function(W){if(e1("wrapped data"),q.decoder)W=q.decoder.write(W);if(q.objectMode&&(W===null||W===void 0))return;else if(!q.objectMode&&(!W||!W.length))return;var Z=K.push(W);if(!Z)Y=!0,$.pause()});for(var J in $)if(this[J]===void 0&&typeof $[J]==="function")this[J]=function(W){return function(){return $[W].apply($,arguments)}}(J);for(var z=0;z<QB.length;z++)$.on(QB[z],this.emit.bind(this,QB[z]));return this._read=function(W){if(e1("wrapped _read",W),Y)Y=!1,$.resume()},this};Object.defineProperty(b4.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});b4._fromList=_M8;function _M8($,K){if(K.length===0)return null;var q;if(K.objectMode)q=K.buffer.shift();else if(!$||$>=K.length){if(K.decoder)q=K.buffer.join("");else if(K.buffer.length===1)q=K.buffer.head.data;else q=K.buffer.concat(K.length);K.buffer.clear()}else q=Yu6($,K.buffer,K.decoder);return q}function Yu6($,K,q){var Y;if($<K.head.data.length)Y=K.head.data.slice(0,$),K.head.data=K.head.data.slice($);else if($===K.head.data.length)Y=K.shift();else Y=q?Ju6($,K):zu6($,K);return Y}function Ju6($,K){var q=K.head,Y=1,J=q.data;$-=J.length;while(q=q.next){var z=q.data,W=$>z.length?z.length:$;if(W===z.length)J+=z;else J+=z.slice(0,$);if($-=W,$===0){if(W===z.length)if(++Y,q.next)K.head=q.next;else K.head=K.tail=null;else K.head=q,q.data=z.slice(W);break}++Y}return K.length-=Y,J}function zu6($,K){var q=y0.allocUnsafe($),Y=K.head,J=1;Y.data.copy(q),$-=Y.data.length;while(Y=Y.next){var z=Y.data,W=$>z.length?z.length:$;if(z.copy(q,q.length-$,0,W),$-=W,$===0){if(W===z.length)if(++J,Y.next)K.head=Y.next;else K.head=K.tail=null;else K.head=Y,Y.data=z.slice(W);break}++J}return K.length-=J,q}function iB($){var K=$._readableState;if(K.length>0)throw Error('"endReadable()" called on non-empty stream');if(!K.endEmitted)K.ended=!0,tO.nextTick(Wu6,K,$)}function Wu6($,K){if(!$.endEmitted&&$.length===0)$.endEmitted=!0,K.readable=!1,K.emit("end")}function kM8($,K){for(var q=0,Y=$.length;q<Y;q++)if($[q]===K)return q;return-1}});var oB=V((g94,CM8)=>{CM8.exports=zY;var Rf=YW(),RM8=Object.create(aO());RM8.inherits=I3();RM8.inherits(zY,Rf);function Zu6($,K){var q=this._transformState;q.transforming=!1;var Y=q.writecb;if(!Y)return this.emit("error",Error("write callback called multiple times"));if(q.writechunk=null,q.writecb=null,K!=null)this.push(K);Y($);var J=this._readableState;if(J.reading=!1,J.needReadable||J.length<J.highWaterMark)this._read(J.highWaterMark)}function zY($){if(!(this instanceof zY))return new zY($);if(Rf.call(this,$),this._transformState={afterTransform:Zu6.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,$){if(typeof $.transform==="function")this._transform=$.transform;if(typeof $.flush==="function")this._flush=$.flush}this.on("prefinish",Hu6)}function Hu6(){var $=this;if(typeof this._flush==="function")this._flush(function(K,q){NM8($,K,q)});else NM8(this,null,null)}zY.prototype.push=function($,K){return this._transformState.needTransform=!1,Rf.prototype.push.call(this,$,K)};zY.prototype._transform=function($,K,q){throw Error("_transform() is not implemented")};zY.prototype._write=function($,K,q){var Y=this._transformState;if(Y.writecb=q,Y.writechunk=$,Y.writeencoding=K,!Y.transforming){var J=this._readableState;if(Y.needTransform||J.needReadable||J.length<J.highWaterMark)this._read(J.highWaterMark)}};zY.prototype._read=function($){var K=this._transformState;if(K.writechunk!==null&&K.writecb&&!K.transforming)K.transforming=!0,this._transform(K.writechunk,K.writeencoding,K.afterTransform);else K.needTransform=!0};zY.prototype._destroy=function($,K){var q=this;Rf.prototype._destroy.call(this,$,function(Y){K(Y),q.emit("close")})};function NM8($,K,q){if(K)return $.emit("error",K);if(q!=null)$.push(q);if($._writableState.length)throw Error("Calling transform done when ws.length != 0");if($._transformState.transforming)throw Error("Calling transform done when still transforming");return $.push(null)}});var SM8=V((b94,EM8)=>{EM8.exports=u0;var DM8=oB(),hM8=Object.create(aO());hM8.inherits=I3();hM8.inherits(u0,DM8);function u0($){if(!(this instanceof u0))return new u0($);DM8.call(this,$)}u0.prototype._transform=function($,K,q){q(null,$)}});var LM8=V((f7,Cf)=>{var QK=Y8("stream");if(process.env.READABLE_STREAM==="disable"&&QK)Cf.exports=QK,f7=Cf.exports=QK.Readable,f7.Readable=QK.Readable,f7.Writable=QK.Writable,f7.Duplex=QK.Duplex,f7.Transform=QK.Transform,f7.PassThrough=QK.PassThrough,f7.Stream=QK;else f7=Cf.exports=BB(),f7.Stream=QK||f7,f7.Readable=f7,f7.Writable=uB(),f7.Duplex=YW(),f7.Transform=oB(),f7.PassThrough=SM8()});var xM8=V((y94,IM8)=>{IM8.exports=LM8().PassThrough});var uM8=V((u94,yM8)=>{var gM8=Y8("util"),Ef=xM8();yM8.exports={Readable:Df,Writable:hf};gM8.inherits(Df,Ef);gM8.inherits(hf,Ef);function bM8($,K,q){$[K]=function(){return delete $[K],q.apply(this,arguments),this[K].apply(this,arguments)}}function Df($,K){if(!(this instanceof Df))return new Df($,K);Ef.call(this,K),bM8(this,"_read",function(){var q=$.call(this,K),Y=this.emit.bind(this,"error");q.on("error",Y),q.pipe(this)}),this.emit("readable")}function hf($,K){if(!(this instanceof hf))return new hf($,K);Ef.call(this,K),bM8(this,"_write",function(){var q=$.call(this,K),Y=this.emit.bind(this,"error");q.on("error",Y),this.pipe(q)}),this.emit("writable")}});var aB=V((m94,mM8)=>{/*!
415
415
  * normalize-path <https://github.com/jonschlinkert/normalize-path>
416
416
  *
@@ -470,7 +470,7 @@ globstar while`,$,P,K,w,T),this.matchOne($.slice(P),K.slice(w),q))return this.de
470
470
  CREATE UNIQUE INDEX entities_name_unique
471
471
  ON entities(store_id, parent_folder_id, name)
472
472
  WHERE deleted_at IS NULL AND name IS NOT NULL
473
- `.execute($),await $.schema.createIndex("entities_store_id_idx").on("entities").columns(["store_id"]).execute(),await $.schema.createIndex("entities_parent_folder_id_idx").on("entities").columns(["parent_folder_id"]).execute(),await $.schema.createTable("field_definitions").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("store_id","integer",(K)=>K.notNull().references("stores.id").onDelete("cascade")).addColumn("object_id","text",(K)=>K.notNull()).addColumn("entity_type_id","integer",(K)=>K.notNull().references("entity_types.id")).addColumn("type_code","text",(K)=>K.notNull()).addColumn("seq","integer",(K)=>K.notNull()).addColumn("owner_entity_id","integer",(K)=>K.references("entities.id").onDelete("cascade")).addColumn("owner_entity_type_id","integer",(K)=>K.references("entity_types.id")).addColumn("name","text",(K)=>K.notNull()).addColumn("label","text").addColumn("description","text").addColumn("primitive_type","text",(K)=>K.notNull()).addColumn("required","integer",(K)=>K.notNull().defaultTo(0)).addColumn("multiplicity","text",(K)=>K.notNull().defaultTo("single")).addColumn("config","text").addColumn("is_system","integer",(K)=>K.notNull().defaultTo(0)).addColumn("ordinal","integer").addColumn("created_at","text",(K)=>K.notNull()).addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("idx_field_def_object_id_unique").on("field_definitions").columns(["store_id","object_id"]).unique().execute(),await $.schema.createIndex("idx_field_def_store_type_seq").on("field_definitions").columns(["store_id","type_code","seq"]).unique().execute(),await $.schema.createIndex("idx_field_def_owner").on("field_definitions").columns(["owner_entity_id"]).execute(),await $.schema.createIndex("idx_field_def_owner_name").on("field_definitions").columns(["owner_entity_id","name"]).execute(),await $.schema.createIndex("idx_field_def_owner_type").on("field_definitions").columns(["owner_entity_type_id"]).execute(),await $.schema.createIndex("idx_field_def_type_scope").on("field_definitions").columns(["store_id","owner_entity_type_id","name"]).unique().execute(),await $.schema.createTable("assets").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("hash","text",(K)=>K.notNull()).addColumn("mime_type","text",(K)=>K.notNull()).addColumn("size_bytes","integer",(K)=>K.notNull()).addColumn("original_filename","text").addColumn("width_px","integer").addColumn("height_px","integer").addColumn("display_width","integer").addColumn("display_height","integer").execute(),await $.schema.createIndex("idx_assets_hash").on("assets").column("hash").execute(),await $.schema.createTable("int_fields").addColumn("entity_id","integer",(K)=>K.notNull().references("entities.id").onDelete("cascade")).addColumn("field_definition_id","integer",(K)=>K.notNull().references("field_definitions.id").onDelete("cascade")).addColumn("value","integer",(K)=>K.notNull()).addColumn("ordinal","integer",(K)=>K.notNull().defaultTo(0)).execute(),await N4`
473
+ `.execute($),await $.schema.createIndex("entities_store_id_idx").on("entities").columns(["store_id"]).execute(),await $.schema.createIndex("entities_parent_folder_id_idx").on("entities").columns(["parent_folder_id"]).execute(),await $.schema.createTable("field_definitions").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("store_id","integer",(K)=>K.notNull().references("stores.id").onDelete("cascade")).addColumn("object_id","text",(K)=>K.notNull()).addColumn("entity_type_id","integer",(K)=>K.notNull().references("entity_types.id")).addColumn("type_code","text",(K)=>K.notNull()).addColumn("seq","integer",(K)=>K.notNull()).addColumn("owner_entity_id","integer",(K)=>K.references("entities.id").onDelete("cascade")).addColumn("name","text",(K)=>K.notNull()).addColumn("label","text").addColumn("description","text").addColumn("primitive_type","text",(K)=>K.notNull()).addColumn("required","integer",(K)=>K.notNull().defaultTo(0)).addColumn("multiplicity","text",(K)=>K.notNull().defaultTo("single")).addColumn("config","text").addColumn("is_system","integer",(K)=>K.notNull().defaultTo(0)).addColumn("ordinal","integer").addColumn("created_at","text",(K)=>K.notNull()).addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("idx_field_def_object_id_unique").on("field_definitions").columns(["store_id","object_id"]).unique().execute(),await $.schema.createIndex("idx_field_def_store_type_seq").on("field_definitions").columns(["store_id","type_code","seq"]).unique().execute(),await $.schema.createIndex("idx_field_def_owner").on("field_definitions").columns(["owner_entity_id"]).execute(),await $.schema.createIndex("idx_field_def_owner_name").on("field_definitions").columns(["owner_entity_id","name"]).execute(),await $.schema.createTable("class_field_defs").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("store_id","integer",(K)=>K.notNull().references("stores.id").onDelete("cascade")).addColumn("class_type_id","integer",(K)=>K.notNull().references("entity_types.id").onDelete("cascade")).addColumn("field_definition_id","integer",(K)=>K.notNull().references("field_definitions.id").onDelete("cascade")).addColumn("required","integer",(K)=>K.notNull().defaultTo(0)).addColumn("sort_order","integer").execute(),await $.schema.createIndex("class_field_defs_unique").on("class_field_defs").columns(["class_type_id","field_definition_id"]).unique().execute(),await $.schema.createIndex("idx_class_field_defs_field").on("class_field_defs").columns(["field_definition_id"]).execute(),await $.schema.createIndex("idx_class_field_defs_store_class").on("class_field_defs").columns(["store_id","class_type_id"]).execute(),await $.schema.createTable("assets").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("hash","text",(K)=>K.notNull()).addColumn("mime_type","text",(K)=>K.notNull()).addColumn("size_bytes","integer",(K)=>K.notNull()).addColumn("original_filename","text").addColumn("width_px","integer").addColumn("height_px","integer").addColumn("display_width","integer").addColumn("display_height","integer").execute(),await $.schema.createIndex("idx_assets_hash").on("assets").column("hash").execute(),await $.schema.createTable("int_fields").addColumn("entity_id","integer",(K)=>K.notNull().references("entities.id").onDelete("cascade")).addColumn("field_definition_id","integer",(K)=>K.notNull().references("field_definitions.id").onDelete("cascade")).addColumn("value","integer",(K)=>K.notNull()).addColumn("ordinal","integer",(K)=>K.notNull().defaultTo(0)).execute(),await N4`
474
474
  CREATE UNIQUE INDEX int_fields_pk
475
475
  ON int_fields(entity_id, field_definition_id, ordinal)
476
476
  `.execute($),await $.schema.createIndex("idx_int_fields_entity").on("int_fields").columns(["entity_id","field_definition_id"]).execute(),await $.schema.createIndex("idx_int_fields_lookup").on("int_fields").columns(["field_definition_id","value"]).execute(),await $.schema.createTable("string_fields").addColumn("entity_id","integer",(K)=>K.notNull().references("entities.id").onDelete("cascade")).addColumn("field_definition_id","integer",(K)=>K.notNull().references("field_definitions.id").onDelete("cascade")).addColumn("value","text",(K)=>K.notNull()).addColumn("ordinal","integer",(K)=>K.notNull().defaultTo(0)).execute(),await N4`
@@ -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 SZ6=()=>new Date().toISOString(),Q6=SZ6;var LZ6=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},p1=Object.freeze({nextSeq:LZ6});var IZ6=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)"}]),lT=IZ6;var xZ6=[{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}],C78=async($)=>{return(await $.selectFrom("entity_types").select("id").limit(1).execute()).length>0},d1=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},AM=async($,K,q,Y)=>{let J=Q6(),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 d1($,"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(),j={d:"document",t:"template",s:"story",j:"job"}[Y];return T.id},gZ6=async($)=>{for(let K of xZ6)await $.insertInto("entity_types").values(K).execute()},bZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await p1.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()},yZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","task"),W=await p1.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()},uZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"j",null);for(let W of lT){let Z=await p1.nextSeq($,"store",K,"n"),H=`${q}n${Z}`;await $.insertInto("field_definitions").values({store_id:K,object_id:H,entity_type_id:J,type_code:"n",seq:Z,owner_entity_id:null,owner_entity_type_id:z,name:W.name,label:W.label,description:W.description,primitive_type:W.primitiveType||"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).execute()}},MM=Object.freeze(["prep","spec","design","plan","build","review","done"]),Xz=Object.freeze(["waiting","ready","in-progress","done"]),mZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"f","tasks"),W=await p1.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()},BZ6=async($,K,q,Y)=>{let J=Q6(),z=await d1($,"n",null),W=await d1($,"f","root_s"),Z=await p1.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<MM.length;P++)await $.insertInto("string_fields").values({entity_id:Y,field_definition_id:X,value:MM[P],ordinal:P}).execute()},UZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","task"),W=await p1.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()},pZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","cartridge"),W=await p1.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()},FZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","cartridge"),W=await p1.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()},cZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"t","prompt"),W=await p1.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()},QZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"s",null),W=await p1.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()},lZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"s",null),W=await p1.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()},iZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"s",null),W=await p1.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()},dZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d",null),W=await d1($,"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 p1.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()}},nZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d",null),W=await d1($,"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 p1.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()}},oZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"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 p1.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()}},aZ6=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=Q6(),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 AM($,J.id,"B","d"),await AM($,J.id,"B","t");let z=await AM($,J.id,"B","s");await AM($,J.id,"B","j"),await bZ6($,J.id,"B"),await uZ6($,J.id,"B"),await yZ6($,J.id,"B"),await UZ6($,J.id,"B"),await pZ6($,J.id,"B"),await FZ6($,J.id,"B"),await BZ6($,J.id,"B",z),await mZ6($,J.id,"B"),await cZ6($,J.id,"B"),await QZ6($,J.id,"B"),await lZ6($,J.id,"B"),await iZ6($,J.id,"B"),await dZ6($,J.id,"B"),await nZ6($,J.id,"B"),await oZ6($,J.id,"B"),await $.insertInto("sequences").values({scope_type:"store",scope_id:J.id,type_code:"v",next_value:1}).execute()},D78=async($)=>{await gZ6($),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 aZ6($)};var _M=i6(E78(),1),rZ6=($,K)=>{if($)throw Error(K)},S78=($,K)=>{if(_M.default.null($)||_M.default.undefined($))throw Error(`${K} is required`)},sZ6=($,K)=>{if(S78($,K),_M.default.empty($))throw Error(`${K} cannot be empty`)},tZ6=($,K,...q)=>{if($)throw K(...q)},eZ6={condition:rZ6,nullish:S78,empty:sZ6,factory:tZ6},y=eZ6;var UM6=typeof Bun<"u",pM6=async($)=>{if(UM6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => i6(ZP8(),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 fx({database:q})})}},FM6=($,K)=>{if(!uM6($)){if(!K)throw Error(`Database file not found: ${$}`);mM6(BM6($),{recursive:!0})}},cM6=async($,K)=>{if(!await N78($)){if(!K)throw Error("Database schema not found");await R78($)}},QM6=async($,K)=>{if(!await C78($)){if(!K)throw Error("Database seed data not found");await D78($)}},lM6=($)=>{let{kyselyFactory:K=pM6}=$??{};return Object.freeze({getDb:async(Y,J)=>{if(y.nullish(Y,"databaseFilepath"),Y!==":memory:")FM6(Y,J);let z=await K(Y);return await cM6(z,J),await QM6(z,J),z}})},HP8={create:lM6};var iM6=($)=>{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}},Q3=Object.freeze({create:iM6});var dM6=($)=>{let{id:K,name:q,path:Y,createdAt:J,updatedAt:z}=$,{entityFns:W,mutationFns:Z}=Q3.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}},OP8=Object.freeze({create:dM6});var nM6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},o6=Object.freeze({create:nM6});var oM6=($)=>$.object_id,XP8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},zk=($)=>{let K=oM6($),q=$.id,{entity:Y,mutationApi:J}=OP8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:J,id:K,pk:q}},aM6=()=>{let $=new Map;return Object.freeze({createProject:async(W,Z,{name:H,path:O},X)=>{let P=Q6(),w=await p1.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}=zk(G);return X(()=>{$.set(M,o6.create(j,v,f))}),j},readProject:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=XP8(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}=zk(P);return $.set(G,o6.create(w,T,j)),w},readProjectByObjectId:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=XP8(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}=zk(P);return $.set(G,o6.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}=zk(O),G=$.get(w);if(G)return G.getEntity();return $.set(w,o6.create(X,P,T)),X},evictProject:(W)=>{$.delete(W)}})},PP8=Object.freeze({create:aM6});var rM6=()=>{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()})},Fz=Object.freeze({create:rM6});var DP8=i6(S4(),1);Wk();var eM6=($)=>{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}=Q3.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,v8=Object.freeze({...P,getParentId:()=>Y,getPath:()=>J,getField:(E6)=>{return T.get(E6)},getFields:()=>{let E6={};for(let[P8,X8]of T.entries())E6[P8]=X8;return E6},getPublishedVersionNumber:()=>G,hasDraftContent:()=>j,getDraftContent:()=>v,getPublishedContent:()=>M,getEditState:()=>f,hasPublished:()=>G>0,isBeingEdited:()=>f!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),f6=Object.freeze({...w,setParentId:(E6)=>{Y=E6},setPath:(E6)=>{J=E6},setField:(E6,P8)=>{T.set(E6,P8)},removeField:(E6)=>{T.delete(E6)},setPublishedVersionNumber:(E6)=>{G=E6},setHasDraft:(E6)=>{j=E6},setDraftContent:(E6)=>{v=E6},setPublishedContent:(E6)=>{M=E6},setEditState:(E6)=>{f=E6}});return{entityFns:v8,mutationFns:f6}},uK=Object.freeze({create:eM6});var TP8=($)=>{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}},$_6=($,K,q,Y)=>{return TP8({id:K,parentId:q,name:$.name,path:Y,subtype:$.subtype||null,createdAt:$.created_at,updatedAt:$.updated_at})},oq=Object.freeze({create:TP8,createFromRow:$_6});var GP8=($)=>{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}},K_6=($,K,q,Y)=>{return GP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},VO=Object.freeze({create:GP8,createFromRow:K_6});var jP8=($)=>{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}},q_6=($,K,q,Y)=>{return jP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},Zk=Object.freeze({create:jP8,createFromRow:q_6});var vP8=($)=>{let{entityFns:K,mutationFns:q}=Q3.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()})}),h=Object.freeze({...q});return{entity:E,mutationApi:h}},Y_6=($,K)=>{return vP8({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})},Hk=Object.freeze({create:vP8,createFromRow:Y_6});var VP8=Object.freeze(["string","object_ref","int","text","date","float"]),J_6=($)=>{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}=Q3.create({id:K,name:q,createdAt:P,updatedAt:w}),j=()=>Y,v=()=>J,M=()=>z,f=()=>W,k=()=>Z,R=()=>H,C=()=>O,E=()=>X??null,g=Object.freeze({...T,getOwnerEntityId:j,getLabel:v,getDescription:M,getPrimitiveType:f,getRequired:k,getMultiplicity:R,getIsSystem:C,getAllowedValues:E,toJSON:()=>({id:T.getObjectId(),ownerEntityId:j(),name:T.getName(),label:v(),description:M(),primitiveType:f(),required:k(),multiplicity:R(),isSystem:C(),allowedValues:E(),createdAt:T.getCreatedAt(),updatedAt:T.getUpdatedAt()})}),S=Object.freeze({...G});return{entity:g,mutationApi:S}},Gu=Object.freeze({create:J_6});var z_6=({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]}})},Ok=Object.freeze({create:z_6});z4();z4();var X_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},P_6=($)=>{return $.getParentId()===null},l3=Object.freeze({validateFolderName:X_6,isRootFolder:P_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}},T_6=($,K,q)=>`${$}${K}${q}`,G_6=($,K)=>{y.factory($!==K,I.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},MO=Object.freeze({parseId:w_6,buildId:T_6,validateStoreCode:G_6});var AP8=($)=>{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}},j_6=($,K,q,Y,J,z,W=null,Z=null)=>{return AP8({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})},MP8=Object.freeze({create:AP8,createFromRow:j_6});var _P8=($)=>{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}},v_6=($,K,q,Y,J,z,W=null,Z=null)=>{return _P8({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})},kP8=Object.freeze({create:_P8,createFromRow:v_6});var fP8=($)=>{let{id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:W,updatedAt:Z}=$,{entityFns:H,mutationFns:O}=Q3.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}},V_6=($,K,q,Y,J,z=null)=>{return fP8({id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:$.created_at,updatedAt:$.updated_at})},NP8=Object.freeze({create:fP8,createFromRow:V_6});z4();var RP8=($)=>{let K=MO.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}},A_6=($)=>{let{typeCode:K}=RP8($);return K},ju={d:MP8.createFromRow,t:kP8.createFromRow,v:NP8.createFromRow},M_6=($)=>{if($==="s")return ju.d;if(!$)return ju.d;let K=ju[$];if(!K)throw Error(`Unknown content type: ${$}`);return K},__6=($)=>{return{d:"document",t:"template",v:"version"}[$]||"content"},e6=Object.freeze({resolveEntityId:RP8,getTypeFromId:A_6,getEntityFactory:M_6,getContentTypeLabel:__6,buildId:MO.buildId,parseId:MO.parseId});var{parseId:t1,buildId:cz,validateStoreCode:k_6}=MO,{validateFolderName:CP8,isRootFolder:l44}=l3,M7=DP8.default("caw:stores:db"),yJ=3600000,f_6=({id:$,code:K,name:q,pk:Y,folderCache:J,createdAt:z,updatedAt:W})=>{let Z=new Map,{entityFns:H,mutationFns:O}=Q3.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)=>{k_6(x,K)},v=async(x,T8)=>{if(!T8)return null;if(J){let d=J.get(T8);if(d)return d.getPk()}if(!t1(T8))y.factory(!0,I.validation,`Invalid parent folder ID: ${T8}`,"INVALID_ID");let $8=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",T8).where("deleted_at","is",null).executeTakeFirst();return $8?$8.id:null},M=async(x,T8)=>{let m=await x.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",T8).where("deleted_at","is",null).executeTakeFirst();y.factory(!m,I.notFound,`Entity not found for PK ${T8}`,"ENTITY_NOT_FOUND");let $8=m.object_id,d=J?J.get($8):null;if(d){let w8=d.getEntity();if(w8.getName()===m.name&&w8.getParentId()===m.parent_object_id)return w8.getPath()}if(!m.parent_object_id)return m.name;let r=J?J.get(m.parent_object_id):null;if(r){let j8=r.getEntity().getPath();return j8?`${j8}/${m.name}`:m.name}let t=[m.name],e=m.parent_folder_id;while(e!==null){let w8=Z.get(e),j8=w8&&J?J.get(w8):null;if(j8){let t8=j8.getEntity().getPath();if(t8){let o8=t8.split("/").filter((_6)=>_6);t.unshift(...o8)}break}let M8=await x.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",e).where("deleted_at","is",null).executeTakeFirst();y.factory(!M8,I.notFound,`Folder not found for PK ${e}`,"FOLDER_NOT_FOUND"),t.unshift(M8.name),e=M8.parent_folder_id}return t.join("/")},f=async(x,T8)=>{let m=[],$8=[T8];while($8.length>0){let d=$8.shift(),r=await x.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",d).where("deleted_at","is",null).execute();for(let t of r)if(m.push(t.id),t.type_code==="f"||t.type_code==="s"||t.type_code==="j")$8.push(t.id)}return m},k=async(x,T8,m,$8)=>{let d=Q6(),r=await d6.readEntityTypeId(x,{},"f",$8),t=await p1.nextSeq(x,"store",Y,"f"),e=await v(x,T8),w8=cz(K,"f",t);return{row:{...await x.insertInto("entities").values({store_id:Y,object_id:w8,entity_type_id:r,type_code:"f",seq:t,parent_folder_id:e,parent_object_id:T8,name:m,created_at:d,updated_at:d}).returningAll().executeTakeFirstOrThrow(),subtype:$8},id:w8}},R=(x)=>{let T8=null;if(x.owner_entity_id!==null)T8=Z.get(x.owner_entity_id)??null;let m=null;if(x.config)try{m=JSON.parse(x.config).allowedValues||null}catch(r){}let{entity:$8,mutationApi:d}=Gu.create({id:x.object_id,name:x.name,ownerEntityId:T8,label:x.label,description:x.description,primitiveType:x.primitive_type,required:x.required===1,multiplicity:x.multiplicity,isSystem:x.is_system===1,allowedValues:m,createdAt:x.created_at,updatedAt:x.updated_at});return{entity:$8,mutationApi:d,pk:x.id}},C=(x)=>{let m={int:"int_fields",string:"string_fields",text:"text_fields",date:"date_fields",float:"float_fields",object_ref:"obj_ref_fields"}[x];if(!m)throw Error(`Unknown primitive type: ${x}`);return m},E=async(x,T8,m,$8,d,r=0)=>{let t=C($8);if($8==="object_ref"){let e=await x.selectFrom("entities").select("id").where("object_id","=",d).where("deleted_at","is",null).executeTakeFirst();if(!e)throw I.validation(`Target entity not found: ${d}`,"INVALID_REFERENCE");await x.insertInto(t).values({entity_id:T8,field_definition_id:m,target_entity_id:e.id,ordinal:r}).execute()}else{let e=d;if($8==="int")e=typeof d==="string"?parseInt(d,10):d;else if($8==="float")e=typeof d==="string"?parseFloat(d):d;await x.insertInto(t).values({entity_id:T8,field_definition_id:m,value:e,ordinal:r}).execute()}},h=async(x,T8,m,$8)=>{let d=C($8);await x.deleteFrom(d).where("entity_id","=",T8).where("field_definition_id","=",m).execute()},g=async(x,T8)=>{let m=new Map,$8=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",N4`'int'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of $8){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"int"});m.get(j8.def_id).values.push(j8.value)}let d=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",N4`'string'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of d){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"string"});m.get(j8.def_id).values.push(j8.value)}let r=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",N4`'text'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of r){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"text"});m.get(j8.def_id).values.push(j8.value)}let t=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",N4`'date'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of t){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"date"});m.get(j8.def_id).values.push(j8.value)}let e=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",N4`'float'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of e){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"float"});m.get(j8.def_id).values.push(j8.value)}let w8=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",N4`'object_ref'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of w8){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"object_ref"});m.get(j8.def_id).values.push(j8.value)}return m},S=new Map,N=!1,L=async(x)=>{if(N)return;let T8=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 m of T8){let $8=m.owner_entity_type_id?`${m.name}:${m.owner_entity_type_id}`:m.name;S.set($8,{pk:m.id,objectId:m.object_id,primitiveType:m.primitive_type})}N=!0,M7("System field definition cache initialized with %d entries",S.size)},u=(x,T8=null)=>{if(T8){let m=`${x}:${T8}`;if(S.has(m))return S.get(m)}return S.get(x)||null},p=async(x,T8)=>{let m=new Map,$8=await g(x,T8);for(let[r,t]of $8.entries()){let e=await x.selectFrom("field_definitions").selectAll().where("id","=",r).executeTakeFirst();if(!e)continue;let w8=null;if(e.config)try{w8=JSON.parse(e.config).allowedValues||null}catch(j8){}m.set(r,{definition:{id:e.object_id,name:e.name,label:e.label,description:e.description,primitiveType:e.primitive_type,required:e.required===1,multiplicity:e.multiplicity,isSystem:e.is_system===1,ownerEntityId:e.owner_entity_id?Z.get(e.owner_entity_id):null,allowedValues:w8,createdAt:e.created_at,updatedAt:e.updated_at},values:t.values})}let d=[];for(let{definition:r,values:t}of m.values()){let{entity:e}=Gu.create(r),w8=Ok.create({definition:e,values:t});d.push(w8)}return d},s=async(x,T8,{storeCode:m,parentId:$8,name:d,subtype:r})=>{if(m!==void 0)j(m);if(d!==null&&d!==void 0)CP8(d);let{row:t,id:e}=await k(x,$8,d,r||null),w8=t.id;Z.set(w8,e);let j8=await M(x,w8),{entity:M8,mutationApi:h8}=oq.createFromRow(t,e,$8,j8);return{entity:M8,mutationApi:h8,pk:w8}},A8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;if($8.typeCode!=="f"&&$8.typeCode!=="s")return null;if($8.typeCode==="s")M7("readFolder called with story ID %s — consider using readStory instead",m);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","=",$8.seq).where("entities.type_code","=",$8.typeCode).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:r,parent_object_id:t}=d;Z.set(r,m);let e=await M(x,r),w8=await p(x,r),{entity:j8,mutationApi:M8}=$8.typeCode==="s"?VO.createFromRow(d,m,t,e):oq.createFromRow(d,m,t,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:r}},v8=async(x,T8,{id:m,name:$8,parentId:d})=>{let r=t1(m);y.factory(!r,I.validation,`Invalid folder ID: ${m}`,"INVALID_ID");let t=["f","s","j"].includes(r.typeCode)?[r.typeCode]:null;y.factory(!t,I.validation,`Invalid type for folder update: ${m}`,"INVALID_TYPE");let e=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","=",r.seq).where("entities.type_code","in",t).where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`Folder not found: ${m}`,"FOLDER_NOT_FOUND");let{id:w8,subtype:j8}=e,M8={name:e.name,parentId:e.parent_object_id,path:null};if(Z.set(w8,m),M8.path=await M(x,w8),$8!==void 0)CP8($8);let h8={};if($8!==void 0)h8.name=$8;if(d!==void 0){let n=await v(x,d);h8.parent_folder_id=n,h8.parent_object_id=d}h8.updated_at=Q6();let t8=await x.updateTable("entities").set(h8).where("id","=",w8).returningAll().executeTakeFirstOrThrow(),o8=await M(x,w8),_6=await p(x,w8),{entity:r6,mutationApi:a}=oq.createFromRow({...t8,subtype:j8},m,t8.parent_object_id,o8);for(let n of _6)a.setField(n.getDefinition().getName(),n);return{entity:r6,mutationApi:a,pk:w8,oldValues:M8}},c8=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid folder ID: ${m}`,"INVALID_ID");let d=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Folder not found: ${m}`,"FOLDER_NOT_FOUND");let r=d.id;Z.set(r,m);let t=await M(x,r),e=await f(x,r),w8=Q6();await x.updateTable("entities").set({deleted_at:w8}).where("id","in",[r,...e]).execute();let j8=[];for(let M8 of e){let h8=await x.selectFrom("entities").select("object_id").where("id","=",M8).executeTakeFirst();if(h8)j8.push(h8.object_id)}return{id:m,deleted:!0,descendantCount:e.length,path:t,descendantIds:j8,deletedPks:[r,...e]}},z6=async(x,T8,m,$8,d=null)=>{let r=await v(x,m),t=x.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",r===null?"is":"=",r).where("name","=",$8).where("deleted_at","is",null);if(d)t=t.where("object_id","!=",d);return!!await t.executeTakeFirst()},u8=async(x,T8,m,$8)=>{let d=await v(x,m),r=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.parent_folder_id",d===null?"is":"=",d).where("entities.name","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!r)return null;let{id:t,object_id:e}=r;Z.set(t,e);let w8=await M(x,t),j8=await p(x,t),{entity:M8,mutationApi:h8}=oq.createFromRow(r,e,m,w8);for(let t8 of j8)h8.setField(t8.getDefinition().getName(),t8);return{entity:M8,mutationApi:h8,pk:t}},I8=async(x,T8,{folderId:m,type:$8})=>{let d;if(m){if(d=await v(x,m),d===null)return[]}else if($8){let w8=await q6(x,T8,$8);if(!w8)return[];d=w8.pk}else d=null;let r=x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",d===null?"is":"=",d).where("entities.deleted_at","is",null);if($8)r=r.where("entities.type_code","=","f").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select("entity_types.subtype");let t=await r.execute(),e=[];for(let w8 of t){let{id:j8,object_id:M8}=w8;Z.set(j8,M8);let h8=await M(x,j8),t8=await p(x,j8),{entity:o8,mutationApi:_6}=oq.createFromRow(w8,M8,w8.parent_object_id,h8);for(let r6 of t8)_6.setField(r6.getDefinition().getName(),r6);e.push({entity:o8,mutationApi:_6,pk:j8})}return e},B8=async(x,T8,{path:m,type:$8})=>{y.factory(!$8,I.validation,"type parameter is required for getFolderByPath","MISSING_TYPE");let d=(m??"").trim(),t={d:"Documents",t:"Templates",s:"Stories"}[$8];y.factory(!t,I.validation,`Invalid type: ${$8}`,"INVALID_TYPE");let e;if(d.startsWith(`${t}/`))e=d;else if(d===t)e=t;else e=d?`${t}/${d}`:t;let w8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where((j8)=>$8==="s"?j8("type_code","in",["f","s"]):j8("type_code","=","f")).where("deleted_at","is",null).execute();for(let j8 of w8){let M8=await A8(x,T8,{id:j8.object_id});if(M8&&M8.entity.getPath()===e)return M8}return null},q6=async(x,T8,m,$8)=>{if($8!==void 0)j($8);let r={d:"root_d",t:"root_t",s:"root_s"}[m];if(!r)throw I.validation(`Invalid type for root folder: ${m}`,"INVALID_TYPE");let t=await d6.readEntityTypeId(x,T8,"f",r),e=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.entity_type_id","=",t).where("entities.deleted_at","is",null).executeTakeFirst();if(!e)return null;let{id:w8,object_id:j8}=e;Z.set(w8,j8);let M8=await M(x,w8),h8=await p(x,w8),{entity:t8,mutationApi:o8}=oq.createFromRow(e,j8,e.parent_object_id,M8);for(let _6 of h8)o8.setField(_6.getDefinition().getName(),_6);return{entity:t8,mutationApi:o8,pk:w8}},j6=async(x,T8,{storeCode:m,ownerEntityId:$8,ownerEntityTypePk:d,name:r,label:t,description:e,primitiveType:w8,required:j8,multiplicity:M8,isSystem:h8=!1,allowedValues:t8})=>{if(m!==void 0)j(m);let o8=["string","object_ref","int","text","date","float"];y.factory(!o8.includes(w8),I.validation,`Invalid primitiveType: ${w8}. Must be one of: ${o8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(M8!=="single"&&M8!=="multi",I.validation,`Invalid multiplicity: ${M8}`,"INVALID_MULTIPLICITY"),y.factory($8&&d,I.validation,"Cannot set both ownerEntityId and ownerEntityTypePk","INVALID_FIELD_DEFINITION_SCOPE");let _6=Q6(),r6=await d6.readEntityTypeId(x,T8,"n",null),a=await p1.nextSeq(x,"store",Y,"n"),n=cz(K,"n",a),Q=$8?await v(x,$8):null,q8=null;if(t8&&t8.length>0)q8=JSON.stringify({allowedValues:t8});let _8=await x.insertInto("field_definitions").values({store_id:Y,object_id:n,entity_type_id:r6,type_code:"n",seq:a,owner_entity_id:Q,owner_entity_type_id:d||null,name:r,label:t,description:e,primitive_type:w8,required:j8?1:0,multiplicity:M8,config:q8,is_system:h8?1:0,created_at:_6,updated_at:_6}).returningAll().executeTakeFirstOrThrow(),i8=_8.id;return Z.set(i8,n),R(_8)},O6=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;let d=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","n").executeTakeFirst();if(!d)return null;if(d.owner_entity_id){let r=await x.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(r)Z.set(d.owner_entity_id,r.object_id)}return Z.set(d.id,m),R(d)},w6=async(x,T8,m,$8)=>{let d=x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",m).where("owner_entity_id",$8===null?"is":"=",$8);if($8===null)d=d.where("owner_entity_type_id","is",null);let r=await d.executeTakeFirst();if(!r)return null;if(r.owner_entity_id){let t=await x.selectFrom("entities").select("object_id").where("id","=",r.owner_entity_id).executeTakeFirst();if(t)Z.set(r.owner_entity_id,t.object_id)}return Z.set(r.id,r.object_id),R(r)},f6=async(x,T8,{fieldDefinitionId:m,fieldName:$8,ownerEntityPk:d,entityTypePk:r})=>{if(m){let M8=await O6(x,T8,{id:m});if(M8)return M8}if($8&&d){let M8=await w6(x,T8,$8,d);if(M8)return M8}if($8&&r){let M8=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",$8).where("owner_entity_id","is",null).where("owner_entity_type_id","=",r).executeTakeFirst();if(M8)return Z.set(M8.id,M8.object_id),R(M8)}if($8){let M8=await w6(x,T8,$8,null);if(M8)return M8}let t="unknown";if(r){let M8=await x.selectFrom("entity_types").select(["code","subtype"]).where("id","=",r).executeTakeFirst();if(M8)t=M8.subtype?`${M8.code}/${M8.subtype}`:M8.code}let e=[];if(r){let M8=await x.selectFrom("field_definitions").select("name").where("store_id","=",Y).where("owner_entity_id","is",null).where("owner_entity_type_id","=",r).execute();for(let h8 of M8)e.push(h8.name)}let w8=await x.selectFrom("field_definitions").select("name").where("store_id","=",Y).where("owner_entity_id","is",null).where("owner_entity_type_id","is",null).execute();for(let M8 of w8)if(!e.includes(M8.name))e.push(M8.name);let j8=e.length>0?e.join(", "):"none";throw I.validation(`Field '${$8}' is not defined for entity type '${t}'. Available fields: ${j8}`,"UNDEFINED_FIELD")},E6=async(x,T8,{ownerEntityPk:m,includeSystem:$8=!0})=>{let d=x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id",m===null?"is":"=",m);if(m===null)d=d.where("owner_entity_type_id","is",null);if(!$8)d=d.where("is_system","=",0);let r=await d.execute(),t=[];for(let e of r){if(e.owner_entity_id){let w8=await x.selectFrom("entities").select("object_id").where("id","=",e.owner_entity_id).executeTakeFirst();if(w8)Z.set(e.owner_entity_id,w8.object_id)}Z.set(e.id,e.object_id),t.push(R(e))}return t},P8=async(x,T8,{code:m,subtype:$8})=>{M7("resolveEntityTypePk called: code=%s, subtype=%s (store=%s)",m,$8,K);try{let d=await d6.readEntityTypeId(x,T8,m,$8);return M7("resolveEntityTypePk succeeded: code=%s, subtype=%s -> pk=%d",m,$8,d),d}catch(d){if(d.constructor?.name==="NoResultError")throw M7("resolveEntityTypePk failed: code=%s, subtype=%s (store=%s)",m,$8,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw d}},X8=async(x,T8,{code:m,subtype:$8,name:d})=>{M7("createEntityType called: code=%s, subtype=%s, name=%s",m,$8,d);let r=await d6.createEntityType(x,T8,{code:m,subtype:$8,name:d});return M7("createEntityType succeeded: id=%d, code=%s, subtype=%s",r.id,m,$8),r},N8=async(x,T8,{code:m,subtype:$8})=>{M7("getFieldDefinitionsForEntityType called: code=%s, subtype=%s (store=%s)",m,$8,K);let d;try{d=await d6.readEntityTypeId(x,T8,m,$8),M7("getFieldDefinitionsForEntityType resolved pk: code=%s, subtype=%s -> pk=%d",m,$8,d)}catch(e){if(e.constructor?.name==="NoResultError")throw M7("getFieldDefinitionsForEntityType failed: code=%s, subtype=%s (store=%s)",m,$8,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw e}let r=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_type_id","=",d).execute(),t=[];for(let e of r)Z.set(e.id,e.object_id),t.push(R(e));return t},g8=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid definition ID: ${m}`,"INVALID_ID");let d=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","n").executeTakeFirst();y.factory(!d,I.notFound,`Field definition not found: ${m}`,"DEFINITION_NOT_FOUND"),y.factory(d.is_system===1,I.validation,`Cannot delete system field definition: ${m}`,"SYSTEM_DEFINITION");let r=d.id;if(await x.deleteFrom("field_definitions").where("id","=",r).execute(),d.owner_entity_id){let e=await x.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(e)Z.set(d.owner_entity_id,e.object_id)}let{entity:t}=R(d);return t},F8=async(x,T8,{entityId:m,fieldDefinitionId:$8,fieldName:d,value:r,values:t})=>{let e=t1(m);y.factory(!e,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let w8=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",e.seq).where("type_code","=",e.typeCode).where("deleted_at","is",null).executeTakeFirst();y.factory(!w8,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let j8=w8.id,{entity:M8,pk:h8}=await f6(x,T8,{fieldDefinitionId:$8,fieldName:d,ownerEntityPk:j8,entityTypePk:w8.entity_type_id}),t8=M8.getMultiplicity(),o8;if(t8==="single")if(t&&Array.isArray(t))y.factory(t.length>1||t.length===0,I.validation,`Field '${M8.getName()}' is single-valued but received ${t.length} values`,"MULTIPLICITY_VIOLATION"),o8=[t[0]];else y.factory(r===void 0,I.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),o8=[r];else if(t&&Array.isArray(t))o8=t;else if(r!==void 0)o8=[r];else y.factory(!0,I.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");let _6=M8.getPrimitiveType();await h(x,j8,h8,_6);for(let Q=0;Q<o8.length;Q++){let q8=o8[Q];await E(x,j8,h8,_6,q8,Q)}let r6=o8,a=Ok.create({definition:M8,values:r6}),n;if(e.typeCode==="f")n=await A8(x,T8,{id:m});else if(e.typeCode==="s")n=await C6(x,T8,{id:m});else if(e.typeCode==="j")n=await e$(x,T8,{id:m});else n=await e8(x,T8,{id:m});return y.factory(!n,I.notFound,`Entity not found after field update: ${m}`,"ENTITY_NOT_FOUND"),{...n,field:a,fieldName:M8.getName()}},l8=async(x,T8,{entityId:m,fieldDefinitionId:$8,fieldName:d})=>{let r=t1(m);y.factory(!r,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let t=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",r.seq).where("type_code","=",r.typeCode).where("deleted_at","is",null).executeTakeFirst();y.factory(!t,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let e=t.id,{entity:w8,pk:j8}=await f6(x,T8,{fieldDefinitionId:$8,fieldName:d,ownerEntityPk:e,entityTypePk:t.entity_type_id}),M8=w8.getPrimitiveType();await h(x,e,j8,M8);let h8;if(r.typeCode==="f")h8=await A8(x,T8,{id:m});else if(r.typeCode==="s")h8=await C6(x,T8,{id:m});else if(r.typeCode==="j")h8=await e$(x,T8,{id:m});else h8=await e8(x,T8,{id:m});return y.factory(!h8,I.notFound,`Entity not found after field delete: ${m}`,"ENTITY_NOT_FOUND"),{...h8,fieldName:w8.getName()}},Y6=async(x,T8,{entityId:m,fieldDefinitionId:$8,fieldName:d})=>{let r=t1(m);if(!r)return null;let t=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",r.seq).where("type_code","=",r.typeCode).where("deleted_at","is",null).executeTakeFirst();if(!t)return null;let e=t.id,w8;try{w8=await f6(x,T8,{fieldDefinitionId:$8,fieldName:d,ownerEntityPk:e,entityTypePk:t.entity_type_id})}catch{return null}let{entity:j8,pk:M8}=w8,h8=j8.getPrimitiveType(),o8=(await g(x,e)).get(M8);if(!o8||o8.values.length===0)return null;let _6=o8.values,r6=j8.getMultiplicity()==="single";return Ok.create({definition:j8,values:_6,isSingleValued:r6})},E8=async(x,T8,{documentPk:m,documentObjectId:$8,documentEntityTypeId:d,content:r,versionNumber:t,publishedAt:e=null})=>{await L(x);let w8=Q6(),j8=await d6.readEntityTypeId(x,T8,"v",null),M8=await p1.nextSeq(x,"store",Y,"v"),h8=cz(K,"v",M8),o8=(await x.insertInto("entities").values({store_id:Y,object_id:h8,entity_type_id:j8,type_code:"v",seq:M8,parent_folder_id:null,parent_object_id:null,name:null,created_at:w8,updated_at:w8}).returningAll().executeTakeFirstOrThrow()).id;Z.set(o8,h8);let _6=u("document",j8);if(!_6)throw Error('System field definition "document" not found for version type');await x.insertInto("obj_ref_fields").values({entity_id:o8,field_definition_id:_6.pk,target_entity_id:m,ordinal:0}).execute();let r6=u("version_number",j8);if(!r6)throw Error('System field definition "version_number" not found for version type');if(await x.insertInto("int_fields").values({entity_id:o8,field_definition_id:r6.pk,value:t,ordinal:0}).execute(),e!==null){let a=u("published_at",j8);if(!a)throw Error('System field definition "published_at" not found for version type');await x.insertInto("date_fields").values({entity_id:o8,field_definition_id:a.pk,value:e,ordinal:0}).execute()}return await x.insertInto("entity_content").values({entity_id:o8,content_text:r,content_type:"markdown",updated_at:w8}).execute(),await N4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${o8}, ${r})`.execute(x),M7("Created version entity %s (pk=%d) for document %s, version %d, draft=%s",h8,o8,$8,t,e===null),{pk:o8,objectId:h8}},p8=async(x,T8)=>{if(!T8)return null;await L(x);let m=await x.selectFrom("entities").select(["object_id","entity_type_id"]).where("id","=",T8).where("deleted_at","is",null).executeTakeFirst();if(!m)return null;let{entity_type_id:$8,object_id:d}=m;Z.set(T8,d);let r=u("version_number",$8),t=null;if(r)t=(await x.selectFrom("int_fields").select("value").where("entity_id","=",T8).where("field_definition_id","=",r.pk).executeTakeFirst())?.value??null;let e=u("published_at",$8),w8=null;if(e)w8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",T8).where("field_definition_id","=",e.pk).executeTakeFirst())?.value??null;let M8=(await x.selectFrom("entity_content").select("content_text").where("entity_id","=",T8).executeTakeFirst())?.content_text??null;return{versionNumber:t,publishedAt:w8,content:M8,objectId:d}},n8=async(x,T8,{type:m,storeCode:$8,parentId:d,name:r,initialContent:t,subtype:e})=>{let w8=e6.getEntityFactory(m);if($8!==void 0)j($8);await L(x);let j8=Q6(),M8=await d6.readEntityTypeId(x,T8,m,e??null),h8=e?await d6.readEntityTypeId(x,T8,m,null):M8,t8=await p1.nextSeq(x,"store",Y,m),o8=cz(K,m,t8),_6=await v(x,d),r6=await x.insertInto("entities").values({store_id:Y,object_id:o8,entity_type_id:M8,type_code:m,seq:t8,parent_folder_id:_6,parent_object_id:d,name:r,created_at:j8,updated_at:j8}).returningAll().executeTakeFirstOrThrow(),a=r6.id;Z.set(a,o8);let n=t!==null&&t!==void 0,Q=null;if(n){let X6=await E8(x,T8,{documentPk:a,documentObjectId:o8,documentEntityTypeId:M8,content:t,versionNumber:1,publishedAt:null});Q=X6.objectId;let k6=u("draft_version",h8);if(!k6)throw Error(`System field definition "draft_version" not found for base type ${m}`);await x.insertInto("obj_ref_fields").values({entity_id:a,field_definition_id:k6.pk,target_entity_id:X6.pk,ordinal:0}).execute(),M7("Created document %s with draft version %s",o8,Q)}let q8=await M(x,a),_8={...r6,subtype:e??null},{entity:i8,mutationApi:$6}=w8(_8,o8,d,q8,null,n,n?t:null,null);return{entity:i8,mutationApi:$6,pk:a}},e8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;let{typeCode:d,seq:r}=$8,t=e6.getEntityFactory(d);await L(x);let e=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","=",d).where("e.seq","=",r).where("e.deleted_at","is",null).executeTakeFirst();if(!e)return null;let{entity_id:w8,entity_type_id:j8}=e;Z.set(w8,m);let M8=j8;if(e.subtype)M8=await d6.readEntityTypeId(x,T8,d,null);let h8=u("draft_version",M8),t8=u("latest_published_version",M8),o8=null,_6=null;if(h8)o8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",w8).where("field_definition_id","=",h8.pk).executeTakeFirst())?.target_entity_id??null;if(t8)_6=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",w8).where("field_definition_id","=",t8.pk).executeTakeFirst())?.target_entity_id??null;let r6=null,a=null,n=null,Q=!1;if(_6){let T1=await p8(x,_6);if(T1)r6=T1.versionNumber,a=T1.content}if(o8){let T1=await p8(x,o8);if(T1)Q=!0,n=T1.content}let q8=null,_8=null,i8=null,$6=u("edit_session_id",M8),X6=u("edit_started_at",M8),k6=u("edit_last_activity_at",M8);if($6)q8=(await x.selectFrom("string_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",$6.pk).executeTakeFirst())?.value??null;if(X6)_8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",X6.pk).executeTakeFirst())?.value??null;if(k6)i8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",k6.pk).executeTakeFirst())?.value??null;let F6=await M(x,w8),y6=await p(x,w8),{entity:w1,mutationApi:h4}=t(e,e.object_id,e.parent_object_id,F6,r6,Q,n,a);for(let T1 of y6)h4.setField(T1.getDefinition().getName(),T1);if(q8)h4.setEditState({sessionId:q8,startedAt:_8,lastActivityAt:i8});return{entity:w1,mutationApi:h4,pk:w8}},W6=async(x,T8,{id:m,name:$8,parentId:d})=>{let r=t1(m);y.factory(!r,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:t,seq:e}=r,w8=e6.getContentTypeLabel(t),j8=e6.getEntityFactory(t),M8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",e).where("type_code","=",t).where("deleted_at","is",null).executeTakeFirst();y.factory(!M8,I.notFound,`${w8} not found: ${m}`,"NOT_FOUND");let h8=M8.id,t8={name:M8.name,parentId:M8.parent_object_id,path:null};Z.set(h8,m),t8.path=await M(x,h8);let _6={updated_at:Q6()};if($8!==void 0)_6.name=$8;if(d!==void 0){let a=await v(x,d);_6.parent_folder_id=a,_6.parent_object_id=d}await x.updateTable("entities").set(_6).where("id","=",h8).execute();let r6=await e8(x,T8,{id:m});return y.factory(!r6,I.notFound,`${w8} not found after update: ${m}`,"NOT_FOUND"),{...r6,oldValues:t8}},N6=async(x,T8,{id:m,subtype:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:r,seq:t}=d,e=e6.getContentTypeLabel(r),w8=e6.getEntityFactory(r),j8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",t).where("type_code","=",r).where("deleted_at","is",null).executeTakeFirst();y.factory(!j8,I.notFound,`${e} not found: ${m}`,"NOT_FOUND");let M8=j8.id,h8=await d6.readEntityTypeId(x,T8,r,$8??null),t8=Q6();await x.updateTable("entities").set({entity_type_id:h8,updated_at:t8}).where("id","=",M8).execute(),Z.set(M8,m);let o8=await e8(x,T8,{id:m});return y.factory(!o8,I.notFound,`${e} not found after type update: ${m}`,"NOT_FOUND"),o8},g6=async(x,T8,{entityId:m,entityTypePk:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let{typeCode:r,seq:t}=d,e=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",t).where("type_code","=",r).where("deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`Entity not found: ${m}`,"NOT_FOUND");let w8=e.id,j8=await x.selectFrom("field_definitions").select(["id","primitive_type"]).where("owner_entity_type_id","=",$8).execute(),M8=0;for(let h8 of j8)await h(x,w8,h8.id,h8.primitive_type),M8++;return{deletedCount:M8}},$1=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:d,seq:r}=$8,t=e6.getContentTypeLabel(d),e=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",r).where("type_code","=",d).where("deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`${t} not found: ${m}`,"NOT_FOUND");let w8=e.id;Z.set(w8,m);let j8=await M(x,w8);await L(x);let M8=await d6.readEntityTypeId(x,T8,"v",null),h8=u("document",M8);if(h8){let o8=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","=",h8.pk).where("orf.target_entity_id","=",w8).where("ve.deleted_at","is",null).execute();M7("Cascade deleting %d version entities for document %s",o8.length,m);let _6=await d6.readEntityTypeId(x,T8,d,null),r6=u("draft_version",_6),a=u("latest_published_version",_6),n=[r6?.pk,a?.pk].filter(Boolean);if(n.length>0)await x.deleteFrom("obj_ref_fields").where("entity_id","=",w8).where("field_definition_id","in",n).execute();for(let Q of o8){let q8=Q.version_pk;await N4`DELETE FROM entity_content_fts WHERE rowid = ${q8}`.execute(x),await x.deleteFrom("entities").where("id","=",q8).execute()}}let t8=Q6();return await x.updateTable("entities").set({deleted_at:t8}).where("id","=",w8).execute(),{id:m,deleted:!0,path:j8}},r1=async(x,T8,{id:m,content:$8,sessionId:d})=>{let r=t1(m);y.factory(!r,I.validation,`Invalid content ID: ${m}`,"INVALID_ID"),y.factory(!d,I.validation,"sessionId is required","MISSING_SESSION_ID");let{typeCode:t,seq:e}=r,w8=e6.getContentTypeLabel(t);await L(x);let j8=Q6(),M8=new Date(Date.now()-yJ).toISOString(),h8=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","=",t).where("e.seq","=",e).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!h8,I.notFound,`${w8} not found: ${m}`,"NOT_FOUND");let{id:t8,entity_type_id:o8}=h8,_6=o8;if(h8.subtype)_6=await d6.readEntityTypeId(x,T8,t,null);let r6=u("edit_session_id",_6),a=u("edit_last_activity_at",_6);if(r6&&a){let X6=await x.selectFrom("string_fields").select("value").where("entity_id","=",t8).where("field_definition_id","=",r6.pk).executeTakeFirst();if(X6&&X6.value!==d){let k6=await x.selectFrom("date_fields").select("value").where("entity_id","=",t8).where("field_definition_id","=",a.pk).executeTakeFirst();if(k6&&k6.value>=M8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let n=u("draft_version",_6);if(!n)throw Error(`System field definition "draft_version" not found for base type ${t}`);let q8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",t8).where("field_definition_id","=",n.pk).executeTakeFirst())?.target_entity_id??null;if(q8)await N4`DELETE FROM entity_content_fts WHERE rowid = ${q8}`.execute(x),await x.updateTable("entity_content").set({content_text:$8,updated_at:j8}).where("entity_id","=",q8).execute(),await N4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${q8}, ${$8})`.execute(x),M7("Updated draft version content for %s (version pk=%d)",m,q8);else{let X6=await d6.readEntityTypeId(x,T8,"v",null),k6=u("version_number",X6),F6=u("published_at",X6),y6=u("document",X6),w1=0;if(y6&&k6&&F6)w1=(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(k$)=>k$.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",k6.pk)).innerJoin("date_fields as df",(k$)=>k$.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",F6.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",y6.pk).where("orf.target_entity_id","=",t8).executeTakeFirst())?.max_version??0;let h4=w1+1,T1=await E8(x,T8,{documentPk:t8,documentObjectId:m,documentEntityTypeId:o8,content:$8,versionNumber:h4,publishedAt:null});await x.insertInto("obj_ref_fields").values({entity_id:t8,field_definition_id:n.pk,target_entity_id:T1.pk,ordinal:0}).execute(),M7("Created new draft version %s (pk=%d) for %s, version_number=%d",T1.objectId,T1.pk,m,h4)}let i8=!await G8(x,T8,{id:m,sessionId:d}),$6=await e8(x,T8,{id:m});return y.factory(!$6,I.notFound,`${w8} not found after draft save: ${m}`,"NOT_FOUND"),{...$6,lockLost:i8}},m8=async(x,T8,{id:m,sessionId:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:r,seq:t}=d,e=e6.getContentTypeLabel(r);await L(x);let w8=Q6(),j8=new Date(Date.now()-yJ).toISOString(),M8=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","=",r).where("e.seq","=",t).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!M8,I.notFound,`${e} not found: ${m}`,"NOT_FOUND");let{id:h8,entity_type_id:o8}=M8;if(M8.subtype)o8=await d6.readEntityTypeId(x,T8,r,null);let _6=u("draft_version",o8),r6=u("latest_published_version",o8);if(!_6)throw Error(`System field definition "draft_version" not found for base type ${r}`);let a=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",h8).where("field_definition_id","=",_6.pk).executeTakeFirst();y.factory(!a,I.notFound,`No draft found for ${e}: ${m}`,"DRAFT_NOT_FOUND");let n=a.target_entity_id,Q=u("edit_session_id",o8),q8=u("edit_last_activity_at",o8),_8=u("edit_started_at",o8);if($8&&Q&&q8){let k$=await x.selectFrom("string_fields").select("value").where("entity_id","=",h8).where("field_definition_id","=",Q.pk).executeTakeFirst();if(k$&&k$.value!==$8){let Lq=await x.selectFrom("date_fields").select("value").where("entity_id","=",h8).where("field_definition_id","=",q8.pk).executeTakeFirst();if(Lq&&Lq.value>=j8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let i8=await d6.readEntityTypeId(x,T8,"v",null),$6=u("version_number",i8),X6=u("published_at",i8),k6=u("document",i8);if(!$6||!X6||!k6)throw Error("Required version field definitions not found");let y6=(await x.selectFrom("int_fields").select("value").where("entity_id","=",n).where("field_definition_id","=",$6.pk).executeTakeFirst())?.value??1,T1=((await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(k$)=>k$.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",$6.pk)).innerJoin("date_fields as df",(k$)=>k$.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",X6.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",k6.pk).where("orf.target_entity_id","=",h8).executeTakeFirst())?.max_version??0)+1;if(y6!==T1)await x.updateTable("int_fields").set({value:T1}).where("entity_id","=",n).where("field_definition_id","=",$6.pk).execute();if(await x.insertInto("date_fields").values({entity_id:n,field_definition_id:X6.pk,value:w8,ordinal:0}).execute(),r6)if(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",h8).where("field_definition_id","=",r6.pk).executeTakeFirst())await x.updateTable("obj_ref_fields").set({target_entity_id:n}).where("entity_id","=",h8).where("field_definition_id","=",r6.pk).execute();else await x.insertInto("obj_ref_fields").values({entity_id:h8,field_definition_id:r6.pk,target_entity_id:n,ordinal:0}).execute();if(await x.deleteFrom("obj_ref_fields").where("entity_id","=",h8).where("field_definition_id","=",_6.pk).execute(),Q)await x.deleteFrom("string_fields").where("entity_id","=",h8).where("field_definition_id","=",Q.pk).execute();if(_8)await x.deleteFrom("date_fields").where("entity_id","=",h8).where("field_definition_id","=",_8.pk).execute();if(q8)await x.deleteFrom("date_fields").where("entity_id","=",h8).where("field_definition_id","=",q8.pk).execute();M7("Published version %d for %s (version pk=%d)",T1,m,n);let y7=await e8(x,T8,{id:m});return y.factory(!y7,I.notFound,`${e} not found after publish: ${m}`,"NOT_FOUND"),y7},i=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:d,seq:r}=$8,t=e6.getContentTypeLabel(d);await L(x);let e=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","=",d).where("e.seq","=",r).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`${t} not found: ${m}`,"NOT_FOUND");let{id:w8,entity_type_id:j8}=e;if(e.subtype)j8=await d6.readEntityTypeId(x,T8,d,null);let M8=u("draft_version",j8);if(!M8)throw Error(`System field definition "draft_version" not found for base type ${d}`);let h8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",w8).where("field_definition_id","=",M8.pk).executeTakeFirst();if(h8){let o8=h8.target_entity_id;await x.deleteFrom("obj_ref_fields").where("entity_id","=",w8).where("field_definition_id","=",M8.pk).execute(),await N4`DELETE FROM entity_content_fts WHERE rowid = ${o8}`.execute(x),await x.deleteFrom("entities").where("id","=",o8).execute(),M7("Discarded draft version (pk=%d) for %s",o8,m)}let t8=await e8(x,T8,{id:m});return y.factory(!t8,I.notFound,`${t} not found after discard: ${m}`,"NOT_FOUND"),t8},l=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;let{typeCode:d,seq:r}=$8;await L(x);let t=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","=",d).where("e.seq","=",r).where("e.deleted_at","is",null).executeTakeFirst();if(!t)return null;let{id:e,entity_type_id:w8}=t;if(t.subtype)w8=await d6.readEntityTypeId(x,T8,d,null);let j8=u("draft_version",w8);if(!j8)return null;let M8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",e).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!M8)return null;let h8=M8.target_entity_id,t8=await x.selectFrom("entity_content").select(["content_text","updated_at"]).where("entity_id","=",h8).executeTakeFirst();if(!t8)return null;return{entityId:t.object_id,content:t8.content_text,updatedAt:t8.updated_at}},c=async(x,T8,{id:m,versionNumber:$8})=>{let d=t1(m);if(!d)return null;let{typeCode:r,seq:t}=d;await L(x);let e=await x.selectFrom("entities").select(["id","object_id"]).where("store_id","=",Y).where("type_code","=",r).where("seq","=",t).where("deleted_at","is",null).executeTakeFirst();if(!e)return null;let w8=e.id,j8=await d6.readEntityTypeId(x,T8,"v",null),M8=u("document",j8),h8=u("version_number",j8),t8=u("published_at",j8);if(!M8||!h8)return null;let o8=x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(n)=>n.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",h8.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","=",M8.pk).where("orf.target_entity_id","=",w8).where("if.value","=",$8).where("ve.deleted_at","is",null),_6;if(t8)_6=await o8.innerJoin("date_fields as df",(n)=>n.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",t8.pk)).select("df.value as published_at").executeTakeFirst();else _6=await o8.executeTakeFirst();if(!_6)return null;let r6=_6.version_pk,a=await x.selectFrom("entity_content").select("content_text").where("entity_id","=",r6).executeTakeFirst();return{entityId:e.object_id,versionNumber:$8,content:a?.content_text??null,publishedAt:_6.published_at??null}},W8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return[];let{typeCode:d,seq:r}=$8;await L(x);let t=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d).where("seq","=",r).where("deleted_at","is",null).executeTakeFirst();if(!t)return[];let e=t.id,w8=await d6.readEntityTypeId(x,T8,"v",null),j8=u("document",w8),M8=u("version_number",w8),h8=u("published_at",w8);if(!j8||!M8||!h8)return[];return(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(o8)=>o8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",M8.pk)).innerJoin("date_fields as df",(o8)=>o8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",h8.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","=",e).where("ve.deleted_at","is",null).orderBy("if.value","desc").execute()).map((o8)=>({versionNumber:o8.version_number,publishedAt:o8.published_at}))},F=async(x,T8,m,$8,d)=>{let r=await v(x,m),t=await x.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=",d).where("e.parent_folder_id",r===null?"is":"=",r).where("e.name","=",$8).where("e.deleted_at","is",null).executeTakeFirst();if(!t)return null;return e8(x,T8,{id:t.object_id})},H8=async(x,T8,{parentId:m,type:$8})=>{let d=await v(x,m),r=await x.selectFrom("entities as e").select("e.object_id").where("e.store_id","=",Y).where("e.type_code","=",$8).where("e.parent_folder_id",d===null?"is":"=",d).where("e.deleted_at","is",null).execute(),t=[];for(let e of r){let w8=await e8(x,T8,{id:e.object_id});if(w8)t.push(w8)}return t},o=async(x,T8,{id:m,sessionId:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),await L(x);let r=Q6(),t=new Date(Date.now()-yJ).toISOString(),e=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","=",d.typeCode).where("e.seq","=",d.seq).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:w8,entity_type_id:j8}=e;if(e.subtype)j8=await d6.readEntityTypeId(x,T8,d.typeCode,null);let M8=u("edit_session_id",j8),h8=u("edit_started_at",j8),t8=u("edit_last_activity_at",j8);if(!M8||!h8||!t8)throw Error("Edit state field definitions not found");let o8=await x.selectFrom("string_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",M8.pk).executeTakeFirst(),_6=await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",h8.pk).executeTakeFirst(),r6=await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",t8.pk).executeTakeFirst(),a=o8?.value??null,n=_6?.value??null,Q=r6?.value??null;if(a)if(a===$8)return await x.updateTable("date_fields").set({value:r}).where("entity_id","=",w8).where("field_definition_id","=",h8.pk).execute(),await x.updateTable("date_fields").set({value:r}).where("entity_id","=",w8).where("field_definition_id","=",t8.pk).execute(),{success:!0};else if(Q&&Q<t)return await x.updateTable("string_fields").set({value:$8}).where("entity_id","=",w8).where("field_definition_id","=",M8.pk).execute(),await x.updateTable("date_fields").set({value:r}).where("entity_id","=",w8).where("field_definition_id","=",h8.pk).execute(),await x.updateTable("date_fields").set({value:r}).where("entity_id","=",w8).where("field_definition_id","=",t8.pk).execute(),{success:!0};else return{success:!1,meta:{lockedBy:a,lockedSince:n,timeoutSeconds:yJ/1000}};else return await x.insertInto("string_fields").values({entity_id:w8,field_definition_id:M8.pk,value:$8,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:w8,field_definition_id:h8.pk,value:r,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:w8,field_definition_id:t8.pk,value:r,ordinal:0}).execute(),{success:!0}},G8=async(x,T8,{id:m,sessionId:$8})=>{let d=t1(m);if(!d)return!1;await L(x);let r=Q6(),t=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","=",d.typeCode).where("e.seq","=",d.seq).executeTakeFirst();if(!t)return!1;let{id:e,entity_type_id:w8}=t;if(t.subtype)w8=await d6.readEntityTypeId(x,T8,d.typeCode,null);let j8=u("edit_session_id",w8),M8=u("edit_started_at",w8),h8=u("edit_last_activity_at",w8);if(!j8||!h8)return!1;let t8=await x.selectFrom("string_fields").select("value").where("entity_id","=",e).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!t8||t8.value!==$8)return!1;return((await x.updateTable("date_fields").set({value:r}).where("entity_id","=",e).where("field_definition_id","=",h8.pk).execute())[0]?.numUpdatedRows||0)>0},Z8=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),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","=",$8.typeCode).where("e.seq","=",$8.seq).executeTakeFirst();y.factory(!d,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:r,entity_type_id:t}=d;if(d.subtype)t=await d6.readEntityTypeId(x,T8,$8.typeCode,null);let e=u("edit_session_id",t),w8=u("edit_started_at",t),j8=u("edit_last_activity_at",t);if(e)await x.deleteFrom("string_fields").where("entity_id","=",r).where("field_definition_id","=",e.pk).execute();if(w8)await x.deleteFrom("date_fields").where("entity_id","=",r).where("field_definition_id","=",w8.pk).execute();if(j8)await x.deleteFrom("date_fields").where("entity_id","=",r).where("field_definition_id","=",j8.pk).execute()},f8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;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","=",$8.typeCode).where("e.seq","=",$8.seq).executeTakeFirst();if(!d)return null;let{id:r,entity_type_id:t}=d;if(d.subtype)t=await d6.readEntityTypeId(x,T8,$8.typeCode,null);let e=u("edit_session_id",t),w8=u("edit_started_at",t),j8=u("edit_last_activity_at",t);if(!e)return null;let M8=await x.selectFrom("string_fields").select("value").where("entity_id","=",r).where("field_definition_id","=",e.pk).executeTakeFirst();if(!M8)return null;let h8=null,t8=null;if(w8)h8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",r).where("field_definition_id","=",w8.pk).executeTakeFirst())?.value??null;if(j8)t8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",r).where("field_definition_id","=",j8.pk).executeTakeFirst())?.value??null;return{sessionId:M8.value,startedAt:h8,lastActivityAt:t8}},S8=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"f","root_s"),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.entity_type_id","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:r,object_id:t}=d;Z.set(r,t);let e=await M(x,r),w8=await p(x,r),{entity:j8,mutationApi:M8}=oq.createFromRow(d,t,d.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:r}},Q8=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"s",null),d=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",$8).where("entities.deleted_at","is",null).execute(),r=[];for(let t of d){let{id:e,object_id:w8}=t;Z.set(e,w8);let j8=await M(x,e),M8=await p(x,e),{entity:h8,mutationApi:t8}=VO.createFromRow(t,w8,t.parent_object_id,j8);for(let o8 of M8)t8.setField(o8.getDefinition().getName(),o8);r.push({entity:h8,mutationApi:t8,pk:e})}return r},C6=async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);if(!d)return null;if(d.typeCode!=="s")return null;let r=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","s").where("entities.deleted_at","is",null).executeTakeFirst();if(!r)return null;let t=r.id;Z.set(t,m);let e=await M(x,t),w8=await p(x,t),{entity:j8,mutationApi:M8}=VO.createFromRow(r,m,r.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:t}},$$=async(x,T8,{storeCode:m,parentId:$8,name:d})=>{if(m!==void 0)j(m);y.factory(!d,I.validation,"Story name is required","MISSING_NAME");let r=Q6(),t=await d6.readEntityTypeId(x,T8,"s",null),e=await p1.nextSeq(x,"store",Y,"s"),w8=await v(x,$8),j8=cz(K,"s",e),M8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:t,type_code:"s",seq:e,parent_folder_id:w8,parent_object_id:$8,name:d,created_at:r,updated_at:r}).returningAll().executeTakeFirstOrThrow(),h8=M8.id;Z.set(h8,j8);let t8=await M(x,h8),{entity:o8,mutationApi:_6}=VO.createFromRow(M8,j8,$8,t8);return{entity:o8,mutationApi:_6,pk:h8}},T7=async(x,T8,{id:m,name:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let r=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!r,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let t=r.id;Z.set(t,m);let e=r.name,w8=await M(x,t),j8=await x.updateTable("entities").set({name:$8,updated_at:Q6()}).where("id","=",t).returningAll().executeTakeFirstOrThrow(),M8=await M(x,t),h8=await p(x,t),{entity:t8,mutationApi:o8}=VO.createFromRow(j8,m,j8.parent_object_id,M8);for(let _6 of h8)o8.setField(_6.getDefinition().getName(),_6);return{entity:t8,mutationApi:o8,pk:t,oldValues:{name:e,path:w8}}},g7=async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);y.factory(!d,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let r=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!r,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let t=r.id;Z.set(t,m);let e=await M(x,t),w8=await f(x,t),j8=Q6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[t,...w8]).execute();let M8=[];for(let h8 of w8){let t8=await x.selectFrom("entities").select("object_id").where("id","=",h8).executeTakeFirst();if(t8)M8.push(t8.object_id)}return{id:m,deleted:!0,descendantCount:w8.length,path:e,descendantIds:M8,deletedPks:[t,...w8]}},b7=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"f","root_j"),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.entity_type_id","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:r,object_id:t}=d;Z.set(r,t);let e=await M(x,r),w8=await p(x,r),{entity:j8,mutationApi:M8}=oq.createFromRow(d,t,d.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:r}},L3=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"j",null),d=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",$8).where("entities.deleted_at","is",null).execute(),r=[];for(let t of d){let{id:e,object_id:w8}=t;Z.set(e,w8);let j8=await M(x,e),M8=await p(x,e),{entity:h8,mutationApi:t8}=Zk.createFromRow(t,w8,t.parent_object_id,j8);for(let o8 of M8)t8.setField(o8.getDefinition().getName(),o8);r.push({entity:h8,mutationApi:t8,pk:e})}return r},e$=async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);if(!d)return null;if(d.typeCode!=="j")return null;let r=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","j").where("entities.deleted_at","is",null).executeTakeFirst();if(!r)return null;let t=r.id;Z.set(t,m);let e=await M(x,t),w8=await p(x,t),{entity:j8,mutationApi:M8}=Zk.createFromRow(r,m,r.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:t}},y8=Object.freeze({...H,getCodes:X,getType:P,getCode:w,getPk:T,toJSON:G,createFolder:s,readFolder:A8,updateFolder:v8,deleteFolder:c8,isDuplicateNameInParent:z6,findFolderByName:u8,listFolderContents:I8,getFolderByPath:B8,readRootFolderForType:q6,createContent:n8,readContent:e8,updateContent:W6,updateEntityType:N6,deleteTypeScopedFieldValues:g6,deleteContent:$1,saveDraft:r1,readDraft:l,publishContent:m8,discardDraft:i,readVersion:c,getVersions:W8,findContentByName:F,listContent:H8,createFieldDefinition:j6,readFieldDefinition:O6,findFieldDefinitionByName:w6,resolveFieldDefinition:f6,getFieldDefinitionsForOwner:E6,getFieldDefinitionsForEntityType:N8,resolveEntityTypePk:P8,deleteFieldDefinition:g8,createEntityType:X8,setFieldValue:F8,deleteFieldValue:l8,getFieldValue:Y6,setEditState:o,clearEditState:Z8,getEditState:f8,readStoryRootFolder:S8,listStories:Q8,readStory:C6,createStory:$$,renameStory:T7,deleteStory:g7,readJobRootFolder:b7,listJobs:L3,readJob:e$,createJob:async(x,T8,{storeCode:m,parentId:$8,name:d})=>{if(m!==void 0)j(m);y.factory(!d,I.validation,"Job name is required","MISSING_NAME");let r=Q6(),t=await d6.readEntityTypeId(x,T8,"j",null),e=await p1.nextSeq(x,"store",Y,"j"),w8=await v(x,$8),j8=cz(K,"j",e),M8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:t,type_code:"j",seq:e,parent_folder_id:w8,parent_object_id:$8,name:d,created_at:r,updated_at:r}).returningAll().executeTakeFirstOrThrow(),h8=M8.id;Z.set(h8,j8);let t8=await M(x,h8),{entity:o8,mutationApi:_6}=Zk.createFromRow(M8,j8,$8,t8);return{entity:o8,mutationApi:_6,pk:h8}},deleteJob:async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);y.factory(!d,I.validation,`Invalid job ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="j",I.validation,`Not a job ID: ${m}`,"INVALID_TYPE");let r=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=","j").where("deleted_at","is",null).executeTakeFirst();y.factory(!r,I.notFound,`Job not found: ${m}`,"JOB_NOT_FOUND");let t=r.id;Z.set(t,m);let e=await M(x,t),w8=await f(x,t),j8=Q6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[t,...w8]).execute();let M8=[];for(let h8 of w8){let t8=await x.selectFrom("entities").select("object_id").where("id","=",h8).executeTakeFirst();if(t8)M8.push(t8.object_id)}return{id:m,deleted:!0,descendantCount:w8.length,path:e,descendantIds:M8,deletedPks:[t,...w8]}},createAsset:async(x,T8,{storeCode:m,hash:$8,mimeType:d,sizeBytes:r,originalFilename:t,widthPx:e,heightPx:w8,displayWidth:j8,displayHeight:M8})=>{if(m!==void 0)j(m);let h8=Q6(),t8=await d6.readEntityTypeId(x,T8,"a",null),o8=await p1.nextSeq(x,"store",Y,"a"),_6=cz(K,"a",o8),r6=await x.insertInto("entities").values({store_id:Y,object_id:_6,entity_type_id:t8,type_code:"a",seq:o8,parent_folder_id:null,parent_object_id:null,name:t,created_at:h8,updated_at:h8}).returningAll().executeTakeFirstOrThrow();await x.insertInto("assets").values({entity_id:r6.id,hash:$8,mime_type:d,size_bytes:r,original_filename:t,width_px:e,height_px:w8,display_width:j8,display_height:M8}).execute();let a=r6.id;Z.set(a,_6);let{entity:n,mutationApi:Q}=Hk.createFromRow({...r6,hash:$8,mime_type:d,size_bytes:r,original_filename:t,width_px:e,height_px:w8,display_width:j8,display_height:M8},_6);return{entity:n,mutationApi:Q,pk:a}},readAsset:async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);if(!d)return null;if(d.typeCode!=="a")return null;let r=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();if(!r)return null;let t=r.id;Z.set(t,m);let{entity:e,mutationApi:w8}=Hk.createFromRow(r,m);return{entity:e,mutationApi:w8,pk:t}},listAssets:async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=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(),d=[];for(let r of $8){let{id:t,object_id:e}=r;Z.set(t,e);let{entity:w8,mutationApi:j8}=Hk.createFromRow(r,e);d.push({entity:w8,mutationApi:j8,pk:t})}return d},deleteAsset:async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);y.factory(!d,I.validation,`Invalid asset ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="a",I.validation,`Not an asset ID: ${m}`,"INVALID_TYPE");let r=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!r,I.notFound,`Asset not found: ${m}`,"ASSET_NOT_FOUND");let t=Q6();return await x.updateTable("entities").set({deleted_at:t}).where("id","=",r.id).execute(),Z.set(r.id,m),{id:m,deleted:!0,hash:r.hash}},findEntitiesByFieldValue:async(x,T8,{typeCode:m,subtype:$8,fieldName:d,fieldValue:r})=>{let t=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","=",m).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",d).where("field_definitions.owner_entity_id","is",null).where("string_fields.value","=",r);if($8!==void 0&&$8!==null)t=t.where("entity_types.subtype","=",$8);let e=await t.execute(),w8=[];for(let j8 of e){let M8=await M(x,j8.id);w8.push({id:j8.id,object_id:j8.object_id,name:j8.name,path:M8,type_code:j8.type_code,subtype:j8.subtype})}return w8}}),G6=Object.freeze({...O});return{store:y8,mutationApi:G6}},hP8=Object.freeze({create:f_6});var N_6=({inner:$,folderCache:K,contentCache:q,fieldDefinitionCache:Y,storyCache:J,jobCache:z,assetCache:W})=>{let Z=async(F,H8,o,G8)=>{let Z8=await $.createFolder(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{K.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},H=async(F,H8,{id:o})=>{let G8=K.get(o);if(G8)return G8.getEntity();let Z8=await $.readFolder(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;if(o.length>=2&&o[1]!=="s")K.set(o,o6.create(f8,S8,Q8));return f8},O=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=K.get(Z8),S8=Z8&&Z8.length>1&&Z8[1]==="j",Q8=S8?z.get(Z8):null;if(S8)z.remove(Z8);let C6=await $.updateFolder(F,H8,o),$$=o.name!==void 0&&o.name!==C6.oldValues.name||o.parentId!==void 0&&o.parentId!==C6.oldValues.parentId;return G8(()=>{if(f8){let g7=f8.getMutationApi();if(o.name!==void 0)g7.setName(o.name);if(o.parentId!==void 0)g7.setParentId(o.parentId);g7.setUpdatedAt(C6.entity.getUpdatedAt()),g7.setPath(C6.entity.getPath())}else{let{entity:g7,mutationApi:b7,pk:L3}=C6;K.set(Z8,o6.create(g7,b7,L3))}if($$){let b7=C6.oldValues.path+"/";for(let[L3,e$]of K.entries())if(e$.getEntity().getPath().startsWith(b7))K.remove(L3);for(let[L3,e$]of q.entries())if(e$.getEntity().getPath().startsWith(b7))q.remove(L3)}}),{entity:f8?f8.getEntity():C6.entity,oldValues:C6.oldValues}},X=async(F,H8,{id:o},G8)=>{let Z8=K.get(o),f8=Z8?Z8.getEntity().getPath():null,S8=await $.deleteFolder(F,H8,{id:o});return G8(()=>{K.remove(o);for(let Q8 of S8.descendantIds||[])K.remove(Q8)}),{...S8,path:f8}},P=async(F,H8,o)=>{let G8=await $.listFolderContents(F,H8,o);for(let Z8 of G8)K.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},w=async(F,H8,o)=>{let G8=await $.getFolderByPath(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8,Q8=Z8.getObjectId();if(Q8.length>=2&&Q8[1]!=="s")K.set(Q8,o6.create(Z8,f8,S8));return Z8},T=async(F,H8,o,G8)=>{let Z8=await $.findFolderByName(F,H8,o,G8);if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return K.set(f8.getObjectId(),o6.create(f8,S8,Q8)),f8},G=async(F,H8,o)=>{let G8=await $.readRootFolderForType(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8;return K.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},j=async(F,H8,o,G8,Z8)=>{return $.isDuplicateNameInParent(F,H8,o,G8,Z8)},v=async(F,H8,o,G8)=>{let Z8=await $.createContent(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{q.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},M=async(F,H8,{id:o})=>{let G8=q.get(o);if(G8)return G8.getEntity();let Z8=await $.readContent(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return q.set(o,o6.create(f8,S8,Q8)),f8},f=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.updateContent(F,H8,o);return G8(()=>{if(f8){let Q8=f8.getMutationApi();if(o.name!==void 0)Q8.setName(o.name);if(o.parentId!==void 0)Q8.setParentId(o.parentId);Q8.setUpdatedAt(S8.entity.getUpdatedAt()),Q8.setPath(S8.entity.getPath())}else{let{entity:Q8,mutationApi:C6,pk:$$}=S8;q.set(Z8,o6.create(Q8,C6,$$))}}),f8?f8.getEntity():S8.entity},k=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.updateEntityType(F,H8,o);return q.remove(Z8),f8.entity},R=async(F,H8,o)=>{return $.deleteTypeScopedFieldValues(F,H8,o)},C=async(F,H8,{id:o},G8)=>{let Z8=q.get(o),f8=Z8?Z8.getEntity().getPath():null,S8=await $.deleteContent(F,H8,{id:o});return G8(()=>{q.remove(o)}),{...S8,path:f8}},E=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.saveDraft(F,H8,o);G8(()=>{if(f8){let C6=f8.getMutationApi();C6.setDraftContent(S8.entity.getDraftContent()),C6.setHasDraft(S8.entity.hasDraftContent()),C6.setUpdatedAt(S8.entity.getUpdatedAt())}else{let{entity:C6,mutationApi:$$,pk:T7}=S8;q.set(Z8,o6.create(C6,$$,T7))}});let Q8=f8?f8.getEntity():S8.entity;if(S8.lockLost!==void 0)return{entity:Q8,lockLost:S8.lockLost};return Q8},h=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.publishContent(F,H8,o);if(f8){let Q8=f8.getMutationApi();return Q8.setPublishedVersionNumber(S8.entity.getPublishedVersionNumber()),Q8.setPublishedContent(S8.entity.getPublishedContent()),Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(S8.entity.getUpdatedAt()),Q8.setEditState(null),f8.getEntity()}else return G8(()=>{let{entity:Q8,mutationApi:C6,pk:$$}=S8;q.set(Z8,o6.create(Q8,C6,$$))}),S8.entity},g=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.discardDraft(F,H8,o);return G8(()=>{if(f8){let Q8=f8.getMutationApi();Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(S8.entity.getUpdatedAt())}else{let{entity:Q8,mutationApi:C6,pk:$$}=S8;q.set(Z8,o6.create(Q8,C6,$$))}}),f8?f8.getEntity():S8.entity},S=async(F,H8,o)=>{return $.readDraft(F,H8,o)},N=async(F,H8,o)=>{return $.readVersion(F,H8,o)},L=async(F,H8,o)=>{return $.getVersions(F,H8,o)},u=async(F,H8,o,G8,Z8)=>{let f8=await $.findContentByName(F,H8,o,G8,Z8);if(!f8)return null;let{entity:S8,mutationApi:Q8,pk:C6}=f8;return q.set(S8.getObjectId(),o6.create(S8,Q8,C6)),S8},p=async(F,H8,o)=>{let G8=await $.listContent(F,H8,o);for(let Z8 of G8)q.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},s=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.setEditState(F,H8,o);return G8(()=>{q.remove(Z8)}),f8},A8=async(F,H8,o)=>{return $.getEditState(F,H8,o)},v8=async(F,H8,o,G8)=>{let{id:Z8}=o;await $.clearEditState(F,H8,o),G8(()=>{q.remove(Z8)})},c8=async(F,H8,o,G8)=>{let Z8=await $.createFieldDefinition(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{Y.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},z6=async(F,H8,{id:o})=>{let G8=Y.get(o);if(G8)return G8.getEntity();let Z8=await $.readFieldDefinition(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return Y.set(o,o6.create(f8,S8,Q8)),f8},u8=async(F,H8,o,G8)=>{let Z8=await $.findFieldDefinitionByName(F,H8,o,G8);if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return Y.set(f8.getObjectId(),o6.create(f8,S8,Q8)),f8},I8=async(F,H8,o)=>{let G8=await $.getFieldDefinitionsForOwner(F,H8,o);for(let Z8 of G8)Y.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},B8=async(F,H8,o)=>{let G8=await $.getFieldDefinitionsForEntityType(F,H8,o);for(let Z8 of G8)Y.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},q6=async(F,H8,o)=>{return $.resolveEntityTypePk(F,H8,o)},j6=async(F,H8,o)=>{let G8=await $.resolveFieldDefinition(F,H8,o),{entity:Z8,mutationApi:f8,pk:S8}=G8;return Y.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},O6=async(F,H8,{id:o},G8)=>{let Z8=await $.deleteFieldDefinition(F,H8,{id:o});return G8(()=>{Y.remove(o)}),Z8},w6=async(F,H8,o,G8)=>{let{entityId:Z8}=o,f8=await $.setFieldValue(F,H8,o);return G8(()=>{let S8=K.get(Z8)||q.get(Z8)||J.get(Z8)||z.get(Z8);if(S8){let Q8=S8.getMutationApi(),C6=f8.entity.getField(f8.fieldName);Q8.setField(f8.fieldName,C6)}}),f8.entity},f6=async(F,H8,o)=>{return $.getFieldValue(F,H8,o)},E6=async(F,H8,o,G8)=>{let{entityId:Z8}=o,f8=await $.deleteFieldValue(F,H8,o);G8(()=>{let S8=K.get(Z8)||q.get(Z8)||J.get(Z8)||z.get(Z8);if(S8)S8.getMutationApi().removeField(f8.fieldName)})},P8=async(F,H8,o,G8)=>{let Z8=await $.createStory(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{let C6=f8.getObjectId();if(!J.get(C6))J.set(C6,o6.create(f8,S8,Q8))}),f8},X8=async(F,H8,{id:o})=>{let G8=J.get(o);if(G8)return G8.getEntity();let Z8=await $.readStory(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return J.set(o,o6.create(f8,S8,Q8)),f8},N8=async(F,H8,o)=>{let G8=await $.listStories(F,H8,o);for(let Z8 of G8){let{entity:f8,mutationApi:S8,pk:Q8}=Z8;J.set(f8.getObjectId(),o6.create(f8,S8,Q8))}return G8.map((Z8)=>Z8.entity)},g8=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.renameStory(F,H8,o),{entity:S8,mutationApi:Q8,pk:C6}=f8;return G8(()=>{let $$=J.get(Z8);if($$){let T7=$$.getMutationApi();T7.setName(S8.getName()),T7.setPath(S8.getPath())}else J.set(Z8,o6.create(S8,Q8,C6))}),S8},F8=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.deleteStory(F,H8,o);return G8(()=>{J.remove(Z8);for(let S8 of f8.descendantIds){let Q8=S8[0];if(S8.startsWith(Q8+"d")||S8.startsWith(Q8+"t"))q.remove(S8);else if(S8.startsWith(Q8+"f"))K.remove(S8)}}),f8},l8=async(F,H8,o)=>{let G8=await $.readStoryRootFolder(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8;return K.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},Y6=async(F,H8,o,G8)=>{let Z8=await $.createJob(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{let C6=f8.getObjectId();if(!z.get(C6))z.set(C6,o6.create(f8,S8,Q8))}),f8},E8=async(F,H8,{id:o})=>{let G8=z.get(o);if(G8)return G8.getEntity();let Z8=await $.readJob(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return z.set(o,o6.create(f8,S8,Q8)),f8},p8=async(F,H8,o)=>{let G8=await $.listJobs(F,H8,o);for(let Z8 of G8){let{entity:f8,mutationApi:S8,pk:Q8}=Z8;z.set(f8.getObjectId(),o6.create(f8,S8,Q8))}return G8.map((Z8)=>Z8.entity)},n8=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.deleteJob(F,H8,o);return G8(()=>{z.remove(Z8);for(let S8 of f8.descendantIds){let Q8=S8[0];if(S8.startsWith(Q8+"d")||S8.startsWith(Q8+"t"))q.remove(S8);else if(S8.startsWith(Q8+"f"))K.remove(S8)}}),f8},e8=async(F,H8,o)=>{let G8=await $.readJobRootFolder(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8;return K.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},W6=async(F,H8,o,G8)=>{let Z8=await $.createAsset(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{W.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},N6=async(F,H8,{id:o})=>{let G8=W.get(o);if(G8)return G8.getEntity();let Z8=await $.readAsset(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return W.set(o,o6.create(f8,S8,Q8)),f8},g6=async(F,H8,o)=>{let G8=await $.listAssets(F,H8,o),Z8=[];for(let f8 of G8){let{entity:S8,mutationApi:Q8,pk:C6}=f8;W.set(S8.getObjectId(),o6.create(S8,Q8,C6)),Z8.push(S8)}return Z8},$1=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.deleteAsset(F,H8,o);return G8(()=>{W.remove(Z8)}),f8},r1=async(F,H8,o)=>{return $.findEntitiesByFieldValue(F,H8,o)},m8=(F)=>{K.remove(F)},i=(F)=>{q.remove(F)},l=(F)=>{J.remove(F)},c=(F)=>{z.remove(F)};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:R,deleteContent:C,saveDraft:E,readDraft:S,publishContent:h,discardDraft:g,readVersion:N,getVersions:L,findContentByName:u,listContent:p,setEditState:s,getEditState:A8,clearEditState:v8,createFieldDefinition:c8,readFieldDefinition:z6,findFieldDefinitionByName:u8,getFieldDefinitionsForOwner:I8,getFieldDefinitionsForEntityType:B8,resolveEntityTypePk:q6,resolveFieldDefinition:j6,deleteFieldDefinition:O6,createEntityType:$.createEntityType,setFieldValue:w6,getFieldValue:f6,deleteFieldValue:E6,createStory:P8,renameStory:g8,readStory:X8,listStories:N8,deleteStory:F8,readStoryRootFolder:l8,createJob:Y6,readJob:E8,listJobs:p8,deleteJob:n8,readJobRootFolder:e8,createAsset:W6,readAsset:N6,listAssets:g6,deleteAsset:$1,findEntitiesByFieldValue:r1,evictFolder:m8,evictContent:i,evictStory:l,evictJob:c})},EP8=Object.freeze({create:N_6});var R_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}})},_O=Object.freeze({create:R_6});var A6=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",FIELD_DEFINITION_CREATED:"fieldDefinitionCreated",FIELD_DEFINITION_DELETED:"fieldDefinitionDeleted",ASSET_CREATED:"assetCreated",ASSET_DELETED:"assetDeleted"});var C_6=({inner:$,storeCode:K})=>{let q=_O.create([A6.FOLDER_CREATED,A6.FOLDER_RENAMED,A6.FOLDER_MOVED,A6.FOLDER_DELETED,A6.DOCUMENT_CREATED,A6.DOCUMENT_RENAMED,A6.DOCUMENT_MOVED,A6.DOCUMENT_DELETED,A6.DOCUMENT_PUBLISHED,A6.DRAFT_SAVED,A6.DRAFT_DISCARDED,A6.TEMPLATE_CREATED,A6.TEMPLATE_RENAMED,A6.TEMPLATE_MOVED,A6.TEMPLATE_DELETED,A6.TEMPLATE_PUBLISHED,A6.TEMPLATE_DRAFT_SAVED,A6.TEMPLATE_DRAFT_DISCARDED,A6.EDIT_STATE_ACQUIRED,A6.EDIT_STATE_REFRESHED,A6.EDIT_STATE_CLEARED,A6.STORY_CREATED,A6.STORY_RENAMED,A6.STORY_DELETED,A6.JOB_CREATED,A6.JOB_DELETED,A6.FIELD_ADDED,A6.FIELD_VALUE_CHANGED,A6.FIELD_REMOVED,A6.FIELD_DEFINITION_CREATED,A6.FIELD_DEFINITION_DELETED,A6.ASSET_CREATED,A6.ASSET_DELETED]),Y=async(i,l,c)=>{let W8=await $.readFolder(i,l,{id:c});if(!W8)return null;let F=await i.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","=",c).executeTakeFirst();if(F?.entity_type_code==="f"&&F?.entity_type_subtype==="root_d")return"d";if(F?.entity_type_code==="f"&&F?.entity_type_subtype==="root_t")return"t";let H8=await $.readRootFolderForType(i,l,"d"),o=await $.readRootFolderForType(i,l,"t"),G8=W8;while(G8&&G8.getParentId()!==null){let Z8=await $.readFolder(i,l,{id:G8.getParentId()});if(!Z8)break;G8=Z8}if(G8&&G8.getObjectId()===H8?.getObjectId())return"d";else if(G8&&G8.getObjectId()===o?.getObjectId())return"t";return null},J=async(i,l,c,W8)=>{let{parentId:F,subtype:H8}=c,o=await $.createFolder(i,l,c,W8),G8=null;if(H8==="root_d")G8="d";else if(H8==="root_t")G8="t";else{let Z8=await $.readRootFolderForType(i,l,"d"),f8=await $.readRootFolderForType(i,l,"t");if(F===Z8?.getObjectId())G8="d";else if(F===f8?.getObjectId())G8="t";else if(F){let S8=await $.readFolder(i,l,{id:F});if(S8){let Q8=S8;while(Q8&&Q8.getParentId()!==null){let C6=await $.readFolder(i,l,{id:Q8.getParentId()});if(!C6)break;Q8=C6}if(Q8&&Q8.getObjectId()===Z8?.getObjectId())G8="d";else if(Q8&&Q8.getObjectId()===f8?.getObjectId())G8="t"}}}return W8(()=>{q.notify(A6.FOLDER_CREATED,{id:o.getObjectId(),storeCode:K,name:o.getName(),path:o.getPath(),parentFolderId:F,contentType:G8})}),o},z=async(i,l,c)=>{return $.readFolder(i,l,c)},W=async(i,l,c,W8)=>{let{id:F,name:H8,parentId:o}=c,G8=await $.updateFolder(i,l,c,W8),Z8=G8.entity,f8=G8.oldValues.name,S8=G8.oldValues.parentId,Q8=await Y(i,l,F);if(H8!==void 0&&H8!==f8)W8(()=>{q.notify(A6.FOLDER_RENAMED,{id:F,storeCode:K,parentFolderId:Z8.getParentId(),contentType:Q8,oldName:f8,newName:H8,path:Z8.getPath()})});if(o!==void 0&&o!==S8)W8(()=>{q.notify(A6.FOLDER_MOVED,{id:F,storeCode:K,contentType:Q8,oldParentFolderId:S8,parentFolderId:o,path:Z8.getPath()})});return Z8},Z=async(i,l,c,W8)=>{let{id:F}=c,o=(await $.readFolder(i,l,{id:F}))?.getParentId(),G8=await Y(i,l,F),Z8=await $.deleteFolder(i,l,c,W8);return W8(()=>{q.notify(A6.FOLDER_DELETED,{id:F,storeCode:K,parentFolderId:o,contentType:G8,path:Z8.path,descendantCount:Z8.descendantIds?.length||0})}),Z8},H=async(i,l,c)=>{return $.listFolderContents(i,l,c)},O=async(i,l,c)=>{return $.getFolderByPath(i,l,c)},X=async(i,l,c,W8)=>{return $.findFolderByName(i,l,c,W8)},P=async(i,l,c)=>{return $.readRootFolderForType(i,l,c)},w=async(i,l,c,W8,F)=>{return $.isDuplicateNameInParent(i,l,c,W8,F)},T=async(i,l,c,W8)=>{let{type:F,parentId:H8}=c,o=await $.createContent(i,l,c,W8),G8=F==="t"?A6.TEMPLATE_CREATED:A6.DOCUMENT_CREATED;return W8(()=>{q.notify(G8,{storeCode:K,id:o.getObjectId(),type:F,parentFolderId:H8,name:o.getName(),path:o.getPath()})}),o},G=async(i,l,c)=>{return $.readContent(i,l,c)},j=async(i,l,c,W8)=>{let{id:F,name:H8,parentId:o}=c,G8=e6.getTypeFromId(F),Z8=await $.readContent(i,l,{id:F}),f8=Z8?.getName(),S8=Z8?.getParentId(),Q8=await $.updateContent(i,l,c,W8),C6=G8==="t"?A6.TEMPLATE_RENAMED:A6.DOCUMENT_RENAMED,$$=G8==="t"?A6.TEMPLATE_MOVED:A6.DOCUMENT_MOVED;if(H8!==void 0&&H8!==f8)W8(()=>{q.notify(C6,{storeCode:K,id:F,type:G8,parentFolderId:Q8.getParentId(),oldName:f8,newName:H8,path:Q8.getPath()})});if(o!==void 0&&o!==S8)W8(()=>{q.notify($$,{storeCode:K,id:F,type:G8,oldParentFolderId:S8,parentFolderId:o,path:Q8.getPath()})});return Q8},v=async(i,l,c,W8)=>{return $.updateEntityType(i,l,c,W8)},M=async(i,l,c)=>{return $.deleteTypeScopedFieldValues(i,l,c)},f=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),G8=(await $.readContent(i,l,{id:F}))?.getParentId(),Z8=await $.deleteContent(i,l,c,W8),f8=H8==="t"?A6.TEMPLATE_DELETED:A6.DOCUMENT_DELETED;return W8(()=>{q.notify(f8,{storeCode:K,id:F,type:H8,parentFolderId:G8,path:Z8.path})}),Z8},k=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),G8=(await $.readContent(i,l,{id:F}))?.getParentId(),Z8=await $.saveDraft(i,l,c,W8),f8=H8==="t"?A6.TEMPLATE_DRAFT_SAVED:A6.DRAFT_SAVED;return W8(()=>{let S8=Z8.lockLost!==void 0?Z8.entity:Z8;q.notify(f8,{storeCode:K,id:F,type:H8,parentFolderId:G8,updatedAt:S8?S8.getUpdatedAt():null,lockLost:Z8.lockLost})}),Z8},R=async(i,l,c)=>{return $.readDraft(i,l,c)},C=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),o=await $.publishContent(i,l,c,W8),G8=H8==="t"?A6.TEMPLATE_PUBLISHED:A6.DOCUMENT_PUBLISHED;return W8(()=>{q.notify(G8,{storeCode:K,id:F,type:H8,parentFolderId:o.getParentId(),versionNumber:o.getPublishedVersionNumber()})}),{entityId:F,versionNumber:o.getPublishedVersionNumber(),content:o.getPublishedContent(),publishedAt:o.getUpdatedAt()}},E=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),o=await $.discardDraft(i,l,c,W8),G8=H8==="t"?A6.TEMPLATE_DRAFT_DISCARDED:A6.DRAFT_DISCARDED;return W8(()=>{q.notify(G8,{storeCode:K,id:F})}),o},h=async(i,l,c)=>{return $.readVersion(i,l,c)},g=async(i,l,c)=>{return $.getVersions(i,l,c)},S=async(i,l,c,W8,F)=>{return $.findContentByName(i,l,c,W8,F)},N=async(i,l,c)=>{return $.listContent(i,l,c)},L=async(i,l,c,W8)=>{let F=await $.setEditState(i,l,c,W8);if(F.success){let H8=e6.getTypeFromId(c.id);W8(()=>{q.notify(A6.EDIT_STATE_ACQUIRED,{id:c.id,type:H8,storeCode:K,sessionId:c.sessionId})})}return F},u=async(i,l,c)=>{return $.getEditState(i,l,c)},p=async(i,l,c,W8)=>{await $.clearEditState(i,l,c,W8);let F=e6.getTypeFromId(c.id);W8(()=>{q.notify(A6.EDIT_STATE_CLEARED,{id:c.id,type:F,storeCode:K})})},s=async(i,l,c,W8)=>{let F=await $.createFieldDefinition(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_DEFINITION_CREATED,{id:F.getObjectId(),storeCode:K,name:F.getName(),ownerEntityId:F.getOwnerEntityId(),primitiveType:F.getPrimitiveType()})}),F},A8=async(i,l,c)=>{return $.readFieldDefinition(i,l,c)},v8=async(i,l,c,W8)=>{return $.findFieldDefinitionByName(i,l,c,W8)},c8=async(i,l,c)=>{return $.getFieldDefinitionsForOwner(i,l,c)},z6=async(i,l,c)=>{return $.getFieldDefinitionsForEntityType(i,l,c)},u8=async(i,l,c)=>{return $.resolveEntityTypePk(i,l,c)},I8=async(i,l,c)=>{return $.resolveFieldDefinition(i,l,c)},B8=async(i,l,c,W8)=>{let F=await $.deleteFieldDefinition(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_DEFINITION_DELETED,{id:F.getObjectId(),storeCode:K,name:F.getName()})}),F},q6=async(i,l,c,W8)=>{return $.setFieldValue(i,l,c,W8)},j6=async(i,l,c,W8)=>{let{entityId:F,fieldName:H8}=c,{typeCode:o}=e6.parseId(F),G8=await $.setFieldValue(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_ADDED,{entityType:o,entityId:F,fieldName:H8,value:c.value??c.values,storeCode:K})}),G8},O6=async(i,l,c,W8)=>{let{entityId:F,fieldName:H8,_oldValue:o}=c,{typeCode:G8}=e6.parseId(F),Z8=await $.setFieldValue(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_VALUE_CHANGED,{entityType:G8,entityId:F,fieldName:H8,oldValue:o,newValue:c.value??c.values,storeCode:K})}),Z8},w6=async(i,l,c)=>{return $.getFieldValue(i,l,c)},f6=async(i,l,c,W8)=>{return $.deleteFieldValue(i,l,c,W8)},E6=async(i,l,c,W8)=>{let{entityId:F,fieldName:H8}=c,{typeCode:o}=e6.parseId(F),G8=await $.deleteFieldValue(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_REMOVED,{entityType:o,entityId:F,fieldName:H8,storeCode:K})}),G8},P8=async(i,l,c,W8)=>{let{parentId:F,state:H8="prep"}=c,o=await $.createStory(i,l,c,W8);return W8(()=>{q.notify(A6.STORY_CREATED,{id:o.getObjectId(),storeCode:K,name:o.getName(),path:o.getPath(),parentFolderId:F,state:H8})}),o},X8=async(i,l,c)=>{return $.readStory(i,l,c)},N8=async(i,l,c)=>{return $.listStories(i,l,c)},g8=async(i,l,c,W8)=>{let{id:F}=c,H8=await $.renameStory(i,l,c,W8);return W8(()=>{q.notify(A6.STORY_RENAMED,{id:F,storeCode:K,name:H8.getName(),path:H8.getPath()})}),H8},F8=async(i,l,c,W8)=>{let{id:F}=c,o=(await $.readStory(i,l,{id:F}))?.getParentId()??null,G8=await $.deleteStory(i,l,c,W8);return W8(()=>{q.notify(A6.STORY_DELETED,{id:F,storeCode:K,path:G8.path,parentFolderId:o,descendantCount:G8.descendantCount})}),G8},l8=async(i,l,c)=>{return $.readStoryRootFolder(i,l,c)},Y6=async(i,l,c)=>{return $.findEntitiesByFieldValue(i,l,c)},E8=async(i,l,c,W8)=>{let{parentId:F,status:H8="pending"}=c,o=await $.createJob(i,l,c,W8);return W8(()=>{q.notify(A6.JOB_CREATED,{id:o.getObjectId(),storeCode:K,name:o.getName(),path:o.getPath(),parentFolderId:F,status:H8})}),o},p8=async(i,l,c)=>{return $.readJob(i,l,c)},n8=async(i,l,c)=>{return $.listJobs(i,l,c)},e8=async(i,l,c,W8)=>{let{id:F}=c,o=(await $.readJob(i,l,{id:F}))?.getParentId()??null,G8=await $.deleteJob(i,l,c,W8);return W8(()=>{q.notify(A6.JOB_DELETED,{id:F,storeCode:K,path:G8.path,parentFolderId:o,descendantCount:G8.descendantCount})}),G8},W6=async(i,l,c)=>{return $.readJobRootFolder(i,l,c)},N6=async(i,l,c,W8)=>{let F=await $.createAsset(i,l,c,W8);return W8(()=>{q.notify(A6.ASSET_CREATED,{id:F.getObjectId(),storeCode:K,hash:F.getHash(),mimeType:F.getMimeType(),originalFilename:F.getOriginalFilename()})}),F},g6=async(i,l,c)=>{return $.readAsset(i,l,c)},$1=async(i,l,c)=>{return $.listAssets(i,l,c)},r1=async(i,l,c,W8)=>{let{id:F}=c,H8=await $.deleteAsset(i,l,c,W8);return W8(()=>{q.notify(A6.ASSET_DELETED,{id:F,storeCode:K,hash:H8.hash})}),H8};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:R,publishContent:C,discardDraft:E,readVersion:h,getVersions:g,findContentByName:S,listContent:N,setEditState:L,getEditState:u,clearEditState:p,createFieldDefinition:s,readFieldDefinition:A8,findFieldDefinitionByName:v8,getFieldDefinitionsForOwner:c8,getFieldDefinitionsForEntityType:z6,resolveEntityTypePk:u8,resolveFieldDefinition:I8,deleteFieldDefinition:B8,createEntityType:$.createEntityType,setFieldValue:q6,addFieldToEntity:j6,updateFieldValue:O6,getFieldValue:w6,deleteFieldValue:f6,removeFieldFromEntity:E6,createStory:P8,renameStory:g8,readStory:X8,listStories:N8,deleteStory:F8,readStoryRootFolder:l8,createJob:E8,readJob:p8,listJobs:n8,deleteJob:e8,readJobRootFolder:W6,findEntitiesByFieldValue:Y6,createAsset:N6,readAsset:g6,listAssets:$1,deleteAsset:r1,evictFolder:$.evictFolder,evictContent:$.evictContent,evictStory:$.evictStory,evictJob:$.evictJob,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},SP8=Object.freeze({create:C_6});var D_6=($)=>{let{id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W}=$,Z=Fz.create(),H=Fz.create(),O=Fz.create(),X=Fz.create(),P=Fz.create(),w=Fz.create(),{store:T,mutationApi:G}=hP8.create({id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W,folderCache:Z}),j=EP8.create({inner:T,folderCache:Z,contentCache:H,fieldDefinitionCache:O,storyCache:X,jobCache:P,assetCache:w});return{store:SP8.create({inner:j,storeCode:q}),mutationApi:G}},LP8=Object.freeze({create:D_6});z4();var h_6=({id:$,name:K,createdAt:q,updatedAt:Y,children:J=[]})=>{let z=[...J],W=new Map,{entityFns:Z,mutationFns:H}=Q3.create({id:$,name:K,createdAt:q,updatedAt:Y}),O=()=>{W.clear();for(let R8 of z){let C8=R8.getCodes();for(let z8 of C8)W.set(z8,R8)}};O();let X=()=>"demux",P=()=>z.map((R8)=>R8.getObjectId()),w=()=>[...z],T=()=>{return new Set(W.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:P()}),j=(R8)=>{z.push(R8),O()},v=(R8)=>{return W.get(R8)??null},M=async(R8,C8,{store:z8,storeCode:b8,parentId:L8,name:y8,subtype:G6},x)=>{let T8=z8??b8;y.factory(!T8,I.validation,"store parameter is required","MISSING_STORE_CODE");let m=v(T8);return y.factory(!m,I.notFound,`No child store with code: ${T8}`,"STORE_NOT_FOUND"),m.createFolder(R8,C8,{storeCode:T8,parentId:L8,name:y8,subtype:G6},x)},f=async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readFolder(R8,C8,{id:z8})},GK=Object.freeze({...Z,getType:X,getCodes:T,getChildIds:P,getChildren:w,toJSON:G,createFolder:M,readFolder:f,updateFolder:async(R8,C8,{id:z8,name:b8,parentId:L8},y8)=>{let G6=z8?.[0],x=v(G6);return y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND"),x.updateFolder(R8,C8,{id:z8,name:b8,parentId:L8},y8)},deleteFolder:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteFolder(R8,C8,{id:z8},b8)},evictFolder:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictFolder(R8)},evictContent:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictContent(R8)},evictStory:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictStory(R8)},evictJob:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictJob(R8)},getFolder:async(R8,C8,{id:z8})=>{return f(R8,C8,{id:z8})},listFolderContents:async(R8,C8,{folderId:z8,store:b8,storeCode:L8,type:y8})=>{let G6;if(z8!==null&&z8!==void 0)G6=z8[0];else{let m=b8??L8;y.factory(!m,I.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),G6=m}let x=v(G6);y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND");let T8={...C8,storeCode:G6};return x.listFolderContents(R8,T8,{folderId:z8,type:y8})},getFolderByPath:async(R8,C8,{path:z8,type:b8,store:L8,storeCode:y8})=>{let G6=L8??y8;y.factory(!G6,I.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let x=v(G6);if(!x)return null;let T8={...C8,storeCode:G6};return x.getFolderByPath(R8,T8,{path:z8,type:b8})},isDuplicateNameInParent:async(R8,C8,z8,b8,L8=null)=>{let y8;if(z8)y8=z8[0];else{let x=z[0];if(!x)y.factory(!0,I.notFound,"No child stores available","STORE_NOT_FOUND");y8=[...x.getCodes()][0]}let G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.isDuplicateNameInParent(R8,C8,z8,b8,L8)},findFolderByName:async(R8,C8,z8,b8)=>{let L8=z8[0],y8=v(L8);if(!y8)return null;return y8.findFolderByName(R8,C8,z8,b8)},readRootFolderForType:async(R8,C8,z8,b8)=>{let L8=v(b8);return y.factory(!L8,I.notFound,`No child store with code: ${b8}`,"STORE_NOT_FOUND"),L8.readRootFolderForType(R8,C8,z8,b8)},createFieldDefinition:async(R8,C8,{storeCode:z8,ownerEntityId:b8,ownerEntityTypePk:L8,name:y8,label:G6,description:x,primitiveType:T8,required:m,multiplicity:$8,isSystem:d,allowedValues:r},t)=>{let e=v(z8);return y.factory(!e,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),e.createFieldDefinition(R8,C8,{storeCode:z8,ownerEntityId:b8,ownerEntityTypePk:L8,name:y8,label:G6,description:x,primitiveType:T8,required:m,multiplicity:$8,isSystem:d,allowedValues:r},t)},readFieldDefinition:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readFieldDefinition(R8,C8,{id:z8})},getFieldDefinitionsForOwner:async(R8,C8,{storeCode:z8,ownerEntityPk:b8,includeSystem:L8})=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.getFieldDefinitionsForOwner(R8,C8,{ownerEntityPk:b8,includeSystem:L8})},getFieldDefinitionsForEntityType:async(R8,C8,{storeCode:z8,code:b8,subtype:L8})=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.getFieldDefinitionsForEntityType(R8,C8,{code:b8,subtype:L8})},resolveEntityTypePk:async(R8,C8,{storeCode:z8,code:b8,subtype:L8})=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.resolveEntityTypePk(R8,C8,{code:b8,subtype:L8})},resolveFieldDefinition:async(R8,C8,{storeCode:z8,fieldDefinitionId:b8,fieldName:L8,ownerEntityPk:y8,entityTypePk:G6})=>{let x=v(z8);return y.factory(!x,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),x.resolveFieldDefinition(R8,C8,{fieldDefinitionId:b8,fieldName:L8,ownerEntityPk:y8,entityTypePk:G6})},deleteFieldDefinition:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteFieldDefinition(R8,C8,{id:z8},b8)},createEntityType:async(R8,C8,{code:z8,subtype:b8,name:L8})=>{let y8=z[0];return y.factory(!y8,I.notFound,"No child stores available","NO_CHILD_STORES"),y8.createEntityType(R8,C8,{code:z8,subtype:b8,name:L8})},setFieldValue:async(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8,value:y8,values:G6},x)=>{let T8=z8?.[0],m=v(T8);return y.factory(!m,I.notFound,`No child store with code: ${T8}`,"STORE_NOT_FOUND"),m.setFieldValue(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8,value:y8,values:G6},x)},deleteFieldValue:async(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8},y8)=>{let G6=z8?.[0],x=v(G6);return y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND"),x.deleteFieldValue(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8},y8)},getFieldValue:async(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8})=>{let y8=z8?.[0],G6=v(y8);if(!G6)return null;return G6.getFieldValue(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8})},addFieldToEntity:async(R8,C8,z8,b8)=>{let L8=z8.entityId?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.addFieldToEntity(R8,C8,z8,b8)},updateFieldValue:async(R8,C8,z8,b8)=>{let L8=z8.entityId?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.updateFieldValue(R8,C8,z8,b8)},removeFieldFromEntity:async(R8,C8,z8,b8)=>{let L8=z8.entityId?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.removeFieldFromEntity(R8,C8,z8,b8)},createContent:async(R8,C8,{storeCode:z8,type:b8,...L8},y8)=>{let G6=v(z8);return y.factory(!G6,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),G6.createContent(R8,C8,{type:b8,storeCode:z8,...L8},y8)},readContent:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readContent(R8,C8,{id:z8})},updateContent:async(R8,C8,{id:z8,...b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.updateContent(R8,C8,{id:z8,...b8},L8)},updateEntityType:async(R8,C8,{id:z8,subtype:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.updateEntityType(R8,C8,{id:z8,subtype:b8},L8)},deleteTypeScopedFieldValues:async(R8,C8,{entityId:z8,entityTypePk:b8})=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteTypeScopedFieldValues(R8,C8,{entityId:z8,entityTypePk:b8})},deleteContent:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteContent(R8,C8,{id:z8},b8)},saveDraft:async(R8,C8,{id:z8,content:b8,sessionId:L8},y8)=>{let G6=z8?.[0],x=v(G6);return y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND"),x.saveDraft(R8,C8,{id:z8,content:b8,sessionId:L8},y8)},readDraft:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readDraft(R8,C8,{id:z8})},publishContent:async(R8,C8,{id:z8,sessionId:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.publishContent(R8,C8,{id:z8,sessionId:b8},L8)},discardDraft:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.discardDraft(R8,C8,{id:z8},b8)},findContentByName:async(R8,C8,z8,b8,L8)=>{let y8=z8?.[0],G6=v(y8);if(!G6)return null;return G6.findContentByName(R8,C8,z8,b8,L8)},listContent:async(R8,C8,{parentId:z8,storeCode:b8,type:L8})=>{let y8,G6;if(z8)y8=z8[0],G6=z8;else{y.factory(!b8,I.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),y8=b8;let T8=v(y8);y.factory(!T8,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND");try{G6=(await T8.readRootFolderForType(R8,C8,L8||"d",y8)).getObjectId()}catch(m){G6=null}}let x=v(y8);return y.factory(!x,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),x.listContent(R8,C8,{parentId:G6,type:L8})},setEditState:async(R8,C8,{id:z8,sessionId:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.setEditState(R8,C8,{id:z8,sessionId:b8},L8)},clearEditState:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.clearEditState(R8,C8,{id:z8},b8)},getEditState:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.getEditState(R8,C8,{id:z8})},readVersion:async(R8,C8,{id:z8,versionNumber:b8})=>{let L8=z8?.[0],y8=v(L8);if(!y8)return null;return y8.readVersion(R8,C8,{id:z8,versionNumber:b8})},getVersions:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return[];return L8.getVersions(R8,C8,{id:z8})},createStory:async(R8,C8,{storeCode:z8,...b8},L8)=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.createStory(R8,C8,{storeCode:z8,...b8},L8)},renameStory:async(R8,C8,{id:z8,name:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.renameStory(R8,C8,{id:z8,name:b8},L8)},readStory:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readStory(R8,C8,{id:z8})},listStories:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.listStories(R8,C8,{storeCode:z8})},deleteStory:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteStory(R8,C8,{id:z8},b8)},readStoryRootFolder:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.readStoryRootFolder(R8,C8,{storeCode:z8})},createJob:async(R8,C8,{storeCode:z8,...b8},L8)=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.createJob(R8,C8,{storeCode:z8,...b8},L8)},readJob:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readJob(R8,C8,{id:z8})},listJobs:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.listJobs(R8,C8,{storeCode:z8})},deleteJob:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteJob(R8,C8,{id:z8},b8)},readJobRootFolder:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.readJobRootFolder(R8,C8,{storeCode:z8})},findEntitiesByFieldValue:async(R8,C8,{storeCode:z8,typeCode:b8,subtype:L8,fieldName:y8,fieldValue:G6})=>{let x=v(z8);return y.factory(!x,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),x.findEntitiesByFieldValue(R8,C8,{typeCode:b8,subtype:L8,fieldName:y8,fieldValue:G6})},createAsset:async(R8,C8,{storeCode:z8,...b8},L8)=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.createAsset(R8,C8,{storeCode:z8,...b8},L8)},readAsset:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readAsset(R8,C8,{id:z8})},listAssets:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.listAssets(R8,C8,{storeCode:z8})},deleteAsset:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteAsset(R8,C8,{id:z8},b8)},subscribe:(R8,C8)=>{let z8=z.map((b8)=>b8.subscribe(R8,C8));return()=>z8.forEach((b8)=>b8())},subscribeAll:(R8)=>{let C8=z.map((z8)=>z8.subscribeAll(R8));return()=>C8.forEach((z8)=>z8())}}),Z4=Object.freeze({...H,addChild:j});return{store:GK,mutationApi:Z4}},IP8=Object.freeze({create:h_6});Wk();z4();var rG=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},Vu=($)=>$.object_id,vu=($)=>{let K=Vu($),q=$.id,{store:Y,mutationApi:J}=LP8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:J,id:K,pk:q}},xP8=($,K)=>{let q=Vu($),Y=$.id,{store:J,mutationApi:z}=IP8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:J,mutationApi:z,id:q,pk:Y}},E_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"j",null),W=Q6();for(let Z of lT){let H=await p1.nextSeq($,"store",q,"n"),O=`${Y}n${H}`;await $.insertInto("field_definitions").values({store_id:q,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||"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:W,updated_at:W}).execute()}},S_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"d",null),W=await d6.readEntityTypeId($,K,"t",null),Z=Q6(),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 p1.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()}},L_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"d",null),W=await d6.readEntityTypeId($,K,"t",null),Z=Q6(),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 p1.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()}},I_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"v",null),W=Q6(),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 p1.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()}},x_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=lT.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=Q6(),f=await p1.nextSeq(w,"global",null,"s"),k=`S${f}`,R=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:C,mutationApi:E,id:h,pk:g}=vu(R);return await E_6(w,T,g,G),await S_6(w,T,g,G),await L_6(w,T,g,G),await I_6(w,T,g,G),v(()=>{$.set(h,o6.create(C,E,g)),K.set(g,h)}),C},z=async(w,T,{name:G},j)=>{let v=Q6(),M=await p1.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:R,mutationApi:C,id:E,pk:h}=xP8(k,[]);return j(()=>{$.set(E,o6.create(R,C,h)),K.set(h,E)}),R},W=async(w,T,G)=>{let j=$.get(G);if(j)return j.getEntity();let v=rG(G);if(v===null)return null;let M=await w.selectFrom("stores").selectAll().where("id","=",v).executeTakeFirst();if(!M)return null;let f,k,R,C;if(M.type==="local"){let E=vu(M);f=E.store,k=E.mutationApi,R=E.id,C=E.pk,await Y(w,C,M.code,R)}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(),h=[];for(let S of E){let N=await W(w,T,S.object_id);if(N)h.push(N)}let g=xP8(M,h);f=g.store,k=g.mutationApi,R=g.id,C=g.pk}return $.set(R,o6.create(f,k,C)),K.set(C,R),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=Vu(G),v=$.get(j);if(v)return v.getEntity();let{store:M,mutationApi:f,pk:k}=vu(G);return $.set(j,o6.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,R;if(M)k=M.getPk();else{let C=rG(G);y.factory(C===null,I.validation,`Invalid demux store ID: ${G}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",C).executeTakeFirst();y.factory(!E,I.notFound,`Demux store not found: ${G}`,"STORE_NOT_FOUND"),k=E.id}if(f)R=f.getPk();else{let C=rG(j);y.factory(C===null,I.validation,`Invalid child store ID: ${j}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",C).executeTakeFirst();y.factory(!E,I.notFound,`Child store not found: ${j}`,"STORE_NOT_FOUND"),R=E.id}await w.insertInto("store_children").values({parent_store_id:k,child_store_id:R}).execute(),v(()=>{let C=$.get(G),E=$.get(j);if(C&&E)C.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,R=$.get(j),C;if(R)C=R.getPk();else{let E=rG(j);y.factory(E===null,I.validation,`Invalid root store ID: ${j}`,"INVALID_ID");let h=await w.selectFrom("stores").select("id").where("id","=",E).executeTakeFirst();y.factory(!h,I.notFound,`Root store not found: ${j}`,"STORE_NOT_FOUND"),C=h.id}for(let E of v){let h=$.get(E),g;if(h)g=h.getPk();else{let S=rG(E);y.factory(S===null,I.validation,`Invalid store ID: ${E}`,"INVALID_ID");let N=await w.selectFrom("stores").select("id").where("id","=",S).executeTakeFirst();y.factory(!N,I.notFound,`Store not found: ${E}`,"STORE_NOT_FOUND"),g=N.id}await w.insertInto("project_stores").values({project_id:k,store_id:g,is_root:g===C?1:0}).execute()}},evictStore:(w)=>{let T=$.get(w);if(T)K.delete(T.getPk());$.delete(w)}})},gP8=Object.freeze({create:x_6});z4();z4();var g_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}},b_6=($)=>{return $[0]},j1=Object.freeze({parsePath:g_6,extractStoreCode:b_6});z4();var y_6=["Documents/",/^Stories\/[^/]+\//],u_6=["Templates/"],m_6=["Documents/","Templates/",/^Stories\/[^/]+\//],B_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")},U_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")},p_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")},F_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},c_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}},Q_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=e6.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")},v4=Object.freeze({DOCUMENT_PREFIXES:y_6,TEMPLATE_PREFIXES:u_6,FOLDER_PREFIXES:m_6,validatePathFormat:B_6,validateName:U_6,validateRootInAllowedTree:p_6,isInsideTasksFolder:F_6,detectFullPathPrefix:c_6,getRootForEntity:Q_6});var l_6=({store:$})=>{let K=async(w,T,G,j,v,M,f,k=!0,R=null)=>{let C=G.split("/").filter((N)=>N.trim());y.factory(C.length===0,I.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let E=C.slice(0,-1).join("/");if(E){let N=await $.getFolderByPath(w,T,{path:E,type:j,storeCode:v});if(N){let L=l3.validateFolderName(C[C.length-1]);return{parentObjectId:N.getObjectId(),name:L}}}let h=M??j,g;if(R)g=await $.readFolder(w,T,{id:R}),y.factory(!g,I.notFound,`Starting folder not found: ${R}`,"FOLDER_NOT_FOUND");else g=await $.readRootFolderForType(w,T,h,v);for(let N=0;N<C.length-1;N++){let L=l3.validateFolderName(C[N]),u=await $.findFolderByName(w,T,g.getObjectId(),L);if(u)g=u;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=l3.validateFolderName(C[C.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=v4.FOLDER_PREFIXES;v4.validatePathFormat(v);let R=v4.detectFullPathPrefix(v,k);y.factory(!R.valid,I.validation,`Path must start with one of: ${k.map((s)=>typeof s==="string"?s:s.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let C=v.slice(R.prefix.length);y.factory(!C||C.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let E,h,g=null;if(R.prefix==="Documents/")E="d",h="d";else if(R.prefix==="Templates/")E="t",h="t";else if(R.prefix.startsWith("Stories/")){E="s",h="d";let s=R.prefix.slice(8,-1),v8=(await $.listStories(w,T,{storeCode:M})).find((c8)=>c8.getName()===s);if(!v8)throw I.notFound(`Story not found: ${s}`,"STORY_NOT_FOUND");g=v8.getObjectId()}let{parentPath:S,name:N}=j1.parsePath(C),L;if(S){let s=await K(w,T,S,h,M,E,j,!0,g),A8=await $.findFolderByName(w,T,s.parentObjectId,s.name);if(A8)L=A8.getObjectId();else L=(await $.createFolder(w,T,{storeCode:M,parentId:s.parentObjectId,name:s.name},j)).getObjectId()}else if(g)L=g;else L=(await $.readRootFolderForType(w,T,E,M)).getObjectId();if(E==="s"){let s=await $.readFolder(w,T,{id:L});y.factory(!s,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(w,T,s,f,$)}let u=l3.validateFolderName(N),p=await $.isDuplicateNameInParent(w,T,L,u);return y.factory(p,I.conflict,`Folder "${u}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:M,parentId:L,name:u},j)},Y=async(w,T,G,j)=>{let{root:v,path:M}=G,f=["d","t","s"],k=j1.extractStoreCode(v);v4.validatePathFormat(M);let R=await $.readFolder(w,T,{id:v});y.factory(!R,I.notFound,`Root folder not found: ${v}`,"FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(w,T,R,f,$);let{parentPath:C,name:E}=j1.parsePath(M),h;if(C){let N=C.split("/").filter((u)=>u.trim()),L=R;for(let u of N){let p=l3.validateFolderName(u),s=await $.findFolderByName(w,T,L.getObjectId(),p);if(s)L=s;else L=await $.createFolder(w,T,{storeCode:k,parentId:L.getObjectId(),name:p},j)}h=L.getObjectId()}else h=v;let g=l3.validateFolderName(E),S=await $.isDuplicateNameInParent(w,T,h,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:h,name:g},j)},J=async(w,T,G,j)=>{let{parentId:v,name:M}=G,f=["d","t","s"],k=j1.extractStoreCode(v);v4.validateName(M);let R=await $.readFolder(w,T,{id:v});y.factory(!R,I.notFound,`Parent folder not found: ${v}`,"FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(w,T,R,f,$);let C=l3.validateFolderName(M),E=await $.isDuplicateNameInParent(w,T,v,C);return y.factory(E,I.conflict,`Folder "${C}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:v,name:C},j)},z=async(w,T,G,j)=>{let{mode:v,path:M,root:f,parentId:k,name:R,store:C,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(!C,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await q(w,T,{path:M,store:C},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(!R,I.validation,"name is required for parentName mode","MISSING_NAME"),await J(w,T,{parentId:k,name:R},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(!C,I.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:h,name:g}=await K(w,T,M,E,C,void 0,j),S=await $.isDuplicateNameInParent(w,T,h,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:C,parentId:h,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(l3.isRootFolder(M),I.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let f=l3.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(l3.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],R=j[0];y.factory(k!==R,I.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),y.factory(G===j,I.validation,"Cannot move folder into itself","SELF_MOVE");let C=j;while(C!==null){y.factory(C===G,I.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let h=await $.readFolder(w,T,{id:C});if(!h)break;C=h.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(l3.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})}})},bP8=Object.freeze({create:l_6});z4();var yP8=Object.freeze(["string","object_ref","int","text","date","float"]),i_6=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/,d_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(!i_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: ${$}`}}},n_6=({store:$})=>{let K=async(T,G,{store:j,ownerEntityId:v,ownerEntityTypeCode:M,ownerEntityTypeSubtype:f,name:k,label:R,description:C,primitiveType:E,required:h,multiplicity:g,isSystem:S=!1,allowedValues:N},L)=>{y.factory(!j,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(v&&M,I.validation,"Cannot specify both ownerEntityId and ownerEntityTypeCode","INVALID_FIELD_DEFINITION_SCOPE"),y.factory(!yP8.includes(E),I.validation,`Invalid primitiveType: ${E}. Must be one of: ${yP8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(g!=="single"&&g!=="multi",I.validation,`Invalid multiplicity: ${g}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let u=/^[a-zA-Z0-9_]+$/;y.factory(!k||!u.test(k),I.validation,`Invalid name: ${k}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME");let p=null;if(M)p=await $.resolveEntityTypePk(T,G,{storeCode:j,code:M,subtype:f});return await $.createFieldDefinition(T,G,{storeCode:j,ownerEntityId:v,ownerEntityTypePk:p,name:k,label:R,description:C,primitiveType:E,required:h,multiplicity:g,isSystem:S,allowedValues:N},L)},q=async(T,G,{id:j})=>{return y.factory(!j||j.length<3,I.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(T,G,{id:j})},Y=async(T,G,{store:j,ownerEntityId:v,includeSystem:M=!0})=>{y.factory(!j,I.validation,"store is required","MISSING_STORE_CODE");let f=null;if(v)f=null;return await $.getFieldDefinitionsForOwner(T,G,{storeCode:j,ownerEntityPk:f,includeSystem:M})},J=async(T,G,{store:j,code:v,subtype:M})=>{y.factory(!j,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(!v,I.validation,"code is required","MISSING_CODE"),y.factory(M===void 0,I.validation,"subtype is required","MISSING_SUBTYPE");let f=await $.getFieldDefinitionsForEntityType(T,G,{storeCode:j,code:v,subtype:M}),k=await $.getFieldDefinitionsForOwner(T,G,{storeCode:j,ownerEntityPk:null,includeSystem:!0}),R=new Map;for(let C of f)R.set(C.getName(),C);for(let C of k)if(!R.has(C.getName()))R.set(C.getName(),C);return Array.from(R.values())},z=async(T,G,{id:j},v)=>{let M=await q(T,G,{id:j});return y.factory(!M,I.notFound,`Field definition not found: ${j}`,"DEFINITION_NOT_FOUND"),y.factory(M.getIsSystem(),I.validation,`Cannot delete system field definition: ${j}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(T,G,{id:j},v)},W=async(T,G,{entityId:j,parentId:v,values:M})=>{y.factory(M.includes(j),I.validation,`Self-reference not allowed: ${j} cannot depend on itself`,"SELF_REFERENCE");for(let f of M){let k=await $.readContent(T,G,{id:f});y.factory(!k,I.validation,`Referenced entity does not exist: ${f}`,"INVALID_REFERENCE");let{typeCode:R}=e6.parseId(f);y.factory(R!=="d",I.validation,`Referenced entity is not a document: ${f}`,"INVALID_REFERENCE_TYPE"),y.factory(k.getSubtype()!=="task",I.validation,`Referenced entity is not a task: ${f}`,"INVALID_REFERENCE_SUBTYPE"),y.factory(k.getParentId()!==v,I.validation,`Referenced task is in a different folder: ${f}`,"INVALID_REFERENCE_SCOPE")}for(let f of M){let k=new Set,R=async(E,h)=>{if(E===j)return h;if(k.has(E))return null;k.add(E);let g=await $.getFieldValue(T,G,{entityId:E,fieldName:"dependsOn"});if(!g)return null;let S=g.getValues();for(let N of S){let L=await R(N,[...h,N]);if(L)return L}return null},C=await R(f,[j,f]);if(C)throw I.validation(`Circular dependency detected: ${C.join(" -> ")}`,"CIRCULAR_DEPENDENCY")}},Z=async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)=>{y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),y.factory(f!==void 0&&k!==void 0,I.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),y.factory(f===void 0&&k===void 0,I.validation,"Either value or values must be provided","MISSING_VALUE");let{typeCode:C}=e6.parseId(j),E=j[0],h=null,g=await $.getFieldValue(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M});if(g)h=g.getDefinition();else if(v)h=await $.readFieldDefinition(T,G,{id:v});else if(M&&$.resolveFieldDefinition){let p=null;if($.resolveEntityTypePk)if(C==="d"||C==="t"){let A8=(await $.readContent(T,G,{id:j}))?.getSubtype?.()||null;p=await $.resolveEntityTypePk(T,G,{storeCode:E,code:C,subtype:A8})}else p=await $.resolveEntityTypePk(T,G,{storeCode:E,code:C,subtype:null});h=await $.resolveFieldDefinition(T,G,{storeCode:E,fieldName:M,ownerEntityPk:null,entityTypePk:p})}if(h){let p=h.getAllowedValues();if(p&&p.length>0){let A8=k?[...k]:f!==void 0?[f]:[];if(A8.length>0){let v8=A8.filter((c8)=>!p.includes(c8));if(v8.length>0)throw I.validation(`Invalid value(s): ${v8.join(", ")}. Allowed: ${p.join(", ")}`,"VALUE_NOT_ALLOWED")}}let s=h.getPrimitiveType();if(["int","float","date"].includes(s)){let A8=k?[...k]:f!==void 0?[f]:[];for(let v8 of A8){let c8=d_6(s,v8);if(!c8.valid)throw I.validation(c8.error,"INVALID_TYPED_VALUE")}}}let S=k;if(C==="d"){let p=await $.readContent(T,G,{id:j});if(p&&p.getSubtype()==="task"){let s=h;if(!s&&M)s=(await $.getFieldDefinitionsForEntityType(T,G,{storeCode:E,code:"d",subtype:"task"})).find((v8)=>v8.getName()===M)||null;if(s&&s.getPrimitiveType()==="object_ref"){let A8=k?[...k]:f!==void 0?[f]:[];if(A8.length>0){if(A8=[...new Set(A8)],await W(T,G,{entityId:j,parentId:p.getParentId(),values:A8}),k)S=A8}}}}let N={entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:S},L=!g,u=g?.getValue();if(L)return await $.addFieldToEntity(T,G,N,R);else return await $.updateFieldValue(T,G,{...N,_oldValue:u},R)},H=async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)=>{return y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.removeFieldFromEntity(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)};return Object.freeze({createFieldDefinition:K,readFieldDefinition:q,getFieldDefinitionsForOwner:Y,getFieldDefinitionsForType:J,deleteFieldDefinition:z,setFieldValue:Z,deleteFieldValue:H,addFieldToEntity:async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)=>{if(y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.getFieldValue(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M})){let E=M||v;throw I.validation(`Field '${E}' already exists on entity '${j}'`,"FIELD_ALREADY_EXISTS")}return await Z(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)},updateFieldValue:async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)=>{if(y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),!await $.getFieldValue(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M})){let E=M||v;throw I.validation(`Field '${E}' not found on entity '${j}'`,"FIELD_NOT_FOUND")}return await Z(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)},removeFieldFromEntity:async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)=>{return await H(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)},validateRequiredFields:async(T,G,{store:j,code:v,subtype:M,fields:f})=>{let R=(await J(T,G,{store:j,code:v,subtype:M})).filter((h)=>h.getRequired());if(R.length===0)return;let C=f&&typeof f==="object"?Object.keys(f):[],E=R.filter((h)=>!C.includes(h.getName())).map((h)=>h.getName());if(E.length>0)throw I.validation(`Missing required fields: ${E.join(", ")}`,"MISSING_REQUIRED_FIELDS")}})},uP8=Object.freeze({create:n_6});z4();function y5(){}y5.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(R){if(R=W.postProcess(R,J),z)return setTimeout(function(){z(R)},0),!0;else return R}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(mP8(W,G[0].lastComponent,q,K,W.useLongestToken));var v=-1/0,M=1/0;function f(){for(var R=Math.max(v,-X);R<=Math.min(M,X);R+=2){var C=void 0,E=G[R-1],h=G[R+1];if(E)G[R-1]=void 0;var g=!1;if(h){var S=h.oldPos-R;g=h&&0<=S&&S<H}var N=E&&E.oldPos+1<O;if(!g&&!N){G[R]=void 0;continue}if(!N||g&&E.oldPos<h.oldPos)C=W.addToPath(h,!0,!1,0,J);else C=W.addToPath(E,!1,!0,1,J);if(j=W.extractCommon(C,q,K,R,J),C.oldPos+1>=O&&j+1>=H)return Z(mP8(W,C.lastComponent,q,K,W.useLongestToken));else{if(G[R]=C,C.oldPos+1>=O)M=Math.min(M,R-1);if(j+1>=H)v=Math.max(v,R+1)}}X++}if(z)(function R(){setTimeout(function(){if(X>P||Date.now()>T)return z();if(!f())R()},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 mP8($,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 b$4=new y5;function BP8($,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 UP8($,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 Mu($,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 _u($,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 sG($,K){return Mu($,K,"")}function Xk($,K){return _u($,K,"")}function pP8($,K){return K.slice(0,o_6($,K))}function o_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 Pk="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}",a_6=new RegExp("[".concat(Pk,"]+|\\s+|[^").concat(Pk,"]"),"ug"),Tk=new y5;Tk.equals=function($,K,q){if(q.ignoreCase)$=$.toLowerCase(),K=K.toLowerCase();return $.trim()===K.trim()};Tk.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(a_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};Tk.join=function($){return $.map(function(K,q){if(q==0)return K;else return K.replace(/^\s+/,"")}).join("")};Tk.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)FP8(q,J,Y,z);q=z,Y=null,J=null}}),Y||J)FP8(q,J,Y,null);return $};function FP8($,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=BP8(J,W);$.value=_u($.value,W,H),K.value=sG(K.value,H),q.value=sG(q.value,H)}if(Y){var O=UP8(z,Z);Y.value=Mu(Y.value,Z,O),K.value=Xk(K.value,O),q.value=Xk(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=BP8(X,P);K.value=sG(K.value,T);var G=UP8(sG(X,T),w);K.value=Xk(K.value,G),Y.value=Mu(Y.value,X,G),$.value=_u($.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=pP8(v,j);K.value=Xk(K.value,M)}else if($){var f=$.value.match(/\s*$/)[0],k=K.value.match(/^\s*/)[0],R=pP8(f,k);K.value=sG(K.value,R)}}var r_6=new y5;r_6.tokenize=function($){var K=new RegExp("(\\r?\\n)|[".concat(Pk,"]+|[^\\S\\n\\r]+|[^").concat(Pk,"]"),"ug");return $.match(K)||[]};var Gk=new y5;Gk.tokenize=function($,K){if(K.stripTrailingCr)$=$.replace(/\r\n/g,`
497
+ `.execute($)};var SZ6=()=>new Date().toISOString(),Q6=SZ6;var LZ6=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},p1=Object.freeze({nextSeq:LZ6});var IZ6=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)"}]),lT=IZ6;var xZ6=[{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}],C78=async($)=>{return(await $.selectFrom("entity_types").select("id").limit(1).execute()).length>0},d1=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},AM=async($,K,q,Y)=>{let J=Q6(),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 d1($,"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(),j={d:"document",t:"template",s:"story",j:"job"}[Y];return T.id},gZ6=async($)=>{for(let K of xZ6)await $.insertInto("entity_types").values(K).execute()},bZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await p1.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()},yZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","task"),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"state",label:"State",description:"Task workflow state",primitive_type:"string",required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:1,sort_order:null}).execute()},uZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"j",null);for(let W of lT){let Z=await p1.nextSeq($,"store",K,"n"),H=`${q}n${Z}`,O=await $.insertInto("field_definitions").values({store_id:K,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",is_system:1,created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:O.id,required:0,sort_order:null}).execute()}},MM=Object.freeze(["prep","spec","design","plan","build","review","done"]),Xz=Object.freeze(["waiting","ready","in-progress","done"]),mZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"f","tasks"),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"states",label:"States",description:"Ordered list of valid task states",primitive_type:"string",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:1,sort_order:null}).execute()},BZ6=async($,K,q,Y)=>{let J=Q6(),z=await d1($,"n",null),W=await d1($,"f","root_s"),Z=await p1.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,name:"states",label:"States",description:"Ordered list of valid story states",primitive_type:"string",required:0,multiplicity:"multi",is_system:1,created_at:J,updated_at:J}).returning("id").executeTakeFirstOrThrow()).id;await $.insertInto("class_field_defs").values({store_id:K,class_type_id:W,field_definition_id:X,required:1,sort_order:null}).execute();for(let P=0;P<MM.length;P++)await $.insertInto("string_fields").values({entity_id:Y,field_definition_id:X,value:MM[P],ordinal:P}).execute()},UZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","task"),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:0,sort_order:null}).execute()},pZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","cartridge"),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:0,sort_order:null}).execute()},FZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d","cartridge"),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"relatedActivities",label:"Related Activities",description:"Associated activity types",primitive_type:"string",required:0,multiplicity:"multi",is_system:1,created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:0,sort_order:null}).execute()},cZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"t","prompt"),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:0,sort_order:null}).execute()},QZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"s",null),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:0,sort_order:null}).execute()},lZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"s",null),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:0,sort_order:null}).execute()},iZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"s",null),W=await p1.nextSeq($,"store",K,"n"),Z=`${q}n${W}`,H=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:"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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:H.id,required:0,sort_order:null}).execute()},dZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d",null),W=await d1($,"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 p1.nextSeq($,"store",K,"n"),P=`${q}n${X}`,w=await $.insertInto("field_definitions").values({store_id:K,object_id:P,entity_type_id:J,type_code:"n",seq:X,owner_entity_id:null,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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:H,field_definition_id:w.id,required:0,sort_order:null}).execute()}},nZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"d",null),W=await d1($,"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 p1.nextSeq($,"store",K,"n"),P=`${q}n${X}`,w=await $.insertInto("field_definitions").values({store_id:K,object_id:P,entity_type_id:J,type_code:"n",seq:X,owner_entity_id:null,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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:H,field_definition_id:w.id,required:0,sort_order:null}).execute()}},oZ6=async($,K,q)=>{let Y=Q6(),J=await d1($,"n",null),z=await d1($,"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 p1.nextSeq($,"store",K,"n"),O=`${q}n${H}`,X=await $.insertInto("field_definitions").values({store_id:K,object_id:O,entity_type_id:J,type_code:"n",seq:H,owner_entity_id:null,name:Z.name,label:Z.label,description:Z.description,primitive_type:Z.primitiveType,required:0,multiplicity:"single",is_system:1,created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:K,class_type_id:z,field_definition_id:X.id,required:Z.required,sort_order:null}).execute()}},aZ6=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=Q6(),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 AM($,J.id,"B","d"),await AM($,J.id,"B","t");let z=await AM($,J.id,"B","s");await AM($,J.id,"B","j"),await bZ6($,J.id,"B"),await uZ6($,J.id,"B"),await yZ6($,J.id,"B"),await UZ6($,J.id,"B"),await pZ6($,J.id,"B"),await FZ6($,J.id,"B"),await BZ6($,J.id,"B",z),await mZ6($,J.id,"B"),await cZ6($,J.id,"B"),await QZ6($,J.id,"B"),await lZ6($,J.id,"B"),await iZ6($,J.id,"B"),await dZ6($,J.id,"B"),await nZ6($,J.id,"B"),await oZ6($,J.id,"B"),await $.insertInto("sequences").values({scope_type:"store",scope_id:J.id,type_code:"v",next_value:1}).execute()},D78=async($)=>{await gZ6($),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 aZ6($)};var _M=i6(E78(),1),rZ6=($,K)=>{if($)throw Error(K)},S78=($,K)=>{if(_M.default.null($)||_M.default.undefined($))throw Error(`${K} is required`)},sZ6=($,K)=>{if(S78($,K),_M.default.empty($))throw Error(`${K} cannot be empty`)},tZ6=($,K,...q)=>{if($)throw K(...q)},eZ6={condition:rZ6,nullish:S78,empty:sZ6,factory:tZ6},y=eZ6;var UM6=typeof Bun<"u",pM6=async($)=>{if(UM6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => i6(ZP8(),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 fx({database:q})})}},FM6=($,K)=>{if(!uM6($)){if(!K)throw Error(`Database file not found: ${$}`);mM6(BM6($),{recursive:!0})}},cM6=async($,K)=>{if(!await N78($)){if(!K)throw Error("Database schema not found");await R78($)}},QM6=async($,K)=>{if(!await C78($)){if(!K)throw Error("Database seed data not found");await D78($)}},lM6=($)=>{let{kyselyFactory:K=pM6}=$??{};return Object.freeze({getDb:async(Y,J)=>{if(y.nullish(Y,"databaseFilepath"),Y!==":memory:")FM6(Y,J);let z=await K(Y);return await cM6(z,J),await QM6(z,J),z}})},HP8={create:lM6};var iM6=($)=>{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}},Q3=Object.freeze({create:iM6});var dM6=($)=>{let{id:K,name:q,path:Y,createdAt:J,updatedAt:z}=$,{entityFns:W,mutationFns:Z}=Q3.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}},OP8=Object.freeze({create:dM6});var nM6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},o6=Object.freeze({create:nM6});var oM6=($)=>$.object_id,XP8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},zk=($)=>{let K=oM6($),q=$.id,{entity:Y,mutationApi:J}=OP8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:J,id:K,pk:q}},aM6=()=>{let $=new Map;return Object.freeze({createProject:async(W,Z,{name:H,path:O},X)=>{let P=Q6(),w=await p1.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}=zk(G);return X(()=>{$.set(M,o6.create(j,v,f))}),j},readProject:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=XP8(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}=zk(P);return $.set(G,o6.create(w,T,j)),w},readProjectByObjectId:async(W,Z,H)=>{let O=$.get(H);if(O)return O.getEntity();let X=XP8(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}=zk(P);return $.set(G,o6.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}=zk(O),G=$.get(w);if(G)return G.getEntity();return $.set(w,o6.create(X,P,T)),X},evictProject:(W)=>{$.delete(W)}})},PP8=Object.freeze({create:aM6});var rM6=()=>{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()})},Fz=Object.freeze({create:rM6});var DP8=i6(S4(),1);Wk();var eM6=($)=>{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}=Q3.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,v8=Object.freeze({...P,getParentId:()=>Y,getPath:()=>J,getField:(E6)=>{return T.get(E6)},getFields:()=>{let E6={};for(let[P8,X8]of T.entries())E6[P8]=X8;return E6},getPublishedVersionNumber:()=>G,hasDraftContent:()=>j,getDraftContent:()=>v,getPublishedContent:()=>M,getEditState:()=>f,hasPublished:()=>G>0,isBeingEdited:()=>f!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),f6=Object.freeze({...w,setParentId:(E6)=>{Y=E6},setPath:(E6)=>{J=E6},setField:(E6,P8)=>{T.set(E6,P8)},removeField:(E6)=>{T.delete(E6)},setPublishedVersionNumber:(E6)=>{G=E6},setHasDraft:(E6)=>{j=E6},setDraftContent:(E6)=>{v=E6},setPublishedContent:(E6)=>{M=E6},setEditState:(E6)=>{f=E6}});return{entityFns:v8,mutationFns:f6}},uK=Object.freeze({create:eM6});var TP8=($)=>{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}},$_6=($,K,q,Y)=>{return TP8({id:K,parentId:q,name:$.name,path:Y,subtype:$.subtype||null,createdAt:$.created_at,updatedAt:$.updated_at})},oq=Object.freeze({create:TP8,createFromRow:$_6});var GP8=($)=>{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}},K_6=($,K,q,Y)=>{return GP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},VO=Object.freeze({create:GP8,createFromRow:K_6});var jP8=($)=>{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}},q_6=($,K,q,Y)=>{return jP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},Zk=Object.freeze({create:jP8,createFromRow:q_6});var vP8=($)=>{let{entityFns:K,mutationFns:q}=Q3.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()})}),h=Object.freeze({...q});return{entity:E,mutationApi:h}},Y_6=($,K)=>{return vP8({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})},Hk=Object.freeze({create:vP8,createFromRow:Y_6});var VP8=Object.freeze(["string","object_ref","int","text","date","float"]),J_6=($)=>{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}=Q3.create({id:K,name:q,createdAt:P,updatedAt:w}),j=()=>Y,v=()=>J,M=()=>z,f=()=>W,k=()=>Z,R=()=>H,C=()=>O,E=()=>X??null,g=Object.freeze({...T,getOwnerEntityId:j,getLabel:v,getDescription:M,getPrimitiveType:f,getRequired:k,getMultiplicity:R,getIsSystem:C,getAllowedValues:E,toJSON:()=>({id:T.getObjectId(),ownerEntityId:j(),name:T.getName(),label:v(),description:M(),primitiveType:f(),required:k(),multiplicity:R(),isSystem:C(),allowedValues:E(),createdAt:T.getCreatedAt(),updatedAt:T.getUpdatedAt()})}),S=Object.freeze({...G});return{entity:g,mutationApi:S}},Gu=Object.freeze({create:J_6});var z_6=({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]}})},Ok=Object.freeze({create:z_6});z4();z4();var X_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},P_6=($)=>{return $.getParentId()===null},l3=Object.freeze({validateFolderName:X_6,isRootFolder:P_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}},T_6=($,K,q)=>`${$}${K}${q}`,G_6=($,K)=>{y.factory($!==K,I.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},MO=Object.freeze({parseId:w_6,buildId:T_6,validateStoreCode:G_6});var AP8=($)=>{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}},j_6=($,K,q,Y,J,z,W=null,Z=null)=>{return AP8({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})},MP8=Object.freeze({create:AP8,createFromRow:j_6});var _P8=($)=>{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}},v_6=($,K,q,Y,J,z,W=null,Z=null)=>{return _P8({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})},kP8=Object.freeze({create:_P8,createFromRow:v_6});var fP8=($)=>{let{id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:W,updatedAt:Z}=$,{entityFns:H,mutationFns:O}=Q3.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}},V_6=($,K,q,Y,J,z=null)=>{return fP8({id:K,documentId:q,versionNumber:Y,publishedAt:J,content:z,createdAt:$.created_at,updatedAt:$.updated_at})},NP8=Object.freeze({create:fP8,createFromRow:V_6});z4();var RP8=($)=>{let K=MO.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}},A_6=($)=>{let{typeCode:K}=RP8($);return K},ju={d:MP8.createFromRow,t:kP8.createFromRow,v:NP8.createFromRow},M_6=($)=>{if($==="s")return ju.d;if(!$)return ju.d;let K=ju[$];if(!K)throw Error(`Unknown content type: ${$}`);return K},__6=($)=>{return{d:"document",t:"template",v:"version"}[$]||"content"},e6=Object.freeze({resolveEntityId:RP8,getTypeFromId:A_6,getEntityFactory:M_6,getContentTypeLabel:__6,buildId:MO.buildId,parseId:MO.parseId});var{parseId:t1,buildId:cz,validateStoreCode:k_6}=MO,{validateFolderName:CP8,isRootFolder:l44}=l3,M7=DP8.default("caw:stores:db"),yJ=3600000,f_6=({id:$,code:K,name:q,pk:Y,folderCache:J,createdAt:z,updatedAt:W})=>{let Z=new Map,{entityFns:H,mutationFns:O}=Q3.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)=>{k_6(x,K)},v=async(x,T8)=>{if(!T8)return null;if(J){let d=J.get(T8);if(d)return d.getPk()}if(!t1(T8))y.factory(!0,I.validation,`Invalid parent folder ID: ${T8}`,"INVALID_ID");let $8=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",T8).where("deleted_at","is",null).executeTakeFirst();return $8?$8.id:null},M=async(x,T8)=>{let m=await x.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",T8).where("deleted_at","is",null).executeTakeFirst();y.factory(!m,I.notFound,`Entity not found for PK ${T8}`,"ENTITY_NOT_FOUND");let $8=m.object_id,d=J?J.get($8):null;if(d){let w8=d.getEntity();if(w8.getName()===m.name&&w8.getParentId()===m.parent_object_id)return w8.getPath()}if(!m.parent_object_id)return m.name;let t=J?J.get(m.parent_object_id):null;if(t){let j8=t.getEntity().getPath();return j8?`${j8}/${m.name}`:m.name}let r=[m.name],e=m.parent_folder_id;while(e!==null){let w8=Z.get(e),j8=w8&&J?J.get(w8):null;if(j8){let t8=j8.getEntity().getPath();if(t8){let o8=t8.split("/").filter((_6)=>_6);r.unshift(...o8)}break}let M8=await x.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",e).where("deleted_at","is",null).executeTakeFirst();y.factory(!M8,I.notFound,`Folder not found for PK ${e}`,"FOLDER_NOT_FOUND"),r.unshift(M8.name),e=M8.parent_folder_id}return r.join("/")},f=async(x,T8)=>{let m=[],$8=[T8];while($8.length>0){let d=$8.shift(),t=await x.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",d).where("deleted_at","is",null).execute();for(let r of t)if(m.push(r.id),r.type_code==="f"||r.type_code==="s"||r.type_code==="j")$8.push(r.id)}return m},k=async(x,T8,m,$8)=>{let d=Q6(),t=await d6.readEntityTypeId(x,{},"f",$8),r=await p1.nextSeq(x,"store",Y,"f"),e=await v(x,T8),w8=cz(K,"f",r);return{row:{...await x.insertInto("entities").values({store_id:Y,object_id:w8,entity_type_id:t,type_code:"f",seq:r,parent_folder_id:e,parent_object_id:T8,name:m,created_at:d,updated_at:d}).returningAll().executeTakeFirstOrThrow(),subtype:$8},id:w8}},R=(x)=>{let T8=null;if(x.owner_entity_id!==null)T8=Z.get(x.owner_entity_id)??null;let m=null;if(x.config)try{m=JSON.parse(x.config).allowedValues||null}catch(t){}let{entity:$8,mutationApi:d}=Gu.create({id:x.object_id,name:x.name,ownerEntityId:T8,label:x.label,description:x.description,primitiveType:x.primitive_type,required:x.required===1,multiplicity:x.multiplicity,isSystem:x.is_system===1,allowedValues:m,createdAt:x.created_at,updatedAt:x.updated_at});return{entity:$8,mutationApi:d,pk:x.id}},C=(x)=>{let m={int:"int_fields",string:"string_fields",text:"text_fields",date:"date_fields",float:"float_fields",object_ref:"obj_ref_fields"}[x];if(!m)throw Error(`Unknown primitive type: ${x}`);return m},E=async(x,T8,m,$8,d,t=0)=>{let r=C($8);if($8==="object_ref"){let e=await x.selectFrom("entities").select("id").where("object_id","=",d).where("deleted_at","is",null).executeTakeFirst();if(!e)throw I.validation(`Target entity not found: ${d}`,"INVALID_REFERENCE");await x.insertInto(r).values({entity_id:T8,field_definition_id:m,target_entity_id:e.id,ordinal:t}).execute()}else{let e=d;if($8==="int")e=typeof d==="string"?parseInt(d,10):d;else if($8==="float")e=typeof d==="string"?parseFloat(d):d;await x.insertInto(r).values({entity_id:T8,field_definition_id:m,value:e,ordinal:t}).execute()}},h=async(x,T8,m,$8)=>{let d=C($8);await x.deleteFrom(d).where("entity_id","=",T8).where("field_definition_id","=",m).execute()},g=async(x,T8)=>{let m=new Map,$8=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",N4`'int'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of $8){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"int"});m.get(j8.def_id).values.push(j8.value)}let d=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",N4`'string'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of d){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"string"});m.get(j8.def_id).values.push(j8.value)}let t=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",N4`'text'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of t){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"text"});m.get(j8.def_id).values.push(j8.value)}let r=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",N4`'date'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of r){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"date"});m.get(j8.def_id).values.push(j8.value)}let e=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",N4`'float'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of e){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"float"});m.get(j8.def_id).values.push(j8.value)}let w8=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",N4`'object_ref'`.as("primitive_type")]).where("f.entity_id","=",T8).orderBy("f.ordinal").execute();for(let j8 of w8){if(!m.has(j8.def_id))m.set(j8.def_id,{values:[],primitiveType:"object_ref"});m.get(j8.def_id).values.push(j8.value)}return m},S=new Map,N=!1,L=async(x)=>{if(N)return;let T8=await x.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.object_id","fd.name","fd.primitive_type","cfd.class_type_id"]).where("fd.store_id","=",Y).where("fd.is_system","=",1).execute();for(let m of T8){let $8=m.class_type_id?`${m.name}:${m.class_type_id}`:m.name;S.set($8,{pk:m.id,objectId:m.object_id,primitiveType:m.primitive_type})}N=!0,M7("System field definition cache initialized with %d entries",S.size)},u=(x,T8=null)=>{if(T8){let m=`${x}:${T8}`;if(S.has(m))return S.get(m)}return S.get(x)||null},p=async(x,T8)=>{let m=new Map,$8=await g(x,T8);for(let[t,r]of $8.entries()){let e=await x.selectFrom("field_definitions").selectAll().where("id","=",t).executeTakeFirst();if(!e)continue;let w8=null;if(e.config)try{w8=JSON.parse(e.config).allowedValues||null}catch(j8){}m.set(t,{definition:{id:e.object_id,name:e.name,label:e.label,description:e.description,primitiveType:e.primitive_type,required:e.required===1,multiplicity:e.multiplicity,isSystem:e.is_system===1,ownerEntityId:e.owner_entity_id?Z.get(e.owner_entity_id):null,allowedValues:w8,createdAt:e.created_at,updatedAt:e.updated_at},values:r.values})}let d=[];for(let{definition:t,values:r}of m.values()){let{entity:e}=Gu.create(t),w8=Ok.create({definition:e,values:r});d.push(w8)}return d},s=async(x,T8,{storeCode:m,parentId:$8,name:d,subtype:t})=>{if(m!==void 0)j(m);if(d!==null&&d!==void 0)CP8(d);let{row:r,id:e}=await k(x,$8,d,t||null),w8=r.id;Z.set(w8,e);let j8=await M(x,w8),{entity:M8,mutationApi:h8}=oq.createFromRow(r,e,$8,j8);return{entity:M8,mutationApi:h8,pk:w8}},A8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;if($8.typeCode!=="f"&&$8.typeCode!=="s")return null;if($8.typeCode==="s")M7("readFolder called with story ID %s — consider using readStory instead",m);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","=",$8.seq).where("entities.type_code","=",$8.typeCode).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:t,parent_object_id:r}=d;Z.set(t,m);let e=await M(x,t),w8=await p(x,t),{entity:j8,mutationApi:M8}=$8.typeCode==="s"?VO.createFromRow(d,m,r,e):oq.createFromRow(d,m,r,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:t}},v8=async(x,T8,{id:m,name:$8,parentId:d})=>{let t=t1(m);y.factory(!t,I.validation,`Invalid folder ID: ${m}`,"INVALID_ID");let r=["f","s","j"].includes(t.typeCode)?[t.typeCode]:null;y.factory(!r,I.validation,`Invalid type for folder update: ${m}`,"INVALID_TYPE");let e=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","=",t.seq).where("entities.type_code","in",r).where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`Folder not found: ${m}`,"FOLDER_NOT_FOUND");let{id:w8,subtype:j8}=e,M8={name:e.name,parentId:e.parent_object_id,path:null};if(Z.set(w8,m),M8.path=await M(x,w8),$8!==void 0)CP8($8);let h8={};if($8!==void 0)h8.name=$8;if(d!==void 0){let n=await v(x,d);h8.parent_folder_id=n,h8.parent_object_id=d}h8.updated_at=Q6();let t8=await x.updateTable("entities").set(h8).where("id","=",w8).returningAll().executeTakeFirstOrThrow(),o8=await M(x,w8),_6=await p(x,w8),{entity:r6,mutationApi:a}=oq.createFromRow({...t8,subtype:j8},m,t8.parent_object_id,o8);for(let n of _6)a.setField(n.getDefinition().getName(),n);return{entity:r6,mutationApi:a,pk:w8,oldValues:M8}},c8=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid folder ID: ${m}`,"INVALID_ID");let d=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();y.factory(!d,I.notFound,`Folder not found: ${m}`,"FOLDER_NOT_FOUND");let t=d.id;Z.set(t,m);let r=await M(x,t),e=await f(x,t),w8=Q6();await x.updateTable("entities").set({deleted_at:w8}).where("id","in",[t,...e]).execute();let j8=[];for(let M8 of e){let h8=await x.selectFrom("entities").select("object_id").where("id","=",M8).executeTakeFirst();if(h8)j8.push(h8.object_id)}return{id:m,deleted:!0,descendantCount:e.length,path:r,descendantIds:j8,deletedPks:[t,...e]}},z6=async(x,T8,m,$8,d=null)=>{let t=await v(x,m),r=x.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",t===null?"is":"=",t).where("name","=",$8).where("deleted_at","is",null);if(d)r=r.where("object_id","!=",d);return!!await r.executeTakeFirst()},u8=async(x,T8,m,$8)=>{let d=await v(x,m),t=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.parent_folder_id",d===null?"is":"=",d).where("entities.name","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!t)return null;let{id:r,object_id:e}=t;Z.set(r,e);let w8=await M(x,r),j8=await p(x,r),{entity:M8,mutationApi:h8}=oq.createFromRow(t,e,m,w8);for(let t8 of j8)h8.setField(t8.getDefinition().getName(),t8);return{entity:M8,mutationApi:h8,pk:r}},I8=async(x,T8,{folderId:m,type:$8})=>{let d;if(m){if(d=await v(x,m),d===null)return[]}else if($8){let w8=await q6(x,T8,$8);if(!w8)return[];d=w8.pk}else d=null;let t=x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",d===null?"is":"=",d).where("entities.deleted_at","is",null);if($8)t=t.where("entities.type_code","=","f").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select("entity_types.subtype");let r=await t.execute(),e=[];for(let w8 of r){let{id:j8,object_id:M8}=w8;Z.set(j8,M8);let h8=await M(x,j8),t8=await p(x,j8),{entity:o8,mutationApi:_6}=oq.createFromRow(w8,M8,w8.parent_object_id,h8);for(let r6 of t8)_6.setField(r6.getDefinition().getName(),r6);e.push({entity:o8,mutationApi:_6,pk:j8})}return e},B8=async(x,T8,{path:m,type:$8})=>{y.factory(!$8,I.validation,"type parameter is required for getFolderByPath","MISSING_TYPE");let d=(m??"").trim(),r={d:"Documents",t:"Templates",s:"Stories"}[$8];y.factory(!r,I.validation,`Invalid type: ${$8}`,"INVALID_TYPE");let e;if(d.startsWith(`${r}/`))e=d;else if(d===r)e=r;else e=d?`${r}/${d}`:r;let w8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where((j8)=>$8==="s"?j8("type_code","in",["f","s"]):j8("type_code","=","f")).where("deleted_at","is",null).execute();for(let j8 of w8){let M8=await A8(x,T8,{id:j8.object_id});if(M8&&M8.entity.getPath()===e)return M8}return null},q6=async(x,T8,m,$8)=>{if($8!==void 0)j($8);let t={d:"root_d",t:"root_t",s:"root_s"}[m];if(!t)throw I.validation(`Invalid type for root folder: ${m}`,"INVALID_TYPE");let r=await d6.readEntityTypeId(x,T8,"f",t),e=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.entity_type_id","=",r).where("entities.deleted_at","is",null).executeTakeFirst();if(!e)return null;let{id:w8,object_id:j8}=e;Z.set(w8,j8);let M8=await M(x,w8),h8=await p(x,w8),{entity:t8,mutationApi:o8}=oq.createFromRow(e,j8,e.parent_object_id,M8);for(let _6 of h8)o8.setField(_6.getDefinition().getName(),_6);return{entity:t8,mutationApi:o8,pk:w8}},j6=async(x,T8,{storeCode:m,ownerEntityId:$8,ownerEntityTypePk:d,name:t,label:r,description:e,primitiveType:w8,required:j8,multiplicity:M8,isSystem:h8=!1,allowedValues:t8})=>{if(m!==void 0)j(m);let o8=["string","object_ref","int","text","date","float"];y.factory(!o8.includes(w8),I.validation,`Invalid primitiveType: ${w8}. Must be one of: ${o8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(M8!=="single"&&M8!=="multi",I.validation,`Invalid multiplicity: ${M8}`,"INVALID_MULTIPLICITY"),y.factory($8&&d,I.validation,"Cannot set both ownerEntityId and ownerEntityTypePk","INVALID_FIELD_DEFINITION_SCOPE");let _6=Q6(),r6=await d6.readEntityTypeId(x,T8,"n",null),a=await p1.nextSeq(x,"store",Y,"n"),n=cz(K,"n",a),Q=$8?await v(x,$8):null,q8=null;if(t8&&t8.length>0)q8=JSON.stringify({allowedValues:t8});let _8=await x.insertInto("field_definitions").values({store_id:Y,object_id:n,entity_type_id:r6,type_code:"n",seq:a,owner_entity_id:Q,name:t,label:r,description:e,primitive_type:w8,required:j8?1:0,multiplicity:M8,config:q8,is_system:h8?1:0,created_at:_6,updated_at:_6}).returningAll().executeTakeFirstOrThrow(),i8=_8.id;if(Z.set(i8,n),d)await x.insertInto("class_field_defs").values({store_id:Y,class_type_id:d,field_definition_id:i8,required:j8?1:0,sort_order:null}).execute();return R(_8)},O6=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;let d=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","n").executeTakeFirst();if(!d)return null;if(d.owner_entity_id){let t=await x.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(t)Z.set(d.owner_entity_id,t.object_id)}return Z.set(d.id,m),R(d)},w6=async(x,T8,m,$8)=>{let d;if($8===null)d=await x.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").selectAll("fd").where("fd.store_id","=",Y).where("fd.name","=",m).where("fd.owner_entity_id","is",null).where("cfd.id","is",null).executeTakeFirst();else d=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",m).where("owner_entity_id","=",$8).executeTakeFirst();if(!d)return null;if(d.owner_entity_id){let t=await x.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(t)Z.set(d.owner_entity_id,t.object_id)}return Z.set(d.id,d.object_id),R(d)},f6=async(x,T8,{fieldDefinitionId:m,fieldName:$8,ownerEntityPk:d,entityTypePk:t})=>{if(m){let M8=await O6(x,T8,{id:m});if(M8)return M8}if($8&&d){let M8=await w6(x,T8,$8,d);if(M8)return M8}if($8&&t){let M8=await x.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.store_id","fd.object_id","fd.entity_type_id","fd.type_code","fd.seq","fd.owner_entity_id","fd.name","fd.label","fd.description","fd.primitive_type","fd.required","fd.multiplicity","fd.config","fd.is_system","fd.ordinal","fd.created_at","fd.updated_at","cfd.required as class_required"]).where("fd.store_id","=",Y).where("fd.name","=",$8).where("fd.owner_entity_id","is",null).where("cfd.class_type_id","=",t).executeTakeFirst();if(M8)return Z.set(M8.id,M8.object_id),M8.required=M8.class_required,R(M8)}if($8){let M8=await w6(x,T8,$8,null);if(M8)return M8}let r="unknown";if(t){let M8=await x.selectFrom("entity_types").select(["code","subtype"]).where("id","=",t).executeTakeFirst();if(M8)r=M8.subtype?`${M8.code}/${M8.subtype}`:M8.code}let e=[];if(t){let M8=await x.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select("fd.name").where("fd.store_id","=",Y).where("fd.owner_entity_id","is",null).where("cfd.class_type_id","=",t).execute();for(let h8 of M8)e.push(h8.name)}let w8=await x.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select("fd.name").where("fd.store_id","=",Y).where("fd.owner_entity_id","is",null).where("cfd.id","is",null).execute();for(let M8 of w8)if(!e.includes(M8.name))e.push(M8.name);let j8=e.length>0?e.join(", "):"none";throw I.validation(`Field '${$8}' is not defined for entity type '${r}'. Available fields: ${j8}`,"UNDEFINED_FIELD")},E6=async(x,T8,{ownerEntityPk:m,includeSystem:$8=!0})=>{let d;if(m===null){let r=x.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").selectAll("fd").where("fd.store_id","=",Y).where("fd.owner_entity_id","is",null).where("cfd.id","is",null);if(!$8)r=r.where("fd.is_system","=",0);d=await r.execute()}else{let r=x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id","=",m);if(!$8)r=r.where("is_system","=",0);d=await r.execute()}let t=[];for(let r of d){if(r.owner_entity_id){let e=await x.selectFrom("entities").select("object_id").where("id","=",r.owner_entity_id).executeTakeFirst();if(e)Z.set(r.owner_entity_id,e.object_id)}Z.set(r.id,r.object_id),t.push(R(r))}return t},P8=async(x,T8,{code:m,subtype:$8})=>{M7("resolveEntityTypePk called: code=%s, subtype=%s (store=%s)",m,$8,K);try{let d=await d6.readEntityTypeId(x,T8,m,$8);return M7("resolveEntityTypePk succeeded: code=%s, subtype=%s -> pk=%d",m,$8,d),d}catch(d){if(d.constructor?.name==="NoResultError")throw M7("resolveEntityTypePk failed: code=%s, subtype=%s (store=%s)",m,$8,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw d}},X8=async(x,T8,{code:m,subtype:$8,name:d})=>{M7("createEntityType called: code=%s, subtype=%s, name=%s",m,$8,d);let t=await d6.createEntityType(x,T8,{code:m,subtype:$8,name:d});return M7("createEntityType succeeded: id=%d, code=%s, subtype=%s",t.id,m,$8),t},N8=async(x,T8,{code:m,subtype:$8})=>{M7("getFieldDefinitionsForEntityType called: code=%s, subtype=%s (store=%s)",m,$8,K);let d;try{d=await d6.readEntityTypeId(x,T8,m,$8),M7("getFieldDefinitionsForEntityType resolved pk: code=%s, subtype=%s -> pk=%d",m,$8,d)}catch(e){if(e.constructor?.name==="NoResultError")throw M7("getFieldDefinitionsForEntityType failed: code=%s, subtype=%s (store=%s)",m,$8,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw e}let t=await x.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.store_id","fd.object_id","fd.entity_type_id","fd.type_code","fd.seq","fd.owner_entity_id","fd.name","fd.label","fd.description","fd.primitive_type","fd.required","fd.multiplicity","fd.config","fd.is_system","fd.ordinal","fd.created_at","fd.updated_at","cfd.required as class_required","cfd.sort_order"]).where("fd.store_id","=",Y).where("cfd.class_type_id","=",d).orderBy("cfd.sort_order","asc").execute(),r=[];for(let e of t)Z.set(e.id,e.object_id),e.required=e.class_required,r.push(R(e));return r},g8=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid definition ID: ${m}`,"INVALID_ID");let d=await x.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","n").executeTakeFirst();y.factory(!d,I.notFound,`Field definition not found: ${m}`,"DEFINITION_NOT_FOUND"),y.factory(d.is_system===1,I.validation,`Cannot delete system field definition: ${m}`,"SYSTEM_DEFINITION");let t=d.id;if(await x.deleteFrom("field_definitions").where("id","=",t).execute(),d.owner_entity_id){let e=await x.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(e)Z.set(d.owner_entity_id,e.object_id)}let{entity:r}=R(d);return r},F8=async(x,T8,{entityId:m,fieldDefinitionId:$8,fieldName:d,value:t,values:r})=>{let e=t1(m);y.factory(!e,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let w8=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",e.seq).where("type_code","=",e.typeCode).where("deleted_at","is",null).executeTakeFirst();y.factory(!w8,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let j8=w8.id,{entity:M8,pk:h8}=await f6(x,T8,{fieldDefinitionId:$8,fieldName:d,ownerEntityPk:j8,entityTypePk:w8.entity_type_id}),t8=M8.getMultiplicity(),o8;if(t8==="single")if(r&&Array.isArray(r))y.factory(r.length>1||r.length===0,I.validation,`Field '${M8.getName()}' is single-valued but received ${r.length} values`,"MULTIPLICITY_VIOLATION"),o8=[r[0]];else y.factory(t===void 0,I.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),o8=[t];else if(r&&Array.isArray(r))o8=r;else if(t!==void 0)o8=[t];else y.factory(!0,I.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");let _6=M8.getPrimitiveType();await h(x,j8,h8,_6);for(let Q=0;Q<o8.length;Q++){let q8=o8[Q];await E(x,j8,h8,_6,q8,Q)}let r6=o8,a=Ok.create({definition:M8,values:r6}),n;if(e.typeCode==="f")n=await A8(x,T8,{id:m});else if(e.typeCode==="s")n=await C6(x,T8,{id:m});else if(e.typeCode==="j")n=await e$(x,T8,{id:m});else n=await e8(x,T8,{id:m});return y.factory(!n,I.notFound,`Entity not found after field update: ${m}`,"ENTITY_NOT_FOUND"),{...n,field:a,fieldName:M8.getName()}},l8=async(x,T8,{entityId:m,fieldDefinitionId:$8,fieldName:d})=>{let t=t1(m);y.factory(!t,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let r=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",t.seq).where("type_code","=",t.typeCode).where("deleted_at","is",null).executeTakeFirst();y.factory(!r,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let e=r.id,{entity:w8,pk:j8}=await f6(x,T8,{fieldDefinitionId:$8,fieldName:d,ownerEntityPk:e,entityTypePk:r.entity_type_id}),M8=w8.getPrimitiveType();await h(x,e,j8,M8);let h8;if(t.typeCode==="f")h8=await A8(x,T8,{id:m});else if(t.typeCode==="s")h8=await C6(x,T8,{id:m});else if(t.typeCode==="j")h8=await e$(x,T8,{id:m});else h8=await e8(x,T8,{id:m});return y.factory(!h8,I.notFound,`Entity not found after field delete: ${m}`,"ENTITY_NOT_FOUND"),{...h8,fieldName:w8.getName()}},Y6=async(x,T8,{entityId:m,fieldDefinitionId:$8,fieldName:d})=>{let t=t1(m);if(!t)return null;let r=await x.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",t.seq).where("type_code","=",t.typeCode).where("deleted_at","is",null).executeTakeFirst();if(!r)return null;let e=r.id,w8;try{w8=await f6(x,T8,{fieldDefinitionId:$8,fieldName:d,ownerEntityPk:e,entityTypePk:r.entity_type_id})}catch{return null}let{entity:j8,pk:M8}=w8,h8=j8.getPrimitiveType(),o8=(await g(x,e)).get(M8);if(!o8||o8.values.length===0)return null;let _6=o8.values,r6=j8.getMultiplicity()==="single";return Ok.create({definition:j8,values:_6,isSingleValued:r6})},E8=async(x,T8,{documentPk:m,documentObjectId:$8,documentEntityTypeId:d,content:t,versionNumber:r,publishedAt:e=null})=>{await L(x);let w8=Q6(),j8=await d6.readEntityTypeId(x,T8,"v",null),M8=await p1.nextSeq(x,"store",Y,"v"),h8=cz(K,"v",M8),o8=(await x.insertInto("entities").values({store_id:Y,object_id:h8,entity_type_id:j8,type_code:"v",seq:M8,parent_folder_id:null,parent_object_id:null,name:null,created_at:w8,updated_at:w8}).returningAll().executeTakeFirstOrThrow()).id;Z.set(o8,h8);let _6=u("document",j8);if(!_6)throw Error('System field definition "document" not found for version type');await x.insertInto("obj_ref_fields").values({entity_id:o8,field_definition_id:_6.pk,target_entity_id:m,ordinal:0}).execute();let r6=u("version_number",j8);if(!r6)throw Error('System field definition "version_number" not found for version type');if(await x.insertInto("int_fields").values({entity_id:o8,field_definition_id:r6.pk,value:r,ordinal:0}).execute(),e!==null){let a=u("published_at",j8);if(!a)throw Error('System field definition "published_at" not found for version type');await x.insertInto("date_fields").values({entity_id:o8,field_definition_id:a.pk,value:e,ordinal:0}).execute()}return await x.insertInto("entity_content").values({entity_id:o8,content_text:t,content_type:"markdown",updated_at:w8}).execute(),await N4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${o8}, ${t})`.execute(x),M7("Created version entity %s (pk=%d) for document %s, version %d, draft=%s",h8,o8,$8,r,e===null),{pk:o8,objectId:h8}},p8=async(x,T8)=>{if(!T8)return null;await L(x);let m=await x.selectFrom("entities").select(["object_id","entity_type_id"]).where("id","=",T8).where("deleted_at","is",null).executeTakeFirst();if(!m)return null;let{entity_type_id:$8,object_id:d}=m;Z.set(T8,d);let t=u("version_number",$8),r=null;if(t)r=(await x.selectFrom("int_fields").select("value").where("entity_id","=",T8).where("field_definition_id","=",t.pk).executeTakeFirst())?.value??null;let e=u("published_at",$8),w8=null;if(e)w8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",T8).where("field_definition_id","=",e.pk).executeTakeFirst())?.value??null;let M8=(await x.selectFrom("entity_content").select("content_text").where("entity_id","=",T8).executeTakeFirst())?.content_text??null;return{versionNumber:r,publishedAt:w8,content:M8,objectId:d}},n8=async(x,T8,{type:m,storeCode:$8,parentId:d,name:t,initialContent:r,subtype:e})=>{let w8=e6.getEntityFactory(m);if($8!==void 0)j($8);await L(x);let j8=Q6(),M8=await d6.readEntityTypeId(x,T8,m,e??null),h8=e?await d6.readEntityTypeId(x,T8,m,null):M8,t8=await p1.nextSeq(x,"store",Y,m),o8=cz(K,m,t8),_6=await v(x,d),r6=await x.insertInto("entities").values({store_id:Y,object_id:o8,entity_type_id:M8,type_code:m,seq:t8,parent_folder_id:_6,parent_object_id:d,name:t,created_at:j8,updated_at:j8}).returningAll().executeTakeFirstOrThrow(),a=r6.id;Z.set(a,o8);let n=r!==null&&r!==void 0,Q=null;if(n){let X6=await E8(x,T8,{documentPk:a,documentObjectId:o8,documentEntityTypeId:M8,content:r,versionNumber:1,publishedAt:null});Q=X6.objectId;let k6=u("draft_version",h8);if(!k6)throw Error(`System field definition "draft_version" not found for base type ${m}`);await x.insertInto("obj_ref_fields").values({entity_id:a,field_definition_id:k6.pk,target_entity_id:X6.pk,ordinal:0}).execute(),M7("Created document %s with draft version %s",o8,Q)}let q8=await M(x,a),_8={...r6,subtype:e??null},{entity:i8,mutationApi:$6}=w8(_8,o8,d,q8,null,n,n?r:null,null);return{entity:i8,mutationApi:$6,pk:a}},e8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;let{typeCode:d,seq:t}=$8,r=e6.getEntityFactory(d);await L(x);let e=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","=",d).where("e.seq","=",t).where("e.deleted_at","is",null).executeTakeFirst();if(!e)return null;let{entity_id:w8,entity_type_id:j8}=e;Z.set(w8,m);let M8=j8;if(e.subtype)M8=await d6.readEntityTypeId(x,T8,d,null);let h8=u("draft_version",M8),t8=u("latest_published_version",M8),o8=null,_6=null;if(h8)o8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",w8).where("field_definition_id","=",h8.pk).executeTakeFirst())?.target_entity_id??null;if(t8)_6=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",w8).where("field_definition_id","=",t8.pk).executeTakeFirst())?.target_entity_id??null;let r6=null,a=null,n=null,Q=!1;if(_6){let T1=await p8(x,_6);if(T1)r6=T1.versionNumber,a=T1.content}if(o8){let T1=await p8(x,o8);if(T1)Q=!0,n=T1.content}let q8=null,_8=null,i8=null,$6=u("edit_session_id",M8),X6=u("edit_started_at",M8),k6=u("edit_last_activity_at",M8);if($6)q8=(await x.selectFrom("string_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",$6.pk).executeTakeFirst())?.value??null;if(X6)_8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",X6.pk).executeTakeFirst())?.value??null;if(k6)i8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",k6.pk).executeTakeFirst())?.value??null;let F6=await M(x,w8),y6=await p(x,w8),{entity:w1,mutationApi:h4}=r(e,e.object_id,e.parent_object_id,F6,r6,Q,n,a);for(let T1 of y6)h4.setField(T1.getDefinition().getName(),T1);if(q8)h4.setEditState({sessionId:q8,startedAt:_8,lastActivityAt:i8});return{entity:w1,mutationApi:h4,pk:w8}},W6=async(x,T8,{id:m,name:$8,parentId:d})=>{let t=t1(m);y.factory(!t,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:r,seq:e}=t,w8=e6.getContentTypeLabel(r),j8=e6.getEntityFactory(r),M8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",e).where("type_code","=",r).where("deleted_at","is",null).executeTakeFirst();y.factory(!M8,I.notFound,`${w8} not found: ${m}`,"NOT_FOUND");let h8=M8.id,t8={name:M8.name,parentId:M8.parent_object_id,path:null};Z.set(h8,m),t8.path=await M(x,h8);let _6={updated_at:Q6()};if($8!==void 0)_6.name=$8;if(d!==void 0){let a=await v(x,d);_6.parent_folder_id=a,_6.parent_object_id=d}await x.updateTable("entities").set(_6).where("id","=",h8).execute();let r6=await e8(x,T8,{id:m});return y.factory(!r6,I.notFound,`${w8} not found after update: ${m}`,"NOT_FOUND"),{...r6,oldValues:t8}},N6=async(x,T8,{id:m,subtype:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:t,seq:r}=d,e=e6.getContentTypeLabel(t),w8=e6.getEntityFactory(t),j8=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",r).where("type_code","=",t).where("deleted_at","is",null).executeTakeFirst();y.factory(!j8,I.notFound,`${e} not found: ${m}`,"NOT_FOUND");let M8=j8.id,h8=await d6.readEntityTypeId(x,T8,t,$8??null),t8=Q6();await x.updateTable("entities").set({entity_type_id:h8,updated_at:t8}).where("id","=",M8).execute(),Z.set(M8,m);let o8=await e8(x,T8,{id:m});return y.factory(!o8,I.notFound,`${e} not found after type update: ${m}`,"NOT_FOUND"),o8},g6=async(x,T8,{entityId:m,entityTypePk:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let{typeCode:t,seq:r}=d,e=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",r).where("type_code","=",t).where("deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`Entity not found: ${m}`,"NOT_FOUND");let w8=e.id,j8=await x.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.primitive_type"]).where("cfd.class_type_id","=",$8).execute(),M8=0;for(let h8 of j8)await h(x,w8,h8.id,h8.primitive_type),M8++;return{deletedCount:M8}},$1=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:d,seq:t}=$8,r=e6.getContentTypeLabel(d),e=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",t).where("type_code","=",d).where("deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`${r} not found: ${m}`,"NOT_FOUND");let w8=e.id;Z.set(w8,m);let j8=await M(x,w8);await L(x);let M8=await d6.readEntityTypeId(x,T8,"v",null),h8=u("document",M8);if(h8){let o8=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","=",h8.pk).where("orf.target_entity_id","=",w8).where("ve.deleted_at","is",null).execute();M7("Cascade deleting %d version entities for document %s",o8.length,m);let _6=await d6.readEntityTypeId(x,T8,d,null),r6=u("draft_version",_6),a=u("latest_published_version",_6),n=[r6?.pk,a?.pk].filter(Boolean);if(n.length>0)await x.deleteFrom("obj_ref_fields").where("entity_id","=",w8).where("field_definition_id","in",n).execute();for(let Q of o8){let q8=Q.version_pk;await N4`DELETE FROM entity_content_fts WHERE rowid = ${q8}`.execute(x),await x.deleteFrom("entities").where("id","=",q8).execute()}}let t8=Q6();return await x.updateTable("entities").set({deleted_at:t8}).where("id","=",w8).execute(),{id:m,deleted:!0,path:j8}},r1=async(x,T8,{id:m,content:$8,sessionId:d})=>{let t=t1(m);y.factory(!t,I.validation,`Invalid content ID: ${m}`,"INVALID_ID"),y.factory(!d,I.validation,"sessionId is required","MISSING_SESSION_ID");let{typeCode:r,seq:e}=t,w8=e6.getContentTypeLabel(r);await L(x);let j8=Q6(),M8=new Date(Date.now()-yJ).toISOString(),h8=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","=",r).where("e.seq","=",e).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!h8,I.notFound,`${w8} not found: ${m}`,"NOT_FOUND");let{id:t8,entity_type_id:o8}=h8,_6=o8;if(h8.subtype)_6=await d6.readEntityTypeId(x,T8,r,null);let r6=u("edit_session_id",_6),a=u("edit_last_activity_at",_6);if(r6&&a){let X6=await x.selectFrom("string_fields").select("value").where("entity_id","=",t8).where("field_definition_id","=",r6.pk).executeTakeFirst();if(X6&&X6.value!==d){let k6=await x.selectFrom("date_fields").select("value").where("entity_id","=",t8).where("field_definition_id","=",a.pk).executeTakeFirst();if(k6&&k6.value>=M8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let n=u("draft_version",_6);if(!n)throw Error(`System field definition "draft_version" not found for base type ${r}`);let q8=(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",t8).where("field_definition_id","=",n.pk).executeTakeFirst())?.target_entity_id??null;if(q8)await N4`DELETE FROM entity_content_fts WHERE rowid = ${q8}`.execute(x),await x.updateTable("entity_content").set({content_text:$8,updated_at:j8}).where("entity_id","=",q8).execute(),await N4`INSERT INTO entity_content_fts(rowid, content_text) VALUES (${q8}, ${$8})`.execute(x),M7("Updated draft version content for %s (version pk=%d)",m,q8);else{let X6=await d6.readEntityTypeId(x,T8,"v",null),k6=u("version_number",X6),F6=u("published_at",X6),y6=u("document",X6),w1=0;if(y6&&k6&&F6)w1=(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(k$)=>k$.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",k6.pk)).innerJoin("date_fields as df",(k$)=>k$.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",F6.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",y6.pk).where("orf.target_entity_id","=",t8).executeTakeFirst())?.max_version??0;let h4=w1+1,T1=await E8(x,T8,{documentPk:t8,documentObjectId:m,documentEntityTypeId:o8,content:$8,versionNumber:h4,publishedAt:null});await x.insertInto("obj_ref_fields").values({entity_id:t8,field_definition_id:n.pk,target_entity_id:T1.pk,ordinal:0}).execute(),M7("Created new draft version %s (pk=%d) for %s, version_number=%d",T1.objectId,T1.pk,m,h4)}let i8=!await G8(x,T8,{id:m,sessionId:d}),$6=await e8(x,T8,{id:m});return y.factory(!$6,I.notFound,`${w8} not found after draft save: ${m}`,"NOT_FOUND"),{...$6,lockLost:i8}},m8=async(x,T8,{id:m,sessionId:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:t,seq:r}=d,e=e6.getContentTypeLabel(t);await L(x);let w8=Q6(),j8=new Date(Date.now()-yJ).toISOString(),M8=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","=",t).where("e.seq","=",r).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!M8,I.notFound,`${e} not found: ${m}`,"NOT_FOUND");let{id:h8,entity_type_id:o8}=M8;if(M8.subtype)o8=await d6.readEntityTypeId(x,T8,t,null);let _6=u("draft_version",o8),r6=u("latest_published_version",o8);if(!_6)throw Error(`System field definition "draft_version" not found for base type ${t}`);let a=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",h8).where("field_definition_id","=",_6.pk).executeTakeFirst();y.factory(!a,I.notFound,`No draft found for ${e}: ${m}`,"DRAFT_NOT_FOUND");let n=a.target_entity_id,Q=u("edit_session_id",o8),q8=u("edit_last_activity_at",o8),_8=u("edit_started_at",o8);if($8&&Q&&q8){let k$=await x.selectFrom("string_fields").select("value").where("entity_id","=",h8).where("field_definition_id","=",Q.pk).executeTakeFirst();if(k$&&k$.value!==$8){let Lq=await x.selectFrom("date_fields").select("value").where("entity_id","=",h8).where("field_definition_id","=",q8.pk).executeTakeFirst();if(Lq&&Lq.value>=j8)y.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let i8=await d6.readEntityTypeId(x,T8,"v",null),$6=u("version_number",i8),X6=u("published_at",i8),k6=u("document",i8);if(!$6||!X6||!k6)throw Error("Required version field definitions not found");let y6=(await x.selectFrom("int_fields").select("value").where("entity_id","=",n).where("field_definition_id","=",$6.pk).executeTakeFirst())?.value??1,T1=((await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(k$)=>k$.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",$6.pk)).innerJoin("date_fields as df",(k$)=>k$.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",X6.pk)).select(x.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",k6.pk).where("orf.target_entity_id","=",h8).executeTakeFirst())?.max_version??0)+1;if(y6!==T1)await x.updateTable("int_fields").set({value:T1}).where("entity_id","=",n).where("field_definition_id","=",$6.pk).execute();if(await x.insertInto("date_fields").values({entity_id:n,field_definition_id:X6.pk,value:w8,ordinal:0}).execute(),r6)if(await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",h8).where("field_definition_id","=",r6.pk).executeTakeFirst())await x.updateTable("obj_ref_fields").set({target_entity_id:n}).where("entity_id","=",h8).where("field_definition_id","=",r6.pk).execute();else await x.insertInto("obj_ref_fields").values({entity_id:h8,field_definition_id:r6.pk,target_entity_id:n,ordinal:0}).execute();if(await x.deleteFrom("obj_ref_fields").where("entity_id","=",h8).where("field_definition_id","=",_6.pk).execute(),Q)await x.deleteFrom("string_fields").where("entity_id","=",h8).where("field_definition_id","=",Q.pk).execute();if(_8)await x.deleteFrom("date_fields").where("entity_id","=",h8).where("field_definition_id","=",_8.pk).execute();if(q8)await x.deleteFrom("date_fields").where("entity_id","=",h8).where("field_definition_id","=",q8.pk).execute();M7("Published version %d for %s (version pk=%d)",T1,m,n);let y7=await e8(x,T8,{id:m});return y.factory(!y7,I.notFound,`${e} not found after publish: ${m}`,"NOT_FOUND"),y7},i=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:d,seq:t}=$8,r=e6.getContentTypeLabel(d);await L(x);let e=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","=",d).where("e.seq","=",t).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`${r} not found: ${m}`,"NOT_FOUND");let{id:w8,entity_type_id:j8}=e;if(e.subtype)j8=await d6.readEntityTypeId(x,T8,d,null);let M8=u("draft_version",j8);if(!M8)throw Error(`System field definition "draft_version" not found for base type ${d}`);let h8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",w8).where("field_definition_id","=",M8.pk).executeTakeFirst();if(h8){let o8=h8.target_entity_id;await x.deleteFrom("obj_ref_fields").where("entity_id","=",w8).where("field_definition_id","=",M8.pk).execute(),await N4`DELETE FROM entity_content_fts WHERE rowid = ${o8}`.execute(x),await x.deleteFrom("entities").where("id","=",o8).execute(),M7("Discarded draft version (pk=%d) for %s",o8,m)}let t8=await e8(x,T8,{id:m});return y.factory(!t8,I.notFound,`${r} not found after discard: ${m}`,"NOT_FOUND"),t8},l=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;let{typeCode:d,seq:t}=$8;await L(x);let r=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","=",d).where("e.seq","=",t).where("e.deleted_at","is",null).executeTakeFirst();if(!r)return null;let{id:e,entity_type_id:w8}=r;if(r.subtype)w8=await d6.readEntityTypeId(x,T8,d,null);let j8=u("draft_version",w8);if(!j8)return null;let M8=await x.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",e).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!M8)return null;let h8=M8.target_entity_id,t8=await x.selectFrom("entity_content").select(["content_text","updated_at"]).where("entity_id","=",h8).executeTakeFirst();if(!t8)return null;return{entityId:r.object_id,content:t8.content_text,updatedAt:t8.updated_at}},c=async(x,T8,{id:m,versionNumber:$8})=>{let d=t1(m);if(!d)return null;let{typeCode:t,seq:r}=d;await L(x);let e=await x.selectFrom("entities").select(["id","object_id"]).where("store_id","=",Y).where("type_code","=",t).where("seq","=",r).where("deleted_at","is",null).executeTakeFirst();if(!e)return null;let w8=e.id,j8=await d6.readEntityTypeId(x,T8,"v",null),M8=u("document",j8),h8=u("version_number",j8),t8=u("published_at",j8);if(!M8||!h8)return null;let o8=x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(n)=>n.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",h8.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","=",M8.pk).where("orf.target_entity_id","=",w8).where("if.value","=",$8).where("ve.deleted_at","is",null),_6;if(t8)_6=await o8.innerJoin("date_fields as df",(n)=>n.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",t8.pk)).select("df.value as published_at").executeTakeFirst();else _6=await o8.executeTakeFirst();if(!_6)return null;let r6=_6.version_pk,a=await x.selectFrom("entity_content").select("content_text").where("entity_id","=",r6).executeTakeFirst();return{entityId:e.object_id,versionNumber:$8,content:a?.content_text??null,publishedAt:_6.published_at??null}},W8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return[];let{typeCode:d,seq:t}=$8;await L(x);let r=await x.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d).where("seq","=",t).where("deleted_at","is",null).executeTakeFirst();if(!r)return[];let e=r.id,w8=await d6.readEntityTypeId(x,T8,"v",null),j8=u("document",w8),M8=u("version_number",w8),h8=u("published_at",w8);if(!j8||!M8||!h8)return[];return(await x.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(o8)=>o8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",M8.pk)).innerJoin("date_fields as df",(o8)=>o8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",h8.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","=",e).where("ve.deleted_at","is",null).orderBy("if.value","desc").execute()).map((o8)=>({versionNumber:o8.version_number,publishedAt:o8.published_at}))},F=async(x,T8,m,$8,d)=>{let t=await v(x,m),r=await x.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=",d).where("e.parent_folder_id",t===null?"is":"=",t).where("e.name","=",$8).where("e.deleted_at","is",null).executeTakeFirst();if(!r)return null;return e8(x,T8,{id:r.object_id})},H8=async(x,T8,{parentId:m,type:$8})=>{let d=await v(x,m),t=await x.selectFrom("entities as e").select("e.object_id").where("e.store_id","=",Y).where("e.type_code","=",$8).where("e.parent_folder_id",d===null?"is":"=",d).where("e.deleted_at","is",null).execute(),r=[];for(let e of t){let w8=await e8(x,T8,{id:e.object_id});if(w8)r.push(w8)}return r},o=async(x,T8,{id:m,sessionId:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),await L(x);let t=Q6(),r=new Date(Date.now()-yJ).toISOString(),e=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","=",d.typeCode).where("e.seq","=",d.seq).where("e.deleted_at","is",null).executeTakeFirst();y.factory(!e,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:w8,entity_type_id:j8}=e;if(e.subtype)j8=await d6.readEntityTypeId(x,T8,d.typeCode,null);let M8=u("edit_session_id",j8),h8=u("edit_started_at",j8),t8=u("edit_last_activity_at",j8);if(!M8||!h8||!t8)throw Error("Edit state field definitions not found");let o8=await x.selectFrom("string_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",M8.pk).executeTakeFirst(),_6=await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",h8.pk).executeTakeFirst(),r6=await x.selectFrom("date_fields").select("value").where("entity_id","=",w8).where("field_definition_id","=",t8.pk).executeTakeFirst(),a=o8?.value??null,n=_6?.value??null,Q=r6?.value??null;if(a)if(a===$8)return await x.updateTable("date_fields").set({value:t}).where("entity_id","=",w8).where("field_definition_id","=",h8.pk).execute(),await x.updateTable("date_fields").set({value:t}).where("entity_id","=",w8).where("field_definition_id","=",t8.pk).execute(),{success:!0};else if(Q&&Q<r)return await x.updateTable("string_fields").set({value:$8}).where("entity_id","=",w8).where("field_definition_id","=",M8.pk).execute(),await x.updateTable("date_fields").set({value:t}).where("entity_id","=",w8).where("field_definition_id","=",h8.pk).execute(),await x.updateTable("date_fields").set({value:t}).where("entity_id","=",w8).where("field_definition_id","=",t8.pk).execute(),{success:!0};else return{success:!1,meta:{lockedBy:a,lockedSince:n,timeoutSeconds:yJ/1000}};else return await x.insertInto("string_fields").values({entity_id:w8,field_definition_id:M8.pk,value:$8,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:w8,field_definition_id:h8.pk,value:t,ordinal:0}).execute(),await x.insertInto("date_fields").values({entity_id:w8,field_definition_id:t8.pk,value:t,ordinal:0}).execute(),{success:!0}},G8=async(x,T8,{id:m,sessionId:$8})=>{let d=t1(m);if(!d)return!1;await L(x);let t=Q6(),r=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","=",d.typeCode).where("e.seq","=",d.seq).executeTakeFirst();if(!r)return!1;let{id:e,entity_type_id:w8}=r;if(r.subtype)w8=await d6.readEntityTypeId(x,T8,d.typeCode,null);let j8=u("edit_session_id",w8),M8=u("edit_started_at",w8),h8=u("edit_last_activity_at",w8);if(!j8||!h8)return!1;let t8=await x.selectFrom("string_fields").select("value").where("entity_id","=",e).where("field_definition_id","=",j8.pk).executeTakeFirst();if(!t8||t8.value!==$8)return!1;return((await x.updateTable("date_fields").set({value:t}).where("entity_id","=",e).where("field_definition_id","=",h8.pk).execute())[0]?.numUpdatedRows||0)>0},Z8=async(x,T8,{id:m})=>{let $8=t1(m);y.factory(!$8,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),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","=",$8.typeCode).where("e.seq","=",$8.seq).executeTakeFirst();y.factory(!d,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:t,entity_type_id:r}=d;if(d.subtype)r=await d6.readEntityTypeId(x,T8,$8.typeCode,null);let e=u("edit_session_id",r),w8=u("edit_started_at",r),j8=u("edit_last_activity_at",r);if(e)await x.deleteFrom("string_fields").where("entity_id","=",t).where("field_definition_id","=",e.pk).execute();if(w8)await x.deleteFrom("date_fields").where("entity_id","=",t).where("field_definition_id","=",w8.pk).execute();if(j8)await x.deleteFrom("date_fields").where("entity_id","=",t).where("field_definition_id","=",j8.pk).execute()},f8=async(x,T8,{id:m})=>{let $8=t1(m);if(!$8)return null;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","=",$8.typeCode).where("e.seq","=",$8.seq).executeTakeFirst();if(!d)return null;let{id:t,entity_type_id:r}=d;if(d.subtype)r=await d6.readEntityTypeId(x,T8,$8.typeCode,null);let e=u("edit_session_id",r),w8=u("edit_started_at",r),j8=u("edit_last_activity_at",r);if(!e)return null;let M8=await x.selectFrom("string_fields").select("value").where("entity_id","=",t).where("field_definition_id","=",e.pk).executeTakeFirst();if(!M8)return null;let h8=null,t8=null;if(w8)h8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",t).where("field_definition_id","=",w8.pk).executeTakeFirst())?.value??null;if(j8)t8=(await x.selectFrom("date_fields").select("value").where("entity_id","=",t).where("field_definition_id","=",j8.pk).executeTakeFirst())?.value??null;return{sessionId:M8.value,startedAt:h8,lastActivityAt:t8}},S8=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"f","root_s"),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.entity_type_id","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:t,object_id:r}=d;Z.set(t,r);let e=await M(x,t),w8=await p(x,t),{entity:j8,mutationApi:M8}=oq.createFromRow(d,r,d.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:t}},Q8=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"s",null),d=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",$8).where("entities.deleted_at","is",null).execute(),t=[];for(let r of d){let{id:e,object_id:w8}=r;Z.set(e,w8);let j8=await M(x,e),M8=await p(x,e),{entity:h8,mutationApi:t8}=VO.createFromRow(r,w8,r.parent_object_id,j8);for(let o8 of M8)t8.setField(o8.getDefinition().getName(),o8);t.push({entity:h8,mutationApi:t8,pk:e})}return t},C6=async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);if(!d)return null;if(d.typeCode!=="s")return null;let t=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","s").where("entities.deleted_at","is",null).executeTakeFirst();if(!t)return null;let r=t.id;Z.set(r,m);let e=await M(x,r),w8=await p(x,r),{entity:j8,mutationApi:M8}=VO.createFromRow(t,m,t.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:r}},$$=async(x,T8,{storeCode:m,parentId:$8,name:d})=>{if(m!==void 0)j(m);y.factory(!d,I.validation,"Story name is required","MISSING_NAME");let t=Q6(),r=await d6.readEntityTypeId(x,T8,"s",null),e=await p1.nextSeq(x,"store",Y,"s"),w8=await v(x,$8),j8=cz(K,"s",e),M8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:r,type_code:"s",seq:e,parent_folder_id:w8,parent_object_id:$8,name:d,created_at:t,updated_at:t}).returningAll().executeTakeFirstOrThrow(),h8=M8.id;Z.set(h8,j8);let t8=await M(x,h8),{entity:o8,mutationApi:_6}=VO.createFromRow(M8,j8,$8,t8);return{entity:o8,mutationApi:_6,pk:h8}},T7=async(x,T8,{id:m,name:$8})=>{let d=t1(m);y.factory(!d,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let t=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!t,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let r=t.id;Z.set(r,m);let e=t.name,w8=await M(x,r),j8=await x.updateTable("entities").set({name:$8,updated_at:Q6()}).where("id","=",r).returningAll().executeTakeFirstOrThrow(),M8=await M(x,r),h8=await p(x,r),{entity:t8,mutationApi:o8}=VO.createFromRow(j8,m,j8.parent_object_id,M8);for(let _6 of h8)o8.setField(_6.getDefinition().getName(),_6);return{entity:t8,mutationApi:o8,pk:r,oldValues:{name:e,path:w8}}},g7=async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);y.factory(!d,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let t=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();y.factory(!t,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let r=t.id;Z.set(r,m);let e=await M(x,r),w8=await f(x,r),j8=Q6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[r,...w8]).execute();let M8=[];for(let h8 of w8){let t8=await x.selectFrom("entities").select("object_id").where("id","=",h8).executeTakeFirst();if(t8)M8.push(t8.object_id)}return{id:m,deleted:!0,descendantCount:w8.length,path:e,descendantIds:M8,deletedPks:[r,...w8]}},b7=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"f","root_j"),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.entity_type_id","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:t,object_id:r}=d;Z.set(t,r);let e=await M(x,t),w8=await p(x,t),{entity:j8,mutationApi:M8}=oq.createFromRow(d,r,d.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:t}},L3=async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=await d6.readEntityTypeId(x,T8,"j",null),d=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",$8).where("entities.deleted_at","is",null).execute(),t=[];for(let r of d){let{id:e,object_id:w8}=r;Z.set(e,w8);let j8=await M(x,e),M8=await p(x,e),{entity:h8,mutationApi:t8}=Zk.createFromRow(r,w8,r.parent_object_id,j8);for(let o8 of M8)t8.setField(o8.getDefinition().getName(),o8);t.push({entity:h8,mutationApi:t8,pk:e})}return t},e$=async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);if(!d)return null;if(d.typeCode!=="j")return null;let t=await x.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","j").where("entities.deleted_at","is",null).executeTakeFirst();if(!t)return null;let r=t.id;Z.set(r,m);let e=await M(x,r),w8=await p(x,r),{entity:j8,mutationApi:M8}=Zk.createFromRow(t,m,t.parent_object_id,e);for(let h8 of w8)M8.setField(h8.getDefinition().getName(),h8);return{entity:j8,mutationApi:M8,pk:r}},y8=Object.freeze({...H,getCodes:X,getType:P,getCode:w,getPk:T,toJSON:G,createFolder:s,readFolder:A8,updateFolder:v8,deleteFolder:c8,isDuplicateNameInParent:z6,findFolderByName:u8,listFolderContents:I8,getFolderByPath:B8,readRootFolderForType:q6,createContent:n8,readContent:e8,updateContent:W6,updateEntityType:N6,deleteTypeScopedFieldValues:g6,deleteContent:$1,saveDraft:r1,readDraft:l,publishContent:m8,discardDraft:i,readVersion:c,getVersions:W8,findContentByName:F,listContent:H8,createFieldDefinition:j6,readFieldDefinition:O6,findFieldDefinitionByName:w6,resolveFieldDefinition:f6,getFieldDefinitionsForOwner:E6,getFieldDefinitionsForEntityType:N8,resolveEntityTypePk:P8,deleteFieldDefinition:g8,createEntityType:X8,setFieldValue:F8,deleteFieldValue:l8,getFieldValue:Y6,setEditState:o,clearEditState:Z8,getEditState:f8,readStoryRootFolder:S8,listStories:Q8,readStory:C6,createStory:$$,renameStory:T7,deleteStory:g7,readJobRootFolder:b7,listJobs:L3,readJob:e$,createJob:async(x,T8,{storeCode:m,parentId:$8,name:d})=>{if(m!==void 0)j(m);y.factory(!d,I.validation,"Job name is required","MISSING_NAME");let t=Q6(),r=await d6.readEntityTypeId(x,T8,"j",null),e=await p1.nextSeq(x,"store",Y,"j"),w8=await v(x,$8),j8=cz(K,"j",e),M8=await x.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:r,type_code:"j",seq:e,parent_folder_id:w8,parent_object_id:$8,name:d,created_at:t,updated_at:t}).returningAll().executeTakeFirstOrThrow(),h8=M8.id;Z.set(h8,j8);let t8=await M(x,h8),{entity:o8,mutationApi:_6}=Zk.createFromRow(M8,j8,$8,t8);return{entity:o8,mutationApi:_6,pk:h8}},deleteJob:async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);y.factory(!d,I.validation,`Invalid job ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="j",I.validation,`Not a job ID: ${m}`,"INVALID_TYPE");let t=await x.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",d.seq).where("type_code","=","j").where("deleted_at","is",null).executeTakeFirst();y.factory(!t,I.notFound,`Job not found: ${m}`,"JOB_NOT_FOUND");let r=t.id;Z.set(r,m);let e=await M(x,r),w8=await f(x,r),j8=Q6();await x.updateTable("entities").set({deleted_at:j8}).where("id","in",[r,...w8]).execute();let M8=[];for(let h8 of w8){let t8=await x.selectFrom("entities").select("object_id").where("id","=",h8).executeTakeFirst();if(t8)M8.push(t8.object_id)}return{id:m,deleted:!0,descendantCount:w8.length,path:e,descendantIds:M8,deletedPks:[r,...w8]}},createAsset:async(x,T8,{storeCode:m,hash:$8,mimeType:d,sizeBytes:t,originalFilename:r,widthPx:e,heightPx:w8,displayWidth:j8,displayHeight:M8})=>{if(m!==void 0)j(m);let h8=Q6(),t8=await d6.readEntityTypeId(x,T8,"a",null),o8=await p1.nextSeq(x,"store",Y,"a"),_6=cz(K,"a",o8),r6=await x.insertInto("entities").values({store_id:Y,object_id:_6,entity_type_id:t8,type_code:"a",seq:o8,parent_folder_id:null,parent_object_id:null,name:r,created_at:h8,updated_at:h8}).returningAll().executeTakeFirstOrThrow();await x.insertInto("assets").values({entity_id:r6.id,hash:$8,mime_type:d,size_bytes:t,original_filename:r,width_px:e,height_px:w8,display_width:j8,display_height:M8}).execute();let a=r6.id;Z.set(a,_6);let{entity:n,mutationApi:Q}=Hk.createFromRow({...r6,hash:$8,mime_type:d,size_bytes:t,original_filename:r,width_px:e,height_px:w8,display_width:j8,display_height:M8},_6);return{entity:n,mutationApi:Q,pk:a}},readAsset:async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);if(!d)return null;if(d.typeCode!=="a")return null;let t=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();if(!t)return null;let r=t.id;Z.set(r,m);let{entity:e,mutationApi:w8}=Hk.createFromRow(t,m);return{entity:e,mutationApi:w8,pk:r}},listAssets:async(x,T8,{storeCode:m})=>{if(m!==void 0)j(m);let $8=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(),d=[];for(let t of $8){let{id:r,object_id:e}=t;Z.set(r,e);let{entity:w8,mutationApi:j8}=Hk.createFromRow(t,e);d.push({entity:w8,mutationApi:j8,pk:r})}return d},deleteAsset:async(x,T8,{id:m,storeCode:$8})=>{if($8!==void 0)j($8);let d=t1(m);y.factory(!d,I.validation,`Invalid asset ID: ${m}`,"INVALID_ID"),y.factory(d.typeCode!=="a",I.validation,`Not an asset ID: ${m}`,"INVALID_TYPE");let t=await x.selectFrom("entities").innerJoin("assets","assets.entity_id","entities.id").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",d.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();y.factory(!t,I.notFound,`Asset not found: ${m}`,"ASSET_NOT_FOUND");let r=Q6();return await x.updateTable("entities").set({deleted_at:r}).where("id","=",t.id).execute(),Z.set(t.id,m),{id:m,deleted:!0,hash:t.hash}},findEntitiesByFieldValue:async(x,T8,{typeCode:m,subtype:$8,fieldName:d,fieldValue:t})=>{let r=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","=",m).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",d).where("field_definitions.owner_entity_id","is",null).where("string_fields.value","=",t);if($8!==void 0&&$8!==null)r=r.where("entity_types.subtype","=",$8);let e=await r.execute(),w8=[];for(let j8 of e){let M8=await M(x,j8.id);w8.push({id:j8.id,object_id:j8.object_id,name:j8.name,path:M8,type_code:j8.type_code,subtype:j8.subtype})}return w8}}),G6=Object.freeze({...O});return{store:y8,mutationApi:G6}},hP8=Object.freeze({create:f_6});var N_6=({inner:$,folderCache:K,contentCache:q,fieldDefinitionCache:Y,storyCache:J,jobCache:z,assetCache:W})=>{let Z=async(F,H8,o,G8)=>{let Z8=await $.createFolder(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{K.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},H=async(F,H8,{id:o})=>{let G8=K.get(o);if(G8)return G8.getEntity();let Z8=await $.readFolder(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;if(o.length>=2&&o[1]!=="s")K.set(o,o6.create(f8,S8,Q8));return f8},O=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=K.get(Z8),S8=Z8&&Z8.length>1&&Z8[1]==="j",Q8=S8?z.get(Z8):null;if(S8)z.remove(Z8);let C6=await $.updateFolder(F,H8,o),$$=o.name!==void 0&&o.name!==C6.oldValues.name||o.parentId!==void 0&&o.parentId!==C6.oldValues.parentId;return G8(()=>{if(f8){let g7=f8.getMutationApi();if(o.name!==void 0)g7.setName(o.name);if(o.parentId!==void 0)g7.setParentId(o.parentId);g7.setUpdatedAt(C6.entity.getUpdatedAt()),g7.setPath(C6.entity.getPath())}else{let{entity:g7,mutationApi:b7,pk:L3}=C6;K.set(Z8,o6.create(g7,b7,L3))}if($$){let b7=C6.oldValues.path+"/";for(let[L3,e$]of K.entries())if(e$.getEntity().getPath().startsWith(b7))K.remove(L3);for(let[L3,e$]of q.entries())if(e$.getEntity().getPath().startsWith(b7))q.remove(L3)}}),{entity:f8?f8.getEntity():C6.entity,oldValues:C6.oldValues}},X=async(F,H8,{id:o},G8)=>{let Z8=K.get(o),f8=Z8?Z8.getEntity().getPath():null,S8=await $.deleteFolder(F,H8,{id:o});return G8(()=>{K.remove(o);for(let Q8 of S8.descendantIds||[])K.remove(Q8)}),{...S8,path:f8}},P=async(F,H8,o)=>{let G8=await $.listFolderContents(F,H8,o);for(let Z8 of G8)K.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},w=async(F,H8,o)=>{let G8=await $.getFolderByPath(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8,Q8=Z8.getObjectId();if(Q8.length>=2&&Q8[1]!=="s")K.set(Q8,o6.create(Z8,f8,S8));return Z8},T=async(F,H8,o,G8)=>{let Z8=await $.findFolderByName(F,H8,o,G8);if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return K.set(f8.getObjectId(),o6.create(f8,S8,Q8)),f8},G=async(F,H8,o)=>{let G8=await $.readRootFolderForType(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8;return K.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},j=async(F,H8,o,G8,Z8)=>{return $.isDuplicateNameInParent(F,H8,o,G8,Z8)},v=async(F,H8,o,G8)=>{let Z8=await $.createContent(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{q.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},M=async(F,H8,{id:o})=>{let G8=q.get(o);if(G8)return G8.getEntity();let Z8=await $.readContent(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return q.set(o,o6.create(f8,S8,Q8)),f8},f=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.updateContent(F,H8,o);return G8(()=>{if(f8){let Q8=f8.getMutationApi();if(o.name!==void 0)Q8.setName(o.name);if(o.parentId!==void 0)Q8.setParentId(o.parentId);Q8.setUpdatedAt(S8.entity.getUpdatedAt()),Q8.setPath(S8.entity.getPath())}else{let{entity:Q8,mutationApi:C6,pk:$$}=S8;q.set(Z8,o6.create(Q8,C6,$$))}}),f8?f8.getEntity():S8.entity},k=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.updateEntityType(F,H8,o);return q.remove(Z8),f8.entity},R=async(F,H8,o)=>{return $.deleteTypeScopedFieldValues(F,H8,o)},C=async(F,H8,{id:o},G8)=>{let Z8=q.get(o),f8=Z8?Z8.getEntity().getPath():null,S8=await $.deleteContent(F,H8,{id:o});return G8(()=>{q.remove(o)}),{...S8,path:f8}},E=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.saveDraft(F,H8,o);G8(()=>{if(f8){let C6=f8.getMutationApi();C6.setDraftContent(S8.entity.getDraftContent()),C6.setHasDraft(S8.entity.hasDraftContent()),C6.setUpdatedAt(S8.entity.getUpdatedAt())}else{let{entity:C6,mutationApi:$$,pk:T7}=S8;q.set(Z8,o6.create(C6,$$,T7))}});let Q8=f8?f8.getEntity():S8.entity;if(S8.lockLost!==void 0)return{entity:Q8,lockLost:S8.lockLost};return Q8},h=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.publishContent(F,H8,o);if(f8){let Q8=f8.getMutationApi();return Q8.setPublishedVersionNumber(S8.entity.getPublishedVersionNumber()),Q8.setPublishedContent(S8.entity.getPublishedContent()),Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(S8.entity.getUpdatedAt()),Q8.setEditState(null),f8.getEntity()}else return G8(()=>{let{entity:Q8,mutationApi:C6,pk:$$}=S8;q.set(Z8,o6.create(Q8,C6,$$))}),S8.entity},g=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=q.get(Z8),S8=await $.discardDraft(F,H8,o);return G8(()=>{if(f8){let Q8=f8.getMutationApi();Q8.setDraftContent(null),Q8.setHasDraft(!1),Q8.setUpdatedAt(S8.entity.getUpdatedAt())}else{let{entity:Q8,mutationApi:C6,pk:$$}=S8;q.set(Z8,o6.create(Q8,C6,$$))}}),f8?f8.getEntity():S8.entity},S=async(F,H8,o)=>{return $.readDraft(F,H8,o)},N=async(F,H8,o)=>{return $.readVersion(F,H8,o)},L=async(F,H8,o)=>{return $.getVersions(F,H8,o)},u=async(F,H8,o,G8,Z8)=>{let f8=await $.findContentByName(F,H8,o,G8,Z8);if(!f8)return null;let{entity:S8,mutationApi:Q8,pk:C6}=f8;return q.set(S8.getObjectId(),o6.create(S8,Q8,C6)),S8},p=async(F,H8,o)=>{let G8=await $.listContent(F,H8,o);for(let Z8 of G8)q.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},s=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.setEditState(F,H8,o);return G8(()=>{q.remove(Z8)}),f8},A8=async(F,H8,o)=>{return $.getEditState(F,H8,o)},v8=async(F,H8,o,G8)=>{let{id:Z8}=o;await $.clearEditState(F,H8,o),G8(()=>{q.remove(Z8)})},c8=async(F,H8,o,G8)=>{let Z8=await $.createFieldDefinition(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{Y.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},z6=async(F,H8,{id:o})=>{let G8=Y.get(o);if(G8)return G8.getEntity();let Z8=await $.readFieldDefinition(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return Y.set(o,o6.create(f8,S8,Q8)),f8},u8=async(F,H8,o,G8)=>{let Z8=await $.findFieldDefinitionByName(F,H8,o,G8);if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return Y.set(f8.getObjectId(),o6.create(f8,S8,Q8)),f8},I8=async(F,H8,o)=>{let G8=await $.getFieldDefinitionsForOwner(F,H8,o);for(let Z8 of G8)Y.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},B8=async(F,H8,o)=>{let G8=await $.getFieldDefinitionsForEntityType(F,H8,o);for(let Z8 of G8)Y.set(Z8.entity.getObjectId(),o6.create(Z8.entity,Z8.mutationApi,Z8.pk));return G8.map((Z8)=>Z8.entity)},q6=async(F,H8,o)=>{return $.resolveEntityTypePk(F,H8,o)},j6=async(F,H8,o)=>{let G8=await $.resolveFieldDefinition(F,H8,o),{entity:Z8,mutationApi:f8,pk:S8}=G8;return Y.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},O6=async(F,H8,{id:o},G8)=>{let Z8=await $.deleteFieldDefinition(F,H8,{id:o});return G8(()=>{Y.remove(o)}),Z8},w6=async(F,H8,o,G8)=>{let{entityId:Z8}=o,f8=await $.setFieldValue(F,H8,o);return G8(()=>{let S8=K.get(Z8)||q.get(Z8)||J.get(Z8)||z.get(Z8);if(S8){let Q8=S8.getMutationApi(),C6=f8.entity.getField(f8.fieldName);Q8.setField(f8.fieldName,C6)}}),f8.entity},f6=async(F,H8,o)=>{return $.getFieldValue(F,H8,o)},E6=async(F,H8,o,G8)=>{let{entityId:Z8}=o,f8=await $.deleteFieldValue(F,H8,o);G8(()=>{let S8=K.get(Z8)||q.get(Z8)||J.get(Z8)||z.get(Z8);if(S8)S8.getMutationApi().removeField(f8.fieldName)})},P8=async(F,H8,o,G8)=>{let Z8=await $.createStory(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{let C6=f8.getObjectId();if(!J.get(C6))J.set(C6,o6.create(f8,S8,Q8))}),f8},X8=async(F,H8,{id:o})=>{let G8=J.get(o);if(G8)return G8.getEntity();let Z8=await $.readStory(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return J.set(o,o6.create(f8,S8,Q8)),f8},N8=async(F,H8,o)=>{let G8=await $.listStories(F,H8,o);for(let Z8 of G8){let{entity:f8,mutationApi:S8,pk:Q8}=Z8;J.set(f8.getObjectId(),o6.create(f8,S8,Q8))}return G8.map((Z8)=>Z8.entity)},g8=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.renameStory(F,H8,o),{entity:S8,mutationApi:Q8,pk:C6}=f8;return G8(()=>{let $$=J.get(Z8);if($$){let T7=$$.getMutationApi();T7.setName(S8.getName()),T7.setPath(S8.getPath())}else J.set(Z8,o6.create(S8,Q8,C6))}),S8},F8=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.deleteStory(F,H8,o);return G8(()=>{J.remove(Z8);for(let S8 of f8.descendantIds){let Q8=S8[0];if(S8.startsWith(Q8+"d")||S8.startsWith(Q8+"t"))q.remove(S8);else if(S8.startsWith(Q8+"f"))K.remove(S8)}}),f8},l8=async(F,H8,o)=>{let G8=await $.readStoryRootFolder(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8;return K.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},Y6=async(F,H8,o,G8)=>{let Z8=await $.createJob(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{let C6=f8.getObjectId();if(!z.get(C6))z.set(C6,o6.create(f8,S8,Q8))}),f8},E8=async(F,H8,{id:o})=>{let G8=z.get(o);if(G8)return G8.getEntity();let Z8=await $.readJob(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return z.set(o,o6.create(f8,S8,Q8)),f8},p8=async(F,H8,o)=>{let G8=await $.listJobs(F,H8,o);for(let Z8 of G8){let{entity:f8,mutationApi:S8,pk:Q8}=Z8;z.set(f8.getObjectId(),o6.create(f8,S8,Q8))}return G8.map((Z8)=>Z8.entity)},n8=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.deleteJob(F,H8,o);return G8(()=>{z.remove(Z8);for(let S8 of f8.descendantIds){let Q8=S8[0];if(S8.startsWith(Q8+"d")||S8.startsWith(Q8+"t"))q.remove(S8);else if(S8.startsWith(Q8+"f"))K.remove(S8)}}),f8},e8=async(F,H8,o)=>{let G8=await $.readJobRootFolder(F,H8,o);if(!G8)return null;let{entity:Z8,mutationApi:f8,pk:S8}=G8;return K.set(Z8.getObjectId(),o6.create(Z8,f8,S8)),Z8},W6=async(F,H8,o,G8)=>{let Z8=await $.createAsset(F,H8,o),{entity:f8,mutationApi:S8,pk:Q8}=Z8;return G8(()=>{W.set(f8.getObjectId(),o6.create(f8,S8,Q8))}),f8},N6=async(F,H8,{id:o})=>{let G8=W.get(o);if(G8)return G8.getEntity();let Z8=await $.readAsset(F,H8,{id:o});if(!Z8)return null;let{entity:f8,mutationApi:S8,pk:Q8}=Z8;return W.set(o,o6.create(f8,S8,Q8)),f8},g6=async(F,H8,o)=>{let G8=await $.listAssets(F,H8,o),Z8=[];for(let f8 of G8){let{entity:S8,mutationApi:Q8,pk:C6}=f8;W.set(S8.getObjectId(),o6.create(S8,Q8,C6)),Z8.push(S8)}return Z8},$1=async(F,H8,o,G8)=>{let{id:Z8}=o,f8=await $.deleteAsset(F,H8,o);return G8(()=>{W.remove(Z8)}),f8},r1=async(F,H8,o)=>{return $.findEntitiesByFieldValue(F,H8,o)},m8=(F)=>{K.remove(F)},i=(F)=>{q.remove(F)},l=(F)=>{J.remove(F)},c=(F)=>{z.remove(F)};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:R,deleteContent:C,saveDraft:E,readDraft:S,publishContent:h,discardDraft:g,readVersion:N,getVersions:L,findContentByName:u,listContent:p,setEditState:s,getEditState:A8,clearEditState:v8,createFieldDefinition:c8,readFieldDefinition:z6,findFieldDefinitionByName:u8,getFieldDefinitionsForOwner:I8,getFieldDefinitionsForEntityType:B8,resolveEntityTypePk:q6,resolveFieldDefinition:j6,deleteFieldDefinition:O6,createEntityType:$.createEntityType,setFieldValue:w6,getFieldValue:f6,deleteFieldValue:E6,createStory:P8,renameStory:g8,readStory:X8,listStories:N8,deleteStory:F8,readStoryRootFolder:l8,createJob:Y6,readJob:E8,listJobs:p8,deleteJob:n8,readJobRootFolder:e8,createAsset:W6,readAsset:N6,listAssets:g6,deleteAsset:$1,findEntitiesByFieldValue:r1,evictFolder:m8,evictContent:i,evictStory:l,evictJob:c})},EP8=Object.freeze({create:N_6});var R_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}})},_O=Object.freeze({create:R_6});var A6=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",FIELD_DEFINITION_CREATED:"fieldDefinitionCreated",FIELD_DEFINITION_DELETED:"fieldDefinitionDeleted",ASSET_CREATED:"assetCreated",ASSET_DELETED:"assetDeleted"});var C_6=({inner:$,storeCode:K})=>{let q=_O.create([A6.FOLDER_CREATED,A6.FOLDER_RENAMED,A6.FOLDER_MOVED,A6.FOLDER_DELETED,A6.DOCUMENT_CREATED,A6.DOCUMENT_RENAMED,A6.DOCUMENT_MOVED,A6.DOCUMENT_DELETED,A6.DOCUMENT_PUBLISHED,A6.DRAFT_SAVED,A6.DRAFT_DISCARDED,A6.TEMPLATE_CREATED,A6.TEMPLATE_RENAMED,A6.TEMPLATE_MOVED,A6.TEMPLATE_DELETED,A6.TEMPLATE_PUBLISHED,A6.TEMPLATE_DRAFT_SAVED,A6.TEMPLATE_DRAFT_DISCARDED,A6.EDIT_STATE_ACQUIRED,A6.EDIT_STATE_REFRESHED,A6.EDIT_STATE_CLEARED,A6.STORY_CREATED,A6.STORY_RENAMED,A6.STORY_DELETED,A6.JOB_CREATED,A6.JOB_DELETED,A6.FIELD_ADDED,A6.FIELD_VALUE_CHANGED,A6.FIELD_REMOVED,A6.FIELD_DEFINITION_CREATED,A6.FIELD_DEFINITION_DELETED,A6.ASSET_CREATED,A6.ASSET_DELETED]),Y=async(i,l,c)=>{let W8=await $.readFolder(i,l,{id:c});if(!W8)return null;let F=await i.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","=",c).executeTakeFirst();if(F?.entity_type_code==="f"&&F?.entity_type_subtype==="root_d")return"d";if(F?.entity_type_code==="f"&&F?.entity_type_subtype==="root_t")return"t";let H8=await $.readRootFolderForType(i,l,"d"),o=await $.readRootFolderForType(i,l,"t"),G8=W8;while(G8&&G8.getParentId()!==null){let Z8=await $.readFolder(i,l,{id:G8.getParentId()});if(!Z8)break;G8=Z8}if(G8&&G8.getObjectId()===H8?.getObjectId())return"d";else if(G8&&G8.getObjectId()===o?.getObjectId())return"t";return null},J=async(i,l,c,W8)=>{let{parentId:F,subtype:H8}=c,o=await $.createFolder(i,l,c,W8),G8=null;if(H8==="root_d")G8="d";else if(H8==="root_t")G8="t";else{let Z8=await $.readRootFolderForType(i,l,"d"),f8=await $.readRootFolderForType(i,l,"t");if(F===Z8?.getObjectId())G8="d";else if(F===f8?.getObjectId())G8="t";else if(F){let S8=await $.readFolder(i,l,{id:F});if(S8){let Q8=S8;while(Q8&&Q8.getParentId()!==null){let C6=await $.readFolder(i,l,{id:Q8.getParentId()});if(!C6)break;Q8=C6}if(Q8&&Q8.getObjectId()===Z8?.getObjectId())G8="d";else if(Q8&&Q8.getObjectId()===f8?.getObjectId())G8="t"}}}return W8(()=>{q.notify(A6.FOLDER_CREATED,{id:o.getObjectId(),storeCode:K,name:o.getName(),path:o.getPath(),parentFolderId:F,contentType:G8})}),o},z=async(i,l,c)=>{return $.readFolder(i,l,c)},W=async(i,l,c,W8)=>{let{id:F,name:H8,parentId:o}=c,G8=await $.updateFolder(i,l,c,W8),Z8=G8.entity,f8=G8.oldValues.name,S8=G8.oldValues.parentId,Q8=await Y(i,l,F);if(H8!==void 0&&H8!==f8)W8(()=>{q.notify(A6.FOLDER_RENAMED,{id:F,storeCode:K,parentFolderId:Z8.getParentId(),contentType:Q8,oldName:f8,newName:H8,path:Z8.getPath()})});if(o!==void 0&&o!==S8)W8(()=>{q.notify(A6.FOLDER_MOVED,{id:F,storeCode:K,contentType:Q8,oldParentFolderId:S8,parentFolderId:o,path:Z8.getPath()})});return Z8},Z=async(i,l,c,W8)=>{let{id:F}=c,o=(await $.readFolder(i,l,{id:F}))?.getParentId(),G8=await Y(i,l,F),Z8=await $.deleteFolder(i,l,c,W8);return W8(()=>{q.notify(A6.FOLDER_DELETED,{id:F,storeCode:K,parentFolderId:o,contentType:G8,path:Z8.path,descendantCount:Z8.descendantIds?.length||0})}),Z8},H=async(i,l,c)=>{return $.listFolderContents(i,l,c)},O=async(i,l,c)=>{return $.getFolderByPath(i,l,c)},X=async(i,l,c,W8)=>{return $.findFolderByName(i,l,c,W8)},P=async(i,l,c)=>{return $.readRootFolderForType(i,l,c)},w=async(i,l,c,W8,F)=>{return $.isDuplicateNameInParent(i,l,c,W8,F)},T=async(i,l,c,W8)=>{let{type:F,parentId:H8}=c,o=await $.createContent(i,l,c,W8),G8=F==="t"?A6.TEMPLATE_CREATED:A6.DOCUMENT_CREATED;return W8(()=>{q.notify(G8,{storeCode:K,id:o.getObjectId(),type:F,parentFolderId:H8,name:o.getName(),path:o.getPath()})}),o},G=async(i,l,c)=>{return $.readContent(i,l,c)},j=async(i,l,c,W8)=>{let{id:F,name:H8,parentId:o}=c,G8=e6.getTypeFromId(F),Z8=await $.readContent(i,l,{id:F}),f8=Z8?.getName(),S8=Z8?.getParentId(),Q8=await $.updateContent(i,l,c,W8),C6=G8==="t"?A6.TEMPLATE_RENAMED:A6.DOCUMENT_RENAMED,$$=G8==="t"?A6.TEMPLATE_MOVED:A6.DOCUMENT_MOVED;if(H8!==void 0&&H8!==f8)W8(()=>{q.notify(C6,{storeCode:K,id:F,type:G8,parentFolderId:Q8.getParentId(),oldName:f8,newName:H8,path:Q8.getPath()})});if(o!==void 0&&o!==S8)W8(()=>{q.notify($$,{storeCode:K,id:F,type:G8,oldParentFolderId:S8,parentFolderId:o,path:Q8.getPath()})});return Q8},v=async(i,l,c,W8)=>{return $.updateEntityType(i,l,c,W8)},M=async(i,l,c)=>{return $.deleteTypeScopedFieldValues(i,l,c)},f=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),G8=(await $.readContent(i,l,{id:F}))?.getParentId(),Z8=await $.deleteContent(i,l,c,W8),f8=H8==="t"?A6.TEMPLATE_DELETED:A6.DOCUMENT_DELETED;return W8(()=>{q.notify(f8,{storeCode:K,id:F,type:H8,parentFolderId:G8,path:Z8.path})}),Z8},k=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),G8=(await $.readContent(i,l,{id:F}))?.getParentId(),Z8=await $.saveDraft(i,l,c,W8),f8=H8==="t"?A6.TEMPLATE_DRAFT_SAVED:A6.DRAFT_SAVED;return W8(()=>{let S8=Z8.lockLost!==void 0?Z8.entity:Z8;q.notify(f8,{storeCode:K,id:F,type:H8,parentFolderId:G8,updatedAt:S8?S8.getUpdatedAt():null,lockLost:Z8.lockLost})}),Z8},R=async(i,l,c)=>{return $.readDraft(i,l,c)},C=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),o=await $.publishContent(i,l,c,W8),G8=H8==="t"?A6.TEMPLATE_PUBLISHED:A6.DOCUMENT_PUBLISHED;return W8(()=>{q.notify(G8,{storeCode:K,id:F,type:H8,parentFolderId:o.getParentId(),versionNumber:o.getPublishedVersionNumber()})}),{entityId:F,versionNumber:o.getPublishedVersionNumber(),content:o.getPublishedContent(),publishedAt:o.getUpdatedAt()}},E=async(i,l,c,W8)=>{let{id:F}=c,H8=e6.getTypeFromId(F),o=await $.discardDraft(i,l,c,W8),G8=H8==="t"?A6.TEMPLATE_DRAFT_DISCARDED:A6.DRAFT_DISCARDED;return W8(()=>{q.notify(G8,{storeCode:K,id:F})}),o},h=async(i,l,c)=>{return $.readVersion(i,l,c)},g=async(i,l,c)=>{return $.getVersions(i,l,c)},S=async(i,l,c,W8,F)=>{return $.findContentByName(i,l,c,W8,F)},N=async(i,l,c)=>{return $.listContent(i,l,c)},L=async(i,l,c,W8)=>{let F=await $.setEditState(i,l,c,W8);if(F.success){let H8=e6.getTypeFromId(c.id);W8(()=>{q.notify(A6.EDIT_STATE_ACQUIRED,{id:c.id,type:H8,storeCode:K,sessionId:c.sessionId})})}return F},u=async(i,l,c)=>{return $.getEditState(i,l,c)},p=async(i,l,c,W8)=>{await $.clearEditState(i,l,c,W8);let F=e6.getTypeFromId(c.id);W8(()=>{q.notify(A6.EDIT_STATE_CLEARED,{id:c.id,type:F,storeCode:K})})},s=async(i,l,c,W8)=>{let F=await $.createFieldDefinition(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_DEFINITION_CREATED,{id:F.getObjectId(),storeCode:K,name:F.getName(),ownerEntityId:F.getOwnerEntityId(),primitiveType:F.getPrimitiveType()})}),F},A8=async(i,l,c)=>{return $.readFieldDefinition(i,l,c)},v8=async(i,l,c,W8)=>{return $.findFieldDefinitionByName(i,l,c,W8)},c8=async(i,l,c)=>{return $.getFieldDefinitionsForOwner(i,l,c)},z6=async(i,l,c)=>{return $.getFieldDefinitionsForEntityType(i,l,c)},u8=async(i,l,c)=>{return $.resolveEntityTypePk(i,l,c)},I8=async(i,l,c)=>{return $.resolveFieldDefinition(i,l,c)},B8=async(i,l,c,W8)=>{let F=await $.deleteFieldDefinition(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_DEFINITION_DELETED,{id:F.getObjectId(),storeCode:K,name:F.getName()})}),F},q6=async(i,l,c,W8)=>{return $.setFieldValue(i,l,c,W8)},j6=async(i,l,c,W8)=>{let{entityId:F,fieldName:H8}=c,{typeCode:o}=e6.parseId(F),G8=await $.setFieldValue(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_ADDED,{entityType:o,entityId:F,fieldName:H8,value:c.value??c.values,storeCode:K})}),G8},O6=async(i,l,c,W8)=>{let{entityId:F,fieldName:H8,_oldValue:o}=c,{typeCode:G8}=e6.parseId(F),Z8=await $.setFieldValue(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_VALUE_CHANGED,{entityType:G8,entityId:F,fieldName:H8,oldValue:o,newValue:c.value??c.values,storeCode:K})}),Z8},w6=async(i,l,c)=>{return $.getFieldValue(i,l,c)},f6=async(i,l,c,W8)=>{return $.deleteFieldValue(i,l,c,W8)},E6=async(i,l,c,W8)=>{let{entityId:F,fieldName:H8}=c,{typeCode:o}=e6.parseId(F),G8=await $.deleteFieldValue(i,l,c,W8);return W8(()=>{q.notify(A6.FIELD_REMOVED,{entityType:o,entityId:F,fieldName:H8,storeCode:K})}),G8},P8=async(i,l,c,W8)=>{let{parentId:F,state:H8="prep"}=c,o=await $.createStory(i,l,c,W8);return W8(()=>{q.notify(A6.STORY_CREATED,{id:o.getObjectId(),storeCode:K,name:o.getName(),path:o.getPath(),parentFolderId:F,state:H8})}),o},X8=async(i,l,c)=>{return $.readStory(i,l,c)},N8=async(i,l,c)=>{return $.listStories(i,l,c)},g8=async(i,l,c,W8)=>{let{id:F}=c,H8=await $.renameStory(i,l,c,W8);return W8(()=>{q.notify(A6.STORY_RENAMED,{id:F,storeCode:K,name:H8.getName(),path:H8.getPath()})}),H8},F8=async(i,l,c,W8)=>{let{id:F}=c,o=(await $.readStory(i,l,{id:F}))?.getParentId()??null,G8=await $.deleteStory(i,l,c,W8);return W8(()=>{q.notify(A6.STORY_DELETED,{id:F,storeCode:K,path:G8.path,parentFolderId:o,descendantCount:G8.descendantCount})}),G8},l8=async(i,l,c)=>{return $.readStoryRootFolder(i,l,c)},Y6=async(i,l,c)=>{return $.findEntitiesByFieldValue(i,l,c)},E8=async(i,l,c,W8)=>{let{parentId:F,status:H8="pending"}=c,o=await $.createJob(i,l,c,W8);return W8(()=>{q.notify(A6.JOB_CREATED,{id:o.getObjectId(),storeCode:K,name:o.getName(),path:o.getPath(),parentFolderId:F,status:H8})}),o},p8=async(i,l,c)=>{return $.readJob(i,l,c)},n8=async(i,l,c)=>{return $.listJobs(i,l,c)},e8=async(i,l,c,W8)=>{let{id:F}=c,o=(await $.readJob(i,l,{id:F}))?.getParentId()??null,G8=await $.deleteJob(i,l,c,W8);return W8(()=>{q.notify(A6.JOB_DELETED,{id:F,storeCode:K,path:G8.path,parentFolderId:o,descendantCount:G8.descendantCount})}),G8},W6=async(i,l,c)=>{return $.readJobRootFolder(i,l,c)},N6=async(i,l,c,W8)=>{let F=await $.createAsset(i,l,c,W8);return W8(()=>{q.notify(A6.ASSET_CREATED,{id:F.getObjectId(),storeCode:K,hash:F.getHash(),mimeType:F.getMimeType(),originalFilename:F.getOriginalFilename()})}),F},g6=async(i,l,c)=>{return $.readAsset(i,l,c)},$1=async(i,l,c)=>{return $.listAssets(i,l,c)},r1=async(i,l,c,W8)=>{let{id:F}=c,H8=await $.deleteAsset(i,l,c,W8);return W8(()=>{q.notify(A6.ASSET_DELETED,{id:F,storeCode:K,hash:H8.hash})}),H8};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:R,publishContent:C,discardDraft:E,readVersion:h,getVersions:g,findContentByName:S,listContent:N,setEditState:L,getEditState:u,clearEditState:p,createFieldDefinition:s,readFieldDefinition:A8,findFieldDefinitionByName:v8,getFieldDefinitionsForOwner:c8,getFieldDefinitionsForEntityType:z6,resolveEntityTypePk:u8,resolveFieldDefinition:I8,deleteFieldDefinition:B8,createEntityType:$.createEntityType,setFieldValue:q6,addFieldToEntity:j6,updateFieldValue:O6,getFieldValue:w6,deleteFieldValue:f6,removeFieldFromEntity:E6,createStory:P8,renameStory:g8,readStory:X8,listStories:N8,deleteStory:F8,readStoryRootFolder:l8,createJob:E8,readJob:p8,listJobs:n8,deleteJob:e8,readJobRootFolder:W6,findEntitiesByFieldValue:Y6,createAsset:N6,readAsset:g6,listAssets:$1,deleteAsset:r1,evictFolder:$.evictFolder,evictContent:$.evictContent,evictStory:$.evictStory,evictJob:$.evictJob,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},SP8=Object.freeze({create:C_6});var D_6=($)=>{let{id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W}=$,Z=Fz.create(),H=Fz.create(),O=Fz.create(),X=Fz.create(),P=Fz.create(),w=Fz.create(),{store:T,mutationApi:G}=hP8.create({id:K,code:q,name:Y,pk:J,createdAt:z,updatedAt:W,folderCache:Z}),j=EP8.create({inner:T,folderCache:Z,contentCache:H,fieldDefinitionCache:O,storyCache:X,jobCache:P,assetCache:w});return{store:SP8.create({inner:j,storeCode:q}),mutationApi:G}},LP8=Object.freeze({create:D_6});z4();var h_6=({id:$,name:K,createdAt:q,updatedAt:Y,children:J=[]})=>{let z=[...J],W=new Map,{entityFns:Z,mutationFns:H}=Q3.create({id:$,name:K,createdAt:q,updatedAt:Y}),O=()=>{W.clear();for(let R8 of z){let C8=R8.getCodes();for(let z8 of C8)W.set(z8,R8)}};O();let X=()=>"demux",P=()=>z.map((R8)=>R8.getObjectId()),w=()=>[...z],T=()=>{return new Set(W.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:P()}),j=(R8)=>{z.push(R8),O()},v=(R8)=>{return W.get(R8)??null},M=async(R8,C8,{store:z8,storeCode:b8,parentId:L8,name:y8,subtype:G6},x)=>{let T8=z8??b8;y.factory(!T8,I.validation,"store parameter is required","MISSING_STORE_CODE");let m=v(T8);return y.factory(!m,I.notFound,`No child store with code: ${T8}`,"STORE_NOT_FOUND"),m.createFolder(R8,C8,{storeCode:T8,parentId:L8,name:y8,subtype:G6},x)},f=async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readFolder(R8,C8,{id:z8})},GK=Object.freeze({...Z,getType:X,getCodes:T,getChildIds:P,getChildren:w,toJSON:G,createFolder:M,readFolder:f,updateFolder:async(R8,C8,{id:z8,name:b8,parentId:L8},y8)=>{let G6=z8?.[0],x=v(G6);return y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND"),x.updateFolder(R8,C8,{id:z8,name:b8,parentId:L8},y8)},deleteFolder:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteFolder(R8,C8,{id:z8},b8)},evictFolder:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictFolder(R8)},evictContent:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictContent(R8)},evictStory:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictStory(R8)},evictJob:(R8)=>{let C8=R8?.[0],z8=v(C8);if(z8)z8.evictJob(R8)},getFolder:async(R8,C8,{id:z8})=>{return f(R8,C8,{id:z8})},listFolderContents:async(R8,C8,{folderId:z8,store:b8,storeCode:L8,type:y8})=>{let G6;if(z8!==null&&z8!==void 0)G6=z8[0];else{let m=b8??L8;y.factory(!m,I.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),G6=m}let x=v(G6);y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND");let T8={...C8,storeCode:G6};return x.listFolderContents(R8,T8,{folderId:z8,type:y8})},getFolderByPath:async(R8,C8,{path:z8,type:b8,store:L8,storeCode:y8})=>{let G6=L8??y8;y.factory(!G6,I.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let x=v(G6);if(!x)return null;let T8={...C8,storeCode:G6};return x.getFolderByPath(R8,T8,{path:z8,type:b8})},isDuplicateNameInParent:async(R8,C8,z8,b8,L8=null)=>{let y8;if(z8)y8=z8[0];else{let x=z[0];if(!x)y.factory(!0,I.notFound,"No child stores available","STORE_NOT_FOUND");y8=[...x.getCodes()][0]}let G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.isDuplicateNameInParent(R8,C8,z8,b8,L8)},findFolderByName:async(R8,C8,z8,b8)=>{let L8=z8[0],y8=v(L8);if(!y8)return null;return y8.findFolderByName(R8,C8,z8,b8)},readRootFolderForType:async(R8,C8,z8,b8)=>{let L8=v(b8);return y.factory(!L8,I.notFound,`No child store with code: ${b8}`,"STORE_NOT_FOUND"),L8.readRootFolderForType(R8,C8,z8,b8)},createFieldDefinition:async(R8,C8,{storeCode:z8,ownerEntityId:b8,ownerEntityTypePk:L8,name:y8,label:G6,description:x,primitiveType:T8,required:m,multiplicity:$8,isSystem:d,allowedValues:t},r)=>{let e=v(z8);return y.factory(!e,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),e.createFieldDefinition(R8,C8,{storeCode:z8,ownerEntityId:b8,ownerEntityTypePk:L8,name:y8,label:G6,description:x,primitiveType:T8,required:m,multiplicity:$8,isSystem:d,allowedValues:t},r)},readFieldDefinition:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readFieldDefinition(R8,C8,{id:z8})},getFieldDefinitionsForOwner:async(R8,C8,{storeCode:z8,ownerEntityPk:b8,includeSystem:L8})=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.getFieldDefinitionsForOwner(R8,C8,{ownerEntityPk:b8,includeSystem:L8})},getFieldDefinitionsForEntityType:async(R8,C8,{storeCode:z8,code:b8,subtype:L8})=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.getFieldDefinitionsForEntityType(R8,C8,{code:b8,subtype:L8})},resolveEntityTypePk:async(R8,C8,{storeCode:z8,code:b8,subtype:L8})=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.resolveEntityTypePk(R8,C8,{code:b8,subtype:L8})},resolveFieldDefinition:async(R8,C8,{storeCode:z8,fieldDefinitionId:b8,fieldName:L8,ownerEntityPk:y8,entityTypePk:G6})=>{let x=v(z8);return y.factory(!x,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),x.resolveFieldDefinition(R8,C8,{fieldDefinitionId:b8,fieldName:L8,ownerEntityPk:y8,entityTypePk:G6})},deleteFieldDefinition:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteFieldDefinition(R8,C8,{id:z8},b8)},createEntityType:async(R8,C8,{code:z8,subtype:b8,name:L8})=>{let y8=z[0];return y.factory(!y8,I.notFound,"No child stores available","NO_CHILD_STORES"),y8.createEntityType(R8,C8,{code:z8,subtype:b8,name:L8})},setFieldValue:async(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8,value:y8,values:G6},x)=>{let T8=z8?.[0],m=v(T8);return y.factory(!m,I.notFound,`No child store with code: ${T8}`,"STORE_NOT_FOUND"),m.setFieldValue(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8,value:y8,values:G6},x)},deleteFieldValue:async(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8},y8)=>{let G6=z8?.[0],x=v(G6);return y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND"),x.deleteFieldValue(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8},y8)},getFieldValue:async(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8})=>{let y8=z8?.[0],G6=v(y8);if(!G6)return null;return G6.getFieldValue(R8,C8,{entityId:z8,fieldDefinitionId:b8,fieldName:L8})},addFieldToEntity:async(R8,C8,z8,b8)=>{let L8=z8.entityId?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.addFieldToEntity(R8,C8,z8,b8)},updateFieldValue:async(R8,C8,z8,b8)=>{let L8=z8.entityId?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.updateFieldValue(R8,C8,z8,b8)},removeFieldFromEntity:async(R8,C8,z8,b8)=>{let L8=z8.entityId?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.removeFieldFromEntity(R8,C8,z8,b8)},createContent:async(R8,C8,{storeCode:z8,type:b8,...L8},y8)=>{let G6=v(z8);return y.factory(!G6,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),G6.createContent(R8,C8,{type:b8,storeCode:z8,...L8},y8)},readContent:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readContent(R8,C8,{id:z8})},updateContent:async(R8,C8,{id:z8,...b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.updateContent(R8,C8,{id:z8,...b8},L8)},updateEntityType:async(R8,C8,{id:z8,subtype:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.updateEntityType(R8,C8,{id:z8,subtype:b8},L8)},deleteTypeScopedFieldValues:async(R8,C8,{entityId:z8,entityTypePk:b8})=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteTypeScopedFieldValues(R8,C8,{entityId:z8,entityTypePk:b8})},deleteContent:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteContent(R8,C8,{id:z8},b8)},saveDraft:async(R8,C8,{id:z8,content:b8,sessionId:L8},y8)=>{let G6=z8?.[0],x=v(G6);return y.factory(!x,I.notFound,`No child store with code: ${G6}`,"STORE_NOT_FOUND"),x.saveDraft(R8,C8,{id:z8,content:b8,sessionId:L8},y8)},readDraft:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readDraft(R8,C8,{id:z8})},publishContent:async(R8,C8,{id:z8,sessionId:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.publishContent(R8,C8,{id:z8,sessionId:b8},L8)},discardDraft:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.discardDraft(R8,C8,{id:z8},b8)},findContentByName:async(R8,C8,z8,b8,L8)=>{let y8=z8?.[0],G6=v(y8);if(!G6)return null;return G6.findContentByName(R8,C8,z8,b8,L8)},listContent:async(R8,C8,{parentId:z8,storeCode:b8,type:L8})=>{let y8,G6;if(z8)y8=z8[0],G6=z8;else{y.factory(!b8,I.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),y8=b8;let T8=v(y8);y.factory(!T8,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND");try{G6=(await T8.readRootFolderForType(R8,C8,L8||"d",y8)).getObjectId()}catch(m){G6=null}}let x=v(y8);return y.factory(!x,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),x.listContent(R8,C8,{parentId:G6,type:L8})},setEditState:async(R8,C8,{id:z8,sessionId:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.setEditState(R8,C8,{id:z8,sessionId:b8},L8)},clearEditState:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.clearEditState(R8,C8,{id:z8},b8)},getEditState:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.getEditState(R8,C8,{id:z8})},readVersion:async(R8,C8,{id:z8,versionNumber:b8})=>{let L8=z8?.[0],y8=v(L8);if(!y8)return null;return y8.readVersion(R8,C8,{id:z8,versionNumber:b8})},getVersions:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return[];return L8.getVersions(R8,C8,{id:z8})},createStory:async(R8,C8,{storeCode:z8,...b8},L8)=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.createStory(R8,C8,{storeCode:z8,...b8},L8)},renameStory:async(R8,C8,{id:z8,name:b8},L8)=>{let y8=z8?.[0],G6=v(y8);return y.factory(!G6,I.notFound,`No child store with code: ${y8}`,"STORE_NOT_FOUND"),G6.renameStory(R8,C8,{id:z8,name:b8},L8)},readStory:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readStory(R8,C8,{id:z8})},listStories:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.listStories(R8,C8,{storeCode:z8})},deleteStory:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteStory(R8,C8,{id:z8},b8)},readStoryRootFolder:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.readStoryRootFolder(R8,C8,{storeCode:z8})},createJob:async(R8,C8,{storeCode:z8,...b8},L8)=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.createJob(R8,C8,{storeCode:z8,...b8},L8)},readJob:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readJob(R8,C8,{id:z8})},listJobs:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.listJobs(R8,C8,{storeCode:z8})},deleteJob:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteJob(R8,C8,{id:z8},b8)},readJobRootFolder:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.readJobRootFolder(R8,C8,{storeCode:z8})},findEntitiesByFieldValue:async(R8,C8,{storeCode:z8,typeCode:b8,subtype:L8,fieldName:y8,fieldValue:G6})=>{let x=v(z8);return y.factory(!x,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),x.findEntitiesByFieldValue(R8,C8,{typeCode:b8,subtype:L8,fieldName:y8,fieldValue:G6})},createAsset:async(R8,C8,{storeCode:z8,...b8},L8)=>{let y8=v(z8);return y.factory(!y8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),y8.createAsset(R8,C8,{storeCode:z8,...b8},L8)},readAsset:async(R8,C8,{id:z8})=>{let b8=z8?.[0],L8=v(b8);if(!L8)return null;return L8.readAsset(R8,C8,{id:z8})},listAssets:async(R8,C8,{storeCode:z8})=>{let b8=v(z8);return y.factory(!b8,I.notFound,`No child store with code: ${z8}`,"STORE_NOT_FOUND"),b8.listAssets(R8,C8,{storeCode:z8})},deleteAsset:async(R8,C8,{id:z8},b8)=>{let L8=z8?.[0],y8=v(L8);return y.factory(!y8,I.notFound,`No child store with code: ${L8}`,"STORE_NOT_FOUND"),y8.deleteAsset(R8,C8,{id:z8},b8)},subscribe:(R8,C8)=>{let z8=z.map((b8)=>b8.subscribe(R8,C8));return()=>z8.forEach((b8)=>b8())},subscribeAll:(R8)=>{let C8=z.map((z8)=>z8.subscribeAll(R8));return()=>C8.forEach((z8)=>z8())}}),Z4=Object.freeze({...H,addChild:j});return{store:GK,mutationApi:Z4}},IP8=Object.freeze({create:h_6});Wk();z4();var rG=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},Vu=($)=>$.object_id,vu=($)=>{let K=Vu($),q=$.id,{store:Y,mutationApi:J}=LP8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:J,id:K,pk:q}},xP8=($,K)=>{let q=Vu($),Y=$.id,{store:J,mutationApi:z}=IP8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:J,mutationApi:z,id:q,pk:Y}},E_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"j",null),W=Q6();for(let Z of lT){let H=await p1.nextSeq($,"store",q,"n"),O=`${Y}n${H}`,X=await $.insertInto("field_definitions").values({store_id:q,object_id:O,entity_type_id:J,type_code:"n",seq:H,owner_entity_id:null,name:Z.name,label:Z.label,description:Z.description,primitive_type:Z.primitiveType||"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:z,field_definition_id:X.id,required:0,sort_order:null}).execute()}},S_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"d",null),W=await d6.readEntityTypeId($,K,"t",null),Z=Q6(),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 p1.nextSeq($,"store",q,"n"),w=`${Y}n${P}`,T=await $.insertInto("field_definitions").values({store_id:q,object_id:w,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,name: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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:O,field_definition_id:T.id,required:0,sort_order:null}).execute()}},L_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"d",null),W=await d6.readEntityTypeId($,K,"t",null),Z=Q6(),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 p1.nextSeq($,"store",q,"n"),w=`${Y}n${P}`,T=await $.insertInto("field_definitions").values({store_id:q,object_id:w,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,name: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}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:O,field_definition_id:T.id,required:0,sort_order:null}).execute()}},I_6=async($,K,q,Y)=>{let J=await d6.readEntityTypeId($,K,"n",null),z=await d6.readEntityTypeId($,K,"v",null),W=Q6(),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 p1.nextSeq($,"store",q,"n"),X=`${Y}n${O}`,P=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:J,type_code:"n",seq:O,owner_entity_id:null,name:H.name,label:H.label,description:H.description,primitive_type:H.primitiveType,required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:z,field_definition_id:P.id,required:H.required,sort_order:null}).execute()}},x_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=lT.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=Q6(),f=await p1.nextSeq(w,"global",null,"s"),k=`S${f}`,R=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:C,mutationApi:E,id:h,pk:g}=vu(R);return await E_6(w,T,g,G),await S_6(w,T,g,G),await L_6(w,T,g,G),await I_6(w,T,g,G),v(()=>{$.set(h,o6.create(C,E,g)),K.set(g,h)}),C},z=async(w,T,{name:G},j)=>{let v=Q6(),M=await p1.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:R,mutationApi:C,id:E,pk:h}=xP8(k,[]);return j(()=>{$.set(E,o6.create(R,C,h)),K.set(h,E)}),R},W=async(w,T,G)=>{let j=$.get(G);if(j)return j.getEntity();let v=rG(G);if(v===null)return null;let M=await w.selectFrom("stores").selectAll().where("id","=",v).executeTakeFirst();if(!M)return null;let f,k,R,C;if(M.type==="local"){let E=vu(M);f=E.store,k=E.mutationApi,R=E.id,C=E.pk,await Y(w,C,M.code,R)}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(),h=[];for(let S of E){let N=await W(w,T,S.object_id);if(N)h.push(N)}let g=xP8(M,h);f=g.store,k=g.mutationApi,R=g.id,C=g.pk}return $.set(R,o6.create(f,k,C)),K.set(C,R),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=Vu(G),v=$.get(j);if(v)return v.getEntity();let{store:M,mutationApi:f,pk:k}=vu(G);return $.set(j,o6.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,R;if(M)k=M.getPk();else{let C=rG(G);y.factory(C===null,I.validation,`Invalid demux store ID: ${G}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",C).executeTakeFirst();y.factory(!E,I.notFound,`Demux store not found: ${G}`,"STORE_NOT_FOUND"),k=E.id}if(f)R=f.getPk();else{let C=rG(j);y.factory(C===null,I.validation,`Invalid child store ID: ${j}`,"INVALID_ID");let E=await w.selectFrom("stores").select("id").where("id","=",C).executeTakeFirst();y.factory(!E,I.notFound,`Child store not found: ${j}`,"STORE_NOT_FOUND"),R=E.id}await w.insertInto("store_children").values({parent_store_id:k,child_store_id:R}).execute(),v(()=>{let C=$.get(G),E=$.get(j);if(C&&E)C.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,R=$.get(j),C;if(R)C=R.getPk();else{let E=rG(j);y.factory(E===null,I.validation,`Invalid root store ID: ${j}`,"INVALID_ID");let h=await w.selectFrom("stores").select("id").where("id","=",E).executeTakeFirst();y.factory(!h,I.notFound,`Root store not found: ${j}`,"STORE_NOT_FOUND"),C=h.id}for(let E of v){let h=$.get(E),g;if(h)g=h.getPk();else{let S=rG(E);y.factory(S===null,I.validation,`Invalid store ID: ${E}`,"INVALID_ID");let N=await w.selectFrom("stores").select("id").where("id","=",S).executeTakeFirst();y.factory(!N,I.notFound,`Store not found: ${E}`,"STORE_NOT_FOUND"),g=N.id}await w.insertInto("project_stores").values({project_id:k,store_id:g,is_root:g===C?1:0}).execute()}},evictStore:(w)=>{let T=$.get(w);if(T)K.delete(T.getPk());$.delete(w)}})},gP8=Object.freeze({create:x_6});z4();z4();var g_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}},b_6=($)=>{return $[0]},j1=Object.freeze({parsePath:g_6,extractStoreCode:b_6});z4();var y_6=["Documents/",/^Stories\/[^/]+\//],u_6=["Templates/"],m_6=["Documents/","Templates/",/^Stories\/[^/]+\//],B_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")},U_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")},p_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")},F_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},c_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}},Q_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=e6.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")},v4=Object.freeze({DOCUMENT_PREFIXES:y_6,TEMPLATE_PREFIXES:u_6,FOLDER_PREFIXES:m_6,validatePathFormat:B_6,validateName:U_6,validateRootInAllowedTree:p_6,isInsideTasksFolder:F_6,detectFullPathPrefix:c_6,getRootForEntity:Q_6});var l_6=({store:$})=>{let K=async(w,T,G,j,v,M,f,k=!0,R=null)=>{let C=G.split("/").filter((N)=>N.trim());y.factory(C.length===0,I.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let E=C.slice(0,-1).join("/");if(E){let N=await $.getFolderByPath(w,T,{path:E,type:j,storeCode:v});if(N){let L=l3.validateFolderName(C[C.length-1]);return{parentObjectId:N.getObjectId(),name:L}}}let h=M??j,g;if(R)g=await $.readFolder(w,T,{id:R}),y.factory(!g,I.notFound,`Starting folder not found: ${R}`,"FOLDER_NOT_FOUND");else g=await $.readRootFolderForType(w,T,h,v);for(let N=0;N<C.length-1;N++){let L=l3.validateFolderName(C[N]),u=await $.findFolderByName(w,T,g.getObjectId(),L);if(u)g=u;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=l3.validateFolderName(C[C.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=v4.FOLDER_PREFIXES;v4.validatePathFormat(v);let R=v4.detectFullPathPrefix(v,k);y.factory(!R.valid,I.validation,`Path must start with one of: ${k.map((s)=>typeof s==="string"?s:s.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let C=v.slice(R.prefix.length);y.factory(!C||C.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let E,h,g=null;if(R.prefix==="Documents/")E="d",h="d";else if(R.prefix==="Templates/")E="t",h="t";else if(R.prefix.startsWith("Stories/")){E="s",h="d";let s=R.prefix.slice(8,-1),v8=(await $.listStories(w,T,{storeCode:M})).find((c8)=>c8.getName()===s);if(!v8)throw I.notFound(`Story not found: ${s}`,"STORY_NOT_FOUND");g=v8.getObjectId()}let{parentPath:S,name:N}=j1.parsePath(C),L;if(S){let s=await K(w,T,S,h,M,E,j,!0,g),A8=await $.findFolderByName(w,T,s.parentObjectId,s.name);if(A8)L=A8.getObjectId();else L=(await $.createFolder(w,T,{storeCode:M,parentId:s.parentObjectId,name:s.name},j)).getObjectId()}else if(g)L=g;else L=(await $.readRootFolderForType(w,T,E,M)).getObjectId();if(E==="s"){let s=await $.readFolder(w,T,{id:L});y.factory(!s,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(w,T,s,f,$)}let u=l3.validateFolderName(N),p=await $.isDuplicateNameInParent(w,T,L,u);return y.factory(p,I.conflict,`Folder "${u}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:M,parentId:L,name:u},j)},Y=async(w,T,G,j)=>{let{root:v,path:M}=G,f=["d","t","s"],k=j1.extractStoreCode(v);v4.validatePathFormat(M);let R=await $.readFolder(w,T,{id:v});y.factory(!R,I.notFound,`Root folder not found: ${v}`,"FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(w,T,R,f,$);let{parentPath:C,name:E}=j1.parsePath(M),h;if(C){let N=C.split("/").filter((u)=>u.trim()),L=R;for(let u of N){let p=l3.validateFolderName(u),s=await $.findFolderByName(w,T,L.getObjectId(),p);if(s)L=s;else L=await $.createFolder(w,T,{storeCode:k,parentId:L.getObjectId(),name:p},j)}h=L.getObjectId()}else h=v;let g=l3.validateFolderName(E),S=await $.isDuplicateNameInParent(w,T,h,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:h,name:g},j)},J=async(w,T,G,j)=>{let{parentId:v,name:M}=G,f=["d","t","s"],k=j1.extractStoreCode(v);v4.validateName(M);let R=await $.readFolder(w,T,{id:v});y.factory(!R,I.notFound,`Parent folder not found: ${v}`,"FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(w,T,R,f,$);let C=l3.validateFolderName(M),E=await $.isDuplicateNameInParent(w,T,v,C);return y.factory(E,I.conflict,`Folder "${C}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:k,parentId:v,name:C},j)},z=async(w,T,G,j)=>{let{mode:v,path:M,root:f,parentId:k,name:R,store:C,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(!C,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await q(w,T,{path:M,store:C},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(!R,I.validation,"name is required for parentName mode","MISSING_NAME"),await J(w,T,{parentId:k,name:R},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(!C,I.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:h,name:g}=await K(w,T,M,E,C,void 0,j),S=await $.isDuplicateNameInParent(w,T,h,g);return y.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(w,T,{storeCode:C,parentId:h,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(l3.isRootFolder(M),I.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let f=l3.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(l3.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],R=j[0];y.factory(k!==R,I.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),y.factory(G===j,I.validation,"Cannot move folder into itself","SELF_MOVE");let C=j;while(C!==null){y.factory(C===G,I.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let h=await $.readFolder(w,T,{id:C});if(!h)break;C=h.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(l3.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})}})},bP8=Object.freeze({create:l_6});z4();var yP8=Object.freeze(["string","object_ref","int","text","date","float"]),i_6=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?(Z|[+-]\d{2}:\d{2})?)?$/,d_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(!i_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: ${$}`}}},n_6=({store:$})=>{let K=async(T,G,{store:j,ownerEntityId:v,ownerEntityTypeCode:M,ownerEntityTypeSubtype:f,name:k,label:R,description:C,primitiveType:E,required:h,multiplicity:g,isSystem:S=!1,allowedValues:N},L)=>{y.factory(!j,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(v&&M,I.validation,"Cannot specify both ownerEntityId and ownerEntityTypeCode","INVALID_FIELD_DEFINITION_SCOPE"),y.factory(!yP8.includes(E),I.validation,`Invalid primitiveType: ${E}. Must be one of: ${yP8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),y.factory(g!=="single"&&g!=="multi",I.validation,`Invalid multiplicity: ${g}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let u=/^[a-zA-Z0-9_]+$/;y.factory(!k||!u.test(k),I.validation,`Invalid name: ${k}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME");let p=null;if(M)p=await $.resolveEntityTypePk(T,G,{storeCode:j,code:M,subtype:f});return await $.createFieldDefinition(T,G,{storeCode:j,ownerEntityId:v,ownerEntityTypePk:p,name:k,label:R,description:C,primitiveType:E,required:h,multiplicity:g,isSystem:S,allowedValues:N},L)},q=async(T,G,{id:j})=>{return y.factory(!j||j.length<3,I.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(T,G,{id:j})},Y=async(T,G,{store:j,ownerEntityId:v,includeSystem:M=!0})=>{y.factory(!j,I.validation,"store is required","MISSING_STORE_CODE");let f=null;if(v)f=null;return await $.getFieldDefinitionsForOwner(T,G,{storeCode:j,ownerEntityPk:f,includeSystem:M})},J=async(T,G,{store:j,code:v,subtype:M})=>{y.factory(!j,I.validation,"store is required","MISSING_STORE_CODE"),y.factory(!v,I.validation,"code is required","MISSING_CODE"),y.factory(M===void 0,I.validation,"subtype is required","MISSING_SUBTYPE");let f=await $.getFieldDefinitionsForEntityType(T,G,{storeCode:j,code:v,subtype:M}),k=await $.getFieldDefinitionsForOwner(T,G,{storeCode:j,ownerEntityPk:null,includeSystem:!0}),R=new Map;for(let C of f)R.set(C.getName(),C);for(let C of k)if(!R.has(C.getName()))R.set(C.getName(),C);return Array.from(R.values())},z=async(T,G,{id:j},v)=>{let M=await q(T,G,{id:j});return y.factory(!M,I.notFound,`Field definition not found: ${j}`,"DEFINITION_NOT_FOUND"),y.factory(M.getIsSystem(),I.validation,`Cannot delete system field definition: ${j}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(T,G,{id:j},v)},W=async(T,G,{entityId:j,parentId:v,values:M})=>{y.factory(M.includes(j),I.validation,`Self-reference not allowed: ${j} cannot depend on itself`,"SELF_REFERENCE");for(let f of M){let k=await $.readContent(T,G,{id:f});y.factory(!k,I.validation,`Referenced entity does not exist: ${f}`,"INVALID_REFERENCE");let{typeCode:R}=e6.parseId(f);y.factory(R!=="d",I.validation,`Referenced entity is not a document: ${f}`,"INVALID_REFERENCE_TYPE"),y.factory(k.getSubtype()!=="task",I.validation,`Referenced entity is not a task: ${f}`,"INVALID_REFERENCE_SUBTYPE"),y.factory(k.getParentId()!==v,I.validation,`Referenced task is in a different folder: ${f}`,"INVALID_REFERENCE_SCOPE")}for(let f of M){let k=new Set,R=async(E,h)=>{if(E===j)return h;if(k.has(E))return null;k.add(E);let g=await $.getFieldValue(T,G,{entityId:E,fieldName:"dependsOn"});if(!g)return null;let S=g.getValues();for(let N of S){let L=await R(N,[...h,N]);if(L)return L}return null},C=await R(f,[j,f]);if(C)throw I.validation(`Circular dependency detected: ${C.join(" -> ")}`,"CIRCULAR_DEPENDENCY")}},Z=async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)=>{y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),y.factory(f!==void 0&&k!==void 0,I.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),y.factory(f===void 0&&k===void 0,I.validation,"Either value or values must be provided","MISSING_VALUE");let{typeCode:C}=e6.parseId(j),E=j[0],h=null,g=await $.getFieldValue(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M});if(g)h=g.getDefinition();else if(v)h=await $.readFieldDefinition(T,G,{id:v});else if(M&&$.resolveFieldDefinition){let p=null;if($.resolveEntityTypePk)if(C==="d"||C==="t"){let A8=(await $.readContent(T,G,{id:j}))?.getSubtype?.()||null;p=await $.resolveEntityTypePk(T,G,{storeCode:E,code:C,subtype:A8})}else p=await $.resolveEntityTypePk(T,G,{storeCode:E,code:C,subtype:null});h=await $.resolveFieldDefinition(T,G,{storeCode:E,fieldName:M,ownerEntityPk:null,entityTypePk:p})}if(h){let p=h.getAllowedValues();if(p&&p.length>0){let A8=k?[...k]:f!==void 0?[f]:[];if(A8.length>0){let v8=A8.filter((c8)=>!p.includes(c8));if(v8.length>0)throw I.validation(`Invalid value(s): ${v8.join(", ")}. Allowed: ${p.join(", ")}`,"VALUE_NOT_ALLOWED")}}let s=h.getPrimitiveType();if(["int","float","date"].includes(s)){let A8=k?[...k]:f!==void 0?[f]:[];for(let v8 of A8){let c8=d_6(s,v8);if(!c8.valid)throw I.validation(c8.error,"INVALID_TYPED_VALUE")}}}let S=k;if(C==="d"){let p=await $.readContent(T,G,{id:j});if(p&&p.getSubtype()==="task"){let s=h;if(!s&&M)s=(await $.getFieldDefinitionsForEntityType(T,G,{storeCode:E,code:"d",subtype:"task"})).find((v8)=>v8.getName()===M)||null;if(s&&s.getPrimitiveType()==="object_ref"){let A8=k?[...k]:f!==void 0?[f]:[];if(A8.length>0){if(A8=[...new Set(A8)],await W(T,G,{entityId:j,parentId:p.getParentId(),values:A8}),k)S=A8}}}}let N={entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:S},L=!g,u=g?.getValue();if(L)return await $.addFieldToEntity(T,G,N,R);else return await $.updateFieldValue(T,G,{...N,_oldValue:u},R)},H=async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)=>{return y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.removeFieldFromEntity(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)};return Object.freeze({createFieldDefinition:K,readFieldDefinition:q,getFieldDefinitionsForOwner:Y,getFieldDefinitionsForType:J,deleteFieldDefinition:z,setFieldValue:Z,deleteFieldValue:H,addFieldToEntity:async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)=>{if(y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.getFieldValue(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M})){let E=M||v;throw I.validation(`Field '${E}' already exists on entity '${j}'`,"FIELD_ALREADY_EXISTS")}return await Z(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)},updateFieldValue:async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)=>{if(y.factory(!j,I.validation,"entityId is required","MISSING_ENTITY_ID"),y.factory(!v&&!M,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),!await $.getFieldValue(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M})){let E=M||v;throw I.validation(`Field '${E}' not found on entity '${j}'`,"FIELD_NOT_FOUND")}return await Z(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M,value:f,values:k},R)},removeFieldFromEntity:async(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)=>{return await H(T,G,{entityId:j,fieldDefinitionId:v,fieldName:M},f)},validateRequiredFields:async(T,G,{store:j,code:v,subtype:M,fields:f})=>{let R=(await J(T,G,{store:j,code:v,subtype:M})).filter((h)=>h.getRequired());if(R.length===0)return;let C=f&&typeof f==="object"?Object.keys(f):[],E=R.filter((h)=>!C.includes(h.getName())).map((h)=>h.getName());if(E.length>0)throw I.validation(`Missing required fields: ${E.join(", ")}`,"MISSING_REQUIRED_FIELDS")}})},uP8=Object.freeze({create:n_6});z4();function y5(){}y5.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(R){if(R=W.postProcess(R,J),z)return setTimeout(function(){z(R)},0),!0;else return R}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(mP8(W,G[0].lastComponent,q,K,W.useLongestToken));var v=-1/0,M=1/0;function f(){for(var R=Math.max(v,-X);R<=Math.min(M,X);R+=2){var C=void 0,E=G[R-1],h=G[R+1];if(E)G[R-1]=void 0;var g=!1;if(h){var S=h.oldPos-R;g=h&&0<=S&&S<H}var N=E&&E.oldPos+1<O;if(!g&&!N){G[R]=void 0;continue}if(!N||g&&E.oldPos<h.oldPos)C=W.addToPath(h,!0,!1,0,J);else C=W.addToPath(E,!1,!0,1,J);if(j=W.extractCommon(C,q,K,R,J),C.oldPos+1>=O&&j+1>=H)return Z(mP8(W,C.lastComponent,q,K,W.useLongestToken));else{if(G[R]=C,C.oldPos+1>=O)M=Math.min(M,R-1);if(j+1>=H)v=Math.max(v,R+1)}}X++}if(z)(function R(){setTimeout(function(){if(X>P||Date.now()>T)return z();if(!f())R()},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 mP8($,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 b$4=new y5;function BP8($,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 UP8($,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 Mu($,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 _u($,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 sG($,K){return Mu($,K,"")}function Xk($,K){return _u($,K,"")}function pP8($,K){return K.slice(0,o_6($,K))}function o_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 Pk="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}",a_6=new RegExp("[".concat(Pk,"]+|\\s+|[^").concat(Pk,"]"),"ug"),Tk=new y5;Tk.equals=function($,K,q){if(q.ignoreCase)$=$.toLowerCase(),K=K.toLowerCase();return $.trim()===K.trim()};Tk.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(a_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};Tk.join=function($){return $.map(function(K,q){if(q==0)return K;else return K.replace(/^\s+/,"")}).join("")};Tk.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)FP8(q,J,Y,z);q=z,Y=null,J=null}}),Y||J)FP8(q,J,Y,null);return $};function FP8($,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=BP8(J,W);$.value=_u($.value,W,H),K.value=sG(K.value,H),q.value=sG(q.value,H)}if(Y){var O=UP8(z,Z);Y.value=Mu(Y.value,Z,O),K.value=Xk(K.value,O),q.value=Xk(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=BP8(X,P);K.value=sG(K.value,T);var G=UP8(sG(X,T),w);K.value=Xk(K.value,G),Y.value=Mu(Y.value,X,G),$.value=_u($.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=pP8(v,j);K.value=Xk(K.value,M)}else if($){var f=$.value.match(/\s*$/)[0],k=K.value.match(/^\s*/)[0],R=pP8(f,k);K.value=sG(K.value,R)}}var r_6=new y5;r_6.tokenize=function($){var K=new RegExp("(\\r?\\n)|[".concat(Pk,"]+|[^\\S\\n\\r]+|[^").concat(Pk,"]"),"ug");return $.match(K)||[]};var Gk=new y5;Gk.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};Gk.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}}},lj8=($,{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]=_m(z,O),{newContent:q.join(`
533
533
  `),details:{lineNumber:K,previousStatus:H,newStatus:O}}},ij8=($,{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=km(q,z);q=W.newContent,Y.push(W.details)}return Y.reverse(),{newContent:q,details:{items:Y,count:Y.filter((z)=>z.changed).length}}},nk=($,K)=>{switch(K.type){case"replace_first":return ih6($,K);case"replace_all":return dh6($,K);case"replace_regex":return nh6($,K);case"replace_regex_all":return oh6($,K);case"replace_between_markers":return ah6($,K);case"replace_lines":return rh6($,K);case"insert_at":return sh6($,K);case"replace_all_content":return{newContent:K.content,details:{message:"Replaced all content"}};case"append":return th6($,K);default:throw Error(`Unknown operation type: ${K.type}`)}},dj8=($,K,q=!1)=>{let Y=nk($,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=mO($,Y.newContent);return z};var fm=($,K)=>{let q=v4.detectFullPathPrefix($,K);if(q.valid)return $.slice(q.prefix.length);return $},eh6=({store:$,folderService:K,documentHooks:q,includeResolver:Y,fieldService:J})=>{let z=Y,W=(P8)=>{return P8==="t"?"Template":"Document"},Z=(P8)=>{let X8=P8.getParentId();if(!X8)return!1;try{let{typeCode:N8}=e6.resolveEntityId(X8);return N8==="j"}catch{return!1}},H=async(P8,X8,N8,g8,F8,l8,Y6,E8={})=>{let{createMissing:p8=!0,startingFolderId:n8}=E8,e8=l8??g8;if(N8){let W6=await K.resolvePath(P8,X8,N8,g8,F8,e8,Y6,p8,n8),N6=await $.findFolderByName(P8,X8,W6.parentObjectId,W6.name);if(N6)return N6.getObjectId();else{if(!p8)throw I.notFound(`Folder not found: "${W6.name}"`,"FOLDER_NOT_FOUND");return(await $.createFolder(P8,X8,{storeCode:F8,parentId:W6.parentObjectId,name:W6.name},Y6)).getObjectId()}}else{if(n8)return n8;return(await $.readRootFolderForType(P8,X8,g8,F8)).getObjectId()}},O=async(P8,X8,N8,g8)=>{let{path:F8,store:l8,content:Y6,allowedRoots:E8,validPrefixes:p8,entityType:n8,subtype:e8}=N8;v4.validatePathFormat(F8);let W6=v4.detectFullPathPrefix(F8,p8);y.factory(!W6.valid,I.validation,`Path must start with one of: ${p8.map((W8)=>typeof W8==="string"?W8:W8.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let N6=fm(F8,p8);y.factory(!N6||N6.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let g6,$1=null;if(W6.prefix==="Documents/")g6="d";else if(W6.prefix==="Templates/")g6="t";else if(W6.prefix.startsWith("Stories/")){g6="s";let W8=W6.prefix.slice(8,-1),H8=(await $.listStories(P8,X8,{storeCode:l8})).find((o)=>o.getName()===W8);if(!H8)throw I.notFound(`Story not found: ${W8}`,"STORY_NOT_FOUND");$1=H8.getObjectId()}let{parentPath:r1,name:m8}=j1.parsePath(N6),i=await H(P8,X8,r1,n8,l8,g6,g8,{startingFolderId:$1});if(g6==="s"){let W8=await $.readFolder(P8,X8,{id:i});if(y.factory(!W8,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(P8,X8,W8,E8,$),await v4.isInsideTasksFolder(P8,X8,W8,$))y.factory(e8!=="task",I.validation,"Only task documents can be created inside a tasks folder","INVALID_DOCUMENT_TYPE")}let l=W(n8),c=await $.findContentByName(P8,X8,i,m8,n8);return y.factory(c,I.conflict,`${l} "${m8}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(P8,X8,{storeCode:l8,type:n8,parentId:i,name:m8,initialContent:Y6,subtype:e8},g8)},X=async(P8,X8,N8,g8)=>{let{root:F8,path:l8,content:Y6,allowedRoots:E8,entityType:p8,subtype:n8}=N8,e8=j1.extractStoreCode(F8);v4.validatePathFormat(l8);let W6=await $.readFolder(P8,X8,{id:F8});y.factory(!W6,I.notFound,`Root folder not found: ${F8}`,"FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(P8,X8,W6,E8,$);let{parentPath:N6,name:g6}=j1.parsePath(l8),$1;if(N6){let l=N6.split("/").filter((W8)=>W8.trim()),c=W6;for(let W8 of l){let F=await $.findFolderByName(P8,X8,c.getObjectId(),W8);if(F)c=F;else c=await $.createFolder(P8,X8,{storeCode:e8,parentId:c.getObjectId(),name:W8},g8)}$1=c.getObjectId()}else $1=F8;let r1=await $.readFolder(P8,X8,{id:$1});if(r1&&await v4.isInsideTasksFolder(P8,X8,r1,$))y.factory(n8!=="task",I.validation,"Only task documents can be created inside a tasks folder","INVALID_DOCUMENT_TYPE");let m8=W(p8),i=await $.findContentByName(P8,X8,$1,g6,p8);return y.factory(i,I.conflict,`${m8} "${g6}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(P8,X8,{storeCode:e8,type:p8,parentId:$1,name:g6,initialContent:Y6,subtype:n8},g8)},P=async(P8,X8,N8,g8)=>{let{parentId:F8,name:l8,content:Y6,allowedRoots:E8,entityType:p8,subtype:n8}=N8,e8=j1.extractStoreCode(F8);v4.validateName(l8);let W6=await $.readFolder(P8,X8,{id:F8});if(y.factory(!W6,I.notFound,`Parent folder not found: ${F8}`,"FOLDER_NOT_FOUND"),await v4.validateRootInAllowedTree(P8,X8,W6,E8,$),await v4.isInsideTasksFolder(P8,X8,W6,$))y.factory(n8!=="task",I.validation,"Only task documents can be created inside a tasks folder","INVALID_DOCUMENT_TYPE");let N6=W(p8),g6=await $.findContentByName(P8,X8,F8,l8,p8);return y.factory(g6,I.conflict,`${N6} "${l8}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(P8,X8,{storeCode:e8,type:p8,parentId:F8,name:l8,initialContent:Y6,subtype:n8},g8)},w=async(P8,X8,N8,g8)=>{let{mode:F8,path:l8,root:Y6,parentId:E8,name:p8,store:n8,content:e8,type:W6,tree:N6,subtype:g6,fields:$1}=N8,r1=["d","s","tasks"],m8=v4.DOCUMENT_PREFIXES;if(g6&&J){let l=n8??(Y6?j1.extractStoreCode(Y6):null)??(E8?j1.extractStoreCode(E8):null);if(!l)throw I.validation("Cannot validate required fields: unable to determine store code from creation parameters","MISSING_STORE_CODE");let c=W6??"d";await J.validateRequiredFields(P8,X8,{store:l,code:c,subtype:g6,fields:$1})}let i;if(F8==="fullPath")y.factory(!n8,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),i=await O(P8,X8,{path:l8,store:n8,content:e8,allowedRoots:r1,validPrefixes:m8,entityType:"d",subtype:g6},g8);else if(F8==="rootRelative")y.factory(!Y6,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),i=await X(P8,X8,{root:Y6,path:l8,content:e8,allowedRoots:r1,entityType:"d",subtype:g6},g8);else if(F8==="parentName")y.factory(!E8,I.validation,"parentId is required for parentName mode","MISSING_PARENT_ID"),y.factory(!p8,I.validation,"name is required for parentName mode","MISSING_NAME"),i=await P(P8,X8,{parentId:E8,name:p8,content:e8,allowedRoots:r1,entityType:"d",subtype:g6},g8);else if(W6!==void 0){y.factory(W6!=="d"&&W6!=="t",I.validation,'type must be "d" or "t"',"INVALID_TYPE"),y.factory(!l8||l8==="/",I.validation,"Path cannot be empty","EMPTY_PATH"),y.factory(!n8,I.validation,"store is required","MISSING_STORE_CODE");let{parentPath:l,name:c}=j1.parsePath(l8),W8=E8??await H(P8,X8,l,W6,n8,N6,g8),F=W(W6),H8=await $.findContentByName(P8,X8,W8,c,W6);y.factory(H8,I.conflict,`${F} "${c}" already exists in folder`,"DUPLICATE_NAME"),i=await $.createContent(P8,X8,{storeCode:n8,type:W6,parentId:W8,name:c,initialContent:e8,subtype:g6},g8)}else throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS");if($1&&J&&Object.keys($1).length>0)for(let[l,c]of Object.entries($1))await J.setFieldValue(P8,X8,{entityId:i.getObjectId(),fieldName:l,...Array.isArray(c)?{values:c}:{value:c}},g8);return i},T=async(P8,X8,N8,g8)=>{let{mode:F8,path:l8,root:Y6,parentId:E8,name:p8,store:n8,content:e8,subtype:W6}=N8,N6=["t"],g6=v4.TEMPLATE_PREFIXES;if(F8==="fullPath")return y.factory(!n8,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await O(P8,X8,{path:l8,store:n8,content:e8,allowedRoots:N6,validPrefixes:g6,entityType:"t",subtype:W6},g8);if(F8==="rootRelative")return y.factory(!Y6,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),await X(P8,X8,{root:Y6,path:l8,content:e8,allowedRoots:N6,entityType:"t",subtype:W6},g8);if(F8==="parentName")return y.factory(!E8,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,X8,{parentId:E8,name:p8,content:e8,allowedRoots:N6,entityType:"t",subtype:W6},g8);throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS")},G=async(P8,X8,{id:N8,resolveIncludes:g8=!0})=>{let{typeCode:F8}=e6.resolveEntityId(N8),l8=W(F8),Y6=await $.readContent(P8,X8,{id:N8});y.factory(!Y6,I.notFound,`${l8} not found: ${N8}`,"NOT_FOUND");let E8=[],p8=Y6.getParentId();while(p8){E8.unshift(p8);let e8=await $.readFolder(P8,X8,{id:p8});if(!e8)break;p8=e8.getParentId()}let n8=null;if(g8&&z&&Y6.getPublishedContent())n8=await z.resolve(P8,X8,Y6.getPublishedContent(),Y6.getObjectId());return{entity:Y6,ancestorFolderIds:E8,resolvedContent:n8}},j=async(P8,X8,{path:N8,type:g8,storeCode:F8})=>{y.factory(g8!=="d"&&g8!=="t",I.validation,'type must be "d" or "t"',"INVALID_TYPE");let{parentPath:l8,name:Y6}=j1.parsePath(N8),E8=[],p8;if(l8){let e8=l8.split("/").filter((N6)=>N6),W6="";for(let N6 of e8){W6=W6?`${W6}/${N6}`:N6;let g6=await $.getFolderByPath(P8,X8,{path:W6,type:g8,storeCode:F8});if(!g6)return null;E8.push(g6.getObjectId())}p8=E8[E8.length-1]}else p8=(await $.readRootFolderForType(P8,X8,g8,F8)).getObjectId();let n8=await $.findContentByName(P8,X8,p8,Y6,g8);if(!n8)return null;return{entity:n8,ancestorFolderIds:E8}},v=async(P8,X8,{id:N8,path:g8,parentId:F8,type:l8},Y6)=>{y.factory(l8!=="d"&&l8!=="t",I.validation,'type must be "d" or "t"',"INVALID_TYPE");let E8=g8!==void 0&&g8!==null,p8=F8!==void 0&&F8!==null;if(y.factory(E8===p8,I.validation,"Either path OR parentId must be provided, not both or neither","INVALID_PARAMS"),E8)y.factory(g8==="/",I.validation,"Path cannot be empty","EMPTY_PATH");let{entity:n8}=await G(P8,X8,{id:N8}),e8=j1.extractStoreCode(N8),W6=W(l8),N6,g6;if(p8){let m8=await $.readFolder(P8,X8,{id:F8});y.factory(!m8,I.notFound,`Parent folder not found: ${F8}`,"PARENT_NOT_FOUND"),N6=n8.getName(),g6=F8}else{let m8=l8==="t"?v4.TEMPLATE_PREFIXES:v4.DOCUMENT_PREFIXES,i=fm(g8,m8),{parentPath:l,name:c}=j1.parsePath(i);N6=c;let W8=j1.parsePath(fm(n8.getPath(),m8));if(l===W8.parentPath)g6=n8.getParentId();else g6=await H(P8,X8,l,l8,e8,void 0,Y6,{createMissing:!1})}let $1=N6!==n8.getName(),r1=g6!==n8.getParentId();if(!$1&&!r1)return n8;if($1||r1){let m8=await $.findContentByName(P8,X8,g6,N6,l8);y.factory(m8&&m8.getObjectId()!==N8,I.conflict,`${W6} "${N6}" already exists in target folder`,"DUPLICATE_NAME")}return await $.updateContent(P8,X8,{id:N8,name:$1?N6:void 0,parentId:r1?g6:void 0},Y6)},M=async(P8,X8,{id:N8},g8)=>{let{entity:F8}=await G(P8,X8,{id:N8}),l8=await $.deleteContent(P8,X8,{id:N8},g8),{typeCode:Y6}=e6.resolveEntityId(N8);if(Y6==="d"&&F8.getSubtype()==="task"&&J){let E8=F8.getParentId(),p8=await $.listContent(P8,X8,{parentId:E8,type:"d"});for(let n8 of p8){if(n8.getObjectId()===N8)continue;if(n8.getSubtype()!=="task")continue;let e8=await $.getFieldValue(P8,X8,{entityId:n8.getObjectId(),fieldName:"dependsOn"});if(!e8)continue;let W6=e8.getValues();if(!W6.includes(N8))continue;let N6=W6.filter((g6)=>g6!==N8);if(N6.length>0)await J.setFieldValue(P8,X8,{entityId:n8.getObjectId(),fieldName:"dependsOn",values:N6},g8,!0);else await J.deleteFieldValue(P8,X8,{entityId:n8.getObjectId(),fieldName:"dependsOn"},g8,!0)}}return l8},f=async(P8,X8,{id:N8,content:g8,sessionId:F8},l8)=>{let{entity:Y6}=await G(P8,X8,{id:N8});return y.factory(Z(Y6),I.validation,"Documents inside jobs are read-only","JOB_DOCUMENT_READ_ONLY"),await $.saveDraft(P8,X8,{id:N8,content:g8,sessionId:F8},l8)},k=async(P8,X8,{id:N8})=>{let{typeCode:g8}=e6.resolveEntityId(N8),{entity:F8}=await G(P8,X8,{id:N8}),l8=W(g8),Y6=await $.readDraft(P8,X8,{id:N8});return y.factory(!Y6,I.notFound,`No draft found for ${l8}: ${N8}`,"DRAFT_NOT_FOUND"),Y6},R=async(P8,X8,{id:N8,sessionId:g8},F8)=>{let{entity:l8}=await G(P8,X8,{id:N8,resolveIncludes:!1}),{typeCode:Y6}=e6.resolveEntityId(N8),E8=q.getHook("prePublish",Y6);if(E8)await E8(P8,X8,l8,g8,F8);return await $.publishContent(P8,X8,{id:N8,sessionId:g8},F8)},C=async(P8,X8,{id:N8},g8)=>{let{entity:F8}=await G(P8,X8,{id:N8});return await $.discardDraft(P8,X8,{id:N8},g8)},E=async(P8,X8,{id:N8,versionNumber:g8})=>{let{typeCode:F8}=e6.resolveEntityId(N8),{entity:l8}=await G(P8,X8,{id:N8}),Y6=W(F8),E8=await $.readVersion(P8,X8,{id:N8,versionNumber:g8});return y.factory(!E8,I.notFound,`Version ${g8} not found for ${Y6}: ${N8}`,"VERSION_NOT_FOUND"),E8},h=async(P8,X8,{id:N8})=>{let{entity:g8}=await G(P8,X8,{id:N8});return await $.getVersions(P8,X8,{id:N8})},g=async(P8,X8,{id:N8,sessionId:g8},F8)=>{let{entity:l8}=await G(P8,X8,{id:N8});return await $.setEditState(P8,X8,{id:N8,sessionId:g8},F8)},S=async(P8,X8,{id:N8},g8)=>{let{entity:F8}=await G(P8,X8,{id:N8});return await $.clearEditState(P8,X8,{id:N8},g8)},N=async(P8,X8,{id:N8})=>{let{entity:g8}=await G(P8,X8,{id:N8});return await $.getEditState(P8,X8,{id:N8})},L=async(P8,X8,{parentId:N8,storeCode:g8,type:F8="d"})=>{return await $.listContent(P8,X8,{parentId:N8,storeCode:g8,type:F8})},u=async(P8,X8,{id:N8,operation:g8,preview:F8=!1,ignoreContent:l8=!1,sessionId:Y6},E8)=>{let{entity:p8}=await G(P8,X8,{id:N8}),n8=p8.getDraftContent()??p8.getPublishedContent()??"";if(F8)return{preview:!0,...dj8(n8,g8,l8)};let e8=nk(n8,g8);return await f(P8,X8,{id:N8,content:e8.newContent,sessionId:Y6},E8),{applied:!0,details:e8.details}},p=async(P8,X8,{id:N8,operations:g8,preview:F8=!1,ignoreContent:l8=!1,sessionId:Y6},E8)=>{let p8=["replace_first","replace_all","replace_regex","replace_regex_all","replace_between_markers","replace_all_content","append"];for(let $1 of g8)if(!p8.includes($1.type))throw I.validation(`Operation type "${$1.type}" is not batchable. Only line-agnostic operations are allowed in batch mode.`,"NON_BATCHABLE_OPERATION");let{entity:n8}=await G(P8,X8,{id:N8}),e8=n8.getDraftContent()??n8.getPublishedContent()??"",W6=e8,N6=[];for(let $1 of g8){let r1=nk(W6,$1);W6=r1.newContent,N6.push(r1.details)}let g6={originalLength:e8.length,newLength:W6.length,operationsApplied:g8.length};if(F8){let $1={preview:!0,stats:g6,operationResults:N6};if(!l8)$1.diff=mO(e8,W6);return $1}return await f(P8,X8,{id:N8,content:W6,sessionId:Y6},E8),{applied:g8.length,results:N6}},s=async(P8,X8,{id:N8,startLine:g8,endLine:F8,includeDraft:l8=!1})=>{let{entity:Y6}=await G(P8,X8,{id:N8}),E8=l8?Y6.getDraftContent()??Y6.getPublishedContent()??"":Y6.getPublishedContent()??"";return yO(E8,g8,F8)},A8=async(P8,X8,{id:N8,startMarker:g8,endMarker:F8,inclusive:l8=!1,includeDraft:Y6=!1})=>{let{entity:E8}=await G(P8,X8,{id:N8}),p8=Y6?E8.getDraftContent()??E8.getPublishedContent()??"":E8.getPublishedContent()??"";return gj8(p8,g8,F8,l8)},v8=async(P8,X8,{id:N8,includeDraft:g8=!1})=>{let{entity:F8}=await G(P8,X8,{id:N8}),l8=g8?F8.getDraftContent()??F8.getPublishedContent()??"":F8.getPublishedContent()??"";return bj8(l8)},c8=async(P8,X8,{id:N8,maxDepth:g8,includeDraft:F8=!1})=>{let{entity:l8}=await G(P8,X8,{id:N8}),Y6=F8?l8.getDraftContent()??l8.getPublishedContent()??"":l8.getPublishedContent()??"";return Am(Y6,g8)},z6=async(P8,X8,{id:N8,heading:g8,includeHeading:F8=!0,includeDraft:l8=!1})=>{let{entity:Y6}=await G(P8,X8,{id:N8}),E8=l8?Y6.getDraftContent()??Y6.getPublishedContent()??"":Y6.getPublishedContent()??"";return Mm(E8,g8,F8)},u8=async(P8,X8,{id:N8,includeDraft:g8=!1})=>{let{entity:F8}=await G(P8,X8,{id:N8}),l8=g8?F8.getDraftContent()??F8.getPublishedContent()??"":F8.getPublishedContent()??"";return yj8(l8)},I8=async(P8,X8,{id:N8,section:g8,includeDraft:F8=!1})=>{let{entity:l8}=await G(P8,X8,{id:N8}),Y6=F8?l8.getDraftContent()??l8.getPublishedContent()??"":l8.getPublishedContent()??"";return uj8(Y6,g8)},B8=(P8,X8)=>{let N8=P8.split(`
534
- `),F8=N8[X8-1].match(/^(?:[-*+] |\d+\. )\[([ xX])\] (.+)$/),l8=0,Y6=/^(?:[-*+] |\d+\. )\[([ xX])\] .+$/;for(let E8=0;E8<X8;E8++)if(Y6.test(N8[E8]))l8++;return{text:F8[2],checked:F8[1]!==" ",lineNumber:X8,itemNumber:l8}};return Object.freeze({createDocument:w,createTemplate:T,readDocument:G,readDocumentByPath:j,updateDocumentPath:v,deleteDocument:M,saveDraft:f,readDraft:k,publishDocument:R,discardDraft:C,readVersion:E,getVersions:h,setEditState:g,clearEditState:S,getEditState:N,listDocuments:L,editDocument:u,batchEditDocument:p,readLines:s,readBetweenMarkers:A8,getDocumentStats:v8,readHeadings:c8,readSection:z6,readFrontmatter:u8,readChecklist:I8,checkChecklistItem:async(P8,X8,{id:N8,lineNumber:g8,checked:F8,includeDraft:l8=!1,preview:Y6=!1,sessionId:E8},p8)=>{let{entity:n8}=await G(P8,X8,{id:N8}),e8=l8?n8.getDraftContent()??n8.getPublishedContent()??"":n8.getPublishedContent()??"",W6=km(e8,{lineNumber:g8,checked:F8});if(Y6)return{preview:!0,diff:mO(e8,W6.newContent),item:B8(W6.newContent,g8)};return await f(P8,X8,{id:N8,content:W6.newContent,sessionId:E8},p8),{applied:!0,item:B8(W6.newContent,g8)}},toggleChecklistItem:async(P8,X8,{id:N8,lineNumber:g8,includeDraft:F8=!1,preview:l8=!1,sessionId:Y6},E8)=>{let{entity:p8}=await G(P8,X8,{id:N8}),n8=F8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",e8=lj8(n8,{lineNumber:g8});if(l8)return{preview:!0,diff:mO(n8,e8.newContent),item:B8(e8.newContent,g8)};return await f(P8,X8,{id:N8,content:e8.newContent,sessionId:Y6},E8),{applied:!0,item:B8(e8.newContent,g8)}},batchCheckChecklistItems:async(P8,X8,{id:N8,items:g8,includeDraft:F8=!1,preview:l8=!1,sessionId:Y6},E8)=>{let{entity:p8}=await G(P8,X8,{id:N8}),n8=F8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",e8=ij8(n8,{items:g8}),W6=g8.map((N6)=>B8(e8.newContent,N6.lineNumber));if(l8)return{preview:!0,diff:mO(n8,e8.newContent),items:W6,count:e8.details.count};return await f(P8,X8,{id:N8,content:e8.newContent,sessionId:Y6},E8),{applied:!0,items:W6,count:e8.details.count}},specialiseDocument:async(P8,X8,{id:N8,subtype:g8,fields:F8},l8)=>{let{entity:Y6}=await G(P8,X8,{id:N8});y.factory(Y6.getSubtype()!==null,I.validation,`Entity is already specialised to subtype: ${Y6.getSubtype()}`,"ALREADY_SPECIALISED");let{storeCode:E8,typeCode:p8}=e6.resolveEntityId(N8),n8=(await Promise.resolve().then(() => (Wk(),wP8))).default;try{await n8.readEntityTypeId(P8,X8,p8,g8)}catch(N6){throw I.validation(`Invalid subtype: ${g8}`,"INVALID_SUBTYPE")}await J.validateRequiredFields(P8,X8,{store:E8,code:p8,subtype:g8,fields:F8});let e8=await $.updateEntityType(P8,X8,{id:N8,subtype:g8},l8);if(F8&&Object.keys(F8).length>0)for(let[N6,g6]of Object.entries(F8))await J.setFieldValue(P8,X8,{entityId:N8,fieldName:N6,...Array.isArray(g6)?{values:g6}:{value:g6}},l8);let{entity:W6}=await G(P8,X8,{id:N8});return{entity:W6}},generaliseDocument:async(P8,X8,{id:N8},g8)=>{let{entity:F8}=await G(P8,X8,{id:N8}),l8=F8.getSubtype();y.factory(l8===null,I.validation,"Entity is already generic (has no subtype)","ALREADY_GENERIC");let Y6=await $.readFolder(P8,X8,{id:F8.getParentId()});if(Y6&&await v4.isInsideTasksFolder(P8,X8,Y6,$))throw I.validation("Cannot generalise entity inside a tasks folder","INVALID_LOCATION");let{typeCode:E8}=e6.resolveEntityId(N8),p8=await $.getFieldDefinitionsForEntityType(P8,X8,{storeCode:"B",code:E8,subtype:l8}),n8=F8.getFields();for(let W6 of p8){let N6=W6.getName();if(n8&&n8[N6])await J.deleteFieldValue(P8,X8,{entityId:N8,fieldName:N6},g8)}await $.updateEntityType(P8,X8,{id:N8,subtype:null},g8);let{entity:e8}=await G(P8,X8,{id:N8});return{entity:e8}},setIncludeResolver:(P8)=>{z=P8}})},nj8=Object.freeze({create:eh6});var $E6=()=>{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}})},oj8=Object.freeze({create:$E6});z4();var aj8=i6(S4(),1),pJ=aj8.default("caw:includes"),KE6=({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(pJ("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(pJ("Found %d include directives",v.length),v.length===0)return w;let M=w;for(let f of v){let{fullMatch:k,id:R,path:C,versionStr:E}=f,h=E?parseInt(E,10):null;pJ("Resolving include: id=%s, path=%s, version=%s",R,C,E);try{let g;if(R)g=R;else{let L=T?T.charAt(0):"A",u=await K.readDocumentByPath(X,P,{path:C,type:"d",storeCode:L});if(!u)throw I.notFound(`Included document not found: ${C}`,"INCLUDE_NOT_FOUND");g=u.entity.getObjectId()}if(G.has(g)){let L=[...G,g].join(" -> ");throw I.validation(`Circular include detected: ${L}`,"INCLUDE_CYCLE")}if(h===null)throw I.validation(`Unpinned include found: ${k}. Includes must specify a version.`,"INCLUDE_UNPINNED");let S=await $.readVersion(X,P,{id:g,versionNumber:h});if(!S)throw I.notFound(`Version ${h} not found for included document: ${g}`,"INCLUDE_VERSION_NOT_FOUND");let N=await W(X,P,S.content,g,G,j+1);M=M.replace(k,N)}catch(g){let S=R||C,N=`> **Include Error** - couldn't include ${S}${h?` version ${h}`:""}: ${g.message}`;pJ("Include resolution failed for %s: %s",S,g.message),M=M.replace(k,N)}}return M};return Object.freeze({resolve:W,pinIncludes:async(X,P,w,T)=>{pJ("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:R,versionStr:C}=M;if(C)continue;pJ("Pinning unpinned include: id=%s, path=%s",k,R);let E,h;if(k){E=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});h=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",N=await K.readDocumentByPath(X,P,{path:R,type:"d",storeCode:S});if(!N)throw I.notFound(`Included document not found: ${R}`,"INCLUDE_NOT_FOUND");E=N.entity.getObjectId(),h=N.entity.getPublishedVersionNumber()}if(!h)throw I.validation(`Cannot pin include - document has no published version: ${E}`,"INCLUDE_NO_VERSION");let g=k?`<include id="${k}" version="${h}" />`:`<include path="${R}" version="${h}" />`;pJ("Pinned include %s to version %d",E,h),v=v.replace(f,g),j.push({id:E,path:R,version:h})}return pJ("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,R=k?parseInt(k,10):null,C,E;if(M){C=M;let{entity:h}=await K.readDocument(X,P,{id:M,resolveIncludes:!1});E=h.getPublishedVersionNumber()}else{let h=T?T.charAt(0):"A",g=await K.readDocumentByPath(X,P,{path:f,type:"d",storeCode:h});C=g?.entity?.getObjectId(),E=g?.entity?.getPublishedVersionNumber()}j.push({id:C,path:f||null,pinnedVersion:R,latestVersion:E,outdated:R!==null&&E!==null&&R<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:R,versionStr:C}=M,E=C?parseInt(C,10):null,h,g;if(k){h=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});g=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",N=await K.readDocumentByPath(X,P,{path:R,type:"d",storeCode:S});h=N?.entity?.getObjectId(),g=N?.entity?.getPublishedVersionNumber()}if(g&&E!==g){let S=k?`<include id="${k}" version="${g}" />`:`<include path="${R}" version="${g}" />`;v=v.replace(f,S),j.push({id:h,path:R||null,fromVersion:E,toVersion:g})}}return{content:v,updated:j}}})},rj8=Object.freeze({create:KE6});z4();var qA8=i6(vm(),1),YA8=i6(PB(),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}},pg6=($)=>{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},Fg6=($)=>{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:pg6,getParameters:Fg6});var wB=i6(PB(),1),cg6=($={})=>{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=wB.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:cg6});import N0 from"node:fs";import WA8 from"node:os";import Wf from"node:path";var Qg6=({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:[...MM]},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 R=await w.resolveEntityTypePk(z,W,{code:"t",subtype:"prompt"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"associatedType",label:"Associated Type",description:"Entity types this template is associated with",primitiveType:"string",required:!1,multiplicity:"multi",isSystem:!0},O);let C=await w.resolveEntityTypePk(z,W,{code:"s",subtype:null});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:C,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:C,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:C,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),h=await K.createDemuxStore(z,W,{name:Z},O);return await K.addChildToDemux(z,W,{demuxId:h.getObjectId(),childId:w.getObjectId()},O),await K.addChildToDemux(z,W,{demuxId:h.getObjectId(),childId:E.getObjectId()},O),await K.addStoresToProject(z,W,{projectId:P.getObjectId(),rootStoreId:h.getObjectId(),storeIds:[h.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=Wf.join(WA8.homedir(),z.slice(2));else W=z;let Z=N0.existsSync(W),H=!1,O=!1,X=!1;if(Z)try{if(H=N0.statSync(W).isDirectory(),H){let T=Wf.join(W,".git");try{O=N0.statSync(T).isDirectory()}catch{O=!1}let G=Wf.join(W,".claude");try{X=N0.statSync(G).isDirectory()}catch{X=!1}}}catch(w){H=!1}let P=Wf.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}}))}})},Zf=Object.freeze({create:Qg6});var lg6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},ig6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:J,projectService:z,clipboardService:W,storyService:Z,assetService:H,jobService:O,includeResolver:X,worktreeService:P,entityTypeService:w})=>{let T=async(m8)=>{let i=lg6(),l;return await $.transaction().execute(async(c)=>{l=await m8(c,i.enqueuePostCommitHook)}),i.flush(),l};return Object.freeze({createFolder:async(m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o})=>{return T(async(G8,Z8)=>{return await K.createFolder(G8,m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o},Z8)})},renameFolder:async(m8,{id:i,name:l})=>{return T(async(c,W8)=>{return await K.renameFolder(c,m8,{id:i,name:l},W8)})},moveFolder:async(m8,{id:i,parentId:l})=>{return T(async(c,W8)=>{return await K.moveFolder(c,m8,{id:i,parentId:l},W8)})},deleteFolder:async(m8,{id:i})=>{return T(async(l,c)=>{return await K.deleteFolder(l,m8,{id:i},c)})},createProject:async(m8,{name:i,path:l})=>{return T(async(c,W8)=>{return await z.createProject(c,m8,{name:i,path:l},W8)})},createFieldDefinition:async(m8,{store:i,ownerEntityId:l,ownerEntityTypeCode:c,ownerEntityTypeSubtype:W8,name:F,label:H8,description:o,primitiveType:G8,required:Z8,multiplicity:f8,isSystem:S8})=>{return T(async(Q8,C6)=>{return await q.createFieldDefinition(Q8,m8,{store:i,ownerEntityId:l,ownerEntityTypeCode:c,ownerEntityTypeSubtype:W8,name:F,label:H8,description:o,primitiveType:G8,required:Z8,multiplicity:f8,isSystem:S8},C6)})},addFieldToEntity:async(m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F})=>{return T(async(H8,o)=>{return await q.addFieldToEntity(H8,m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F},o)})},updateFieldValue:async(m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F})=>{return T(async(H8,o)=>{return await q.updateFieldValue(H8,m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F},o)})},removeFieldFromEntity:async(m8,{entityId:i,fieldDefinitionId:l,fieldName:c})=>{return T(async(W8,F)=>{return await q.removeFieldFromEntity(W8,m8,{entityId:i,fieldDefinitionId:l,fieldName:c},F)})},deleteFieldDefinition:async(m8,{id:i})=>{return T(async(l,c)=>{return await q.deleteFieldDefinition(l,m8,{id:i},c)})},createSubtype:async(m8,{code:i,subtype:l,name:c})=>{return T(async(W8,F)=>{return await w.createSubtype(W8,m8,{code:i,subtype:l,name:c},F)})},createDocument:async(m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o,content:G8,tree:Z8,subtype:f8,fields:S8})=>{return T(async(Q8,C6)=>{return await Y.createDocument(Q8,m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o,content:G8,tree:Z8,subtype:f8,fields:S8},C6)})},createTemplate:async(m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,content:o,subtype:G8})=>{return T(async(Z8,f8)=>{return await Y.createTemplate(Z8,m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,content:o,subtype:G8},f8)})},updateDocumentPath:async(m8,{id:i,path:l,parentId:c,type:W8})=>{return T(async(F,H8)=>{return await Y.updateDocumentPath(F,m8,{id:i,path:l,parentId:c,type:W8},H8)})},deleteDocument:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.deleteDocument(l,m8,{id:i},c)})},saveDraft:async(m8,{id:i,content:l,sessionId:c})=>{return T(async(W8,F)=>{return await Y.saveDraft(W8,m8,{id:i,content:l,sessionId:c},F)})},publishDocument:async(m8,{id:i,sessionId:l})=>{return T(async(c,W8)=>{return await Y.publishDocument(c,m8,{id:i,sessionId:l},W8)})},discardDraft:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.discardDraft(l,m8,{id:i},c)})},setEditState:async(m8,{id:i,sessionId:l})=>{return T(async(c,W8)=>{return await Y.setEditState(c,m8,{id:i,sessionId:l},W8)})},clearEditState:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.clearEditState(l,m8,{id:i},c)})},editDocument:async(m8,{id:i,operation:l,preview:c,ignoreContent:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.editDocument(H8,m8,{id:i,operation:l,preview:c,ignoreContent:W8,sessionId:F},o)})},batchEditDocument:async(m8,{id:i,operations:l,preview:c,ignoreContent:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.batchEditDocument(H8,m8,{id:i,operations:l,preview:c,ignoreContent:W8,sessionId:F},o)})},checkChecklistItem:async(m8,{id:i,lineNumber:l,checked:c,includeDraft:W8,preview:F,sessionId:H8})=>{return T(async(o,G8)=>{return await Y.checkChecklistItem(o,m8,{id:i,lineNumber:l,checked:c,includeDraft:W8,preview:F,sessionId:H8},G8)})},toggleChecklistItem:async(m8,{id:i,lineNumber:l,includeDraft:c,preview:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.toggleChecklistItem(H8,m8,{id:i,lineNumber:l,includeDraft:c,preview:W8,sessionId:F},o)})},batchCheckChecklistItems:async(m8,{id:i,items:l,includeDraft:c,preview:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.batchCheckChecklistItems(H8,m8,{id:i,items:l,includeDraft:c,preview:W8,sessionId:F},o)})},specialiseDocument:async(m8,{id:i,subtype:l,fields:c})=>{return T(async(W8,F)=>{return await Y.specialiseDocument(W8,m8,{id:i,subtype:l,fields:c},F)})},generaliseDocument:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.generaliseDocument(l,m8,{id:i},c)})},renderTemplate:async(m8,{id:i,params:l,target:c,targetOptions:W8,sessionId:F})=>{let{entity:H8}=await Y.readDocument($,m8,{id:i,resolveIncludes:!1});if(!H8.getPublishedContent())throw(await Promise.resolve().then(() => (z4(),AO))).default.validation("Template has no published content","NO_PUBLISHED_CONTENT");let o=H8.getPublishedContent(),{target:G8,targetPath:Z8,targetParentId:f8,targetName:S8,targetRoot:Q8,targetStore:C6,targetJobName:$$,targetJobAgent:T7,targetJobModel:g7,targetJobWorktree:b7,targetJobStreaming:L3}=J.extractTemplateParameters(o),e$=c||G8||"stdout",Z4=W8?.parentId||W8?.root||W8?.path?{path:W8?.path,parentId:W8?.parentId,name:W8?.name,root:W8?.root,store:W8?.store,publish:W8?.publish}:{path:W8?.path||Z8,parentId:W8?.parentId||f8,name:W8?.name||S8,root:W8?.root||Q8,store:W8?.store||C6,publish:W8?.publish},R8=o;if(X)R8=await X.resolve($,m8,o,i);let C8=J.renderTemplate(R8,l||{});if(Z4.path)Z4.path=J.renderTemplate(Z4.path,l||{});if(Z4.name)Z4.name=J.renderTemplate(Z4.name,l||{});switch(e$){case"stdout":return{content:C8,target:"stdout"};case"clipboard":return await W.copyToClipboard(C8),{target:"clipboard",message:"Copied to clipboard"};case"document":return T(async(L8,y8)=>{let G6=(await Promise.resolve().then(() => (z4(),AO))).default,x;if(Z4.parentId){if(!Z4.name)throw G6.validation("targetOptions.name is required when parentId is provided","MISSING_TARGET_NAME");x={mode:"parentName",parentId:Z4.parentId,name:Z4.name,content:C8}}else if(Z4.root){if(!Z4.path)throw G6.validation("targetOptions.path is required when root is provided","MISSING_TARGET_PATH");x={mode:"rootRelative",root:Z4.root,path:Z4.path,content:C8}}else{if(!Z4.path)throw G6.validation("targetOptions.path is required for document target","MISSING_TARGET_PATH");x={mode:"fullPath",store:Z4.store||"A",path:Z4.path,content:C8}}let T8=await Y.createDocument(L8,m8,x,y8);if(Z4.publish)await Y.publishDocument(L8,m8,{id:T8.getObjectId(),sessionId:F},y8);return{content:C8,target:"document",documentId:T8.getObjectId(),documentPath:Z4.path||Z4.name,published:!!Z4.publish}});case"job":return T(async(L8,y8)=>{let G6=(await Promise.resolve().then(() => (z4(),AO))).default;if(!C8||!C8.trim())throw G6.validation("Template rendered to empty prompt","MISSING_PROMPT");let x=W8?.jobName||$$,T8=W8?.jobAgent||T7||"claude",m=W8?.jobModel||g7,$8=W8?.jobWorktree||b7,d=W8?.jobStreaming??L3,r=W8?.objectId||l?.["object-id"],t=null;if(x)t=J.renderTemplate(x,l||{});let e=null;if($8&&P){let{worktrees:M8}=await P.listWorktrees({projectPath:m8.projectPath}),h8=M8.find((t8)=>t8.branch===$8);if(!h8)throw G6.validation(`Worktree with branch '${$8}' not found`,"WORKTREE_NOT_FOUND");e=h8.path}let w8=j1.extractStoreCode(i),j8=await O.createJob(L8,m8,{store:w8,name:t,agent:T8,model:m,prompt:C8,workingDirectory:e,objectId:r,streaming:d},y8);return{target:"job",jobId:j8.id,jobName:j8.name}});case"file":throw(await Promise.resolve().then(() => (z4(),AO))).default.validation("file target not yet implemented","NOT_IMPLEMENTED");default:throw(await Promise.resolve().then(() => (z4(),AO))).default.validation(`Unknown target: ${e$}`,"INVALID_TARGET")}},createStory:async(m8,{name:i,storeCode:l,state:c})=>{return T(async(W8,F)=>{return await Z.createStory(W8,m8,{store:l,name:i,state:c},F)})},renameStory:async(m8,{id:i,name:l})=>{return T(async(c,W8)=>{return await Z.renameStory(c,m8,{id:i,name:l},W8)})},updateStoryState:async(m8,{id:i,state:l})=>{return T(async(c,W8)=>{return await Z.updateStoryState(c,m8,{id:i,state:l},W8)})},deleteStory:async(m8,{id:i})=>{return T(async(l,c)=>{return await Z.deleteStory(l,m8,{id:i},c)})},incrementStoryJobCount:async(m8,{id:i})=>{return T(async(l,c)=>{return await Z.incrementActiveJobCount(l,m8,{id:i},c)})},decrementStoryJobCount:async(m8,{id:i})=>{return T(async(l,c)=>{return await Z.decrementActiveJobCount(l,m8,{id:i},c)})},createAsset:async(m8,{store:i,buffer:l,mimeType:c,originalFilename:W8,widthPx:F,heightPx:H8,displayWidth:o,displayHeight:G8})=>{return T(async(Z8,f8)=>{return await H.createAsset(Z8,m8,{store:i,buffer:l,mimeType:c,originalFilename:W8,widthPx:F,heightPx:H8,displayWidth:o,displayHeight:G8},f8)})},deleteAsset:async(m8,{id:i})=>{return T(async(l,c)=>{return await H.deleteAsset(l,m8,{id:i},c)})},createJob:async(m8,{store:i,name:l,agent:c,model:W8,prompt:F,workingDirectory:H8,objectId:o,streaming:G8})=>{return T(async(Z8,f8)=>{return await O.createJob(Z8,m8,{store:i,name:l,agent:c,model:W8,prompt:F,workingDirectory:H8,objectId:o,streaming:G8},f8)})},deleteJob:async(m8,{id:i})=>{return T(async(l,c)=>{return await O.deleteJob(l,m8,{id:i},c)})},updateJobStatus:async(m8,{id:i,status:l,exitCode:c,errorMessage:W8})=>{return T(async(F,H8)=>{return await O.updateJobStatus(F,m8,{id:i,status:l,exitCode:c,errorMessage:W8},H8)})},updateJobOutput:async(m8,{id:i,output:l})=>{return T(async(c,W8)=>{return await O.updateJobOutput(c,m8,{id:i,output:l},W8)})},updateJobTokens:async(m8,{id:i,tokensUsed:l})=>{return T(async(c,W8)=>{return await O.updateJobTokens(c,m8,{id:i,tokensUsed:l},W8)})},updateJobMetadata:async(m8,{id:i,durationMs:l,totalCostUsd:c,numTurns:W8,sessionId:F})=>{return T(async(H8,o)=>{return await O.updateJobMetadata(H8,m8,{id:i,durationMs:l,totalCostUsd:c,numTurns:W8,sessionId:F},o)})},continueJob:async(m8,{id:i,prompt:l,model:c})=>{return T(async(W8,F)=>{return await O.continueJob(W8,m8,{id:i,prompt:l,model:c},F)})},setJobPid:async(m8,{id:i,pid:l})=>{return T(async(c,W8)=>{return await O.setJobPid(c,m8,{id:i,pid:l},W8)})},clearJobPid:async(m8,{id:i})=>{return T(async(l,c)=>{return await O.clearJobPid(l,m8,{id:i},c)})},renameJob:async(m8,{id:i,name:l})=>{return T(async(c,W8)=>{return await O.renameJob(c,m8,{id:i,name:l},W8)})}})},TB=Object.freeze({create:ig6});z4();var jB8=i6(wB8(),1),vB8=i6(S4(),1);import y$ from"fs/promises";import D$ from"path";import{createWriteStream as O21}from"fs";import X21 from"crypto";var R3=vB8.default("caw:export"),TB8=".caw-exports",GB8=".tmp",P21=2,w21=({store:$,folderService:K,documentService:q,templateService:Y,storyService:J,assetService:z,assetsDir:W})=>{let Z=()=>{let C=new Date,E=C.getFullYear(),h=String(C.getMonth()+1).padStart(2,"0"),g=String(C.getDate()).padStart(2,"0"),S=String(C.getHours()).padStart(2,"0"),N=String(C.getMinutes()).padStart(2,"0"),L=String(C.getSeconds()).padStart(2,"0");return`${E}-${h}-${g}-${S}${N}${L}`},H=async(C)=>{let E=D$.join(C,TB8),h=D$.join(E,GB8);try{return await y$.mkdir(E,{recursive:!0}),await y$.mkdir(h,{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(C,E,h,g)=>{let S=[],N=async(L,u)=>{let p=await K.listFolderContents(C,E,{folderId:L,type:h,storeCode:g});for(let s of p)if(s.getParentId()!==null)S.push({entity:s,depth:u,contentType:h}),await N(s.getObjectId(),u+1)};return await N(null,0),S},X=async(C,E,h)=>{let g=[],S=[],N=async(L)=>{let u=await q.listDocuments(C,E,{parentId:L,storeCode:h});for(let s of u){let A8=s.getPublishedVersionNumber();if(A8!==null){let v8=await q.readVersion(C,E,{id:s.getObjectId(),versionNumber:A8});g.push({entity:s,version:v8})}else S.push(s)}let p=await K.listFolderContents(C,E,{folderId:L,type:"d",storeCode:h});for(let s of p)await N(s.getObjectId())};return await N(null),{published:g,draftOnly:S}},P=async(C,E,h)=>{let g=[],S=[],N=async(L)=>{let u=await q.listDocuments(C,E,{parentId:L,storeCode:h,type:"t"});for(let s of u){let A8=s.getPublishedVersionNumber();if(A8!==null){let v8=await q.readVersion(C,E,{id:s.getObjectId(),versionNumber:A8});g.push({entity:s,version:v8})}else S.push(s)}let p=await K.listFolderContents(C,E,{folderId:L,type:"t",storeCode:h});for(let s of p)await N(s.getObjectId())};return await N(null),{published:g,draftOnly:S}},w=async(C,E,h)=>{let g=await z.listAssets(C,E,{store:h}),S=[];for(let N of g){let L=N.hash,u=L.substring(0,2),p=D$.join(W,u,L);try{let s=await y$.readFile(p);S.push({entity:N,buffer:s})}catch(s){if(s.code==="ENOENT"){R3("Warning: Skipping asset %s - blob file missing",N.id);continue}throw s}}return R3("Collected %d assets for export",S.length),S},T=new Set(["draft_version","latest_published_version"]),G=(C)=>{let E=typeof C.getFields==="function"?C.getFields():C.fields;if(!E||typeof E!=="object"||Object.keys(E).length===0)return;let h={};for(let[g,S]of Object.entries(E)){if(T.has(g))continue;let N;if(typeof S?.getValues==="function")N=S.getValues();else if(Array.isArray(S))N=S;else N=[S];h[g]=N.length===1?N[0]:N}return Object.keys(h).length>0?h:void 0},j=async(C,E,h)=>{let g=[],S=[],N={published:[],draftOnly:[]};if(!J)return R3("StoryService not available, skipping story export"),{stories:g,folders:S,documents:N};let L=await J.listStories(C,E,{store:h});R3("Found %d stories for export",L.length);for(let u of L)g.push(u),await v(C,E,u,h,S,N);return{stories:g,folders:S,documents:N}},v=async(C,E,h,g,S,N)=>{let L=h.id||h.getObjectId?.()||h,u=await $.listFolderContents(C,E,{folderId:L,type:"s",storeCode:g});for(let s of u){if(s.getParentId()!==null)S.push({entity:s,contentType:"s"});await v(C,E,s.getObjectId(),g,S,N)}let p=await q.listDocuments(C,E,{parentId:L,storeCode:g});for(let s of p){let A8=s.getPublishedVersionNumber();if(A8!==null){let v8=await q.readVersion(C,E,{id:s.getObjectId(),versionNumber:A8});N.published.push({entity:s,version:v8})}else N.draftOnly.push(s)}},M=async(C)=>{try{await y$.rm(C,{recursive:!0,force:!0})}catch(E){R3("Warning: Failed to cleanup temp directory: %s",E.message)}};return Object.freeze({listExports:async(C,E,{projectPath:h})=>{let g=D$.join(h,TB8);try{let S=await y$.readdir(g),N=[];for(let L of S)if(L.endsWith(".zip")){let u=D$.join(g,L),p=await y$.stat(u);N.push({filename:L,timestamp:p.mtime.toISOString(),size:p.size})}return R3("Found %d export files",N.length),N}catch(S){if(S.code==="ENOENT")return[];throw S}},exportPreview:async(C,E,{storeCode:h})=>{let g=await O(C,E,"d",h),S=await O(C,E,"t",h),{published:N,draftOnly:L}=await X(C,E,h),{published:u,draftOnly:p}=await P(C,E,h),A8={assets:(z?await z.listAssets(C,E,{store:h}):[]).map((u8)=>({id:u8.id,originalFilename:u8.originalFilename,mimeType:u8.mimeType,sizeBytes:u8.sizeBytes})),folders:[...g,...S].map((u8)=>({id:u8.entity.getObjectId(),path:u8.entity.getPath(),name:u8.entity.getName()})),documents:N.map((u8)=>({id:u8.entity.getObjectId(),path:u8.entity.getPath(),name:u8.entity.getName()})),templates:u.map((u8)=>({id:u8.entity.getObjectId(),path:u8.entity.getPath(),name:u8.entity.getName()}))},v8={documents:L.map((u8)=>({id:u8.getObjectId(),path:u8.getPath(),name:u8.getName()})),templates:p.map((u8)=>({id:u8.getObjectId(),path:u8.getPath(),name:u8.getName()}))},c8=A8.assets.length+A8.folders.length+A8.documents.length+A8.templates.length,z6=v8.documents.length+v8.templates.length;return R3("Preview: %d published (%d assets), %d draft-only",c8,A8.assets.length,z6),{toExport:A8,draftOnly:v8}},exportDocuments:async(C,E,{storeCode:h,projectPath:g})=>{R3("Starting export for store %s",h);let S=await H(g),N=X21.randomUUID(),L=D$.join(S,GB8,N);await y$.mkdir(L,{recursive:!0});try{let u=await O(C,E,"d",h),p=await O(C,E,"t",h),s=[...u,...p],{published:A8,draftOnly:v8}=await X(C,E,h),{published:c8,draftOnly:z6}=await P(C,E,h),u8=z?await w(C,E,h):[],{stories:I8,folders:B8,documents:q6}=await j(C,E,h),j6=[...s,...B8],O6=[...A8,...q6.published],w6=[...v8,...q6.draftOnly];R3("Found %d folders, %d documents, %d templates, %d assets, %d stories",j6.length,O6.length,c8.length,u8.length,I8.length);let f6={},E6=await $.readStoryRootFolder(C,E,{storeCode:h});if(E6){let E8=E6.toJSON(),p8=G(E8);if(p8&&Object.keys(p8).length>0)f6[E6.getObjectId()]={subtype:"root_s",fields:p8}}let P8=[...u8.map((E8)=>({id:E8.entity.id,type:"asset",hash:E8.entity.hash,mimeType:E8.entity.mimeType,sizeBytes:E8.entity.sizeBytes,originalFilename:E8.entity.originalFilename,widthPx:E8.entity.widthPx,heightPx:E8.entity.heightPx,displayWidth:E8.entity.displayWidth,displayHeight:E8.entity.displayHeight})),...I8.map((E8)=>{let p8={id:E8.id,type:"story",name:E8.name},n8=G(E8);if(n8)p8.fields=n8;return p8}),...j6.map((E8)=>{let p8={id:E8.entity.getObjectId(),type:"folder",path:E8.entity.getPath(),contentType:E8.contentType},n8=E8.entity.getSubtype?.();if(n8)p8.subtype=n8;let e8=G(E8.entity);if(e8)p8.fields=e8;return p8}),...O6.map((E8)=>{let p8={id:E8.entity.getObjectId(),type:"document",path:E8.entity.getPath()},n8=E8.entity.getSubtype?.();if(n8)p8.subtype=n8;else{let W6=E8.entity.getPath(),N6=W6.split("/");if(N6.length>=4&&N6[2]==="tasks")R3('WARN: Document %s in tasks folder missing subtype, inferring "task"',W6),p8.subtype="task"}let e8=G(E8.entity);if(e8)p8.fields=e8;return p8}),...c8.map((E8)=>{let p8={id:E8.entity.getObjectId(),type:"template",path:E8.entity.getPath()},n8=E8.entity.getSubtype?.();if(n8)p8.subtype=n8;let e8=G(E8.entity);if(e8)p8.fields=e8;return p8})],X8={version:P21,exportedAt:new Date().toISOString(),entities:P8};if(Object.keys(f6).length>0)X8.rootFolderFields=f6;await y$.writeFile(D$.join(L,"manifest.json"),JSON.stringify(X8,null,2),"utf-8");for(let E8 of j6){if(E8.entity.getParentId()===null)continue;let p8=D$.join(L,E8.entity.getPath());await y$.mkdir(p8,{recursive:!0})}await y$.mkdir(D$.join(L,"Documents"),{recursive:!0}),await y$.mkdir(D$.join(L,"Templates"),{recursive:!0}),await y$.mkdir(D$.join(L,"Stories"),{recursive:!0});for(let E8 of O6){let p8=D$.join(L,E8.entity.getPath()),n8=E8.version.content;await y$.mkdir(D$.dirname(p8),{recursive:!0}),await y$.writeFile(p8,n8,"utf-8")}for(let E8 of c8){let p8=D$.join(L,E8.entity.getPath()),n8=E8.version.content;await y$.mkdir(D$.dirname(p8),{recursive:!0}),await y$.writeFile(p8,n8,"utf-8")}if(u8.length>0){let E8=D$.join(L,"assets");await y$.mkdir(E8,{recursive:!0});for(let p8 of u8){let n8=p8.entity.id,e8=D$.join(E8,`${n8}.bin`);await y$.writeFile(e8,p8.buffer);let W6=D$.join(E8,`${n8}.json`);await y$.writeFile(W6,JSON.stringify({id:n8,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 E8 of P8){if(E8.type==="folder"||E8.type==="story")continue;let p8;if(E8.type==="asset")p8=D$.join(L,"assets",`${E8.id}.bin`);else if(E8.type==="document"||E8.type==="template")p8=D$.join(L,E8.path);else{R3("Unknown entity type in validation: %s",E8.type);continue}try{await y$.access(p8)}catch(n8){throw I.validation(`Manifest entry missing file: ${E8.id||E8.path}`,"EXPORT_VALIDATION_FAILED")}}let N8=`caw-export-${Z()}.zip`,g8=D$.join(S,N8),F8=O21(g8),l8=jB8.default("zip",{zlib:{level:9}});l8.on("error",async(E8)=>{throw await M(L),R3("Zip creation error: %s",E8.message),I.validation(`Export failed: ${E8.message}`,"EXPORT_ERROR")}),l8.pipe(F8),l8.directory(L,!1),await l8.finalize(),await new Promise((E8,p8)=>{F8.on("close",E8),F8.on("error",p8),setTimeout(()=>{p8(Error("Zip creation timeout"))},60000)}),R3("Created zip: %s (%d bytes)",N8,l8.pointer()),await M(L);let Y6=P8.length;return R3("Export complete: %s (%d entities)",N8,Y6),{success:!0,filename:N8,path:g8,counts:{assets:u8.length,stories:I8.length,folders:j6.length,documents:O6.length,templates:c8.length},draftOnlySkipped:{documents:w6.length,templates:z6.length}}}catch(u){throw await M(L),u}}})},VB8=Object.freeze({create:w21});z4();var tB8=i6(rB8(),1),eB8=i6(S4(),1);import Tq from"fs/promises";import a5 from"path";import U21 from"crypto";var G1=eB8.default("caw:import"),el=($)=>{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}},$i=".caw-exports",sB8=".tmp",p21=[1,2],F21=/\b([A-Z][adtfns]\d+)\b/g,c21=({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(F21,(f,k)=>{return M[k]??f})},O=(v)=>{if(!Array.isArray(v))return!1;if(v.length!==Xz.length)return!0;return!v.every((M,f)=>M===Xz[f])},X=async(v,M,f,k,R,C)=>{if(!k||typeof k!=="object"||!z)return;for(let[E,h]of Object.entries(k)){if(E==="activeJobCount")continue;let g=E==="dependsOn",S=h;if(g)if(Array.isArray(h))S=h.map((N)=>R[N]||N);else S=R[h]||h;if(Array.isArray(S))await z.setFieldValue(v,M,{entityId:f,fieldName:E,values:S},C);else await z.setFieldValue(v,M,{entityId:f,fieldName:E,value:S},C)}},P=async(v)=>{try{await Tq.rm(v,{recursive:!0,force:!0})}catch(M){G1("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}),R=await K.listFolderContents(v,M,{folderId:null,type:"t",storeCode:f}),C=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"d"}),E=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"t"}),h=k.length===0&&R.length===0&&C.length===0&&E.length===0;return G1("Store %s empty check: %s",f,h),h},T=async(v,M,{tempPath:f,storeCode:k,idMapping:R,enqueuePostCommitHook:C})=>{let E=a5.join(f,"assets"),h;try{h=await Tq.readdir(E)}catch(N){if(N.code==="ENOENT")return G1("No assets directory in export"),0;throw N}let g=h.filter((N)=>N.endsWith(".json"));if(G1("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 N of g){let L=a5.join(E,N),u=await Tq.readFile(L,"utf-8"),p=JSON.parse(u),s=N.replace(".json",".bin"),A8=a5.join(E,s),v8=await Tq.readFile(A8),c8=await W.createAsset(v,M,{store:k,buffer:v8,mimeType:p.mimeType,originalFilename:p.originalFilename,widthPx:p.widthPx,heightPx:p.heightPx,displayWidth:p.displayWidth,displayHeight:p.displayHeight},C);R[p.id]=c8.id,S++}return G1("Imported %d assets",S),S},G=async(v,M,{manifest:f,tempPath:k,storeCode:R})=>{return G1("Starting transaction..."),await v.transaction().execute(async(C)=>{let E={},h=(I8)=>{},g=await T(C,M,{tempPath:k,storeCode:R,idMapping:E,enqueuePostCommitHook:h});if(G1("Phase 0 complete - imported %d assets",g),f.rootFolderFields&&z){G1("Phase 0.25: Restoring root folder fields");for(let[I8,B8]of Object.entries(f.rootFolderFields)){let q6;if(B8.subtype==="root_s")q6=await $.readStoryRootFolder(C,M,{storeCode:R});if(q6&&B8.fields){for(let[j6,O6]of Object.entries(B8.fields))if(Array.isArray(O6))await z.setFieldValue(C,M,{entityId:q6.getObjectId(),fieldName:j6,values:O6},h);else await z.setFieldValue(C,M,{entityId:q6.getObjectId(),fieldName:j6,value:O6},h);G1("Restored fields for root folder %s (%s)",q6.getObjectId(),B8.subtype)}}G1("Phase 0.25 complete - restored root folder fields")}let S=f.entities.filter((I8)=>I8.type==="story"),N=0,L={};if(S.length>0&&J){G1("Phase 0.5: Creating %d stories",S.length);let I8=f.entities.filter((B8)=>B8.type==="folder"&&B8.subtype==="tasks");for(let B8 of I8){let q6=B8.path.split("/");if(q6.length>=3&&q6[0]==="Stories"){let j6=q6[1];L[j6]=B8.id}}for(let B8 of S){let q6=B8.fields?.state||"waiting",j6=await J.createStory(C,M,{store:R,name:B8.name,state:q6},h);if(E[B8.id]=j6.id,B8.fields&&f.version>=2)await X(C,M,j6.id,B8.fields,E,h);let O6=L[B8.name];if(O6&&j6.tasksFolder){E[O6]=j6.tasksFolder.id;let w6=f.entities.find((f6)=>f6.id===O6);if(w6?.fields?.states){let f6=w6.fields.states;if(O(Array.isArray(f6)?f6:[f6]))await z.setFieldValue(C,M,{entityId:j6.tasksFolder.id,fieldName:"states",values:Array.isArray(f6)?f6:[f6]},h)}}N++}G1("Phase 0.5 complete - created %d stories",N)}let u=f.entities.filter((I8)=>I8.type==="folder"&&I8.subtype!=="tasks");G1("Phase 1: Creating %d folders (excluding tasks folders)",u.length);let p=0;for(let I8 of u){let{path:B8,type:q6}=el(I8.path);if(!B8)continue;if(E[I8.id])continue;let j6;if(q6==="s"){let O6=B8.split("/"),w6=O6[O6.length-1],f6=O6.slice(0,-1).join("/"),E6;if(O6.length===1){G1("Unexpected folder directly under Stories root: %s",B8);continue}else if(O6.length===2){let P8=O6[0],X8=f.entities.find((N8)=>N8.type==="story"&&N8.name===P8);if(X8&&E[X8.id])E6=E[X8.id]}else{let P8=f.entities.find((X8)=>X8.type==="folder"&&X8.path===`Stories/${f6}`);if(P8&&E[P8.id])E6=E[P8.id]}if(!E6){G1("Could not resolve parent for story folder: %s",I8.path);continue}j6=await K.createFolder(C,M,{mode:"parentName",parentId:E6,name:w6},h)}else j6=await K.createFolder(C,M,{store:R,path:B8,type:q6},h);if(E[I8.id]=j6.getObjectId(),I8.fields&&f.version>=2)await X(C,M,j6.getObjectId(),I8.fields,E,h);p++}G1("Phase 1 complete - created %d folders (skipped root folders)",p);let s=f.entities.filter((I8)=>I8.type==="document"),A8=[];G1("Phase 2: Reading %d documents",s.length);for(let I8 of s){let B8=a5.join(k,I8.path),q6=await Tq.readFile(B8,"utf-8");A8.push({oldId:I8.id,path:I8.path,content:q6,subtype:I8.subtype,fields:I8.fields})}G1("Phase 2 complete - read %d documents",A8.length),G1("Phase 3: Creating %d document entities",A8.length);let v8=[];for(let I8 of A8){let{path:B8,type:q6}=el(I8.path),j6;if(q6==="s"){let w6=B8.split("/"),f6=w6[0],E6=w6.slice(0,-1).join("/"),P8=w6[w6.length-1],X8=f.entities.find((g8)=>g8.type==="folder"&&g8.path===`Stories/${E6}`),N8;if(X8&&E[X8.id])N8=E[X8.id];else{let g8=f.entities.find((F8)=>F8.type==="story"&&F8.name===f6);if(g8&&E[g8.id])N8=E[g8.id]}if(!N8)throw I.validation(`Cannot resolve parent folder for story document: ${I8.path}`,"IMPORT_RESOLUTION_FAILED");j6={mode:"parentName",parentId:N8,name:P8}}else j6={store:R,path:B8,type:q6};if(I8.subtype)j6.subtype=I8.subtype;else if(q6==="s"){let w6=B8.split("/");if(w6.length>=3&&w6[1]==="tasks")G1('WARN: Document %s in tasks folder missing subtype, inferring "task"',I8.path),j6.subtype="task"}let O6=await q.createDocument(C,M,j6,h);E[I8.oldId]=O6.getObjectId(),v8.push({document:O6,originalContent:I8.content,fields:I8.fields})}G1("Phase 3 complete - created %d document entities",v8.length);let c8=f.entities.filter((I8)=>I8.type==="template"),z6=[];G1("Phase 4: Reading %d templates",c8.length);for(let I8 of c8){let B8=a5.join(k,I8.path),q6=await Tq.readFile(B8,"utf-8");z6.push({oldId:I8.id,path:I8.path,content:q6,subtype:I8.subtype,fields:I8.fields})}G1("Phase 4 complete - read %d templates",z6.length),G1("Phase 5: Creating %d template entities",z6.length);let u8=[];for(let I8 of z6){let{path:B8,type:q6}=el(I8.path),j6={store:R,path:B8,type:q6};if(I8.subtype)j6.subtype=I8.subtype;let O6=await q.createDocument(C,M,j6,h);E[I8.oldId]=O6.getObjectId(),u8.push({template:O6,originalContent:I8.content,fields:I8.fields})}G1("Phase 5 complete - created %d template entities",u8.length),G1("Phase 6: Remapping and saving content for %d documents",v8.length);for(let{document:I8,originalContent:B8,fields:q6}of v8){let j6=H(B8,E);if(await q.saveDraft(C,M,{id:I8.getObjectId(),content:j6,sessionId:"import-service"},h),await q.publishDocument(C,M,{id:I8.getObjectId()},h),q6&&f.version>=2)await X(C,M,I8.getObjectId(),q6,E,h)}G1("Phase 6 complete - saved and published %d documents",v8.length),G1("Phase 7: Remapping and saving content for %d templates",u8.length);for(let{template:I8,originalContent:B8,fields:q6}of u8){let j6=H(B8,E);if(await q.saveDraft(C,M,{id:I8.getObjectId(),content:j6,sessionId:"import-service"},h),await q.publishDocument(C,M,{id:I8.getObjectId()},h),q6&&f.version>=2)await X(C,M,I8.getObjectId(),q6,E,h)}return G1("Phase 7 complete - saved and published %d templates",u8.length),G1("Transaction committed successfully"),{success:!0,counts:{assets:g,stories:N,folders:p,documents:v8.length,templates:u8.length},remapped:E}})};return Object.freeze({isStoreEmpty:w,importDocuments:async(v,M,{filename:f,storeCode:k,projectPath:R})=>{G1("Starting import from %s to store %s",f,k);let C=a5.join(R,$i,f);try{await Tq.access(C),G1("Zip file found: %s",C)}catch(N){throw I.notFound(`Export file not found: ${f}`,"EXPORT_NOT_FOUND")}G1("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");G1("Store empty check: %s",E);let h=U21.randomUUID(),g=a5.join(R,$i,sB8,h),S=a5.join(R,$i,sB8);await Tq.mkdir(S,{recursive:!0});try{new tB8.default(C).extractAllTo(g,!0),G1("Extracted zip to: %s",g)}catch(N){throw I.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let N=a5.join(g,"manifest.json"),L;try{let s=await Tq.readFile(N,"utf-8");L=JSON.parse(s)}catch(s){throw I.validation(`Failed to read manifest: ${s.message}`,"MANIFEST_READ_FAILED")}if(!p21.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");G1("Manifest valid: version=%d, entities=%d",L.version,L.entities.length);for(let s of L.entities){if(s.type==="folder"||s.type==="story")continue;let A8;if(s.type==="asset")A8=a5.join(g,"assets",`${s.id}.bin`);else if(s.type==="document"||s.type==="template")A8=a5.join(g,s.path);else{G1("Unknown entity type in import validation: %s",s.type);continue}try{await Tq.access(A8)}catch(v8){throw I.validation(`Missing file for manifest entry: ${s.path||s.id}`,"IMPORT_VALIDATION_FAILED")}}G1("All content files validated");let u=await G(v,M,{manifest:L,tempPath:g,storeCode:k}),p=u.counts.folders+u.counts.documents+u.counts.templates;return G1("Import complete: %d entities imported",p),u}finally{await P(g)}}})},$U8=Object.freeze({create:c21});var Q21=($)=>{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(h){console.error(`[CronJob] ${K} failed:`,h),Z={message:h.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()},R=()=>{if(J===null)return;clearInterval(J),J=null,z=!1,O=null},E=Object.freeze({start:k,stop:R,restart:()=>{R(),k()}});return{jobFns:M,controlFns:E}},IC=Object.freeze({create:Q21});var KU8=i6(S4(),1),l21=KU8.default("caw:cron:cleanup-edit-states"),qU8=async($)=>{let K=new Date(Date.now()-yJ).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)l21("Cleaned up %d expired edit locks (older than %d minutes)",W.length,yJ/60000);return{expired:W.length}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var i21=({db:$})=>{let{jobFns:K,controlFns:q}=IC.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await qU8($)}});return{job:Object.freeze(K),control:q}},YU8=Object.freeze({create:i21});var d21=({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:d21});import Ul8 from"node:process";import ZU8 from"node:process";import s21 from"node:os";import t21 from"node:fs";import a21 from"node:fs";import zU8 from"node:fs";var Ki;function n21(){try{return zU8.statSync("/.dockerenv"),!0}catch{return!1}}function o21(){try{return zU8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function qi(){if(Ki===void 0)Ki=n21()||o21();return Ki}var Yi,r21=()=>{try{return a21.statSync("/run/.containerenv"),!0}catch{return!1}};function xC(){if(Yi===void 0)Yi=r21()||qi();return Yi}var WU8=()=>{if(ZU8.platform!=="linux")return!1;if(s21.release().toLowerCase().includes("microsoft")){if(xC())return!1;return!0}try{return t21.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!xC():!1}catch{return!1}},HU8=ZU8.env.__IS_WSL_TEST__?WU8:WU8();import Ji from"node:process";function zi(){if(Ji.platform!=="linux")return!1;if(Ji.env.WAYLAND_DISPLAY)return!0;if(Ji.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function h$($){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 e21}from"node:url";var vP=($,K)=>{let q=Zi($z1($));if(typeof q!=="string")throw TypeError(`${K} must be a string or a file URL: ${q}.`);return q},$z1=($)=>Wi($)?$.toString():$,Wi=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,Zi=($)=>$ instanceof URL?e21($):$;var gC=($,K=[],q={})=>{let Y=vP($,"First argument"),[J,z]=h$(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(!h$(z))throw TypeError(`Last argument must be an options object: ${z}`);return[Y,W,z]};import{ChildProcess as Zz1}from"node:child_process";import{StringDecoder as Kz1}from"node:string_decoder";var{toString:OU8}=Object.prototype,XU8=($)=>OU8.call($)==="[object ArrayBuffer]",s$=($)=>OU8.call($)==="[object Uint8Array]",CY=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),qz1=new TextEncoder,PU8=($)=>qz1.encode($),Yz1=new TextDecoder,bC=($)=>Yz1.decode($),wU8=($,K)=>{return Jz1($,K).join("")},Jz1=($,K)=>{if(K==="utf8"&&$.every((z)=>typeof z==="string"))return $;let q=new Kz1(K),Y=$.map((z)=>typeof z==="string"?PU8(z):z).map((z)=>q.write(z)),J=q.end();return J===""?Y:[...Y,J]},Jv=($)=>{if($.length===1&&s$($[0]))return $[0];return Hi(zz1($))},zz1=($)=>$.map((K)=>typeof K==="string"?PU8(K):K),Hi=($)=>{let K=new Uint8Array(Wz1($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},Wz1=($)=>{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=Hz1({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,{}]},Hz1=({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}=Oz1(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)},Oz1=($,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
+ `),F8=N8[X8-1].match(/^(?:[-*+] |\d+\. )\[([ xX])\] (.+)$/),l8=0,Y6=/^(?:[-*+] |\d+\. )\[([ xX])\] .+$/;for(let E8=0;E8<X8;E8++)if(Y6.test(N8[E8]))l8++;return{text:F8[2],checked:F8[1]!==" ",lineNumber:X8,itemNumber:l8}};return Object.freeze({createDocument:w,createTemplate:T,readDocument:G,readDocumentByPath:j,updateDocumentPath:v,deleteDocument:M,saveDraft:f,readDraft:k,publishDocument:R,discardDraft:C,readVersion:E,getVersions:h,setEditState:g,clearEditState:S,getEditState:N,listDocuments:L,editDocument:u,batchEditDocument:p,readLines:s,readBetweenMarkers:A8,getDocumentStats:v8,readHeadings:c8,readSection:z6,readFrontmatter:u8,readChecklist:I8,checkChecklistItem:async(P8,X8,{id:N8,lineNumber:g8,checked:F8,includeDraft:l8=!1,preview:Y6=!1,sessionId:E8},p8)=>{let{entity:n8}=await G(P8,X8,{id:N8}),e8=l8?n8.getDraftContent()??n8.getPublishedContent()??"":n8.getPublishedContent()??"",W6=km(e8,{lineNumber:g8,checked:F8});if(Y6)return{preview:!0,diff:mO(e8,W6.newContent),item:B8(W6.newContent,g8)};return await f(P8,X8,{id:N8,content:W6.newContent,sessionId:E8},p8),{applied:!0,item:B8(W6.newContent,g8)}},toggleChecklistItem:async(P8,X8,{id:N8,lineNumber:g8,includeDraft:F8=!1,preview:l8=!1,sessionId:Y6},E8)=>{let{entity:p8}=await G(P8,X8,{id:N8}),n8=F8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",e8=lj8(n8,{lineNumber:g8});if(l8)return{preview:!0,diff:mO(n8,e8.newContent),item:B8(e8.newContent,g8)};return await f(P8,X8,{id:N8,content:e8.newContent,sessionId:Y6},E8),{applied:!0,item:B8(e8.newContent,g8)}},batchCheckChecklistItems:async(P8,X8,{id:N8,items:g8,includeDraft:F8=!1,preview:l8=!1,sessionId:Y6},E8)=>{let{entity:p8}=await G(P8,X8,{id:N8}),n8=F8?p8.getDraftContent()??p8.getPublishedContent()??"":p8.getPublishedContent()??"",e8=ij8(n8,{items:g8}),W6=g8.map((N6)=>B8(e8.newContent,N6.lineNumber));if(l8)return{preview:!0,diff:mO(n8,e8.newContent),items:W6,count:e8.details.count};return await f(P8,X8,{id:N8,content:e8.newContent,sessionId:Y6},E8),{applied:!0,items:W6,count:e8.details.count}},specialiseDocument:async(P8,X8,{id:N8,subtype:g8,fields:F8},l8)=>{let{entity:Y6}=await G(P8,X8,{id:N8});y.factory(Y6.getSubtype()!==null,I.validation,`Entity is already specialised to subtype: ${Y6.getSubtype()}`,"ALREADY_SPECIALISED");let{storeCode:E8,typeCode:p8}=e6.resolveEntityId(N8),n8=(await Promise.resolve().then(() => (Wk(),wP8))).default;try{await n8.readEntityTypeId(P8,X8,p8,g8)}catch(N6){throw I.validation(`Invalid subtype: ${g8}`,"INVALID_SUBTYPE")}await J.validateRequiredFields(P8,X8,{store:E8,code:p8,subtype:g8,fields:F8});let e8=await $.updateEntityType(P8,X8,{id:N8,subtype:g8},l8);if(F8&&Object.keys(F8).length>0)for(let[N6,g6]of Object.entries(F8))await J.setFieldValue(P8,X8,{entityId:N8,fieldName:N6,...Array.isArray(g6)?{values:g6}:{value:g6}},l8);let{entity:W6}=await G(P8,X8,{id:N8});return{entity:W6}},generaliseDocument:async(P8,X8,{id:N8},g8)=>{let{entity:F8}=await G(P8,X8,{id:N8}),l8=F8.getSubtype();y.factory(l8===null,I.validation,"Entity is already generic (has no subtype)","ALREADY_GENERIC");let Y6=await $.readFolder(P8,X8,{id:F8.getParentId()});if(Y6&&await v4.isInsideTasksFolder(P8,X8,Y6,$))throw I.validation("Cannot generalise entity inside a tasks folder","INVALID_LOCATION");let{typeCode:E8}=e6.resolveEntityId(N8),p8=await $.getFieldDefinitionsForEntityType(P8,X8,{storeCode:"B",code:E8,subtype:l8}),n8=F8.getFields();for(let W6 of p8){let N6=W6.getName();if(n8&&n8[N6])await J.deleteFieldValue(P8,X8,{entityId:N8,fieldName:N6},g8)}await $.updateEntityType(P8,X8,{id:N8,subtype:null},g8);let{entity:e8}=await G(P8,X8,{id:N8});return{entity:e8}},setIncludeResolver:(P8)=>{z=P8}})},nj8=Object.freeze({create:eh6});var $E6=()=>{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}})},oj8=Object.freeze({create:$E6});z4();var aj8=i6(S4(),1),pJ=aj8.default("caw:includes"),KE6=({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(pJ("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(pJ("Found %d include directives",v.length),v.length===0)return w;let M=w;for(let f of v){let{fullMatch:k,id:R,path:C,versionStr:E}=f,h=E?parseInt(E,10):null;pJ("Resolving include: id=%s, path=%s, version=%s",R,C,E);try{let g;if(R)g=R;else{let L=T?T.charAt(0):"A",u=await K.readDocumentByPath(X,P,{path:C,type:"d",storeCode:L});if(!u)throw I.notFound(`Included document not found: ${C}`,"INCLUDE_NOT_FOUND");g=u.entity.getObjectId()}if(G.has(g)){let L=[...G,g].join(" -> ");throw I.validation(`Circular include detected: ${L}`,"INCLUDE_CYCLE")}if(h===null)throw I.validation(`Unpinned include found: ${k}. Includes must specify a version.`,"INCLUDE_UNPINNED");let S=await $.readVersion(X,P,{id:g,versionNumber:h});if(!S)throw I.notFound(`Version ${h} not found for included document: ${g}`,"INCLUDE_VERSION_NOT_FOUND");let N=await W(X,P,S.content,g,G,j+1);M=M.replace(k,N)}catch(g){let S=R||C,N=`> **Include Error** - couldn't include ${S}${h?` version ${h}`:""}: ${g.message}`;pJ("Include resolution failed for %s: %s",S,g.message),M=M.replace(k,N)}}return M};return Object.freeze({resolve:W,pinIncludes:async(X,P,w,T)=>{pJ("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:R,versionStr:C}=M;if(C)continue;pJ("Pinning unpinned include: id=%s, path=%s",k,R);let E,h;if(k){E=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});h=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",N=await K.readDocumentByPath(X,P,{path:R,type:"d",storeCode:S});if(!N)throw I.notFound(`Included document not found: ${R}`,"INCLUDE_NOT_FOUND");E=N.entity.getObjectId(),h=N.entity.getPublishedVersionNumber()}if(!h)throw I.validation(`Cannot pin include - document has no published version: ${E}`,"INCLUDE_NO_VERSION");let g=k?`<include id="${k}" version="${h}" />`:`<include path="${R}" version="${h}" />`;pJ("Pinned include %s to version %d",E,h),v=v.replace(f,g),j.push({id:E,path:R,version:h})}return pJ("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,R=k?parseInt(k,10):null,C,E;if(M){C=M;let{entity:h}=await K.readDocument(X,P,{id:M,resolveIncludes:!1});E=h.getPublishedVersionNumber()}else{let h=T?T.charAt(0):"A",g=await K.readDocumentByPath(X,P,{path:f,type:"d",storeCode:h});C=g?.entity?.getObjectId(),E=g?.entity?.getPublishedVersionNumber()}j.push({id:C,path:f||null,pinnedVersion:R,latestVersion:E,outdated:R!==null&&E!==null&&R<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:R,versionStr:C}=M,E=C?parseInt(C,10):null,h,g;if(k){h=k;let{entity:S}=await K.readDocument(X,P,{id:k,resolveIncludes:!1});g=S.getPublishedVersionNumber()}else{let S=T?T.charAt(0):"A",N=await K.readDocumentByPath(X,P,{path:R,type:"d",storeCode:S});h=N?.entity?.getObjectId(),g=N?.entity?.getPublishedVersionNumber()}if(g&&E!==g){let S=k?`<include id="${k}" version="${g}" />`:`<include path="${R}" version="${g}" />`;v=v.replace(f,S),j.push({id:h,path:R||null,fromVersion:E,toVersion:g})}}return{content:v,updated:j}}})},rj8=Object.freeze({create:KE6});z4();var qA8=i6(vm(),1),YA8=i6(PB(),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}},pg6=($)=>{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},Fg6=($)=>{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:pg6,getParameters:Fg6});var wB=i6(PB(),1),cg6=($={})=>{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=wB.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:cg6});import N0 from"node:fs";import WA8 from"node:os";import Wf from"node:path";var Qg6=({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:[...MM]},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 R=await w.resolveEntityTypePk(z,W,{code:"t",subtype:"prompt"});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:R,name:"associatedType",label:"Associated Type",description:"Entity types this template is associated with",primitiveType:"string",required:!1,multiplicity:"multi",isSystem:!0},O);let C=await w.resolveEntityTypePk(z,W,{code:"s",subtype:null});await w.createFieldDefinition(z,W,{storeCode:"A",ownerEntityId:null,ownerEntityTypePk:C,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:C,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:C,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),h=await K.createDemuxStore(z,W,{name:Z},O);return await K.addChildToDemux(z,W,{demuxId:h.getObjectId(),childId:w.getObjectId()},O),await K.addChildToDemux(z,W,{demuxId:h.getObjectId(),childId:E.getObjectId()},O),await K.addStoresToProject(z,W,{projectId:P.getObjectId(),rootStoreId:h.getObjectId(),storeIds:[h.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=Wf.join(WA8.homedir(),z.slice(2));else W=z;let Z=N0.existsSync(W),H=!1,O=!1,X=!1;if(Z)try{if(H=N0.statSync(W).isDirectory(),H){let T=Wf.join(W,".git");try{O=N0.statSync(T).isDirectory()}catch{O=!1}let G=Wf.join(W,".claude");try{X=N0.statSync(G).isDirectory()}catch{X=!1}}}catch(w){H=!1}let P=Wf.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}}))}})},Zf=Object.freeze({create:Qg6});var lg6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},ig6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:J,projectService:z,clipboardService:W,storyService:Z,assetService:H,jobService:O,includeResolver:X,worktreeService:P,entityTypeService:w})=>{let T=async(m8)=>{let i=lg6(),l;return await $.transaction().execute(async(c)=>{l=await m8(c,i.enqueuePostCommitHook)}),i.flush(),l};return Object.freeze({createFolder:async(m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o})=>{return T(async(G8,Z8)=>{return await K.createFolder(G8,m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o},Z8)})},renameFolder:async(m8,{id:i,name:l})=>{return T(async(c,W8)=>{return await K.renameFolder(c,m8,{id:i,name:l},W8)})},moveFolder:async(m8,{id:i,parentId:l})=>{return T(async(c,W8)=>{return await K.moveFolder(c,m8,{id:i,parentId:l},W8)})},deleteFolder:async(m8,{id:i})=>{return T(async(l,c)=>{return await K.deleteFolder(l,m8,{id:i},c)})},createProject:async(m8,{name:i,path:l})=>{return T(async(c,W8)=>{return await z.createProject(c,m8,{name:i,path:l},W8)})},createFieldDefinition:async(m8,{store:i,ownerEntityId:l,ownerEntityTypeCode:c,ownerEntityTypeSubtype:W8,name:F,label:H8,description:o,primitiveType:G8,required:Z8,multiplicity:f8,isSystem:S8})=>{return T(async(Q8,C6)=>{return await q.createFieldDefinition(Q8,m8,{store:i,ownerEntityId:l,ownerEntityTypeCode:c,ownerEntityTypeSubtype:W8,name:F,label:H8,description:o,primitiveType:G8,required:Z8,multiplicity:f8,isSystem:S8},C6)})},addFieldToEntity:async(m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F})=>{return T(async(H8,o)=>{return await q.addFieldToEntity(H8,m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F},o)})},updateFieldValue:async(m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F})=>{return T(async(H8,o)=>{return await q.updateFieldValue(H8,m8,{entityId:i,fieldDefinitionId:l,fieldName:c,value:W8,values:F},o)})},removeFieldFromEntity:async(m8,{entityId:i,fieldDefinitionId:l,fieldName:c})=>{return T(async(W8,F)=>{return await q.removeFieldFromEntity(W8,m8,{entityId:i,fieldDefinitionId:l,fieldName:c},F)})},deleteFieldDefinition:async(m8,{id:i})=>{return T(async(l,c)=>{return await q.deleteFieldDefinition(l,m8,{id:i},c)})},createSubtype:async(m8,{code:i,subtype:l,name:c})=>{return T(async(W8,F)=>{return await w.createSubtype(W8,m8,{code:i,subtype:l,name:c},F)})},createDocument:async(m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o,content:G8,tree:Z8,subtype:f8,fields:S8})=>{return T(async(Q8,C6)=>{return await Y.createDocument(Q8,m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,type:o,content:G8,tree:Z8,subtype:f8,fields:S8},C6)})},createTemplate:async(m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,content:o,subtype:G8})=>{return T(async(Z8,f8)=>{return await Y.createTemplate(Z8,m8,{mode:i,store:l,path:c,root:W8,parentId:F,name:H8,content:o,subtype:G8},f8)})},updateDocumentPath:async(m8,{id:i,path:l,parentId:c,type:W8})=>{return T(async(F,H8)=>{return await Y.updateDocumentPath(F,m8,{id:i,path:l,parentId:c,type:W8},H8)})},deleteDocument:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.deleteDocument(l,m8,{id:i},c)})},saveDraft:async(m8,{id:i,content:l,sessionId:c})=>{return T(async(W8,F)=>{return await Y.saveDraft(W8,m8,{id:i,content:l,sessionId:c},F)})},publishDocument:async(m8,{id:i,sessionId:l})=>{return T(async(c,W8)=>{return await Y.publishDocument(c,m8,{id:i,sessionId:l},W8)})},discardDraft:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.discardDraft(l,m8,{id:i},c)})},setEditState:async(m8,{id:i,sessionId:l})=>{return T(async(c,W8)=>{return await Y.setEditState(c,m8,{id:i,sessionId:l},W8)})},clearEditState:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.clearEditState(l,m8,{id:i},c)})},editDocument:async(m8,{id:i,operation:l,preview:c,ignoreContent:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.editDocument(H8,m8,{id:i,operation:l,preview:c,ignoreContent:W8,sessionId:F},o)})},batchEditDocument:async(m8,{id:i,operations:l,preview:c,ignoreContent:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.batchEditDocument(H8,m8,{id:i,operations:l,preview:c,ignoreContent:W8,sessionId:F},o)})},checkChecklistItem:async(m8,{id:i,lineNumber:l,checked:c,includeDraft:W8,preview:F,sessionId:H8})=>{return T(async(o,G8)=>{return await Y.checkChecklistItem(o,m8,{id:i,lineNumber:l,checked:c,includeDraft:W8,preview:F,sessionId:H8},G8)})},toggleChecklistItem:async(m8,{id:i,lineNumber:l,includeDraft:c,preview:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.toggleChecklistItem(H8,m8,{id:i,lineNumber:l,includeDraft:c,preview:W8,sessionId:F},o)})},batchCheckChecklistItems:async(m8,{id:i,items:l,includeDraft:c,preview:W8,sessionId:F})=>{return T(async(H8,o)=>{return await Y.batchCheckChecklistItems(H8,m8,{id:i,items:l,includeDraft:c,preview:W8,sessionId:F},o)})},specialiseDocument:async(m8,{id:i,subtype:l,fields:c})=>{return T(async(W8,F)=>{return await Y.specialiseDocument(W8,m8,{id:i,subtype:l,fields:c},F)})},generaliseDocument:async(m8,{id:i})=>{return T(async(l,c)=>{return await Y.generaliseDocument(l,m8,{id:i},c)})},renderTemplate:async(m8,{id:i,params:l,target:c,targetOptions:W8,sessionId:F})=>{let{entity:H8}=await Y.readDocument($,m8,{id:i,resolveIncludes:!1});if(!H8.getPublishedContent())throw(await Promise.resolve().then(() => (z4(),AO))).default.validation("Template has no published content","NO_PUBLISHED_CONTENT");let o=H8.getPublishedContent(),{target:G8,targetPath:Z8,targetParentId:f8,targetName:S8,targetRoot:Q8,targetStore:C6,targetJobName:$$,targetJobAgent:T7,targetJobModel:g7,targetJobWorktree:b7,targetJobStreaming:L3}=J.extractTemplateParameters(o),e$=c||G8||"stdout",Z4=W8?.parentId||W8?.root||W8?.path?{path:W8?.path,parentId:W8?.parentId,name:W8?.name,root:W8?.root,store:W8?.store,publish:W8?.publish}:{path:W8?.path||Z8,parentId:W8?.parentId||f8,name:W8?.name||S8,root:W8?.root||Q8,store:W8?.store||C6,publish:W8?.publish},R8=o;if(X)R8=await X.resolve($,m8,o,i);let C8=J.renderTemplate(R8,l||{});if(Z4.path)Z4.path=J.renderTemplate(Z4.path,l||{});if(Z4.name)Z4.name=J.renderTemplate(Z4.name,l||{});switch(e$){case"stdout":return{content:C8,target:"stdout"};case"clipboard":return await W.copyToClipboard(C8),{target:"clipboard",message:"Copied to clipboard"};case"document":return T(async(L8,y8)=>{let G6=(await Promise.resolve().then(() => (z4(),AO))).default,x;if(Z4.parentId){if(!Z4.name)throw G6.validation("targetOptions.name is required when parentId is provided","MISSING_TARGET_NAME");x={mode:"parentName",parentId:Z4.parentId,name:Z4.name,content:C8}}else if(Z4.root){if(!Z4.path)throw G6.validation("targetOptions.path is required when root is provided","MISSING_TARGET_PATH");x={mode:"rootRelative",root:Z4.root,path:Z4.path,content:C8}}else{if(!Z4.path)throw G6.validation("targetOptions.path is required for document target","MISSING_TARGET_PATH");x={mode:"fullPath",store:Z4.store||"A",path:Z4.path,content:C8}}let T8=await Y.createDocument(L8,m8,x,y8);if(Z4.publish)await Y.publishDocument(L8,m8,{id:T8.getObjectId(),sessionId:F},y8);return{content:C8,target:"document",documentId:T8.getObjectId(),documentPath:Z4.path||Z4.name,published:!!Z4.publish}});case"job":return T(async(L8,y8)=>{let G6=(await Promise.resolve().then(() => (z4(),AO))).default;if(!C8||!C8.trim())throw G6.validation("Template rendered to empty prompt","MISSING_PROMPT");let x=W8?.jobName||$$,T8=W8?.jobAgent||T7||"claude",m=W8?.jobModel||g7,$8=W8?.jobWorktree||b7,d=W8?.jobStreaming??L3,t=W8?.objectId||l?.["object-id"],r=null;if(x)r=J.renderTemplate(x,l||{});let e=null;if($8&&P){let{worktrees:M8}=await P.listWorktrees({projectPath:m8.projectPath}),h8=M8.find((t8)=>t8.branch===$8);if(!h8)throw G6.validation(`Worktree with branch '${$8}' not found`,"WORKTREE_NOT_FOUND");e=h8.path}let w8=j1.extractStoreCode(i),j8=await O.createJob(L8,m8,{store:w8,name:r,agent:T8,model:m,prompt:C8,workingDirectory:e,objectId:t,streaming:d},y8);return{target:"job",jobId:j8.id,jobName:j8.name}});case"file":throw(await Promise.resolve().then(() => (z4(),AO))).default.validation("file target not yet implemented","NOT_IMPLEMENTED");default:throw(await Promise.resolve().then(() => (z4(),AO))).default.validation(`Unknown target: ${e$}`,"INVALID_TARGET")}},createStory:async(m8,{name:i,storeCode:l,state:c})=>{return T(async(W8,F)=>{return await Z.createStory(W8,m8,{store:l,name:i,state:c},F)})},renameStory:async(m8,{id:i,name:l})=>{return T(async(c,W8)=>{return await Z.renameStory(c,m8,{id:i,name:l},W8)})},updateStoryState:async(m8,{id:i,state:l})=>{return T(async(c,W8)=>{return await Z.updateStoryState(c,m8,{id:i,state:l},W8)})},deleteStory:async(m8,{id:i})=>{return T(async(l,c)=>{return await Z.deleteStory(l,m8,{id:i},c)})},incrementStoryJobCount:async(m8,{id:i})=>{return T(async(l,c)=>{return await Z.incrementActiveJobCount(l,m8,{id:i},c)})},decrementStoryJobCount:async(m8,{id:i})=>{return T(async(l,c)=>{return await Z.decrementActiveJobCount(l,m8,{id:i},c)})},createAsset:async(m8,{store:i,buffer:l,mimeType:c,originalFilename:W8,widthPx:F,heightPx:H8,displayWidth:o,displayHeight:G8})=>{return T(async(Z8,f8)=>{return await H.createAsset(Z8,m8,{store:i,buffer:l,mimeType:c,originalFilename:W8,widthPx:F,heightPx:H8,displayWidth:o,displayHeight:G8},f8)})},deleteAsset:async(m8,{id:i})=>{return T(async(l,c)=>{return await H.deleteAsset(l,m8,{id:i},c)})},createJob:async(m8,{store:i,name:l,agent:c,model:W8,prompt:F,workingDirectory:H8,objectId:o,streaming:G8})=>{return T(async(Z8,f8)=>{return await O.createJob(Z8,m8,{store:i,name:l,agent:c,model:W8,prompt:F,workingDirectory:H8,objectId:o,streaming:G8},f8)})},deleteJob:async(m8,{id:i})=>{return T(async(l,c)=>{return await O.deleteJob(l,m8,{id:i},c)})},updateJobStatus:async(m8,{id:i,status:l,exitCode:c,errorMessage:W8})=>{return T(async(F,H8)=>{return await O.updateJobStatus(F,m8,{id:i,status:l,exitCode:c,errorMessage:W8},H8)})},updateJobOutput:async(m8,{id:i,output:l})=>{return T(async(c,W8)=>{return await O.updateJobOutput(c,m8,{id:i,output:l},W8)})},updateJobTokens:async(m8,{id:i,tokensUsed:l})=>{return T(async(c,W8)=>{return await O.updateJobTokens(c,m8,{id:i,tokensUsed:l},W8)})},updateJobMetadata:async(m8,{id:i,durationMs:l,totalCostUsd:c,numTurns:W8,sessionId:F})=>{return T(async(H8,o)=>{return await O.updateJobMetadata(H8,m8,{id:i,durationMs:l,totalCostUsd:c,numTurns:W8,sessionId:F},o)})},continueJob:async(m8,{id:i,prompt:l,model:c})=>{return T(async(W8,F)=>{return await O.continueJob(W8,m8,{id:i,prompt:l,model:c},F)})},setJobPid:async(m8,{id:i,pid:l})=>{return T(async(c,W8)=>{return await O.setJobPid(c,m8,{id:i,pid:l},W8)})},clearJobPid:async(m8,{id:i})=>{return T(async(l,c)=>{return await O.clearJobPid(l,m8,{id:i},c)})},renameJob:async(m8,{id:i,name:l})=>{return T(async(c,W8)=>{return await O.renameJob(c,m8,{id:i,name:l},W8)})}})},TB=Object.freeze({create:ig6});z4();var jB8=i6(wB8(),1),vB8=i6(S4(),1);import y$ from"fs/promises";import D$ from"path";import{createWriteStream as O21}from"fs";import X21 from"crypto";var R3=vB8.default("caw:export"),TB8=".caw-exports",GB8=".tmp",P21=2,w21=({store:$,folderService:K,documentService:q,templateService:Y,storyService:J,assetService:z,assetsDir:W})=>{let Z=()=>{let C=new Date,E=C.getFullYear(),h=String(C.getMonth()+1).padStart(2,"0"),g=String(C.getDate()).padStart(2,"0"),S=String(C.getHours()).padStart(2,"0"),N=String(C.getMinutes()).padStart(2,"0"),L=String(C.getSeconds()).padStart(2,"0");return`${E}-${h}-${g}-${S}${N}${L}`},H=async(C)=>{let E=D$.join(C,TB8),h=D$.join(E,GB8);try{return await y$.mkdir(E,{recursive:!0}),await y$.mkdir(h,{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(C,E,h,g)=>{let S=[],N=async(L,u)=>{let p=await K.listFolderContents(C,E,{folderId:L,type:h,storeCode:g});for(let s of p)if(s.getParentId()!==null)S.push({entity:s,depth:u,contentType:h}),await N(s.getObjectId(),u+1)};return await N(null,0),S},X=async(C,E,h)=>{let g=[],S=[],N=async(L)=>{let u=await q.listDocuments(C,E,{parentId:L,storeCode:h});for(let s of u){let A8=s.getPublishedVersionNumber();if(A8!==null){let v8=await q.readVersion(C,E,{id:s.getObjectId(),versionNumber:A8});g.push({entity:s,version:v8})}else S.push(s)}let p=await K.listFolderContents(C,E,{folderId:L,type:"d",storeCode:h});for(let s of p)await N(s.getObjectId())};return await N(null),{published:g,draftOnly:S}},P=async(C,E,h)=>{let g=[],S=[],N=async(L)=>{let u=await q.listDocuments(C,E,{parentId:L,storeCode:h,type:"t"});for(let s of u){let A8=s.getPublishedVersionNumber();if(A8!==null){let v8=await q.readVersion(C,E,{id:s.getObjectId(),versionNumber:A8});g.push({entity:s,version:v8})}else S.push(s)}let p=await K.listFolderContents(C,E,{folderId:L,type:"t",storeCode:h});for(let s of p)await N(s.getObjectId())};return await N(null),{published:g,draftOnly:S}},w=async(C,E,h)=>{let g=await z.listAssets(C,E,{store:h}),S=[];for(let N of g){let L=N.hash,u=L.substring(0,2),p=D$.join(W,u,L);try{let s=await y$.readFile(p);S.push({entity:N,buffer:s})}catch(s){if(s.code==="ENOENT"){R3("Warning: Skipping asset %s - blob file missing",N.id);continue}throw s}}return R3("Collected %d assets for export",S.length),S},T=new Set(["draft_version","latest_published_version"]),G=(C)=>{let E=typeof C.getFields==="function"?C.getFields():C.fields;if(!E||typeof E!=="object"||Object.keys(E).length===0)return;let h={};for(let[g,S]of Object.entries(E)){if(T.has(g))continue;let N;if(typeof S?.getValues==="function")N=S.getValues();else if(Array.isArray(S))N=S;else N=[S];h[g]=N.length===1?N[0]:N}return Object.keys(h).length>0?h:void 0},j=async(C,E,h)=>{let g=[],S=[],N={published:[],draftOnly:[]};if(!J)return R3("StoryService not available, skipping story export"),{stories:g,folders:S,documents:N};let L=await J.listStories(C,E,{store:h});R3("Found %d stories for export",L.length);for(let u of L)g.push(u),await v(C,E,u,h,S,N);return{stories:g,folders:S,documents:N}},v=async(C,E,h,g,S,N)=>{let L=h.id||h.getObjectId?.()||h,u=await $.listFolderContents(C,E,{folderId:L,type:"s",storeCode:g});for(let s of u){if(s.getParentId()!==null)S.push({entity:s,contentType:"s"});await v(C,E,s.getObjectId(),g,S,N)}let p=await q.listDocuments(C,E,{parentId:L,storeCode:g});for(let s of p){let A8=s.getPublishedVersionNumber();if(A8!==null){let v8=await q.readVersion(C,E,{id:s.getObjectId(),versionNumber:A8});N.published.push({entity:s,version:v8})}else N.draftOnly.push(s)}},M=async(C)=>{try{await y$.rm(C,{recursive:!0,force:!0})}catch(E){R3("Warning: Failed to cleanup temp directory: %s",E.message)}};return Object.freeze({listExports:async(C,E,{projectPath:h})=>{let g=D$.join(h,TB8);try{let S=await y$.readdir(g),N=[];for(let L of S)if(L.endsWith(".zip")){let u=D$.join(g,L),p=await y$.stat(u);N.push({filename:L,timestamp:p.mtime.toISOString(),size:p.size})}return R3("Found %d export files",N.length),N}catch(S){if(S.code==="ENOENT")return[];throw S}},exportPreview:async(C,E,{storeCode:h})=>{let g=await O(C,E,"d",h),S=await O(C,E,"t",h),{published:N,draftOnly:L}=await X(C,E,h),{published:u,draftOnly:p}=await P(C,E,h),A8={assets:(z?await z.listAssets(C,E,{store:h}):[]).map((u8)=>({id:u8.id,originalFilename:u8.originalFilename,mimeType:u8.mimeType,sizeBytes:u8.sizeBytes})),folders:[...g,...S].map((u8)=>({id:u8.entity.getObjectId(),path:u8.entity.getPath(),name:u8.entity.getName()})),documents:N.map((u8)=>({id:u8.entity.getObjectId(),path:u8.entity.getPath(),name:u8.entity.getName()})),templates:u.map((u8)=>({id:u8.entity.getObjectId(),path:u8.entity.getPath(),name:u8.entity.getName()}))},v8={documents:L.map((u8)=>({id:u8.getObjectId(),path:u8.getPath(),name:u8.getName()})),templates:p.map((u8)=>({id:u8.getObjectId(),path:u8.getPath(),name:u8.getName()}))},c8=A8.assets.length+A8.folders.length+A8.documents.length+A8.templates.length,z6=v8.documents.length+v8.templates.length;return R3("Preview: %d published (%d assets), %d draft-only",c8,A8.assets.length,z6),{toExport:A8,draftOnly:v8}},exportDocuments:async(C,E,{storeCode:h,projectPath:g})=>{R3("Starting export for store %s",h);let S=await H(g),N=X21.randomUUID(),L=D$.join(S,GB8,N);await y$.mkdir(L,{recursive:!0});try{let u=await O(C,E,"d",h),p=await O(C,E,"t",h),s=[...u,...p],{published:A8,draftOnly:v8}=await X(C,E,h),{published:c8,draftOnly:z6}=await P(C,E,h),u8=z?await w(C,E,h):[],{stories:I8,folders:B8,documents:q6}=await j(C,E,h),j6=[...s,...B8],O6=[...A8,...q6.published],w6=[...v8,...q6.draftOnly];R3("Found %d folders, %d documents, %d templates, %d assets, %d stories",j6.length,O6.length,c8.length,u8.length,I8.length);let f6={},E6=await $.readStoryRootFolder(C,E,{storeCode:h});if(E6){let E8=E6.toJSON(),p8=G(E8);if(p8&&Object.keys(p8).length>0)f6[E6.getObjectId()]={subtype:"root_s",fields:p8}}let P8=[...u8.map((E8)=>({id:E8.entity.id,type:"asset",hash:E8.entity.hash,mimeType:E8.entity.mimeType,sizeBytes:E8.entity.sizeBytes,originalFilename:E8.entity.originalFilename,widthPx:E8.entity.widthPx,heightPx:E8.entity.heightPx,displayWidth:E8.entity.displayWidth,displayHeight:E8.entity.displayHeight})),...I8.map((E8)=>{let p8={id:E8.id,type:"story",name:E8.name},n8=G(E8);if(n8)p8.fields=n8;return p8}),...j6.map((E8)=>{let p8={id:E8.entity.getObjectId(),type:"folder",path:E8.entity.getPath(),contentType:E8.contentType},n8=E8.entity.getSubtype?.();if(n8)p8.subtype=n8;let e8=G(E8.entity);if(e8)p8.fields=e8;return p8}),...O6.map((E8)=>{let p8={id:E8.entity.getObjectId(),type:"document",path:E8.entity.getPath()},n8=E8.entity.getSubtype?.();if(n8)p8.subtype=n8;else{let W6=E8.entity.getPath(),N6=W6.split("/");if(N6.length>=4&&N6[2]==="tasks")R3('WARN: Document %s in tasks folder missing subtype, inferring "task"',W6),p8.subtype="task"}let e8=G(E8.entity);if(e8)p8.fields=e8;return p8}),...c8.map((E8)=>{let p8={id:E8.entity.getObjectId(),type:"template",path:E8.entity.getPath()},n8=E8.entity.getSubtype?.();if(n8)p8.subtype=n8;let e8=G(E8.entity);if(e8)p8.fields=e8;return p8})],X8={version:P21,exportedAt:new Date().toISOString(),entities:P8};if(Object.keys(f6).length>0)X8.rootFolderFields=f6;await y$.writeFile(D$.join(L,"manifest.json"),JSON.stringify(X8,null,2),"utf-8");for(let E8 of j6){if(E8.entity.getParentId()===null)continue;let p8=D$.join(L,E8.entity.getPath());await y$.mkdir(p8,{recursive:!0})}await y$.mkdir(D$.join(L,"Documents"),{recursive:!0}),await y$.mkdir(D$.join(L,"Templates"),{recursive:!0}),await y$.mkdir(D$.join(L,"Stories"),{recursive:!0});for(let E8 of O6){let p8=D$.join(L,E8.entity.getPath()),n8=E8.version.content;await y$.mkdir(D$.dirname(p8),{recursive:!0}),await y$.writeFile(p8,n8,"utf-8")}for(let E8 of c8){let p8=D$.join(L,E8.entity.getPath()),n8=E8.version.content;await y$.mkdir(D$.dirname(p8),{recursive:!0}),await y$.writeFile(p8,n8,"utf-8")}if(u8.length>0){let E8=D$.join(L,"assets");await y$.mkdir(E8,{recursive:!0});for(let p8 of u8){let n8=p8.entity.id,e8=D$.join(E8,`${n8}.bin`);await y$.writeFile(e8,p8.buffer);let W6=D$.join(E8,`${n8}.json`);await y$.writeFile(W6,JSON.stringify({id:n8,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 E8 of P8){if(E8.type==="folder"||E8.type==="story")continue;let p8;if(E8.type==="asset")p8=D$.join(L,"assets",`${E8.id}.bin`);else if(E8.type==="document"||E8.type==="template")p8=D$.join(L,E8.path);else{R3("Unknown entity type in validation: %s",E8.type);continue}try{await y$.access(p8)}catch(n8){throw I.validation(`Manifest entry missing file: ${E8.id||E8.path}`,"EXPORT_VALIDATION_FAILED")}}let N8=`caw-export-${Z()}.zip`,g8=D$.join(S,N8),F8=O21(g8),l8=jB8.default("zip",{zlib:{level:9}});l8.on("error",async(E8)=>{throw await M(L),R3("Zip creation error: %s",E8.message),I.validation(`Export failed: ${E8.message}`,"EXPORT_ERROR")}),l8.pipe(F8),l8.directory(L,!1),await l8.finalize(),await new Promise((E8,p8)=>{F8.on("close",E8),F8.on("error",p8),setTimeout(()=>{p8(Error("Zip creation timeout"))},60000)}),R3("Created zip: %s (%d bytes)",N8,l8.pointer()),await M(L);let Y6=P8.length;return R3("Export complete: %s (%d entities)",N8,Y6),{success:!0,filename:N8,path:g8,counts:{assets:u8.length,stories:I8.length,folders:j6.length,documents:O6.length,templates:c8.length},draftOnlySkipped:{documents:w6.length,templates:z6.length}}}catch(u){throw await M(L),u}}})},VB8=Object.freeze({create:w21});z4();var tB8=i6(rB8(),1),eB8=i6(S4(),1);import Tq from"fs/promises";import a5 from"path";import U21 from"crypto";var G1=eB8.default("caw:import"),el=($)=>{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}},$i=".caw-exports",sB8=".tmp",p21=[1,2],F21=/\b([A-Z][adtfns]\d+)\b/g,c21=({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(F21,(f,k)=>{return M[k]??f})},O=(v)=>{if(!Array.isArray(v))return!1;if(v.length!==Xz.length)return!0;return!v.every((M,f)=>M===Xz[f])},X=async(v,M,f,k,R,C)=>{if(!k||typeof k!=="object"||!z)return;for(let[E,h]of Object.entries(k)){if(E==="activeJobCount")continue;let g=E==="dependsOn",S=h;if(g)if(Array.isArray(h))S=h.map((N)=>R[N]||N);else S=R[h]||h;if(Array.isArray(S))await z.setFieldValue(v,M,{entityId:f,fieldName:E,values:S},C);else await z.setFieldValue(v,M,{entityId:f,fieldName:E,value:S},C)}},P=async(v)=>{try{await Tq.rm(v,{recursive:!0,force:!0})}catch(M){G1("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}),R=await K.listFolderContents(v,M,{folderId:null,type:"t",storeCode:f}),C=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"d"}),E=await q.listDocuments(v,M,{parentId:null,storeCode:f,type:"t"}),h=k.length===0&&R.length===0&&C.length===0&&E.length===0;return G1("Store %s empty check: %s",f,h),h},T=async(v,M,{tempPath:f,storeCode:k,idMapping:R,enqueuePostCommitHook:C})=>{let E=a5.join(f,"assets"),h;try{h=await Tq.readdir(E)}catch(N){if(N.code==="ENOENT")return G1("No assets directory in export"),0;throw N}let g=h.filter((N)=>N.endsWith(".json"));if(G1("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 N of g){let L=a5.join(E,N),u=await Tq.readFile(L,"utf-8"),p=JSON.parse(u),s=N.replace(".json",".bin"),A8=a5.join(E,s),v8=await Tq.readFile(A8),c8=await W.createAsset(v,M,{store:k,buffer:v8,mimeType:p.mimeType,originalFilename:p.originalFilename,widthPx:p.widthPx,heightPx:p.heightPx,displayWidth:p.displayWidth,displayHeight:p.displayHeight},C);R[p.id]=c8.id,S++}return G1("Imported %d assets",S),S},G=async(v,M,{manifest:f,tempPath:k,storeCode:R})=>{return G1("Starting transaction..."),await v.transaction().execute(async(C)=>{let E={},h=(I8)=>{},g=await T(C,M,{tempPath:k,storeCode:R,idMapping:E,enqueuePostCommitHook:h});if(G1("Phase 0 complete - imported %d assets",g),f.rootFolderFields&&z){G1("Phase 0.25: Restoring root folder fields");for(let[I8,B8]of Object.entries(f.rootFolderFields)){let q6;if(B8.subtype==="root_s")q6=await $.readStoryRootFolder(C,M,{storeCode:R});if(q6&&B8.fields){for(let[j6,O6]of Object.entries(B8.fields))if(Array.isArray(O6))await z.setFieldValue(C,M,{entityId:q6.getObjectId(),fieldName:j6,values:O6},h);else await z.setFieldValue(C,M,{entityId:q6.getObjectId(),fieldName:j6,value:O6},h);G1("Restored fields for root folder %s (%s)",q6.getObjectId(),B8.subtype)}}G1("Phase 0.25 complete - restored root folder fields")}let S=f.entities.filter((I8)=>I8.type==="story"),N=0,L={};if(S.length>0&&J){G1("Phase 0.5: Creating %d stories",S.length);let I8=f.entities.filter((B8)=>B8.type==="folder"&&B8.subtype==="tasks");for(let B8 of I8){let q6=B8.path.split("/");if(q6.length>=3&&q6[0]==="Stories"){let j6=q6[1];L[j6]=B8.id}}for(let B8 of S){let q6=B8.fields?.state||"waiting",j6=await J.createStory(C,M,{store:R,name:B8.name,state:q6},h);if(E[B8.id]=j6.id,B8.fields&&f.version>=2)await X(C,M,j6.id,B8.fields,E,h);let O6=L[B8.name];if(O6&&j6.tasksFolder){E[O6]=j6.tasksFolder.id;let w6=f.entities.find((f6)=>f6.id===O6);if(w6?.fields?.states){let f6=w6.fields.states;if(O(Array.isArray(f6)?f6:[f6]))await z.setFieldValue(C,M,{entityId:j6.tasksFolder.id,fieldName:"states",values:Array.isArray(f6)?f6:[f6]},h)}}N++}G1("Phase 0.5 complete - created %d stories",N)}let u=f.entities.filter((I8)=>I8.type==="folder"&&I8.subtype!=="tasks");G1("Phase 1: Creating %d folders (excluding tasks folders)",u.length);let p=0;for(let I8 of u){let{path:B8,type:q6}=el(I8.path);if(!B8)continue;if(E[I8.id])continue;let j6;if(q6==="s"){let O6=B8.split("/"),w6=O6[O6.length-1],f6=O6.slice(0,-1).join("/"),E6;if(O6.length===1){G1("Unexpected folder directly under Stories root: %s",B8);continue}else if(O6.length===2){let P8=O6[0],X8=f.entities.find((N8)=>N8.type==="story"&&N8.name===P8);if(X8&&E[X8.id])E6=E[X8.id]}else{let P8=f.entities.find((X8)=>X8.type==="folder"&&X8.path===`Stories/${f6}`);if(P8&&E[P8.id])E6=E[P8.id]}if(!E6){G1("Could not resolve parent for story folder: %s",I8.path);continue}j6=await K.createFolder(C,M,{mode:"parentName",parentId:E6,name:w6},h)}else j6=await K.createFolder(C,M,{store:R,path:B8,type:q6},h);if(E[I8.id]=j6.getObjectId(),I8.fields&&f.version>=2)await X(C,M,j6.getObjectId(),I8.fields,E,h);p++}G1("Phase 1 complete - created %d folders (skipped root folders)",p);let s=f.entities.filter((I8)=>I8.type==="document"),A8=[];G1("Phase 2: Reading %d documents",s.length);for(let I8 of s){let B8=a5.join(k,I8.path),q6=await Tq.readFile(B8,"utf-8");A8.push({oldId:I8.id,path:I8.path,content:q6,subtype:I8.subtype,fields:I8.fields})}G1("Phase 2 complete - read %d documents",A8.length),G1("Phase 3: Creating %d document entities",A8.length);let v8=[];for(let I8 of A8){let{path:B8,type:q6}=el(I8.path),j6;if(q6==="s"){let w6=B8.split("/"),f6=w6[0],E6=w6.slice(0,-1).join("/"),P8=w6[w6.length-1],X8=f.entities.find((g8)=>g8.type==="folder"&&g8.path===`Stories/${E6}`),N8;if(X8&&E[X8.id])N8=E[X8.id];else{let g8=f.entities.find((F8)=>F8.type==="story"&&F8.name===f6);if(g8&&E[g8.id])N8=E[g8.id]}if(!N8)throw I.validation(`Cannot resolve parent folder for story document: ${I8.path}`,"IMPORT_RESOLUTION_FAILED");j6={mode:"parentName",parentId:N8,name:P8}}else j6={store:R,path:B8,type:q6};if(I8.subtype)j6.subtype=I8.subtype;else if(q6==="s"){let w6=B8.split("/");if(w6.length>=3&&w6[1]==="tasks")G1('WARN: Document %s in tasks folder missing subtype, inferring "task"',I8.path),j6.subtype="task"}let O6=await q.createDocument(C,M,j6,h);E[I8.oldId]=O6.getObjectId(),v8.push({document:O6,originalContent:I8.content,fields:I8.fields})}G1("Phase 3 complete - created %d document entities",v8.length);let c8=f.entities.filter((I8)=>I8.type==="template"),z6=[];G1("Phase 4: Reading %d templates",c8.length);for(let I8 of c8){let B8=a5.join(k,I8.path),q6=await Tq.readFile(B8,"utf-8");z6.push({oldId:I8.id,path:I8.path,content:q6,subtype:I8.subtype,fields:I8.fields})}G1("Phase 4 complete - read %d templates",z6.length),G1("Phase 5: Creating %d template entities",z6.length);let u8=[];for(let I8 of z6){let{path:B8,type:q6}=el(I8.path),j6={store:R,path:B8,type:q6};if(I8.subtype)j6.subtype=I8.subtype;let O6=await q.createDocument(C,M,j6,h);E[I8.oldId]=O6.getObjectId(),u8.push({template:O6,originalContent:I8.content,fields:I8.fields})}G1("Phase 5 complete - created %d template entities",u8.length),G1("Phase 6: Remapping and saving content for %d documents",v8.length);for(let{document:I8,originalContent:B8,fields:q6}of v8){let j6=H(B8,E);if(await q.saveDraft(C,M,{id:I8.getObjectId(),content:j6,sessionId:"import-service"},h),await q.publishDocument(C,M,{id:I8.getObjectId()},h),q6&&f.version>=2)await X(C,M,I8.getObjectId(),q6,E,h)}G1("Phase 6 complete - saved and published %d documents",v8.length),G1("Phase 7: Remapping and saving content for %d templates",u8.length);for(let{template:I8,originalContent:B8,fields:q6}of u8){let j6=H(B8,E);if(await q.saveDraft(C,M,{id:I8.getObjectId(),content:j6,sessionId:"import-service"},h),await q.publishDocument(C,M,{id:I8.getObjectId()},h),q6&&f.version>=2)await X(C,M,I8.getObjectId(),q6,E,h)}return G1("Phase 7 complete - saved and published %d templates",u8.length),G1("Transaction committed successfully"),{success:!0,counts:{assets:g,stories:N,folders:p,documents:v8.length,templates:u8.length},remapped:E}})};return Object.freeze({isStoreEmpty:w,importDocuments:async(v,M,{filename:f,storeCode:k,projectPath:R})=>{G1("Starting import from %s to store %s",f,k);let C=a5.join(R,$i,f);try{await Tq.access(C),G1("Zip file found: %s",C)}catch(N){throw I.notFound(`Export file not found: ${f}`,"EXPORT_NOT_FOUND")}G1("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");G1("Store empty check: %s",E);let h=U21.randomUUID(),g=a5.join(R,$i,sB8,h),S=a5.join(R,$i,sB8);await Tq.mkdir(S,{recursive:!0});try{new tB8.default(C).extractAllTo(g,!0),G1("Extracted zip to: %s",g)}catch(N){throw I.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let N=a5.join(g,"manifest.json"),L;try{let s=await Tq.readFile(N,"utf-8");L=JSON.parse(s)}catch(s){throw I.validation(`Failed to read manifest: ${s.message}`,"MANIFEST_READ_FAILED")}if(!p21.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");G1("Manifest valid: version=%d, entities=%d",L.version,L.entities.length);for(let s of L.entities){if(s.type==="folder"||s.type==="story")continue;let A8;if(s.type==="asset")A8=a5.join(g,"assets",`${s.id}.bin`);else if(s.type==="document"||s.type==="template")A8=a5.join(g,s.path);else{G1("Unknown entity type in import validation: %s",s.type);continue}try{await Tq.access(A8)}catch(v8){throw I.validation(`Missing file for manifest entry: ${s.path||s.id}`,"IMPORT_VALIDATION_FAILED")}}G1("All content files validated");let u=await G(v,M,{manifest:L,tempPath:g,storeCode:k}),p=u.counts.folders+u.counts.documents+u.counts.templates;return G1("Import complete: %d entities imported",p),u}finally{await P(g)}}})},$U8=Object.freeze({create:c21});var Q21=($)=>{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(h){console.error(`[CronJob] ${K} failed:`,h),Z={message:h.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()},R=()=>{if(J===null)return;clearInterval(J),J=null,z=!1,O=null},E=Object.freeze({start:k,stop:R,restart:()=>{R(),k()}});return{jobFns:M,controlFns:E}},IC=Object.freeze({create:Q21});var KU8=i6(S4(),1),l21=KU8.default("caw:cron:cleanup-edit-states"),qU8=async($)=>{let K=new Date(Date.now()-yJ).toISOString();try{let q=await $.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").innerJoin("entity_types as et","et.id","cfd.class_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)l21("Cleaned up %d expired edit locks (older than %d minutes)",W.length,yJ/60000);return{expired:W.length}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var i21=({db:$})=>{let{jobFns:K,controlFns:q}=IC.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await qU8($)}});return{job:Object.freeze(K),control:q}},YU8=Object.freeze({create:i21});var d21=({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:d21});import Ul8 from"node:process";import ZU8 from"node:process";import s21 from"node:os";import t21 from"node:fs";import a21 from"node:fs";import zU8 from"node:fs";var Ki;function n21(){try{return zU8.statSync("/.dockerenv"),!0}catch{return!1}}function o21(){try{return zU8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function qi(){if(Ki===void 0)Ki=n21()||o21();return Ki}var Yi,r21=()=>{try{return a21.statSync("/run/.containerenv"),!0}catch{return!1}};function xC(){if(Yi===void 0)Yi=r21()||qi();return Yi}var WU8=()=>{if(ZU8.platform!=="linux")return!1;if(s21.release().toLowerCase().includes("microsoft")){if(xC())return!1;return!0}try{return t21.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!xC():!1}catch{return!1}},HU8=ZU8.env.__IS_WSL_TEST__?WU8:WU8();import Ji from"node:process";function zi(){if(Ji.platform!=="linux")return!1;if(Ji.env.WAYLAND_DISPLAY)return!0;if(Ji.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function h$($){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 e21}from"node:url";var vP=($,K)=>{let q=Zi($z1($));if(typeof q!=="string")throw TypeError(`${K} must be a string or a file URL: ${q}.`);return q},$z1=($)=>Wi($)?$.toString():$,Wi=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,Zi=($)=>$ instanceof URL?e21($):$;var gC=($,K=[],q={})=>{let Y=vP($,"First argument"),[J,z]=h$(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(!h$(z))throw TypeError(`Last argument must be an options object: ${z}`);return[Y,W,z]};import{ChildProcess as Zz1}from"node:child_process";import{StringDecoder as Kz1}from"node:string_decoder";var{toString:OU8}=Object.prototype,XU8=($)=>OU8.call($)==="[object ArrayBuffer]",s$=($)=>OU8.call($)==="[object Uint8Array]",CY=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),qz1=new TextEncoder,PU8=($)=>qz1.encode($),Yz1=new TextDecoder,bC=($)=>Yz1.decode($),wU8=($,K)=>{return Jz1($,K).join("")},Jz1=($,K)=>{if(K==="utf8"&&$.every((z)=>typeof z==="string"))return $;let q=new Kz1(K),Y=$.map((z)=>typeof z==="string"?PU8(z):z).map((z)=>q.write(z)),J=q.end();return J===""?Y:[...Y,J]},Jv=($)=>{if($.length===1&&s$($[0]))return $[0];return Hi(zz1($))},zz1=($)=>$.map((K)=>typeof K==="string"?PU8(K):K),Hi=($)=>{let K=new Uint8Array(Wz1($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},Wz1=($)=>{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=Hz1({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,{}]},Hz1=({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}=Oz1(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)},Oz1=($,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+=Xz1[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
  `]),Xz1={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(h$($)&&(("stdout"in $)||("isMaxBuffer"in $)))return Pz1($);if($ instanceof Zz1||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`)},Pz1=({stdout:$})=>{if(typeof $==="string")return $;if(s$($))return bC($);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 MX1}from"node:child_process";import{debuglog as wz1}from"node:util";import Oi from"node:process";var r5=($)=>yC.includes($),yC=[Oi.stdin,Oi.stdout,Oi.stderr],t9=["stdin","stdout","stderr"],uC=($)=>t9[$]??`stdio[${$}]`;var MU8=($)=>{let K={...$};for(let q of wi)K[q]=Xi($,q);return K},Xi=($,K)=>{let q=Array.from({length:Tz1($)+1}),Y=Gz1($[K],q,K);return Mz1(Y,K)},Tz1=({stdio:$})=>Array.isArray($)?Math.max($.length,t9.length):t9.length,Gz1=($,K,q)=>h$($)?jz1($,K,q):K.fill($),jz1=($,K,q)=>{for(let Y of Object.keys($).sort(vz1))for(let J of Vz1(Y,q,K))K[J]=$[Y];return K},vz1=($,K)=>AU8($)<AU8(K)?1:-1,AU8=($)=>{if($==="stdout"||$==="stderr")return 0;return $==="all"?2:1},Vz1=($,K,q)=>{if($==="ipc")return[q.length-1];let Y=Pi($);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
  `,g8=E6+N8+O6;n6("runJob: Legacy format - appending output for turn %d",X8),await K.updateJobOutput(X,{id:O,output:g8})}else n6("runJob: New format - writing output to output-%d.md",k),await K.updateJobOutput(X,{id:O,output:O6});if(w6.tokensUsed!==null)await K.updateJobTokens(X,{id:O,tokensUsed:w6.tokensUsed});if(w6.durationMs!==null||w6.totalCostUsd!==null||w6.numTurns!==null||w6.sessionId!==null)await K.updateJobMetadata(X,{id:O,durationMs:w6.durationMs,totalCostUsd:w6.totalCostUsd,numTurns:w6.numTurns,sessionId:w6.sessionId});if(B8===0)await K.updateJobStatus(X,{id:O,status:"completed",exitCode:0});else{let f6=j6.trim()||`Process exited with code ${B8}`;await K.updateJobStatus(X,{id:O,status:"error",exitCode:B8,errorMessage:f6})}n6("runJob: Job %s completed with status %s",O,B8===0?"completed":"error")}catch(O6){n6("runJob: Failed to update job after process close: %s",O6.message);try{await K.updateJobStatus(X,{id:O,status:"error",errorMessage:`Database update failed: ${O6.message}`})}catch(w6){n6("runJob: Failed to set error status for job %s: %s",O,w6.message)}}}),n6("runJob: Process spawned, returning immediately")}})};var rD=Object.freeze({create:HT1});z4();var zi8=i6(S4(),1);import{spawn as OT1}from"child_process";import{join as XT1}from"path";var F4=zi8.default("caw:worktree-service"),PT1=($)=>{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},xP=($,K)=>{return new Promise((q)=>{let Y=OT1("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 xP(["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=PT1(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 xP(["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 xP(["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 xP(["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 xP(["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=XT1(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 xP(["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 Wi8=Object.freeze({create:wT1});z4();var Oi8=i6(S4(),1);var Zi8=Oi8.default("caw:entity-type-service"),Hi8=Object.freeze(["d","f","t","s"]),TT1=/^[a-zA-Z][a-zA-Z0-9_]*$/,GT1=({store:$})=>{return Object.freeze({createSubtype:async(q,Y,{code:J,subtype:z,name:W},Z)=>{Zi8("createSubtype called: code=%s, subtype=%s, name=%s",J,z,W),y.factory(!Hi8.includes(J),I.validation,`Invalid parent type code: ${J}. Must be one of: ${Hi8.join(", ")}`,"INVALID_PARENT_TYPE"),y.factory(!z||!TT1.test(z),I.validation,`Invalid subtype name: ${z}. Must start with letter, contain only alphanumeric and underscores`,"INVALID_SUBTYPE_NAME"),y.factory(!W||!W.trim(),I.validation,"Display name is required","MISSING_NAME");let H=await $.createEntityType(q,Y,{code:J,subtype:z,name:W});return Zi8("createSubtype succeeded: id=%d, code=%s, subtype=%s",H.id,J,z),H}})},Xi8=Object.freeze({create:GT1});var $3=md.default("caw:core"),sD=md.default("caw:story-job-tracking"),jT1=async({databaseFilepath:$,assetsDir:K,lazilyCreateDb:q,kyselyFactory:Y},J)=>{let W=await HP8.create({kyselyFactory:Y}).getDb($,q),Z=PP8.create(),H=gP8.create(),O=JU8.create({db:W}),X=Fl8.create(),P=new Map,w=async(a)=>{if(!a||!/^P\d+$/.test(a))y.factory(!0,I.notFound,`Project not found: ${a}`,"PROJECT_NOT_FOUND");let n=parseInt(a.slice(1),10);y.factory(n<1||n>Number.MAX_SAFE_INTEGER,I.notFound,`Project not found: ${a}`,"PROJECT_NOT_FOUND");let Q=await Z.readProjectByObjectId(W,null,a);return y.factory(!Q,I.notFound,`Project not found: ${a}`,"PROJECT_NOT_FOUND"),{projCtx:Q.getObjectId(),projectPath:Q.getPath(),authCtx:null}},T=async(a)=>{let n=P.get(a);if(n)return n;let Q=await H.readRootStoreForProject(W,{},a),q8=bP8.create({store:Q}),_8=uP8.create({store:Q}),i8=oj8.create(),$6=nj8.create({store:Q,folderService:q8,documentHooks:i8,fieldService:_8}),X6=rj8.create({store:Q,documentService:$6});i8.setIncludeResolver(X6,Q),$6.setIncludeResolver(X6);let k6=zA8.create(),F6=Ql8.create({store:Q,fieldService:_8}),y6=nl8.create({store:Q,assetsDir:K}),w1=el8.create({store:Q,fieldService:_8}),h4=Wi8.create(),T1=Xi8.create({store:Q}),y7=TB.create({db:W,folderService:q8,fieldService:_8,documentService:$6,templateService:k6,projectService:null,clipboardService:X,storyService:F6,assetService:y6,jobService:w1,includeResolver:X6,worktreeService:h4,entityTypeService:T1}),k$=VB8.create({store:Q,folderService:q8,documentService:$6,templateService:k6,storyService:F6,assetService:y6,assetsDir:K}),Lq=$U8.create({store:Q,folderService:q8,documentService:$6,templateService:k6,storyService:F6,fieldService:_8,assetService:y6,assetsDir:K}),uZ={folderService:q8,fieldService:_8,documentService:$6,templateService:k6,transactionService:y7,exportService:k$,importService:Lq,rootStore:Q,storyService:F6,assetService:y6,jobService:w1,worktreeService:h4,includeResolver:X6};return w1.subscribeAll({onJOB_STARTED:({id:jK})=>{setImmediate(async()=>{try{let $9=(await w1.getJob(W,{},{id:jK}))?.fields?.objectId;if($9&&$9.startsWith("As"))sD("JOB_STARTED: job=%s, objectId=%s - incrementing activeJobCount",jK,$9),await y7.incrementStoryJobCount({},{id:$9})}catch(QY){sD("Error handling JOB_STARTED for job %s: %s",jK,QY.message)}})},onJOB_COMPLETED:({id:jK})=>{setImmediate(async()=>{try{let $9=(await w1.getJob(W,{},{id:jK}))?.fields?.objectId;if($9&&$9.startsWith("As"))sD("JOB_COMPLETED: job=%s, objectId=%s - decrementing activeJobCount",jK,$9),await y7.decrementStoryJobCount({},{id:$9})}catch(QY){sD("Error handling JOB_COMPLETED for job %s: %s",jK,QY.message)}})}}),P.set(a,uZ),uZ},G=async()=>{return await Zf.create({projectStore:Z,storeStore:H}).listProjects(W)},j=async(a)=>{if(!a||!/^P\d+$/.test(a))return null;let n=parseInt(a.slice(1),10);if(n<1||n>Number.MAX_SAFE_INTEGER)return null;return await Z.readProjectByObjectId(W,null,a)},v=async(a,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6})=>{let k6=await w(a),{transactionService:F6}=await T(k6.projCtx);return await F6.createFolder(k6,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6})},M=async(a,{id:n,name:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.renameFolder(q8,{id:n,name:Q})},f=async(a,{id:n,parentId:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.moveFolder(q8,{id:n,parentId:Q})},k=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteFolder(Q,{id:n})},R=async(a,{id:n})=>{let Q=await w(a),{folderService:q8}=await T(Q.projCtx);return await q8.readFolder(W,Q,{id:n})},C=async(a,{store:n,path:Q,type:q8})=>{let _8=await w(a),{folderService:i8}=await T(_8.projCtx);return await i8.getFolderByPath(W,_8,{path:Q,type:q8,storeCode:n})},E=async(a,{id:n})=>{let Q=await w(a);if(!e6.parseId(n))throw I.notFound(`Invalid entity ID format: ${n}`,"NOT_FOUND");let{rootStore:_8}=await T(Q.projCtx);return{root:await v4.getRootForEntity(W,Q,n,_8)}},h=async(a,{folderId:n,store:Q,type:q8})=>{let _8=await w(a);$3("listFolderContents: Listing contents for project %s: folderId=%s, store=%s, type=%s",_8.projCtx,n||"root",Q,q8);let{folderService:i8,documentService:$6,rootStore:X6}=await T(_8.projCtx),k6=q8;if(n&&!q8)k6=await g(W,X6,_8,n,Q),$3("listFolderContents: Inferred type %s from folder %s",k6,n);if(!k6||k6!=="d"&&k6!=="t")k6="d",$3('listFolderContents: Defaulting effectiveType to "d"');let F6=await i8.listFolderContents(W,_8,{folderId:n,storeCode:Q,type:k6}),y6=n;if((n===null||n===void 0)&&(k6==="d"||k6==="t"))y6=(await X6.readRootFolderForType(W,_8,k6,Q)).getObjectId(),$3("listFolderContents: Resolved root folder for type %s: %s",k6,y6);$3("listFolderContents: Querying content with parentId=%s, store=%s, type=%s",y6,Q,k6);let w1=await $6.listDocuments(W,_8,{parentId:y6,storeCode:Q,type:k6});return $3("listFolderContents: Found %d folders, %d documents",F6?.length||0,w1?.length||0),{folders:F6,documents:w1}},g=async(a,n,Q,q8,_8)=>{let i8=e6.parseId(q8);if(i8&&i8.typeCode==="s")return"d";let $6=await n.readFolder(a,Q,{id:q8});if(!$6)return null;let X6=await a.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","=",q8).executeTakeFirst();if(X6?.entity_type_code==="f"&&X6?.entity_type_subtype==="root_d")return"d";if(X6?.entity_type_code==="f"&&X6?.entity_type_subtype==="root_t")return"t";if(X6?.entity_type_code==="f"&&(X6?.entity_type_subtype==="root_s"||X6?.entity_type_subtype==="tasks"))return"d";if(X6?.entity_type_code==="s")return"d";let k6=await n.readRootFolderForType(a,Q,"d",_8),F6=await n.readRootFolderForType(a,Q,"t",_8),y6=$6;while(y6&&y6.getParentId()!==null){let w1=await n.readFolder(a,Q,{id:y6.getParentId()});if(!w1)break;y6=w1}if(y6&&y6.getObjectId()===k6?.getObjectId())return"d";else if(y6&&y6.getObjectId()===F6?.getObjectId())return"t";return null},S=async(a)=>{let n=await w(a),{rootStore:Q}=await T(n.projCtx);return Q},N=async(a)=>{let n=await w(a),{storyService:Q}=await T(n.projCtx);return Q},L=async(a)=>{let n=await w(a),{jobService:Q}=await T(n.projCtx);return Q},u=async({name:a,path:n})=>{let Q=Zf.create({projectStore:Z,storeStore:H}),q8=TB.create({db:W,folderService:null,projectService:Q}),_8={};return await q8.createProject(_8,{name:a,path:n})},p=(a)=>{return Zf.create({projectStore:Z,storeStore:H}).validateProjectPath(a)},s=(a)=>{P.delete(a)},A8=async(a,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6,content:k6,tree:F6,subtype:y6,fields:w1})=>{let h4=await w(a);$3("createDocument: Creating document in project %s: mode=%s, path=%s, store=%s, type=%s, subtype=%s",h4.projCtx,n,q8,Q,X6,y6);let{transactionService:T1}=await T(h4.projCtx),y7=await T1.createDocument(h4,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6,content:k6,tree:F6,subtype:y6,fields:w1});return $3("createDocument: Document created: id=%s, path=%s",y7.getObjectId(),y7.getPath()),y7},v8=async(a,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,content:X6,subtype:k6})=>{let F6=await w(a);$3("createTemplate: Creating template in project %s: mode=%s, path=%s, store=%s",F6.projCtx,n,q8,Q);let{transactionService:y6}=await T(F6.projCtx),w1=await y6.createTemplate(F6,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,content:X6,subtype:k6});return $3("createTemplate: Template created: id=%s, path=%s",w1.getObjectId(),w1.getPath()),w1},c8=async(a,{id:n,resolveIncludes:Q=!0})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.readDocument(W,q8,{id:n,resolveIncludes:Q})},z6=async(a,{path:n,store:Q,type:q8,resolveIncludes:_8=!0})=>{let i8=await w(a),{documentService:$6,includeResolver:X6}=await T(i8.projCtx),k6=await $6.readDocumentByPath(W,i8,{path:n,type:q8,storeCode:Q});if(!k6)return null;let{entity:F6,ancestorFolderIds:y6}=k6,w1=null;if(_8&&X6&&F6.getPublishedContent())w1=await X6.resolve(W,i8,F6.getPublishedContent(),F6.getObjectId());return{entity:F6,ancestorFolderIds:y6,resolvedContent:w1}},u8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8,includeResolver:_8}=await T(Q.projCtx),{entity:i8}=await q8.readDocument(W,Q,{id:n,resolveIncludes:!1}),$6=i8.getDraftContent()||i8.getPublishedContent();if(!$6)return[];return await _8.checkIncludes(W,Q,$6,n)},I8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8,includeResolver:_8,rootStore:i8}=await T(Q.projCtx),{entity:$6}=await q8.readDocument(W,Q,{id:n,resolveIncludes:!1}),X6=$6.getDraftContent()||$6.getPublishedContent();if(!X6)return{updated:[]};let{content:k6,updated:F6}=await _8.updateIncludes(W,Q,X6,n);if(F6.length>0)await i8.saveDraft(W,Q,{id:n,content:k6});return{updated:F6}},B8=async(a,{id:n,path:Q,parentId:q8,type:_8})=>{let i8=await w(a),{transactionService:$6}=await T(i8.projCtx);return await $6.updateDocumentPath(i8,{id:n,path:Q,parentId:q8,type:_8})},q6=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteDocument(Q,{id:n})},j6=async(a,{id:n,subtype:Q,fields:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.specialiseDocument(_8,{id:n,subtype:Q,fields:q8})},O6=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.generaliseDocument(Q,{id:n})},w6=async(a,{id:n,content:Q,sessionId:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.saveDraft(_8,{id:n,content:Q,sessionId:q8})},f6=async(a,{id:n})=>{let Q=await w(a),{documentService:q8}=await T(Q.projCtx);return await q8.readDraft(W,Q,{id:n})},E6=async(a,{id:n,sessionId:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.publishDocument(q8,{id:n,sessionId:Q})},P8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.discardDraft(Q,{id:n})},X8=async(a,{id:n,sessionId:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.setEditState(q8,{id:n,sessionId:Q})},N8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.clearEditState(Q,{id:n})},g8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8}=await T(Q.projCtx);return await q8.getEditState(W,Q,{id:n})},F8=async(a,{id:n,versionNumber:Q})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.readVersion(W,q8,{id:n,versionNumber:Q})},l8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8}=await T(Q.projCtx);return await q8.getVersions(W,Q,{id:n})},Y6=async(a,{id:n,operation:Q,preview:q8,ignoreContent:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.editDocument($6,{id:n,operation:Q,preview:q8,ignoreContent:_8,sessionId:i8})},E8=async(a,{id:n,operations:Q,preview:q8,ignoreContent:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.batchEditDocument($6,{id:n,operations:Q,preview:q8,ignoreContent:_8,sessionId:i8})},p8=async(a,{id:n,lineNumber:Q,checked:q8,includeDraft:_8,preview:i8,sessionId:$6})=>{let X6=await w(a),{transactionService:k6}=await T(X6.projCtx);return await k6.checkChecklistItem(X6,{id:n,lineNumber:Q,checked:q8,includeDraft:_8,preview:i8,sessionId:$6})},n8=async(a,{id:n,lineNumber:Q,includeDraft:q8,preview:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.toggleChecklistItem($6,{id:n,lineNumber:Q,includeDraft:q8,preview:_8,sessionId:i8})},e8=async(a,{id:n,items:Q,includeDraft:q8,preview:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.batchCheckChecklistItems($6,{id:n,items:Q,includeDraft:q8,preview:_8,sessionId:i8})},W6=async(a,{id:n,startLine:Q,endLine:q8,includeDraft:_8})=>{let i8=await w(a),{documentService:$6}=await T(i8.projCtx);return await $6.readLines(W,i8,{id:n,startLine:Q,endLine:q8,includeDraft:_8})},N6=async(a,{id:n,startMarker:Q,endMarker:q8,inclusive:_8,includeDraft:i8})=>{let $6=await w(a),{documentService:X6}=await T($6.projCtx);return await X6.readBetweenMarkers(W,$6,{id:n,startMarker:Q,endMarker:q8,inclusive:_8,includeDraft:i8})},g6=async(a,{id:n,includeDraft:Q})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.getDocumentStats(W,q8,{id:n,includeDraft:Q})},$1=async(a,{id:n,maxDepth:Q,includeDraft:q8})=>{let _8=await w(a),{documentService:i8}=await T(_8.projCtx);return await i8.readHeadings(W,_8,{id:n,maxDepth:Q,includeDraft:q8})},r1=async(a,{id:n,heading:Q,includeHeading:q8,includeDraft:_8})=>{let i8=await w(a),{documentService:$6}=await T(i8.projCtx);return await $6.readSection(W,i8,{id:n,heading:Q,includeHeading:q8,includeDraft:_8})},m8=async(a,{id:n,includeDraft:Q})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.readFrontmatter(W,q8,{id:n,includeDraft:Q})},i=async(a,{id:n,section:Q,includeDraft:q8})=>{let _8=await w(a),{documentService:i8}=await T(_8.projCtx);return await i8.readChecklist(W,_8,{id:n,section:Q,includeDraft:q8})},l=async(a,{folderId:n,store:Q,type:q8="d"})=>{let _8=await w(a),{documentService:i8}=await T(_8.projCtx);return await i8.listDocuments(W,_8,{parentId:n,storeCode:Q,type:q8})},c=async(a,{id:n,params:Q,target:q8,targetOptions:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6,jobService:k6,rootStore:F6}=await T($6.projCtx),y6=await X6.renderTemplate($6,{id:n,params:Q,target:q8,targetOptions:_8,sessionId:i8});if(y6.target==="job"&&y6.jobId){let w1=rD.create({jobService:k6,transactionService:X6,store:F6,db:W,projectPath:$6.projectPath});setImmediate(async()=>{try{await w1.runJob(y6.jobId,$6)}catch(h4){$3("JobRunner error for job %s: %s",y6.jobId,h4.message);try{await X6.updateJobStatus($6,{id:y6.jobId,status:"error",errorMessage:h4.message})}catch(T1){$3("Failed to update job %s status to error: %s",y6.jobId,T1.message)}}})}return y6},W8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8,templateService:_8}=await T(Q.projCtx),{entity:i8}=await q8.readDocument(W,Q,{id:n});if(!i8.getPublishedContent())return{parameters:{},detectedVariables:[],target:null,targetPath:null};return _8.extractTemplateParameters(i8.getPublishedContent())},F=async(a,{typeCode:n,store:Q="A"})=>{let q8=await w(a),{rootStore:_8}=await T(q8.projCtx);return{templates:(await _8.findEntitiesByFieldValue(W,q8,{storeCode:Q,typeCode:"t",subtype:"prompt",fieldName:"associatedType",fieldValue:n})).map(($6)=>({id:$6.object_id,name:$6.name,path:$6.path,subtype:$6.subtype}))}},H8=async(a,{store:n,ownerEntityId:Q,ownerEntityTypeCode:q8,ownerEntityTypeSubtype:_8,name:i8,label:$6,description:X6,primitiveType:k6,required:F6,multiplicity:y6,isSystem:w1})=>{let h4=await w(a),{transactionService:T1}=await T(h4.projCtx);return await T1.createFieldDefinition(h4,{store:n,ownerEntityId:Q,ownerEntityTypeCode:q8,ownerEntityTypeSubtype:_8,name:i8,label:$6,description:X6,primitiveType:k6,required:F6,multiplicity:y6,isSystem:w1})},o=async(a,{id:n})=>{let Q=await w(a),{fieldService:q8}=await T(Q.projCtx);return await q8.readFieldDefinition(W,Q,{id:n})},G8=async(a,{store:n,ownerEntityId:Q,includeSystem:q8})=>{let _8=await w(a),{fieldService:i8}=await T(_8.projCtx);return await i8.getFieldDefinitionsForOwner(W,_8,{store:n,ownerEntityId:Q,includeSystem:q8})},Z8=async(a,{store:n,code:Q,subtype:q8})=>{let _8=await w(a),{fieldService:i8}=await T(_8.projCtx);return await i8.getFieldDefinitionsForType(W,_8,{store:n,code:Q,subtype:q8})},f8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteFieldDefinition(Q,{id:n})},S8=async(a,{id:n})=>{let Q=await w(a),q8=e6.parseId(n);if(!q8)throw Error(`Cannot parse entity ID: ${n}`);let{rootStore:_8}=await T(Q.projCtx),{typeCode:i8}=q8;switch(i8){case"f":return await _8.readFolder(W,Q,{id:n});case"d":case"t":return await _8.readContent(W,Q,{id:n});case"s":return await _8.readStory(W,Q,{id:n});case"j":return await _8.readJob(W,Q,{id:n});default:throw Error(`Unsupported entity type code: ${i8}`)}},Q8=async(a,{entityId:n})=>{let Q;try{Q=await S8(a,{id:n})}catch(q8){if(q8.code==="PROJECT_NOT_FOUND")throw q8;return{}}if(!Q)return{};return Q.getFields()},C6=async(a,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.addFieldToEntity($6,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})},$$=async(a,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.updateFieldValue($6,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})},T7=async(a,{entityId:n,fieldDefinitionId:Q,fieldName:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.removeFieldFromEntity(_8,{entityId:n,fieldDefinitionId:Q,fieldName:q8})},g7=async(a,{code:n,subtype:Q,name:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.createSubtype(_8,{code:n,subtype:Q,name:q8})},b7=async(a)=>{let n=await w(a),{exportService:Q}=await T(n.projCtx);return await Q.listExports(W,n,{projectPath:n.projectPath})},L3=async(a,{store:n="A"}={})=>{let Q=await w(a),{exportService:q8}=await T(Q.projCtx);return await q8.exportPreview(W,Q,{storeCode:n})},e$=async(a,{store:n="A",confirm:Q=!1}={})=>{let q8=await w(a),{exportService:_8}=await T(q8.projCtx);if(!Q)return await _8.exportPreview(W,q8,{storeCode:n});return await _8.exportDocuments(W,q8,{storeCode:n,projectPath:q8.projectPath})},GK=async(a,{filename:n,store:Q="A"})=>{let q8=await w(a);y.factory(!n,I.validation,"filename is required","FILENAME_REQUIRED");let{importService:_8}=await T(q8.projCtx);return await _8.importDocuments(W,q8,{filename:n,storeCode:Q,projectPath:q8.projectPath})},Z4=async(a,{name:n,store:Q,state:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.createStory(_8,{name:n,storeCode:Q,state:q8})},R8=async(a,{store:n})=>{let Q=await w(a),{storyService:q8}=await T(Q.projCtx);return await q8.listStories(W,Q,{store:n})},C8=async(a,{id:n})=>{let Q=await w(a),{storyService:q8}=await T(Q.projCtx);return await q8.getStory(W,Q,{id:n})},z8=async(a,{id:n,state:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.updateStoryState(q8,{id:n,state:Q})},b8=async(a,{id:n,name:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.renameStory(q8,{id:n,name:Q})},L8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteStory(Q,{id:n})},y8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.incrementStoryJobCount(Q,{id:n})},G6=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.decrementStoryJobCount(Q,{id:n})},x=async(a,{store:n,buffer:Q,mimeType:q8,originalFilename:_8,widthPx:i8,heightPx:$6,displayWidth:X6,displayHeight:k6})=>{let F6=await w(a),{transactionService:y6}=await T(F6.projCtx);return await y6.createAsset(F6,{store:n,buffer:Q,mimeType:q8,originalFilename:_8,widthPx:i8,heightPx:$6,displayWidth:X6,displayHeight:k6})},T8=async(a,{id:n})=>{let Q=await w(a),{assetService:q8}=await T(Q.projCtx);return await q8.readAsset(W,Q,{id:n})},m=async(a,{id:n})=>{let Q=await w(a),{assetService:q8}=await T(Q.projCtx);return await q8.readAssetBinary(W,Q,{id:n})},$8=async(a,{store:n})=>{let Q=await w(a),{assetService:q8}=await T(Q.projCtx);return await q8.listAssets(W,Q,{store:n})},d=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteAsset(Q,{id:n})},r=async(a,{name:n,agent:Q,model:q8,prompt:_8,store:i8="A",workingDirectory:$6,objectId:X6,streaming:k6})=>{let F6=await w(a),{transactionService:y6,jobService:w1,rootStore:h4}=await T(F6.projCtx),T1=await y6.createJob(F6,{store:i8,name:n,agent:Q,model:q8,prompt:_8,workingDirectory:$6,objectId:X6,streaming:k6}),y7=rD.create({jobService:w1,transactionService:y6,store:h4,db:W,projectPath:F6.projectPath});return setImmediate(async()=>{try{await y7.runJob(T1.id,F6)}catch(k$){$3("JobRunner error for job %s: %s",T1.id,k$.message);try{await y6.updateJobStatus(F6,{id:T1.id,status:"error",errorMessage:k$.message})}catch(Lq){$3("Failed to update job %s status to error: %s",T1.id,Lq.message)}}}),T1},t=async(a,{store:n="A",status:Q})=>{let q8=await w(a),{jobService:_8}=await T(q8.projCtx);return await _8.listJobs(W,q8,{store:n,status:Q})},e=async(a,{id:n})=>{let Q=await w(a),{jobService:q8}=await T(Q.projCtx);return await q8.getJob(W,Q,{id:n})},w8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteJob(Q,{id:n})},j8=async(a,{id:n,prompt:Q,model:q8})=>{let _8=await w(a),{transactionService:i8,jobService:$6,rootStore:X6}=await T(_8.projCtx),k6=await i8.continueJob(_8,{id:n,prompt:Q,model:q8}),F6=rD.create({jobService:$6,transactionService:i8,store:X6,db:W,projectPath:_8.projectPath});return setImmediate(async()=>{try{await F6.runJob(k6.id,_8)}catch(y6){$3("JobRunner error for job %s: %s",k6.id,y6.message);try{await i8.updateJobStatus(_8,{id:k6.id,status:"error",errorMessage:y6.message})}catch(w1){$3("Failed to update job %s status to error: %s",k6.id,w1.message)}}}),k6},M8=async(a,{id:n,name:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.renameJob(q8,{id:n,name:Q})},h8=async(a,{id:n})=>{let Q=await w(a),{jobService:q8}=await T(Q.projCtx);return await q8.getProcessStatus(W,Q,{id:n})},t8=async(a)=>{let n=await w(a),{worktreeService:Q}=await T(n.projCtx);return await Q.listWorktrees({projectPath:n.projectPath})},o8=async(a,{branch:n,baseBranch:Q})=>{let q8=await w(a),{worktreeService:_8}=await T(q8.projCtx);return await _8.createWorktree({projectPath:q8.projectPath,branch:n,baseBranch:Q})};if(J)J({db:W,projectStore:Z,storeStore:H});return Object.freeze({getProjects:G,getProjectByObjectId:j,createProject:u,validateProjectPath:p,createFolder:v,renameFolder:M,moveFolder:f,deleteFolder:k,getFolder:R,getFolderByPath:C,getRootForEntity:E,listFolderContents:h,getRootStore:S,getStoryService:N,getJobService:L,evictProject:s,getDb:()=>W,createDocument:A8,createTemplate:v8,readDocument:c8,readDocumentByPath:z6,checkIncludes:u8,updateIncludes:I8,updateDocumentPath:B8,deleteDocument:q6,specialiseDocument:j6,generaliseDocument:O6,saveDraft:w6,readDraft:f6,publishDocument:E6,discardDraft:P8,setEditState:X8,clearEditState:N8,getEditState:g8,readVersion:F8,getVersions:l8,editDocument:Y6,batchEditDocument:E8,checkChecklistItem:p8,toggleChecklistItem:n8,batchCheckChecklistItems:e8,listDocuments:l,readLines:W6,readBetweenMarkers:N6,getDocumentStats:g6,readHeadings:$1,readSection:r1,readFrontmatter:m8,readChecklist:i,renderTemplate:c,getTemplateParameters:W8,listTemplatesByType:F,createFieldDefinition:H8,readFieldDefinition:o,getFieldDefinitions:G8,getTypeFields:Z8,deleteFieldDefinition:f8,getFields:Q8,readEntity:S8,addFieldToEntity:C6,updateFieldValue:$$,removeFieldFromEntity:T7,createSubtype:g7,listExports:b7,exportPreview:L3,exportDocuments:e$,importDocuments:GK,createStory:Z4,listStories:R8,getStory:C8,renameStory:b8,updateStoryState:z8,deleteStory:L8,incrementStoryJobCount:y8,decrementStoryJobCount:G6,createAsset:x,readAsset:T8,readAssetBinary:m,listAssets:$8,deleteAsset:d,createJob:r,listJobs:t,getJob:e,deleteJob:w8,continueJob:j8,renameJob:M8,getProcessStatus:h8,listWorktrees:t8,createWorktree:o8,listCrons:()=>O.list(),startCron:(a)=>O.start(a),stopCron:(a)=>O.stop(a),restartCron:(a)=>O.restart(a),startAllCrons:()=>O.startAll(),stopAllCrons:()=>O.stopAll(),registerCronJob:(a,n)=>{O.register(a,n)}})},Pi8=Object.freeze({create:jT1});var wi8=i6(_I(),1);import{join as vT1}from"path";var VT1=($,{staticPath:K})=>{return $.use(wi8.default.static(K)),$.get("*",(q,Y,J)=>{if(q.path.startsWith("/api")||q.path==="/health")return J();Y.sendFile(vT1(K,"index.html"))}),Object.freeze({})},Ti8=Object.freeze({create:VT1});var Gi8=i6(S4(),1),tD=Gi8.default("caw:api:projects"),AT1=($,{core:K})=>{return $.get("/api/projects",async(q,Y)=>{try{tD("GET /api/projects - Fetching projects list");let J=await K.getProjects();tD("GET /api/projects - Returning %d projects",J.length),J.forEach((z)=>{tD(" - %s (%s) with %d children",z.name,z.objectId,z.children?.length||0)}),Y.json(J)}catch(J){tD("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({})},ji8=Object.freeze({create:AT1});var Vi8=i6(S4(),1);var MT1=($,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})},M6=MT1;var $5=Vi8.default("caw:api:folders"),vi8=($)=>({folders:$.folders.map((K)=>K.toJSON()),documents:$.documents.map((K)=>K.toJSON())}),_T1=($,{core:K})=>{return $.get("/api/p/:projectId/folders/contents",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,type:W}=q.query;$5("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=vi8(Z);$5("GET /api/p/%s/folders/contents - Found %d folders, %d documents",J,H.folders.length,H.documents.length),Y.json(H)}catch(J){$5("GET /api/p/%s/folders/contents - Error: %s",q.params.projectId,J.message),M6(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){M6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/contents",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{type:W}=q.query;$5("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=vi8(Z);$5("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){$5("GET /api/p/%s/folders/%s/contents - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/root",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;$5("GET /api/p/%s/folders/%s/root - Getting root for entity",J,z);let W=await K.getRootForEntity(J,{id:z});$5("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){$5("GET /api/p/%s/folders/%s/root - Error: %s",q.params.projectId,q.params.id,J.message),M6(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){M6(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";$5("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});$5("POST /api/p/%s/folders - Folder created: id=%s, path=%s",J,j.getObjectId(),j.getPath()),Y.status(201).json(j.toJSON())}catch(J){$5("POST /api/p/%s/folders - Error: %s",q.params.projectId,J.message),M6(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){M6(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){M6(J,Y)}}),Object.freeze({})},Ai8=Object.freeze({create:_T1});var kT1=($,{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){M6(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){M6(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){M6(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){M6(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){M6(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;if((await K.getFields(J,{entityId:z}))?.[W])await K.updateFieldValue(J,X);else await K.addFieldToEntity(J,X);let T=await K.readEntity(J,{id:z});Y.json(T.toJSON())}catch(J){M6(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){M6(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.removeFieldFromEntity(J,H),Y.status(204).send()}catch(J){M6(J,Y)}}),Object.freeze({})},Mi8=Object.freeze({create:kT1});var _i8=i6(S4(),1);var K5=_i8.default("caw:api:documents"),fT1=($,{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";K5("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();K5("POST /api/p/%s/documents - Document created: id=%s, path=%s",J,k.id,k.path),Y.status(201).json(k)}catch(J){K5("POST /api/p/%s/documents - Error: %s",q.params.projectId,J.message),M6(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";K5("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();K5("POST /api/p/%s/templates - Template created: id=%s, path=%s",J,f.id,f.path),Y.status(201).json(f)}catch(J){K5("POST /api/p/%s/templates - Error: %s",q.params.projectId,J.message),M6(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){M6(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){M6(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){M6(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:R}=FK.getParameters(Z),{body:C}=FK.parseFrontMatter(Z),E=Array.from(FK.extractVariables(C));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:R,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){M6(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){M6(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){M6(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=e6.getTypeFromId(z),O=await K.updateDocumentPath(J,{id:z,path:W,parentId:Z,type:H});Y.json(O.toJSON())}catch(J){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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;K5("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();K5("POST /api/p/%s/documents/%s/specialise - Success: subtype=%s",J,z,O.subtype),Y.json(O)}catch(J){K5("POST /api/p/%s/documents/%s/specialise - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/generalise",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;K5("POST /api/p/%s/documents/%s/generalise",J,z);let Z=(await K.generaliseDocument(J,{id:z})).entity.toJSON();K5("POST /api/p/%s/documents/%s/generalise - Success: subtype=%s",J,z,Z.subtype),Y.json(Z)}catch(J){K5("POST /api/p/%s/documents/%s/generalise - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),Object.freeze({})},ki8=Object.freeze({create:fT1});var fi8=i6(S4(),1);var f9=fi8.default("caw:api:export"),NT1=($,{core:K})=>{return $.get("/api/p/:projectId/exports",async(q,Y)=>{try{let{projectId:J}=q.params;f9("GET /api/p/%s/exports - Listing export files",J);let z=await K.listExports(J);f9("GET /api/p/%s/exports - Found %d export files",J,z.length),Y.json({ok:!0,exports:z})}catch(J){f9("GET /api/p/:projectId/exports - Error: %s",J.message),M6(J,Y)}}),$.get("/api/p/:projectId/export/preview",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z}=q.query;f9("GET /api/p/%s/export/preview - Previewing export: store=%s",J,z);let W=await K.exportPreview(J,{store:z});f9("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){f9("GET /api/p/:projectId/export/preview - Error: %s",J.message),M6(J,Y)}}),$.post("/api/p/:projectId/export",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,confirm:W}=q.body;f9("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)f9("POST /api/p/%s/export - Export complete: %s",J,Z.filename);else f9("POST /api/p/%s/export - Preview returned (confirm=false)",J);Y.json(Z)}catch(J){f9("POST /api/p/:projectId/export - Error: %s",J.message),M6(J,Y)}}),$.post("/api/p/:projectId/import",async(q,Y)=>{try{let{projectId:J}=q.params,{filename:z,store:W}=q.body;f9("POST /api/p/%s/import - Import request: filename=%s, store=%s",J,z,W);let Z=await K.importDocuments(J,{filename:z,store:W});f9("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){f9("POST /api/p/:projectId/import - Error: %s",J.message),M6(J,Y)}}),Object.freeze({})},Ni8=Object.freeze({create:NT1});var Ri8=i6(S4(),1);var q5=Ri8.default("caw:api:stories"),RT1=($,{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;q5("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){q5("POST /api/p/%s/stories - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/stories",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query;q5("GET /api/p/%s/stories - Listing stories: store=%s",J,z);let W=await K.listStories(J,{store:z});Y.json(W)}catch(J){q5("GET /api/p/%s/stories - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;q5("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){q5("GET /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(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"});q5("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){q5("PATCH /api/p/%s/stories/%s/state - Error: %s",q.params.projectId,q.params.id,J.message),M6(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"});q5("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){q5("PATCH /api/p/%s/stories/%s/name - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.delete("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;q5("DELETE /api/p/%s/stories/%s - Deleting story",J,z);let W=await K.deleteStory(J,{id:z});Y.json(W)}catch(J){q5("DELETE /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),Object.freeze({})},Ci8=Object.freeze({create:RT1});var an8=i6(S4(),1),Ah=i6(nn8(),1);var _q=an8.default("caw:api:assets"),on8=["image/png","image/jpeg","image/gif","image/webp"],wv1=Ah.default({storage:Ah.default.memoryStorage(),limits:{fileSize:10485760},fileFilter:($,K,q)=>{if(on8.includes(K.mimetype))q(null,!0);else q(Error(`Unsupported MIME type: ${K.mimetype}. Allowed: ${on8.join(", ")}`))}}),Tv1=($,{core:K})=>{return $.post("/api/p/:projectId/assets",wv1.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),M6(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),M6(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),M6(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),M6(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),M6(J,Y)}}),$.use("/api/p/:projectId/assets",(q,Y,J,z)=>{if(q instanceof Ah.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({})},rn8=Object.freeze({create:Tv1});var sn8=i6(S4(),1);var z5=sn8.default("caw:api:jobs"),Gv1=($,{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;z5("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){z5("POST /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/jobs",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A",status:W}=q.query;z5("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){z5("GET /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;z5("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){z5("GET /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(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;z5("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){z5("POST /api/p/%s/jobs/%s/continue - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id/process-status",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;z5("GET /api/p/%s/jobs/%s/process-status",J,z);let W=await K.getProcessStatus(J,{id:z});Y.json(W)}catch(J){z5("GET /api/p/%s/jobs/%s/process-status - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.patch("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W}=q.body;z5("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){z5("PATCH /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),Object.freeze({})},tn8=Object.freeze({create:Gv1});var en8=i6(S4(),1);var FP=en8.default("caw:api:worktrees"),jv1=($,{core:K})=>{return $.get("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params;FP("GET /api/p/%s/worktrees - Listing worktrees",J);let z=await K.listWorktrees(J);FP("GET /api/p/%s/worktrees - Found %d worktrees, isGitProject=%s",J,z.worktrees.length,z.isGitProject),Y.json(z)}catch(J){FP("GET /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.post("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params,{branch:z,baseBranch:W}=q.body;FP("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});FP("POST /api/p/%s/worktrees - Created worktree at %s for branch %s",J,Z.path,Z.branch),Y.status(201).json(Z)}catch(J){FP("POST /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),Object.freeze({})},$o8=Object.freeze({create:jv1});var Ko8=i6(S4(),1);var VZ=Ko8.default("caw:api:events"),vv1=($,{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},xP=($,K)=>{return new Promise((q)=>{let Y=OT1("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 xP(["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=PT1(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 xP(["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 xP(["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 xP(["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 xP(["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=XT1(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 xP(["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 Wi8=Object.freeze({create:wT1});z4();var Oi8=i6(S4(),1);var Zi8=Oi8.default("caw:entity-type-service"),Hi8=Object.freeze(["d","f","t","s"]),TT1=/^[a-zA-Z][a-zA-Z0-9_]*$/,GT1=({store:$})=>{return Object.freeze({createSubtype:async(q,Y,{code:J,subtype:z,name:W},Z)=>{Zi8("createSubtype called: code=%s, subtype=%s, name=%s",J,z,W),y.factory(!Hi8.includes(J),I.validation,`Invalid parent type code: ${J}. Must be one of: ${Hi8.join(", ")}`,"INVALID_PARENT_TYPE"),y.factory(!z||!TT1.test(z),I.validation,`Invalid subtype name: ${z}. Must start with letter, contain only alphanumeric and underscores`,"INVALID_SUBTYPE_NAME"),y.factory(!W||!W.trim(),I.validation,"Display name is required","MISSING_NAME");let H=await $.createEntityType(q,Y,{code:J,subtype:z,name:W});return Zi8("createSubtype succeeded: id=%d, code=%s, subtype=%s",H.id,J,z),H}})},Xi8=Object.freeze({create:GT1});var $3=md.default("caw:core"),sD=md.default("caw:story-job-tracking"),jT1=async({databaseFilepath:$,assetsDir:K,lazilyCreateDb:q,kyselyFactory:Y},J)=>{let W=await HP8.create({kyselyFactory:Y}).getDb($,q),Z=PP8.create(),H=gP8.create(),O=JU8.create({db:W}),X=Fl8.create(),P=new Map,w=async(a)=>{if(!a||!/^P\d+$/.test(a))y.factory(!0,I.notFound,`Project not found: ${a}`,"PROJECT_NOT_FOUND");let n=parseInt(a.slice(1),10);y.factory(n<1||n>Number.MAX_SAFE_INTEGER,I.notFound,`Project not found: ${a}`,"PROJECT_NOT_FOUND");let Q=await Z.readProjectByObjectId(W,null,a);return y.factory(!Q,I.notFound,`Project not found: ${a}`,"PROJECT_NOT_FOUND"),{projCtx:Q.getObjectId(),projectPath:Q.getPath(),authCtx:null}},T=async(a)=>{let n=P.get(a);if(n)return n;let Q=await H.readRootStoreForProject(W,{},a),q8=bP8.create({store:Q}),_8=uP8.create({store:Q}),i8=oj8.create(),$6=nj8.create({store:Q,folderService:q8,documentHooks:i8,fieldService:_8}),X6=rj8.create({store:Q,documentService:$6});i8.setIncludeResolver(X6,Q),$6.setIncludeResolver(X6);let k6=zA8.create(),F6=Ql8.create({store:Q,fieldService:_8}),y6=nl8.create({store:Q,assetsDir:K}),w1=el8.create({store:Q,fieldService:_8}),h4=Wi8.create(),T1=Xi8.create({store:Q}),y7=TB.create({db:W,folderService:q8,fieldService:_8,documentService:$6,templateService:k6,projectService:null,clipboardService:X,storyService:F6,assetService:y6,jobService:w1,includeResolver:X6,worktreeService:h4,entityTypeService:T1}),k$=VB8.create({store:Q,folderService:q8,documentService:$6,templateService:k6,storyService:F6,assetService:y6,assetsDir:K}),Lq=$U8.create({store:Q,folderService:q8,documentService:$6,templateService:k6,storyService:F6,fieldService:_8,assetService:y6,assetsDir:K}),uZ={folderService:q8,fieldService:_8,documentService:$6,templateService:k6,transactionService:y7,exportService:k$,importService:Lq,rootStore:Q,storyService:F6,assetService:y6,jobService:w1,worktreeService:h4,includeResolver:X6};return w1.subscribeAll({onJOB_STARTED:({id:jK})=>{setImmediate(async()=>{try{let $9=(await w1.getJob(W,{},{id:jK}))?.fields?.objectId;if($9&&$9.startsWith("As"))sD("JOB_STARTED: job=%s, objectId=%s - incrementing activeJobCount",jK,$9),await y7.incrementStoryJobCount({},{id:$9})}catch(QY){sD("Error handling JOB_STARTED for job %s: %s",jK,QY.message)}})},onJOB_COMPLETED:({id:jK})=>{setImmediate(async()=>{try{let $9=(await w1.getJob(W,{},{id:jK}))?.fields?.objectId;if($9&&$9.startsWith("As"))sD("JOB_COMPLETED: job=%s, objectId=%s - decrementing activeJobCount",jK,$9),await y7.decrementStoryJobCount({},{id:$9})}catch(QY){sD("Error handling JOB_COMPLETED for job %s: %s",jK,QY.message)}})}}),P.set(a,uZ),uZ},G=async()=>{return await Zf.create({projectStore:Z,storeStore:H}).listProjects(W)},j=async(a)=>{if(!a||!/^P\d+$/.test(a))return null;let n=parseInt(a.slice(1),10);if(n<1||n>Number.MAX_SAFE_INTEGER)return null;return await Z.readProjectByObjectId(W,null,a)},v=async(a,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6})=>{let k6=await w(a),{transactionService:F6}=await T(k6.projCtx);return await F6.createFolder(k6,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6})},M=async(a,{id:n,name:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.renameFolder(q8,{id:n,name:Q})},f=async(a,{id:n,parentId:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.moveFolder(q8,{id:n,parentId:Q})},k=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteFolder(Q,{id:n})},R=async(a,{id:n})=>{let Q=await w(a),{folderService:q8}=await T(Q.projCtx);return await q8.readFolder(W,Q,{id:n})},C=async(a,{store:n,path:Q,type:q8})=>{let _8=await w(a),{folderService:i8}=await T(_8.projCtx);return await i8.getFolderByPath(W,_8,{path:Q,type:q8,storeCode:n})},E=async(a,{id:n})=>{let Q=await w(a);if(!e6.parseId(n))throw I.notFound(`Invalid entity ID format: ${n}`,"NOT_FOUND");let{rootStore:_8}=await T(Q.projCtx);return{root:await v4.getRootForEntity(W,Q,n,_8)}},h=async(a,{folderId:n,store:Q,type:q8})=>{let _8=await w(a);$3("listFolderContents: Listing contents for project %s: folderId=%s, store=%s, type=%s",_8.projCtx,n||"root",Q,q8);let{folderService:i8,documentService:$6,rootStore:X6}=await T(_8.projCtx),k6=q8;if(n&&!q8)k6=await g(W,X6,_8,n,Q),$3("listFolderContents: Inferred type %s from folder %s",k6,n);if(!k6||k6!=="d"&&k6!=="t")k6="d",$3('listFolderContents: Defaulting effectiveType to "d"');let F6=await i8.listFolderContents(W,_8,{folderId:n,storeCode:Q,type:k6}),y6=n;if((n===null||n===void 0)&&(k6==="d"||k6==="t"))y6=(await X6.readRootFolderForType(W,_8,k6,Q)).getObjectId(),$3("listFolderContents: Resolved root folder for type %s: %s",k6,y6);$3("listFolderContents: Querying content with parentId=%s, store=%s, type=%s",y6,Q,k6);let w1=await $6.listDocuments(W,_8,{parentId:y6,storeCode:Q,type:k6});return $3("listFolderContents: Found %d folders, %d documents",F6?.length||0,w1?.length||0),{folders:F6,documents:w1}},g=async(a,n,Q,q8,_8)=>{let i8=e6.parseId(q8);if(i8&&i8.typeCode==="s")return"d";let $6=await n.readFolder(a,Q,{id:q8});if(!$6)return null;let X6=await a.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","=",q8).executeTakeFirst();if(X6?.entity_type_code==="f"&&X6?.entity_type_subtype==="root_d")return"d";if(X6?.entity_type_code==="f"&&X6?.entity_type_subtype==="root_t")return"t";if(X6?.entity_type_code==="f"&&(X6?.entity_type_subtype==="root_s"||X6?.entity_type_subtype==="tasks"))return"d";if(X6?.entity_type_code==="s")return"d";let k6=await n.readRootFolderForType(a,Q,"d",_8),F6=await n.readRootFolderForType(a,Q,"t",_8),y6=$6;while(y6&&y6.getParentId()!==null){let w1=await n.readFolder(a,Q,{id:y6.getParentId()});if(!w1)break;y6=w1}if(y6&&y6.getObjectId()===k6?.getObjectId())return"d";else if(y6&&y6.getObjectId()===F6?.getObjectId())return"t";return null},S=async(a)=>{let n=await w(a),{rootStore:Q}=await T(n.projCtx);return Q},N=async(a)=>{let n=await w(a),{storyService:Q}=await T(n.projCtx);return Q},L=async(a)=>{let n=await w(a),{jobService:Q}=await T(n.projCtx);return Q},u=async({name:a,path:n})=>{let Q=Zf.create({projectStore:Z,storeStore:H}),q8=TB.create({db:W,folderService:null,projectService:Q}),_8={};return await q8.createProject(_8,{name:a,path:n})},p=(a)=>{return Zf.create({projectStore:Z,storeStore:H}).validateProjectPath(a)},s=(a)=>{P.delete(a)},A8=async(a,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6,content:k6,tree:F6,subtype:y6,fields:w1})=>{let h4=await w(a);$3("createDocument: Creating document in project %s: mode=%s, path=%s, store=%s, type=%s, subtype=%s",h4.projCtx,n,q8,Q,X6,y6);let{transactionService:T1}=await T(h4.projCtx),y7=await T1.createDocument(h4,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,type:X6,content:k6,tree:F6,subtype:y6,fields:w1});return $3("createDocument: Document created: id=%s, path=%s",y7.getObjectId(),y7.getPath()),y7},v8=async(a,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,content:X6,subtype:k6})=>{let F6=await w(a);$3("createTemplate: Creating template in project %s: mode=%s, path=%s, store=%s",F6.projCtx,n,q8,Q);let{transactionService:y6}=await T(F6.projCtx),w1=await y6.createTemplate(F6,{mode:n,store:Q,path:q8,root:_8,parentId:i8,name:$6,content:X6,subtype:k6});return $3("createTemplate: Template created: id=%s, path=%s",w1.getObjectId(),w1.getPath()),w1},c8=async(a,{id:n,resolveIncludes:Q=!0})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.readDocument(W,q8,{id:n,resolveIncludes:Q})},z6=async(a,{path:n,store:Q,type:q8,resolveIncludes:_8=!0})=>{let i8=await w(a),{documentService:$6,includeResolver:X6}=await T(i8.projCtx),k6=await $6.readDocumentByPath(W,i8,{path:n,type:q8,storeCode:Q});if(!k6)return null;let{entity:F6,ancestorFolderIds:y6}=k6,w1=null;if(_8&&X6&&F6.getPublishedContent())w1=await X6.resolve(W,i8,F6.getPublishedContent(),F6.getObjectId());return{entity:F6,ancestorFolderIds:y6,resolvedContent:w1}},u8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8,includeResolver:_8}=await T(Q.projCtx),{entity:i8}=await q8.readDocument(W,Q,{id:n,resolveIncludes:!1}),$6=i8.getDraftContent()||i8.getPublishedContent();if(!$6)return[];return await _8.checkIncludes(W,Q,$6,n)},I8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8,includeResolver:_8,rootStore:i8}=await T(Q.projCtx),{entity:$6}=await q8.readDocument(W,Q,{id:n,resolveIncludes:!1}),X6=$6.getDraftContent()||$6.getPublishedContent();if(!X6)return{updated:[]};let{content:k6,updated:F6}=await _8.updateIncludes(W,Q,X6,n);if(F6.length>0)await i8.saveDraft(W,Q,{id:n,content:k6});return{updated:F6}},B8=async(a,{id:n,path:Q,parentId:q8,type:_8})=>{let i8=await w(a),{transactionService:$6}=await T(i8.projCtx);return await $6.updateDocumentPath(i8,{id:n,path:Q,parentId:q8,type:_8})},q6=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteDocument(Q,{id:n})},j6=async(a,{id:n,subtype:Q,fields:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.specialiseDocument(_8,{id:n,subtype:Q,fields:q8})},O6=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.generaliseDocument(Q,{id:n})},w6=async(a,{id:n,content:Q,sessionId:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.saveDraft(_8,{id:n,content:Q,sessionId:q8})},f6=async(a,{id:n})=>{let Q=await w(a),{documentService:q8}=await T(Q.projCtx);return await q8.readDraft(W,Q,{id:n})},E6=async(a,{id:n,sessionId:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.publishDocument(q8,{id:n,sessionId:Q})},P8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.discardDraft(Q,{id:n})},X8=async(a,{id:n,sessionId:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.setEditState(q8,{id:n,sessionId:Q})},N8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.clearEditState(Q,{id:n})},g8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8}=await T(Q.projCtx);return await q8.getEditState(W,Q,{id:n})},F8=async(a,{id:n,versionNumber:Q})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.readVersion(W,q8,{id:n,versionNumber:Q})},l8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8}=await T(Q.projCtx);return await q8.getVersions(W,Q,{id:n})},Y6=async(a,{id:n,operation:Q,preview:q8,ignoreContent:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.editDocument($6,{id:n,operation:Q,preview:q8,ignoreContent:_8,sessionId:i8})},E8=async(a,{id:n,operations:Q,preview:q8,ignoreContent:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.batchEditDocument($6,{id:n,operations:Q,preview:q8,ignoreContent:_8,sessionId:i8})},p8=async(a,{id:n,lineNumber:Q,checked:q8,includeDraft:_8,preview:i8,sessionId:$6})=>{let X6=await w(a),{transactionService:k6}=await T(X6.projCtx);return await k6.checkChecklistItem(X6,{id:n,lineNumber:Q,checked:q8,includeDraft:_8,preview:i8,sessionId:$6})},n8=async(a,{id:n,lineNumber:Q,includeDraft:q8,preview:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.toggleChecklistItem($6,{id:n,lineNumber:Q,includeDraft:q8,preview:_8,sessionId:i8})},e8=async(a,{id:n,items:Q,includeDraft:q8,preview:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.batchCheckChecklistItems($6,{id:n,items:Q,includeDraft:q8,preview:_8,sessionId:i8})},W6=async(a,{id:n,startLine:Q,endLine:q8,includeDraft:_8})=>{let i8=await w(a),{documentService:$6}=await T(i8.projCtx);return await $6.readLines(W,i8,{id:n,startLine:Q,endLine:q8,includeDraft:_8})},N6=async(a,{id:n,startMarker:Q,endMarker:q8,inclusive:_8,includeDraft:i8})=>{let $6=await w(a),{documentService:X6}=await T($6.projCtx);return await X6.readBetweenMarkers(W,$6,{id:n,startMarker:Q,endMarker:q8,inclusive:_8,includeDraft:i8})},g6=async(a,{id:n,includeDraft:Q})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.getDocumentStats(W,q8,{id:n,includeDraft:Q})},$1=async(a,{id:n,maxDepth:Q,includeDraft:q8})=>{let _8=await w(a),{documentService:i8}=await T(_8.projCtx);return await i8.readHeadings(W,_8,{id:n,maxDepth:Q,includeDraft:q8})},r1=async(a,{id:n,heading:Q,includeHeading:q8,includeDraft:_8})=>{let i8=await w(a),{documentService:$6}=await T(i8.projCtx);return await $6.readSection(W,i8,{id:n,heading:Q,includeHeading:q8,includeDraft:_8})},m8=async(a,{id:n,includeDraft:Q})=>{let q8=await w(a),{documentService:_8}=await T(q8.projCtx);return await _8.readFrontmatter(W,q8,{id:n,includeDraft:Q})},i=async(a,{id:n,section:Q,includeDraft:q8})=>{let _8=await w(a),{documentService:i8}=await T(_8.projCtx);return await i8.readChecklist(W,_8,{id:n,section:Q,includeDraft:q8})},l=async(a,{folderId:n,store:Q,type:q8="d"})=>{let _8=await w(a),{documentService:i8}=await T(_8.projCtx);return await i8.listDocuments(W,_8,{parentId:n,storeCode:Q,type:q8})},c=async(a,{id:n,params:Q,target:q8,targetOptions:_8,sessionId:i8})=>{let $6=await w(a),{transactionService:X6,jobService:k6,rootStore:F6}=await T($6.projCtx),y6=await X6.renderTemplate($6,{id:n,params:Q,target:q8,targetOptions:_8,sessionId:i8});if(y6.target==="job"&&y6.jobId){let w1=rD.create({jobService:k6,transactionService:X6,store:F6,db:W,projectPath:$6.projectPath});setImmediate(async()=>{try{await w1.runJob(y6.jobId,$6)}catch(h4){$3("JobRunner error for job %s: %s",y6.jobId,h4.message);try{await X6.updateJobStatus($6,{id:y6.jobId,status:"error",errorMessage:h4.message})}catch(T1){$3("Failed to update job %s status to error: %s",y6.jobId,T1.message)}}})}return y6},W8=async(a,{id:n})=>{let Q=await w(a),{documentService:q8,templateService:_8}=await T(Q.projCtx),{entity:i8}=await q8.readDocument(W,Q,{id:n});if(!i8.getPublishedContent())return{parameters:{},detectedVariables:[],target:null,targetPath:null};return _8.extractTemplateParameters(i8.getPublishedContent())},F=async(a,{typeCode:n,store:Q="A"})=>{let q8=await w(a),{rootStore:_8}=await T(q8.projCtx);return{templates:(await _8.findEntitiesByFieldValue(W,q8,{storeCode:Q,typeCode:"t",subtype:"prompt",fieldName:"associatedType",fieldValue:n})).map(($6)=>({id:$6.object_id,name:$6.name,path:$6.path,subtype:$6.subtype}))}},H8=async(a,{store:n,ownerEntityId:Q,ownerEntityTypeCode:q8,ownerEntityTypeSubtype:_8,name:i8,label:$6,description:X6,primitiveType:k6,required:F6,multiplicity:y6,isSystem:w1})=>{let h4=await w(a),{transactionService:T1}=await T(h4.projCtx);return await T1.createFieldDefinition(h4,{store:n,ownerEntityId:Q,ownerEntityTypeCode:q8,ownerEntityTypeSubtype:_8,name:i8,label:$6,description:X6,primitiveType:k6,required:F6,multiplicity:y6,isSystem:w1})},o=async(a,{id:n})=>{let Q=await w(a),{fieldService:q8}=await T(Q.projCtx);return await q8.readFieldDefinition(W,Q,{id:n})},G8=async(a,{store:n,ownerEntityId:Q,includeSystem:q8})=>{let _8=await w(a),{fieldService:i8}=await T(_8.projCtx);return await i8.getFieldDefinitionsForOwner(W,_8,{store:n,ownerEntityId:Q,includeSystem:q8})},Z8=async(a,{store:n,code:Q,subtype:q8})=>{let _8=await w(a),{fieldService:i8}=await T(_8.projCtx);return await i8.getFieldDefinitionsForType(W,_8,{store:n,code:Q,subtype:q8})},f8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteFieldDefinition(Q,{id:n})},S8=async(a,{id:n})=>{let Q=await w(a),q8=e6.parseId(n);if(!q8)throw Error(`Cannot parse entity ID: ${n}`);let{rootStore:_8}=await T(Q.projCtx),{typeCode:i8}=q8;switch(i8){case"f":return await _8.readFolder(W,Q,{id:n});case"d":case"t":return await _8.readContent(W,Q,{id:n});case"s":return await _8.readStory(W,Q,{id:n});case"j":return await _8.readJob(W,Q,{id:n});default:throw Error(`Unsupported entity type code: ${i8}`)}},Q8=async(a,{entityId:n})=>{let Q;try{Q=await S8(a,{id:n})}catch(q8){if(q8.code==="PROJECT_NOT_FOUND")throw q8;return{}}if(!Q)return{};return Q.getFields()},C6=async(a,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.addFieldToEntity($6,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})},$$=async(a,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})=>{let $6=await w(a),{transactionService:X6}=await T($6.projCtx);return await X6.updateFieldValue($6,{entityId:n,fieldDefinitionId:Q,fieldName:q8,value:_8,values:i8})},T7=async(a,{entityId:n,fieldDefinitionId:Q,fieldName:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.removeFieldFromEntity(_8,{entityId:n,fieldDefinitionId:Q,fieldName:q8})},g7=async(a,{code:n,subtype:Q,name:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.createSubtype(_8,{code:n,subtype:Q,name:q8})},b7=async(a)=>{let n=await w(a),{exportService:Q}=await T(n.projCtx);return await Q.listExports(W,n,{projectPath:n.projectPath})},L3=async(a,{store:n="A"}={})=>{let Q=await w(a),{exportService:q8}=await T(Q.projCtx);return await q8.exportPreview(W,Q,{storeCode:n})},e$=async(a,{store:n="A",confirm:Q=!1}={})=>{let q8=await w(a),{exportService:_8}=await T(q8.projCtx);if(!Q)return await _8.exportPreview(W,q8,{storeCode:n});return await _8.exportDocuments(W,q8,{storeCode:n,projectPath:q8.projectPath})},GK=async(a,{filename:n,store:Q="A"})=>{let q8=await w(a);y.factory(!n,I.validation,"filename is required","FILENAME_REQUIRED");let{importService:_8}=await T(q8.projCtx);return await _8.importDocuments(W,q8,{filename:n,storeCode:Q,projectPath:q8.projectPath})},Z4=async(a,{name:n,store:Q,state:q8})=>{let _8=await w(a),{transactionService:i8}=await T(_8.projCtx);return await i8.createStory(_8,{name:n,storeCode:Q,state:q8})},R8=async(a,{store:n})=>{let Q=await w(a),{storyService:q8}=await T(Q.projCtx);return await q8.listStories(W,Q,{store:n})},C8=async(a,{id:n})=>{let Q=await w(a),{storyService:q8}=await T(Q.projCtx);return await q8.getStory(W,Q,{id:n})},z8=async(a,{id:n,state:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.updateStoryState(q8,{id:n,state:Q})},b8=async(a,{id:n,name:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.renameStory(q8,{id:n,name:Q})},L8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteStory(Q,{id:n})},y8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.incrementStoryJobCount(Q,{id:n})},G6=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.decrementStoryJobCount(Q,{id:n})},x=async(a,{store:n,buffer:Q,mimeType:q8,originalFilename:_8,widthPx:i8,heightPx:$6,displayWidth:X6,displayHeight:k6})=>{let F6=await w(a),{transactionService:y6}=await T(F6.projCtx);return await y6.createAsset(F6,{store:n,buffer:Q,mimeType:q8,originalFilename:_8,widthPx:i8,heightPx:$6,displayWidth:X6,displayHeight:k6})},T8=async(a,{id:n})=>{let Q=await w(a),{assetService:q8}=await T(Q.projCtx);return await q8.readAsset(W,Q,{id:n})},m=async(a,{id:n})=>{let Q=await w(a),{assetService:q8}=await T(Q.projCtx);return await q8.readAssetBinary(W,Q,{id:n})},$8=async(a,{store:n})=>{let Q=await w(a),{assetService:q8}=await T(Q.projCtx);return await q8.listAssets(W,Q,{store:n})},d=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteAsset(Q,{id:n})},t=async(a,{name:n,agent:Q,model:q8,prompt:_8,store:i8="A",workingDirectory:$6,objectId:X6,streaming:k6})=>{let F6=await w(a),{transactionService:y6,jobService:w1,rootStore:h4}=await T(F6.projCtx),T1=await y6.createJob(F6,{store:i8,name:n,agent:Q,model:q8,prompt:_8,workingDirectory:$6,objectId:X6,streaming:k6}),y7=rD.create({jobService:w1,transactionService:y6,store:h4,db:W,projectPath:F6.projectPath});return setImmediate(async()=>{try{await y7.runJob(T1.id,F6)}catch(k$){$3("JobRunner error for job %s: %s",T1.id,k$.message);try{await y6.updateJobStatus(F6,{id:T1.id,status:"error",errorMessage:k$.message})}catch(Lq){$3("Failed to update job %s status to error: %s",T1.id,Lq.message)}}}),T1},r=async(a,{store:n="A",status:Q})=>{let q8=await w(a),{jobService:_8}=await T(q8.projCtx);return await _8.listJobs(W,q8,{store:n,status:Q})},e=async(a,{id:n})=>{let Q=await w(a),{jobService:q8}=await T(Q.projCtx);return await q8.getJob(W,Q,{id:n})},w8=async(a,{id:n})=>{let Q=await w(a),{transactionService:q8}=await T(Q.projCtx);return await q8.deleteJob(Q,{id:n})},j8=async(a,{id:n,prompt:Q,model:q8})=>{let _8=await w(a),{transactionService:i8,jobService:$6,rootStore:X6}=await T(_8.projCtx),k6=await i8.continueJob(_8,{id:n,prompt:Q,model:q8}),F6=rD.create({jobService:$6,transactionService:i8,store:X6,db:W,projectPath:_8.projectPath});return setImmediate(async()=>{try{await F6.runJob(k6.id,_8)}catch(y6){$3("JobRunner error for job %s: %s",k6.id,y6.message);try{await i8.updateJobStatus(_8,{id:k6.id,status:"error",errorMessage:y6.message})}catch(w1){$3("Failed to update job %s status to error: %s",k6.id,w1.message)}}}),k6},M8=async(a,{id:n,name:Q})=>{let q8=await w(a),{transactionService:_8}=await T(q8.projCtx);return await _8.renameJob(q8,{id:n,name:Q})},h8=async(a,{id:n})=>{let Q=await w(a),{jobService:q8}=await T(Q.projCtx);return await q8.getProcessStatus(W,Q,{id:n})},t8=async(a)=>{let n=await w(a),{worktreeService:Q}=await T(n.projCtx);return await Q.listWorktrees({projectPath:n.projectPath})},o8=async(a,{branch:n,baseBranch:Q})=>{let q8=await w(a),{worktreeService:_8}=await T(q8.projCtx);return await _8.createWorktree({projectPath:q8.projectPath,branch:n,baseBranch:Q})};if(J)J({db:W,projectStore:Z,storeStore:H});return Object.freeze({getProjects:G,getProjectByObjectId:j,createProject:u,validateProjectPath:p,createFolder:v,renameFolder:M,moveFolder:f,deleteFolder:k,getFolder:R,getFolderByPath:C,getRootForEntity:E,listFolderContents:h,getRootStore:S,getStoryService:N,getJobService:L,evictProject:s,getDb:()=>W,createDocument:A8,createTemplate:v8,readDocument:c8,readDocumentByPath:z6,checkIncludes:u8,updateIncludes:I8,updateDocumentPath:B8,deleteDocument:q6,specialiseDocument:j6,generaliseDocument:O6,saveDraft:w6,readDraft:f6,publishDocument:E6,discardDraft:P8,setEditState:X8,clearEditState:N8,getEditState:g8,readVersion:F8,getVersions:l8,editDocument:Y6,batchEditDocument:E8,checkChecklistItem:p8,toggleChecklistItem:n8,batchCheckChecklistItems:e8,listDocuments:l,readLines:W6,readBetweenMarkers:N6,getDocumentStats:g6,readHeadings:$1,readSection:r1,readFrontmatter:m8,readChecklist:i,renderTemplate:c,getTemplateParameters:W8,listTemplatesByType:F,createFieldDefinition:H8,readFieldDefinition:o,getFieldDefinitions:G8,getTypeFields:Z8,deleteFieldDefinition:f8,getFields:Q8,readEntity:S8,addFieldToEntity:C6,updateFieldValue:$$,removeFieldFromEntity:T7,createSubtype:g7,listExports:b7,exportPreview:L3,exportDocuments:e$,importDocuments:GK,createStory:Z4,listStories:R8,getStory:C8,renameStory:b8,updateStoryState:z8,deleteStory:L8,incrementStoryJobCount:y8,decrementStoryJobCount:G6,createAsset:x,readAsset:T8,readAssetBinary:m,listAssets:$8,deleteAsset:d,createJob:t,listJobs:r,getJob:e,deleteJob:w8,continueJob:j8,renameJob:M8,getProcessStatus:h8,listWorktrees:t8,createWorktree:o8,listCrons:()=>O.list(),startCron:(a)=>O.start(a),stopCron:(a)=>O.stop(a),restartCron:(a)=>O.restart(a),startAllCrons:()=>O.startAll(),stopAllCrons:()=>O.stopAll(),registerCronJob:(a,n)=>{O.register(a,n)}})},Pi8=Object.freeze({create:jT1});var wi8=i6(_I(),1);import{join as vT1}from"path";var VT1=($,{staticPath:K})=>{return $.use(wi8.default.static(K)),$.get("*",(q,Y,J)=>{if(q.path.startsWith("/api")||q.path==="/health")return J();Y.sendFile(vT1(K,"index.html"))}),Object.freeze({})},Ti8=Object.freeze({create:VT1});var Gi8=i6(S4(),1),tD=Gi8.default("caw:api:projects"),AT1=($,{core:K})=>{return $.get("/api/projects",async(q,Y)=>{try{tD("GET /api/projects - Fetching projects list");let J=await K.getProjects();tD("GET /api/projects - Returning %d projects",J.length),J.forEach((z)=>{tD(" - %s (%s) with %d children",z.name,z.objectId,z.children?.length||0)}),Y.json(J)}catch(J){tD("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({})},ji8=Object.freeze({create:AT1});var Vi8=i6(S4(),1);var MT1=($,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})},M6=MT1;var $5=Vi8.default("caw:api:folders"),vi8=($)=>({folders:$.folders.map((K)=>K.toJSON()),documents:$.documents.map((K)=>K.toJSON())}),_T1=($,{core:K})=>{return $.get("/api/p/:projectId/folders/contents",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,type:W}=q.query;$5("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=vi8(Z);$5("GET /api/p/%s/folders/contents - Found %d folders, %d documents",J,H.folders.length,H.documents.length),Y.json(H)}catch(J){$5("GET /api/p/%s/folders/contents - Error: %s",q.params.projectId,J.message),M6(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){M6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/contents",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{type:W}=q.query;$5("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=vi8(Z);$5("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){$5("GET /api/p/%s/folders/%s/contents - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/folders/:id/root",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;$5("GET /api/p/%s/folders/%s/root - Getting root for entity",J,z);let W=await K.getRootForEntity(J,{id:z});$5("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){$5("GET /api/p/%s/folders/%s/root - Error: %s",q.params.projectId,q.params.id,J.message),M6(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){M6(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";$5("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});$5("POST /api/p/%s/folders - Folder created: id=%s, path=%s",J,j.getObjectId(),j.getPath()),Y.status(201).json(j.toJSON())}catch(J){$5("POST /api/p/%s/folders - Error: %s",q.params.projectId,J.message),M6(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){M6(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){M6(J,Y)}}),Object.freeze({})},Ai8=Object.freeze({create:_T1});var kT1=($,{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){M6(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){M6(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){M6(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){M6(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){M6(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;if((await K.getFields(J,{entityId:z}))?.[W])await K.updateFieldValue(J,X);else await K.addFieldToEntity(J,X);let T=await K.readEntity(J,{id:z});Y.json(T.toJSON())}catch(J){M6(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){M6(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.removeFieldFromEntity(J,H),Y.status(204).send()}catch(J){M6(J,Y)}}),Object.freeze({})},Mi8=Object.freeze({create:kT1});var _i8=i6(S4(),1);var K5=_i8.default("caw:api:documents"),fT1=($,{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";K5("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();K5("POST /api/p/%s/documents - Document created: id=%s, path=%s",J,k.id,k.path),Y.status(201).json(k)}catch(J){K5("POST /api/p/%s/documents - Error: %s",q.params.projectId,J.message),M6(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";K5("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();K5("POST /api/p/%s/templates - Template created: id=%s, path=%s",J,f.id,f.path),Y.status(201).json(f)}catch(J){K5("POST /api/p/%s/templates - Error: %s",q.params.projectId,J.message),M6(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){M6(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){M6(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){M6(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:R}=FK.getParameters(Z),{body:C}=FK.parseFrontMatter(Z),E=Array.from(FK.extractVariables(C));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:R,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){M6(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){M6(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){M6(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=e6.getTypeFromId(z),O=await K.updateDocumentPath(J,{id:z,path:W,parentId:Z,type:H});Y.json(O.toJSON())}catch(J){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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){M6(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;K5("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();K5("POST /api/p/%s/documents/%s/specialise - Success: subtype=%s",J,z,O.subtype),Y.json(O)}catch(J){K5("POST /api/p/%s/documents/%s/specialise - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.post("/api/p/:projectId/documents/:id/generalise",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;K5("POST /api/p/%s/documents/%s/generalise",J,z);let Z=(await K.generaliseDocument(J,{id:z})).entity.toJSON();K5("POST /api/p/%s/documents/%s/generalise - Success: subtype=%s",J,z,Z.subtype),Y.json(Z)}catch(J){K5("POST /api/p/%s/documents/%s/generalise - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),Object.freeze({})},ki8=Object.freeze({create:fT1});var fi8=i6(S4(),1);var f9=fi8.default("caw:api:export"),NT1=($,{core:K})=>{return $.get("/api/p/:projectId/exports",async(q,Y)=>{try{let{projectId:J}=q.params;f9("GET /api/p/%s/exports - Listing export files",J);let z=await K.listExports(J);f9("GET /api/p/%s/exports - Found %d export files",J,z.length),Y.json({ok:!0,exports:z})}catch(J){f9("GET /api/p/:projectId/exports - Error: %s",J.message),M6(J,Y)}}),$.get("/api/p/:projectId/export/preview",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z}=q.query;f9("GET /api/p/%s/export/preview - Previewing export: store=%s",J,z);let W=await K.exportPreview(J,{store:z});f9("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){f9("GET /api/p/:projectId/export/preview - Error: %s",J.message),M6(J,Y)}}),$.post("/api/p/:projectId/export",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z,confirm:W}=q.body;f9("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)f9("POST /api/p/%s/export - Export complete: %s",J,Z.filename);else f9("POST /api/p/%s/export - Preview returned (confirm=false)",J);Y.json(Z)}catch(J){f9("POST /api/p/:projectId/export - Error: %s",J.message),M6(J,Y)}}),$.post("/api/p/:projectId/import",async(q,Y)=>{try{let{projectId:J}=q.params,{filename:z,store:W}=q.body;f9("POST /api/p/%s/import - Import request: filename=%s, store=%s",J,z,W);let Z=await K.importDocuments(J,{filename:z,store:W});f9("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){f9("POST /api/p/:projectId/import - Error: %s",J.message),M6(J,Y)}}),Object.freeze({})},Ni8=Object.freeze({create:NT1});var Ri8=i6(S4(),1);var q5=Ri8.default("caw:api:stories"),RT1=($,{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;q5("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){q5("POST /api/p/%s/stories - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/stories",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A"}=q.query;q5("GET /api/p/%s/stories - Listing stories: store=%s",J,z);let W=await K.listStories(J,{store:z});Y.json(W)}catch(J){q5("GET /api/p/%s/stories - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;q5("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){q5("GET /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(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"});q5("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){q5("PATCH /api/p/%s/stories/%s/state - Error: %s",q.params.projectId,q.params.id,J.message),M6(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"});q5("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){q5("PATCH /api/p/%s/stories/%s/name - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.delete("/api/p/:projectId/stories/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;q5("DELETE /api/p/%s/stories/%s - Deleting story",J,z);let W=await K.deleteStory(J,{id:z});Y.json(W)}catch(J){q5("DELETE /api/p/%s/stories/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),Object.freeze({})},Ci8=Object.freeze({create:RT1});var an8=i6(S4(),1),Ah=i6(nn8(),1);var _q=an8.default("caw:api:assets"),on8=["image/png","image/jpeg","image/gif","image/webp"],wv1=Ah.default({storage:Ah.default.memoryStorage(),limits:{fileSize:10485760},fileFilter:($,K,q)=>{if(on8.includes(K.mimetype))q(null,!0);else q(Error(`Unsupported MIME type: ${K.mimetype}. Allowed: ${on8.join(", ")}`))}}),Tv1=($,{core:K})=>{return $.post("/api/p/:projectId/assets",wv1.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),M6(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),M6(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),M6(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),M6(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),M6(J,Y)}}),$.use("/api/p/:projectId/assets",(q,Y,J,z)=>{if(q instanceof Ah.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({})},rn8=Object.freeze({create:Tv1});var sn8=i6(S4(),1);var z5=sn8.default("caw:api:jobs"),Gv1=($,{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;z5("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){z5("POST /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/jobs",async(q,Y)=>{try{let{projectId:J}=q.params,{store:z="A",status:W}=q.query;z5("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){z5("GET /api/p/%s/jobs - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;z5("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){z5("GET /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(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;z5("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){z5("POST /api/p/%s/jobs/%s/continue - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.get("/api/p/:projectId/jobs/:id/process-status",async(q,Y)=>{try{let{projectId:J,id:z}=q.params;z5("GET /api/p/%s/jobs/%s/process-status",J,z);let W=await K.getProcessStatus(J,{id:z});Y.json(W)}catch(J){z5("GET /api/p/%s/jobs/%s/process-status - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),$.patch("/api/p/:projectId/jobs/:id",async(q,Y)=>{try{let{projectId:J,id:z}=q.params,{name:W}=q.body;z5("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){z5("PATCH /api/p/%s/jobs/%s - Error: %s",q.params.projectId,q.params.id,J.message),M6(J,Y)}}),Object.freeze({})},tn8=Object.freeze({create:Gv1});var en8=i6(S4(),1);var FP=en8.default("caw:api:worktrees"),jv1=($,{core:K})=>{return $.get("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params;FP("GET /api/p/%s/worktrees - Listing worktrees",J);let z=await K.listWorktrees(J);FP("GET /api/p/%s/worktrees - Found %d worktrees, isGitProject=%s",J,z.worktrees.length,z.isGitProject),Y.json(z)}catch(J){FP("GET /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),$.post("/api/p/:projectId/worktrees",async(q,Y)=>{try{let{projectId:J}=q.params,{branch:z,baseBranch:W}=q.body;FP("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});FP("POST /api/p/%s/worktrees - Created worktree at %s for branch %s",J,Z.path,Z.branch),Y.status(201).json(Z)}catch(J){FP("POST /api/p/%s/worktrees - Error: %s",q.params.projectId,J.message),M6(J,Y)}}),Object.freeze({})},$o8=Object.freeze({create:jv1});var Ko8=i6(S4(),1);var VZ=Ko8.default("caw:api:events"),vv1=($,{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)}
@@ -729,4 +729,4 @@ State: ${z.fields.state}
729
729
 
730
730
  To confirm, call delete_story with confirm=true`}]}}let J=await $.deleteStory(K,{id:q});return{content:[{type:"text",text:`Deleted story: ${J.id} (${J.descendantCount} descendants also deleted)`}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},H16={name:"delete_story",title:"Delete Story",description:"Soft delete a story (can be restored later). If confirm is false or omitted, returns impact preview.",schema:UL1,execute:pL1};v6();var FL1=A.object({id:A.string().describe('Story ID (e.g., "As1")')}),cL1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.incrementStoryJobCount(K,{id:q});if(!Y)return{content:[{type:"text",text:`Story ${q} not found`}],isError:!0};return{content:[{type:"text",text:`Incremented activeJobCount for story ${Y.id} to: ${Y.fields.activeJobCount}`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},O16={name:"increment_story_job_count",title:"Increment Story Job Count",description:"Increment a story's activeJobCount field (for manual tracking of agent activity)",schema:FL1,execute:cL1};v6();var QL1=A.object({id:A.string().describe('Story ID (e.g., "As1")')}),lL1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.decrementStoryJobCount(K,{id:q});if(!Y)return{content:[{type:"text",text:`Story ${q} not found`}],isError:!0};return{content:[{type:"text",text:`Decremented activeJobCount for story ${Y.id} to: ${Y.fields.activeJobCount}`}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},X16={name:"decrement_story_job_count",title:"Decrement Story Job Count",description:"Decrement a story's activeJobCount field (for manual tracking of agent activity). Guards against going below zero.",schema:QL1,execute:lL1};var P16=[J16,z16,W16,Z16,H16,O16,X16];v6();var iL1=A.object({id:A.string().describe('Asset ID (e.g., "Aa1")')}),dL1=async({core:$,projectId:K},{id:q})=>{try{let{buffer:Y,mimeType:J,sizeBytes:z,hash:W,originalFilename:Z}=await $.readAssetBinary(K,{id:q});return{content:[{type:"image",data:Y.toString("base64"),mimeType:J},{type:"text",text:JSON.stringify({id:q,originalFilename:Z,sizeBytes:z,hash:W},null,2)}]}}catch(Y){return{content:[{type:"text",text:Y.code==="ASSET_NOT_FOUND"||Y.code==="BLOB_NOT_FOUND"?Y.message:`Error: ${Y.message}`}],isError:!0}}},w16={name:"read_asset",title:"Read Asset",description:"Read an asset image by ID. Returns the image as base64-encoded data that Claude can view. Supported formats: PNG, JPEG, GIF, WebP. Maximum size: 10MB.",schema:iL1,execute:dL1};var T16=[w16];v6();var nL1=A.object({store:A.string().optional().describe('Store code (default: "A")'),status:A.string().optional().describe("Filter by status (pending, running, completed, error)")}),oL1=async({core:$,projectId:K},{store:q,status:Y})=>{try{let J=await $.listJobs(K,{store:q||"A",status:Y});if(J.length===0)return{content:[{type:"text",text:"No jobs found"}]};return{content:[{type:"text",text:J.map((W)=>`${W.id}: ${W.name} [${W.fields.status}]`).join(`
731
731
  `)}]}}catch(J){return{content:[{type:"text",text:`Error: ${J.message}`}],isError:!0}}},G16={name:"list_jobs",title:"List Jobs",description:"List all jobs",schema:nL1,execute:oL1};v6();var aL1=A.object({id:A.string().describe('Job ID (e.g., "Aj1")')}),rL1=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.getJob(K,{id:q}),J=Y.fields||{};return{content:[{type:"text",text:[`Job: ${Y.id}`,`Name: ${Y.name}`,`Status: ${J.status}`,`PID: ${J.pid||"N/A"}`,`Agent: ${J.agent}`,`Started: ${J.startedAt||"N/A"}`,`Completed: ${J.completedAt||"N/A"}`].join(`
732
- `)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},j16={name:"read_job",title:"Read Job",description:"Get job details",schema:aL1,execute:rL1};var v16=[G16,j16];var sL1=({core:$,projectId:K})=>{let q=new la({name:"caw-server",version:"0.0.1"},{capabilities:{tools:{}}}),Y=[...I66,...y66,...Q66,...t66,...Y16,...P16,...T16,...v16];for(let J of Y)q.registerTool(J.name,{title:J.title,description:J.description,inputSchema:J.schema},async(z,W)=>{try{let Z=W?.sessionId||W?.requestInfo?.headers?.["mcp-session-id"];return await J.execute({core:$,projectId:K,sessionId:Z},z)}catch(Z){return console.error(`Tool ${J.name} failed:`,Z),{content:[{type:"text",text:`Tool execution failed: ${Z.message}`}],isError:!0}}});return q},V16=Object.freeze({createMcpServer:sL1});var eL1=ia.default("caw:mcp"),X5=ia.default("caw:mcp:session"),$I1=({core:$})=>{let K=new Map;return Object.freeze({handleRequest:async(W,Z,{projectId:H})=>{let O=W.headers["mcp-session-id"];if(O){let G=K.get(O);if(!G)return X5("Session not found: %s",O),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});if(G.projectId!==H)return X5("Session %s belongs to project %s, not %s",O,G.projectId,H),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});X5("Routing request to existing session: %s",O),G.lastActivity=Date.now();try{return await G.transport.handleRequest(W,Z,W.body)}catch(j){console.error("MCP transport request failed:",j)}}X5("Creating new MCP session for project: %s",H);let X=null,P=new So({sessionIdGenerator:()=>{return X=tL1(),X5("Generated session ID: %s",X),X},onsessioninitialized:(G)=>{X5("Session initialized: %s",G),Z.setHeader("Mcp-Session-Id",G),T.sessionId=G,K.set(G,T),X5("Session stored: %s",G)}});X5("Creating new server for session");let w=V16.createMcpServer({core:$,projectId:H});try{await w.connect(P)}catch(G){return console.error("MCP server connect failed:",G),P.close?.(),w.close?.(),Z.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null})}let T={sessionId:null,transport:P,server:w,projectId:H,createdAt:Date.now(),lastActivity:Date.now()};Z.on("finish",()=>{if(Z.statusCode!==200&&X&&K.has(X))X5("Request failed (status %d), cleaning up session: %s",Z.statusCode,X),K.delete(X),P.close?.(),w.close?.()});try{await P.handleRequest(W,Z,W.body)}catch(G){console.error("MCP transport request failed:",G)}},getSession:(W)=>{return K.get(W)},closeSession:(W)=>{let Z=K.get(W);if(!Z){X5("Cannot close session - not found: %s",W);return}X5("Closing session: %s",W),Z.transport.close?.(),Z.server.close?.(),K.delete(W)},cleanupIdle:(W)=>{let Z=Date.now(),H=0;for(let[O,X]of K.entries())if(Z-X.lastActivity>W)X5("Cleaning up idle session: %s (idle for %dms)",O,Z-X.lastActivity),X.transport.close?.(),X.server.close?.(),K.delete(O),H++;if(H>0)eL1("Cleaned up %d idle sessions",H)}})},A16=Object.freeze({create:$I1});var KI1=86400000,qI1=300000,YI1=({mcpSessionManager:$})=>{let{jobFns:K,controlFns:q}=IC.create({name:"cleanup-idle-mcp-sessions",interval:qI1,execute:async()=>{$.cleanupIdle(KI1)}});return{job:Object.freeze(K),control:q}},M16=Object.freeze({create:YI1});var zS=Y46.default("caw:server"),UI1=async({port:$,databaseFilepath:K,assetsDir:q,lazilyCreateDb:Y,enableRest:J,enableSse:z,enableStatic:W,enableCrons:Z,enableMcp:H=!0,enableCli:O=!0,staticPath:X,kyselyFactory:P})=>{let w=await Pi8.create({databaseFilepath:K,assetsDir:q,lazilyCreateDb:Y,kyselyFactory:P}),T=Zr.default();if(T.use(Zr.default.json()),T.get("/health",(f,k)=>{k.json({status:"ok"})}),T.get("/api/info",(f,k)=>{k.json({version:"1.0.42"})}),J)T.use("/api",Yo8),ji8.create(T,{core:w}),Ai8.create(T,{core:w}),Mi8.create(T,{core:w}),ki8.create(T,{core:w}),Ni8.create(T,{core:w}),Ci8.create(T,{core:w}),rn8.create(T,{core:w}),tn8.create(T,{core:w}),$o8.create(T,{core:w});if(z)qo8.create(T,{core:w});if(W&&X)Ti8.create(T,{staticPath:X});if(H){zS("Initializing MCP subsystem...");let f=A16.create({core:w});w.registerCronJob(M16,{mcpSessionManager:f}),zo8.create(T,{core:w,mcpSessionManager:f}),zS("MCP subsystem initialized")}if(O){zS("Initializing CLI Adapter subsystem...");let f=(await Promise.resolve().then(() => (Q16(),c16))).default,k=(await Promise.resolve().then(() => (n16(),d16))).default,R=(await Promise.resolve().then(() => (e16(),t16))).default,C=(await Promise.resolve().then(() => (q46(),K46))).default,E=R.create({mcpClientFactory:f.create(),aliasGenerator:k.create(),core:w});await E.init(),C.create(T,{cliSessionManager:E}),zS("CLI Adapter subsystem initialized")}if(Z)w.startAllCrons();let G=null,j=new Set;return Object.freeze({app:T,core:w,start:async()=>{return new Promise((f)=>{G=T.listen($,()=>{let k=G.address().port;f(k)}),G.on("connection",(k)=>{j.add(k),k.on("close",()=>{j.delete(k)})})})},stop:async()=>{if(w.stopAllCrons(),G){for(let f of j)f.destroy();return j.clear(),new Promise((f)=>{G.close(()=>{f()})})}}})},J46=Object.freeze({create:UI1});var FI1=3131,cI1=WS.join(WS.dirname(pI1(import.meta.url)),"public_html"),QI1=!0,lI1=!0,iI1=!0,dI1=!0,nI1=!1,oI1=!0,aI1=!0,rI1=!0,b2=($,K)=>$!==void 0?$==="true":K,sI1=()=>{let $=process.env.CAW_ENV_DIR;if(!$)console.error("ERROR: CAW_ENV_DIR environment variable is required"),console.error("Set it to the path of your environment folder, e.g.:"),console.error(' export CAW_ENV_DIR="$HOME/.caw/dev"'),process.exit(1);return{databaseFilepath:WS.join($,"caw.db"),assetsDir:WS.join($,"assets")}},tI1=async($)=>{let K=await J46.create($),q=await K.start();console.log(`Server listening on port ${q}`),process.on("SIGINT",()=>K.stop("SIGINT")),process.on("SIGTERM",()=>K.stop("SIGTERM"))},eI1=()=>{let{databaseFilepath:$,assetsDir:K}=sI1(),q=process.env.CAW_PORT?Number(process.env.CAW_PORT):FI1,Y=process.env.STATIC_PATH||cI1,J=b2(process.env.LAZY_CREATE_DB,QI1),z=b2(process.env.ENABLE_REST,lI1),W=b2(process.env.ENABLE_MCP,iI1),Z=b2(process.env.ENABLE_CLI,dI1),H=b2(process.env.ENABLE_WEBLLM_WSS,nI1),O=b2(process.env.ENABLE_SSE,oI1),X=b2(process.env.ENABLE_STATIC,aI1),P=b2(process.env.ENABLE_CRONS,rI1);return Object.freeze({port:q,staticPath:Y,databaseFilepath:$,assetsDir:K,lazilyCreateDb:J,enableRest:z,enableMcp:W,enableCli:Z,enableWebllmWss:H,enableSse:O,enableStatic:X,enableCrons:P})};await tI1(eI1()).catch(($)=>{console.error("ERROR: Failed to start server:",$),process.exit(1)});
732
+ `)}]}}catch(Y){return{content:[{type:"text",text:`Error: ${Y.message}`}],isError:!0}}},j16={name:"read_job",title:"Read Job",description:"Get job details",schema:aL1,execute:rL1};var v16=[G16,j16];var sL1=({core:$,projectId:K})=>{let q=new la({name:"caw-server",version:"0.0.1"},{capabilities:{tools:{}}}),Y=[...I66,...y66,...Q66,...t66,...Y16,...P16,...T16,...v16];for(let J of Y)q.registerTool(J.name,{title:J.title,description:J.description,inputSchema:J.schema},async(z,W)=>{try{let Z=W?.sessionId||W?.requestInfo?.headers?.["mcp-session-id"];return await J.execute({core:$,projectId:K,sessionId:Z},z)}catch(Z){return console.error(`Tool ${J.name} failed:`,Z),{content:[{type:"text",text:`Tool execution failed: ${Z.message}`}],isError:!0}}});return q},V16=Object.freeze({createMcpServer:sL1});var eL1=ia.default("caw:mcp"),X5=ia.default("caw:mcp:session"),$I1=({core:$})=>{let K=new Map;return Object.freeze({handleRequest:async(W,Z,{projectId:H})=>{let O=W.headers["mcp-session-id"];if(O){let G=K.get(O);if(!G)return X5("Session not found: %s",O),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});if(G.projectId!==H)return X5("Session %s belongs to project %s, not %s",O,G.projectId,H),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});X5("Routing request to existing session: %s",O),G.lastActivity=Date.now();try{return await G.transport.handleRequest(W,Z,W.body)}catch(j){console.error("MCP transport request failed:",j)}}X5("Creating new MCP session for project: %s",H);let X=null,P=new So({sessionIdGenerator:()=>{return X=tL1(),X5("Generated session ID: %s",X),X},onsessioninitialized:(G)=>{X5("Session initialized: %s",G),Z.setHeader("Mcp-Session-Id",G),T.sessionId=G,K.set(G,T),X5("Session stored: %s",G)}});X5("Creating new server for session");let w=V16.createMcpServer({core:$,projectId:H});try{await w.connect(P)}catch(G){return console.error("MCP server connect failed:",G),P.close?.(),w.close?.(),Z.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null})}let T={sessionId:null,transport:P,server:w,projectId:H,createdAt:Date.now(),lastActivity:Date.now()};Z.on("finish",()=>{if(Z.statusCode!==200&&X&&K.has(X))X5("Request failed (status %d), cleaning up session: %s",Z.statusCode,X),K.delete(X),P.close?.(),w.close?.()});try{await P.handleRequest(W,Z,W.body)}catch(G){console.error("MCP transport request failed:",G)}},getSession:(W)=>{return K.get(W)},closeSession:(W)=>{let Z=K.get(W);if(!Z){X5("Cannot close session - not found: %s",W);return}X5("Closing session: %s",W),Z.transport.close?.(),Z.server.close?.(),K.delete(W)},cleanupIdle:(W)=>{let Z=Date.now(),H=0;for(let[O,X]of K.entries())if(Z-X.lastActivity>W)X5("Cleaning up idle session: %s (idle for %dms)",O,Z-X.lastActivity),X.transport.close?.(),X.server.close?.(),K.delete(O),H++;if(H>0)eL1("Cleaned up %d idle sessions",H)}})},A16=Object.freeze({create:$I1});var KI1=86400000,qI1=300000,YI1=({mcpSessionManager:$})=>{let{jobFns:K,controlFns:q}=IC.create({name:"cleanup-idle-mcp-sessions",interval:qI1,execute:async()=>{$.cleanupIdle(KI1)}});return{job:Object.freeze(K),control:q}},M16=Object.freeze({create:YI1});var zS=Y46.default("caw:server"),UI1=async({port:$,databaseFilepath:K,assetsDir:q,lazilyCreateDb:Y,enableRest:J,enableSse:z,enableStatic:W,enableCrons:Z,enableMcp:H=!0,enableCli:O=!0,staticPath:X,kyselyFactory:P})=>{let w=await Pi8.create({databaseFilepath:K,assetsDir:q,lazilyCreateDb:Y,kyselyFactory:P}),T=Zr.default();if(T.use(Zr.default.json()),T.get("/health",(f,k)=>{k.json({status:"ok"})}),T.get("/api/info",(f,k)=>{k.json({version:"1.0.43"})}),J)T.use("/api",Yo8),ji8.create(T,{core:w}),Ai8.create(T,{core:w}),Mi8.create(T,{core:w}),ki8.create(T,{core:w}),Ni8.create(T,{core:w}),Ci8.create(T,{core:w}),rn8.create(T,{core:w}),tn8.create(T,{core:w}),$o8.create(T,{core:w});if(z)qo8.create(T,{core:w});if(W&&X)Ti8.create(T,{staticPath:X});if(H){zS("Initializing MCP subsystem...");let f=A16.create({core:w});w.registerCronJob(M16,{mcpSessionManager:f}),zo8.create(T,{core:w,mcpSessionManager:f}),zS("MCP subsystem initialized")}if(O){zS("Initializing CLI Adapter subsystem...");let f=(await Promise.resolve().then(() => (Q16(),c16))).default,k=(await Promise.resolve().then(() => (n16(),d16))).default,R=(await Promise.resolve().then(() => (e16(),t16))).default,C=(await Promise.resolve().then(() => (q46(),K46))).default,E=R.create({mcpClientFactory:f.create(),aliasGenerator:k.create(),core:w});await E.init(),C.create(T,{cliSessionManager:E}),zS("CLI Adapter subsystem initialized")}if(Z)w.startAllCrons();let G=null,j=new Set;return Object.freeze({app:T,core:w,start:async()=>{return new Promise((f)=>{G=T.listen($,()=>{let k=G.address().port;f(k)}),G.on("connection",(k)=>{j.add(k),k.on("close",()=>{j.delete(k)})})})},stop:async()=>{if(w.stopAllCrons(),G){for(let f of j)f.destroy();return j.clear(),new Promise((f)=>{G.close(()=>{f()})})}}})},J46=Object.freeze({create:UI1});var FI1=3131,cI1=WS.join(WS.dirname(pI1(import.meta.url)),"public_html"),QI1=!0,lI1=!0,iI1=!0,dI1=!0,nI1=!1,oI1=!0,aI1=!0,rI1=!0,b2=($,K)=>$!==void 0?$==="true":K,sI1=()=>{let $=process.env.CAW_ENV_DIR;if(!$)console.error("ERROR: CAW_ENV_DIR environment variable is required"),console.error("Set it to the path of your environment folder, e.g.:"),console.error(' export CAW_ENV_DIR="$HOME/.caw/dev"'),process.exit(1);return{databaseFilepath:WS.join($,"caw.db"),assetsDir:WS.join($,"assets")}},tI1=async($)=>{let K=await J46.create($),q=await K.start();console.log(`Server listening on port ${q}`),process.on("SIGINT",()=>K.stop("SIGINT")),process.on("SIGTERM",()=>K.stop("SIGTERM"))},eI1=()=>{let{databaseFilepath:$,assetsDir:K}=sI1(),q=process.env.CAW_PORT?Number(process.env.CAW_PORT):FI1,Y=process.env.STATIC_PATH||cI1,J=b2(process.env.LAZY_CREATE_DB,QI1),z=b2(process.env.ENABLE_REST,lI1),W=b2(process.env.ENABLE_MCP,iI1),Z=b2(process.env.ENABLE_CLI,dI1),H=b2(process.env.ENABLE_WEBLLM_WSS,nI1),O=b2(process.env.ENABLE_SSE,oI1),X=b2(process.env.ENABLE_STATIC,aI1),P=b2(process.env.ENABLE_CRONS,rI1);return Object.freeze({port:q,staticPath:Y,databaseFilepath:$,assetsDir:K,lazilyCreateDb:J,enableRest:z,enableMcp:W,enableCli:Z,enableWebllmWss:H,enableSse:O,enableStatic:X,enableCrons:P})};await tI1(eI1()).catch(($)=>{console.error("ERROR: Failed to start server:",$),process.exit(1)});