@inkeep/open-knowledge 0.5.0-beta.29 → 0.5.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/skills/open-knowledge/SKILL.md +1 -1
- package/dist/cli.mjs +40 -40
- package/dist/constants-DfOtnL8q.mjs +2 -0
- package/dist/dist-BNxDPtVp.mjs +1 -0
- package/dist/{dist-C0nimAjR.mjs → dist-Bfgu576g.mjs} +7 -6
- package/dist/index.mjs +1 -1
- package/dist/{init-DITZo5MW.mjs → init-BGcP3NLX.mjs} +7 -7
- package/dist/init-BrAA3Lqd.mjs +1 -0
- package/dist/loader-Cm8UXQWb.mjs +1 -0
- package/dist/{loader-C1XRvFmK.mjs → loader-DDq-7829.mjs} +3 -3
- package/dist/preview-CAvBVoC_.mjs +1 -0
- package/dist/{preview-CNu5ET06.mjs → preview-DIgE6AIn.mjs} +2 -2
- package/dist/{repair-launch-json-BE8BhJHf.mjs → repair-launch-json-C5RKloip.mjs} +2 -2
- package/dist/{repair-mcp-configs-RaKlR1Tj.mjs → repair-mcp-configs-C9YDrIQb.mjs} +2 -2
- package/dist/{src-qd3O6KiT.mjs → src-CCs_EWzw.mjs} +2 -2
- package/dist/{start-BzeK2VhT.mjs → start-C0yxsib-.mjs} +2 -2
- package/dist/start-CTwIpcq1.mjs +1 -0
- package/package.json +1 -1
- package/dist/constants-9XRv4ouM.mjs +0 -2
- package/dist/dist-Cne34K7V.mjs +0 -1
- package/dist/init-CsMSp7be.mjs +0 -1
- package/dist/loader-C9nvsl4r.mjs +0 -1
- package/dist/preview-CpsM6Oy_.mjs +0 -1
- package/dist/start-DIvt2h6l.mjs +0 -1
|
@@ -112,7 +112,8 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
|
|
|
112
112
|
`)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(`
|
|
113
113
|
`,e)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(this.onKeyLine=!1,t.value){let S=`end`in t.value?t.value.end:void 0;(Array.isArray(S)?S[S.length-1]:void 0)?.type===`comment`?S?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){let S=e.items[e.items.length-2]?.value?.end;if(Array.isArray(S)){Array.prototype.push.apply(S,t.start),S.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let S=!this.onKeyLine&&this.indent===e.indent,w=S&&(t.sep||t.explicitKey)&&this.type!==`seq-item-ind`,D=[];if(w&&t.sep&&!t.value){let S=[];for(let w=0;w<t.sep.length;++w){let E=t.sep[w];switch(E.type){case`newline`:S.push(w);break;case`space`:break;case`comment`:E.indent>e.indent&&(S.length=0);break;default:S.length=0}}S.length>=2&&(D=t.sep.splice(S[1]))}switch(this.type){case`anchor`:case`tag`:w||t.value?(D.push(this.sourceToken),e.items.push({start:D}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`explicit-key-ind`:!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):w||t.value?(D.push(this.sourceToken),e.items.push({start:D,explicitKey:!0})):this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case`map-value-ind`:if(t.explicitKey)if(!t.sep)if(E(t.start,`newline`))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let e=j(t.start);this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]})}else if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(E(t.sep,`map-value-ind`))this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:D,key:null,sep:[this.sourceToken]}]});else if(O(t.key)&&!E(t.sep,`newline`)){let e=j(t.start),S=t.key,w=t.sep;w.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:S,sep:w}]})}else D.length>0?t.sep=t.sep.concat(D,this.sourceToken):t.sep.push(this.sourceToken);else t.sep?t.value||w?e.items.push({start:D,key:null,sep:[this.sourceToken]}):E(t.sep,`map-value-ind`)?this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let S=this.flowScalar(this.type);w||t.value?(e.items.push({start:D,key:S,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(S):(Object.assign(t,{key:S,sep:[]}),this.onKeyLine=!0);return}default:{let w=this.startBlockValue(e);if(w){if(w.type===`block-seq`){if(!t.explicitKey&&t.sep&&!E(t.sep,`newline`)){yield*this.pop({type:`error`,offset:this.offset,message:`Unexpected block-seq-ind on same line with key`,source:this.source});return}}else S&&e.items.push({start:D});this.stack.push(w);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(t.value){let S=`end`in t.value?t.value.end:void 0;(Array.isArray(S)?S[S.length-1]:void 0)?.type===`comment`?S?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let S=e.items[e.items.length-2]?.value?.end;if(Array.isArray(S)){Array.prototype.push.apply(S,t.start),S.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case`anchor`:case`tag`:if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case`seq-item-ind`:if(this.indent!==e.indent)break;t.value||E(t.start,`seq-item-ind`)?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let t=this.startBlockValue(e);if(t){this.stack.push(t);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type===`flow-error-end`){let e;do yield*this.pop(),e=this.peek(1);while(e?.type===`flow-collection`)}else if(e.end.length===0){switch(this.type){case`comma`:case`explicit-key-ind`:!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case`map-value-ind`:!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case`space`:case`comment`:case`newline`:case`anchor`:case`tag`:!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let S=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:S,sep:[]}):t.sep?this.stack.push(S):Object.assign(t,{key:S,sep:[]});return}case`flow-map-end`:case`flow-seq-end`:e.end.push(this.sourceToken);return}let S=this.startBlockValue(e);S?this.stack.push(S):(yield*this.pop(),yield*this.step())}else{let t=this.peek(2);if(t.type===`block-map`&&(this.type===`map-value-ind`&&t.indent===e.indent||this.type===`newline`&&!t.items[t.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type===`map-value-ind`&&t.type!==`flow-collection`){let S=j(k(t));F(e);let w=e.end.splice(1,e.end.length);w.push(this.sourceToken);let E={type:`block-map`,offset:e.offset,indent:e.indent,items:[{start:S,key:e,sep:w}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=E}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let e=this.source.indexOf(`
|
|
114
114
|
`)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(`
|
|
115
|
-
`,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=j(k(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=j(k(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}}})),require_public_api=__commonJSMin$1((e=>{var t=require_composer(),S=require_Document(),w=require_errors$1(),E=require_log(),D=require_identity(),O=require_line_counter(),k=require_parser();function j(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new O.LineCounter||null,prettyErrors:t}}function F(e,S={}){let{lineCounter:E,prettyErrors:D}=j(S),O=new k.Parser(E?.addNewLine),F=new t.Composer(S),L=Array.from(F.compose(O.parse(e)));if(D&&E)for(let t of L)t.errors.forEach(w.prettifyError(e,E)),t.warnings.forEach(w.prettifyError(e,E));return L.length>0?L:Object.assign([],{empty:!0},F.streamInfo())}function L(e,S={}){let{lineCounter:E,prettyErrors:D}=j(S),O=new k.Parser(E?.addNewLine),F=new t.Composer(S),L=null;for(let t of F.compose(O.parse(e),!0,e.length))if(!L)L=t;else if(L.options.logLevel!==`silent`){L.errors.push(new w.YAMLParseError(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return D&&E&&(L.errors.forEach(w.prettifyError(e,E)),L.warnings.forEach(w.prettifyError(e,E))),L}function B(e,t,S){let w;typeof t==`function`?w=t:S===void 0&&t&&typeof t==`object`&&(S=t);let D=L(e,S);if(!D)return null;if(D.warnings.forEach(e=>E.warn(D.options.logLevel,e)),D.errors.length>0){if(D.options.logLevel!==`silent`)throw D.errors[0];D.errors=[]}return D.toJS(Object.assign({reviver:w},S))}function H(e,t,w){let E=null;if(typeof t==`function`||Array.isArray(t)?E=t:w===void 0&&t&&(w=t),typeof w==`string`&&(w=w.length),typeof w==`number`){let e=Math.round(w);w=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=w??t??{};if(!e)return}return D.isDocument(e)&&!E?e.toString(w):new S.Document(e,E,w).toString(w)}e.parse=B,e.parseAllDocuments=F,e.parseDocument=L,e.stringify=H})),require_dist$2=__commonJSMin$1((e=>{var t=require_composer(),S=require_Document(),w=require_Schema(),E=require_errors$1(),D=require_Alias(),O=require_identity(),k=require_Pair(),j=require_Scalar(),F=require_YAMLMap(),L=require_YAMLSeq(),B=require_cst(),H=require_lexer(),q=require_line_counter(),J=require_parser(),Y=require_public_api(),ee=require_visit();e.Composer=t.Composer,e.Document=S.Document,e.Schema=w.Schema,e.YAMLError=E.YAMLError,e.YAMLParseError=E.YAMLParseError,e.YAMLWarning=E.YAMLWarning,e.Alias=D.Alias,e.isAlias=O.isAlias,e.isCollection=O.isCollection,e.isDocument=O.isDocument,e.isMap=O.isMap,e.isNode=O.isNode,e.isPair=O.isPair,e.isScalar=O.isScalar,e.isSeq=O.isSeq,e.Pair=k.Pair,e.Scalar=j.Scalar,e.YAMLMap=F.YAMLMap,e.YAMLSeq=L.YAMLSeq,e.Lexer=H.Lexer,e.LineCounter=q.LineCounter,e.Parser=J.Parser,e.parse=Y.parse,e.parseAllDocuments=Y.parseAllDocuments,e.parseDocument=Y.parseDocument,e.stringify=Y.stringify,e.visit=ee.visit,e.visitAsync=ee.visitAsync}));const NEVER=Object.freeze({status:`aborted`});function $constructor(e,t,S){function w(S,w){if(S._zod||Object.defineProperty(S,`_zod`,{value:{def:w,constr:O,traits:new Set},enumerable:!1}),S._zod.traits.has(e))return;S._zod.traits.add(e),t(S,w);let E=O.prototype,D=Object.keys(E);for(let e=0;e<D.length;e++){let t=D[e];t in S||(S[t]=E[t].bind(S))}}let E=S?.Parent??Object;class D extends E{}Object.defineProperty(D,`name`,{value:e});function O(e){var t;let E=S?.Parent?new D:this;w(E,e),(t=E._zod).deferred??(t.deferred=[]);for(let e of E._zod.deferred)e();return E}return Object.defineProperty(O,`init`,{value:w}),Object.defineProperty(O,Symbol.hasInstance,{value:t=>S?.Parent&&t instanceof S.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(O,`name`,{value:e}),O}var $ZodAsyncError=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},$ZodEncodeError=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};const globalConfig={};function config(e){return e&&Object.assign(globalConfig,e),globalConfig}function getEnumValues(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,S])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function jsonStringifyReplacer(e,t){return typeof t==`bigint`?t.toString():t}function cached(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function nullish(e){return e==null}function cleanRegex(e){let t=e.startsWith(`^`)?1:0,S=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,S)}function floatSafeRemainder$1(e,t){let S=(e.toString().split(`.`)[1]||``).length,w=t.toString(),E=(w.split(`.`)[1]||``).length;if(E===0&&/\d?e-\d?/.test(w)){let e=w.match(/\d?e-(\d?)/);e?.[1]&&(E=Number.parseInt(e[1]))}let D=S>E?S:E;return Number.parseInt(e.toFixed(D).replace(`.`,``))%Number.parseInt(t.toFixed(D).replace(`.`,``))/10**D}const EVALUATING=Symbol(`evaluating`);function defineLazy(e,t,S){let w;Object.defineProperty(e,t,{get(){if(w!==EVALUATING)return w===void 0&&(w=EVALUATING,w=S()),w},set(S){Object.defineProperty(e,t,{value:S})},configurable:!0})}function assignProp(e,t,S){Object.defineProperty(e,t,{value:S,writable:!0,enumerable:!0,configurable:!0})}function mergeDefs(...e){let t={};for(let S of e)Object.assign(t,Object.getOwnPropertyDescriptors(S));return Object.defineProperties({},t)}function esc(e){return JSON.stringify(e)}function slugify(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}const captureStackTrace=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function isObject$1(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const allowsEval=cached(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function isPlainObject$4(e){if(isObject$1(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let S=t.prototype;return!(isObject$1(S)===!1||Object.prototype.hasOwnProperty.call(S,`isPrototypeOf`)===!1)}function shallowClone(e){return isPlainObject$4(e)?{...e}:Array.isArray(e)?[...e]:e}const propertyKeyTypes=new Set([`string`,`number`,`symbol`]);function escapeRegex$1(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function clone(e,t,S){let w=new e._zod.constr(t??e._zod.def);return(!t||S?.parent)&&(w._zod.parent=e),w}function normalizeParams(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function optionalKeys(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}const NUMBER_FORMAT_RANGES={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function pick$2(e,t){let S=e._zod.def,w=S.checks;if(w&&w.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return clone(e,mergeDefs(e._zod.def,{get shape(){let e={};for(let w in t){if(!(w in S.shape))throw Error(`Unrecognized key: "${w}"`);t[w]&&(e[w]=S.shape[w])}return assignProp(this,`shape`,e),e},checks:[]}))}function omit(e,t){let S=e._zod.def,w=S.checks;if(w&&w.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return clone(e,mergeDefs(e._zod.def,{get shape(){let w={...e._zod.def.shape};for(let e in t){if(!(e in S.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete w[e]}return assignProp(this,`shape`,w),w},checks:[]}))}function extend$1(e,t){if(!isPlainObject$4(t))throw Error(`Invalid input to extend: expected a plain object`);let S=e._zod.def.checks;if(S&&S.length>0){let S=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(S,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return clone(e,mergeDefs(e._zod.def,{get shape(){let S={...e._zod.def.shape,...t};return assignProp(this,`shape`,S),S}}))}function safeExtend(e,t){if(!isPlainObject$4(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return clone(e,mergeDefs(e._zod.def,{get shape(){let S={...e._zod.def.shape,...t};return assignProp(this,`shape`,S),S}}))}function merge$1(e,t){return clone(e,mergeDefs(e._zod.def,{get shape(){let S={...e._zod.def.shape,...t._zod.def.shape};return assignProp(this,`shape`,S),S},get catchall(){return t._zod.def.catchall},checks:[]}))}function partial(e,t,S){let w=t._zod.def.checks;if(w&&w.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return clone(t,mergeDefs(t._zod.def,{get shape(){let w=t._zod.def.shape,E={...w};if(S)for(let t in S){if(!(t in w))throw Error(`Unrecognized key: "${t}"`);S[t]&&(E[t]=e?new e({type:`optional`,innerType:w[t]}):w[t])}else for(let t in w)E[t]=e?new e({type:`optional`,innerType:w[t]}):w[t];return assignProp(this,`shape`,E),E},checks:[]}))}function required(e,t,S){return clone(t,mergeDefs(t._zod.def,{get shape(){let w=t._zod.def.shape,E={...w};if(S)for(let t in S){if(!(t in E))throw Error(`Unrecognized key: "${t}"`);S[t]&&(E[t]=new e({type:`nonoptional`,innerType:w[t]}))}else for(let t in w)E[t]=new e({type:`nonoptional`,innerType:w[t]});return assignProp(this,`shape`,E),E}}))}function aborted(e,t=0){if(e.aborted===!0)return!0;for(let S=t;S<e.issues.length;S++)if(e.issues[S]?.continue!==!0)return!0;return!1}function prefixIssues(e,t){return t.map(t=>{var S;return(S=t).path??(S.path=[]),t.path.unshift(e),t})}function unwrapMessage(e){return typeof e==`string`?e:e?.message}function finalizeIssue(e,t,S){let w={...e,path:e.path??[]};return e.message||(w.message=unwrapMessage(e.inst?._zod.def?.error?.(e))??unwrapMessage(t?.error?.(e))??unwrapMessage(S.customError?.(e))??unwrapMessage(S.localeError?.(e))??`Invalid input`),delete w.inst,delete w.continue,t?.reportInput||delete w.input,w}function getLengthableOrigin(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function issue(...e){let[t,S,w]=e;return typeof t==`string`?{message:t,code:`custom`,input:S,inst:w}:{...t}}const initializer$1=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,jsonStringifyReplacer,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})},$ZodError=$constructor(`$ZodError`,initializer$1),$ZodRealError=$constructor(`$ZodError`,initializer$1,{Parent:Error});function flattenError(e,t=e=>e.message){let S={},w=[];for(let E of e.issues)E.path.length>0?(S[E.path[0]]=S[E.path[0]]||[],S[E.path[0]].push(t(E))):w.push(t(E));return{formErrors:w,fieldErrors:S}}function formatError(e,t=e=>e.message){let S={_errors:[]},w=e=>{for(let E of e.issues)if(E.code===`invalid_union`&&E.errors.length)E.errors.map(e=>w({issues:e}));else if(E.code===`invalid_key`)w({issues:E.issues});else if(E.code===`invalid_element`)w({issues:E.issues});else if(E.path.length===0)S._errors.push(t(E));else{let e=S,w=0;for(;w<E.path.length;){let S=E.path[w];w===E.path.length-1?(e[S]=e[S]||{_errors:[]},e[S]._errors.push(t(E))):e[S]=e[S]||{_errors:[]},e=e[S],w++}}};return w(e),S}const _parse=e=>(t,S,w,E)=>{let D=w?Object.assign(w,{async:!1}):{async:!1},O=t._zod.run({value:S,issues:[]},D);if(O instanceof Promise)throw new $ZodAsyncError;if(O.issues.length){let t=new(E?.Err??e)(O.issues.map(e=>finalizeIssue(e,D,config())));throw captureStackTrace(t,E?.callee),t}return O.value},parse$6=_parse($ZodRealError),_parseAsync=e=>async(t,S,w,E)=>{let D=w?Object.assign(w,{async:!0}):{async:!0},O=t._zod.run({value:S,issues:[]},D);if(O instanceof Promise&&(O=await O),O.issues.length){let t=new(E?.Err??e)(O.issues.map(e=>finalizeIssue(e,D,config())));throw captureStackTrace(t,E?.callee),t}return O.value},parseAsync$1=_parseAsync($ZodRealError),_safeParse=e=>(t,S,w)=>{let E=w?{...w,async:!1}:{async:!1},D=t._zod.run({value:S,issues:[]},E);if(D instanceof Promise)throw new $ZodAsyncError;return D.issues.length?{success:!1,error:new(e??$ZodError)(D.issues.map(e=>finalizeIssue(e,E,config())))}:{success:!0,data:D.value}},safeParse$2=_safeParse($ZodRealError),_safeParseAsync=e=>async(t,S,w)=>{let E=w?Object.assign(w,{async:!0}):{async:!0},D=t._zod.run({value:S,issues:[]},E);return D instanceof Promise&&(D=await D),D.issues.length?{success:!1,error:new e(D.issues.map(e=>finalizeIssue(e,E,config())))}:{success:!0,data:D.value}},safeParseAsync$2=_safeParseAsync($ZodRealError),_encode=e=>(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _parse(e)(t,S,E)},encode$2=_encode($ZodRealError),_decode=e=>(t,S,w)=>_parse(e)(t,S,w),decode$2=_decode($ZodRealError),_encodeAsync=e=>async(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _parseAsync(e)(t,S,E)},encodeAsync$1=_encodeAsync($ZodRealError),_decodeAsync=e=>async(t,S,w)=>_parseAsync(e)(t,S,w),decodeAsync$1=_decodeAsync($ZodRealError),_safeEncode=e=>(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _safeParse(e)(t,S,E)},safeEncode$1=_safeEncode($ZodRealError),_safeDecode=e=>(t,S,w)=>_safeParse(e)(t,S,w),safeDecode$1=_safeDecode($ZodRealError),_safeEncodeAsync=e=>async(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _safeParseAsync(e)(t,S,E)},safeEncodeAsync$1=_safeEncodeAsync($ZodRealError),_safeDecodeAsync=e=>async(t,S,w)=>_safeParseAsync(e)(t,S,w),safeDecodeAsync$1=_safeDecodeAsync($ZodRealError),cuid=/^[cC][^\s-]{8,}$/,cuid2=/^[0-9a-z]+$/,ulid=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xid=/^[0-9a-vA-V]{20}$/,ksuid=/^[A-Za-z0-9]{27}$/,nanoid=/^[a-zA-Z0-9_-]{21}$/,duration$1=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,guid=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,email=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,_emoji$1=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function emoji(){return new RegExp(_emoji$1,`u`)}const ipv4=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,cidrv4=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url=/^[A-Za-z0-9_-]*$/,e164=/^\+[1-9]\d{6,14}$/,dateSource=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,date$1=RegExp(`^${dateSource}$`);function timeSource(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time$1(e){return RegExp(`^${timeSource(e)}$`)}function datetime$1(e){let t=timeSource({precision:e.precision}),S=[`Z`];e.local&&S.push(``),e.offset&&S.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let w=`${t}(?:${S.join(`|`)})`;return RegExp(`^${dateSource}T(?:${w})$`)}const string$3=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},integer=/^-?\d+$/,number$2=/^-?\d+(?:\.\d+)?$/,boolean$2=/^(?:true|false)$/i,_null$2=/^null$/i,lowercase=/^[^A-Z]*$/,uppercase=/^[^a-z]*$/,$ZodCheck=$constructor(`$ZodCheck`,(e,t)=>{var S;e._zod??={},e._zod.def=t,(S=e._zod).onattach??(S.onattach=[])}),numericOriginMap={number:`number`,bigint:`bigint`,object:`date`},$ZodCheckLessThan=$constructor(`$ZodCheckLessThan`,(e,t)=>{$ZodCheck.init(e,t);let S=numericOriginMap[typeof t.value];e._zod.onattach.push(e=>{let S=e._zod.bag,w=(t.inclusive?S.maximum:S.exclusiveMaximum)??1/0;t.value<w&&(t.inclusive?S.maximum=t.value:S.exclusiveMaximum=t.value)}),e._zod.check=w=>{(t.inclusive?w.value<=t.value:w.value<t.value)||w.issues.push({origin:S,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:w.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),$ZodCheckGreaterThan=$constructor(`$ZodCheckGreaterThan`,(e,t)=>{$ZodCheck.init(e,t);let S=numericOriginMap[typeof t.value];e._zod.onattach.push(e=>{let S=e._zod.bag,w=(t.inclusive?S.minimum:S.exclusiveMinimum)??-1/0;t.value>w&&(t.inclusive?S.minimum=t.value:S.exclusiveMinimum=t.value)}),e._zod.check=w=>{(t.inclusive?w.value>=t.value:w.value>t.value)||w.issues.push({origin:S,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:w.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),$ZodCheckMultipleOf=$constructor(`$ZodCheckMultipleOf`,(e,t)=>{$ZodCheck.init(e,t),e._zod.onattach.push(e=>{var S;(S=e._zod.bag).multipleOf??(S.multipleOf=t.value)}),e._zod.check=S=>{if(typeof S.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof S.value==`bigint`?S.value%t.value===BigInt(0):floatSafeRemainder$1(S.value,t.value)===0)||S.issues.push({origin:typeof S.value,code:`not_multiple_of`,divisor:t.value,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckNumberFormat=$constructor(`$ZodCheckNumberFormat`,(e,t)=>{$ZodCheck.init(e,t),t.format=t.format||`float64`;let S=t.format?.includes(`int`),w=S?`int`:`number`,[E,D]=NUMBER_FORMAT_RANGES[t.format];e._zod.onattach.push(e=>{let w=e._zod.bag;w.format=t.format,w.minimum=E,w.maximum=D,S&&(w.pattern=integer)}),e._zod.check=O=>{let k=O.value;if(S){if(!Number.isInteger(k)){O.issues.push({expected:w,format:t.format,code:`invalid_type`,continue:!1,input:k,inst:e});return}if(!Number.isSafeInteger(k)){k>0?O.issues.push({input:k,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:w,inclusive:!0,continue:!t.abort}):O.issues.push({input:k,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:w,inclusive:!0,continue:!t.abort});return}}k<E&&O.issues.push({origin:`number`,input:k,code:`too_small`,minimum:E,inclusive:!0,inst:e,continue:!t.abort}),k>D&&O.issues.push({origin:`number`,input:k,code:`too_big`,maximum:D,inclusive:!0,inst:e,continue:!t.abort})}}),$ZodCheckMaxLength=$constructor(`$ZodCheckMaxLength`,(e,t)=>{var S;$ZodCheck.init(e,t),(S=e._zod.def).when??(S.when=e=>{let t=e.value;return!nullish(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let S=e._zod.bag.maximum??1/0;t.maximum<S&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=S=>{let w=S.value;if(w.length<=t.maximum)return;let E=getLengthableOrigin(w);S.issues.push({origin:E,code:`too_big`,maximum:t.maximum,inclusive:!0,input:w,inst:e,continue:!t.abort})}}),$ZodCheckMinLength=$constructor(`$ZodCheckMinLength`,(e,t)=>{var S;$ZodCheck.init(e,t),(S=e._zod.def).when??(S.when=e=>{let t=e.value;return!nullish(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let S=e._zod.bag.minimum??-1/0;t.minimum>S&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=S=>{let w=S.value;if(w.length>=t.minimum)return;let E=getLengthableOrigin(w);S.issues.push({origin:E,code:`too_small`,minimum:t.minimum,inclusive:!0,input:w,inst:e,continue:!t.abort})}}),$ZodCheckLengthEquals=$constructor(`$ZodCheckLengthEquals`,(e,t)=>{var S;$ZodCheck.init(e,t),(S=e._zod.def).when??(S.when=e=>{let t=e.value;return!nullish(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let S=e._zod.bag;S.minimum=t.length,S.maximum=t.length,S.length=t.length}),e._zod.check=S=>{let w=S.value,E=w.length;if(E===t.length)return;let D=getLengthableOrigin(w),O=E>t.length;S.issues.push({origin:D,...O?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckStringFormat=$constructor(`$ZodCheckStringFormat`,(e,t)=>{var S,w;$ZodCheck.init(e,t),e._zod.onattach.push(e=>{let S=e._zod.bag;S.format=t.format,t.pattern&&(S.patterns??=new Set,S.patterns.add(t.pattern))}),t.pattern?(S=e._zod).check??(S.check=S=>{t.pattern.lastIndex=0,!t.pattern.test(S.value)&&S.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:S.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(w=e._zod).check??(w.check=()=>{})}),$ZodCheckRegex=$constructor(`$ZodCheckRegex`,(e,t)=>{$ZodCheckStringFormat.init(e,t),e._zod.check=S=>{t.pattern.lastIndex=0,!t.pattern.test(S.value)&&S.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:S.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),$ZodCheckLowerCase=$constructor(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=lowercase,$ZodCheckStringFormat.init(e,t)}),$ZodCheckUpperCase=$constructor(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=uppercase,$ZodCheckStringFormat.init(e,t)}),$ZodCheckIncludes=$constructor(`$ZodCheckIncludes`,(e,t)=>{$ZodCheck.init(e,t);let S=escapeRegex$1(t.includes),w=new RegExp(typeof t.position==`number`?`^.{${t.position}}${S}`:S);t.pattern=w,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(w)}),e._zod.check=S=>{S.value.includes(t.includes,t.position)||S.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckStartsWith=$constructor(`$ZodCheckStartsWith`,(e,t)=>{$ZodCheck.init(e,t);let S=RegExp(`^${escapeRegex$1(t.prefix)}.*`);t.pattern??=S,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(S)}),e._zod.check=S=>{S.value.startsWith(t.prefix)||S.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckEndsWith=$constructor(`$ZodCheckEndsWith`,(e,t)=>{$ZodCheck.init(e,t);let S=RegExp(`.*${escapeRegex$1(t.suffix)}$`);t.pattern??=S,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(S)}),e._zod.check=S=>{S.value.endsWith(t.suffix)||S.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckOverwrite=$constructor(`$ZodCheckOverwrite`,(e,t)=>{$ZodCheck.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});var Doc$1=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
115
|
+
`,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=j(k(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=j(k(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}}})),require_public_api=__commonJSMin$1((e=>{var t=require_composer(),S=require_Document(),w=require_errors$1(),E=require_log(),D=require_identity(),O=require_line_counter(),k=require_parser();function j(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new O.LineCounter||null,prettyErrors:t}}function F(e,S={}){let{lineCounter:E,prettyErrors:D}=j(S),O=new k.Parser(E?.addNewLine),F=new t.Composer(S),L=Array.from(F.compose(O.parse(e)));if(D&&E)for(let t of L)t.errors.forEach(w.prettifyError(e,E)),t.warnings.forEach(w.prettifyError(e,E));return L.length>0?L:Object.assign([],{empty:!0},F.streamInfo())}function L(e,S={}){let{lineCounter:E,prettyErrors:D}=j(S),O=new k.Parser(E?.addNewLine),F=new t.Composer(S),L=null;for(let t of F.compose(O.parse(e),!0,e.length))if(!L)L=t;else if(L.options.logLevel!==`silent`){L.errors.push(new w.YAMLParseError(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return D&&E&&(L.errors.forEach(w.prettifyError(e,E)),L.warnings.forEach(w.prettifyError(e,E))),L}function B(e,t,S){let w;typeof t==`function`?w=t:S===void 0&&t&&typeof t==`object`&&(S=t);let D=L(e,S);if(!D)return null;if(D.warnings.forEach(e=>E.warn(D.options.logLevel,e)),D.errors.length>0){if(D.options.logLevel!==`silent`)throw D.errors[0];D.errors=[]}return D.toJS(Object.assign({reviver:w},S))}function H(e,t,w){let E=null;if(typeof t==`function`||Array.isArray(t)?E=t:w===void 0&&t&&(w=t),typeof w==`string`&&(w=w.length),typeof w==`number`){let e=Math.round(w);w=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=w??t??{};if(!e)return}return D.isDocument(e)&&!E?e.toString(w):new S.Document(e,E,w).toString(w)}e.parse=B,e.parseAllDocuments=F,e.parseDocument=L,e.stringify=H})),require_dist$2=__commonJSMin$1((e=>{var t=require_composer(),S=require_Document(),w=require_Schema(),E=require_errors$1(),D=require_Alias(),O=require_identity(),k=require_Pair(),j=require_Scalar(),F=require_YAMLMap(),L=require_YAMLSeq(),B=require_cst(),H=require_lexer(),q=require_line_counter(),J=require_parser(),Y=require_public_api(),ee=require_visit();e.Composer=t.Composer,e.Document=S.Document,e.Schema=w.Schema,e.YAMLError=E.YAMLError,e.YAMLParseError=E.YAMLParseError,e.YAMLWarning=E.YAMLWarning,e.Alias=D.Alias,e.isAlias=O.isAlias,e.isCollection=O.isCollection,e.isDocument=O.isDocument,e.isMap=O.isMap,e.isNode=O.isNode,e.isPair=O.isPair,e.isScalar=O.isScalar,e.isSeq=O.isSeq,e.Pair=k.Pair,e.Scalar=j.Scalar,e.YAMLMap=F.YAMLMap,e.YAMLSeq=L.YAMLSeq,e.Lexer=H.Lexer,e.LineCounter=q.LineCounter,e.Parser=J.Parser,e.parse=Y.parse,e.parseAllDocuments=Y.parseAllDocuments,e.parseDocument=Y.parseDocument,e.stringify=Y.stringify,e.visit=ee.visit,e.visitAsync=ee.visitAsync}));const NEVER=Object.freeze({status:`aborted`});function $constructor(e,t,S){function w(S,w){if(S._zod||Object.defineProperty(S,`_zod`,{value:{def:w,constr:O,traits:new Set},enumerable:!1}),S._zod.traits.has(e))return;S._zod.traits.add(e),t(S,w);let E=O.prototype,D=Object.keys(E);for(let e=0;e<D.length;e++){let t=D[e];t in S||(S[t]=E[t].bind(S))}}let E=S?.Parent??Object;class D extends E{}Object.defineProperty(D,`name`,{value:e});function O(e){var t;let E=S?.Parent?new D:this;w(E,e),(t=E._zod).deferred??(t.deferred=[]);for(let e of E._zod.deferred)e();return E}return Object.defineProperty(O,`init`,{value:w}),Object.defineProperty(O,Symbol.hasInstance,{value:t=>S?.Parent&&t instanceof S.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(O,`name`,{value:e}),O}var $ZodAsyncError=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},$ZodEncodeError=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};const globalConfig={};function config(e){return e&&Object.assign(globalConfig,e),globalConfig}function getEnumValues(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,S])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function jsonStringifyReplacer(e,t){return typeof t==`bigint`?t.toString():t}function cached(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function nullish(e){return e==null}function cleanRegex(e){let t=e.startsWith(`^`)?1:0,S=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,S)}function floatSafeRemainder$1(e,t){let S=(e.toString().split(`.`)[1]||``).length,w=t.toString(),E=(w.split(`.`)[1]||``).length;if(E===0&&/\d?e-\d?/.test(w)){let e=w.match(/\d?e-(\d?)/);e?.[1]&&(E=Number.parseInt(e[1]))}let D=S>E?S:E;return Number.parseInt(e.toFixed(D).replace(`.`,``))%Number.parseInt(t.toFixed(D).replace(`.`,``))/10**D}const EVALUATING=Symbol(`evaluating`);function defineLazy(e,t,S){let w;Object.defineProperty(e,t,{get(){if(w!==EVALUATING)return w===void 0&&(w=EVALUATING,w=S()),w},set(S){Object.defineProperty(e,t,{value:S})},configurable:!0})}function assignProp(e,t,S){Object.defineProperty(e,t,{value:S,writable:!0,enumerable:!0,configurable:!0})}function mergeDefs(...e){let t={};for(let S of e)Object.assign(t,Object.getOwnPropertyDescriptors(S));return Object.defineProperties({},t)}function esc(e){return JSON.stringify(e)}function slugify(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}const captureStackTrace=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function isObject$1(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const allowsEval=cached(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function isPlainObject$4(e){if(isObject$1(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let S=t.prototype;return!(isObject$1(S)===!1||Object.prototype.hasOwnProperty.call(S,`isPrototypeOf`)===!1)}function shallowClone(e){return isPlainObject$4(e)?{...e}:Array.isArray(e)?[...e]:e}const propertyKeyTypes=new Set([`string`,`number`,`symbol`]);function escapeRegex$1(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function clone(e,t,S){let w=new e._zod.constr(t??e._zod.def);return(!t||S?.parent)&&(w._zod.parent=e),w}function normalizeParams(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function optionalKeys(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}const NUMBER_FORMAT_RANGES={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function pick$2(e,t){let S=e._zod.def,w=S.checks;if(w&&w.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return clone(e,mergeDefs(e._zod.def,{get shape(){let e={};for(let w in t){if(!(w in S.shape))throw Error(`Unrecognized key: "${w}"`);t[w]&&(e[w]=S.shape[w])}return assignProp(this,`shape`,e),e},checks:[]}))}function omit(e,t){let S=e._zod.def,w=S.checks;if(w&&w.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return clone(e,mergeDefs(e._zod.def,{get shape(){let w={...e._zod.def.shape};for(let e in t){if(!(e in S.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete w[e]}return assignProp(this,`shape`,w),w},checks:[]}))}function extend$1(e,t){if(!isPlainObject$4(t))throw Error(`Invalid input to extend: expected a plain object`);let S=e._zod.def.checks;if(S&&S.length>0){let S=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(S,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return clone(e,mergeDefs(e._zod.def,{get shape(){let S={...e._zod.def.shape,...t};return assignProp(this,`shape`,S),S}}))}function safeExtend(e,t){if(!isPlainObject$4(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return clone(e,mergeDefs(e._zod.def,{get shape(){let S={...e._zod.def.shape,...t};return assignProp(this,`shape`,S),S}}))}function merge$1(e,t){return clone(e,mergeDefs(e._zod.def,{get shape(){let S={...e._zod.def.shape,...t._zod.def.shape};return assignProp(this,`shape`,S),S},get catchall(){return t._zod.def.catchall},checks:[]}))}function partial(e,t,S){let w=t._zod.def.checks;if(w&&w.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return clone(t,mergeDefs(t._zod.def,{get shape(){let w=t._zod.def.shape,E={...w};if(S)for(let t in S){if(!(t in w))throw Error(`Unrecognized key: "${t}"`);S[t]&&(E[t]=e?new e({type:`optional`,innerType:w[t]}):w[t])}else for(let t in w)E[t]=e?new e({type:`optional`,innerType:w[t]}):w[t];return assignProp(this,`shape`,E),E},checks:[]}))}function required(e,t,S){return clone(t,mergeDefs(t._zod.def,{get shape(){let w=t._zod.def.shape,E={...w};if(S)for(let t in S){if(!(t in E))throw Error(`Unrecognized key: "${t}"`);S[t]&&(E[t]=new e({type:`nonoptional`,innerType:w[t]}))}else for(let t in w)E[t]=new e({type:`nonoptional`,innerType:w[t]});return assignProp(this,`shape`,E),E}}))}function aborted(e,t=0){if(e.aborted===!0)return!0;for(let S=t;S<e.issues.length;S++)if(e.issues[S]?.continue!==!0)return!0;return!1}function prefixIssues(e,t){return t.map(t=>{var S;return(S=t).path??(S.path=[]),t.path.unshift(e),t})}function unwrapMessage(e){return typeof e==`string`?e:e?.message}function finalizeIssue(e,t,S){let w={...e,path:e.path??[]};return e.message||(w.message=unwrapMessage(e.inst?._zod.def?.error?.(e))??unwrapMessage(t?.error?.(e))??unwrapMessage(S.customError?.(e))??unwrapMessage(S.localeError?.(e))??`Invalid input`),delete w.inst,delete w.continue,t?.reportInput||delete w.input,w}function getLengthableOrigin(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function issue(...e){let[t,S,w]=e;return typeof t==`string`?{message:t,code:`custom`,input:S,inst:w}:{...t}}const initializer$1=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,jsonStringifyReplacer,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})},$ZodError=$constructor(`$ZodError`,initializer$1),$ZodRealError=$constructor(`$ZodError`,initializer$1,{Parent:Error});function flattenError(e,t=e=>e.message){let S={},w=[];for(let E of e.issues)E.path.length>0?(S[E.path[0]]=S[E.path[0]]||[],S[E.path[0]].push(t(E))):w.push(t(E));return{formErrors:w,fieldErrors:S}}function formatError(e,t=e=>e.message){let S={_errors:[]},w=e=>{for(let E of e.issues)if(E.code===`invalid_union`&&E.errors.length)E.errors.map(e=>w({issues:e}));else if(E.code===`invalid_key`)w({issues:E.issues});else if(E.code===`invalid_element`)w({issues:E.issues});else if(E.path.length===0)S._errors.push(t(E));else{let e=S,w=0;for(;w<E.path.length;){let S=E.path[w];w===E.path.length-1?(e[S]=e[S]||{_errors:[]},e[S]._errors.push(t(E))):e[S]=e[S]||{_errors:[]},e=e[S],w++}}};return w(e),S}function toDotPath(e){let t=[],S=e.map(e=>typeof e==`object`?e.key:e);for(let e of S)typeof e==`number`?t.push(`[${e}]`):typeof e==`symbol`?t.push(`[${JSON.stringify(String(e))}]`):/[^\w$]/.test(e)?t.push(`[${JSON.stringify(e)}]`):(t.length&&t.push(`.`),t.push(e));return t.join(``)}function prettifyError(e){let t=[],S=[...e.issues].sort((e,t)=>(e.path??[]).length-(t.path??[]).length);for(let e of S)t.push(`✖ ${e.message}`),e.path?.length&&t.push(` → at ${toDotPath(e.path)}`);return t.join(`
|
|
116
|
+
`)}const _parse=e=>(t,S,w,E)=>{let D=w?Object.assign(w,{async:!1}):{async:!1},O=t._zod.run({value:S,issues:[]},D);if(O instanceof Promise)throw new $ZodAsyncError;if(O.issues.length){let t=new(E?.Err??e)(O.issues.map(e=>finalizeIssue(e,D,config())));throw captureStackTrace(t,E?.callee),t}return O.value},parse$6=_parse($ZodRealError),_parseAsync=e=>async(t,S,w,E)=>{let D=w?Object.assign(w,{async:!0}):{async:!0},O=t._zod.run({value:S,issues:[]},D);if(O instanceof Promise&&(O=await O),O.issues.length){let t=new(E?.Err??e)(O.issues.map(e=>finalizeIssue(e,D,config())));throw captureStackTrace(t,E?.callee),t}return O.value},parseAsync$1=_parseAsync($ZodRealError),_safeParse=e=>(t,S,w)=>{let E=w?{...w,async:!1}:{async:!1},D=t._zod.run({value:S,issues:[]},E);if(D instanceof Promise)throw new $ZodAsyncError;return D.issues.length?{success:!1,error:new(e??$ZodError)(D.issues.map(e=>finalizeIssue(e,E,config())))}:{success:!0,data:D.value}},safeParse$2=_safeParse($ZodRealError),_safeParseAsync=e=>async(t,S,w)=>{let E=w?Object.assign(w,{async:!0}):{async:!0},D=t._zod.run({value:S,issues:[]},E);return D instanceof Promise&&(D=await D),D.issues.length?{success:!1,error:new e(D.issues.map(e=>finalizeIssue(e,E,config())))}:{success:!0,data:D.value}},safeParseAsync$2=_safeParseAsync($ZodRealError),_encode=e=>(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _parse(e)(t,S,E)},encode$2=_encode($ZodRealError),_decode=e=>(t,S,w)=>_parse(e)(t,S,w),decode$2=_decode($ZodRealError),_encodeAsync=e=>async(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _parseAsync(e)(t,S,E)},encodeAsync$1=_encodeAsync($ZodRealError),_decodeAsync=e=>async(t,S,w)=>_parseAsync(e)(t,S,w),decodeAsync$1=_decodeAsync($ZodRealError),_safeEncode=e=>(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _safeParse(e)(t,S,E)},safeEncode$1=_safeEncode($ZodRealError),_safeDecode=e=>(t,S,w)=>_safeParse(e)(t,S,w),safeDecode$1=_safeDecode($ZodRealError),_safeEncodeAsync=e=>async(t,S,w)=>{let E=w?Object.assign(w,{direction:`backward`}):{direction:`backward`};return _safeParseAsync(e)(t,S,E)},safeEncodeAsync$1=_safeEncodeAsync($ZodRealError),_safeDecodeAsync=e=>async(t,S,w)=>_safeParseAsync(e)(t,S,w),safeDecodeAsync$1=_safeDecodeAsync($ZodRealError),cuid=/^[cC][^\s-]{8,}$/,cuid2=/^[0-9a-z]+$/,ulid=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xid=/^[0-9a-vA-V]{20}$/,ksuid=/^[A-Za-z0-9]{27}$/,nanoid=/^[a-zA-Z0-9_-]{21}$/,duration$1=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,guid=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,email=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,_emoji$1=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function emoji(){return new RegExp(_emoji$1,`u`)}const ipv4=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,cidrv4=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url=/^[A-Za-z0-9_-]*$/,e164=/^\+[1-9]\d{6,14}$/,dateSource=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,date$1=RegExp(`^${dateSource}$`);function timeSource(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time$1(e){return RegExp(`^${timeSource(e)}$`)}function datetime$1(e){let t=timeSource({precision:e.precision}),S=[`Z`];e.local&&S.push(``),e.offset&&S.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let w=`${t}(?:${S.join(`|`)})`;return RegExp(`^${dateSource}T(?:${w})$`)}const string$3=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},integer=/^-?\d+$/,number$2=/^-?\d+(?:\.\d+)?$/,boolean$2=/^(?:true|false)$/i,_null$2=/^null$/i,lowercase=/^[^A-Z]*$/,uppercase=/^[^a-z]*$/,$ZodCheck=$constructor(`$ZodCheck`,(e,t)=>{var S;e._zod??={},e._zod.def=t,(S=e._zod).onattach??(S.onattach=[])}),numericOriginMap={number:`number`,bigint:`bigint`,object:`date`},$ZodCheckLessThan=$constructor(`$ZodCheckLessThan`,(e,t)=>{$ZodCheck.init(e,t);let S=numericOriginMap[typeof t.value];e._zod.onattach.push(e=>{let S=e._zod.bag,w=(t.inclusive?S.maximum:S.exclusiveMaximum)??1/0;t.value<w&&(t.inclusive?S.maximum=t.value:S.exclusiveMaximum=t.value)}),e._zod.check=w=>{(t.inclusive?w.value<=t.value:w.value<t.value)||w.issues.push({origin:S,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:w.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),$ZodCheckGreaterThan=$constructor(`$ZodCheckGreaterThan`,(e,t)=>{$ZodCheck.init(e,t);let S=numericOriginMap[typeof t.value];e._zod.onattach.push(e=>{let S=e._zod.bag,w=(t.inclusive?S.minimum:S.exclusiveMinimum)??-1/0;t.value>w&&(t.inclusive?S.minimum=t.value:S.exclusiveMinimum=t.value)}),e._zod.check=w=>{(t.inclusive?w.value>=t.value:w.value>t.value)||w.issues.push({origin:S,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:w.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),$ZodCheckMultipleOf=$constructor(`$ZodCheckMultipleOf`,(e,t)=>{$ZodCheck.init(e,t),e._zod.onattach.push(e=>{var S;(S=e._zod.bag).multipleOf??(S.multipleOf=t.value)}),e._zod.check=S=>{if(typeof S.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof S.value==`bigint`?S.value%t.value===BigInt(0):floatSafeRemainder$1(S.value,t.value)===0)||S.issues.push({origin:typeof S.value,code:`not_multiple_of`,divisor:t.value,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckNumberFormat=$constructor(`$ZodCheckNumberFormat`,(e,t)=>{$ZodCheck.init(e,t),t.format=t.format||`float64`;let S=t.format?.includes(`int`),w=S?`int`:`number`,[E,D]=NUMBER_FORMAT_RANGES[t.format];e._zod.onattach.push(e=>{let w=e._zod.bag;w.format=t.format,w.minimum=E,w.maximum=D,S&&(w.pattern=integer)}),e._zod.check=O=>{let k=O.value;if(S){if(!Number.isInteger(k)){O.issues.push({expected:w,format:t.format,code:`invalid_type`,continue:!1,input:k,inst:e});return}if(!Number.isSafeInteger(k)){k>0?O.issues.push({input:k,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:w,inclusive:!0,continue:!t.abort}):O.issues.push({input:k,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:w,inclusive:!0,continue:!t.abort});return}}k<E&&O.issues.push({origin:`number`,input:k,code:`too_small`,minimum:E,inclusive:!0,inst:e,continue:!t.abort}),k>D&&O.issues.push({origin:`number`,input:k,code:`too_big`,maximum:D,inclusive:!0,inst:e,continue:!t.abort})}}),$ZodCheckMaxLength=$constructor(`$ZodCheckMaxLength`,(e,t)=>{var S;$ZodCheck.init(e,t),(S=e._zod.def).when??(S.when=e=>{let t=e.value;return!nullish(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let S=e._zod.bag.maximum??1/0;t.maximum<S&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=S=>{let w=S.value;if(w.length<=t.maximum)return;let E=getLengthableOrigin(w);S.issues.push({origin:E,code:`too_big`,maximum:t.maximum,inclusive:!0,input:w,inst:e,continue:!t.abort})}}),$ZodCheckMinLength=$constructor(`$ZodCheckMinLength`,(e,t)=>{var S;$ZodCheck.init(e,t),(S=e._zod.def).when??(S.when=e=>{let t=e.value;return!nullish(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let S=e._zod.bag.minimum??-1/0;t.minimum>S&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=S=>{let w=S.value;if(w.length>=t.minimum)return;let E=getLengthableOrigin(w);S.issues.push({origin:E,code:`too_small`,minimum:t.minimum,inclusive:!0,input:w,inst:e,continue:!t.abort})}}),$ZodCheckLengthEquals=$constructor(`$ZodCheckLengthEquals`,(e,t)=>{var S;$ZodCheck.init(e,t),(S=e._zod.def).when??(S.when=e=>{let t=e.value;return!nullish(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let S=e._zod.bag;S.minimum=t.length,S.maximum=t.length,S.length=t.length}),e._zod.check=S=>{let w=S.value,E=w.length;if(E===t.length)return;let D=getLengthableOrigin(w),O=E>t.length;S.issues.push({origin:D,...O?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckStringFormat=$constructor(`$ZodCheckStringFormat`,(e,t)=>{var S,w;$ZodCheck.init(e,t),e._zod.onattach.push(e=>{let S=e._zod.bag;S.format=t.format,t.pattern&&(S.patterns??=new Set,S.patterns.add(t.pattern))}),t.pattern?(S=e._zod).check??(S.check=S=>{t.pattern.lastIndex=0,!t.pattern.test(S.value)&&S.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:S.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(w=e._zod).check??(w.check=()=>{})}),$ZodCheckRegex=$constructor(`$ZodCheckRegex`,(e,t)=>{$ZodCheckStringFormat.init(e,t),e._zod.check=S=>{t.pattern.lastIndex=0,!t.pattern.test(S.value)&&S.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:S.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),$ZodCheckLowerCase=$constructor(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=lowercase,$ZodCheckStringFormat.init(e,t)}),$ZodCheckUpperCase=$constructor(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=uppercase,$ZodCheckStringFormat.init(e,t)}),$ZodCheckIncludes=$constructor(`$ZodCheckIncludes`,(e,t)=>{$ZodCheck.init(e,t);let S=escapeRegex$1(t.includes),w=new RegExp(typeof t.position==`number`?`^.{${t.position}}${S}`:S);t.pattern=w,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(w)}),e._zod.check=S=>{S.value.includes(t.includes,t.position)||S.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckStartsWith=$constructor(`$ZodCheckStartsWith`,(e,t)=>{$ZodCheck.init(e,t);let S=RegExp(`^${escapeRegex$1(t.prefix)}.*`);t.pattern??=S,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(S)}),e._zod.check=S=>{S.value.startsWith(t.prefix)||S.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckEndsWith=$constructor(`$ZodCheckEndsWith`,(e,t)=>{$ZodCheck.init(e,t);let S=RegExp(`.*${escapeRegex$1(t.suffix)}$`);t.pattern??=S,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(S)}),e._zod.check=S=>{S.value.endsWith(t.suffix)||S.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:S.value,inst:e,continue:!t.abort})}}),$ZodCheckOverwrite=$constructor(`$ZodCheckOverwrite`,(e,t)=>{$ZodCheck.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});var Doc$1=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
|
|
116
117
|
`).filter(e=>e),S=Math.min(...t.map(e=>e.length-e.trimStart().length)),w=t.map(e=>e.slice(S)).map(e=>` `.repeat(this.indent*2)+e);for(let e of w)this.content.push(e)}compile(){let e=Function,t=this?.args,S=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,S.join(`
|
|
117
118
|
`))}};const version$1={major:4,minor:3,patch:6},$ZodType=$constructor(`$ZodType`,(e,t)=>{var S;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=version$1;let w=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&w.unshift(e);for(let t of w)for(let S of t._zod.onattach)S(e);if(w.length===0)(S=e._zod).deferred??(S.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,S)=>{let w=aborted(e),E;for(let D of t){if(D._zod.def.when){if(!D._zod.def.when(e))continue}else if(w)continue;let t=e.issues.length,O=D._zod.check(e);if(O instanceof Promise&&S?.async===!1)throw new $ZodAsyncError;if(E||O instanceof Promise)E=(E??Promise.resolve()).then(async()=>{await O,e.issues.length!==t&&(w||=aborted(e,t))});else{if(e.issues.length===t)continue;w||=aborted(e,t)}}return E?E.then(()=>e):e},S=(S,E,D)=>{if(aborted(S))return S.aborted=!0,S;let O=t(E,w,D);if(O instanceof Promise){if(D.async===!1)throw new $ZodAsyncError;return O.then(t=>e._zod.parse(t,D))}return e._zod.parse(O,D)};e._zod.run=(E,D)=>{if(D.skipChecks)return e._zod.parse(E,D);if(D.direction===`backward`){let t=e._zod.parse({value:E.value,issues:[]},{...D,skipChecks:!0});return t instanceof Promise?t.then(e=>S(e,E,D)):S(t,E,D)}let O=e._zod.parse(E,D);if(O instanceof Promise){if(D.async===!1)throw new $ZodAsyncError;return O.then(e=>t(e,w,D))}return t(O,w,D)}}defineLazy(e,`~standard`,()=>({validate:t=>{try{let S=safeParse$2(e,t);return S.success?{value:S.data}:{issues:S.error?.issues}}catch{return safeParseAsync$2(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),$ZodString=$constructor(`$ZodString`,(e,t)=>{$ZodType.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??string$3(e._zod.bag),e._zod.parse=(S,w)=>{if(t.coerce)try{S.value=String(S.value)}catch{}return typeof S.value==`string`||S.issues.push({expected:`string`,code:`invalid_type`,input:S.value,inst:e}),S}}),$ZodStringFormat=$constructor(`$ZodStringFormat`,(e,t)=>{$ZodCheckStringFormat.init(e,t),$ZodString.init(e,t)}),$ZodGUID=$constructor(`$ZodGUID`,(e,t)=>{t.pattern??=guid,$ZodStringFormat.init(e,t)}),$ZodUUID=$constructor(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=uuid(e)}else t.pattern??=uuid();$ZodStringFormat.init(e,t)}),$ZodEmail=$constructor(`$ZodEmail`,(e,t)=>{t.pattern??=email,$ZodStringFormat.init(e,t)}),$ZodURL=$constructor(`$ZodURL`,(e,t)=>{$ZodStringFormat.init(e,t),e._zod.check=S=>{try{let w=S.value.trim(),E=new URL(w);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(E.hostname)||S.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:S.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(E.protocol.endsWith(`:`)?E.protocol.slice(0,-1):E.protocol)||S.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:S.value,inst:e,continue:!t.abort})),t.normalize?S.value=E.href:S.value=w;return}catch{S.issues.push({code:`invalid_format`,format:`url`,input:S.value,inst:e,continue:!t.abort})}}}),$ZodEmoji=$constructor(`$ZodEmoji`,(e,t)=>{t.pattern??=emoji(),$ZodStringFormat.init(e,t)}),$ZodNanoID=$constructor(`$ZodNanoID`,(e,t)=>{t.pattern??=nanoid,$ZodStringFormat.init(e,t)}),$ZodCUID=$constructor(`$ZodCUID`,(e,t)=>{t.pattern??=cuid,$ZodStringFormat.init(e,t)}),$ZodCUID2=$constructor(`$ZodCUID2`,(e,t)=>{t.pattern??=cuid2,$ZodStringFormat.init(e,t)}),$ZodULID=$constructor(`$ZodULID`,(e,t)=>{t.pattern??=ulid,$ZodStringFormat.init(e,t)}),$ZodXID=$constructor(`$ZodXID`,(e,t)=>{t.pattern??=xid,$ZodStringFormat.init(e,t)}),$ZodKSUID=$constructor(`$ZodKSUID`,(e,t)=>{t.pattern??=ksuid,$ZodStringFormat.init(e,t)}),$ZodISODateTime=$constructor(`$ZodISODateTime`,(e,t)=>{t.pattern??=datetime$1(t),$ZodStringFormat.init(e,t)}),$ZodISODate=$constructor(`$ZodISODate`,(e,t)=>{t.pattern??=date$1,$ZodStringFormat.init(e,t)}),$ZodISOTime=$constructor(`$ZodISOTime`,(e,t)=>{t.pattern??=time$1(t),$ZodStringFormat.init(e,t)}),$ZodISODuration=$constructor(`$ZodISODuration`,(e,t)=>{t.pattern??=duration$1,$ZodStringFormat.init(e,t)}),$ZodIPv4=$constructor(`$ZodIPv4`,(e,t)=>{t.pattern??=ipv4,$ZodStringFormat.init(e,t),e._zod.bag.format=`ipv4`}),$ZodIPv6=$constructor(`$ZodIPv6`,(e,t)=>{t.pattern??=ipv6,$ZodStringFormat.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=S=>{try{new URL(`http://[${S.value}]`)}catch{S.issues.push({code:`invalid_format`,format:`ipv6`,input:S.value,inst:e,continue:!t.abort})}}}),$ZodCIDRv4=$constructor(`$ZodCIDRv4`,(e,t)=>{t.pattern??=cidrv4,$ZodStringFormat.init(e,t)}),$ZodCIDRv6=$constructor(`$ZodCIDRv6`,(e,t)=>{t.pattern??=cidrv6,$ZodStringFormat.init(e,t),e._zod.check=S=>{let w=S.value.split(`/`);try{if(w.length!==2)throw Error();let[e,t]=w;if(!t)throw Error();let S=Number(t);if(`${S}`!==t||S<0||S>128)throw Error();new URL(`http://[${e}]`)}catch{S.issues.push({code:`invalid_format`,format:`cidrv6`,input:S.value,inst:e,continue:!t.abort})}}});function isValidBase64(e){if(e===``)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const $ZodBase64=$constructor(`$ZodBase64`,(e,t)=>{t.pattern??=base64,$ZodStringFormat.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=S=>{isValidBase64(S.value)||S.issues.push({code:`invalid_format`,format:`base64`,input:S.value,inst:e,continue:!t.abort})}});function isValidBase64URL(e){if(!base64url.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return isValidBase64(t.padEnd(Math.ceil(t.length/4)*4,`=`))}const $ZodBase64URL=$constructor(`$ZodBase64URL`,(e,t)=>{t.pattern??=base64url,$ZodStringFormat.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=S=>{isValidBase64URL(S.value)||S.issues.push({code:`invalid_format`,format:`base64url`,input:S.value,inst:e,continue:!t.abort})}}),$ZodE164=$constructor(`$ZodE164`,(e,t)=>{t.pattern??=e164,$ZodStringFormat.init(e,t)});function isValidJWT$1(e,t=null){try{let S=e.split(`.`);if(S.length!==3)return!1;let[w]=S;if(!w)return!1;let E=JSON.parse(atob(w));return!(`typ`in E&&E?.typ!==`JWT`||!E.alg||t&&(!(`alg`in E)||E.alg!==t))}catch{return!1}}const $ZodJWT=$constructor(`$ZodJWT`,(e,t)=>{$ZodStringFormat.init(e,t),e._zod.check=S=>{isValidJWT$1(S.value,t.alg)||S.issues.push({code:`invalid_format`,format:`jwt`,input:S.value,inst:e,continue:!t.abort})}}),$ZodNumber=$constructor(`$ZodNumber`,(e,t)=>{$ZodType.init(e,t),e._zod.pattern=e._zod.bag.pattern??number$2,e._zod.parse=(S,w)=>{if(t.coerce)try{S.value=Number(S.value)}catch{}let E=S.value;if(typeof E==`number`&&!Number.isNaN(E)&&Number.isFinite(E))return S;let D=typeof E==`number`?Number.isNaN(E)?`NaN`:Number.isFinite(E)?void 0:`Infinity`:void 0;return S.issues.push({expected:`number`,code:`invalid_type`,input:E,inst:e,...D?{received:D}:{}}),S}}),$ZodNumberFormat=$constructor(`$ZodNumberFormat`,(e,t)=>{$ZodCheckNumberFormat.init(e,t),$ZodNumber.init(e,t)}),$ZodBoolean=$constructor(`$ZodBoolean`,(e,t)=>{$ZodType.init(e,t),e._zod.pattern=boolean$2,e._zod.parse=(S,w)=>{if(t.coerce)try{S.value=!!S.value}catch{}let E=S.value;return typeof E==`boolean`||S.issues.push({expected:`boolean`,code:`invalid_type`,input:E,inst:e}),S}}),$ZodNull=$constructor(`$ZodNull`,(e,t)=>{$ZodType.init(e,t),e._zod.pattern=_null$2,e._zod.values=new Set([null]),e._zod.parse=(t,S)=>{let w=t.value;return w===null||t.issues.push({expected:`null`,code:`invalid_type`,input:w,inst:e}),t}}),$ZodAny=$constructor(`$ZodAny`,(e,t)=>{$ZodType.init(e,t),e._zod.parse=e=>e}),$ZodUnknown=$constructor(`$ZodUnknown`,(e,t)=>{$ZodType.init(e,t),e._zod.parse=e=>e}),$ZodNever=$constructor(`$ZodNever`,(e,t)=>{$ZodType.init(e,t),e._zod.parse=(t,S)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function handleArrayResult(e,t,S){e.issues.length&&t.issues.push(...prefixIssues(S,e.issues)),t.value[S]=e.value}const $ZodArray=$constructor(`$ZodArray`,(e,t)=>{$ZodType.init(e,t),e._zod.parse=(S,w)=>{let E=S.value;if(!Array.isArray(E))return S.issues.push({expected:`array`,code:`invalid_type`,input:E,inst:e}),S;S.value=Array(E.length);let D=[];for(let e=0;e<E.length;e++){let O=E[e],k=t.element._zod.run({value:O,issues:[]},w);k instanceof Promise?D.push(k.then(t=>handleArrayResult(t,S,e))):handleArrayResult(k,S,e)}return D.length?Promise.all(D).then(()=>S):S}});function handlePropertyResult(e,t,S,w,E){if(e.issues.length){if(E&&!(S in w))return;t.issues.push(...prefixIssues(S,e.issues))}e.value===void 0?S in w&&(t.value[S]=void 0):t.value[S]=e.value}function normalizeDef(e){let t=Object.keys(e.shape);for(let S of t)if(!e.shape?.[S]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${S}": expected a Zod schema`);let S=optionalKeys(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(S)}}function handleCatchall(e,t,S,w,E,D){let O=[],k=E.keySet,j=E.catchall._zod,F=j.def.type,L=j.optout===`optional`;for(let E in t){if(k.has(E))continue;if(F===`never`){O.push(E);continue}let D=j.run({value:t[E],issues:[]},w);D instanceof Promise?e.push(D.then(e=>handlePropertyResult(e,S,E,t,L))):handlePropertyResult(D,S,E,t,L)}return O.length&&S.issues.push({code:`unrecognized_keys`,keys:O,input:t,inst:D}),e.length?Promise.all(e).then(()=>S):S}const $ZodObject=$constructor(`$ZodObject`,(e,t)=>{if($ZodType.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,`shape`,{get:()=>{let S={...e};return Object.defineProperty(t,`shape`,{value:S}),S}})}let S=cached(()=>normalizeDef(t));defineLazy(e._zod,`propValues`,()=>{let e=t.shape,S={};for(let t in e){let w=e[t]._zod;if(w.values){S[t]??(S[t]=new Set);for(let e of w.values)S[t].add(e)}}return S});let w=isObject$1,E=t.catchall,D;e._zod.parse=(t,O)=>{D??=S.value;let k=t.value;if(!w(k))return t.issues.push({expected:`object`,code:`invalid_type`,input:k,inst:e}),t;t.value={};let j=[],F=D.shape;for(let e of D.keys){let S=F[e],w=S._zod.optout===`optional`,E=S._zod.run({value:k[e],issues:[]},O);E instanceof Promise?j.push(E.then(S=>handlePropertyResult(S,t,e,k,w))):handlePropertyResult(E,t,e,k,w)}return E?handleCatchall(j,k,t,O,S.value,e):j.length?Promise.all(j).then(()=>t):t}}),$ZodObjectJIT=$constructor(`$ZodObjectJIT`,(e,t)=>{$ZodObject.init(e,t);let S=e._zod.parse,w=cached(()=>normalizeDef(t)),E=e=>{let t=new Doc$1([`shape`,`payload`,`ctx`]),S=w.value,E=e=>{let t=esc(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let D=Object.create(null),O=0;for(let e of S.keys)D[e]=`key_${O++}`;t.write(`const newResult = {};`);for(let w of S.keys){let S=D[w],O=esc(w),k=e[w]?._zod?.optout===`optional`;t.write(`const ${S} = ${E(w)};`),k?t.write(`
|
|
118
119
|
if (${S}.issues.length) {
|
|
@@ -150,7 +151,7 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
|
|
|
150
151
|
|
|
151
152
|
`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let k=t.compile();return(t,S)=>k(e,t,S)},D,O=isObject$1,k=!globalConfig.jitless,j=k&&allowsEval.value,F=t.catchall,L;e._zod.parse=(B,H)=>{L??=w.value;let q=B.value;return O(q)?k&&j&&H?.async===!1&&H.jitless!==!0?(D||=E(t.shape),B=D(B,H),F?handleCatchall([],q,B,H,L,e):B):S(B,H):(B.issues.push({expected:`object`,code:`invalid_type`,input:q,inst:e}),B)}});function handleUnionResults(e,t,S,w){for(let S of e)if(S.issues.length===0)return t.value=S.value,t;let E=e.filter(e=>!aborted(e));return E.length===1?(t.value=E[0].value,E[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:S,errors:e.map(e=>e.issues.map(e=>finalizeIssue(e,w,config())))}),t)}const $ZodUnion=$constructor(`$ZodUnion`,(e,t)=>{$ZodType.init(e,t),defineLazy(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),defineLazy(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),defineLazy(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),defineLazy(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>cleanRegex(e.source)).join(`|`)})$`)}});let S=t.options.length===1,w=t.options[0]._zod.run;e._zod.parse=(E,D)=>{if(S)return w(E,D);let O=!1,k=[];for(let e of t.options){let t=e._zod.run({value:E.value,issues:[]},D);if(t instanceof Promise)k.push(t),O=!0;else{if(t.issues.length===0)return t;k.push(t)}}return O?Promise.all(k).then(t=>handleUnionResults(t,E,e,D)):handleUnionResults(k,E,e,D)}}),$ZodDiscriminatedUnion=$constructor(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,$ZodUnion.init(e,t);let S=e._zod.parse;defineLazy(e._zod,`propValues`,()=>{let e={};for(let S of t.options){let w=S._zod.propValues;if(!w||Object.keys(w).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(S)}"`);for(let[t,S]of Object.entries(w)){e[t]||(e[t]=new Set);for(let w of S)e[t].add(w)}}return e});let w=cached(()=>{let e=t.options,S=new Map;for(let w of e){let e=w._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(w)}"`);for(let t of e){if(S.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);S.set(t,w)}}return S});e._zod.parse=(E,D)=>{let O=E.value;if(!isObject$1(O))return E.issues.push({code:`invalid_type`,expected:`object`,input:O,inst:e}),E;let k=w.value.get(O?.[t.discriminator]);return k?k._zod.run(E,D):t.unionFallback?S(E,D):(E.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,input:O,path:[t.discriminator],inst:e}),E)}}),$ZodIntersection=$constructor(`$ZodIntersection`,(e,t)=>{$ZodType.init(e,t),e._zod.parse=(e,S)=>{let w=e.value,E=t.left._zod.run({value:w,issues:[]},S),D=t.right._zod.run({value:w,issues:[]},S);return E instanceof Promise||D instanceof Promise?Promise.all([E,D]).then(([t,S])=>handleIntersectionResults(e,t,S)):handleIntersectionResults(e,E,D)}});function mergeValues$1(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(isPlainObject$4(e)&&isPlainObject$4(t)){let S=Object.keys(t),w=Object.keys(e).filter(e=>S.indexOf(e)!==-1),E={...e,...t};for(let S of w){let w=mergeValues$1(e[S],t[S]);if(!w.valid)return{valid:!1,mergeErrorPath:[S,...w.mergeErrorPath]};E[S]=w.data}return{valid:!0,data:E}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let S=[];for(let w=0;w<e.length;w++){let E=e[w],D=t[w],O=mergeValues$1(E,D);if(!O.valid)return{valid:!1,mergeErrorPath:[w,...O.mergeErrorPath]};S.push(O.data)}return{valid:!0,data:S}}return{valid:!1,mergeErrorPath:[]}}function handleIntersectionResults(e,t,S){let w=new Map,E;for(let S of t.issues)if(S.code===`unrecognized_keys`){E??=S;for(let e of S.keys)w.has(e)||w.set(e,{}),w.get(e).l=!0}else e.issues.push(S);for(let t of S.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)w.has(e)||w.set(e,{}),w.get(e).r=!0;else e.issues.push(t);let D=[...w].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(D.length&&E&&e.issues.push({...E,keys:D}),aborted(e))return e;let O=mergeValues$1(t.value,S.value);if(!O.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(O.mergeErrorPath)}`);return e.value=O.data,e}const $ZodRecord=$constructor(`$ZodRecord`,(e,t)=>{$ZodType.init(e,t),e._zod.parse=(S,w)=>{let E=S.value;if(!isPlainObject$4(E))return S.issues.push({expected:`record`,code:`invalid_type`,input:E,inst:e}),S;let D=[],O=t.keyType._zod.values;if(O){S.value={};let k=new Set;for(let e of O)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){k.add(typeof e==`number`?e.toString():e);let O=t.valueType._zod.run({value:E[e],issues:[]},w);O instanceof Promise?D.push(O.then(t=>{t.issues.length&&S.issues.push(...prefixIssues(e,t.issues)),S.value[e]=t.value})):(O.issues.length&&S.issues.push(...prefixIssues(e,O.issues)),S.value[e]=O.value)}let j;for(let e in E)k.has(e)||(j??=[],j.push(e));j&&j.length>0&&S.issues.push({code:`unrecognized_keys`,input:E,inst:e,keys:j})}else{S.value={};for(let O of Reflect.ownKeys(E)){if(O===`__proto__`)continue;let k=t.keyType._zod.run({value:O,issues:[]},w);if(k instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof O==`string`&&number$2.test(O)&&k.issues.length){let e=t.keyType._zod.run({value:Number(O),issues:[]},w);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(k=e)}if(k.issues.length){t.mode===`loose`?S.value[O]=E[O]:S.issues.push({code:`invalid_key`,origin:`record`,issues:k.issues.map(e=>finalizeIssue(e,w,config())),input:O,path:[O],inst:e});continue}let j=t.valueType._zod.run({value:E[O],issues:[]},w);j instanceof Promise?D.push(j.then(e=>{e.issues.length&&S.issues.push(...prefixIssues(O,e.issues)),S.value[k.value]=e.value})):(j.issues.length&&S.issues.push(...prefixIssues(O,j.issues)),S.value[k.value]=j.value)}}return D.length?Promise.all(D).then(()=>S):S}}),$ZodEnum=$constructor(`$ZodEnum`,(e,t)=>{$ZodType.init(e,t);let S=getEnumValues(t.entries),w=new Set(S);e._zod.values=w,e._zod.pattern=RegExp(`^(${S.filter(e=>propertyKeyTypes.has(typeof e)).map(e=>typeof e==`string`?escapeRegex$1(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,E)=>{let D=t.value;return w.has(D)||t.issues.push({code:`invalid_value`,values:S,input:D,inst:e}),t}}),$ZodLiteral=$constructor(`$ZodLiteral`,(e,t)=>{if($ZodType.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let S=new Set(t.values);e._zod.values=S,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?escapeRegex$1(e):e?escapeRegex$1(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(w,E)=>{let D=w.value;return S.has(D)||w.issues.push({code:`invalid_value`,values:t.values,input:D,inst:e}),w}}),$ZodTransform=$constructor(`$ZodTransform`,(e,t)=>{$ZodType.init(e,t),e._zod.parse=(S,w)=>{if(w.direction===`backward`)throw new $ZodEncodeError(e.constructor.name);let E=t.transform(S.value,S);if(w.async)return(E instanceof Promise?E:Promise.resolve(E)).then(e=>(S.value=e,S));if(E instanceof Promise)throw new $ZodAsyncError;return S.value=E,S}});function handleOptionalResult(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const $ZodOptional=$constructor(`$ZodOptional`,(e,t)=>{$ZodType.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,defineLazy(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),defineLazy(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${cleanRegex(e.source)})?$`):void 0}),e._zod.parse=(e,S)=>{if(t.innerType._zod.optin===`optional`){let w=t.innerType._zod.run(e,S);return w instanceof Promise?w.then(t=>handleOptionalResult(t,e.value)):handleOptionalResult(w,e.value)}return e.value===void 0?e:t.innerType._zod.run(e,S)}}),$ZodExactOptional=$constructor(`$ZodExactOptional`,(e,t)=>{$ZodOptional.init(e,t),defineLazy(e._zod,`values`,()=>t.innerType._zod.values),defineLazy(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,S)=>t.innerType._zod.run(e,S)}),$ZodNullable=$constructor(`$ZodNullable`,(e,t)=>{$ZodType.init(e,t),defineLazy(e._zod,`optin`,()=>t.innerType._zod.optin),defineLazy(e._zod,`optout`,()=>t.innerType._zod.optout),defineLazy(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${cleanRegex(e.source)}|null)$`):void 0}),defineLazy(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,S)=>e.value===null?e:t.innerType._zod.run(e,S)}),$ZodDefault=$constructor(`$ZodDefault`,(e,t)=>{$ZodType.init(e,t),e._zod.optin=`optional`,defineLazy(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,S)=>{if(S.direction===`backward`)return t.innerType._zod.run(e,S);if(e.value===void 0)return e.value=t.defaultValue,e;let w=t.innerType._zod.run(e,S);return w instanceof Promise?w.then(e=>handleDefaultResult(e,t)):handleDefaultResult(w,t)}});function handleDefaultResult(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const $ZodPrefault=$constructor(`$ZodPrefault`,(e,t)=>{$ZodType.init(e,t),e._zod.optin=`optional`,defineLazy(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,S)=>(S.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,S))}),$ZodNonOptional=$constructor(`$ZodNonOptional`,(e,t)=>{$ZodType.init(e,t),defineLazy(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(S,w)=>{let E=t.innerType._zod.run(S,w);return E instanceof Promise?E.then(t=>handleNonOptionalResult(t,e)):handleNonOptionalResult(E,e)}});function handleNonOptionalResult(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}const $ZodCatch=$constructor(`$ZodCatch`,(e,t)=>{$ZodType.init(e,t),defineLazy(e._zod,`optin`,()=>t.innerType._zod.optin),defineLazy(e._zod,`optout`,()=>t.innerType._zod.optout),defineLazy(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,S)=>{if(S.direction===`backward`)return t.innerType._zod.run(e,S);let w=t.innerType._zod.run(e,S);return w instanceof Promise?w.then(w=>(e.value=w.value,w.issues.length&&(e.value=t.catchValue({...e,error:{issues:w.issues.map(e=>finalizeIssue(e,S,config()))},input:e.value}),e.issues=[]),e)):(e.value=w.value,w.issues.length&&(e.value=t.catchValue({...e,error:{issues:w.issues.map(e=>finalizeIssue(e,S,config()))},input:e.value}),e.issues=[]),e)}}),$ZodPipe=$constructor(`$ZodPipe`,(e,t)=>{$ZodType.init(e,t),defineLazy(e._zod,`values`,()=>t.in._zod.values),defineLazy(e._zod,`optin`,()=>t.in._zod.optin),defineLazy(e._zod,`optout`,()=>t.out._zod.optout),defineLazy(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,S)=>{if(S.direction===`backward`){let w=t.out._zod.run(e,S);return w instanceof Promise?w.then(e=>handlePipeResult(e,t.in,S)):handlePipeResult(w,t.in,S)}let w=t.in._zod.run(e,S);return w instanceof Promise?w.then(e=>handlePipeResult(e,t.out,S)):handlePipeResult(w,t.out,S)}});function handlePipeResult(e,t,S){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},S)}const $ZodReadonly=$constructor(`$ZodReadonly`,(e,t)=>{$ZodType.init(e,t),defineLazy(e._zod,`propValues`,()=>t.innerType._zod.propValues),defineLazy(e._zod,`values`,()=>t.innerType._zod.values),defineLazy(e._zod,`optin`,()=>t.innerType?._zod?.optin),defineLazy(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,S)=>{if(S.direction===`backward`)return t.innerType._zod.run(e,S);let w=t.innerType._zod.run(e,S);return w instanceof Promise?w.then(handleReadonlyResult):handleReadonlyResult(w)}});function handleReadonlyResult(e){return e.value=Object.freeze(e.value),e}const $ZodCustom=$constructor(`$ZodCustom`,(e,t)=>{$ZodCheck.init(e,t),$ZodType.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=S=>{let w=S.value,E=t.fn(w);if(E instanceof Promise)return E.then(t=>handleRefineResult(t,S,w,e));handleRefineResult(E,S,w,e)}});function handleRefineResult(e,t,S,w){if(!e){let e={code:`custom`,input:S,inst:w,path:[...w._zod.def.path??[]],continue:!w._zod.def.abort};w._zod.def.params&&(e.params=w._zod.def.params),t.issues.push(issue(e))}}var _a$2,$ZodRegistry=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let S=t[0];return this._map.set(e,S),S&&typeof S==`object`&&`id`in S&&this._idmap.set(S.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let S={...this.get(t)??{}};delete S.id;let w={...S,...this._map.get(e)};return Object.keys(w).length?w:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function registry$1(){return new $ZodRegistry}(_a$2=globalThis).__zod_globalRegistry??(_a$2.__zod_globalRegistry=registry$1());const globalRegistry=globalThis.__zod_globalRegistry;function _string(e,t){return new e({type:`string`,...normalizeParams(t)})}function _email(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _guid(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _uuid(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _uuidv4(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...normalizeParams(t)})}function _uuidv6(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...normalizeParams(t)})}function _uuidv7(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...normalizeParams(t)})}function _url(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _emoji(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _nanoid(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _cuid(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _cuid2(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _ulid(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _xid(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _ksuid(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _ipv4(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _ipv6(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _cidrv4(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _cidrv6(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _base64(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _base64url(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _e164(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _jwt(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...normalizeParams(t)})}function _isoDateTime(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...normalizeParams(t)})}function _isoDate(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...normalizeParams(t)})}function _isoTime(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...normalizeParams(t)})}function _isoDuration(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...normalizeParams(t)})}function _number(e,t){return new e({type:`number`,checks:[],...normalizeParams(t)})}function _coercedNumber(e,t){return new e({type:`number`,coerce:!0,checks:[],...normalizeParams(t)})}function _int(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...normalizeParams(t)})}function _boolean(e,t){return new e({type:`boolean`,...normalizeParams(t)})}function _null$1(e,t){return new e({type:`null`,...normalizeParams(t)})}function _any(e){return new e({type:`any`})}function _unknown(e){return new e({type:`unknown`})}function _never(e,t){return new e({type:`never`,...normalizeParams(t)})}function _lt(e,t){return new $ZodCheckLessThan({check:`less_than`,...normalizeParams(t),value:e,inclusive:!1})}function _lte(e,t){return new $ZodCheckLessThan({check:`less_than`,...normalizeParams(t),value:e,inclusive:!0})}function _gt(e,t){return new $ZodCheckGreaterThan({check:`greater_than`,...normalizeParams(t),value:e,inclusive:!1})}function _gte(e,t){return new $ZodCheckGreaterThan({check:`greater_than`,...normalizeParams(t),value:e,inclusive:!0})}function _multipleOf(e,t){return new $ZodCheckMultipleOf({check:`multiple_of`,...normalizeParams(t),value:e})}function _maxLength(e,t){return new $ZodCheckMaxLength({check:`max_length`,...normalizeParams(t),maximum:e})}function _minLength(e,t){return new $ZodCheckMinLength({check:`min_length`,...normalizeParams(t),minimum:e})}function _length(e,t){return new $ZodCheckLengthEquals({check:`length_equals`,...normalizeParams(t),length:e})}function _regex(e,t){return new $ZodCheckRegex({check:`string_format`,format:`regex`,...normalizeParams(t),pattern:e})}function _lowercase(e){return new $ZodCheckLowerCase({check:`string_format`,format:`lowercase`,...normalizeParams(e)})}function _uppercase(e){return new $ZodCheckUpperCase({check:`string_format`,format:`uppercase`,...normalizeParams(e)})}function _includes(e,t){return new $ZodCheckIncludes({check:`string_format`,format:`includes`,...normalizeParams(t),includes:e})}function _startsWith(e,t){return new $ZodCheckStartsWith({check:`string_format`,format:`starts_with`,...normalizeParams(t),prefix:e})}function _endsWith(e,t){return new $ZodCheckEndsWith({check:`string_format`,format:`ends_with`,...normalizeParams(t),suffix:e})}function _overwrite(e){return new $ZodCheckOverwrite({check:`overwrite`,tx:e})}function _normalize(e){return _overwrite(t=>t.normalize(e))}function _trim(){return _overwrite(e=>e.trim())}function _toLowerCase(){return _overwrite(e=>e.toLowerCase())}function _toUpperCase(){return _overwrite(e=>e.toUpperCase())}function _slugify(){return _overwrite(e=>slugify(e))}function _array(e,t,S){return new e({type:`array`,element:t,...normalizeParams(S)})}function _custom(e,t,S){let w=normalizeParams(S);return w.abort??=!0,new e({type:`custom`,check:`custom`,fn:t,...w})}function _refine(e,t,S){return new e({type:`custom`,check:`custom`,fn:t,...normalizeParams(S)})}function _superRefine(e){let t=_check(S=>(S.addIssue=e=>{if(typeof e==`string`)S.issues.push(issue(e,S.value,t._zod.def));else{let w=e;w.fatal&&(w.continue=!1),w.code??=`custom`,w.input??=S.value,w.inst??=t,w.continue??=!t._zod.def.abort,S.issues.push(issue(w))}},e(S.value,S)));return t}function _check(e,t){let S=new $ZodCheck({check:`custom`,...normalizeParams(t)});return S._zod.check=e,S}function describe$2(e){let t=new $ZodCheck({check:`describe`});return t._zod.onattach=[t=>{let S=globalRegistry.get(t)??{};globalRegistry.add(t,{...S,description:e})}],t._zod.check=()=>{},t}function meta$2(e){let t=new $ZodCheck({check:`meta`});return t._zod.onattach=[t=>{let S=globalRegistry.get(t)??{};globalRegistry.add(t,{...S,...e})}],t._zod.check=()=>{},t}function initializeContext(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??globalRegistry,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function process$5(e,t,S={path:[],schemaPath:[]}){var w;let E=e._zod.def,D=t.seen.get(e);if(D)return D.count++,S.schemaPath.includes(e)&&(D.cycle=S.path),D.schema;let O={schema:{},count:1,cycle:void 0,path:S.path};t.seen.set(e,O);let k=e._zod.toJSONSchema?.();if(k)O.schema=k;else{let w={...S,schemaPath:[...S.schemaPath,e],path:S.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,O.schema,w);else{let S=O.schema,D=t.processors[E.type];if(!D)throw Error(`[toJSONSchema]: Non-representable type encountered: ${E.type}`);D(e,t,S,w)}let D=e._zod.parent;D&&(O.ref||=D,process$5(D,t,w),t.seen.get(D).isParent=!0)}let j=t.metadataRegistry.get(e);return j&&Object.assign(O.schema,j),t.io===`input`&&isTransforming(e)&&(delete O.schema.examples,delete O.schema.default),t.io===`input`&&O.schema._prefault&&((w=O.schema).default??(w.default=O.schema._prefault)),delete O.schema._prefault,t.seen.get(e).schema}function extractDefs(e,t){let S=e.seen.get(t);if(!S)throw Error(`Unprocessed schema. This is a bug in Zod.`);let w=new Map;for(let t of e.seen.entries()){let S=e.metadataRegistry.get(t[0])?.id;if(S){let e=w.get(S);if(e&&e!==t[0])throw Error(`Duplicate schema id "${S}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);w.set(S,t[0])}}let E=t=>{let w=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let S=e.external.registry.get(t[0])?.id,E=e.external.uri??(e=>e);if(S)return{ref:E(S)};let D=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=D,{defId:D,ref:`${E(`__shared`)}#/${w}/${D}`}}if(t[1]===S)return{ref:`#`};let E=`#/${w}/`,D=t[1].schema.id??`__schema${e.counter++}`;return{defId:D,ref:E+D}},D=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:S,defId:w}=E(e);t.def={...t.schema},w&&(t.defId=w);let D=t.schema;for(let e in D)delete D[e];D.$ref=S};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
152
153
|
|
|
153
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let S of e.seen.entries()){let w=S[1];if(t===S[0]){D(S);continue}if(e.external){let w=e.external.registry.get(S[0])?.id;if(t!==S[0]&&w){D(S);continue}}if(e.metadataRegistry.get(S[0])?.id){D(S);continue}if(w.cycle){D(S);continue}if(w.count>1&&e.reused===`ref`){D(S);continue}}}function finalize(e,t){let S=e.seen.get(t);if(!S)throw Error(`Unprocessed schema. This is a bug in Zod.`);let w=t=>{let S=e.seen.get(t);if(S.ref===null)return;let E=S.def??S.schema,D={...E},O=S.ref;if(S.ref=null,O){w(O);let S=e.seen.get(O),k=S.schema;if(k.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(E.allOf=E.allOf??[],E.allOf.push(k)):Object.assign(E,k),Object.assign(E,D),t._zod.parent===O)for(let e in E)e===`$ref`||e===`allOf`||e in D||delete E[e];if(k.$ref&&S.def)for(let e in E)e===`$ref`||e===`allOf`||e in S.def&&JSON.stringify(E[e])===JSON.stringify(S.def[e])&&delete E[e]}let k=t._zod.parent;if(k&&k!==O){w(k);let t=e.seen.get(k);if(t?.schema.$ref&&(E.$ref=t.schema.$ref,t.def))for(let e in E)e===`$ref`||e===`allOf`||e in t.def&&JSON.stringify(E[e])===JSON.stringify(t.def[e])&&delete E[e]}e.override({zodSchema:t,jsonSchema:E,path:S.path??[]})};for(let t of[...e.seen.entries()].reverse())w(t[0]);let E={};if(e.target===`draft-2020-12`?E.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?E.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?E.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let S=e.external.registry.get(t)?.id;if(!S)throw Error("Schema is missing an `id` property");E.$id=e.external.uri(S)}Object.assign(E,S.def??S.schema);let D=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(D[e.defId]=e.def)}e.external||Object.keys(D).length>0&&(e.target===`draft-2020-12`?E.$defs=D:E.definitions=D);try{let S=JSON.parse(JSON.stringify(E));return Object.defineProperty(S,`~standard`,{value:{...t[`~standard`],jsonSchema:{input:createStandardJSONSchemaMethod(t,`input`,e.processors),output:createStandardJSONSchemaMethod(t,`output`,e.processors)}},enumerable:!1,writable:!1}),S}catch{throw Error(`Error converting schema to JSON.`)}}function isTransforming(e,t){let S=t??{seen:new Set};if(S.seen.has(e))return!1;S.seen.add(e);let w=e._zod.def;if(w.type===`transform`)return!0;if(w.type===`array`)return isTransforming(w.element,S);if(w.type===`set`)return isTransforming(w.valueType,S);if(w.type===`lazy`)return isTransforming(w.getter(),S);if(w.type===`promise`||w.type===`optional`||w.type===`nonoptional`||w.type===`nullable`||w.type===`readonly`||w.type===`default`||w.type===`prefault`)return isTransforming(w.innerType,S);if(w.type===`intersection`)return isTransforming(w.left,S)||isTransforming(w.right,S);if(w.type===`record`||w.type===`map`)return isTransforming(w.keyType,S)||isTransforming(w.valueType,S);if(w.type===`pipe`)return isTransforming(w.in,S)||isTransforming(w.out,S);if(w.type===`object`){for(let e in w.shape)if(isTransforming(w.shape[e],S))return!0;return!1}if(w.type===`union`){for(let e of w.options)if(isTransforming(e,S))return!0;return!1}if(w.type===`tuple`){for(let e of w.items)if(isTransforming(e,S))return!0;return!!(w.rest&&isTransforming(w.rest,S))}return!1}const createToJSONSchemaMethod=(e,t={})=>S=>{let w=initializeContext({...S,processors:t});return process$5(e,w),extractDefs(w,e),finalize(w,e)},createStandardJSONSchemaMethod=(e,t,S={})=>w=>{let{libraryOptions:E,target:D}=w??{},O=initializeContext({...E??{},target:D,io:t,processors:S});return process$5(e,O),extractDefs(O,e),finalize(O,e)},formatMap={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},stringProcessor=(e,t,S,w)=>{let E=S;E.type=`string`;let{minimum:D,maximum:O,format:k,patterns:j,contentEncoding:F}=e._zod.bag;if(typeof D==`number`&&(E.minLength=D),typeof O==`number`&&(E.maxLength=O),k&&(E.format=formatMap[k]??k,E.format===``&&delete E.format,k===`time`&&delete E.format),F&&(E.contentEncoding=F),j&&j.size>0){let e=[...j];e.length===1?E.pattern=e[0].source:e.length>1&&(E.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},numberProcessor=(e,t,S,w)=>{let E=S,{minimum:D,maximum:O,format:k,multipleOf:j,exclusiveMaximum:F,exclusiveMinimum:L}=e._zod.bag;typeof k==`string`&&k.includes(`int`)?E.type=`integer`:E.type=`number`,typeof L==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(E.minimum=L,E.exclusiveMinimum=!0):E.exclusiveMinimum=L),typeof D==`number`&&(E.minimum=D,typeof L==`number`&&t.target!==`draft-04`&&(L>=D?delete E.minimum:delete E.exclusiveMinimum)),typeof F==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(E.maximum=F,E.exclusiveMaximum=!0):E.exclusiveMaximum=F),typeof O==`number`&&(E.maximum=O,typeof F==`number`&&t.target!==`draft-04`&&(F<=O?delete E.maximum:delete E.exclusiveMaximum)),typeof j==`number`&&(E.multipleOf=j)},booleanProcessor=(e,t,S,w)=>{S.type=`boolean`},bigintProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`BigInt cannot be represented in JSON Schema`)},symbolProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Symbols cannot be represented in JSON Schema`)},nullProcessor=(e,t,S,w)=>{t.target===`openapi-3.0`?(S.type=`string`,S.nullable=!0,S.enum=[null]):S.type=`null`},undefinedProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Undefined cannot be represented in JSON Schema`)},voidProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Void cannot be represented in JSON Schema`)},neverProcessor=(e,t,S,w)=>{S.not={}},anyProcessor=(e,t,S,w)=>{},unknownProcessor=(e,t,S,w)=>{},dateProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Date cannot be represented in JSON Schema`)},enumProcessor=(e,t,S,w)=>{let E=e._zod.def,D=getEnumValues(E.entries);D.every(e=>typeof e==`number`)&&(S.type=`number`),D.every(e=>typeof e==`string`)&&(S.type=`string`),S.enum=D},literalProcessor=(e,t,S,w)=>{let E=e._zod.def,D=[];for(let e of E.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);D.push(Number(e))}else D.push(e);if(D.length!==0)if(D.length===1){let e=D[0];S.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?S.enum=[e]:S.const=e}else D.every(e=>typeof e==`number`)&&(S.type=`number`),D.every(e=>typeof e==`string`)&&(S.type=`string`),D.every(e=>typeof e==`boolean`)&&(S.type=`boolean`),D.every(e=>e===null)&&(S.type=`null`),S.enum=D},nanProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`NaN cannot be represented in JSON Schema`)},templateLiteralProcessor=(e,t,S,w)=>{let E=S,D=e._zod.pattern;if(!D)throw Error(`Pattern not found in template literal`);E.type=`string`,E.pattern=D.source},fileProcessor=(e,t,S,w)=>{let E=S,D={type:`string`,format:`binary`,contentEncoding:`binary`},{minimum:O,maximum:k,mime:j}=e._zod.bag;O!==void 0&&(D.minLength=O),k!==void 0&&(D.maxLength=k),j?j.length===1?(D.contentMediaType=j[0],Object.assign(E,D)):(Object.assign(E,D),E.anyOf=j.map(e=>({contentMediaType:e}))):Object.assign(E,D)},successProcessor=(e,t,S,w)=>{S.type=`boolean`},customProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},functionProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Function types cannot be represented in JSON Schema`)},transformProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},mapProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Map cannot be represented in JSON Schema`)},setProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Set cannot be represented in JSON Schema`)},arrayProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def,{minimum:O,maximum:k}=e._zod.bag;typeof O==`number`&&(E.minItems=O),typeof k==`number`&&(E.maxItems=k),E.type=`array`,E.items=process$5(D.element,t,{...w,path:[...w.path,`items`]})},objectProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def;E.type=`object`,E.properties={};let O=D.shape;for(let e in O)E.properties[e]=process$5(O[e],t,{...w,path:[...w.path,`properties`,e]});let k=new Set(Object.keys(O)),j=new Set([...k].filter(e=>{let S=D.shape[e]._zod;return t.io===`input`?S.optin===void 0:S.optout===void 0}));j.size>0&&(E.required=Array.from(j)),D.catchall?._zod.def.type===`never`?E.additionalProperties=!1:D.catchall?D.catchall&&(E.additionalProperties=process$5(D.catchall,t,{...w,path:[...w.path,`additionalProperties`]})):t.io===`output`&&(E.additionalProperties=!1)},unionProcessor=(e,t,S,w)=>{let E=e._zod.def,D=E.inclusive===!1,O=E.options.map((e,S)=>process$5(e,t,{...w,path:[...w.path,D?`oneOf`:`anyOf`,S]}));D?S.oneOf=O:S.anyOf=O},intersectionProcessor=(e,t,S,w)=>{let E=e._zod.def,D=process$5(E.left,t,{...w,path:[...w.path,`allOf`,0]}),O=process$5(E.right,t,{...w,path:[...w.path,`allOf`,1]}),k=e=>`allOf`in e&&Object.keys(e).length===1;S.allOf=[...k(D)?D.allOf:[D],...k(O)?O.allOf:[O]]},tupleProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def;E.type=`array`;let O=t.target===`draft-2020-12`?`prefixItems`:`items`,k=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,j=D.items.map((e,S)=>process$5(e,t,{...w,path:[...w.path,O,S]})),F=D.rest?process$5(D.rest,t,{...w,path:[...w.path,k,...t.target===`openapi-3.0`?[D.items.length]:[]]}):null;t.target===`draft-2020-12`?(E.prefixItems=j,F&&(E.items=F)):t.target===`openapi-3.0`?(E.items={anyOf:j},F&&E.items.anyOf.push(F),E.minItems=j.length,F||(E.maxItems=j.length)):(E.items=j,F&&(E.additionalItems=F));let{minimum:L,maximum:B}=e._zod.bag;typeof L==`number`&&(E.minItems=L),typeof B==`number`&&(E.maxItems=B)},recordProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def;E.type=`object`;let O=D.keyType,k=O._zod.bag?.patterns;if(D.mode===`loose`&&k&&k.size>0){let e=process$5(D.valueType,t,{...w,path:[...w.path,`patternProperties`,`*`]});E.patternProperties={};for(let t of k)E.patternProperties[t.source]=e}else (t.target===`draft-07`||t.target===`draft-2020-12`)&&(E.propertyNames=process$5(D.keyType,t,{...w,path:[...w.path,`propertyNames`]})),E.additionalProperties=process$5(D.valueType,t,{...w,path:[...w.path,`additionalProperties`]});let j=O._zod.values;if(j){let e=[...j].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(E.required=e)}},nullableProcessor=(e,t,S,w)=>{let E=e._zod.def,D=process$5(E.innerType,t,w),O=t.seen.get(e);t.target===`openapi-3.0`?(O.ref=E.innerType,S.nullable=!0):S.anyOf=[D,{type:`null`}]},nonoptionalProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType},defaultProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType,S.default=JSON.parse(JSON.stringify(E.defaultValue))},prefaultProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType,t.io===`input`&&(S._prefault=JSON.parse(JSON.stringify(E.defaultValue)))},catchProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType;let O;try{O=E.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}S.default=O},pipeProcessor=(e,t,S,w)=>{let E=e._zod.def,D=t.io===`input`?E.in._zod.def.type===`transform`?E.out:E.in:E.out;process$5(D,t,w);let O=t.seen.get(e);O.ref=D},readonlyProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType,S.readOnly=!0},promiseProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType},optionalProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType},lazyProcessor=(e,t,S,w)=>{let E=e._zod.innerType;process$5(E,t,w);let D=t.seen.get(e);D.ref=E},allProcessors={string:stringProcessor,number:numberProcessor,boolean:booleanProcessor,bigint:bigintProcessor,symbol:symbolProcessor,null:nullProcessor,undefined:undefinedProcessor,void:voidProcessor,never:neverProcessor,any:anyProcessor,unknown:unknownProcessor,date:dateProcessor,enum:enumProcessor,literal:literalProcessor,nan:nanProcessor,template_literal:templateLiteralProcessor,file:fileProcessor,success:successProcessor,custom:customProcessor,function:functionProcessor,transform:transformProcessor,map:mapProcessor,set:setProcessor,array:arrayProcessor,object:objectProcessor,union:unionProcessor,intersection:intersectionProcessor,tuple:tupleProcessor,record:recordProcessor,nullable:nullableProcessor,nonoptional:nonoptionalProcessor,default:defaultProcessor,prefault:prefaultProcessor,catch:catchProcessor,pipe:pipeProcessor,readonly:readonlyProcessor,promise:promiseProcessor,optional:optionalProcessor,lazy:lazyProcessor};function toJSONSchema(e,t){if(`_idmap`in e){let S=e,w=initializeContext({...t,processors:allProcessors}),E={};for(let e of S._idmap.entries()){let[t,S]=e;process$5(S,w)}let D={};w.external={registry:S,uri:t?.uri,defs:E};for(let e of S._idmap.entries()){let[t,S]=e;extractDefs(w,S),D[t]=finalize(w,S)}return Object.keys(E).length>0&&(D.__shared={[w.target===`draft-2020-12`?`$defs`:`definitions`]:E}),{schemas:D}}let S=initializeContext({...t,processors:allProcessors});return process$5(e,S),extractDefs(S,e),finalize(S,e)}const ZodISODateTime=$constructor(`ZodISODateTime`,(e,t)=>{$ZodISODateTime.init(e,t),ZodStringFormat.init(e,t)});function datetime(e){return _isoDateTime(ZodISODateTime,e)}const ZodISODate=$constructor(`ZodISODate`,(e,t)=>{$ZodISODate.init(e,t),ZodStringFormat.init(e,t)});function date(e){return _isoDate(ZodISODate,e)}const ZodISOTime=$constructor(`ZodISOTime`,(e,t)=>{$ZodISOTime.init(e,t),ZodStringFormat.init(e,t)});function time(e){return _isoTime(ZodISOTime,e)}const ZodISODuration=$constructor(`ZodISODuration`,(e,t)=>{$ZodISODuration.init(e,t),ZodStringFormat.init(e,t)});function duration(e){return _isoDuration(ZodISODuration,e)}const initializer=(e,t)=>{$ZodError.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>formatError(e,t)},flatten:{value:t=>flattenError(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},isEmpty:{get(){return e.issues.length===0}}})},ZodError$1=$constructor(`ZodError`,initializer),ZodRealError=$constructor(`ZodError`,initializer,{Parent:Error}),parse$5=_parse(ZodRealError),parseAsync=_parseAsync(ZodRealError),safeParse$1=_safeParse(ZodRealError),safeParseAsync$1=_safeParseAsync(ZodRealError),encode$1=_encode(ZodRealError),decode$1=_decode(ZodRealError),encodeAsync=_encodeAsync(ZodRealError),decodeAsync=_decodeAsync(ZodRealError),safeEncode=_safeEncode(ZodRealError),safeDecode=_safeDecode(ZodRealError),safeEncodeAsync=_safeEncodeAsync(ZodRealError),safeDecodeAsync=_safeDecodeAsync(ZodRealError),ZodType$1=$constructor(`ZodType`,(e,t)=>($ZodType.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:createStandardJSONSchemaMethod(e,`input`),output:createStandardJSONSchemaMethod(e,`output`)}}),e.toJSONSchema=createToJSONSchemaMethod(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,`_def`,{value:t}),e.check=(...S)=>e.clone(mergeDefs(t,{checks:[...t.checks??[],...S.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,S)=>clone(e,t,S),e.brand=()=>e,e.register=((t,S)=>(t.add(e,S),e)),e.parse=(t,S)=>parse$5(e,t,S,{callee:e.parse}),e.safeParse=(t,S)=>safeParse$1(e,t,S),e.parseAsync=async(t,S)=>parseAsync(e,t,S,{callee:e.parseAsync}),e.safeParseAsync=async(t,S)=>safeParseAsync$1(e,t,S),e.spa=e.safeParseAsync,e.encode=(t,S)=>encode$1(e,t,S),e.decode=(t,S)=>decode$1(e,t,S),e.encodeAsync=async(t,S)=>encodeAsync(e,t,S),e.decodeAsync=async(t,S)=>decodeAsync(e,t,S),e.safeEncode=(t,S)=>safeEncode(e,t,S),e.safeDecode=(t,S)=>safeDecode(e,t,S),e.safeEncodeAsync=async(t,S)=>safeEncodeAsync(e,t,S),e.safeDecodeAsync=async(t,S)=>safeDecodeAsync(e,t,S),e.refine=(t,S)=>e.check(refine(t,S)),e.superRefine=t=>e.check(superRefine(t)),e.overwrite=t=>e.check(_overwrite(t)),e.optional=()=>optional(e),e.exactOptional=()=>exactOptional(e),e.nullable=()=>nullable(e),e.nullish=()=>optional(nullable(e)),e.nonoptional=t=>nonoptional(e,t),e.array=()=>array(e),e.or=t=>union([e,t]),e.and=t=>intersection(e,t),e.transform=t=>pipe(e,transform(t)),e.default=t=>_default(e,t),e.prefault=t=>prefault(e,t),e.catch=t=>_catch(e,t),e.pipe=t=>pipe(e,t),e.readonly=()=>readonly(e),e.describe=t=>{let S=e.clone();return globalRegistry.add(S,{description:t}),S},Object.defineProperty(e,`description`,{get(){return globalRegistry.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return globalRegistry.get(e);let S=e.clone();return globalRegistry.add(S,t[0]),S},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),_ZodString=$constructor(`_ZodString`,(e,t)=>{$ZodString.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>stringProcessor(e,t,S,w);let S=e._zod.bag;e.format=S.format??null,e.minLength=S.minimum??null,e.maxLength=S.maximum??null,e.regex=(...t)=>e.check(_regex(...t)),e.includes=(...t)=>e.check(_includes(...t)),e.startsWith=(...t)=>e.check(_startsWith(...t)),e.endsWith=(...t)=>e.check(_endsWith(...t)),e.min=(...t)=>e.check(_minLength(...t)),e.max=(...t)=>e.check(_maxLength(...t)),e.length=(...t)=>e.check(_length(...t)),e.nonempty=(...t)=>e.check(_minLength(1,...t)),e.lowercase=t=>e.check(_lowercase(t)),e.uppercase=t=>e.check(_uppercase(t)),e.trim=()=>e.check(_trim()),e.normalize=(...t)=>e.check(_normalize(...t)),e.toLowerCase=()=>e.check(_toLowerCase()),e.toUpperCase=()=>e.check(_toUpperCase()),e.slugify=()=>e.check(_slugify())}),ZodString$1=$constructor(`ZodString`,(e,t)=>{$ZodString.init(e,t),_ZodString.init(e,t),e.email=t=>e.check(_email(ZodEmail,t)),e.url=t=>e.check(_url(ZodURL,t)),e.jwt=t=>e.check(_jwt(ZodJWT,t)),e.emoji=t=>e.check(_emoji(ZodEmoji,t)),e.guid=t=>e.check(_guid(ZodGUID,t)),e.uuid=t=>e.check(_uuid(ZodUUID,t)),e.uuidv4=t=>e.check(_uuidv4(ZodUUID,t)),e.uuidv6=t=>e.check(_uuidv6(ZodUUID,t)),e.uuidv7=t=>e.check(_uuidv7(ZodUUID,t)),e.nanoid=t=>e.check(_nanoid(ZodNanoID,t)),e.guid=t=>e.check(_guid(ZodGUID,t)),e.cuid=t=>e.check(_cuid(ZodCUID,t)),e.cuid2=t=>e.check(_cuid2(ZodCUID2,t)),e.ulid=t=>e.check(_ulid(ZodULID,t)),e.base64=t=>e.check(_base64(ZodBase64,t)),e.base64url=t=>e.check(_base64url(ZodBase64URL,t)),e.xid=t=>e.check(_xid(ZodXID,t)),e.ksuid=t=>e.check(_ksuid(ZodKSUID,t)),e.ipv4=t=>e.check(_ipv4(ZodIPv4,t)),e.ipv6=t=>e.check(_ipv6(ZodIPv6,t)),e.cidrv4=t=>e.check(_cidrv4(ZodCIDRv4,t)),e.cidrv6=t=>e.check(_cidrv6(ZodCIDRv6,t)),e.e164=t=>e.check(_e164(ZodE164,t)),e.datetime=t=>e.check(datetime(t)),e.date=t=>e.check(date(t)),e.time=t=>e.check(time(t)),e.duration=t=>e.check(duration(t))});function string$2(e){return _string(ZodString$1,e)}const ZodStringFormat=$constructor(`ZodStringFormat`,(e,t)=>{$ZodStringFormat.init(e,t),_ZodString.init(e,t)}),ZodEmail=$constructor(`ZodEmail`,(e,t)=>{$ZodEmail.init(e,t),ZodStringFormat.init(e,t)}),ZodGUID=$constructor(`ZodGUID`,(e,t)=>{$ZodGUID.init(e,t),ZodStringFormat.init(e,t)}),ZodUUID=$constructor(`ZodUUID`,(e,t)=>{$ZodUUID.init(e,t),ZodStringFormat.init(e,t)}),ZodURL=$constructor(`ZodURL`,(e,t)=>{$ZodURL.init(e,t),ZodStringFormat.init(e,t)});function url(e){return _url(ZodURL,e)}const ZodEmoji=$constructor(`ZodEmoji`,(e,t)=>{$ZodEmoji.init(e,t),ZodStringFormat.init(e,t)}),ZodNanoID=$constructor(`ZodNanoID`,(e,t)=>{$ZodNanoID.init(e,t),ZodStringFormat.init(e,t)}),ZodCUID=$constructor(`ZodCUID`,(e,t)=>{$ZodCUID.init(e,t),ZodStringFormat.init(e,t)}),ZodCUID2=$constructor(`ZodCUID2`,(e,t)=>{$ZodCUID2.init(e,t),ZodStringFormat.init(e,t)}),ZodULID=$constructor(`ZodULID`,(e,t)=>{$ZodULID.init(e,t),ZodStringFormat.init(e,t)}),ZodXID=$constructor(`ZodXID`,(e,t)=>{$ZodXID.init(e,t),ZodStringFormat.init(e,t)}),ZodKSUID=$constructor(`ZodKSUID`,(e,t)=>{$ZodKSUID.init(e,t),ZodStringFormat.init(e,t)}),ZodIPv4=$constructor(`ZodIPv4`,(e,t)=>{$ZodIPv4.init(e,t),ZodStringFormat.init(e,t)}),ZodIPv6=$constructor(`ZodIPv6`,(e,t)=>{$ZodIPv6.init(e,t),ZodStringFormat.init(e,t)}),ZodCIDRv4=$constructor(`ZodCIDRv4`,(e,t)=>{$ZodCIDRv4.init(e,t),ZodStringFormat.init(e,t)}),ZodCIDRv6=$constructor(`ZodCIDRv6`,(e,t)=>{$ZodCIDRv6.init(e,t),ZodStringFormat.init(e,t)}),ZodBase64=$constructor(`ZodBase64`,(e,t)=>{$ZodBase64.init(e,t),ZodStringFormat.init(e,t)}),ZodBase64URL=$constructor(`ZodBase64URL`,(e,t)=>{$ZodBase64URL.init(e,t),ZodStringFormat.init(e,t)}),ZodE164=$constructor(`ZodE164`,(e,t)=>{$ZodE164.init(e,t),ZodStringFormat.init(e,t)}),ZodJWT=$constructor(`ZodJWT`,(e,t)=>{$ZodJWT.init(e,t),ZodStringFormat.init(e,t)}),ZodNumber$1=$constructor(`ZodNumber`,(e,t)=>{$ZodNumber.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>numberProcessor(e,t,S,w),e.gt=(t,S)=>e.check(_gt(t,S)),e.gte=(t,S)=>e.check(_gte(t,S)),e.min=(t,S)=>e.check(_gte(t,S)),e.lt=(t,S)=>e.check(_lt(t,S)),e.lte=(t,S)=>e.check(_lte(t,S)),e.max=(t,S)=>e.check(_lte(t,S)),e.int=t=>e.check(int(t)),e.safe=t=>e.check(int(t)),e.positive=t=>e.check(_gt(0,t)),e.nonnegative=t=>e.check(_gte(0,t)),e.negative=t=>e.check(_lt(0,t)),e.nonpositive=t=>e.check(_lte(0,t)),e.multipleOf=(t,S)=>e.check(_multipleOf(t,S)),e.step=(t,S)=>e.check(_multipleOf(t,S)),e.finite=()=>e;let S=e._zod.bag;e.minValue=Math.max(S.minimum??-1/0,S.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(S.maximum??1/0,S.exclusiveMaximum??1/0)??null,e.isInt=(S.format??``).includes(`int`)||Number.isSafeInteger(S.multipleOf??.5),e.isFinite=!0,e.format=S.format??null});function number$1(e){return _number(ZodNumber$1,e)}const ZodNumberFormat=$constructor(`ZodNumberFormat`,(e,t)=>{$ZodNumberFormat.init(e,t),ZodNumber$1.init(e,t)});function int(e){return _int(ZodNumberFormat,e)}const ZodBoolean$1=$constructor(`ZodBoolean`,(e,t)=>{$ZodBoolean.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>booleanProcessor(e,t,S,w)});function boolean$1(e){return _boolean(ZodBoolean$1,e)}const ZodNull$1=$constructor(`ZodNull`,(e,t)=>{$ZodNull.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>nullProcessor(e,t,S,w)});function _null(e){return _null$1(ZodNull$1,e)}const ZodAny$1=$constructor(`ZodAny`,(e,t)=>{$ZodAny.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(e,t,S)=>void 0});function any$1(){return _any(ZodAny$1)}const ZodUnknown$1=$constructor(`ZodUnknown`,(e,t)=>{$ZodUnknown.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(e,t,S)=>void 0});function unknown$2(){return _unknown(ZodUnknown$1)}const ZodNever$1=$constructor(`ZodNever`,(e,t)=>{$ZodNever.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>neverProcessor(e,t,S,w)});function never(e){return _never(ZodNever$1,e)}const ZodArray$1=$constructor(`ZodArray`,(e,t)=>{$ZodArray.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>arrayProcessor(e,t,S,w),e.element=t.element,e.min=(t,S)=>e.check(_minLength(t,S)),e.nonempty=t=>e.check(_minLength(1,t)),e.max=(t,S)=>e.check(_maxLength(t,S)),e.length=(t,S)=>e.check(_length(t,S)),e.unwrap=()=>e.element});function array(e,t){return _array(ZodArray$1,e,t)}const ZodObject$1=$constructor(`ZodObject`,(e,t)=>{$ZodObjectJIT.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>objectProcessor(e,t,S,w),defineLazy(e,`shape`,()=>t.shape),e.keyof=()=>_enum(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:unknown$2()}),e.loose=()=>e.clone({...e._zod.def,catchall:unknown$2()}),e.strict=()=>e.clone({...e._zod.def,catchall:never()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>extend$1(e,t),e.safeExtend=t=>safeExtend(e,t),e.merge=t=>merge$1(e,t),e.pick=t=>pick$2(e,t),e.omit=t=>omit(e,t),e.partial=(...t)=>partial(ZodOptional$1,e,t[0]),e.required=(...t)=>required(ZodNonOptional,e,t[0])});function object$1(e,t){return new ZodObject$1({type:`object`,shape:e??{},...normalizeParams(t)})}function looseObject(e,t){return new ZodObject$1({type:`object`,shape:e,catchall:unknown$2(),...normalizeParams(t)})}const ZodUnion$1=$constructor(`ZodUnion`,(e,t)=>{$ZodUnion.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>unionProcessor(e,t,S,w),e.options=t.options});function union(e,t){return new ZodUnion$1({type:`union`,options:e,...normalizeParams(t)})}const ZodDiscriminatedUnion$1=$constructor(`ZodDiscriminatedUnion`,(e,t)=>{ZodUnion$1.init(e,t),$ZodDiscriminatedUnion.init(e,t)});function discriminatedUnion(e,t,S){return new ZodDiscriminatedUnion$1({type:`union`,options:t,discriminator:e,...normalizeParams(S)})}const ZodIntersection$1=$constructor(`ZodIntersection`,(e,t)=>{$ZodIntersection.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>intersectionProcessor(e,t,S,w)});function intersection(e,t){return new ZodIntersection$1({type:`intersection`,left:e,right:t})}const ZodRecord$1=$constructor(`ZodRecord`,(e,t)=>{$ZodRecord.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>recordProcessor(e,t,S,w),e.keyType=t.keyType,e.valueType=t.valueType});function record(e,t,S){return new ZodRecord$1({type:`record`,keyType:e,valueType:t,...normalizeParams(S)})}const ZodEnum$1=$constructor(`ZodEnum`,(e,t)=>{$ZodEnum.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>enumProcessor(e,t,S,w),e.enum=t.entries,e.options=Object.values(t.entries);let S=new Set(Object.keys(t.entries));e.extract=(e,w)=>{let E={};for(let w of e)if(S.has(w))E[w]=t.entries[w];else throw Error(`Key ${w} not found in enum`);return new ZodEnum$1({...t,checks:[],...normalizeParams(w),entries:E})},e.exclude=(e,w)=>{let E={...t.entries};for(let t of e)if(S.has(t))delete E[t];else throw Error(`Key ${t} not found in enum`);return new ZodEnum$1({...t,checks:[],...normalizeParams(w),entries:E})}});function _enum(e,t){return new ZodEnum$1({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...normalizeParams(t)})}const ZodLiteral$1=$constructor(`ZodLiteral`,(e,t)=>{$ZodLiteral.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>literalProcessor(e,t,S,w),e.values=new Set(t.values),Object.defineProperty(e,`value`,{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function literal(e,t){return new ZodLiteral$1({type:`literal`,values:Array.isArray(e)?e:[e],...normalizeParams(t)})}const ZodTransform=$constructor(`ZodTransform`,(e,t)=>{$ZodTransform.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>transformProcessor(e,t,S,w),e._zod.parse=(S,w)=>{if(w.direction===`backward`)throw new $ZodEncodeError(e.constructor.name);S.addIssue=w=>{if(typeof w==`string`)S.issues.push(issue(w,S.value,t));else{let t=w;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=S.value,t.inst??=e,S.issues.push(issue(t))}};let E=t.transform(S.value,S);return E instanceof Promise?E.then(e=>(S.value=e,S)):(S.value=E,S)}});function transform(e){return new ZodTransform({type:`transform`,transform:e})}const ZodOptional$1=$constructor(`ZodOptional`,(e,t)=>{$ZodOptional.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>optionalProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function optional(e){return new ZodOptional$1({type:`optional`,innerType:e})}const ZodExactOptional=$constructor(`ZodExactOptional`,(e,t)=>{$ZodExactOptional.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>optionalProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function exactOptional(e){return new ZodExactOptional({type:`optional`,innerType:e})}const ZodNullable$1=$constructor(`ZodNullable`,(e,t)=>{$ZodNullable.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>nullableProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function nullable(e){return new ZodNullable$1({type:`nullable`,innerType:e})}const ZodDefault$1=$constructor(`ZodDefault`,(e,t)=>{$ZodDefault.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>defaultProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function _default(e,t){return new ZodDefault$1({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():shallowClone(t)}})}const ZodPrefault=$constructor(`ZodPrefault`,(e,t)=>{$ZodPrefault.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>prefaultProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function prefault(e,t){return new ZodPrefault({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():shallowClone(t)}})}const ZodNonOptional=$constructor(`ZodNonOptional`,(e,t)=>{$ZodNonOptional.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>nonoptionalProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function nonoptional(e,t){return new ZodNonOptional({type:`nonoptional`,innerType:e,...normalizeParams(t)})}const ZodCatch$1=$constructor(`ZodCatch`,(e,t)=>{$ZodCatch.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>catchProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function _catch(e,t){return new ZodCatch$1({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}const ZodPipe=$constructor(`ZodPipe`,(e,t)=>{$ZodPipe.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>pipeProcessor(e,t,S,w),e.in=t.in,e.out=t.out});function pipe(e,t){return new ZodPipe({type:`pipe`,in:e,out:t})}const ZodReadonly$1=$constructor(`ZodReadonly`,(e,t)=>{$ZodReadonly.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>readonlyProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function readonly(e){return new ZodReadonly$1({type:`readonly`,innerType:e})}const ZodCustom=$constructor(`ZodCustom`,(e,t)=>{$ZodCustom.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>customProcessor(e,t,S,w)});function custom(e,t){return _custom(ZodCustom,e??(()=>!0),t)}function refine(e,t={}){return _refine(ZodCustom,e,t)}function superRefine(e){return _superRefine(e)}const describe$1=describe$2,meta$1=meta$2;function preprocess$1(e,t){return pipe(transform(e),t)}var import_dist$1=require_dist$2();init_esm$2();const SINGLETON_KEY$1=Symbol.for(`@inkeep/open-knowledge/field-registry`),g$1=globalThis;g$1[SINGLETON_KEY$1]===void 0&&(g$1[SINGLETON_KEY$1]=registry$1());const fieldRegistry=g$1[SINGLETON_KEY$1];function getFieldMeta(e){let t=e;for(let e=0;e<16;e++){if(t==null)return;let e=isZodSchema(t)?fieldRegistry.get(t):void 0;if(e!==void 0)return e;let S=t._zod?.def?.innerType;if(S===void 0)return;t=S}}function isZodSchema(e){return typeof e==`object`&&!!e&&`_zod`in e&&`parse`in e}const FolderFrontmatterSchema=looseObject({title:string$2().optional(),description:string$2().optional(),tags:array(string$2()).optional()}),FolderRuleSchema=looseObject({match:string$2().min(1,"`match` must be a non-empty glob pattern (e.g. 'specs/**' or 'reports/*/**')"),frontmatter:FolderFrontmatterSchema}),ConfigSchema$1=looseObject({content:looseObject({dir:string$2().register(fieldRegistry,{scope:`project`,agentSettable:!1,defaultScope:`project`}).default(`.`)}).default({dir:`.`}),appearance:looseObject({theme:_enum([`light`,`dark`,`system`]).register(fieldRegistry,{scope:`user`,agentSettable:!1,defaultScope:`user`}).optional()}).default({}),autoSync:looseObject({enabled:boolean$1().register(fieldRegistry,{scope:`project-local`,agentSettable:!1,defaultScope:`project-local`}).nullable().default(null)}).default({enabled:null})}),TRACER_NAME$1=`open-knowledge-config`;async function withConfigSpan(e,t,S){let w=trace.getTracer(TRACER_NAME$1),E=t?{attributes:t}:{};return w.startActiveSpan(e,E,async e=>{try{return await S(e)}catch(t){throw e.recordException(t),e.setStatus({code:SpanStatusCode.ERROR,message:t instanceof Error?t.message:String(t)}),t}finally{e.end()}})}function withConfigSpanSync(e,t,S){let w=trace.getTracer(TRACER_NAME$1),E=t?{attributes:t}:{};return w.startActiveSpan(e,E,e=>{try{return S(e)}catch(t){throw e.recordException(t),e.setStatus({code:SpanStatusCode.ERROR,message:t instanceof Error?t.message:String(t)}),t}finally{e.end()}})}function addConfigSpanEvent(e,t){let S=trace.getActiveSpan();S&&S.addEvent(e,t)}function unwrapToShape(e){let t=e;for(let e=0;e<16;e++){if(t==null||t?._zod?.def?.shape!==void 0)return t;let e=t?._zod?.def?.innerType;if(e===void 0)return t;t=e}return t}function resolveLeafSchema(e,t){let S=e;for(let e of t){S=unwrapToShape(S);let t=S?._zod?.def?.shape;if(!t||(S=t[String(e)],S===void 0))return}return S}function getLeafFieldMeta(e,t){let S=resolveLeafSchema(e,t);if(S!==void 0)return getFieldMeta(S)}function isScopeCompatible(e,t){return e===`either`?!0:e===t}function validatePatchScopes(e,t){let S=null;function w(e,E){if(S!==null||e===void 0)return;if(typeof e==`object`&&e&&!Array.isArray(e)){for(let[t,D]of Object.entries(e))if(w(D,[...E,t]),S!==null)return;return}let D=getLeafFieldMeta(ConfigSchema$1,E);D?.scope!==void 0&&(isScopeCompatible(D.scope,t)||(S={code:`SCOPE_VIOLATION`,path:E,expectedScope:D.scope,actualScope:t}))}for(let[t,E]of Object.entries(e))if(w(E,[t]),S!==null)break;return S}function ensureCollectionAncestors(e,t){for(let S=1;S<t.length;S++){let w=t.slice(0,S);e.hasIn(w)&&((0,import_dist$1.isCollection)(e.getIn(w,!0))||e.deleteIn(w))}}function applyPatchToDocument(e,t){let S=[];function w(t,E){if(t!==void 0){if(t===null){e.deleteIn(E),S.push(E.join(`.`));return}if(Array.isArray(t)){ensureCollectionAncestors(e,E),e.setIn(E,t),S.push(E.join(`.`));return}if(typeof t==`object`){for(let[e,S]of Object.entries(t))w(S,[...E,e]);return}ensureCollectionAncestors(e,E),e.setIn(E,t),S.push(E.join(`.`))}}for(let[e,S]of Object.entries(t))w(S,[e]);return S}function toConfigIssue(e){return{path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message,issueCode:e.code}}const CONFIG_SCHEMA_MAJOR_PATH=`v0`;function resolveNode(e,t){if(t.length===0)return e.contents??null;let S=e.getIn(t,!0);if((0,import_dist$1.isNode)(S))return S;for(let S=t.length-1;S>=0;S--){let w=e.getIn(t.slice(0,S),!0);if((0,import_dist$1.isNode)(w))return w}return e.contents??null}function offsetToLineCol(e,t){let S=1,w=1,E=Math.min(t,e.length);for(let t=0;t<E;t++)e.charCodeAt(t)===10?(S++,w=1):w++;return{line:S,column:w}}function renderSnippet(e,t,S,w,E){let D=e.split(`
|
|
154
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let S of e.seen.entries()){let w=S[1];if(t===S[0]){D(S);continue}if(e.external){let w=e.external.registry.get(S[0])?.id;if(t!==S[0]&&w){D(S);continue}}if(e.metadataRegistry.get(S[0])?.id){D(S);continue}if(w.cycle){D(S);continue}if(w.count>1&&e.reused===`ref`){D(S);continue}}}function finalize(e,t){let S=e.seen.get(t);if(!S)throw Error(`Unprocessed schema. This is a bug in Zod.`);let w=t=>{let S=e.seen.get(t);if(S.ref===null)return;let E=S.def??S.schema,D={...E},O=S.ref;if(S.ref=null,O){w(O);let S=e.seen.get(O),k=S.schema;if(k.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(E.allOf=E.allOf??[],E.allOf.push(k)):Object.assign(E,k),Object.assign(E,D),t._zod.parent===O)for(let e in E)e===`$ref`||e===`allOf`||e in D||delete E[e];if(k.$ref&&S.def)for(let e in E)e===`$ref`||e===`allOf`||e in S.def&&JSON.stringify(E[e])===JSON.stringify(S.def[e])&&delete E[e]}let k=t._zod.parent;if(k&&k!==O){w(k);let t=e.seen.get(k);if(t?.schema.$ref&&(E.$ref=t.schema.$ref,t.def))for(let e in E)e===`$ref`||e===`allOf`||e in t.def&&JSON.stringify(E[e])===JSON.stringify(t.def[e])&&delete E[e]}e.override({zodSchema:t,jsonSchema:E,path:S.path??[]})};for(let t of[...e.seen.entries()].reverse())w(t[0]);let E={};if(e.target===`draft-2020-12`?E.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?E.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?E.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let S=e.external.registry.get(t)?.id;if(!S)throw Error("Schema is missing an `id` property");E.$id=e.external.uri(S)}Object.assign(E,S.def??S.schema);let D=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(D[e.defId]=e.def)}e.external||Object.keys(D).length>0&&(e.target===`draft-2020-12`?E.$defs=D:E.definitions=D);try{let S=JSON.parse(JSON.stringify(E));return Object.defineProperty(S,`~standard`,{value:{...t[`~standard`],jsonSchema:{input:createStandardJSONSchemaMethod(t,`input`,e.processors),output:createStandardJSONSchemaMethod(t,`output`,e.processors)}},enumerable:!1,writable:!1}),S}catch{throw Error(`Error converting schema to JSON.`)}}function isTransforming(e,t){let S=t??{seen:new Set};if(S.seen.has(e))return!1;S.seen.add(e);let w=e._zod.def;if(w.type===`transform`)return!0;if(w.type===`array`)return isTransforming(w.element,S);if(w.type===`set`)return isTransforming(w.valueType,S);if(w.type===`lazy`)return isTransforming(w.getter(),S);if(w.type===`promise`||w.type===`optional`||w.type===`nonoptional`||w.type===`nullable`||w.type===`readonly`||w.type===`default`||w.type===`prefault`)return isTransforming(w.innerType,S);if(w.type===`intersection`)return isTransforming(w.left,S)||isTransforming(w.right,S);if(w.type===`record`||w.type===`map`)return isTransforming(w.keyType,S)||isTransforming(w.valueType,S);if(w.type===`pipe`)return isTransforming(w.in,S)||isTransforming(w.out,S);if(w.type===`object`){for(let e in w.shape)if(isTransforming(w.shape[e],S))return!0;return!1}if(w.type===`union`){for(let e of w.options)if(isTransforming(e,S))return!0;return!1}if(w.type===`tuple`){for(let e of w.items)if(isTransforming(e,S))return!0;return!!(w.rest&&isTransforming(w.rest,S))}return!1}const createToJSONSchemaMethod=(e,t={})=>S=>{let w=initializeContext({...S,processors:t});return process$5(e,w),extractDefs(w,e),finalize(w,e)},createStandardJSONSchemaMethod=(e,t,S={})=>w=>{let{libraryOptions:E,target:D}=w??{},O=initializeContext({...E??{},target:D,io:t,processors:S});return process$5(e,O),extractDefs(O,e),finalize(O,e)},formatMap={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},stringProcessor=(e,t,S,w)=>{let E=S;E.type=`string`;let{minimum:D,maximum:O,format:k,patterns:j,contentEncoding:F}=e._zod.bag;if(typeof D==`number`&&(E.minLength=D),typeof O==`number`&&(E.maxLength=O),k&&(E.format=formatMap[k]??k,E.format===``&&delete E.format,k===`time`&&delete E.format),F&&(E.contentEncoding=F),j&&j.size>0){let e=[...j];e.length===1?E.pattern=e[0].source:e.length>1&&(E.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},numberProcessor=(e,t,S,w)=>{let E=S,{minimum:D,maximum:O,format:k,multipleOf:j,exclusiveMaximum:F,exclusiveMinimum:L}=e._zod.bag;typeof k==`string`&&k.includes(`int`)?E.type=`integer`:E.type=`number`,typeof L==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(E.minimum=L,E.exclusiveMinimum=!0):E.exclusiveMinimum=L),typeof D==`number`&&(E.minimum=D,typeof L==`number`&&t.target!==`draft-04`&&(L>=D?delete E.minimum:delete E.exclusiveMinimum)),typeof F==`number`&&(t.target===`draft-04`||t.target===`openapi-3.0`?(E.maximum=F,E.exclusiveMaximum=!0):E.exclusiveMaximum=F),typeof O==`number`&&(E.maximum=O,typeof F==`number`&&t.target!==`draft-04`&&(F<=O?delete E.maximum:delete E.exclusiveMaximum)),typeof j==`number`&&(E.multipleOf=j)},booleanProcessor=(e,t,S,w)=>{S.type=`boolean`},bigintProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`BigInt cannot be represented in JSON Schema`)},symbolProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Symbols cannot be represented in JSON Schema`)},nullProcessor=(e,t,S,w)=>{t.target===`openapi-3.0`?(S.type=`string`,S.nullable=!0,S.enum=[null]):S.type=`null`},undefinedProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Undefined cannot be represented in JSON Schema`)},voidProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Void cannot be represented in JSON Schema`)},neverProcessor=(e,t,S,w)=>{S.not={}},anyProcessor=(e,t,S,w)=>{},unknownProcessor=(e,t,S,w)=>{},dateProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Date cannot be represented in JSON Schema`)},enumProcessor=(e,t,S,w)=>{let E=e._zod.def,D=getEnumValues(E.entries);D.every(e=>typeof e==`number`)&&(S.type=`number`),D.every(e=>typeof e==`string`)&&(S.type=`string`),S.enum=D},literalProcessor=(e,t,S,w)=>{let E=e._zod.def,D=[];for(let e of E.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);D.push(Number(e))}else D.push(e);if(D.length!==0)if(D.length===1){let e=D[0];S.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?S.enum=[e]:S.const=e}else D.every(e=>typeof e==`number`)&&(S.type=`number`),D.every(e=>typeof e==`string`)&&(S.type=`string`),D.every(e=>typeof e==`boolean`)&&(S.type=`boolean`),D.every(e=>e===null)&&(S.type=`null`),S.enum=D},nanProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`NaN cannot be represented in JSON Schema`)},templateLiteralProcessor=(e,t,S,w)=>{let E=S,D=e._zod.pattern;if(!D)throw Error(`Pattern not found in template literal`);E.type=`string`,E.pattern=D.source},fileProcessor=(e,t,S,w)=>{let E=S,D={type:`string`,format:`binary`,contentEncoding:`binary`},{minimum:O,maximum:k,mime:j}=e._zod.bag;O!==void 0&&(D.minLength=O),k!==void 0&&(D.maxLength=k),j?j.length===1?(D.contentMediaType=j[0],Object.assign(E,D)):(Object.assign(E,D),E.anyOf=j.map(e=>({contentMediaType:e}))):Object.assign(E,D)},successProcessor=(e,t,S,w)=>{S.type=`boolean`},customProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},functionProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Function types cannot be represented in JSON Schema`)},transformProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},mapProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Map cannot be represented in JSON Schema`)},setProcessor=(e,t,S,w)=>{if(t.unrepresentable===`throw`)throw Error(`Set cannot be represented in JSON Schema`)},arrayProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def,{minimum:O,maximum:k}=e._zod.bag;typeof O==`number`&&(E.minItems=O),typeof k==`number`&&(E.maxItems=k),E.type=`array`,E.items=process$5(D.element,t,{...w,path:[...w.path,`items`]})},objectProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def;E.type=`object`,E.properties={};let O=D.shape;for(let e in O)E.properties[e]=process$5(O[e],t,{...w,path:[...w.path,`properties`,e]});let k=new Set(Object.keys(O)),j=new Set([...k].filter(e=>{let S=D.shape[e]._zod;return t.io===`input`?S.optin===void 0:S.optout===void 0}));j.size>0&&(E.required=Array.from(j)),D.catchall?._zod.def.type===`never`?E.additionalProperties=!1:D.catchall?D.catchall&&(E.additionalProperties=process$5(D.catchall,t,{...w,path:[...w.path,`additionalProperties`]})):t.io===`output`&&(E.additionalProperties=!1)},unionProcessor=(e,t,S,w)=>{let E=e._zod.def,D=E.inclusive===!1,O=E.options.map((e,S)=>process$5(e,t,{...w,path:[...w.path,D?`oneOf`:`anyOf`,S]}));D?S.oneOf=O:S.anyOf=O},intersectionProcessor=(e,t,S,w)=>{let E=e._zod.def,D=process$5(E.left,t,{...w,path:[...w.path,`allOf`,0]}),O=process$5(E.right,t,{...w,path:[...w.path,`allOf`,1]}),k=e=>`allOf`in e&&Object.keys(e).length===1;S.allOf=[...k(D)?D.allOf:[D],...k(O)?O.allOf:[O]]},tupleProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def;E.type=`array`;let O=t.target===`draft-2020-12`?`prefixItems`:`items`,k=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,j=D.items.map((e,S)=>process$5(e,t,{...w,path:[...w.path,O,S]})),F=D.rest?process$5(D.rest,t,{...w,path:[...w.path,k,...t.target===`openapi-3.0`?[D.items.length]:[]]}):null;t.target===`draft-2020-12`?(E.prefixItems=j,F&&(E.items=F)):t.target===`openapi-3.0`?(E.items={anyOf:j},F&&E.items.anyOf.push(F),E.minItems=j.length,F||(E.maxItems=j.length)):(E.items=j,F&&(E.additionalItems=F));let{minimum:L,maximum:B}=e._zod.bag;typeof L==`number`&&(E.minItems=L),typeof B==`number`&&(E.maxItems=B)},recordProcessor=(e,t,S,w)=>{let E=S,D=e._zod.def;E.type=`object`;let O=D.keyType,k=O._zod.bag?.patterns;if(D.mode===`loose`&&k&&k.size>0){let e=process$5(D.valueType,t,{...w,path:[...w.path,`patternProperties`,`*`]});E.patternProperties={};for(let t of k)E.patternProperties[t.source]=e}else (t.target===`draft-07`||t.target===`draft-2020-12`)&&(E.propertyNames=process$5(D.keyType,t,{...w,path:[...w.path,`propertyNames`]})),E.additionalProperties=process$5(D.valueType,t,{...w,path:[...w.path,`additionalProperties`]});let j=O._zod.values;if(j){let e=[...j].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(E.required=e)}},nullableProcessor=(e,t,S,w)=>{let E=e._zod.def,D=process$5(E.innerType,t,w),O=t.seen.get(e);t.target===`openapi-3.0`?(O.ref=E.innerType,S.nullable=!0):S.anyOf=[D,{type:`null`}]},nonoptionalProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType},defaultProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType,S.default=JSON.parse(JSON.stringify(E.defaultValue))},prefaultProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType,t.io===`input`&&(S._prefault=JSON.parse(JSON.stringify(E.defaultValue)))},catchProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType;let O;try{O=E.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}S.default=O},pipeProcessor=(e,t,S,w)=>{let E=e._zod.def,D=t.io===`input`?E.in._zod.def.type===`transform`?E.out:E.in:E.out;process$5(D,t,w);let O=t.seen.get(e);O.ref=D},readonlyProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType,S.readOnly=!0},promiseProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType},optionalProcessor=(e,t,S,w)=>{let E=e._zod.def;process$5(E.innerType,t,w);let D=t.seen.get(e);D.ref=E.innerType},lazyProcessor=(e,t,S,w)=>{let E=e._zod.innerType;process$5(E,t,w);let D=t.seen.get(e);D.ref=E},allProcessors={string:stringProcessor,number:numberProcessor,boolean:booleanProcessor,bigint:bigintProcessor,symbol:symbolProcessor,null:nullProcessor,undefined:undefinedProcessor,void:voidProcessor,never:neverProcessor,any:anyProcessor,unknown:unknownProcessor,date:dateProcessor,enum:enumProcessor,literal:literalProcessor,nan:nanProcessor,template_literal:templateLiteralProcessor,file:fileProcessor,success:successProcessor,custom:customProcessor,function:functionProcessor,transform:transformProcessor,map:mapProcessor,set:setProcessor,array:arrayProcessor,object:objectProcessor,union:unionProcessor,intersection:intersectionProcessor,tuple:tupleProcessor,record:recordProcessor,nullable:nullableProcessor,nonoptional:nonoptionalProcessor,default:defaultProcessor,prefault:prefaultProcessor,catch:catchProcessor,pipe:pipeProcessor,readonly:readonlyProcessor,promise:promiseProcessor,optional:optionalProcessor,lazy:lazyProcessor};function toJSONSchema(e,t){if(`_idmap`in e){let S=e,w=initializeContext({...t,processors:allProcessors}),E={};for(let e of S._idmap.entries()){let[t,S]=e;process$5(S,w)}let D={};w.external={registry:S,uri:t?.uri,defs:E};for(let e of S._idmap.entries()){let[t,S]=e;extractDefs(w,S),D[t]=finalize(w,S)}return Object.keys(E).length>0&&(D.__shared={[w.target===`draft-2020-12`?`$defs`:`definitions`]:E}),{schemas:D}}let S=initializeContext({...t,processors:allProcessors});return process$5(e,S),extractDefs(S,e),finalize(S,e)}const ZodISODateTime=$constructor(`ZodISODateTime`,(e,t)=>{$ZodISODateTime.init(e,t),ZodStringFormat.init(e,t)});function datetime(e){return _isoDateTime(ZodISODateTime,e)}const ZodISODate=$constructor(`ZodISODate`,(e,t)=>{$ZodISODate.init(e,t),ZodStringFormat.init(e,t)});function date(e){return _isoDate(ZodISODate,e)}const ZodISOTime=$constructor(`ZodISOTime`,(e,t)=>{$ZodISOTime.init(e,t),ZodStringFormat.init(e,t)});function time(e){return _isoTime(ZodISOTime,e)}const ZodISODuration=$constructor(`ZodISODuration`,(e,t)=>{$ZodISODuration.init(e,t),ZodStringFormat.init(e,t)});function duration(e){return _isoDuration(ZodISODuration,e)}const initializer=(e,t)=>{$ZodError.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>formatError(e,t)},flatten:{value:t=>flattenError(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,jsonStringifyReplacer,2)}},isEmpty:{get(){return e.issues.length===0}}})},ZodError$1=$constructor(`ZodError`,initializer),ZodRealError=$constructor(`ZodError`,initializer,{Parent:Error}),parse$5=_parse(ZodRealError),parseAsync=_parseAsync(ZodRealError),safeParse$1=_safeParse(ZodRealError),safeParseAsync$1=_safeParseAsync(ZodRealError),encode$1=_encode(ZodRealError),decode$1=_decode(ZodRealError),encodeAsync=_encodeAsync(ZodRealError),decodeAsync=_decodeAsync(ZodRealError),safeEncode=_safeEncode(ZodRealError),safeDecode=_safeDecode(ZodRealError),safeEncodeAsync=_safeEncodeAsync(ZodRealError),safeDecodeAsync=_safeDecodeAsync(ZodRealError),ZodType$1=$constructor(`ZodType`,(e,t)=>($ZodType.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:createStandardJSONSchemaMethod(e,`input`),output:createStandardJSONSchemaMethod(e,`output`)}}),e.toJSONSchema=createToJSONSchemaMethod(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,`_def`,{value:t}),e.check=(...S)=>e.clone(mergeDefs(t,{checks:[...t.checks??[],...S.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,S)=>clone(e,t,S),e.brand=()=>e,e.register=((t,S)=>(t.add(e,S),e)),e.parse=(t,S)=>parse$5(e,t,S,{callee:e.parse}),e.safeParse=(t,S)=>safeParse$1(e,t,S),e.parseAsync=async(t,S)=>parseAsync(e,t,S,{callee:e.parseAsync}),e.safeParseAsync=async(t,S)=>safeParseAsync$1(e,t,S),e.spa=e.safeParseAsync,e.encode=(t,S)=>encode$1(e,t,S),e.decode=(t,S)=>decode$1(e,t,S),e.encodeAsync=async(t,S)=>encodeAsync(e,t,S),e.decodeAsync=async(t,S)=>decodeAsync(e,t,S),e.safeEncode=(t,S)=>safeEncode(e,t,S),e.safeDecode=(t,S)=>safeDecode(e,t,S),e.safeEncodeAsync=async(t,S)=>safeEncodeAsync(e,t,S),e.safeDecodeAsync=async(t,S)=>safeDecodeAsync(e,t,S),e.refine=(t,S)=>e.check(refine(t,S)),e.superRefine=t=>e.check(superRefine(t)),e.overwrite=t=>e.check(_overwrite(t)),e.optional=()=>optional(e),e.exactOptional=()=>exactOptional(e),e.nullable=()=>nullable(e),e.nullish=()=>optional(nullable(e)),e.nonoptional=t=>nonoptional(e,t),e.array=()=>array(e),e.or=t=>union([e,t]),e.and=t=>intersection(e,t),e.transform=t=>pipe(e,transform(t)),e.default=t=>_default(e,t),e.prefault=t=>prefault(e,t),e.catch=t=>_catch(e,t),e.pipe=t=>pipe(e,t),e.readonly=()=>readonly(e),e.describe=t=>{let S=e.clone();return globalRegistry.add(S,{description:t}),S},Object.defineProperty(e,`description`,{get(){return globalRegistry.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return globalRegistry.get(e);let S=e.clone();return globalRegistry.add(S,t[0]),S},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),_ZodString=$constructor(`_ZodString`,(e,t)=>{$ZodString.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>stringProcessor(e,t,S,w);let S=e._zod.bag;e.format=S.format??null,e.minLength=S.minimum??null,e.maxLength=S.maximum??null,e.regex=(...t)=>e.check(_regex(...t)),e.includes=(...t)=>e.check(_includes(...t)),e.startsWith=(...t)=>e.check(_startsWith(...t)),e.endsWith=(...t)=>e.check(_endsWith(...t)),e.min=(...t)=>e.check(_minLength(...t)),e.max=(...t)=>e.check(_maxLength(...t)),e.length=(...t)=>e.check(_length(...t)),e.nonempty=(...t)=>e.check(_minLength(1,...t)),e.lowercase=t=>e.check(_lowercase(t)),e.uppercase=t=>e.check(_uppercase(t)),e.trim=()=>e.check(_trim()),e.normalize=(...t)=>e.check(_normalize(...t)),e.toLowerCase=()=>e.check(_toLowerCase()),e.toUpperCase=()=>e.check(_toUpperCase()),e.slugify=()=>e.check(_slugify())}),ZodString$1=$constructor(`ZodString`,(e,t)=>{$ZodString.init(e,t),_ZodString.init(e,t),e.email=t=>e.check(_email(ZodEmail,t)),e.url=t=>e.check(_url(ZodURL,t)),e.jwt=t=>e.check(_jwt(ZodJWT,t)),e.emoji=t=>e.check(_emoji(ZodEmoji,t)),e.guid=t=>e.check(_guid(ZodGUID,t)),e.uuid=t=>e.check(_uuid(ZodUUID,t)),e.uuidv4=t=>e.check(_uuidv4(ZodUUID,t)),e.uuidv6=t=>e.check(_uuidv6(ZodUUID,t)),e.uuidv7=t=>e.check(_uuidv7(ZodUUID,t)),e.nanoid=t=>e.check(_nanoid(ZodNanoID,t)),e.guid=t=>e.check(_guid(ZodGUID,t)),e.cuid=t=>e.check(_cuid(ZodCUID,t)),e.cuid2=t=>e.check(_cuid2(ZodCUID2,t)),e.ulid=t=>e.check(_ulid(ZodULID,t)),e.base64=t=>e.check(_base64(ZodBase64,t)),e.base64url=t=>e.check(_base64url(ZodBase64URL,t)),e.xid=t=>e.check(_xid(ZodXID,t)),e.ksuid=t=>e.check(_ksuid(ZodKSUID,t)),e.ipv4=t=>e.check(_ipv4(ZodIPv4,t)),e.ipv6=t=>e.check(_ipv6(ZodIPv6,t)),e.cidrv4=t=>e.check(_cidrv4(ZodCIDRv4,t)),e.cidrv6=t=>e.check(_cidrv6(ZodCIDRv6,t)),e.e164=t=>e.check(_e164(ZodE164,t)),e.datetime=t=>e.check(datetime(t)),e.date=t=>e.check(date(t)),e.time=t=>e.check(time(t)),e.duration=t=>e.check(duration(t))});function string$2(e){return _string(ZodString$1,e)}const ZodStringFormat=$constructor(`ZodStringFormat`,(e,t)=>{$ZodStringFormat.init(e,t),_ZodString.init(e,t)}),ZodEmail=$constructor(`ZodEmail`,(e,t)=>{$ZodEmail.init(e,t),ZodStringFormat.init(e,t)}),ZodGUID=$constructor(`ZodGUID`,(e,t)=>{$ZodGUID.init(e,t),ZodStringFormat.init(e,t)}),ZodUUID=$constructor(`ZodUUID`,(e,t)=>{$ZodUUID.init(e,t),ZodStringFormat.init(e,t)}),ZodURL=$constructor(`ZodURL`,(e,t)=>{$ZodURL.init(e,t),ZodStringFormat.init(e,t)});function url(e){return _url(ZodURL,e)}const ZodEmoji=$constructor(`ZodEmoji`,(e,t)=>{$ZodEmoji.init(e,t),ZodStringFormat.init(e,t)}),ZodNanoID=$constructor(`ZodNanoID`,(e,t)=>{$ZodNanoID.init(e,t),ZodStringFormat.init(e,t)}),ZodCUID=$constructor(`ZodCUID`,(e,t)=>{$ZodCUID.init(e,t),ZodStringFormat.init(e,t)}),ZodCUID2=$constructor(`ZodCUID2`,(e,t)=>{$ZodCUID2.init(e,t),ZodStringFormat.init(e,t)}),ZodULID=$constructor(`ZodULID`,(e,t)=>{$ZodULID.init(e,t),ZodStringFormat.init(e,t)}),ZodXID=$constructor(`ZodXID`,(e,t)=>{$ZodXID.init(e,t),ZodStringFormat.init(e,t)}),ZodKSUID=$constructor(`ZodKSUID`,(e,t)=>{$ZodKSUID.init(e,t),ZodStringFormat.init(e,t)}),ZodIPv4=$constructor(`ZodIPv4`,(e,t)=>{$ZodIPv4.init(e,t),ZodStringFormat.init(e,t)}),ZodIPv6=$constructor(`ZodIPv6`,(e,t)=>{$ZodIPv6.init(e,t),ZodStringFormat.init(e,t)}),ZodCIDRv4=$constructor(`ZodCIDRv4`,(e,t)=>{$ZodCIDRv4.init(e,t),ZodStringFormat.init(e,t)}),ZodCIDRv6=$constructor(`ZodCIDRv6`,(e,t)=>{$ZodCIDRv6.init(e,t),ZodStringFormat.init(e,t)}),ZodBase64=$constructor(`ZodBase64`,(e,t)=>{$ZodBase64.init(e,t),ZodStringFormat.init(e,t)}),ZodBase64URL=$constructor(`ZodBase64URL`,(e,t)=>{$ZodBase64URL.init(e,t),ZodStringFormat.init(e,t)}),ZodE164=$constructor(`ZodE164`,(e,t)=>{$ZodE164.init(e,t),ZodStringFormat.init(e,t)}),ZodJWT=$constructor(`ZodJWT`,(e,t)=>{$ZodJWT.init(e,t),ZodStringFormat.init(e,t)}),ZodNumber$1=$constructor(`ZodNumber`,(e,t)=>{$ZodNumber.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>numberProcessor(e,t,S,w),e.gt=(t,S)=>e.check(_gt(t,S)),e.gte=(t,S)=>e.check(_gte(t,S)),e.min=(t,S)=>e.check(_gte(t,S)),e.lt=(t,S)=>e.check(_lt(t,S)),e.lte=(t,S)=>e.check(_lte(t,S)),e.max=(t,S)=>e.check(_lte(t,S)),e.int=t=>e.check(int(t)),e.safe=t=>e.check(int(t)),e.positive=t=>e.check(_gt(0,t)),e.nonnegative=t=>e.check(_gte(0,t)),e.negative=t=>e.check(_lt(0,t)),e.nonpositive=t=>e.check(_lte(0,t)),e.multipleOf=(t,S)=>e.check(_multipleOf(t,S)),e.step=(t,S)=>e.check(_multipleOf(t,S)),e.finite=()=>e;let S=e._zod.bag;e.minValue=Math.max(S.minimum??-1/0,S.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(S.maximum??1/0,S.exclusiveMaximum??1/0)??null,e.isInt=(S.format??``).includes(`int`)||Number.isSafeInteger(S.multipleOf??.5),e.isFinite=!0,e.format=S.format??null});function number$1(e){return _number(ZodNumber$1,e)}const ZodNumberFormat=$constructor(`ZodNumberFormat`,(e,t)=>{$ZodNumberFormat.init(e,t),ZodNumber$1.init(e,t)});function int(e){return _int(ZodNumberFormat,e)}const ZodBoolean$1=$constructor(`ZodBoolean`,(e,t)=>{$ZodBoolean.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>booleanProcessor(e,t,S,w)});function boolean$1(e){return _boolean(ZodBoolean$1,e)}const ZodNull$1=$constructor(`ZodNull`,(e,t)=>{$ZodNull.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>nullProcessor(e,t,S,w)});function _null(e){return _null$1(ZodNull$1,e)}const ZodAny$1=$constructor(`ZodAny`,(e,t)=>{$ZodAny.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(e,t,S)=>void 0});function any$1(){return _any(ZodAny$1)}const ZodUnknown$1=$constructor(`ZodUnknown`,(e,t)=>{$ZodUnknown.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(e,t,S)=>void 0});function unknown$2(){return _unknown(ZodUnknown$1)}const ZodNever$1=$constructor(`ZodNever`,(e,t)=>{$ZodNever.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>neverProcessor(e,t,S,w)});function never(e){return _never(ZodNever$1,e)}const ZodArray$1=$constructor(`ZodArray`,(e,t)=>{$ZodArray.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>arrayProcessor(e,t,S,w),e.element=t.element,e.min=(t,S)=>e.check(_minLength(t,S)),e.nonempty=t=>e.check(_minLength(1,t)),e.max=(t,S)=>e.check(_maxLength(t,S)),e.length=(t,S)=>e.check(_length(t,S)),e.unwrap=()=>e.element});function array(e,t){return _array(ZodArray$1,e,t)}const ZodObject$1=$constructor(`ZodObject`,(e,t)=>{$ZodObjectJIT.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>objectProcessor(e,t,S,w),defineLazy(e,`shape`,()=>t.shape),e.keyof=()=>_enum(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:unknown$2()}),e.loose=()=>e.clone({...e._zod.def,catchall:unknown$2()}),e.strict=()=>e.clone({...e._zod.def,catchall:never()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>extend$1(e,t),e.safeExtend=t=>safeExtend(e,t),e.merge=t=>merge$1(e,t),e.pick=t=>pick$2(e,t),e.omit=t=>omit(e,t),e.partial=(...t)=>partial(ZodOptional$1,e,t[0]),e.required=(...t)=>required(ZodNonOptional,e,t[0])});function object$1(e,t){return new ZodObject$1({type:`object`,shape:e??{},...normalizeParams(t)})}function looseObject(e,t){return new ZodObject$1({type:`object`,shape:e,catchall:unknown$2(),...normalizeParams(t)})}const ZodUnion$1=$constructor(`ZodUnion`,(e,t)=>{$ZodUnion.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>unionProcessor(e,t,S,w),e.options=t.options});function union(e,t){return new ZodUnion$1({type:`union`,options:e,...normalizeParams(t)})}const ZodDiscriminatedUnion$1=$constructor(`ZodDiscriminatedUnion`,(e,t)=>{ZodUnion$1.init(e,t),$ZodDiscriminatedUnion.init(e,t)});function discriminatedUnion(e,t,S){return new ZodDiscriminatedUnion$1({type:`union`,options:t,discriminator:e,...normalizeParams(S)})}const ZodIntersection$1=$constructor(`ZodIntersection`,(e,t)=>{$ZodIntersection.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>intersectionProcessor(e,t,S,w)});function intersection(e,t){return new ZodIntersection$1({type:`intersection`,left:e,right:t})}const ZodRecord$1=$constructor(`ZodRecord`,(e,t)=>{$ZodRecord.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>recordProcessor(e,t,S,w),e.keyType=t.keyType,e.valueType=t.valueType});function record(e,t,S){return new ZodRecord$1({type:`record`,keyType:e,valueType:t,...normalizeParams(S)})}const ZodEnum$1=$constructor(`ZodEnum`,(e,t)=>{$ZodEnum.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>enumProcessor(e,t,S,w),e.enum=t.entries,e.options=Object.values(t.entries);let S=new Set(Object.keys(t.entries));e.extract=(e,w)=>{let E={};for(let w of e)if(S.has(w))E[w]=t.entries[w];else throw Error(`Key ${w} not found in enum`);return new ZodEnum$1({...t,checks:[],...normalizeParams(w),entries:E})},e.exclude=(e,w)=>{let E={...t.entries};for(let t of e)if(S.has(t))delete E[t];else throw Error(`Key ${t} not found in enum`);return new ZodEnum$1({...t,checks:[],...normalizeParams(w),entries:E})}});function _enum(e,t){return new ZodEnum$1({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...normalizeParams(t)})}const ZodLiteral$1=$constructor(`ZodLiteral`,(e,t)=>{$ZodLiteral.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>literalProcessor(e,t,S,w),e.values=new Set(t.values),Object.defineProperty(e,`value`,{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function literal(e,t){return new ZodLiteral$1({type:`literal`,values:Array.isArray(e)?e:[e],...normalizeParams(t)})}const ZodTransform=$constructor(`ZodTransform`,(e,t)=>{$ZodTransform.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>transformProcessor(e,t,S,w),e._zod.parse=(S,w)=>{if(w.direction===`backward`)throw new $ZodEncodeError(e.constructor.name);S.addIssue=w=>{if(typeof w==`string`)S.issues.push(issue(w,S.value,t));else{let t=w;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=S.value,t.inst??=e,S.issues.push(issue(t))}};let E=t.transform(S.value,S);return E instanceof Promise?E.then(e=>(S.value=e,S)):(S.value=E,S)}});function transform(e){return new ZodTransform({type:`transform`,transform:e})}const ZodOptional$1=$constructor(`ZodOptional`,(e,t)=>{$ZodOptional.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>optionalProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function optional(e){return new ZodOptional$1({type:`optional`,innerType:e})}const ZodExactOptional=$constructor(`ZodExactOptional`,(e,t)=>{$ZodExactOptional.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>optionalProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function exactOptional(e){return new ZodExactOptional({type:`optional`,innerType:e})}const ZodNullable$1=$constructor(`ZodNullable`,(e,t)=>{$ZodNullable.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>nullableProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function nullable(e){return new ZodNullable$1({type:`nullable`,innerType:e})}const ZodDefault$1=$constructor(`ZodDefault`,(e,t)=>{$ZodDefault.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>defaultProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function _default(e,t){return new ZodDefault$1({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():shallowClone(t)}})}const ZodPrefault=$constructor(`ZodPrefault`,(e,t)=>{$ZodPrefault.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>prefaultProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function prefault(e,t){return new ZodPrefault({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():shallowClone(t)}})}const ZodNonOptional=$constructor(`ZodNonOptional`,(e,t)=>{$ZodNonOptional.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>nonoptionalProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function nonoptional(e,t){return new ZodNonOptional({type:`nonoptional`,innerType:e,...normalizeParams(t)})}const ZodCatch$1=$constructor(`ZodCatch`,(e,t)=>{$ZodCatch.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>catchProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function _catch(e,t){return new ZodCatch$1({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}const ZodPipe=$constructor(`ZodPipe`,(e,t)=>{$ZodPipe.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>pipeProcessor(e,t,S,w),e.in=t.in,e.out=t.out});function pipe(e,t){return new ZodPipe({type:`pipe`,in:e,out:t})}const ZodReadonly$1=$constructor(`ZodReadonly`,(e,t)=>{$ZodReadonly.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>readonlyProcessor(e,t,S,w),e.unwrap=()=>e._zod.def.innerType});function readonly(e){return new ZodReadonly$1({type:`readonly`,innerType:e})}const ZodCustom=$constructor(`ZodCustom`,(e,t)=>{$ZodCustom.init(e,t),ZodType$1.init(e,t),e._zod.processJSONSchema=(t,S,w)=>customProcessor(e,t,S,w)});function custom(e,t){return _custom(ZodCustom,e??(()=>!0),t)}function refine(e,t={}){return _refine(ZodCustom,e,t)}function superRefine(e){return _superRefine(e)}const describe$1=describe$2,meta$1=meta$2;function preprocess$1(e,t){return pipe(transform(e),t)}var import_dist$1=require_dist$2();init_esm$2();const SINGLETON_KEY$1=Symbol.for(`@inkeep/open-knowledge/field-registry`),g$1=globalThis;g$1[SINGLETON_KEY$1]===void 0&&(g$1[SINGLETON_KEY$1]=registry$1());const fieldRegistry=g$1[SINGLETON_KEY$1];function getFieldMeta(e){let t=e;for(let e=0;e<16;e++){if(t==null)return;let e=isZodSchema$1(t)?fieldRegistry.get(t):void 0;if(e!==void 0)return e;let S=t._zod?.def?.innerType;if(S===void 0)return;t=S}}function isZodSchema$1(e){return typeof e==`object`&&!!e&&`_zod`in e&&`parse`in e}const FolderFrontmatterSchema=looseObject({title:string$2().optional(),description:string$2().optional(),tags:array(string$2()).optional()}),FolderRuleSchema=looseObject({match:string$2().min(1,"`match` must be a non-empty glob pattern (e.g. 'specs/**' or 'reports/*/**')"),frontmatter:FolderFrontmatterSchema}),ConfigSchema$1=looseObject({content:looseObject({dir:string$2().register(fieldRegistry,{scope:`project`,agentSettable:!1,defaultScope:`project`}).default(`.`)}).default({dir:`.`}),appearance:looseObject({theme:_enum([`light`,`dark`,`system`]).register(fieldRegistry,{scope:`user`,agentSettable:!1,defaultScope:`user`}).optional()}).default({}),autoSync:looseObject({enabled:boolean$1().register(fieldRegistry,{scope:`project-local`,agentSettable:!1,defaultScope:`project-local`}).nullable().default(null)}).default({enabled:null})}),TRACER_NAME$1=`open-knowledge-config`;async function withConfigSpan(e,t,S){let w=trace.getTracer(TRACER_NAME$1),E=t?{attributes:t}:{};return w.startActiveSpan(e,E,async e=>{try{return await S(e)}catch(t){throw e.recordException(t),e.setStatus({code:SpanStatusCode.ERROR,message:t instanceof Error?t.message:String(t)}),t}finally{e.end()}})}function withConfigSpanSync(e,t,S){let w=trace.getTracer(TRACER_NAME$1),E=t?{attributes:t}:{};return w.startActiveSpan(e,E,e=>{try{return S(e)}catch(t){throw e.recordException(t),e.setStatus({code:SpanStatusCode.ERROR,message:t instanceof Error?t.message:String(t)}),t}finally{e.end()}})}function addConfigSpanEvent(e,t){let S=trace.getActiveSpan();S&&S.addEvent(e,t)}function unwrapToShape(e){let t=e;for(let e=0;e<16;e++){if(t==null||t?._zod?.def?.shape!==void 0)return t;let e=t?._zod?.def?.innerType;if(e===void 0)return t;t=e}return t}function resolveLeafSchema(e,t){let S=e;for(let e of t){S=unwrapToShape(S);let t=S?._zod?.def?.shape;if(!t||(S=t[String(e)],S===void 0))return}return S}function getLeafFieldMeta(e,t){let S=resolveLeafSchema(e,t);if(S!==void 0)return getFieldMeta(S)}function isScopeCompatible(e,t){return e===`either`?!0:e===t}function validatePatchScopes(e,t){let S=null;function w(e,E){if(S!==null||e===void 0)return;if(typeof e==`object`&&e&&!Array.isArray(e)){for(let[t,D]of Object.entries(e))if(w(D,[...E,t]),S!==null)return;return}let D=getLeafFieldMeta(ConfigSchema$1,E);D?.scope!==void 0&&(isScopeCompatible(D.scope,t)||(S={code:`SCOPE_VIOLATION`,path:E,expectedScope:D.scope,actualScope:t}))}for(let[t,E]of Object.entries(e))if(w(E,[t]),S!==null)break;return S}function ensureCollectionAncestors(e,t){for(let S=1;S<t.length;S++){let w=t.slice(0,S);e.hasIn(w)&&((0,import_dist$1.isCollection)(e.getIn(w,!0))||e.deleteIn(w))}}function applyPatchToDocument(e,t){let S=[];function w(t,E){if(t!==void 0){if(t===null){e.deleteIn(E),S.push(E.join(`.`));return}if(Array.isArray(t)){ensureCollectionAncestors(e,E),e.setIn(E,t),S.push(E.join(`.`));return}if(typeof t==`object`){for(let[e,S]of Object.entries(t))w(S,[...E,e]);return}ensureCollectionAncestors(e,E),e.setIn(E,t),S.push(E.join(`.`))}}for(let[e,S]of Object.entries(t))w(S,[e]);return S}function toConfigIssue(e){return{path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message,issueCode:e.code}}const CONFIG_SCHEMA_MAJOR_PATH=`v0`;function resolveNode(e,t){if(t.length===0)return e.contents??null;let S=e.getIn(t,!0);if((0,import_dist$1.isNode)(S))return S;for(let S=t.length-1;S>=0;S--){let w=e.getIn(t.slice(0,S),!0);if((0,import_dist$1.isNode)(w))return w}return e.contents??null}function offsetToLineCol(e,t){let S=1,w=1,E=Math.min(t,e.length);for(let t=0;t<E;t++)e.charCodeAt(t)===10?(S++,w=1):w++;return{line:S,column:w}}function renderSnippet(e,t,S,w,E){let D=e.split(`
|
|
154
155
|
`),O=w-1;if(O<0||O>=D.length)return``;let k=D[O]??``,j=t-(E-1)+k.length,F=Math.max(1,Math.min(S,j)-t),L=[],B=String(O+2).length;for(let e=Math.max(0,O-1);e<=Math.min(D.length-1,O+1);e++){let t=e===O,S=t?`>`:` `,w=String(e+1).padStart(B,` `);if(L.push(`${S} ${w} | ${D[e]??``}`),t){let e=` `.repeat(2+B+3+E-1);L.push(`${e}${`^`.repeat(F)}`)}}return L.join(`
|
|
155
156
|
`)}function locateIssue(e){let t=resolveNode(e.doc,e.path);if(!t)return;let S=t.range;if(!S)return;let[w,,E=w]=S,{line:D,column:O}=offsetToLineCol(e.source,w),k=(0,import_dist$1.isCollection)(t)?renderSnippet(e.source,w,w+1,D,O):renderSnippet(e.source,w,E,D,O);return{file:e.file,line:D,column:O,snippet:k.length>0?k:void 0}}const OK_PROJECT_MARKER=`.ok/config.yml`,LOCAL_DIR=`local`;function stringifyPosition(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?position$1(e.position):`start`in e||`end`in e?position$1(e):`line`in e||`column`in e?point$2(e):``}function point$2(e){return index(e&&e.line)+`:`+index(e&&e.column)}function position$1(e){return point$2(e&&e.start)+`-`+point$2(e&&e.end)}function index(e){return e&&typeof e==`number`?e:1}var VFileMessage=class extends Error{constructor(e,t,S){super(),typeof t==`string`&&(S=t,t=void 0);let w=``,E={},D=!1;if(t&&(E=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?w=e:!E.cause&&e&&(D=!0,w=e.message,E.cause=e),!E.ruleId&&!E.source&&typeof S==`string`){let e=S.indexOf(`:`);e===-1?E.ruleId=S:(E.source=S.slice(0,e),E.ruleId=S.slice(e+1))}if(!E.place&&E.ancestors&&E.ancestors){let e=E.ancestors[E.ancestors.length-1];e&&(E.place=e.position)}let O=E.place&&`start`in E.place?E.place.start:E.place;this.ancestors=E.ancestors||void 0,this.cause=E.cause||void 0,this.column=O?O.column:void 0,this.fatal=void 0,this.file=``,this.message=w,this.line=O?O.line:void 0,this.name=stringifyPosition(E.place)||`1:1`,this.place=E.place||void 0,this.reason=this.message,this.ruleId=E.ruleId||void 0,this.source=E.source||void 0,this.stack=D&&E.cause&&typeof E.cause.stack==`string`?E.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};VFileMessage.prototype.file=``,VFileMessage.prototype.name=``,VFileMessage.prototype.reason=``,VFileMessage.prototype.message=``,VFileMessage.prototype.stack=``,VFileMessage.prototype.column=void 0,VFileMessage.prototype.line=void 0,VFileMessage.prototype.ancestors=void 0,VFileMessage.prototype.cause=void 0,VFileMessage.prototype.fatal=void 0,VFileMessage.prototype.place=void 0,VFileMessage.prototype.ruleId=void 0,VFileMessage.prototype.source=void 0;var require_diff_match_patch=__commonJSMin$1(((e,t)=>{var S=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},w=-1,E=1,D=0;S.Diff=function(e,t){return[e,t]},S.prototype.diff_main=function(e,t,w,E){E===void 0&&(E=this.Diff_Timeout<=0?Number.MAX_VALUE:new Date().getTime()+this.Diff_Timeout*1e3);var O=E;if(e==null||t==null)throw Error(`Null input. (diff_main)`);if(e==t)return e?[new S.Diff(D,e)]:[];w===void 0&&(w=!0);var k=w,j=this.diff_commonPrefix(e,t),F=e.substring(0,j);e=e.substring(j),t=t.substring(j),j=this.diff_commonSuffix(e,t);var L=e.substring(e.length-j);e=e.substring(0,e.length-j),t=t.substring(0,t.length-j);var B=this.diff_compute_(e,t,k,O);return F&&B.unshift(new S.Diff(D,F)),L&&B.push(new S.Diff(D,L)),this.diff_cleanupMerge(B),B},S.prototype.diff_compute_=function(e,t,O,k){var j;if(!e)return[new S.Diff(E,t)];if(!t)return[new S.Diff(w,e)];var F=e.length>t.length?e:t,L=e.length>t.length?t:e,B=F.indexOf(L);if(B!=-1)return j=[new S.Diff(E,F.substring(0,B)),new S.Diff(D,L),new S.Diff(E,F.substring(B+L.length))],e.length>t.length&&(j[0][0]=j[2][0]=w),j;if(L.length==1)return[new S.Diff(w,e),new S.Diff(E,t)];var H=this.diff_halfMatch_(e,t);if(H){var q=H[0],J=H[1],Y=H[2],ee=H[3],te=H[4],ne=this.diff_main(q,Y,O,k),ae=this.diff_main(J,ee,O,k);return ne.concat([new S.Diff(D,te)],ae)}return O&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,k):this.diff_bisect_(e,t,k)},S.prototype.diff_lineMode_=function(e,t,O){var k=this.diff_linesToChars_(e,t);e=k.chars1,t=k.chars2;var j=k.lineArray,F=this.diff_main(e,t,!1,O);this.diff_charsToLines_(F,j),this.diff_cleanupSemantic(F),F.push(new S.Diff(D,``));for(var L=0,B=0,H=0,q=``,J=``;L<F.length;){switch(F[L][0]){case E:H++,J+=F[L][1];break;case w:B++,q+=F[L][1];break;case D:if(B>=1&&H>=1){F.splice(L-B-H,B+H),L=L-B-H;for(var Y=this.diff_main(q,J,!1,O),ee=Y.length-1;ee>=0;ee--)F.splice(L,0,Y[ee]);L+=Y.length}H=0,B=0,q=``,J=``;break}L++}return F.pop(),F},S.prototype.diff_bisect_=function(e,t,D){for(var O=e.length,k=t.length,j=Math.ceil((O+k)/2),F=j,L=2*j,B=Array(L),H=Array(L),q=0;q<L;q++)B[q]=-1,H[q]=-1;B[F+1]=0,H[F+1]=0;for(var J=O-k,Y=J%2!=0,ee=0,te=0,ne=0,ae=0,oe=0;oe<j&&!(new Date().getTime()>D);oe++){for(var se=-oe+ee;se<=oe-te;se+=2){for(var ce=F+se,ue=se==-oe||se!=oe&&B[ce-1]<B[ce+1]?B[ce+1]:B[ce-1]+1,de=ue-se;ue<O&&de<k&&e.charAt(ue)==t.charAt(de);)ue++,de++;if(B[ce]=ue,ue>O)te+=2;else if(de>k)ee+=2;else if(Y){var fe=F+J-se;if(fe>=0&&fe<L&&H[fe]!=-1){var me=O-H[fe];if(ue>=me)return this.diff_bisectSplit_(e,t,ue,de,D)}}}for(var ge=-oe+ne;ge<=oe-ae;ge+=2){for(var fe=F+ge,me=ge==-oe||ge!=oe&&H[fe-1]<H[fe+1]?H[fe+1]:H[fe-1]+1,_e=me-ge;me<O&&_e<k&&e.charAt(O-me-1)==t.charAt(k-_e-1);)me++,_e++;if(H[fe]=me,me>O)ae+=2;else if(_e>k)ne+=2;else if(!Y){var ce=F+J-ge;if(ce>=0&&ce<L&&B[ce]!=-1){var ue=B[ce],de=F+ue-ce;if(me=O-me,ue>=me)return this.diff_bisectSplit_(e,t,ue,de,D)}}}}return[new S.Diff(w,e),new S.Diff(E,t)]},S.prototype.diff_bisectSplit_=function(e,t,S,w,E){var D=e.substring(0,S),O=t.substring(0,w),k=e.substring(S),j=t.substring(w),F=this.diff_main(D,O,!1,E),L=this.diff_main(k,j,!1,E);return F.concat(L)},S.prototype.diff_linesToChars_=function(e,t){var S=[],w={};S[0]=``;function E(e){for(var t=``,E=0,O=-1,k=S.length;O<e.length-1;){O=e.indexOf(`
|
|
156
157
|
`,E),O==-1&&(O=e.length-1);var j=e.substring(E,O+1);(w.hasOwnProperty?w.hasOwnProperty(j):w[j]!==void 0)?t+=String.fromCharCode(w[j]):(k==D&&(j=e.substring(E),O=e.length),t+=String.fromCharCode(k),w[j]=k,S[k++]=j),E=O+1}return t}var D=4e4,O=E(e);return D=65535,{chars1:O,chars2:E(t),lineArray:S}},S.prototype.diff_charsToLines_=function(e,t){for(var S=0;S<e.length;S++){for(var w=e[S][1],E=[],D=0;D<w.length;D++)E[D]=t[w.charCodeAt(D)];e[S][1]=E.join(``)}},S.prototype.diff_commonPrefix=function(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var S=0,w=Math.min(e.length,t.length),E=w,D=0;S<E;)e.substring(D,E)==t.substring(D,E)?(S=E,D=S):w=E,E=Math.floor((w-S)/2+S);return E},S.prototype.diff_commonSuffix=function(e,t){if(!e||!t||e.charAt(e.length-1)!=t.charAt(t.length-1))return 0;for(var S=0,w=Math.min(e.length,t.length),E=w,D=0;S<E;)e.substring(e.length-E,e.length-D)==t.substring(t.length-E,t.length-D)?(S=E,D=S):w=E,E=Math.floor((w-S)/2+S);return E},S.prototype.diff_commonOverlap_=function(e,t){var S=e.length,w=t.length;if(S==0||w==0)return 0;S>w?e=e.substring(S-w):S<w&&(t=t.substring(0,S));var E=Math.min(S,w);if(e==t)return E;for(var D=0,O=1;;){var k=e.substring(E-O),j=t.indexOf(k);if(j==-1)return D;O+=j,(j==0||e.substring(E-O)==t.substring(0,O))&&(D=O,O++)}},S.prototype.diff_halfMatch_=function(e,t){if(this.Diff_Timeout<=0)return null;var S=e.length>t.length?e:t,w=e.length>t.length?t:e;if(S.length<4||w.length*2<S.length)return null;var E=this;function D(e,t,S){for(var w=e.substring(S,S+Math.floor(e.length/4)),D=-1,O=``,k,j,F,L;(D=t.indexOf(w,D+1))!=-1;){var B=E.diff_commonPrefix(e.substring(S),t.substring(D)),H=E.diff_commonSuffix(e.substring(0,S),t.substring(0,D));O.length<H+B&&(O=t.substring(D-H,D)+t.substring(D,D+B),k=e.substring(0,S-H),j=e.substring(S+B),F=t.substring(0,D-H),L=t.substring(D+B))}return O.length*2>=e.length?[k,j,F,L,O]:null}var O=D(S,w,Math.ceil(S.length/4)),k=D(S,w,Math.ceil(S.length/2)),j;if(!O&&!k)return null;j=k?O&&O[4].length>k[4].length?O:k:O;var F,L,B,H;e.length>t.length?(F=j[0],L=j[1],B=j[2],H=j[3]):(B=j[0],H=j[1],F=j[2],L=j[3]);var q=j[4];return[F,L,B,H,q]},S.prototype.diff_cleanupSemantic=function(e){for(var t=!1,O=[],k=0,j=null,F=0,L=0,B=0,H=0,q=0;F<e.length;)e[F][0]==D?(O[k++]=F,L=H,B=q,H=0,q=0,j=e[F][1]):(e[F][0]==E?H+=e[F][1].length:q+=e[F][1].length,j&&j.length<=Math.max(L,B)&&j.length<=Math.max(H,q)&&(e.splice(O[k-1],0,new S.Diff(w,j)),e[O[k-1]+1][0]=E,k--,k--,F=k>0?O[k-1]:-1,L=0,B=0,H=0,q=0,j=null,t=!0)),F++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),F=1;F<e.length;){if(e[F-1][0]==w&&e[F][0]==E){var J=e[F-1][1],Y=e[F][1],ee=this.diff_commonOverlap_(J,Y),te=this.diff_commonOverlap_(Y,J);ee>=te?(ee>=J.length/2||ee>=Y.length/2)&&(e.splice(F,0,new S.Diff(D,Y.substring(0,ee))),e[F-1][1]=J.substring(0,J.length-ee),e[F+1][1]=Y.substring(ee),F++):(te>=J.length/2||te>=Y.length/2)&&(e.splice(F,0,new S.Diff(D,J.substring(0,te))),e[F-1][0]=E,e[F-1][1]=Y.substring(0,Y.length-te),e[F+1][0]=w,e[F+1][1]=J.substring(te),F++),F++}F++}},S.prototype.diff_cleanupSemanticLossless=function(e){function t(e,t){if(!e||!t)return 6;var w=e.charAt(e.length-1),E=t.charAt(0),D=w.match(S.nonAlphaNumericRegex_),O=E.match(S.nonAlphaNumericRegex_),k=D&&w.match(S.whitespaceRegex_),j=O&&E.match(S.whitespaceRegex_),F=k&&w.match(S.linebreakRegex_),L=j&&E.match(S.linebreakRegex_),B=F&&e.match(S.blanklineEndRegex_),H=L&&t.match(S.blanklineStartRegex_);return B||H?5:F||L?4:D&&!k&&j?3:k||j?2:D||O?1:0}for(var w=1;w<e.length-1;){if(e[w-1][0]==D&&e[w+1][0]==D){var E=e[w-1][1],O=e[w][1],k=e[w+1][1],j=this.diff_commonSuffix(E,O);if(j){var F=O.substring(O.length-j);E=E.substring(0,E.length-j),O=F+O.substring(0,O.length-j),k=F+k}for(var L=E,B=O,H=k,q=t(E,O)+t(O,k);O.charAt(0)===k.charAt(0);){E+=O.charAt(0),O=O.substring(1)+k.charAt(0),k=k.substring(1);var J=t(E,O)+t(O,k);J>=q&&(q=J,L=E,B=O,H=k)}e[w-1][1]!=L&&(L?e[w-1][1]=L:(e.splice(w-1,1),w--),e[w][1]=B,H?e[w+1][1]=H:(e.splice(w+1,1),w--))}w++}},S.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/,S.whitespaceRegex_=/\s/,S.linebreakRegex_=/[\r\n]/,S.blanklineEndRegex_=/\n\r?\n$/,S.blanklineStartRegex_=/^\r?\n\r?\n/,S.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,O=[],k=0,j=null,F=0,L=!1,B=!1,H=!1,q=!1;F<e.length;)e[F][0]==D?(e[F][1].length<this.Diff_EditCost&&(H||q)?(O[k++]=F,L=H,B=q,j=e[F][1]):(k=0,j=null),H=q=!1):(e[F][0]==w?q=!0:H=!0,j&&(L&&B&&H&&q||j.length<this.Diff_EditCost/2&&L+B+H+q==3)&&(e.splice(O[k-1],0,new S.Diff(w,j)),e[O[k-1]+1][0]=E,k--,j=null,L&&B?(H=q=!0,k=0):(k--,F=k>0?O[k-1]:-1,H=q=!1),t=!0)),F++;t&&this.diff_cleanupMerge(e)},S.prototype.diff_cleanupMerge=function(e){e.push(new S.Diff(D,``));for(var t=0,O=0,k=0,j=``,F=``,L;t<e.length;)switch(e[t][0]){case E:k++,F+=e[t][1],t++;break;case w:O++,j+=e[t][1],t++;break;case D:O+k>1?(O!==0&&k!==0&&(L=this.diff_commonPrefix(F,j),L!==0&&(t-O-k>0&&e[t-O-k-1][0]==D?e[t-O-k-1][1]+=F.substring(0,L):(e.splice(0,0,new S.Diff(D,F.substring(0,L))),t++),F=F.substring(L),j=j.substring(L)),L=this.diff_commonSuffix(F,j),L!==0&&(e[t][1]=F.substring(F.length-L)+e[t][1],F=F.substring(0,F.length-L),j=j.substring(0,j.length-L))),t-=O+k,e.splice(t,O+k),j.length&&(e.splice(t,0,new S.Diff(w,j)),t++),F.length&&(e.splice(t,0,new S.Diff(E,F)),t++),t++):t!==0&&e[t-1][0]==D?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,k=0,O=0,j=``,F=``;break}e[e.length-1][1]===``&&e.pop();var B=!1;for(t=1;t<e.length-1;)e[t-1][0]==D&&e[t+1][0]==D&&(e[t][1].substring(e[t][1].length-e[t-1][1].length)==e[t-1][1]?(e[t][1]=e[t-1][1]+e[t][1].substring(0,e[t][1].length-e[t-1][1].length),e[t+1][1]=e[t-1][1]+e[t+1][1],e.splice(t-1,1),B=!0):e[t][1].substring(0,e[t+1][1].length)==e[t+1][1]&&(e[t-1][1]+=e[t+1][1],e[t][1]=e[t][1].substring(e[t+1][1].length)+e[t+1][1],e.splice(t+1,1),B=!0)),t++;B&&this.diff_cleanupMerge(e)},S.prototype.diff_xIndex=function(e,t){var S=0,D=0,O=0,k=0,j;for(j=0;j<e.length&&(e[j][0]!==E&&(S+=e[j][1].length),e[j][0]!==w&&(D+=e[j][1].length),!(S>t));j++)O=S,k=D;return e.length!=j&&e[j][0]===w?k:k+(t-O)},S.prototype.diff_prettyHtml=function(e){for(var t=[],S=/&/g,O=/</g,k=/>/g,j=/\n/g,F=0;F<e.length;F++){var L=e[F][0],B=e[F][1].replace(S,`&`).replace(O,`<`).replace(k,`>`).replace(j,`¶<br>`);switch(L){case E:t[F]=`<ins style="background:#e6ffe6;">`+B+`</ins>`;break;case w:t[F]=`<del style="background:#ffe6e6;">`+B+`</del>`;break;case D:t[F]=`<span>`+B+`</span>`;break}}return t.join(``)},S.prototype.diff_text1=function(e){for(var t=[],S=0;S<e.length;S++)e[S][0]!==E&&(t[S]=e[S][1]);return t.join(``)},S.prototype.diff_text2=function(e){for(var t=[],S=0;S<e.length;S++)e[S][0]!==w&&(t[S]=e[S][1]);return t.join(``)},S.prototype.diff_levenshtein=function(e){for(var t=0,S=0,O=0,k=0;k<e.length;k++){var j=e[k][0],F=e[k][1];switch(j){case E:S+=F.length;break;case w:O+=F.length;break;case D:t+=Math.max(S,O),S=0,O=0;break}}return t+=Math.max(S,O),t},S.prototype.diff_toDelta=function(e){for(var t=[],S=0;S<e.length;S++)switch(e[S][0]){case E:t[S]=`+`+encodeURI(e[S][1]);break;case w:t[S]=`-`+e[S][1].length;break;case D:t[S]=`=`+e[S][1].length;break}return t.join(` `).replace(/%20/g,` `)},S.prototype.diff_fromDelta=function(e,t){for(var O=[],k=0,j=0,F=t.split(/\t/g),L=0;L<F.length;L++){var B=F[L].substring(1);switch(F[L].charAt(0)){case`+`:try{O[k++]=new S.Diff(E,decodeURI(B))}catch{throw Error(`Illegal escape in diff_fromDelta: `+B)}break;case`-`:case`=`:var H=parseInt(B,10);if(isNaN(H)||H<0)throw Error(`Invalid number in diff_fromDelta: `+B);var q=e.substring(j,j+=H);F[L].charAt(0)==`=`?O[k++]=new S.Diff(D,q):O[k++]=new S.Diff(w,q);break;default:if(F[L])throw Error(`Invalid diff operation in diff_fromDelta: `+F[L])}}if(j!=e.length)throw Error(`Delta length (`+j+`) does not equal source text length (`+e.length+`).`);return O},S.prototype.match_main=function(e,t,S){if(e==null||t==null||S==null)throw Error(`Null input. (match_main)`);return S=Math.max(0,Math.min(S,e.length)),e==t?0:e.length?e.substring(S,S+t.length)==t?S:this.match_bitap_(e,t,S):-1},S.prototype.match_bitap_=function(e,t,S){if(t.length>this.Match_MaxBits)throw Error(`Pattern too long for this browser.`);var w=this.match_alphabet_(t),E=this;function D(e,w){var D=e/t.length,O=Math.abs(S-w);return E.Match_Distance?D+O/E.Match_Distance:O?1:D}var O=this.Match_Threshold,k=e.indexOf(t,S);k!=-1&&(O=Math.min(D(0,k),O),k=e.lastIndexOf(t,S+t.length),k!=-1&&(O=Math.min(D(0,k),O)));var j=1<<t.length-1;k=-1;for(var F,L,B=t.length+e.length,H,q=0;q<t.length;q++){for(F=0,L=B;F<L;)D(q,S+L)<=O?F=L:B=L,L=Math.floor((B-F)/2+F);B=L;var J=Math.max(1,S-L+1),Y=Math.min(S+L,e.length)+t.length,ee=Array(Y+2);ee[Y+1]=(1<<q)-1;for(var te=Y;te>=J;te--){var ne=w[e.charAt(te-1)];if(q===0?ee[te]=(ee[te+1]<<1|1)&ne:ee[te]=(ee[te+1]<<1|1)&ne|(H[te+1]|H[te])<<1|1|H[te+1],ee[te]&j){var ae=D(q,te-1);if(ae<=O)if(O=ae,k=te-1,k>S)J=Math.max(1,2*S-k);else break}}if(D(q+1,S)>O)break;H=ee}return k},S.prototype.match_alphabet_=function(e){for(var t={},S=0;S<e.length;S++)t[e.charAt(S)]=0;for(var S=0;S<e.length;S++)t[e.charAt(S)]|=1<<e.length-S-1;return t},S.prototype.patch_addContext_=function(e,t){if(t.length!=0){if(e.start2===null)throw Error(`patch not initialized`);for(var w=t.substring(e.start2,e.start2+e.length1),E=0;t.indexOf(w)!=t.lastIndexOf(w)&&w.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)E+=this.Patch_Margin,w=t.substring(e.start2-E,e.start2+e.length1+E);E+=this.Patch_Margin;var O=t.substring(e.start2-E,e.start2);O&&e.diffs.unshift(new S.Diff(D,O));var k=t.substring(e.start2+e.length1,e.start2+e.length1+E);k&&e.diffs.push(new S.Diff(D,k)),e.start1-=O.length,e.start2-=O.length,e.length1+=O.length+k.length,e.length2+=O.length+k.length}},S.prototype.patch_make=function(e,t,O){var k,j;if(typeof e==`string`&&typeof t==`string`&&O===void 0)k=e,j=this.diff_main(k,t,!0),j.length>2&&(this.diff_cleanupSemantic(j),this.diff_cleanupEfficiency(j));else if(e&&typeof e==`object`&&t===void 0&&O===void 0)j=e,k=this.diff_text1(j);else if(typeof e==`string`&&t&&typeof t==`object`&&O===void 0)k=e,j=t;else if(typeof e==`string`&&typeof t==`string`&&O&&typeof O==`object`)k=e,j=O;else throw Error(`Unknown call format to patch_make.`);if(j.length===0)return[];for(var F=[],L=new S.patch_obj,B=0,H=0,q=0,J=k,Y=k,ee=0;ee<j.length;ee++){var te=j[ee][0],ne=j[ee][1];switch(!B&&te!==D&&(L.start1=H,L.start2=q),te){case E:L.diffs[B++]=j[ee],L.length2+=ne.length,Y=Y.substring(0,q)+ne+Y.substring(q);break;case w:L.length1+=ne.length,L.diffs[B++]=j[ee],Y=Y.substring(0,q)+Y.substring(q+ne.length);break;case D:ne.length<=2*this.Patch_Margin&&B&&j.length!=ee+1?(L.diffs[B++]=j[ee],L.length1+=ne.length,L.length2+=ne.length):ne.length>=2*this.Patch_Margin&&B&&(this.patch_addContext_(L,J),F.push(L),L=new S.patch_obj,B=0,J=Y,H=q);break}te!==E&&(H+=ne.length),te!==w&&(q+=ne.length)}return B&&(this.patch_addContext_(L,J),F.push(L)),F},S.prototype.patch_deepCopy=function(e){for(var t=[],w=0;w<e.length;w++){var E=e[w],D=new S.patch_obj;D.diffs=[];for(var O=0;O<E.diffs.length;O++)D.diffs[O]=new S.Diff(E.diffs[O][0],E.diffs[O][1]);D.start1=E.start1,D.start2=E.start2,D.length1=E.length1,D.length2=E.length2,t[w]=D}return t},S.prototype.patch_apply=function(e,t){if(e.length==0)return[t,[]];e=this.patch_deepCopy(e);var S=this.patch_addPadding(e);t=S+t+S,this.patch_splitMax(e);for(var O=0,k=[],j=0;j<e.length;j++){var F=e[j].start2+O,L=this.diff_text1(e[j].diffs),B,H=-1;if(L.length>this.Match_MaxBits?(B=this.match_main(t,L.substring(0,this.Match_MaxBits),F),B!=-1&&(H=this.match_main(t,L.substring(L.length-this.Match_MaxBits),F+L.length-this.Match_MaxBits),(H==-1||B>=H)&&(B=-1))):B=this.match_main(t,L,F),B==-1)k[j]=!1,O-=e[j].length2-e[j].length1;else{k[j]=!0,O=B-F;var q=H==-1?t.substring(B,B+L.length):t.substring(B,H+this.Match_MaxBits);if(L==q)t=t.substring(0,B)+this.diff_text2(e[j].diffs)+t.substring(B+L.length);else{var J=this.diff_main(L,q,!1);if(L.length>this.Match_MaxBits&&this.diff_levenshtein(J)/L.length>this.Patch_DeleteThreshold)k[j]=!1;else{this.diff_cleanupSemanticLossless(J);for(var Y=0,ee,te=0;te<e[j].diffs.length;te++){var ne=e[j].diffs[te];ne[0]!==D&&(ee=this.diff_xIndex(J,Y)),ne[0]===E?t=t.substring(0,B+ee)+ne[1]+t.substring(B+ee):ne[0]===w&&(t=t.substring(0,B+ee)+t.substring(B+this.diff_xIndex(J,Y+ne[1].length))),ne[0]!==w&&(Y+=ne[1].length)}}}}}return t=t.substring(S.length,t.length-S.length),[t,k]},S.prototype.patch_addPadding=function(e){for(var t=this.Patch_Margin,w=``,E=1;E<=t;E++)w+=String.fromCharCode(E);for(var E=0;E<e.length;E++)e[E].start1+=t,e[E].start2+=t;var O=e[0],k=O.diffs;if(k.length==0||k[0][0]!=D)k.unshift(new S.Diff(D,w)),O.start1-=t,O.start2-=t,O.length1+=t,O.length2+=t;else if(t>k[0][1].length){var j=t-k[0][1].length;k[0][1]=w.substring(k[0][1].length)+k[0][1],O.start1-=j,O.start2-=j,O.length1+=j,O.length2+=j}if(O=e[e.length-1],k=O.diffs,k.length==0||k[k.length-1][0]!=D)k.push(new S.Diff(D,w)),O.length1+=t,O.length2+=t;else if(t>k[k.length-1][1].length){var j=t-k[k.length-1][1].length;k[k.length-1][1]+=w.substring(0,j),O.length1+=j,O.length2+=j}return w},S.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,O=0;O<e.length;O++)if(!(e[O].length1<=t)){var k=e[O];e.splice(O--,1);for(var j=k.start1,F=k.start2,L=``;k.diffs.length!==0;){var B=new S.patch_obj,H=!0;for(B.start1=j-L.length,B.start2=F-L.length,L!==``&&(B.length1=B.length2=L.length,B.diffs.push(new S.Diff(D,L)));k.diffs.length!==0&&B.length1<t-this.Patch_Margin;){var q=k.diffs[0][0],J=k.diffs[0][1];q===E?(B.length2+=J.length,F+=J.length,B.diffs.push(k.diffs.shift()),H=!1):q===w&&B.diffs.length==1&&B.diffs[0][0]==D&&J.length>2*t?(B.length1+=J.length,j+=J.length,H=!1,B.diffs.push(new S.Diff(q,J)),k.diffs.shift()):(J=J.substring(0,t-B.length1-this.Patch_Margin),B.length1+=J.length,j+=J.length,q===D?(B.length2+=J.length,F+=J.length):H=!1,B.diffs.push(new S.Diff(q,J)),J==k.diffs[0][1]?k.diffs.shift():k.diffs[0][1]=k.diffs[0][1].substring(J.length))}L=this.diff_text2(B.diffs),L=L.substring(L.length-this.Patch_Margin);var Y=this.diff_text1(k.diffs).substring(0,this.Patch_Margin);Y!==``&&(B.length1+=Y.length,B.length2+=Y.length,B.diffs.length!==0&&B.diffs[B.diffs.length-1][0]===D?B.diffs[B.diffs.length-1][1]+=Y:B.diffs.push(new S.Diff(D,Y))),H||e.splice(++O,0,B)}}},S.prototype.patch_toText=function(e){for(var t=[],S=0;S<e.length;S++)t[S]=e[S];return t.join(``)},S.prototype.patch_fromText=function(e){var t=[];if(!e)return t;for(var O=e.split(`
|
|
@@ -2303,7 +2304,7 @@ Claude Code Desktop: \`preview_start("open-knowledge-ui")\`. Other hosts: open-U
|
|
|
2303
2304
|
Detailed conventions (wiki-link authoring, frontmatter, anti-patterns) live in the installed \`open-knowledge\` Agent Skill. If missing, run \`npx @inkeep/open-knowledge init\`.
|
|
2304
2305
|
|
|
2305
2306
|
**Escape hatch.** Native \`Read\`/\`Grep\`/\`Glob\` on \`.md\` is allowed when the project has no \`.ok/\`, when no OK MCP is registered, or right after a failed OK MCP call (then prefix with \`Open Knowledge MCP unavailable:\`). Non-markdown: native tools always.
|
|
2306
|
-
`}const loggerContext=new AsyncLocalStorage;var McpLogger=class e{sessionId;corrId;component;constructor(e=`mcp`,t){this.sessionId=t??randomUUID().slice(0,12),this.corrId=randomUUID().slice(0,8),this.component=e}info(e,t={}){this.emit(`info`,e,t)}warn(e,t={}){this.emit(`warn`,e,t)}error(e,t,S={}){let w=t?{error:t instanceof Error?t.message:String(t),...S}:S;this.emit(`error`,e,w)}debug(e,t={}){(process.env.MCP_DEBUG===`1`||process.env.DEBUG?.includes(`mcp`))&&this.emit(`debug`,e,t)}child(t){return new e(t??this.component,this.sessionId)}asCallback(){return e=>this.info(e)}emit(e,t,S){let w={ts:new Date().toISOString(),level:e,sessionId:this.sessionId,corrId:this.corrId,component:this.component,msg:t,...S},E=`${JSON.stringify(w)}\n`;process.stderr.write(E);let D=process.env.OK_LOG_FILE;if(D)try{appendFileSync(D,E)}catch(e){console.warn(`[mcp-logger] Failed to write to OK_LOG_FILE: ${e instanceof Error?e.message:e}`)}}};function runWithMcpLogger(e,t){return loggerContext.run(e,t)}function getCurrentMcpLogger(){return loggerContext.getStore()}const REDACTED_STRING_KEYS=new Set([`find`,`markdown`,`replace`]),COMMON_ARRAY_KEYS=[`backlinks`,`deadLinks`,`documents`,`enrichedPaths`,`entries`,`forwardLinks`,`hints`,`hubs`,`orphans`,`results`],COMMON_SCALAR_KEYS=[`checkpointRef`,`cwd`,`fileCount`,`matchCount`,`ok`,`query`,`stdoutTruncated`,`truncated`];function isPlainObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function isToolExtraLike(e){return isPlainObject(e)&&`requestId`in e}function summarizeStringForLog(e,t){if(REDACTED_STRING_KEYS.has(e))return{redacted:!0,type:`string`,length:t.length,lines:t.length===0?0:t.split(`
|
|
2307
|
+
`}function installPrettyZodErrors(e){let t=e;if(t.__prettyZodErrorsInstalled===!0)return;let S=t.validateToolInput;if(typeof S!=`function`){console.warn(`[pretty-zod-errors] McpServer.validateToolInput not found — SDK internals may have changed. Falling back to default error formatting.`);return}t.validateToolInput=async function(e,t,w){if(!e.inputSchema||!isZodSchema(e.inputSchema))return S.call(this,e,t,w);let E=await e.inputSchema.safeParseAsync(t);if(E.success)return E.data;let D=prettifyError(E.error);throw new McpError(ErrorCode.InvalidParams,`Input validation error: Invalid arguments for tool ${w}:\n${D}`)},t.__prettyZodErrorsInstalled=!0}function isZodSchema(e){return typeof e!=`object`||!e?!1:typeof e.safeParseAsync==`function`}const loggerContext=new AsyncLocalStorage;var McpLogger=class e{sessionId;corrId;component;constructor(e=`mcp`,t){this.sessionId=t??randomUUID().slice(0,12),this.corrId=randomUUID().slice(0,8),this.component=e}info(e,t={}){this.emit(`info`,e,t)}warn(e,t={}){this.emit(`warn`,e,t)}error(e,t,S={}){let w=t?{error:t instanceof Error?t.message:String(t),...S}:S;this.emit(`error`,e,w)}debug(e,t={}){(process.env.MCP_DEBUG===`1`||process.env.DEBUG?.includes(`mcp`))&&this.emit(`debug`,e,t)}child(t){return new e(t??this.component,this.sessionId)}asCallback(){return e=>this.info(e)}emit(e,t,S){let w={ts:new Date().toISOString(),level:e,sessionId:this.sessionId,corrId:this.corrId,component:this.component,msg:t,...S},E=`${JSON.stringify(w)}\n`;process.stderr.write(E);let D=process.env.OK_LOG_FILE;if(D)try{appendFileSync(D,E)}catch(e){console.warn(`[mcp-logger] Failed to write to OK_LOG_FILE: ${e instanceof Error?e.message:e}`)}}};function runWithMcpLogger(e,t){return loggerContext.run(e,t)}function getCurrentMcpLogger(){return loggerContext.getStore()}const REDACTED_STRING_KEYS=new Set([`find`,`markdown`,`replace`]),COMMON_ARRAY_KEYS=[`backlinks`,`deadLinks`,`documents`,`enrichedPaths`,`entries`,`forwardLinks`,`hints`,`hubs`,`orphans`,`results`],COMMON_SCALAR_KEYS=[`checkpointRef`,`cwd`,`fileCount`,`matchCount`,`ok`,`query`,`stdoutTruncated`,`truncated`];function isPlainObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function isToolExtraLike(e){return isPlainObject(e)&&`requestId`in e}function summarizeStringForLog(e,t){if(REDACTED_STRING_KEYS.has(e))return{redacted:!0,type:`string`,length:t.length,lines:t.length===0?0:t.split(`
|
|
2307
2308
|
`).length};let S=e===`command`?240:120;return t.length<=S?t:{type:`string`,length:t.length,preview:`${t.slice(0,S)}...`}}function summarizeArgValue(e,t){if(t===null)return null;if(typeof t==`string`)return summarizeStringForLog(e,t);if(typeof t==`number`||typeof t==`boolean`)return t;if(Array.isArray(t))return{type:`array`,length:t.length};if(isPlainObject(t)){let e=Object.keys(t).sort();return{type:`object`,keyCount:e.length,keys:e.slice(0,12)}}if(t!==void 0)return{type:typeof t}}function summarizeArgsForLog(e,t){return isPlainObject(t)?Object.fromEntries(Object.entries(t).map(([e,t])=>[e,summarizeArgValue(e,t)])):summarizeArgValue(e,t)}function summarizeStructuredContentForLog(e){let t={structuredKeys:Object.keys(e).sort()};for(let S of COMMON_SCALAR_KEYS)S in e&&(t[S]=e[S]);for(let S of COMMON_ARRAY_KEYS){let w=e[S];Array.isArray(w)&&(t[`${S}Count`]=w.length)}return`previewUrl`in e&&(t.previewUrl=e.previewUrl??null),`previewUrlSource`in e&&(t.previewUrlSource=e.previewUrlSource),typeof e.stdout==`string`&&(t.stdoutChars=e.stdout.length),Array.isArray(e.warnings)&&(t.warningsCount=e.warnings.length),isPlainObject(e.warning)&&(t.warning=!0,`previewUrl`in e.warning&&(t.warningPreviewUrl=e.warning.previewUrl??null)),isPlainObject(e.ui)&&(t.uiBaseUrl=typeof e.ui.baseUrl==`string`||e.ui.baseUrl===null?e.ui.baseUrl:void 0,t.uiPort=typeof e.ui.port==`number`||e.ui.port===null?e.ui.port:void 0),t}function summarizeToolResultForLog(e){if(!isPlainObject(e))return{resultType:typeof e};let t={isError:e.isError===!0};return Array.isArray(e.content)&&(t.contentItems=e.content.length,t.contentTextChars=e.content.reduce((e,t)=>isPlainObject(t)&&typeof t.text==`string`?e+t.text.length:e,0)),isPlainObject(e.structuredContent)&&Object.assign(t,summarizeStructuredContentForLog(e.structuredContent)),t}function summarizeIdentityForLog(e){return{connectionId:e.connectionId.slice(0,8),displayName:e.displayName,...e.clientInfo?.name?{clientName:e.clientInfo.name}:{}}}function splitInvocationArgs(e){let t=e.at(-1);return isToolExtraLike(t)?{toolArgs:e.length>1?e[0]:void 0,extra:t}:{toolArgs:e[0],extra:void 0}}function wrapToolHandlerForLogging(e,t,S){let w=S.logger;return w?async(...E)=>{let D=w.child(),O=Date.now(),{toolArgs:k,extra:j}=splitInvocationArgs(E);D.info(`tool start`,{tool:e,...j?.requestId===void 0?{}:{requestId:j.requestId},...j?.sessionId?{transportSessionId:j.sessionId}:{},...S.identityRef?.current?{agent:summarizeIdentityForLog(S.identityRef.current)}:{},...k===void 0?{}:{args:summarizeArgsForLog(e,k)}});try{let S=await runWithMcpLogger(D,async()=>await t(...E));return D.info(`tool finish`,{tool:e,...j?.requestId===void 0?{}:{requestId:j.requestId},durationMs:Date.now()-O,result:summarizeToolResultForLog(S)}),S}catch(t){throw D.error(`tool error`,t,{tool:e,...j?.requestId===void 0?{}:{requestId:j.requestId},durationMs:Date.now()-O}),t}}:t}function createLoggedServer(e,t){if(!t.logger)return e;let S=e.tool.bind(e),w=e.registerTool,E=typeof w==`function`?w.bind(e):void 0,D=Object.create(e);return D.tool=((...e)=>{let w=String(e[0]),E=e.at(-1);if(typeof E!=`function`)return S(...e);let D=[...e];return D[D.length-1]=wrapToolHandlerForLogging(w,E,t),S(...D)}),E&&(D.registerTool=((e,S,w)=>typeof w==`function`?E(e,S,wrapToolHandlerForLogging(e,w,t)):E(e,S,w))),D}function buildBody$2(e,t){return`Promote existing research on this topic into a canonical article inside the project content directory. **Canonical, not provisional** — the output is the source of truth for future agents.
|
|
2308
2309
|
|
|
2309
2310
|
Topic: ${e}
|
|
@@ -3249,7 +3250,7 @@ In headless mode, write the recap into the research article's "Further reading"
|
|
|
3249
3250
|
`)}\n${renderInventoryFooter()}`;function register$1(e,t){e.tool(`write_document`,DESCRIPTION$1,{docName:string$2().describe(`Document name to write to`),markdown:string$2().optional().describe("Markdown content to write. Optional when `template` is set — the template body is used."),template:string$2().min(1).optional().describe(`Template name resolved against parent folder's templates_available (leaf → root walk-up; closest-wins on collision). See list_documents({ dir, depth: 1 }) to inspect the menu.`),position:_enum([`append`,`prepend`,`replace`]).describe(`Where to insert the content`),summary:summaryArgSchema,cwd:string$2().optional().describe(ROUTED_CWD_DESCRIPTION)},async e=>{let S=await resolveProjectServerContext(t.resolveCwd,t.config,t.serverUrl,e.cwd);if(!S.ok)return textResult(`Error: ${S.error}`,!0);let{cwd:w,url:E}=S;if(!E)return textResult(HOCUSPOCUS_NOT_RUNNING_ERROR,!0);let D=normalizeDocName(e.docName);if(!D.ok)return textResult(D.error,!0);let O=t.identityRef?.current;if(e.template===void 0&&e.markdown===void 0)return textResult("Error: either `markdown` or `template` must be provided. Omitting both would write empty content.",!0);if(e.template!==void 0&&e.markdown!==void 0)return textResult("Error: TEMPLATE_AND_MARKDOWN_BOTH_SET — `template` and `markdown` are mutually exclusive. Pass one. The template body becomes the new doc verbatim; fill placeholders via subsequent `edit_document` calls.",!0);let k=e.markdown??``,j=e.position;if(e.template!==void 0){let t=parentFolderOf(D.docName),S=resolveTemplatesAvailable(w,t,{depth:1}),E=S.find(t=>t.name===e.template);if(!E)return textResult(`Error: template "${e.template}" not found for folder "${t||`.`}". Available: ${S.length===0?`(none)`:S.map(e=>`${e.name} [${e.scope}]`).join(`, `)}. Templates are resolved by walk-up; check list_documents({ dir, depth: 1 }) at the parent folder to see the menu.`,!0);let F;try{F=readFileSync(resolve(w,E.path),`utf-8`)}catch(e){return textResult(`Error: failed to read template at ${E.path}: ${e.message}`,!0)}k=applySubstitution(F,{date:todayIsoUtc(),user:O?.displayName??``}),j=`replace`}let F=await httpPost(E,`/api/agent-write-md`,{docName:D.docName,markdown:k,position:j,...e.summary===void 0?{}:{summary:e.summary},...O?{agentId:O.connectionId,agentName:O.displayName,clientName:O.clientInfo?.name,colorSeed:O.colorSeed}:{}});if(!F.ok)return textResult(`Error: ${F.error}`,!0);let L=resolveLockDir(w),B=resolvePreviewUrl(D.docName,{lockDir:L}),H=typeof F.subscriberCount==`number`?F.subscriberCount:void 0,q=(typeof F.systemSubscriberCount==`number`?F.systemSubscriberCount:void 0)===0,J=H===0,Y=Array.isArray(F.hints)?F.hints:void 0,ee=F.summary&&typeof F.summary==`object`?F.summary:void 0,te=typeof ee?.hint==`string`?ee.hint:void 0,ne=[e.template===void 0?`Written successfully (${j}).`:`Written successfully (instantiated from template "${e.template}").`];if(B&&ne.push(`Preview: ${B.url}`),q&&ne.push(B?`Open ${B.url} in your preview browser.`:`No preview attached. Start the UI.`),te&&ne.push(te),Y)for(let e of Y)e.message&&ne.push(e.message);let ae=ne.join(`
|
|
3250
3251
|
`);if(!B&&!q&&!J&&!Y&&!ee)return textResult(ae);let oe={};return B&&(oe.previewUrl=B.url,oe.previewUrlSource=B.source),q&&(oe.warning={message:`Open the previewUrl in your preview browser.`,action:`attach-preview-once`,previewUrl:B?.url??null}),Y&&(oe.hints=Y),ee&&(oe.summary=ee),textPlusStructured(ae,oe)})}const DESCRIPTION=[`[Operates on disk; no running OK server required] Create or update a template.`,``,"Templates are markdown starter shapes that agents pick from when creating a new doc — `write_document({ template: <name> })` resolves the name against the folder cascade and instantiates the body + frontmatter.",``,`**Targets.** A template can live in one of two locations:`,'- `target: "project"` (default) — folder-scoped within the current project at `<folder>/.ok/templates/<name>.md`. The `folder` argument selects which project folder owns it (project-wide via `folder: ""`, or scoped to a subfolder).','- `target: "user"` — user-global at `~/.ok/templates/<name>.md`, available across every OK project the same user opens. The `folder` argument is ignored when `target` is `"user"` — user templates live in a single flat location.',``,"**`title` is required** in the frontmatter — it is the menu surface agents pick from. Missing or empty title returns `TEMPLATE_TITLE_REQUIRED`. `description` is recommended (soft warning when absent) — it disambiguates similarly-named templates.",``,"**Substitution allowlist.** The body MAY contain `{{date}}` (today, ISO-8601) and `{{user}}` (calling principal display name). Any other `{{...}}` token is rejected at write time with `TEMPLATE_UNKNOWN_VARIABLE`. Substitution happens at instantiation time (when `write_document({ template })` materializes the doc), not at template-write time — templates on disk show the raw `{{date}}` token.",``,`**Parameters:**`,'- `folder` — Project-root-relative folder (e.g. `"meetings"`, `"meetings/prep-notes"`). Empty / `.` means project root. Ignored when `target` is `"user"`.',"- `name` — Template filename without `.md`. Letters, digits, `_`, `-` only.","- `body` — Markdown body. May use `{{date}}` / `{{user}}` substitution tokens. Other placeholder text in `{shape}` form (e.g. `{Meeting Title}`) is LITERAL — agents fill it in via subsequent `edit_document` calls.","- `frontmatter` — `{title (required), description?, tags?: string[]}` for the template menu.",'- `target` (optional) — `"project"` (default) or `"user"`. Selects where the template lives.'].join(`
|
|
3251
3252
|
`),InputSchema={folder:string$2().describe('Project-root-relative folder. Empty / `.` means project root. Ignored when `target: "user"`.'),name:string$2().min(1).regex(/^[A-Za-z0-9_-]+$/,"Template name must use letters, digits, `_`, or `-` only (no slashes, dots, or spaces).").describe("Template filename without `.md` extension."),body:string$2().describe(`Markdown body for the template.`),frontmatter:object$1({title:string$2().min(1,"Template `title` is required — it is the menu surface agents pick from.").describe(`Required. The menu surface agents pick from. Empty / missing returns TEMPLATE_TITLE_REQUIRED.`),description:string$2().optional().describe(`Recommended. Disambiguates similarly-named templates. Soft warning when absent.`),tags:array(string$2()).optional().describe(`Optional. Concatenated with cascade tags at instantiation time.`)}).describe("Template menu metadata. `title` MUST be present (hard error if missing). `description` SHOULD be present (warning)."),target:_enum([`project`,`user`]).optional().describe('Where the template lives. `"project"` (default) writes to `<folder>/.ok/templates/`; `"user"` writes to `~/.ok/templates/` (folder ignored).'),cwd:string$2().optional().describe(ROUTED_CWD_DESCRIPTION)},OutputSchema=outputSchemaWithText({result:union([object$1({ok:literal(!0),path:string$2(),created:boolean$1(),warnings:array(string$2())}),object$1({ok:literal(!1),error:object$1({code:string$2(),message:string$2()})})])});function register(e,t){e.registerTool(`write_template`,{description:DESCRIPTION,inputSchema:InputSchema,outputSchema:OutputSchema,annotations:{readOnlyHint:!1,idempotentHint:!0,destructiveHint:!1}},async e=>{let S=await resolveProjectConfigContext(t.resolveCwd,t.config,e.cwd);if(!S.ok)return{isError:!0,content:[{type:`text`,text:`Error: ${S.error}`}]};let{cwd:w}=S,E={projectDir:w,folder:e.folder,name:e.name,body:e.body,frontmatter:e.frontmatter};e.target!==void 0&&(E.target=e.target);let D=applyTemplateWrite(E);if(!D.ok)return{isError:!0,structuredContent:{result:D},content:[{type:`text`,text:`${D.error.code}: ${D.error.message}`}]};let O=[`${D.created?`Created`:`Updated`} template at ${D.path}`];if(D.warnings.length>0){O.push(``,`Warnings:`);for(let e of D.warnings)O.push(` - ${e}`)}return textPlusStructured(O.join(`
|
|
3252
|
-
`),{result:D})})}function registerAllTools(e,t){let S=t.logger,w=createLoggedServer(e,{logger:t.logger,identityRef:t.identityRef}),E=e=>async w=>{try{let E=await t.resolveCwd(w);return(getCurrentMcpLogger()??S)?.debug(`tool cwd resolved`,{tool:e,cwd:E,...w?{explicit:w}:{}}),E}catch(t){throw(getCurrentMcpLogger()??S)?.warn(`tool call failed`,{tool:e,error:t instanceof Error?t.message:String(t),...w?{explicit:w}:{}}),t}};register$22(w,{resolveCwd:E(`exec`),serverUrl:t.serverUrl,config:t.config}),register$12(w,{config:t.config,resolveCwd:E(`ingest`)}),register$7(w,{config:t.config,resolveCwd:E(`research`)}),register$27(w,{config:t.config,resolveCwd:E(`consolidate`)}),register$24(w,{config:t.config,resolveCwd:E(`discover`)}),register$10(w,{resolveCwd:E(`read_document`),config:t.config,serverUrl:t.serverUrl}),register$4(w,{resolveCwd:E(`search`),config:t.config,serverUrl:t.serverUrl}),register$13(w,{resolveCwd:E(`grep`),config:t.config,serverUrl:t.serverUrl}),register$2(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`suggest_links`)}),register$1(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`write_document`),identityRef:t.identityRef}),register$23(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`edit_document`),identityRef:t.identityRef}),register$26(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`delete_document`),identityRef:t.identityRef}),register$9(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`rename_document`),identityRef:t.identityRef}),register$8(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`rename_folder`),identityRef:t.identityRef}),register$16(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_history`)}),register$5(w,t.config,t.serverUrl,E(`save_version`),t.identityRef),register$6(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`rollback_to_version`),identityRef:t.identityRef}),register$11(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`list_documents`)}),register$21(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_backlinks`)}),register$20(w,{resolveCwd:E(`get_components`),config:t.config}),register$17(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_forward_links`)}),register$14(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_orphans`)}),register$15(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_hubs`)}),register$18(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_dead_links`)}),register$19(w,{config:t.config,resolveCwd:E(`get_config`)}),register$3(w,{config:t.config,resolveCwd:E(`set_folder_rule`)}),register(w,{config:t.config,resolveCwd:E(`write_template`)}),register$25(w,{config:t.config,resolveCwd:E(`delete_template`)})}function firstHeader(e){return Array.isArray(e)?e[0]:e}function writePlain(e,t,S){e.writableEnded||(e.statusCode=t,e.setHeader(`Content-Type`,`text/plain; charset=utf-8`),e.end(S))}function createSessionServer(e,t,S){let w=e.config,E=new McpServer({name:MCP_SERVER_NAME,version:RUNTIME_VERSION},{instructions:buildInstructions(w.content)}),D=S??randomUUID(),O={current:{connectionId:D,displayName:D,colorSeed:D}};E.server.oninitialized=()=>{let e=E.server.getClientVersion(),t=sanitizeClientName(e?.name,D);O.current={connectionId:D,clientInfo:e?{name:t,version:e.version}:void 0,displayName:t,colorSeed:t}};let k=e.projectDir??e.contentDir;return registerAllTools(E,{serverUrl:async()=>e.getServerUrl(),resolveCwd:async e=>{if(e===void 0)return k;let t=resolveWithinRoot(k,e);if(!t.ok)throw Error(`cwd "${e}" is not within the configured project root: ${t.reason}`);return t.abs},config:w,identityRef:O}),{server:E,transport:t}}function createMcpHttpHandler(e){let t=new Map,S=e.sessionTtlMs??1800*1e3,w=e.maxSessions??100;async function E(S,w){let E=t.get(S);if(!E)return;t.delete(S),E.ttlTimer!==void 0&&clearTimeout(E.ttlTimer);let D=await Promise.allSettled([E.server.close(),E.transport.close()]);for(let t of D)t.status===`rejected`&&e.log?.warn?.({err:t.reason,sessionId:S,reason:w},`MCP HTTP session close failed`);e.log?.info?.({sessionId:S,reason:w},`MCP HTTP session closed`)}function D(t,w){w.ttlTimer!==void 0&&clearTimeout(w.ttlTimer),w.ttlTimer=setTimeout(()=>{E(t,`ttl-expired`).catch(S=>{e.log?.warn?.({err:S,sessionId:t},`MCP HTTP session TTL cleanup failed`)})},S),w.ttlTimer.unref?.()}return{async handle(S,O){let k=firstHeader(S.headers[`mcp-session-id`]);if(k){let e=t.get(k);if(!e){writePlain(O,404,`MCP session not found`);return}D(k,e),await e.transport.handleRequest(S,O);return}if(S.method!==`POST`){writePlain(O,400,`Missing MCP session. Initialize with POST /mcp first.`);return}if(t.size>=w){e.log?.warn?.({activeSessions:t.size,maxSessions:w},`MCP HTTP session cap reached`),writePlain(O,503,`Too many active MCP sessions`);return}let j=firstHeader(S.headers[MCP_CONNECTION_ID_HEADER]),F=validateAgentId(j)??void 0;j!==void 0&&F===void 0&&e.log?.warn?.({headerLength:j.length},`MCP HTTP forwarded connectionId header failed validation; falling back to randomUUID`);let L=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),enableJsonResponse:!0,onsessioninitialized:async S=>{try{let w=createSessionServer(e,L,F);await w.server.connect(L),t.set(S,w),D(S,w),e.log?.info?.({sessionId:S},`MCP HTTP session initialized`)}catch(w){throw t.delete(S),e.log?.error?.({err:w,sessionId:S},`MCP HTTP session initialization failed`),w}}});L.onerror=t=>{e.log?.warn?.({err:t},`MCP HTTP transport error`)},L.onclose=()=>{let t=L.sessionId;if(!t){e.log?.info?.({sessionId:t,reason:`transport-closed`},`MCP HTTP session closed`);return}E(t,`transport-closed`).catch(S=>{e.log?.warn?.({err:S,sessionId:t},`MCP HTTP transport-close cleanup failed`)})},await L.handleRequest(S,O)},async close(){let e=[...t.entries()];await Promise.allSettled(e.map(([e])=>E(e,`handler-close`)))}}}const DEFAULT_KEEPALIVE_GRACE_MS=1e4,MAX_COLLAB_MESSAGE_BYTES=1024*1024,MCP_CORS_HEADERS={"Access-Control-Allow-Methods":`GET, POST, DELETE, OPTIONS`,"Access-Control-Allow-Headers":`Content-Type, Authorization, traceparent, tracestate, baggage, mcp-session-id, mcp-protocol-version`,"Access-Control-Max-Age":`86400`};function mountMcpAndApi(e){let{httpServer:t,hocuspocus:S,mcpHttpHandler:w,log:E,sessionManager:D,agentFocusBroadcaster:O,agentPresenceBroadcaster:k,contentAssetMiddleware:j}=e,F=e.keepaliveGraceMs??DEFAULT_KEEPALIVE_GRACE_MS,L=new import_websocket_server$1.default({noServer:!0,maxPayload:MAX_COLLAB_MESSAGE_BYTES});L.on(`error`,e=>{E.error({err:e},`WebSocketServer error`)});let B=new Map,H=new Set,q=!1;return t.on(`request`,(e,t)=>{let D=e.url?.split(`?`)[0];if(w!==void 0&&D===`/mcp`){let S=e.headers.origin,D=Array.isArray(e.headers[`mcp-session-id`])?e.headers[`mcp-session-id`][0]:e.headers[`mcp-session-id`];if(!isLoopbackAddress(e.socket.remoteAddress)){errorResponse(t,403,`urn:ok:error:loopback-required`,`Loopback access required.`,{handler:`mcp`});return}if(!isAllowedWorkspaceHostHeader(e.headers.host)){errorResponse(t,403,`urn:ok:error:host-not-allowed`,`Host header not allowed.`,{handler:`mcp`});return}if(S!==void 0&&!isAllowedApiOrigin(S)){errorResponse(t,403,`urn:ok:error:invalid-origin`,`Origin not allowed.`,{handler:`mcp`});return}S!==void 0&&(t.setHeader(`Access-Control-Allow-Origin`,S),t.setHeader(`Vary`,`Origin`));for(let[e,S]of Object.entries(MCP_CORS_HEADERS))t.setHeader(e,S);if(e.method===`OPTIONS`){t.writeHead(204),t.end();return}w.handle(e,t).catch(e=>{E.error({err:e,sessionId:D},`Unhandled MCP HTTP error`),!t.writableEnded&&!t.headersSent?errorResponse(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`mcp`,cause:e}):t.writableEnded||t.end()});return}if(D?.startsWith(`/api/`)){S.hooks(`onRequest`,{request:e,response:t}).then(()=>{t.writableEnded||t.headersSent||errorResponse(t,404,`urn:ok:error:not-found`,`API endpoint not found.`,{handler:`mcp-mount`,detail:`No handler for ${e.method??`GET`} ${D}`})}).catch(e=>{E.error({err:e},`Unhandled onRequest error`),!t.writableEnded&&!t.headersSent?errorResponse(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`mcp-mount`,cause:e}):t.writableEnded||t.end()});return}if(j!==void 0){try{j(e,t,()=>{t.writableEnded||t.headersSent||errorResponse(t,404,`urn:ok:error:not-found`,`Not found.`,{handler:`mcp-mount`,detail:`No handler for ${D??`/`}`})})}catch(e){E.error({err:e},`Unhandled content-asset middleware error`),!t.writableEnded&&!t.headersSent?errorResponse(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`mcp-mount`,cause:e}):t.writableEnded||t.end()}return}errorResponse(t,404,`urn:ok:error:not-found`,`Not found.`,{handler:`mcp-mount`,detail:`The React UI is served by \`ok ui\` (run \`ok ui\` and check \`ui.lock.port\`). No handler for ${D??`/`}`})}),t.on(`upgrade`,(e,t,w)=>{if(e.url?.startsWith(`/collab/keepalive`)){if(!isLoopbackAddress(e.socket.remoteAddress)||!isAllowedWorkspaceHostHeader(e.headers.host)){t.destroy();return}t.on(`error`,e=>{handleCollabSocketError(e)||E.error({err:e},`MCP keepalive socket error`)}),L.handleUpgrade(e,t,w,t=>{let S=parseKeepaliveConnectionId(e.url);if(S){let e=B.get(S);e!==void 0&&(clearTimeout(e),B.delete(S),E.info({connectionId:S},`[keepalive] reconnect during grace — timer cancelled`))}if(S&&k){let t=parseKeepaliveIdentity(e.url);if(t)try{let e=iconFromClientName(t.clientName),w=AGENT_ICON_COLORS[e]??colorFromSeed(t.colorSeed);k.setPresence(toBroadcasterKey(S),{displayName:t.displayName,icon:e,color:w,currentDoc:`(connected)`,mode:`idle`,ts:Date.now()})}catch(e){E.error({err:e,connectionId:S},`[keepalive] presence bootstrap failed`)}}let w=setInterval(()=>{try{t.ping()}catch{}},3e4);w.unref?.();let j=S?setInterval(()=>{k?.bumpPresenceTs(toBroadcasterKey(S))},3e3):null;j?.unref?.(),t.on(`close`,()=>{if(clearInterval(w),j!==null&&clearInterval(j),!S)return;let e=setTimeout(()=>{if(B.delete(S),q)return;let e=(async()=>{E.info({connectionId:S},`[keepalive] grace expired — cleaning up sessions`);try{await D?.closeAllForAgent(S)}catch(e){E.error({err:e,connectionId:S},`[keepalive] closeAllForAgent failed`)}try{O?.clearFocus(S)}catch(e){E.error({err:e,connectionId:S},`[keepalive] clearFocus failed`)}try{k?.clearPresence(toBroadcasterKey(S))}catch(e){E.error({err:e,connectionId:S},`[keepalive] clearPresence failed`)}})();H.add(e),e.finally(()=>H.delete(e))},F);e.unref?.(),B.set(S,e),E.info({connectionId:S,graceMs:F},`[keepalive] disconnected — grace timer started`)}),t.on(`error`,e=>{handleCollabSocketError(e)||E.error({err:e},`MCP keepalive WS error`),t.terminate()})});return}if(e.url?.startsWith(`/collab`)){t.on(`error`,e=>{handleCollabSocketError(e)||E.error({err:e},`Upgrade socket error`)}),L.handleUpgrade(e,t,w,t=>{let w=S.handleConnection(t,e),D=!1;t.on(`message`,e=>{if(D)return;let S=e.byteLength;if(S>MAX_COLLAB_MESSAGE_BYTES){D=!0,incrementCollabMessageTooLarge(),E.warn({event:`collab-message-too-large`,bytes:S,limit:MAX_COLLAB_MESSAGE_BYTES},`Collab WebSocket message rejected before Yjs processing`),t.close(1009,`Message Too Big`);return}w.handleMessage(new Uint8Array(e))}),t.on(`close`,(e,t)=>{w.handleClose({code:e,reason:t.toString()})}),t.on(`error`,e=>{if(e.code===`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`){incrementCollabMessageTooLarge(),E.warn({event:`collab-message-too-large`,limit:MAX_COLLAB_MESSAGE_BYTES},`Collab WebSocket frame rejected by ws maxPayload before Yjs processing`),t.terminate();return}handleCollabSocketError(e)||E.error({err:e},`WebSocket error`),t.terminate()})});return}t.destroy()}),{wss:L,shutdown:async()=>{if(!q){q=!0;for(let e of B.values())clearTimeout(e);B.clear(),H.size>0&&await Promise.allSettled([...H])}}}}function parseKeepaliveConnectionId(e){if(!e)return null;try{return validateAgentId(new URL(e,`http://localhost`).searchParams.get(`connectionId`))}catch{return null}}const MAX_KEEPALIVE_IDENTITY_LEN=256;function sanitizeIdentityField(e){return e===null||e.length===0||e.length>MAX_KEEPALIVE_IDENTITY_LEN||/[-]/.test(e)?null:e}function parseKeepaliveIdentity(e){if(!e)return null;try{let t=new URL(e,`http://localhost`),S=sanitizeIdentityField(t.searchParams.get(`displayName`)),w=sanitizeIdentityField(t.searchParams.get(`clientName`)),E=sanitizeIdentityField(t.searchParams.get(`colorSeed`));return S===null||w===null||E===null?null:{displayName:S,clientName:w,colorSeed:E}}catch{return null}}const MISSING_OK_CONFIG_MESSAGE=`Open Knowledge config not found at .ok/config.yml. Run ok init to scaffold OK in this directory.`;var MissingOkConfigError=class extends Error{kind;projectDir;constructor(e,t,S){super(MISSING_OK_CONFIG_MESSAGE,S),this.name=`MissingOkConfigError`,this.kind=e,this.projectDir=t}};async function startConfigFileWatcher(e,t){let S=getLogger(`config-file-watcher`),{watch:w}=await import(`./chokidar-CxU7f6JW.mjs`),E=dirname(e);try{tracedMkdirSync(E,{recursive:!0})}catch(e){e.code!==`EEXIST`&&S.warn({err:e,watchDir:E},`failed to create watch directory; watcher may be inert`)}let D=w(E,{ignoreInitial:!0,depth:0,usePolling:!0,interval:200,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignored:t=>t!==E&&t!==e});await new Promise(e=>{D.once(`ready`,e)});let O=null;try{O=readFileSync(e,`utf-8`)}catch{}let k=(w,E=!0)=>{if(w!==e)return;let D;try{D=readFileSync(w,`utf-8`)}catch(e){if(e.code===`ENOENT`){E&&S.debug({path:w},`config file disappeared between event and read; dropping`);return}S.warn({err:e,path:w},`config file read failed; dropping event`);return}if(D!==O){O=D;try{t(D)}catch(e){S.warn({err:e,path:w},`config file change handler threw`)}}},j=e=>k(e);D.on(`add`,j),D.on(`change`,j),D.on(`unlink`,t=>{t===e&&S.debug({path:t},`config file unlinked; Y.Text retained at current state`)}),D.on(`error`,t=>{S.warn({err:t,watchDir:E,absPath:e},`[config-file-watcher] chokidar error while watching ${e}`)});let F=0,L=setInterval(()=>{F++,k(e,!1),F>=20&&clearInterval(L)},500);L.unref?.();let B=!1;return async()=>{B||(B=!0,clearInterval(L),await D.close())}}async function startMultiPathConfigFileWatcher(e,t){if(e.length===0)throw Error(`startMultiPathConfigFileWatcher requires at least one absolute path`);let S=getLogger(`config-file-watcher`),{watch:w}=await import(`./chokidar-CxU7f6JW.mjs`),E=new Set(e),D=Array.from(new Set(Array.from(E,e=>dirname(e))));for(let e of D)try{tracedMkdirSync(e,{recursive:!0})}catch(t){t.code!==`EEXIST`&&S.warn({err:t,dir:e},`failed to create watch directory; watcher may be inert`)}let O=w(D,{ignoreInitial:!0,depth:0,usePolling:!0,interval:200,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignored:e=>!E.has(e)&&!D.includes(e)});await new Promise(e=>{O.once(`ready`,e)});let k=new Map;for(let e of E)try{k.set(e,readFileSync(e,`utf-8`))}catch{k.set(e,null)}let j=(e,w=!0)=>{if(!E.has(e))return;let D;try{D=readFileSync(e,`utf-8`)}catch(t){if(t.code===`ENOENT`){w&&S.debug({path:e},`config file disappeared between event and read; dropping`);return}S.warn({err:t,path:e},`config file read failed; dropping event`);return}if(D!==k.get(e)){k.set(e,D);try{t(e,D)}catch(t){S.warn({err:t,path:e},`config file change handler threw`)}}},F=e=>j(e);O.on(`add`,F),O.on(`change`,F),O.on(`unlink`,e=>{E.has(e)&&S.debug({path:e},`config file unlinked; downstream state retained`)}),O.on(`error`,e=>{S.warn({err:e,watchDirs:D,paths:Array.from(E)},`[config-file-watcher] chokidar error in multi-path watcher`)});let L=0,B=setInterval(()=>{L++;for(let e of E)j(e,!1);L>=20&&clearInterval(B)},500);B.unref?.();let H=!1;return async()=>{H||(H=!0,clearInterval(B),await O.close())}}const QUIET_WINDOW_MS=100,BATCH_TIMEOUT_MS=3e4,WATCHED_FILES=new Set([`HEAD`,`MERGE_HEAD`,`ORIG_HEAD`,`index.lock`]);function readHeadSha(e){try{let t=readFileSync(resolve(e,`HEAD`),`utf-8`).trim();if(t.startsWith(`ref: `)){let S=resolve(e,t.slice(5));try{return readFileSync(S,`utf-8`).trim()}catch{try{let S=readFileSync(resolve(e,`packed-refs`),`utf-8`),w=t.slice(5),E=S.split(`
|
|
3253
|
+
`),{result:D})})}function registerAllTools(e,t){let S=t.logger,w=createLoggedServer(e,{logger:t.logger,identityRef:t.identityRef}),E=e=>async w=>{try{let E=await t.resolveCwd(w);return(getCurrentMcpLogger()??S)?.debug(`tool cwd resolved`,{tool:e,cwd:E,...w?{explicit:w}:{}}),E}catch(t){throw(getCurrentMcpLogger()??S)?.warn(`tool call failed`,{tool:e,error:t instanceof Error?t.message:String(t),...w?{explicit:w}:{}}),t}};register$22(w,{resolveCwd:E(`exec`),serverUrl:t.serverUrl,config:t.config}),register$12(w,{config:t.config,resolveCwd:E(`ingest`)}),register$7(w,{config:t.config,resolveCwd:E(`research`)}),register$27(w,{config:t.config,resolveCwd:E(`consolidate`)}),register$24(w,{config:t.config,resolveCwd:E(`discover`)}),register$10(w,{resolveCwd:E(`read_document`),config:t.config,serverUrl:t.serverUrl}),register$4(w,{resolveCwd:E(`search`),config:t.config,serverUrl:t.serverUrl}),register$13(w,{resolveCwd:E(`grep`),config:t.config,serverUrl:t.serverUrl}),register$2(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`suggest_links`)}),register$1(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`write_document`),identityRef:t.identityRef}),register$23(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`edit_document`),identityRef:t.identityRef}),register$26(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`delete_document`),identityRef:t.identityRef}),register$9(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`rename_document`),identityRef:t.identityRef}),register$8(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`rename_folder`),identityRef:t.identityRef}),register$16(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_history`)}),register$5(w,t.config,t.serverUrl,E(`save_version`),t.identityRef),register$6(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`rollback_to_version`),identityRef:t.identityRef}),register$11(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`list_documents`)}),register$21(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_backlinks`)}),register$20(w,{resolveCwd:E(`get_components`),config:t.config}),register$17(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_forward_links`)}),register$14(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_orphans`)}),register$15(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_hubs`)}),register$18(w,{serverUrl:t.serverUrl,config:t.config,resolveCwd:E(`get_dead_links`)}),register$19(w,{config:t.config,resolveCwd:E(`get_config`)}),register$3(w,{config:t.config,resolveCwd:E(`set_folder_rule`)}),register(w,{config:t.config,resolveCwd:E(`write_template`)}),register$25(w,{config:t.config,resolveCwd:E(`delete_template`)})}function firstHeader(e){return Array.isArray(e)?e[0]:e}function writePlain(e,t,S){e.writableEnded||(e.statusCode=t,e.setHeader(`Content-Type`,`text/plain; charset=utf-8`),e.end(S))}function createSessionServer(e,t,S){let w=e.config,E=new McpServer({name:MCP_SERVER_NAME,version:RUNTIME_VERSION},{instructions:buildInstructions(w.content)});installPrettyZodErrors(E);let D=S??randomUUID(),O={current:{connectionId:D,displayName:D,colorSeed:D}};E.server.oninitialized=()=>{let e=E.server.getClientVersion(),t=sanitizeClientName(e?.name,D);O.current={connectionId:D,clientInfo:e?{name:t,version:e.version}:void 0,displayName:t,colorSeed:t}};let k=e.projectDir??e.contentDir;return registerAllTools(E,{serverUrl:async()=>e.getServerUrl(),resolveCwd:async e=>{if(e===void 0)return k;let t=resolveWithinRoot(k,e);if(!t.ok)throw Error(`cwd "${e}" is not within the configured project root: ${t.reason}`);return t.abs},config:w,identityRef:O}),{server:E,transport:t}}function createMcpHttpHandler(e){let t=new Map,S=e.sessionTtlMs??1800*1e3,w=e.maxSessions??100;async function E(S,w){let E=t.get(S);if(!E)return;t.delete(S),E.ttlTimer!==void 0&&clearTimeout(E.ttlTimer);let D=await Promise.allSettled([E.server.close(),E.transport.close()]);for(let t of D)t.status===`rejected`&&e.log?.warn?.({err:t.reason,sessionId:S,reason:w},`MCP HTTP session close failed`);e.log?.info?.({sessionId:S,reason:w},`MCP HTTP session closed`)}function D(t,w){w.ttlTimer!==void 0&&clearTimeout(w.ttlTimer),w.ttlTimer=setTimeout(()=>{E(t,`ttl-expired`).catch(S=>{e.log?.warn?.({err:S,sessionId:t},`MCP HTTP session TTL cleanup failed`)})},S),w.ttlTimer.unref?.()}return{async handle(S,O){let k=firstHeader(S.headers[`mcp-session-id`]);if(k){let e=t.get(k);if(!e){writePlain(O,404,`MCP session not found`);return}D(k,e),await e.transport.handleRequest(S,O);return}if(S.method!==`POST`){writePlain(O,400,`Missing MCP session. Initialize with POST /mcp first.`);return}if(t.size>=w){e.log?.warn?.({activeSessions:t.size,maxSessions:w},`MCP HTTP session cap reached`),writePlain(O,503,`Too many active MCP sessions`);return}let j=firstHeader(S.headers[MCP_CONNECTION_ID_HEADER]),F=validateAgentId(j)??void 0;j!==void 0&&F===void 0&&e.log?.warn?.({headerLength:j.length},`MCP HTTP forwarded connectionId header failed validation; falling back to randomUUID`);let L=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),enableJsonResponse:!0,onsessioninitialized:async S=>{try{let w=createSessionServer(e,L,F);await w.server.connect(L),t.set(S,w),D(S,w),e.log?.info?.({sessionId:S},`MCP HTTP session initialized`)}catch(w){throw t.delete(S),e.log?.error?.({err:w,sessionId:S},`MCP HTTP session initialization failed`),w}}});L.onerror=t=>{e.log?.warn?.({err:t},`MCP HTTP transport error`)},L.onclose=()=>{let t=L.sessionId;if(!t){e.log?.info?.({sessionId:t,reason:`transport-closed`},`MCP HTTP session closed`);return}E(t,`transport-closed`).catch(S=>{e.log?.warn?.({err:S,sessionId:t},`MCP HTTP transport-close cleanup failed`)})},await L.handleRequest(S,O)},async close(){let e=[...t.entries()];await Promise.allSettled(e.map(([e])=>E(e,`handler-close`)))}}}const DEFAULT_KEEPALIVE_GRACE_MS=1e4,MAX_COLLAB_MESSAGE_BYTES=1024*1024,MCP_CORS_HEADERS={"Access-Control-Allow-Methods":`GET, POST, DELETE, OPTIONS`,"Access-Control-Allow-Headers":`Content-Type, Authorization, traceparent, tracestate, baggage, mcp-session-id, mcp-protocol-version`,"Access-Control-Max-Age":`86400`};function mountMcpAndApi(e){let{httpServer:t,hocuspocus:S,mcpHttpHandler:w,log:E,sessionManager:D,agentFocusBroadcaster:O,agentPresenceBroadcaster:k,contentAssetMiddleware:j}=e,F=e.keepaliveGraceMs??DEFAULT_KEEPALIVE_GRACE_MS,L=new import_websocket_server$1.default({noServer:!0,maxPayload:MAX_COLLAB_MESSAGE_BYTES});L.on(`error`,e=>{E.error({err:e},`WebSocketServer error`)});let B=new Map,H=new Set,q=!1;return t.on(`request`,(e,t)=>{let D=e.url?.split(`?`)[0];if(w!==void 0&&D===`/mcp`){let S=e.headers.origin,D=Array.isArray(e.headers[`mcp-session-id`])?e.headers[`mcp-session-id`][0]:e.headers[`mcp-session-id`];if(!isLoopbackAddress(e.socket.remoteAddress)){errorResponse(t,403,`urn:ok:error:loopback-required`,`Loopback access required.`,{handler:`mcp`});return}if(!isAllowedWorkspaceHostHeader(e.headers.host)){errorResponse(t,403,`urn:ok:error:host-not-allowed`,`Host header not allowed.`,{handler:`mcp`});return}if(S!==void 0&&!isAllowedApiOrigin(S)){errorResponse(t,403,`urn:ok:error:invalid-origin`,`Origin not allowed.`,{handler:`mcp`});return}S!==void 0&&(t.setHeader(`Access-Control-Allow-Origin`,S),t.setHeader(`Vary`,`Origin`));for(let[e,S]of Object.entries(MCP_CORS_HEADERS))t.setHeader(e,S);if(e.method===`OPTIONS`){t.writeHead(204),t.end();return}w.handle(e,t).catch(e=>{E.error({err:e,sessionId:D},`Unhandled MCP HTTP error`),!t.writableEnded&&!t.headersSent?errorResponse(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`mcp`,cause:e}):t.writableEnded||t.end()});return}if(D?.startsWith(`/api/`)){S.hooks(`onRequest`,{request:e,response:t}).then(()=>{t.writableEnded||t.headersSent||errorResponse(t,404,`urn:ok:error:not-found`,`API endpoint not found.`,{handler:`mcp-mount`,detail:`No handler for ${e.method??`GET`} ${D}`})}).catch(e=>{E.error({err:e},`Unhandled onRequest error`),!t.writableEnded&&!t.headersSent?errorResponse(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`mcp-mount`,cause:e}):t.writableEnded||t.end()});return}if(j!==void 0){try{j(e,t,()=>{t.writableEnded||t.headersSent||errorResponse(t,404,`urn:ok:error:not-found`,`Not found.`,{handler:`mcp-mount`,detail:`No handler for ${D??`/`}`})})}catch(e){E.error({err:e},`Unhandled content-asset middleware error`),!t.writableEnded&&!t.headersSent?errorResponse(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`mcp-mount`,cause:e}):t.writableEnded||t.end()}return}errorResponse(t,404,`urn:ok:error:not-found`,`Not found.`,{handler:`mcp-mount`,detail:`The React UI is served by \`ok ui\` (run \`ok ui\` and check \`ui.lock.port\`). No handler for ${D??`/`}`})}),t.on(`upgrade`,(e,t,w)=>{if(e.url?.startsWith(`/collab/keepalive`)){if(!isLoopbackAddress(e.socket.remoteAddress)||!isAllowedWorkspaceHostHeader(e.headers.host)){t.destroy();return}t.on(`error`,e=>{handleCollabSocketError(e)||E.error({err:e},`MCP keepalive socket error`)}),L.handleUpgrade(e,t,w,t=>{let S=parseKeepaliveConnectionId(e.url);if(S){let e=B.get(S);e!==void 0&&(clearTimeout(e),B.delete(S),E.info({connectionId:S},`[keepalive] reconnect during grace — timer cancelled`))}if(S&&k){let t=parseKeepaliveIdentity(e.url);if(t)try{let e=iconFromClientName(t.clientName),w=AGENT_ICON_COLORS[e]??colorFromSeed(t.colorSeed);k.setPresence(toBroadcasterKey(S),{displayName:t.displayName,icon:e,color:w,currentDoc:`(connected)`,mode:`idle`,ts:Date.now()})}catch(e){E.error({err:e,connectionId:S},`[keepalive] presence bootstrap failed`)}}let w=setInterval(()=>{try{t.ping()}catch{}},3e4);w.unref?.();let j=S?setInterval(()=>{k?.bumpPresenceTs(toBroadcasterKey(S))},3e3):null;j?.unref?.(),t.on(`close`,()=>{if(clearInterval(w),j!==null&&clearInterval(j),!S)return;let e=setTimeout(()=>{if(B.delete(S),q)return;let e=(async()=>{E.info({connectionId:S},`[keepalive] grace expired — cleaning up sessions`);try{await D?.closeAllForAgent(S)}catch(e){E.error({err:e,connectionId:S},`[keepalive] closeAllForAgent failed`)}try{O?.clearFocus(S)}catch(e){E.error({err:e,connectionId:S},`[keepalive] clearFocus failed`)}try{k?.clearPresence(toBroadcasterKey(S))}catch(e){E.error({err:e,connectionId:S},`[keepalive] clearPresence failed`)}})();H.add(e),e.finally(()=>H.delete(e))},F);e.unref?.(),B.set(S,e),E.info({connectionId:S,graceMs:F},`[keepalive] disconnected — grace timer started`)}),t.on(`error`,e=>{handleCollabSocketError(e)||E.error({err:e},`MCP keepalive WS error`),t.terminate()})});return}if(e.url?.startsWith(`/collab`)){t.on(`error`,e=>{handleCollabSocketError(e)||E.error({err:e},`Upgrade socket error`)}),L.handleUpgrade(e,t,w,t=>{let w=S.handleConnection(t,e),D=!1;t.on(`message`,e=>{if(D)return;let S=e.byteLength;if(S>MAX_COLLAB_MESSAGE_BYTES){D=!0,incrementCollabMessageTooLarge(),E.warn({event:`collab-message-too-large`,bytes:S,limit:MAX_COLLAB_MESSAGE_BYTES},`Collab WebSocket message rejected before Yjs processing`),t.close(1009,`Message Too Big`);return}w.handleMessage(new Uint8Array(e))}),t.on(`close`,(e,t)=>{w.handleClose({code:e,reason:t.toString()})}),t.on(`error`,e=>{if(e.code===`WS_ERR_UNSUPPORTED_MESSAGE_LENGTH`){incrementCollabMessageTooLarge(),E.warn({event:`collab-message-too-large`,limit:MAX_COLLAB_MESSAGE_BYTES},`Collab WebSocket frame rejected by ws maxPayload before Yjs processing`),t.terminate();return}handleCollabSocketError(e)||E.error({err:e},`WebSocket error`),t.terminate()})});return}t.destroy()}),{wss:L,shutdown:async()=>{if(!q){q=!0;for(let e of B.values())clearTimeout(e);B.clear(),H.size>0&&await Promise.allSettled([...H])}}}}function parseKeepaliveConnectionId(e){if(!e)return null;try{return validateAgentId(new URL(e,`http://localhost`).searchParams.get(`connectionId`))}catch{return null}}const MAX_KEEPALIVE_IDENTITY_LEN=256;function sanitizeIdentityField(e){return e===null||e.length===0||e.length>MAX_KEEPALIVE_IDENTITY_LEN||/[-]/.test(e)?null:e}function parseKeepaliveIdentity(e){if(!e)return null;try{let t=new URL(e,`http://localhost`),S=sanitizeIdentityField(t.searchParams.get(`displayName`)),w=sanitizeIdentityField(t.searchParams.get(`clientName`)),E=sanitizeIdentityField(t.searchParams.get(`colorSeed`));return S===null||w===null||E===null?null:{displayName:S,clientName:w,colorSeed:E}}catch{return null}}const MISSING_OK_CONFIG_MESSAGE=`Open Knowledge config not found at .ok/config.yml. Run ok init to scaffold OK in this directory.`;var MissingOkConfigError=class extends Error{kind;projectDir;constructor(e,t,S){super(MISSING_OK_CONFIG_MESSAGE,S),this.name=`MissingOkConfigError`,this.kind=e,this.projectDir=t}};async function startConfigFileWatcher(e,t){let S=getLogger(`config-file-watcher`),{watch:w}=await import(`./chokidar-CxU7f6JW.mjs`),E=dirname(e);try{tracedMkdirSync(E,{recursive:!0})}catch(e){e.code!==`EEXIST`&&S.warn({err:e,watchDir:E},`failed to create watch directory; watcher may be inert`)}let D=w(E,{ignoreInitial:!0,depth:0,usePolling:!0,interval:200,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignored:t=>t!==E&&t!==e});await new Promise(e=>{D.once(`ready`,e)});let O=null;try{O=readFileSync(e,`utf-8`)}catch{}let k=(w,E=!0)=>{if(w!==e)return;let D;try{D=readFileSync(w,`utf-8`)}catch(e){if(e.code===`ENOENT`){E&&S.debug({path:w},`config file disappeared between event and read; dropping`);return}S.warn({err:e,path:w},`config file read failed; dropping event`);return}if(D!==O){O=D;try{t(D)}catch(e){S.warn({err:e,path:w},`config file change handler threw`)}}},j=e=>k(e);D.on(`add`,j),D.on(`change`,j),D.on(`unlink`,t=>{t===e&&S.debug({path:t},`config file unlinked; Y.Text retained at current state`)}),D.on(`error`,t=>{S.warn({err:t,watchDir:E,absPath:e},`[config-file-watcher] chokidar error while watching ${e}`)});let F=0,L=setInterval(()=>{F++,k(e,!1),F>=20&&clearInterval(L)},500);L.unref?.();let B=!1;return async()=>{B||(B=!0,clearInterval(L),await D.close())}}async function startMultiPathConfigFileWatcher(e,t){if(e.length===0)throw Error(`startMultiPathConfigFileWatcher requires at least one absolute path`);let S=getLogger(`config-file-watcher`),{watch:w}=await import(`./chokidar-CxU7f6JW.mjs`),E=new Set(e),D=Array.from(new Set(Array.from(E,e=>dirname(e))));for(let e of D)try{tracedMkdirSync(e,{recursive:!0})}catch(t){t.code!==`EEXIST`&&S.warn({err:t,dir:e},`failed to create watch directory; watcher may be inert`)}let O=w(D,{ignoreInitial:!0,depth:0,usePolling:!0,interval:200,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignored:e=>!E.has(e)&&!D.includes(e)});await new Promise(e=>{O.once(`ready`,e)});let k=new Map;for(let e of E)try{k.set(e,readFileSync(e,`utf-8`))}catch{k.set(e,null)}let j=(e,w=!0)=>{if(!E.has(e))return;let D;try{D=readFileSync(e,`utf-8`)}catch(t){if(t.code===`ENOENT`){w&&S.debug({path:e},`config file disappeared between event and read; dropping`);return}S.warn({err:t,path:e},`config file read failed; dropping event`);return}if(D!==k.get(e)){k.set(e,D);try{t(e,D)}catch(t){S.warn({err:t,path:e},`config file change handler threw`)}}},F=e=>j(e);O.on(`add`,F),O.on(`change`,F),O.on(`unlink`,e=>{E.has(e)&&S.debug({path:e},`config file unlinked; downstream state retained`)}),O.on(`error`,e=>{S.warn({err:e,watchDirs:D,paths:Array.from(E)},`[config-file-watcher] chokidar error in multi-path watcher`)});let L=0,B=setInterval(()=>{L++;for(let e of E)j(e,!1);L>=20&&clearInterval(B)},500);B.unref?.();let H=!1;return async()=>{H||(H=!0,clearInterval(B),await O.close())}}const QUIET_WINDOW_MS=100,BATCH_TIMEOUT_MS=3e4,WATCHED_FILES=new Set([`HEAD`,`MERGE_HEAD`,`ORIG_HEAD`,`index.lock`]);function readHeadSha(e){try{let t=readFileSync(resolve(e,`HEAD`),`utf-8`).trim();if(t.startsWith(`ref: `)){let S=resolve(e,t.slice(5));try{return readFileSync(S,`utf-8`).trim()}catch{try{let S=readFileSync(resolve(e,`packed-refs`),`utf-8`),w=t.slice(5),E=S.split(`
|
|
3253
3254
|
`).find(e=>e.endsWith(` ${w}`));if(E)return E.split(` `)[0]}catch{}return null}}return t.length>=40?t.slice(0,40):null}catch{return null}}function readBranchFromHead(e){try{let t=readFileSync(resolve(e,`HEAD`),`utf-8`).trim();return t.startsWith(`ref: refs/heads/`)?t.slice(16):t.length>=40?`detached-${t.slice(0,12)}`:null}catch{return null}}async function startHeadWatcher(e,t,S){let w=resolveGitDir(e);if(!w)return{unsubscribe:async()=>{},getLastKnownBranch:()=>null};let E=w,D=!1,O=null,k=null,j=null,F=null;async function L(e){if(H&&await H,!D)return;O&&=(clearTimeout(O),null),k&&=(clearTimeout(k),null);let t=readHeadSha(E),w=j!==t,L=readBranchFromHead(E),B;B=L?.startsWith(`detached-`)?`detached-head`:F===L?`within-branch`:`cross-branch`;let q=F;try{await S({headMoved:w,oldHead:j,newHead:t,timeout:e,batchKind:B,oldBranch:q,newBranch:L})}catch(e){console.error(`[head-watcher] onBatchEnd callback failed:`,e)}finally{D=!1,j=t,F=L}}function B(){O&&clearTimeout(O),O=setTimeout(()=>{O=null,L(!1)},QUIET_WINDOW_MS)}let H=null;async function q(e){if(!D){D=!0,j=readHeadSha(E);let S=(async()=>{try{await t({trigger:e})}catch(e){console.error(`[head-watcher] onBatchBegin callback failed:`,e)}})();H=S,await S,H=null,k=setTimeout(()=>{k=null,L(!0)},BATCH_TIMEOUT_MS)}B()}let J,Y;try{Y=await import(`@parcel/watcher`)}catch(e){throw Error(`@parcel/watcher unavailable for HEAD watching: ${e instanceof Error?e.message:e}`)}try{let e=await Y.subscribe(E,(e,t)=>{if(e){console.error(`[head-watcher]`,e);return}for(let e of t){let t=e.path.split(`/`).pop()??``;if(WATCHED_FILES.has(t)){q(t);break}}});J=()=>e.unsubscribe()}catch(e){throw Error(`@parcel/watcher subscribe failed for HEAD watching: ${e instanceof Error?e.message:e}`)}return j=readHeadSha(E),F=readBranchFromHead(E),console.log(`[head-watcher] Watching ${E} for HEAD changes`),{unsubscribe:async()=>{D&&await L(!1),O&&clearTimeout(O),k&&clearTimeout(k),await J()},getLastKnownBranch:()=>F}}const LIVE_DERIVED_INDEX_DEBOUNCE_MS=100;function isLocalOriginLike(e){return typeof e!=`object`||!e?!1:e.source===`local`}function serializeLiveDocument(e){return e.getText(`source`).toString()}function createLiveDerivedIndexExtension(e){let{backlinkIndex:t,tagIndex:S,signalChannel:w,debounceMs:E=100}=e,D=new Map;function O(e){let t=D.get(e);t&&(clearTimeout(t),D.delete(e))}function k(e,k){O(e),D.set(e,setTimeout(()=>{D.delete(e);try{let E=serializeLiveDocument(k);t.updateDocumentFromMarkdown(e,E),w?.(`backlinks`),w?.(`graph`),S&&(S.updateDocumentFromMarkdown(e,E),w?.(`tags`))}catch(t){console.error(`[live-derived-index] Failed to update derived views for ${e}:`,t)}},E))}return{async onChange({documentName:e,document:t,transactionOrigin:S}){isSystemDoc(e)||isConfigDoc(e)||isLocalOriginLike(S)&&S.context?.origin===`file-watcher`||k(e,t)},async beforeUnloadDocument({documentName:e}){O(e)},async onDestroy(){for(let e of D.values())clearTimeout(e);D.clear()}}}const PRINCIPAL_FILE=`principal.json`,GIT_TIMEOUT_MS=3e3;async function readGitConfig(e){try{let t=esm_default({baseDir:e,timeout:{block:GIT_TIMEOUT_MS}});return{name:(await t.raw(`config`,`--get`,`user.name`)).trim()||null,email:(await t.raw(`config`,`--get`,`user.email`)).trim()||null}}catch{return{name:null,email:null}}}async function loadPrincipal(e){let t=getLocalDir(e),S=resolve(t,PRINCIPAL_FILE),{name:w,email:E}=await readGitConfig(e);if(existsSync(S)){let e;try{e=JSON.parse(readFileSync(S,`utf-8`))}catch{e={}}let t=typeof e.id==`string`&&e.id.startsWith(`principal-`)?e.id:`principal-${randomUUID()}`,D=typeof e.created_at==`string`?e.created_at:new Date().toISOString(),O=t.slice(10,18),k={id:t,display_name:w?sanitizeGitIdentity(w):typeof e.display_name==`string`?e.display_name:`Local User`,display_email:E?sanitizeGitIdentity(E):typeof e.display_email==`string`?e.display_email:`principal-${O}@openknowledge.local`,source:w||E?`git-config`:`synthesized`,created_at:D};return writeFileSync(S,JSON.stringify(k,null,2),`utf-8`),k}mkdirSync(t,{recursive:!0});let D=`principal-${randomUUID()}`,O=D.slice(10,18),k={id:D,display_name:w?sanitizeGitIdentity(w):`Local User`,display_email:E?sanitizeGitIdentity(E):`principal-${O}@openknowledge.local`,source:w||E?`git-config`:`synthesized`,created_at:new Date().toISOString()};return writeFileSync(S,JSON.stringify(k,null,2),`utf-8`),k}const DEFAULT_CAPACITY=1e4;var RecentlyRemovedDocs=class{map=new Map;capacity;onEviction;onSizeChange;now;constructor(e=DEFAULT_CAPACITY,t={}){this.capacity=Math.max(0,Math.floor(e)),this.onEviction=t.onEviction,this.onSizeChange=t.onSizeChange,this.now=t.now??Date.now}setRenamed(e,t){this.put(e,{kind:`renamed`,newDocName:t,addedAt:this.now()})}setDeleted(e){this.put(e,{kind:`deleted`,addedAt:this.now()})}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}has(e){return this.map.has(e)}peek(e){return this.map.get(e)}delete(e){this.map.delete(e)&&this.onSizeChange?.(this.map.size)}get size(){return this.map.size}put(e,t){if(this.capacity===0){this.onSizeChange?.(0);return}for(this.map.delete(e),this.map.set(e,t);this.map.size>this.capacity;){let e=this.map.keys().next().value;if(e===void 0)break;this.map.delete(e),this.onEviction?.()}this.onSizeChange?.(this.map.size)}};function fileExistsForDocName(e,t){let S=e.resolveFilePath(t);return S!==null&&e.fileExists(S)}async function runRemovalRedirectGuard(e,t){try{if(isSystemDoc(e)||isConfigDoc(e))return;let S=t.recentlyRemovedDocs.get(e);if(S===void 0)return;if(S.kind===`deleted`){if(fileExistsForDocName(t,e)){t.recentlyRemovedDocs.delete(e);return}throw incrementAuthDocDeleted(),setActiveSpanAttributes({"auth.reason":`doc-deleted`}),new HocuspocusAuthRejection(`doc-deleted`,`removed-doc rejection for deleted ${e}`)}let w=new Set([e]),E=S.newDocName;for(;;){if(w.has(E)){incrementRemovalRedirectChainCycle(),console.warn(JSON.stringify({event:`removal-redirect-chain-cycle`,documentName:e,target:E}));return}w.add(E);let S=t.recentlyRemovedDocs.get(E);if(S===void 0)throw incrementAuthRenameRedirect(),setActiveSpanAttributes({"auth.reason":`rename-redirect`}),new HocuspocusAuthRejection(`rename-redirect`,`removed-doc redirect for ${e} → ${E}`,E);if(S.kind===`deleted`)throw fileExistsForDocName(t,E)?(t.recentlyRemovedDocs.delete(E),incrementAuthRenameRedirect(),setActiveSpanAttributes({"auth.reason":`rename-redirect`}),new HocuspocusAuthRejection(`rename-redirect`,`removed-doc redirect for ${e} → ${E}`,E)):(incrementAuthDocDeleted(),setActiveSpanAttributes({"auth.reason":`doc-deleted`}),new HocuspocusAuthRejection(`doc-deleted`,`removed-doc rejection for deleted ${e}`));E=S.newDocName}}catch(t){if(t instanceof HocuspocusAuthRejection)throw t;incrementAuthRemovalGuardError(),console.warn(JSON.stringify({event:`removal-redirect-extension-error`,documentName:e,message:t instanceof Error?t.message:String(t)}))}}function createServerObserverExtension(e){let t=new Map,S=new Map;return{async afterLoadDocument({documentName:w,document:E}){if(isSystemDoc(w)||isConfigDoc(w)||t.has(w))return;let D=E,O=D.getXmlFragment(`default`),k=D.getText(`source`),j=()=>{try{let S=setupServerObservers({doc:D,xmlFragment:O,ytext:k,mdManager:e.mdManager,schema:e.schema,docName:w,shadow:e.shadowRef?()=>e.shadowRef?.current:void 0,getBranch:e.getCurrentBranch?()=>e.getCurrentBranch?.()??`main`:void 0,contentRoot:e.contentRoot,resolveEmbed:e.resolveEmbed,resolveSize:e.resolveSize});return t.set(w,S),!0}catch(e){return console.error(`[ServerObserverExtension] Failed to attach observers for '${w}':`,e),incrementServerObserverError(`a`),incrementServerObserverError(`b`),!1}};if(!j()){let e=setTimeout(()=>{S.delete(w),!t.has(w)&&(console.warn(`[ServerObserverExtension] Retrying observer attachment for '${w}'`),j())},5e3);S.set(w,e)}},async afterUnloadDocument({documentName:e}){let w=S.get(e);w&&(clearTimeout(w),S.delete(e));let E=t.get(e);E&&(E(),t.delete(e))},async onDestroy(){for(let e of S.values())clearTimeout(e);S.clear();for(let[e,S]of t.entries())try{S()}catch(t){console.error(`[ServerObserverExtension] Cleanup failed for '${e}':`,t)}t.clear()}}}const STATE_MANIFEST_FILENAME=`state.json`;function detectProjectShape(e){return e.lockDir,existsSync(e.shadowRepoDir)?`adopt`:`fresh`}function manifestPath(e){return resolve(e,STATE_MANIFEST_FILENAME)}function isCompatibleSchema(e,t){return e===t||e===0&&t===1}var StateManifestError=class extends Error{kind;path;constructor(e){super(e.message),this.name=`StateManifestError`,this.kind=e.kind,this.path=e.path}};function isStateManifestRecord(e){if(!e||typeof e!=`object`)return!1;let t=e;if(typeof t.stateSchemaVersion!=`number`||typeof t.createdAt!=`string`||!t.createdBy||typeof t.createdBy!=`object`)return!1;let S=t.createdBy;return!(typeof S.runtimeVersion!=`string`||S.protocolVersion!==void 0&&typeof S.protocolVersion!=`number`)}function readStateManifest(e){let t=manifestPath(e);if(!existsSync(t))return{status:`absent`};let S;try{S=readFileSync(t,`utf-8`)}catch(e){throw new StateManifestError({kind:`corrupt`,path:t,message:`Failed to read state manifest at ${t}: ${e instanceof Error?e.message:String(e)}`})}let w;try{w=JSON.parse(S)}catch(e){throw new StateManifestError({kind:`corrupt`,path:t,message:`State manifest at ${t} is not valid JSON: ${e instanceof Error?e.message:String(e)}`})}if(!isStateManifestRecord(w))throw new StateManifestError({kind:`corrupt`,path:t,message:`State manifest at ${t} has invalid shape (missing or wrong-typed required fields)`});return{status:`present`,manifest:w}}function writeStateManifest(e,t){let S=manifestPath(e);mkdirSync(dirname(S),{recursive:!0}),writeFileSync(S,JSON.stringify(t,null,2),{encoding:`utf-8`,mode:384})}function assertCompatibleStateManifest(e){let t=getLogger(`state-manifest`),S=e.currentStateSchemaVersion??1,w=e.currentRuntimeVersion??RUNTIME_VERSION,E=e.currentProtocolVersion??1,D=(e.now??(()=>new Date))().toISOString(),O=manifestPath(e.lockDir),k=readStateManifest(e.lockDir);if(k.status===`present`){let j=k.manifest;if(!isCompatibleSchema(j.stateSchemaVersion,S))throw new StateManifestError({kind:`incompatible`,path:O,message:`State manifest at ${O} declares stateSchemaVersion=${j.stateSchemaVersion} but this binary supports ${S}. Refusing to boot — on-the-fly migration is out of scope. (Manifest written by runtime ${j.createdBy.runtimeVersion}, protocol ${j.createdBy.protocolVersion}.)`});try{let t={...j,lastWriteBy:{runtimeVersion:w,protocolVersion:E,at:D}};return writeStateManifest(e.lockDir,t),t}catch(e){return t.warn({err:e},`[state-manifest] failed to update lastWriteBy — proceeding`),j}}if(detectProjectShape({lockDir:e.lockDir,shadowRepoDir:e.shadowRepoDir})===`fresh`){let k={stateSchemaVersion:S,createdAt:D,createdBy:{runtimeVersion:w,protocolVersion:E}};return writeStateManifest(e.lockDir,k),t.info({path:O,stateSchemaVersion:S},`[state-manifest] fresh project — wrote manifest`),k}let j={stateSchemaVersion:0,createdAt:D,createdBy:{runtimeVersion:w,protocolVersion:E,adoptedAt:D}};return writeStateManifest(e.lockDir,j),t.warn({path:O,runtimeVersion:w},`[state-manifest] adopting pre-versioned project — wrote schema-0 manifest. Future binaries with STATE_SCHEMA_VERSION>=2 may refuse if they cannot read schema-0 state.`),j}const log$1=getLogger(`conflict-storage`);var ConflictStore=class{storePath;projectDir;branch;conflicts=[];constructor(e,t=`main`){this.storePath=join(getLocalDir(e),`conflicts.json`),this.projectDir=e,this.branch=t,this.load()}load(){if(!existsSync(this.storePath)){this.conflicts=[];return}try{let e=readFileSync(this.storePath,`utf-8`),t=JSON.parse(e);if(t.version!==1){log$1.warn({path:this.storePath},`[conflicts] unknown schema version — resetting`),this.conflicts=[];return}this.branch=t.branch??this.branch,this.conflicts=t.conflicts??[]}catch(e){log$1.warn({err:e},`[conflicts] failed to load conflicts.json — starting empty`),this.conflicts=[]}}save(){try{let e=dirname(this.storePath);existsSync(e)||mkdirSync(e,{recursive:!0});let t={version:1,branch:this.branch,conflicts:this.conflicts};writeFileSync(this.storePath,JSON.stringify(t,null,2),`utf-8`)}catch(e){log$1.warn({err:e},`[conflicts] failed to save conflicts.json`)}}addConflict(e){let t=this.conflicts.findIndex(t=>t.file===e.file);t===-1?this.conflicts.push(e):this.conflicts[t]=e,this.save()}removeConflict(e){this.conflicts=this.conflicts.filter(t=>t.file!==e),this.save()}clear(){this.conflicts=[],this.save()}count(){return this.conflicts.length}list(){return[...this.conflicts]}hasConflicts(){return this.conflicts.length>0}setBranch(e){this.branch=e}async resolveConflict(e,t,S,w=[]){if(!this.conflicts.find(t=>t.file===e))throw Error(`[conflicts] no conflict tracked for file: ${e}`);if(t===`content`&&S===void 0)throw Error(`[conflicts] strategy 'content' requires content parameter`);let{createGitInstance:E}=await import(`./git-handle-DwfYp_z--DreW3fNC.mjs`).then(e=>e.n),D=E(this.projectDir,{credentialArgs:w});switch(t){case`mine`:await D.git.raw([`checkout`,`--ours`,`--`,e]),await D.git.raw([`add`,`--`,e]);break;case`theirs`:await D.git.raw([`checkout`,`--theirs`,`--`,e]),await D.git.raw([`add`,`--`,e]);break;case`content`:{if(!S)throw Error(`[conflicts] strategy 'content' requires content parameter`);let t=resolve(this.projectDir),w=resolve(t,e);if(w!==t&&!w.startsWith(`${t}/`))throw Error(`[conflicts] file path escapes project directory: ${e}`);writeFileSync(w,S,`utf-8`),await D.git.raw([`add`,`--`,e]);break}default:throw Error(`[conflicts] unknown resolve strategy: ${t}`)}if(this.removeConflict(e),!this.hasConflicts())try{await D.git.raw([`commit`,`--no-edit`]),log$1.info({file:e},`[conflicts] all conflicts resolved — merge commit created`)}catch(t){let S=new Date().toISOString(),w=!1;try{let e=(await D.git.raw([`diff`,`--name-only`,`--diff-filter=U`])).split(`
|
|
3254
3255
|
`).map(e=>e.trim()).filter(Boolean);for(let t of e)this.addConflict({file:t,detectedAt:S});w=e.length>0}catch(e){log$1.warn({err:e},`[conflicts] commit failed and re-scan of unmerged files failed — falling back to single-file re-add`)}w||this.addConflict({file:e,detectedAt:S}),log$1.warn({err:t},`[conflicts] failed to commit merge after all conflicts resolved — unmerged files re-added`)}}};function extractStderr(e){return e.git?.toString()??e.message??``}function matchesAny(e,t){return t.some(t=>t.test(e))}const AUTH_PATTERNS=[/\b(401|403)\b/,/authentication failed/i,/authorization failed/i,/invalid credentials/i,/credential helper/i,/bad credentials/i,/token.*expired/i,/expired.*token/i,/permission denied.*\(publickey\)/i,/host key verification failed/i,/fatal:.*repository.*not found/i],SCOPE_MISMATCH_PATTERNS=[/insufficient scopes/i,/missing.*scope/i,/required scope/i],NON_FAST_FORWARD_PATTERNS=[/non-fast-forward/i,/rejected.*non-fast-forward/i,/would overwrite.*commits/i,/\[rejected\]/,/fetch first/i,/updates were rejected/i],PROTECTED_BRANCH_PATTERNS=[/protected branch/i,/refusing to allow/i,/at least \d+ approving review/i,/required status check/i,/branch policy/i,/GH001/i,/GH002/i,/GH003/i,/GH004/i,/push declined due to repository rule/i,/cannot push to a protected branch/i],MERGE_CONFLICT_PATTERNS=[/\bmerge conflict\b/i,/automatic merge failed/i,/CONFLICT \(/,/\bconflict\b.*\bmerge\b/i,/(?:^|\n)CONFLICTS:\s/i],LFS_PATTERNS=[/lfs.*quota/i,/exceeded.*bandwidth/i,/lfs storage/i],LARGE_FILE_PATTERNS=[/file.*too large/i,/exceeded.*file size/i,/push file size limit/i],PRE_RECEIVE_PATTERNS=[/pre-receive hook/i,/remote:.*rejected/i,/hook declined/i],SECRET_DETECTED_PATTERNS=[/secret.*detected/i,/push.*secret/i,/secret scanning/i,/leaking.*credentials/i,/token.*detected/i],INDEX_LOCK_PATTERNS=[/\.git\/index\.lock/i,/another git process/i,/unable to create.*\.lock/i],DIRTY_TREE_PATTERNS=[/dirty.*working tree/i,/working tree.*not clean/i,/untracked.*files.*would be overwritten/i,/local changes.*would be overwritten/i,/uncommitted changes/i,/changes.*not staged/i,/please.*commit.*changes/i,/please.*stash/i,/commit your changes or stash/i],DISK_FULL_PATTERNS=[/no space left on device/i,/disk quota exceeded/i,/ENOSPC/],NETWORK_PATTERNS=[/could not resolve host/i,/name.*resolution/i,/connection.*timed out/i,/operation timed out/i,/connection refused/i,/network.*unreachable/i,/ssl.*handshake/i,/unable to connect/i,/getaddrinfo/i,/econnrefused/i,/enotfound/i,/etimedout/i,/ehostunreach/i],HTTP_5XX_PATTERNS=[/\bHTTP[\s/]*5[0-9]{2}\b/i,/\bstatus:?\s*5[0-9]{2}\b/i,/\berror\s*5[0-9]{2}\b/i,/\bresponse.*?\b5[0-9]{2}\b/i],HTTP_429_PATTERNS=[/\bHTTP[\s/]*429\b/i,/\bstatus:?\s*429\b/i,/\berror\s*429\b/i,/rate.?limit/i,/too many requests/i];function classifyGitError(e){let t=e instanceof Error?e:Error(String(e)),S=extractStderr(t),w=`${t.message}\n${S}`.toLowerCase();return matchesAny(w,INDEX_LOCK_PATTERNS)?{class:`local`,subclass:`index-lock`,retryable:!0,message:`Git index locked by another process`,rawStderr:S}:matchesAny(w,DIRTY_TREE_PATTERNS)?{class:`local`,subclass:`dirty-tree`,retryable:!0,message:`Working tree has uncommitted changes`,rawStderr:S}:matchesAny(w,DISK_FULL_PATTERNS)?{class:`local`,subclass:`disk-full`,retryable:!0,message:`Disk full or quota exceeded`,rawStderr:S}:matchesAny(w,SCOPE_MISMATCH_PATTERNS)?{class:`auth`,subclass:`scope-mismatch`,retryable:!1,message:`GitHub token missing required scopes`,rawStderr:S}:matchesAny(w,AUTH_PATTERNS)?/\b401\b/.test(w)||/token.*expired/i.test(w)?{class:`auth`,subclass:`401`,retryable:!1,message:`Authentication failed — token may be expired`,rawStderr:S}:/\b403\b/.test(w)?matchesAny(w,PROTECTED_BRANCH_PATTERNS)?{class:`semantic`,subclass:`protected-branch`,retryable:!1,message:`Push rejected — branch is protected`,rawStderr:S}:{class:`auth`,subclass:`403`,retryable:!1,message:`Access denied (403)`,rawStderr:S}:{class:`auth`,subclass:`unknown-auth`,retryable:!1,message:`Authentication failed`,rawStderr:S}:matchesAny(w,PROTECTED_BRANCH_PATTERNS)?{class:`semantic`,subclass:`protected-branch`,retryable:!1,message:`Push rejected — branch is protected`,rawStderr:S}:matchesAny(w,NON_FAST_FORWARD_PATTERNS)?{class:`semantic`,subclass:`non-fast-forward`,retryable:!1,message:`Push rejected — remote has diverged (non-fast-forward)`,rawStderr:S}:matchesAny(w,MERGE_CONFLICT_PATTERNS)?{class:`semantic`,subclass:`merge-conflict`,retryable:!1,message:`Merge conflict — manual resolution required`,rawStderr:S}:matchesAny(w,LFS_PATTERNS)?{class:`structural`,subclass:`lfs-quota`,retryable:!1,message:`Git LFS quota exceeded`,rawStderr:S}:matchesAny(w,LARGE_FILE_PATTERNS)?{class:`structural`,subclass:`large-file`,retryable:!1,message:`File exceeds size limit`,rawStderr:S}:matchesAny(w,SECRET_DETECTED_PATTERNS)?{class:`structural`,subclass:`secret-detected`,retryable:!1,message:`Push blocked — secret or credential detected in content`,rawStderr:S}:matchesAny(w,PRE_RECEIVE_PATTERNS)?{class:`structural`,subclass:`pre-receive-hook`,retryable:!1,message:`Push rejected by server pre-receive hook`,rawStderr:S}:matchesAny(w,HTTP_429_PATTERNS)?{class:`network`,subclass:`429`,retryable:!0,message:`Rate limited — too many requests`,rawStderr:S}:matchesAny(w,HTTP_5XX_PATTERNS)?{class:`network`,subclass:`5xx`,retryable:!0,message:`Server error (5xx)`,rawStderr:S}:matchesAny(w,NETWORK_PATTERNS)?/timed? out/i.test(w)?{class:`network`,subclass:`timeout`,retryable:!0,message:`Connection timed out`,rawStderr:S}:/refused/i.test(w)||/econnrefused/i.test(w)?{class:`network`,subclass:`connection-refused`,retryable:!0,message:`Connection refused`,rawStderr:S}:/resolve.*host/i.test(w)||/enotfound/i.test(w)||/getaddrinfo/i.test(w)?{class:`network`,subclass:`dns`,retryable:!0,message:`DNS resolution failed`,rawStderr:S}:{class:`network`,subclass:`unknown-network`,retryable:!0,message:`Network error`,rawStderr:S}:{class:`local`,subclass:`unknown-local`,retryable:!0,message:t.message||`Unknown git error`,rawStderr:S}}function computeRemainingMs(e,t,S=Date.now()){if(!e)return 0;let w=new Date(e).getTime();if(Number.isNaN(w))return 0;let E=w+t*1e3;return Math.max(0,E-S)}const log=getLogger(`sync-engine`),SHA_HEX_40=/^[0-9a-f]{40}$/i;function jitteredMs(e){let t=e*1e3,S=t*.15*(2*Math.random()-1);return Math.round(t+S)}function isUnbornHead(e){try{let t=join(e,`.git`,`HEAD`);if(!existsSync(t))return!1;let S=readFileSync(t,`utf-8`).trim(),w=/^ref:\s+(refs\/.+)$/.exec(S);if(!w)return!1;let E=w[1];if(existsSync(join(e,`.git`,E)))return!1;let D=join(e,`.git`,`packed-refs`);if(existsSync(D)){let e=readFileSync(D,`utf-8`);if(RegExp(`^[0-9a-f]+\\s+${E}$`,`m`).test(e))return!1}return!0}catch{return!1}}function backoffMs(e){return e>=8?3600*1e3:e>=5?900*1e3:e>=3?300*1e3:0}var SyncEngine=class{state=`dormant`;projectDir;contentDir;contentFilter;contentRoot;pullIntervalSeconds;pushIntervalSeconds;syncEnabled;credentialArgs;cc1Broadcaster;onStateChange;setBatchInProgress;onAutoDisable;pullTimer=null;pushTimer=null;stateSaveTimer=null;lastSyncUtc=null;lastFetchUtc=null;lastPushedSha=null;consecutiveFailures=0;ahead=0;behind=0;conflictCount=0;error;pausedReason;currentBranch=`main`;pullInFlight=!1;pushInFlight=!1;hasRemote=!1;identityUnresolved=!1;statePath;conflictStore;constructor(e){this.projectDir=e.projectDir,this.contentDir=e.contentDir,this.contentFilter=e.contentFilter,this.contentRoot=e.contentRoot??``,this.pullIntervalSeconds=e.pullIntervalSeconds??30,this.pushIntervalSeconds=e.pushIntervalSeconds??60,this.syncEnabled=e.syncEnabled,this.credentialArgs=e.credentialArgs??[],this.cc1Broadcaster=e.cc1Broadcaster??null,this.onStateChange=e.onStateChange,this.setBatchInProgress=e.setBatchInProgress,this.onAutoDisable=e.onAutoDisable,this.statePath=resolve(getLocalDir(this.projectDir),`sync-state.json`),this.conflictStore=new ConflictStore(this.projectDir,this.currentBranch)}async start(){if(this.state!==`dormant`)return;this.loadState();let e=!1;try{let t=createGitInstance(this.projectDir,{credentialArgs:this.credentialArgs});e=(await t.git.raw(`remote`,`-v`)).trim().length>0,this.hasRemote=e;try{let e=(await t.git.raw(`rev-parse`,`--abbrev-ref`,`HEAD`)).trim();e&&e!==`HEAD`&&(this.currentBranch=e,this.conflictStore.setBranch(e))}catch{}}catch(e){log.warn({err:e},`[sync] remote detection failed`)}if(this.syncEnabled!==!0){e&&this.transitionTo(`disabled`),log.info({hasRemote:e,syncEnabled:this.syncEnabled},`[sync] sync not enabled — staying inactive`);return}if(!e){log.info({},`[sync] no remote detected — staying dormant`);return}this.transitionTo(`idle`);let t=existsSync(join(this.projectDir,`.git`,`MERGE_HEAD`));if(this.conflictCount>0&&!t)log.warn({count:this.conflictCount},`[sync] persisted conflicts but no MERGE_HEAD — clearing stale state`),this.conflictStore.clear(),this.conflictCount=0;else if(this.conflictCount>0&&t)try{let e=(await createGitInstance(this.projectDir,{credentialArgs:this.credentialArgs}).git.raw([`diff`,`--name-only`,`--diff-filter=U`])).trim(),t=new Set(e?e.split(`
|
|
3255
3256
|
`).map(e=>e.trim()).filter(Boolean):[]),S=this.conflictCount;for(let e of this.conflictStore.list())t.has(e.file)||this.conflictStore.removeConflict(e.file);this.conflictCount=this.conflictStore.count(),this.conflictCount<S&&log.info({cleared:S-this.conflictCount,remaining:this.conflictCount},`[sync] reconciled conflicts.json against git unmerged index`)}catch(e){log.warn({err:e},`[sync] failed to reconcile conflicts with git index`)}if(t&&this.conflictCount===0){log.warn({},`[sync] stale MERGE_HEAD detected with no tracked conflicts — aborting merge`);try{await createGitInstance(this.projectDir,{credentialArgs:this.credentialArgs}).git.raw([`merge`,`--abort`])}catch(e){log.warn({err:e},`[sync] git merge --abort for stale MERGE_HEAD failed`)}}if(this.conflictCount>0){this.transitionTo(`conflict`),log.warn({count:this.conflictCount},`[sync] restarted with active conflicts — sync paused`);return}let S=computeRemainingMs(this.lastFetchUtc,this.pullIntervalSeconds),w=computeRemainingMs(this.lastSyncUtc,this.pushIntervalSeconds);this.schedulePull(S>0?S:void 0),this.schedulePush(w>0?w:void 0),log.info({branch:this.currentBranch,pullDelayMs:S,pushDelayMs:w},`[sync] started`)}stop(){this.pullTimer!==null&&(clearTimeout(this.pullTimer),this.pullTimer=null),this.pushTimer!==null&&(clearTimeout(this.pushTimer),this.pushTimer=null),this.stateSaveTimer!==null&&(clearTimeout(this.stateSaveTimer),this.stateSaveTimer=null),this.state!==`dormant`&&this.transitionTo(`dormant`)}async destroy(){this.stop(),this.saveStateNow()}async setEnabled(e){if(this.syncEnabled!==e){if(this.syncEnabled=e,!e){this.pullTimer!==null&&(clearTimeout(this.pullTimer),this.pullTimer=null),this.pushTimer!==null&&(clearTimeout(this.pushTimer),this.pushTimer=null);let e=3e4,t=Date.now();for(;this.pullInFlight||this.pushInFlight;){if(Date.now()-t>3e4){log.warn({pullInFlight:this.pullInFlight,pushInFlight:this.pushInFlight},`[sync] setEnabled(false): timed out waiting for in-flight cycle to drain`);break}await setTimeout$1(50)}this.pausedReason=void 0,this.error=void 0,this.transitionTo(this.hasRemote?`disabled`:`dormant`),this.saveStateNow();return}if(this.hasRemote=await this.probeRemote(),this.pausedReason=void 0,this.error=void 0,this.consecutiveFailures=0,!this.hasRemote){this.transitionTo(`dormant`),this.saveStateNow();return}this.transitionTo(`idle`),this.schedulePull(0),this.schedulePush(),this.saveStateNow()}}async trigger(e=`sync`){this.consecutiveFailures=0,(this.pausedReason===`dirty-tree`||this.pausedReason===`external-changes-pending`)&&(this.pausedReason=void 0,this.error=void 0),this.state===`dormant`||this.state===`disabled`||this.state===`conflict`||this.state===`auth-error`?log.warn({op:e,state:this.state,syncEnabled:this.syncEnabled,hasRemote:this.hasRemote,pausedReason:this.pausedReason,conflictCount:this.conflictCount},`[sync] trigger(${e}) ignored — state=${this.state}`):log.info({op:e,state:this.state},`[sync] trigger(${e}) running`),e===`push`?await this.runPushCycle():(e===`pull`||await this.runPushCycle(),await this.runPullCycle())}getStatus(){return{state:this.state,lastSyncUtc:this.lastSyncUtc,lastFetchUtc:this.lastFetchUtc,lastPushedSha:this.lastPushedSha,ahead:this.ahead,behind:this.behind,consecutiveFailures:this.consecutiveFailures,conflictCount:this.conflictCount,hasRemote:this.hasRemote,syncEnabled:this.syncEnabled===!0,identityUnresolved:this.identityUnresolved,error:this.error,pausedReason:this.pausedReason}}async refreshIdentity(){let e=await resolveGitIdentity(this.projectDir)===null;this.identityUnresolved!==e&&(this.identityUnresolved=e,this.cc1Broadcaster?.signal(`sync-status`))}async refreshRemote(){this.hasRemote||await this.probeRemote()&&(this.hasRemote=!0,log.info({syncEnabled:this.syncEnabled},`[sync] remote detected post-boot — re-evaluating state`),this.syncEnabled===!0?(this.transitionTo(`idle`),this.schedulePull(0),this.schedulePush()):this.transitionTo(`disabled`))}async probeRemote(){if(!existsSync(join(this.projectDir,`.git`)))return!1;try{return(await createGitInstance(this.projectDir,{credentialArgs:this.credentialArgs}).git.raw(`remote`,`-v`)).trim().length>0}catch(e){return log.warn({err:e},`[sync] remote detection failed`),!1}}getConflicts(){return this.conflictStore.list()}async resolveConflict(e,t,S){await this.conflictStore.resolveConflict(e,t,S),this.conflictCount=this.conflictStore.count(),this.conflictCount===0&&this.state===`conflict`&&(this.transitionTo(`idle`),this.pausedReason=void 0,this.schedulePull(),this.schedulePush()),this.scheduleSaveState()}updateCurrentBranch(e){e===null?this.state!==`dormant`&&this.state!==`disabled`&&(this.transitionTo(`disabled`),this.pausedReason=`detached-head`,this.scheduleSaveState()):this.currentBranch!==e&&(this.currentBranch=e,this.conflictStore.setBranch(e),this.state===`disabled`&&this.pausedReason===`detached-head`&&(this.pausedReason=void 0,this.transitionTo(`idle`),this.schedulePull(),this.schedulePush()))}schedulePull(e){this.pullTimer!==null&&clearTimeout(this.pullTimer);let t=e??this.effectivePullDelayMs();this.pullTimer=setTimeout(()=>{this.pullTimer=null,this.runPullCycle().catch(e=>{log.error({err:e},`[sync] pull cycle uncaught error`)})},t)}schedulePush(e){this.pushTimer!==null&&clearTimeout(this.pushTimer);let t=e??jitteredMs(this.pushIntervalSeconds);this.pushTimer=setTimeout(()=>{this.pushTimer=null,this.runPushCycle().catch(e=>{log.error({err:e},`[sync] push cycle uncaught error`)})},t)}effectivePullDelayMs(){let e=this.consecutiveFailures,t=backoffMs(e);return t>0?t:jitteredMs(this.pullIntervalSeconds)}async runPullCycle(){if(!this.pullInFlight&&!(this.state===`dormant`||this.state===`disabled`)){if(this.state===`conflict`){this.schedulePull();return}if(isUnbornHead(this.projectDir)){this.schedulePull();return}this.pullInFlight=!0;try{await this.doPullCycle()}finally{this.pullInFlight=!1,this.schedulePull()}}}async doPullCycle(){let e=createGitInstance(this.projectDir,{credentialArgs:this.credentialArgs}),t;try{let S=(await e.git.raw(`rev-parse`,`--abbrev-ref`,`HEAD`)).trim();if(!S||S===`HEAD`){this.transitionTo(`disabled`),this.pausedReason=`detached-head`,log.warn({},`[sync] detached HEAD — pausing sync`);return}t=S,this.currentBranch=t}catch(e){this.handleError(classifyGitError(e instanceof Error?e:Error(String(e))));return}this.transitionTo(`fetching`);try{await e.git.fetch(`origin`),this.lastFetchUtc=new Date().toISOString(),this.consecutiveFailures=0,this.error=void 0}catch(e){let t=classifyGitError(e instanceof Error?e:Error(String(e)));this.handleError(t);return}try{let t=await e.git.status();this.ahead=t.ahead,this.behind=t.behind}catch{}if(this.behind>0&&this.conflictCount===0){this.transitionTo(`pulling`),this.setBatchInProgress?.(!0);try{if(await this.commitDirtyContentFilesToHead(e),!await this.pauseIfNonContentDirty(e))return;await e.git.merge([`origin/${t}`]),this.lastSyncUtc=new Date().toISOString(),this.behind=0,this.transitionTo(`idle`)}catch(e){let t=classifyGitError(e instanceof Error?e:Error(String(e)));t.class===`semantic`&&t.subclass===`merge-conflict`?await this.handleMergeConflict():this.handleError(t);return}finally{this.setBatchInProgress?.(!1)}}else this.transitionTo(`idle`);this.scheduleSaveState()}async runPushCycle(){if(!this.pushInFlight&&!(this.state===`dormant`||this.state===`disabled`)&&!(this.state===`conflict`||this.state===`auth-error`)){if(isUnbornHead(this.projectDir)){this.schedulePush();return}this.pushInFlight=!0;try{await this.doPushCycle(1)}finally{this.pushInFlight=!1,this.schedulePush()}}}async doPushCycle(e=0){let t=this.gatherContentFilesSync(),S=join(tmpdir(),`ok-sync-idx-${process.pid}-${Date.now()}.idx`),w=null;this.transitionTo(`pushing`);try{await withParentLock(async()=>{let e=createGitInstance(this.projectDir,{credentialArgs:this.credentialArgs,gitIndexFile:S});if(isUnbornHead(this.projectDir)){log.info({},`[sync] repo has no commits yet — skipping push cycle`),this.transitionTo(`idle`);return}let E;try{E=(await e.git.revparse(`HEAD`)).trim()}catch(e){let t=e instanceof Error?e.message:String(e),S=`${t}\n${e.git?.toString()??t}`;if(/unknown revision or path not in the working tree/i.test(S)||/ambiguous argument 'HEAD'/i.test(S)||/does not have any commits yet/i.test(S)){log.info({},`[sync] repo has no commits yet — skipping push cycle`),this.transitionTo(`idle`);return}this.handleError(classifyGitError(e instanceof Error?e:Error(String(e))));return}await e.git.raw([`read-tree`,E]);let D=new Set;try{let t=(await e.git.raw([`ls-tree`,`-r`,`--name-only`,E])).trim();for(let e of t?t.split(`
|
|
@@ -3260,5 +3261,5 @@ In headless mode, write the recap into the research article's "Further reading"
|
|
|
3260
3261
|
`,`
|
|
3261
3262
|
`).split(`
|
|
3262
3263
|
`),S=[],w=!1,E=``;for(let e of t){let t=/^\s{0,3}([`~]{3,})/.exec(e);if(t){w?RegExp(`^\\s{0,3}${E[0]==="`"?"`":`~`}{${E.length},}\\s*$`).test(e)&&(w=!1,E=``):(w=!0,E=t[1]);continue}if(w)continue;let D=stripInlineCodeSpans(e);for(TAG_VALUE_RE.lastIndex=0;;){let e=TAG_VALUE_RE.exec(D);if(e===null)break;let t=e[2];t&&S.push(t)}}return S}var TagIndex=class{contentDir;contentFilter;state=createEmptyState();constructor(e){this.contentDir=e.contentDir,this.contentFilter=e.contentFilter}updateDocumentFromMarkdown(e,t){if(!(isSystemDoc(e)||isConfigDoc(e)))try{let{frontmatter:S,body:w}=stripFrontmatter(t),E=extractFrontmatterTags(S?unwrapFrontmatterFences(S):``),D=extractInlineTagsFromBody(w),O=new Set([...E,...D]),k=new Set;for(let e of O)for(let t of expandTagToHierarchy(e))k.add(t);this.applyDocSnapshot(e,O,k)}catch(t){console.warn(`[tag-index] Failed to scan ${e} for tag extraction:`,t),this.deleteDocument(e)}}deleteDocument(e){if(isSystemDoc(e)||isConfigDoc(e))return;let t=this.state.byDoc.get(e);if(t){for(let S of t){let t=this.state.byTag.get(S);t&&(t.delete(e),t.size===0&&this.state.byTag.delete(S))}this.state.byDoc.delete(e),this.state.byDocLiteral.delete(e)}}renameDocument(e,t,S){this.deleteDocument(e),this.updateDocumentFromMarkdown(t,S)}getDocsForTag(e){let t=this.state.byTag.get(e);return t?[...t].sort((e,t)=>e.localeCompare(t)):[]}getDocsForTagWithMatches(e){let t=this.state.byTag.get(e);if(!t)return[];let S=[];for(let w of t){let t=this.state.byDocLiteral.get(w);if(!t)continue;let E=tagsMatchingPrefix(t,e);S.push({docName:w,matchingTags:[...E].sort((e,t)=>e.localeCompare(t))})}return S.sort((e,t)=>e.docName.localeCompare(t.docName))}getAllTags(){let e=[...this.state.byTag.entries()],t=e.map(([e])=>e),S=new Set;for(let e of t){let t=e.indexOf(`/`);t>0&&S.add(e.slice(0,t));let w=t;for(;w>0;)S.add(e.slice(0,w)),w=e.indexOf(`/`,w+1)}return e.map(([e,t])=>({name:e,count:t.size,isLeaf:!S.has(e)})).sort((e,t)=>e.name.localeCompare(t.name))}init(){if(this.state=createEmptyState(),!existsSync(this.contentDir))return;let e=this.listDocsWithPaths();for(let{docName:t,filePath:S}of e)try{let e=readFileSync(S,`utf-8`);this.updateDocumentFromMarkdown(t,e)}catch(e){console.warn(`[tag-index] Failed to read ${t} during init:`,e)}}applyDocSnapshot(e,t,S){let w=this.state.byDoc.get(e)??new Set;for(let t of w){if(S.has(t))continue;let w=this.state.byTag.get(t);w&&(w.delete(e),w.size===0&&this.state.byTag.delete(t))}for(let t of S){let S=this.state.byTag.get(t);S||(S=new Set,this.state.byTag.set(t,S)),S.add(e)}S.size===0?(this.state.byDoc.delete(e),this.state.byDocLiteral.delete(e)):(this.state.byDoc.set(e,S),this.state.byDocLiteral.set(e,t))}listDocsWithPaths(){let e=[];this.walkContentDir(this.contentDir,e),e.sort((e,t)=>e.docName===t.docName?t.filePath.localeCompare(e.filePath):e.docName.localeCompare(t.docName));let t=new Set;return e.filter(({docName:e})=>t.has(e)?!1:(t.add(e),!0))}walkContentDir(e,t){let S;try{S=readdirSync(e,{withFileTypes:!0})}catch(t){console.warn(`[tag-index] Failed to read directory ${e}:`,t);return}for(let w of S){let S=join(e,w.name);if(w.isDirectory()){let e=relative(this.contentDir,S);if(this.contentFilter&&e&&this.contentFilter.isDirExcluded(e))continue;this.walkContentDir(S,t);continue}if(!w.isFile()||!isSupportedDocFile(w.name))continue;let E=relative(this.contentDir,S);this.contentFilter?.isExcluded(E)||t.push({docName:stripDocExtension(E),filePath:S})}}};const PARK_SNAPSHOT_ORIGIN=(()=>{let e=Object.freeze({origin:`park-snapshot`,paired:!0});return Object.freeze({source:`local`,skipStoreHooks:!1,context:e})})();function createServer$1(e){let{contentDir:t,projectDir:S=t,quiet:w=!0,debounce:E=2e3,maxDebounce:D=1e4,gitEnabled:O=!0,commitDebounceMs:k=3e4,wipRef:j=`refs/wip/main`,configHomedirOverride:F,enableTestRoutes:L=!1,shadowRepo:B,contentRoot:H,destroyTimeoutMs:q=1e4,localOpCliArgs:J,skipStateManifestCheck:Y=!1}=e,ee=getLogger(`server`);function te(){let e=readConfigSafely({absPath:resolveConfigPath(`project-local`,S),sideline:!1,warn:e=>ee.warn({message:e},`[config] could not read project-local config`)}),t=e.value.autoSync?.enabled;return t==null?(e.valid||ee.warn({},`[config] project-local autoSync.enabled unavailable (config invalid) — falling back to project config`),readConfigSafely({absPath:resolveConfigPath(`project`,S),sideline:!1,warn:e=>ee.warn({message:e},`[config] could not read project config`)}).value.autoSync?.enabled===!0):t===!0}initTelemetry();let ne=randomUUID(),ae=getLocalDir(S);if(acquireServerLock(ae,{port:e.port??0,worktreeRoot:S,kind:e.lockKind??`interactive`,capabilities:[`http`,`ws`]}),!Y)try{assertCompatibleStateManifest({lockDir:ae,shadowRepoDir:resolveShadowDir(S)})}catch(e){throw releaseServerLock(ae),e}let oe=createBasenameIndex(),se=(e,t)=>oe.resolveEmbed(e,t),ce=(e,S)=>{let w=oe.resolveEmbed(e,S);if(!w&&e.includes(`/`)&&(w=e.replace(/^\.?\//,``)),!w)return null;let E=resolve(t,w),D=resolve(t);if(E!==D&&!E.startsWith(`${D}/`))return null;try{let e=statSync(E);return e.isFile()?e.size:null}catch{return null}},ue,de,fe,me,ge,_e,ve,ye=null,Ce=null,we=null,Te=null,De=new Set,je=!1,Me,Pe,Ie,Re=new Promise((e,t)=>{Pe=e,Ie=t});function ze(e){ye?.signal(e)}let Be=2e3,Ve=null;function Ue(){Ve!==null&&clearTimeout(Ve),Ve=setTimeout(()=>{Ve=null,de.saveToDisk().catch(e=>{console.warn(`[backlinks] Failed to persist debounced cache:`,e)})},2e3)}let We=new RecentlyRemovedDocs(void 0,{onEviction:()=>incrementRecentlyRemovedDocsEviction(),onSizeChange:e=>setRecentlyRemovedDocsSize(e)}),Ge=(e,t)=>{isSystemDoc(e)||isConfigDoc(e)||We.setRenamed(e,t)},Ke=e=>{if(!(isSystemDoc(e)||isConfigDoc(e))){if(We.peek(e)?.kind===`renamed`){console.info(JSON.stringify({event:`recently-removed-docs-unpaired-delete-suppressed`,docName:e,source:`watcher-delete`}));return}We.setDeleted(e)}},Xe=e=>{isSystemDoc(e)||isConfigDoc(e)||We.delete(e)};try{ue=createContentFilter({projectDir:S,contentDir:t,onAfterRebuild:()=>{de.rebuildFromDisk(getActiveBranch()).catch(e=>{getLogger(`server-factory`).warn({err:e},`[content-filter] backlink-index rebuild failed after onAfterRebuild`)});try{fe.init()}catch(e){getLogger(`server-factory`).warn({err:e},`[content-filter] tag-index rebuild failed after onAfterRebuild`)}try{let e=Lt?.pruneFileIndexNowExcluded()??0;e>0&&getLogger(`server-factory`).info({pruned:e},`[content-filter] pruned now-excluded entries from fileIndex`)}catch(e){getLogger(`server-factory`).warn({err:e},`[content-filter] fileIndex prune failed after onAfterRebuild`)}}}),de=new BacklinkIndex({projectDir:S,contentDir:t,contentFilter:ue}),fe=new TagIndex({contentDir:t,contentFilter:ue});try{fe.init()}catch(e){console.warn(`[server-factory] tag-index init failed; continuing with empty index:`,e)}me={current:B},ge=createPersistenceExtension({contentDir:t,projectDir:S,gitEnabled:O,commitDebounceMs:k,wipRef:j,shadowRef:me,contentRoot:H,backlinkIndex:de,configHomedirOverride:F,getCurrentBranch:()=>Rt?.getLastKnownBranch()??null,resolveEmbed:se,resolveSize:ce,getPrincipal:()=>Te,onAgentCommit:()=>ye?.signal(`session-activity`),onDiskFlush:(e,t)=>ye?.emitDiskAck(e,t),onConfigRejected:(e,t)=>ye?.emitConfigValidationRejected(e,t),mdManager:e.mdManager}),_e=new Hocuspocus({quiet:w,debounce:E,maxDebounce:D,extensions:[ge.extension]});let q=_e.shouldUnloadDocument.bind(_e);_e.shouldUnloadDocument=e=>{if(De.has(e)||je&&q(e))return!0;let t=e.name;return isSystemDoc(t)||isConfigDoc(t)||getReconciledBase(t)!==void 0||e.getXmlFragment(`default`).length!==0||e.getText(`source`).length!==0?!1:q(e)},Me=async e=>{De.add(e);try{await _e.unloadDocument(e)}finally{De.delete(e)}},ye=new CC1Broadcaster(_e),Ce=new AgentFocusBroadcaster(_e),we=new AgentPresenceBroadcaster(_e),ve=new AgentSessionManager(_e);let Y=createLiveDerivedIndexExtension({backlinkIndex:de,tagIndex:fe,signalChannel:ze});_e.configuration.extensions.push(Y),_e.configuration.extensions.push({__kind:`principal-auth`,async onAuthenticate(e){let t=e.token,S=parseHocuspocusAuthToken(t),w=S?.expectedServerInstanceId;if(typeof w==`string`&&w.length>0&&w!==ne)throw new HocuspocusAuthRejection(`server-instance-mismatch`,`server instance mismatch: client claimed ${w}, this server is ${ne}`);let E=S?.expectedBranch,D=getActiveBranch();if(typeof E==`string`&&E.length>0&&E!==D)throw new HocuspocusAuthRejection(`branch-mismatch`,`branch mismatch: client claimed ${E}, server is on ${D}`);if(!S)return;let O=e.context;typeof S.principalId==`string`&&(Te&&S.principalId===Te.id?O.principalId=Te.id:Te?console.warn(JSON.stringify({event:`principal-token-mismatch`,claimed:S.principalId,loaded:Te.id})):O.principalId=S.principalId),typeof S.tabSessionId==`string`&&(O.tabSessionId=S.tabSessionId),O.kind=`human`}}),_e.configuration.extensions.push({__kind:`config-doc-admission-guard`,async onAuthenticate(e){if(!isConfigDoc(e.documentName))return;let t=e.request,S=t.socket?.remoteAddress;if(S!==void 0&&!isLoopbackAddress(S))throw Error(`config-doc admission requires loopback peer (peer=${S}, doc=${e.documentName})`);let w=e.requestHeaders,E=(w&&typeof w.get==`function`?w.get(`host`):null)??t.headers?.host??void 0;if(!isAllowedWorkspaceHostHeader(E))throw Error(`config-doc admission requires loopback Host header (host=${E??`<absent>`}, doc=${e.documentName})`)}});let ee=resolve(t);function te(e){if(!isSafeDocName(e))return null;let t=resolve(ee,`${e}${getDocExtension(e)}`);return!t.startsWith(`${ee}/`)&&t!==ee?null:t}_e.configuration.extensions.push({__kind:`removal-redirect-guard`,async onAuthenticate(e){await runRemovalRedirectGuard(e.documentName,{recentlyRemovedDocs:We,resolveFilePath:te,fileExists:existsSync})}}),_e.configuration.extensions.push({__kind:`system-doc-broadcast-guard`,async beforeHandleMessage(e){if(e.documentName!==`__system__`)return;let t=new IncomingMessage(e.update);if(t.readVarString(),t.readVarUint()===MessageType.BroadcastStateless)throw Error(`inbound BroadcastStateless on ${SYSTEM_DOC_NAME} rejected — server-only channel`)}});let ae=createApiExtension({hocuspocus:_e,sessionManager:ve,contentDir:t,contentFilter:ue,serverInstanceId:ne,getFileIndex:()=>Lt?Lt.getFileIndex():new Map,getFolderIndex:()=>Lt?Lt.getFolderIndex():new Map,getAliasMap:()=>Lt?Lt.getAliasMap():new Map,rescanFiles:()=>Lt?.rescanFromDisk(),enableTestRoutes:L,shadowRef:me,flushGitCommit:()=>ge.flushPendingGitCommit(),flushContributors:()=>ge.flushContributors(),getCurrentBranch:()=>Rt?.getLastKnownBranch()??null,getDiskAckSVs:()=>ye?.getLatestDiskAckSVsAsBase64()??{},contentRoot:H,backlinkIndex:de,tagIndex:fe,signalChannel:ze,agentFocusBroadcaster:Ce,agentPresenceBroadcaster:we,onAgentWrite:e.onAgentWrite,getSyncEngine:()=>zt,localOpCliArgs:J,projectDir:S,resolveEmbed:se,getPrincipal:()=>Te,forceUnloadDocument:Me,ready:Re,recentlyRemovedDocs:We});_e.configuration.extensions.push(ae),_e.configuration.extensions.push(createServerObserverExtension({mdManager,schema,shadowRef:me,contentRoot:H,getCurrentBranch:()=>Rt?.getLastKnownBranch()??null,resolveEmbed:se,resolveSize:ce})),_e.configuration.extensions.push(createSyncHandshakeSpanExtension())}catch(e){throw releaseServerLock(ae),e}let $e=null,nt=new Map,rt=[];function it(e,t){let S=resolve(e,`rescue`),w=resolve(S,`${t}${getDocExtension(t)}`);return w.startsWith(`${S}/`)?w:null}function at(e){let t=_e.documents.get(e);if(!t)return null;let{frontmatter:S,body:w}=stripFrontmatter(t.getText(`source`).toString());return prependFrontmatter(S,w)}let st=(e,t)=>applyExternalChange(_e,e,t,se,ce),vt=e=>{if(!e)return;let t=`[[${e}]]`;for(let[S]of _e.documents){if(isSystemDoc(S)||isConfigDoc(S))continue;let w=_e.documents.get(S);if(!w)continue;let E=w.getText(`source`).toString();if(E.includes(t))try{w.transact(()=>{applyDiskContentToDoc(w,E,se,S)},FILE_WATCHER_ORIGIN)}catch(t){ee.error({err:t,docName:S,assetBasename:e},`[asset-event] failed to re-render ${S} for asset basename ${e}`)}}},Tt=null,Et=e=>{e&&(Tt===null&&(Tt=new Set,setImmediate(()=>{let e=Tt;if(Tt=null,e)try{for(let t of e)vt(t)}catch(t){ee.error({err:t,basenames:[...e]},`[asset-event] dedup rerender pass crashed`)}})),Tt.add(e))};function Dt(e){switch(e.kind){case`rename`:return e.newDocName;case`asset-create`:case`asset-delete`:case`folder-create`:case`folder-delete`:return e.relativePath;case`create`:case`update`:case`delete`:case`conflict`:return e.docName;default:return assertNeverDiskEvent(e)}}async function jt(e){try{switch(e.kind){case`create`:ee.info({docName:e.docName},`[reconcile] create: ${e.docName}`),de.updateDocumentFromMarkdown(e.docName,e.content),Ue(),fe.updateDocumentFromMarkdown(e.docName,e.content),ze(`files`),ze(`backlinks`),ze(`graph`),ze(`tags`),Xe(e.docName);break;case`update`:{let{docName:t,content:S}=e,w=_e.documents.get(t);if(!w){de.updateDocumentFromMarkdown(t,S),Ue(),fe.updateDocumentFromMarkdown(t,S),ze(`backlinks`),ze(`graph`),ze(`tags`);return}let E=getReconciledBase(t)??``,D=at(t)??E,O=reconcile({docName:t,base:E,ours:D,theirs:S}),k=contentHash(E).slice(0,6),j=contentHash(D).slice(0,6),F=contentHash(S).slice(0,6);switch(ee.info({docName:t,base:k,ours:j,theirs:F,result:O.kind},`[reconcile] ${t} base=${k} ours=${j} theirs=${F} result=${O.kind}`),O.kind){case`noop`:de.updateDocumentFromMarkdown(t,S),Ue(),fe.updateDocumentFromMarkdown(t,S),ze(`backlinks`),ze(`graph`),ze(`tags`);break;case`clean`:try{st(t,O.newContent),setReconciledBase(t,O.newContent),incrementReconcile(),de.updateDocumentFromMarkdown(t,S),Ue(),fe.updateDocumentFromMarkdown(t,S),ze(`backlinks`),ze(`graph`),ze(`tags`)}catch(e){ee.error({err:e,docName:t},`[reconcile] failed to apply clean content to Y.Doc for ${t}`),setReconciledBase(t,S)}break;case`merged`:try{st(t,O.newContent),setReconciledBase(t,O.newContent),incrementReconcile(),de.updateDocumentFromMarkdown(t,S),Ue(),fe.updateDocumentFromMarkdown(t,S),ze(`backlinks`),ze(`graph`),ze(`tags`)}catch(e){ee.error({err:e,docName:t},`[reconcile] failed to apply merged content to Y.Doc for ${t}`),setReconciledBase(t,S)}break;case`conflicts`:try{st(t,O.newContent),setReconciledBase(t,O.newContent),incrementReconcile(),incrementConflict(),de.updateDocumentFromMarkdown(t,S),Ue(),fe.updateDocumentFromMarkdown(t,S),ze(`backlinks`),ze(`graph`),ze(`tags`)}catch(e){ee.error({err:e,docName:t},`[reconcile] failed to apply conflict content to Y.Doc for ${t}`),setReconciledBase(t,S)}break;case`refused`:{incrementConflict();let e=w.getMap(`lifecycle`);e.set(`status`,`conflict`),e.set(`reason`,O.reason);break}}break}case`delete`:{let{docName:t}=e,S=_e.documents.get(t);if(!S){de.deleteDocument(t),Ue(),fe.deleteDocument(t),ze(`files`),ze(`backlinks`),ze(`graph`),ze(`tags`),Ke(t),console.info(JSON.stringify({event:`recently-removed-docs-populate`,docName:t,kind:`deleted`,source:`watcher-delete`}));return}let w=getReconciledBase(t)??``,E=at(t)??``,D=E!==w;if(D&&me.current){let e=me.current,S=Rt?.getLastKnownBranch()??`main`;queueMicrotask(()=>{saveInMemoryCheckpoint(e,H??``,{kind:`external-change-rescue`,docName:t,contents:E,label:`External change recovered @ ${new Date().toISOString()}`,branch:S,metadata:{incomingDiskSha:``}}).then(()=>{incrementRescueBuffer(),ee.info({docName:t},`[reconcile] rescue checkpoint saved (delete): ${t}`)}).catch(e=>{ee.error({docName:t,err:e},`[reconcile] rescue checkpoint write failed: ${t}`)})})}S.getMap(`lifecycle`).set(`status`,`deleted-upstream`),deleteReconciledBase(t),de.deleteDocument(t),Ue(),fe.deleteDocument(t),ee.info({docName:t,isDirty:D},`[reconcile] delete: ${t} (dirty=${D})`),_e.closeConnections(t),await Me(S),ze(`files`),ze(`backlinks`),ze(`graph`),ze(`tags`),Ke(t),console.info(JSON.stringify({event:`recently-removed-docs-populate`,docName:t,kind:`deleted`,source:`watcher-delete`}));break}case`rename`:{let{oldDocName:t,newDocName:S,content:w}=e,E=_e.documents.get(t);if(deleteReconciledBase(t),setReconciledBase(S,w),de.renameDocument(t,S,w),Ue(),fe.renameDocument(t,S,w),E){let e=E.getMap(`lifecycle`);e.set(`status`,`renamed`),e.set(`newPath`,S)}ee.info({oldDocName:t,newDocName:S},`[reconcile] rename: ${t} → ${S}`),ze(`files`),ze(`backlinks`),ze(`graph`),ze(`tags`),Ge(t,S),console.info(JSON.stringify({event:`recently-removed-docs-populate`,from:t,to:S,kind:`renamed`,source:`watcher-rename`}));break}case`conflict`:{let{docName:t}=e,S=_e.documents.get(t);if(!S)return;let w=S.getMap(`lifecycle`);w.set(`status`,`conflict`),w.set(`reason`,`conflict-markers`),ee.info({docName:t},`[reconcile] conflict markers detected: ${t}`);break}case`asset-create`:oe.add(e.relativePath),ze(`files`),Et(basename(e.relativePath));break;case`asset-delete`:oe.remove(e.relativePath),ze(`files`),Et(basename(e.relativePath));break;case`folder-create`:case`folder-delete`:ze(`files`);break;default:assertNeverDiskEvent(e)}}catch(t){let S=Dt(e);ee.error({err:t,kind:e.kind,label:S},`[reconcile] failed to handle ${e.kind} for ${S}`)}}let Mt=[];async function Ft(e){if(isBatchInProgress()){Mt.push(e);return}await jt(e)}async function It(){let e=Mt.splice(0,Mt.length);for(let t of e)await jt(t)}let Lt=null,Rt=null,zt=null,Bt=null;async function Vt(e){if(_e.documents.size===0)return;let t=!1,S=new Promise(e=>{_e.configuration.extensions.push({async afterUnloadDocument({instance:S}){!t&&S.getDocumentsCount()===0&&(t=!0,e())}})}),w=Array.from(_e.documents.keys());_e.closeConnections(),_e.flushPendingStores();for(let e of _e.documents.values())e.getConnectionsCount()===0&&_e.unloadDocument(e).catch(t=>{console.warn(JSON.stringify({event:`ok-shutdown-unload-document-failed`,docName:e.name,reason:t instanceof Error?t.message:String(t)}))});let E,D=new Promise((S,D)=>{E=setTimeout(()=>{t=!0;let S=Array.from(_e.documents.keys()),E=[],O=[];if(me.current){for(let e of S)if(!(isSystemDoc(e)||isConfigDoc(e)))try{let t=at(e);if(t===null){ee.warn({docName:e},`[rescue] skipping ${e} — document dropped from map mid-rescue`),O.push(e);continue}let S=it(me.current.gitDir,e);if(!S){ee.warn({docName:e,gitDir:me.current.gitDir},`[rescue] path-traversal guard rejected docName: ${e}`),O.push(e);continue}mkdirSync(dirname(S),{recursive:!0}),writeFileSync(S,t,`utf-8`),incrementRescueBuffer(),E.push(e),ee.info({docName:e},`[rescue] rescue buffer saved on flush timeout: ${e}`)}catch(t){O.push(e),ee.error({err:t,docName:e},`[rescue] failed to write rescue buffer for ${e}`)}}else ee.warn({stillLoadedCount:S.length},`[rescue] shadow repo unavailable at flush timeout — ${S.length} doc(s) will be lost: [${S.join(`, `)}]`),O.push(...S);let k=E.length>0||O.length>0?` — rescued [${E.join(`, `)}]${O.length>0?`, lost [${O.join(`, `)}]`:``}`:``;D(Error(`flushAllStoresAndWait timeout after ${e}ms — ${S.length}/${w.length} docs did not unload: [${S.join(`, `)}]${k}`))},e)});try{await Promise.race([S,D])}finally{E!==void 0&&clearTimeout(E)}}async function Ht(){return Bt||(Bt=(async()=>{let e=Date.now(),t=[];je=!0,Ve!==null&&(clearTimeout(Ve),Ve=null);let w,E=await Promise.race([Re.then(()=>`completed`,e=>(ee.debug({err:e},`[server] init incomplete during shutdown`),`failed`)),new Promise(e=>{w=setTimeout(()=>e(`timeout`),5e3)})]);w!==void 0&&clearTimeout(w),E===`timeout`&&ee.warn({},`[server] init did not complete within 5s during shutdown`);let D=_e.documents.size;try{try{try{Rt&&=(await Rt.unsubscribe(),null),Lt&&=(await Lt.unsubscribe(),null);for(let{docName:e,cleanup:t}of rt)try{await t()}catch(t){ee.warn({err:t,docName:e},`[server] failed to stop config-file-watcher for ${e}`)}rt.length=0}catch(e){t.push({phase:`watcher-unsubscribe`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown phase-1 watcher unsubscribe failed`)}try{ye?.destroy(),we?.destroy(),$e&&=(await $e.disconnect(),null);for(let[e,t]of nt)try{await t.disconnect()}catch(t){ee.warn({err:t,docName:e},`[server] failed to disconnect ${e} during shutdown`)}nt.clear()}catch(e){t.push({phase:`cc1-teardown`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown phase-1b CC1 teardown failed`)}try{await ve.closeAll()}catch(e){t.push({phase:`agent-session-drain`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown phase-2 agent session drain failed`)}try{await Vt(q)}catch(e){t.push({phase:`flush-all-stores`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown phase-3 flush failed`)}let e;try{await Promise.race([(async()=>{await ge.flushPendingGitCommit(),await ge.waitForPendingCommits()})(),new Promise((t,S)=>{e=setTimeout(()=>S(Error(`L2 git flush timeout`)),q)})])}catch(e){t.push({phase:`git-commit-flush`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown phase-4 git commit flush failed`)}finally{e!==void 0&&clearTimeout(e)}try{zt&&=(await zt.destroy(),null)}catch(e){t.push({phase:`sync-engine-stop`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown sync-engine-stop failed`)}}finally{if(me.current){try{let e=(await esm_default({baseDir:S,timeout:{block:5e3}}).revparse(`HEAD`)).trim();e&&writeFileSync(resolve(me.current.gitDir,`last-known-head`),e,`utf-8`)}catch{}try{destroyShadowRepo(me.current)}catch(e){t.push({phase:`shadow-repo-release`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown phase-5 destroyShadowRepo failed`)}}let w=Date.now()-e;t.length===0?ee.info({documentCount:D,durationMs:w},`[server] shutdown flushed ${D} documents in ${w}ms`):ee.warn({documentCount:D,durationMs:w,phaseErrors:t},`[server] shutdown flushed ${D} documents in ${w}ms with ${t.length} phase error(s)`)}}finally{try{releaseServerLock(ae)}catch(e){t.push({phase:`server-lock-release`,error:e instanceof Error?e.message:String(e)}),ee.error({err:e},`[server] shutdown phase-6 releaseServerLock failed`)}try{await shutdownTelemetry()}catch(e){t.push({phase:`telemetry-shutdown`,error:e instanceof Error?e.message:String(e)})}}})(),Bt)}let Ut=[];async function Wt(){try{Te=await loadPrincipal(S),ee.info({principalId:Te.id},`[server] principal loaded`)}catch(e){ee.warn({err:e},`[server] principal load failed — browser writes will use SERVICE_WRITER`)}if(!me.current)try{me.current=await initShadowRepo(S),ee.info({gitDir:me.current.gitDir},`[server] history repo initialized at ${me.current.gitDir}`)}catch(e){ee.error({err:e},`[server] history repo init failed`),Ut.push(`shadow-repo`)}if(me.current){let e=null;try{e=loadRenameLogIndex(me.current.gitDir),sweepLazyPopOrphans(me.current.gitDir,e),setRenameLogIndex(me.current.gitDir,e),ee.info({entries:e.byTo.size},`[server] rename log loaded (${e.byTo.size} entries)`)}catch(e){ee.warn({err:e},`[rename-log] boot-time load/sweep failed; rename history unavailable`)}if(e){let t=1e4;try{await Promise.race([gcRenameLog(me.current,e,{rebuild:!0}),new Promise((e,S)=>setTimeout(()=>S(Error(`boot-time GC exceeded ${t}ms`)),t))])}catch(e){ee.warn({err:e},`[rename-log] boot-time GC/rebuild failed; index loaded without GC`)}}}if(me.current)try{await shadowGit(me.current).raw(`rev-parse`,`--git-dir`)}catch(e){let t=e instanceof Error?e.message:String(e);if(t.includes(`not a git repository`)||t.includes(`invalid object`)){ee.warn({},`[server] history repo appears corrupted — reinitializing`);try{me.current=await initShadowRepo(S)}catch(e){ee.error({err:e},`[server] history repo reinit failed`),me.current=void 0,Ut.includes(`shadow-repo`)||Ut.push(`shadow-repo`)}}else ee.error({err:e},`[server] history repo check failed (transient?)`)}if(me.current)try{let e=resolve(me.current.gitDir,`last-known-head`),t=null;try{t=readFileSync(e,`utf-8`).trim()||null}catch{}let w=null;try{w=(await esm_default({baseDir:S,timeout:{block:1e4}}).revparse(`HEAD`)).trim()||null}catch{}if(w!==null){if(w!==t){let e=`main`;try{let t=(await esm_default({baseDir:S,timeout:{block:1e4}}).raw(`rev-parse`,`--abbrev-ref`,`HEAD`)).trim();t&&t!==`HEAD`&&(e=t)}catch{}ee.info({lastKnownHead:t,currentHead:w,branch:e},`[head-drift] lastKnownHead=${t??`null`}, currentHead=${w}, action=import`);try{await commitUpstreamImport(me.current,H??``,t,w,e),incrementUpstreamImport()}catch(e){ee.warn({err:e},`[head-drift] commitUpstreamImport failed — continuing`)}}else ee.info({currentHead:w},`[head-drift] lastKnownHead=${t??`null`}, currentHead=${w}, action=noop`);try{writeFileSync(e,w,`utf-8`)}catch(e){ee.warn({err:e},`[head-drift] failed to write last-known-head`)}}}catch(e){ee.warn({err:e},`[head-drift] check failed — continuing`)}try{let e=recoverPendingManagedRename(t,S);if(e.recovered&&e.journal){let t=e.journal.version===2?e.journal.fromPath:e.journal.sourceDocName,S=e.journal.version===2?e.journal.toPath:e.journal.destinationDocName;ee.warn({journalVersion:e.journal.version,fromPath:t,toPath:S,restoredDocNames:e.restoredDocNames},`[managed-rename] recovered pending rename ${t} -> ${S}`)}}catch(e){ee.error({err:e},`[server] managed rename recovery failed`),Ut.push(`managed-rename-recovery`)}try{let e=cleanupOrphanUploadTempfiles(S);(e.deleted>0||e.errors>0)&&ee.info({scanned:e.scanned,deleted:e.deleted,errors:e.errors},`[upload-tempfile-sweep] swept ${e.deleted} orphan tempfile(s)`)}catch(e){ee.error({err:e},`[server] upload-tempfile sweep failed`),Ut.push(`upload-tempfile-sweep`)}try{$e=await _e.openDirectConnection(SYSTEM_DOC_NAME),ye?.emitServerInfo(ne,getActiveBranch())}catch(e){ee.error({err:e},`[server] failed to open __system__ direct connection — CC1 push disabled`),Ut.push(`cc1-push`)}for(let e of CONFIG_DOC_NAMES)try{let t=await _e.openDirectConnection(e);nt.set(e,t)}catch(t){ee.error({err:t,docName:e},`[server] failed to open ${e} direct connection — config bind degraded`),Ut.push(`config-doc:${e}`)}let e=new Map([[CONFIG_DOC_NAME_PROJECT,resolveConfigPath(`project`,S)],[CONFIG_DOC_NAME_PROJECT_LOCAL,resolveConfigPath(`project-local`,S)],[CONFIG_DOC_NAME_USER,resolveConfigPath(`user`,S,F)]]);for(let t of CONFIG_DOC_NAMES){let S=e.get(t);if(S)try{ee.info({docName:t,path:S},`[config-file-watcher] starting`);let e=await startConfigFileWatcher(S,e=>{let S=_e.documents.get(t);ee.info({docName:t,hasDocument:S!==void 0,contentLength:e.length},`[config-file-watcher] file changed`);let w=applyExternalConfigChange(S??null,t,e,ge.configPersistenceCtx);if(ee.info({docName:t,outcome:w},`[config-file-watcher] applyExternalConfigChange outcome`),t===`__config__/project`||t===`__local__/project`){let e=te();zt?.setEnabled(e).catch(t=>{ee.warn({err:t,enabled:e},`[sync] failed to apply autoSync.enabled from config`)})}});rt.push({docName:t,cleanup:e}),ee.info({docName:t,path:S},`[config-file-watcher] started`)}catch(e){ee.warn({err:e,docName:t,path:S},`[config-file-watcher] failed to start for ${t}`),Ut.push(`config-file-watcher:${t}`)}}try{let e=resolve(t,`.okignore`),w=resolve(S,`.gitignore`),E=ee;E.info({okignorePath:e,gitignorePath:w},`[ignore-watcher] starting multi-path watcher for .okignore + .gitignore`);let D=await startMultiPathConfigFileWatcher([e,w],(t,w)=>{(async()=>{if(t===e)try{let e=applyExternalConfigChange(_e.documents.get(`__config__/okignore`)??null,CONFIG_DOC_NAME_OKIGNORE,w,ge.configPersistenceCtx);E.info({docName:CONFIG_DOC_NAME_OKIGNORE,outcome:e},`[ignore-watcher] applyExternalConfigChange outcome`)}catch(e){E.error({err:e,changedPath:relative(S,t)},`[ignore-watcher] applyExternalConfigChange failed; rebuild proceeds independently`)}let D=await ue.rebuildIgnorePatterns();if(D.ok)E.info({changedPath:relative(S,t),patternCount:D.patternCount,nestedFileCount:D.nestedFileCount,durationMs:D.durationMs},`[ignore-watcher] rebuild succeeded — broadcasting files channel`),ye?.signal(`files`);else{let e=relative(S,t)||`.`;E.warn({changedPath:e,error:D.error.message},`[ignore-watcher] rebuild failed — emitting config-ignore-nested-error`),ye?.emitConfigIgnoreNestedError(e,D.error.message)}})().catch(e=>{E.error({err:e,changedPath:relative(S,t)||`.`},`[ignore-watcher] handler threw`)})});rt.push({docName:`__ignore-files__`,cleanup:D}),E.info({okignorePath:e,gitignorePath:w},`[ignore-watcher] multi-path watcher started`)}catch(e){ee.warn({err:e,projectDir:S,contentDir:t},`[ignore-watcher] failed to start multi-path watcher`),Ut.push(`ignore-files-watcher`)}let w=resolveGitDir(S),E=w?readBranchFromHead(w)??`main`:`main`;switchReconciledBaseScope(E),de.switchBranch(E);try{{let e=getActiveBranch();try{if(await de.loadFromDisk(e)){let t=await de.reconcileWithDisk(e);(t.added>0||t.updated>0||t.deleted>0)&&ee.info(t,`[backlinks] startup reconcile: offline changes applied`)}else await de.rebuildFromDisk(e);de.saveToDisk().catch(t=>{console.warn(`[backlinks] Failed to persist startup cache for ${e}:`,t)})}catch(t){ee.error({err:t,branch:e},`[backlinks] startup init failed; index will populate incrementally via watcher`)}}Lt=await startWatcher(t,Ft,ue),fe.init();let e=0;try{seedBasenameIndex({contentDir:t,contentFilter:ue,basenameIndex:oe,onSkip:(t,S,w)=>{e++,ee.warn({reason:t,code:S,path:w},`[basename-index] skipped entry during seed (${t}${S?` ${S}`:``})`)}}),e>0&&(ee.warn({count:e},`[basename-index] startup seed completed with ${e} skipped entries — embeds under inaccessible subtrees will not resolve`),Ut.push(`basename-index-partial`))}catch(e){ee.error({err:e},`[basename-index] startup seed failed`),Ut.push(`basename-index`)}}catch(e){ee.error({err:e},`[server] disk bridge watcher failed to start`),Ut.push(`file-watcher`)}try{Rt=await startHeadWatcher(S,async({trigger:e})=>{if(ee.info({trigger:e},`[batch] begin trigger=${e}`),incrementBatch(),_e.flushPendingStores(),await ge.flushPendingGitCommit(),setBatchInProgress(!0),me.current){let e=getActiveBranch(),t=resolveGitDir(S),w=t?readBranchFromHead(t)??e:e,E=[];for(let[e,t]of _e.documents){if(isSystemDoc(e)||isConfigDoc(e))continue;let S=null;if(t.transact(()=>{S=at(e)},PARK_SNAPSHOT_ORIGIN),S===null)continue;let w=getReconciledBase(e)??S;E.push({docName:e,markdown:S,diskSnapshot:w})}if(E.length>0)try{let t=await parkBranch(me.current,e,SERVICE_WRITER.id,E,w);t&&(incrementPark(),ee.info({count:E.length,branch:e,sha:t.slice(0,8)},`[history] parked ${E.length} docs on ${e} → ${t.slice(0,8)}`))}catch(e){ee.error({err:e},`[shadow] park failed`)}}},async e=>{let S=Mt.length,w=e.newBranch??`main`;if(ee.info({kind:e.batchKind,headMoved:e.headMoved,docs:S,timeout:!!e.timeout},`[batch] end kind=${e.batchKind} headMoved=${e.headMoved} docs=${S}${e.timeout?` timeout`:``}`),e.batchKind===`within-branch`)setBatchInProgress(!1),await It(),await ge.flushDeferredStores(`within-branch`);else{incrementBranchSwitch(),Mt.splice(0,Mt.length),switchReconciledBaseScope(w),Ve!==null&&(clearTimeout(Ve),Ve=null),de.switchBranch(w),ue.rebuildDirCount();try{let e=0;oe.clear(),seedBasenameIndex({contentDir:t,contentFilter:ue,basenameIndex:oe,onSkip:(t,S,E)=>{e++,ee.warn({reason:t,code:S,path:E,branch:w},`[basename-index] skipped entry during branch-switch reseed (${t}${S?` ${S}`:``})`)}}),e>0&&(ee.warn({count:e,branch:w},`[basename-index] branch-switch reseed completed with ${e} skipped entries — embeds under inaccessible subtrees will not resolve on this branch`),Ut.includes(`basename-index-partial`)||Ut.push(`basename-index-partial`))}catch(e){ee.error({err:e,branch:w},`[basename-index] branch-switch reseed failed`)}for(let[e,S]of _e.documents)if(!(isSystemDoc(e)||isConfigDoc(e)))try{let E=safeContentPath(e,t);if(!existsSync(E)){let t=getReconciledBase(e)??``,E=at(e)??``;if(E!==t&&me.current){let t=me.current;queueMicrotask(()=>{saveInMemoryCheckpoint(t,H??``,{kind:`external-change-rescue`,docName:e,contents:E,label:`External change recovered @ ${new Date().toISOString()}`,branch:w,metadata:{incomingDiskSha:``}}).then(()=>{incrementRescueBuffer(),ee.info({docName:e},`[reconcile] rescue checkpoint saved on branch switch: ${e}`)}).catch(t=>{ee.error({docName:e,err:t},`[reconcile] rescue checkpoint write failed: ${e}`)})})}S.getMap(`lifecycle`).set(`status`,`deleted-upstream`),ee.info({docName:e,branch:w},`[branch-switch] tombstone: ${e} (not on ${w})`);continue}let D=readFileSync(E,`utf-8`);st(e,D),setReconciledBase(e,D),ee.info({docName:e},`[branch-switch] reset: ${e}`)}catch(t){ee.error({err:t,docName:e},`[branch-switch] failed to reset ${e}`)}ee.info({branch:w,docCount:_e.documents.size},`[branch-switch] loaded branch ${w} (${_e.documents.size} docs)`);try{if(await de.loadFromDisk(w)){let e=await de.reconcileWithDisk(w);(e.added>0||e.updated>0||e.deleted>0)&&ee.info(e,`[backlinks] branch-switch reconcile for ${w}`)}else await de.rebuildFromDisk(w);de.saveToDisk(w).catch(e=>{console.warn(`[backlinks] Failed to persist branch cache for ${w}:`,e)})}catch(e){ee.error({err:e,branch:w},`[backlinks] branch-switch rebuild failed; backlinks may be stale`)}if(fe.init(),me.current&&e.batchKind===`cross-branch`){let e=0;for(let[t]of _e.documents)if(!(isSystemDoc(t)||isConfigDoc(t)))try{let S=await readParkedState(me.current,w,SERVICE_WRITER.id,t);if(!S||S.markdown===S.diskSnapshot)continue;let E=getReconciledBase(t);if(!E)continue;let D=reconcile({docName:t,base:S.diskSnapshot,ours:S.markdown,theirs:E});switch(D.kind){case`merged`:case`clean`:st(t,D.newContent),setReconciledBase(t,D.newContent),e++;break;case`conflicts`:st(t,D.newContent),setReconciledBase(t,D.newContent),incrementConflict(),e++;break;case`noop`:case`refused`:break}}catch(e){ee.error({err:e,docName:t},`[branch-switch] restore WIP failed for ${t}`)}e>0&&ee.info({count:e,branch:w},`[branch-switch] restored ${e} parked docs on ${w}`)}if(e.oldBranch?.startsWith(`detached-`)&&me.current)try{let t=shadowGit(me.current),S=(await t.raw(`for-each-ref`,`refs/wip/${e.oldBranch}/`,`--format=%(refname)`)).trim();if(S){for(let e of S.split(`
|
|
3263
|
-
`))e&&await t.raw(`update-ref`,`-d`,e);ee.info({context:e.oldBranch},`[branch-switch] cleaned up detached context ${e.oldBranch}`)}}catch(e){ee.error({err:e},`[branch-switch] detached cleanup failed`)}setBatchInProgress(!1),await ge.flushDeferredStores(`discard-stale`),ye?.emitBranchSwitched(w)}if(e.headMoved&&e.newHead&&me.current&&S>0){let t=H??`.`;try{let S=await commitUpstreamImport(me.current,t,e.oldHead,e.newHead,w);incrementUpstreamImport(),ee.info({oldHead:e.oldHead?.slice(0,8)??`null`,newHead:e.newHead.slice(0,8),sha:S.slice(0,8)},`[history] upstream-import from ${e.oldHead?.slice(0,8)??`null`}..${e.newHead.slice(0,8)} → ${S.slice(0,8)}`)}catch(e){ee.error({err:e},`[shadow] upstream-import failed`)}}})}catch(e){ee.error({err:e},`[server] HEAD watcher failed to start`),Ut.push(`head-watcher`)}let D=J?.[0]??`open-knowledge`,O=[`-c`,`credential.helper=!${J&&J.length>1?J.join(` `):D} auth git-credential`];try{zt=new SyncEngine({projectDir:S,contentDir:t,contentFilter:ue,contentRoot:H,syncEnabled:te(),credentialArgs:O,cc1Broadcaster:ye,setBatchInProgress:e=>{setBatchInProgress(e),e||ge.flushDeferredStores(`within-branch`).catch(e=>{ee.error({err:e},`[persistence] deferred store drain failed after sync batch`)})},onStateChange:e=>{ee.info({state:e},`[sync] state → ${e}`)},onAutoDisable:async e=>{ee.warn({reason:e},`[sync] auto-disabled — persisting to project-local config`);let t=await writeConfigPatch({cwd:S,scope:`project-local`,patch:{autoSync:{enabled:!1}}});t.ok||ee.error({result:t,reason:e,humanError:humanFormat(t.error),configPath:resolveConfigPath(`project-local`,S)},`[sync] failed to persist auto-disable — next restart WILL re-enable sync and re-trigger the same failure. Check permissions on the config path.`)}}),await zt.start()}catch(e){ee.warn({err:e},`[server] SyncEngine failed to start — sync disabled`),zt=null}ze(`files`),ze(`backlinks`),ze(`graph`),ze(`tags`)}return Wt().then(Pe,Ie),{hocuspocus:_e,sessionManager:ve,cc1Broadcaster:ye,agentFocusBroadcaster:Ce,agentPresenceBroadcaster:we,contentFilter:ue,basenameIndex:oe,serverInstanceId:ne,destroy:Ht,ready:Re,degraded:Ut,lockDir:ae,get syncEngine(){return zt}}}const LEGACY_RUNTIME_FILENAMES=[`server.lock`,`ui.lock`,`state.json`,`principal.json`,`sync-state.json`,`conflicts.json`,`last-spawn-error.log`],LEGACY_RUNTIME_DIRNAMES=[`cache`,`tmp`];function findLegacyRuntimeFiles(e){let t=resolve(e,LOCAL_DIR);if(!(()=>{if(!existsSync(t))return!0;try{return readdirSync(t).length===0}catch{return!0}})())return[];let S=[];for(let t of LEGACY_RUNTIME_FILENAMES)existsSync(resolve(e,t))&&S.push(t);for(let t of LEGACY_RUNTIME_DIRNAMES){let w=resolve(e,t);try{existsSync(w)&&statSync(w).isDirectory()&&S.push(`${t}/`)}catch{}}return S}function computeWorktreeAttributes(e){let t=resolveGitDirDetailed(e);switch(t.kind){case`directory`:return{kind:`main`,gitdir:t.path};case`linked`:return{kind:`linked`,gitdir:t.path};case`malformed-pointer`:return{kind:`linked`,gitdir:null};case`inaccessible`:case`absent`:return{kind:`main`,gitdir:null}}}const DEFAULT_IDLE_THRESHOLD_MS=1800*1e3,DESTROY_STEP_TIMEOUT_MS=5e3;async function bootServer(e){initTelemetry();let{kind:t,gitdir:S}=computeWorktreeAttributes(e.projectDir??e.contentDir),w={"ok.worktree.kind":t};return S!==null&&(w[`ok.worktree.gitdir`]=normalizeFsPath(S)),withSpan(`ok.boot`,{attributes:w},async()=>bootServerInner(e))}async function bootServerInner(e){let t=e.skipAutoInit??!1,S=e.attachUiSibling??!0,w=e.idleShutdownMs,E=e.log??getLogger(`boot`),D=process.env.OK_LOCK_KIND===`mcp-spawned`||process.env.OK_LOCK_KIND===`interactive`?process.env.OK_LOCK_KIND:void 0,O=e.lockKind??D??`interactive`,{createServer:k}=await import(`node:http`),{updateServerLockPort:j}=await import(`./server-lock-D7DXNVql-B5nINglj.mjs`).then(e=>e.a),F=!1;if(!t&&e.autoInitFn)try{F=!!await e.autoInitFn()}catch(e){E.warn({err:e},`autoInitFn failed`)}let L=e.projectDir??e.contentDir,B=resolve(L,`.ok`);if(!existsSync(resolve(B,`config.yml`)))throw new MissingOkConfigError(existsSync(B)?`config`:`okdir`,L);existsSync(resolve(B,`.gitignore`))||console.warn("[boot] Note: .ok/.gitignore is missing — per-machine state files in .ok/ may show up as untracked changes. Run `ok init` to add the recommended ignore entries.");let H=findLegacyRuntimeFiles(B);H.length>0&&console.warn(`[boot] Found legacy runtime files at .ok/${H.join(`, `)}. Delete .ok/ and re-init — these files moved to .ok/${LOCAL_DIR}/.`);let q=createServer$1({contentDir:e.contentDir,projectDir:e.projectDir,contentRoot:e.contentRoot,port:e.port,host:e.host,quiet:e.quiet??!1,debounce:e.debounce,maxDebounce:e.maxDebounce,gitEnabled:e.gitEnabled,commitDebounceMs:e.commitDebounceMs,wipRef:e.wipRef,enableTestRoutes:e.enableTestRoutes,shadowRepo:e.shadowRepo,destroyTimeoutMs:e.destroyTimeoutMs,localOpCliArgs:e.localOpCliArgs,onAgentWrite:e.onAgentWrite,lockKind:O,skipStateManifestCheck:e.skipStateManifestCheck}),{hocuspocus:J,destroy:Y,ready:ee,degraded:te,lockDir:ne,sessionManager:ae,agentFocusBroadcaster:oe,agentPresenceBroadcaster:se}=q,ce=(()=>{let t=e.host??`localhost`;return t===`0.0.0.0`||t===`::`?`localhost`:t.includes(`:`)&&!t.startsWith(`[`)?`[${t}]`:t})(),ue=e.port??0,de=createMcpHttpHandler({contentDir:e.contentDir,projectDir:e.projectDir??e.contentDir,config:e.config,getServerUrl:()=>`http://${ce}:${ue}`,log:E}),fe=k();fe.headersTimeout=3e4,fe.requestTimeout=6e4;let me=e.serveContentAssets?createAssetServeMiddleware({contentFilter:q.contentFilter,contentSirv:build_default(e.contentDir,{dev:!0,dotfiles:!1}),inlineExtensions:INLINE_RENDERABLE_EXTENSIONS,assetExtensions:ASSET_EXTENSIONS,blocklistExtensions:EXECUTABLE_BLOCKLIST_EXTENSIONS}):void 0,ge=mountMcpAndApi({httpServer:fe,hocuspocus:J,mcpHttpHandler:de,log:E,sessionManager:ae,agentFocusBroadcaster:oe,agentPresenceBroadcaster:se,keepaliveGraceMs:e.keepaliveGraceMs,contentAssetMiddleware:me}),_e=null;w!==null&&(_e=attachIdleShutdown({httpServer:fe,thresholdMs:w??DEFAULT_IDLE_THRESHOLD_MS,log:E,onShutdown:(e.idleShutdownHandler??(e=>async()=>{await e()}))(async()=>{await Y()})})),await new Promise((t,S)=>{let w=e=>S(e);fe.once(`error`,w),fe.listen(e.port,e.host,()=>{fe.removeListener(`error`,w),t()})});let ve=fe.address(),ye=typeof ve==`object`&&ve?ve.port:e.port??0;if(ue=ye,j(ne,ye),S&&e.spawnUiSiblingFn)try{await e.spawnUiSiblingFn({lockDir:ne,log:E})}catch(e){E.warn({err:e},`spawnUiSiblingFn failed`)}let Ce=!1,we=async(e,t)=>{let S;try{await Promise.race([t(),new Promise((t,w)=>{S=setTimeout(()=>{w(Error(`${e} timed out after ${DESTROY_STEP_TIMEOUT_MS}ms`))},DESTROY_STEP_TIMEOUT_MS),S.unref?.()})])}finally{S!==void 0&&clearTimeout(S)}};return{httpServer:fe,destroy:async()=>{if(Ce)return;Ce=!0;let e=[],t=async(t,S)=>{try{await we(t,S)}catch(S){e.push(S),E.warn({err:S,step:t},`bootServer destroy step failed`)}};try{_e?.detach()}catch(t){e.push(t),E.warn({err:t,step:`idleHandle.detach`},`bootServer destroy step failed`)}if(await t(`mount.shutdown`,()=>ge.shutdown()),await t(`mcpHttpHandler.close`,()=>de.close()),await t(`mount.wss.close`,()=>new Promise((e,t)=>{ge.wss.close(S=>S?t(S):e())})),await t(`httpServer.closeAllConnections`,async()=>{fe.closeAllConnections?.()}),await t(`httpServer.close`,()=>new Promise((e,t)=>{fe.close(S=>S&&S.code!==`ERR_SERVER_NOT_RUNNING`?t(S):e())})),await t(`destroyHocuspocus`,()=>Y()),await t(`shutdownTelemetry`,()=>shutdownTelemetry()),e.length>0)throw AggregateError(e,`bootServer destroy completed with errors`)},lockDir:ne,contentDir:e.contentDir,port:ye,ready:ee,degraded:te,didAutoInit:F,serverInstance:q}}const ConfigSchema=ConfigSchema$1;function detectClaudeDesktopPresence(e={}){let t=e.home??homedir(),S=e.platformName??process.platform,w=e.env??process.env;return S===`darwin`?existsSync(join(t,`Library`,`Application Support`,`Claude`)):S===`win32`?existsSync(join(w.APPDATA??join(t,`AppData`,`Roaming`),`Claude`)):!1}const ANCESTOR_WALK_DEPTH_LIMIT=30,GIT_MARKER=`.git`;function findEnclosingGitRoot(e){let t=resolve(e),S=0;for(;S<ANCESTOR_WALK_DEPTH_LIMIT;){let e=!1;try{e=existsSync(resolve(t,GIT_MARKER))}catch{e=!1}if(e)return{gitRoot:t,distance:S};let w=dirname(t);if(w===t)return null;t=w,S+=1}return null}const execFileAsync=promisify(execFile);var ProjectGitInitError=class extends Error{stderr;constructor(e,t=``,S){super(e,S),this.name=`ProjectGitInitError`,this.stderr=t}};async function isInsideExistingWorkTree(e){try{let{stdout:t}=await execFileAsync(`git`,[`rev-parse`,`--is-inside-work-tree`],{cwd:e});return t.trim()===`true`}catch{return!1}}async function ensureProjectGit(e){let t=resolve(e),S=resolve(t,`.git`),w=resolve(S,`HEAD`),E=!1;if(existsSync(S)){if(!statSync(S).isDirectory()||existsSync(w))return{didInit:!1};console.log(`[project-git] detected partial .git/ — running git init to repair`),E=!0}else if(await isInsideExistingWorkTree(t))return{didInit:!1};let D=``;try{D=(await execFileAsync(`git`,[`init`,`--initial-branch=main`,t])).stderr??``}catch(e){let S=typeof e==`object`&&e&&`stderr`in e?String(e.stderr??``):``;throw new ProjectGitInitError(`git init failed at ${t}: ${e instanceof Error?e.message:String(e)}`,S,{cause:e})}if(!existsSync(w))throw new ProjectGitInitError(`git init reported success but ${S}/HEAD is missing (partial init detected)`,D);return E?(console.log(`[project-git] backfilled missing .git/HEAD at ${t}`),{didInit:!0,repaired:!0}):(console.log(`[project-git] initialized .git/ at ${t} (branch: main)`),{didInit:!0})}async function resolvePackageVersion(e,t){let S;try{S=createRequire(t).resolve(e)}catch(e){if(e?.code===`MODULE_NOT_FOUND`)return;throw e}for(let t=dirname(S),w=0;w<32;w+=1){let S=join(t,`package.json`);if(existsSync(S))try{let t=JSON.parse(await readFile$1(S,`utf-8`));if(t.name===e&&typeof t.version==`string`)return t.version}catch{}let w=dirname(t);if(w===t)return;t=w}}export{applySeed as $,rewriteWikiLinksForDocumentRename as $n,ASSET_EXTENSIONS as $r,incrementCollabSocketFilteredError as $t,MissingOkConfigError as A,NEVER as Ai,readBranchFromHead as An,updateLastKnownHash as Ar,createServer$1 as At,STARTER_FOLDER_FRONTMATTER_FILENAME as B,registerAllTools as Bn,writeTracker as Br,findEnclosingGitRoot as Bt,LOG_MD_TEMPLATE as C,literal as Ci,parseAuthRejectionWire as Cn,tracedRename as Cr,createContentFilter as Ct,MCP_SERVER_NAME as D,string$2 as Di,planPersonalTemplates as Dn,tracedUnlinkSync as Dr,createMcpHttpHandler as Dt,MCP_CONNECTION_ID_HEADER as E,object$1 as Ei,pathToDocName as En,tracedRmdirSync as Er,createLiveDerivedIndexExtension as Et,ProjectGitInitError as F,readTargetVersion as Fn,withSpan as Fr,detectProjectShape as Ft,SeedPrerequisiteError as G,resolveBundledSkillDir as Gn,isJSONRPCRequest as Gr,getCurrentMcpLogger as Gt,STARTER_PACK_IDS as H,releaseUiLock as Hn,JSONRPCMessageSchema as Hr,formatAuthRejectionWire as Ht,ROLLBACK_ORIGIN as I,readUiLock as In,withSpanSync as Ir,ensureProjectGit as It,TagIndex as J,resolveCursorSpawnInvocation as Jn,resolveConfigPath as Jr,getMeter as Jt,SeedRootDirError as K,resolveContentDir as Kn,isJSONRPCResultResponse as Kr,getLocalDir as Kt,SERVICE_WRITER as L,reconcile as Ln,writePersonalTemplates as Lr,errorResponse as Lt,PERSONAL_TEMPLATES as M,readSkillInstallStateSnapshot as Mn,validateAgentId as Mr,createStreamingErrorWriter as Mt,PERSONAL_TEMPLATE_NAMES as N,readStateManifest as Nn,validateCloneInputs as Nr,createTestLogger as Nt,MISSING_OK_CONFIG_MESSAGE as O,url as Oi,planSeed as On,tracedWriteFile as Or,createOsProbe as Ot,PinoLogger as P,readTargetRecordedAt as Pn,validateSkillZip as Pr,detectClaudeDesktopPresence as Pt,applyExternalChange as Q,rewriteMarkdownLinksForDocumentRename as Qn,ALL_EDITOR_IDS as Qr,handleSpawnCursor as Qt,SKILL_INSTALL_EVENTS_FILE_REL as R,recordContributor as Rn,writeStateManifest as Rr,evictStaleTrackerEntries as Rt,LIVE_DERIVED_INDEX_DEBOUNCE_MS as S,boolean$1 as Si,normalizeFsPath as Sn,tracedMkdirSync as Sr,createAssetServeMiddleware as St,MAX_AGENT_SESSIONS as T,number$1 as Ti,parseKeepaliveConnectionId as Tn,tracedRmSync as Tr,createExternalChangeHandler as Tt,STARTER_TEMPLATES as U,removeLastKnownHash as Un,LATEST_PROTOCOL_VERSION as Ur,formatContributors as Ut,STARTER_PACKS as V,registerWrite as Vn,McpServer as Vr,findEnclosingProjectRoot as Vt,STATE_MANIFEST_FILENAME as W,resetMetrics as Wn,isInitializedNotification as Wr,gcCheckpointRefs as Wt,acquireUiLock as X,resolvePack as Xn,GitDirAccessError as Xr,getTracer as Xt,UiLockCollisionError as Y,resolveLockDir as Yn,writeConfigPatch as Yr,getMetrics as Yt,applyAgentMarkdownWrite as Z,resolvePackageVersion as Zn,MalformedGitPointerError as Zr,handleCollabSocketError as Zt,GIT_UPSTREAM_WRITER as _,OK_PROJECT_MARKER as _i,listRescueCheckpoints as _n,streamingProblemEvent as _r,commitWipFromTree as _t,AgentPresenceBroadcaster as a,INLINE_RENDERABLE_EXTENSIONS as ai,isAllowedApiOrigin as an,safeContentPath as ar,buildExecResult as at,HocuspocusAuthTokenSchema as b,any$1 as bi,loggerFactory as bn,tracedLinkSync as br,contributorCount as bt,BacklinkIndex as c,SKILL_STATE_TARGETS as ci,isHocuspocusAuthRejectionReason as cn,sanitizeClientName as cr,buildSkillZip as ct,CURSOR_BUNDLE_PATHS_BY_PLATFORM as d,defaultScheduler as di,isPairedWriteOrigin as dn,seedBasenameIndex as dr,classifyEvents as dt,CC1_CONTRACT_VERSION as ei,incrementServerObserverFire as en,runAuthReposSubprocess as er,assertCompatibleStateManifest as et,ConfigSchema as f,humanFormat as fi,isPathWithinDir as fn,setActiveSpanAttributes as fr,classifyFsPath as ft,FILE_WATCHER_ORIGIN as g,LOCAL_DIR as gi,lastKnownHash as gn,startWatcher as gr,commitWip as gt,FILE_SYSTEM_WRITER as h,CONFIG_SCHEMA_MAJOR_PATH as hi,isSystemDoc as hn,splitMarkdownBlocks as hr,commitUpstreamImport as ht,AgentFocusBroadcaster as i,EXECUTABLE_BLOCKLIST_EXTENSIONS as ii,installUserSkill as in,runWithMcpLogger as ir,buildAndOpenSkill as it,OBSERVER_SYNC_ORIGIN as j,require_dist$2 as ji,readServerPackageVersion as jn,updateUiLockPort as jr,createServerObserverExtension as jt,McpLogger as k,_coercedNumber as ki,readAllTargets as kn,tracedWriteFileSync as kr,createPersistenceExtension as kt,CC1Broadcaster as l,SYSTEM_DOC_NAME as li,isKnownPackId as ln,saveInMemoryCheckpoint as lr,buildStarterFolderFrontmatterYaml as lt,DEFAULT_PACK_ID as m,isOrphanMode as mi,isSelfWrite as mn,shutdownTelemetry as mr,coercePackId as mt,AGENT_ID_RE as n,DEFAULT_SERVER_HOST as ni,initTelemetry as nn,runCloneSubprocess as nr,attachIdleShutdown as nt,AgentSessionCapacityError as o,ORPHAN_MODES as oi,isAllowedWorkspaceHostHeader as on,safeSubdir as or,buildInstructions as ot,DEFAULT_CHECKPOINT_RETENTION as p,iconFromClientName as pi,isProjectRoot as pn,shadowGit as pr,clearContributors as pt,StateManifestError as q,resolveCursorBinaryDefault as qn,readConfigSafely as qr,getLogger as qt,AGENT_WRITE_ORIGIN as r,EDITOR_LABELS as ri,installTestLoggers as rn,runDeviceFlowSubprocess as rr,bootServer as rt,AgentSessionManager as s,ProblemDetailsSchema as si,isConfigDoc as sn,safetyCheckpoint as sr,buildReadResult as st,AGENT_ID_MAX_LEN as t,DEFAULT_GITHUB_OAUTH_CLIENT_ID as ti,initShadowRepo as tn,runAuthStatusSubprocess as tr,assertNeverDiskEvent as tt,CONFLICT_MARKER_RE as u,colorFromSeed as ui,isLoopbackAddress as un,saveVersion as ur,buildWipTree as ut,HOCUSPOCUS_AUTH_REJECTION_REASONS as v,locateIssue as vi,listStarterPacks as vn,toBroadcasterKey as vr,containsConflictMarkers as vt,MANAGED_RENAME_ORIGIN as w,looseObject as wi,parseHocuspocusAuthToken as wn,tracedRenameSync as wr,createContentFilterAsync as wt,INSTALLED_AGENTS_SCHEMES as x,array as xi,mountMcpAndApi as xn,tracedMkdir as xr,createApiExtension as xt,HocuspocusAuthRejection as y,ZodNumber$1 as yi,loadPrincipal as yn,tracedAppendFileSync as yr,contentHash as yt,STARTER_FOLDERS as z,recordSkillInstallEvent as zn,writeTargetVersion as zr,extractWikiLinksFromMarkdown as zt};
|
|
3264
|
-
//# sourceMappingURL=dist-
|
|
3264
|
+
`))e&&await t.raw(`update-ref`,`-d`,e);ee.info({context:e.oldBranch},`[branch-switch] cleaned up detached context ${e.oldBranch}`)}}catch(e){ee.error({err:e},`[branch-switch] detached cleanup failed`)}setBatchInProgress(!1),await ge.flushDeferredStores(`discard-stale`),ye?.emitBranchSwitched(w)}if(e.headMoved&&e.newHead&&me.current&&S>0){let t=H??`.`;try{let S=await commitUpstreamImport(me.current,t,e.oldHead,e.newHead,w);incrementUpstreamImport(),ee.info({oldHead:e.oldHead?.slice(0,8)??`null`,newHead:e.newHead.slice(0,8),sha:S.slice(0,8)},`[history] upstream-import from ${e.oldHead?.slice(0,8)??`null`}..${e.newHead.slice(0,8)} → ${S.slice(0,8)}`)}catch(e){ee.error({err:e},`[shadow] upstream-import failed`)}}})}catch(e){ee.error({err:e},`[server] HEAD watcher failed to start`),Ut.push(`head-watcher`)}let D=J?.[0]??`open-knowledge`,O=[`-c`,`credential.helper=!${J&&J.length>1?J.join(` `):D} auth git-credential`];try{zt=new SyncEngine({projectDir:S,contentDir:t,contentFilter:ue,contentRoot:H,syncEnabled:te(),credentialArgs:O,cc1Broadcaster:ye,setBatchInProgress:e=>{setBatchInProgress(e),e||ge.flushDeferredStores(`within-branch`).catch(e=>{ee.error({err:e},`[persistence] deferred store drain failed after sync batch`)})},onStateChange:e=>{ee.info({state:e},`[sync] state → ${e}`)},onAutoDisable:async e=>{ee.warn({reason:e},`[sync] auto-disabled — persisting to project-local config`);let t=await writeConfigPatch({cwd:S,scope:`project-local`,patch:{autoSync:{enabled:!1}}});t.ok||ee.error({result:t,reason:e,humanError:humanFormat(t.error),configPath:resolveConfigPath(`project-local`,S)},`[sync] failed to persist auto-disable — next restart WILL re-enable sync and re-trigger the same failure. Check permissions on the config path.`)}}),await zt.start()}catch(e){ee.warn({err:e},`[server] SyncEngine failed to start — sync disabled`),zt=null}ze(`files`),ze(`backlinks`),ze(`graph`),ze(`tags`)}return Wt().then(Pe,Ie),{hocuspocus:_e,sessionManager:ve,cc1Broadcaster:ye,agentFocusBroadcaster:Ce,agentPresenceBroadcaster:we,contentFilter:ue,basenameIndex:oe,serverInstanceId:ne,destroy:Ht,ready:Re,degraded:Ut,lockDir:ae,get syncEngine(){return zt}}}const LEGACY_RUNTIME_FILENAMES=[`server.lock`,`ui.lock`,`state.json`,`principal.json`,`sync-state.json`,`conflicts.json`,`last-spawn-error.log`],LEGACY_RUNTIME_DIRNAMES=[`cache`,`tmp`];function findLegacyRuntimeFiles(e){let t=resolve(e,LOCAL_DIR);if(!(()=>{if(!existsSync(t))return!0;try{return readdirSync(t).length===0}catch{return!0}})())return[];let S=[];for(let t of LEGACY_RUNTIME_FILENAMES)existsSync(resolve(e,t))&&S.push(t);for(let t of LEGACY_RUNTIME_DIRNAMES){let w=resolve(e,t);try{existsSync(w)&&statSync(w).isDirectory()&&S.push(`${t}/`)}catch{}}return S}function computeWorktreeAttributes(e){let t=resolveGitDirDetailed(e);switch(t.kind){case`directory`:return{kind:`main`,gitdir:t.path};case`linked`:return{kind:`linked`,gitdir:t.path};case`malformed-pointer`:return{kind:`linked`,gitdir:null};case`inaccessible`:case`absent`:return{kind:`main`,gitdir:null}}}const DEFAULT_IDLE_THRESHOLD_MS=1800*1e3,DESTROY_STEP_TIMEOUT_MS=5e3;async function bootServer(e){initTelemetry();let{kind:t,gitdir:S}=computeWorktreeAttributes(e.projectDir??e.contentDir),w={"ok.worktree.kind":t};return S!==null&&(w[`ok.worktree.gitdir`]=normalizeFsPath(S)),withSpan(`ok.boot`,{attributes:w},async()=>bootServerInner(e))}async function bootServerInner(e){let t=e.skipAutoInit??!1,S=e.attachUiSibling??!0,w=e.idleShutdownMs,E=e.log??getLogger(`boot`),D=process.env.OK_LOCK_KIND===`mcp-spawned`||process.env.OK_LOCK_KIND===`interactive`?process.env.OK_LOCK_KIND:void 0,O=e.lockKind??D??`interactive`,{createServer:k}=await import(`node:http`),{updateServerLockPort:j}=await import(`./server-lock-D7DXNVql-B5nINglj.mjs`).then(e=>e.a),F=!1;if(!t&&e.autoInitFn)try{F=!!await e.autoInitFn()}catch(e){E.warn({err:e},`autoInitFn failed`)}let L=e.projectDir??e.contentDir,B=resolve(L,`.ok`);if(!existsSync(resolve(B,`config.yml`)))throw new MissingOkConfigError(existsSync(B)?`config`:`okdir`,L);existsSync(resolve(B,`.gitignore`))||console.warn("[boot] Note: .ok/.gitignore is missing — per-machine state files in .ok/ may show up as untracked changes. Run `ok init` to add the recommended ignore entries.");let H=findLegacyRuntimeFiles(B);H.length>0&&console.warn(`[boot] Found legacy runtime files at .ok/${H.join(`, `)}. Delete .ok/ and re-init — these files moved to .ok/${LOCAL_DIR}/.`);let q=createServer$1({contentDir:e.contentDir,projectDir:e.projectDir,contentRoot:e.contentRoot,port:e.port,host:e.host,quiet:e.quiet??!1,debounce:e.debounce,maxDebounce:e.maxDebounce,gitEnabled:e.gitEnabled,commitDebounceMs:e.commitDebounceMs,wipRef:e.wipRef,enableTestRoutes:e.enableTestRoutes,shadowRepo:e.shadowRepo,destroyTimeoutMs:e.destroyTimeoutMs,localOpCliArgs:e.localOpCliArgs,onAgentWrite:e.onAgentWrite,lockKind:O,skipStateManifestCheck:e.skipStateManifestCheck}),{hocuspocus:J,destroy:Y,ready:ee,degraded:te,lockDir:ne,sessionManager:ae,agentFocusBroadcaster:oe,agentPresenceBroadcaster:se}=q,ce=(()=>{let t=e.host??`localhost`;return t===`0.0.0.0`||t===`::`?`localhost`:t.includes(`:`)&&!t.startsWith(`[`)?`[${t}]`:t})(),ue=e.port??0,de=createMcpHttpHandler({contentDir:e.contentDir,projectDir:e.projectDir??e.contentDir,config:e.config,getServerUrl:()=>`http://${ce}:${ue}`,log:E}),fe=k();fe.headersTimeout=3e4,fe.requestTimeout=6e4;let me=e.serveContentAssets?createAssetServeMiddleware({contentFilter:q.contentFilter,contentSirv:build_default(e.contentDir,{dev:!0,dotfiles:!1}),inlineExtensions:INLINE_RENDERABLE_EXTENSIONS,assetExtensions:ASSET_EXTENSIONS,blocklistExtensions:EXECUTABLE_BLOCKLIST_EXTENSIONS}):void 0,ge=mountMcpAndApi({httpServer:fe,hocuspocus:J,mcpHttpHandler:de,log:E,sessionManager:ae,agentFocusBroadcaster:oe,agentPresenceBroadcaster:se,keepaliveGraceMs:e.keepaliveGraceMs,contentAssetMiddleware:me}),_e=null;w!==null&&(_e=attachIdleShutdown({httpServer:fe,thresholdMs:w??DEFAULT_IDLE_THRESHOLD_MS,log:E,onShutdown:(e.idleShutdownHandler??(e=>async()=>{await e()}))(async()=>{await Y()})})),await new Promise((t,S)=>{let w=e=>S(e);fe.once(`error`,w),fe.listen(e.port,e.host,()=>{fe.removeListener(`error`,w),t()})});let ve=fe.address(),ye=typeof ve==`object`&&ve?ve.port:e.port??0;if(ue=ye,j(ne,ye),S&&e.spawnUiSiblingFn)try{await e.spawnUiSiblingFn({lockDir:ne,log:E})}catch(e){E.warn({err:e},`spawnUiSiblingFn failed`)}let Ce=!1,we=async(e,t)=>{let S;try{await Promise.race([t(),new Promise((t,w)=>{S=setTimeout(()=>{w(Error(`${e} timed out after ${DESTROY_STEP_TIMEOUT_MS}ms`))},DESTROY_STEP_TIMEOUT_MS),S.unref?.()})])}finally{S!==void 0&&clearTimeout(S)}};return{httpServer:fe,destroy:async()=>{if(Ce)return;Ce=!0;let e=[],t=async(t,S)=>{try{await we(t,S)}catch(S){e.push(S),E.warn({err:S,step:t},`bootServer destroy step failed`)}};try{_e?.detach()}catch(t){e.push(t),E.warn({err:t,step:`idleHandle.detach`},`bootServer destroy step failed`)}if(await t(`mount.shutdown`,()=>ge.shutdown()),await t(`mcpHttpHandler.close`,()=>de.close()),await t(`mount.wss.close`,()=>new Promise((e,t)=>{ge.wss.close(S=>S?t(S):e())})),await t(`httpServer.closeAllConnections`,async()=>{fe.closeAllConnections?.()}),await t(`httpServer.close`,()=>new Promise((e,t)=>{fe.close(S=>S&&S.code!==`ERR_SERVER_NOT_RUNNING`?t(S):e())})),await t(`destroyHocuspocus`,()=>Y()),await t(`shutdownTelemetry`,()=>shutdownTelemetry()),e.length>0)throw AggregateError(e,`bootServer destroy completed with errors`)},lockDir:ne,contentDir:e.contentDir,port:ye,ready:ee,degraded:te,didAutoInit:F,serverInstance:q}}const ConfigSchema=ConfigSchema$1;function detectClaudeDesktopPresence(e={}){let t=e.home??homedir(),S=e.platformName??process.platform,w=e.env??process.env;return S===`darwin`?existsSync(join(t,`Library`,`Application Support`,`Claude`)):S===`win32`?existsSync(join(w.APPDATA??join(t,`AppData`,`Roaming`),`Claude`)):!1}const ANCESTOR_WALK_DEPTH_LIMIT=30,GIT_MARKER=`.git`;function findEnclosingGitRoot(e){let t=resolve(e),S=0;for(;S<ANCESTOR_WALK_DEPTH_LIMIT;){let e=!1;try{e=existsSync(resolve(t,GIT_MARKER))}catch{e=!1}if(e)return{gitRoot:t,distance:S};let w=dirname(t);if(w===t)return null;t=w,S+=1}return null}const execFileAsync=promisify(execFile);var ProjectGitInitError=class extends Error{stderr;constructor(e,t=``,S){super(e,S),this.name=`ProjectGitInitError`,this.stderr=t}};async function isInsideExistingWorkTree(e){try{let{stdout:t}=await execFileAsync(`git`,[`rev-parse`,`--is-inside-work-tree`],{cwd:e});return t.trim()===`true`}catch{return!1}}async function ensureProjectGit(e){let t=resolve(e),S=resolve(t,`.git`),w=resolve(S,`HEAD`),E=!1;if(existsSync(S)){if(!statSync(S).isDirectory()||existsSync(w))return{didInit:!1};console.log(`[project-git] detected partial .git/ — running git init to repair`),E=!0}else if(await isInsideExistingWorkTree(t))return{didInit:!1};let D=``;try{D=(await execFileAsync(`git`,[`init`,`--initial-branch=main`,t])).stderr??``}catch(e){let S=typeof e==`object`&&e&&`stderr`in e?String(e.stderr??``):``;throw new ProjectGitInitError(`git init failed at ${t}: ${e instanceof Error?e.message:String(e)}`,S,{cause:e})}if(!existsSync(w))throw new ProjectGitInitError(`git init reported success but ${S}/HEAD is missing (partial init detected)`,D);return E?(console.log(`[project-git] backfilled missing .git/HEAD at ${t}`),{didInit:!0,repaired:!0}):(console.log(`[project-git] initialized .git/ at ${t} (branch: main)`),{didInit:!0})}async function resolvePackageVersion(e,t){let S;try{S=createRequire(t).resolve(e)}catch(e){if(e?.code===`MODULE_NOT_FOUND`)return;throw e}for(let t=dirname(S),w=0;w<32;w+=1){let S=join(t,`package.json`);if(existsSync(S))try{let t=JSON.parse(await readFile$1(S,`utf-8`));if(t.name===e&&typeof t.version==`string`)return t.version}catch{}let w=dirname(t);if(w===t)return;t=w}}export{applySeed as $,rewriteMarkdownLinksForDocumentRename as $n,ALL_EDITOR_IDS as $r,incrementCollabSocketFilteredError as $t,MissingOkConfigError as A,_coercedNumber as Ai,readAllTargets as An,tracedWriteFileSync as Ar,createServer$1 as At,STARTER_FOLDER_FRONTMATTER_FILENAME as B,recordSkillInstallEvent as Bn,writeTargetVersion as Br,findEnclosingGitRoot as Bt,LOG_MD_TEMPLATE as C,boolean$1 as Ci,normalizeFsPath as Cn,tracedMkdirSync as Cr,createContentFilter as Ct,MCP_SERVER_NAME as D,object$1 as Di,pathToDocName as Dn,tracedRmdirSync as Dr,createMcpHttpHandler as Dt,MCP_CONNECTION_ID_HEADER as E,number$1 as Ei,parseKeepaliveConnectionId as En,tracedRmSync as Er,createLiveDerivedIndexExtension as Et,ProjectGitInitError as F,readTargetRecordedAt as Fn,validateSkillZip as Fr,detectProjectShape as Ft,SeedPrerequisiteError as G,resetMetrics as Gn,isInitializedNotification as Gr,getCurrentMcpLogger as Gt,STARTER_PACK_IDS as H,registerWrite as Hn,McpServer as Hr,formatAuthRejectionWire as Ht,ROLLBACK_ORIGIN as I,readTargetVersion as In,withSpan as Ir,ensureProjectGit as It,TagIndex as J,resolveCursorBinaryDefault as Jn,readConfigSafely as Jr,getMeter as Jt,SeedRootDirError as K,resolveBundledSkillDir as Kn,isJSONRPCRequest as Kr,getLocalDir as Kt,SERVICE_WRITER as L,readUiLock as Ln,withSpanSync as Lr,errorResponse as Lt,PERSONAL_TEMPLATES as M,require_dist$2 as Mi,readServerPackageVersion as Mn,updateUiLockPort as Mr,createStreamingErrorWriter as Mt,PERSONAL_TEMPLATE_NAMES as N,readSkillInstallStateSnapshot as Nn,validateAgentId as Nr,createTestLogger as Nt,MISSING_OK_CONFIG_MESSAGE as O,string$2 as Oi,planPersonalTemplates as On,tracedUnlinkSync as Or,createOsProbe as Ot,PinoLogger as P,readStateManifest as Pn,validateCloneInputs as Pr,detectClaudeDesktopPresence as Pt,applyExternalChange as Q,resolvePackageVersion as Qn,MalformedGitPointerError as Qr,handleSpawnCursor as Qt,SKILL_INSTALL_EVENTS_FILE_REL as R,reconcile as Rn,writePersonalTemplates as Rr,evictStaleTrackerEntries as Rt,LIVE_DERIVED_INDEX_DEBOUNCE_MS as S,array as Si,mountMcpAndApi as Sn,tracedMkdir as Sr,createAssetServeMiddleware as St,MAX_AGENT_SESSIONS as T,looseObject as Ti,parseHocuspocusAuthToken as Tn,tracedRenameSync as Tr,createExternalChangeHandler as Tt,STARTER_TEMPLATES as U,releaseUiLock as Un,JSONRPCMessageSchema as Ur,formatContributors as Ut,STARTER_PACKS as V,registerAllTools as Vn,writeTracker as Vr,findEnclosingProjectRoot as Vt,STATE_MANIFEST_FILENAME as W,removeLastKnownHash as Wn,LATEST_PROTOCOL_VERSION as Wr,gcCheckpointRefs as Wt,acquireUiLock as X,resolveLockDir as Xn,writeConfigPatch as Xr,getTracer as Xt,UiLockCollisionError as Y,resolveCursorSpawnInvocation as Yn,resolveConfigPath as Yr,getMetrics as Yt,applyAgentMarkdownWrite as Z,resolvePack as Zn,GitDirAccessError as Zr,handleCollabSocketError as Zt,GIT_UPSTREAM_WRITER as _,LOCAL_DIR as _i,lastKnownHash as _n,startWatcher as _r,commitWipFromTree as _t,AgentPresenceBroadcaster as a,EXECUTABLE_BLOCKLIST_EXTENSIONS as ai,installUserSkill as an,runWithMcpLogger as ar,buildExecResult as at,HocuspocusAuthTokenSchema as b,ZodNumber$1 as bi,loadPrincipal as bn,tracedAppendFileSync as br,contributorCount as bt,BacklinkIndex as c,ProblemDetailsSchema as ci,isConfigDoc as cn,safetyCheckpoint as cr,buildSkillZip as ct,CURSOR_BUNDLE_PATHS_BY_PLATFORM as d,colorFromSeed as di,isLoopbackAddress as dn,saveVersion as dr,classifyEvents as dt,ASSET_EXTENSIONS as ei,incrementServerObserverFire as en,rewriteWikiLinksForDocumentRename as er,assertCompatibleStateManifest as et,ConfigSchema as f,defaultScheduler as fi,isPairedWriteOrigin as fn,seedBasenameIndex as fr,classifyFsPath as ft,FILE_WATCHER_ORIGIN as g,CONFIG_SCHEMA_MAJOR_PATH as gi,isSystemDoc as gn,splitMarkdownBlocks as gr,commitWip as gt,FILE_SYSTEM_WRITER as h,isOrphanMode as hi,isSelfWrite as hn,shutdownTelemetry as hr,commitUpstreamImport as ht,AgentFocusBroadcaster as i,EDITOR_LABELS as ii,installTestLoggers as in,runDeviceFlowSubprocess as ir,buildAndOpenSkill as it,OBSERVER_SYNC_ORIGIN as j,NEVER as ji,readBranchFromHead as jn,updateLastKnownHash as jr,createServerObserverExtension as jt,McpLogger as k,url as ki,planSeed as kn,tracedWriteFile as kr,createPersistenceExtension as kt,CC1Broadcaster as l,SKILL_STATE_TARGETS as li,isHocuspocusAuthRejectionReason as ln,sanitizeClientName as lr,buildStarterFolderFrontmatterYaml as lt,DEFAULT_PACK_ID as m,iconFromClientName as mi,isProjectRoot as mn,shadowGit as mr,coercePackId as mt,AGENT_ID_RE as n,DEFAULT_GITHUB_OAUTH_CLIENT_ID as ni,initTelemetry as nn,runAuthStatusSubprocess as nr,attachIdleShutdown as nt,AgentSessionCapacityError as o,INLINE_RENDERABLE_EXTENSIONS as oi,isAllowedApiOrigin as on,safeContentPath as or,buildInstructions as ot,DEFAULT_CHECKPOINT_RETENTION as p,humanFormat as pi,isPathWithinDir as pn,setActiveSpanAttributes as pr,clearContributors as pt,StateManifestError as q,resolveContentDir as qn,isJSONRPCResultResponse as qr,getLogger as qt,AGENT_WRITE_ORIGIN as r,DEFAULT_SERVER_HOST as ri,installPrettyZodErrors as rn,runCloneSubprocess as rr,bootServer as rt,AgentSessionManager as s,ORPHAN_MODES as si,isAllowedWorkspaceHostHeader as sn,safeSubdir as sr,buildReadResult as st,AGENT_ID_MAX_LEN as t,CC1_CONTRACT_VERSION as ti,initShadowRepo as tn,runAuthReposSubprocess as tr,assertNeverDiskEvent as tt,CONFLICT_MARKER_RE as u,SYSTEM_DOC_NAME as ui,isKnownPackId as un,saveInMemoryCheckpoint as ur,buildWipTree as ut,HOCUSPOCUS_AUTH_REJECTION_REASONS as v,OK_PROJECT_MARKER as vi,listRescueCheckpoints as vn,streamingProblemEvent as vr,containsConflictMarkers as vt,MANAGED_RENAME_ORIGIN as w,literal as wi,parseAuthRejectionWire as wn,tracedRename as wr,createContentFilterAsync as wt,INSTALLED_AGENTS_SCHEMES as x,any$1 as xi,loggerFactory as xn,tracedLinkSync as xr,createApiExtension as xt,HocuspocusAuthRejection as y,locateIssue as yi,listStarterPacks as yn,toBroadcasterKey as yr,contentHash as yt,STARTER_FOLDERS as z,recordContributor as zn,writeStateManifest as zr,extractWikiLinksFromMarkdown as zt};
|
|
3265
|
+
//# sourceMappingURL=dist-Bfgu576g.mjs.map
|