@kelceyp/caw-server 1.0.229 → 1.0.230

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -493,10 +493,10 @@ Expecting `+E.join(", ")+", got '"+(this.terminals_[T]||T)+"'";else o="Parse err
493
493
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
494
494
  //! license : MIT
495
495
  //! momentjs.com
496
- (function(_,v){typeof AU==="object"&&typeof DO<"u"?DO.exports=v():typeof define==="function"&&define.amd?define(v):_.moment=v()})(AU,function(){var _;function v(){return _.apply(null,arguments)}function u(A){_=A}function K(A){return A instanceof Array||Object.prototype.toString.call(A)==="[object Array]"}function q(A){return A!=null&&Object.prototype.toString.call(A)==="[object Object]"}function Y(A,m){return Object.prototype.hasOwnProperty.call(A,m)}function z(A){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(A).length===0;else{var m;for(m in A)if(Y(A,m))return!1;return!0}}function c(A){return A===void 0}function w(A){return typeof A==="number"||Object.prototype.toString.call(A)==="[object Number]"}function J(A){return A instanceof Date||Object.prototype.toString.call(A)==="[object Date]"}function W(A,m){var a=[],r,J2=A.length;for(r=0;r<J2;++r)a.push(m(A[r],r));return a}function O(A,m){for(var a in m)if(Y(m,a))A[a]=m[a];if(Y(m,"toString"))A.toString=m.toString;if(Y(m,"valueOf"))A.valueOf=m.valueOf;return A}function Z(A,m,a,r){return IP(A,m,a,r,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function H(A){if(A._pf==null)A._pf=i();return A._pf}var X;if(Array.prototype.some)X=Array.prototype.some;else X=function(A){var m=Object(this),a=m.length>>>0,r;for(r=0;r<a;r++)if(r in m&&A.call(this,m[r],r,m))return!0;return!1};function p(A){var m=null,a=!1,r=A._d&&!isNaN(A._d.getTime());if(r){if(m=H(A),a=X.call(m.parsedDateParts,function(J2){return J2!=null}),r=m.overflow<0&&!m.empty&&!m.invalidEra&&!m.invalidMonth&&!m.invalidWeekday&&!m.weekdayMismatch&&!m.nullInput&&!m.invalidFormat&&!m.userInvalidated&&(!m.meridiem||m.meridiem&&a),A._strict)r=r&&m.charsLeftOver===0&&m.unusedTokens.length===0&&m.bigHour===void 0}if(Object.isFrozen==null||!Object.isFrozen(A))A._isValid=r;else return r;return A._isValid}function G(A){var m=Z(NaN);if(A!=null)O(H(m),A);else H(m).userInvalidated=!0;return m}var P=v.momentProperties=[],f=!1;function T(A,m){var a,r,J2,r2=P.length;if(!c(m._isAMomentObject))A._isAMomentObject=m._isAMomentObject;if(!c(m._i))A._i=m._i;if(!c(m._f))A._f=m._f;if(!c(m._l))A._l=m._l;if(!c(m._strict))A._strict=m._strict;if(!c(m._tzm))A._tzm=m._tzm;if(!c(m._isUTC))A._isUTC=m._isUTC;if(!c(m._offset))A._offset=m._offset;if(!c(m._pf))A._pf=H(m);if(!c(m._locale))A._locale=m._locale;if(r2>0){for(a=0;a<r2;a++)if(r=P[a],J2=m[r],!c(J2))A[r]=J2}return A}function j(A){if(T(this,A),this._d=new Date(A._d!=null?A._d.getTime():NaN),!this.isValid())this._d=new Date(NaN);if(f===!1)f=!0,v.updateOffset(this),f=!1}function k(A){return A instanceof j||A!=null&&A._isAMomentObject!=null}function M(A){if(v.suppressDeprecationWarnings===!1&&typeof console<"u"&&console.warn)console.warn("Deprecation warning: "+A)}function R(A,m){var a=!0;return O(function(){if(v.deprecationHandler!=null)v.deprecationHandler(null,A);if(a){var r=[],J2,r2,L8,U1=arguments.length;for(r2=0;r2<U1;r2++){if(J2="",typeof arguments[r2]==="object"){J2+=`
497
- [`+r2+"] ";for(L8 in arguments[0])if(Y(arguments[0],L8))J2+=L8+": "+arguments[0][L8]+", ";J2=J2.slice(0,-2)}else J2=arguments[r2];r.push(J2)}M(A+`
496
+ (function(_,v){typeof AU==="object"&&typeof DO<"u"?DO.exports=v():typeof define==="function"&&define.amd?define(v):_.moment=v()})(AU,function(){var _;function v(){return _.apply(null,arguments)}function u(A){_=A}function K(A){return A instanceof Array||Object.prototype.toString.call(A)==="[object Array]"}function q(A){return A!=null&&Object.prototype.toString.call(A)==="[object Object]"}function Y(A,m){return Object.prototype.hasOwnProperty.call(A,m)}function z(A){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(A).length===0;else{var m;for(m in A)if(Y(A,m))return!1;return!0}}function c(A){return A===void 0}function w(A){return typeof A==="number"||Object.prototype.toString.call(A)==="[object Number]"}function J(A){return A instanceof Date||Object.prototype.toString.call(A)==="[object Date]"}function W(A,m){var a=[],r,J2=A.length;for(r=0;r<J2;++r)a.push(m(A[r],r));return a}function O(A,m){for(var a in m)if(Y(m,a))A[a]=m[a];if(Y(m,"toString"))A.toString=m.toString;if(Y(m,"valueOf"))A.valueOf=m.valueOf;return A}function Z(A,m,a,r){return IP(A,m,a,r,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function H(A){if(A._pf==null)A._pf=i();return A._pf}var X;if(Array.prototype.some)X=Array.prototype.some;else X=function(A){var m=Object(this),a=m.length>>>0,r;for(r=0;r<a;r++)if(r in m&&A.call(this,m[r],r,m))return!0;return!1};function p(A){var m=null,a=!1,r=A._d&&!isNaN(A._d.getTime());if(r){if(m=H(A),a=X.call(m.parsedDateParts,function(J2){return J2!=null}),r=m.overflow<0&&!m.empty&&!m.invalidEra&&!m.invalidMonth&&!m.invalidWeekday&&!m.weekdayMismatch&&!m.nullInput&&!m.invalidFormat&&!m.userInvalidated&&(!m.meridiem||m.meridiem&&a),A._strict)r=r&&m.charsLeftOver===0&&m.unusedTokens.length===0&&m.bigHour===void 0}if(Object.isFrozen==null||!Object.isFrozen(A))A._isValid=r;else return r;return A._isValid}function G(A){var m=Z(NaN);if(A!=null)O(H(m),A);else H(m).userInvalidated=!0;return m}var P=v.momentProperties=[],f=!1;function T(A,m){var a,r,J2,r2=P.length;if(!c(m._isAMomentObject))A._isAMomentObject=m._isAMomentObject;if(!c(m._i))A._i=m._i;if(!c(m._f))A._f=m._f;if(!c(m._l))A._l=m._l;if(!c(m._strict))A._strict=m._strict;if(!c(m._tzm))A._tzm=m._tzm;if(!c(m._isUTC))A._isUTC=m._isUTC;if(!c(m._offset))A._offset=m._offset;if(!c(m._pf))A._pf=H(m);if(!c(m._locale))A._locale=m._locale;if(r2>0){for(a=0;a<r2;a++)if(r=P[a],J2=m[r],!c(J2))A[r]=J2}return A}function j(A){if(T(this,A),this._d=new Date(A._d!=null?A._d.getTime():NaN),!this.isValid())this._d=new Date(NaN);if(f===!1)f=!0,v.updateOffset(this),f=!1}function k(A){return A instanceof j||A!=null&&A._isAMomentObject!=null}function M(A){if(v.suppressDeprecationWarnings===!1&&typeof console<"u"&&console.warn)console.warn("Deprecation warning: "+A)}function R(A,m){var a=!0;return O(function(){if(v.deprecationHandler!=null)v.deprecationHandler(null,A);if(a){var r=[],J2,r2,g8,U1=arguments.length;for(r2=0;r2<U1;r2++){if(J2="",typeof arguments[r2]==="object"){J2+=`
497
+ [`+r2+"] ";for(g8 in arguments[0])if(Y(arguments[0],g8))J2+=g8+": "+arguments[0][g8]+", ";J2=J2.slice(0,-2)}else J2=arguments[r2];r.push(J2)}M(A+`
498
498
  Arguments: `+Array.prototype.slice.call(r).join("")+`
499
- `+Error().stack),a=!1}return m.apply(this,arguments)},m)}var n={};function V(A,m){if(v.deprecationHandler!=null)v.deprecationHandler(A,m);if(!n[A])M(m),n[A]=!0}v.suppressDeprecationWarnings=!1,v.deprecationHandler=null;function D(A){return typeof Function<"u"&&A instanceof Function||Object.prototype.toString.call(A)==="[object Function]"}function h(A){var m,a;for(a in A)if(Y(A,a))if(m=A[a],D(m))this[a]=m;else this["_"+a]=m;this._config=A,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function b(A,m){var a=O({},A),r;for(r in m)if(Y(m,r))if(q(A[r])&&q(m[r]))a[r]={},O(a[r],A[r]),O(a[r],m[r]);else if(m[r]!=null)a[r]=m[r];else delete a[r];for(r in A)if(Y(A,r)&&!Y(m,r)&&q(A[r]))a[r]=O({},a[r]);return a}function E(A){if(A!=null)this.set(A)}var o;if(Object.keys)o=Object.keys;else o=function(A){var m,a=[];for(m in A)if(Y(A,m))a.push(m);return a};var U={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function _2(A,m,a){var r=this._calendar[A]||this._calendar.sameElse;return D(r)?r.call(m,a):r}function $2(A,m,a){var r=""+Math.abs(A),J2=m-r.length,r2=A>=0;return(r2?a?"+":"":"-")+Math.pow(10,Math.max(0,J2)).toString().substr(1)+r}var K2=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,w2=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,q2={},i2={};function f2(A,m,a,r){var J2=r;if(typeof r==="string")J2=function(){return this[r]()};if(A)i2[A]=J2;if(m)i2[m[0]]=function(){return $2(J2.apply(this,arguments),m[1],m[2])};if(a)i2[a]=function(){return this.localeData().ordinal(J2.apply(this,arguments),A)}}function y2(A){if(A.match(/\[[\s\S]/))return A.replace(/^\[|\]$/g,"");return A.replace(/\\/g,"")}function x2(A){var m=A.match(K2),a,r;for(a=0,r=m.length;a<r;a++)if(i2[m[a]])m[a]=i2[m[a]];else m[a]=y2(m[a]);return function(J2){var r2="",L8;for(L8=0;L8<r;L8++)r2+=D(m[L8])?m[L8].call(J2,A):m[L8];return r2}}function K8(A,m){if(!A.isValid())return A.localeData().invalidDate();return m=E2(m,A.localeData()),q2[m]=q2[m]||x2(m),q2[m](A)}function E2(A,m){var a=5;function r(J2){return m.longDateFormat(J2)||J2}w2.lastIndex=0;while(a>=0&&w2.test(A))A=A.replace(w2,r),w2.lastIndex=0,a-=1;return A}var k8={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function j8(A){var m=this._longDateFormat[A],a=this._longDateFormat[A.toUpperCase()];if(m||!a)return m;return this._longDateFormat[A]=a.match(K2).map(function(r){if(r==="MMMM"||r==="MM"||r==="DD"||r==="dddd")return r.slice(1);return r}).join(""),this._longDateFormat[A]}var O8="Invalid date";function A2(){return this._invalidDate}var U2="%d",B=/\d{1,2}/;function O2(A){return this._ordinal.replace("%d",A)}var v2={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function G2(A,m,a,r){var J2=this._relativeTime[a];return D(J2)?J2(A,m,a,r):J2.replace(/%d/i,A)}function W2(A,m){var a=this._relativeTime[A>0?"future":"past"];return D(a)?a(m):a.replace(/%s/i,m)}var j2={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function Q2(A){return typeof A==="string"?j2[A]||j2[A.toLowerCase()]:void 0}function R2(A){var m={},a,r;for(r in A)if(Y(A,r)){if(a=Q2(r),a)m[a]=A[r]}return m}var e2={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function S2(A){var m=[],a;for(a in A)if(Y(A,a))m.push({unit:a,priority:e2[a]});return m.sort(function(r,J2){return r.priority-J2.priority}),m}var Y8=/\d/,h2=/\d\d/,D2=/\d{3}/,_8=/\d{4}/,T8=/[+-]?\d{6}/,V8=/\d\d?/,o8=/\d\d\d\d?/,S8=/\d\d\d\d\d\d?/,q1=/\d{1,3}/,t8=/\d{1,4}/,F8=/[+-]?\d{1,6}/,o1=/\d+/,N1=/[+-]?\d+/,e1=/Z|[+-]\d\d:?\d\d/gi,p6=/Z|[+-]\d\d(?::?\d\d)?/gi,y1=/[+-]?\d+(\.\d{1,3})?/,E1=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,J6=/^[1-9]\d?/,M6=/^([1-9]\d|\d)/,H8;H8={};function k2(A,m,a){H8[A]=D(m)?m:function(r,J2){return r&&a?a:m}}function v8(A,m){if(!Y(H8,A))return new RegExp(I8(A));return H8[A](m._strict,m._locale)}function I8(A){return x8(A.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(m,a,r,J2,r2){return a||r||J2||r2}))}function x8(A){return A.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function a2(A){if(A<0)return Math.ceil(A)||0;else return Math.floor(A)}function t2(A){var m=+A,a=0;if(m!==0&&isFinite(m))a=a2(m);return a}var m2={};function z8(A,m){var a,r=m,J2;if(typeof A==="string")A=[A];if(w(m))r=function(r2,L8){L8[m]=t2(r2)};J2=A.length;for(a=0;a<J2;a++)m2[A[a]]=r}function N8(A,m){z8(A,function(a,r,J2,r2){J2._w=J2._w||{},m(a,J2._w,J2,r2)})}function v1(A,m,a){if(m!=null&&Y(m2,A))m2[A](m,a._a,a,A)}function C2(A){return A%4===0&&A%100!==0||A%400===0}var B2=0,F2=1,d2=2,w8=3,E8=4,J1=5,M2=6,L2=7,X2=8;f2("Y",0,0,function(){var A=this.year();return A<=9999?$2(A,4):"+"+A}),f2(0,["YY",2],0,function(){return this.year()%100}),f2(0,["YYYY",4],0,"year"),f2(0,["YYYYY",5],0,"year"),f2(0,["YYYYYY",6,!0],0,"year"),k2("Y",N1),k2("YY",V8,h2),k2("YYYY",t8,_8),k2("YYYYY",F8,T8),k2("YYYYYY",F8,T8),z8(["YYYYY","YYYYYY"],B2),z8("YYYY",function(A,m){m[B2]=A.length===2?v.parseTwoDigitYear(A):t2(A)}),z8("YY",function(A,m){m[B2]=v.parseTwoDigitYear(A)}),z8("Y",function(A,m){m[B2]=parseInt(A,10)});function i8(A){return C2(A)?366:365}v.parseTwoDigitYear=function(A){return t2(A)+(t2(A)>68?1900:2000)};var P2=J8("FullYear",!0);function $8(){return C2(this.year())}function J8(A,m){return function(a){if(a!=null)return R8(this,A,a),v.updateOffset(this,m),this;else return P8(this,A)}}function P8(A,m){if(!A.isValid())return NaN;var{_d:a,_isUTC:r}=A;switch(m){case"Milliseconds":return r?a.getUTCMilliseconds():a.getMilliseconds();case"Seconds":return r?a.getUTCSeconds():a.getSeconds();case"Minutes":return r?a.getUTCMinutes():a.getMinutes();case"Hours":return r?a.getUTCHours():a.getHours();case"Date":return r?a.getUTCDate():a.getDate();case"Day":return r?a.getUTCDay():a.getDay();case"Month":return r?a.getUTCMonth():a.getMonth();case"FullYear":return r?a.getUTCFullYear():a.getFullYear();default:return NaN}}function R8(A,m,a){var r,J2,r2,L8,U1;if(!A.isValid()||isNaN(a))return;switch(r=A._d,J2=A._isUTC,m){case"Milliseconds":return void(J2?r.setUTCMilliseconds(a):r.setMilliseconds(a));case"Seconds":return void(J2?r.setUTCSeconds(a):r.setSeconds(a));case"Minutes":return void(J2?r.setUTCMinutes(a):r.setMinutes(a));case"Hours":return void(J2?r.setUTCHours(a):r.setHours(a));case"Date":return void(J2?r.setUTCDate(a):r.setDate(a));case"FullYear":break;default:return}r2=a,L8=A.month(),U1=A.date(),U1=U1===29&&L8===1&&!C2(r2)?28:U1,J2?r.setUTCFullYear(r2,L8,U1):r.setFullYear(r2,L8,U1)}function l8(A){if(A=Q2(A),D(this[A]))return this[A]();return this}function U8(A,m){if(typeof A==="object"){A=R2(A);var a=S2(A),r,J2=a.length;for(r=0;r<J2;r++)this[a[r].unit](A[a[r].unit])}else if(A=Q2(A),D(this[A]))return this[A](m);return this}function f1(A,m){return(A%m+m)%m}var k1;if(Array.prototype.indexOf)k1=Array.prototype.indexOf;else k1=function(A){var m;for(m=0;m<this.length;++m)if(this[m]===A)return m;return-1};function Y6(A,m){if(isNaN(A)||isNaN(m))return NaN;var a=f1(m,12);return A+=(m-a)/12,a===1?C2(A)?29:28:31-a%7%2}f2("M",["MM",2],"Mo",function(){return this.month()+1}),f2("MMM",0,0,function(A){return this.localeData().monthsShort(this,A)}),f2("MMMM",0,0,function(A){return this.localeData().months(this,A)}),k2("M",V8,J6),k2("MM",V8,h2),k2("MMM",function(A,m){return m.monthsShortRegex(A)}),k2("MMMM",function(A,m){return m.monthsRegex(A)}),z8(["M","MM"],function(A,m){m[F2]=t2(A)-1}),z8(["MMM","MMMM"],function(A,m,a,r){var J2=a._locale.monthsParse(A,r,a._strict);if(J2!=null)m[F2]=J2;else H(a).invalidMonth=A});var q6="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),G4="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),z$=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,k4=E1,r4=E1;function l(A,m){if(!A)return K(this._months)?this._months:this._months.standalone;return K(this._months)?this._months[A.month()]:this._months[(this._months.isFormat||z$).test(m)?"format":"standalone"][A.month()]}function e(A,m){if(!A)return K(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;return K(this._monthsShort)?this._monthsShort[A.month()]:this._monthsShort[z$.test(m)?"format":"standalone"][A.month()]}function S(A,m,a){var r,J2,r2,L8=A.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[];for(r=0;r<12;++r)r2=Z([2000,r]),this._shortMonthsParse[r]=this.monthsShort(r2,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(r2,"").toLocaleLowerCase()}if(a)if(m==="MMM")return J2=k1.call(this._shortMonthsParse,L8),J2!==-1?J2:null;else return J2=k1.call(this._longMonthsParse,L8),J2!==-1?J2:null;else if(m==="MMM"){if(J2=k1.call(this._shortMonthsParse,L8),J2!==-1)return J2;return J2=k1.call(this._longMonthsParse,L8),J2!==-1?J2:null}else{if(J2=k1.call(this._longMonthsParse,L8),J2!==-1)return J2;return J2=k1.call(this._shortMonthsParse,L8),J2!==-1?J2:null}}function g(A,m,a){var r,J2,r2;if(this._monthsParseExact)return S.call(this,A,m,a);if(!this._monthsParse)this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[];for(r=0;r<12;r++){if(J2=Z([2000,r]),a&&!this._longMonthsParse[r])this._longMonthsParse[r]=new RegExp("^"+this.months(J2,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(J2,"").replace(".","")+"$","i");if(!a&&!this._monthsParse[r])r2="^"+this.months(J2,"")+"|^"+this.monthsShort(J2,""),this._monthsParse[r]=new RegExp(r2.replace(".",""),"i");if(a&&m==="MMMM"&&this._longMonthsParse[r].test(A))return r;else if(a&&m==="MMM"&&this._shortMonthsParse[r].test(A))return r;else if(!a&&this._monthsParse[r].test(A))return r}}function F(A,m){if(!A.isValid())return A;if(typeof m==="string"){if(/^\d+$/.test(m))m=t2(m);else if(m=A.localeData().monthsParse(m),!w(m))return A}var a=m,r=A.date();return r=r<29?r:Math.min(r,Y6(A.year(),a)),A._isUTC?A._d.setUTCMonth(a,r):A._d.setMonth(a,r),A}function y(A){if(A!=null)return F(this,A),v.updateOffset(this,!0),this;else return P8(this,"Month")}function t(){return Y6(this.year(),this.month())}function c2(A){if(this._monthsParseExact){if(!Y(this,"_monthsRegex"))V2.call(this);if(A)return this._monthsShortStrictRegex;else return this._monthsShortRegex}else{if(!Y(this,"_monthsShortRegex"))this._monthsShortRegex=k4;return this._monthsShortStrictRegex&&A?this._monthsShortStrictRegex:this._monthsShortRegex}}function H2(A){if(this._monthsParseExact){if(!Y(this,"_monthsRegex"))V2.call(this);if(A)return this._monthsStrictRegex;else return this._monthsRegex}else{if(!Y(this,"_monthsRegex"))this._monthsRegex=r4;return this._monthsStrictRegex&&A?this._monthsStrictRegex:this._monthsRegex}}function V2(){function A(N6,m_){return m_.length-N6.length}var m=[],a=[],r=[],J2,r2,L8,U1;for(J2=0;J2<12;J2++)r2=Z([2000,J2]),L8=x8(this.monthsShort(r2,"")),U1=x8(this.months(r2,"")),m.push(L8),a.push(U1),r.push(U1),r.push(L8);m.sort(A),a.sort(A),r.sort(A),this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+m.join("|")+")","i")}function n2(A,m,a,r,J2,r2,L8){var U1;if(A<100&&A>=0){if(U1=new Date(A+400,m,a,r,J2,r2,L8),isFinite(U1.getFullYear()))U1.setFullYear(A)}else U1=new Date(A,m,a,r,J2,r2,L8);return U1}function b2(A){var m,a;if(A<100&&A>=0){if(a=Array.prototype.slice.call(arguments),a[0]=A+400,m=new Date(Date.UTC.apply(null,a)),isFinite(m.getUTCFullYear()))m.setUTCFullYear(A)}else m=new Date(Date.UTC.apply(null,arguments));return m}function l2(A,m,a){var r=7+m-a,J2=(7+b2(A,0,r).getUTCDay()-m)%7;return-J2+r-1}function c8(A,m,a,r,J2){var r2=(7+a-r)%7,L8=l2(A,r,J2),U1=1+7*(m-1)+r2+L8,N6,m_;if(U1<=0)N6=A-1,m_=i8(N6)+U1;else if(U1>i8(A))N6=A+1,m_=U1-i8(A);else N6=A,m_=U1;return{year:N6,dayOfYear:m_}}function A8(A,m,a){var r=l2(A.year(),m,a),J2=Math.floor((A.dayOfYear()-r-1)/7)+1,r2,L8;if(J2<1)L8=A.year()-1,r2=J2+f8(L8,m,a);else if(J2>f8(A.year(),m,a))r2=J2-f8(A.year(),m,a),L8=A.year()+1;else L8=A.year(),r2=J2;return{week:r2,year:L8}}function f8(A,m,a){var r=l2(A,m,a),J2=l2(A+1,m,a);return(i8(A)-r+J2)/7}f2("w",["ww",2],"wo","week"),f2("W",["WW",2],"Wo","isoWeek"),k2("w",V8,J6),k2("ww",V8,h2),k2("W",V8,J6),k2("WW",V8,h2),N8(["w","ww","W","WW"],function(A,m,a,r){m[r.substr(0,1)]=t2(A)});function a8(A){return A8(A,this._week.dow,this._week.doy).week}var B8={dow:0,doy:6};function Z1(){return this._week.dow}function h8(){return this._week.doy}function d8(A){var m=this.localeData().week(this);return A==null?m:this.add((A-m)*7,"d")}function A1(A){var m=A8(this,1,4).week;return A==null?m:this.add((A-m)*7,"d")}f2("d",0,"do","day"),f2("dd",0,0,function(A){return this.localeData().weekdaysMin(this,A)}),f2("ddd",0,0,function(A){return this.localeData().weekdaysShort(this,A)}),f2("dddd",0,0,function(A){return this.localeData().weekdays(this,A)}),f2("e",0,0,"weekday"),f2("E",0,0,"isoWeekday"),k2("d",V8),k2("e",V8),k2("E",V8),k2("dd",function(A,m){return m.weekdaysMinRegex(A)}),k2("ddd",function(A,m){return m.weekdaysShortRegex(A)}),k2("dddd",function(A,m){return m.weekdaysRegex(A)}),N8(["dd","ddd","dddd"],function(A,m,a,r){var J2=a._locale.weekdaysParse(A,r,a._strict);if(J2!=null)m.d=J2;else H(a).invalidWeekday=A}),N8(["d","e","E"],function(A,m,a,r){m[r]=t2(A)});function W6(A,m){if(typeof A!=="string")return A;if(!isNaN(A))return parseInt(A,10);if(A=m.weekdaysParse(A),typeof A==="number")return A;return null}function y6(A,m){if(typeof A==="string")return m.weekdaysParse(A)%7||7;return isNaN(A)?null:A}function x6(A,m){return A.slice(m,7).concat(A.slice(0,m))}var g6="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),B6="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),R6="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),s6=E1,c4=E1,c$=E1;function D6(A,m){var a=K(this._weekdays)?this._weekdays:this._weekdays[A&&A!==!0&&this._weekdays.isFormat.test(m)?"format":"standalone"];return A===!0?x6(a,this._week.dow):A?a[A.day()]:a}function T$(A){return A===!0?x6(this._weekdaysShort,this._week.dow):A?this._weekdaysShort[A.day()]:this._weekdaysShort}function c1(A){return A===!0?x6(this._weekdaysMin,this._week.dow):A?this._weekdaysMin[A.day()]:this._weekdaysMin}function _1(A,m,a){var r,J2,r2,L8=A.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[];for(r=0;r<7;++r)r2=Z([2000,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(r2,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(r2,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(r2,"").toLocaleLowerCase()}if(a)if(m==="dddd")return J2=k1.call(this._weekdaysParse,L8),J2!==-1?J2:null;else if(m==="ddd")return J2=k1.call(this._shortWeekdaysParse,L8),J2!==-1?J2:null;else return J2=k1.call(this._minWeekdaysParse,L8),J2!==-1?J2:null;else if(m==="dddd"){if(J2=k1.call(this._weekdaysParse,L8),J2!==-1)return J2;if(J2=k1.call(this._shortWeekdaysParse,L8),J2!==-1)return J2;return J2=k1.call(this._minWeekdaysParse,L8),J2!==-1?J2:null}else if(m==="ddd"){if(J2=k1.call(this._shortWeekdaysParse,L8),J2!==-1)return J2;if(J2=k1.call(this._weekdaysParse,L8),J2!==-1)return J2;return J2=k1.call(this._minWeekdaysParse,L8),J2!==-1?J2:null}else{if(J2=k1.call(this._minWeekdaysParse,L8),J2!==-1)return J2;if(J2=k1.call(this._weekdaysParse,L8),J2!==-1)return J2;return J2=k1.call(this._shortWeekdaysParse,L8),J2!==-1?J2:null}}function h6(A,m,a){var r,J2,r2;if(this._weekdaysParseExact)return _1.call(this,A,m,a);if(!this._weekdaysParse)this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[];for(r=0;r<7;r++){if(J2=Z([2000,1]).day(r),a&&!this._fullWeekdaysParse[r])this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(J2,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(J2,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(J2,"").replace(".","\\.?")+"$","i");if(!this._weekdaysParse[r])r2="^"+this.weekdays(J2,"")+"|^"+this.weekdaysShort(J2,"")+"|^"+this.weekdaysMin(J2,""),this._weekdaysParse[r]=new RegExp(r2.replace(".",""),"i");if(a&&m==="dddd"&&this._fullWeekdaysParse[r].test(A))return r;else if(a&&m==="ddd"&&this._shortWeekdaysParse[r].test(A))return r;else if(a&&m==="dd"&&this._minWeekdaysParse[r].test(A))return r;else if(!a&&this._weekdaysParse[r].test(A))return r}}function H_(A){if(!this.isValid())return A!=null?this:NaN;var m=P8(this,"Day");if(A!=null)return A=W6(A,this.localeData()),this.add(A-m,"d");else return m}function S4(A){if(!this.isValid())return A!=null?this:NaN;var m=(this.day()+7-this.localeData()._week.dow)%7;return A==null?m:this.add(A-m,"d")}function a4(A){if(!this.isValid())return A!=null?this:NaN;if(A!=null){var m=y6(A,this.localeData());return this.day(this.day()%7?m:m-7)}else return this.day()||7}function C4(A){if(this._weekdaysParseExact){if(!Y(this,"_weekdaysRegex"))y_.call(this);if(A)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!Y(this,"_weekdaysRegex"))this._weekdaysRegex=s6;return this._weekdaysStrictRegex&&A?this._weekdaysStrictRegex:this._weekdaysRegex}}function f4(A){if(this._weekdaysParseExact){if(!Y(this,"_weekdaysRegex"))y_.call(this);if(A)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!Y(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=c4;return this._weekdaysShortStrictRegex&&A?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function x3(A){if(this._weekdaysParseExact){if(!Y(this,"_weekdaysRegex"))y_.call(this);if(A)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!Y(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=c$;return this._weekdaysMinStrictRegex&&A?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function y_(){function A(bv,bK){return bK.length-bv.length}var m=[],a=[],r=[],J2=[],r2,L8,U1,N6,m_;for(r2=0;r2<7;r2++)L8=Z([2000,1]).day(r2),U1=x8(this.weekdaysMin(L8,"")),N6=x8(this.weekdaysShort(L8,"")),m_=x8(this.weekdays(L8,"")),m.push(U1),a.push(N6),r.push(m_),J2.push(U1),J2.push(N6),J2.push(m_);m.sort(A),a.sort(A),r.sort(A),J2.sort(A),this._weekdaysRegex=new RegExp("^("+J2.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+m.join("|")+")","i")}function U$(){return this.hours()%12||12}function I9(){return this.hours()||24}f2("H",["HH",2],0,"hour"),f2("h",["hh",2],0,U$),f2("k",["kk",2],0,I9),f2("hmm",0,0,function(){return""+U$.apply(this)+$2(this.minutes(),2)}),f2("hmmss",0,0,function(){return""+U$.apply(this)+$2(this.minutes(),2)+$2(this.seconds(),2)}),f2("Hmm",0,0,function(){return""+this.hours()+$2(this.minutes(),2)}),f2("Hmmss",0,0,function(){return""+this.hours()+$2(this.minutes(),2)+$2(this.seconds(),2)});function X5(A,m){f2(A,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),m)})}X5("a",!0),X5("A",!1);function cu(A,m){return m._meridiemParse}k2("a",cu),k2("A",cu),k2("H",V8,M6),k2("h",V8,J6),k2("k",V8,J6),k2("HH",V8,h2),k2("hh",V8,h2),k2("kk",V8,h2),k2("hmm",o8),k2("hmmss",S8),k2("Hmm",o8),k2("Hmmss",S8),z8(["H","HH"],w8),z8(["k","kk"],function(A,m,a){var r=t2(A);m[w8]=r===24?0:r}),z8(["a","A"],function(A,m,a){a._isPm=a._locale.isPM(A),a._meridiem=A}),z8(["h","hh"],function(A,m,a){m[w8]=t2(A),H(a).bigHour=!0}),z8("hmm",function(A,m,a){var r=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r)),H(a).bigHour=!0}),z8("hmmss",function(A,m,a){var r=A.length-4,J2=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r,2)),m[J1]=t2(A.substr(J2)),H(a).bigHour=!0}),z8("Hmm",function(A,m,a){var r=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r))}),z8("Hmmss",function(A,m,a){var r=A.length-4,J2=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r,2)),m[J1]=t2(A.substr(J2))});function ZY(A){return(A+"").toLowerCase().charAt(0)==="p"}var iY=/[ap]\.?m?\.?/i,HY=J8("Hours",!0);function E_(A,m,a){if(A>11)return a?"pm":"PM";else return a?"am":"AM"}var R$={calendar:U,longDateFormat:k8,invalidDate:O8,ordinal:U2,dayOfMonthOrdinalParse:B,relativeTime:v2,months:q6,monthsShort:G4,week:B8,weekdays:g6,weekdaysMin:R6,weekdaysShort:B6,meridiemParse:iY},D_={},av={},p5;function XY(A,m){var a,r=Math.min(A.length,m.length);for(a=0;a<r;a+=1)if(A[a]!==m[a])return a;return r}function hK(A){return A?A.toLowerCase().replace("_","-"):A}function wu(A){var m=0,a,r,J2,r2;while(m<A.length){r2=hK(A[m]).split("-"),a=r2.length,r=hK(A[m+1]),r=r?r.split("-"):null;while(a>0){if(J2=Z2(r2.slice(0,a).join("-")),J2)return J2;if(r&&r.length>=a&&XY(r2,r)>=a-1)break;a--}m++}return p5}function z2(A){return!!(A&&A.match("^[^/\\\\]*$"))}function Z2(A){var m=null,a;if(D_[A]===void 0&&typeof DO<"u"&&DO&&DO.exports&&z2(A))try{m=p5._abbr,a=I2,a("./locale/"+A),T2(m)}catch(r){D_[A]=null}return D_[A]}function T2(A,m){var a;if(A){if(c(m))a=M8(A);else a=q8(A,m);if(a)p5=a;else if(typeof console<"u"&&console.warn)console.warn("Locale "+A+" not found. Did you forget to load it?")}return p5._abbr}function q8(A,m){if(m!==null){var a,r=R$;if(m.abbr=A,D_[A]!=null)V("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=D_[A]._config;else if(m.parentLocale!=null)if(D_[m.parentLocale]!=null)r=D_[m.parentLocale]._config;else if(a=Z2(m.parentLocale),a!=null)r=a._config;else{if(!av[m.parentLocale])av[m.parentLocale]=[];return av[m.parentLocale].push({name:A,config:m}),null}if(D_[A]=new E(b(r,m)),av[A])av[A].forEach(function(J2){q8(J2.name,J2.config)});return T2(A),D_[A]}else return delete D_[A],null}function n8(A,m){if(m!=null){var a,r,J2=R$;if(D_[A]!=null&&D_[A].parentLocale!=null)D_[A].set(b(D_[A]._config,m));else{if(r=Z2(A),r!=null)J2=r._config;if(m=b(J2,m),r==null)m.abbr=A;a=new E(m),a.parentLocale=D_[A],D_[A]=a}T2(A)}else if(D_[A]!=null){if(D_[A].parentLocale!=null){if(D_[A]=D_[A].parentLocale,A===T2())T2(A)}else if(D_[A]!=null)delete D_[A]}return D_[A]}function M8(A){var m;if(A&&A._locale&&A._locale._abbr)A=A._locale._abbr;if(!A)return p5;if(!K(A)){if(m=Z2(A),m)return m;A=[A]}return wu(A)}function C8(){return o(D_)}function b8(A){var m,a=A._a;if(a&&H(A).overflow===-2){if(m=a[F2]<0||a[F2]>11?F2:a[d2]<1||a[d2]>Y6(a[B2],a[F2])?d2:a[w8]<0||a[w8]>24||a[w8]===24&&(a[E8]!==0||a[J1]!==0||a[M2]!==0)?w8:a[E8]<0||a[E8]>59?E8:a[J1]<0||a[J1]>59?J1:a[M2]<0||a[M2]>999?M2:-1,H(A)._overflowDayOfYear&&(m<B2||m>d2))m=d2;if(H(A)._overflowWeeks&&m===-1)m=L2;if(H(A)._overflowWeekday&&m===-1)m=X2;H(A).overflow=m}return A}var e8=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,s1=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,w_=/Z|[+-]\d\d(?::?\d\d)?/,J_=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],t6=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ov=/^\/?Date\((-?\d+)/i,Ju=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,X7={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function G5(A){var m,a,r=A._i,J2=e8.exec(r)||s1.exec(r),r2,L8,U1,N6,m_=J_.length,bv=t6.length;if(J2){H(A).iso=!0;for(m=0,a=m_;m<a;m++)if(J_[m][1].exec(J2[1])){L8=J_[m][0],r2=J_[m][2]!==!1;break}if(L8==null){A._isValid=!1;return}if(J2[3]){for(m=0,a=bv;m<a;m++)if(t6[m][1].exec(J2[3])){U1=(J2[2]||" ")+t6[m][0];break}if(U1==null){A._isValid=!1;return}}if(!r2&&U1!=null){A._isValid=!1;return}if(J2[4])if(w_.exec(J2[4]))N6="Z";else{A._isValid=!1;return}A._f=L8+(U1||"")+(N6||""),bH(A)}else A._isValid=!1}function P_(A,m,a,r,J2,r2){var L8=[Z6(A),G4.indexOf(m),parseInt(a,10),parseInt(r,10),parseInt(J2,10)];if(r2)L8.push(parseInt(r2,10));return L8}function Z6(A){var m=parseInt(A,10);if(m<=49)return 2000+m;else if(m<=999)return 1900+m;return m}function d1(A){return A.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function i6(A,m,a){if(A){var r=B6.indexOf(A),J2=new Date(m[0],m[1],m[2]).getDay();if(r!==J2)return H(a).weekdayMismatch=!0,a._isValid=!1,!1}return!0}function e6(A,m,a){if(A)return X7[A];else if(m)return 0;else{var r=parseInt(a,10),J2=r%100,r2=(r-J2)/100;return r2*60+J2}}function $4(A){var m=Ju.exec(d1(A._i)),a;if(m){if(a=P_(m[4],m[3],m[2],m[5],m[6],m[7]),!i6(m[1],a,A))return;A._a=a,A._tzm=e6(m[8],m[9],m[10]),A._d=b2.apply(null,A._a),A._d.setUTCMinutes(A._d.getUTCMinutes()-A._tzm),H(A).rfc2822=!0}else A._isValid=!1}function s4(A){var m=Ov.exec(A._i);if(m!==null){A._d=new Date(+m[1]);return}if(G5(A),A._isValid===!1)delete A._isValid;else return;if($4(A),A._isValid===!1)delete A._isValid;else return;if(A._strict)A._isValid=!1;else v.createFromInputFallback(A)}v.createFromInputFallback=R("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(A){A._d=new Date(A._i+(A._useUTC?" UTC":""))});function h$(A,m,a){if(A!=null)return A;if(m!=null)return m;return a}function p7(A){var m=new Date(v.now());if(A._useUTC)return[m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate()];return[m.getFullYear(),m.getMonth(),m.getDate()]}function l9(A){var m,a,r=[],J2,r2,L8;if(A._d)return;if(J2=p7(A),A._w&&A._a[d2]==null&&A._a[F2]==null)CK(A);if(A._dayOfYear!=null){if(L8=h$(A._a[B2],J2[B2]),A._dayOfYear>i8(L8)||A._dayOfYear===0)H(A)._overflowDayOfYear=!0;a=b2(L8,0,A._dayOfYear),A._a[F2]=a.getUTCMonth(),A._a[d2]=a.getUTCDate()}for(m=0;m<3&&A._a[m]==null;++m)A._a[m]=r[m]=J2[m];for(;m<7;m++)A._a[m]=r[m]=A._a[m]==null?m===2?1:0:A._a[m];if(A._a[w8]===24&&A._a[E8]===0&&A._a[J1]===0&&A._a[M2]===0)A._nextDay=!0,A._a[w8]=0;if(A._d=(A._useUTC?b2:n2).apply(null,r),r2=A._useUTC?A._d.getUTCDay():A._d.getDay(),A._tzm!=null)A._d.setUTCMinutes(A._d.getUTCMinutes()-A._tzm);if(A._nextDay)A._a[w8]=24;if(A._w&&typeof A._w.d<"u"&&A._w.d!==r2)H(A).weekdayMismatch=!0}function CK(A){var m,a,r,J2,r2,L8,U1,N6,m_;if(m=A._w,m.GG!=null||m.W!=null||m.E!=null){if(r2=1,L8=4,a=h$(m.GG,A._a[B2],A8(D4(),1,4).year),r=h$(m.W,1),J2=h$(m.E,1),J2<1||J2>7)N6=!0}else if(r2=A._locale._week.dow,L8=A._locale._week.doy,m_=A8(D4(),r2,L8),a=h$(m.gg,A._a[B2],m_.year),r=h$(m.w,m_.week),m.d!=null){if(J2=m.d,J2<0||J2>6)N6=!0}else if(m.e!=null){if(J2=m.e+r2,m.e<0||m.e>6)N6=!0}else J2=r2;if(r<1||r>f8(a,r2,L8))H(A)._overflowWeeks=!0;else if(N6!=null)H(A)._overflowWeekday=!0;else U1=c8(a,r,J2,r2,L8),A._a[B2]=U1.year,A._dayOfYear=U1.dayOfYear}v.ISO_8601=function(){},v.RFC_2822=function(){};function bH(A){if(A._f===v.ISO_8601){G5(A);return}if(A._f===v.RFC_2822){$4(A);return}A._a=[],H(A).empty=!0;var m=""+A._i,a,r,J2,r2,L8,U1=m.length,N6=0,m_,bv;J2=E2(A._f,A._locale).match(K2)||[],bv=J2.length;for(a=0;a<bv;a++){if(r2=J2[a],r=(m.match(v8(r2,A))||[])[0],r){if(L8=m.substr(0,m.indexOf(r)),L8.length>0)H(A).unusedInput.push(L8);m=m.slice(m.indexOf(r)+r.length),N6+=r.length}if(i2[r2]){if(r)H(A).empty=!1;else H(A).unusedTokens.push(r2);v1(r2,r,A)}else if(A._strict&&!r)H(A).unusedTokens.push(r2)}if(H(A).charsLeftOver=U1-N6,m.length>0)H(A).unusedInput.push(m);if(A._a[w8]<=12&&H(A).bigHour===!0&&A._a[w8]>0)H(A).bigHour=void 0;if(H(A).parsedDateParts=A._a.slice(0),H(A).meridiem=A._meridiem,A._a[w8]=Gg(A._locale,A._a[w8],A._meridiem),m_=H(A).era,m_!==null)A._a[B2]=A._locale.erasConvertYear(m_,A._a[B2]);l9(A),b8(A)}function Gg(A,m,a){var r;if(a==null)return m;if(A.meridiemHour!=null)return A.meridiemHour(m,a);else if(A.isPM!=null){if(r=A.isPM(a),r&&m<12)m+=12;if(!r&&m===12)m=0;return m}else return m}function fg(A){var m,a,r,J2,r2,L8,U1=!1,N6=A._f.length;if(N6===0){H(A).invalidFormat=!0,A._d=new Date(NaN);return}for(J2=0;J2<N6;J2++){if(r2=0,L8=!1,m=T({},A),A._useUTC!=null)m._useUTC=A._useUTC;if(m._f=A._f[J2],bH(m),p(m))L8=!0;if(r2+=H(m).charsLeftOver,r2+=H(m).unusedTokens.length*10,H(m).score=r2,!U1){if(r==null||r2<r||L8){if(r=r2,a=m,L8)U1=!0}}else if(r2<r)r=r2,a=m}O(A,a||m)}function Ag(A){if(A._d)return;var m=R2(A._i),a=m.day===void 0?m.date:m.day;A._a=W([m.year,m.month,a,m.hour,m.minute,m.second,m.millisecond],function(r){return r&&parseInt(r,10)}),l9(A)}function Tg(A){var m=new j(b8(bP(A)));if(m._nextDay)m.add(1,"d"),m._nextDay=void 0;return m}function bP(A){var{_i:m,_f:a}=A;if(A._locale=A._locale||M8(A._l),m===null||a===void 0&&m==="")return G({nullInput:!0});if(typeof m==="string")A._i=m=A._locale.preparse(m);if(k(m))return new j(b8(m));else if(J(m))A._d=m;else if(K(a))fg(A);else if(a)bH(A);else Pg(A);if(!p(A))A._d=null;return A}function Pg(A){var m=A._i;if(c(m))A._d=new Date(v.now());else if(J(m))A._d=new Date(m.valueOf());else if(typeof m==="string")s4(A);else if(K(m))A._a=W(m.slice(0),function(a){return parseInt(a,10)}),l9(A);else if(q(m))Ag(A);else if(w(m))A._d=new Date(m);else v.createFromInputFallback(A)}function IP(A,m,a,r,J2){var r2={};if(m===!0||m===!1)r=m,m=void 0;if(a===!0||a===!1)r=a,a=void 0;if(q(A)&&z(A)||K(A)&&A.length===0)A=void 0;return r2._isAMomentObject=!0,r2._useUTC=r2._isUTC=J2,r2._l=a,r2._i=A,r2._f=m,r2._strict=r,Tg(r2)}function D4(A,m,a,r){return IP(A,m,a,r,!1)}var jg=R("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var A=D4.apply(null,arguments);if(this.isValid()&&A.isValid())return A<this?this:A;else return G()}),lP=R("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var A=D4.apply(null,arguments);if(this.isValid()&&A.isValid())return A>this?this:A;else return G()});function yP(A,m){var a,r;if(m.length===1&&K(m[0]))m=m[0];if(!m.length)return D4();a=m[0];for(r=1;r<m.length;++r)if(!m[r].isValid()||m[r][A](a))a=m[r];return a}function Vg(){var A=[].slice.call(arguments,0);return yP("isBefore",A)}function ng(){var A=[].slice.call(arguments,0);return yP("isAfter",A)}var d=function(){return Date.now?Date.now():+new Date},s=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Q(A){var m,a=!1,r,J2=s.length;for(m in A)if(Y(A,m)&&!(k1.call(s,m)!==-1&&(A[m]==null||!isNaN(A[m]))))return!1;for(r=0;r<J2;++r)if(A[s[r]]){if(a)return!1;if(parseFloat(A[s[r]])!==t2(A[s[r]]))a=!0}return!0}function u2(){return this._isValid}function p2(){return l3(NaN)}function N2(A){var m=R2(A),a=m.year||0,r=m.quarter||0,J2=m.month||0,r2=m.week||m.isoWeek||0,L8=m.day||0,U1=m.hour||0,N6=m.minute||0,m_=m.second||0,bv=m.millisecond||0;this._isValid=Q(m),this._milliseconds=+bv+m_*1000+N6*60000+U1*1000*60*60,this._days=+L8+r2*7,this._months=+J2+r*3+a*12,this._data={},this._locale=M8(),this._bubble()}function u8(A){return A instanceof N2}function p8(A){if(A<0)return Math.round(-1*A)*-1;else return Math.round(A)}function g8(A,m,a){var r=Math.min(A.length,m.length),J2=Math.abs(A.length-m.length),r2=0,L8;for(L8=0;L8<r;L8++)if(a&&A[L8]!==m[L8]||!a&&t2(A[L8])!==t2(m[L8]))r2++;return r2+J2}function T1(A,m){f2(A,0,0,function(){var a=this.utcOffset(),r="+";if(a<0)a=-a,r="-";return r+$2(~~(a/60),2)+m+$2(~~a%60,2)})}T1("Z",":"),T1("ZZ",""),k2("Z",p6),k2("ZZ",p6),z8(["Z","ZZ"],function(A,m,a){a._useUTC=!0,a._tzm=R1(p6,A)});var P1=/([\+\-]|\d\d)/gi;function R1(A,m){var a=(m||"").match(A),r,J2,r2;if(a===null)return null;return r=a[a.length-1]||[],J2=(r+"").match(P1)||["-",0,0],r2=+(J2[1]*60)+t2(J2[2]),r2===0?0:J2[0]==="+"?r2:-r2}function h1(A,m){var a,r;if(m._isUTC)return a=m.clone(),r=(k(A)||J(A)?A.valueOf():D4(A).valueOf())-a.valueOf(),a._d.setTime(a._d.valueOf()+r),v.updateOffset(a,!1),a;else return D4(A).local()}function r8(A){return-Math.round(A._d.getTimezoneOffset())}v.updateOffset=function(){};function j1(A,m,a){var r=this._offset||0,J2;if(!this.isValid())return A!=null?this:NaN;if(A!=null){if(typeof A==="string"){if(A=R1(p6,A),A===null)return this}else if(Math.abs(A)<16&&!a)A=A*60;if(!this._isUTC&&m)J2=r8(this);if(this._offset=A,this._isUTC=!0,J2!=null)this.add(J2,"m");if(r!==A){if(!m||this._changeInProgress)H9(this,l3(A-r,"m"),1,!1);else if(!this._changeInProgress)this._changeInProgress=!0,v.updateOffset(this,!0),this._changeInProgress=null}return this}else return this._isUTC?r:r8(this)}function G6(A,m){if(A!=null){if(typeof A!=="string")A=-A;return this.utcOffset(A,m),this}else return-this.utcOffset()}function j_(A){return this.utcOffset(0,A)}function w4(A){if(this._isUTC){if(this.utcOffset(0,A),this._isUTC=!1,A)this.subtract(r8(this),"m")}return this}function V6(){if(this._tzm!=null)this.utcOffset(this._tzm,!1,!0);else if(typeof this._i==="string"){var A=R1(e1,this._i);if(A!=null)this.utcOffset(A);else this.utcOffset(0,!0)}return this}function E4(A){if(!this.isValid())return!1;return A=A?D4(A).utcOffset():0,(this.utcOffset()-A)%60===0}function N3(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function f5(){if(!c(this._isDSTShifted))return this._isDSTShifted;var A={},m;if(T(A,this),A=bP(A),A._a)m=A._isUTC?Z(A._a):D4(A._a),this._isDSTShifted=this.isValid()&&g8(A._a,m.toArray())>0;else this._isDSTShifted=!1;return this._isDSTShifted}function Wu(){return this.isValid()?!this._isUTC:!1}function Ou(){return this.isValid()?this._isUTC:!1}function A5(){return this.isValid()?this._isUTC&&this._offset===0:!1}var K3=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,EK=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function l3(A,m){var a=A,r=null,J2,r2,L8;if(u8(A))a={ms:A._milliseconds,d:A._days,M:A._months};else if(w(A)||!isNaN(+A))if(a={},m)a[m]=+A;else a.milliseconds=+A;else if(r=K3.exec(A))J2=r[1]==="-"?-1:1,a={y:0,d:t2(r[d2])*J2,h:t2(r[w8])*J2,m:t2(r[E8])*J2,s:t2(r[J1])*J2,ms:t2(p8(r[M2]*1000))*J2};else if(r=EK.exec(A))J2=r[1]==="-"?-1:1,a={y:y9(r[2],J2),M:y9(r[3],J2),w:y9(r[4],J2),d:y9(r[5],J2),h:y9(r[6],J2),m:y9(r[7],J2),s:y9(r[8],J2)};else if(a==null)a={};else if(typeof a==="object"&&(("from"in a)||("to"in a)))L8=B9(D4(a.from),D4(a.to)),a={},a.ms=L8.milliseconds,a.M=L8.months;if(r2=new N2(a),u8(A)&&Y(A,"_locale"))r2._locale=A._locale;if(u8(A)&&Y(A,"_isValid"))r2._isValid=A._isValid;return r2}l3.fn=N2.prototype,l3.invalid=p2;function y9(A,m){var a=A&&parseFloat(A.replace(",","."));return(isNaN(a)?0:a)*m}function LK(A,m){var a={};if(a.months=m.month()-A.month()+(m.year()-A.year())*12,A.clone().add(a.months,"M").isAfter(m))--a.months;return a.milliseconds=+m-+A.clone().add(a.months,"M"),a}function B9(A,m){var a;if(!(A.isValid()&&m.isValid()))return{milliseconds:0,months:0};if(m=h1(m,A),A.isBefore(m))a=LK(A,m);else a=LK(m,A),a.milliseconds=-a.milliseconds,a.months=-a.months;return a}function xJ(A,m){return function(a,r){var J2,r2;if(r!==null&&!isNaN(+r))V(m,"moment()."+m+"(period, number) is deprecated. Please use moment()."+m+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r2=a,a=r,r=r2;return J2=l3(a,r),H9(this,J2,A),this}}function H9(A,m,a,r){var J2=m._milliseconds,r2=p8(m._days),L8=p8(m._months);if(!A.isValid())return;if(r=r==null?!0:r,L8)F(A,P8(A,"Month")+L8*a);if(r2)R8(A,"Date",P8(A,"Date")+r2*a);if(J2)A._d.setTime(A._d.valueOf()+J2*a);if(r)v.updateOffset(A,r2||L8)}var wc=xJ(1,"add"),NJ=xJ(-1,"subtract");function IH(A){return typeof A==="string"||A instanceof String}function BP(A){return k(A)||J(A)||IH(A)||w(A)||UP(A)||Mg(A)||A===null||A===void 0}function Mg(A){var m=q(A)&&!z(A),a=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],J2,r2,L8=r.length;for(J2=0;J2<L8;J2+=1)r2=r[J2],a=a||Y(A,r2);return m&&a}function UP(A){var m=K(A),a=!1;if(m)a=A.filter(function(r){return!w(r)&&IH(A)}).length===0;return m&&a}function l1(A){var m=q(A)&&!z(A),a=!1,r=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],J2,r2;for(J2=0;J2<r.length;J2+=1)r2=r[J2],a=a||Y(A,r2);return m&&a}function E6(A,m){var a=A.diff(m,"days",!0);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"}function O6(A,m){if(arguments.length===1){if(!arguments[0])A=void 0,m=void 0;else if(BP(arguments[0]))A=arguments[0],m=void 0;else if(l1(arguments[0]))m=arguments[0],A=void 0}var a=A||D4(),r=h1(a,this).startOf("day"),J2=v.calendarFormat(this,r)||"sameElse",r2=m&&(D(m[J2])?m[J2].call(this,a):m[J2]);return this.format(r2||this.localeData().calendar(J2,this,D4(a)))}function __(){return new j(this)}function C6(A,m){var a=k(A)?A:D4(A);if(!(this.isValid()&&a.isValid()))return!1;if(m=Q2(m)||"millisecond",m==="millisecond")return this.valueOf()>a.valueOf();else return a.valueOf()<this.clone().startOf(m).valueOf()}function $_(A,m){var a=k(A)?A:D4(A);if(!(this.isValid()&&a.isValid()))return!1;if(m=Q2(m)||"millisecond",m==="millisecond")return this.valueOf()<a.valueOf();else return this.clone().endOf(m).valueOf()<a.valueOf()}function U6(A,m,a,r){var J2=k(A)?A:D4(A),r2=k(m)?m:D4(m);if(!(this.isValid()&&J2.isValid()&&r2.isValid()))return!1;return r=r||"()",(r[0]==="("?this.isAfter(J2,a):!this.isBefore(J2,a))&&(r[1]===")"?this.isBefore(r2,a):!this.isAfter(r2,a))}function F6(A,m){var a=k(A)?A:D4(A),r;if(!(this.isValid()&&a.isValid()))return!1;if(m=Q2(m)||"millisecond",m==="millisecond")return this.valueOf()===a.valueOf();else return r=a.valueOf(),this.clone().startOf(m).valueOf()<=r&&r<=this.clone().endOf(m).valueOf()}function t4(A,m){return this.isSame(A,m)||this.isAfter(A,m)}function G7(A,m){return this.isSame(A,m)||this.isBefore(A,m)}function SY8(A,m,a){var r,J2,r2;if(!this.isValid())return NaN;if(r=h1(A,this),!r.isValid())return NaN;switch(J2=(r.utcOffset()-this.utcOffset())*60000,m=Q2(m),m){case"year":r2=FP(this,r)/12;break;case"month":r2=FP(this,r);break;case"quarter":r2=FP(this,r)/3;break;case"second":r2=(this-r)/1000;break;case"minute":r2=(this-r)/60000;break;case"hour":r2=(this-r)/3600000;break;case"day":r2=(this-r-J2)/86400000;break;case"week":r2=(this-r-J2)/604800000;break;default:r2=this-r}return a?r2:a2(r2)}function FP(A,m){if(A.date()<m.date())return-FP(m,A);var a=(m.year()-A.year())*12+(m.month()-A.month()),r=A.clone().add(a,"months"),J2,r2;if(m-r<0)J2=A.clone().add(a-1,"months"),r2=(m-r)/(r-J2);else J2=A.clone().add(a+1,"months"),r2=(m-r)/(J2-r);return-(a+r2)||0}v.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",v.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";function aY8(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function bY8(A){if(!this.isValid())return null;var m=A!==!0,a=m?this.clone().utc():this;if(a.year()<0||a.year()>9999)return K8(a,m?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(D(Date.prototype.toISOString))if(m)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1000).toISOString().replace("Z",K8(a,"Z"));return K8(a,m?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function IY8(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var A="moment",m="",a,r,J2,r2;if(!this.isLocal())A=this.utcOffset()===0?"moment.utc":"moment.parseZone",m="Z";return a="["+A+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",J2="-MM-DD[T]HH:mm:ss.SSS",r2=m+'[")]',this.format(a+r+J2+r2)}function lY8(A){if(!A)A=this.isUtc()?v.defaultFormatUtc:v.defaultFormat;var m=K8(this,A);return this.localeData().postformat(m)}function yY8(A,m){if(this.isValid()&&(k(A)&&A.isValid()||D4(A).isValid()))return l3({to:this,from:A}).locale(this.locale()).humanize(!m);else return this.localeData().invalidDate()}function BY8(A){return this.from(D4(),A)}function UY8(A,m){if(this.isValid()&&(k(A)&&A.isValid()||D4(A).isValid()))return l3({from:this,to:A}).locale(this.locale()).humanize(!m);else return this.localeData().invalidDate()}function FY8(A){return this.to(D4(),A)}function d32(A){var m;if(A===void 0)return this._locale._abbr;else{if(m=M8(A),m!=null)this._locale=m;return this}}var r32=R("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(A){if(A===void 0)return this.localeData();else return this.locale(A)});function s32(){return this._locale}var QP=1000,kJ=60*QP,oP=60*kJ,t32=3506328*oP;function DJ(A,m){return(A%m+m)%m}function e32(A,m,a){if(A<100&&A>=0)return new Date(A+400,m,a)-t32;else return new Date(A,m,a).valueOf()}function _v2(A,m,a){if(A<100&&A>=0)return Date.UTC(A+400,m,a)-t32;else return Date.UTC(A,m,a)}function QY8(A){var m,a;if(A=Q2(A),A===void 0||A==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?_v2:e32,A){case"year":m=a(this.year(),0,1);break;case"quarter":m=a(this.year(),this.month()-this.month()%3,1);break;case"month":m=a(this.year(),this.month(),1);break;case"week":m=a(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":m=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":m=a(this.year(),this.month(),this.date());break;case"hour":m=this._d.valueOf(),m-=DJ(m+(this._isUTC?0:this.utcOffset()*kJ),oP);break;case"minute":m=this._d.valueOf(),m-=DJ(m,kJ);break;case"second":m=this._d.valueOf(),m-=DJ(m,QP);break}return this._d.setTime(m),v.updateOffset(this,!0),this}function oY8(A){var m,a;if(A=Q2(A),A===void 0||A==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?_v2:e32,A){case"year":m=a(this.year()+1,0,1)-1;break;case"quarter":m=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":m=a(this.year(),this.month()+1,1)-1;break;case"week":m=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":m=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":m=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":m=this._d.valueOf(),m+=oP-DJ(m+(this._isUTC?0:this.utcOffset()*kJ),oP)-1;break;case"minute":m=this._d.valueOf(),m+=kJ-DJ(m,kJ)-1;break;case"second":m=this._d.valueOf(),m+=QP-DJ(m,QP)-1;break}return this._d.setTime(m),v.updateOffset(this,!0),this}function dY8(){return this._d.valueOf()-(this._offset||0)*60000}function rY8(){return Math.floor(this.valueOf()/1000)}function sY8(){return new Date(this.valueOf())}function tY8(){var A=this;return[A.year(),A.month(),A.date(),A.hour(),A.minute(),A.second(),A.millisecond()]}function eY8(){var A=this;return{years:A.year(),months:A.month(),date:A.date(),hours:A.hours(),minutes:A.minutes(),seconds:A.seconds(),milliseconds:A.milliseconds()}}function _z8(){return this.isValid()?this.toISOString():null}function $z8(){return p(this)}function vz8(){return O({},H(this))}function uz8(){return H(this).overflow}function Kz8(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}f2("N",0,0,"eraAbbr"),f2("NN",0,0,"eraAbbr"),f2("NNN",0,0,"eraAbbr"),f2("NNNN",0,0,"eraName"),f2("NNNNN",0,0,"eraNarrow"),f2("y",["y",1],"yo","eraYear"),f2("y",["yy",2],0,"eraYear"),f2("y",["yyy",3],0,"eraYear"),f2("y",["yyyy",4],0,"eraYear"),k2("N",xg),k2("NN",xg),k2("NNN",xg),k2("NNNN",Hz8),k2("NNNNN",Xz8),z8(["N","NN","NNN","NNNN","NNNNN"],function(A,m,a,r){var J2=a._locale.erasParse(A,r,a._strict);if(J2)H(a).era=J2;else H(a).invalidEra=A}),k2("y",o1),k2("yy",o1),k2("yyy",o1),k2("yyyy",o1),k2("yo",pz8),z8(["y","yy","yyy","yyyy"],B2),z8(["yo"],function(A,m,a,r){var J2;if(a._locale._eraYearOrdinalRegex)J2=A.match(a._locale._eraYearOrdinalRegex);if(a._locale.eraYearOrdinalParse)m[B2]=a._locale.eraYearOrdinalParse(A,J2);else m[B2]=parseInt(A,10)});function qz8(A,m){var a,r,J2,r2=this._eras||M8("en")._eras;for(a=0,r=r2.length;a<r;++a){switch(typeof r2[a].since){case"string":J2=v(r2[a].since).startOf("day"),r2[a].since=J2.valueOf();break}switch(typeof r2[a].until){case"undefined":r2[a].until=1/0;break;case"string":J2=v(r2[a].until).startOf("day").valueOf(),r2[a].until=J2.valueOf();break}}return r2}function Yz8(A,m,a){var r,J2,r2=this.eras(),L8,U1,N6;A=A.toUpperCase();for(r=0,J2=r2.length;r<J2;++r)if(L8=r2[r].name.toUpperCase(),U1=r2[r].abbr.toUpperCase(),N6=r2[r].narrow.toUpperCase(),a)switch(m){case"N":case"NN":case"NNN":if(U1===A)return r2[r];break;case"NNNN":if(L8===A)return r2[r];break;case"NNNNN":if(N6===A)return r2[r];break}else if([L8,U1,N6].indexOf(A)>=0)return r2[r]}function zz8(A,m){var a=A.since<=A.until?1:-1;if(m===void 0)return v(A.since).year();else return v(A.since).year()+(m-A.offset)*a}function cz8(){var A,m,a,r=this.localeData().eras();for(A=0,m=r.length;A<m;++A){if(a=this.clone().startOf("day").valueOf(),r[A].since<=a&&a<=r[A].until)return r[A].name;if(r[A].until<=a&&a<=r[A].since)return r[A].name}return""}function wz8(){var A,m,a,r=this.localeData().eras();for(A=0,m=r.length;A<m;++A){if(a=this.clone().startOf("day").valueOf(),r[A].since<=a&&a<=r[A].until)return r[A].narrow;if(r[A].until<=a&&a<=r[A].since)return r[A].narrow}return""}function Jz8(){var A,m,a,r=this.localeData().eras();for(A=0,m=r.length;A<m;++A){if(a=this.clone().startOf("day").valueOf(),r[A].since<=a&&a<=r[A].until)return r[A].abbr;if(r[A].until<=a&&a<=r[A].since)return r[A].abbr}return""}function Wz8(){var A,m,a,r,J2=this.localeData().eras();for(A=0,m=J2.length;A<m;++A)if(a=J2[A].since<=J2[A].until?1:-1,r=this.clone().startOf("day").valueOf(),J2[A].since<=r&&r<=J2[A].until||J2[A].until<=r&&r<=J2[A].since)return(this.year()-v(J2[A].since).year())*a+J2[A].offset;return this.year()}function Oz8(A){if(!Y(this,"_erasNameRegex"))Ng.call(this);return A?this._erasNameRegex:this._erasRegex}function Zz8(A){if(!Y(this,"_erasAbbrRegex"))Ng.call(this);return A?this._erasAbbrRegex:this._erasRegex}function iz8(A){if(!Y(this,"_erasNarrowRegex"))Ng.call(this);return A?this._erasNarrowRegex:this._erasRegex}function xg(A,m){return m.erasAbbrRegex(A)}function Hz8(A,m){return m.erasNameRegex(A)}function Xz8(A,m){return m.erasNarrowRegex(A)}function pz8(A,m){return m._eraYearOrdinalRegex||o1}function Ng(){var A=[],m=[],a=[],r=[],J2,r2,L8,U1,N6,m_=this.eras();for(J2=0,r2=m_.length;J2<r2;++J2)L8=x8(m_[J2].name),U1=x8(m_[J2].abbr),N6=x8(m_[J2].narrow),m.push(L8),A.push(U1),a.push(N6),r.push(L8),r.push(U1),r.push(N6);this._erasRegex=new RegExp("^("+r.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+m.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+A.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+a.join("|")+")","i")}f2(0,["gg",2],0,function(){return this.weekYear()%100}),f2(0,["GG",2],0,function(){return this.isoWeekYear()%100});function dP(A,m){f2(0,[A,A.length],0,m)}dP("gggg","weekYear"),dP("ggggg","weekYear"),dP("GGGG","isoWeekYear"),dP("GGGGG","isoWeekYear"),k2("G",N1),k2("g",N1),k2("GG",V8,h2),k2("gg",V8,h2),k2("GGGG",t8,_8),k2("gggg",t8,_8),k2("GGGGG",F8,T8),k2("ggggg",F8,T8),N8(["gggg","ggggg","GGGG","GGGGG"],function(A,m,a,r){m[r.substr(0,2)]=t2(A)}),N8(["gg","GG"],function(A,m,a,r){m[r]=v.parseTwoDigitYear(A)});function Gz8(A){return $v2.call(this,A,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function fz8(A){return $v2.call(this,A,this.isoWeek(),this.isoWeekday(),1,4)}function Az8(){return f8(this.year(),1,4)}function Tz8(){return f8(this.isoWeekYear(),1,4)}function Pz8(){var A=this.localeData()._week;return f8(this.year(),A.dow,A.doy)}function jz8(){var A=this.localeData()._week;return f8(this.weekYear(),A.dow,A.doy)}function $v2(A,m,a,r,J2){var r2;if(A==null)return A8(this,r,J2).year;else{if(r2=f8(A,r,J2),m>r2)m=r2;return Vz8.call(this,A,m,a,r,J2)}}function Vz8(A,m,a,r,J2){var r2=c8(A,m,a,r,J2),L8=b2(r2.year,0,r2.dayOfYear);return this.year(L8.getUTCFullYear()),this.month(L8.getUTCMonth()),this.date(L8.getUTCDate()),this}f2("Q",0,"Qo","quarter"),k2("Q",Y8),z8("Q",function(A,m){m[F2]=(t2(A)-1)*3});function nz8(A){return A==null?Math.ceil((this.month()+1)/3):this.month((A-1)*3+this.month()%3)}f2("D",["DD",2],"Do","date"),k2("D",V8,J6),k2("DD",V8,h2),k2("Do",function(A,m){return A?m._dayOfMonthOrdinalParse||m._ordinalParse:m._dayOfMonthOrdinalParseLenient}),z8(["D","DD"],d2),z8("Do",function(A,m){m[d2]=t2(A.match(V8)[0])});var vv2=J8("Date",!0);f2("DDD",["DDDD",3],"DDDo","dayOfYear"),k2("DDD",q1),k2("DDDD",D2),z8(["DDD","DDDD"],function(A,m,a){a._dayOfYear=t2(A)});function Mz8(A){var m=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/86400000)+1;return A==null?m:this.add(A-m,"d")}f2("m",["mm",2],0,"minute"),k2("m",V8,M6),k2("mm",V8,h2),z8(["m","mm"],E8);var xz8=J8("Minutes",!1);f2("s",["ss",2],0,"second"),k2("s",V8,M6),k2("ss",V8,h2),z8(["s","ss"],J1);var Nz8=J8("Seconds",!1);f2("S",0,0,function(){return~~(this.millisecond()/100)}),f2(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),f2(0,["SSS",3],0,"millisecond"),f2(0,["SSSS",4],0,function(){return this.millisecond()*10}),f2(0,["SSSSS",5],0,function(){return this.millisecond()*100}),f2(0,["SSSSSS",6],0,function(){return this.millisecond()*1000}),f2(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),f2(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),f2(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),k2("S",q1,Y8),k2("SS",q1,h2),k2("SSS",q1,D2);var pY,uv2;for(pY="SSSS";pY.length<=9;pY+="S")k2(pY,o1);function kz8(A,m){m[M2]=t2(("0."+A)*1000)}for(pY="S";pY.length<=9;pY+="S")z8(pY,kz8);uv2=J8("Milliseconds",!1),f2("z",0,0,"zoneAbbr"),f2("zz",0,0,"zoneName");function Dz8(){return this._isUTC?"UTC":""}function mz8(){return this._isUTC?"Coordinated Universal Time":""}var X1=j.prototype;if(X1.add=wc,X1.calendar=O6,X1.clone=__,X1.diff=SY8,X1.endOf=oY8,X1.format=lY8,X1.from=yY8,X1.fromNow=BY8,X1.to=UY8,X1.toNow=FY8,X1.get=l8,X1.invalidAt=uz8,X1.isAfter=C6,X1.isBefore=$_,X1.isBetween=U6,X1.isSame=F6,X1.isSameOrAfter=t4,X1.isSameOrBefore=G7,X1.isValid=$z8,X1.lang=r32,X1.locale=d32,X1.localeData=s32,X1.max=lP,X1.min=jg,X1.parsingFlags=vz8,X1.set=U8,X1.startOf=QY8,X1.subtract=NJ,X1.toArray=tY8,X1.toObject=eY8,X1.toDate=sY8,X1.toISOString=bY8,X1.inspect=IY8,typeof Symbol<"u"&&Symbol.for!=null)X1[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};X1.toJSON=_z8,X1.toString=aY8,X1.unix=rY8,X1.valueOf=dY8,X1.creationData=Kz8,X1.eraName=cz8,X1.eraNarrow=wz8,X1.eraAbbr=Jz8,X1.eraYear=Wz8,X1.year=P2,X1.isLeapYear=$8,X1.weekYear=Gz8,X1.isoWeekYear=fz8,X1.quarter=X1.quarters=nz8,X1.month=y,X1.daysInMonth=t,X1.week=X1.weeks=d8,X1.isoWeek=X1.isoWeeks=A1,X1.weeksInYear=Pz8,X1.weeksInWeekYear=jz8,X1.isoWeeksInYear=Az8,X1.isoWeeksInISOWeekYear=Tz8,X1.date=vv2,X1.day=X1.days=H_,X1.weekday=S4,X1.isoWeekday=a4,X1.dayOfYear=Mz8,X1.hour=X1.hours=HY,X1.minute=X1.minutes=xz8,X1.second=X1.seconds=Nz8,X1.millisecond=X1.milliseconds=uv2,X1.utcOffset=j1,X1.utc=j_,X1.local=w4,X1.parseZone=V6,X1.hasAlignedHourOffset=E4,X1.isDST=N3,X1.isLocal=Wu,X1.isUtcOffset=Ou,X1.isUtc=A5,X1.isUTC=A5,X1.zoneAbbr=Dz8,X1.zoneName=mz8,X1.dates=R("dates accessor is deprecated. Use date instead.",vv2),X1.months=R("months accessor is deprecated. Use month instead",y),X1.years=R("years accessor is deprecated. Use year instead",P2),X1.zone=R("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",G6),X1.isDSTShifted=R("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",f5);function Rz8(A){return D4(A*1000)}function hz8(){return D4.apply(null,arguments).parseZone()}function Kv2(A){return A}var o_=E.prototype;o_.calendar=_2,o_.longDateFormat=j8,o_.invalidDate=A2,o_.ordinal=O2,o_.preparse=Kv2,o_.postformat=Kv2,o_.relativeTime=G2,o_.pastFuture=W2,o_.set=h,o_.eras=qz8,o_.erasParse=Yz8,o_.erasConvertYear=zz8,o_.erasAbbrRegex=Zz8,o_.erasNameRegex=Oz8,o_.erasNarrowRegex=iz8,o_.months=l,o_.monthsShort=e,o_.monthsParse=g,o_.monthsRegex=H2,o_.monthsShortRegex=c2,o_.week=a8,o_.firstDayOfYear=h8,o_.firstDayOfWeek=Z1,o_.weekdays=D6,o_.weekdaysMin=c1,o_.weekdaysShort=T$,o_.weekdaysParse=h6,o_.weekdaysRegex=C4,o_.weekdaysShortRegex=f4,o_.weekdaysMinRegex=x3,o_.isPM=ZY,o_.meridiem=E_;function rP(A,m,a,r){var J2=M8(),r2=Z().set(r,m);return J2[a](r2,A)}function qv2(A,m,a){if(w(A))m=A,A=void 0;if(A=A||"",m!=null)return rP(A,m,a,"month");var r,J2=[];for(r=0;r<12;r++)J2[r]=rP(A,r,a,"month");return J2}function kg(A,m,a,r){if(typeof A==="boolean"){if(w(m))a=m,m=void 0;m=m||""}else{if(m=A,a=m,A=!1,w(m))a=m,m=void 0;m=m||""}var J2=M8(),r2=A?J2._week.dow:0,L8,U1=[];if(a!=null)return rP(m,(a+r2)%7,r,"day");for(L8=0;L8<7;L8++)U1[L8]=rP(m,(L8+r2)%7,r,"day");return U1}function Cz8(A,m){return qv2(A,m,"months")}function Ez8(A,m){return qv2(A,m,"monthsShort")}function Lz8(A,m,a){return kg(A,m,a,"weekdays")}function gz8(A,m,a){return kg(A,m,a,"weekdaysShort")}function Sz8(A,m,a){return kg(A,m,a,"weekdaysMin")}T2("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(A){var m=A%10,a=t2(A%100/10)===1?"th":m===1?"st":m===2?"nd":m===3?"rd":"th";return A+a}}),v.lang=R("moment.lang is deprecated. Use moment.locale instead.",T2),v.langData=R("moment.langData is deprecated. Use moment.localeData instead.",M8);var gK=Math.abs;function az8(){var A=this._data;return this._milliseconds=gK(this._milliseconds),this._days=gK(this._days),this._months=gK(this._months),A.milliseconds=gK(A.milliseconds),A.seconds=gK(A.seconds),A.minutes=gK(A.minutes),A.hours=gK(A.hours),A.months=gK(A.months),A.years=gK(A.years),this}function Yv2(A,m,a,r){var J2=l3(m,a);return A._milliseconds+=r*J2._milliseconds,A._days+=r*J2._days,A._months+=r*J2._months,A._bubble()}function bz8(A,m){return Yv2(this,A,m,1)}function Iz8(A,m){return Yv2(this,A,m,-1)}function zv2(A){if(A<0)return Math.floor(A);else return Math.ceil(A)}function lz8(){var A=this._milliseconds,m=this._days,a=this._months,r=this._data,J2,r2,L8,U1,N6;if(!(A>=0&&m>=0&&a>=0||A<=0&&m<=0&&a<=0))A+=zv2(Dg(a)+m)*86400000,m=0,a=0;return r.milliseconds=A%1000,J2=a2(A/1000),r.seconds=J2%60,r2=a2(J2/60),r.minutes=r2%60,L8=a2(r2/60),r.hours=L8%24,m+=a2(L8/24),N6=a2(cv2(m)),a+=N6,m-=zv2(Dg(N6)),U1=a2(a/12),a%=12,r.days=m,r.months=a,r.years=U1,this}function cv2(A){return A*4800/146097}function Dg(A){return A*146097/4800}function yz8(A){if(!this.isValid())return NaN;var m,a,r=this._milliseconds;if(A=Q2(A),A==="month"||A==="quarter"||A==="year")switch(m=this._days+r/86400000,a=this._months+cv2(m),A){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(m=this._days+Math.round(Dg(this._months)),A){case"week":return m/7+r/604800000;case"day":return m+r/86400000;case"hour":return m*24+r/3600000;case"minute":return m*1440+r/60000;case"second":return m*86400+r/1000;case"millisecond":return Math.floor(m*86400000)+r;default:throw Error("Unknown unit "+A)}}function SK(A){return function(){return this.as(A)}}var wv2=SK("ms"),Bz8=SK("s"),Uz8=SK("m"),Fz8=SK("h"),Qz8=SK("d"),oz8=SK("w"),dz8=SK("M"),rz8=SK("Q"),sz8=SK("y"),tz8=wv2;function ez8(){return l3(this)}function _c8(A){return A=Q2(A),this.isValid()?this[A+"s"]():NaN}function Jc(A){return function(){return this.isValid()?this._data[A]:NaN}}var $c8=Jc("milliseconds"),vc8=Jc("seconds"),uc8=Jc("minutes"),Kc8=Jc("hours"),qc8=Jc("days"),Yc8=Jc("months"),zc8=Jc("years");function cc8(){return a2(this.days()/7)}var aK=Math.round,mJ={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function wc8(A,m,a,r,J2){return J2.relativeTime(m||1,!!a,A,r)}function Jc8(A,m,a,r){var J2=l3(A).abs(),r2=aK(J2.as("s")),L8=aK(J2.as("m")),U1=aK(J2.as("h")),N6=aK(J2.as("d")),m_=aK(J2.as("M")),bv=aK(J2.as("w")),bK=aK(J2.as("y")),GY=r2<=a.ss&&["s",r2]||r2<a.s&&["ss",r2]||L8<=1&&["m"]||L8<a.m&&["mm",L8]||U1<=1&&["h"]||U1<a.h&&["hh",U1]||N6<=1&&["d"]||N6<a.d&&["dd",N6];if(a.w!=null)GY=GY||bv<=1&&["w"]||bv<a.w&&["ww",bv];return GY=GY||m_<=1&&["M"]||m_<a.M&&["MM",m_]||bK<=1&&["y"]||["yy",bK],GY[2]=m,GY[3]=+A>0,GY[4]=r,wc8.apply(null,GY)}function Wc8(A){if(A===void 0)return aK;if(typeof A==="function")return aK=A,!0;return!1}function Oc8(A,m){if(mJ[A]===void 0)return!1;if(m===void 0)return mJ[A];if(mJ[A]=m,A==="s")mJ.ss=m-1;return!0}function Zc8(A,m){if(!this.isValid())return this.localeData().invalidDate();var a=!1,r=mJ,J2,r2;if(typeof A==="object")m=A,A=!1;if(typeof A==="boolean")a=A;if(typeof m==="object"){if(r=Object.assign({},mJ,m),m.s!=null&&m.ss==null)r.ss=m.s-1}if(J2=this.localeData(),r2=Jc8(this,!a,r,J2),a)r2=J2.pastFuture(+this,r2);return J2.postformat(r2)}var mg=Math.abs;function RJ(A){return(A>0)-(A<0)||+A}function sP(){if(!this.isValid())return this.localeData().invalidDate();var A=mg(this._milliseconds)/1000,m=mg(this._days),a=mg(this._months),r,J2,r2,L8,U1=this.asSeconds(),N6,m_,bv,bK;if(!U1)return"P0D";return r=a2(A/60),J2=a2(r/60),A%=60,r%=60,r2=a2(a/12),a%=12,L8=A?A.toFixed(3).replace(/\.?0+$/,""):"",N6=U1<0?"-":"",m_=RJ(this._months)!==RJ(U1)?"-":"",bv=RJ(this._days)!==RJ(U1)?"-":"",bK=RJ(this._milliseconds)!==RJ(U1)?"-":"",N6+"P"+(r2?m_+r2+"Y":"")+(a?m_+a+"M":"")+(m?bv+m+"D":"")+(J2||r||A?"T":"")+(J2?bK+J2+"H":"")+(r?bK+r+"M":"")+(A?bK+L8+"S":"")}var L_=N2.prototype;L_.isValid=u2,L_.abs=az8,L_.add=bz8,L_.subtract=Iz8,L_.as=yz8,L_.asMilliseconds=wv2,L_.asSeconds=Bz8,L_.asMinutes=Uz8,L_.asHours=Fz8,L_.asDays=Qz8,L_.asWeeks=oz8,L_.asMonths=dz8,L_.asQuarters=rz8,L_.asYears=sz8,L_.valueOf=tz8,L_._bubble=lz8,L_.clone=ez8,L_.get=_c8,L_.milliseconds=$c8,L_.seconds=vc8,L_.minutes=uc8,L_.hours=Kc8,L_.days=qc8,L_.weeks=cc8,L_.months=Yc8,L_.years=zc8,L_.humanize=Zc8,L_.toISOString=sP,L_.toString=sP,L_.toJSON=sP,L_.locale=d32,L_.localeData=s32,L_.toIsoString=R("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",sP),L_.lang=r32,f2("X",0,0,"unix"),f2("x",0,0,"valueOf"),k2("x",N1),k2("X",y1),z8("X",function(A,m,a){a._d=new Date(parseFloat(A)*1000)}),z8("x",function(A,m,a){a._d=new Date(t2(A))});//! moment.js
499
+ `+Error().stack),a=!1}return m.apply(this,arguments)},m)}var n={};function V(A,m){if(v.deprecationHandler!=null)v.deprecationHandler(A,m);if(!n[A])M(m),n[A]=!0}v.suppressDeprecationWarnings=!1,v.deprecationHandler=null;function D(A){return typeof Function<"u"&&A instanceof Function||Object.prototype.toString.call(A)==="[object Function]"}function h(A){var m,a;for(a in A)if(Y(A,a))if(m=A[a],D(m))this[a]=m;else this["_"+a]=m;this._config=A,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function b(A,m){var a=O({},A),r;for(r in m)if(Y(m,r))if(q(A[r])&&q(m[r]))a[r]={},O(a[r],A[r]),O(a[r],m[r]);else if(m[r]!=null)a[r]=m[r];else delete a[r];for(r in A)if(Y(A,r)&&!Y(m,r)&&q(A[r]))a[r]=O({},a[r]);return a}function E(A){if(A!=null)this.set(A)}var o;if(Object.keys)o=Object.keys;else o=function(A){var m,a=[];for(m in A)if(Y(A,m))a.push(m);return a};var U={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function _2(A,m,a){var r=this._calendar[A]||this._calendar.sameElse;return D(r)?r.call(m,a):r}function $2(A,m,a){var r=""+Math.abs(A),J2=m-r.length,r2=A>=0;return(r2?a?"+":"":"-")+Math.pow(10,Math.max(0,J2)).toString().substr(1)+r}var K2=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,w2=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,q2={},i2={};function f2(A,m,a,r){var J2=r;if(typeof r==="string")J2=function(){return this[r]()};if(A)i2[A]=J2;if(m)i2[m[0]]=function(){return $2(J2.apply(this,arguments),m[1],m[2])};if(a)i2[a]=function(){return this.localeData().ordinal(J2.apply(this,arguments),A)}}function y2(A){if(A.match(/\[[\s\S]/))return A.replace(/^\[|\]$/g,"");return A.replace(/\\/g,"")}function x2(A){var m=A.match(K2),a,r;for(a=0,r=m.length;a<r;a++)if(i2[m[a]])m[a]=i2[m[a]];else m[a]=y2(m[a]);return function(J2){var r2="",g8;for(g8=0;g8<r;g8++)r2+=D(m[g8])?m[g8].call(J2,A):m[g8];return r2}}function K8(A,m){if(!A.isValid())return A.localeData().invalidDate();return m=E2(m,A.localeData()),q2[m]=q2[m]||x2(m),q2[m](A)}function E2(A,m){var a=5;function r(J2){return m.longDateFormat(J2)||J2}w2.lastIndex=0;while(a>=0&&w2.test(A))A=A.replace(w2,r),w2.lastIndex=0,a-=1;return A}var k8={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function j8(A){var m=this._longDateFormat[A],a=this._longDateFormat[A.toUpperCase()];if(m||!a)return m;return this._longDateFormat[A]=a.match(K2).map(function(r){if(r==="MMMM"||r==="MM"||r==="DD"||r==="dddd")return r.slice(1);return r}).join(""),this._longDateFormat[A]}var O8="Invalid date";function A2(){return this._invalidDate}var U2="%d",B=/\d{1,2}/;function O2(A){return this._ordinal.replace("%d",A)}var v2={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function G2(A,m,a,r){var J2=this._relativeTime[a];return D(J2)?J2(A,m,a,r):J2.replace(/%d/i,A)}function W2(A,m){var a=this._relativeTime[A>0?"future":"past"];return D(a)?a(m):a.replace(/%s/i,m)}var j2={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function Q2(A){return typeof A==="string"?j2[A]||j2[A.toLowerCase()]:void 0}function R2(A){var m={},a,r;for(r in A)if(Y(A,r)){if(a=Q2(r),a)m[a]=A[r]}return m}var e2={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function S2(A){var m=[],a;for(a in A)if(Y(A,a))m.push({unit:a,priority:e2[a]});return m.sort(function(r,J2){return r.priority-J2.priority}),m}var Y8=/\d/,h2=/\d\d/,D2=/\d{3}/,_8=/\d{4}/,T8=/[+-]?\d{6}/,V8=/\d\d?/,o8=/\d\d\d\d?/,S8=/\d\d\d\d\d\d?/,q1=/\d{1,3}/,t8=/\d{1,4}/,F8=/[+-]?\d{1,6}/,o1=/\d+/,N1=/[+-]?\d+/,e1=/Z|[+-]\d\d:?\d\d/gi,p6=/Z|[+-]\d\d(?::?\d\d)?/gi,y1=/[+-]?\d+(\.\d{1,3})?/,E1=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,J6=/^[1-9]\d?/,M6=/^([1-9]\d|\d)/,H8;H8={};function k2(A,m,a){H8[A]=D(m)?m:function(r,J2){return r&&a?a:m}}function v8(A,m){if(!Y(H8,A))return new RegExp(I8(A));return H8[A](m._strict,m._locale)}function I8(A){return x8(A.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(m,a,r,J2,r2){return a||r||J2||r2}))}function x8(A){return A.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function a2(A){if(A<0)return Math.ceil(A)||0;else return Math.floor(A)}function t2(A){var m=+A,a=0;if(m!==0&&isFinite(m))a=a2(m);return a}var m2={};function z8(A,m){var a,r=m,J2;if(typeof A==="string")A=[A];if(w(m))r=function(r2,g8){g8[m]=t2(r2)};J2=A.length;for(a=0;a<J2;a++)m2[A[a]]=r}function N8(A,m){z8(A,function(a,r,J2,r2){J2._w=J2._w||{},m(a,J2._w,J2,r2)})}function v1(A,m,a){if(m!=null&&Y(m2,A))m2[A](m,a._a,a,A)}function C2(A){return A%4===0&&A%100!==0||A%400===0}var B2=0,F2=1,d2=2,w8=3,E8=4,J1=5,M2=6,L2=7,X2=8;f2("Y",0,0,function(){var A=this.year();return A<=9999?$2(A,4):"+"+A}),f2(0,["YY",2],0,function(){return this.year()%100}),f2(0,["YYYY",4],0,"year"),f2(0,["YYYYY",5],0,"year"),f2(0,["YYYYYY",6,!0],0,"year"),k2("Y",N1),k2("YY",V8,h2),k2("YYYY",t8,_8),k2("YYYYY",F8,T8),k2("YYYYYY",F8,T8),z8(["YYYYY","YYYYYY"],B2),z8("YYYY",function(A,m){m[B2]=A.length===2?v.parseTwoDigitYear(A):t2(A)}),z8("YY",function(A,m){m[B2]=v.parseTwoDigitYear(A)}),z8("Y",function(A,m){m[B2]=parseInt(A,10)});function i8(A){return C2(A)?366:365}v.parseTwoDigitYear=function(A){return t2(A)+(t2(A)>68?1900:2000)};var P2=J8("FullYear",!0);function $8(){return C2(this.year())}function J8(A,m){return function(a){if(a!=null)return R8(this,A,a),v.updateOffset(this,m),this;else return P8(this,A)}}function P8(A,m){if(!A.isValid())return NaN;var{_d:a,_isUTC:r}=A;switch(m){case"Milliseconds":return r?a.getUTCMilliseconds():a.getMilliseconds();case"Seconds":return r?a.getUTCSeconds():a.getSeconds();case"Minutes":return r?a.getUTCMinutes():a.getMinutes();case"Hours":return r?a.getUTCHours():a.getHours();case"Date":return r?a.getUTCDate():a.getDate();case"Day":return r?a.getUTCDay():a.getDay();case"Month":return r?a.getUTCMonth():a.getMonth();case"FullYear":return r?a.getUTCFullYear():a.getFullYear();default:return NaN}}function R8(A,m,a){var r,J2,r2,g8,U1;if(!A.isValid()||isNaN(a))return;switch(r=A._d,J2=A._isUTC,m){case"Milliseconds":return void(J2?r.setUTCMilliseconds(a):r.setMilliseconds(a));case"Seconds":return void(J2?r.setUTCSeconds(a):r.setSeconds(a));case"Minutes":return void(J2?r.setUTCMinutes(a):r.setMinutes(a));case"Hours":return void(J2?r.setUTCHours(a):r.setHours(a));case"Date":return void(J2?r.setUTCDate(a):r.setDate(a));case"FullYear":break;default:return}r2=a,g8=A.month(),U1=A.date(),U1=U1===29&&g8===1&&!C2(r2)?28:U1,J2?r.setUTCFullYear(r2,g8,U1):r.setFullYear(r2,g8,U1)}function l8(A){if(A=Q2(A),D(this[A]))return this[A]();return this}function U8(A,m){if(typeof A==="object"){A=R2(A);var a=S2(A),r,J2=a.length;for(r=0;r<J2;r++)this[a[r].unit](A[a[r].unit])}else if(A=Q2(A),D(this[A]))return this[A](m);return this}function f1(A,m){return(A%m+m)%m}var k1;if(Array.prototype.indexOf)k1=Array.prototype.indexOf;else k1=function(A){var m;for(m=0;m<this.length;++m)if(this[m]===A)return m;return-1};function Y6(A,m){if(isNaN(A)||isNaN(m))return NaN;var a=f1(m,12);return A+=(m-a)/12,a===1?C2(A)?29:28:31-a%7%2}f2("M",["MM",2],"Mo",function(){return this.month()+1}),f2("MMM",0,0,function(A){return this.localeData().monthsShort(this,A)}),f2("MMMM",0,0,function(A){return this.localeData().months(this,A)}),k2("M",V8,J6),k2("MM",V8,h2),k2("MMM",function(A,m){return m.monthsShortRegex(A)}),k2("MMMM",function(A,m){return m.monthsRegex(A)}),z8(["M","MM"],function(A,m){m[F2]=t2(A)-1}),z8(["MMM","MMMM"],function(A,m,a,r){var J2=a._locale.monthsParse(A,r,a._strict);if(J2!=null)m[F2]=J2;else H(a).invalidMonth=A});var q6="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),G4="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),z$=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,k4=E1,r4=E1;function l(A,m){if(!A)return K(this._months)?this._months:this._months.standalone;return K(this._months)?this._months[A.month()]:this._months[(this._months.isFormat||z$).test(m)?"format":"standalone"][A.month()]}function e(A,m){if(!A)return K(this._monthsShort)?this._monthsShort:this._monthsShort.standalone;return K(this._monthsShort)?this._monthsShort[A.month()]:this._monthsShort[z$.test(m)?"format":"standalone"][A.month()]}function S(A,m,a){var r,J2,r2,g8=A.toLocaleLowerCase();if(!this._monthsParse){this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[];for(r=0;r<12;++r)r2=Z([2000,r]),this._shortMonthsParse[r]=this.monthsShort(r2,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(r2,"").toLocaleLowerCase()}if(a)if(m==="MMM")return J2=k1.call(this._shortMonthsParse,g8),J2!==-1?J2:null;else return J2=k1.call(this._longMonthsParse,g8),J2!==-1?J2:null;else if(m==="MMM"){if(J2=k1.call(this._shortMonthsParse,g8),J2!==-1)return J2;return J2=k1.call(this._longMonthsParse,g8),J2!==-1?J2:null}else{if(J2=k1.call(this._longMonthsParse,g8),J2!==-1)return J2;return J2=k1.call(this._shortMonthsParse,g8),J2!==-1?J2:null}}function g(A,m,a){var r,J2,r2;if(this._monthsParseExact)return S.call(this,A,m,a);if(!this._monthsParse)this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[];for(r=0;r<12;r++){if(J2=Z([2000,r]),a&&!this._longMonthsParse[r])this._longMonthsParse[r]=new RegExp("^"+this.months(J2,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(J2,"").replace(".","")+"$","i");if(!a&&!this._monthsParse[r])r2="^"+this.months(J2,"")+"|^"+this.monthsShort(J2,""),this._monthsParse[r]=new RegExp(r2.replace(".",""),"i");if(a&&m==="MMMM"&&this._longMonthsParse[r].test(A))return r;else if(a&&m==="MMM"&&this._shortMonthsParse[r].test(A))return r;else if(!a&&this._monthsParse[r].test(A))return r}}function F(A,m){if(!A.isValid())return A;if(typeof m==="string"){if(/^\d+$/.test(m))m=t2(m);else if(m=A.localeData().monthsParse(m),!w(m))return A}var a=m,r=A.date();return r=r<29?r:Math.min(r,Y6(A.year(),a)),A._isUTC?A._d.setUTCMonth(a,r):A._d.setMonth(a,r),A}function y(A){if(A!=null)return F(this,A),v.updateOffset(this,!0),this;else return P8(this,"Month")}function t(){return Y6(this.year(),this.month())}function c2(A){if(this._monthsParseExact){if(!Y(this,"_monthsRegex"))V2.call(this);if(A)return this._monthsShortStrictRegex;else return this._monthsShortRegex}else{if(!Y(this,"_monthsShortRegex"))this._monthsShortRegex=k4;return this._monthsShortStrictRegex&&A?this._monthsShortStrictRegex:this._monthsShortRegex}}function H2(A){if(this._monthsParseExact){if(!Y(this,"_monthsRegex"))V2.call(this);if(A)return this._monthsStrictRegex;else return this._monthsRegex}else{if(!Y(this,"_monthsRegex"))this._monthsRegex=r4;return this._monthsStrictRegex&&A?this._monthsStrictRegex:this._monthsRegex}}function V2(){function A(N6,m_){return m_.length-N6.length}var m=[],a=[],r=[],J2,r2,g8,U1;for(J2=0;J2<12;J2++)r2=Z([2000,J2]),g8=x8(this.monthsShort(r2,"")),U1=x8(this.months(r2,"")),m.push(g8),a.push(U1),r.push(U1),r.push(g8);m.sort(A),a.sort(A),r.sort(A),this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+m.join("|")+")","i")}function n2(A,m,a,r,J2,r2,g8){var U1;if(A<100&&A>=0){if(U1=new Date(A+400,m,a,r,J2,r2,g8),isFinite(U1.getFullYear()))U1.setFullYear(A)}else U1=new Date(A,m,a,r,J2,r2,g8);return U1}function b2(A){var m,a;if(A<100&&A>=0){if(a=Array.prototype.slice.call(arguments),a[0]=A+400,m=new Date(Date.UTC.apply(null,a)),isFinite(m.getUTCFullYear()))m.setUTCFullYear(A)}else m=new Date(Date.UTC.apply(null,arguments));return m}function l2(A,m,a){var r=7+m-a,J2=(7+b2(A,0,r).getUTCDay()-m)%7;return-J2+r-1}function c8(A,m,a,r,J2){var r2=(7+a-r)%7,g8=l2(A,r,J2),U1=1+7*(m-1)+r2+g8,N6,m_;if(U1<=0)N6=A-1,m_=i8(N6)+U1;else if(U1>i8(A))N6=A+1,m_=U1-i8(A);else N6=A,m_=U1;return{year:N6,dayOfYear:m_}}function A8(A,m,a){var r=l2(A.year(),m,a),J2=Math.floor((A.dayOfYear()-r-1)/7)+1,r2,g8;if(J2<1)g8=A.year()-1,r2=J2+f8(g8,m,a);else if(J2>f8(A.year(),m,a))r2=J2-f8(A.year(),m,a),g8=A.year()+1;else g8=A.year(),r2=J2;return{week:r2,year:g8}}function f8(A,m,a){var r=l2(A,m,a),J2=l2(A+1,m,a);return(i8(A)-r+J2)/7}f2("w",["ww",2],"wo","week"),f2("W",["WW",2],"Wo","isoWeek"),k2("w",V8,J6),k2("ww",V8,h2),k2("W",V8,J6),k2("WW",V8,h2),N8(["w","ww","W","WW"],function(A,m,a,r){m[r.substr(0,1)]=t2(A)});function a8(A){return A8(A,this._week.dow,this._week.doy).week}var B8={dow:0,doy:6};function Z1(){return this._week.dow}function h8(){return this._week.doy}function d8(A){var m=this.localeData().week(this);return A==null?m:this.add((A-m)*7,"d")}function A1(A){var m=A8(this,1,4).week;return A==null?m:this.add((A-m)*7,"d")}f2("d",0,"do","day"),f2("dd",0,0,function(A){return this.localeData().weekdaysMin(this,A)}),f2("ddd",0,0,function(A){return this.localeData().weekdaysShort(this,A)}),f2("dddd",0,0,function(A){return this.localeData().weekdays(this,A)}),f2("e",0,0,"weekday"),f2("E",0,0,"isoWeekday"),k2("d",V8),k2("e",V8),k2("E",V8),k2("dd",function(A,m){return m.weekdaysMinRegex(A)}),k2("ddd",function(A,m){return m.weekdaysShortRegex(A)}),k2("dddd",function(A,m){return m.weekdaysRegex(A)}),N8(["dd","ddd","dddd"],function(A,m,a,r){var J2=a._locale.weekdaysParse(A,r,a._strict);if(J2!=null)m.d=J2;else H(a).invalidWeekday=A}),N8(["d","e","E"],function(A,m,a,r){m[r]=t2(A)});function W6(A,m){if(typeof A!=="string")return A;if(!isNaN(A))return parseInt(A,10);if(A=m.weekdaysParse(A),typeof A==="number")return A;return null}function y6(A,m){if(typeof A==="string")return m.weekdaysParse(A)%7||7;return isNaN(A)?null:A}function x6(A,m){return A.slice(m,7).concat(A.slice(0,m))}var g6="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),B6="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),R6="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),s6=E1,c4=E1,c$=E1;function D6(A,m){var a=K(this._weekdays)?this._weekdays:this._weekdays[A&&A!==!0&&this._weekdays.isFormat.test(m)?"format":"standalone"];return A===!0?x6(a,this._week.dow):A?a[A.day()]:a}function T$(A){return A===!0?x6(this._weekdaysShort,this._week.dow):A?this._weekdaysShort[A.day()]:this._weekdaysShort}function c1(A){return A===!0?x6(this._weekdaysMin,this._week.dow):A?this._weekdaysMin[A.day()]:this._weekdaysMin}function _1(A,m,a){var r,J2,r2,g8=A.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[];for(r=0;r<7;++r)r2=Z([2000,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(r2,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(r2,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(r2,"").toLocaleLowerCase()}if(a)if(m==="dddd")return J2=k1.call(this._weekdaysParse,g8),J2!==-1?J2:null;else if(m==="ddd")return J2=k1.call(this._shortWeekdaysParse,g8),J2!==-1?J2:null;else return J2=k1.call(this._minWeekdaysParse,g8),J2!==-1?J2:null;else if(m==="dddd"){if(J2=k1.call(this._weekdaysParse,g8),J2!==-1)return J2;if(J2=k1.call(this._shortWeekdaysParse,g8),J2!==-1)return J2;return J2=k1.call(this._minWeekdaysParse,g8),J2!==-1?J2:null}else if(m==="ddd"){if(J2=k1.call(this._shortWeekdaysParse,g8),J2!==-1)return J2;if(J2=k1.call(this._weekdaysParse,g8),J2!==-1)return J2;return J2=k1.call(this._minWeekdaysParse,g8),J2!==-1?J2:null}else{if(J2=k1.call(this._minWeekdaysParse,g8),J2!==-1)return J2;if(J2=k1.call(this._weekdaysParse,g8),J2!==-1)return J2;return J2=k1.call(this._shortWeekdaysParse,g8),J2!==-1?J2:null}}function h6(A,m,a){var r,J2,r2;if(this._weekdaysParseExact)return _1.call(this,A,m,a);if(!this._weekdaysParse)this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[];for(r=0;r<7;r++){if(J2=Z([2000,1]).day(r),a&&!this._fullWeekdaysParse[r])this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(J2,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(J2,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(J2,"").replace(".","\\.?")+"$","i");if(!this._weekdaysParse[r])r2="^"+this.weekdays(J2,"")+"|^"+this.weekdaysShort(J2,"")+"|^"+this.weekdaysMin(J2,""),this._weekdaysParse[r]=new RegExp(r2.replace(".",""),"i");if(a&&m==="dddd"&&this._fullWeekdaysParse[r].test(A))return r;else if(a&&m==="ddd"&&this._shortWeekdaysParse[r].test(A))return r;else if(a&&m==="dd"&&this._minWeekdaysParse[r].test(A))return r;else if(!a&&this._weekdaysParse[r].test(A))return r}}function H_(A){if(!this.isValid())return A!=null?this:NaN;var m=P8(this,"Day");if(A!=null)return A=W6(A,this.localeData()),this.add(A-m,"d");else return m}function S4(A){if(!this.isValid())return A!=null?this:NaN;var m=(this.day()+7-this.localeData()._week.dow)%7;return A==null?m:this.add(A-m,"d")}function a4(A){if(!this.isValid())return A!=null?this:NaN;if(A!=null){var m=y6(A,this.localeData());return this.day(this.day()%7?m:m-7)}else return this.day()||7}function C4(A){if(this._weekdaysParseExact){if(!Y(this,"_weekdaysRegex"))y_.call(this);if(A)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!Y(this,"_weekdaysRegex"))this._weekdaysRegex=s6;return this._weekdaysStrictRegex&&A?this._weekdaysStrictRegex:this._weekdaysRegex}}function f4(A){if(this._weekdaysParseExact){if(!Y(this,"_weekdaysRegex"))y_.call(this);if(A)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!Y(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=c4;return this._weekdaysShortStrictRegex&&A?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function x3(A){if(this._weekdaysParseExact){if(!Y(this,"_weekdaysRegex"))y_.call(this);if(A)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!Y(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=c$;return this._weekdaysMinStrictRegex&&A?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function y_(){function A(bv,bK){return bK.length-bv.length}var m=[],a=[],r=[],J2=[],r2,g8,U1,N6,m_;for(r2=0;r2<7;r2++)g8=Z([2000,1]).day(r2),U1=x8(this.weekdaysMin(g8,"")),N6=x8(this.weekdaysShort(g8,"")),m_=x8(this.weekdays(g8,"")),m.push(U1),a.push(N6),r.push(m_),J2.push(U1),J2.push(N6),J2.push(m_);m.sort(A),a.sort(A),r.sort(A),J2.sort(A),this._weekdaysRegex=new RegExp("^("+J2.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+m.join("|")+")","i")}function U$(){return this.hours()%12||12}function I9(){return this.hours()||24}f2("H",["HH",2],0,"hour"),f2("h",["hh",2],0,U$),f2("k",["kk",2],0,I9),f2("hmm",0,0,function(){return""+U$.apply(this)+$2(this.minutes(),2)}),f2("hmmss",0,0,function(){return""+U$.apply(this)+$2(this.minutes(),2)+$2(this.seconds(),2)}),f2("Hmm",0,0,function(){return""+this.hours()+$2(this.minutes(),2)}),f2("Hmmss",0,0,function(){return""+this.hours()+$2(this.minutes(),2)+$2(this.seconds(),2)});function X5(A,m){f2(A,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),m)})}X5("a",!0),X5("A",!1);function cu(A,m){return m._meridiemParse}k2("a",cu),k2("A",cu),k2("H",V8,M6),k2("h",V8,J6),k2("k",V8,J6),k2("HH",V8,h2),k2("hh",V8,h2),k2("kk",V8,h2),k2("hmm",o8),k2("hmmss",S8),k2("Hmm",o8),k2("Hmmss",S8),z8(["H","HH"],w8),z8(["k","kk"],function(A,m,a){var r=t2(A);m[w8]=r===24?0:r}),z8(["a","A"],function(A,m,a){a._isPm=a._locale.isPM(A),a._meridiem=A}),z8(["h","hh"],function(A,m,a){m[w8]=t2(A),H(a).bigHour=!0}),z8("hmm",function(A,m,a){var r=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r)),H(a).bigHour=!0}),z8("hmmss",function(A,m,a){var r=A.length-4,J2=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r,2)),m[J1]=t2(A.substr(J2)),H(a).bigHour=!0}),z8("Hmm",function(A,m,a){var r=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r))}),z8("Hmmss",function(A,m,a){var r=A.length-4,J2=A.length-2;m[w8]=t2(A.substr(0,r)),m[E8]=t2(A.substr(r,2)),m[J1]=t2(A.substr(J2))});function ZY(A){return(A+"").toLowerCase().charAt(0)==="p"}var iY=/[ap]\.?m?\.?/i,HY=J8("Hours",!0);function E_(A,m,a){if(A>11)return a?"pm":"PM";else return a?"am":"AM"}var R$={calendar:U,longDateFormat:k8,invalidDate:O8,ordinal:U2,dayOfMonthOrdinalParse:B,relativeTime:v2,months:q6,monthsShort:G4,week:B8,weekdays:g6,weekdaysMin:R6,weekdaysShort:B6,meridiemParse:iY},D_={},av={},p5;function XY(A,m){var a,r=Math.min(A.length,m.length);for(a=0;a<r;a+=1)if(A[a]!==m[a])return a;return r}function hK(A){return A?A.toLowerCase().replace("_","-"):A}function wu(A){var m=0,a,r,J2,r2;while(m<A.length){r2=hK(A[m]).split("-"),a=r2.length,r=hK(A[m+1]),r=r?r.split("-"):null;while(a>0){if(J2=Z2(r2.slice(0,a).join("-")),J2)return J2;if(r&&r.length>=a&&XY(r2,r)>=a-1)break;a--}m++}return p5}function z2(A){return!!(A&&A.match("^[^/\\\\]*$"))}function Z2(A){var m=null,a;if(D_[A]===void 0&&typeof DO<"u"&&DO&&DO.exports&&z2(A))try{m=p5._abbr,a=I2,a("./locale/"+A),T2(m)}catch(r){D_[A]=null}return D_[A]}function T2(A,m){var a;if(A){if(c(m))a=M8(A);else a=q8(A,m);if(a)p5=a;else if(typeof console<"u"&&console.warn)console.warn("Locale "+A+" not found. Did you forget to load it?")}return p5._abbr}function q8(A,m){if(m!==null){var a,r=R$;if(m.abbr=A,D_[A]!=null)V("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=D_[A]._config;else if(m.parentLocale!=null)if(D_[m.parentLocale]!=null)r=D_[m.parentLocale]._config;else if(a=Z2(m.parentLocale),a!=null)r=a._config;else{if(!av[m.parentLocale])av[m.parentLocale]=[];return av[m.parentLocale].push({name:A,config:m}),null}if(D_[A]=new E(b(r,m)),av[A])av[A].forEach(function(J2){q8(J2.name,J2.config)});return T2(A),D_[A]}else return delete D_[A],null}function n8(A,m){if(m!=null){var a,r,J2=R$;if(D_[A]!=null&&D_[A].parentLocale!=null)D_[A].set(b(D_[A]._config,m));else{if(r=Z2(A),r!=null)J2=r._config;if(m=b(J2,m),r==null)m.abbr=A;a=new E(m),a.parentLocale=D_[A],D_[A]=a}T2(A)}else if(D_[A]!=null){if(D_[A].parentLocale!=null){if(D_[A]=D_[A].parentLocale,A===T2())T2(A)}else if(D_[A]!=null)delete D_[A]}return D_[A]}function M8(A){var m;if(A&&A._locale&&A._locale._abbr)A=A._locale._abbr;if(!A)return p5;if(!K(A)){if(m=Z2(A),m)return m;A=[A]}return wu(A)}function C8(){return o(D_)}function b8(A){var m,a=A._a;if(a&&H(A).overflow===-2){if(m=a[F2]<0||a[F2]>11?F2:a[d2]<1||a[d2]>Y6(a[B2],a[F2])?d2:a[w8]<0||a[w8]>24||a[w8]===24&&(a[E8]!==0||a[J1]!==0||a[M2]!==0)?w8:a[E8]<0||a[E8]>59?E8:a[J1]<0||a[J1]>59?J1:a[M2]<0||a[M2]>999?M2:-1,H(A)._overflowDayOfYear&&(m<B2||m>d2))m=d2;if(H(A)._overflowWeeks&&m===-1)m=L2;if(H(A)._overflowWeekday&&m===-1)m=X2;H(A).overflow=m}return A}var e8=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,s1=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,w_=/Z|[+-]\d\d(?::?\d\d)?/,J_=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],t6=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ov=/^\/?Date\((-?\d+)/i,Ju=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,X7={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function G5(A){var m,a,r=A._i,J2=e8.exec(r)||s1.exec(r),r2,g8,U1,N6,m_=J_.length,bv=t6.length;if(J2){H(A).iso=!0;for(m=0,a=m_;m<a;m++)if(J_[m][1].exec(J2[1])){g8=J_[m][0],r2=J_[m][2]!==!1;break}if(g8==null){A._isValid=!1;return}if(J2[3]){for(m=0,a=bv;m<a;m++)if(t6[m][1].exec(J2[3])){U1=(J2[2]||" ")+t6[m][0];break}if(U1==null){A._isValid=!1;return}}if(!r2&&U1!=null){A._isValid=!1;return}if(J2[4])if(w_.exec(J2[4]))N6="Z";else{A._isValid=!1;return}A._f=g8+(U1||"")+(N6||""),bH(A)}else A._isValid=!1}function P_(A,m,a,r,J2,r2){var g8=[Z6(A),G4.indexOf(m),parseInt(a,10),parseInt(r,10),parseInt(J2,10)];if(r2)g8.push(parseInt(r2,10));return g8}function Z6(A){var m=parseInt(A,10);if(m<=49)return 2000+m;else if(m<=999)return 1900+m;return m}function d1(A){return A.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function i6(A,m,a){if(A){var r=B6.indexOf(A),J2=new Date(m[0],m[1],m[2]).getDay();if(r!==J2)return H(a).weekdayMismatch=!0,a._isValid=!1,!1}return!0}function e6(A,m,a){if(A)return X7[A];else if(m)return 0;else{var r=parseInt(a,10),J2=r%100,r2=(r-J2)/100;return r2*60+J2}}function $4(A){var m=Ju.exec(d1(A._i)),a;if(m){if(a=P_(m[4],m[3],m[2],m[5],m[6],m[7]),!i6(m[1],a,A))return;A._a=a,A._tzm=e6(m[8],m[9],m[10]),A._d=b2.apply(null,A._a),A._d.setUTCMinutes(A._d.getUTCMinutes()-A._tzm),H(A).rfc2822=!0}else A._isValid=!1}function s4(A){var m=Ov.exec(A._i);if(m!==null){A._d=new Date(+m[1]);return}if(G5(A),A._isValid===!1)delete A._isValid;else return;if($4(A),A._isValid===!1)delete A._isValid;else return;if(A._strict)A._isValid=!1;else v.createFromInputFallback(A)}v.createFromInputFallback=R("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(A){A._d=new Date(A._i+(A._useUTC?" UTC":""))});function h$(A,m,a){if(A!=null)return A;if(m!=null)return m;return a}function p7(A){var m=new Date(v.now());if(A._useUTC)return[m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate()];return[m.getFullYear(),m.getMonth(),m.getDate()]}function l9(A){var m,a,r=[],J2,r2,g8;if(A._d)return;if(J2=p7(A),A._w&&A._a[d2]==null&&A._a[F2]==null)CK(A);if(A._dayOfYear!=null){if(g8=h$(A._a[B2],J2[B2]),A._dayOfYear>i8(g8)||A._dayOfYear===0)H(A)._overflowDayOfYear=!0;a=b2(g8,0,A._dayOfYear),A._a[F2]=a.getUTCMonth(),A._a[d2]=a.getUTCDate()}for(m=0;m<3&&A._a[m]==null;++m)A._a[m]=r[m]=J2[m];for(;m<7;m++)A._a[m]=r[m]=A._a[m]==null?m===2?1:0:A._a[m];if(A._a[w8]===24&&A._a[E8]===0&&A._a[J1]===0&&A._a[M2]===0)A._nextDay=!0,A._a[w8]=0;if(A._d=(A._useUTC?b2:n2).apply(null,r),r2=A._useUTC?A._d.getUTCDay():A._d.getDay(),A._tzm!=null)A._d.setUTCMinutes(A._d.getUTCMinutes()-A._tzm);if(A._nextDay)A._a[w8]=24;if(A._w&&typeof A._w.d<"u"&&A._w.d!==r2)H(A).weekdayMismatch=!0}function CK(A){var m,a,r,J2,r2,g8,U1,N6,m_;if(m=A._w,m.GG!=null||m.W!=null||m.E!=null){if(r2=1,g8=4,a=h$(m.GG,A._a[B2],A8(D4(),1,4).year),r=h$(m.W,1),J2=h$(m.E,1),J2<1||J2>7)N6=!0}else if(r2=A._locale._week.dow,g8=A._locale._week.doy,m_=A8(D4(),r2,g8),a=h$(m.gg,A._a[B2],m_.year),r=h$(m.w,m_.week),m.d!=null){if(J2=m.d,J2<0||J2>6)N6=!0}else if(m.e!=null){if(J2=m.e+r2,m.e<0||m.e>6)N6=!0}else J2=r2;if(r<1||r>f8(a,r2,g8))H(A)._overflowWeeks=!0;else if(N6!=null)H(A)._overflowWeekday=!0;else U1=c8(a,r,J2,r2,g8),A._a[B2]=U1.year,A._dayOfYear=U1.dayOfYear}v.ISO_8601=function(){},v.RFC_2822=function(){};function bH(A){if(A._f===v.ISO_8601){G5(A);return}if(A._f===v.RFC_2822){$4(A);return}A._a=[],H(A).empty=!0;var m=""+A._i,a,r,J2,r2,g8,U1=m.length,N6=0,m_,bv;J2=E2(A._f,A._locale).match(K2)||[],bv=J2.length;for(a=0;a<bv;a++){if(r2=J2[a],r=(m.match(v8(r2,A))||[])[0],r){if(g8=m.substr(0,m.indexOf(r)),g8.length>0)H(A).unusedInput.push(g8);m=m.slice(m.indexOf(r)+r.length),N6+=r.length}if(i2[r2]){if(r)H(A).empty=!1;else H(A).unusedTokens.push(r2);v1(r2,r,A)}else if(A._strict&&!r)H(A).unusedTokens.push(r2)}if(H(A).charsLeftOver=U1-N6,m.length>0)H(A).unusedInput.push(m);if(A._a[w8]<=12&&H(A).bigHour===!0&&A._a[w8]>0)H(A).bigHour=void 0;if(H(A).parsedDateParts=A._a.slice(0),H(A).meridiem=A._meridiem,A._a[w8]=Gg(A._locale,A._a[w8],A._meridiem),m_=H(A).era,m_!==null)A._a[B2]=A._locale.erasConvertYear(m_,A._a[B2]);l9(A),b8(A)}function Gg(A,m,a){var r;if(a==null)return m;if(A.meridiemHour!=null)return A.meridiemHour(m,a);else if(A.isPM!=null){if(r=A.isPM(a),r&&m<12)m+=12;if(!r&&m===12)m=0;return m}else return m}function fg(A){var m,a,r,J2,r2,g8,U1=!1,N6=A._f.length;if(N6===0){H(A).invalidFormat=!0,A._d=new Date(NaN);return}for(J2=0;J2<N6;J2++){if(r2=0,g8=!1,m=T({},A),A._useUTC!=null)m._useUTC=A._useUTC;if(m._f=A._f[J2],bH(m),p(m))g8=!0;if(r2+=H(m).charsLeftOver,r2+=H(m).unusedTokens.length*10,H(m).score=r2,!U1){if(r==null||r2<r||g8){if(r=r2,a=m,g8)U1=!0}}else if(r2<r)r=r2,a=m}O(A,a||m)}function Ag(A){if(A._d)return;var m=R2(A._i),a=m.day===void 0?m.date:m.day;A._a=W([m.year,m.month,a,m.hour,m.minute,m.second,m.millisecond],function(r){return r&&parseInt(r,10)}),l9(A)}function Tg(A){var m=new j(b8(bP(A)));if(m._nextDay)m.add(1,"d"),m._nextDay=void 0;return m}function bP(A){var{_i:m,_f:a}=A;if(A._locale=A._locale||M8(A._l),m===null||a===void 0&&m==="")return G({nullInput:!0});if(typeof m==="string")A._i=m=A._locale.preparse(m);if(k(m))return new j(b8(m));else if(J(m))A._d=m;else if(K(a))fg(A);else if(a)bH(A);else Pg(A);if(!p(A))A._d=null;return A}function Pg(A){var m=A._i;if(c(m))A._d=new Date(v.now());else if(J(m))A._d=new Date(m.valueOf());else if(typeof m==="string")s4(A);else if(K(m))A._a=W(m.slice(0),function(a){return parseInt(a,10)}),l9(A);else if(q(m))Ag(A);else if(w(m))A._d=new Date(m);else v.createFromInputFallback(A)}function IP(A,m,a,r,J2){var r2={};if(m===!0||m===!1)r=m,m=void 0;if(a===!0||a===!1)r=a,a=void 0;if(q(A)&&z(A)||K(A)&&A.length===0)A=void 0;return r2._isAMomentObject=!0,r2._useUTC=r2._isUTC=J2,r2._l=a,r2._i=A,r2._f=m,r2._strict=r,Tg(r2)}function D4(A,m,a,r){return IP(A,m,a,r,!1)}var jg=R("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var A=D4.apply(null,arguments);if(this.isValid()&&A.isValid())return A<this?this:A;else return G()}),lP=R("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var A=D4.apply(null,arguments);if(this.isValid()&&A.isValid())return A>this?this:A;else return G()});function yP(A,m){var a,r;if(m.length===1&&K(m[0]))m=m[0];if(!m.length)return D4();a=m[0];for(r=1;r<m.length;++r)if(!m[r].isValid()||m[r][A](a))a=m[r];return a}function Vg(){var A=[].slice.call(arguments,0);return yP("isBefore",A)}function ng(){var A=[].slice.call(arguments,0);return yP("isAfter",A)}var d=function(){return Date.now?Date.now():+new Date},s=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Q(A){var m,a=!1,r,J2=s.length;for(m in A)if(Y(A,m)&&!(k1.call(s,m)!==-1&&(A[m]==null||!isNaN(A[m]))))return!1;for(r=0;r<J2;++r)if(A[s[r]]){if(a)return!1;if(parseFloat(A[s[r]])!==t2(A[s[r]]))a=!0}return!0}function u2(){return this._isValid}function p2(){return l3(NaN)}function N2(A){var m=R2(A),a=m.year||0,r=m.quarter||0,J2=m.month||0,r2=m.week||m.isoWeek||0,g8=m.day||0,U1=m.hour||0,N6=m.minute||0,m_=m.second||0,bv=m.millisecond||0;this._isValid=Q(m),this._milliseconds=+bv+m_*1000+N6*60000+U1*1000*60*60,this._days=+g8+r2*7,this._months=+J2+r*3+a*12,this._data={},this._locale=M8(),this._bubble()}function u8(A){return A instanceof N2}function p8(A){if(A<0)return Math.round(-1*A)*-1;else return Math.round(A)}function L8(A,m,a){var r=Math.min(A.length,m.length),J2=Math.abs(A.length-m.length),r2=0,g8;for(g8=0;g8<r;g8++)if(a&&A[g8]!==m[g8]||!a&&t2(A[g8])!==t2(m[g8]))r2++;return r2+J2}function T1(A,m){f2(A,0,0,function(){var a=this.utcOffset(),r="+";if(a<0)a=-a,r="-";return r+$2(~~(a/60),2)+m+$2(~~a%60,2)})}T1("Z",":"),T1("ZZ",""),k2("Z",p6),k2("ZZ",p6),z8(["Z","ZZ"],function(A,m,a){a._useUTC=!0,a._tzm=R1(p6,A)});var P1=/([\+\-]|\d\d)/gi;function R1(A,m){var a=(m||"").match(A),r,J2,r2;if(a===null)return null;return r=a[a.length-1]||[],J2=(r+"").match(P1)||["-",0,0],r2=+(J2[1]*60)+t2(J2[2]),r2===0?0:J2[0]==="+"?r2:-r2}function h1(A,m){var a,r;if(m._isUTC)return a=m.clone(),r=(k(A)||J(A)?A.valueOf():D4(A).valueOf())-a.valueOf(),a._d.setTime(a._d.valueOf()+r),v.updateOffset(a,!1),a;else return D4(A).local()}function r8(A){return-Math.round(A._d.getTimezoneOffset())}v.updateOffset=function(){};function j1(A,m,a){var r=this._offset||0,J2;if(!this.isValid())return A!=null?this:NaN;if(A!=null){if(typeof A==="string"){if(A=R1(p6,A),A===null)return this}else if(Math.abs(A)<16&&!a)A=A*60;if(!this._isUTC&&m)J2=r8(this);if(this._offset=A,this._isUTC=!0,J2!=null)this.add(J2,"m");if(r!==A){if(!m||this._changeInProgress)H9(this,l3(A-r,"m"),1,!1);else if(!this._changeInProgress)this._changeInProgress=!0,v.updateOffset(this,!0),this._changeInProgress=null}return this}else return this._isUTC?r:r8(this)}function G6(A,m){if(A!=null){if(typeof A!=="string")A=-A;return this.utcOffset(A,m),this}else return-this.utcOffset()}function j_(A){return this.utcOffset(0,A)}function w4(A){if(this._isUTC){if(this.utcOffset(0,A),this._isUTC=!1,A)this.subtract(r8(this),"m")}return this}function V6(){if(this._tzm!=null)this.utcOffset(this._tzm,!1,!0);else if(typeof this._i==="string"){var A=R1(e1,this._i);if(A!=null)this.utcOffset(A);else this.utcOffset(0,!0)}return this}function E4(A){if(!this.isValid())return!1;return A=A?D4(A).utcOffset():0,(this.utcOffset()-A)%60===0}function N3(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function f5(){if(!c(this._isDSTShifted))return this._isDSTShifted;var A={},m;if(T(A,this),A=bP(A),A._a)m=A._isUTC?Z(A._a):D4(A._a),this._isDSTShifted=this.isValid()&&L8(A._a,m.toArray())>0;else this._isDSTShifted=!1;return this._isDSTShifted}function Wu(){return this.isValid()?!this._isUTC:!1}function Ou(){return this.isValid()?this._isUTC:!1}function A5(){return this.isValid()?this._isUTC&&this._offset===0:!1}var K3=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,EK=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function l3(A,m){var a=A,r=null,J2,r2,g8;if(u8(A))a={ms:A._milliseconds,d:A._days,M:A._months};else if(w(A)||!isNaN(+A))if(a={},m)a[m]=+A;else a.milliseconds=+A;else if(r=K3.exec(A))J2=r[1]==="-"?-1:1,a={y:0,d:t2(r[d2])*J2,h:t2(r[w8])*J2,m:t2(r[E8])*J2,s:t2(r[J1])*J2,ms:t2(p8(r[M2]*1000))*J2};else if(r=EK.exec(A))J2=r[1]==="-"?-1:1,a={y:y9(r[2],J2),M:y9(r[3],J2),w:y9(r[4],J2),d:y9(r[5],J2),h:y9(r[6],J2),m:y9(r[7],J2),s:y9(r[8],J2)};else if(a==null)a={};else if(typeof a==="object"&&(("from"in a)||("to"in a)))g8=B9(D4(a.from),D4(a.to)),a={},a.ms=g8.milliseconds,a.M=g8.months;if(r2=new N2(a),u8(A)&&Y(A,"_locale"))r2._locale=A._locale;if(u8(A)&&Y(A,"_isValid"))r2._isValid=A._isValid;return r2}l3.fn=N2.prototype,l3.invalid=p2;function y9(A,m){var a=A&&parseFloat(A.replace(",","."));return(isNaN(a)?0:a)*m}function LK(A,m){var a={};if(a.months=m.month()-A.month()+(m.year()-A.year())*12,A.clone().add(a.months,"M").isAfter(m))--a.months;return a.milliseconds=+m-+A.clone().add(a.months,"M"),a}function B9(A,m){var a;if(!(A.isValid()&&m.isValid()))return{milliseconds:0,months:0};if(m=h1(m,A),A.isBefore(m))a=LK(A,m);else a=LK(m,A),a.milliseconds=-a.milliseconds,a.months=-a.months;return a}function xJ(A,m){return function(a,r){var J2,r2;if(r!==null&&!isNaN(+r))V(m,"moment()."+m+"(period, number) is deprecated. Please use moment()."+m+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r2=a,a=r,r=r2;return J2=l3(a,r),H9(this,J2,A),this}}function H9(A,m,a,r){var J2=m._milliseconds,r2=p8(m._days),g8=p8(m._months);if(!A.isValid())return;if(r=r==null?!0:r,g8)F(A,P8(A,"Month")+g8*a);if(r2)R8(A,"Date",P8(A,"Date")+r2*a);if(J2)A._d.setTime(A._d.valueOf()+J2*a);if(r)v.updateOffset(A,r2||g8)}var wc=xJ(1,"add"),NJ=xJ(-1,"subtract");function IH(A){return typeof A==="string"||A instanceof String}function BP(A){return k(A)||J(A)||IH(A)||w(A)||UP(A)||Mg(A)||A===null||A===void 0}function Mg(A){var m=q(A)&&!z(A),a=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],J2,r2,g8=r.length;for(J2=0;J2<g8;J2+=1)r2=r[J2],a=a||Y(A,r2);return m&&a}function UP(A){var m=K(A),a=!1;if(m)a=A.filter(function(r){return!w(r)&&IH(A)}).length===0;return m&&a}function l1(A){var m=q(A)&&!z(A),a=!1,r=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],J2,r2;for(J2=0;J2<r.length;J2+=1)r2=r[J2],a=a||Y(A,r2);return m&&a}function E6(A,m){var a=A.diff(m,"days",!0);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"}function O6(A,m){if(arguments.length===1){if(!arguments[0])A=void 0,m=void 0;else if(BP(arguments[0]))A=arguments[0],m=void 0;else if(l1(arguments[0]))m=arguments[0],A=void 0}var a=A||D4(),r=h1(a,this).startOf("day"),J2=v.calendarFormat(this,r)||"sameElse",r2=m&&(D(m[J2])?m[J2].call(this,a):m[J2]);return this.format(r2||this.localeData().calendar(J2,this,D4(a)))}function __(){return new j(this)}function C6(A,m){var a=k(A)?A:D4(A);if(!(this.isValid()&&a.isValid()))return!1;if(m=Q2(m)||"millisecond",m==="millisecond")return this.valueOf()>a.valueOf();else return a.valueOf()<this.clone().startOf(m).valueOf()}function $_(A,m){var a=k(A)?A:D4(A);if(!(this.isValid()&&a.isValid()))return!1;if(m=Q2(m)||"millisecond",m==="millisecond")return this.valueOf()<a.valueOf();else return this.clone().endOf(m).valueOf()<a.valueOf()}function U6(A,m,a,r){var J2=k(A)?A:D4(A),r2=k(m)?m:D4(m);if(!(this.isValid()&&J2.isValid()&&r2.isValid()))return!1;return r=r||"()",(r[0]==="("?this.isAfter(J2,a):!this.isBefore(J2,a))&&(r[1]===")"?this.isBefore(r2,a):!this.isAfter(r2,a))}function F6(A,m){var a=k(A)?A:D4(A),r;if(!(this.isValid()&&a.isValid()))return!1;if(m=Q2(m)||"millisecond",m==="millisecond")return this.valueOf()===a.valueOf();else return r=a.valueOf(),this.clone().startOf(m).valueOf()<=r&&r<=this.clone().endOf(m).valueOf()}function t4(A,m){return this.isSame(A,m)||this.isAfter(A,m)}function G7(A,m){return this.isSame(A,m)||this.isBefore(A,m)}function SY8(A,m,a){var r,J2,r2;if(!this.isValid())return NaN;if(r=h1(A,this),!r.isValid())return NaN;switch(J2=(r.utcOffset()-this.utcOffset())*60000,m=Q2(m),m){case"year":r2=FP(this,r)/12;break;case"month":r2=FP(this,r);break;case"quarter":r2=FP(this,r)/3;break;case"second":r2=(this-r)/1000;break;case"minute":r2=(this-r)/60000;break;case"hour":r2=(this-r)/3600000;break;case"day":r2=(this-r-J2)/86400000;break;case"week":r2=(this-r-J2)/604800000;break;default:r2=this-r}return a?r2:a2(r2)}function FP(A,m){if(A.date()<m.date())return-FP(m,A);var a=(m.year()-A.year())*12+(m.month()-A.month()),r=A.clone().add(a,"months"),J2,r2;if(m-r<0)J2=A.clone().add(a-1,"months"),r2=(m-r)/(r-J2);else J2=A.clone().add(a+1,"months"),r2=(m-r)/(J2-r);return-(a+r2)||0}v.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",v.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";function aY8(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function bY8(A){if(!this.isValid())return null;var m=A!==!0,a=m?this.clone().utc():this;if(a.year()<0||a.year()>9999)return K8(a,m?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(D(Date.prototype.toISOString))if(m)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1000).toISOString().replace("Z",K8(a,"Z"));return K8(a,m?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function IY8(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var A="moment",m="",a,r,J2,r2;if(!this.isLocal())A=this.utcOffset()===0?"moment.utc":"moment.parseZone",m="Z";return a="["+A+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",J2="-MM-DD[T]HH:mm:ss.SSS",r2=m+'[")]',this.format(a+r+J2+r2)}function lY8(A){if(!A)A=this.isUtc()?v.defaultFormatUtc:v.defaultFormat;var m=K8(this,A);return this.localeData().postformat(m)}function yY8(A,m){if(this.isValid()&&(k(A)&&A.isValid()||D4(A).isValid()))return l3({to:this,from:A}).locale(this.locale()).humanize(!m);else return this.localeData().invalidDate()}function BY8(A){return this.from(D4(),A)}function UY8(A,m){if(this.isValid()&&(k(A)&&A.isValid()||D4(A).isValid()))return l3({from:this,to:A}).locale(this.locale()).humanize(!m);else return this.localeData().invalidDate()}function FY8(A){return this.to(D4(),A)}function d32(A){var m;if(A===void 0)return this._locale._abbr;else{if(m=M8(A),m!=null)this._locale=m;return this}}var r32=R("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(A){if(A===void 0)return this.localeData();else return this.locale(A)});function s32(){return this._locale}var QP=1000,kJ=60*QP,oP=60*kJ,t32=3506328*oP;function DJ(A,m){return(A%m+m)%m}function e32(A,m,a){if(A<100&&A>=0)return new Date(A+400,m,a)-t32;else return new Date(A,m,a).valueOf()}function _v2(A,m,a){if(A<100&&A>=0)return Date.UTC(A+400,m,a)-t32;else return Date.UTC(A,m,a)}function QY8(A){var m,a;if(A=Q2(A),A===void 0||A==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?_v2:e32,A){case"year":m=a(this.year(),0,1);break;case"quarter":m=a(this.year(),this.month()-this.month()%3,1);break;case"month":m=a(this.year(),this.month(),1);break;case"week":m=a(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":m=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":m=a(this.year(),this.month(),this.date());break;case"hour":m=this._d.valueOf(),m-=DJ(m+(this._isUTC?0:this.utcOffset()*kJ),oP);break;case"minute":m=this._d.valueOf(),m-=DJ(m,kJ);break;case"second":m=this._d.valueOf(),m-=DJ(m,QP);break}return this._d.setTime(m),v.updateOffset(this,!0),this}function oY8(A){var m,a;if(A=Q2(A),A===void 0||A==="millisecond"||!this.isValid())return this;switch(a=this._isUTC?_v2:e32,A){case"year":m=a(this.year()+1,0,1)-1;break;case"quarter":m=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":m=a(this.year(),this.month()+1,1)-1;break;case"week":m=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":m=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":m=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":m=this._d.valueOf(),m+=oP-DJ(m+(this._isUTC?0:this.utcOffset()*kJ),oP)-1;break;case"minute":m=this._d.valueOf(),m+=kJ-DJ(m,kJ)-1;break;case"second":m=this._d.valueOf(),m+=QP-DJ(m,QP)-1;break}return this._d.setTime(m),v.updateOffset(this,!0),this}function dY8(){return this._d.valueOf()-(this._offset||0)*60000}function rY8(){return Math.floor(this.valueOf()/1000)}function sY8(){return new Date(this.valueOf())}function tY8(){var A=this;return[A.year(),A.month(),A.date(),A.hour(),A.minute(),A.second(),A.millisecond()]}function eY8(){var A=this;return{years:A.year(),months:A.month(),date:A.date(),hours:A.hours(),minutes:A.minutes(),seconds:A.seconds(),milliseconds:A.milliseconds()}}function _z8(){return this.isValid()?this.toISOString():null}function $z8(){return p(this)}function vz8(){return O({},H(this))}function uz8(){return H(this).overflow}function Kz8(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}f2("N",0,0,"eraAbbr"),f2("NN",0,0,"eraAbbr"),f2("NNN",0,0,"eraAbbr"),f2("NNNN",0,0,"eraName"),f2("NNNNN",0,0,"eraNarrow"),f2("y",["y",1],"yo","eraYear"),f2("y",["yy",2],0,"eraYear"),f2("y",["yyy",3],0,"eraYear"),f2("y",["yyyy",4],0,"eraYear"),k2("N",xg),k2("NN",xg),k2("NNN",xg),k2("NNNN",Hz8),k2("NNNNN",Xz8),z8(["N","NN","NNN","NNNN","NNNNN"],function(A,m,a,r){var J2=a._locale.erasParse(A,r,a._strict);if(J2)H(a).era=J2;else H(a).invalidEra=A}),k2("y",o1),k2("yy",o1),k2("yyy",o1),k2("yyyy",o1),k2("yo",pz8),z8(["y","yy","yyy","yyyy"],B2),z8(["yo"],function(A,m,a,r){var J2;if(a._locale._eraYearOrdinalRegex)J2=A.match(a._locale._eraYearOrdinalRegex);if(a._locale.eraYearOrdinalParse)m[B2]=a._locale.eraYearOrdinalParse(A,J2);else m[B2]=parseInt(A,10)});function qz8(A,m){var a,r,J2,r2=this._eras||M8("en")._eras;for(a=0,r=r2.length;a<r;++a){switch(typeof r2[a].since){case"string":J2=v(r2[a].since).startOf("day"),r2[a].since=J2.valueOf();break}switch(typeof r2[a].until){case"undefined":r2[a].until=1/0;break;case"string":J2=v(r2[a].until).startOf("day").valueOf(),r2[a].until=J2.valueOf();break}}return r2}function Yz8(A,m,a){var r,J2,r2=this.eras(),g8,U1,N6;A=A.toUpperCase();for(r=0,J2=r2.length;r<J2;++r)if(g8=r2[r].name.toUpperCase(),U1=r2[r].abbr.toUpperCase(),N6=r2[r].narrow.toUpperCase(),a)switch(m){case"N":case"NN":case"NNN":if(U1===A)return r2[r];break;case"NNNN":if(g8===A)return r2[r];break;case"NNNNN":if(N6===A)return r2[r];break}else if([g8,U1,N6].indexOf(A)>=0)return r2[r]}function zz8(A,m){var a=A.since<=A.until?1:-1;if(m===void 0)return v(A.since).year();else return v(A.since).year()+(m-A.offset)*a}function cz8(){var A,m,a,r=this.localeData().eras();for(A=0,m=r.length;A<m;++A){if(a=this.clone().startOf("day").valueOf(),r[A].since<=a&&a<=r[A].until)return r[A].name;if(r[A].until<=a&&a<=r[A].since)return r[A].name}return""}function wz8(){var A,m,a,r=this.localeData().eras();for(A=0,m=r.length;A<m;++A){if(a=this.clone().startOf("day").valueOf(),r[A].since<=a&&a<=r[A].until)return r[A].narrow;if(r[A].until<=a&&a<=r[A].since)return r[A].narrow}return""}function Jz8(){var A,m,a,r=this.localeData().eras();for(A=0,m=r.length;A<m;++A){if(a=this.clone().startOf("day").valueOf(),r[A].since<=a&&a<=r[A].until)return r[A].abbr;if(r[A].until<=a&&a<=r[A].since)return r[A].abbr}return""}function Wz8(){var A,m,a,r,J2=this.localeData().eras();for(A=0,m=J2.length;A<m;++A)if(a=J2[A].since<=J2[A].until?1:-1,r=this.clone().startOf("day").valueOf(),J2[A].since<=r&&r<=J2[A].until||J2[A].until<=r&&r<=J2[A].since)return(this.year()-v(J2[A].since).year())*a+J2[A].offset;return this.year()}function Oz8(A){if(!Y(this,"_erasNameRegex"))Ng.call(this);return A?this._erasNameRegex:this._erasRegex}function Zz8(A){if(!Y(this,"_erasAbbrRegex"))Ng.call(this);return A?this._erasAbbrRegex:this._erasRegex}function iz8(A){if(!Y(this,"_erasNarrowRegex"))Ng.call(this);return A?this._erasNarrowRegex:this._erasRegex}function xg(A,m){return m.erasAbbrRegex(A)}function Hz8(A,m){return m.erasNameRegex(A)}function Xz8(A,m){return m.erasNarrowRegex(A)}function pz8(A,m){return m._eraYearOrdinalRegex||o1}function Ng(){var A=[],m=[],a=[],r=[],J2,r2,g8,U1,N6,m_=this.eras();for(J2=0,r2=m_.length;J2<r2;++J2)g8=x8(m_[J2].name),U1=x8(m_[J2].abbr),N6=x8(m_[J2].narrow),m.push(g8),A.push(U1),a.push(N6),r.push(g8),r.push(U1),r.push(N6);this._erasRegex=new RegExp("^("+r.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+m.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+A.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+a.join("|")+")","i")}f2(0,["gg",2],0,function(){return this.weekYear()%100}),f2(0,["GG",2],0,function(){return this.isoWeekYear()%100});function dP(A,m){f2(0,[A,A.length],0,m)}dP("gggg","weekYear"),dP("ggggg","weekYear"),dP("GGGG","isoWeekYear"),dP("GGGGG","isoWeekYear"),k2("G",N1),k2("g",N1),k2("GG",V8,h2),k2("gg",V8,h2),k2("GGGG",t8,_8),k2("gggg",t8,_8),k2("GGGGG",F8,T8),k2("ggggg",F8,T8),N8(["gggg","ggggg","GGGG","GGGGG"],function(A,m,a,r){m[r.substr(0,2)]=t2(A)}),N8(["gg","GG"],function(A,m,a,r){m[r]=v.parseTwoDigitYear(A)});function Gz8(A){return $v2.call(this,A,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function fz8(A){return $v2.call(this,A,this.isoWeek(),this.isoWeekday(),1,4)}function Az8(){return f8(this.year(),1,4)}function Tz8(){return f8(this.isoWeekYear(),1,4)}function Pz8(){var A=this.localeData()._week;return f8(this.year(),A.dow,A.doy)}function jz8(){var A=this.localeData()._week;return f8(this.weekYear(),A.dow,A.doy)}function $v2(A,m,a,r,J2){var r2;if(A==null)return A8(this,r,J2).year;else{if(r2=f8(A,r,J2),m>r2)m=r2;return Vz8.call(this,A,m,a,r,J2)}}function Vz8(A,m,a,r,J2){var r2=c8(A,m,a,r,J2),g8=b2(r2.year,0,r2.dayOfYear);return this.year(g8.getUTCFullYear()),this.month(g8.getUTCMonth()),this.date(g8.getUTCDate()),this}f2("Q",0,"Qo","quarter"),k2("Q",Y8),z8("Q",function(A,m){m[F2]=(t2(A)-1)*3});function nz8(A){return A==null?Math.ceil((this.month()+1)/3):this.month((A-1)*3+this.month()%3)}f2("D",["DD",2],"Do","date"),k2("D",V8,J6),k2("DD",V8,h2),k2("Do",function(A,m){return A?m._dayOfMonthOrdinalParse||m._ordinalParse:m._dayOfMonthOrdinalParseLenient}),z8(["D","DD"],d2),z8("Do",function(A,m){m[d2]=t2(A.match(V8)[0])});var vv2=J8("Date",!0);f2("DDD",["DDDD",3],"DDDo","dayOfYear"),k2("DDD",q1),k2("DDDD",D2),z8(["DDD","DDDD"],function(A,m,a){a._dayOfYear=t2(A)});function Mz8(A){var m=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/86400000)+1;return A==null?m:this.add(A-m,"d")}f2("m",["mm",2],0,"minute"),k2("m",V8,M6),k2("mm",V8,h2),z8(["m","mm"],E8);var xz8=J8("Minutes",!1);f2("s",["ss",2],0,"second"),k2("s",V8,M6),k2("ss",V8,h2),z8(["s","ss"],J1);var Nz8=J8("Seconds",!1);f2("S",0,0,function(){return~~(this.millisecond()/100)}),f2(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),f2(0,["SSS",3],0,"millisecond"),f2(0,["SSSS",4],0,function(){return this.millisecond()*10}),f2(0,["SSSSS",5],0,function(){return this.millisecond()*100}),f2(0,["SSSSSS",6],0,function(){return this.millisecond()*1000}),f2(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),f2(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),f2(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),k2("S",q1,Y8),k2("SS",q1,h2),k2("SSS",q1,D2);var pY,uv2;for(pY="SSSS";pY.length<=9;pY+="S")k2(pY,o1);function kz8(A,m){m[M2]=t2(("0."+A)*1000)}for(pY="S";pY.length<=9;pY+="S")z8(pY,kz8);uv2=J8("Milliseconds",!1),f2("z",0,0,"zoneAbbr"),f2("zz",0,0,"zoneName");function Dz8(){return this._isUTC?"UTC":""}function mz8(){return this._isUTC?"Coordinated Universal Time":""}var X1=j.prototype;if(X1.add=wc,X1.calendar=O6,X1.clone=__,X1.diff=SY8,X1.endOf=oY8,X1.format=lY8,X1.from=yY8,X1.fromNow=BY8,X1.to=UY8,X1.toNow=FY8,X1.get=l8,X1.invalidAt=uz8,X1.isAfter=C6,X1.isBefore=$_,X1.isBetween=U6,X1.isSame=F6,X1.isSameOrAfter=t4,X1.isSameOrBefore=G7,X1.isValid=$z8,X1.lang=r32,X1.locale=d32,X1.localeData=s32,X1.max=lP,X1.min=jg,X1.parsingFlags=vz8,X1.set=U8,X1.startOf=QY8,X1.subtract=NJ,X1.toArray=tY8,X1.toObject=eY8,X1.toDate=sY8,X1.toISOString=bY8,X1.inspect=IY8,typeof Symbol<"u"&&Symbol.for!=null)X1[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};X1.toJSON=_z8,X1.toString=aY8,X1.unix=rY8,X1.valueOf=dY8,X1.creationData=Kz8,X1.eraName=cz8,X1.eraNarrow=wz8,X1.eraAbbr=Jz8,X1.eraYear=Wz8,X1.year=P2,X1.isLeapYear=$8,X1.weekYear=Gz8,X1.isoWeekYear=fz8,X1.quarter=X1.quarters=nz8,X1.month=y,X1.daysInMonth=t,X1.week=X1.weeks=d8,X1.isoWeek=X1.isoWeeks=A1,X1.weeksInYear=Pz8,X1.weeksInWeekYear=jz8,X1.isoWeeksInYear=Az8,X1.isoWeeksInISOWeekYear=Tz8,X1.date=vv2,X1.day=X1.days=H_,X1.weekday=S4,X1.isoWeekday=a4,X1.dayOfYear=Mz8,X1.hour=X1.hours=HY,X1.minute=X1.minutes=xz8,X1.second=X1.seconds=Nz8,X1.millisecond=X1.milliseconds=uv2,X1.utcOffset=j1,X1.utc=j_,X1.local=w4,X1.parseZone=V6,X1.hasAlignedHourOffset=E4,X1.isDST=N3,X1.isLocal=Wu,X1.isUtcOffset=Ou,X1.isUtc=A5,X1.isUTC=A5,X1.zoneAbbr=Dz8,X1.zoneName=mz8,X1.dates=R("dates accessor is deprecated. Use date instead.",vv2),X1.months=R("months accessor is deprecated. Use month instead",y),X1.years=R("years accessor is deprecated. Use year instead",P2),X1.zone=R("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",G6),X1.isDSTShifted=R("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",f5);function Rz8(A){return D4(A*1000)}function hz8(){return D4.apply(null,arguments).parseZone()}function Kv2(A){return A}var o_=E.prototype;o_.calendar=_2,o_.longDateFormat=j8,o_.invalidDate=A2,o_.ordinal=O2,o_.preparse=Kv2,o_.postformat=Kv2,o_.relativeTime=G2,o_.pastFuture=W2,o_.set=h,o_.eras=qz8,o_.erasParse=Yz8,o_.erasConvertYear=zz8,o_.erasAbbrRegex=Zz8,o_.erasNameRegex=Oz8,o_.erasNarrowRegex=iz8,o_.months=l,o_.monthsShort=e,o_.monthsParse=g,o_.monthsRegex=H2,o_.monthsShortRegex=c2,o_.week=a8,o_.firstDayOfYear=h8,o_.firstDayOfWeek=Z1,o_.weekdays=D6,o_.weekdaysMin=c1,o_.weekdaysShort=T$,o_.weekdaysParse=h6,o_.weekdaysRegex=C4,o_.weekdaysShortRegex=f4,o_.weekdaysMinRegex=x3,o_.isPM=ZY,o_.meridiem=E_;function rP(A,m,a,r){var J2=M8(),r2=Z().set(r,m);return J2[a](r2,A)}function qv2(A,m,a){if(w(A))m=A,A=void 0;if(A=A||"",m!=null)return rP(A,m,a,"month");var r,J2=[];for(r=0;r<12;r++)J2[r]=rP(A,r,a,"month");return J2}function kg(A,m,a,r){if(typeof A==="boolean"){if(w(m))a=m,m=void 0;m=m||""}else{if(m=A,a=m,A=!1,w(m))a=m,m=void 0;m=m||""}var J2=M8(),r2=A?J2._week.dow:0,g8,U1=[];if(a!=null)return rP(m,(a+r2)%7,r,"day");for(g8=0;g8<7;g8++)U1[g8]=rP(m,(g8+r2)%7,r,"day");return U1}function Cz8(A,m){return qv2(A,m,"months")}function Ez8(A,m){return qv2(A,m,"monthsShort")}function Lz8(A,m,a){return kg(A,m,a,"weekdays")}function gz8(A,m,a){return kg(A,m,a,"weekdaysShort")}function Sz8(A,m,a){return kg(A,m,a,"weekdaysMin")}T2("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(A){var m=A%10,a=t2(A%100/10)===1?"th":m===1?"st":m===2?"nd":m===3?"rd":"th";return A+a}}),v.lang=R("moment.lang is deprecated. Use moment.locale instead.",T2),v.langData=R("moment.langData is deprecated. Use moment.localeData instead.",M8);var gK=Math.abs;function az8(){var A=this._data;return this._milliseconds=gK(this._milliseconds),this._days=gK(this._days),this._months=gK(this._months),A.milliseconds=gK(A.milliseconds),A.seconds=gK(A.seconds),A.minutes=gK(A.minutes),A.hours=gK(A.hours),A.months=gK(A.months),A.years=gK(A.years),this}function Yv2(A,m,a,r){var J2=l3(m,a);return A._milliseconds+=r*J2._milliseconds,A._days+=r*J2._days,A._months+=r*J2._months,A._bubble()}function bz8(A,m){return Yv2(this,A,m,1)}function Iz8(A,m){return Yv2(this,A,m,-1)}function zv2(A){if(A<0)return Math.floor(A);else return Math.ceil(A)}function lz8(){var A=this._milliseconds,m=this._days,a=this._months,r=this._data,J2,r2,g8,U1,N6;if(!(A>=0&&m>=0&&a>=0||A<=0&&m<=0&&a<=0))A+=zv2(Dg(a)+m)*86400000,m=0,a=0;return r.milliseconds=A%1000,J2=a2(A/1000),r.seconds=J2%60,r2=a2(J2/60),r.minutes=r2%60,g8=a2(r2/60),r.hours=g8%24,m+=a2(g8/24),N6=a2(cv2(m)),a+=N6,m-=zv2(Dg(N6)),U1=a2(a/12),a%=12,r.days=m,r.months=a,r.years=U1,this}function cv2(A){return A*4800/146097}function Dg(A){return A*146097/4800}function yz8(A){if(!this.isValid())return NaN;var m,a,r=this._milliseconds;if(A=Q2(A),A==="month"||A==="quarter"||A==="year")switch(m=this._days+r/86400000,a=this._months+cv2(m),A){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(m=this._days+Math.round(Dg(this._months)),A){case"week":return m/7+r/604800000;case"day":return m+r/86400000;case"hour":return m*24+r/3600000;case"minute":return m*1440+r/60000;case"second":return m*86400+r/1000;case"millisecond":return Math.floor(m*86400000)+r;default:throw Error("Unknown unit "+A)}}function SK(A){return function(){return this.as(A)}}var wv2=SK("ms"),Bz8=SK("s"),Uz8=SK("m"),Fz8=SK("h"),Qz8=SK("d"),oz8=SK("w"),dz8=SK("M"),rz8=SK("Q"),sz8=SK("y"),tz8=wv2;function ez8(){return l3(this)}function _c8(A){return A=Q2(A),this.isValid()?this[A+"s"]():NaN}function Jc(A){return function(){return this.isValid()?this._data[A]:NaN}}var $c8=Jc("milliseconds"),vc8=Jc("seconds"),uc8=Jc("minutes"),Kc8=Jc("hours"),qc8=Jc("days"),Yc8=Jc("months"),zc8=Jc("years");function cc8(){return a2(this.days()/7)}var aK=Math.round,mJ={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function wc8(A,m,a,r,J2){return J2.relativeTime(m||1,!!a,A,r)}function Jc8(A,m,a,r){var J2=l3(A).abs(),r2=aK(J2.as("s")),g8=aK(J2.as("m")),U1=aK(J2.as("h")),N6=aK(J2.as("d")),m_=aK(J2.as("M")),bv=aK(J2.as("w")),bK=aK(J2.as("y")),GY=r2<=a.ss&&["s",r2]||r2<a.s&&["ss",r2]||g8<=1&&["m"]||g8<a.m&&["mm",g8]||U1<=1&&["h"]||U1<a.h&&["hh",U1]||N6<=1&&["d"]||N6<a.d&&["dd",N6];if(a.w!=null)GY=GY||bv<=1&&["w"]||bv<a.w&&["ww",bv];return GY=GY||m_<=1&&["M"]||m_<a.M&&["MM",m_]||bK<=1&&["y"]||["yy",bK],GY[2]=m,GY[3]=+A>0,GY[4]=r,wc8.apply(null,GY)}function Wc8(A){if(A===void 0)return aK;if(typeof A==="function")return aK=A,!0;return!1}function Oc8(A,m){if(mJ[A]===void 0)return!1;if(m===void 0)return mJ[A];if(mJ[A]=m,A==="s")mJ.ss=m-1;return!0}function Zc8(A,m){if(!this.isValid())return this.localeData().invalidDate();var a=!1,r=mJ,J2,r2;if(typeof A==="object")m=A,A=!1;if(typeof A==="boolean")a=A;if(typeof m==="object"){if(r=Object.assign({},mJ,m),m.s!=null&&m.ss==null)r.ss=m.s-1}if(J2=this.localeData(),r2=Jc8(this,!a,r,J2),a)r2=J2.pastFuture(+this,r2);return J2.postformat(r2)}var mg=Math.abs;function RJ(A){return(A>0)-(A<0)||+A}function sP(){if(!this.isValid())return this.localeData().invalidDate();var A=mg(this._milliseconds)/1000,m=mg(this._days),a=mg(this._months),r,J2,r2,g8,U1=this.asSeconds(),N6,m_,bv,bK;if(!U1)return"P0D";return r=a2(A/60),J2=a2(r/60),A%=60,r%=60,r2=a2(a/12),a%=12,g8=A?A.toFixed(3).replace(/\.?0+$/,""):"",N6=U1<0?"-":"",m_=RJ(this._months)!==RJ(U1)?"-":"",bv=RJ(this._days)!==RJ(U1)?"-":"",bK=RJ(this._milliseconds)!==RJ(U1)?"-":"",N6+"P"+(r2?m_+r2+"Y":"")+(a?m_+a+"M":"")+(m?bv+m+"D":"")+(J2||r||A?"T":"")+(J2?bK+J2+"H":"")+(r?bK+r+"M":"")+(A?bK+g8+"S":"")}var L_=N2.prototype;L_.isValid=u2,L_.abs=az8,L_.add=bz8,L_.subtract=Iz8,L_.as=yz8,L_.asMilliseconds=wv2,L_.asSeconds=Bz8,L_.asMinutes=Uz8,L_.asHours=Fz8,L_.asDays=Qz8,L_.asWeeks=oz8,L_.asMonths=dz8,L_.asQuarters=rz8,L_.asYears=sz8,L_.valueOf=tz8,L_._bubble=lz8,L_.clone=ez8,L_.get=_c8,L_.milliseconds=$c8,L_.seconds=vc8,L_.minutes=uc8,L_.hours=Kc8,L_.days=qc8,L_.weeks=cc8,L_.months=Yc8,L_.years=zc8,L_.humanize=Zc8,L_.toISOString=sP,L_.toString=sP,L_.toJSON=sP,L_.locale=d32,L_.localeData=s32,L_.toIsoString=R("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",sP),L_.lang=r32,f2("X",0,0,"unix"),f2("x",0,0,"valueOf"),k2("x",N1),k2("X",y1),z8("X",function(A,m,a){a._d=new Date(parseFloat(A)*1000)}),z8("x",function(A,m,a){a._d=new Date(t2(A))});//! moment.js
500
500
  return v.version="2.30.1",u(D4),v.fn=X1,v.min=Vg,v.max=ng,v.now=d,v.utc=Z,v.unix=Rz8,v.months=Cz8,v.isDate=J,v.locale=T2,v.invalid=G,v.duration=l3,v.isMoment=k,v.weekdays=Lz8,v.parseZone=hz8,v.localeData=M8,v.isDuration=u8,v.monthsShort=Ez8,v.weekdaysMin=Sz8,v.defineLocale=q8,v.updateLocale=n8,v.locales=C8,v.weekdaysShort=gz8,v.normalizeUnits=Q2,v.relativeTimeRounding=Wc8,v.relativeTimeThreshold=Oc8,v.calendarFormat=E6,v.prototype=X1,v.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},v})});var sG2=x((tZ6,rG2)=>{var YG=1000,zG=YG*60,cG=zG*60,wG=cG*24,Tb8=wG*365.25;rG2.exports=function(_,v){v=v||{};var u=typeof _;if(u==="string"&&_.length>0)return Pb8(_);else if(u==="number"&&isNaN(_)===!1)return v.long?Vb8(_):jb8(_);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(_))};function Pb8(_){if(_=String(_),_.length>100)return;var v=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(_);if(!v)return;var u=parseFloat(v[1]),K=(v[2]||"ms").toLowerCase();switch(K){case"years":case"year":case"yrs":case"yr":case"y":return u*Tb8;case"days":case"day":case"d":return u*wG;case"hours":case"hour":case"hrs":case"hr":case"h":return u*cG;case"minutes":case"minute":case"mins":case"min":case"m":return u*zG;case"seconds":case"second":case"secs":case"sec":case"s":return u*YG;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return u;default:return}}function jb8(_){if(_>=wG)return Math.round(_/wG)+"d";if(_>=cG)return Math.round(_/cG)+"h";if(_>=zG)return Math.round(_/zG)+"m";if(_>=YG)return Math.round(_/YG)+"s";return _+"ms"}function Vb8(_){return px(_,wG,"day")||px(_,cG,"hour")||px(_,zG,"minute")||px(_,YG,"second")||_+" ms"}function px(_,v,u){if(_<v)return;if(_<v*1.5)return Math.floor(_/v)+" "+u;return Math.ceil(_/v)+" "+u+"s"}});var PU=x((G_,tG2)=>{G_=tG2.exports=TU.debug=TU.default=TU;G_.coerce=Db8;G_.disable=Nb8;G_.enable=xb8;G_.enabled=kb8;G_.humanize=sG2();G_.instances=[];G_.names=[];G_.skips=[];G_.formatters={};function nb8(_){var v=0,u;for(u in _)v=(v<<5)-v+_.charCodeAt(u),v|=0;return G_.colors[Math.abs(v)%G_.colors.length]}function TU(_){var v;function u(){if(!u.enabled)return;var K=u,q=+new Date,Y=q-(v||q);K.diff=Y,K.prev=v,K.curr=q,v=q;var z=Array(arguments.length);for(var c=0;c<z.length;c++)z[c]=arguments[c];if(z[0]=G_.coerce(z[0]),typeof z[0]!=="string")z.unshift("%O");var w=0;z[0]=z[0].replace(/%([a-zA-Z%])/g,function(W,O){if(W==="%%")return W;w++;var Z=G_.formatters[O];if(typeof Z==="function"){var i=z[w];W=Z.call(K,i),z.splice(w,1),w--}return W}),G_.formatArgs.call(K,z);var J=u.log||G_.log||console.log.bind(console);J.apply(K,z)}if(u.namespace=_,u.enabled=G_.enabled(_),u.useColors=G_.useColors(),u.color=nb8(_),u.destroy=Mb8,typeof G_.init==="function")G_.init(u);return G_.instances.push(u),u}function Mb8(){var _=G_.instances.indexOf(this);if(_!==-1)return G_.instances.splice(_,1),!0;else return!1}function xb8(_){G_.save(_),G_.names=[],G_.skips=[];var v,u=(typeof _==="string"?_:"").split(/[\s,]+/),K=u.length;for(v=0;v<K;v++){if(!u[v])continue;if(_=u[v].replace(/\*/g,".*?"),_[0]==="-")G_.skips.push(new RegExp("^"+_.substr(1)+"$"));else G_.names.push(new RegExp("^"+_+"$"))}for(v=0;v<G_.instances.length;v++){var q=G_.instances[v];q.enabled=G_.enabled(q.namespace)}}function Nb8(){G_.enable("")}function kb8(_){if(_[_.length-1]==="*")return!0;var v,u;for(v=0,u=G_.skips.length;v<u;v++)if(G_.skips[v].test(_))return!1;for(v=0,u=G_.names.length;v<u;v++)if(G_.names[v].test(_))return!0;return!1}function Db8(_){if(_ instanceof Error)return _.stack||_.message;return _}});var $f2=x((ev,_f2)=>{ev=_f2.exports=PU();ev.log=hb8;ev.formatArgs=Rb8;ev.save=Cb8;ev.load=eG2;ev.useColors=mb8;ev.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:Eb8();ev.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function mb8(){if(typeof window<"u"&&window.process&&window.process.type==="renderer")return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}ev.formatters.j=function(_){try{return JSON.stringify(_)}catch(v){return"[UnexpectedJSONParseError]: "+v.message}};function Rb8(_){var v=this.useColors;if(_[0]=(v?"%c":"")+this.namespace+(v?" %c":" ")+_[0]+(v?"%c ":" ")+"+"+ev.humanize(this.diff),!v)return;var u="color: "+this.color;_.splice(1,0,u,"color: inherit");var K=0,q=0;_[0].replace(/%[a-zA-Z%]/g,function(Y){if(Y==="%%")return;if(K++,Y==="%c")q=K}),_.splice(q,0,u)}function hb8(){return typeof console==="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function Cb8(_){try{if(_==null)ev.storage.removeItem("debug");else ev.storage.debug=_}catch(v){}}function eG2(){var _;try{_=ev.storage.debug}catch(v){}if(!_&&typeof process<"u"&&"env"in process)_=process.env.DEBUG;return _}ev.enable(eG2());function Eb8(){try{return window.localStorage}catch(_){}}});var Kf2=x((s$,uf2)=>{var Lb8=I2("tty"),fx=I2("util");s$=uf2.exports=PU();s$.init=lb8;s$.log=bb8;s$.formatArgs=Sb8;s$.save=Ib8;s$.load=vf2;s$.useColors=gb8;s$.colors=[6,2,3,4,5,1];try{if(Gx=(()=>{throw new Error("Cannot require module "+"supports-color");})(),Gx&&Gx.level>=2)s$.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}catch(_){}var Gx;s$.inspectOpts=Object.keys(process.env).filter(function(_){return/^debug_/i.test(_)}).reduce(function(_,v){var u=v.substring(6).toLowerCase().replace(/_([a-z])/g,function(q,Y){return Y.toUpperCase()}),K=process.env[v];if(/^(yes|on|true|enabled)$/i.test(K))K=!0;else if(/^(no|off|false|disabled)$/i.test(K))K=!1;else if(K==="null")K=null;else K=Number(K);return _[u]=K,_},{});function gb8(){return"colors"in s$.inspectOpts?Boolean(s$.inspectOpts.colors):Lb8.isatty(process.stderr.fd)}s$.formatters.o=function(_){return this.inspectOpts.colors=this.useColors,fx.inspect(_,this.inspectOpts).split(`
501
501
  `).map(function(v){return v.trim()}).join(" ")};s$.formatters.O=function(_){return this.inspectOpts.colors=this.useColors,fx.inspect(_,this.inspectOpts)};function Sb8(_){var v=this.namespace,u=this.useColors;if(u){var K=this.color,q="\x1B[3"+(K<8?K:"8;5;"+K),Y=" "+q+";1m"+v+" \x1B[0m";_[0]=Y+_[0].split(`
502
502
  `).join(`
@@ -1378,7 +1378,7 @@ ${q}`,v);this.line=u,this.column=K,this.codeblock=q}}/*!
1378
1378
  */w1();var iK=W8.create({namespace:"caw:service:mcp-connection"}),Np1=(_)=>{let v=me.join(_,".claude","settings.json");try{let u=De.readFileSync(v,"utf8"),q=JSON.parse(u).mcpServers||{},Y=Object.values(q).map((z)=>z.url).filter((z)=>typeof z==="string");return iK.debug("Read %d entries from %s",Y.length,v),Y}catch(u){return iK.debug("Cannot read Claude config %s: %s",v,u.message),[]}},kp1=(_)=>{let v=me.join(_,".codex","config.toml");try{let u=De.readFileSync(v,"utf8"),q=ke(u).mcp_servers||{},Y=Object.values(q).map((z)=>z.url).filter((z)=>typeof z==="string");return iK.debug("Read %d entries from %s",Y.length,v),Y}catch(u){return iK.debug("Cannot read Codex config %s: %s",v,u.message),[]}},Dp1=(_)=>{let v=me.join(_,".cursor","mcp.json");try{let u=De.readFileSync(v,"utf8"),q=JSON.parse(u).mcpServers||{},Y=Object.values(q).map((z)=>z.url).filter((z)=>typeof z==="string");return iK.debug("Read %d entries from %s",Y.length,v),Y}catch(u){return iK.debug("Cannot read Cursor config %s: %s",v,u.message),[]}},mp1=[{agentName:"claude",readMcpEntries:Np1},{agentName:"codex",readMcpEntries:kp1},{agentName:"cursor",readMcpEntries:Dp1}],Rp1=(_,v,u,K)=>{let q=`${v}${u}`,Y=null;for(let z of _){let c;try{c=new URL(z)}catch{continue}if(!c.pathname.endsWith(u))continue;if(z===q)return{status:"configured",configuredUrl:z,expectedUrl:q};let w=c.origin;if(K.includes(w)&&!Y)Y=z}if(Y)return{status:"stale",configuredUrl:Y,expectedUrl:q};return{status:"not_configured",expectedUrl:q}},hp1=({configService:_,integrationService:v,cawPort:u,processEnv:K})=>{let q=()=>{let{active:z}=_.getConfig();if(z.caddy?.enabled&&z.caddy?.domain)return`https://${z.caddy.domain}`;return`http://localhost:${u}`};return Object.freeze({getEffectiveMcpBaseUrl:q,getMcpStatus:async(z)=>{iK.info("getMcpStatus called for project %s",z);let{active:c}=_.getConfig(),w=q(),J=`/mcp/p/${z}`,W=await v.getIntegrations(),O=[`http://localhost:${u}`];if(c.caddy?.domain)O.push(`https://${c.caddy.domain}`);let Z=K.HOME||K.USERPROFILE;if(!Z)iK.warn("Home directory not resolvable from processEnv");let i={};for(let H of mp1){if(!W.find((P)=>P.name===H.agentName)?.available){i[H.agentName]={status:"not_installed"},iK.debug("Agent %s: not_installed",H.agentName);continue}let p=Z?H.readMcpEntries(Z):[],G=Rp1(p,w,J,O);i[H.agentName]=G,iK.debug("Agent %s: status=%s configuredUrl=%s expectedUrl=%s",H.agentName,G.status,G.configuredUrl||"-",G.expectedUrl)}return{agents:i,effectiveBaseUrl:w}}})};var ye2=Object.freeze({create:hp1});c6();var Cp1=({integrationService:_,registry:v})=>{return async(K,q)=>{let Y=await _.getIntegrations(),z=K?v.getDisplayName(K):null;if([z,q?"docker":null].filter(Boolean).some((J)=>{let W=Y.find((O)=>O.name===J);return W&&W.detectedAt===null}))await _.detectAll(),Y=await _.getIntegrations();if(z){let J=Y.find((W)=>W.name===z);if(J&&!J.available){let W=Y.filter((O)=>O.category==="agents"&&O.available).map((O)=>O.name);throw N.integrationUnavailable(`${J.displayName} is not installed. Installed agents: ${W.join(", ")||"none"}. Use get_integrations to check available integrations before creating jobs.`,"AGENT_UNAVAILABLE",{reason:J.reason,action:J.action,installedAgents:W})}}if(q){let J=Y.find((W)=>W.name==="docker");if(J&&!J.available)throw N.integrationUnavailable(`Docker is not available. Cannot run job with image "${q}". ${J.action}`,"DOCKER_UNAVAILABLE",{reason:J.reason,action:J.action})}}},Be2=Object.freeze({create:Cp1});w1();var n3=W8.create({namespace:"caw:job-reconciliation"}),Ep1=/claude|codex|docker/i,Lp1=5000,Ue2=500,gp1=async(_,{killProcess:v,platform:u})=>{let K=qi(_,{killProcess:v,platform:u});if(!K.exists)return!0;if(K.command&&!Ep1.test(K.command))return n3.debug('PID %d command "%s" does not look like an agent process -- skipping kill',_,K.command),!1;n3.debug("Killing orphaned process PID %d (command: %s)",_,K.command||"unknown");try{v(_,"SIGTERM")}catch(Y){if(Y.code==="ESRCH")return!0;return n3.debug("Failed to SIGTERM PID %d: %s",_,Y.message),!1}let q=Math.ceil(Lp1/Ue2);for(let Y=0;Y<q;Y++)if(await new Promise((c)=>setTimeout(c,Ue2)),!qi(_,{killProcess:v,platform:u}).exists)return!0;try{v(_,"SIGKILL"),n3.debug("Sent SIGKILL to PID %d",_)}catch(Y){if(Y.code!=="ESRCH")n3.debug("Failed to SIGKILL PID %d: %s",_,Y.message)}return!0},Fe2=async({db:_,getProjects:v,getServicesForProject:u,createCtxFromProjectId:K,killProcess:q,platform:Y})=>{let z=await v();if(z.length===0){n3.debug("No projects found -- skipping reconciliation");return}let c=0,w=new Map;for(let J of z){let W=J.id||J.objectId;n3.debug("Reconciling project %s",W);let O;try{O=await K(W)}catch(G){n3.debug("Failed to create context for project %s: %s",W,G.message);continue}let Z=await u(O.projCtx),{jobService:i,transactionService:H,rootStore:X}=Z,p=[...X.getCodes()];for(let G of p)for(let P of["running","pending"]){let f;try{f=(await i.listJobs(_,{},{store:G,status:[P],limit:1e4,offset:0})).jobs}catch(T){n3.debug("Failed to list %s jobs for store %s: %s",P,G,T.message);continue}for(let T of f){c++;let j=T.getObjectId(),k=T.getField("pid")?.getValues()?.at(-1)?parseInt(T.getField("pid").getValues().at(-1),10):null,M=T.getField("objectId")?.getValue();if(n3.debug("Found orphaned %s job %s (PID: %s, objectId: %s)",P,j,k||"none",M||"none"),k)await gp1(k,{killProcess:q,platform:Y});try{await H.updateJobStatus(O,{id:j,status:"error",errorMessage:"Server restarted -- job process was lost"})}catch(R){n3.debug("Failed to mark job %s as error: %s",j,R.message)}if(M&&M.startsWith("As"))w.set(M,O.projCtx)}}}if(c===0){n3.debug("No orphaned jobs found");return}n3.debug("Marked %d orphaned jobs as error",c),await new Promise((J)=>setImmediate(J));for(let[J,W]of w){let O=await K(W),Z=await u(O.projCtx),{jobService:i,transactionService:H,rootStore:X}=Z,p=[...X.getCodes()],G=0,P=0;for(let f of p)for(let T of["running","pending"])try{let{jobs:j}=await i.listJobs(_,{},{store:f,status:[T],limit:1e4,offset:0});for(let k of j)if(k.getField("objectId")?.getValue()===J){if(T==="running")G++;if(T==="pending")P++}}catch(j){n3.debug("Failed to count %s jobs for story %s in store %s: %s",T,J,f,j.message)}try{await H.setStoryJobCount(O,{id:J,count:G}),n3.warn(`[Job Reconciliation] Corrected activeJobCount for story ${J} to ${G}`)}catch(f){n3.debug("Failed to correct activeJobCount for story %s: %s",J,f.message)}try{await H.setStoryPendingJobCount(O,{id:J,count:P}),n3.warn(`[Job Reconciliation] Corrected pendingJobCount for story ${J} to ${P}`)}catch(f){n3.debug("Failed to correct pendingJobCount for story %s: %s",J,f.message)}}n3.warn(`[Job Reconciliation] Reconciled ${c} orphaned jobs across ${w.size} stories`)};w1();var OR=W8.create({namespace:"caw:rag-config-reconciliation"}),Re=()=>{},Sp1=[{fieldName:"ragDefaultDoc",value:"false"},{fieldName:"ragDefaultCartridge",value:"true"},{fieldName:"ragDefaultTask",value:"false"},{fieldName:"ragDefaultScratch",value:"false"},{fieldName:"ragDefaultTemplate",value:"false"},{fieldName:"ragDefaultPrompt",value:"false"},{fieldName:"ragDefaultSavedSearch",value:"false"}],Qe2=async({db:_,storeStore:v})=>{let u=await v.readSharedStore(_,{}),K=await u.readSettingsRootFolder(_,{},{storeCode:"B"});if(!K){OR.debug("reconcileRagConfig: Store B has no settings root folder — skipping");return}let q=await u.findFolderByName(_,{},K.getObjectId(),"RAG");if(q){if(await u.findSettingByName(_,{},q.getObjectId(),"rag-config")){OR.debug("reconcileRagConfig: Store B rag-config already exists — no-op");return}}OR.warn("[RAG Config Reconciliation] Store B rag-config missing — creating");let Y=q??await u.createFolder(_,{},{parentId:K.getObjectId(),name:"RAG",subtype:null},Re),{entity:z}=await u.createSetting(_,{},{storeCode:"B",parentId:Y.getObjectId(),name:"rag-config",subtype:"rag-config"},Re);for(let{fieldName:c,value:w}of Sp1)await u.setFieldValue(_,{},{entityId:z.getObjectId(),fieldName:c,value:w},Re);OR.warn("[RAG Config Reconciliation] Created Store B rag-config with defaults")};w1();var k9=W8.create({namespace:"caw:job-queue"}),ap1=()=>{let _=new Set,v=[],u=(W,O,Z)=>{_.add(W);let i,H;try{({jobRunner:i,transactionService:H}=Z())}catch(X){k9.debug("Factory error for job %s: %s",W,X.message),_.delete(W);return}k9.debug("Spawning job %s (running=%d, pending=%d)",W,_.size,v.length),setImmediate(async()=>{try{await i.runJob(W,O)}catch(X){k9.debug("Spawn/run error for job %s: %s",W,X.message);try{await H.updateJobStatus(O,{id:W,status:"error",errorMessage:X.message})}catch(p){k9.debug("Failed to update job %s status to error: %s",W,p.message),_.delete(W)}}})},K=(W,O,Z,i,H,X)=>{if(X&&_.has(X))k9.debug("Enqueue job %s: parent %s is running, bypassing capacity (%d/%d)",W,X,_.size,i),u(W,O,H);else if(_.size<i)k9.debug("Enqueue job %s: under capacity (%d/%d), spawning immediately",W,_.size,i),u(W,O,H);else k9.debug("Enqueue job %s: at capacity (%d/%d), queuing",W,_.size,i),v.push({jobId:W,ctx:O,projectId:Z,maxConcurrentJobs:i,jobRunnerFactory:H})},q=()=>{if(v.length>0){let W=v.shift();k9.debug("Draining next job %s from queue",W.jobId);try{u(W.jobId,W.ctx,W.jobRunnerFactory)}catch(O){k9.debug("Failed to spawn drained job %s: %s",W.jobId,O.message)}}};return Object.freeze({enqueue:K,onJobCompleted:(W)=>{if(!_.has(W))return;_.delete(W),k9.debug("Job %s completed (running=%d, pending=%d)",W,_.size,v.length),q()},getRunningJobs:()=>Array.from(_),releaseSlot:(W)=>{if(!_.has(W))return k9.debug("releaseSlot: Job %s not in runningJobs (no-op)",W),!1;return _.delete(W),k9.debug("releaseSlot: Job %s released (running=%d, pending=%d)",W,_.size,v.length),q(),!0},reclaimSlot:(W)=>{_.add(W),k9.debug("reclaimSlot: Job %s reclaimed (running=%d)",W,_.size)},removePending:(W)=>{let O=v.findIndex((Z)=>Z.jobId===W);if(O!==-1)v.splice(O,1),k9.debug("removePending: Job %s removed from pending queue (pending=%d)",W,v.length)}})},oe2=Object.freeze({create:ap1});function Wi(_,v){let u=typeof _;if(u!==typeof v)return!1;if(Array.isArray(_)){if(!Array.isArray(v))return!1;let K=_.length;if(K!==v.length)return!1;for(let q=0;q<K;q++)if(!Wi(_[q],v[q]))return!1;return!0}if(u==="object"){if(!_||!v)return _===v;let K=Object.keys(_),q=Object.keys(v);if(K.length!==q.length)return!1;for(let z of K)if(!Wi(_[z],v[z]))return!1;return!0}return _===v}function w5(_){return encodeURI(bp1(_))}function bp1(_){return _.replace(/~/g,"~0").replace(/\//g,"~1")}var Ip1={prefixItems:!0,items:!0,allOf:!0,anyOf:!0,oneOf:!0},lp1={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependentSchemas:!0},yp1={id:!0,$id:!0,$ref:!0,$schema:!0,$anchor:!0,$vocabulary:!0,$comment:!0,default:!0,enum:!0,const:!0,required:!0,type:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0},Bp1=typeof self<"u"&&self.location&&self.location.origin!=="null"?new URL(self.location.origin+self.location.pathname+location.search):new URL("https://github.com/cfworker");function rq(_,v=Object.create(null),u=Bp1,K=""){if(_&&typeof _==="object"&&!Array.isArray(_)){let Y=_.$id||_.id;if(Y){let z=new URL(Y,u.href);if(z.hash.length>1)v[z.href]=_;else if(z.hash="",K==="")u=z;else rq(_,v,u)}}else if(_!==!0&&_!==!1)return v;let q=u.href+(K?"#"+K:"");if(v[q]!==void 0)throw Error(`Duplicate schema URI "${q}".`);if(v[q]=_,_===!0||_===!1)return v;if(_.__absolute_uri__===void 0)Object.defineProperty(_,"__absolute_uri__",{enumerable:!1,value:q});if(_.$ref&&_.__absolute_ref__===void 0){let Y=new URL(_.$ref,u.href);Y.hash=Y.hash,Object.defineProperty(_,"__absolute_ref__",{enumerable:!1,value:Y.href})}if(_.$recursiveRef&&_.__absolute_recursive_ref__===void 0){let Y=new URL(_.$recursiveRef,u.href);Y.hash=Y.hash,Object.defineProperty(_,"__absolute_recursive_ref__",{enumerable:!1,value:Y.href})}if(_.$anchor){let Y=new URL("#"+_.$anchor,u.href);v[Y.href]=_}for(let Y in _){if(yp1[Y])continue;let z=`${K}/${w5(Y)}`,c=_[Y];if(Array.isArray(c)){if(Ip1[Y]){let w=c.length;for(let J=0;J<w;J++)rq(c[J],v,u,`${z}/${J}`)}}else if(lp1[Y])for(let w in c)rq(c[w],v,u,`${z}/${w5(w)}`);else rq(c,v,u,z)}return v}var Up1=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Fp1=[0,31,28,31,30,31,30,31,31,30,31,30,31],Qp1=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,op1=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,dp1=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,rp1=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,sp1=/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,tp1=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,ep1=/^(?:\/(?:[^~/]|~0|~1)*)*$/,_G1=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,$G1=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,vG1=(_)=>{if(_[0]==='"')return!1;let[v,u,...K]=_.split("@");if(!v||!u||K.length!==0||v.length>64||u.length>253)return!1;if(v[0]==="."||v.endsWith(".")||v.includes(".."))return!1;if(!/^[a-z0-9.-]+$/i.test(u)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(v))return!1;return u.split(".").every((q)=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(q))},uG1=/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,KG1=/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,qG1=(_)=>_.length>1&&_.length<80&&(/^P\d+([.,]\d+)?W$/.test(_)||/^P[\dYMDTHS]*(\d[.,]\d+)?[YMDHS]$/.test(_)&&/^P([.,\d]+Y)?([.,\d]+M)?([.,\d]+D)?(T([.,\d]+H)?([.,\d]+M)?([.,\d]+S)?)?$/.test(_));function HK(_){return _.test.bind(_)}var he={date:de2,time:re2.bind(void 0,!1),"date-time":cG1,duration:qG1,uri:WG1,"uri-reference":HK(dp1),"uri-template":HK(rp1),url:HK(sp1),email:vG1,hostname:HK(op1),ipv4:HK(uG1),ipv6:HK(KG1),regex:ZG1,uuid:HK(tp1),"json-pointer":HK(ep1),"json-pointer-uri-fragment":HK(_G1),"relative-json-pointer":HK($G1)};function YG1(_){return _%4===0&&(_%100!==0||_%400===0)}function de2(_){let v=_.match(Up1);if(!v)return!1;let u=+v[1],K=+v[2],q=+v[3];return K>=1&&K<=12&&q>=1&&q<=(K==2&&YG1(u)?29:Fp1[K])}function re2(_,v){let u=v.match(Qp1);if(!u)return!1;let K=+u[1],q=+u[2],Y=+u[3],z=!!u[5];return(K<=23&&q<=59&&Y<=59||K==23&&q==59&&Y==60)&&(!_||z)}var zG1=/t|\s/i;function cG1(_){let v=_.split(zG1);return v.length==2&&de2(v[0])&&re2(!0,v[1])}var wG1=/\/|:/,JG1=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function WG1(_){return wG1.test(_)&&JG1.test(_)}var OG1=/[^\\]\\Z/;function ZG1(_){if(OG1.test(_))return!1;try{return new RegExp(_,"u"),!0}catch(v){return!1}}function se2(_){let v=0,u=_.length,K=0,q;while(K<u)if(v++,q=_.charCodeAt(K++),q>=55296&&q<=56319&&K<u){if(q=_.charCodeAt(K),(q&64512)==56320)K++}return v}function K$(_,v,u="2019-09",K=rq(v),q=!0,Y=null,z="#",c="#",w=Object.create(null)){if(v===!0)return{valid:!0,errors:[]};if(v===!1)return{valid:!1,errors:[{instanceLocation:z,keyword:"false",keywordLocation:z,error:"False boolean schema."}]};let J=typeof _,W;switch(J){case"boolean":case"number":case"string":W=J;break;case"object":if(_===null)W="null";else if(Array.isArray(_))W="array";else W="object";break;default:throw Error(`Instances of "${J}" type are not supported.`)}let{$ref:O,$recursiveRef:Z,$recursiveAnchor:i,type:H,const:X,enum:p,required:G,not:P,anyOf:f,allOf:T,oneOf:j,if:k,then:M,else:R,format:n,properties:V,patternProperties:D,additionalProperties:h,unevaluatedProperties:b,minProperties:E,maxProperties:o,propertyNames:U,dependentRequired:_2,dependentSchemas:$2,dependencies:K2,prefixItems:w2,items:q2,additionalItems:i2,unevaluatedItems:f2,contains:y2,minContains:x2,maxContains:K8,minItems:E2,maxItems:k8,uniqueItems:j8,minimum:O8,maximum:A2,exclusiveMinimum:U2,exclusiveMaximum:B,multipleOf:O2,minLength:v2,maxLength:G2,pattern:W2,__absolute_ref__:j2,__absolute_recursive_ref__:Q2}=v,R2=[];if(i===!0&&Y===null)Y=v;if(Z==="#"){let S2=Y===null?K[Q2]:Y,Y8=`${c}/$recursiveRef`,h2=K$(_,Y===null?v:Y,u,K,q,S2,z,Y8,w);if(!h2.valid)R2.push({instanceLocation:z,keyword:"$recursiveRef",keywordLocation:Y8,error:"A subschema had errors."},...h2.errors)}if(O!==void 0){let Y8=K[j2||O];if(Y8===void 0){let _8=`Unresolved $ref "${O}".`;if(j2&&j2!==O)_8+=` Absolute URI "${j2}".`;throw _8+=`
1379
1379
  Known schemas:
1380
1380
  - ${Object.keys(K).join(`
1381
- - `)}`,Error(_8)}let h2=`${c}/$ref`,D2=K$(_,Y8,u,K,q,Y,z,h2,w);if(!D2.valid)R2.push({instanceLocation:z,keyword:"$ref",keywordLocation:h2,error:"A subschema had errors."},...D2.errors);if(u==="4"||u==="7")return{valid:R2.length===0,errors:R2}}if(Array.isArray(H)){let S2=H.length,Y8=!1;for(let h2=0;h2<S2;h2++)if(W===H[h2]||H[h2]==="integer"&&W==="number"&&_%1===0&&_===_){Y8=!0;break}if(!Y8)R2.push({instanceLocation:z,keyword:"type",keywordLocation:`${c}/type`,error:`Instance type "${W}" is invalid. Expected "${H.join('", "')}".`})}else if(H==="integer"){if(W!=="number"||_%1||_!==_)R2.push({instanceLocation:z,keyword:"type",keywordLocation:`${c}/type`,error:`Instance type "${W}" is invalid. Expected "${H}".`})}else if(H!==void 0&&W!==H)R2.push({instanceLocation:z,keyword:"type",keywordLocation:`${c}/type`,error:`Instance type "${W}" is invalid. Expected "${H}".`});if(X!==void 0){if(W==="object"||W==="array"){if(!Wi(_,X))R2.push({instanceLocation:z,keyword:"const",keywordLocation:`${c}/const`,error:`Instance does not match ${JSON.stringify(X)}.`})}else if(_!==X)R2.push({instanceLocation:z,keyword:"const",keywordLocation:`${c}/const`,error:`Instance does not match ${JSON.stringify(X)}.`})}if(p!==void 0){if(W==="object"||W==="array"){if(!p.some((S2)=>Wi(_,S2)))R2.push({instanceLocation:z,keyword:"enum",keywordLocation:`${c}/enum`,error:`Instance does not match any of ${JSON.stringify(p)}.`})}else if(!p.some((S2)=>_===S2))R2.push({instanceLocation:z,keyword:"enum",keywordLocation:`${c}/enum`,error:`Instance does not match any of ${JSON.stringify(p)}.`})}if(P!==void 0){let S2=`${c}/not`;if(K$(_,P,u,K,q,Y,z,S2).valid)R2.push({instanceLocation:z,keyword:"not",keywordLocation:S2,error:'Instance matched "not" schema.'})}let e2=[];if(f!==void 0){let S2=`${c}/anyOf`,Y8=R2.length,h2=!1;for(let D2=0;D2<f.length;D2++){let _8=f[D2],T8=Object.create(w),V8=K$(_,_8,u,K,q,i===!0?Y:null,z,`${S2}/${D2}`,T8);if(R2.push(...V8.errors),h2=h2||V8.valid,V8.valid)e2.push(T8)}if(h2)R2.length=Y8;else R2.splice(Y8,0,{instanceLocation:z,keyword:"anyOf",keywordLocation:S2,error:"Instance does not match any subschemas."})}if(T!==void 0){let S2=`${c}/allOf`,Y8=R2.length,h2=!0;for(let D2=0;D2<T.length;D2++){let _8=T[D2],T8=Object.create(w),V8=K$(_,_8,u,K,q,i===!0?Y:null,z,`${S2}/${D2}`,T8);if(R2.push(...V8.errors),h2=h2&&V8.valid,V8.valid)e2.push(T8)}if(h2)R2.length=Y8;else R2.splice(Y8,0,{instanceLocation:z,keyword:"allOf",keywordLocation:S2,error:"Instance does not match every subschema."})}if(j!==void 0){let S2=`${c}/oneOf`,Y8=R2.length,h2=j.filter((D2,_8)=>{let T8=Object.create(w),V8=K$(_,D2,u,K,q,i===!0?Y:null,z,`${S2}/${_8}`,T8);if(R2.push(...V8.errors),V8.valid)e2.push(T8);return V8.valid}).length;if(h2===1)R2.length=Y8;else R2.splice(Y8,0,{instanceLocation:z,keyword:"oneOf",keywordLocation:S2,error:`Instance does not match exactly one subschema (${h2} matches).`})}if(W==="object"||W==="array")Object.assign(w,...e2);if(k!==void 0){let S2=`${c}/if`;if(K$(_,k,u,K,q,Y,z,S2,w).valid){if(M!==void 0){let h2=K$(_,M,u,K,q,Y,z,`${c}/then`,w);if(!h2.valid)R2.push({instanceLocation:z,keyword:"if",keywordLocation:S2,error:'Instance does not match "then" schema.'},...h2.errors)}}else if(R!==void 0){let h2=K$(_,R,u,K,q,Y,z,`${c}/else`,w);if(!h2.valid)R2.push({instanceLocation:z,keyword:"if",keywordLocation:S2,error:'Instance does not match "else" schema.'},...h2.errors)}}if(W==="object"){if(G!==void 0){for(let D2 of G)if(!(D2 in _))R2.push({instanceLocation:z,keyword:"required",keywordLocation:`${c}/required`,error:`Instance does not have required property "${D2}".`})}let S2=Object.keys(_);if(E!==void 0&&S2.length<E)R2.push({instanceLocation:z,keyword:"minProperties",keywordLocation:`${c}/minProperties`,error:`Instance does not have at least ${E} properties.`});if(o!==void 0&&S2.length>o)R2.push({instanceLocation:z,keyword:"maxProperties",keywordLocation:`${c}/maxProperties`,error:`Instance does not have at least ${o} properties.`});if(U!==void 0){let D2=`${c}/propertyNames`;for(let _8 in _){let T8=`${z}/${w5(_8)}`,V8=K$(_8,U,u,K,q,Y,T8,D2);if(!V8.valid)R2.push({instanceLocation:z,keyword:"propertyNames",keywordLocation:D2,error:`Property name "${_8}" does not match schema.`},...V8.errors)}}if(_2!==void 0){let D2=`${c}/dependantRequired`;for(let _8 in _2)if(_8 in _){let T8=_2[_8];for(let V8 of T8)if(!(V8 in _))R2.push({instanceLocation:z,keyword:"dependentRequired",keywordLocation:D2,error:`Instance has "${_8}" but does not have "${V8}".`})}}if($2!==void 0)for(let D2 in $2){let _8=`${c}/dependentSchemas`;if(D2 in _){let T8=K$(_,$2[D2],u,K,q,Y,z,`${_8}/${w5(D2)}`,w);if(!T8.valid)R2.push({instanceLocation:z,keyword:"dependentSchemas",keywordLocation:_8,error:`Instance has "${D2}" but does not match dependant schema.`},...T8.errors)}}if(K2!==void 0){let D2=`${c}/dependencies`;for(let _8 in K2)if(_8 in _){let T8=K2[_8];if(Array.isArray(T8)){for(let V8 of T8)if(!(V8 in _))R2.push({instanceLocation:z,keyword:"dependencies",keywordLocation:D2,error:`Instance has "${_8}" but does not have "${V8}".`})}else{let V8=K$(_,T8,u,K,q,Y,z,`${D2}/${w5(_8)}`);if(!V8.valid)R2.push({instanceLocation:z,keyword:"dependencies",keywordLocation:D2,error:`Instance has "${_8}" but does not match dependant schema.`},...V8.errors)}}}let Y8=Object.create(null),h2=!1;if(V!==void 0){let D2=`${c}/properties`;for(let _8 in V){if(!(_8 in _))continue;let T8=`${z}/${w5(_8)}`,V8=K$(_[_8],V[_8],u,K,q,Y,T8,`${D2}/${w5(_8)}`);if(V8.valid)w[_8]=Y8[_8]=!0;else if(h2=q,R2.push({instanceLocation:z,keyword:"properties",keywordLocation:D2,error:`Property "${_8}" does not match schema.`},...V8.errors),h2)break}}if(!h2&&D!==void 0){let D2=`${c}/patternProperties`;for(let _8 in D){let T8=new RegExp(_8,"u"),V8=D[_8];for(let o8 in _){if(!T8.test(o8))continue;let S8=`${z}/${w5(o8)}`,q1=K$(_[o8],V8,u,K,q,Y,S8,`${D2}/${w5(_8)}`);if(q1.valid)w[o8]=Y8[o8]=!0;else h2=q,R2.push({instanceLocation:z,keyword:"patternProperties",keywordLocation:D2,error:`Property "${o8}" matches pattern "${_8}" but does not match associated schema.`},...q1.errors)}}}if(!h2&&h!==void 0){let D2=`${c}/additionalProperties`;for(let _8 in _){if(Y8[_8])continue;let T8=`${z}/${w5(_8)}`,V8=K$(_[_8],h,u,K,q,Y,T8,D2);if(V8.valid)w[_8]=!0;else h2=q,R2.push({instanceLocation:z,keyword:"additionalProperties",keywordLocation:D2,error:`Property "${_8}" does not match additional properties schema.`},...V8.errors)}}else if(!h2&&b!==void 0){let D2=`${c}/unevaluatedProperties`;for(let _8 in _)if(!w[_8]){let T8=`${z}/${w5(_8)}`,V8=K$(_[_8],b,u,K,q,Y,T8,D2);if(V8.valid)w[_8]=!0;else R2.push({instanceLocation:z,keyword:"unevaluatedProperties",keywordLocation:D2,error:`Property "${_8}" does not match unevaluated properties schema.`},...V8.errors)}}}else if(W==="array"){if(k8!==void 0&&_.length>k8)R2.push({instanceLocation:z,keyword:"maxItems",keywordLocation:`${c}/maxItems`,error:`Array has too many items (${_.length} > ${k8}).`});if(E2!==void 0&&_.length<E2)R2.push({instanceLocation:z,keyword:"minItems",keywordLocation:`${c}/minItems`,error:`Array has too few items (${_.length} < ${E2}).`});let S2=_.length,Y8=0,h2=!1;if(w2!==void 0){let D2=`${c}/prefixItems`,_8=Math.min(w2.length,S2);for(;Y8<_8;Y8++){let T8=K$(_[Y8],w2[Y8],u,K,q,Y,`${z}/${Y8}`,`${D2}/${Y8}`);if(w[Y8]=!0,!T8.valid){if(h2=q,R2.push({instanceLocation:z,keyword:"prefixItems",keywordLocation:D2,error:"Items did not match schema."},...T8.errors),h2)break}}}if(q2!==void 0){let D2=`${c}/items`;if(Array.isArray(q2)){let _8=Math.min(q2.length,S2);for(;Y8<_8;Y8++){let T8=K$(_[Y8],q2[Y8],u,K,q,Y,`${z}/${Y8}`,`${D2}/${Y8}`);if(w[Y8]=!0,!T8.valid){if(h2=q,R2.push({instanceLocation:z,keyword:"items",keywordLocation:D2,error:"Items did not match schema."},...T8.errors),h2)break}}}else for(;Y8<S2;Y8++){let _8=K$(_[Y8],q2,u,K,q,Y,`${z}/${Y8}`,D2);if(w[Y8]=!0,!_8.valid){if(h2=q,R2.push({instanceLocation:z,keyword:"items",keywordLocation:D2,error:"Items did not match schema."},..._8.errors),h2)break}}if(!h2&&i2!==void 0){let _8=`${c}/additionalItems`;for(;Y8<S2;Y8++){let T8=K$(_[Y8],i2,u,K,q,Y,`${z}/${Y8}`,_8);if(w[Y8]=!0,!T8.valid)h2=q,R2.push({instanceLocation:z,keyword:"additionalItems",keywordLocation:_8,error:"Items did not match additional items schema."},...T8.errors)}}}if(y2!==void 0)if(S2===0&&x2===void 0)R2.push({instanceLocation:z,keyword:"contains",keywordLocation:`${c}/contains`,error:"Array is empty. It must contain at least one item matching the schema."});else if(x2!==void 0&&S2<x2)R2.push({instanceLocation:z,keyword:"minContains",keywordLocation:`${c}/minContains`,error:`Array has less items (${S2}) than minContains (${x2}).`});else{let D2=`${c}/contains`,_8=R2.length,T8=0;for(let V8=0;V8<S2;V8++){let o8=K$(_[V8],y2,u,K,q,Y,`${z}/${V8}`,D2);if(o8.valid)w[V8]=!0,T8++;else R2.push(...o8.errors)}if(T8>=(x2||0))R2.length=_8;if(x2===void 0&&K8===void 0&&T8===0)R2.splice(_8,0,{instanceLocation:z,keyword:"contains",keywordLocation:D2,error:"Array does not contain item matching schema."});else if(x2!==void 0&&T8<x2)R2.push({instanceLocation:z,keyword:"minContains",keywordLocation:`${c}/minContains`,error:`Array must contain at least ${x2} items matching schema. Only ${T8} items were found.`});else if(K8!==void 0&&T8>K8)R2.push({instanceLocation:z,keyword:"maxContains",keywordLocation:`${c}/maxContains`,error:`Array may contain at most ${K8} items matching schema. ${T8} items were found.`})}if(!h2&&f2!==void 0){let D2=`${c}/unevaluatedItems`;for(Y8;Y8<S2;Y8++){if(w[Y8])continue;let _8=K$(_[Y8],f2,u,K,q,Y,`${z}/${Y8}`,D2);if(w[Y8]=!0,!_8.valid)R2.push({instanceLocation:z,keyword:"unevaluatedItems",keywordLocation:D2,error:"Items did not match unevaluated items schema."},..._8.errors)}}if(j8)for(let D2=0;D2<S2;D2++){let _8=_[D2],T8=typeof _8==="object"&&_8!==null;for(let V8=0;V8<S2;V8++){if(D2===V8)continue;let o8=_[V8];if(_8===o8||T8&&(typeof o8==="object"&&o8!==null)&&Wi(_8,o8))R2.push({instanceLocation:z,keyword:"uniqueItems",keywordLocation:`${c}/uniqueItems`,error:`Duplicate items at indexes ${D2} and ${V8}.`}),D2=Number.MAX_SAFE_INTEGER,V8=Number.MAX_SAFE_INTEGER}}}else if(W==="number"){if(u==="4"){if(O8!==void 0&&(U2===!0&&_<=O8||_<O8))R2.push({instanceLocation:z,keyword:"minimum",keywordLocation:`${c}/minimum`,error:`${_} is less than ${U2?"or equal to ":""} ${O8}.`});if(A2!==void 0&&(B===!0&&_>=A2||_>A2))R2.push({instanceLocation:z,keyword:"maximum",keywordLocation:`${c}/maximum`,error:`${_} is greater than ${B?"or equal to ":""} ${A2}.`})}else{if(O8!==void 0&&_<O8)R2.push({instanceLocation:z,keyword:"minimum",keywordLocation:`${c}/minimum`,error:`${_} is less than ${O8}.`});if(A2!==void 0&&_>A2)R2.push({instanceLocation:z,keyword:"maximum",keywordLocation:`${c}/maximum`,error:`${_} is greater than ${A2}.`});if(U2!==void 0&&_<=U2)R2.push({instanceLocation:z,keyword:"exclusiveMinimum",keywordLocation:`${c}/exclusiveMinimum`,error:`${_} is less than ${U2}.`});if(B!==void 0&&_>=B)R2.push({instanceLocation:z,keyword:"exclusiveMaximum",keywordLocation:`${c}/exclusiveMaximum`,error:`${_} is greater than or equal to ${B}.`})}if(O2!==void 0){let S2=_%O2;if(Math.abs(0-S2)>=0.00000011920929&&Math.abs(O2-S2)>=0.00000011920929)R2.push({instanceLocation:z,keyword:"multipleOf",keywordLocation:`${c}/multipleOf`,error:`${_} is not a multiple of ${O2}.`})}}else if(W==="string"){let S2=v2===void 0&&G2===void 0?0:se2(_);if(v2!==void 0&&S2<v2)R2.push({instanceLocation:z,keyword:"minLength",keywordLocation:`${c}/minLength`,error:`String is too short (${S2} < ${v2}).`});if(G2!==void 0&&S2>G2)R2.push({instanceLocation:z,keyword:"maxLength",keywordLocation:`${c}/maxLength`,error:`String is too long (${S2} > ${G2}).`});if(W2!==void 0&&!new RegExp(W2,"u").test(_))R2.push({instanceLocation:z,keyword:"pattern",keywordLocation:`${c}/pattern`,error:"String does not match pattern."});if(n!==void 0&&he[n]&&!he[n](_))R2.push({instanceLocation:z,keyword:"format",keywordLocation:`${c}/format`,error:`String does not match format "${n}".`})}return{valid:R2.length===0,errors:R2}}class Ce{schema;draft;shortCircuit;lookup;constructor(_,v="2019-09",u=!0){this.schema=_,this.draft=v,this.shortCircuit=u,this.lookup=rq(_)}validate(_){return K$(_,this.schema,this.draft,this.lookup,this.shortCircuit)}addSchema(_,v){if(v)_={..._,$id:v};rq(_,this.lookup)}}c6();var iG1=()=>{let _=new Map,v=(q)=>{let Y=JSON.stringify(q),z=_.get(Y);if(!z)z=new Ce(JSON.parse(Y)),_.set(Y,z);return z};return Object.freeze({validate:(q,Y)=>{if(Y===null||Y===void 0)return;let z;try{z=JSON.parse(Y)}catch(J){throw N.validation(`Value is not valid JSON: ${J.message}`,"JSON_PARSE_ERROR")}let w=v(q).validate(z);if(!w.valid){let J=w.errors.map((W)=>`${W.instanceLocation}: ${W.error}`).join("; ");throw N.validation(`JSON Schema validation failed: ${J}`,"JSON_SCHEMA_VALIDATION_ERROR")}},validateSchema:(q)=>{if(q===null||q===void 0||typeof q!=="object"||Array.isArray(q))throw N.validation("jsonSchema must be a plain object","INVALID_JSON_SCHEMA");v(q)}})},te2=Object.freeze({create:iG1});var r_=W8.create({namespace:"caw:core"}),H4=W8.create({namespace:"caw:story-job-tracking"}),XG1=async({envDir:_,databaseFilepath:v,assetsDir:u,lazilyCreateDb:K,kyselyFactory:q,_pipelineFactory:Y,killProcess:z,platform:c,processEnv:w,cawPort:J},W)=>{let Z=await gw2.create({kyselyFactory:q}).getDb(v,K);await Gv.initialize(Z);let i=_?HG1.join(_,"shared-exports"):null,H=aw2.create(),X=S02.create(),p=Ce2.create({db:Z}),G=_?Le2.create({envDir:_}):null,P=G?ye2.create({configService:G,integrationService:p,cawPort:J,processEnv:w}):null,f=Be2.create({integrationService:p,registry:W3}),T=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.clearEditState(Q,{id:s})},j=async(d,s,Q,u2,p2)=>{let N2=kf[u2];if(!N2)throw Error(`No domain mapping for setting: ${u2}`);let u8=await p2.findFolderByName(d,s,Q,N2);if(!u8)throw Error(`Domain folder "${N2}" not found under settings root`);return u8},k=async(d,s,Q,u2,p2)=>{let N2=await j(d,s,Q,u2,p2);return await p2.findSettingByName(d,s,N2.getObjectId(),u2)},M=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`auto-archive-delay: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"auto-archive-delay",Q);if(!p2)throw Error(`auto-archive-delay setting missing for project ${d}`);let N2=p2.entity.getField("delayMs");if(!N2)throw Error(`delayMs field missing from auto-archive-delay setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`delayMs value is not a valid integer for project ${d}`);return u8},R=async()=>{let d=await j2();if(d.length===0)return null;let Q=d[0].objectId,u2=await B(Q),{rootStore:p2}=await v2(u2.projCtx),N2=await p2.readSettingsRootFolder(Z,u2,{storeCode:"A"});if(!N2)throw Error(`disposal-config: no settings root for project ${Q}`);let u8=await k(Z,u2,N2.getObjectId(),"disposal-config",p2);if(!u8)throw Error(`disposal-config setting missing for project ${Q}`);let p8=u8.entity.getField("retentionDays");if(!p8)throw Error(`retentionDays field missing from disposal-config setting for project ${Q}`);let g8=parseInt(p8.getValue(),10);if(isNaN(g8))throw Error(`retentionDays value is not a valid integer for project ${Q}`);return g8},n=async(d,{id:s,count:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.setStoryJobCount(u2,{id:s,count:Q})},V=async(d,{id:s,count:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.setStoryPendingJobCount(u2,{id:s,count:Q})},D=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`job-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"job-config",Q);if(!p2)throw Error(`job-config setting missing for project ${d}`);let N2=p2.entity.getField("maxConcurrentJobs");if(!N2)throw Error(`maxConcurrentJobs field missing from job-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`maxConcurrentJobs value is not a valid integer for project ${d}`);return u8},h=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`job-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"job-config",Q);if(!p2)throw Error(`job-config setting missing for project ${d}`);let N2=p2.entity.getField("maxJobDepth");if(!N2)throw Error(`maxJobDepth field missing from job-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`maxJobDepth value is not a valid integer for project ${d}`);return u8},b=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`resume-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"resume-config",Q);if(!p2)throw Error(`resume-config setting missing for project ${d}`);let N2=p2.entity.getField("defaultResumePromptRef");if(!N2||N2.getValue()==null)return null;return N2.getValue()},E=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`resume-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"resume-config",Q);if(!p2)throw Error(`resume-config setting missing for project ${d}`);let N2=p2.entity.getField("maxResumeAttempts");if(!N2)throw Error(`maxResumeAttempts field missing from resume-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`maxResumeAttempts value is not a valid integer for project ${d}`);return u8},o=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`resume-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"resume-config",Q);if(!p2)throw Error(`resume-config setting missing for project ${d}`);let N2=p2.entity.getField("cronIntervalMs");if(!N2)throw Error(`cronIntervalMs field missing from resume-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`cronIntervalMs value is not a valid integer for project ${d}`);return u8},U=oe2.create(),_2=te2.create(),$2=ay2.create({db:Z,clearEditState:T}),K2=Rt2.create(),w2=Zq.create(["projectCreated","exportStarted","exportProgress","exportCompleted","importStarted","importProgress","importCompleted"]),i2=(await Z.selectFrom("field_definitions").select("id").where("name","=","ragIndexed").where("store_id","is",null).executeTakeFirstOrThrow()).id,y2=(await Z.selectFrom("field_definitions").select("id").where("name","=","needsIndexing").where("store_id","is",null).executeTakeFirstOrThrow()).id,x2=Y!=null||v!==":memory:",K8=x2?Ne2.create({_pipelineFactory:Y??null,processEnv:w}):null,E2=x2?KR.create({db:Z}):null,k8=x2?Re2.create({db:Z}):null,j8=new Map,O8=(d)=>{for(let[,s]of j8){let Q=s.rootStore,p2=(Q.getChildren?Q.getChildren():[]).find((N2)=>N2.getPk&&N2.getPk()===d);if(p2)return p2}return null},A2=(d)=>{for(let[s,Q]of j8){let u2=Q.rootStore;if((u2.getChildren?u2.getChildren():[]).find((u8)=>u8.getPk&&u8.getPk()===d))return{includeResolver:Q.includeResolver,ctx:{projCtx:s,authCtx:null}}}return null},U2=x2?me2.create({db:Z,embeddingProvider:K8,embeddingOps:E2,resolveStoreObservable:O8,resolveIncludeServices:A2,ragIndexedFieldDefPk:i2,needsIndexingFieldDefPk:y2}):Object.freeze({processBatch:async()=>({processed:0,skipped:!1}),reindexAll:async()=>({operationId:null,enqueued:0,batchPromise:Promise.resolve()}),shutdown:async()=>{},clearEmbeddingError:async()=>{},isBatchProcessing:()=>!1}),B=async(d)=>{if(!d||!/^P\d+$/.test(d))I.factory(!0,N.notFound,`Project not found: ${d}`,"PROJECT_NOT_FOUND");let s=parseInt(d.slice(1),10);I.factory(s<1||s>Number.MAX_SAFE_INTEGER,N.notFound,`Project not found: ${d}`,"PROJECT_NOT_FOUND");let Q=await H.readProjectByObjectId(Z,null,d);return I.factory(!Q,N.notFound,`Project not found: ${d}`,"PROJECT_NOT_FOUND"),{projCtx:Q.getObjectId(),projectPath:Q.getPath(),authCtx:null}},O2=bw.create({projectStore:H,storeStore:X}),v2=async(d)=>{let s=j8.get(d);if(s)return s;let Q=await X.readRootStoreForProject(Z,{},d),u2=Zy.create({store:Q,jsonSchemaValidator:_2}),p2=Wy.create({store:Q,fieldService:u2}),N2=XB.create(),u8=iB.create({store:Q,folderService:p2,documentHooks:N2,fieldService:u2}),p8=GB.create({store:Q,documentService:u8});N2.setIncludeResolver(p8,Q),u8.setIncludeResolver(p8);let g8=async(l1,E6,O6,__)=>{return(await u8.readDocumentByPath(l1,E6,{path:O6,type:"d",storeCode:__}))?.entity.getObjectId()??null};Q.setIncludePathResolver(g8);let T1=We2.create({rootStore:Q,includeResolver:p8,fieldService:u2}),P1=null,R1=async(l1,E6,O6,__,C6)=>{let $_=O6.getObjectId(),U6=await l1.selectFrom("entities as e").innerJoin("obj_ref_fields as orf","orf.entity_id","e.id").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entity_content as ec","ec.entity_id","orf.target_entity_id").select(["orf.target_entity_id as versionPk","ec.content_text"]).where("e.object_id","=",$_).where("fd.name","=","latest_published_version").where("fd.is_system","=",1).executeTakeFirst();if(U6?.content_text)await T1.resolveAndUpdateFtsContent(l1,E6,U6.versionPk,U6.content_text,$_);if(await T1.cascadeToIncluders(l1,E6,$_,__,C6),await T1.markNeedsIndexingIfRagEnabled(l1,E6,$_,C6)){let t4=O8?.(__);if(t4)try{t4.notify("fieldValueChanged",{entityType:"r",entityId:t4.getObjectId(),fieldName:"embeddingState",oldValue:"ready",newValue:"ready",storeCode:null,parentFolderId:null})}catch(G7){}}};N2.registerHook("postPublish","d",R1),N2.registerHook("postPublish","t",R1);let h1=AF.create(),r8=HB.create({store:Q,fieldService:u2}),j1=B0.create({store:Q,settingService:r8,fieldService:u2,folderService:p2,sharedTrackCascadeService:G2}),G6=ze2.create({trackService:j1,store:Q}),j_=pe.create({store:Q,fieldService:u2,trackService:j1}),w4=Ge.create({store:Q,assetsDir:u}),V6=It2.create({store:Q,fieldService:u2,killProcess:z,platform:c}),E4=dt2.create({integrationService:p}),N3=tt2.create({store:Q}),f5=x02.create({store:Q,trackService:j1,embeddingProvider:K8,embeddingStore:k8,embeddingOps:E2,ragIndexedFieldDefPk:i2}),Wu=ue2.create({store:Q,jobService:V6}),Ou=Ke2.create({store:Q,documentService:u8,folderService:p2,fieldService:u2});u2.setServiceDependencies({entityMutationService:Wu,allowedValueRegistry:G6});let A5=et2.create({fieldService:u2,documentService:u8}),K3=aO.create({db:Z,store:Q,folderService:p2,fieldService:u2,documentService:u8,templateService:h1,projectService:null,clipboardService:K2,storyService:j_,trackService:j1,assetService:w4,jobService:V6,includeResolver:p8,worktreeService:E4,entityTypeService:N3,progressService:A5,duplicationService:Ou,searchService:f5,validateJobIntegrations:f}),EK=Qr.create({store:Q,folderService:p2,documentService:u8,templateService:h1,storyService:j_,trackService:j1,settingService:r8,assetService:w4,assetsDir:u}),l3=er.create({store:Q,folderService:p2,documentService:u8,templateService:h1,storyService:j_,trackService:j1,fieldService:u2,assetService:w4,assetsDir:u,reconcileDisposal:(l1)=>vR(Z,j2,v2,{storyIds:l1,projectId:d})}),y9=Ye2.create({store:Q,includeResolver:p8}),LK={extractAll:Hw},B9=we2.create({store:Q,contentReferenceExtractor:LK,fieldService:u2,documentService:u8,trackService:j1}),xJ=Je2.create({store:Q,dependencyWalker:B9,importService:l3,fieldService:u2,documentService:u8,trackService:j1}),H9=ve2.create();Q.setFieldHooks(H9),H9.subscribe("synopsis","d","cartridge",async(l1,E6,{entityId:O6},__)=>{await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},__)}),H9.subscribe("keywords","d","*",async(l1,E6,{entityId:O6},__)=>{await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},__)}),H9.subscribe("keywords","t","*",async(l1,E6,{entityId:O6},__)=>{await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},__)});let wc=async(l1,E6,{entityId:O6,oldValue:__,newValue:C6},$_)=>{if(C6==="false"&&__==="true"){let U6=await l1.selectFrom("entities").select("id").where("object_id","=",O6).executeTakeFirst();if(U6)await E2.deleteChunksForEntity(l1,U6.id);await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"false",bypassEditableCheck:!0},$_)}else if(C6==="true")await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},$_)};H9.subscribe("ragIndexed","d","*",wc),H9.subscribe("ragIndexed","t","*",wc);let NJ=async(l1)=>{try{let E6=await Z.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select(["entities.id","entities.type_code","entity_types.subtype"]).where("entities.object_id","=",l1.id).where("entities.deleted_at","is",null).executeTakeFirst();if(!E6)return;let O6=E6.subtype||E6.type_code;try{if(!Gv.get(O6).isIndexable)return}catch{return}let __=async(t4)=>{if(t4==null)return null;return(await Z.selectFrom("entities").select("id").where("object_id","=",t4).executeTakeFirst())?.id??null},C6=await __(l1.oldParentFolderId),$_=await __(l1.parentFolderId),U6=await _O(Z,C6),F6=await _O(Z,$_);if(U6===F6)return;await O02(Z,E6.id,F6)}catch(E6){r_.error("Move reconciliation failed for entity %s: %s",l1.id,E6.message)}};Q.subscribe(G1.FOLDER_MOVED,NJ),Q.subscribe(G1.DOCUMENT_MOVED,NJ),Q.subscribe(G1.TEMPLATE_MOVED,NJ),_e2.create({store:Q,fieldService:u2}).subscribeToFieldHooks(H9),j_.subscribeToFieldHooks(H9);let BP=$e2.create({store:Q,fieldService:u2,trackService:j1});BP.subscribeToFieldHooks(H9);let Mg=Zq.create(["exportStarted","exportProgress","exportCompleted","importStarted","importProgress","importCompleted"]),UP={folderService:p2,fieldService:u2,documentService:u8,templateService:h1,transactionService:K3,exportService:EK,importService:l3,backfillService:y9,rootStore:Q,storyService:j_,trackService:j1,assetService:w4,jobService:V6,worktreeService:E4,includeResolver:p8,searchService:f5,entityTypeService:N3,disposalService:BP,operationProgressObservable:Mg,dependencyWalker:B9,bundlePipeline:xJ,publishEffects:T1};try{let l1=await Q.readSettingsRootFolder(Z,{},{storeCode:"A"});if(l1){let E6=await Q.findFolderByName(Z,{},l1.getObjectId(),"RAG");if(E6){let O6=await Q.findSettingByName(Z,{},E6.getObjectId(),"rag-config");if(O6)if(P1=O6.entity.getObjectId(),(O6.entity.getField("indexingMode")?.getValue()??"batch")==="constant")$2.updateInterval("embedding-batch",2000);else{let C6=O6.entity.getField("batchIntervalMinutes");if(C6){let $_=parseInt(C6.getValue(),10);if(!isNaN($_)&&$_>0)$2.updateInterval("embedding-batch",$_*60*1000)}}else r_.warn("[Core] rag-config entity missing for project %s",d)}else r_.warn("[Core] RAG domain folder missing for project %s",d)}}catch(l1){r_.warn("[Core] Could not resolve rag-config for project %s: %s",d,l1.message)}return V6.subscribeAll({onJOB_STARTED:({id:l1})=>{setImmediate(async()=>{try{let E6=await V6.getJob(Z,{},{id:l1}),O6=E6?.getField("objectId")?.getValue();if(O6&&O6.startsWith("As")){H4.debug("JOB_STARTED: job=%s, objectId=%s - incrementing activeJobCount",l1,O6);let __=3,C6;for(let F6=1;F6<=__;F6++)try{await K3.incrementStoryJobCount({},{id:O6}),C6=null;break}catch(t4){if(C6=t4,H4.debug("JOB_STARTED increment retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,F6,__,t4.message),F6<__)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(C6)H4.warn("[story-job-tracking] Failed to increment activeJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,C6.message);if(E6?.getField("clearStoryFlag")?.getValue()==="true")try{H4.debug("JOB_STARTED: job=%s, objectId=%s - clearing flag",l1,O6),await K3.removeFieldFromEntity({},{entityId:O6,fieldName:"flag"})}catch(F6){H4.debug("Error clearing flag for job %s: %s",l1,F6.message)}if(E6?.getField("clearStatusMessage")?.getValue()==="true")try{H4.debug("JOB_STARTED: job=%s, objectId=%s - clearing statusMessage",l1,O6),await K3.removeFieldFromEntity({},{entityId:O6,fieldName:"statusMessage"})}catch(F6){H4.debug("Error clearing statusMessage for job %s: %s",l1,F6.message)}}}catch(E6){H4.debug("Error handling JOB_STARTED for job %s: %s",l1,E6.message)}})},onJOB_COMPLETED:({id:l1})=>{U.onJobCompleted(l1),setImmediate(async()=>{try{let O6=(await V6.getJob(Z,{},{id:l1}))?.getField("objectId")?.getValue();if(O6&&O6.startsWith("As")){H4.debug("JOB_COMPLETED: job=%s, objectId=%s - decrementing activeJobCount",l1,O6);let __=3,C6;for(let $_=1;$_<=__;$_++)try{await K3.decrementStoryJobCount({},{id:O6}),C6=null;break}catch(U6){if(C6=U6,H4.debug("JOB_COMPLETED decrement retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,$_,__,U6.message),$_<__)await new Promise((F6)=>setTimeout(F6,100*Math.pow(2,$_-1)))}if(C6)H4.warn("[story-job-tracking] Failed to decrement activeJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,C6.message)}}catch(E6){H4.debug("Error handling JOB_COMPLETED for job %s: %s",l1,E6.message)}})},onJOB_SUSPENDED:({id:l1})=>{U.onJobCompleted(l1),setImmediate(async()=>{try{let O6=(await V6.getJob(Z,{},{id:l1}))?.getField("objectId")?.getValue();if(O6&&O6.startsWith("As")){H4.debug("JOB_SUSPENDED: job=%s, objectId=%s - decrementing activeJobCount, incrementing pendingJobCount",l1,O6);let __=3,C6;for(let U6=1;U6<=__;U6++)try{await K3.decrementStoryJobCount({},{id:O6}),C6=null;break}catch(F6){if(C6=F6,H4.debug("JOB_SUSPENDED decrement retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,U6,__,F6.message),U6<__)await new Promise((t4)=>setTimeout(t4,100*Math.pow(2,U6-1)))}if(C6)H4.warn("[story-job-tracking] Failed to decrement activeJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,C6.message);let $_;for(let U6=1;U6<=__;U6++)try{await K3.incrementStoryPendingJobCount({},{id:O6}),$_=null;break}catch(F6){if($_=F6,H4.debug("JOB_SUSPENDED increment pendingJobCount retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,U6,__,F6.message),U6<__)await new Promise((t4)=>setTimeout(t4,100*Math.pow(2,U6-1)))}if($_)H4.warn("[story-job-tracking] Failed to increment pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,$_.message)}}catch(E6){H4.debug("Error handling JOB_SUSPENDED for job %s: %s",l1,E6.message)}})},onJOB_STATUS_CHANGED:({id:l1,oldStatus:E6,newStatus:O6})=>{if(O6!=="pending"&&E6!=="pending"&&E6!=="awaiting-resume")return;setImmediate(async()=>{try{let C6=(await V6.getJob(Z,{},{id:l1}))?.getField("objectId")?.getValue();if(!C6||!C6.startsWith("As"))return;let $_=3;if(E6==="awaiting-resume")if(O6==="pending")H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - awaiting-resume→pending, no-op (already counted)",l1,C6);else{H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - awaiting-resume→%s, decrementing pendingJobCount",l1,C6,O6);let U6;for(let F6=1;F6<=$_;F6++)try{await K3.decrementStoryPendingJobCount({},{id:C6}),U6=null;break}catch(t4){if(U6=t4,H4.debug("JOB_STATUS_CHANGED decrement (awaiting-resume) retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,C6,F6,$_,t4.message),F6<$_)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(U6)H4.warn("[story-job-tracking] Failed to decrement pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",$_,l1,C6,U6.message)}else if(O6==="pending"){H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - entering pending, incrementing pendingJobCount",l1,C6);let U6;for(let F6=1;F6<=$_;F6++)try{await K3.incrementStoryPendingJobCount({},{id:C6}),U6=null;break}catch(t4){if(U6=t4,H4.debug("JOB_STATUS_CHANGED increment retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,C6,F6,$_,t4.message),F6<$_)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(U6)H4.warn("[story-job-tracking] Failed to increment pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",$_,l1,C6,U6.message)}else{H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - leaving pending (%s→%s), decrementing pendingJobCount",l1,C6,E6,O6);let U6;for(let F6=1;F6<=$_;F6++)try{await K3.decrementStoryPendingJobCount({},{id:C6}),U6=null;break}catch(t4){if(U6=t4,H4.debug("JOB_STATUS_CHANGED decrement retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,C6,F6,$_,t4.message),F6<$_)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(U6)H4.warn("[story-job-tracking] Failed to decrement pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",$_,l1,C6,U6.message)}}catch(__){H4.debug("Error handling JOB_STATUS_CHANGED for job %s: %s",l1,__.message)}})}}),j8.set(d,UP),UP},G2=ce2.create({listProjects:(d)=>O2.listProjects(d),getProjectServices:(d)=>v2(d)}),W2=async()=>{let d=await X.readSharedStore(Z,{}),s=Zy.create({store:d,jsonSchemaValidator:_2}),Q=Wy.create({store:d,fieldService:s}),u2=XB.create(),p2=iB.create({store:d,folderService:Q,documentHooks:u2,fieldService:s}),N2=GB.create({store:d,documentService:p2});u2.setIncludeResolver(N2,d),p2.setIncludeResolver(N2);let u8=AF.create(),p8=HB.create({store:d,fieldService:s}),g8=B0.create({store:d,settingService:p8,fieldService:s,folderService:Q,sharedTrackCascadeService:G2}),T1=aO.create({db:Z,store:d,trackService:g8}),P1=pe.create({store:d,fieldService:s,trackService:g8}),R1=Ge.create({store:d,assetsDir:u}),h1=Qr.create({store:d,folderService:Q,documentService:p2,templateService:u8,storyService:P1,trackService:g8,settingService:p8,assetService:R1,assetsDir:u}),r8=er.create({store:d,folderService:Q,documentService:p2,templateService:u8,storyService:P1,trackService:g8,fieldService:s,assetService:R1,assetsDir:u});return{exportService:h1,importService:r8,sharedStore:d,trackService:g8,transactionService:T1,fieldService:s,settingService:p8}},j2=async()=>{return await bw.create({projectStore:H,storeStore:X}).listProjects(Z)},Q2=async(d)=>{if(!d||!/^P\d+$/.test(d))return null;let s=parseInt(d.slice(1),10);if(s<1||s>Number.MAX_SAFE_INTEGER)return null;return await H.readProjectByObjectId(Z,null,d)},R2=async(d,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,subtype:g8,fields:T1})=>{let P1=await B(d),{transactionService:R1}=await v2(P1.projCtx);return await R1.createFolder(P1,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,subtype:g8,fields:T1})},e2=async(d,{id:s,name:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.renameFolder(u2,{id:s,name:Q})},S2=async(d,{id:s,parentId:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.moveFolder(u2,{id:s,parentId:Q})},Y8=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteFolder(Q,{id:s})},h2=async(d,{store:s="A",limit:Q=50,offset:u2=0}={})=>{let p2=await B(d),{rootStore:N2}=await v2(p2.projCtx),u8=await N2.readSettingsRootFolder(Z,p2,{storeCode:"A"});if(!u8)throw Error(`disposal-config: no settings root for project ${d}`);let p8=await k(Z,p2,u8.getObjectId(),"disposal-config",N2);if(!p8)throw Error(`disposal-config setting missing for project ${d}`);let g8=p8.entity.getField("retentionDays");if(!g8)throw Error(`retentionDays field missing from disposal-config for project ${d}`);let T1=parseInt(g8.getValue(),10);if(isNaN(T1))throw Error(`retentionDays value is not a valid integer for project ${d}`);return await N2.listDeletedEvents(Z,p2,{storeCode:s,retentionDays:T1,limit:Q,offset:u2})},D2=async(d,{rootEntityId:s,store:Q="A",limit:u2=50,offset:p2=0})=>{let N2=await B(d),{rootStore:u8}=await v2(N2.projCtx);return await u8.listDeletedEventItems(Z,N2,{rootEntityId:s,storeCode:Q,limit:u2,offset:p2})},_8=async(d,{rootEntityId:s,store:Q="A"})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.restoreEvent(u2,{rootEntityId:s,storeCode:Q})},T8=async(d,{id:s})=>{let Q=await B(d),{folderService:u2}=await v2(Q.projCtx);return await u2.readFolder(Z,Q,{id:s})},V8=async(d,{store:s,path:Q,type:u2})=>{let p2=await B(d),{folderService:N2}=await v2(p2.projCtx);return await N2.getFolderByPath(Z,p2,{path:Q,type:u2,storeCode:s})},o8=async(d,{store:s})=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx);return await u2.readDraftPromptsRootFolder(Z,Q,{storeCode:s})},S8=async(d,{id:s})=>{let Q=await B(d);if(!B1.parseId(s))throw N.notFound(`Invalid entity ID format: ${s}`,"NOT_FOUND");let{rootStore:p2}=await v2(Q.projCtx);return{root:await K4.getRootForEntity(Z,Q,s,p2)}},q1=async(d,{folderId:s,store:Q,type:u2})=>{let p2=await B(d);r_.debug("listFolderContents: Listing contents for project %s: folderId=%s, store=%s, type=%s",p2.projCtx,s||"root",Q,u2);let{folderService:N2,documentService:u8,rootStore:p8}=await v2(p2.projCtx),g8=u2;if(s&&!u2){if(t_.isVirtualId(s))if(s==="_f1")g8="d";else if(s==="_f2")g8="t";else if(s==="_f5")g8="f";else throw Error(`Unknown virtual root ID: ${s}`);else g8=await t8(Z,p8,p2,s,Q);r_.debug("listFolderContents: Inferred type %s from folder %s",g8,s)}if(!g8||g8!=="d"&&g8!=="t"&&g8!=="f")g8="d",r_.debug('listFolderContents: Defaulting effectiveType to "d"');let T1=await N2.listFolderContents(Z,p2,{folderId:s,storeCode:Q,type:g8}),P1=s;if((s===null||s===void 0)&&(g8==="d"||g8==="t"))P1=(await p8.readRootFolderForType(Z,p2,g8,Q)).getObjectId(),r_.debug("listFolderContents: Resolved root folder for type %s: %s",g8,P1);r_.debug("listFolderContents: Querying content with parentId=%s, store=%s, type=%s",P1,Q,g8);let R1=await u8.listDocuments(Z,p2,{parentId:P1,storeCode:Q,type:g8});return r_.debug("listFolderContents: Found %d folders, %d documents",T1?.length||0,R1?.length||0),{folders:T1,documents:R1}},t8=async(d,s,Q,u2,p2)=>{let N2=B1.parseId(u2);if(N2&&N2.typeCode==="s")return"d";let u8=await s.readFolder(d,Q,{id:u2});if(!u8)return null;let p8=await d.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","=",u2).executeTakeFirst();if(p8?.entity_type_code==="f"&&p8?.entity_type_subtype==="root_d")return"d";if(p8?.entity_type_code==="f"&&p8?.entity_type_subtype==="root_t")return"t";if(p8?.entity_type_code==="f"&&(p8?.entity_type_subtype==="root_s"||p8?.entity_type_subtype==="tasks"||p8?.entity_type_subtype==="root_draft_prompts"))return"d";if(p8?.entity_type_code==="s")return"d";let g8=await s.readRootFolderForType(d,Q,"d",p2),T1=await s.readRootFolderForType(d,Q,"t",p2),P1=u8;while(P1&&P1.getParentId()!==null){let R1=await s.readFolder(d,Q,{id:P1.getParentId()});if(!R1)break;P1=R1}if(P1&&P1.getObjectId()===g8?.getObjectId())return"d";else if(P1&&P1.getObjectId()===T1?.getObjectId())return"t";return null},F8=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx);return Q},o1=async(d)=>{let s=await B(d),{storyService:Q}=await v2(s.projCtx);return Q},N1=async(d)=>{let s=await B(d),{jobService:Q}=await v2(s.projCtx);return Q},e1=async(d)=>{let s=await B(d),{operationProgressObservable:Q}=await v2(s.projCtx);return Q},p6=()=>w2,y1=async({name:d,path:s})=>{let Q=bw.create({projectStore:H,storeStore:X}),u2=aO.create({db:Z,folderService:null,projectService:Q}),p2={};return await u2.createProject(p2,{name:d,path:s},(u8)=>w2.notify("projectCreated",u8))},E1=(d)=>{return bw.create({projectStore:H,storeStore:X}).validateProjectPath(d)},J6=async(d,{name:s})=>{let Q=bw.create({projectStore:H,storeStore:X}),u2=aO.create({db:Z,folderService:null,projectService:Q}),p2={};return await u2.renameProject(p2,{id:d,name:s})},M6=async(d)=>{let s=bw.create({projectStore:H,storeStore:X}),Q=aO.create({db:Z,folderService:null,projectService:s}),u2={},p2=await Q.deleteProject(u2,{id:d});return H8(d),p2},H8=(d)=>{j8.delete(d)},k2=async(d,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,content:g8,tree:T1,subtype:P1,fields:R1})=>{let h1=await B(d);r_.debug("createDocument: Creating document in project %s: mode=%s, path=%s, store=%s, type=%s, subtype=%s",h1.projCtx,s,u2,Q,p8,P1);let{transactionService:r8}=await v2(h1.projCtx),j1=await r8.createDocument(h1,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,content:g8,tree:T1,subtype:P1,fields:R1});return r_.debug("createDocument: Document created: id=%s, path=%s",j1.getObjectId(),j1.getPath()),j1},v8=async(d,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,content:p8,subtype:g8})=>{let T1=await B(d);r_.debug("createTemplate: Creating template in project %s: mode=%s, path=%s, store=%s",T1.projCtx,s,u2,Q);let{transactionService:P1}=await v2(T1.projCtx),R1=await P1.createTemplate(T1,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,content:p8,subtype:g8});return r_.debug("createTemplate: Template created: id=%s, path=%s",R1.getObjectId(),R1.getPath()),R1},I8=async(d,{id:s,resolveIncludes:Q=!0})=>{let u2=await B(d),{documentService:p2}=await v2(u2.projCtx);return await p2.readDocument(Z,u2,{id:s,resolveIncludes:Q})},x8=async(d,{path:s,store:Q,type:u2,resolveIncludes:p2=!0})=>{let N2=await B(d),{documentService:u8,includeResolver:p8}=await v2(N2.projCtx),g8=await u8.readDocumentByPath(Z,N2,{path:s,type:u2,storeCode:Q});if(!g8)return null;let{entity:T1,ancestorFolderIds:P1}=g8,R1=null,h1=null;if(p2&&p8&&T1.getPublishedContent()){let r8=await p8.resolve(Z,N2,T1.getPublishedContent(),T1.getObjectId());R1=r8.content,h1=r8.includeMap}return{entity:T1,ancestorFolderIds:P1,resolvedContent:R1,includeMap:h1}},a2=async(d,{id:s})=>{let Q=await B(d),{documentService:u2,includeResolver:p2}=await v2(Q.projCtx),{entity:N2}=await u2.readDocument(Z,Q,{id:s,resolveIncludes:!1}),u8=N2.getDraftContent()||N2.getPublishedContent();if(!u8)return[];return await p2.checkIncludes(Z,Q,u8,s)},t2=async(d,{id:s})=>{let Q=await B(d),{documentService:u2,includeResolver:p2,rootStore:N2}=await v2(Q.projCtx),{entity:u8}=await u2.readDocument(Z,Q,{id:s,resolveIncludes:!1}),p8=u8.getDraftContent()||u8.getPublishedContent();if(!p8)return{updated:[]};let{content:g8,updated:T1}=await p2.updateIncludes(Z,Q,p8,s);if(T1.length>0)await N2.saveDraft(Z,Q,{id:s,content:g8});return{updated:T1}},m2=async(d,{id:s,path:Q,parentId:u2,type:p2})=>{let N2=await B(d),{transactionService:u8}=await v2(N2.projCtx);return await u8.updateDocumentPath(N2,{id:s,path:Q,parentId:u2,type:p2})},z8=async(d,{id:s,ack:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.deleteDocument(u2,{id:s,ack:Q})},N8=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.getIncomingReferences(Z,Q,{id:s})},v1=async(d,{id:s,subtype:Q,fields:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.specialiseDocument(p2,{id:s,subtype:Q,fields:u2})},C2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.generaliseDocument(Q,{id:s})},B2=async(d,{id:s,subtype:Q,fields:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.specialiseFolder(p2,{id:s,subtype:Q,fields:u2})},F2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.generaliseFolder(Q,{id:s})},d2=async(d,{sourceId:s,targetParentId:Q,newName:u2})=>{B1.validateEntityType(s,["d","t"],"document");let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.duplicateDocument(p2,{sourceId:s,targetParentId:Q,newName:u2})},w8=async(d,{sourceId:s,targetParentId:Q,newName:u2})=>{B1.validateEntityType(s,["f"],"folder");let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.duplicateFolder(p2,{sourceId:s,targetParentId:Q,newName:u2})},E8=async(d,{id:s,content:Q,sessionId:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.saveDraft(p2,{id:s,content:Q,sessionId:u2})},J1=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.readDraft(Z,Q,{id:s})},M2=async(d,{id:s,sessionId:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.publishDocument(u2,{id:s,sessionId:Q})},L2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.discardDraft(Q,{id:s})},X2=async(d,{id:s,sessionId:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.setEditState(u2,{id:s,sessionId:Q})},i8=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.clearEditState(Q,{id:s})},P2=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.getEditState(Z,Q,{id:s})},$8=async(d,{id:s,versionNumber:Q,resolveIncludes:u2=!0})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.readVersion(Z,p2,{id:s,versionNumber:Q,resolveIncludes:u2})},J8=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.getVersions(Z,Q,{id:s})},P8=async(d,{id:s,operation:Q,preview:u2,ignoreContent:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.editDocument(u8,{id:s,operation:Q,preview:u2,ignoreContent:p2,sessionId:N2})},R8=async(d,{id:s,operations:Q,preview:u2,ignoreContent:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.batchEditDocument(u8,{id:s,operations:Q,preview:u2,ignoreContent:p2,sessionId:N2})},l8=async(d,{id:s,lineNumber:Q,checked:u2,includeDraft:p2,preview:N2,sessionId:u8})=>{let p8=await B(d),{transactionService:g8}=await v2(p8.projCtx);return await g8.checkChecklistItem(p8,{id:s,lineNumber:Q,checked:u2,includeDraft:p2,preview:N2,sessionId:u8})},U8=async(d,{id:s,lineNumber:Q,includeDraft:u2,preview:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.toggleChecklistItem(u8,{id:s,lineNumber:Q,includeDraft:u2,preview:p2,sessionId:N2})},f1=async(d,{id:s,items:Q,includeDraft:u2,preview:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.batchCheckChecklistItems(u8,{id:s,items:Q,includeDraft:u2,preview:p2,sessionId:N2})},k1=async(d,{id:s,startLine:Q,endLine:u2,includeDraft:p2})=>{let N2=await B(d),{documentService:u8}=await v2(N2.projCtx);return await u8.readLines(Z,N2,{id:s,startLine:Q,endLine:u2,includeDraft:p2})},Y6=async(d,{id:s,startMarker:Q,endMarker:u2,inclusive:p2,includeDraft:N2})=>{let u8=await B(d),{documentService:p8}=await v2(u8.projCtx);return await p8.readBetweenMarkers(Z,u8,{id:s,startMarker:Q,endMarker:u2,inclusive:p2,includeDraft:N2})},q6=async(d,{id:s,includeDraft:Q})=>{let u2=await B(d),{documentService:p2}=await v2(u2.projCtx);return await p2.getDocumentStats(Z,u2,{id:s,includeDraft:Q})},G4=async(d,{id:s,maxDepth:Q,includeDraft:u2})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.readHeadings(Z,p2,{id:s,maxDepth:Q,includeDraft:u2})},z$=async(d,{id:s,heading:Q,includeHeading:u2,includeDraft:p2})=>{let N2=await B(d),{documentService:u8}=await v2(N2.projCtx);return await u8.readSection(Z,N2,{id:s,heading:Q,includeHeading:u2,includeDraft:p2})},k4=async(d,{id:s,includeDraft:Q})=>{let u2=await B(d),{documentService:p2}=await v2(u2.projCtx);return await p2.readFrontmatter(Z,u2,{id:s,includeDraft:Q})},r4=async(d,{id:s,section:Q,includeDraft:u2})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.readChecklist(Z,p2,{id:s,section:Q,includeDraft:u2})},l=async(d,{folderId:s,store:Q,type:u2="d"})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.listDocuments(Z,p2,{parentId:s,storeCode:Q,type:u2})},e=async(d,{id:s,params:Q,target:u2,targetOptions:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8,jobService:g8,rootStore:T1}=await v2(u8.projCtx),P1=await b(d),R1=await h(d),h1=await p8.renderTemplate(u8,{id:s,params:Q,target:u2,targetOptions:p2,sessionId:N2,defaultResumePromptRef:P1,maxJobDepth:R1});if(h1.target==="job"&&h1.jobId){let r8=await E(d),j1=rm.create({jobService:g8,transactionService:p8,store:T1,db:Z,projectPath:u8.projectPath,maxResumeAttempts:r8,jobQueue:U,processEnv:w,cawPort:J});setImmediate(async()=>{try{await j1.runJob(h1.jobId,u8)}catch(G6){r_.debug("JobRunner error for job %s: %s",h1.jobId,G6.message);try{await p8.updateJobStatus(u8,{id:h1.jobId,status:"error",errorMessage:G6.message})}catch(j_){r_.debug("Failed to update job %s status to error: %s",h1.jobId,j_.message)}}})}if(h1.target==="continue")await e6(d,{id:h1.jobId,prompt:h1.content,model:h1.model,dockerImage:h1.dockerImage,skipPermissions:h1.skipPermissions}),delete h1.content;return h1},S=async(d,{id:s})=>{let Q=await B(d),{documentService:u2,templateService:p2}=await v2(Q.projCtx),{entity:N2}=await u2.readDocument(Z,Q,{id:s}),u8={id:N2.getObjectId(),path:N2.getPath()},p8=N2.getSubtype()??null;if(!N2.getPublishedContent())return{...u8,...p2.extractTemplateParameters(null),templateSubtype:p8};try{return{...u8,...p2.extractTemplateParameters(N2.getPublishedContent()),templateSubtype:p8}}catch(g8){return{...u8,...p2.extractTemplateParameters(null),parseError:g8.message,templateSubtype:p8}}},g=async(d,{typeCode:s,store:Q="A"})=>{let u2=await B(d),{rootStore:p2}=await v2(u2.projCtx),N2=Q==="all"?["A","B"]:[Q],u8=[];for(let g8 of N2){let T1=await p2.findEntitiesByFieldValue(Z,u2,{storeCode:g8,typeCode:"t",subtype:"prompt",fieldName:"associatedType",fieldValue:s});u8.push(...T1)}return{templates:await Promise.all(u8.map(async(g8)=>{let R1=((await p2.readEntity(Z,u2,{id:g8.object_id}))?.entity??null)?.getFields()?.config;return{id:g8.object_id,name:g8.name,path:g8.path,subtype:g8.subtype,config:R1?R1.toJSON():null}}))}},F=async(d,{query:s,limit:Q,offset:u2,startMarker:p2,endMarker:N2,store:u8="A"})=>{let p8=await B(d),{searchService:g8}=await v2(p8.projCtx);return await g8.search(Z,p8,{query:s,limit:Q,offset:u2,startMarker:p2,endMarker:N2,storeCode:u8})},y=async(d,{store:s,ownerEntityId:Q,ownerEntityTypeCode:u2,ownerEntityTypeSubtype:p2,name:N2,label:u8,description:p8,primitiveType:g8,required:T1,multiplicity:P1,isSystem:R1,allowed:h1})=>{let r8=await B(d),{transactionService:j1}=await v2(r8.projCtx);return await j1.createFieldDefinition(r8,{store:s,ownerEntityId:Q,ownerEntityTypeCode:u2,ownerEntityTypeSubtype:p2,name:N2,label:u8,description:p8,primitiveType:g8,required:T1,multiplicity:P1,isSystem:R1,allowed:h1})},t=async(d,{id:s})=>{let Q=await B(d),{fieldService:u2}=await v2(Q.projCtx);return await u2.readFieldDefinition(Z,Q,{id:s})},c2=async(d,{store:s,ownerEntityId:Q,includeSystem:u2})=>{let p2=await B(d),{fieldService:N2}=await v2(p2.projCtx);return await N2.getFieldDefinitionsForOwner(Z,p2,{store:s,ownerEntityId:Q,includeSystem:u2})},H2=async(d,{store:s,code:Q,subtype:u2})=>{let p2=await B(d),{fieldService:N2}=await v2(p2.projCtx);return await N2.getFieldDefinitionsForType(Z,p2,{store:s,code:Q,subtype:u2})},V2=async(d,{entityId:s,typeCode:Q,subtype:u2,parentId:p2,storeCode:N2,fieldName:u8,dependencyValues:p8})=>{let g8=await B(d),{fieldService:T1}=await v2(g8.projCtx);return await T1.resolveAllowedValues(Z,g8,{entityId:s,typeCode:Q,subtype:u2,parentId:p2,storeCode:N2,fieldName:u8,dependencyValues:p8})},n2=async(d,{id:s,allowed:Q,jsonSchema:u2})=>{let p2=await B(d),{fieldService:N2}=await v2(p2.projCtx);return await N2.updateFieldDefinitionConfig(Z,p2,{id:s,allowed:Q,jsonSchema:u2})},b2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteFieldDefinition(Q,{id:s})},l2=async(d,{store:s,fieldDefinitionId:Q,entityTypeCode:u2,entityTypeSubtype:p2,required:N2,sortOrder:u8,rows:p8,colspan:g8,description:T1,hidden:P1})=>{let R1=await B(d),{transactionService:h1}=await v2(R1.projCtx);return await h1.addClassAssociation(R1,{store:s,fieldDefinitionId:Q,entityTypeCode:u2,entityTypeSubtype:p2,required:N2,sortOrder:u8,rows:p8,colspan:g8,description:T1,hidden:P1})},c8=async(d,{id:s})=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx);return(await u2.readEntity(Z,Q,{id:s}))?.entity??null},A8=async(d,{entityId:s})=>{let Q;try{Q=await c8(d,{id:s})}catch(u2){if(u2.code==="PROJECT_NOT_FOUND")throw u2;if(u2.code&&u2.code.includes("NOT_FOUND"))return{};throw u2}if(!Q)return{};return Q.getFields()},f8=async(d,{entityId:s,fieldName:Q})=>{let u2=await c8(d,{id:s});if(!u2)throw N.notFound(`Entity not found: ${s}`,"NOT_FOUND");let N2=u2.getFields()[Q];if(!N2)throw N.validation(`Field '${Q}' not found on entity '${s}'`,"FIELD_NOT_FOUND");return N2.toJSON()},a8=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.addFieldToEntity(u8,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})},B8=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.updateFieldValue(u8,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})},Z1=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2,dependencies:u8})=>{let p8=await B(d),{transactionService:g8}=await v2(p8.projCtx);return await g8.setFieldValue(p8,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2,dependencies:u8})},h8=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.removeFieldFromEntity(p2,{entityId:s,fieldDefinitionId:Q,fieldName:u2})},d8=async(d,{code:s,subtype:Q,name:u2,parentSubtype:p2,indexable:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.createSubtype(u8,{code:s,subtype:Q,name:u2,parentSubtype:p2,indexable:N2})},A1=async(d,{code:s})=>{let Q=await B(d),{entityTypeService:u2}=await v2(Q.projCtx);return await u2.listSubtypes(Z,Q,{code:s})},W6=async(d)=>{let s=await B(d),{exportService:Q}=await v2(s.projCtx);return await Q.listExports(Z,s,{projectPath:s.projectPath})},y6=async(d,{store:s="A"}={})=>{let Q=await B(d),{exportService:u2}=await v2(Q.projCtx);return await u2.exportPreview(Z,Q,{storeCode:s})},x6=async(d,{store:s="A",confirm:Q=!1,onProgress:u2}={})=>{let p2=await B(d),{exportService:N2}=await v2(p2.projCtx);if(!Q)return await N2.exportPreview(Z,p2,{storeCode:s});return await N2.exportDocuments(Z,p2,{storeCode:s,projectPath:p2.projectPath,onProgress:u2})},g6=async(d,{filename:s,store:Q="A",onProgress:u2})=>{let p2=await B(d);I.factory(!s,N.validation,"filename is required","FILENAME_REQUIRED");let{importService:N2}=await v2(p2.projCtx),u8=await N2.importDocuments(Z,p2,{filename:s,storeCode:Q,projectPath:p2.projectPath,onProgress:u2});if(E2){let p8=await Z.selectFrom("entities").innerJoin("string_fields","string_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select("entities.id").where("entities.type_code","=","r").where("field_definitions.name","=","code").where("string_fields.value","=",Q).executeTakeFirst();if(p8){await E2.bulkSetNeedsIndexing(Z,p8.id,"true");let g8=O8?.(p8.id);if(g8)try{g8.notify("fieldValueChanged",{entityType:"r",entityId:g8.getObjectId(),fieldName:"embeddingState",oldValue:null,newValue:"ready",storeCode:Q,parentFolderId:null})}catch(T1){}}}return u8},B6=async(d,{bundleFolderId:s,sourceEntityIds:Q})=>{let u2=await B(d);r_.debug("addToBundle: project=%s, bundle=%s, sources=%s",u2.projCtx,s,Q.join(","));let{bundlePipeline:p2}=await v2(u2.projCtx);return await p2.addToBundle(Z,u2,{bundleFolderId:s,sourceEntityIds:Q})},R6=async(d,{store:s="A",confirm:Q=!1,skipPopulated:u2=!1,batchSize:p2=100}={})=>{let N2=await B(d),{backfillService:u8}=await v2(N2.projCtx);return await u8.backfillContentRefs(Z,N2,{storeCode:s,confirm:Q,skipPopulated:u2,batchSize:p2})},s6=async(d,{store:s="A",confirm:Q=!1,batchSize:u2=100}={})=>{let p2=await B(d),{backfillService:N2}=await v2(p2.projCtx);return await N2.backfillResolvedFts(Z,p2,{storeCode:s,confirm:Q,batchSize:u2})},c4=async()=>{let{exportService:d}=await W2();return await d.listExports(Z,{},{exportPath:i})},c$=async()=>{let{exportService:d}=await W2();return await d.exportPreview(Z,{},{storeCode:"B"})},D6=async({confirm:d=!1,onProgress:s}={})=>{let{exportService:Q}=await W2();if(!d)return await Q.exportPreview(Z,{},{storeCode:"B"});return await Q.exportDocuments(Z,{},{storeCode:"B",exportPath:i,onProgress:s})},T$=async({filename:d,onProgress:s})=>{I.factory(!d,N.validation,"filename is required","FILENAME_REQUIRED");let{importService:Q}=await W2(),u2=await Q.importDocuments(Z,{},{filename:d,storeCode:"B",exportPath:i,onProgress:s});if(E2){let N2=(await X.readSharedStore(Z,{})).getPk();await E2.bulkSetNeedsIndexing(Z,N2,"true");let u8=O8?.(N2);if(u8)try{u8.notify("fieldValueChanged",{entityType:"r",entityId:u8.getObjectId(),fieldName:"embeddingState",oldValue:null,newValue:"ready",storeCode:"B",parentFolderId:null})}catch(p8){}}return u2},c1=async(d,{name:s,store:Q,state:u2,track:p2,phase:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.createStory(u8,{name:s,storeCode:Q,state:u2,track:p2,phase:N2})},_1=async(d,{store:s,state:Q,phase:u2,track:p2,flag:N2,objectIds:u8,phaseNot:p8,sortBy:g8="ranking",sortDir:T1="asc",limit:P1=50,offset:R1=0}={})=>{let h1=await B(d),{storyService:r8}=await v2(h1.projCtx),{stories:j1,total:G6}=await r8.listStories(Z,h1,{store:s,state:Q,phase:u2,track:p2,flag:N2,objectIds:u8,phaseNot:p8,sortBy:g8,sortDir:T1,limit:P1,offset:R1});return{stories:j1,total:G6,limit:P1,offset:R1}},h6=async(d,{store:s})=>{let Q=await B(d),{storyService:u2}=await v2(Q.projCtx);return u2.getStoryIdsWithNonZeroJobCounts(Z,Q,{store:s})},H_=async(d,{id:s})=>{let Q=await B(d),{storyService:u2}=await v2(Q.projCtx);return await u2.getStory(Z,Q,{id:s})},S4=async(d,{id:s,state:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.updateStoryState(u2,{id:s,state:Q})},a4=async(d,{id:s,track:Q,targetState:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.changeTrack(p2,{id:s,track:Q,targetState:u2})},C4=async(d,{id:s,name:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.renameStory(u2,{id:s,name:Q})},f4=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteStory(Q,{id:s})},x3=async(d,{store:s,phase:Q,orderedIds:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.reorderStories(p2,{store:s,phase:Q,orderedIds:u2})},y_=async(d,{store:s,storyId:Q,afterId:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.reorderSingle(p2,{store:s,storyId:Q,afterId:u2})},U$=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.incrementStoryJobCount(Q,{id:s})},I9=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.decrementStoryJobCount(Q,{id:s})},X5=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.incrementStoryPendingJobCount(Q,{id:s})},cu=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.decrementStoryPendingJobCount(Q,{id:s})},ZY=async(d,{name:s,states:Q,store:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.createTrack(p2,{store:u2||"A",name:s,states:Q})},iY=async(d,{store:s})=>{let Q=await B(d),{trackService:u2}=await v2(Q.projCtx);return await u2.listTracks(Z,Q,{store:s||"A"})},HY=async(d,{name:s,id:Q,store:u2})=>{let p2=await B(d),{trackService:N2}=await v2(p2.projCtx);if(Q)return await N2.getTrackById(Z,p2,{id:Q});return await N2.getTrackByName(Z,p2,{store:u2||"A",name:s})},E_=async(d,{id:s,name:Q,states:u2,renames:p2})=>{let N2=await B(d);await G2.warmupProjects(Z);let{transactionService:u8}=await v2(N2.projCtx);return await u8.updateTrack(N2,{id:s,name:Q,states:u2,renames:p2})},R$=async(d,{id:s})=>{let Q=await B(d);await G2.warmupProjects(Z);let{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteTrack(Q,{id:s})},D_=async()=>{let{trackService:d}=await W2();return await d.listTracks(Z,{},{store:"B"})},av=async({name:d,states:s})=>{let{transactionService:Q}=await W2();return await Q.createTrack({},{store:"B",name:d,states:s})},p5=async({id:d})=>{let{trackService:s}=await W2();return await s.getTrackById(Z,{},{id:d})},XY=async({id:d,name:s,states:Q,renames:u2})=>{await G2.warmupProjects(Z);let{transactionService:p2}=await W2();return await p2.updateTrack({},{id:d,name:s,states:Q,renames:u2})},hK=async({id:d})=>{await G2.warmupProjects(Z);let{transactionService:s}=await W2();return await s.deleteTrack({},{id:d})},wu={autoArchiveDelayDays:{type:"positive_integer"},maxConcurrentJobs:{type:"positive_integer"},maxJobDepth:{type:"positive_integer"},trashRetentionDays:{type:"positive_integer"},maxResumeAttempts:{type:"positive_integer"},defaultResumePromptRef:{type:"nullable_template_ref"},scratchDocDelayDays:{type:"positive_integer"},jobDelayDays:{type:"positive_integer"},indexingMode:{type:"enum",values:["batch","constant"]},batchIntervalMinutes:{type:"positive_integer"},claudeStrategy:{type:"enum",values:["pty","headless"]}},z2=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`settings: no settings root for project ${d}`);let p2=u2.getObjectId(),N2=await Q.findFolderByName(Z,s,p2,"Stories");if(!N2)throw Error(`Stories domain folder missing for project ${d}`);let u8=await Q.findFolderByName(Z,s,p2,"Jobs");if(!u8)throw Error(`Jobs domain folder missing for project ${d}`);let p8=await Q.findFolderByName(Z,s,p2,"Deleted Items");if(!p8)throw Error(`Deleted Items domain folder missing for project ${d}`);let g8=await Q.findSettingByName(Z,s,N2.getObjectId(),"auto-archive-delay");if(!g8)throw Error(`auto-archive-delay setting missing for project ${d}`);let T1=g8.entity.getField("delayMs");if(!T1)throw Error(`delayMs field missing from auto-archive-delay for project ${d}`);let P1=parseInt(T1.getValue(),10);if(isNaN(P1))throw Error(`delayMs value is not a valid integer for project ${d}`);let R1=P1/86400000,h1=await Q.findSettingByName(Z,s,u8.getObjectId(),"job-config");if(!h1)throw Error(`job-config setting missing for project ${d}`);let r8=h1.entity.getField("maxConcurrentJobs");if(!r8)throw Error(`maxConcurrentJobs field missing from job-config for project ${d}`);let j1=parseInt(r8.getValue(),10);if(isNaN(j1))throw Error(`maxConcurrentJobs value is not a valid integer for project ${d}`);let G6=h1.entity.getField("maxJobDepth");if(!G6)throw Error(`maxJobDepth field missing from job-config for project ${d}`);let j_=parseInt(G6.getValue(),10);if(isNaN(j_))throw Error(`maxJobDepth value is not a valid integer for project ${d}`);let w4=await Q.findSettingByName(Z,s,p8.getObjectId(),"disposal-config");if(!w4)throw Error(`disposal-config setting missing for project ${d}`);let V6=w4.entity.getField("retentionDays");if(!V6)throw Error(`retentionDays field missing from disposal-config for project ${d}`);let E4=parseInt(V6.getValue(),10);if(isNaN(E4))throw Error(`retentionDays value is not a valid integer for project ${d}`);let N3=w4.entity.getField("scratchDocDelayDays");if(!N3)throw Error(`scratchDocDelayDays field missing from disposal-config for project ${d}`);let f5=parseInt(N3.getValue(),10);if(isNaN(f5))throw Error(`scratchDocDelayDays value is not a valid integer for project ${d}`);let Wu=w4.entity.getField("jobDelayDays");if(!Wu)throw Error(`jobDelayDays field missing from disposal-config for project ${d}`);let Ou=parseInt(Wu.getValue(),10);if(isNaN(Ou))throw Error(`jobDelayDays value is not a valid integer for project ${d}`);let A5=await Q.findSettingByName(Z,s,u8.getObjectId(),"resume-config");if(!A5)throw Error(`resume-config setting missing for project ${d}`);let K3=A5.entity.getField("maxResumeAttempts");if(!K3)throw Error(`maxResumeAttempts field missing from resume-config for project ${d}`);let EK=parseInt(K3.getValue(),10);if(isNaN(EK))throw Error(`maxResumeAttempts value is not a valid integer for project ${d}`);let y9=A5.entity.getField("defaultResumePromptRef")?.getValue()??null,LK=await Q.findFolderByName(Z,s,p2,"RAG");if(!LK)throw Error(`RAG domain folder missing for project ${d}`);let B9=await Q.findSettingByName(Z,s,LK.getObjectId(),"rag-config");if(!B9)throw Error(`rag-config setting missing for project ${d}`);let xJ=B9.entity.getField("indexingMode")?.getValue()??"batch",H9=parseInt(B9.entity.getField("batchIntervalMinutes")?.getValue()??"5",10),wc=await Q.findFolderByName(Z,s,p2,"Agents");if(!wc)throw Error(`Agents domain folder missing for project ${d}`);let IH=(await Q.findSettingByName(Z,s,wc.getObjectId(),"claude-agent-config"))?.entity.getField("claudeStrategy")?.getValue()??"pty";return{autoArchiveDelayDays:R1,maxConcurrentJobs:j1,maxJobDepth:j_,trashRetentionDays:E4,maxResumeAttempts:EK,defaultResumePromptRef:y9,scratchDocDelayDays:f5,jobDelayDays:Ou,indexingMode:xJ,batchIntervalMinutes:H9,claudeStrategy:IH}},Z2=async(d,{settings:s})=>{for(let r8 of Object.keys(s))if(!Object.hasOwn(wu,r8))throw N.validation(`Unknown system setting key: ${r8}`,"INVALID_SYSTEM_SETTING_KEY");let Q=await B(d),{rootStore:u2,fieldService:p2}=await v2(Q.projCtx),N2=await u2.readSettingsRootFolder(Z,Q,{storeCode:"A"});if(!N2)throw Error(`settings: no settings root for project ${d}`);for(let[r8,j1]of Object.entries(s)){let{type:G6}=wu[r8];if(G6==="positive_integer"){if(!Number.isInteger(j1)||j1<=0)throw N.validation(`${r8} must be a positive integer`,"INVALID_SYSTEM_SETTING_VALUE")}else if(G6==="nullable_template_ref"){if(j1===null)continue;if(typeof j1!=="string"||j1.trim()==="")throw N.validation(`${r8} must be a template ID string or null`,"INVALID_SYSTEM_SETTING_VALUE");if(!await u2.readEntity(Z,Q,{id:j1}))throw N.validation(`${r8}: entity not found: ${j1}`,"INVALID_SYSTEM_SETTING_VALUE");if(j1.length<2||j1[1]!=="t")throw N.validation(`${r8}: referenced entity is not a template: ${j1}`,"INVALID_SYSTEM_SETTING_VALUE")}else if(G6==="enum"){let{values:j_}=wu[r8];if(!j_.includes(j1))throw N.validation(`${r8} must be one of: ${j_.join(", ")}`,"INVALID_SYSTEM_SETTING_VALUE")}}let u8=[],p8=(r8,j1,G6)=>u8.push({hookName:r8,fn:j1,onError:G6}),g8=N2.getObjectId(),T1="maxConcurrentJobs"in s||"maxJobDepth"in s||"maxResumeAttempts"in s||"defaultResumePromptRef"in s,P1="trashRetentionDays"in s||"scratchDocDelayDays"in s||"jobDelayDays"in s,R1="indexingMode"in s||"batchIntervalMinutes"in s,h1="claudeStrategy"in s;await Z.transaction().execute(async(r8)=>{let j1=null;if(T1){if(j1=await u2.findFolderByName(r8,Q,g8,"Jobs"),!j1)throw Error(`Jobs domain folder missing for project ${d}`)}let G6=null;if(P1){let V6=await u2.findFolderByName(r8,Q,g8,"Deleted Items");if(!V6)throw Error(`Deleted Items domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"disposal-config");if(!E4)throw Error(`disposal-config setting missing for project ${d}`);G6=E4.entity}let j_=null;if(R1){let V6=await u2.findFolderByName(r8,Q,g8,"RAG");if(!V6)throw Error(`RAG domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"rag-config");if(!E4)throw Error(`rag-config setting missing for project ${d}`);j_=E4.entity}let w4=null;if(h1){let V6=await u2.findFolderByName(r8,Q,g8,"Agents");if(!V6)throw Error(`Agents domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"claude-agent-config");if(!E4)throw Error(`claude-agent-config setting missing for project ${d}`);w4=E4.entity}if("autoArchiveDelayDays"in s){let V6=await u2.findFolderByName(r8,Q,g8,"Stories");if(!V6)throw Error(`Stories domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"auto-archive-delay");if(!E4)throw Error(`auto-archive-delay setting missing for project ${d}`);let N3=s.autoArchiveDelayDays*86400000;await p2.setFieldValue(r8,Q,{entityId:E4.entity.getObjectId(),fieldName:"delayMs",value:N3},p8)}if("maxConcurrentJobs"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"job-config");if(!V6)throw Error(`job-config setting missing for project ${d}`);await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"maxConcurrentJobs",value:s.maxConcurrentJobs},p8)}if("maxJobDepth"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"job-config");if(!V6)throw Error(`job-config setting missing for project ${d}`);await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"maxJobDepth",value:s.maxJobDepth},p8)}if("trashRetentionDays"in s)await p2.setFieldValue(r8,Q,{entityId:G6.getObjectId(),fieldName:"retentionDays",value:s.trashRetentionDays},p8);if("scratchDocDelayDays"in s)await p2.setFieldValue(r8,Q,{entityId:G6.getObjectId(),fieldName:"scratchDocDelayDays",value:s.scratchDocDelayDays},p8);if("jobDelayDays"in s)await p2.setFieldValue(r8,Q,{entityId:G6.getObjectId(),fieldName:"jobDelayDays",value:s.jobDelayDays},p8);if("maxResumeAttempts"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"resume-config");if(!V6)throw Error(`resume-config setting missing for project ${d}`);await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"maxResumeAttempts",value:s.maxResumeAttempts},p8)}if("defaultResumePromptRef"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"resume-config");if(!V6)throw Error(`resume-config setting missing for project ${d}`);if(s.defaultResumePromptRef===null)await p2.deleteFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"defaultResumePromptRef"},p8);else await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"defaultResumePromptRef",value:s.defaultResumePromptRef},p8)}if("indexingMode"in s)await p2.setFieldValue(r8,Q,{entityId:j_.getObjectId(),fieldName:"indexingMode",value:s.indexingMode},p8);if("batchIntervalMinutes"in s)await p2.setFieldValue(r8,Q,{entityId:j_.getObjectId(),fieldName:"batchIntervalMinutes",value:s.batchIntervalMinutes},p8);if("claudeStrategy"in s)await p2.setFieldValue(r8,Q,{entityId:w4.getObjectId(),fieldName:"claudeStrategy",value:s.claudeStrategy},p8);if("indexingMode"in s||"batchIntervalMinutes"in s)if(("indexingMode"in s?s.indexingMode:j_.getField("indexingMode")?.getValue()??"batch")==="constant")p8("cronService-updateInterval",()=>{r_.info("[Core] Switching to constant mode: setting embedding-batch cron to 2000ms"),$2.updateInterval("embedding-batch",2000)});else{let N3=("batchIntervalMinutes"in s?s.batchIntervalMinutes:parseInt(j_.getField("batchIntervalMinutes")?.getValue()??"5",10))*60*1000;p8("cronService-updateInterval",()=>{r_.info("[Core] Updated embedding-batch cron interval to %dms",N3),$2.updateInterval("embedding-batch",N3)})}});for(let{fn:r8}of u8)r8();return await z2(d)},T2=async(d,s="A")=>{let Q,u2;if(s==="B")Q=(await W2()).sharedStore,u2={};else u2=await B(d),Q=(await v2(u2.projCtx)).rootStore;let p2=await Q.readSettingsRootFolder(Z,u2,{storeCode:s});if(!p2)throw Error(`rag-defaults: no settings root for store ${s}`);let N2=await Q.findFolderByName(Z,u2,p2.getObjectId(),"RAG");if(!N2)throw Error(`RAG domain folder missing for store ${s}`);let u8=await Q.findSettingByName(Z,u2,N2.getObjectId(),"rag-config");if(!u8)throw Error(`rag-config setting missing for store ${s}`);let p8=u8.entity;return{ragDefaultDoc:p8.getField("ragDefaultDoc")?.getValue()??"false",ragDefaultCartridge:p8.getField("ragDefaultCartridge")?.getValue()??"true",ragDefaultTask:p8.getField("ragDefaultTask")?.getValue()??"false",ragDefaultScratch:p8.getField("ragDefaultScratch")?.getValue()??"false",ragDefaultTemplate:p8.getField("ragDefaultTemplate")?.getValue()??"false",ragDefaultPrompt:p8.getField("ragDefaultPrompt")?.getValue()??"false",ragDefaultSavedSearch:p8.getField("ragDefaultSavedSearch")?.getValue()??"false"}},q8=async(d,{typeCode:s,subtype:Q,targetValue:u2},p2="A")=>{let N2;if(p2==="B"){let{sharedStore:g8}=await W2();N2=g8.getPk()}else{let g8=await B(d),{rootStore:T1}=await v2(g8.projCtx),P1=T1.getChildren().find((R1)=>R1.getCode()===p2);if(!P1)throw Error(`Store ${p2} not found for project ${d}`);N2=P1.getPk()}return{count:await(E2??KR.create({db:Z})).countAffectedEntities(Z,{storeId:N2,typeCode:s,subtype:Q??null,targetValue:u2})}},n8=async(d,{defaults:s,applyToExisting:Q},u2="A")=>{for(let[r8,j1]of Object.entries(s)){try{OB(r8)}catch{throw N.validation(`Unknown ragDefault field name: ${r8}`,"INVALID_RAG_DEFAULT_KEY")}if(j1!=="true"&&j1!=="false")throw N.validation(`ragDefault values must be 'true' or 'false', got: ${j1} for ${r8}`,"INVALID_RAG_DEFAULT_VALUE")}if(Q&&Q.length>0){for(let r8 of Q)if(!Object.hasOwn(s,r8))throw N.validation(`applyToExisting key '${r8}' is not present in defaults — cannot bulk-apply without a new value`,"APPLY_TO_EXISTING_NOT_IN_DEFAULTS")}let p2,N2,u8,p8;if(u2==="B"){let r8=await W2();p2=r8.sharedStore,N2=r8.fieldService,u8={},p8=p2.getPk()}else{u8=await B(d);let r8=await v2(u8.projCtx);p2=r8.rootStore,N2=r8.fieldService;let j1=p2.getChildren().find((G6)=>G6.getCode()===u2);if(!j1)throw Error(`Store ${u2} not found for project ${d}`);p8=j1.getPk()}let g8=await p2.readSettingsRootFolder(Z,u8,{storeCode:u2});if(!g8)throw Error(`rag-defaults: no settings root for store ${u2}`);let T1=await p2.findFolderByName(Z,u8,g8.getObjectId(),"RAG");if(!T1)throw Error(`RAG domain folder missing for store ${u2}`);let P1=[],R1=(r8,j1,G6)=>P1.push({hookName:r8,fn:j1,onError:G6}),h1={};await Z.transaction().execute(async(r8)=>{let j1=await p2.findSettingByName(r8,u8,T1.getObjectId(),"rag-config");if(!j1)throw Error(`rag-config setting missing for store ${u2}`);let G6=j1.entity.getObjectId();for(let[j_,w4]of Object.entries(s))await N2.setFieldValue(r8,u8,{entityId:G6,fieldName:j_,value:w4,bypassEditableCheck:!0},R1);if(Q&&Q.length>0){let j_=E2??KR.create({db:Z});for(let w4 of Q){let V6=s[w4],{typeCode:E4,subtype:N3}=OB(w4),f5=await j_.listAffectedEntityIds(r8,{storeId:p8,typeCode:E4,subtype:N3,targetValue:V6});for(let Wu of f5)await N2.setFieldValue(r8,u8,{entityId:Wu,fieldName:"ragIndexed",value:V6,bypassEditableCheck:!0},R1);h1[w4]=f5.length}}});for(let{fn:r8}of P1)r8();return{defaults:await T2(d,u2),applied:h1}},M8=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)return"pty";let p2=await Q.findFolderByName(Z,s,u2.getObjectId(),"Agents");if(!p2)return"pty";let N2=await Q.findSettingByName(Z,s,p2.getObjectId(),"claude-agent-config");if(!N2)return"pty";return N2.entity.getField("claudeStrategy")?.getValue()==="headless"?"headless":"pty"},C8=async(d,s)=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx),p2=await u2.readSettingsRootFolder(Z,Q,{storeCode:"A"});if(!p2)throw Error(`agent-config: no settings root for project ${d}`);let N2=await u2.findFolderByName(Z,Q,p2.getObjectId(),"Agents");if(!N2)throw Error(`Agents domain folder missing for project ${d}`);let u8=s?[s]:W3.getAgentNames(),p8={};for(let g8 of u8){let T1=await u2.findSettingByName(Z,Q,N2.getObjectId(),`${g8}-agent-config`);if(!T1){p8[g8]={availableModels:[],defaultModel:null};continue}let P1=T1.entity,R1=P1.getField("availableModels"),h1=P1.getField("defaultModel"),r8=P1.getField("availableEffortLevels"),j1=P1.getField("defaultEffortLevel");p8[g8]={availableModels:R1?R1.getValues():[],defaultModel:h1?h1.getValue()??null:null,availableEffortLevels:r8?r8.getValues():[],defaultEffortLevel:j1?j1.getValue()??null:null}}return p8},b8=async(d,s,{availableModels:Q,defaultModel:u2,availableEffortLevels:p2,defaultEffortLevel:N2}={})=>{if(!W3.isValidAgent(s))throw N.validation(`Unknown agent: ${s}`,"INVALID_AGENT");let u8=await B(d),{rootStore:p8,fieldService:g8}=await v2(u8.projCtx),T1=await p8.readSettingsRootFolder(Z,u8,{storeCode:"A"});if(!T1)throw Error(`agent-config: no settings root for project ${d}`);let P1=await p8.findFolderByName(Z,u8,T1.getObjectId(),"Agents");if(!P1)throw Error(`Agents domain folder missing for project ${d}`);let R1=await p8.findSettingByName(Z,u8,P1.getObjectId(),`${s}-agent-config`);if(!R1)throw Error(`${s}-agent-config entity missing for project ${d}`);let h1=R1.entity.getObjectId(),r8=[],j1=(G6,j_,w4)=>r8.push({hookName:G6,fn:j_,onError:w4});await Z.transaction().execute(async(G6)=>{if(Q!==void 0)await g8.setFieldValue(G6,u8,{entityId:h1,fieldName:"availableModels",values:Q},j1);if(u2!==void 0)if(u2===null)await g8.deleteFieldValue(G6,u8,{entityId:h1,fieldName:"defaultModel"},j1);else await g8.setFieldValue(G6,u8,{entityId:h1,fieldName:"defaultModel",value:u2},j1);if(p2!==void 0)await g8.setFieldValue(G6,u8,{entityId:h1,fieldName:"availableEffortLevels",values:p2},j1);if(N2!==void 0)if(N2===null)await g8.deleteFieldValue(G6,u8,{entityId:h1,fieldName:"defaultEffortLevel"},j1);else await g8.setFieldValue(G6,u8,{entityId:h1,fieldName:"defaultEffortLevel",value:N2},j1)});for(let{fn:G6}of r8)G6();return await C8(d,s)},e8=async(d)=>{return await B(d),await P.getMcpStatus(d)},s1=async(d,{store:s,buffer:Q,mimeType:u2,originalFilename:p2,widthPx:N2,heightPx:u8,displayWidth:p8,displayHeight:g8})=>{let T1=await B(d),{transactionService:P1}=await v2(T1.projCtx);return await P1.createAsset(T1,{store:s,buffer:Q,mimeType:u2,originalFilename:p2,widthPx:N2,heightPx:u8,displayWidth:p8,displayHeight:g8})},w_=async(d,{id:s})=>{let Q=await B(d),{assetService:u2}=await v2(Q.projCtx);return await u2.readAsset(Z,Q,{id:s})},J_=async(d,{id:s,excludeDocumentId:Q})=>{let u2=await B(d),{assetService:p2}=await v2(u2.projCtx);return await p2.getAssetReferences(Z,u2,{id:s,excludeDocumentId:Q})},t6=async(d,{id:s})=>{let Q=await B(d),{assetService:u2}=await v2(Q.projCtx);return await u2.readAssetBinary(Z,Q,{id:s})},Ov=async(d,{store:s})=>{let Q=await B(d),{assetService:u2}=await v2(Q.projCtx);return await u2.listAssets(Z,Q,{store:s})},Ju=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteAsset(Q,{id:s})},X7=async(d,{name:s,agent:Q,model:u2,effortLevel:p2,prompt:N2,promptDocumentId:u8,store:p8="A",workingDirectory:g8,objectId:T1,parentJobId:P1,blocking:R1,dockerImage:h1,skipPermissions:r8,clearStoryFlag:j1,clearStatusMessage:G6,resumePromptRef:j_})=>{let w4=await B(d),{transactionService:V6,jobService:E4,rootStore:N3}=await v2(w4.projCtx);await f(Q,h1);let f5=await b(d),Wu=await h(d),Ou=u2?.trim()||null;if(!Ou&&Q)Ou=(await C8(d,Q))?.[Q]?.defaultModel??null;let A5=p2?.trim()||null;if(!A5&&Q)A5=(await C8(d,Q))?.[Q]?.defaultEffortLevel??null;let K3=Q;if(Q==="claude"){let B9=await M8(d);K3=B9==="pty"?"claude-session":"claude",r_.debug(`Claude strategy: ${B9} → resolved agent: ${K3}`)}let EK=await V6.createJob(w4,{store:p8,name:s,agent:K3,model:Ou,effortLevel:A5,prompt:N2,promptDocumentId:u8,workingDirectory:g8,objectId:T1,parentJobId:P1,blocking:R1,dockerImage:h1,skipPermissions:r8,clearStoryFlag:j1,clearStatusMessage:G6,resumePromptRef:j_,defaultResumePromptRef:f5,maxJobDepth:Wu}),l3=await D(d),y9=await E(d),LK=()=>({jobRunner:rm.create({jobService:E4,transactionService:V6,store:N3,db:Z,projectPath:w4.projectPath,maxResumeAttempts:y9,jobQueue:U,processEnv:w,cawPort:J}),transactionService:V6});return U.enqueue(EK.getObjectId(),w4,d,l3,LK,P1),EK},G5=async(d,{store:s="A",status:Q,completedAfter:u2,completedBefore:p2,sortBy:N2="startedAt",sortDir:u8="desc",limit:p8=50,offset:g8=0,treeMode:T1,objectId:P1,pinned:R1})=>{let h1=await B(d),{jobService:r8}=await v2(h1.projCtx),j1=await h(d),{jobs:G6,total:j_}=await r8.listJobs(Z,h1,{store:s,status:Q,completedAfter:u2,completedBefore:p2,sortBy:N2,sortDir:u8,limit:p8,offset:g8,treeMode:T1,objectId:P1,pinned:R1,maxJobDepth:j1});return{jobs:G6,total:j_,limit:p8,offset:g8}},P_=async(d,{id:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.getJob(Z,Q,{id:s})},Z6=async(d,{id:s})=>{I.factory(!s,N.validation,"Job ID is required","MISSING_ID"),B1.validateEntityType(s,["j"],"job");let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx),p2=await u2.readJob(Z,Q,{id:s});I.factory(!p2,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let u8=await u2.findContentByName(Z,Q,s,"prompt.md","d")!==null,p8;if(u8)p8=await u2.findContentByName(Z,Q,s,"output.md","d");else{let g8=await u2.listContent(Z,Q,{parentId:s,type:"d"}),T1=/^prompt-(\d+)\.md$/,P1=g8.filter((r8)=>T1.test(r8.getName())),R1=0;if(P1.length>0){let r8=P1.map((j1)=>{let G6=j1.getName().match(T1);return G6?parseInt(G6[1],10):0});R1=Math.max(...r8)}let h1=R1>0?`output-${R1}.md`:"output-1.md";p8=await u2.findContentByName(Z,Q,s,h1,"d")}return I.factory(!p8,N.notFound,`Job ${s} has no output document`,"OUTPUT_DOC_NOT_FOUND"),p8.getPublishedContent()||p8.getDraftContent()||""},d1=async(d,{id:s})=>{I.factory(!s,N.validation,"Job ID is required","MISSING_ID"),B1.validateEntityType(s,["j"],"job");let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx),p2=await u2.readJob(Z,Q,{id:s});I.factory(!p2,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let N2=await u2.findContentByName(Z,Q,s,"prompt.md","d"),u8=N2!==null,p8;if(u8)p8=N2;else{let g8=await u2.listContent(Z,Q,{parentId:s,type:"d"}),T1=/^prompt-(\d+)\.md$/,P1=g8.filter((r8)=>T1.test(r8.getName())),R1=0;if(P1.length>0){let r8=P1.map((j1)=>{let G6=j1.getName().match(T1);return G6?parseInt(G6[1],10):0});R1=Math.max(...r8)}let h1=R1>0?`prompt-${R1}.md`:"prompt-1.md";p8=await u2.findContentByName(Z,Q,s,h1,"d")}return I.factory(!p8,N.notFound,`Job ${s} has no prompt document`,"PROMPT_DOC_NOT_FOUND"),p8.getPublishedContent()||p8.getDraftContent()||""},i6=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteJob(Q,{id:s})},e6=async(d,{id:s,prompt:Q,promptDocumentId:u2,model:p2,effortLevel:N2,workingDirectory:u8,dockerImage:p8,skipPermissions:g8,blocking:T1})=>{let P1=await B(d),{transactionService:R1,jobService:h1,rootStore:r8}=await v2(P1.projCtx),G6=(await r8.readJob(Z,P1,{id:s}))?.getField("agent")?.getValue();await f(G6,p8);let j_=await R1.continueJob(P1,{id:s,prompt:Q,promptDocumentId:u2,model:p2,effortLevel:N2,workingDirectory:u8,dockerImage:p8,skipPermissions:g8}),w4=await D(d),V6=await E(d),E4=()=>({jobRunner:rm.create({jobService:h1,transactionService:R1,store:r8,db:Z,projectPath:P1.projectPath,maxResumeAttempts:V6,jobQueue:U,processEnv:w,cawPort:J}),transactionService:R1}),N3=j_.getField("parentJobId")?.getValue()||void 0;return U.enqueue(j_.getObjectId(),P1,d,w4,E4,N3),j_},$4=async(d,s)=>{B1.validateEntityType(s,["j"],"job");let Q=await B(d),{rootStore:u2,templateService:p2}=await v2(Q.projCtx),N2=await u2.readJob(Z,Q,{id:s});I.factory(!N2,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let u8=N2.getField("resumePromptRef")?.getValue();I.factory(!u8,N.validation,`Job ${s} has no resumePromptRef`,"NO_RESUME_PROMPT");let p8=await u2.readEntity(Z,Q,{id:u8});I.factory(!p8,N.notFound,`Resume prompt template not found: ${u8}`,"TEMPLATE_NOT_FOUND");let g8=p8.entity.getPublishedContent()||p8.entity.getDraftContent();I.factory(!g8,N.validation,`Resume prompt template ${u8} has no content`,"EMPTY_TEMPLATE");let T1=N2.getField("objectId")?.getValue(),P1=p2.renderTemplate(g8,{"job-id":s,"object-id":T1||""});try{return await e6(d,{id:s,prompt:P1})}catch(R1){r_.debug("resumeJob: continueJob failed for job %s: %s",s,R1.message);try{await s4(d,s,R1.message||"Resume failed")}catch(h1){r_.debug("resumeJob: cancelJobResume also failed for job %s: %s",s,h1.message)}}},s4=async(d,s,Q)=>{B1.validateEntityType(s,["j"],"job");let u2=await B(d),{rootStore:p2,transactionService:N2}=await v2(u2.projCtx),u8=await p2.readJob(Z,u2,{id:s});I.factory(!u8,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let p8=u8.getField("status")?.getValue();return I.factory(p8!=="awaiting-resume",N.validation,`Cannot cancel resume: job ${s} is not in awaiting-resume status (current: ${p8})`,"INVALID_STATUS_FOR_CANCEL_RESUME"),await N2.updateJobStatus(u2,{id:s,status:"error",errorMessage:Q||"Resume cancelled"})},h$=async(d,{id:s,name:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.renameJob(u2,{id:s,name:Q})},p7=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.stopJob(Q,{id:s})},l9=(d,{jobId:s})=>{return U.releaseSlot(s)},CK=(d,{jobId:s})=>{U.reclaimSlot(s)},bH=async(d,{jobIds:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.areJobsComplete(Z,Q,{jobIds:s})},Gg=async(d,{parentJobId:s,childJobIds:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.disarmBlockingChildren(u2,{parentJobId:s,childJobIds:Q})},fg=async(d,{parentJobId:s,childJobIds:Q})=>{let u2=await B(d),{jobService:p2,transactionService:N2}=await v2(u2.projCtx),u8=["completed","error","stopped"];for(let p8 of Q)try{let g8=await p2.getJob(Z,u2,{id:p8});if(!g8)continue;let T1=g8.getFields(),P1=T1.parentJobId;if((P1?P1.getValue():null)!==s)continue;let h1=T1.status,r8=h1?h1.getValue():"pending";if(u8.includes(r8))continue;if(r8==="running")try{await p7(d,{id:p8})}catch(j1){if(j1.code==="NO_PID")await N2.terminateChildJob(u2,{id:p8});else throw j1}else if(r8==="pending")U.removePending(p8),await N2.terminateChildJob(u2,{id:p8});else await N2.terminateChildJob(u2,{id:p8})}catch(g8){r_.debug("terminalizeBlockingChildren: error processing child %s: %s",p8,g8.message)}},Ag=async(d,{jobId:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.hasActiveBlockingChildren(Z,Q,s)},Tg=async(d,{id:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.getProcessStatus(Z,Q,{id:s})},bP=async(d)=>{let s=await B(d),{worktreeService:Q}=await v2(s.projCtx);return await Q.listWorktrees({projectPath:s.projectPath})},Pg=async(d,{branch:s,baseBranch:Q})=>{let u2=await B(d),{worktreeService:p2}=await v2(u2.projCtx);return await p2.createWorktree({projectPath:u2.projectPath,branch:s,baseBranch:Q})},IP=()=>Z,D4=(d,s)=>{$2.register(d,s)},jg=(d)=>{return w2.subscribeAll(d)};$2.register(Oe2,{getProjects:j2,listStories:_1,updateFieldValue:B8,getArchiveThresholdMs:M}),$2.register(ie2,{db:Z,getRetentionDays:R}),$2.register(pe2,{db:Z,getServicesForProject:v2}),$2.register(Ge2,{getProjects:j2,listJobs:G5,listStories:_1,getStoryIdsWithNonZeroJobCounts:h6,setStoryJobCount:n,setStoryPendingJobCount:V}),$2.register(fe2,{getProjects:j2,listJobs:G5,resumeJob:$4,cancelJobResume:s4,getMaxResumeAttempts:E,getCronIntervalMs:o}),$2.register(Pe2,{db:Z,getServicesForProject:v2}),$2.register(Ve2,{embeddingPipeline:U2}),$2.register(Me2,{db:Z,getProjects:j2,getServicesForProject:v2}),$2.register(xe2,{integrationService:p}),await Fe2({db:Z,getProjects:j2,getServicesForProject:v2,createCtxFromProjectId:B,killProcess:z,platform:c}),await Qe2({db:Z,storeStore:X});let lP=await R();if(lP!==null)await _R(Z,lP);let yP=p.detectAll().catch((d)=>{r_.warn("Startup integration detection failed: %s",d.message)}),Vg=x2?(async()=>{try{let d=await Z.selectFrom("field_definitions").select("id").where("name","=","code").where("store_id","is",null).where("is_system","=",1).executeTakeFirst();if(!d){r_.debug("Auto-reindex startup: code field definition not found");return}let s=await Z.selectFrom("entities as s").innerJoin("entity_types as et","et.id","s.entity_type_id").innerJoin("string_fields as sf","sf.entity_id","s.id").select(["s.id as storeId","sf.value as storeCode"]).where("s.type_code","=","r").where("et.subtype","=","local").where("s.deleted_at","is",null).where("sf.field_definition_id","=",d.id).execute();for(let{storeId:Q,storeCode:u2}of s)if(await E2.readStoreField(Q,"embeddingState")==="indexing"){r_.debug("Startup reconciliation: store %s (%s) stuck in indexing, resetting to ready",u2,Q);try{await U2.clearEmbeddingError(Q)}catch(N2){r_.debug("Startup reconciliation error for store %s: %s",u2,N2?.message)}}for(let{storeId:Q,storeCode:u2}of s){if(await E2.readStoreField(Q,"embeddingState")!==null)continue;r_.debug("Auto-reindex on startup: store %s (%s) has null embeddingState, triggering reindexAll()",u2,Q);try{let N2=await U2.reindexAll({storeIds:[Q],storeCodes:[u2]});if(N2.batchPromise)await N2.batchPromise}catch(N2){r_.debug("Auto-reindex error for store %s: %s",u2,N2?.message)}}}catch(d){r_.debug("Auto-reindex startup check failed: %s",d?.message)}})():Promise.resolve(),ng=()=>{let d=U.getRunningJobs();if(d.length===0)return{safeToStop:!0};return{safeToStop:!1,safeToStopMessage:`${d.length} active job${d.length===1?"":"s"} running`}};if(W)await W({db:Z,projectStore:H,storeStore:X,jobQueue:U,getServicesForProject:v2,embeddingPipeline:U2,embeddingOps:E2,cronService:$2,startupReindexPromise:Vg,startupDetectionPromise:yP});return Object.freeze({getProjects:j2,getProjectByObjectId:Q2,createProject:y1,renameProject:J6,deleteProject:M6,validateProjectPath:E1,createFolder:R2,renameFolder:e2,moveFolder:S2,deleteFolder:Y8,listDeletedEvents:h2,getDeletedEvent:D2,restoreDeletedEvent:_8,getFolder:T8,getFolderByPath:V8,getDraftPromptsRootFolder:o8,getRootForEntity:S8,listFolderContents:q1,getRootStore:F8,getStoryService:o1,getJobService:N1,getOperationProgressObservable:e1,getServerObservable:p6,evictProject:H8,getDb:IP,createDocument:k2,createTemplate:v8,readDocument:I8,readDocumentByPath:x8,checkIncludes:a2,updateIncludes:t2,updateDocumentPath:m2,deleteDocument:z8,getIncomingReferences:N8,specialiseDocument:v1,generaliseDocument:C2,specialiseFolder:B2,generaliseFolder:F2,duplicateDocument:d2,duplicateFolder:w8,saveDraft:E8,readDraft:J1,publishDocument:M2,discardDraft:L2,setEditState:X2,clearEditState:i8,getEditState:P2,readVersion:$8,getVersions:J8,editDocument:P8,batchEditDocument:R8,checkChecklistItem:l8,toggleChecklistItem:U8,batchCheckChecklistItems:f1,listDocuments:l,readLines:k1,readBetweenMarkers:Y6,getDocumentStats:q6,readHeadings:G4,readSection:z$,readFrontmatter:k4,readChecklist:r4,renderTemplate:e,getTemplateParameters:S,listTemplatesByType:g,searchContent:F,createFieldDefinition:y,readFieldDefinition:t,getFieldDefinitions:c2,getTypeFields:H2,resolveAllowedValues:V2,updateFieldDefinitionConfig:n2,deleteFieldDefinition:b2,addClassAssociation:l2,getFields:A8,getFieldValue:f8,readEntity:c8,addFieldToEntity:a8,updateFieldValue:B8,setFieldValue:Z1,removeFieldFromEntity:h8,createSubtype:d8,listEntitySubtypes:A1,listExports:W6,exportPreview:y6,exportDocuments:x6,importDocuments:g6,addToBundle:B6,backfillContentRefs:R6,backfillResolvedFts:s6,listGlobalExports:c4,globalExportPreview:c$,globalExportDocuments:D6,globalImportDocuments:T$,createStory:c1,listStories:_1,getStoryIdsWithNonZeroJobCounts:h6,getStory:H_,renameStory:C4,updateStoryState:S4,changeTrack:a4,deleteStory:f4,reorderStories:x3,reorderSingle:y_,incrementStoryJobCount:U$,decrementStoryJobCount:I9,incrementStoryPendingJobCount:X5,decrementStoryPendingJobCount:cu,createTrack:ZY,listTracks:iY,getTrack:HY,updateTrack:E_,deleteTrack:R$,listSharedTracks:D_,createSharedTrack:av,getSharedTrack:p5,updateSharedTrack:XY,deleteSharedTrack:hK,getSystemSettings:z2,updateSystemSettings:Z2,getRagIndexedDefaults:T2,getAffectedEntityCount:q8,updateRagIndexedDefaults:n8,getAgentModelConfig:C8,updateAgentModelConfig:b8,getAgentMcpStatus:e8,createAsset:s1,readAsset:w_,getAssetReferences:J_,readAssetBinary:t6,listAssets:Ov,deleteAsset:Ju,createJob:X7,listJobs:G5,getJob:P_,readJobOutput:Z6,readJobPrompt:d1,deleteJob:i6,continueJob:e6,resumeJob:$4,cancelJobResume:s4,stopJob:p7,releaseParentSlot:l9,reclaimParentSlot:CK,areJobsComplete:bH,hasActiveBlockingChildren:Ag,disarmBlockingChildren:Gg,terminalizeBlockingChildren:fg,renameJob:h$,getProcessStatus:Tg,listWorktrees:bP,createWorktree:Pg,listCrons:()=>$2.list(),startCron:(d)=>$2.start(d),stopCron:(d)=>$2.stop(d),restartCron:(d)=>$2.restart(d),startAllCrons:()=>$2.startAll(),stopAllCrons:()=>$2.stopAll(),registerCronJob:D4,shutdownEmbeddingPipeline:()=>U2.shutdown(),reindexEmbeddings:async(d,{store:s}={})=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx);if(s){let p8=u2.getChildren().find((g8)=>g8.getCode()===s);if(!p8)throw N.notFound(`Store not found: ${s}`,"STORE_NOT_FOUND");return U2.reindexAll({storeIds:[p8.getPk()],storeCodes:[s]})}let p2=u2.getChildren(),N2=p2.map((p8)=>p8.getPk()),u8=p2.map((p8)=>p8.getCode());return U2.reindexAll({storeIds:N2.length>0?N2:null,storeCodes:u8.length>0?u8:null})},getEmbeddingStatus:async(d,{store:s}={})=>{let Q=await B(d),{searchService:u2,rootStore:p2}=await v2(Q.projCtx),N2=s??"A",u8=p2.getChildren().find((j1)=>j1.getCode()===N2),p8=u8?.getPk(),g8=u8?.getObjectId()??null,T1=await u2.computeEmbeddingStatus(Z,{storeId:p8,storeEntityId:g8}),R1=$2.list().find((j1)=>j1.name==="embedding-batch"),h1=R1?.nextRun!=null?new Date(R1.nextRun).toISOString():null,r8=R1?.interval??null;return{...T1,nextBatchRun:h1,batchIntervalMs:r8}},processEmbeddingBatch:async(d)=>{if(!x2)throw N.validation("Embedding pipeline is inactive (embeddings disabled)","EMBEDDINGS_DISABLED");if(r_.info("[Core] Manual process-batch triggered for project %s",d),U2.isBatchProcessing())return{triggered:!1,reason:"already_processing"};if(await E2.countAllNeedsIndexing()===0)return{triggered:!1,reason:"nothing_to_index"};return U2.processBatch().catch((Q)=>{r_.debug("[Core] Manual process-batch error: %s",Q.message)}),$2.restart("embedding-batch"),{triggered:!0}},clearEmbeddingError:async(d,{store:s}={})=>{let Q=await B(d),{searchService:u2,rootStore:p2}=await v2(Q.projCtx),N2=s??"A",p8=p2.getChildren().find((g8)=>g8.getCode()===N2)?.getPk();return await U2.clearEmbeddingError(p8),u2.computeEmbeddingStatus(Z,{storeId:p8})},subscribeServerEvents:jg,getSafeToStopStatus:ng,getIntegrations:()=>p.getIntegrations(),refreshIntegrations:async()=>{return await p.detectAll(),p.getIntegrations()},checkIntegrationStatus:(d)=>p.checkRunningStatus(d),getSystemConfig:()=>{if(!G)throw N.validation("Config service unavailable (no envDir)","INVALID_CONFIG");return G.getConfig()},writeSystemPendingConfig:(d)=>{if(!G)throw N.validation("Config service unavailable (no envDir)","INVALID_CONFIG");return G.writePendingConfig(d)}})},ee2=Object.freeze({create:XG1});var _28=g_(vb(),1),pG1=(_,{staticPath:v})=>{return _.use(_28.default.static(v)),_.get("/{*splat}",(u,K,q)=>{if(u.path.startsWith("/api")||u.path.startsWith("/mcp")||u.path.startsWith("/cli")||u.path==="/health")return q();K.sendFile("index.html",{root:v})}),Object.freeze({})},$28=Object.freeze({create:pG1});w1();w1();var v28=W8.create({namespace:"caw:api:handle-error"}),GG1={UNAUTHORIZED:401,INVALID_TOKEN:401,NOT_FOUND:404,PROJECT_NOT_FOUND:404,EXPORT_NOT_FOUND:404,STORY_NOT_FOUND:404,JOB_NOT_FOUND:404,ASSET_NOT_FOUND:404,BLOB_NOT_FOUND:404,STORE_NOT_FOUND:404,INCLUDE_NOT_FOUND:404,INCLUDE_VERSION_NOT_FOUND:404,ENTITY_TYPE_NOT_FOUND:404,FOLDER_NOT_FOUND:404,DOCUMENT_NOT_FOUND:404,TRACK_NOT_FOUND:404,VERSION_NOT_FOUND:404,FIELD_DEFINITION_NOT_FOUND:404,SETTING_NOT_FOUND:404,WORKTREE_NOT_FOUND:404,DRAFT_NOT_FOUND:404,PARENT_NOT_FOUND:404,HEADING_NOT_FOUND:404,PROMPT_NOT_FOUND:404,OUTPUT_DOC_NOT_FOUND:404,PROMPT_DOC_NOT_FOUND:404,PARENT_TYPE_NOT_FOUND:404,ENTITY_NOT_FOUND:404,DEFINITION_NOT_FOUND:404,FIELD_NOT_FOUND:404,CONFLICT:409,STORE_NOT_EMPTY:409,EDIT_CONFLICT:409,DUPLICATE_NAME:409,DUPLICATE_PATH:409,DUPLICATE_PROJECT_PATH:409,DUPLICATE_TRACK_NAME:409,DUPLICATE_SUBTYPE_NAME:409,DUPLICATE_CLASS_ASSOCIATION:409,BRANCH_ALREADY_CHECKED_OUT:409,BRANCH_ALREADY_EXISTS:409,PARENT_DELETED:409,EXPORT_ERROR:500,STORY_ROOT_NOT_FOUND:500,ROOT_STORE_NOT_FOUND:500,SETTINGS_ROOT_NOT_FOUND:500,JOB_ROOT_NOT_FOUND:500},fG1=(_,v)=>{if(_.isDomainError){let u=GG1[_.code]??400;return v28.debug("DomainError: code=%s status=%d message=%s",_.code,u,_.message),v.status(u).json({error:_.message,code:_.code})}v28.error("Unhandled error:",_),v.status(500).json({error:_.message})},m8=fG1;var Oi=W8.create({namespace:"caw:api:projects"}),AG1=(_,{core:v})=>{return _.get("/api/projects",async(u,K)=>{try{Oi.debug("GET /api/projects - Fetching projects list");let q=await v.getProjects();Oi.debug("GET /api/projects - Returning %d projects",q.length),q.forEach((Y)=>{Oi.debug(" - %s (%s) with %d children",Y.name,Y.objectId,Y.children?.length||0)}),K.json(q)}catch(q){Oi.debug("GET /api/projects - Error: %s",q.message),m8(q,K)}}),_.post("/api/projects/validate",async(u,K)=>{try{let{path:q}=u.body,Y=v.validateProjectPath(q);K.json(Y)}catch(q){m8(q,K)}}),_.post("/api/projects",async(u,K)=>{try{let{name:q,path:Y}=u.body;if(!q||typeof q!=="string"||q.trim()==="")return K.status(400).json({error:"Name is required",code:"VALIDATION_ERROR"});if(!Y||typeof Y!=="string"||Y.trim()==="")return K.status(400).json({error:"Path is required",code:"VALIDATION_ERROR"});if(q.length>255)return K.status(400).json({error:"Name exceeds maximum length (255)",code:"VALIDATION_ERROR"});let z=await v.createProject({name:q.trim(),path:Y.trim()});K.status(201).json(z.toJSON())}catch(q){m8(q,K)}}),_.patch("/api/projects/:projectId",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y}=u.body;if(Oi.debug("PATCH /api/projects/%s - Renaming to: %s",q,Y),!Y||typeof Y!=="string"||Y.trim()==="")return K.status(400).json({error:"Name is required",code:"VALIDATION_ERROR"});if(Y.length>255)return K.status(400).json({error:"Name exceeds maximum length (255)",code:"VALIDATION_ERROR"});let z=await v.renameProject(q,{name:Y.trim()});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.delete("/api/projects/:projectId",async(u,K)=>{try{let{projectId:q}=u.params;Oi.debug("DELETE /api/projects/%s - Deleting project",q);let Y=await v.deleteProject(q);K.json(Y)}catch(q){m8(q,K)}}),Object.freeze({})},u28=Object.freeze({create:AG1});w1();var l$=W8.create({namespace:"caw:api:folders"}),K28=(_)=>({folders:_.folders.map((v)=>v.toJSON()),documents:_.documents.map((v)=>v.toJSON())}),TG1=(_,{core:v})=>{return _.get("/api/p/:projectId/folders/contents",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,type:z}=u.query;l$.debug("GET /api/p/%s/folders/contents - Listing root contents: store=%s, type=%s",q,Y,z);let c=await v.listFolderContents(q,{folderId:null,store:Y,type:z}),w=K28(c);l$.debug("GET /api/p/%s/folders/contents - Found %d folders, %d documents",q,w.folders.length,w.documents.length),K.json(w)}catch(q){l$.debug("GET /api/p/%s/folders/contents - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/folders/by-path",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,type:c}=u.query,w=await v.getFolderByPath(q,{path:Y,store:z,type:c});if(!w)return K.status(404).json({error:"Not found"});K.json(w.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/folders/draft-prompts-root",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y}=u.query,z=await v.getDraftPromptsRootFolder(q,{store:Y});if(!z)return K.status(404).json({error:"Not found"});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/folders/:id/contents",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{type:z}=u.query;l$.debug("GET /api/p/%s/folders/%s/contents - Listing folder contents: type=%s",q,Y,z);let c=await v.listFolderContents(q,{folderId:Y,type:z}),w=K28(c);l$.debug("GET /api/p/%s/folders/%s/contents - Found %d folders, %d documents",q,Y,w.folders.length,w.documents.length),K.json(w)}catch(q){l$.debug("GET /api/p/%s/folders/%s/contents - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/folders/:id/root",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;l$.debug("GET /api/p/%s/folders/%s/root - Getting root for entity",q,Y);let z=await v.getRootForEntity(q,{id:Y});l$.debug("GET /api/p/%s/folders/%s/root - Found root: %s (type=%s, subtype=%s)",q,Y,z.root.id,z.root.type,z.root.subtype),K.json(z)}catch(q){l$.debug("GET /api/p/%s/folders/%s/root - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/folders/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getFolder(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let c=[],w=z.getParentId();while(w){c.unshift(w);let J=await v.getFolder(q,{id:w});if(!J)break;w=J.getParentId()}K.json({...z.toJSON(),ancestorFolderIds:c})}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/folders",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,root:c,parentId:w,name:J,subtype:W,fields:O}=u.body,Z=Y&&z&&!c&&!w,i=c&&Y&&!z&&!w;if([Z,i,w&&J&&!Y&&!c].filter(Boolean).length!==1)return K.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let p;if(Z)p="fullPath";else if(i)p="rootRelative";else p="parentName";l$.debug("POST /api/p/%s/folders - Creating folder: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s",q,p,Y,z,c,w,J);let G=await v.createFolder(q,{mode:p,path:Y,store:z,root:c,parentId:w,name:J,subtype:W,fields:O});l$.debug("POST /api/p/%s/folders - Folder created: id=%s, path=%s",q,G.getObjectId(),G.getPath()),K.status(201).json(G.toJSON())}catch(q){l$.debug("POST /api/p/%s/folders - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/folders/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.deleteFolder(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.patch("/api/p/:projectId/folders/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z,parentId:c}=u.body;if(z&&c)return K.status(400).json({error:"Provide only name or parentId, not both",code:"INVALID_REQUEST"});if(!z&&!c)return K.status(400).json({error:"Provide name or parentId",code:"INVALID_REQUEST"});let w;if(z)w=await v.renameFolder(q,{id:Y,name:z});else w=await v.moveFolder(q,{id:Y,parentId:c});K.json(w.toJSON())}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/folders/:id/specialise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{subtype:z,fields:c}=u.body;l$.debug("POST /api/p/%s/folders/%s/specialise - subtype=%s",q,Y,z);let J=(await v.specialiseFolder(q,{id:Y,subtype:z,fields:c})).entity.toJSON();l$.debug("POST /api/p/%s/folders/%s/specialise - Success: subtype=%s",q,Y,J.subtype),K.json(J)}catch(q){l$.debug("POST /api/p/%s/folders/%s/specialise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/folders/:id/generalise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;l$.debug("POST /api/p/%s/folders/%s/generalise",q,Y);let c=(await v.generaliseFolder(q,{id:Y})).entity.toJSON();l$.debug("POST /api/p/%s/folders/%s/generalise - Success: subtype=%s",q,Y,c.subtype),K.json(c)}catch(q){l$.debug("POST /api/p/%s/folders/%s/generalise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/folders/:id/duplicate",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{targetParentId:z,name:c}=u.body;l$.debug("POST /api/p/%s/folders/%s/duplicate - targetParentId=%s, name=%s",q,Y,z,c);let w=await v.duplicateFolder(q,{sourceId:Y,targetParentId:z,newName:c}),J=w.entity;l$.debug("POST /api/p/%s/folders/%s/duplicate - Success: newId=%s, path=%s, count=%d",q,Y,J.getObjectId(),J.getPath(),w.duplicatedCount),K.status(201).json({id:J.getObjectId(),path:J.getPath(),name:J.getName(),duplicatedCount:w.duplicatedCount})}catch(q){l$.debug("POST /api/p/%s/folders/%s/duplicate - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},q28=Object.freeze({create:TG1});var PG1=(_,{core:v})=>{return _.post("/api/p/:projectId/field-definitions",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,ownerEntityId:z,ownerEntityTypeCode:c,ownerEntityTypeSubtype:w,name:J,label:W,description:O,primitiveType:Z,required:i,multiplicity:H,allowed:X}=u.body,p=await v.createFieldDefinition(q,{store:Y,ownerEntityId:z??null,ownerEntityTypeCode:c,ownerEntityTypeSubtype:w,name:J,label:W??null,description:O??null,primitiveType:Z,required:i??!1,multiplicity:H??"single",allowed:X});K.status(201).json(p.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/types/:code/:subtype/fields",async(u,K)=>{try{let{projectId:q,code:Y,subtype:z}=u.params,{store:c}=u.query,w=z==="null"?null:z,J=await v.getTypeFields(q,{store:c||"A",code:Y,subtype:w});K.json({fields:J.map((W)=>{let O=W.sourceCode!==null?W.sourceSubtype||W.sourceCode:null;return{...W.entity.toJSON(),inherited:W.inherited,sourceType:O,isVirtual:W.isVirtual||!1,sortOrder:W.sortOrder,rows:W.rows,colspan:W.colspan,classDescription:W.classDescription,hidden:W.hidden,sectionKey:W.sectionKey,sectionLabel:W.sectionLabel,sectionOrder:W.sectionOrder}})})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/types/:code/subtypes",async(u,K)=>{try{let{projectId:q,code:Y}=u.params,z=await v.listEntitySubtypes(q,{code:Y});K.json({subtypes:z})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/field-definitions/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.readFieldDefinition(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/field-definitions",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,ownerEntityId:z,includeSystem:c}=u.query,w=await v.getFieldDefinitions(q,{store:Y,ownerEntityId:z??null,includeSystem:c==="true"});K.json(w.map((J)=>J.toJSON()))}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/field-definitions/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.deleteFieldDefinition(q,{id:Y});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.put("/api/p/:projectId/entities/:id/fields/:fieldName",async(u,K)=>{try{let{projectId:q,id:Y,fieldName:z}=u.params,{fieldDefinitionId:c,value:w,values:J,dependencies:W}=u.body;await v.setFieldValue(q,{entityId:Y,fieldDefinitionId:c!==void 0?c:null,fieldName:z,value:w,values:J,dependencies:W});let O=await v.readEntity(q,{id:Y});K.json(O.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/entities/:id/fields/:fieldName",async(u,K)=>{try{let{projectId:q,id:Y,fieldName:z}=u.params,c=await v.getFieldValue(q,{entityId:Y,fieldName:z});K.json({value:c})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/entities/:id/fields",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getFields(q,{entityId:Y}),c={};for(let[w,J]of Object.entries(z))c[w]=J.toJSON();K.json(c)}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/entities/:id/fields/:fieldName",async(u,K)=>{try{let{projectId:q,id:Y,fieldName:z}=u.params,{fieldDefinitionId:c}=u.query,w={entityId:Y,fieldName:z};if(c!==void 0)w.fieldDefinitionId=c;await v.removeFieldFromEntity(q,w),K.status(204).send()}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/entities/:entityId/fields/:fieldName/allowed-values",async(u,K)=>{try{let{projectId:q,entityId:Y,fieldName:z}=u.params,c={...u.query},w=Y?.[0],J=await v.resolveAllowedValues(q,{entityId:Y,storeCode:w,fieldName:z,dependencyValues:c});if(J.values===null)return K.status(400).json({error:"Field is not constrained",code:"FIELD_NOT_CONSTRAINED"});K.json({values:J.values,options:J.options})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/types/:typeCode/:subtype/fields/:fieldName/allowed-values",async(u,K)=>{try{let{projectId:q,typeCode:Y,subtype:z,fieldName:c}=u.params,{parentId:w,storeCode:J,...W}=u.query;if(!w||!J)return K.status(400).json({error:"parentId and storeCode are required",code:"MISSING_REQUIRED_PARAMS"});let O=z==="null"?null:z,Z={...W},i=await v.resolveAllowedValues(q,{typeCode:Y,subtype:O,parentId:w,storeCode:J,fieldName:c,dependencyValues:Z});if(i.values===null)return K.status(400).json({error:"Field is not constrained",code:"FIELD_NOT_CONSTRAINED"});K.json({values:i.values,options:i.options})}catch(q){m8(q,K)}}),_.patch("/api/p/:projectId/field-definitions/:fieldDefinitionId/config",async(u,K)=>{try{let{projectId:q,fieldDefinitionId:Y}=u.params,{config:z}=u.body,c=z?.allowed,w=z?.jsonSchema,J=await v.updateFieldDefinitionConfig(q,{id:Y,allowed:c,jsonSchema:w});K.json(J.toJSON())}catch(q){m8(q,K)}}),Object.freeze({})},Y28=Object.freeze({create:PG1});w1();var $3=W8.create({namespace:"caw:api:documents"}),jG1=(_,{core:v})=>{return _.post("/api/p/:projectId/documents",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O,fields:Z}=u.body,i=Y&&z&&!c&&!w,H=c&&Y&&!z&&!w;if([i,H,w&&J&&!Y&&!c].filter(Boolean).length!==1)return K.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let G;if(i)G="fullPath";else if(H)G="rootRelative";else G="parentName";$3.debug("POST /api/p/%s/documents - Creating document: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",q,G,Y,z,c,w,J,!!W);let f=(await v.createDocument(q,{mode:G,path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O,fields:Z})).toJSON();$3.debug("POST /api/p/%s/documents - Document created: id=%s, path=%s",q,f.id,f.path),K.status(201).json(f)}catch(q){$3.debug("POST /api/p/%s/documents - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/templates",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O}=u.body,Z=Y&&z&&!c&&!w,i=c&&Y&&!z&&!w;if([Z,i,w&&J&&!Y&&!c].filter(Boolean).length!==1)return K.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let p;if(Z)p="fullPath";else if(i)p="rootRelative";else p="parentName";$3.debug("POST /api/p/%s/templates - Creating template: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",q,p,Y,z,c,w,J,!!W);let P=(await v.createTemplate(q,{mode:p,path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O})).toJSON();$3.debug("POST /api/p/%s/templates - Template created: id=%s, path=%s",q,P.id,P.path),K.status(201).json(P)}catch(q){$3.debug("POST /api/p/%s/templates - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/documents/by-path",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,type:c="d",resolveIncludes:w="true"}=u.query,J=await v.readDocumentByPath(q,{path:Y,store:z,type:c,resolveIncludes:w!=="false"});if(!J)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let{entity:W,ancestorFolderIds:O,resolvedContent:Z}=J,i={...W.toJSON(),ancestorFolderIds:O};if(Z!==null)i.resolvedContent=Z;K.json(i)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents",async(u,K)=>{try{let{projectId:q}=u.params,{folderId:Y,store:z,type:c="d"}=u.query,w=await v.listDocuments(q,{folderId:Y??null,store:z,type:c});K.json(w.map((J)=>J.toJSON()))}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/templates/by-type/:typeCode",async(u,K)=>{try{let{projectId:q,typeCode:Y}=u.params,{store:z}=u.query,c=await v.listTemplatesByType(q,{typeCode:Y,store:z});K.json(c)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/parameters",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getTemplateParameters(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/render",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{params:z,target:c,targetOptions:w}=u.body,J=await v.renderTemplate(q,{id:Y,params:z,target:c,targetOptions:w,sessionId:u.sessionId});K.json(J)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{resolveIncludes:z="true"}=u.query,{entity:c,ancestorFolderIds:w,resolvedContent:J,resolvedDraftContent:W}=await v.readDocument(q,{id:Y,resolveIncludes:z!=="false"});if(!c)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let O={...c.toJSON(),ancestorFolderIds:w};if(J!==null)O.resolvedContent=J;if(W!==null)O.resolvedDraftContent=W;K.json(O)}catch(q){m8(q,K)}}),_.patch("/api/p/:projectId/documents/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{path:z,parentId:c}=u.body,w=B1.getTypeFromId(Y),J=await v.updateDocumentPath(q,{id:Y,path:z,parentId:c,type:w});K.json(J.toJSON())}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/documents/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{ack:z}=u.query;$3.debug("DELETE /documents/%s transport=rest session=%s ack=%s",Y,u.sessionId??"none",z??"none");let c=await v.deleteDocument(q,{id:Y,ack:z});if(!c.deleted)return K.status(409).json(c);K.json(c)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/incoming-references",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getIncomingReferences(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.put("/api/p/:projectId/documents/:id/draft",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{content:z}=u.body,c=u.sessionId;if($3.debug("PUT /documents/%s/draft session=%s contentLen=%d",Y,c??"none",z?.length??0),z===void 0)return K.status(400).json({error:"content is required",code:"MISSING_CONTENT"});let w=await v.saveDraft(q,{id:Y,content:z,sessionId:c});K.json({id:Y,updated:!0,lockLost:w.lockLost??!1})}catch(q){$3.debug("PUT /documents/%s/draft FAILED session=%s error=%s code=%s",u.params.id,u.sessionId??"none",q.message,q.code??"none"),m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/draft",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.readDraft(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/publish",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.publishDocument(q,{id:Y,sessionId:u.sessionId});K.json(z)}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/documents/:id/draft",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;await v.discardDraft(q,{id:Y}),K.json({id:Y,discarded:!0})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/versions",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getVersions(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/versions/:versionNumber",async(u,K)=>{try{let{projectId:q,id:Y,versionNumber:z}=u.params,{resolveIncludes:c="true"}=u.query,w=await v.readVersion(q,{id:Y,versionNumber:parseInt(z,10),resolveIncludes:c!=="false"});if(!w)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let J={...w};if(w.resolvedContent!==null&&w.resolvedContent!==void 0)J.resolvedContent=w.resolvedContent;else delete J.resolvedContent;K.json(J)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/edit-state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getEditState(q,{id:Y});if(!z)return K.json({locked:!1});K.json({locked:!0,locked_at:z.startedAt})}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/edit-state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=u.sessionId;if(!z)return K.status(400).json({error:"X-Session-Id header required",code:"MISSING_SESSION_ID"});let c=await v.setEditState(q,{id:Y,sessionId:z});if($3.debug("POST /documents/%s/edit-state session=%s success=%s",Y,z,c.success),!c.success)return K.status(409).json(c);K.json(c)}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/documents/:id/edit-state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;$3.debug("DELETE /documents/%s/edit-state",Y),await v.clearEditState(q,{id:Y}),K.json({success:!0})}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/specialise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{subtype:z,fields:c}=u.body;$3.debug("POST /api/p/%s/documents/%s/specialise - subtype=%s, hasFields=%s",q,Y,z,!!c);let J=(await v.specialiseDocument(q,{id:Y,subtype:z,fields:c})).entity.toJSON();$3.debug("POST /api/p/%s/documents/%s/specialise - Success: subtype=%s",q,Y,J.subtype),K.json(J)}catch(q){$3.debug("POST /api/p/%s/documents/%s/specialise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/generalise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;$3.debug("POST /api/p/%s/documents/%s/generalise",q,Y);let c=(await v.generaliseDocument(q,{id:Y})).entity.toJSON();$3.debug("POST /api/p/%s/documents/%s/generalise - Success: subtype=%s",q,Y,c.subtype),K.json(c)}catch(q){$3.debug("POST /api/p/%s/documents/%s/generalise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/duplicate",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{targetParentId:z,name:c}=u.body;$3.debug("POST /api/p/%s/documents/%s/duplicate - targetParentId=%s, name=%s",q,Y,z,c);let J=(await v.duplicateDocument(q,{sourceId:Y,targetParentId:z,newName:c})).entity;$3.debug("POST /api/p/%s/documents/%s/duplicate - Success: newId=%s, path=%s",q,Y,J.getObjectId(),J.getPath()),K.status(201).json({id:J.getObjectId(),path:J.getPath(),name:J.getName()})}catch(q){$3.debug("POST /api/p/%s/documents/%s/duplicate - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},z28=Object.freeze({create:jG1});w1();import c28 from"crypto";var J5=W8.create({namespace:"caw:api:export"}),VG1=(_,{core:v})=>{return _.get("/api/p/:projectId/exports",async(u,K)=>{try{let{projectId:q}=u.params;J5.debug("GET /api/p/%s/exports - Listing export files",q);let Y=await v.listExports(q);J5.debug("GET /api/p/%s/exports - Found %d export files",q,Y.length),K.json({exports:Y})}catch(q){J5.debug("GET /api/p/:projectId/exports - Error: %s",q.message),m8(q,K)}}),_.get("/api/p/:projectId/export/preview",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y}=u.query;J5.debug("GET /api/p/%s/export/preview - Previewing export: store=%s",q,Y);let z=await v.exportPreview(q,{store:Y});J5.debug("GET /api/p/%s/export/preview - Preview complete: %d to export, %d draft-only",q,(z.toExport?.folders?.length||0)+(z.toExport?.documents?.length||0)+(z.toExport?.templates?.length||0)+(z.toExport?.stories?.length||0)+(z.toExport?.storyFolders?.length||0)+(z.toExport?.storyDocuments?.length||0)+(z.toExport?.jobs?.length||0)+(z.toExport?.jobDocuments?.length||0)+(z.toExport?.tracks?.length||0),(z.draftOnly?.documents?.length||0)+(z.draftOnly?.templates?.length||0)+(z.draftOnly?.storyDocuments?.length||0)+(z.draftOnly?.jobDocuments?.length||0)),K.json(z)}catch(q){J5.debug("GET /api/p/:projectId/export/preview - Error: %s",q.message),m8(q,K)}}),_.post("/api/p/:projectId/export",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,confirm:z,operationId:c}=u.body;if(J5.debug("POST /api/p/%s/export - Export request: store=%s, confirm=%s",q,Y,z),!z){let Z=await v.exportDocuments(q,{store:Y,confirm:!1});return J5.debug("POST /api/p/%s/export - Preview returned (confirm=false)",q),K.json(Z)}let w=c||c28.randomUUID(),J=await v.getOperationProgressObservable(q),W=(Z)=>{try{J.notify("exportProgress",{operationId:w,...Z})}catch(i){}};J.notify("exportStarted",{operationId:w});let O;try{O=await v.exportDocuments(q,{store:Y,confirm:!0,onProgress:W}),J.notify("exportCompleted",{operationId:w})}catch(Z){throw J.notify("exportCompleted",{operationId:w,error:!0}),Z}J5.debug("POST /api/p/%s/export - Export complete: %s",q,O.filename),K.json(O)}catch(q){J5.debug("POST /api/p/:projectId/export - Error: %s",q.message),m8(q,K)}}),_.post("/api/p/:projectId/import",async(u,K)=>{try{let{projectId:q}=u.params,{filename:Y,store:z,operationId:c}=u.body;J5.debug("POST /api/p/%s/import - Import request: filename=%s, store=%s",q,Y,z);let w=c||c28.randomUUID(),J=await v.getOperationProgressObservable(q),W=(Z)=>{try{J.notify("importProgress",{operationId:w,...Z})}catch(i){}};J.notify("importStarted",{operationId:w});let O;try{O=await v.importDocuments(q,{filename:Y,store:z,onProgress:W}),J.notify("importCompleted",{operationId:w})}catch(Z){throw J.notify("importCompleted",{operationId:w,error:!0}),Z}J5.debug("POST /api/p/%s/import - Import complete: %d folders, %d templateFolders, %d storyFolders, %d documents, %d storyDocuments, %d jobDocuments, %d templates, %d stories, %d jobs",q,O.counts?.folders||0,O.counts?.templateFolders||0,O.counts?.storyFolders||0,O.counts?.documents||0,O.counts?.storyDocuments||0,O.counts?.jobDocuments||0,O.counts?.templates||0,O.counts?.stories||0,O.counts?.jobs||0),K.json(O)}catch(q){J5.debug("POST /api/p/:projectId/import - Error: %s",q.message),m8(q,K)}}),Object.freeze({})},w28=Object.freeze({create:VG1});w1();import J28 from"crypto";var W5=W8.create({namespace:"caw:api:export"}),nG1=(_,{core:v})=>{return _.get("/api/shared/exports",async(u,K)=>{try{W5.debug("GET /api/shared/exports - Listing shared store export files");let q=await v.listGlobalExports();W5.debug("GET /api/shared/exports - Found %d export files",q.length),K.json({exports:q})}catch(q){W5.debug("GET /api/shared/exports - Error: %s",q.message),m8(q,K)}}),_.get("/api/shared/export/preview",async(u,K)=>{try{W5.debug("GET /api/shared/export/preview - Previewing shared store export");let q=await v.globalExportPreview();W5.debug("GET /api/shared/export/preview - Preview complete: %d to export, %d draft-only",(q.toExport?.folders?.length||0)+(q.toExport?.documents?.length||0)+(q.toExport?.templates?.length||0),(q.draftOnly?.documents?.length||0)+(q.draftOnly?.templates?.length||0)),K.json(q)}catch(q){W5.debug("GET /api/shared/export/preview - Error: %s",q.message),m8(q,K)}}),_.post("/api/shared/export",async(u,K)=>{try{let{confirm:q,operationId:Y}=u.body;if(W5.debug("POST /api/shared/export - Export request: confirm=%s",q),!q){let W=await v.globalExportDocuments({confirm:!1});return W5.debug("POST /api/shared/export - Preview returned (confirm=false)"),K.json(W)}let z=Y||J28.randomUUID(),c=v.getServerObservable(),w=(W)=>{try{c.notify("exportProgress",{operationId:z,...W})}catch(O){}};c.notify("exportStarted",{operationId:z});let J;try{J=await v.globalExportDocuments({confirm:!0,onProgress:w}),c.notify("exportCompleted",{operationId:z})}catch(W){throw c.notify("exportCompleted",{operationId:z,error:!0}),W}W5.debug("POST /api/shared/export - Export complete: %s",J.filename),K.json(J)}catch(q){W5.debug("POST /api/shared/export - Error: %s",q.message),m8(q,K)}}),_.post("/api/shared/import",async(u,K)=>{try{let{filename:q,operationId:Y}=u.body;W5.debug("POST /api/shared/import - Import request: filename=%s",q);let z=Y||J28.randomUUID(),c=v.getServerObservable(),w=(W)=>{try{c.notify("importProgress",{operationId:z,...W})}catch(O){}};c.notify("importStarted",{operationId:z});let J;try{J=await v.globalImportDocuments({filename:q,onProgress:w}),c.notify("importCompleted",{operationId:z})}catch(W){throw c.notify("importCompleted",{operationId:z,error:!0}),W}W5.debug("POST /api/shared/import - Import complete: %d folders, %d templateFolders, %d storyFolders, %d documents, %d storyDocuments, %d jobDocuments, %d templates, %d stories, %d jobs",J.counts?.folders||0,J.counts?.templateFolders||0,J.counts?.storyFolders||0,J.counts?.documents||0,J.counts?.storyDocuments||0,J.counts?.jobDocuments||0,J.counts?.templates||0,J.counts?.stories||0,J.counts?.jobs||0),K.json(J)}catch(q){W5.debug("POST /api/shared/import - Error: %s",q.message),m8(q,K)}}),Object.freeze({})},W28=Object.freeze({create:nG1});w1();var o7=W8.create({namespace:"caw:api:shared-tracks"}),MG1=(_,{core:v})=>{return _.get("/api/shared/tracks",async(u,K)=>{try{o7.debug("GET /api/shared/tracks - Listing shared tracks");let q=await v.listSharedTracks();o7.debug("GET /api/shared/tracks - Found %d tracks",q.length),K.json(q)}catch(q){o7.debug("GET /api/shared/tracks - Error: %s",q.message),m8(q,K)}}),_.post("/api/shared/tracks",async(u,K)=>{try{let{name:q,states:Y}=u.body;if(!q)return K.status(400).json({error:"Name is required",code:"MISSING_NAME"});if(!Y||!Array.isArray(Y)||Y.length===0)return K.status(400).json({error:"States array is required",code:"EMPTY_STATES"});o7.debug("POST /api/shared/tracks - Creating track: name=%s, states=%j",q,Y);let z=await v.createSharedTrack({name:q,states:Y});K.status(201).json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){o7.debug("POST /api/shared/tracks - Error: %s",q.message),m8(q,K)}}),_.get("/api/shared/tracks/:id",async(u,K)=>{try{let{id:q}=u.params;o7.debug("GET /api/shared/tracks/%s - Getting track",q);let Y=await v.getSharedTrack({id:q});if(!Y)return K.status(404).json({error:"Track not found",code:"NOT_FOUND"});K.json({...Y.toJSON(),storeCode:W1.extractStoreCode(Y.getObjectId())})}catch(q){o7.debug("GET /api/shared/tracks/%s - Error: %s",u.params.id,q.message),m8(q,K)}}),_.put("/api/shared/tracks/:id",async(u,K)=>{try{let{id:q}=u.params,{name:Y,states:z,renames:c}=u.body;if(!Y&&!z)return K.status(400).json({error:"At least one of name or states is required",code:"MISSING_UPDATE_DATA"});if(z&&(!Array.isArray(z)||z.length===0))return K.status(400).json({error:"States must be a non-empty array",code:"EMPTY_STATES"});o7.debug("PUT /api/shared/tracks/%s - Updating track: name=%s, states=%j, renames=%j",q,Y,z,c);let w=await v.updateSharedTrack({id:q,name:Y,states:z,renames:c});K.json({...w.toJSON(),storeCode:W1.extractStoreCode(w.getObjectId())})}catch(q){o7.debug("PUT /api/shared/tracks/%s - Error: %s",u.params.id,q.message),m8(q,K)}}),_.delete("/api/shared/tracks/:id",async(u,K)=>{try{let{id:q}=u.params;o7.debug("DELETE /api/shared/tracks/%s - Deleting track",q);let Y=await v.deleteSharedTrack({id:q});K.json({...Y,storeCode:W1.extractStoreCode(q)})}catch(q){o7.debug("DELETE /api/shared/tracks/%s - Error: %s",u.params.id,q.message),m8(q,K)}}),Object.freeze({})},O28=Object.freeze({create:MG1});w1();var a3=W8.create({namespace:"caw:api:stories"}),xG1=(_,{core:v})=>{return _.post("/api/p/:projectId/stories",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y,store:z="A",state:c,track:w,phase:J}=u.body;a3.debug("POST /api/p/%s/stories - Creating story: name=%s, store=%s, state=%s, track=%s, phase=%s",q,Y,z,c,w,J);let{story:W,tasksFolder:O}=await v.createStory(q,{name:Y,store:z,state:c,track:w,phase:J}),Z=W1.extractStoreCode(W.getObjectId());K.status(201).json({...W.toJSON(),storeCode:Z,tasksFolder:O.toJSON()})}catch(q){a3.debug("POST /api/p/%s/stories - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/stories",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",state:z,phase:c,track:w,flag:J,sort_by:W,sort_dir:O,limit:Z,offset:i}=u.query;a3.debug("GET /api/p/%s/stories - Listing stories: store=%s",q,Y);let H=await v.listStories(q,{store:Y,state:z,phase:c,track:w,flag:J,sortBy:W,sortDir:O,limit:Z!==void 0?parseInt(Z,10):void 0,offset:i!==void 0?parseInt(i,10):void 0});K.json({stories:H.stories.map((X)=>({...X.toJSON(),storeCode:W1.extractStoreCode(X.getObjectId())})),total:H.total,limit:H.limit,offset:H.offset})}catch(q){a3.debug("GET /api/p/%s/stories - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/stories/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;a3.debug("GET /api/p/%s/stories/%s - Getting story",q,Y);let z=await v.getStory(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){a3.debug("GET /api/p/%s/stories/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/stories/:id/state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{state:z}=u.body;if(!z)return K.status(400).json({error:"State is required",code:"MISSING_STATE"});a3.debug("PATCH /api/p/%s/stories/%s/state - Updating state to: %s",q,Y,z);let c=await v.updateStoryState(q,{id:Y,state:z});K.json({...c.toJSON(),storeCode:W1.extractStoreCode(c.getObjectId())})}catch(q){a3.debug("PATCH /api/p/%s/stories/%s/state - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/stories/:id/track",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{track:z,targetState:c}=u.body;if(!z)return K.status(400).json({error:"Track is required",code:"MISSING_TRACK"});a3.debug("PATCH /api/p/%s/stories/%s/track - Changing track to: %s",q,Y,z);let w=await v.changeTrack(q,{id:Y,track:z,targetState:c});K.json({...w.toJSON(),storeCode:W1.extractStoreCode(w.getObjectId())})}catch(q){a3.debug("PATCH /api/p/%s/stories/%s/track - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/stories/:id/name",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z}=u.body;if(!z)return K.status(400).json({error:"Name is required",code:"MISSING_NAME"});a3.debug("PATCH /api/p/%s/stories/%s/name - Renaming to: %s",q,Y,z);let c=await v.renameStory(q,{id:Y,name:z});K.json({...c.toJSON(),storeCode:W1.extractStoreCode(c.getObjectId())})}catch(q){a3.debug("PATCH /api/p/%s/stories/%s/name - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.put("/api/p/:projectId/stories/reorder",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",storyId:z,afterId:c=null}=u.body;if(!z)return K.status(400).json({error:"storyId is required",code:"MISSING_STORY_ID"});if(z.length<3||z[1]!=="s")return K.status(400).json({error:`Entity ${z} is not a story`,code:"INVALID_ENTITY_TYPE"});a3.debug("PUT /api/p/%s/stories/reorder - storyId=%s, afterId=%s",q,z,c),await v.reorderSingle(q,{store:Y,storyId:z,afterId:c}),K.json({ok:!0})}catch(q){a3.debug("PUT /api/p/%s/stories/reorder - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/stories/reorder-bulk",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",phase:z,orderedIds:c}=u.body;if(c===void 0||c===null)return K.status(400).json({error:"orderedIds is required",code:"MISSING_ORDERED_IDS"});if(!Array.isArray(c))return K.status(400).json({error:"orderedIds must be an array",code:"INVALID_ORDERED_IDS"});if(!z)return K.status(400).json({error:"phase is required",code:"MISSING_PHASE"});a3.debug("PUT /api/p/%s/stories/reorder-bulk - phase=%s, orderedIds=%d items",q,z,c.length),await v.reorderStories(q,{store:Y,phase:z,orderedIds:c}),K.json({ok:!0})}catch(q){a3.debug("PUT /api/p/%s/stories/reorder-bulk - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/stories/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;a3.debug("DELETE /api/p/%s/stories/%s - Deleting story",q,Y);let z=await v.deleteStory(q,{id:Y});K.json({...z,storeCode:W1.extractStoreCode(z.id)})}catch(q){a3.debug("DELETE /api/p/%s/stories/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},Z28=Object.freeze({create:xG1});w1();var XK=W8.create({namespace:"caw:api:tracks"}),NG1=(_,{core:v})=>{return _.get("/api/p/:projectId/tracks",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A"}=u.query;XK.debug("GET /api/p/%s/tracks - Listing tracks: store=%s",q,Y);let z=await v.listTracks(q,{store:Y});K.json(z)}catch(q){XK.debug("GET /api/p/%s/tracks - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/tracks",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y,states:z,store:c="A"}=u.body;if(!Y)return K.status(400).json({error:"Name is required",code:"MISSING_NAME"});if(!z||!Array.isArray(z)||z.length===0)return K.status(400).json({error:"States array is required",code:"EMPTY_STATES"});XK.debug("POST /api/p/%s/tracks - Creating track: name=%s, states=%j, store=%s",q,Y,z,c);let w=await v.createTrack(q,{name:Y,states:z,store:c});K.status(201).json({...w.toJSON(),storeCode:W1.extractStoreCode(w.getObjectId())})}catch(q){XK.debug("POST /api/p/%s/tracks - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/tracks/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;XK.debug("GET /api/p/%s/tracks/%s - Getting track",q,Y);let z=await v.getTrack(q,{id:Y});if(!z)return K.status(404).json({error:"Track not found",code:"NOT_FOUND"});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){XK.debug("GET /api/p/%s/tracks/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.put("/api/p/:projectId/tracks/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z,states:c,renames:w}=u.body;if(!z&&!c)return K.status(400).json({error:"At least one of name or states is required",code:"MISSING_UPDATE_DATA"});if(c&&(!Array.isArray(c)||c.length===0))return K.status(400).json({error:"States must be a non-empty array",code:"EMPTY_STATES"});XK.debug("PUT /api/p/%s/tracks/%s - Updating track: name=%s, states=%j, renames=%j",q,Y,z,c,w);let J=await v.updateTrack(q,{id:Y,name:z,states:c,renames:w});K.json({...J.toJSON(),storeCode:W1.extractStoreCode(J.getObjectId())})}catch(q){XK.debug("PUT /api/p/%s/tracks/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/tracks/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;XK.debug("DELETE /api/p/%s/tracks/%s - Deleting track",q,Y);let z=await v.deleteTrack(q,{id:Y});K.json({...z,storeCode:W1.extractStoreCode(Y)})}catch(q){XK.debug("DELETE /api/p/%s/tracks/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},i28=Object.freeze({create:NG1});w1();var Cv=W8.create({namespace:"caw:api:settings"}),kG1=(_,{core:v})=>{return _.get("/api/p/:projectId/settings/system",async(u,K)=>{try{let{projectId:q}=u.params;Cv.debug("GET /api/p/%s/settings/system",q);let Y=await v.getSystemSettings(q);K.json(Y)}catch(q){Cv.debug("GET /api/p/%s/settings/system - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/settings/system",async(u,K)=>{try{let{projectId:q}=u.params,Y=u.body??{};Cv.debug("PUT /api/p/%s/settings/system",q);let z=await v.updateSystemSettings(q,{settings:Y});K.json(z)}catch(q){Cv.debug("PUT /api/p/%s/settings/system - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/settings/rag-defaults/affected-count",async(u,K)=>{try{let{projectId:q}=u.params,{typeCode:Y,subtype:z,targetValue:c,storeCode:w="A"}=u.query;if(Cv.debug("GET /api/p/%s/settings/rag-defaults/affected-count",q),!Y||!c)return K.status(400).json({error:"typeCode and targetValue are required",code:"MISSING_REQUIRED_PARAM"});let J=await v.getAffectedEntityCount(q,{typeCode:Y,subtype:z??null,targetValue:c},w);K.json(J)}catch(q){Cv.debug("GET /api/p/%s/settings/rag-defaults/affected-count - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/settings/rag-defaults",async(u,K)=>{try{let{projectId:q}=u.params,{storeCode:Y="A"}=u.query;Cv.debug("GET /api/p/%s/settings/rag-defaults",q);let z=await v.getRagIndexedDefaults(q,Y);K.json(z)}catch(q){Cv.debug("GET /api/p/%s/settings/rag-defaults - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/settings/rag-defaults",async(u,K)=>{try{let{projectId:q}=u.params,{storeCode:Y="A"}=u.query,{defaults:z={},applyToExisting:c=[]}=u.body??{};Cv.debug("PUT /api/p/%s/settings/rag-defaults",q);let w=await v.updateRagIndexedDefaults(q,{defaults:z,applyToExisting:c},Y);K.json(w)}catch(q){Cv.debug("PUT /api/p/%s/settings/rag-defaults - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/settings/rag-defaults/affected-count",async(u,K)=>{try{let{typeCode:q,subtype:Y,targetValue:z}=u.query;if(Cv.debug("GET /api/settings/rag-defaults/affected-count (Store B)"),!q||!z)return K.status(400).json({error:"typeCode and targetValue are required",code:"MISSING_REQUIRED_PARAM"});let c=await v.getAffectedEntityCount(null,{typeCode:q,subtype:Y??null,targetValue:z},"B");K.json(c)}catch(q){Cv.debug("GET /api/settings/rag-defaults/affected-count (Store B) - Error: %s",q.message),m8(q,K)}}),_.get("/api/settings/rag-defaults",async(u,K)=>{try{Cv.debug("GET /api/settings/rag-defaults (Store B)");let q=await v.getRagIndexedDefaults(null,"B");K.json(q)}catch(q){Cv.debug("GET /api/settings/rag-defaults (Store B) - Error: %s",q.message),m8(q,K)}}),_.put("/api/settings/rag-defaults",async(u,K)=>{try{let{defaults:q={},applyToExisting:Y=[]}=u.body??{};Cv.debug("PUT /api/settings/rag-defaults (Store B)");let z=await v.updateRagIndexedDefaults(null,{defaults:q,applyToExisting:Y},"B");K.json(z)}catch(q){Cv.debug("PUT /api/settings/rag-defaults (Store B) - Error: %s",q.message),m8(q,K)}}),Object.freeze({})},H28=Object.freeze({create:kG1});w1();var hR=g_(l18(),1);var Y7=W8.create({namespace:"caw:api:assets"}),y18=["image/png","image/jpeg","image/gif","image/webp"],gP1=hR.default({storage:hR.default.memoryStorage(),limits:{fileSize:10485760},fileFilter:(_,v,u)=>{if(y18.includes(v.mimetype))u(null,!0);else u(Error(`Unsupported MIME type: ${v.mimetype}. Allowed: ${y18.join(", ")}`))}}),SP1=(_,{core:v})=>{return _.post("/api/p/:projectId/assets",gP1.single("file"),async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A"}=u.query,z=u.file;if(!z)return K.status(400).json({error:"No file uploaded",code:"MISSING_FILE"});let c=u.body.widthPx?parseInt(u.body.widthPx,10):void 0,w=u.body.heightPx?parseInt(u.body.heightPx,10):void 0,J=u.body.displayWidth?parseInt(u.body.displayWidth,10):void 0,W=u.body.displayHeight?parseInt(u.body.displayHeight,10):void 0;Y7.debug("POST /api/p/%s/assets - Uploading: %s (%s, %d bytes)",q,z.originalname,z.mimetype,z.size);let O=await v.createAsset(q,{store:Y,buffer:z.buffer,mimeType:z.mimetype,originalFilename:z.originalname,widthPx:c,heightPx:w,displayWidth:J,displayHeight:W});K.status(201).json(O)}catch(q){Y7.debug("POST /api/p/%s/assets - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets/:id/binary",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;Y7.debug("GET /api/p/%s/assets/%s/binary - Retrieving binary",q,Y);let z=await v.readAssetBinary(q,{id:Y});K.set("Content-Type",z.mimeType),K.set("Content-Length",z.sizeBytes),K.set("Cache-Control","public, max-age=31536000, immutable"),K.set("Content-Disposition",`inline; filename="${z.originalFilename}"`),K.send(z.buffer)}catch(q){Y7.debug("GET /api/p/%s/assets/%s/binary - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets/:id/references",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{exclude:z}=u.query;if(Y7.debug("GET /api/p/%s/assets/%s/references - Getting references",q,Y),!/^[A-Z]a\d+$/.test(Y))return K.status(400).json({error:`Invalid asset ID format: ${Y}`,code:"INVALID_ID"});let c=await v.getAssetReferences(q,{id:Y,excludeDocumentId:z});K.json({references:c})}catch(q){Y7.debug("GET /api/p/%s/assets/%s/references - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;Y7.debug("GET /api/p/%s/assets/%s - Retrieving metadata",q,Y);let z=await v.readAsset(q,{id:Y});K.json(z)}catch(q){Y7.debug("GET /api/p/%s/assets/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A"}=u.query;Y7.debug("GET /api/p/%s/assets - Listing assets for store %s",q,Y);let z=await v.listAssets(q,{store:Y});K.json(z)}catch(q){Y7.debug("GET /api/p/%s/assets - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/assets/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;Y7.debug("DELETE /api/p/%s/assets/%s - Deleting asset",q,Y);let z=await v.deleteAsset(q,{id:Y});K.json(z)}catch(q){Y7.debug("DELETE /api/p/%s/assets/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.use("/api/p/:projectId/assets",(u,K,q,Y)=>{if(u instanceof hR.default.MulterError){if(u.code==="LIMIT_FILE_SIZE")return q.status(400).json({error:"File too large. Maximum size is 10MB.",code:"FILE_TOO_LARGE"});return q.status(400).json({error:u.message,code:"UPLOAD_ERROR"})}if(u.message&&u.message.includes("Unsupported MIME type"))return q.status(400).json({error:u.message,code:"UNSUPPORTED_MIME_TYPE"});Y(u)}),Object.freeze({})},B18=Object.freeze({create:SP1});w1();var b3=W8.create({namespace:"caw:api:jobs"}),aP1=(_,{core:v})=>{return _.post("/api/p/:projectId/jobs",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y,agent:z,model:c,effortLevel:w,prompt:J,promptDocumentId:W,store:O="A",workingDirectory:Z,objectId:i,dockerImage:H,skipPermissions:X,clearStoryFlag:p,clearStatusMessage:G,parentJobId:P,blocking:f,resumePromptRef:T}=u.body;b3.debug("POST /api/p/%s/jobs - Creating job: agent=%s, model=%s, effortLevel=%s, store=%s, workingDirectory=%s, objectId=%s, skipPermissions=%s, dockerImage=%s, clearStoryFlag=%s, clearStatusMessage=%s, parentJobId=%s, blocking=%s",q,z,c,w||"default",O,Z||"default",i||"none",X,H||"none",p,G,P||"none",f);let j=await v.createJob(q,{name:Y,agent:z,model:c,effortLevel:w,prompt:J,promptDocumentId:W,store:O,workingDirectory:Z,objectId:i,dockerImage:H,skipPermissions:X,clearStoryFlag:p,clearStatusMessage:G,parentJobId:P,blocking:f,resumePromptRef:T});K.status(201).json({...j.toJSON(),storeCode:W1.extractStoreCode(j.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/jobs",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",status:z,completedAfter:c,completedBefore:w,sortBy:J,sortDir:W,limit:O,offset:Z,treeMode:i,objectId:H,pinned:X}=u.query,p=z?z.split(",").map((k)=>k.trim()).filter(Boolean):void 0,G=O!==void 0?parseInt(O,10):50,P=Z!==void 0?parseInt(Z,10):0,f=i==="true"?!0:i==="false"?!1:void 0,T=X==="true"?"true":void 0;b3.debug("GET /api/p/%s/jobs - Listing jobs: store=%s, status=%s, sortBy=%s, sortDir=%s, limit=%d, offset=%d, treeMode=%s",q,Y,z||"all",J||"startedAt",W||"desc",G,P,i||"false");let j=await v.listJobs(q,{store:Y,status:p,completedAfter:c,completedBefore:w,sortBy:J,sortDir:W,limit:G,offset:P,treeMode:f,objectId:H||void 0,pinned:T});K.json({jobs:j.jobs.map((k)=>({...k.toJSON(),storeCode:W1.extractStoreCode(k.getObjectId())})),total:j.total,limit:j.limit,offset:j.offset})}catch(q){b3.debug("GET /api/p/%s/jobs - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/jobs/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("GET /api/p/%s/jobs/%s - Getting job",q,Y);let z=await v.getJob(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("GET /api/p/%s/jobs/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/continue",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{prompt:z,promptDocumentId:c,model:w,effortLevel:J,workingDirectory:W,dockerImage:O,skipPermissions:Z}=u.body;b3.debug("POST /api/p/%s/jobs/%s/continue - Continuing job (effortLevel=%s, workingDirectory=%s, dockerImage=%s, skipPermissions=%s)",q,Y,J||"carry-forward",W,O,Z);let i=await v.continueJob(q,{id:Y,prompt:z,promptDocumentId:c,model:w,effortLevel:J,workingDirectory:W,dockerImage:O,skipPermissions:Z});K.json({...i.toJSON(),storeCode:W1.extractStoreCode(i.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/continue - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/resume",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("POST /api/p/%s/jobs/%s/resume - Resuming job",q,Y);let z=await v.resumeJob(q,Y);K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/resume - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/cancel-resume",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("POST /api/p/%s/jobs/%s/cancel-resume - Cancelling resume",q,Y);let z=await v.cancelJobResume(q,Y);K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/cancel-resume - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/stop",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("POST /api/p/%s/jobs/%s/stop - Stopping job",q,Y);let z=await v.stopJob(q,{id:Y});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/stop - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/jobs/:id/process-status",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("GET /api/p/%s/jobs/%s/process-status",q,Y);let z=await v.getProcessStatus(q,{id:Y});K.json(z)}catch(q){b3.debug("GET /api/p/%s/jobs/%s/process-status - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/jobs/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z}=u.body;b3.debug("PATCH /api/p/%s/jobs/%s - Renaming job",q,Y);let c=await v.renameJob(q,{id:Y,name:z});K.json({...c.toJSON(),storeCode:W1.extractStoreCode(c.getObjectId())})}catch(q){b3.debug("PATCH /api/p/%s/jobs/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},U18=Object.freeze({create:aP1});w1();var Ti=W8.create({namespace:"caw:api:worktrees"}),bP1=(_,{core:v})=>{return _.get("/api/p/:projectId/worktrees",async(u,K)=>{try{let{projectId:q}=u.params;Ti.debug("GET /api/p/%s/worktrees - Listing worktrees",q);let Y=await v.listWorktrees(q);Ti.debug("GET /api/p/%s/worktrees - Found %d worktrees, isGitProject=%s",q,Y.worktrees.length,Y.isGitProject),K.json(Y)}catch(q){Ti.debug("GET /api/p/%s/worktrees - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/worktrees",async(u,K)=>{try{let{projectId:q}=u.params,{branch:Y,baseBranch:z}=u.body;Ti.debug("POST /api/p/%s/worktrees - Creating worktree: branch=%s, baseBranch=%s",q,Y,z||"default");let c=await v.createWorktree(q,{branch:Y,baseBranch:z});Ti.debug("POST /api/p/%s/worktrees - Created worktree at %s for branch %s",q,c.path,c.branch),K.status(201).json(c)}catch(q){Ti.debug("POST /api/p/%s/worktrees - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},F18=Object.freeze({create:bP1});w1();var P22=W8.create({namespace:"caw:api:search"}),IP1=(_,{core:v})=>{return _.get("/api/p/:projectId/search",async(u,K)=>{try{let{projectId:q}=u.params,{q:Y,store:z,limit:c,offset:w}=u.query,J=c?parseInt(c,10):20,W=w?parseInt(w,10):0,O=c?parseInt(c,10):void 0,Z=w?parseInt(w,10):void 0;P22.debug("GET /api/p/%s/search - q=%s, store=%s, limit=%s, offset=%s",q,Y,z,c,w);let{results:i,total:H,debug:X,embeddingStatus:p}=await v.searchContent(q,{query:Y,limit:O,offset:Z,store:z});P22.debug("GET /api/p/%s/search - Results count: %d, total: %d",q,i.length,H),K.json({hits:i,total:H,limit:J,offset:W,debug:X,embeddingStatus:p})}catch(q){P22.debug("GET /api/p/%s/search - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},Q18=Object.freeze({create:IP1});w1();var z7=W8.create({namespace:"caw:api:embedding"}),lP1=(_,{core:v})=>{return _.post("/api/p/:projectId/embeddings/reindex",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y}=u.query;z7.debug("POST /api/p/%s/embeddings/reindex store=%s",q,Y);let z=await v.reindexEmbeddings(q,{store:Y});z7.debug("POST /api/p/%s/embeddings/reindex - enqueued: %d, operationId: %s",q,z.enqueued,z.operationId),K.json(z)}catch(q){z7.debug("POST /api/p/%s/embeddings/reindex - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/embeddings/status",async(u,K)=>{try{let{projectId:q}=u.params,Y=u.query.store??"A";z7.debug("GET /api/p/%s/embeddings/status store=%s",q,Y);let z=await v.getEmbeddingStatus(q,{store:Y});z7.debug("GET /api/p/%s/embeddings/status - status: %s",q,z.status),K.json(z)}catch(q){z7.debug("GET /api/p/%s/embeddings/status - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/embeddings/process-batch",async(u,K)=>{try{let{projectId:q}=u.params;z7.debug("POST /api/p/%s/embeddings/process-batch",q);let Y=await v.processEmbeddingBatch(q);z7.debug("POST /api/p/%s/embeddings/process-batch - triggered: %s",q,Y.triggered),K.json(Y)}catch(q){z7.debug("POST /api/p/%s/embeddings/process-batch - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/embeddings/clear-error",async(u,K)=>{try{let{projectId:q}=u.params,Y=u.query.store??"A";z7.debug("POST /api/p/%s/embeddings/clear-error store=%s",q,Y);let z=await v.clearEmbeddingError(q,{store:Y});z7.debug("POST /api/p/%s/embeddings/clear-error - status: %s",q,z.status),K.json(z)}catch(q){z7.debug("POST /api/p/%s/embeddings/clear-error - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},o18=Object.freeze({create:lP1});w1();var kz=W8.create({namespace:"caw:api:deleted-items"}),yP1=(_,{core:v})=>{return _.get("/api/p/:projectId/deleted-events",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,limit:z,offset:c}=u.query,w=z?parseInt(z,10):50,J=c?parseInt(c,10):0;kz.debug("GET /api/p/%s/deleted-events",q);let W=await v.listDeletedEvents(q,{store:Y??"A",limit:w,offset:J});kz.debug("GET /api/p/%s/deleted-events - Found %d events",q,W.total),K.json({events:W.events,total:W.total,limit:w,offset:J})}catch(q){kz.debug("GET /api/p/%s/deleted-events - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/deleted-events/:rootEntityId/items",async(u,K)=>{try{let{projectId:q,rootEntityId:Y}=u.params,{store:z,limit:c,offset:w}=u.query,J=c?parseInt(c,10):50,W=w?parseInt(w,10):0;kz.debug("GET /api/p/%s/deleted-events/%s/items",q,Y);let O=await v.getDeletedEvent(q,{rootEntityId:Y,store:z??"A",limit:J,offset:W});K.json(O)}catch(q){kz.debug("GET /api/p/%s/deleted-events/%s/items - Error: %s",u.params.projectId,u.params.rootEntityId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/deleted-events/:rootEntityId/restore",async(u,K)=>{try{let{projectId:q,rootEntityId:Y}=u.params,{store:z}=u.body??{};kz.debug("POST /api/p/%s/deleted-events/%s/restore",q,Y);let c=await v.restoreDeletedEvent(q,{rootEntityId:Y,store:z??"A"});kz.debug("POST /api/p/%s/deleted-events/%s/restore - Restored: name=%s",q,Y,c.name),K.json(c)}catch(q){kz.debug("POST /api/p/%s/deleted-events restore - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},d18=Object.freeze({create:yP1});w1();var Dz=W8.create({namespace:"caw:api:agents"}),BP1=(_,{core:v})=>{return _.get("/api/p/:projectId/agents/models",async(u,K)=>{try{let{projectId:q}=u.params;Dz.debug("GET /api/p/%s/agents/models",q);let Y=await v.getAgentModelConfig(q);K.json(Y)}catch(q){Dz.debug("GET /api/p/%s/agents/models - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/agents/models/:agent",async(u,K)=>{try{let{projectId:q,agent:Y}=u.params;Dz.debug("GET /api/p/%s/agents/models/%s",q,Y);let z=await v.getAgentModelConfig(q,Y);K.json(z)}catch(q){Dz.debug("GET /api/p/%s/agents/models/%s - Error: %s",u.params.projectId,u.params.agent,q.message),m8(q,K)}}),_.get("/api/p/:projectId/agents/mcp-status",async(u,K)=>{try{let{projectId:q}=u.params;Dz.debug("GET /api/p/%s/agents/mcp-status",q);let Y=await v.getAgentMcpStatus(q);K.json(Y)}catch(q){Dz.debug("GET /api/p/%s/agents/mcp-status - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/agents/models/:agent",async(u,K)=>{try{let{projectId:q,agent:Y}=u.params,{availableModels:z,defaultModel:c,availableEffortLevels:w,defaultEffortLevel:J}=u.body;Dz.debug("PUT /api/p/%s/agents/models/%s",q,Y),await v.updateAgentModelConfig(q,Y,{availableModels:z,defaultModel:c,availableEffortLevels:w,defaultEffortLevel:J});let W=await v.getAgentModelConfig(q,Y);K.json(W)}catch(q){Dz.debug("PUT /api/p/%s/agents/models/%s - Error: %s",u.params.projectId,u.params.agent,q.message),m8(q,K)}}),Object.freeze({})},r18=Object.freeze({create:BP1});w1();var j22=W8.create({namespace:"caw:api:integrations"}),UP1=(_,{core:v})=>{return _.get("/api/integrations",async(u,K)=>{try{j22.debug("GET /api/integrations");let q=await v.getIntegrations();K.json(q)}catch(q){m8(q,K)}}),_.post("/api/integrations/refresh",async(u,K)=>{try{j22.debug("POST /api/integrations/refresh");let q=await v.refreshIntegrations();K.json(q)}catch(q){m8(q,K)}}),_.get("/api/integrations/:name/status",async(u,K)=>{try{let{name:q}=u.params;if(j22.debug("GET /api/integrations/%s/status",q),!Jw.getByName(q))return K.status(404).json({error:`Unknown integration: ${q}`});let Y=await v.checkIntegrationStatus(q);K.json(Y)}catch(q){m8(q,K)}}),Object.freeze({})},s18=Object.freeze({create:UP1});w1();var t18=W8.create({namespace:"caw:api:config"}),FP1=(_,{core:v})=>{return _.get("/api/system/config",async(u,K)=>{try{t18.debug("GET /api/system/config");let q=v.getSystemConfig();K.json(q)}catch(q){m8(q,K)}}),_.post("/api/system/config/pending",async(u,K)=>{try{t18.debug("POST /api/system/config/pending");let q=v.writeSystemPendingConfig(u.body);K.json(q)}catch(q){m8(q,K)}}),Object.freeze({})},e18=Object.freeze({create:FP1});w1();var tq=W8.create({namespace:"caw:api:events"}),QP1=(_,{core:v})=>{return _.get("/api/p/:projectId/events",async(u,K)=>{try{let{projectId:q}=u.params;tq.debug("GET /api/p/%s/events - Client connecting",q);let Y=await v.getRootStore(q),z=await v.getStoryService(q),c=await v.getJobService(q),w=await v.getOperationProgressObservable(q);tq.debug("GET /api/p/%s/events - Got root store and services, setting up SSE subscription",q),K.setHeader("Content-Type","text/event-stream"),K.setHeader("Cache-Control","no-cache"),K.setHeader("Connection","keep-alive"),K.flushHeaders(),K.write(`: connected
1381
+ - `)}`,Error(_8)}let h2=`${c}/$ref`,D2=K$(_,Y8,u,K,q,Y,z,h2,w);if(!D2.valid)R2.push({instanceLocation:z,keyword:"$ref",keywordLocation:h2,error:"A subschema had errors."},...D2.errors);if(u==="4"||u==="7")return{valid:R2.length===0,errors:R2}}if(Array.isArray(H)){let S2=H.length,Y8=!1;for(let h2=0;h2<S2;h2++)if(W===H[h2]||H[h2]==="integer"&&W==="number"&&_%1===0&&_===_){Y8=!0;break}if(!Y8)R2.push({instanceLocation:z,keyword:"type",keywordLocation:`${c}/type`,error:`Instance type "${W}" is invalid. Expected "${H.join('", "')}".`})}else if(H==="integer"){if(W!=="number"||_%1||_!==_)R2.push({instanceLocation:z,keyword:"type",keywordLocation:`${c}/type`,error:`Instance type "${W}" is invalid. Expected "${H}".`})}else if(H!==void 0&&W!==H)R2.push({instanceLocation:z,keyword:"type",keywordLocation:`${c}/type`,error:`Instance type "${W}" is invalid. Expected "${H}".`});if(X!==void 0){if(W==="object"||W==="array"){if(!Wi(_,X))R2.push({instanceLocation:z,keyword:"const",keywordLocation:`${c}/const`,error:`Instance does not match ${JSON.stringify(X)}.`})}else if(_!==X)R2.push({instanceLocation:z,keyword:"const",keywordLocation:`${c}/const`,error:`Instance does not match ${JSON.stringify(X)}.`})}if(p!==void 0){if(W==="object"||W==="array"){if(!p.some((S2)=>Wi(_,S2)))R2.push({instanceLocation:z,keyword:"enum",keywordLocation:`${c}/enum`,error:`Instance does not match any of ${JSON.stringify(p)}.`})}else if(!p.some((S2)=>_===S2))R2.push({instanceLocation:z,keyword:"enum",keywordLocation:`${c}/enum`,error:`Instance does not match any of ${JSON.stringify(p)}.`})}if(P!==void 0){let S2=`${c}/not`;if(K$(_,P,u,K,q,Y,z,S2).valid)R2.push({instanceLocation:z,keyword:"not",keywordLocation:S2,error:'Instance matched "not" schema.'})}let e2=[];if(f!==void 0){let S2=`${c}/anyOf`,Y8=R2.length,h2=!1;for(let D2=0;D2<f.length;D2++){let _8=f[D2],T8=Object.create(w),V8=K$(_,_8,u,K,q,i===!0?Y:null,z,`${S2}/${D2}`,T8);if(R2.push(...V8.errors),h2=h2||V8.valid,V8.valid)e2.push(T8)}if(h2)R2.length=Y8;else R2.splice(Y8,0,{instanceLocation:z,keyword:"anyOf",keywordLocation:S2,error:"Instance does not match any subschemas."})}if(T!==void 0){let S2=`${c}/allOf`,Y8=R2.length,h2=!0;for(let D2=0;D2<T.length;D2++){let _8=T[D2],T8=Object.create(w),V8=K$(_,_8,u,K,q,i===!0?Y:null,z,`${S2}/${D2}`,T8);if(R2.push(...V8.errors),h2=h2&&V8.valid,V8.valid)e2.push(T8)}if(h2)R2.length=Y8;else R2.splice(Y8,0,{instanceLocation:z,keyword:"allOf",keywordLocation:S2,error:"Instance does not match every subschema."})}if(j!==void 0){let S2=`${c}/oneOf`,Y8=R2.length,h2=j.filter((D2,_8)=>{let T8=Object.create(w),V8=K$(_,D2,u,K,q,i===!0?Y:null,z,`${S2}/${_8}`,T8);if(R2.push(...V8.errors),V8.valid)e2.push(T8);return V8.valid}).length;if(h2===1)R2.length=Y8;else R2.splice(Y8,0,{instanceLocation:z,keyword:"oneOf",keywordLocation:S2,error:`Instance does not match exactly one subschema (${h2} matches).`})}if(W==="object"||W==="array")Object.assign(w,...e2);if(k!==void 0){let S2=`${c}/if`;if(K$(_,k,u,K,q,Y,z,S2,w).valid){if(M!==void 0){let h2=K$(_,M,u,K,q,Y,z,`${c}/then`,w);if(!h2.valid)R2.push({instanceLocation:z,keyword:"if",keywordLocation:S2,error:'Instance does not match "then" schema.'},...h2.errors)}}else if(R!==void 0){let h2=K$(_,R,u,K,q,Y,z,`${c}/else`,w);if(!h2.valid)R2.push({instanceLocation:z,keyword:"if",keywordLocation:S2,error:'Instance does not match "else" schema.'},...h2.errors)}}if(W==="object"){if(G!==void 0){for(let D2 of G)if(!(D2 in _))R2.push({instanceLocation:z,keyword:"required",keywordLocation:`${c}/required`,error:`Instance does not have required property "${D2}".`})}let S2=Object.keys(_);if(E!==void 0&&S2.length<E)R2.push({instanceLocation:z,keyword:"minProperties",keywordLocation:`${c}/minProperties`,error:`Instance does not have at least ${E} properties.`});if(o!==void 0&&S2.length>o)R2.push({instanceLocation:z,keyword:"maxProperties",keywordLocation:`${c}/maxProperties`,error:`Instance does not have at least ${o} properties.`});if(U!==void 0){let D2=`${c}/propertyNames`;for(let _8 in _){let T8=`${z}/${w5(_8)}`,V8=K$(_8,U,u,K,q,Y,T8,D2);if(!V8.valid)R2.push({instanceLocation:z,keyword:"propertyNames",keywordLocation:D2,error:`Property name "${_8}" does not match schema.`},...V8.errors)}}if(_2!==void 0){let D2=`${c}/dependantRequired`;for(let _8 in _2)if(_8 in _){let T8=_2[_8];for(let V8 of T8)if(!(V8 in _))R2.push({instanceLocation:z,keyword:"dependentRequired",keywordLocation:D2,error:`Instance has "${_8}" but does not have "${V8}".`})}}if($2!==void 0)for(let D2 in $2){let _8=`${c}/dependentSchemas`;if(D2 in _){let T8=K$(_,$2[D2],u,K,q,Y,z,`${_8}/${w5(D2)}`,w);if(!T8.valid)R2.push({instanceLocation:z,keyword:"dependentSchemas",keywordLocation:_8,error:`Instance has "${D2}" but does not match dependant schema.`},...T8.errors)}}if(K2!==void 0){let D2=`${c}/dependencies`;for(let _8 in K2)if(_8 in _){let T8=K2[_8];if(Array.isArray(T8)){for(let V8 of T8)if(!(V8 in _))R2.push({instanceLocation:z,keyword:"dependencies",keywordLocation:D2,error:`Instance has "${_8}" but does not have "${V8}".`})}else{let V8=K$(_,T8,u,K,q,Y,z,`${D2}/${w5(_8)}`);if(!V8.valid)R2.push({instanceLocation:z,keyword:"dependencies",keywordLocation:D2,error:`Instance has "${_8}" but does not match dependant schema.`},...V8.errors)}}}let Y8=Object.create(null),h2=!1;if(V!==void 0){let D2=`${c}/properties`;for(let _8 in V){if(!(_8 in _))continue;let T8=`${z}/${w5(_8)}`,V8=K$(_[_8],V[_8],u,K,q,Y,T8,`${D2}/${w5(_8)}`);if(V8.valid)w[_8]=Y8[_8]=!0;else if(h2=q,R2.push({instanceLocation:z,keyword:"properties",keywordLocation:D2,error:`Property "${_8}" does not match schema.`},...V8.errors),h2)break}}if(!h2&&D!==void 0){let D2=`${c}/patternProperties`;for(let _8 in D){let T8=new RegExp(_8,"u"),V8=D[_8];for(let o8 in _){if(!T8.test(o8))continue;let S8=`${z}/${w5(o8)}`,q1=K$(_[o8],V8,u,K,q,Y,S8,`${D2}/${w5(_8)}`);if(q1.valid)w[o8]=Y8[o8]=!0;else h2=q,R2.push({instanceLocation:z,keyword:"patternProperties",keywordLocation:D2,error:`Property "${o8}" matches pattern "${_8}" but does not match associated schema.`},...q1.errors)}}}if(!h2&&h!==void 0){let D2=`${c}/additionalProperties`;for(let _8 in _){if(Y8[_8])continue;let T8=`${z}/${w5(_8)}`,V8=K$(_[_8],h,u,K,q,Y,T8,D2);if(V8.valid)w[_8]=!0;else h2=q,R2.push({instanceLocation:z,keyword:"additionalProperties",keywordLocation:D2,error:`Property "${_8}" does not match additional properties schema.`},...V8.errors)}}else if(!h2&&b!==void 0){let D2=`${c}/unevaluatedProperties`;for(let _8 in _)if(!w[_8]){let T8=`${z}/${w5(_8)}`,V8=K$(_[_8],b,u,K,q,Y,T8,D2);if(V8.valid)w[_8]=!0;else R2.push({instanceLocation:z,keyword:"unevaluatedProperties",keywordLocation:D2,error:`Property "${_8}" does not match unevaluated properties schema.`},...V8.errors)}}}else if(W==="array"){if(k8!==void 0&&_.length>k8)R2.push({instanceLocation:z,keyword:"maxItems",keywordLocation:`${c}/maxItems`,error:`Array has too many items (${_.length} > ${k8}).`});if(E2!==void 0&&_.length<E2)R2.push({instanceLocation:z,keyword:"minItems",keywordLocation:`${c}/minItems`,error:`Array has too few items (${_.length} < ${E2}).`});let S2=_.length,Y8=0,h2=!1;if(w2!==void 0){let D2=`${c}/prefixItems`,_8=Math.min(w2.length,S2);for(;Y8<_8;Y8++){let T8=K$(_[Y8],w2[Y8],u,K,q,Y,`${z}/${Y8}`,`${D2}/${Y8}`);if(w[Y8]=!0,!T8.valid){if(h2=q,R2.push({instanceLocation:z,keyword:"prefixItems",keywordLocation:D2,error:"Items did not match schema."},...T8.errors),h2)break}}}if(q2!==void 0){let D2=`${c}/items`;if(Array.isArray(q2)){let _8=Math.min(q2.length,S2);for(;Y8<_8;Y8++){let T8=K$(_[Y8],q2[Y8],u,K,q,Y,`${z}/${Y8}`,`${D2}/${Y8}`);if(w[Y8]=!0,!T8.valid){if(h2=q,R2.push({instanceLocation:z,keyword:"items",keywordLocation:D2,error:"Items did not match schema."},...T8.errors),h2)break}}}else for(;Y8<S2;Y8++){let _8=K$(_[Y8],q2,u,K,q,Y,`${z}/${Y8}`,D2);if(w[Y8]=!0,!_8.valid){if(h2=q,R2.push({instanceLocation:z,keyword:"items",keywordLocation:D2,error:"Items did not match schema."},..._8.errors),h2)break}}if(!h2&&i2!==void 0){let _8=`${c}/additionalItems`;for(;Y8<S2;Y8++){let T8=K$(_[Y8],i2,u,K,q,Y,`${z}/${Y8}`,_8);if(w[Y8]=!0,!T8.valid)h2=q,R2.push({instanceLocation:z,keyword:"additionalItems",keywordLocation:_8,error:"Items did not match additional items schema."},...T8.errors)}}}if(y2!==void 0)if(S2===0&&x2===void 0)R2.push({instanceLocation:z,keyword:"contains",keywordLocation:`${c}/contains`,error:"Array is empty. It must contain at least one item matching the schema."});else if(x2!==void 0&&S2<x2)R2.push({instanceLocation:z,keyword:"minContains",keywordLocation:`${c}/minContains`,error:`Array has less items (${S2}) than minContains (${x2}).`});else{let D2=`${c}/contains`,_8=R2.length,T8=0;for(let V8=0;V8<S2;V8++){let o8=K$(_[V8],y2,u,K,q,Y,`${z}/${V8}`,D2);if(o8.valid)w[V8]=!0,T8++;else R2.push(...o8.errors)}if(T8>=(x2||0))R2.length=_8;if(x2===void 0&&K8===void 0&&T8===0)R2.splice(_8,0,{instanceLocation:z,keyword:"contains",keywordLocation:D2,error:"Array does not contain item matching schema."});else if(x2!==void 0&&T8<x2)R2.push({instanceLocation:z,keyword:"minContains",keywordLocation:`${c}/minContains`,error:`Array must contain at least ${x2} items matching schema. Only ${T8} items were found.`});else if(K8!==void 0&&T8>K8)R2.push({instanceLocation:z,keyword:"maxContains",keywordLocation:`${c}/maxContains`,error:`Array may contain at most ${K8} items matching schema. ${T8} items were found.`})}if(!h2&&f2!==void 0){let D2=`${c}/unevaluatedItems`;for(Y8;Y8<S2;Y8++){if(w[Y8])continue;let _8=K$(_[Y8],f2,u,K,q,Y,`${z}/${Y8}`,D2);if(w[Y8]=!0,!_8.valid)R2.push({instanceLocation:z,keyword:"unevaluatedItems",keywordLocation:D2,error:"Items did not match unevaluated items schema."},..._8.errors)}}if(j8)for(let D2=0;D2<S2;D2++){let _8=_[D2],T8=typeof _8==="object"&&_8!==null;for(let V8=0;V8<S2;V8++){if(D2===V8)continue;let o8=_[V8];if(_8===o8||T8&&(typeof o8==="object"&&o8!==null)&&Wi(_8,o8))R2.push({instanceLocation:z,keyword:"uniqueItems",keywordLocation:`${c}/uniqueItems`,error:`Duplicate items at indexes ${D2} and ${V8}.`}),D2=Number.MAX_SAFE_INTEGER,V8=Number.MAX_SAFE_INTEGER}}}else if(W==="number"){if(u==="4"){if(O8!==void 0&&(U2===!0&&_<=O8||_<O8))R2.push({instanceLocation:z,keyword:"minimum",keywordLocation:`${c}/minimum`,error:`${_} is less than ${U2?"or equal to ":""} ${O8}.`});if(A2!==void 0&&(B===!0&&_>=A2||_>A2))R2.push({instanceLocation:z,keyword:"maximum",keywordLocation:`${c}/maximum`,error:`${_} is greater than ${B?"or equal to ":""} ${A2}.`})}else{if(O8!==void 0&&_<O8)R2.push({instanceLocation:z,keyword:"minimum",keywordLocation:`${c}/minimum`,error:`${_} is less than ${O8}.`});if(A2!==void 0&&_>A2)R2.push({instanceLocation:z,keyword:"maximum",keywordLocation:`${c}/maximum`,error:`${_} is greater than ${A2}.`});if(U2!==void 0&&_<=U2)R2.push({instanceLocation:z,keyword:"exclusiveMinimum",keywordLocation:`${c}/exclusiveMinimum`,error:`${_} is less than ${U2}.`});if(B!==void 0&&_>=B)R2.push({instanceLocation:z,keyword:"exclusiveMaximum",keywordLocation:`${c}/exclusiveMaximum`,error:`${_} is greater than or equal to ${B}.`})}if(O2!==void 0){let S2=_%O2;if(Math.abs(0-S2)>=0.00000011920929&&Math.abs(O2-S2)>=0.00000011920929)R2.push({instanceLocation:z,keyword:"multipleOf",keywordLocation:`${c}/multipleOf`,error:`${_} is not a multiple of ${O2}.`})}}else if(W==="string"){let S2=v2===void 0&&G2===void 0?0:se2(_);if(v2!==void 0&&S2<v2)R2.push({instanceLocation:z,keyword:"minLength",keywordLocation:`${c}/minLength`,error:`String is too short (${S2} < ${v2}).`});if(G2!==void 0&&S2>G2)R2.push({instanceLocation:z,keyword:"maxLength",keywordLocation:`${c}/maxLength`,error:`String is too long (${S2} > ${G2}).`});if(W2!==void 0&&!new RegExp(W2,"u").test(_))R2.push({instanceLocation:z,keyword:"pattern",keywordLocation:`${c}/pattern`,error:"String does not match pattern."});if(n!==void 0&&he[n]&&!he[n](_))R2.push({instanceLocation:z,keyword:"format",keywordLocation:`${c}/format`,error:`String does not match format "${n}".`})}return{valid:R2.length===0,errors:R2}}class Ce{schema;draft;shortCircuit;lookup;constructor(_,v="2019-09",u=!0){this.schema=_,this.draft=v,this.shortCircuit=u,this.lookup=rq(_)}validate(_){return K$(_,this.schema,this.draft,this.lookup,this.shortCircuit)}addSchema(_,v){if(v)_={..._,$id:v};rq(_,this.lookup)}}c6();var iG1=()=>{let _=new Map,v=(q)=>{let Y=JSON.stringify(q),z=_.get(Y);if(!z)z=new Ce(JSON.parse(Y)),_.set(Y,z);return z};return Object.freeze({validate:(q,Y)=>{if(Y===null||Y===void 0)return;let z;try{z=JSON.parse(Y)}catch(J){throw N.validation(`Value is not valid JSON: ${J.message}`,"JSON_PARSE_ERROR")}let w=v(q).validate(z);if(!w.valid){let J=w.errors.map((W)=>`${W.instanceLocation}: ${W.error}`).join("; ");throw N.validation(`JSON Schema validation failed: ${J}`,"JSON_SCHEMA_VALIDATION_ERROR")}},validateSchema:(q)=>{if(q===null||q===void 0||typeof q!=="object"||Array.isArray(q))throw N.validation("jsonSchema must be a plain object","INVALID_JSON_SCHEMA");v(q)}})},te2=Object.freeze({create:iG1});var r_=W8.create({namespace:"caw:core"}),H4=W8.create({namespace:"caw:story-job-tracking"}),XG1=async({envDir:_,databaseFilepath:v,assetsDir:u,lazilyCreateDb:K,kyselyFactory:q,_pipelineFactory:Y,killProcess:z,platform:c,processEnv:w,cawPort:J},W)=>{let Z=await gw2.create({kyselyFactory:q}).getDb(v,K);await Gv.initialize(Z);let i=_?HG1.join(_,"shared-exports"):null,H=aw2.create(),X=S02.create(),p=Ce2.create({db:Z}),G=_?Le2.create({envDir:_}):null,P=G?ye2.create({configService:G,integrationService:p,cawPort:J,processEnv:w}):null,f=Be2.create({integrationService:p,registry:W3}),T=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.clearEditState(Q,{id:s})},j=async(d,s,Q,u2,p2)=>{let N2=kf[u2];if(!N2)throw Error(`No domain mapping for setting: ${u2}`);let u8=await p2.findFolderByName(d,s,Q,N2);if(!u8)throw Error(`Domain folder "${N2}" not found under settings root`);return u8},k=async(d,s,Q,u2,p2)=>{let N2=await j(d,s,Q,u2,p2);return await p2.findSettingByName(d,s,N2.getObjectId(),u2)},M=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`auto-archive-delay: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"auto-archive-delay",Q);if(!p2)throw Error(`auto-archive-delay setting missing for project ${d}`);let N2=p2.entity.getField("delayMs");if(!N2)throw Error(`delayMs field missing from auto-archive-delay setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`delayMs value is not a valid integer for project ${d}`);return u8},R=async()=>{let d=await j2();if(d.length===0)return null;let Q=d[0].objectId,u2=await B(Q),{rootStore:p2}=await v2(u2.projCtx),N2=await p2.readSettingsRootFolder(Z,u2,{storeCode:"A"});if(!N2)throw Error(`disposal-config: no settings root for project ${Q}`);let u8=await k(Z,u2,N2.getObjectId(),"disposal-config",p2);if(!u8)throw Error(`disposal-config setting missing for project ${Q}`);let p8=u8.entity.getField("retentionDays");if(!p8)throw Error(`retentionDays field missing from disposal-config setting for project ${Q}`);let L8=parseInt(p8.getValue(),10);if(isNaN(L8))throw Error(`retentionDays value is not a valid integer for project ${Q}`);return L8},n=async(d,{id:s,count:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.setStoryJobCount(u2,{id:s,count:Q})},V=async(d,{id:s,count:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.setStoryPendingJobCount(u2,{id:s,count:Q})},D=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`job-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"job-config",Q);if(!p2)throw Error(`job-config setting missing for project ${d}`);let N2=p2.entity.getField("maxConcurrentJobs");if(!N2)throw Error(`maxConcurrentJobs field missing from job-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`maxConcurrentJobs value is not a valid integer for project ${d}`);return u8},h=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`job-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"job-config",Q);if(!p2)throw Error(`job-config setting missing for project ${d}`);let N2=p2.entity.getField("maxJobDepth");if(!N2)throw Error(`maxJobDepth field missing from job-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`maxJobDepth value is not a valid integer for project ${d}`);return u8},b=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`resume-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"resume-config",Q);if(!p2)throw Error(`resume-config setting missing for project ${d}`);let N2=p2.entity.getField("defaultResumePromptRef");if(!N2||N2.getValue()==null)return null;return N2.getValue()},E=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`resume-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"resume-config",Q);if(!p2)throw Error(`resume-config setting missing for project ${d}`);let N2=p2.entity.getField("maxResumeAttempts");if(!N2)throw Error(`maxResumeAttempts field missing from resume-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`maxResumeAttempts value is not a valid integer for project ${d}`);return u8},o=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`resume-config: no settings root for project ${d}`);let p2=await k(Z,s,u2.getObjectId(),"resume-config",Q);if(!p2)throw Error(`resume-config setting missing for project ${d}`);let N2=p2.entity.getField("cronIntervalMs");if(!N2)throw Error(`cronIntervalMs field missing from resume-config setting for project ${d}`);let u8=parseInt(N2.getValue(),10);if(isNaN(u8))throw Error(`cronIntervalMs value is not a valid integer for project ${d}`);return u8},U=oe2.create(),_2=te2.create(),$2=ay2.create({db:Z,clearEditState:T}),K2=Rt2.create(),w2=Zq.create(["projectCreated","exportStarted","exportProgress","exportCompleted","importStarted","importProgress","importCompleted"]),i2=(await Z.selectFrom("field_definitions").select("id").where("name","=","ragIndexed").where("store_id","is",null).executeTakeFirstOrThrow()).id,y2=(await Z.selectFrom("field_definitions").select("id").where("name","=","needsIndexing").where("store_id","is",null).executeTakeFirstOrThrow()).id,x2=Y!=null||v!==":memory:",K8=x2?Ne2.create({_pipelineFactory:Y??null,processEnv:w}):null,E2=x2?KR.create({db:Z}):null,k8=x2?Re2.create({db:Z}):null,j8=new Map,O8=(d)=>{for(let[,s]of j8){let Q=s.rootStore,p2=(Q.getChildren?Q.getChildren():[]).find((N2)=>N2.getPk&&N2.getPk()===d);if(p2)return p2}return null},A2=(d)=>{for(let[s,Q]of j8){let u2=Q.rootStore;if((u2.getChildren?u2.getChildren():[]).find((u8)=>u8.getPk&&u8.getPk()===d))return{includeResolver:Q.includeResolver,ctx:{projCtx:s,authCtx:null}}}return null},U2=x2?me2.create({db:Z,embeddingProvider:K8,embeddingOps:E2,resolveStoreObservable:O8,resolveIncludeServices:A2,ragIndexedFieldDefPk:i2,needsIndexingFieldDefPk:y2}):Object.freeze({processBatch:async()=>({processed:0,skipped:!1}),reindexAll:async()=>({operationId:null,enqueued:0,batchPromise:Promise.resolve()}),shutdown:async()=>{},clearEmbeddingError:async()=>{},isBatchProcessing:()=>!1}),B=async(d)=>{if(!d||!/^P\d+$/.test(d))I.factory(!0,N.notFound,`Project not found: ${d}`,"PROJECT_NOT_FOUND");let s=parseInt(d.slice(1),10);I.factory(s<1||s>Number.MAX_SAFE_INTEGER,N.notFound,`Project not found: ${d}`,"PROJECT_NOT_FOUND");let Q=await H.readProjectByObjectId(Z,null,d);return I.factory(!Q,N.notFound,`Project not found: ${d}`,"PROJECT_NOT_FOUND"),{projCtx:Q.getObjectId(),projectPath:Q.getPath(),authCtx:null}},O2=bw.create({projectStore:H,storeStore:X}),v2=async(d)=>{let s=j8.get(d);if(s)return s;let Q=await X.readRootStoreForProject(Z,{},d),u2=Zy.create({store:Q,jsonSchemaValidator:_2}),p2=Wy.create({store:Q,fieldService:u2}),N2=XB.create(),u8=iB.create({store:Q,folderService:p2,documentHooks:N2,fieldService:u2}),p8=GB.create({store:Q,documentService:u8});N2.setIncludeResolver(p8,Q),u8.setIncludeResolver(p8);let L8=async(l1,E6,O6,__)=>{return(await u8.readDocumentByPath(l1,E6,{path:O6,type:"d",storeCode:__}))?.entity.getObjectId()??null};Q.setIncludePathResolver(L8);let T1=We2.create({rootStore:Q,includeResolver:p8,fieldService:u2}),P1=null,R1=async(l1,E6,O6,__,C6)=>{let $_=O6.getObjectId(),U6=await l1.selectFrom("entities as e").innerJoin("obj_ref_fields as orf","orf.entity_id","e.id").innerJoin("field_definitions as fd","fd.id","orf.field_definition_id").innerJoin("entity_content as ec","ec.entity_id","orf.target_entity_id").select(["orf.target_entity_id as versionPk","ec.content_text"]).where("e.object_id","=",$_).where("fd.name","=","latest_published_version").where("fd.is_system","=",1).executeTakeFirst();if(U6?.content_text)await T1.resolveAndUpdateFtsContent(l1,E6,U6.versionPk,U6.content_text,$_);if(await T1.cascadeToIncluders(l1,E6,$_,__,C6),await T1.markNeedsIndexingIfRagEnabled(l1,E6,$_,C6)){let t4=O8?.(__);if(t4)try{t4.notify("fieldValueChanged",{entityType:"r",entityId:t4.getObjectId(),fieldName:"embeddingState",oldValue:"ready",newValue:"ready",storeCode:null,parentFolderId:null})}catch(G7){}}};N2.registerHook("postPublish","d",R1),N2.registerHook("postPublish","t",R1);let h1=AF.create(),r8=HB.create({store:Q,fieldService:u2}),j1=B0.create({store:Q,settingService:r8,fieldService:u2,folderService:p2,sharedTrackCascadeService:G2}),G6=ze2.create({trackService:j1,store:Q}),j_=pe.create({store:Q,fieldService:u2,trackService:j1}),w4=Ge.create({store:Q,assetsDir:u}),V6=It2.create({store:Q,fieldService:u2,killProcess:z,platform:c}),E4=dt2.create({integrationService:p}),N3=tt2.create({store:Q}),f5=x02.create({store:Q,trackService:j1,embeddingProvider:K8,embeddingStore:k8,embeddingOps:E2,ragIndexedFieldDefPk:i2}),Wu=ue2.create({store:Q,jobService:V6}),Ou=Ke2.create({store:Q,documentService:u8,folderService:p2,fieldService:u2});u2.setServiceDependencies({entityMutationService:Wu,allowedValueRegistry:G6});let A5=et2.create({fieldService:u2,documentService:u8}),K3=aO.create({db:Z,store:Q,folderService:p2,fieldService:u2,documentService:u8,templateService:h1,projectService:null,clipboardService:K2,storyService:j_,trackService:j1,assetService:w4,jobService:V6,includeResolver:p8,worktreeService:E4,entityTypeService:N3,progressService:A5,duplicationService:Ou,searchService:f5,validateJobIntegrations:f}),EK=Qr.create({store:Q,folderService:p2,documentService:u8,templateService:h1,storyService:j_,trackService:j1,settingService:r8,assetService:w4,assetsDir:u}),l3=er.create({store:Q,folderService:p2,documentService:u8,templateService:h1,storyService:j_,trackService:j1,fieldService:u2,assetService:w4,assetsDir:u,reconcileDisposal:(l1)=>vR(Z,j2,v2,{storyIds:l1,projectId:d})}),y9=Ye2.create({store:Q,includeResolver:p8}),LK={extractAll:Hw},B9=we2.create({store:Q,contentReferenceExtractor:LK,fieldService:u2,documentService:u8,trackService:j1}),xJ=Je2.create({store:Q,dependencyWalker:B9,importService:l3,fieldService:u2,documentService:u8,trackService:j1}),H9=ve2.create();Q.setFieldHooks(H9),H9.subscribe("synopsis","d","cartridge",async(l1,E6,{entityId:O6},__)=>{await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},__)}),H9.subscribe("keywords","d","*",async(l1,E6,{entityId:O6},__)=>{await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},__)}),H9.subscribe("keywords","t","*",async(l1,E6,{entityId:O6},__)=>{await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},__)});let wc=async(l1,E6,{entityId:O6,oldValue:__,newValue:C6},$_)=>{if(C6==="false"&&__==="true"){let U6=await l1.selectFrom("entities").select("id").where("object_id","=",O6).executeTakeFirst();if(U6)await E2.deleteChunksForEntity(l1,U6.id);await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"false",bypassEditableCheck:!0},$_)}else if(C6==="true")await u2.setFieldValue(l1,E6,{entityId:O6,fieldName:"needsIndexing",value:"true",bypassEditableCheck:!0},$_)};H9.subscribe("ragIndexed","d","*",wc),H9.subscribe("ragIndexed","t","*",wc);let NJ=async(l1)=>{try{let E6=await Z.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select(["entities.id","entities.type_code","entity_types.subtype"]).where("entities.object_id","=",l1.id).where("entities.deleted_at","is",null).executeTakeFirst();if(!E6)return;let O6=E6.subtype||E6.type_code;try{if(!Gv.get(O6).isIndexable)return}catch{return}let __=async(t4)=>{if(t4==null)return null;return(await Z.selectFrom("entities").select("id").where("object_id","=",t4).executeTakeFirst())?.id??null},C6=await __(l1.oldParentFolderId),$_=await __(l1.parentFolderId),U6=await _O(Z,C6),F6=await _O(Z,$_);if(U6===F6)return;await O02(Z,E6.id,F6)}catch(E6){r_.error("Move reconciliation failed for entity %s: %s",l1.id,E6.message)}};Q.subscribe(G1.FOLDER_MOVED,NJ),Q.subscribe(G1.DOCUMENT_MOVED,NJ),Q.subscribe(G1.TEMPLATE_MOVED,NJ),_e2.create({store:Q,fieldService:u2}).subscribeToFieldHooks(H9),j_.subscribeToFieldHooks(H9);let BP=$e2.create({store:Q,fieldService:u2,trackService:j1});BP.subscribeToFieldHooks(H9);let Mg=Zq.create(["exportStarted","exportProgress","exportCompleted","importStarted","importProgress","importCompleted"]),UP={folderService:p2,fieldService:u2,documentService:u8,templateService:h1,transactionService:K3,exportService:EK,importService:l3,backfillService:y9,rootStore:Q,storyService:j_,trackService:j1,assetService:w4,jobService:V6,worktreeService:E4,includeResolver:p8,searchService:f5,entityTypeService:N3,disposalService:BP,operationProgressObservable:Mg,dependencyWalker:B9,bundlePipeline:xJ,publishEffects:T1};try{let l1=await Q.readSettingsRootFolder(Z,{},{storeCode:"A"});if(l1){let E6=await Q.findFolderByName(Z,{},l1.getObjectId(),"RAG");if(E6){let O6=await Q.findSettingByName(Z,{},E6.getObjectId(),"rag-config");if(O6)if(P1=O6.entity.getObjectId(),(O6.entity.getField("indexingMode")?.getValue()??"batch")==="constant")$2.updateInterval("embedding-batch",2000);else{let C6=O6.entity.getField("batchIntervalMinutes");if(C6){let $_=parseInt(C6.getValue(),10);if(!isNaN($_)&&$_>0)$2.updateInterval("embedding-batch",$_*60*1000)}}else r_.warn("[Core] rag-config entity missing for project %s",d)}else r_.warn("[Core] RAG domain folder missing for project %s",d)}}catch(l1){r_.warn("[Core] Could not resolve rag-config for project %s: %s",d,l1.message)}return V6.subscribeAll({onJOB_STARTED:({id:l1})=>{setImmediate(async()=>{try{let E6=await V6.getJob(Z,{},{id:l1}),O6=E6?.getField("objectId")?.getValue();if(O6&&O6.startsWith("As")){H4.debug("JOB_STARTED: job=%s, objectId=%s - incrementing activeJobCount",l1,O6);let __=3,C6;for(let F6=1;F6<=__;F6++)try{await K3.incrementStoryJobCount({},{id:O6}),C6=null;break}catch(t4){if(C6=t4,H4.debug("JOB_STARTED increment retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,F6,__,t4.message),F6<__)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(C6)H4.warn("[story-job-tracking] Failed to increment activeJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,C6.message);if(E6?.getField("clearStoryFlag")?.getValue()==="true")try{H4.debug("JOB_STARTED: job=%s, objectId=%s - clearing flag",l1,O6),await K3.removeFieldFromEntity({},{entityId:O6,fieldName:"flag"})}catch(F6){H4.debug("Error clearing flag for job %s: %s",l1,F6.message)}if(E6?.getField("clearStatusMessage")?.getValue()==="true")try{H4.debug("JOB_STARTED: job=%s, objectId=%s - clearing statusMessage",l1,O6),await K3.removeFieldFromEntity({},{entityId:O6,fieldName:"statusMessage"})}catch(F6){H4.debug("Error clearing statusMessage for job %s: %s",l1,F6.message)}}}catch(E6){H4.debug("Error handling JOB_STARTED for job %s: %s",l1,E6.message)}})},onJOB_COMPLETED:({id:l1})=>{U.onJobCompleted(l1),setImmediate(async()=>{try{let O6=(await V6.getJob(Z,{},{id:l1}))?.getField("objectId")?.getValue();if(O6&&O6.startsWith("As")){H4.debug("JOB_COMPLETED: job=%s, objectId=%s - decrementing activeJobCount",l1,O6);let __=3,C6;for(let $_=1;$_<=__;$_++)try{await K3.decrementStoryJobCount({},{id:O6}),C6=null;break}catch(U6){if(C6=U6,H4.debug("JOB_COMPLETED decrement retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,$_,__,U6.message),$_<__)await new Promise((F6)=>setTimeout(F6,100*Math.pow(2,$_-1)))}if(C6)H4.warn("[story-job-tracking] Failed to decrement activeJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,C6.message)}}catch(E6){H4.debug("Error handling JOB_COMPLETED for job %s: %s",l1,E6.message)}})},onJOB_SUSPENDED:({id:l1})=>{U.onJobCompleted(l1),setImmediate(async()=>{try{let O6=(await V6.getJob(Z,{},{id:l1}))?.getField("objectId")?.getValue();if(O6&&O6.startsWith("As")){H4.debug("JOB_SUSPENDED: job=%s, objectId=%s - decrementing activeJobCount, incrementing pendingJobCount",l1,O6);let __=3,C6;for(let U6=1;U6<=__;U6++)try{await K3.decrementStoryJobCount({},{id:O6}),C6=null;break}catch(F6){if(C6=F6,H4.debug("JOB_SUSPENDED decrement retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,U6,__,F6.message),U6<__)await new Promise((t4)=>setTimeout(t4,100*Math.pow(2,U6-1)))}if(C6)H4.warn("[story-job-tracking] Failed to decrement activeJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,C6.message);let $_;for(let U6=1;U6<=__;U6++)try{await K3.incrementStoryPendingJobCount({},{id:O6}),$_=null;break}catch(F6){if($_=F6,H4.debug("JOB_SUSPENDED increment pendingJobCount retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,O6,U6,__,F6.message),U6<__)await new Promise((t4)=>setTimeout(t4,100*Math.pow(2,U6-1)))}if($_)H4.warn("[story-job-tracking] Failed to increment pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",__,l1,O6,$_.message)}}catch(E6){H4.debug("Error handling JOB_SUSPENDED for job %s: %s",l1,E6.message)}})},onJOB_STATUS_CHANGED:({id:l1,oldStatus:E6,newStatus:O6})=>{if(O6!=="pending"&&E6!=="pending"&&E6!=="awaiting-resume")return;setImmediate(async()=>{try{let C6=(await V6.getJob(Z,{},{id:l1}))?.getField("objectId")?.getValue();if(!C6||!C6.startsWith("As"))return;let $_=3;if(E6==="awaiting-resume")if(O6==="pending")H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - awaiting-resume→pending, no-op (already counted)",l1,C6);else{H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - awaiting-resume→%s, decrementing pendingJobCount",l1,C6,O6);let U6;for(let F6=1;F6<=$_;F6++)try{await K3.decrementStoryPendingJobCount({},{id:C6}),U6=null;break}catch(t4){if(U6=t4,H4.debug("JOB_STATUS_CHANGED decrement (awaiting-resume) retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,C6,F6,$_,t4.message),F6<$_)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(U6)H4.warn("[story-job-tracking] Failed to decrement pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",$_,l1,C6,U6.message)}else if(O6==="pending"){H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - entering pending, incrementing pendingJobCount",l1,C6);let U6;for(let F6=1;F6<=$_;F6++)try{await K3.incrementStoryPendingJobCount({},{id:C6}),U6=null;break}catch(t4){if(U6=t4,H4.debug("JOB_STATUS_CHANGED increment retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,C6,F6,$_,t4.message),F6<$_)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(U6)H4.warn("[story-job-tracking] Failed to increment pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",$_,l1,C6,U6.message)}else{H4.debug("JOB_STATUS_CHANGED: job=%s, objectId=%s - leaving pending (%s→%s), decrementing pendingJobCount",l1,C6,E6,O6);let U6;for(let F6=1;F6<=$_;F6++)try{await K3.decrementStoryPendingJobCount({},{id:C6}),U6=null;break}catch(t4){if(U6=t4,H4.debug("JOB_STATUS_CHANGED decrement retry: job=%s, storyId=%s, attempt=%d/%d, error=%s",l1,C6,F6,$_,t4.message),F6<$_)await new Promise((G7)=>setTimeout(G7,100*Math.pow(2,F6-1)))}if(U6)H4.warn("[story-job-tracking] Failed to decrement pendingJobCount after %d attempts: job=%s, storyId=%s, error=%s",$_,l1,C6,U6.message)}}catch(__){H4.debug("Error handling JOB_STATUS_CHANGED for job %s: %s",l1,__.message)}})}}),j8.set(d,UP),UP},G2=ce2.create({listProjects:(d)=>O2.listProjects(d),getProjectServices:(d)=>v2(d)}),W2=async()=>{let d=await X.readSharedStore(Z,{}),s=Zy.create({store:d,jsonSchemaValidator:_2}),Q=Wy.create({store:d,fieldService:s}),u2=XB.create(),p2=iB.create({store:d,folderService:Q,documentHooks:u2,fieldService:s}),N2=GB.create({store:d,documentService:p2});u2.setIncludeResolver(N2,d),p2.setIncludeResolver(N2);let u8=AF.create(),p8=HB.create({store:d,fieldService:s}),L8=B0.create({store:d,settingService:p8,fieldService:s,folderService:Q,sharedTrackCascadeService:G2}),T1=aO.create({db:Z,store:d,trackService:L8}),P1=pe.create({store:d,fieldService:s,trackService:L8}),R1=Ge.create({store:d,assetsDir:u}),h1=Qr.create({store:d,folderService:Q,documentService:p2,templateService:u8,storyService:P1,trackService:L8,settingService:p8,assetService:R1,assetsDir:u}),r8=er.create({store:d,folderService:Q,documentService:p2,templateService:u8,storyService:P1,trackService:L8,fieldService:s,assetService:R1,assetsDir:u});return{exportService:h1,importService:r8,sharedStore:d,trackService:L8,transactionService:T1,fieldService:s,settingService:p8}},j2=async()=>{return await bw.create({projectStore:H,storeStore:X}).listProjects(Z)},Q2=async(d)=>{if(!d||!/^P\d+$/.test(d))return null;let s=parseInt(d.slice(1),10);if(s<1||s>Number.MAX_SAFE_INTEGER)return null;return await H.readProjectByObjectId(Z,null,d)},R2=async(d,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,subtype:L8,fields:T1})=>{let P1=await B(d),{transactionService:R1}=await v2(P1.projCtx);return await R1.createFolder(P1,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,subtype:L8,fields:T1})},e2=async(d,{id:s,name:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.renameFolder(u2,{id:s,name:Q})},S2=async(d,{id:s,parentId:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.moveFolder(u2,{id:s,parentId:Q})},Y8=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteFolder(Q,{id:s})},h2=async(d,{store:s="A",limit:Q=50,offset:u2=0}={})=>{let p2=await B(d),{rootStore:N2}=await v2(p2.projCtx),u8=await N2.readSettingsRootFolder(Z,p2,{storeCode:"A"});if(!u8)throw Error(`disposal-config: no settings root for project ${d}`);let p8=await k(Z,p2,u8.getObjectId(),"disposal-config",N2);if(!p8)throw Error(`disposal-config setting missing for project ${d}`);let L8=p8.entity.getField("retentionDays");if(!L8)throw Error(`retentionDays field missing from disposal-config for project ${d}`);let T1=parseInt(L8.getValue(),10);if(isNaN(T1))throw Error(`retentionDays value is not a valid integer for project ${d}`);return await N2.listDeletedEvents(Z,p2,{storeCode:s,retentionDays:T1,limit:Q,offset:u2})},D2=async(d,{rootEntityId:s,store:Q="A",limit:u2=50,offset:p2=0})=>{let N2=await B(d),{rootStore:u8}=await v2(N2.projCtx);return await u8.listDeletedEventItems(Z,N2,{rootEntityId:s,storeCode:Q,limit:u2,offset:p2})},_8=async(d,{rootEntityId:s,store:Q="A"})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.restoreEvent(u2,{rootEntityId:s,storeCode:Q})},T8=async(d,{id:s})=>{let Q=await B(d),{folderService:u2}=await v2(Q.projCtx);return await u2.readFolder(Z,Q,{id:s})},V8=async(d,{store:s,path:Q,type:u2})=>{let p2=await B(d),{folderService:N2}=await v2(p2.projCtx);return await N2.getFolderByPath(Z,p2,{path:Q,type:u2,storeCode:s})},o8=async(d,{store:s})=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx);return await u2.readDraftPromptsRootFolder(Z,Q,{storeCode:s})},S8=async(d,{id:s})=>{let Q=await B(d);if(!B1.parseId(s))throw N.notFound(`Invalid entity ID format: ${s}`,"NOT_FOUND");let{rootStore:p2}=await v2(Q.projCtx);return{root:await K4.getRootForEntity(Z,Q,s,p2)}},q1=async(d,{folderId:s,store:Q,type:u2})=>{let p2=await B(d);r_.debug("listFolderContents: Listing contents for project %s: folderId=%s, store=%s, type=%s",p2.projCtx,s||"root",Q,u2);let{folderService:N2,documentService:u8,rootStore:p8}=await v2(p2.projCtx),L8=u2;if(s&&!u2){if(t_.isVirtualId(s))if(s==="_f1")L8="d";else if(s==="_f2")L8="t";else if(s==="_f5")L8="f";else throw Error(`Unknown virtual root ID: ${s}`);else L8=await t8(Z,p8,p2,s,Q);r_.debug("listFolderContents: Inferred type %s from folder %s",L8,s)}if(!L8||L8!=="d"&&L8!=="t"&&L8!=="f")L8="d",r_.debug('listFolderContents: Defaulting effectiveType to "d"');let T1=await N2.listFolderContents(Z,p2,{folderId:s,storeCode:Q,type:L8}),P1=s;if((s===null||s===void 0)&&(L8==="d"||L8==="t"))P1=(await p8.readRootFolderForType(Z,p2,L8,Q)).getObjectId(),r_.debug("listFolderContents: Resolved root folder for type %s: %s",L8,P1);r_.debug("listFolderContents: Querying content with parentId=%s, store=%s, type=%s",P1,Q,L8);let R1=L8==="f"?[]:await u8.listDocuments(Z,p2,{parentId:P1,storeCode:Q,type:L8});return r_.debug("listFolderContents: Found %d folders, %d documents",T1?.length||0,R1?.length||0),{folders:T1,documents:R1}},t8=async(d,s,Q,u2,p2)=>{let N2=B1.parseId(u2);if(N2&&N2.typeCode==="s")return"d";let u8=await s.readFolder(d,Q,{id:u2});if(!u8)return null;let p8=await d.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","=",u2).executeTakeFirst();if(p8?.entity_type_code==="f"&&p8?.entity_type_subtype==="root_d")return"d";if(p8?.entity_type_code==="f"&&p8?.entity_type_subtype==="root_t")return"t";if(p8?.entity_type_code==="f"&&(p8?.entity_type_subtype==="root_s"||p8?.entity_type_subtype==="tasks"||p8?.entity_type_subtype==="root_draft_prompts"))return"d";if(p8?.entity_type_code==="s")return"d";let L8=await s.readRootFolderForType(d,Q,"d",p2),T1=await s.readRootFolderForType(d,Q,"t",p2),P1=u8;while(P1&&P1.getParentId()!==null){let R1=await s.readFolder(d,Q,{id:P1.getParentId()});if(!R1)break;P1=R1}if(P1&&P1.getObjectId()===L8?.getObjectId())return"d";else if(P1&&P1.getObjectId()===T1?.getObjectId())return"t";return null},F8=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx);return Q},o1=async(d)=>{let s=await B(d),{storyService:Q}=await v2(s.projCtx);return Q},N1=async(d)=>{let s=await B(d),{jobService:Q}=await v2(s.projCtx);return Q},e1=async(d)=>{let s=await B(d),{operationProgressObservable:Q}=await v2(s.projCtx);return Q},p6=()=>w2,y1=async({name:d,path:s})=>{let Q=bw.create({projectStore:H,storeStore:X}),u2=aO.create({db:Z,folderService:null,projectService:Q}),p2={};return await u2.createProject(p2,{name:d,path:s},(u8)=>w2.notify("projectCreated",u8))},E1=(d)=>{return bw.create({projectStore:H,storeStore:X}).validateProjectPath(d)},J6=async(d,{name:s})=>{let Q=bw.create({projectStore:H,storeStore:X}),u2=aO.create({db:Z,folderService:null,projectService:Q}),p2={};return await u2.renameProject(p2,{id:d,name:s})},M6=async(d)=>{let s=bw.create({projectStore:H,storeStore:X}),Q=aO.create({db:Z,folderService:null,projectService:s}),u2={},p2=await Q.deleteProject(u2,{id:d});return H8(d),p2},H8=(d)=>{j8.delete(d)},k2=async(d,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,content:L8,tree:T1,subtype:P1,fields:R1})=>{let h1=await B(d);r_.debug("createDocument: Creating document in project %s: mode=%s, path=%s, store=%s, type=%s, subtype=%s",h1.projCtx,s,u2,Q,p8,P1);let{transactionService:r8}=await v2(h1.projCtx),j1=await r8.createDocument(h1,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,type:p8,content:L8,tree:T1,subtype:P1,fields:R1});return r_.debug("createDocument: Document created: id=%s, path=%s",j1.getObjectId(),j1.getPath()),j1},v8=async(d,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,content:p8,subtype:L8})=>{let T1=await B(d);r_.debug("createTemplate: Creating template in project %s: mode=%s, path=%s, store=%s",T1.projCtx,s,u2,Q);let{transactionService:P1}=await v2(T1.projCtx),R1=await P1.createTemplate(T1,{mode:s,store:Q,path:u2,root:p2,parentId:N2,name:u8,content:p8,subtype:L8});return r_.debug("createTemplate: Template created: id=%s, path=%s",R1.getObjectId(),R1.getPath()),R1},I8=async(d,{id:s,resolveIncludes:Q=!0})=>{let u2=await B(d),{documentService:p2}=await v2(u2.projCtx);return await p2.readDocument(Z,u2,{id:s,resolveIncludes:Q})},x8=async(d,{path:s,store:Q,type:u2,resolveIncludes:p2=!0})=>{let N2=await B(d),{documentService:u8,includeResolver:p8}=await v2(N2.projCtx),L8=await u8.readDocumentByPath(Z,N2,{path:s,type:u2,storeCode:Q});if(!L8)return null;let{entity:T1,ancestorFolderIds:P1}=L8,R1=null,h1=null;if(p2&&p8&&T1.getPublishedContent()){let r8=await p8.resolve(Z,N2,T1.getPublishedContent(),T1.getObjectId());R1=r8.content,h1=r8.includeMap}return{entity:T1,ancestorFolderIds:P1,resolvedContent:R1,includeMap:h1}},a2=async(d,{id:s})=>{let Q=await B(d),{documentService:u2,includeResolver:p2}=await v2(Q.projCtx),{entity:N2}=await u2.readDocument(Z,Q,{id:s,resolveIncludes:!1}),u8=N2.getDraftContent()||N2.getPublishedContent();if(!u8)return[];return await p2.checkIncludes(Z,Q,u8,s)},t2=async(d,{id:s})=>{let Q=await B(d),{documentService:u2,includeResolver:p2,rootStore:N2}=await v2(Q.projCtx),{entity:u8}=await u2.readDocument(Z,Q,{id:s,resolveIncludes:!1}),p8=u8.getDraftContent()||u8.getPublishedContent();if(!p8)return{updated:[]};let{content:L8,updated:T1}=await p2.updateIncludes(Z,Q,p8,s);if(T1.length>0)await N2.saveDraft(Z,Q,{id:s,content:L8});return{updated:T1}},m2=async(d,{id:s,path:Q,parentId:u2,type:p2})=>{let N2=await B(d),{transactionService:u8}=await v2(N2.projCtx);return await u8.updateDocumentPath(N2,{id:s,path:Q,parentId:u2,type:p2})},z8=async(d,{id:s,ack:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.deleteDocument(u2,{id:s,ack:Q})},N8=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.getIncomingReferences(Z,Q,{id:s})},v1=async(d,{id:s,subtype:Q,fields:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.specialiseDocument(p2,{id:s,subtype:Q,fields:u2})},C2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.generaliseDocument(Q,{id:s})},B2=async(d,{id:s,subtype:Q,fields:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.specialiseFolder(p2,{id:s,subtype:Q,fields:u2})},F2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.generaliseFolder(Q,{id:s})},d2=async(d,{sourceId:s,targetParentId:Q,newName:u2})=>{B1.validateEntityType(s,["d","t"],"document");let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.duplicateDocument(p2,{sourceId:s,targetParentId:Q,newName:u2})},w8=async(d,{sourceId:s,targetParentId:Q,newName:u2})=>{B1.validateEntityType(s,["f"],"folder");let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.duplicateFolder(p2,{sourceId:s,targetParentId:Q,newName:u2})},E8=async(d,{id:s,content:Q,sessionId:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.saveDraft(p2,{id:s,content:Q,sessionId:u2})},J1=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.readDraft(Z,Q,{id:s})},M2=async(d,{id:s,sessionId:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.publishDocument(u2,{id:s,sessionId:Q})},L2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.discardDraft(Q,{id:s})},X2=async(d,{id:s,sessionId:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.setEditState(u2,{id:s,sessionId:Q})},i8=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.clearEditState(Q,{id:s})},P2=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.getEditState(Z,Q,{id:s})},$8=async(d,{id:s,versionNumber:Q,resolveIncludes:u2=!0})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.readVersion(Z,p2,{id:s,versionNumber:Q,resolveIncludes:u2})},J8=async(d,{id:s})=>{let Q=await B(d),{documentService:u2}=await v2(Q.projCtx);return await u2.getVersions(Z,Q,{id:s})},P8=async(d,{id:s,operation:Q,preview:u2,ignoreContent:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.editDocument(u8,{id:s,operation:Q,preview:u2,ignoreContent:p2,sessionId:N2})},R8=async(d,{id:s,operations:Q,preview:u2,ignoreContent:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.batchEditDocument(u8,{id:s,operations:Q,preview:u2,ignoreContent:p2,sessionId:N2})},l8=async(d,{id:s,lineNumber:Q,checked:u2,includeDraft:p2,preview:N2,sessionId:u8})=>{let p8=await B(d),{transactionService:L8}=await v2(p8.projCtx);return await L8.checkChecklistItem(p8,{id:s,lineNumber:Q,checked:u2,includeDraft:p2,preview:N2,sessionId:u8})},U8=async(d,{id:s,lineNumber:Q,includeDraft:u2,preview:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.toggleChecklistItem(u8,{id:s,lineNumber:Q,includeDraft:u2,preview:p2,sessionId:N2})},f1=async(d,{id:s,items:Q,includeDraft:u2,preview:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.batchCheckChecklistItems(u8,{id:s,items:Q,includeDraft:u2,preview:p2,sessionId:N2})},k1=async(d,{id:s,startLine:Q,endLine:u2,includeDraft:p2})=>{let N2=await B(d),{documentService:u8}=await v2(N2.projCtx);return await u8.readLines(Z,N2,{id:s,startLine:Q,endLine:u2,includeDraft:p2})},Y6=async(d,{id:s,startMarker:Q,endMarker:u2,inclusive:p2,includeDraft:N2})=>{let u8=await B(d),{documentService:p8}=await v2(u8.projCtx);return await p8.readBetweenMarkers(Z,u8,{id:s,startMarker:Q,endMarker:u2,inclusive:p2,includeDraft:N2})},q6=async(d,{id:s,includeDraft:Q})=>{let u2=await B(d),{documentService:p2}=await v2(u2.projCtx);return await p2.getDocumentStats(Z,u2,{id:s,includeDraft:Q})},G4=async(d,{id:s,maxDepth:Q,includeDraft:u2})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.readHeadings(Z,p2,{id:s,maxDepth:Q,includeDraft:u2})},z$=async(d,{id:s,heading:Q,includeHeading:u2,includeDraft:p2})=>{let N2=await B(d),{documentService:u8}=await v2(N2.projCtx);return await u8.readSection(Z,N2,{id:s,heading:Q,includeHeading:u2,includeDraft:p2})},k4=async(d,{id:s,includeDraft:Q})=>{let u2=await B(d),{documentService:p2}=await v2(u2.projCtx);return await p2.readFrontmatter(Z,u2,{id:s,includeDraft:Q})},r4=async(d,{id:s,section:Q,includeDraft:u2})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.readChecklist(Z,p2,{id:s,section:Q,includeDraft:u2})},l=async(d,{folderId:s,store:Q,type:u2="d"})=>{let p2=await B(d),{documentService:N2}=await v2(p2.projCtx);return await N2.listDocuments(Z,p2,{parentId:s,storeCode:Q,type:u2})},e=async(d,{id:s,params:Q,target:u2,targetOptions:p2,sessionId:N2})=>{let u8=await B(d),{transactionService:p8,jobService:L8,rootStore:T1}=await v2(u8.projCtx),P1=await b(d),R1=await h(d),h1=await p8.renderTemplate(u8,{id:s,params:Q,target:u2,targetOptions:p2,sessionId:N2,defaultResumePromptRef:P1,maxJobDepth:R1});if(h1.target==="job"&&h1.jobId){let r8=await E(d),j1=rm.create({jobService:L8,transactionService:p8,store:T1,db:Z,projectPath:u8.projectPath,maxResumeAttempts:r8,jobQueue:U,processEnv:w,cawPort:J});setImmediate(async()=>{try{await j1.runJob(h1.jobId,u8)}catch(G6){r_.debug("JobRunner error for job %s: %s",h1.jobId,G6.message);try{await p8.updateJobStatus(u8,{id:h1.jobId,status:"error",errorMessage:G6.message})}catch(j_){r_.debug("Failed to update job %s status to error: %s",h1.jobId,j_.message)}}})}if(h1.target==="continue")await e6(d,{id:h1.jobId,prompt:h1.content,model:h1.model,dockerImage:h1.dockerImage,skipPermissions:h1.skipPermissions}),delete h1.content;return h1},S=async(d,{id:s})=>{let Q=await B(d),{documentService:u2,templateService:p2}=await v2(Q.projCtx),{entity:N2}=await u2.readDocument(Z,Q,{id:s}),u8={id:N2.getObjectId(),path:N2.getPath()},p8=N2.getSubtype()??null;if(!N2.getPublishedContent())return{...u8,...p2.extractTemplateParameters(null),templateSubtype:p8};try{return{...u8,...p2.extractTemplateParameters(N2.getPublishedContent()),templateSubtype:p8}}catch(L8){return{...u8,...p2.extractTemplateParameters(null),parseError:L8.message,templateSubtype:p8}}},g=async(d,{typeCode:s,store:Q="A"})=>{let u2=await B(d),{rootStore:p2}=await v2(u2.projCtx),N2=Q==="all"?["A","B"]:[Q],u8=[];for(let L8 of N2){let T1=await p2.findEntitiesByFieldValue(Z,u2,{storeCode:L8,typeCode:"t",subtype:"prompt",fieldName:"associatedType",fieldValue:s});u8.push(...T1)}return{templates:await Promise.all(u8.map(async(L8)=>{let R1=((await p2.readEntity(Z,u2,{id:L8.object_id}))?.entity??null)?.getFields()?.config;return{id:L8.object_id,name:L8.name,path:L8.path,subtype:L8.subtype,config:R1?R1.toJSON():null}}))}},F=async(d,{query:s,limit:Q,offset:u2,startMarker:p2,endMarker:N2,store:u8="A"})=>{let p8=await B(d),{searchService:L8}=await v2(p8.projCtx);return await L8.search(Z,p8,{query:s,limit:Q,offset:u2,startMarker:p2,endMarker:N2,storeCode:u8})},y=async(d,{store:s,ownerEntityId:Q,ownerEntityTypeCode:u2,ownerEntityTypeSubtype:p2,name:N2,label:u8,description:p8,primitiveType:L8,required:T1,multiplicity:P1,isSystem:R1,allowed:h1})=>{let r8=await B(d),{transactionService:j1}=await v2(r8.projCtx);return await j1.createFieldDefinition(r8,{store:s,ownerEntityId:Q,ownerEntityTypeCode:u2,ownerEntityTypeSubtype:p2,name:N2,label:u8,description:p8,primitiveType:L8,required:T1,multiplicity:P1,isSystem:R1,allowed:h1})},t=async(d,{id:s})=>{let Q=await B(d),{fieldService:u2}=await v2(Q.projCtx);return await u2.readFieldDefinition(Z,Q,{id:s})},c2=async(d,{store:s,ownerEntityId:Q,includeSystem:u2})=>{let p2=await B(d),{fieldService:N2}=await v2(p2.projCtx);return await N2.getFieldDefinitionsForOwner(Z,p2,{store:s,ownerEntityId:Q,includeSystem:u2})},H2=async(d,{store:s,code:Q,subtype:u2})=>{let p2=await B(d),{fieldService:N2}=await v2(p2.projCtx);return await N2.getFieldDefinitionsForType(Z,p2,{store:s,code:Q,subtype:u2})},V2=async(d,{entityId:s,typeCode:Q,subtype:u2,parentId:p2,storeCode:N2,fieldName:u8,dependencyValues:p8})=>{let L8=await B(d),{fieldService:T1}=await v2(L8.projCtx);return await T1.resolveAllowedValues(Z,L8,{entityId:s,typeCode:Q,subtype:u2,parentId:p2,storeCode:N2,fieldName:u8,dependencyValues:p8})},n2=async(d,{id:s,allowed:Q,jsonSchema:u2})=>{let p2=await B(d),{fieldService:N2}=await v2(p2.projCtx);return await N2.updateFieldDefinitionConfig(Z,p2,{id:s,allowed:Q,jsonSchema:u2})},b2=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteFieldDefinition(Q,{id:s})},l2=async(d,{store:s,fieldDefinitionId:Q,entityTypeCode:u2,entityTypeSubtype:p2,required:N2,sortOrder:u8,rows:p8,colspan:L8,description:T1,hidden:P1})=>{let R1=await B(d),{transactionService:h1}=await v2(R1.projCtx);return await h1.addClassAssociation(R1,{store:s,fieldDefinitionId:Q,entityTypeCode:u2,entityTypeSubtype:p2,required:N2,sortOrder:u8,rows:p8,colspan:L8,description:T1,hidden:P1})},c8=async(d,{id:s})=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx);return(await u2.readEntity(Z,Q,{id:s}))?.entity??null},A8=async(d,{entityId:s})=>{let Q;try{Q=await c8(d,{id:s})}catch(u2){if(u2.code==="PROJECT_NOT_FOUND")throw u2;if(u2.code&&u2.code.includes("NOT_FOUND"))return{};throw u2}if(!Q)return{};return Q.getFields()},f8=async(d,{entityId:s,fieldName:Q})=>{let u2=await c8(d,{id:s});if(!u2)throw N.notFound(`Entity not found: ${s}`,"NOT_FOUND");let N2=u2.getFields()[Q];if(!N2)throw N.validation(`Field '${Q}' not found on entity '${s}'`,"FIELD_NOT_FOUND");return N2.toJSON()},a8=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.addFieldToEntity(u8,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})},B8=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.updateFieldValue(u8,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2})},Z1=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2,dependencies:u8})=>{let p8=await B(d),{transactionService:L8}=await v2(p8.projCtx);return await L8.setFieldValue(p8,{entityId:s,fieldDefinitionId:Q,fieldName:u2,value:p2,values:N2,dependencies:u8})},h8=async(d,{entityId:s,fieldDefinitionId:Q,fieldName:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.removeFieldFromEntity(p2,{entityId:s,fieldDefinitionId:Q,fieldName:u2})},d8=async(d,{code:s,subtype:Q,name:u2,parentSubtype:p2,indexable:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.createSubtype(u8,{code:s,subtype:Q,name:u2,parentSubtype:p2,indexable:N2})},A1=async(d,{code:s})=>{let Q=await B(d),{entityTypeService:u2}=await v2(Q.projCtx);return await u2.listSubtypes(Z,Q,{code:s})},W6=async(d)=>{let s=await B(d),{exportService:Q}=await v2(s.projCtx);return await Q.listExports(Z,s,{projectPath:s.projectPath})},y6=async(d,{store:s="A"}={})=>{let Q=await B(d),{exportService:u2}=await v2(Q.projCtx);return await u2.exportPreview(Z,Q,{storeCode:s})},x6=async(d,{store:s="A",confirm:Q=!1,onProgress:u2}={})=>{let p2=await B(d),{exportService:N2}=await v2(p2.projCtx);if(!Q)return await N2.exportPreview(Z,p2,{storeCode:s});return await N2.exportDocuments(Z,p2,{storeCode:s,projectPath:p2.projectPath,onProgress:u2})},g6=async(d,{filename:s,store:Q="A",onProgress:u2})=>{let p2=await B(d);I.factory(!s,N.validation,"filename is required","FILENAME_REQUIRED");let{importService:N2}=await v2(p2.projCtx),u8=await N2.importDocuments(Z,p2,{filename:s,storeCode:Q,projectPath:p2.projectPath,onProgress:u2});if(E2){let p8=await Z.selectFrom("entities").innerJoin("string_fields","string_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select("entities.id").where("entities.type_code","=","r").where("field_definitions.name","=","code").where("string_fields.value","=",Q).executeTakeFirst();if(p8){await E2.bulkSetNeedsIndexing(Z,p8.id,"true");let L8=O8?.(p8.id);if(L8)try{L8.notify("fieldValueChanged",{entityType:"r",entityId:L8.getObjectId(),fieldName:"embeddingState",oldValue:null,newValue:"ready",storeCode:Q,parentFolderId:null})}catch(T1){}}}return u8},B6=async(d,{bundleFolderId:s,sourceEntityIds:Q})=>{let u2=await B(d);r_.debug("addToBundle: project=%s, bundle=%s, sources=%s",u2.projCtx,s,Q.join(","));let{bundlePipeline:p2}=await v2(u2.projCtx);return await p2.addToBundle(Z,u2,{bundleFolderId:s,sourceEntityIds:Q})},R6=async(d,{store:s="A",confirm:Q=!1,skipPopulated:u2=!1,batchSize:p2=100}={})=>{let N2=await B(d),{backfillService:u8}=await v2(N2.projCtx);return await u8.backfillContentRefs(Z,N2,{storeCode:s,confirm:Q,skipPopulated:u2,batchSize:p2})},s6=async(d,{store:s="A",confirm:Q=!1,batchSize:u2=100}={})=>{let p2=await B(d),{backfillService:N2}=await v2(p2.projCtx);return await N2.backfillResolvedFts(Z,p2,{storeCode:s,confirm:Q,batchSize:u2})},c4=async()=>{let{exportService:d}=await W2();return await d.listExports(Z,{},{exportPath:i})},c$=async()=>{let{exportService:d}=await W2();return await d.exportPreview(Z,{},{storeCode:"B"})},D6=async({confirm:d=!1,onProgress:s}={})=>{let{exportService:Q}=await W2();if(!d)return await Q.exportPreview(Z,{},{storeCode:"B"});return await Q.exportDocuments(Z,{},{storeCode:"B",exportPath:i,onProgress:s})},T$=async({filename:d,onProgress:s})=>{I.factory(!d,N.validation,"filename is required","FILENAME_REQUIRED");let{importService:Q}=await W2(),u2=await Q.importDocuments(Z,{},{filename:d,storeCode:"B",exportPath:i,onProgress:s});if(E2){let N2=(await X.readSharedStore(Z,{})).getPk();await E2.bulkSetNeedsIndexing(Z,N2,"true");let u8=O8?.(N2);if(u8)try{u8.notify("fieldValueChanged",{entityType:"r",entityId:u8.getObjectId(),fieldName:"embeddingState",oldValue:null,newValue:"ready",storeCode:"B",parentFolderId:null})}catch(p8){}}return u2},c1=async(d,{name:s,store:Q,state:u2,track:p2,phase:N2})=>{let u8=await B(d),{transactionService:p8}=await v2(u8.projCtx);return await p8.createStory(u8,{name:s,storeCode:Q,state:u2,track:p2,phase:N2})},_1=async(d,{store:s,state:Q,phase:u2,track:p2,flag:N2,objectIds:u8,phaseNot:p8,sortBy:L8="ranking",sortDir:T1="asc",limit:P1=50,offset:R1=0}={})=>{let h1=await B(d),{storyService:r8}=await v2(h1.projCtx),{stories:j1,total:G6}=await r8.listStories(Z,h1,{store:s,state:Q,phase:u2,track:p2,flag:N2,objectIds:u8,phaseNot:p8,sortBy:L8,sortDir:T1,limit:P1,offset:R1});return{stories:j1,total:G6,limit:P1,offset:R1}},h6=async(d,{store:s})=>{let Q=await B(d),{storyService:u2}=await v2(Q.projCtx);return u2.getStoryIdsWithNonZeroJobCounts(Z,Q,{store:s})},H_=async(d,{id:s})=>{let Q=await B(d),{storyService:u2}=await v2(Q.projCtx);return await u2.getStory(Z,Q,{id:s})},S4=async(d,{id:s,state:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.updateStoryState(u2,{id:s,state:Q})},a4=async(d,{id:s,track:Q,targetState:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.changeTrack(p2,{id:s,track:Q,targetState:u2})},C4=async(d,{id:s,name:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.renameStory(u2,{id:s,name:Q})},f4=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteStory(Q,{id:s})},x3=async(d,{store:s,phase:Q,orderedIds:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.reorderStories(p2,{store:s,phase:Q,orderedIds:u2})},y_=async(d,{store:s,storyId:Q,afterId:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.reorderSingle(p2,{store:s,storyId:Q,afterId:u2})},U$=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.incrementStoryJobCount(Q,{id:s})},I9=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.decrementStoryJobCount(Q,{id:s})},X5=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.incrementStoryPendingJobCount(Q,{id:s})},cu=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.decrementStoryPendingJobCount(Q,{id:s})},ZY=async(d,{name:s,states:Q,store:u2})=>{let p2=await B(d),{transactionService:N2}=await v2(p2.projCtx);return await N2.createTrack(p2,{store:u2||"A",name:s,states:Q})},iY=async(d,{store:s})=>{let Q=await B(d),{trackService:u2}=await v2(Q.projCtx);return await u2.listTracks(Z,Q,{store:s||"A"})},HY=async(d,{name:s,id:Q,store:u2})=>{let p2=await B(d),{trackService:N2}=await v2(p2.projCtx);if(Q)return await N2.getTrackById(Z,p2,{id:Q});return await N2.getTrackByName(Z,p2,{store:u2||"A",name:s})},E_=async(d,{id:s,name:Q,states:u2,renames:p2})=>{let N2=await B(d);await G2.warmupProjects(Z);let{transactionService:u8}=await v2(N2.projCtx);return await u8.updateTrack(N2,{id:s,name:Q,states:u2,renames:p2})},R$=async(d,{id:s})=>{let Q=await B(d);await G2.warmupProjects(Z);let{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteTrack(Q,{id:s})},D_=async()=>{let{trackService:d}=await W2();return await d.listTracks(Z,{},{store:"B"})},av=async({name:d,states:s})=>{let{transactionService:Q}=await W2();return await Q.createTrack({},{store:"B",name:d,states:s})},p5=async({id:d})=>{let{trackService:s}=await W2();return await s.getTrackById(Z,{},{id:d})},XY=async({id:d,name:s,states:Q,renames:u2})=>{await G2.warmupProjects(Z);let{transactionService:p2}=await W2();return await p2.updateTrack({},{id:d,name:s,states:Q,renames:u2})},hK=async({id:d})=>{await G2.warmupProjects(Z);let{transactionService:s}=await W2();return await s.deleteTrack({},{id:d})},wu={autoArchiveDelayDays:{type:"positive_integer"},maxConcurrentJobs:{type:"positive_integer"},maxJobDepth:{type:"positive_integer"},trashRetentionDays:{type:"positive_integer"},maxResumeAttempts:{type:"positive_integer"},defaultResumePromptRef:{type:"nullable_template_ref"},scratchDocDelayDays:{type:"positive_integer"},jobDelayDays:{type:"positive_integer"},indexingMode:{type:"enum",values:["batch","constant"]},batchIntervalMinutes:{type:"positive_integer"},claudeStrategy:{type:"enum",values:["pty","headless"]}},z2=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)throw Error(`settings: no settings root for project ${d}`);let p2=u2.getObjectId(),N2=await Q.findFolderByName(Z,s,p2,"Stories");if(!N2)throw Error(`Stories domain folder missing for project ${d}`);let u8=await Q.findFolderByName(Z,s,p2,"Jobs");if(!u8)throw Error(`Jobs domain folder missing for project ${d}`);let p8=await Q.findFolderByName(Z,s,p2,"Deleted Items");if(!p8)throw Error(`Deleted Items domain folder missing for project ${d}`);let L8=await Q.findSettingByName(Z,s,N2.getObjectId(),"auto-archive-delay");if(!L8)throw Error(`auto-archive-delay setting missing for project ${d}`);let T1=L8.entity.getField("delayMs");if(!T1)throw Error(`delayMs field missing from auto-archive-delay for project ${d}`);let P1=parseInt(T1.getValue(),10);if(isNaN(P1))throw Error(`delayMs value is not a valid integer for project ${d}`);let R1=P1/86400000,h1=await Q.findSettingByName(Z,s,u8.getObjectId(),"job-config");if(!h1)throw Error(`job-config setting missing for project ${d}`);let r8=h1.entity.getField("maxConcurrentJobs");if(!r8)throw Error(`maxConcurrentJobs field missing from job-config for project ${d}`);let j1=parseInt(r8.getValue(),10);if(isNaN(j1))throw Error(`maxConcurrentJobs value is not a valid integer for project ${d}`);let G6=h1.entity.getField("maxJobDepth");if(!G6)throw Error(`maxJobDepth field missing from job-config for project ${d}`);let j_=parseInt(G6.getValue(),10);if(isNaN(j_))throw Error(`maxJobDepth value is not a valid integer for project ${d}`);let w4=await Q.findSettingByName(Z,s,p8.getObjectId(),"disposal-config");if(!w4)throw Error(`disposal-config setting missing for project ${d}`);let V6=w4.entity.getField("retentionDays");if(!V6)throw Error(`retentionDays field missing from disposal-config for project ${d}`);let E4=parseInt(V6.getValue(),10);if(isNaN(E4))throw Error(`retentionDays value is not a valid integer for project ${d}`);let N3=w4.entity.getField("scratchDocDelayDays");if(!N3)throw Error(`scratchDocDelayDays field missing from disposal-config for project ${d}`);let f5=parseInt(N3.getValue(),10);if(isNaN(f5))throw Error(`scratchDocDelayDays value is not a valid integer for project ${d}`);let Wu=w4.entity.getField("jobDelayDays");if(!Wu)throw Error(`jobDelayDays field missing from disposal-config for project ${d}`);let Ou=parseInt(Wu.getValue(),10);if(isNaN(Ou))throw Error(`jobDelayDays value is not a valid integer for project ${d}`);let A5=await Q.findSettingByName(Z,s,u8.getObjectId(),"resume-config");if(!A5)throw Error(`resume-config setting missing for project ${d}`);let K3=A5.entity.getField("maxResumeAttempts");if(!K3)throw Error(`maxResumeAttempts field missing from resume-config for project ${d}`);let EK=parseInt(K3.getValue(),10);if(isNaN(EK))throw Error(`maxResumeAttempts value is not a valid integer for project ${d}`);let y9=A5.entity.getField("defaultResumePromptRef")?.getValue()??null,LK=await Q.findFolderByName(Z,s,p2,"RAG");if(!LK)throw Error(`RAG domain folder missing for project ${d}`);let B9=await Q.findSettingByName(Z,s,LK.getObjectId(),"rag-config");if(!B9)throw Error(`rag-config setting missing for project ${d}`);let xJ=B9.entity.getField("indexingMode")?.getValue()??"batch",H9=parseInt(B9.entity.getField("batchIntervalMinutes")?.getValue()??"5",10),wc=await Q.findFolderByName(Z,s,p2,"Agents");if(!wc)throw Error(`Agents domain folder missing for project ${d}`);let IH=(await Q.findSettingByName(Z,s,wc.getObjectId(),"claude-agent-config"))?.entity.getField("claudeStrategy")?.getValue()??"pty";return{autoArchiveDelayDays:R1,maxConcurrentJobs:j1,maxJobDepth:j_,trashRetentionDays:E4,maxResumeAttempts:EK,defaultResumePromptRef:y9,scratchDocDelayDays:f5,jobDelayDays:Ou,indexingMode:xJ,batchIntervalMinutes:H9,claudeStrategy:IH}},Z2=async(d,{settings:s})=>{for(let r8 of Object.keys(s))if(!Object.hasOwn(wu,r8))throw N.validation(`Unknown system setting key: ${r8}`,"INVALID_SYSTEM_SETTING_KEY");let Q=await B(d),{rootStore:u2,fieldService:p2}=await v2(Q.projCtx),N2=await u2.readSettingsRootFolder(Z,Q,{storeCode:"A"});if(!N2)throw Error(`settings: no settings root for project ${d}`);for(let[r8,j1]of Object.entries(s)){let{type:G6}=wu[r8];if(G6==="positive_integer"){if(!Number.isInteger(j1)||j1<=0)throw N.validation(`${r8} must be a positive integer`,"INVALID_SYSTEM_SETTING_VALUE")}else if(G6==="nullable_template_ref"){if(j1===null)continue;if(typeof j1!=="string"||j1.trim()==="")throw N.validation(`${r8} must be a template ID string or null`,"INVALID_SYSTEM_SETTING_VALUE");if(!await u2.readEntity(Z,Q,{id:j1}))throw N.validation(`${r8}: entity not found: ${j1}`,"INVALID_SYSTEM_SETTING_VALUE");if(j1.length<2||j1[1]!=="t")throw N.validation(`${r8}: referenced entity is not a template: ${j1}`,"INVALID_SYSTEM_SETTING_VALUE")}else if(G6==="enum"){let{values:j_}=wu[r8];if(!j_.includes(j1))throw N.validation(`${r8} must be one of: ${j_.join(", ")}`,"INVALID_SYSTEM_SETTING_VALUE")}}let u8=[],p8=(r8,j1,G6)=>u8.push({hookName:r8,fn:j1,onError:G6}),L8=N2.getObjectId(),T1="maxConcurrentJobs"in s||"maxJobDepth"in s||"maxResumeAttempts"in s||"defaultResumePromptRef"in s,P1="trashRetentionDays"in s||"scratchDocDelayDays"in s||"jobDelayDays"in s,R1="indexingMode"in s||"batchIntervalMinutes"in s,h1="claudeStrategy"in s;await Z.transaction().execute(async(r8)=>{let j1=null;if(T1){if(j1=await u2.findFolderByName(r8,Q,L8,"Jobs"),!j1)throw Error(`Jobs domain folder missing for project ${d}`)}let G6=null;if(P1){let V6=await u2.findFolderByName(r8,Q,L8,"Deleted Items");if(!V6)throw Error(`Deleted Items domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"disposal-config");if(!E4)throw Error(`disposal-config setting missing for project ${d}`);G6=E4.entity}let j_=null;if(R1){let V6=await u2.findFolderByName(r8,Q,L8,"RAG");if(!V6)throw Error(`RAG domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"rag-config");if(!E4)throw Error(`rag-config setting missing for project ${d}`);j_=E4.entity}let w4=null;if(h1){let V6=await u2.findFolderByName(r8,Q,L8,"Agents");if(!V6)throw Error(`Agents domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"claude-agent-config");if(!E4)throw Error(`claude-agent-config setting missing for project ${d}`);w4=E4.entity}if("autoArchiveDelayDays"in s){let V6=await u2.findFolderByName(r8,Q,L8,"Stories");if(!V6)throw Error(`Stories domain folder missing for project ${d}`);let E4=await u2.findSettingByName(r8,Q,V6.getObjectId(),"auto-archive-delay");if(!E4)throw Error(`auto-archive-delay setting missing for project ${d}`);let N3=s.autoArchiveDelayDays*86400000;await p2.setFieldValue(r8,Q,{entityId:E4.entity.getObjectId(),fieldName:"delayMs",value:N3},p8)}if("maxConcurrentJobs"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"job-config");if(!V6)throw Error(`job-config setting missing for project ${d}`);await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"maxConcurrentJobs",value:s.maxConcurrentJobs},p8)}if("maxJobDepth"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"job-config");if(!V6)throw Error(`job-config setting missing for project ${d}`);await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"maxJobDepth",value:s.maxJobDepth},p8)}if("trashRetentionDays"in s)await p2.setFieldValue(r8,Q,{entityId:G6.getObjectId(),fieldName:"retentionDays",value:s.trashRetentionDays},p8);if("scratchDocDelayDays"in s)await p2.setFieldValue(r8,Q,{entityId:G6.getObjectId(),fieldName:"scratchDocDelayDays",value:s.scratchDocDelayDays},p8);if("jobDelayDays"in s)await p2.setFieldValue(r8,Q,{entityId:G6.getObjectId(),fieldName:"jobDelayDays",value:s.jobDelayDays},p8);if("maxResumeAttempts"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"resume-config");if(!V6)throw Error(`resume-config setting missing for project ${d}`);await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"maxResumeAttempts",value:s.maxResumeAttempts},p8)}if("defaultResumePromptRef"in s){let V6=await u2.findSettingByName(r8,Q,j1.getObjectId(),"resume-config");if(!V6)throw Error(`resume-config setting missing for project ${d}`);if(s.defaultResumePromptRef===null)await p2.deleteFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"defaultResumePromptRef"},p8);else await p2.setFieldValue(r8,Q,{entityId:V6.entity.getObjectId(),fieldName:"defaultResumePromptRef",value:s.defaultResumePromptRef},p8)}if("indexingMode"in s)await p2.setFieldValue(r8,Q,{entityId:j_.getObjectId(),fieldName:"indexingMode",value:s.indexingMode},p8);if("batchIntervalMinutes"in s)await p2.setFieldValue(r8,Q,{entityId:j_.getObjectId(),fieldName:"batchIntervalMinutes",value:s.batchIntervalMinutes},p8);if("claudeStrategy"in s)await p2.setFieldValue(r8,Q,{entityId:w4.getObjectId(),fieldName:"claudeStrategy",value:s.claudeStrategy},p8);if("indexingMode"in s||"batchIntervalMinutes"in s)if(("indexingMode"in s?s.indexingMode:j_.getField("indexingMode")?.getValue()??"batch")==="constant")p8("cronService-updateInterval",()=>{r_.info("[Core] Switching to constant mode: setting embedding-batch cron to 2000ms"),$2.updateInterval("embedding-batch",2000)});else{let N3=("batchIntervalMinutes"in s?s.batchIntervalMinutes:parseInt(j_.getField("batchIntervalMinutes")?.getValue()??"5",10))*60*1000;p8("cronService-updateInterval",()=>{r_.info("[Core] Updated embedding-batch cron interval to %dms",N3),$2.updateInterval("embedding-batch",N3)})}});for(let{fn:r8}of u8)r8();return await z2(d)},T2=async(d,s="A")=>{let Q,u2;if(s==="B")Q=(await W2()).sharedStore,u2={};else u2=await B(d),Q=(await v2(u2.projCtx)).rootStore;let p2=await Q.readSettingsRootFolder(Z,u2,{storeCode:s});if(!p2)throw Error(`rag-defaults: no settings root for store ${s}`);let N2=await Q.findFolderByName(Z,u2,p2.getObjectId(),"RAG");if(!N2)throw Error(`RAG domain folder missing for store ${s}`);let u8=await Q.findSettingByName(Z,u2,N2.getObjectId(),"rag-config");if(!u8)throw Error(`rag-config setting missing for store ${s}`);let p8=u8.entity;return{ragDefaultDoc:p8.getField("ragDefaultDoc")?.getValue()??"false",ragDefaultCartridge:p8.getField("ragDefaultCartridge")?.getValue()??"true",ragDefaultTask:p8.getField("ragDefaultTask")?.getValue()??"false",ragDefaultScratch:p8.getField("ragDefaultScratch")?.getValue()??"false",ragDefaultTemplate:p8.getField("ragDefaultTemplate")?.getValue()??"false",ragDefaultPrompt:p8.getField("ragDefaultPrompt")?.getValue()??"false",ragDefaultSavedSearch:p8.getField("ragDefaultSavedSearch")?.getValue()??"false"}},q8=async(d,{typeCode:s,subtype:Q,targetValue:u2},p2="A")=>{let N2;if(p2==="B"){let{sharedStore:L8}=await W2();N2=L8.getPk()}else{let L8=await B(d),{rootStore:T1}=await v2(L8.projCtx),P1=T1.getChildren().find((R1)=>R1.getCode()===p2);if(!P1)throw Error(`Store ${p2} not found for project ${d}`);N2=P1.getPk()}return{count:await(E2??KR.create({db:Z})).countAffectedEntities(Z,{storeId:N2,typeCode:s,subtype:Q??null,targetValue:u2})}},n8=async(d,{defaults:s,applyToExisting:Q},u2="A")=>{for(let[r8,j1]of Object.entries(s)){try{OB(r8)}catch{throw N.validation(`Unknown ragDefault field name: ${r8}`,"INVALID_RAG_DEFAULT_KEY")}if(j1!=="true"&&j1!=="false")throw N.validation(`ragDefault values must be 'true' or 'false', got: ${j1} for ${r8}`,"INVALID_RAG_DEFAULT_VALUE")}if(Q&&Q.length>0){for(let r8 of Q)if(!Object.hasOwn(s,r8))throw N.validation(`applyToExisting key '${r8}' is not present in defaults — cannot bulk-apply without a new value`,"APPLY_TO_EXISTING_NOT_IN_DEFAULTS")}let p2,N2,u8,p8;if(u2==="B"){let r8=await W2();p2=r8.sharedStore,N2=r8.fieldService,u8={},p8=p2.getPk()}else{u8=await B(d);let r8=await v2(u8.projCtx);p2=r8.rootStore,N2=r8.fieldService;let j1=p2.getChildren().find((G6)=>G6.getCode()===u2);if(!j1)throw Error(`Store ${u2} not found for project ${d}`);p8=j1.getPk()}let L8=await p2.readSettingsRootFolder(Z,u8,{storeCode:u2});if(!L8)throw Error(`rag-defaults: no settings root for store ${u2}`);let T1=await p2.findFolderByName(Z,u8,L8.getObjectId(),"RAG");if(!T1)throw Error(`RAG domain folder missing for store ${u2}`);let P1=[],R1=(r8,j1,G6)=>P1.push({hookName:r8,fn:j1,onError:G6}),h1={};await Z.transaction().execute(async(r8)=>{let j1=await p2.findSettingByName(r8,u8,T1.getObjectId(),"rag-config");if(!j1)throw Error(`rag-config setting missing for store ${u2}`);let G6=j1.entity.getObjectId();for(let[j_,w4]of Object.entries(s))await N2.setFieldValue(r8,u8,{entityId:G6,fieldName:j_,value:w4,bypassEditableCheck:!0},R1);if(Q&&Q.length>0){let j_=E2??KR.create({db:Z});for(let w4 of Q){let V6=s[w4],{typeCode:E4,subtype:N3}=OB(w4),f5=await j_.listAffectedEntityIds(r8,{storeId:p8,typeCode:E4,subtype:N3,targetValue:V6});for(let Wu of f5)await N2.setFieldValue(r8,u8,{entityId:Wu,fieldName:"ragIndexed",value:V6,bypassEditableCheck:!0},R1);h1[w4]=f5.length}}});for(let{fn:r8}of P1)r8();return{defaults:await T2(d,u2),applied:h1}},M8=async(d)=>{let s=await B(d),{rootStore:Q}=await v2(s.projCtx),u2=await Q.readSettingsRootFolder(Z,s,{storeCode:"A"});if(!u2)return"pty";let p2=await Q.findFolderByName(Z,s,u2.getObjectId(),"Agents");if(!p2)return"pty";let N2=await Q.findSettingByName(Z,s,p2.getObjectId(),"claude-agent-config");if(!N2)return"pty";return N2.entity.getField("claudeStrategy")?.getValue()==="headless"?"headless":"pty"},C8=async(d,s)=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx),p2=await u2.readSettingsRootFolder(Z,Q,{storeCode:"A"});if(!p2)throw Error(`agent-config: no settings root for project ${d}`);let N2=await u2.findFolderByName(Z,Q,p2.getObjectId(),"Agents");if(!N2)throw Error(`Agents domain folder missing for project ${d}`);let u8=s?[s]:W3.getAgentNames(),p8={};for(let L8 of u8){let T1=await u2.findSettingByName(Z,Q,N2.getObjectId(),`${L8}-agent-config`);if(!T1){p8[L8]={availableModels:[],defaultModel:null};continue}let P1=T1.entity,R1=P1.getField("availableModels"),h1=P1.getField("defaultModel"),r8=P1.getField("availableEffortLevels"),j1=P1.getField("defaultEffortLevel");p8[L8]={availableModels:R1?R1.getValues():[],defaultModel:h1?h1.getValue()??null:null,availableEffortLevels:r8?r8.getValues():[],defaultEffortLevel:j1?j1.getValue()??null:null}}return p8},b8=async(d,s,{availableModels:Q,defaultModel:u2,availableEffortLevels:p2,defaultEffortLevel:N2}={})=>{if(!W3.isValidAgent(s))throw N.validation(`Unknown agent: ${s}`,"INVALID_AGENT");let u8=await B(d),{rootStore:p8,fieldService:L8}=await v2(u8.projCtx),T1=await p8.readSettingsRootFolder(Z,u8,{storeCode:"A"});if(!T1)throw Error(`agent-config: no settings root for project ${d}`);let P1=await p8.findFolderByName(Z,u8,T1.getObjectId(),"Agents");if(!P1)throw Error(`Agents domain folder missing for project ${d}`);let R1=await p8.findSettingByName(Z,u8,P1.getObjectId(),`${s}-agent-config`);if(!R1)throw Error(`${s}-agent-config entity missing for project ${d}`);let h1=R1.entity.getObjectId(),r8=[],j1=(G6,j_,w4)=>r8.push({hookName:G6,fn:j_,onError:w4});await Z.transaction().execute(async(G6)=>{if(Q!==void 0)await L8.setFieldValue(G6,u8,{entityId:h1,fieldName:"availableModels",values:Q},j1);if(u2!==void 0)if(u2===null)await L8.deleteFieldValue(G6,u8,{entityId:h1,fieldName:"defaultModel"},j1);else await L8.setFieldValue(G6,u8,{entityId:h1,fieldName:"defaultModel",value:u2},j1);if(p2!==void 0)await L8.setFieldValue(G6,u8,{entityId:h1,fieldName:"availableEffortLevels",values:p2},j1);if(N2!==void 0)if(N2===null)await L8.deleteFieldValue(G6,u8,{entityId:h1,fieldName:"defaultEffortLevel"},j1);else await L8.setFieldValue(G6,u8,{entityId:h1,fieldName:"defaultEffortLevel",value:N2},j1)});for(let{fn:G6}of r8)G6();return await C8(d,s)},e8=async(d)=>{return await B(d),await P.getMcpStatus(d)},s1=async(d,{store:s,buffer:Q,mimeType:u2,originalFilename:p2,widthPx:N2,heightPx:u8,displayWidth:p8,displayHeight:L8})=>{let T1=await B(d),{transactionService:P1}=await v2(T1.projCtx);return await P1.createAsset(T1,{store:s,buffer:Q,mimeType:u2,originalFilename:p2,widthPx:N2,heightPx:u8,displayWidth:p8,displayHeight:L8})},w_=async(d,{id:s})=>{let Q=await B(d),{assetService:u2}=await v2(Q.projCtx);return await u2.readAsset(Z,Q,{id:s})},J_=async(d,{id:s,excludeDocumentId:Q})=>{let u2=await B(d),{assetService:p2}=await v2(u2.projCtx);return await p2.getAssetReferences(Z,u2,{id:s,excludeDocumentId:Q})},t6=async(d,{id:s})=>{let Q=await B(d),{assetService:u2}=await v2(Q.projCtx);return await u2.readAssetBinary(Z,Q,{id:s})},Ov=async(d,{store:s})=>{let Q=await B(d),{assetService:u2}=await v2(Q.projCtx);return await u2.listAssets(Z,Q,{store:s})},Ju=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteAsset(Q,{id:s})},X7=async(d,{name:s,agent:Q,model:u2,effortLevel:p2,prompt:N2,promptDocumentId:u8,store:p8="A",workingDirectory:L8,objectId:T1,parentJobId:P1,blocking:R1,dockerImage:h1,skipPermissions:r8,clearStoryFlag:j1,clearStatusMessage:G6,resumePromptRef:j_})=>{let w4=await B(d),{transactionService:V6,jobService:E4,rootStore:N3}=await v2(w4.projCtx);await f(Q,h1);let f5=await b(d),Wu=await h(d),Ou=u2?.trim()||null;if(!Ou&&Q)Ou=(await C8(d,Q))?.[Q]?.defaultModel??null;let A5=p2?.trim()||null;if(!A5&&Q)A5=(await C8(d,Q))?.[Q]?.defaultEffortLevel??null;let K3=Q;if(Q==="claude"){let B9=await M8(d);K3=B9==="pty"?"claude-session":"claude",r_.debug(`Claude strategy: ${B9} → resolved agent: ${K3}`)}let EK=await V6.createJob(w4,{store:p8,name:s,agent:K3,model:Ou,effortLevel:A5,prompt:N2,promptDocumentId:u8,workingDirectory:L8,objectId:T1,parentJobId:P1,blocking:R1,dockerImage:h1,skipPermissions:r8,clearStoryFlag:j1,clearStatusMessage:G6,resumePromptRef:j_,defaultResumePromptRef:f5,maxJobDepth:Wu}),l3=await D(d),y9=await E(d),LK=()=>({jobRunner:rm.create({jobService:E4,transactionService:V6,store:N3,db:Z,projectPath:w4.projectPath,maxResumeAttempts:y9,jobQueue:U,processEnv:w,cawPort:J}),transactionService:V6});return U.enqueue(EK.getObjectId(),w4,d,l3,LK,P1),EK},G5=async(d,{store:s="A",status:Q,completedAfter:u2,completedBefore:p2,sortBy:N2="startedAt",sortDir:u8="desc",limit:p8=50,offset:L8=0,treeMode:T1,objectId:P1,pinned:R1})=>{let h1=await B(d),{jobService:r8}=await v2(h1.projCtx),j1=await h(d),{jobs:G6,total:j_}=await r8.listJobs(Z,h1,{store:s,status:Q,completedAfter:u2,completedBefore:p2,sortBy:N2,sortDir:u8,limit:p8,offset:L8,treeMode:T1,objectId:P1,pinned:R1,maxJobDepth:j1});return{jobs:G6,total:j_,limit:p8,offset:L8}},P_=async(d,{id:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.getJob(Z,Q,{id:s})},Z6=async(d,{id:s})=>{I.factory(!s,N.validation,"Job ID is required","MISSING_ID"),B1.validateEntityType(s,["j"],"job");let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx),p2=await u2.readJob(Z,Q,{id:s});I.factory(!p2,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let u8=await u2.findContentByName(Z,Q,s,"prompt.md","d")!==null,p8;if(u8)p8=await u2.findContentByName(Z,Q,s,"output.md","d");else{let L8=await u2.listContent(Z,Q,{parentId:s,type:"d"}),T1=/^prompt-(\d+)\.md$/,P1=L8.filter((r8)=>T1.test(r8.getName())),R1=0;if(P1.length>0){let r8=P1.map((j1)=>{let G6=j1.getName().match(T1);return G6?parseInt(G6[1],10):0});R1=Math.max(...r8)}let h1=R1>0?`output-${R1}.md`:"output-1.md";p8=await u2.findContentByName(Z,Q,s,h1,"d")}return I.factory(!p8,N.notFound,`Job ${s} has no output document`,"OUTPUT_DOC_NOT_FOUND"),p8.getPublishedContent()||p8.getDraftContent()||""},d1=async(d,{id:s})=>{I.factory(!s,N.validation,"Job ID is required","MISSING_ID"),B1.validateEntityType(s,["j"],"job");let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx),p2=await u2.readJob(Z,Q,{id:s});I.factory(!p2,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let N2=await u2.findContentByName(Z,Q,s,"prompt.md","d"),u8=N2!==null,p8;if(u8)p8=N2;else{let L8=await u2.listContent(Z,Q,{parentId:s,type:"d"}),T1=/^prompt-(\d+)\.md$/,P1=L8.filter((r8)=>T1.test(r8.getName())),R1=0;if(P1.length>0){let r8=P1.map((j1)=>{let G6=j1.getName().match(T1);return G6?parseInt(G6[1],10):0});R1=Math.max(...r8)}let h1=R1>0?`prompt-${R1}.md`:"prompt-1.md";p8=await u2.findContentByName(Z,Q,s,h1,"d")}return I.factory(!p8,N.notFound,`Job ${s} has no prompt document`,"PROMPT_DOC_NOT_FOUND"),p8.getPublishedContent()||p8.getDraftContent()||""},i6=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.deleteJob(Q,{id:s})},e6=async(d,{id:s,prompt:Q,promptDocumentId:u2,model:p2,effortLevel:N2,workingDirectory:u8,dockerImage:p8,skipPermissions:L8,blocking:T1})=>{let P1=await B(d),{transactionService:R1,jobService:h1,rootStore:r8}=await v2(P1.projCtx),G6=(await r8.readJob(Z,P1,{id:s}))?.getField("agent")?.getValue();await f(G6,p8);let j_=await R1.continueJob(P1,{id:s,prompt:Q,promptDocumentId:u2,model:p2,effortLevel:N2,workingDirectory:u8,dockerImage:p8,skipPermissions:L8}),w4=await D(d),V6=await E(d),E4=()=>({jobRunner:rm.create({jobService:h1,transactionService:R1,store:r8,db:Z,projectPath:P1.projectPath,maxResumeAttempts:V6,jobQueue:U,processEnv:w,cawPort:J}),transactionService:R1}),N3=j_.getField("parentJobId")?.getValue()||void 0;return U.enqueue(j_.getObjectId(),P1,d,w4,E4,N3),j_},$4=async(d,s)=>{B1.validateEntityType(s,["j"],"job");let Q=await B(d),{rootStore:u2,templateService:p2}=await v2(Q.projCtx),N2=await u2.readJob(Z,Q,{id:s});I.factory(!N2,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let u8=N2.getField("resumePromptRef")?.getValue();I.factory(!u8,N.validation,`Job ${s} has no resumePromptRef`,"NO_RESUME_PROMPT");let p8=await u2.readEntity(Z,Q,{id:u8});I.factory(!p8,N.notFound,`Resume prompt template not found: ${u8}`,"TEMPLATE_NOT_FOUND");let L8=p8.entity.getPublishedContent()||p8.entity.getDraftContent();I.factory(!L8,N.validation,`Resume prompt template ${u8} has no content`,"EMPTY_TEMPLATE");let T1=N2.getField("objectId")?.getValue(),P1=p2.renderTemplate(L8,{"job-id":s,"object-id":T1||""});try{return await e6(d,{id:s,prompt:P1})}catch(R1){r_.debug("resumeJob: continueJob failed for job %s: %s",s,R1.message);try{await s4(d,s,R1.message||"Resume failed")}catch(h1){r_.debug("resumeJob: cancelJobResume also failed for job %s: %s",s,h1.message)}}},s4=async(d,s,Q)=>{B1.validateEntityType(s,["j"],"job");let u2=await B(d),{rootStore:p2,transactionService:N2}=await v2(u2.projCtx),u8=await p2.readJob(Z,u2,{id:s});I.factory(!u8,N.notFound,`Job not found: ${s}`,"JOB_NOT_FOUND");let p8=u8.getField("status")?.getValue();return I.factory(p8!=="awaiting-resume",N.validation,`Cannot cancel resume: job ${s} is not in awaiting-resume status (current: ${p8})`,"INVALID_STATUS_FOR_CANCEL_RESUME"),await N2.updateJobStatus(u2,{id:s,status:"error",errorMessage:Q||"Resume cancelled"})},h$=async(d,{id:s,name:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.renameJob(u2,{id:s,name:Q})},p7=async(d,{id:s})=>{let Q=await B(d),{transactionService:u2}=await v2(Q.projCtx);return await u2.stopJob(Q,{id:s})},l9=(d,{jobId:s})=>{return U.releaseSlot(s)},CK=(d,{jobId:s})=>{U.reclaimSlot(s)},bH=async(d,{jobIds:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.areJobsComplete(Z,Q,{jobIds:s})},Gg=async(d,{parentJobId:s,childJobIds:Q})=>{let u2=await B(d),{transactionService:p2}=await v2(u2.projCtx);return await p2.disarmBlockingChildren(u2,{parentJobId:s,childJobIds:Q})},fg=async(d,{parentJobId:s,childJobIds:Q})=>{let u2=await B(d),{jobService:p2,transactionService:N2}=await v2(u2.projCtx),u8=["completed","error","stopped"];for(let p8 of Q)try{let L8=await p2.getJob(Z,u2,{id:p8});if(!L8)continue;let T1=L8.getFields(),P1=T1.parentJobId;if((P1?P1.getValue():null)!==s)continue;let h1=T1.status,r8=h1?h1.getValue():"pending";if(u8.includes(r8))continue;if(r8==="running")try{await p7(d,{id:p8})}catch(j1){if(j1.code==="NO_PID")await N2.terminateChildJob(u2,{id:p8});else throw j1}else if(r8==="pending")U.removePending(p8),await N2.terminateChildJob(u2,{id:p8});else await N2.terminateChildJob(u2,{id:p8})}catch(L8){r_.debug("terminalizeBlockingChildren: error processing child %s: %s",p8,L8.message)}},Ag=async(d,{jobId:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.hasActiveBlockingChildren(Z,Q,s)},Tg=async(d,{id:s})=>{let Q=await B(d),{jobService:u2}=await v2(Q.projCtx);return await u2.getProcessStatus(Z,Q,{id:s})},bP=async(d)=>{let s=await B(d),{worktreeService:Q}=await v2(s.projCtx);return await Q.listWorktrees({projectPath:s.projectPath})},Pg=async(d,{branch:s,baseBranch:Q})=>{let u2=await B(d),{worktreeService:p2}=await v2(u2.projCtx);return await p2.createWorktree({projectPath:u2.projectPath,branch:s,baseBranch:Q})},IP=()=>Z,D4=(d,s)=>{$2.register(d,s)},jg=(d)=>{return w2.subscribeAll(d)};$2.register(Oe2,{getProjects:j2,listStories:_1,updateFieldValue:B8,getArchiveThresholdMs:M}),$2.register(ie2,{db:Z,getRetentionDays:R}),$2.register(pe2,{db:Z,getServicesForProject:v2}),$2.register(Ge2,{getProjects:j2,listJobs:G5,listStories:_1,getStoryIdsWithNonZeroJobCounts:h6,setStoryJobCount:n,setStoryPendingJobCount:V}),$2.register(fe2,{getProjects:j2,listJobs:G5,resumeJob:$4,cancelJobResume:s4,getMaxResumeAttempts:E,getCronIntervalMs:o}),$2.register(Pe2,{db:Z,getServicesForProject:v2}),$2.register(Ve2,{embeddingPipeline:U2}),$2.register(Me2,{db:Z,getProjects:j2,getServicesForProject:v2}),$2.register(xe2,{integrationService:p}),await Fe2({db:Z,getProjects:j2,getServicesForProject:v2,createCtxFromProjectId:B,killProcess:z,platform:c}),await Qe2({db:Z,storeStore:X});let lP=await R();if(lP!==null)await _R(Z,lP);let yP=p.detectAll().catch((d)=>{r_.warn("Startup integration detection failed: %s",d.message)}),Vg=x2?(async()=>{try{let d=await Z.selectFrom("field_definitions").select("id").where("name","=","code").where("store_id","is",null).where("is_system","=",1).executeTakeFirst();if(!d){r_.debug("Auto-reindex startup: code field definition not found");return}let s=await Z.selectFrom("entities as s").innerJoin("entity_types as et","et.id","s.entity_type_id").innerJoin("string_fields as sf","sf.entity_id","s.id").select(["s.id as storeId","sf.value as storeCode"]).where("s.type_code","=","r").where("et.subtype","=","local").where("s.deleted_at","is",null).where("sf.field_definition_id","=",d.id).execute();for(let{storeId:Q,storeCode:u2}of s)if(await E2.readStoreField(Q,"embeddingState")==="indexing"){r_.debug("Startup reconciliation: store %s (%s) stuck in indexing, resetting to ready",u2,Q);try{await U2.clearEmbeddingError(Q)}catch(N2){r_.debug("Startup reconciliation error for store %s: %s",u2,N2?.message)}}for(let{storeId:Q,storeCode:u2}of s){if(await E2.readStoreField(Q,"embeddingState")!==null)continue;r_.debug("Auto-reindex on startup: store %s (%s) has null embeddingState, triggering reindexAll()",u2,Q);try{let N2=await U2.reindexAll({storeIds:[Q],storeCodes:[u2]});if(N2.batchPromise)await N2.batchPromise}catch(N2){r_.debug("Auto-reindex error for store %s: %s",u2,N2?.message)}}}catch(d){r_.debug("Auto-reindex startup check failed: %s",d?.message)}})():Promise.resolve(),ng=()=>{let d=U.getRunningJobs();if(d.length===0)return{safeToStop:!0};return{safeToStop:!1,safeToStopMessage:`${d.length} active job${d.length===1?"":"s"} running`}};if(W)await W({db:Z,projectStore:H,storeStore:X,jobQueue:U,getServicesForProject:v2,embeddingPipeline:U2,embeddingOps:E2,cronService:$2,startupReindexPromise:Vg,startupDetectionPromise:yP});return Object.freeze({getProjects:j2,getProjectByObjectId:Q2,createProject:y1,renameProject:J6,deleteProject:M6,validateProjectPath:E1,createFolder:R2,renameFolder:e2,moveFolder:S2,deleteFolder:Y8,listDeletedEvents:h2,getDeletedEvent:D2,restoreDeletedEvent:_8,getFolder:T8,getFolderByPath:V8,getDraftPromptsRootFolder:o8,getRootForEntity:S8,listFolderContents:q1,getRootStore:F8,getStoryService:o1,getJobService:N1,getOperationProgressObservable:e1,getServerObservable:p6,evictProject:H8,getDb:IP,createDocument:k2,createTemplate:v8,readDocument:I8,readDocumentByPath:x8,checkIncludes:a2,updateIncludes:t2,updateDocumentPath:m2,deleteDocument:z8,getIncomingReferences:N8,specialiseDocument:v1,generaliseDocument:C2,specialiseFolder:B2,generaliseFolder:F2,duplicateDocument:d2,duplicateFolder:w8,saveDraft:E8,readDraft:J1,publishDocument:M2,discardDraft:L2,setEditState:X2,clearEditState:i8,getEditState:P2,readVersion:$8,getVersions:J8,editDocument:P8,batchEditDocument:R8,checkChecklistItem:l8,toggleChecklistItem:U8,batchCheckChecklistItems:f1,listDocuments:l,readLines:k1,readBetweenMarkers:Y6,getDocumentStats:q6,readHeadings:G4,readSection:z$,readFrontmatter:k4,readChecklist:r4,renderTemplate:e,getTemplateParameters:S,listTemplatesByType:g,searchContent:F,createFieldDefinition:y,readFieldDefinition:t,getFieldDefinitions:c2,getTypeFields:H2,resolveAllowedValues:V2,updateFieldDefinitionConfig:n2,deleteFieldDefinition:b2,addClassAssociation:l2,getFields:A8,getFieldValue:f8,readEntity:c8,addFieldToEntity:a8,updateFieldValue:B8,setFieldValue:Z1,removeFieldFromEntity:h8,createSubtype:d8,listEntitySubtypes:A1,listExports:W6,exportPreview:y6,exportDocuments:x6,importDocuments:g6,addToBundle:B6,backfillContentRefs:R6,backfillResolvedFts:s6,listGlobalExports:c4,globalExportPreview:c$,globalExportDocuments:D6,globalImportDocuments:T$,createStory:c1,listStories:_1,getStoryIdsWithNonZeroJobCounts:h6,getStory:H_,renameStory:C4,updateStoryState:S4,changeTrack:a4,deleteStory:f4,reorderStories:x3,reorderSingle:y_,incrementStoryJobCount:U$,decrementStoryJobCount:I9,incrementStoryPendingJobCount:X5,decrementStoryPendingJobCount:cu,createTrack:ZY,listTracks:iY,getTrack:HY,updateTrack:E_,deleteTrack:R$,listSharedTracks:D_,createSharedTrack:av,getSharedTrack:p5,updateSharedTrack:XY,deleteSharedTrack:hK,getSystemSettings:z2,updateSystemSettings:Z2,getRagIndexedDefaults:T2,getAffectedEntityCount:q8,updateRagIndexedDefaults:n8,getAgentModelConfig:C8,updateAgentModelConfig:b8,getAgentMcpStatus:e8,createAsset:s1,readAsset:w_,getAssetReferences:J_,readAssetBinary:t6,listAssets:Ov,deleteAsset:Ju,createJob:X7,listJobs:G5,getJob:P_,readJobOutput:Z6,readJobPrompt:d1,deleteJob:i6,continueJob:e6,resumeJob:$4,cancelJobResume:s4,stopJob:p7,releaseParentSlot:l9,reclaimParentSlot:CK,areJobsComplete:bH,hasActiveBlockingChildren:Ag,disarmBlockingChildren:Gg,terminalizeBlockingChildren:fg,renameJob:h$,getProcessStatus:Tg,listWorktrees:bP,createWorktree:Pg,listCrons:()=>$2.list(),startCron:(d)=>$2.start(d),stopCron:(d)=>$2.stop(d),restartCron:(d)=>$2.restart(d),startAllCrons:()=>$2.startAll(),stopAllCrons:()=>$2.stopAll(),registerCronJob:D4,shutdownEmbeddingPipeline:()=>U2.shutdown(),reindexEmbeddings:async(d,{store:s}={})=>{let Q=await B(d),{rootStore:u2}=await v2(Q.projCtx);if(s){let p8=u2.getChildren().find((L8)=>L8.getCode()===s);if(!p8)throw N.notFound(`Store not found: ${s}`,"STORE_NOT_FOUND");return U2.reindexAll({storeIds:[p8.getPk()],storeCodes:[s]})}let p2=u2.getChildren(),N2=p2.map((p8)=>p8.getPk()),u8=p2.map((p8)=>p8.getCode());return U2.reindexAll({storeIds:N2.length>0?N2:null,storeCodes:u8.length>0?u8:null})},getEmbeddingStatus:async(d,{store:s}={})=>{let Q=await B(d),{searchService:u2,rootStore:p2}=await v2(Q.projCtx),N2=s??"A",u8=p2.getChildren().find((j1)=>j1.getCode()===N2),p8=u8?.getPk(),L8=u8?.getObjectId()??null,T1=await u2.computeEmbeddingStatus(Z,{storeId:p8,storeEntityId:L8}),R1=$2.list().find((j1)=>j1.name==="embedding-batch"),h1=R1?.nextRun!=null?new Date(R1.nextRun).toISOString():null,r8=R1?.interval??null;return{...T1,nextBatchRun:h1,batchIntervalMs:r8}},processEmbeddingBatch:async(d)=>{if(!x2)throw N.validation("Embedding pipeline is inactive (embeddings disabled)","EMBEDDINGS_DISABLED");if(r_.info("[Core] Manual process-batch triggered for project %s",d),U2.isBatchProcessing())return{triggered:!1,reason:"already_processing"};if(await E2.countAllNeedsIndexing()===0)return{triggered:!1,reason:"nothing_to_index"};return U2.processBatch().catch((Q)=>{r_.debug("[Core] Manual process-batch error: %s",Q.message)}),$2.restart("embedding-batch"),{triggered:!0}},clearEmbeddingError:async(d,{store:s}={})=>{let Q=await B(d),{searchService:u2,rootStore:p2}=await v2(Q.projCtx),N2=s??"A",p8=p2.getChildren().find((L8)=>L8.getCode()===N2)?.getPk();return await U2.clearEmbeddingError(p8),u2.computeEmbeddingStatus(Z,{storeId:p8})},subscribeServerEvents:jg,getSafeToStopStatus:ng,getIntegrations:()=>p.getIntegrations(),refreshIntegrations:async()=>{return await p.detectAll(),p.getIntegrations()},checkIntegrationStatus:(d)=>p.checkRunningStatus(d),getSystemConfig:()=>{if(!G)throw N.validation("Config service unavailable (no envDir)","INVALID_CONFIG");return G.getConfig()},writeSystemPendingConfig:(d)=>{if(!G)throw N.validation("Config service unavailable (no envDir)","INVALID_CONFIG");return G.writePendingConfig(d)}})},ee2=Object.freeze({create:XG1});var _28=g_(vb(),1),pG1=(_,{staticPath:v})=>{return _.use(_28.default.static(v)),_.get("/{*splat}",(u,K,q)=>{if(u.path.startsWith("/api")||u.path.startsWith("/mcp")||u.path.startsWith("/cli")||u.path==="/health")return q();K.sendFile("index.html",{root:v})}),Object.freeze({})},$28=Object.freeze({create:pG1});w1();w1();var v28=W8.create({namespace:"caw:api:handle-error"}),GG1={UNAUTHORIZED:401,INVALID_TOKEN:401,NOT_FOUND:404,PROJECT_NOT_FOUND:404,EXPORT_NOT_FOUND:404,STORY_NOT_FOUND:404,JOB_NOT_FOUND:404,ASSET_NOT_FOUND:404,BLOB_NOT_FOUND:404,STORE_NOT_FOUND:404,INCLUDE_NOT_FOUND:404,INCLUDE_VERSION_NOT_FOUND:404,ENTITY_TYPE_NOT_FOUND:404,FOLDER_NOT_FOUND:404,DOCUMENT_NOT_FOUND:404,TRACK_NOT_FOUND:404,VERSION_NOT_FOUND:404,FIELD_DEFINITION_NOT_FOUND:404,SETTING_NOT_FOUND:404,WORKTREE_NOT_FOUND:404,DRAFT_NOT_FOUND:404,PARENT_NOT_FOUND:404,HEADING_NOT_FOUND:404,PROMPT_NOT_FOUND:404,OUTPUT_DOC_NOT_FOUND:404,PROMPT_DOC_NOT_FOUND:404,PARENT_TYPE_NOT_FOUND:404,ENTITY_NOT_FOUND:404,DEFINITION_NOT_FOUND:404,FIELD_NOT_FOUND:404,CONFLICT:409,STORE_NOT_EMPTY:409,EDIT_CONFLICT:409,DUPLICATE_NAME:409,DUPLICATE_PATH:409,DUPLICATE_PROJECT_PATH:409,DUPLICATE_TRACK_NAME:409,DUPLICATE_SUBTYPE_NAME:409,DUPLICATE_CLASS_ASSOCIATION:409,BRANCH_ALREADY_CHECKED_OUT:409,BRANCH_ALREADY_EXISTS:409,PARENT_DELETED:409,EXPORT_ERROR:500,STORY_ROOT_NOT_FOUND:500,ROOT_STORE_NOT_FOUND:500,SETTINGS_ROOT_NOT_FOUND:500,JOB_ROOT_NOT_FOUND:500},fG1=(_,v)=>{if(_.isDomainError){let u=GG1[_.code]??400;return v28.debug("DomainError: code=%s status=%d message=%s",_.code,u,_.message),v.status(u).json({error:_.message,code:_.code})}v28.error("Unhandled error:",_),v.status(500).json({error:_.message})},m8=fG1;var Oi=W8.create({namespace:"caw:api:projects"}),AG1=(_,{core:v})=>{return _.get("/api/projects",async(u,K)=>{try{Oi.debug("GET /api/projects - Fetching projects list");let q=await v.getProjects();Oi.debug("GET /api/projects - Returning %d projects",q.length),q.forEach((Y)=>{Oi.debug(" - %s (%s) with %d children",Y.name,Y.objectId,Y.children?.length||0)}),K.json(q)}catch(q){Oi.debug("GET /api/projects - Error: %s",q.message),m8(q,K)}}),_.post("/api/projects/validate",async(u,K)=>{try{let{path:q}=u.body,Y=v.validateProjectPath(q);K.json(Y)}catch(q){m8(q,K)}}),_.post("/api/projects",async(u,K)=>{try{let{name:q,path:Y}=u.body;if(!q||typeof q!=="string"||q.trim()==="")return K.status(400).json({error:"Name is required",code:"VALIDATION_ERROR"});if(!Y||typeof Y!=="string"||Y.trim()==="")return K.status(400).json({error:"Path is required",code:"VALIDATION_ERROR"});if(q.length>255)return K.status(400).json({error:"Name exceeds maximum length (255)",code:"VALIDATION_ERROR"});let z=await v.createProject({name:q.trim(),path:Y.trim()});K.status(201).json(z.toJSON())}catch(q){m8(q,K)}}),_.patch("/api/projects/:projectId",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y}=u.body;if(Oi.debug("PATCH /api/projects/%s - Renaming to: %s",q,Y),!Y||typeof Y!=="string"||Y.trim()==="")return K.status(400).json({error:"Name is required",code:"VALIDATION_ERROR"});if(Y.length>255)return K.status(400).json({error:"Name exceeds maximum length (255)",code:"VALIDATION_ERROR"});let z=await v.renameProject(q,{name:Y.trim()});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.delete("/api/projects/:projectId",async(u,K)=>{try{let{projectId:q}=u.params;Oi.debug("DELETE /api/projects/%s - Deleting project",q);let Y=await v.deleteProject(q);K.json(Y)}catch(q){m8(q,K)}}),Object.freeze({})},u28=Object.freeze({create:AG1});w1();var l$=W8.create({namespace:"caw:api:folders"}),K28=(_)=>({folders:_.folders.map((v)=>v.toJSON()),documents:_.documents.map((v)=>v.toJSON())}),TG1=(_,{core:v})=>{return _.get("/api/p/:projectId/folders/contents",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,type:z}=u.query;l$.debug("GET /api/p/%s/folders/contents - Listing root contents: store=%s, type=%s",q,Y,z);let c=await v.listFolderContents(q,{folderId:null,store:Y,type:z}),w=K28(c);l$.debug("GET /api/p/%s/folders/contents - Found %d folders, %d documents",q,w.folders.length,w.documents.length),K.json(w)}catch(q){l$.debug("GET /api/p/%s/folders/contents - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/folders/by-path",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,type:c}=u.query,w=await v.getFolderByPath(q,{path:Y,store:z,type:c});if(!w)return K.status(404).json({error:"Not found"});K.json(w.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/folders/draft-prompts-root",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y}=u.query,z=await v.getDraftPromptsRootFolder(q,{store:Y});if(!z)return K.status(404).json({error:"Not found"});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/folders/:id/contents",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{type:z}=u.query;l$.debug("GET /api/p/%s/folders/%s/contents - Listing folder contents: type=%s",q,Y,z);let c=await v.listFolderContents(q,{folderId:Y,type:z}),w=K28(c);l$.debug("GET /api/p/%s/folders/%s/contents - Found %d folders, %d documents",q,Y,w.folders.length,w.documents.length),K.json(w)}catch(q){l$.debug("GET /api/p/%s/folders/%s/contents - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/folders/:id/root",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;l$.debug("GET /api/p/%s/folders/%s/root - Getting root for entity",q,Y);let z=await v.getRootForEntity(q,{id:Y});l$.debug("GET /api/p/%s/folders/%s/root - Found root: %s (type=%s, subtype=%s)",q,Y,z.root.id,z.root.type,z.root.subtype),K.json(z)}catch(q){l$.debug("GET /api/p/%s/folders/%s/root - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/folders/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getFolder(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let c=[],w=z.getParentId();while(w){c.unshift(w);let J=await v.getFolder(q,{id:w});if(!J)break;w=J.getParentId()}K.json({...z.toJSON(),ancestorFolderIds:c})}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/folders",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,root:c,parentId:w,name:J,subtype:W,fields:O}=u.body,Z=Y&&z&&!c&&!w,i=c&&Y&&!z&&!w;if([Z,i,w&&J&&!Y&&!c].filter(Boolean).length!==1)return K.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let p;if(Z)p="fullPath";else if(i)p="rootRelative";else p="parentName";l$.debug("POST /api/p/%s/folders - Creating folder: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s",q,p,Y,z,c,w,J);let G=await v.createFolder(q,{mode:p,path:Y,store:z,root:c,parentId:w,name:J,subtype:W,fields:O});l$.debug("POST /api/p/%s/folders - Folder created: id=%s, path=%s",q,G.getObjectId(),G.getPath()),K.status(201).json(G.toJSON())}catch(q){l$.debug("POST /api/p/%s/folders - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/folders/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.deleteFolder(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.patch("/api/p/:projectId/folders/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z,parentId:c}=u.body;if(z&&c)return K.status(400).json({error:"Provide only name or parentId, not both",code:"INVALID_REQUEST"});if(!z&&!c)return K.status(400).json({error:"Provide name or parentId",code:"INVALID_REQUEST"});let w;if(z)w=await v.renameFolder(q,{id:Y,name:z});else w=await v.moveFolder(q,{id:Y,parentId:c});K.json(w.toJSON())}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/folders/:id/specialise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{subtype:z,fields:c}=u.body;l$.debug("POST /api/p/%s/folders/%s/specialise - subtype=%s",q,Y,z);let J=(await v.specialiseFolder(q,{id:Y,subtype:z,fields:c})).entity.toJSON();l$.debug("POST /api/p/%s/folders/%s/specialise - Success: subtype=%s",q,Y,J.subtype),K.json(J)}catch(q){l$.debug("POST /api/p/%s/folders/%s/specialise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/folders/:id/generalise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;l$.debug("POST /api/p/%s/folders/%s/generalise",q,Y);let c=(await v.generaliseFolder(q,{id:Y})).entity.toJSON();l$.debug("POST /api/p/%s/folders/%s/generalise - Success: subtype=%s",q,Y,c.subtype),K.json(c)}catch(q){l$.debug("POST /api/p/%s/folders/%s/generalise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/folders/:id/duplicate",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{targetParentId:z,name:c}=u.body;l$.debug("POST /api/p/%s/folders/%s/duplicate - targetParentId=%s, name=%s",q,Y,z,c);let w=await v.duplicateFolder(q,{sourceId:Y,targetParentId:z,newName:c}),J=w.entity;l$.debug("POST /api/p/%s/folders/%s/duplicate - Success: newId=%s, path=%s, count=%d",q,Y,J.getObjectId(),J.getPath(),w.duplicatedCount),K.status(201).json({id:J.getObjectId(),path:J.getPath(),name:J.getName(),duplicatedCount:w.duplicatedCount})}catch(q){l$.debug("POST /api/p/%s/folders/%s/duplicate - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},q28=Object.freeze({create:TG1});var PG1=(_,{core:v})=>{return _.post("/api/p/:projectId/field-definitions",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,ownerEntityId:z,ownerEntityTypeCode:c,ownerEntityTypeSubtype:w,name:J,label:W,description:O,primitiveType:Z,required:i,multiplicity:H,allowed:X}=u.body,p=await v.createFieldDefinition(q,{store:Y,ownerEntityId:z??null,ownerEntityTypeCode:c,ownerEntityTypeSubtype:w,name:J,label:W??null,description:O??null,primitiveType:Z,required:i??!1,multiplicity:H??"single",allowed:X});K.status(201).json(p.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/types/:code/:subtype/fields",async(u,K)=>{try{let{projectId:q,code:Y,subtype:z}=u.params,{store:c}=u.query,w=z==="null"?null:z,J=await v.getTypeFields(q,{store:c||"A",code:Y,subtype:w});K.json({fields:J.map((W)=>{let O=W.sourceCode!==null?W.sourceSubtype||W.sourceCode:null;return{...W.entity.toJSON(),inherited:W.inherited,sourceType:O,isVirtual:W.isVirtual||!1,sortOrder:W.sortOrder,rows:W.rows,colspan:W.colspan,classDescription:W.classDescription,hidden:W.hidden,sectionKey:W.sectionKey,sectionLabel:W.sectionLabel,sectionOrder:W.sectionOrder}})})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/types/:code/subtypes",async(u,K)=>{try{let{projectId:q,code:Y}=u.params,z=await v.listEntitySubtypes(q,{code:Y});K.json({subtypes:z})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/field-definitions/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.readFieldDefinition(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/field-definitions",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,ownerEntityId:z,includeSystem:c}=u.query,w=await v.getFieldDefinitions(q,{store:Y,ownerEntityId:z??null,includeSystem:c==="true"});K.json(w.map((J)=>J.toJSON()))}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/field-definitions/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.deleteFieldDefinition(q,{id:Y});K.json(z.toJSON())}catch(q){m8(q,K)}}),_.put("/api/p/:projectId/entities/:id/fields/:fieldName",async(u,K)=>{try{let{projectId:q,id:Y,fieldName:z}=u.params,{fieldDefinitionId:c,value:w,values:J,dependencies:W}=u.body;await v.setFieldValue(q,{entityId:Y,fieldDefinitionId:c!==void 0?c:null,fieldName:z,value:w,values:J,dependencies:W});let O=await v.readEntity(q,{id:Y});K.json(O.toJSON())}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/entities/:id/fields/:fieldName",async(u,K)=>{try{let{projectId:q,id:Y,fieldName:z}=u.params,c=await v.getFieldValue(q,{entityId:Y,fieldName:z});K.json({value:c})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/entities/:id/fields",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getFields(q,{entityId:Y}),c={};for(let[w,J]of Object.entries(z))c[w]=J.toJSON();K.json(c)}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/entities/:id/fields/:fieldName",async(u,K)=>{try{let{projectId:q,id:Y,fieldName:z}=u.params,{fieldDefinitionId:c}=u.query,w={entityId:Y,fieldName:z};if(c!==void 0)w.fieldDefinitionId=c;await v.removeFieldFromEntity(q,w),K.status(204).send()}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/entities/:entityId/fields/:fieldName/allowed-values",async(u,K)=>{try{let{projectId:q,entityId:Y,fieldName:z}=u.params,c={...u.query},w=Y?.[0],J=await v.resolveAllowedValues(q,{entityId:Y,storeCode:w,fieldName:z,dependencyValues:c});if(J.values===null)return K.status(400).json({error:"Field is not constrained",code:"FIELD_NOT_CONSTRAINED"});K.json({values:J.values,options:J.options})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/types/:typeCode/:subtype/fields/:fieldName/allowed-values",async(u,K)=>{try{let{projectId:q,typeCode:Y,subtype:z,fieldName:c}=u.params,{parentId:w,storeCode:J,...W}=u.query;if(!w||!J)return K.status(400).json({error:"parentId and storeCode are required",code:"MISSING_REQUIRED_PARAMS"});let O=z==="null"?null:z,Z={...W},i=await v.resolveAllowedValues(q,{typeCode:Y,subtype:O,parentId:w,storeCode:J,fieldName:c,dependencyValues:Z});if(i.values===null)return K.status(400).json({error:"Field is not constrained",code:"FIELD_NOT_CONSTRAINED"});K.json({values:i.values,options:i.options})}catch(q){m8(q,K)}}),_.patch("/api/p/:projectId/field-definitions/:fieldDefinitionId/config",async(u,K)=>{try{let{projectId:q,fieldDefinitionId:Y}=u.params,{config:z}=u.body,c=z?.allowed,w=z?.jsonSchema,J=await v.updateFieldDefinitionConfig(q,{id:Y,allowed:c,jsonSchema:w});K.json(J.toJSON())}catch(q){m8(q,K)}}),Object.freeze({})},Y28=Object.freeze({create:PG1});w1();var $3=W8.create({namespace:"caw:api:documents"}),jG1=(_,{core:v})=>{return _.post("/api/p/:projectId/documents",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O,fields:Z}=u.body,i=Y&&z&&!c&&!w,H=c&&Y&&!z&&!w;if([i,H,w&&J&&!Y&&!c].filter(Boolean).length!==1)return K.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let G;if(i)G="fullPath";else if(H)G="rootRelative";else G="parentName";$3.debug("POST /api/p/%s/documents - Creating document: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",q,G,Y,z,c,w,J,!!W);let f=(await v.createDocument(q,{mode:G,path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O,fields:Z})).toJSON();$3.debug("POST /api/p/%s/documents - Document created: id=%s, path=%s",q,f.id,f.path),K.status(201).json(f)}catch(q){$3.debug("POST /api/p/%s/documents - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/templates",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O}=u.body,Z=Y&&z&&!c&&!w,i=c&&Y&&!z&&!w;if([Z,i,w&&J&&!Y&&!c].filter(Boolean).length!==1)return K.status(400).json({error:"Exactly one creation mode required: (path+store), (root+path), or (parentId+name)",code:"INVALID_PARAMS"});let p;if(Z)p="fullPath";else if(i)p="rootRelative";else p="parentName";$3.debug("POST /api/p/%s/templates - Creating template: mode=%s, path=%s, store=%s, root=%s, parentId=%s, name=%s, hasContent=%s",q,p,Y,z,c,w,J,!!W);let P=(await v.createTemplate(q,{mode:p,path:Y,store:z,root:c,parentId:w,name:J,content:W,subtype:O})).toJSON();$3.debug("POST /api/p/%s/templates - Template created: id=%s, path=%s",q,P.id,P.path),K.status(201).json(P)}catch(q){$3.debug("POST /api/p/%s/templates - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/documents/by-path",async(u,K)=>{try{let{projectId:q}=u.params,{path:Y,store:z,type:c="d",resolveIncludes:w="true"}=u.query,J=await v.readDocumentByPath(q,{path:Y,store:z,type:c,resolveIncludes:w!=="false"});if(!J)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let{entity:W,ancestorFolderIds:O,resolvedContent:Z}=J,i={...W.toJSON(),ancestorFolderIds:O};if(Z!==null)i.resolvedContent=Z;K.json(i)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents",async(u,K)=>{try{let{projectId:q}=u.params,{folderId:Y,store:z,type:c="d"}=u.query,w=await v.listDocuments(q,{folderId:Y??null,store:z,type:c});K.json(w.map((J)=>J.toJSON()))}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/templates/by-type/:typeCode",async(u,K)=>{try{let{projectId:q,typeCode:Y}=u.params,{store:z}=u.query,c=await v.listTemplatesByType(q,{typeCode:Y,store:z});K.json(c)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/parameters",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getTemplateParameters(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/render",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{params:z,target:c,targetOptions:w}=u.body,J=await v.renderTemplate(q,{id:Y,params:z,target:c,targetOptions:w,sessionId:u.sessionId});K.json(J)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{resolveIncludes:z="true"}=u.query,{entity:c,ancestorFolderIds:w,resolvedContent:J,resolvedDraftContent:W}=await v.readDocument(q,{id:Y,resolveIncludes:z!=="false"});if(!c)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let O={...c.toJSON(),ancestorFolderIds:w};if(J!==null)O.resolvedContent=J;if(W!==null)O.resolvedDraftContent=W;K.json(O)}catch(q){m8(q,K)}}),_.patch("/api/p/:projectId/documents/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{path:z,parentId:c}=u.body,w=B1.getTypeFromId(Y),J=await v.updateDocumentPath(q,{id:Y,path:z,parentId:c,type:w});K.json(J.toJSON())}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/documents/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{ack:z}=u.query;$3.debug("DELETE /documents/%s transport=rest session=%s ack=%s",Y,u.sessionId??"none",z??"none");let c=await v.deleteDocument(q,{id:Y,ack:z});if(!c.deleted)return K.status(409).json(c);K.json(c)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/incoming-references",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getIncomingReferences(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.put("/api/p/:projectId/documents/:id/draft",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{content:z}=u.body,c=u.sessionId;if($3.debug("PUT /documents/%s/draft session=%s contentLen=%d",Y,c??"none",z?.length??0),z===void 0)return K.status(400).json({error:"content is required",code:"MISSING_CONTENT"});let w=await v.saveDraft(q,{id:Y,content:z,sessionId:c});K.json({id:Y,updated:!0,lockLost:w.lockLost??!1})}catch(q){$3.debug("PUT /documents/%s/draft FAILED session=%s error=%s code=%s",u.params.id,u.sessionId??"none",q.message,q.code??"none"),m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/draft",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.readDraft(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/publish",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.publishDocument(q,{id:Y,sessionId:u.sessionId});K.json(z)}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/documents/:id/draft",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;await v.discardDraft(q,{id:Y}),K.json({id:Y,discarded:!0})}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/versions",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getVersions(q,{id:Y});K.json(z)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/versions/:versionNumber",async(u,K)=>{try{let{projectId:q,id:Y,versionNumber:z}=u.params,{resolveIncludes:c="true"}=u.query,w=await v.readVersion(q,{id:Y,versionNumber:parseInt(z,10),resolveIncludes:c!=="false"});if(!w)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});let J={...w};if(w.resolvedContent!==null&&w.resolvedContent!==void 0)J.resolvedContent=w.resolvedContent;else delete J.resolvedContent;K.json(J)}catch(q){m8(q,K)}}),_.get("/api/p/:projectId/documents/:id/edit-state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=await v.getEditState(q,{id:Y});if(!z)return K.json({locked:!1});K.json({locked:!0,locked_at:z.startedAt})}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/edit-state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,z=u.sessionId;if(!z)return K.status(400).json({error:"X-Session-Id header required",code:"MISSING_SESSION_ID"});let c=await v.setEditState(q,{id:Y,sessionId:z});if($3.debug("POST /documents/%s/edit-state session=%s success=%s",Y,z,c.success),!c.success)return K.status(409).json(c);K.json(c)}catch(q){m8(q,K)}}),_.delete("/api/p/:projectId/documents/:id/edit-state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;$3.debug("DELETE /documents/%s/edit-state",Y),await v.clearEditState(q,{id:Y}),K.json({success:!0})}catch(q){m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/specialise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{subtype:z,fields:c}=u.body;$3.debug("POST /api/p/%s/documents/%s/specialise - subtype=%s, hasFields=%s",q,Y,z,!!c);let J=(await v.specialiseDocument(q,{id:Y,subtype:z,fields:c})).entity.toJSON();$3.debug("POST /api/p/%s/documents/%s/specialise - Success: subtype=%s",q,Y,J.subtype),K.json(J)}catch(q){$3.debug("POST /api/p/%s/documents/%s/specialise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/generalise",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;$3.debug("POST /api/p/%s/documents/%s/generalise",q,Y);let c=(await v.generaliseDocument(q,{id:Y})).entity.toJSON();$3.debug("POST /api/p/%s/documents/%s/generalise - Success: subtype=%s",q,Y,c.subtype),K.json(c)}catch(q){$3.debug("POST /api/p/%s/documents/%s/generalise - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/documents/:id/duplicate",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{targetParentId:z,name:c}=u.body;$3.debug("POST /api/p/%s/documents/%s/duplicate - targetParentId=%s, name=%s",q,Y,z,c);let J=(await v.duplicateDocument(q,{sourceId:Y,targetParentId:z,newName:c})).entity;$3.debug("POST /api/p/%s/documents/%s/duplicate - Success: newId=%s, path=%s",q,Y,J.getObjectId(),J.getPath()),K.status(201).json({id:J.getObjectId(),path:J.getPath(),name:J.getName()})}catch(q){$3.debug("POST /api/p/%s/documents/%s/duplicate - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},z28=Object.freeze({create:jG1});w1();import c28 from"crypto";var J5=W8.create({namespace:"caw:api:export"}),VG1=(_,{core:v})=>{return _.get("/api/p/:projectId/exports",async(u,K)=>{try{let{projectId:q}=u.params;J5.debug("GET /api/p/%s/exports - Listing export files",q);let Y=await v.listExports(q);J5.debug("GET /api/p/%s/exports - Found %d export files",q,Y.length),K.json({exports:Y})}catch(q){J5.debug("GET /api/p/:projectId/exports - Error: %s",q.message),m8(q,K)}}),_.get("/api/p/:projectId/export/preview",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y}=u.query;J5.debug("GET /api/p/%s/export/preview - Previewing export: store=%s",q,Y);let z=await v.exportPreview(q,{store:Y});J5.debug("GET /api/p/%s/export/preview - Preview complete: %d to export, %d draft-only",q,(z.toExport?.folders?.length||0)+(z.toExport?.documents?.length||0)+(z.toExport?.templates?.length||0)+(z.toExport?.stories?.length||0)+(z.toExport?.storyFolders?.length||0)+(z.toExport?.storyDocuments?.length||0)+(z.toExport?.jobs?.length||0)+(z.toExport?.jobDocuments?.length||0)+(z.toExport?.tracks?.length||0),(z.draftOnly?.documents?.length||0)+(z.draftOnly?.templates?.length||0)+(z.draftOnly?.storyDocuments?.length||0)+(z.draftOnly?.jobDocuments?.length||0)),K.json(z)}catch(q){J5.debug("GET /api/p/:projectId/export/preview - Error: %s",q.message),m8(q,K)}}),_.post("/api/p/:projectId/export",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,confirm:z,operationId:c}=u.body;if(J5.debug("POST /api/p/%s/export - Export request: store=%s, confirm=%s",q,Y,z),!z){let Z=await v.exportDocuments(q,{store:Y,confirm:!1});return J5.debug("POST /api/p/%s/export - Preview returned (confirm=false)",q),K.json(Z)}let w=c||c28.randomUUID(),J=await v.getOperationProgressObservable(q),W=(Z)=>{try{J.notify("exportProgress",{operationId:w,...Z})}catch(i){}};J.notify("exportStarted",{operationId:w});let O;try{O=await v.exportDocuments(q,{store:Y,confirm:!0,onProgress:W}),J.notify("exportCompleted",{operationId:w})}catch(Z){throw J.notify("exportCompleted",{operationId:w,error:!0}),Z}J5.debug("POST /api/p/%s/export - Export complete: %s",q,O.filename),K.json(O)}catch(q){J5.debug("POST /api/p/:projectId/export - Error: %s",q.message),m8(q,K)}}),_.post("/api/p/:projectId/import",async(u,K)=>{try{let{projectId:q}=u.params,{filename:Y,store:z,operationId:c}=u.body;J5.debug("POST /api/p/%s/import - Import request: filename=%s, store=%s",q,Y,z);let w=c||c28.randomUUID(),J=await v.getOperationProgressObservable(q),W=(Z)=>{try{J.notify("importProgress",{operationId:w,...Z})}catch(i){}};J.notify("importStarted",{operationId:w});let O;try{O=await v.importDocuments(q,{filename:Y,store:z,onProgress:W}),J.notify("importCompleted",{operationId:w})}catch(Z){throw J.notify("importCompleted",{operationId:w,error:!0}),Z}J5.debug("POST /api/p/%s/import - Import complete: %d folders, %d templateFolders, %d storyFolders, %d documents, %d storyDocuments, %d jobDocuments, %d templates, %d stories, %d jobs",q,O.counts?.folders||0,O.counts?.templateFolders||0,O.counts?.storyFolders||0,O.counts?.documents||0,O.counts?.storyDocuments||0,O.counts?.jobDocuments||0,O.counts?.templates||0,O.counts?.stories||0,O.counts?.jobs||0),K.json(O)}catch(q){J5.debug("POST /api/p/:projectId/import - Error: %s",q.message),m8(q,K)}}),Object.freeze({})},w28=Object.freeze({create:VG1});w1();import J28 from"crypto";var W5=W8.create({namespace:"caw:api:export"}),nG1=(_,{core:v})=>{return _.get("/api/shared/exports",async(u,K)=>{try{W5.debug("GET /api/shared/exports - Listing shared store export files");let q=await v.listGlobalExports();W5.debug("GET /api/shared/exports - Found %d export files",q.length),K.json({exports:q})}catch(q){W5.debug("GET /api/shared/exports - Error: %s",q.message),m8(q,K)}}),_.get("/api/shared/export/preview",async(u,K)=>{try{W5.debug("GET /api/shared/export/preview - Previewing shared store export");let q=await v.globalExportPreview();W5.debug("GET /api/shared/export/preview - Preview complete: %d to export, %d draft-only",(q.toExport?.folders?.length||0)+(q.toExport?.documents?.length||0)+(q.toExport?.templates?.length||0),(q.draftOnly?.documents?.length||0)+(q.draftOnly?.templates?.length||0)),K.json(q)}catch(q){W5.debug("GET /api/shared/export/preview - Error: %s",q.message),m8(q,K)}}),_.post("/api/shared/export",async(u,K)=>{try{let{confirm:q,operationId:Y}=u.body;if(W5.debug("POST /api/shared/export - Export request: confirm=%s",q),!q){let W=await v.globalExportDocuments({confirm:!1});return W5.debug("POST /api/shared/export - Preview returned (confirm=false)"),K.json(W)}let z=Y||J28.randomUUID(),c=v.getServerObservable(),w=(W)=>{try{c.notify("exportProgress",{operationId:z,...W})}catch(O){}};c.notify("exportStarted",{operationId:z});let J;try{J=await v.globalExportDocuments({confirm:!0,onProgress:w}),c.notify("exportCompleted",{operationId:z})}catch(W){throw c.notify("exportCompleted",{operationId:z,error:!0}),W}W5.debug("POST /api/shared/export - Export complete: %s",J.filename),K.json(J)}catch(q){W5.debug("POST /api/shared/export - Error: %s",q.message),m8(q,K)}}),_.post("/api/shared/import",async(u,K)=>{try{let{filename:q,operationId:Y}=u.body;W5.debug("POST /api/shared/import - Import request: filename=%s",q);let z=Y||J28.randomUUID(),c=v.getServerObservable(),w=(W)=>{try{c.notify("importProgress",{operationId:z,...W})}catch(O){}};c.notify("importStarted",{operationId:z});let J;try{J=await v.globalImportDocuments({filename:q,onProgress:w}),c.notify("importCompleted",{operationId:z})}catch(W){throw c.notify("importCompleted",{operationId:z,error:!0}),W}W5.debug("POST /api/shared/import - Import complete: %d folders, %d templateFolders, %d storyFolders, %d documents, %d storyDocuments, %d jobDocuments, %d templates, %d stories, %d jobs",J.counts?.folders||0,J.counts?.templateFolders||0,J.counts?.storyFolders||0,J.counts?.documents||0,J.counts?.storyDocuments||0,J.counts?.jobDocuments||0,J.counts?.templates||0,J.counts?.stories||0,J.counts?.jobs||0),K.json(J)}catch(q){W5.debug("POST /api/shared/import - Error: %s",q.message),m8(q,K)}}),Object.freeze({})},W28=Object.freeze({create:nG1});w1();var o7=W8.create({namespace:"caw:api:shared-tracks"}),MG1=(_,{core:v})=>{return _.get("/api/shared/tracks",async(u,K)=>{try{o7.debug("GET /api/shared/tracks - Listing shared tracks");let q=await v.listSharedTracks();o7.debug("GET /api/shared/tracks - Found %d tracks",q.length),K.json(q)}catch(q){o7.debug("GET /api/shared/tracks - Error: %s",q.message),m8(q,K)}}),_.post("/api/shared/tracks",async(u,K)=>{try{let{name:q,states:Y}=u.body;if(!q)return K.status(400).json({error:"Name is required",code:"MISSING_NAME"});if(!Y||!Array.isArray(Y)||Y.length===0)return K.status(400).json({error:"States array is required",code:"EMPTY_STATES"});o7.debug("POST /api/shared/tracks - Creating track: name=%s, states=%j",q,Y);let z=await v.createSharedTrack({name:q,states:Y});K.status(201).json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){o7.debug("POST /api/shared/tracks - Error: %s",q.message),m8(q,K)}}),_.get("/api/shared/tracks/:id",async(u,K)=>{try{let{id:q}=u.params;o7.debug("GET /api/shared/tracks/%s - Getting track",q);let Y=await v.getSharedTrack({id:q});if(!Y)return K.status(404).json({error:"Track not found",code:"NOT_FOUND"});K.json({...Y.toJSON(),storeCode:W1.extractStoreCode(Y.getObjectId())})}catch(q){o7.debug("GET /api/shared/tracks/%s - Error: %s",u.params.id,q.message),m8(q,K)}}),_.put("/api/shared/tracks/:id",async(u,K)=>{try{let{id:q}=u.params,{name:Y,states:z,renames:c}=u.body;if(!Y&&!z)return K.status(400).json({error:"At least one of name or states is required",code:"MISSING_UPDATE_DATA"});if(z&&(!Array.isArray(z)||z.length===0))return K.status(400).json({error:"States must be a non-empty array",code:"EMPTY_STATES"});o7.debug("PUT /api/shared/tracks/%s - Updating track: name=%s, states=%j, renames=%j",q,Y,z,c);let w=await v.updateSharedTrack({id:q,name:Y,states:z,renames:c});K.json({...w.toJSON(),storeCode:W1.extractStoreCode(w.getObjectId())})}catch(q){o7.debug("PUT /api/shared/tracks/%s - Error: %s",u.params.id,q.message),m8(q,K)}}),_.delete("/api/shared/tracks/:id",async(u,K)=>{try{let{id:q}=u.params;o7.debug("DELETE /api/shared/tracks/%s - Deleting track",q);let Y=await v.deleteSharedTrack({id:q});K.json({...Y,storeCode:W1.extractStoreCode(q)})}catch(q){o7.debug("DELETE /api/shared/tracks/%s - Error: %s",u.params.id,q.message),m8(q,K)}}),Object.freeze({})},O28=Object.freeze({create:MG1});w1();var a3=W8.create({namespace:"caw:api:stories"}),xG1=(_,{core:v})=>{return _.post("/api/p/:projectId/stories",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y,store:z="A",state:c,track:w,phase:J}=u.body;a3.debug("POST /api/p/%s/stories - Creating story: name=%s, store=%s, state=%s, track=%s, phase=%s",q,Y,z,c,w,J);let{story:W,tasksFolder:O}=await v.createStory(q,{name:Y,store:z,state:c,track:w,phase:J}),Z=W1.extractStoreCode(W.getObjectId());K.status(201).json({...W.toJSON(),storeCode:Z,tasksFolder:O.toJSON()})}catch(q){a3.debug("POST /api/p/%s/stories - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/stories",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",state:z,phase:c,track:w,flag:J,sort_by:W,sort_dir:O,limit:Z,offset:i}=u.query;a3.debug("GET /api/p/%s/stories - Listing stories: store=%s",q,Y);let H=await v.listStories(q,{store:Y,state:z,phase:c,track:w,flag:J,sortBy:W,sortDir:O,limit:Z!==void 0?parseInt(Z,10):void 0,offset:i!==void 0?parseInt(i,10):void 0});K.json({stories:H.stories.map((X)=>({...X.toJSON(),storeCode:W1.extractStoreCode(X.getObjectId())})),total:H.total,limit:H.limit,offset:H.offset})}catch(q){a3.debug("GET /api/p/%s/stories - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/stories/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;a3.debug("GET /api/p/%s/stories/%s - Getting story",q,Y);let z=await v.getStory(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){a3.debug("GET /api/p/%s/stories/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/stories/:id/state",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{state:z}=u.body;if(!z)return K.status(400).json({error:"State is required",code:"MISSING_STATE"});a3.debug("PATCH /api/p/%s/stories/%s/state - Updating state to: %s",q,Y,z);let c=await v.updateStoryState(q,{id:Y,state:z});K.json({...c.toJSON(),storeCode:W1.extractStoreCode(c.getObjectId())})}catch(q){a3.debug("PATCH /api/p/%s/stories/%s/state - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/stories/:id/track",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{track:z,targetState:c}=u.body;if(!z)return K.status(400).json({error:"Track is required",code:"MISSING_TRACK"});a3.debug("PATCH /api/p/%s/stories/%s/track - Changing track to: %s",q,Y,z);let w=await v.changeTrack(q,{id:Y,track:z,targetState:c});K.json({...w.toJSON(),storeCode:W1.extractStoreCode(w.getObjectId())})}catch(q){a3.debug("PATCH /api/p/%s/stories/%s/track - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/stories/:id/name",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z}=u.body;if(!z)return K.status(400).json({error:"Name is required",code:"MISSING_NAME"});a3.debug("PATCH /api/p/%s/stories/%s/name - Renaming to: %s",q,Y,z);let c=await v.renameStory(q,{id:Y,name:z});K.json({...c.toJSON(),storeCode:W1.extractStoreCode(c.getObjectId())})}catch(q){a3.debug("PATCH /api/p/%s/stories/%s/name - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.put("/api/p/:projectId/stories/reorder",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",storyId:z,afterId:c=null}=u.body;if(!z)return K.status(400).json({error:"storyId is required",code:"MISSING_STORY_ID"});if(z.length<3||z[1]!=="s")return K.status(400).json({error:`Entity ${z} is not a story`,code:"INVALID_ENTITY_TYPE"});a3.debug("PUT /api/p/%s/stories/reorder - storyId=%s, afterId=%s",q,z,c),await v.reorderSingle(q,{store:Y,storyId:z,afterId:c}),K.json({ok:!0})}catch(q){a3.debug("PUT /api/p/%s/stories/reorder - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/stories/reorder-bulk",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",phase:z,orderedIds:c}=u.body;if(c===void 0||c===null)return K.status(400).json({error:"orderedIds is required",code:"MISSING_ORDERED_IDS"});if(!Array.isArray(c))return K.status(400).json({error:"orderedIds must be an array",code:"INVALID_ORDERED_IDS"});if(!z)return K.status(400).json({error:"phase is required",code:"MISSING_PHASE"});a3.debug("PUT /api/p/%s/stories/reorder-bulk - phase=%s, orderedIds=%d items",q,z,c.length),await v.reorderStories(q,{store:Y,phase:z,orderedIds:c}),K.json({ok:!0})}catch(q){a3.debug("PUT /api/p/%s/stories/reorder-bulk - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/stories/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;a3.debug("DELETE /api/p/%s/stories/%s - Deleting story",q,Y);let z=await v.deleteStory(q,{id:Y});K.json({...z,storeCode:W1.extractStoreCode(z.id)})}catch(q){a3.debug("DELETE /api/p/%s/stories/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},Z28=Object.freeze({create:xG1});w1();var XK=W8.create({namespace:"caw:api:tracks"}),NG1=(_,{core:v})=>{return _.get("/api/p/:projectId/tracks",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A"}=u.query;XK.debug("GET /api/p/%s/tracks - Listing tracks: store=%s",q,Y);let z=await v.listTracks(q,{store:Y});K.json(z)}catch(q){XK.debug("GET /api/p/%s/tracks - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/tracks",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y,states:z,store:c="A"}=u.body;if(!Y)return K.status(400).json({error:"Name is required",code:"MISSING_NAME"});if(!z||!Array.isArray(z)||z.length===0)return K.status(400).json({error:"States array is required",code:"EMPTY_STATES"});XK.debug("POST /api/p/%s/tracks - Creating track: name=%s, states=%j, store=%s",q,Y,z,c);let w=await v.createTrack(q,{name:Y,states:z,store:c});K.status(201).json({...w.toJSON(),storeCode:W1.extractStoreCode(w.getObjectId())})}catch(q){XK.debug("POST /api/p/%s/tracks - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/tracks/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;XK.debug("GET /api/p/%s/tracks/%s - Getting track",q,Y);let z=await v.getTrack(q,{id:Y});if(!z)return K.status(404).json({error:"Track not found",code:"NOT_FOUND"});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){XK.debug("GET /api/p/%s/tracks/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.put("/api/p/:projectId/tracks/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z,states:c,renames:w}=u.body;if(!z&&!c)return K.status(400).json({error:"At least one of name or states is required",code:"MISSING_UPDATE_DATA"});if(c&&(!Array.isArray(c)||c.length===0))return K.status(400).json({error:"States must be a non-empty array",code:"EMPTY_STATES"});XK.debug("PUT /api/p/%s/tracks/%s - Updating track: name=%s, states=%j, renames=%j",q,Y,z,c,w);let J=await v.updateTrack(q,{id:Y,name:z,states:c,renames:w});K.json({...J.toJSON(),storeCode:W1.extractStoreCode(J.getObjectId())})}catch(q){XK.debug("PUT /api/p/%s/tracks/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/tracks/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;XK.debug("DELETE /api/p/%s/tracks/%s - Deleting track",q,Y);let z=await v.deleteTrack(q,{id:Y});K.json({...z,storeCode:W1.extractStoreCode(Y)})}catch(q){XK.debug("DELETE /api/p/%s/tracks/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},i28=Object.freeze({create:NG1});w1();var Cv=W8.create({namespace:"caw:api:settings"}),kG1=(_,{core:v})=>{return _.get("/api/p/:projectId/settings/system",async(u,K)=>{try{let{projectId:q}=u.params;Cv.debug("GET /api/p/%s/settings/system",q);let Y=await v.getSystemSettings(q);K.json(Y)}catch(q){Cv.debug("GET /api/p/%s/settings/system - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/settings/system",async(u,K)=>{try{let{projectId:q}=u.params,Y=u.body??{};Cv.debug("PUT /api/p/%s/settings/system",q);let z=await v.updateSystemSettings(q,{settings:Y});K.json(z)}catch(q){Cv.debug("PUT /api/p/%s/settings/system - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/settings/rag-defaults/affected-count",async(u,K)=>{try{let{projectId:q}=u.params,{typeCode:Y,subtype:z,targetValue:c,storeCode:w="A"}=u.query;if(Cv.debug("GET /api/p/%s/settings/rag-defaults/affected-count",q),!Y||!c)return K.status(400).json({error:"typeCode and targetValue are required",code:"MISSING_REQUIRED_PARAM"});let J=await v.getAffectedEntityCount(q,{typeCode:Y,subtype:z??null,targetValue:c},w);K.json(J)}catch(q){Cv.debug("GET /api/p/%s/settings/rag-defaults/affected-count - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/settings/rag-defaults",async(u,K)=>{try{let{projectId:q}=u.params,{storeCode:Y="A"}=u.query;Cv.debug("GET /api/p/%s/settings/rag-defaults",q);let z=await v.getRagIndexedDefaults(q,Y);K.json(z)}catch(q){Cv.debug("GET /api/p/%s/settings/rag-defaults - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/settings/rag-defaults",async(u,K)=>{try{let{projectId:q}=u.params,{storeCode:Y="A"}=u.query,{defaults:z={},applyToExisting:c=[]}=u.body??{};Cv.debug("PUT /api/p/%s/settings/rag-defaults",q);let w=await v.updateRagIndexedDefaults(q,{defaults:z,applyToExisting:c},Y);K.json(w)}catch(q){Cv.debug("PUT /api/p/%s/settings/rag-defaults - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/settings/rag-defaults/affected-count",async(u,K)=>{try{let{typeCode:q,subtype:Y,targetValue:z}=u.query;if(Cv.debug("GET /api/settings/rag-defaults/affected-count (Store B)"),!q||!z)return K.status(400).json({error:"typeCode and targetValue are required",code:"MISSING_REQUIRED_PARAM"});let c=await v.getAffectedEntityCount(null,{typeCode:q,subtype:Y??null,targetValue:z},"B");K.json(c)}catch(q){Cv.debug("GET /api/settings/rag-defaults/affected-count (Store B) - Error: %s",q.message),m8(q,K)}}),_.get("/api/settings/rag-defaults",async(u,K)=>{try{Cv.debug("GET /api/settings/rag-defaults (Store B)");let q=await v.getRagIndexedDefaults(null,"B");K.json(q)}catch(q){Cv.debug("GET /api/settings/rag-defaults (Store B) - Error: %s",q.message),m8(q,K)}}),_.put("/api/settings/rag-defaults",async(u,K)=>{try{let{defaults:q={},applyToExisting:Y=[]}=u.body??{};Cv.debug("PUT /api/settings/rag-defaults (Store B)");let z=await v.updateRagIndexedDefaults(null,{defaults:q,applyToExisting:Y},"B");K.json(z)}catch(q){Cv.debug("PUT /api/settings/rag-defaults (Store B) - Error: %s",q.message),m8(q,K)}}),Object.freeze({})},H28=Object.freeze({create:kG1});w1();var hR=g_(l18(),1);var Y7=W8.create({namespace:"caw:api:assets"}),y18=["image/png","image/jpeg","image/gif","image/webp"],gP1=hR.default({storage:hR.default.memoryStorage(),limits:{fileSize:10485760},fileFilter:(_,v,u)=>{if(y18.includes(v.mimetype))u(null,!0);else u(Error(`Unsupported MIME type: ${v.mimetype}. Allowed: ${y18.join(", ")}`))}}),SP1=(_,{core:v})=>{return _.post("/api/p/:projectId/assets",gP1.single("file"),async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A"}=u.query,z=u.file;if(!z)return K.status(400).json({error:"No file uploaded",code:"MISSING_FILE"});let c=u.body.widthPx?parseInt(u.body.widthPx,10):void 0,w=u.body.heightPx?parseInt(u.body.heightPx,10):void 0,J=u.body.displayWidth?parseInt(u.body.displayWidth,10):void 0,W=u.body.displayHeight?parseInt(u.body.displayHeight,10):void 0;Y7.debug("POST /api/p/%s/assets - Uploading: %s (%s, %d bytes)",q,z.originalname,z.mimetype,z.size);let O=await v.createAsset(q,{store:Y,buffer:z.buffer,mimeType:z.mimetype,originalFilename:z.originalname,widthPx:c,heightPx:w,displayWidth:J,displayHeight:W});K.status(201).json(O)}catch(q){Y7.debug("POST /api/p/%s/assets - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets/:id/binary",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;Y7.debug("GET /api/p/%s/assets/%s/binary - Retrieving binary",q,Y);let z=await v.readAssetBinary(q,{id:Y});K.set("Content-Type",z.mimeType),K.set("Content-Length",z.sizeBytes),K.set("Cache-Control","public, max-age=31536000, immutable"),K.set("Content-Disposition",`inline; filename="${z.originalFilename}"`),K.send(z.buffer)}catch(q){Y7.debug("GET /api/p/%s/assets/%s/binary - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets/:id/references",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{exclude:z}=u.query;if(Y7.debug("GET /api/p/%s/assets/%s/references - Getting references",q,Y),!/^[A-Z]a\d+$/.test(Y))return K.status(400).json({error:`Invalid asset ID format: ${Y}`,code:"INVALID_ID"});let c=await v.getAssetReferences(q,{id:Y,excludeDocumentId:z});K.json({references:c})}catch(q){Y7.debug("GET /api/p/%s/assets/%s/references - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;Y7.debug("GET /api/p/%s/assets/%s - Retrieving metadata",q,Y);let z=await v.readAsset(q,{id:Y});K.json(z)}catch(q){Y7.debug("GET /api/p/%s/assets/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/assets",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A"}=u.query;Y7.debug("GET /api/p/%s/assets - Listing assets for store %s",q,Y);let z=await v.listAssets(q,{store:Y});K.json(z)}catch(q){Y7.debug("GET /api/p/%s/assets - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.delete("/api/p/:projectId/assets/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;Y7.debug("DELETE /api/p/%s/assets/%s - Deleting asset",q,Y);let z=await v.deleteAsset(q,{id:Y});K.json(z)}catch(q){Y7.debug("DELETE /api/p/%s/assets/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.use("/api/p/:projectId/assets",(u,K,q,Y)=>{if(u instanceof hR.default.MulterError){if(u.code==="LIMIT_FILE_SIZE")return q.status(400).json({error:"File too large. Maximum size is 10MB.",code:"FILE_TOO_LARGE"});return q.status(400).json({error:u.message,code:"UPLOAD_ERROR"})}if(u.message&&u.message.includes("Unsupported MIME type"))return q.status(400).json({error:u.message,code:"UNSUPPORTED_MIME_TYPE"});Y(u)}),Object.freeze({})},B18=Object.freeze({create:SP1});w1();var b3=W8.create({namespace:"caw:api:jobs"}),aP1=(_,{core:v})=>{return _.post("/api/p/:projectId/jobs",async(u,K)=>{try{let{projectId:q}=u.params,{name:Y,agent:z,model:c,effortLevel:w,prompt:J,promptDocumentId:W,store:O="A",workingDirectory:Z,objectId:i,dockerImage:H,skipPermissions:X,clearStoryFlag:p,clearStatusMessage:G,parentJobId:P,blocking:f,resumePromptRef:T}=u.body;b3.debug("POST /api/p/%s/jobs - Creating job: agent=%s, model=%s, effortLevel=%s, store=%s, workingDirectory=%s, objectId=%s, skipPermissions=%s, dockerImage=%s, clearStoryFlag=%s, clearStatusMessage=%s, parentJobId=%s, blocking=%s",q,z,c,w||"default",O,Z||"default",i||"none",X,H||"none",p,G,P||"none",f);let j=await v.createJob(q,{name:Y,agent:z,model:c,effortLevel:w,prompt:J,promptDocumentId:W,store:O,workingDirectory:Z,objectId:i,dockerImage:H,skipPermissions:X,clearStoryFlag:p,clearStatusMessage:G,parentJobId:P,blocking:f,resumePromptRef:T});K.status(201).json({...j.toJSON(),storeCode:W1.extractStoreCode(j.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/jobs",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y="A",status:z,completedAfter:c,completedBefore:w,sortBy:J,sortDir:W,limit:O,offset:Z,treeMode:i,objectId:H,pinned:X}=u.query,p=z?z.split(",").map((k)=>k.trim()).filter(Boolean):void 0,G=O!==void 0?parseInt(O,10):50,P=Z!==void 0?parseInt(Z,10):0,f=i==="true"?!0:i==="false"?!1:void 0,T=X==="true"?"true":void 0;b3.debug("GET /api/p/%s/jobs - Listing jobs: store=%s, status=%s, sortBy=%s, sortDir=%s, limit=%d, offset=%d, treeMode=%s",q,Y,z||"all",J||"startedAt",W||"desc",G,P,i||"false");let j=await v.listJobs(q,{store:Y,status:p,completedAfter:c,completedBefore:w,sortBy:J,sortDir:W,limit:G,offset:P,treeMode:f,objectId:H||void 0,pinned:T});K.json({jobs:j.jobs.map((k)=>({...k.toJSON(),storeCode:W1.extractStoreCode(k.getObjectId())})),total:j.total,limit:j.limit,offset:j.offset})}catch(q){b3.debug("GET /api/p/%s/jobs - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/jobs/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("GET /api/p/%s/jobs/%s - Getting job",q,Y);let z=await v.getJob(q,{id:Y});if(!z)return K.status(404).json({error:"Not found",code:"NOT_FOUND"});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("GET /api/p/%s/jobs/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/continue",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{prompt:z,promptDocumentId:c,model:w,effortLevel:J,workingDirectory:W,dockerImage:O,skipPermissions:Z}=u.body;b3.debug("POST /api/p/%s/jobs/%s/continue - Continuing job (effortLevel=%s, workingDirectory=%s, dockerImage=%s, skipPermissions=%s)",q,Y,J||"carry-forward",W,O,Z);let i=await v.continueJob(q,{id:Y,prompt:z,promptDocumentId:c,model:w,effortLevel:J,workingDirectory:W,dockerImage:O,skipPermissions:Z});K.json({...i.toJSON(),storeCode:W1.extractStoreCode(i.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/continue - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/resume",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("POST /api/p/%s/jobs/%s/resume - Resuming job",q,Y);let z=await v.resumeJob(q,Y);K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/resume - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/cancel-resume",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("POST /api/p/%s/jobs/%s/cancel-resume - Cancelling resume",q,Y);let z=await v.cancelJobResume(q,Y);K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/cancel-resume - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.post("/api/p/:projectId/jobs/:id/stop",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("POST /api/p/%s/jobs/%s/stop - Stopping job",q,Y);let z=await v.stopJob(q,{id:Y});K.json({...z.toJSON(),storeCode:W1.extractStoreCode(z.getObjectId())})}catch(q){b3.debug("POST /api/p/%s/jobs/%s/stop - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.get("/api/p/:projectId/jobs/:id/process-status",async(u,K)=>{try{let{projectId:q,id:Y}=u.params;b3.debug("GET /api/p/%s/jobs/%s/process-status",q,Y);let z=await v.getProcessStatus(q,{id:Y});K.json(z)}catch(q){b3.debug("GET /api/p/%s/jobs/%s/process-status - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),_.patch("/api/p/:projectId/jobs/:id",async(u,K)=>{try{let{projectId:q,id:Y}=u.params,{name:z}=u.body;b3.debug("PATCH /api/p/%s/jobs/%s - Renaming job",q,Y);let c=await v.renameJob(q,{id:Y,name:z});K.json({...c.toJSON(),storeCode:W1.extractStoreCode(c.getObjectId())})}catch(q){b3.debug("PATCH /api/p/%s/jobs/%s - Error: %s",u.params.projectId,u.params.id,q.message),m8(q,K)}}),Object.freeze({})},U18=Object.freeze({create:aP1});w1();var Ti=W8.create({namespace:"caw:api:worktrees"}),bP1=(_,{core:v})=>{return _.get("/api/p/:projectId/worktrees",async(u,K)=>{try{let{projectId:q}=u.params;Ti.debug("GET /api/p/%s/worktrees - Listing worktrees",q);let Y=await v.listWorktrees(q);Ti.debug("GET /api/p/%s/worktrees - Found %d worktrees, isGitProject=%s",q,Y.worktrees.length,Y.isGitProject),K.json(Y)}catch(q){Ti.debug("GET /api/p/%s/worktrees - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/worktrees",async(u,K)=>{try{let{projectId:q}=u.params,{branch:Y,baseBranch:z}=u.body;Ti.debug("POST /api/p/%s/worktrees - Creating worktree: branch=%s, baseBranch=%s",q,Y,z||"default");let c=await v.createWorktree(q,{branch:Y,baseBranch:z});Ti.debug("POST /api/p/%s/worktrees - Created worktree at %s for branch %s",q,c.path,c.branch),K.status(201).json(c)}catch(q){Ti.debug("POST /api/p/%s/worktrees - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},F18=Object.freeze({create:bP1});w1();var P22=W8.create({namespace:"caw:api:search"}),IP1=(_,{core:v})=>{return _.get("/api/p/:projectId/search",async(u,K)=>{try{let{projectId:q}=u.params,{q:Y,store:z,limit:c,offset:w}=u.query,J=c?parseInt(c,10):20,W=w?parseInt(w,10):0,O=c?parseInt(c,10):void 0,Z=w?parseInt(w,10):void 0;P22.debug("GET /api/p/%s/search - q=%s, store=%s, limit=%s, offset=%s",q,Y,z,c,w);let{results:i,total:H,debug:X,embeddingStatus:p}=await v.searchContent(q,{query:Y,limit:O,offset:Z,store:z});P22.debug("GET /api/p/%s/search - Results count: %d, total: %d",q,i.length,H),K.json({hits:i,total:H,limit:J,offset:W,debug:X,embeddingStatus:p})}catch(q){P22.debug("GET /api/p/%s/search - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},Q18=Object.freeze({create:IP1});w1();var z7=W8.create({namespace:"caw:api:embedding"}),lP1=(_,{core:v})=>{return _.post("/api/p/:projectId/embeddings/reindex",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y}=u.query;z7.debug("POST /api/p/%s/embeddings/reindex store=%s",q,Y);let z=await v.reindexEmbeddings(q,{store:Y});z7.debug("POST /api/p/%s/embeddings/reindex - enqueued: %d, operationId: %s",q,z.enqueued,z.operationId),K.json(z)}catch(q){z7.debug("POST /api/p/%s/embeddings/reindex - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/embeddings/status",async(u,K)=>{try{let{projectId:q}=u.params,Y=u.query.store??"A";z7.debug("GET /api/p/%s/embeddings/status store=%s",q,Y);let z=await v.getEmbeddingStatus(q,{store:Y});z7.debug("GET /api/p/%s/embeddings/status - status: %s",q,z.status),K.json(z)}catch(q){z7.debug("GET /api/p/%s/embeddings/status - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/embeddings/process-batch",async(u,K)=>{try{let{projectId:q}=u.params;z7.debug("POST /api/p/%s/embeddings/process-batch",q);let Y=await v.processEmbeddingBatch(q);z7.debug("POST /api/p/%s/embeddings/process-batch - triggered: %s",q,Y.triggered),K.json(Y)}catch(q){z7.debug("POST /api/p/%s/embeddings/process-batch - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/embeddings/clear-error",async(u,K)=>{try{let{projectId:q}=u.params,Y=u.query.store??"A";z7.debug("POST /api/p/%s/embeddings/clear-error store=%s",q,Y);let z=await v.clearEmbeddingError(q,{store:Y});z7.debug("POST /api/p/%s/embeddings/clear-error - status: %s",q,z.status),K.json(z)}catch(q){z7.debug("POST /api/p/%s/embeddings/clear-error - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},o18=Object.freeze({create:lP1});w1();var kz=W8.create({namespace:"caw:api:deleted-items"}),yP1=(_,{core:v})=>{return _.get("/api/p/:projectId/deleted-events",async(u,K)=>{try{let{projectId:q}=u.params,{store:Y,limit:z,offset:c}=u.query,w=z?parseInt(z,10):50,J=c?parseInt(c,10):0;kz.debug("GET /api/p/%s/deleted-events",q);let W=await v.listDeletedEvents(q,{store:Y??"A",limit:w,offset:J});kz.debug("GET /api/p/%s/deleted-events - Found %d events",q,W.total),K.json({events:W.events,total:W.total,limit:w,offset:J})}catch(q){kz.debug("GET /api/p/%s/deleted-events - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/deleted-events/:rootEntityId/items",async(u,K)=>{try{let{projectId:q,rootEntityId:Y}=u.params,{store:z,limit:c,offset:w}=u.query,J=c?parseInt(c,10):50,W=w?parseInt(w,10):0;kz.debug("GET /api/p/%s/deleted-events/%s/items",q,Y);let O=await v.getDeletedEvent(q,{rootEntityId:Y,store:z??"A",limit:J,offset:W});K.json(O)}catch(q){kz.debug("GET /api/p/%s/deleted-events/%s/items - Error: %s",u.params.projectId,u.params.rootEntityId,q.message),m8(q,K)}}),_.post("/api/p/:projectId/deleted-events/:rootEntityId/restore",async(u,K)=>{try{let{projectId:q,rootEntityId:Y}=u.params,{store:z}=u.body??{};kz.debug("POST /api/p/%s/deleted-events/%s/restore",q,Y);let c=await v.restoreDeletedEvent(q,{rootEntityId:Y,store:z??"A"});kz.debug("POST /api/p/%s/deleted-events/%s/restore - Restored: name=%s",q,Y,c.name),K.json(c)}catch(q){kz.debug("POST /api/p/%s/deleted-events restore - Error: %s",u.params.projectId,q.message),m8(q,K)}}),Object.freeze({})},d18=Object.freeze({create:yP1});w1();var Dz=W8.create({namespace:"caw:api:agents"}),BP1=(_,{core:v})=>{return _.get("/api/p/:projectId/agents/models",async(u,K)=>{try{let{projectId:q}=u.params;Dz.debug("GET /api/p/%s/agents/models",q);let Y=await v.getAgentModelConfig(q);K.json(Y)}catch(q){Dz.debug("GET /api/p/%s/agents/models - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.get("/api/p/:projectId/agents/models/:agent",async(u,K)=>{try{let{projectId:q,agent:Y}=u.params;Dz.debug("GET /api/p/%s/agents/models/%s",q,Y);let z=await v.getAgentModelConfig(q,Y);K.json(z)}catch(q){Dz.debug("GET /api/p/%s/agents/models/%s - Error: %s",u.params.projectId,u.params.agent,q.message),m8(q,K)}}),_.get("/api/p/:projectId/agents/mcp-status",async(u,K)=>{try{let{projectId:q}=u.params;Dz.debug("GET /api/p/%s/agents/mcp-status",q);let Y=await v.getAgentMcpStatus(q);K.json(Y)}catch(q){Dz.debug("GET /api/p/%s/agents/mcp-status - Error: %s",u.params.projectId,q.message),m8(q,K)}}),_.put("/api/p/:projectId/agents/models/:agent",async(u,K)=>{try{let{projectId:q,agent:Y}=u.params,{availableModels:z,defaultModel:c,availableEffortLevels:w,defaultEffortLevel:J}=u.body;Dz.debug("PUT /api/p/%s/agents/models/%s",q,Y),await v.updateAgentModelConfig(q,Y,{availableModels:z,defaultModel:c,availableEffortLevels:w,defaultEffortLevel:J});let W=await v.getAgentModelConfig(q,Y);K.json(W)}catch(q){Dz.debug("PUT /api/p/%s/agents/models/%s - Error: %s",u.params.projectId,u.params.agent,q.message),m8(q,K)}}),Object.freeze({})},r18=Object.freeze({create:BP1});w1();var j22=W8.create({namespace:"caw:api:integrations"}),UP1=(_,{core:v})=>{return _.get("/api/integrations",async(u,K)=>{try{j22.debug("GET /api/integrations");let q=await v.getIntegrations();K.json(q)}catch(q){m8(q,K)}}),_.post("/api/integrations/refresh",async(u,K)=>{try{j22.debug("POST /api/integrations/refresh");let q=await v.refreshIntegrations();K.json(q)}catch(q){m8(q,K)}}),_.get("/api/integrations/:name/status",async(u,K)=>{try{let{name:q}=u.params;if(j22.debug("GET /api/integrations/%s/status",q),!Jw.getByName(q))return K.status(404).json({error:`Unknown integration: ${q}`});let Y=await v.checkIntegrationStatus(q);K.json(Y)}catch(q){m8(q,K)}}),Object.freeze({})},s18=Object.freeze({create:UP1});w1();var t18=W8.create({namespace:"caw:api:config"}),FP1=(_,{core:v})=>{return _.get("/api/system/config",async(u,K)=>{try{t18.debug("GET /api/system/config");let q=v.getSystemConfig();K.json(q)}catch(q){m8(q,K)}}),_.post("/api/system/config/pending",async(u,K)=>{try{t18.debug("POST /api/system/config/pending");let q=v.writeSystemPendingConfig(u.body);K.json(q)}catch(q){m8(q,K)}}),Object.freeze({})},e18=Object.freeze({create:FP1});w1();var tq=W8.create({namespace:"caw:api:events"}),QP1=(_,{core:v})=>{return _.get("/api/p/:projectId/events",async(u,K)=>{try{let{projectId:q}=u.params;tq.debug("GET /api/p/%s/events - Client connecting",q);let Y=await v.getRootStore(q),z=await v.getStoryService(q),c=await v.getJobService(q),w=await v.getOperationProgressObservable(q);tq.debug("GET /api/p/%s/events - Got root store and services, setting up SSE subscription",q),K.setHeader("Content-Type","text/event-stream"),K.setHeader("Cache-Control","no-cache"),K.setHeader("Connection","keep-alive"),K.flushHeaders(),K.write(`: connected
1382
1382
 
1383
1383
  `);let J=!1,W=(i,H)=>{if(J)return;try{tq.debug("SSE sending event: %s with data: %o",i,H),K.write(`event: ${i}
1384
1384
  `),K.write(`data: ${JSON.stringify(H)}
@@ -1580,4 +1580,4 @@ Errors:
1580
1580
  `;for(let Z of W.slice(0,10))O+=` - ${Z.entityId}: ${Z.error}
1581
1581
  `;if(W.length>10)O+=` ... and ${W.length-10} more errors
1582
1582
  `}return{content:[{type:"text",text:O}]}}catch(Y){return s2(Y)}},aq8={name:"backfill_resolved_fts",title:"Backfill Resolved FTS",description:"Re-resolve FTS content for published documents/templates with <include> directives. If confirm=false, returns preview of affected entities. If confirm=true, resolves includes and updates FTS content.",schema:yb1,execute:Bb1};var bq8=[Sq8,aq8];var Ub1=C.object({store:C.string().optional().describe('Store code (default: "A")'),limit:C.coerce.number().optional().describe("Maximum number of events to return (default: 50)"),offset:C.coerce.number().optional().describe("Pagination offset (default: 0)")}),Fb1=async({core:_,projectId:v},{store:u,limit:K,offset:q})=>{try{let Y=await _.listDeletedEvents(v,{store:u??"A",limit:K??50,offset:q??0});return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){return s2(Y)}},Iq8={name:"list_deleted_events",title:"List Deletion Events",description:"List deletion events. Each event represents a single delete action (e.g. deleting a folder and all its contents), identified by a root entity ID. Returns events with root entity ID, root entity info, item count, deletedAt timestamp (for display), and days until purge.",schema:Ub1,execute:Fb1};var Qb1=C.object({root_entity_id:C.string().describe('Root entity ID of the deletion event (e.g. "Ad131")'),store:C.string().optional().describe('Store code (default: "A")'),limit:C.coerce.number().optional().describe("Maximum number of items to return (default: 50)"),offset:C.coerce.number().optional().describe("Pagination offset (default: 0)")}),ob1=async({core:_,projectId:v},{root_entity_id:u,store:K,limit:q,offset:Y})=>{try{let z=await _.getDeletedEvent(v,{rootEntityId:u,store:K??"A",limit:q??50,offset:Y??0});return{content:[{type:"text",text:JSON.stringify(z,null,2)}]}}catch(z){return s2(z)}},lq8={name:"get_deleted_event",title:"Get Deletion Event",description:"Get the items in a specific deletion event identified by its root entity ID. Returns root entity info and a paginated list of all entities deleted in that event.",schema:Qb1,execute:ob1};var db1=C.object({root_entity_id:C.string().describe('Root entity ID of the deletion event (e.g. "Ad131")'),store:C.string().optional().describe('Store code (default: "A")')}),rb1=async({core:_,projectId:v},{root_entity_id:u,store:K})=>{try{let q=await _.restoreDeletedEvent(v,{rootEntityId:u,store:K??"A"});return{content:[{type:"text",text:JSON.stringify(q,null,2)}]}}catch(q){return s2(q)}},yq8={name:"restore_deleted_event",title:"Restore Deletion Event",description:'Restore all entities in a deletion event (identified by its root entity ID). All entities deleted in the same action are restored together. If the root entity has a name collision, it is renamed with a "-restored" suffix.',schema:db1,execute:rb1};var Bq8=[Iq8,lq8,yq8];var sb1=C.object({}),tb1=async({core:_,projectId:v})=>{try{let u=await _.getSystemSettings(v);return{content:[{type:"text",text:JSON.stringify(u,null,2)}]}}catch(u){return s2(u)}},Uq8={name:"get_system_settings",title:"Get System Settings",description:"Returns all system settings for the project (autoArchiveDelayDays, maxConcurrentJobs, trashRetentionDays, maxResumeAttempts, defaultResumePromptRef, scratchDocDelayDays, jobDelayDays, indexingMode, batchIntervalMinutes, claudeStrategy)",schema:sb1,execute:tb1};var eb1=C.object({settings:mK(C.object({autoArchiveDelayDays:C.number().int().optional(),maxConcurrentJobs:C.number().int().optional(),maxJobDepth:C.number().int().optional(),trashRetentionDays:C.number().int().optional(),maxResumeAttempts:C.number().int().optional(),defaultResumePromptRef:C.string().nullable().optional(),scratchDocDelayDays:C.number().int().optional(),jobDelayDays:C.number().int().optional(),indexingMode:C.enum(["batch","constant"]).optional(),batchIntervalMinutes:C.number().int().positive().optional(),claudeStrategy:C.enum(["pty","headless"]).optional()})).describe("Partial settings object. Only provided keys are updated.")}),_I1=async({core:_,projectId:v},{settings:u})=>{try{let K=await _.updateSystemSettings(v,{settings:u});return{content:[{type:"text",text:JSON.stringify(K,null,2)}]}}catch(K){return s2(K)}},Fq8={name:"update_system_settings",title:"Update System Settings",description:'Update system settings for the project. Accepts partial updates — only provided keys are changed. Settings: autoArchiveDelayDays, maxConcurrentJobs, trashRetentionDays, maxResumeAttempts, defaultResumePromptRef, scratchDocDelayDays, jobDelayDays, indexingMode, batchIntervalMinutes, claudeStrategy. Validates values: integer fields must be positive integers; defaultResumePromptRef must be a template ID string or null (to clear); indexingMode must be "batch" or "constant"; batchIntervalMinutes must be a positive integer; claudeStrategy must be "pty" or "headless".',schema:eb1,execute:_I1};var $I1=C.object({}),vI1=async({core:_})=>{try{let v=await _.getIntegrations();return{content:[{type:"text",text:JSON.stringify(v,null,2)}]}}catch(v){return s2(v)}},Qq8={name:"get_integrations",title:"Get Integrations",description:"Returns detection state for all integrations (name, displayName, available, path, version, reason, action, category, detectedAt). No parameters required.",schema:$I1,execute:vI1};var oq8=[Uq8,Fq8,Qq8];var m32=W8.create({namespace:"caw:mcp"}),uI1=({core:_,projectId:v,buildVersion:u})=>{let K=new k32({name:"caw-server",version:u||"0.0.0-dev"},{capabilities:{tools:{}}}),q=[...AK8,...VK8,...hK8,...QK8,...tK8,...Jq8,...Xq8,...Gq8,...hq8,...gq8,...bq8,...Bq8,...oq8];for(let Y of q)K.registerTool(Y.name,{title:Y.title,description:Y.description,inputSchema:Y.schema},async(z,c)=>{try{let w=c?.sessionId||c?.requestInfo?.headers?.["mcp-session-id"],J=await Y.execute({core:_,projectId:v,sessionId:w,extra:c},z);return m32.debug("TOOL_CALL tool=%s session=%s",Y.name,w??"none"),J}catch(w){if(w.isDomainError)m32.debug("Tool %s domain error: %o",Y.name,w);else m32.error(`Tool ${Y.name} failed:`,w);return s2(w)}});return K},dq8=Object.freeze({createMcpServer:uI1});var eL=W8.create({namespace:"caw:mcp"}),H7=W8.create({namespace:"caw:mcp:session"}),qI1=({core:_,buildVersion:v})=>{let u=new Map;return Object.freeze({handleRequest:async(c,w,{projectId:J})=>{let W=c.headers["mcp-session-id"];if(W){let X=u.get(W);if(!X)return H7.debug("Session not found: %s",W),w.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(X.projectId!==J)return H7.debug("Session %s belongs to project %s, not %s",W,X.projectId,J),w.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});H7.debug("Routing request to existing session: %s",W),X.lastActivity=Date.now();try{return await X.transport.handleRequest(c,w,c.body)}catch(p){eL.error("MCP transport request failed:",p)}}H7.debug("Creating new MCP session for project: %s",J);let O=null,Z=new x42({sessionIdGenerator:()=>{return O=KI1(),H7.debug("Generated session ID: %s",O),O},onsessioninitialized:(X)=>{H7.debug("Session initialized: %s",X),w.setHeader("Mcp-Session-Id",X),H.sessionId=X,u.set(X,H),H7.debug("Session stored: %s",X)}});H7.debug("Creating new server for session");let i=dq8.createMcpServer({core:_,projectId:J,buildVersion:v});try{await i.connect(Z)}catch(X){return eL.error("MCP server connect failed:",X),Z.close?.(),i.close?.(),w.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null})}let H={sessionId:null,transport:Z,server:i,projectId:J,createdAt:Date.now(),lastActivity:Date.now()};w.on("finish",()=>{if(w.statusCode!==200&&O&&u.has(O))H7.debug("Request failed (status %d), cleaning up session: %s",w.statusCode,O),u.delete(O),Z.close?.(),i.close?.()});try{await Z.handleRequest(c,w,c.body)}catch(X){eL.error("MCP transport request failed:",X)}},getSession:(c)=>{return u.get(c)},closeSession:(c)=>{let w=u.get(c);if(!w){H7.debug("Cannot close session - not found: %s",c);return}H7.debug("Closing session: %s",c),w.transport.close?.(),w.server.close?.(),u.delete(c)},cleanupIdle:(c)=>{let w=Date.now(),J=0;for(let[W,O]of u.entries())if(w-O.lastActivity>c)H7.debug("Cleaning up idle session: %s (idle for %dms)",W,w-O.lastActivity),O.transport.close?.(),O.server.close?.(),u.delete(W),J++;if(J>0)eL.debug("Cleaned up %d idle sessions",J)}})},rq8=Object.freeze({create:qI1});var YI1=86400000,zI1=300000,cI1=({mcpSessionManager:_})=>{let{jobFns:v,controlFns:u}=N$.create({name:"cleanup-idle-mcp-sessions",interval:zI1,execute:async()=>{_.cleanupIdle(YI1)}});return{job:Object.freeze(v),control:u}},sq8=Object.freeze({create:cI1});var Hg=W8.create({namespace:"caw:server"}),QI1=async({port:_,envDir:v,databaseFilepath:u,assetsDir:K,lazilyCreateDb:q,enableRest:Y,enableSse:z,enableStatic:c,enableCrons:w,enableMcp:J=!0,enableCli:W=!0,staticPath:O,kyselyFactory:Z,killProcess:i,platform:H,processEnv:X,buildVersion:p,cliMcpUrl:G})=>{let P=await ee2.create({envDir:v,databaseFilepath:u,assetsDir:K,lazilyCreateDb:q,kyselyFactory:Z,killProcess:i,platform:H,processEnv:X,cawPort:_}),f=q68.create(),T=o32.default();T.use(o32.default.json({limit:"5mb"}));let j=new Set(["127.0.0.1","::1","::ffff:127.0.0.1"]);if(T.get("/health",(V,D)=>{let h={status:"ok"};if(j.has(V.socket.remoteAddress))Object.assign(h,P.getSafeToStopStatus());D.json(h)}),T.get("/api/info",(V,D)=>{D.json({version:p,hookFailureCount:$m2()})}),Y)T.use("/api",v68),T.use("/api",u68),u28.create(T,{core:P}),q28.create(T,{core:P}),Y28.create(T,{core:P}),z28.create(T,{core:P}),w28.create(T,{core:P}),W28.create(T,{core:P}),O28.create(T,{core:P}),Z28.create(T,{core:P}),i28.create(T,{core:P}),H28.create(T,{core:P}),B18.create(T,{core:P}),U18.create(T,{core:P}),F18.create(T,{core:P}),Q18.create(T,{core:P}),o18.create(T,{core:P}),d18.create(T,{core:P}),r18.create(T,{core:P}),s18.create(T,{core:P}),e18.create(T,{core:P});if(z)_68.create(T,{core:P}),$68.create(T,{core:P});if(J){Hg.debug("Initializing MCP subsystem...");let V=rq8.create({core:P,buildVersion:p});P.registerCronJob(sq8,{mcpSessionManager:V}),z68.create(T,{core:P,mcpSessionManager:V}),Hg.debug("MCP subsystem initialized")}if(W){Hg.debug("Initializing CLI Adapter subsystem...");let V=(await Promise.resolve().then(() => (VY8(),jY8))).default,D=(await Promise.resolve().then(() => (NY8(),xY8))).default,h=(await Promise.resolve().then(() => (hY8(),RY8))).default,b=(await Promise.resolve().then(() => (EY8(),CY8))).default,E=h.create({mcpClientFactory:V.create({serverUrl:G}),aliasGenerator:D.create(),core:P});await E.init(),P.subscribeServerEvents({onProjectCreated:(o)=>E.addProject({objectId:o.id,name:o.name,path:o.path})}),b.create(T,{cliSessionManager:E}),Hg.debug("CLI Adapter subsystem initialized")}if(c&&O)$28.create(T,{staticPath:O});if(w)P.startAllCrons();T.use((V,D,h,b)=>{h.status(V.status||V.statusCode||500).json({error:V.message,type:V.type})});let k=null,M=new Set;return Object.freeze({app:T,core:P,start:async()=>{return new Promise((V,D)=>{k=T.listen(_,(h)=>{if(h){D(h);return}let b=k.address();if(!b){D(Error("Server failed to bind"));return}f.start(),V(b.port)}),k.on("connection",(h)=>{M.add(h),h.on("close",()=>{M.delete(h)})})})},stop:async()=>{if(f.stop(),await P.shutdownEmbeddingPipeline(),P.stopAllCrons(),k){for(let V of M)V.destroy();return M.clear(),new Promise((V)=>{k.close(()=>{V()})})}}})},LY8=Object.freeze({create:QI1});w1();var Xg=W8.create({namespace:"caw:main"}),dI1=2229,rI1=pg.join(pg.dirname(oI1(import.meta.url)),"public_html"),sI1=!0,tI1=!0,eI1=!0,_l1=!0,$l1=!1,vl1=!0,ul1=!0,Kl1=!0,ql1="debug",cc=(_,v)=>_!==void 0?_==="true":v,Yl1=()=>{let _=process.env.CAW_ENV_DIR;if(!_)Xg.error("ERROR: CAW_ENV_DIR environment variable is required"),Xg.error("Set it to the path of your environment folder, e.g.:"),Xg.error(' export CAW_ENV_DIR="$HOME/.caw/prod"'),process.exit(1);return{envDir:_,databaseFilepath:pg.join(_,"caw.db"),assetsDir:pg.join(_,"assets")}},zl1=async(_)=>{let v=await LY8.create(_),u=await v.start();process.stdout.write(`Server listening on port ${u}
1583
- `),process.on("SIGINT",()=>v.stop("SIGINT")),process.on("SIGTERM",()=>v.stop("SIGTERM"))},cl1=()=>{let{envDir:_,databaseFilepath:v,assetsDir:u}=Yl1(),K=process.env.CAW_PORT?Number(process.env.CAW_PORT):dI1,q=process.env.STATIC_PATH||rI1,Y=cc(process.env.LAZY_CREATE_DB,sI1),z=cc(process.env.ENABLE_REST,tI1),c=cc(process.env.ENABLE_MCP,eI1),w=cc(process.env.ENABLE_CLI,_l1),J=cc(process.env.ENABLE_WEBLLM_WSS,$l1),W=cc(process.env.ENABLE_SSE,vl1),O=cc(process.env.ENABLE_STATIC,ul1),Z=cc(process.env.ENABLE_CRONS,Kl1),i=process.env.LOG_LEVEL||ql1,H=(f,T)=>process.kill(f,T),X=process.platform,p={...process.env},G="1.0.229",P=process.env.CAW_CLI_MCP_URL;return Object.freeze({port:K,staticPath:q,envDir:_,databaseFilepath:v,assetsDir:u,lazilyCreateDb:Y,enableRest:z,enableMcp:c,enableCli:w,enableWebllmWss:J,enableSse:W,enableStatic:O,enableCrons:Z,logLevel:i,killProcess:H,platform:X,processEnv:p,buildVersion:"1.0.229",cliMcpUrl:P})},gY8=cl1();W8.setLevel(gY8.logLevel);await zl1(gY8).catch((_)=>{Xg.error("ERROR: Failed to start server:",_),process.exit(1)});
1583
+ `),process.on("SIGINT",()=>v.stop("SIGINT")),process.on("SIGTERM",()=>v.stop("SIGTERM"))},cl1=()=>{let{envDir:_,databaseFilepath:v,assetsDir:u}=Yl1(),K=process.env.CAW_PORT?Number(process.env.CAW_PORT):dI1,q=process.env.STATIC_PATH||rI1,Y=cc(process.env.LAZY_CREATE_DB,sI1),z=cc(process.env.ENABLE_REST,tI1),c=cc(process.env.ENABLE_MCP,eI1),w=cc(process.env.ENABLE_CLI,_l1),J=cc(process.env.ENABLE_WEBLLM_WSS,$l1),W=cc(process.env.ENABLE_SSE,vl1),O=cc(process.env.ENABLE_STATIC,ul1),Z=cc(process.env.ENABLE_CRONS,Kl1),i=process.env.LOG_LEVEL||ql1,H=(f,T)=>process.kill(f,T),X=process.platform,p={...process.env},G="1.0.230",P=process.env.CAW_CLI_MCP_URL;return Object.freeze({port:K,staticPath:q,envDir:_,databaseFilepath:v,assetsDir:u,lazilyCreateDb:Y,enableRest:z,enableMcp:c,enableCli:w,enableWebllmWss:J,enableSse:W,enableStatic:O,enableCrons:Z,logLevel:i,killProcess:H,platform:X,processEnv:p,buildVersion:"1.0.230",cliMcpUrl:P})},gY8=cl1();W8.setLevel(gY8.logLevel);await zl1(gY8).catch((_)=>{Xg.error("ERROR: Failed to start server:",_),process.exit(1)});