@cotal-ai/connector-hermes 0.133.3 → 0.133.4
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/launch.js
CHANGED
|
@@ -110,7 +110,7 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
|
|
|
110
110
|
`)}}doc.write(`payload.value = newResult;`);doc.write(`return payload;`);const fn=doc.compile();return(payload,ctx)=>fn(shape,payload,ctx)};let fastpass;const isObject2=isObject;const jit=!globalConfig.jitless;const allowsEval2=allowsEval;const fastEnabled=jit&&allowsEval2.value;const catchall=def.catchall;let value;inst._zod.parse=(payload,ctx)=>{value??(value=_normalized.value);const input=payload.value;if(!isObject2(input)){payload.issues.push({expected:"object",code:"invalid_type",input,inst});return payload}if(jit&&fastEnabled&&ctx?.async===false&&ctx.jitless!==true){if(!fastpass)fastpass=generateFastpass(def.shape);payload=fastpass(payload,ctx);if(!catchall)return payload;return handleCatchall([],input,payload,ctx,value,inst)}return superParse(payload,ctx)}});$ZodUnion=$constructor("$ZodUnion",(inst,def)=>{$ZodType.init(inst,def);defineLazy(inst._zod,"optin",()=>def.options.some(o=>o._zod.optin==="optional")?"optional":void 0);defineLazy(inst._zod,"optout",()=>def.options.some(o=>o._zod.optout==="optional")?"optional":void 0);defineLazy(inst._zod,"values",()=>{if(def.options.every(o=>o._zod.values)){return new Set(def.options.flatMap(option=>Array.from(option._zod.values)))}return void 0});defineLazy(inst._zod,"pattern",()=>{if(def.options.every(o=>o._zod.pattern)){const patterns2=def.options.map(o=>o._zod.pattern);return new RegExp(`^(${patterns2.map(p=>cleanRegex(p.source)).join("|")})$`)}return void 0});const first=def.options.length===1?def.options[0]._zod.run:null;inst._zod.parse=(payload,ctx)=>{if(first){return first(payload,ctx)}let async=false;const results=[];for(const option of def.options){const result=option._zod.run({value:payload.value,issues:[]},ctx);if(result instanceof Promise){results.push(result);async=true}else{if(result.issues.length===0)return result;results.push(result)}}if(!async)return handleUnionResults(results,payload,inst,ctx);return Promise.all(results).then(results2=>{return handleUnionResults(results2,payload,inst,ctx)})}});$ZodXor=$constructor("$ZodXor",(inst,def)=>{$ZodUnion.init(inst,def);def.inclusive=false;const first=def.options.length===1?def.options[0]._zod.run:null;inst._zod.parse=(payload,ctx)=>{if(first){return first(payload,ctx)}let async=false;const results=[];for(const option of def.options){const result=option._zod.run({value:payload.value,issues:[]},ctx);if(result instanceof Promise){results.push(result);async=true}else{results.push(result)}}if(!async)return handleExclusiveUnionResults(results,payload,inst,ctx);return Promise.all(results).then(results2=>{return handleExclusiveUnionResults(results2,payload,inst,ctx)})}});$ZodDiscriminatedUnion=$constructor("$ZodDiscriminatedUnion",(inst,def)=>{def.inclusive=false;$ZodUnion.init(inst,def);const _super=inst._zod.parse;defineLazy(inst._zod,"propValues",()=>{const propValues={};for(const option of def.options){const pv=option._zod.propValues;if(!pv||Object.keys(pv).length===0)throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`);for(const[k,v]of Object.entries(pv)){if(!propValues[k])propValues[k]=new Set;for(const val of v){propValues[k].add(val)}}}return propValues});const disc=cached(()=>{const opts=def.options;const map2=new Map;for(const o of opts){const values=o._zod.propValues?.[def.discriminator];if(!values||values.size===0)throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`);for(const v of values){if(map2.has(v)){throw new Error(`Duplicate discriminator value "${String(v)}"`)}map2.set(v,o)}}return map2});inst._zod.parse=(payload,ctx)=>{const input=payload.value;if(!isObject(input)){payload.issues.push({code:"invalid_type",expected:"object",input,inst});return payload}const opt=disc.value.get(input?.[def.discriminator]);if(opt){return opt._zod.run(payload,ctx)}if(def.unionFallback||ctx.direction==="backward"){return _super(payload,ctx)}payload.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:def.discriminator,options:Array.from(disc.value.keys()),input,path:[def.discriminator],inst});return payload}});$ZodIntersection=$constructor("$ZodIntersection",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,ctx)=>{const input=payload.value;const left=def.left._zod.run({value:input,issues:[]},ctx);const right=def.right._zod.run({value:input,issues:[]},ctx);const async=left instanceof Promise||right instanceof Promise;if(async){return Promise.all([left,right]).then(([left2,right2])=>{return handleIntersectionResults(payload,left2,right2)})}return handleIntersectionResults(payload,left,right)}});$ZodTuple=$constructor("$ZodTuple",(inst,def)=>{$ZodType.init(inst,def);const items=def.items;inst._zod.parse=(payload,ctx)=>{const input=payload.value;if(!Array.isArray(input)){payload.issues.push({input,inst,expected:"tuple",code:"invalid_type"});return payload}payload.value=[];const proms=[];const optinStart=getTupleOptStart(items,"optin");const optoutStart=getTupleOptStart(items,"optout");if(!def.rest){if(input.length<optinStart){payload.issues.push({code:"too_small",minimum:optinStart,inclusive:true,input,inst,origin:"array"});return payload}if(input.length>items.length){payload.issues.push({code:"too_big",maximum:items.length,inclusive:true,input,inst,origin:"array"})}}const itemResults=new Array(items.length);for(let i=0;i<items.length;i++){const r=items[i]._zod.run({value:input[i],issues:[]},ctx);if(r instanceof Promise){proms.push(r.then(rr=>{itemResults[i]=rr}))}else{itemResults[i]=r}}if(def.rest){let i=items.length-1;const rest=input.slice(items.length);for(const el of rest){i++;const result=def.rest._zod.run({value:el,issues:[]},ctx);if(result instanceof Promise){proms.push(result.then(r=>handleTupleResult(r,payload,i)))}else{handleTupleResult(result,payload,i)}}}if(proms.length){return Promise.all(proms).then(()=>handleTupleResults(itemResults,payload,items,input,optoutStart))}return handleTupleResults(itemResults,payload,items,input,optoutStart)}});$ZodRecord=$constructor("$ZodRecord",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,ctx)=>{const input=payload.value;if(!isPlainObject(input)){payload.issues.push({expected:"record",code:"invalid_type",input,inst});return payload}const proms=[];const values=def.keyType._zod.values;if(values){payload.value={};const recordKeys=new Set;for(const key of values){if(typeof key==="string"||typeof key==="number"||typeof key==="symbol"){recordKeys.add(typeof key==="number"?key.toString():key);const keyResult=def.keyType._zod.run({value:key,issues:[]},ctx);if(keyResult instanceof Promise){throw new Error("Async schemas not supported in object keys currently")}if(keyResult.issues.length){payload.issues.push({code:"invalid_key",origin:"record",issues:keyResult.issues.map(iss=>finalizeIssue(iss,ctx,config())),input:key,path:[key],inst});continue}const outKey=keyResult.value;const result=def.valueType._zod.run({value:input[key],issues:[]},ctx);if(result instanceof Promise){proms.push(result.then(result2=>{if(result2.issues.length){payload.issues.push(...prefixIssues(key,result2.issues))}payload.value[outKey]=result2.value}))}else{if(result.issues.length){payload.issues.push(...prefixIssues(key,result.issues))}payload.value[outKey]=result.value}}}let unrecognized;for(const key in input){if(!recordKeys.has(key)){unrecognized=unrecognized??[];unrecognized.push(key)}}if(unrecognized&&unrecognized.length>0){payload.issues.push({code:"unrecognized_keys",input,inst,keys:unrecognized})}}else{payload.value={};for(const key of Reflect.ownKeys(input)){if(key==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(input,key))continue;let keyResult=def.keyType._zod.run({value:key,issues:[]},ctx);if(keyResult instanceof Promise){throw new Error("Async schemas not supported in object keys currently")}const checkNumericKey=typeof key==="string"&&number.test(key)&&keyResult.issues.length;if(checkNumericKey){const retryResult=def.keyType._zod.run({value:Number(key),issues:[]},ctx);if(retryResult instanceof Promise){throw new Error("Async schemas not supported in object keys currently")}if(retryResult.issues.length===0){keyResult=retryResult}}if(keyResult.issues.length){if(def.mode==="loose"){payload.value[key]=input[key]}else{payload.issues.push({code:"invalid_key",origin:"record",issues:keyResult.issues.map(iss=>finalizeIssue(iss,ctx,config())),input:key,path:[key],inst})}continue}const result=def.valueType._zod.run({value:input[key],issues:[]},ctx);if(result instanceof Promise){proms.push(result.then(result2=>{if(result2.issues.length){payload.issues.push(...prefixIssues(key,result2.issues))}payload.value[keyResult.value]=result2.value}))}else{if(result.issues.length){payload.issues.push(...prefixIssues(key,result.issues))}payload.value[keyResult.value]=result.value}}}if(proms.length){return Promise.all(proms).then(()=>payload)}return payload}});$ZodMap=$constructor("$ZodMap",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,ctx)=>{const input=payload.value;if(!(input instanceof Map)){payload.issues.push({expected:"map",code:"invalid_type",input,inst});return payload}const proms=[];payload.value=new Map;for(const[key,value]of input){const keyResult=def.keyType._zod.run({value:key,issues:[]},ctx);const valueResult=def.valueType._zod.run({value,issues:[]},ctx);if(keyResult instanceof Promise||valueResult instanceof Promise){proms.push(Promise.all([keyResult,valueResult]).then(([keyResult2,valueResult2])=>{handleMapResult(keyResult2,valueResult2,payload,key,input,inst,ctx)}))}else{handleMapResult(keyResult,valueResult,payload,key,input,inst,ctx)}}if(proms.length)return Promise.all(proms).then(()=>payload);return payload}});$ZodSet=$constructor("$ZodSet",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,ctx)=>{const input=payload.value;if(!(input instanceof Set)){payload.issues.push({input,inst,expected:"set",code:"invalid_type"});return payload}const proms=[];payload.value=new Set;for(const item of input){const result=def.valueType._zod.run({value:item,issues:[]},ctx);if(result instanceof Promise){proms.push(result.then(result2=>handleSetResult(result2,payload)))}else handleSetResult(result,payload)}if(proms.length)return Promise.all(proms).then(()=>payload);return payload}});$ZodEnum=$constructor("$ZodEnum",(inst,def)=>{$ZodType.init(inst,def);const values=getEnumValues(def.entries);const valuesSet=new Set(values);inst._zod.values=valuesSet;inst._zod.pattern=new RegExp(`^(${values.filter(k=>propertyKeyTypes.has(typeof k)).map(o=>typeof o==="string"?escapeRegex(o):o.toString()).join("|")})$`);inst._zod.parse=(payload,_ctx)=>{const input=payload.value;if(valuesSet.has(input)){return payload}payload.issues.push({code:"invalid_value",values,input,inst});return payload}});$ZodLiteral=$constructor("$ZodLiteral",(inst,def)=>{$ZodType.init(inst,def);if(def.values.length===0){throw new Error("Cannot create literal schema with no valid values")}const values=new Set(def.values);inst._zod.values=values;inst._zod.pattern=new RegExp(`^(${def.values.map(o=>typeof o==="string"?escapeRegex(o):o?escapeRegex(o.toString()):String(o)).join("|")})$`);inst._zod.parse=(payload,_ctx)=>{const input=payload.value;if(values.has(input)){return payload}payload.issues.push({code:"invalid_value",values:def.values,input,inst});return payload}});$ZodFile=$constructor("$ZodFile",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,_ctx)=>{const input=payload.value;if(input instanceof File)return payload;payload.issues.push({expected:"file",code:"invalid_type",input,inst});return payload}});$ZodTransform=$constructor("$ZodTransform",(inst,def)=>{$ZodType.init(inst,def);inst._zod.optin="optional";inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){throw new $ZodEncodeError(inst.constructor.name)}const _out=def.transform(payload.value,payload);if(ctx.async){const output=_out instanceof Promise?_out:Promise.resolve(_out);return output.then(output2=>{payload.value=output2;payload.fallback=true;return payload})}if(_out instanceof Promise){throw new $ZodAsyncError}payload.value=_out;payload.fallback=true;return payload}});$ZodOptional=$constructor("$ZodOptional",(inst,def)=>{$ZodType.init(inst,def);inst._zod.optin="optional";inst._zod.optout="optional";defineLazy(inst._zod,"values",()=>{return def.innerType._zod.values?new Set([...def.innerType._zod.values,void 0]):void 0});defineLazy(inst._zod,"pattern",()=>{const pattern=def.innerType._zod.pattern;return pattern?new RegExp(`^(${cleanRegex(pattern.source)})?$`):void 0});inst._zod.parse=(payload,ctx)=>{if(def.innerType._zod.optin==="optional"){const input=payload.value;const result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise)return result.then(r=>handleOptionalResult(r,input));return handleOptionalResult(result,input)}if(payload.value===void 0){return payload}return def.innerType._zod.run(payload,ctx)}});$ZodExactOptional=$constructor("$ZodExactOptional",(inst,def)=>{$ZodOptional.init(inst,def);defineLazy(inst._zod,"values",()=>def.innerType._zod.values);defineLazy(inst._zod,"pattern",()=>def.innerType._zod.pattern);inst._zod.parse=(payload,ctx)=>{return def.innerType._zod.run(payload,ctx)}});$ZodNullable=$constructor("$ZodNullable",(inst,def)=>{$ZodType.init(inst,def);defineLazy(inst._zod,"optin",()=>def.innerType._zod.optin);defineLazy(inst._zod,"optout",()=>def.innerType._zod.optout);defineLazy(inst._zod,"pattern",()=>{const pattern=def.innerType._zod.pattern;return pattern?new RegExp(`^(${cleanRegex(pattern.source)}|null)$`):void 0});defineLazy(inst._zod,"values",()=>{return def.innerType._zod.values?new Set([...def.innerType._zod.values,null]):void 0});inst._zod.parse=(payload,ctx)=>{if(payload.value===null)return payload;return def.innerType._zod.run(payload,ctx)}});$ZodDefault=$constructor("$ZodDefault",(inst,def)=>{$ZodType.init(inst,def);inst._zod.optin="optional";defineLazy(inst._zod,"values",()=>def.innerType._zod.values);inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){return def.innerType._zod.run(payload,ctx)}if(payload.value===void 0){payload.value=def.defaultValue;return payload}const result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise){return result.then(result2=>handleDefaultResult(result2,def))}return handleDefaultResult(result,def)}});$ZodPrefault=$constructor("$ZodPrefault",(inst,def)=>{$ZodType.init(inst,def);inst._zod.optin="optional";defineLazy(inst._zod,"values",()=>def.innerType._zod.values);inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){return def.innerType._zod.run(payload,ctx)}if(payload.value===void 0){payload.value=def.defaultValue}return def.innerType._zod.run(payload,ctx)}});$ZodNonOptional=$constructor("$ZodNonOptional",(inst,def)=>{$ZodType.init(inst,def);defineLazy(inst._zod,"values",()=>{const v=def.innerType._zod.values;return v?new Set([...v].filter(x=>x!==void 0)):void 0});inst._zod.parse=(payload,ctx)=>{const result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise){return result.then(result2=>handleNonOptionalResult(result2,inst))}return handleNonOptionalResult(result,inst)}});$ZodSuccess=$constructor("$ZodSuccess",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){throw new $ZodEncodeError("ZodSuccess")}const result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise){return result.then(result2=>{payload.value=result2.issues.length===0;return payload})}payload.value=result.issues.length===0;return payload}});$ZodCatch=$constructor("$ZodCatch",(inst,def)=>{$ZodType.init(inst,def);inst._zod.optin="optional";defineLazy(inst._zod,"optout",()=>def.innerType._zod.optout);defineLazy(inst._zod,"values",()=>def.innerType._zod.values);inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){return def.innerType._zod.run(payload,ctx)}const result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise){return result.then(result2=>{payload.value=result2.value;if(result2.issues.length){payload.value=def.catchValue({...payload,error:{issues:result2.issues.map(iss=>finalizeIssue(iss,ctx,config()))},input:payload.value});payload.issues=[];payload.fallback=true}return payload})}payload.value=result.value;if(result.issues.length){payload.value=def.catchValue({...payload,error:{issues:result.issues.map(iss=>finalizeIssue(iss,ctx,config()))},input:payload.value});payload.issues=[];payload.fallback=true}return payload}});$ZodNaN=$constructor("$ZodNaN",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,_ctx)=>{if(typeof payload.value!=="number"||!Number.isNaN(payload.value)){payload.issues.push({input:payload.value,inst,expected:"nan",code:"invalid_type"});return payload}return payload}});$ZodPipe=$constructor("$ZodPipe",(inst,def)=>{$ZodType.init(inst,def);defineLazy(inst._zod,"values",()=>def.in._zod.values);defineLazy(inst._zod,"optin",()=>def.in._zod.optin);defineLazy(inst._zod,"optout",()=>def.out._zod.optout);defineLazy(inst._zod,"propValues",()=>def.in._zod.propValues);inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){const right=def.out._zod.run(payload,ctx);if(right instanceof Promise){return right.then(right2=>handlePipeResult(right2,def.in,ctx))}return handlePipeResult(right,def.in,ctx)}const left=def.in._zod.run(payload,ctx);if(left instanceof Promise){return left.then(left2=>handlePipeResult(left2,def.out,ctx))}return handlePipeResult(left,def.out,ctx)}});$ZodCodec=$constructor("$ZodCodec",(inst,def)=>{$ZodType.init(inst,def);defineLazy(inst._zod,"values",()=>def.in._zod.values);defineLazy(inst._zod,"optin",()=>def.in._zod.optin);defineLazy(inst._zod,"optout",()=>def.out._zod.optout);defineLazy(inst._zod,"propValues",()=>def.in._zod.propValues);inst._zod.parse=(payload,ctx)=>{const direction=ctx.direction||"forward";if(direction==="forward"){const left=def.in._zod.run(payload,ctx);if(left instanceof Promise){return left.then(left2=>handleCodecAResult(left2,def,ctx))}return handleCodecAResult(left,def,ctx)}else{const right=def.out._zod.run(payload,ctx);if(right instanceof Promise){return right.then(right2=>handleCodecAResult(right2,def,ctx))}return handleCodecAResult(right,def,ctx)}}});$ZodPreprocess=$constructor("$ZodPreprocess",(inst,def)=>{$ZodPipe.init(inst,def)});$ZodReadonly=$constructor("$ZodReadonly",(inst,def)=>{$ZodType.init(inst,def);defineLazy(inst._zod,"propValues",()=>def.innerType._zod.propValues);defineLazy(inst._zod,"values",()=>def.innerType._zod.values);defineLazy(inst._zod,"optin",()=>def.innerType?._zod?.optin);defineLazy(inst._zod,"optout",()=>def.innerType?._zod?.optout);inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){return def.innerType._zod.run(payload,ctx)}const result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise){return result.then(handleReadonlyResult)}return handleReadonlyResult(result)}});$ZodTemplateLiteral=$constructor("$ZodTemplateLiteral",(inst,def)=>{$ZodType.init(inst,def);const regexParts=[];for(const part of def.parts){if(typeof part==="object"&&part!==null){if(!part._zod.pattern){throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`)}const source=part._zod.pattern instanceof RegExp?part._zod.pattern.source:part._zod.pattern;if(!source)throw new Error(`Invalid template literal part: ${part._zod.traits}`);const start=source.startsWith("^")?1:0;const end=source.endsWith("$")?source.length-1:source.length;regexParts.push(source.slice(start,end))}else if(part===null||primitiveTypes.has(typeof part)){regexParts.push(escapeRegex(`${part}`))}else{throw new Error(`Invalid template literal part: ${part}`)}}inst._zod.pattern=new RegExp(`^${regexParts.join("")}$`);inst._zod.parse=(payload,_ctx)=>{if(typeof payload.value!=="string"){payload.issues.push({input:payload.value,inst,expected:"string",code:"invalid_type"});return payload}inst._zod.pattern.lastIndex=0;if(!inst._zod.pattern.test(payload.value)){payload.issues.push({input:payload.value,inst,code:"invalid_format",format:def.format??"template_literal",pattern:inst._zod.pattern.source});return payload}return payload}});$ZodFunction=$constructor("$ZodFunction",(inst,def)=>{$ZodType.init(inst,def);inst._def=def;inst._zod.def=def;inst.implement=func=>{if(typeof func!=="function"){throw new Error("implement() must be called with a function")}return function(...args){const parsedArgs=inst._def.input?parse(inst._def.input,args):args;const result=Reflect.apply(func,this,parsedArgs);if(inst._def.output){return parse(inst._def.output,result)}return result}};inst.implementAsync=func=>{if(typeof func!=="function"){throw new Error("implementAsync() must be called with a function")}return async function(...args){const parsedArgs=inst._def.input?await parseAsync(inst._def.input,args):args;const result=await Reflect.apply(func,this,parsedArgs);if(inst._def.output){return await parseAsync(inst._def.output,result)}return result}};inst._zod.parse=(payload,_ctx)=>{if(typeof payload.value!=="function"){payload.issues.push({code:"invalid_type",expected:"function",input:payload.value,inst});return payload}const hasPromiseOutput=inst._def.output&&inst._def.output._zod.def.type==="promise";if(hasPromiseOutput){payload.value=inst.implementAsync(payload.value)}else{payload.value=inst.implement(payload.value)}return payload};inst.input=(...args)=>{const F=inst.constructor;if(Array.isArray(args[0])){return new F({type:"function",input:new $ZodTuple({type:"tuple",items:args[0],rest:args[1]}),output:inst._def.output})}return new F({type:"function",input:args[0],output:inst._def.output})};inst.output=output=>{const F=inst.constructor;return new F({type:"function",input:inst._def.input,output})};return inst});$ZodPromise=$constructor("$ZodPromise",(inst,def)=>{$ZodType.init(inst,def);inst._zod.parse=(payload,ctx)=>{return Promise.resolve(payload.value).then(inner=>def.innerType._zod.run({value:inner,issues:[]},ctx))}});$ZodLazy=$constructor("$ZodLazy",(inst,def)=>{$ZodType.init(inst,def);defineLazy(inst._zod,"innerType",()=>{const d=def;if(!d._cachedInner)d._cachedInner=def.getter();return d._cachedInner});defineLazy(inst._zod,"pattern",()=>inst._zod.innerType?._zod?.pattern);defineLazy(inst._zod,"propValues",()=>inst._zod.innerType?._zod?.propValues);defineLazy(inst._zod,"optin",()=>inst._zod.innerType?._zod?.optin??void 0);defineLazy(inst._zod,"optout",()=>inst._zod.innerType?._zod?.optout??void 0);inst._zod.parse=(payload,ctx)=>{const inner=inst._zod.innerType;return inner._zod.run(payload,ctx)}});$ZodCustom=$constructor("$ZodCustom",(inst,def)=>{$ZodCheck.init(inst,def);$ZodType.init(inst,def);inst._zod.parse=(payload,_)=>{return payload};inst._zod.check=payload=>{const input=payload.value;const r=def.fn(input);if(r instanceof Promise){return r.then(r2=>handleRefineResult(r2,payload,input,inst))}handleRefineResult(r,payload,input,inst);return}})}});function ar_default(){return{localeError:error()}}var error;var init_ar=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ar.js"(){init_util();error=()=>{const Sizable={string:{unit:"\u062D\u0631\u0641",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},file:{unit:"\u0628\u0627\u064A\u062A",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},array:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},set:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0645\u062F\u062E\u0644",email:"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",url:"\u0631\u0627\u0628\u0637",emoji:"\u0625\u064A\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",date:"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO",time:"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",duration:"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO",ipv4:"\u0639\u0646\u0648\u0627\u0646 IPv4",ipv6:"\u0639\u0646\u0648\u0627\u0646 IPv6",cidrv4:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4",cidrv6:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6",base64:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded",base64url:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded",json_string:"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON",e164:"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164",jwt:"JWT",template_literal:"\u0645\u062F\u062E\u0644"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue2.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`}return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${stringifyPrimitive(issue2.values[0])}`;return`\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue2.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"\u0639\u0646\u0635\u0631"}`;return`\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue2.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${adj} ${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue2.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue2.minimum.toString()} ${sizing.unit}`}return`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue2.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${issue2.prefix}"`;if(_issue.format==="ends_with")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${_issue.includes}"`;if(_issue.format==="regex")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`}case"not_multiple_of":return`\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue2.divisor}`;case"unrecognized_keys":return`\u0645\u0639\u0631\u0641${issue2.keys.length>1?"\u0627\u062A":""} \u063A\u0631\u064A\u0628${issue2.keys.length>1?"\u0629":""}: ${joinValues(issue2.keys,"\u060C ")}`;case"invalid_key":return`\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue2.origin}`;case"invalid_union":return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644";case"invalid_element":return`\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue2.origin}`;default:return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"}}}}});function az_default(){return{localeError:error2()}}var error2;var init_az=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/az.js"(){init_util();error2=()=>{const Sizable={string:{unit:"simvol",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"element",verb:"olmal\u0131d\u0131r"},set:{unit:"element",verb:"olmal\u0131d\u0131r"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${issue2.expected}, daxil olan ${received}`}return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`}case"invalid_value":if(issue2.values.length===1)return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${stringifyPrimitive(issue2.values[0])}`;return`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue2.origin??"d\u0259y\u0259r"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"element"}`;return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${issue2.origin??"d\u0259y\u0259r"} ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing)return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Yanl\u0131\u015F m\u0259tn: "${_issue.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`;if(_issue.format==="ends_with")return`Yanl\u0131\u015F m\u0259tn: "${_issue.suffix}" il\u0259 bitm\u0259lidir`;if(_issue.format==="includes")return`Yanl\u0131\u015F m\u0259tn: "${_issue.includes}" daxil olmal\u0131d\u0131r`;if(_issue.format==="regex")return`Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;return`Yanl\u0131\u015F ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Yanl\u0131\u015F \u0259d\u0259d: ${issue2.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`;case"unrecognized_keys":return`Tan\u0131nmayan a\xE7ar${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`;case"invalid_union":return"Yanl\u0131\u015F d\u0259y\u0259r";case"invalid_element":return`${issue2.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;default:return`Yanl\u0131\u015F d\u0259y\u0259r`}}}}});function getBelarusianPlural(count,one,few,many){const absCount=Math.abs(count);const lastDigit=absCount%10;const lastTwoDigits=absCount%100;if(lastTwoDigits>=11&&lastTwoDigits<=19){return many}if(lastDigit===1){return one}if(lastDigit>=2&&lastDigit<=4){return few}return many}function be_default(){return{localeError:error3()}}var error3;var init_be=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/be.js"(){init_util();error3=()=>{const Sizable={string:{unit:{one:"\u0441\u0456\u043C\u0432\u0430\u043B",few:"\u0441\u0456\u043C\u0432\u0430\u043B\u044B",many:"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u044B",many:"\u0431\u0430\u0439\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0443\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0430\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0447\u0430\u0441",duration:"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0430\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0430\u0441",cidrv4:"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",base64:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64",base64url:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url",json_string:"JSON \u0440\u0430\u0434\u043E\u043A",e164:"\u043D\u0443\u043C\u0430\u0440 E.164",jwt:"JWT",template_literal:"\u0443\u0432\u043E\u0434"};const TypeDictionary={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue2.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`}return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${stringifyPrimitive(issue2.values[0])}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){const maxValue=Number(issue2.maximum);const unit=getBelarusianPlural(maxValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue2.maximum.toString()} ${unit}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){const minValue=Number(issue2.minimum);const unit=getBelarusianPlural(minValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue2.minimum.toString()} ${unit}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue2.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${_issue.prefix}"`;if(_issue.format==="ends_with")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${_issue.includes}"`;if(_issue.format==="regex")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue2.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue2.keys.length>1?"\u043A\u043B\u044E\u0447\u044B":"\u043A\u043B\u044E\u0447"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue2.origin}`;case"invalid_union":return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434";case"invalid_element":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue2.origin}`;default:return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`}}}}});function bg_default(){return{localeError:error4()}}var error4;var init_bg=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/bg.js"(){init_util();error4=()=>{const Sizable={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},file:{unit:"\u0431\u0430\u0439\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0432\u0445\u043E\u0434",email:"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0436\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",base64url:"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",json_string:"JSON \u043D\u0438\u0437",e164:"E.164 \u043D\u043E\u043C\u0435\u0440",jwt:"JWT",template_literal:"\u0432\u0445\u043E\u0434"};const TypeDictionary={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue2.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`}return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${stringifyPrimitive(issue2.values[0])}`;return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`;return`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue2.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${_issue.prefix}"`}if(_issue.format==="ends_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${_issue.includes}"`;if(_issue.format==="regex")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`;let invalid_adj="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";if(_issue.format==="emoji")invalid_adj="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(_issue.format==="datetime")invalid_adj="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(_issue.format==="date")invalid_adj="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";if(_issue.format==="time")invalid_adj="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(_issue.format==="duration")invalid_adj="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";return`${invalid_adj} ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue2.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue2.keys.length>1?"\u0438":""} \u043A\u043B\u044E\u0447${issue2.keys.length>1?"\u043E\u0432\u0435":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue2.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434";case"invalid_element":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue2.origin}`;default:return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`}}}}});function ca_default(){return{localeError:error5()}}var error5;var init_ca=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ca.js"(){init_util();error5=()=>{const Sizable={string:{unit:"car\xE0cters",verb:"contenir"},file:{unit:"bytes",verb:"contenir"},array:{unit:"elements",verb:"contenir"},set:{unit:"elements",verb:"contenir"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"entrada",email:"adre\xE7a electr\xF2nica",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i hora ISO",date:"data ISO",time:"hora ISO",duration:"durada ISO",ipv4:"adre\xE7a IPv4",ipv6:"adre\xE7a IPv6",cidrv4:"rang IPv4",cidrv6:"rang IPv6",base64:"cadena codificada en base64",base64url:"cadena codificada en base64url",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Tipus inv\xE0lid: s'esperava instanceof ${issue2.expected}, s'ha rebut ${received}`}return`Tipus inv\xE0lid: s'esperava ${expected}, s'ha rebut ${received}`}case"invalid_value":if(issue2.values.length===1)return`Valor inv\xE0lid: s'esperava ${stringifyPrimitive(issue2.values[0])}`;return`Opci\xF3 inv\xE0lida: s'esperava una de ${joinValues(issue2.values," o ")}`;case"too_big":{const adj=issue2.inclusive?"com a m\xE0xim":"menys de";const sizing=getSizing(issue2.origin);if(sizing)return`Massa gran: s'esperava que ${issue2.origin??"el valor"} contingu\xE9s ${adj} ${issue2.maximum.toString()} ${sizing.unit??"elements"}`;return`Massa gran: s'esperava que ${issue2.origin??"el valor"} fos ${adj} ${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?"com a m\xEDnim":"m\xE9s de";const sizing=getSizing(issue2.origin);if(sizing){return`Massa petit: s'esperava que ${issue2.origin} contingu\xE9s ${adj} ${issue2.minimum.toString()} ${sizing.unit}`}return`Massa petit: s'esperava que ${issue2.origin} fos ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`Format inv\xE0lid: ha de comen\xE7ar amb "${_issue.prefix}"`}if(_issue.format==="ends_with")return`Format inv\xE0lid: ha d'acabar amb "${_issue.suffix}"`;if(_issue.format==="includes")return`Format inv\xE0lid: ha d'incloure "${_issue.includes}"`;if(_issue.format==="regex")return`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${_issue.pattern}`;return`Format inv\xE0lid per a ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${issue2.divisor}`;case"unrecognized_keys":return`Clau${issue2.keys.length>1?"s":""} no reconeguda${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Clau inv\xE0lida a ${issue2.origin}`;case"invalid_union":return"Entrada inv\xE0lida";case"invalid_element":return`Element inv\xE0lid a ${issue2.origin}`;default:return`Entrada inv\xE0lida`}}}}});function cs_default(){return{localeError:error6()}}var error6;var init_cs=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/cs.js"(){init_util();error6=()=>{const Sizable={string:{unit:"znak\u016F",verb:"m\xEDt"},file:{unit:"bajt\u016F",verb:"m\xEDt"},array:{unit:"prvk\u016F",verb:"m\xEDt"},set:{unit:"prvk\u016F",verb:"m\xEDt"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"regul\xE1rn\xED v\xFDraz",email:"e-mailov\xE1 adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"datum a \u010Das ve form\xE1tu ISO",date:"datum ve form\xE1tu ISO",time:"\u010Das ve form\xE1tu ISO",duration:"doba trv\xE1n\xED ISO",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"rozsah IPv4",cidrv6:"rozsah IPv6",base64:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64",base64url:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url",json_string:"\u0159et\u011Bzec ve form\xE1tu JSON",e164:"\u010D\xEDslo E.164",jwt:"JWT",template_literal:"vstup"};const TypeDictionary={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${issue2.expected}, obdr\u017Eeno ${received}`}return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${expected}, obdr\u017Eeno ${received}`}case"invalid_value":if(issue2.values.length===1)return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${stringifyPrimitive(issue2.values[0])}`;return`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue2.origin??"hodnota"} mus\xED m\xEDt ${adj}${issue2.maximum.toString()} ${sizing.unit??"prvk\u016F"}`}return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${issue2.origin??"hodnota"} mus\xED b\xFDt ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue2.origin??"hodnota"} mus\xED m\xEDt ${adj}${issue2.minimum.toString()} ${sizing.unit??"prvk\u016F"}`}return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${issue2.origin??"hodnota"} mus\xED b\xFDt ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${_issue.suffix}"`;if(_issue.format==="includes")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${_issue.includes}"`;if(_issue.format==="regex")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${_issue.pattern}`;return`Neplatn\xFD form\xE1t ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${issue2.divisor}`;case"unrecognized_keys":return`Nezn\xE1m\xE9 kl\xED\u010De: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neplatn\xFD kl\xED\u010D v ${issue2.origin}`;case"invalid_union":return"Neplatn\xFD vstup";case"invalid_element":return`Neplatn\xE1 hodnota v ${issue2.origin}`;default:return`Neplatn\xFD vstup`}}}}});function da_default(){return{localeError:error7()}}var error7;var init_da=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/da.js"(){init_util();error7=()=>{const Sizable={string:{unit:"tegn",verb:"havde"},file:{unit:"bytes",verb:"havde"},array:{unit:"elementer",verb:"indeholdt"},set:{unit:"elementer",verb:"indeholdt"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"input",email:"e-mailadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkesl\xE6t",date:"ISO-dato",time:"ISO-klokkesl\xE6t",duration:"ISO-varighed",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodet streng",base64url:"base64url-kodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN",string:"streng",number:"tal",boolean:"boolean",array:"liste",object:"objekt",set:"s\xE6t",file:"fil"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Ugyldigt input: forventede instanceof ${issue2.expected}, fik ${received}`}return`Ugyldigt input: forventede ${expected}, fik ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ugyldig v\xE6rdi: forventede ${stringifyPrimitive(issue2.values[0])}`;return`Ugyldigt valg: forventede en af f\xF8lgende ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);const origin=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`For stor: forventede ${origin??"value"} ${sizing.verb} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"elementer"}`;return`For stor: forventede ${origin??"value"} havde ${adj} ${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);const origin=TypeDictionary[issue2.origin]??issue2.origin;if(sizing){return`For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`}return`For lille: forventede ${origin} havde ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Ugyldig streng: skal starte med "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Ugyldig streng: skal ende med "${_issue.suffix}"`;if(_issue.format==="includes")return`Ugyldig streng: skal indeholde "${_issue.includes}"`;if(_issue.format==="regex")return`Ugyldig streng: skal matche m\xF8nsteret ${_issue.pattern}`;return`Ugyldig ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ugyldigt tal: skal v\xE6re deleligt med ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Ukendte n\xF8gler":"Ukendt n\xF8gle"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8gle i ${issue2.origin}`;case"invalid_union":return"Ugyldigt input: matcher ingen af de tilladte typer";case"invalid_element":return`Ugyldig v\xE6rdi i ${issue2.origin}`;default:return`Ugyldigt input`}}}}});function de_default(){return{localeError:error8()}}var error8;var init_de=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/de.js"(){init_util();error8=()=>{const Sizable={string:{unit:"Zeichen",verb:"zu haben"},file:{unit:"Bytes",verb:"zu haben"},array:{unit:"Elemente",verb:"zu haben"},set:{unit:"Elemente",verb:"zu haben"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"Eingabe",email:"E-Mail-Adresse",url:"URL",emoji:"Emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-Datum und -Uhrzeit",date:"ISO-Datum",time:"ISO-Uhrzeit",duration:"ISO-Dauer",ipv4:"IPv4-Adresse",ipv6:"IPv6-Adresse",cidrv4:"IPv4-Bereich",cidrv6:"IPv6-Bereich",base64:"Base64-codierter String",base64url:"Base64-URL-codierter String",json_string:"JSON-String",e164:"E.164-Nummer",jwt:"JWT",template_literal:"Eingabe"};const TypeDictionary={nan:"NaN",number:"Zahl",array:"Array"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Ung\xFCltige Eingabe: erwartet instanceof ${issue2.expected}, erhalten ${received}`}return`Ung\xFCltige Eingabe: erwartet ${expected}, erhalten ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ung\xFCltige Eingabe: erwartet ${stringifyPrimitive(issue2.values[0])}`;return`Ung\xFCltige Option: erwartet eine von ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Zu gro\xDF: erwartet, dass ${issue2.origin??"Wert"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"Elemente"} hat`;return`Zu gro\xDF: erwartet, dass ${issue2.origin??"Wert"} ${adj}${issue2.maximum.toString()} ist`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} hat`}return`Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ist`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Ung\xFCltiger String: muss mit "${_issue.prefix}" beginnen`;if(_issue.format==="ends_with")return`Ung\xFCltiger String: muss mit "${_issue.suffix}" enden`;if(_issue.format==="includes")return`Ung\xFCltiger String: muss "${_issue.includes}" enthalten`;if(_issue.format==="regex")return`Ung\xFCltiger String: muss dem Muster ${_issue.pattern} entsprechen`;return`Ung\xFCltig: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ung\xFCltige Zahl: muss ein Vielfaches von ${issue2.divisor} sein`;case"unrecognized_keys":return`${issue2.keys.length>1?"Unbekannte Schl\xFCssel":"Unbekannter Schl\xFCssel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ung\xFCltiger Schl\xFCssel in ${issue2.origin}`;case"invalid_union":return"Ung\xFCltige Eingabe";case"invalid_element":return`Ung\xFCltiger Wert in ${issue2.origin}`;default:return`Ung\xFCltige Eingabe`}}}}});function el_default(){return{localeError:error9()}}var error9;var init_el=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/el.js"(){init_util();error9=()=>{const Sizable={string:{unit:"\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},file:{unit:"bytes",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},array:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},set:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},map:{unit:"\u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2",email:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03CE\u03C1\u03B1",date:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1",time:"ISO \u03CE\u03C1\u03B1",duration:"ISO \u03B4\u03B9\u03AC\u03C1\u03BA\u03B5\u03B9\u03B1",ipv4:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv4",ipv6:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv6",mac:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 MAC",cidrv4:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv4",cidrv6:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv6",base64:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64",base64url:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64url",json_string:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC JSON",e164:"\u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 E.164",jwt:"JWT",template_literal:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(typeof issue2.expected==="string"&&/^[A-Z]/.test(issue2.expected)){return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD instanceof ${issue2.expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${received}`}return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${stringifyPrimitive(issue2.values[0])}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1"}`;return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue2.origin} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03BC\u03B5 "${_issue.prefix}"`}if(_issue.format==="ends_with")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B5\u03BB\u03B5\u03B9\u03CE\u03BD\u03B5\u03B9 \u03BC\u03B5 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 "${_issue.includes}"`;if(_issue.format==="regex")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03BF\u03C4\u03AF\u03B2\u03BF ${_issue.pattern}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AC\u03C3\u03B9\u03BF \u03C4\u03BF\u03C5 ${issue2.divisor}`;case"unrecognized_keys":return`\u0386\u03B3\u03BD\u03C9\u03C3\u03C4${issue2.keys.length>1?"\u03B1":"\u03BF"} \u03BA\u03BB\u03B5\u03B9\u03B4${issue2.keys.length>1?"\u03B9\u03AC":"\u03AF"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03C3\u03C4\u03BF ${issue2.origin}`;case"invalid_union":return"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2";case"invalid_element":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C3\u03C4\u03BF ${issue2.origin}`;default:return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2`}}}}});function en_default(){return{localeError:error10()}}var error10;var init_en=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/en.js"(){init_util();error10=()=>{const Sizable={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;return`Invalid input: expected ${expected}, received ${received}`}case"invalid_value":if(issue2.values.length===1)return`Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`;return`Invalid option: expected one of ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Too big: expected ${issue2.origin??"value"} to have ${adj}${issue2.maximum.toString()} ${sizing.unit??"elements"}`;return`Too big: expected ${issue2.origin??"value"} to be ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Too small: expected ${issue2.origin} to have ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Too small: expected ${issue2.origin} to be ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`Invalid string: must start with "${_issue.prefix}"`}if(_issue.format==="ends_with")return`Invalid string: must end with "${_issue.suffix}"`;if(_issue.format==="includes")return`Invalid string: must include "${_issue.includes}"`;if(_issue.format==="regex")return`Invalid string: must match pattern ${_issue.pattern}`;return`Invalid ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${issue2.divisor}`;case"unrecognized_keys":return`Unrecognized key${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Invalid key in ${issue2.origin}`;case"invalid_union":if(issue2.options&&Array.isArray(issue2.options)&&issue2.options.length>0){const opts=issue2.options.map(o=>`'${o}'`).join(" | ");return`Invalid discriminator value. Expected ${opts}`}return"Invalid input";case"invalid_element":return`Invalid value in ${issue2.origin}`;default:return`Invalid input`}}}}});function eo_default(){return{localeError:error11()}}var error11;var init_eo=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/eo.js"(){init_util();error11=()=>{const Sizable={string:{unit:"karaktrojn",verb:"havi"},file:{unit:"bajtojn",verb:"havi"},array:{unit:"elementojn",verb:"havi"},set:{unit:"elementojn",verb:"havi"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"enigo",email:"retadreso",url:"URL",emoji:"emo\u011Dio",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datotempo",date:"ISO-dato",time:"ISO-tempo",duration:"ISO-da\u016Dro",ipv4:"IPv4-adreso",ipv6:"IPv6-adreso",cidrv4:"IPv4-rango",cidrv6:"IPv6-rango",base64:"64-ume kodita karaktraro",base64url:"URL-64-ume kodita karaktraro",json_string:"JSON-karaktraro",e164:"E.164-nombro",jwt:"JWT",template_literal:"enigo"};const TypeDictionary={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Nevalida enigo: atendi\u011Dis instanceof ${issue2.expected}, ricevi\u011Dis ${received}`}return`Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`}case"invalid_value":if(issue2.values.length===1)return`Nevalida enigo: atendi\u011Dis ${stringifyPrimitive(issue2.values[0])}`;return`Nevalida opcio: atendi\u011Dis unu el ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Tro granda: atendi\u011Dis ke ${issue2.origin??"valoro"} havu ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementojn"}`;return`Tro granda: atendi\u011Dis ke ${issue2.origin??"valoro"} havu ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Tro malgranda: atendi\u011Dis ke ${issue2.origin} havu ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Tro malgranda: atendi\u011Dis ke ${issue2.origin} estu ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Nevalida karaktraro: devas komenci\u011Di per "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Nevalida karaktraro: devas fini\u011Di per "${_issue.suffix}"`;if(_issue.format==="includes")return`Nevalida karaktraro: devas inkluzivi "${_issue.includes}"`;if(_issue.format==="regex")return`Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;return`Nevalida ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Nevalida nombro: devas esti oblo de ${issue2.divisor}`;case"unrecognized_keys":return`Nekonata${issue2.keys.length>1?"j":""} \u015Dlosilo${issue2.keys.length>1?"j":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Nevalida \u015Dlosilo en ${issue2.origin}`;case"invalid_union":return"Nevalida enigo";case"invalid_element":return`Nevalida valoro en ${issue2.origin}`;default:return`Nevalida enigo`}}}}});function es_default(){return{localeError:error12()}}var error12;var init_es=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/es.js"(){init_util();error12=()=>{const Sizable={string:{unit:"caracteres",verb:"tener"},file:{unit:"bytes",verb:"tener"},array:{unit:"elementos",verb:"tener"},set:{unit:"elementos",verb:"tener"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"entrada",email:"direcci\xF3n de correo electr\xF3nico",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"fecha y hora ISO",date:"fecha ISO",time:"hora ISO",duration:"duraci\xF3n ISO",ipv4:"direcci\xF3n IPv4",ipv6:"direcci\xF3n IPv6",cidrv4:"rango IPv4",cidrv6:"rango IPv6",base64:"cadena codificada en base64",base64url:"URL codificada en base64",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"};const TypeDictionary={nan:"NaN",string:"texto",number:"n\xFAmero",boolean:"booleano",array:"arreglo",object:"objeto",set:"conjunto",file:"archivo",date:"fecha",bigint:"n\xFAmero grande",symbol:"s\xEDmbolo",undefined:"indefinido",null:"nulo",function:"funci\xF3n",map:"mapa",record:"registro",tuple:"tupla",enum:"enumeraci\xF3n",union:"uni\xF3n",literal:"literal",promise:"promesa",void:"vac\xEDo",never:"nunca",unknown:"desconocido",any:"cualquiera"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Entrada inv\xE1lida: se esperaba instanceof ${issue2.expected}, recibido ${received}`}return`Entrada inv\xE1lida: se esperaba ${expected}, recibido ${received}`}case"invalid_value":if(issue2.values.length===1)return`Entrada inv\xE1lida: se esperaba ${stringifyPrimitive(issue2.values[0])}`;return`Opci\xF3n inv\xE1lida: se esperaba una de ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);const origin=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`Demasiado grande: se esperaba que ${origin??"valor"} tuviera ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${origin??"valor"} fuera ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);const origin=TypeDictionary[issue2.origin]??issue2.origin;if(sizing){return`Demasiado peque\xF1o: se esperaba que ${origin} tuviera ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Demasiado peque\xF1o: se esperaba que ${origin} fuera ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Cadena inv\xE1lida: debe comenzar con "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Cadena inv\xE1lida: debe terminar en "${_issue.suffix}"`;if(_issue.format==="includes")return`Cadena inv\xE1lida: debe incluir "${_issue.includes}"`;if(_issue.format==="regex")return`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${_issue.pattern}`;return`Inv\xE1lido ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${issue2.divisor}`;case"unrecognized_keys":return`Llave${issue2.keys.length>1?"s":""} desconocida${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${TypeDictionary[issue2.origin]??issue2.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${TypeDictionary[issue2.origin]??issue2.origin}`;default:return`Entrada inv\xE1lida`}}}}});function fa_default(){return{localeError:error13()}}var error13;var init_fa=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fa.js"(){init_util();error13=()=>{const Sizable={string:{unit:"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},file:{unit:"\u0628\u0627\u06CC\u062A",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},array:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},set:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0648\u0631\u0648\u062F\u06CC",email:"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644",url:"URL",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",date:"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648",time:"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",duration:"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",ipv4:"IPv4 \u0622\u062F\u0631\u0633",ipv6:"IPv6 \u0622\u062F\u0631\u0633",cidrv4:"IPv4 \u062F\u0627\u0645\u0646\u0647",cidrv6:"IPv6 \u062F\u0627\u0645\u0646\u0647",base64:"base64-encoded \u0631\u0634\u062A\u0647",base64url:"base64url-encoded \u0631\u0634\u062A\u0647",json_string:"JSON \u0631\u0634\u062A\u0647",e164:"E.164 \u0639\u062F\u062F",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u06CC"};const TypeDictionary={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue2.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`}return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`}case"invalid_value":if(issue2.values.length===1){return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${stringifyPrimitive(issue2.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`}return`\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${joinValues(issue2.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){return`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue2.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`}return`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue2.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`}return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`}if(_issue.format==="ends_with"){return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${_issue.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`}if(_issue.format==="includes"){return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${_issue.includes}" \u0628\u0627\u0634\u062F`}if(_issue.format==="regex"){return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`}return`${FormatDictionary[_issue.format]??issue2.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`}case"not_multiple_of":return`\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue2.divisor} \u0628\u0627\u0634\u062F`;case"unrecognized_keys":return`\u06A9\u0644\u06CC\u062F${issue2.keys.length>1?"\u0647\u0627\u06CC":""} \u0646\u0627\u0634\u0646\u0627\u0633: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue2.origin}`;case"invalid_union":return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;case"invalid_element":return`\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue2.origin}`;default:return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`}}}}});function fi_default(){return{localeError:error14()}}var error14;var init_fi=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fi.js"(){init_util();error14=()=>{const Sizable={string:{unit:"merkki\xE4",subject:"merkkijonon"},file:{unit:"tavua",subject:"tiedoston"},array:{unit:"alkiota",subject:"listan"},set:{unit:"alkiota",subject:"joukon"},number:{unit:"",subject:"luvun"},bigint:{unit:"",subject:"suuren kokonaisluvun"},int:{unit:"",subject:"kokonaisluvun"},date:{unit:"",subject:"p\xE4iv\xE4m\xE4\xE4r\xE4n"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"s\xE4\xE4nn\xF6llinen lauseke",email:"s\xE4hk\xF6postiosoite",url:"URL-osoite",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-aikaleima",date:"ISO-p\xE4iv\xE4m\xE4\xE4r\xE4",time:"ISO-aika",duration:"ISO-kesto",ipv4:"IPv4-osoite",ipv6:"IPv6-osoite",cidrv4:"IPv4-alue",cidrv6:"IPv6-alue",base64:"base64-koodattu merkkijono",base64url:"base64url-koodattu merkkijono",json_string:"JSON-merkkijono",e164:"E.164-luku",jwt:"JWT",template_literal:"templaattimerkkijono"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Virheellinen tyyppi: odotettiin instanceof ${issue2.expected}, oli ${received}`}return`Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`}case"invalid_value":if(issue2.values.length===1)return`Virheellinen sy\xF6te: t\xE4ytyy olla ${stringifyPrimitive(issue2.values[0])}`;return`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){return`Liian suuri: ${sizing.subject} t\xE4ytyy olla ${adj}${issue2.maximum.toString()} ${sizing.unit}`.trim()}return`Liian suuri: arvon t\xE4ytyy olla ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Liian pieni: ${sizing.subject} t\xE4ytyy olla ${adj}${issue2.minimum.toString()} ${sizing.unit}`.trim()}return`Liian pieni: arvon t\xE4ytyy olla ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Virheellinen sy\xF6te: t\xE4ytyy loppua "${_issue.suffix}"`;if(_issue.format==="includes")return`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${_issue.includes}"`;if(_issue.format==="regex"){return`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${_issue.pattern}`}return`Virheellinen ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Virheellinen luku: t\xE4ytyy olla luvun ${issue2.divisor} monikerta`;case"unrecognized_keys":return`${issue2.keys.length>1?"Tuntemattomat avaimet":"Tuntematon avain"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return"Virheellinen avain tietueessa";case"invalid_union":return"Virheellinen unioni";case"invalid_element":return"Virheellinen arvo joukossa";default:return`Virheellinen sy\xF6te`}}}}});function fr_default(){return{localeError:error15()}}var error15;var init_fr=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fr.js"(){init_util();error15=()=>{const Sizable={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"entr\xE9e",email:"adresse e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date et heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"};const TypeDictionary={string:"cha\xEEne",number:"nombre",int:"entier",boolean:"bool\xE9en",bigint:"grand entier",symbol:"symbole",undefined:"ind\xE9fini",null:"null",never:"jamais",void:"vide",date:"date",array:"tableau",object:"objet",tuple:"tuple",record:"enregistrement",map:"carte",set:"ensemble",file:"fichier",nonoptional:"non-optionnel",nan:"NaN",function:"fonction"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Entr\xE9e invalide : instanceof ${issue2.expected} attendu, ${received} re\xE7u`}return`Entr\xE9e invalide : ${expected} attendu, ${received} re\xE7u`}case"invalid_value":if(issue2.values.length===1)return`Entr\xE9e invalide : ${stringifyPrimitive(issue2.values[0])} attendu`;return`Option invalide : une valeur parmi ${joinValues(issue2.values,"|")} attendue`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Trop grand : ${TypeDictionary[issue2.origin]??"valeur"} doit ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"\xE9l\xE9ment(s)"}`;return`Trop grand : ${TypeDictionary[issue2.origin]??"valeur"} doit \xEAtre ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing)return`Trop petit : ${TypeDictionary[issue2.origin]??"valeur"} doit ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Trop petit : ${TypeDictionary[issue2.origin]??"valeur"} doit \xEAtre ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`;if(_issue.format==="includes")return`Cha\xEEne invalide : doit inclure "${_issue.includes}"`;if(_issue.format==="regex")return`Cha\xEEne invalide : doit correspondre au mod\xE8le ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${issue2.divisor}`;case"unrecognized_keys":return`Cl\xE9${issue2.keys.length>1?"s":""} non reconnue${issue2.keys.length>1?"s":""} : ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${issue2.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${issue2.origin}`;default:return`Entr\xE9e invalide`}}}}});function fr_CA_default(){return{localeError:error16()}}var error16;var init_fr_CA=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fr-CA.js"(){init_util();error16=()=>{const Sizable={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"entr\xE9e",email:"adresse courriel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date-heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Entr\xE9e invalide : attendu instanceof ${issue2.expected}, re\xE7u ${received}`}return`Entr\xE9e invalide : attendu ${expected}, re\xE7u ${received}`}case"invalid_value":if(issue2.values.length===1)return`Entr\xE9e invalide : attendu ${stringifyPrimitive(issue2.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"\u2264":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Trop grand : attendu que ${issue2.origin??"la valeur"} ait ${adj}${issue2.maximum.toString()} ${sizing.unit}`;return`Trop grand : attendu que ${issue2.origin??"la valeur"} soit ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?"\u2265":">";const sizing=getSizing(issue2.origin);if(sizing){return`Trop petit : attendu que ${issue2.origin} ait ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Trop petit : attendu que ${issue2.origin} soit ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`Cha\xEEne invalide : doit commencer par "${_issue.prefix}"`}if(_issue.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${_issue.suffix}"`;if(_issue.format==="includes")return`Cha\xEEne invalide : doit inclure "${_issue.includes}"`;if(_issue.format==="regex")return`Cha\xEEne invalide : doit correspondre au motif ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${issue2.divisor}`;case"unrecognized_keys":return`Cl\xE9${issue2.keys.length>1?"s":""} non reconnue${issue2.keys.length>1?"s":""} : ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${issue2.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${issue2.origin}`;default:return`Entr\xE9e invalide`}}}}});function he_default(){return{localeError:error17()}}var error17;var init_he=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/he.js"(){init_util();error17=()=>{const TypeNames={string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA",gender:"f"},number:{label:"\u05DE\u05E1\u05E4\u05E8",gender:"m"},boolean:{label:"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9",gender:"m"},bigint:{label:"BigInt",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA",gender:"m"},array:{label:"\u05DE\u05E2\u05E8\u05DA",gender:"m"},object:{label:"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8",gender:"m"},null:{label:"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)",gender:"m"},undefined:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)",gender:"m"},symbol:{label:"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)",gender:"m"},function:{label:"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4",gender:"f"},map:{label:"\u05DE\u05E4\u05D4 (Map)",gender:"f"},set:{label:"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)",gender:"f"},file:{label:"\u05E7\u05D5\u05D1\u05E5",gender:"m"},promise:{label:"Promise",gender:"m"},NaN:{label:"NaN",gender:"m"},unknown:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2",gender:"m"},value:{label:"\u05E2\u05E8\u05DA",gender:"m"}};const Sizable={string:{unit:"\u05EA\u05D5\u05D5\u05D9\u05DD",shortLabel:"\u05E7\u05E6\u05E8",longLabel:"\u05D0\u05E8\u05D5\u05DA"},file:{unit:"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},array:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},set:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},number:{unit:"",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"}};const typeEntry=t=>t?TypeNames[t]:void 0;const typeLabel=t=>{const e=typeEntry(t);if(e)return e.label;return t??TypeNames.unknown.label};const withDefinite=t=>`\u05D4${typeLabel(t)}`;const verbFor=t=>{const e=typeEntry(t);const gender=e?.gender??"m";return gender==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"};const getSizing=origin=>{if(!origin)return null;return Sizable[origin]??null};const FormatDictionary={regex:{label:"\u05E7\u05DC\u05D8",gender:"m"},email:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC",gender:"f"},url:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA",gender:"f"},emoji:{label:"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9",gender:"m"},uuid:{label:"UUID",gender:"m"},nanoid:{label:"nanoid",gender:"m"},guid:{label:"GUID",gender:"m"},cuid:{label:"cuid",gender:"m"},cuid2:{label:"cuid2",gender:"m"},ulid:{label:"ULID",gender:"m"},xid:{label:"XID",gender:"m"},ksuid:{label:"KSUID",gender:"m"},datetime:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA ISO",gender:"m"},time:{label:"\u05D6\u05DE\u05DF ISO",gender:"m"},duration:{label:"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO",gender:"m"},ipv4:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4",gender:"f"},ipv6:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6",gender:"f"},cidrv4:{label:"\u05D8\u05D5\u05D5\u05D7 IPv4",gender:"m"},cidrv6:{label:"\u05D8\u05D5\u05D5\u05D7 IPv6",gender:"m"},base64:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64",gender:"f"},base64url:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA",gender:"f"},json_string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON",gender:"f"},e164:{label:"\u05DE\u05E1\u05E4\u05E8 E.164",gender:"m"},jwt:{label:"JWT",gender:"m"},ends_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},includes:{label:"\u05E7\u05DC\u05D8",gender:"m"},lowercase:{label:"\u05E7\u05DC\u05D8",gender:"m"},starts_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},uppercase:{label:"\u05E7\u05DC\u05D8",gender:"m"}};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expectedKey=issue2.expected;const expected=TypeDictionary[expectedKey??""]??typeLabel(expectedKey);const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??TypeNames[receivedType]?.label??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue2.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`}return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`}case"invalid_value":{if(issue2.values.length===1){return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${stringifyPrimitive(issue2.values[0])}`}const stringified=issue2.values.map(v=>stringifyPrimitive(v));if(issue2.values.length===2){return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`}const lastValue=stringified[stringified.length-1];const restValues=stringified.slice(0,-1).join(", ");return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`}case"too_big":{const sizing=getSizing(issue2.origin);const subject=withDefinite(issue2.origin??"value");if(issue2.origin==="string"){return`${sizing?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue2.maximum.toString()} ${sizing?.unit??""} ${issue2.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim()}if(issue2.origin==="number"){const comparison=issue2.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue2.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${issue2.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`}if(issue2.origin==="array"||issue2.origin==="set"){const verb=issue2.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";const comparison=issue2.inclusive?`${issue2.maximum} ${sizing?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${issue2.maximum} ${sizing?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim()}const adj=issue2.inclusive?"<=":"<";const be=verbFor(issue2.origin??"value");if(sizing?.unit){return`${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.maximum.toString()} ${sizing.unit}`}return`${sizing?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.maximum.toString()}`}case"too_small":{const sizing=getSizing(issue2.origin);const subject=withDefinite(issue2.origin??"value");if(issue2.origin==="string"){return`${sizing?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue2.minimum.toString()} ${sizing?.unit??""} ${issue2.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim()}if(issue2.origin==="number"){const comparison=issue2.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue2.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${issue2.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`}if(issue2.origin==="array"||issue2.origin==="set"){const verb=issue2.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(issue2.minimum===1&&issue2.inclusive){const singularPhrase=issue2.origin==="set"?"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3":"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3";return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`}const comparison=issue2.inclusive?`${issue2.minimum} ${sizing?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue2.minimum} ${sizing?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim()}const adj=issue2.inclusive?">=":">";const be=verbFor(issue2.origin??"value");if(sizing?.unit){return`${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`${sizing?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${_issue.prefix}"`;if(_issue.format==="ends_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${_issue.includes}"`;if(_issue.format==="regex")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`;const nounEntry=FormatDictionary[_issue.format];const noun=nounEntry?.label??_issue.format;const gender=nounEntry?.gender??"m";const adjective=gender==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${noun} \u05DC\u05D0 ${adjective}`}case"not_multiple_of":return`\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue2.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${issue2.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue2.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":{return`\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`}case"invalid_union":return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";case"invalid_element":{const place=withDefinite(issue2.origin??"array");return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`}default:return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`}}}}});function hr_default(){return{localeError:error18()}}var error18;var init_hr=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hr.js"(){init_util();error18=()=>{const Sizable={string:{unit:"znakova",verb:"imati"},file:{unit:"bajtova",verb:"imati"},array:{unit:"stavki",verb:"imati"},set:{unit:"stavki",verb:"imati"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"unos",email:"email adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum i vrijeme",date:"ISO datum",time:"ISO vrijeme",duration:"ISO trajanje",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"IPv4 raspon",cidrv6:"IPv6 raspon",base64:"base64 kodirani tekst",base64url:"base64url kodirani tekst",json_string:"JSON tekst",e164:"E.164 broj",jwt:"JWT",template_literal:"unos"};const TypeDictionary={nan:"NaN",string:"tekst",number:"broj",boolean:"boolean",array:"niz",object:"objekt",set:"skup",file:"datoteka",date:"datum",bigint:"bigint",symbol:"simbol",undefined:"undefined",null:"null",function:"funkcija",map:"mapa"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Neispravan unos: o\u010Dekuje se instanceof ${issue2.expected}, a primljeno je ${received}`}return`Neispravan unos: o\u010Dekuje se ${expected}, a primljeno je ${received}`}case"invalid_value":if(issue2.values.length===1)return`Neispravna vrijednost: o\u010Dekivano ${stringifyPrimitive(issue2.values[0])}`;return`Neispravna opcija: o\u010Dekivano jedno od ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);const origin=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`Preveliko: o\u010Dekivano da ${origin??"vrijednost"} ima ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemenata"}`;return`Preveliko: o\u010Dekivano da ${origin??"vrijednost"} bude ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);const origin=TypeDictionary[issue2.origin]??issue2.origin;if(sizing){return`Premalo: o\u010Dekivano da ${origin} ima ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Premalo: o\u010Dekivano da ${origin} bude ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Neispravan tekst: mora zapo\u010Dinjati s "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Neispravan tekst: mora zavr\u0161avati s "${_issue.suffix}"`;if(_issue.format==="includes")return`Neispravan tekst: mora sadr\u017Eavati "${_issue.includes}"`;if(_issue.format==="regex")return`Neispravan tekst: mora odgovarati uzorku ${_issue.pattern}`;return`Neispravna ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Neispravan broj: mora biti vi\u0161ekratnik od ${issue2.divisor}`;case"unrecognized_keys":return`Neprepoznat${issue2.keys.length>1?"i klju\u010Devi":" klju\u010D"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neispravan klju\u010D u ${TypeDictionary[issue2.origin]??issue2.origin}`;case"invalid_union":return"Neispravan unos";case"invalid_element":return`Neispravna vrijednost u ${TypeDictionary[issue2.origin]??issue2.origin}`;default:return`Neispravan unos`}}}}});function hu_default(){return{localeError:error19()}}var error19;var init_hu=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hu.js"(){init_util();error19=()=>{const Sizable={string:{unit:"karakter",verb:"legyen"},file:{unit:"byte",verb:"legyen"},array:{unit:"elem",verb:"legyen"},set:{unit:"elem",verb:"legyen"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"bemenet",email:"email c\xEDm",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO id\u0151b\xE9lyeg",date:"ISO d\xE1tum",time:"ISO id\u0151",duration:"ISO id\u0151intervallum",ipv4:"IPv4 c\xEDm",ipv6:"IPv6 c\xEDm",cidrv4:"IPv4 tartom\xE1ny",cidrv6:"IPv6 tartom\xE1ny",base64:"base64-k\xF3dolt string",base64url:"base64url-k\xF3dolt string",json_string:"JSON string",e164:"E.164 sz\xE1m",jwt:"JWT",template_literal:"bemenet"};const TypeDictionary={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${issue2.expected}, a kapott \xE9rt\xE9k ${received}`}return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${expected}, a kapott \xE9rt\xE9k ${received}`}case"invalid_value":if(issue2.values.length===1)return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${stringifyPrimitive(issue2.values[0])}`;return`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`T\xFAl nagy: ${issue2.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${adj}${issue2.maximum.toString()} ${sizing.unit??"elem"}`;return`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${issue2.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue2.origin} m\xE9rete t\xFAl kicsi ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${issue2.origin} t\xFAl kicsi ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\xC9rv\xE9nytelen string: "${_issue.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`;if(_issue.format==="ends_with")return`\xC9rv\xE9nytelen string: "${_issue.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`;if(_issue.format==="includes")return`\xC9rv\xE9nytelen string: "${_issue.includes}" \xE9rt\xE9ket kell tartalmaznia`;if(_issue.format==="regex")return`\xC9rv\xE9nytelen string: ${_issue.pattern} mint\xE1nak kell megfelelnie`;return`\xC9rv\xE9nytelen ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\xC9rv\xE9nytelen sz\xE1m: ${issue2.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`;case"unrecognized_keys":return`Ismeretlen kulcs${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\xC9rv\xE9nytelen kulcs ${issue2.origin}`;case"invalid_union":return"\xC9rv\xE9nytelen bemenet";case"invalid_element":return`\xC9rv\xE9nytelen \xE9rt\xE9k: ${issue2.origin}`;default:return`\xC9rv\xE9nytelen bemenet`}}}}});function getArmenianPlural(count,one,many){return Math.abs(count)===1?one:many}function withDefiniteArticle(word){if(!word)return"";const vowels=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"];const lastChar=word[word.length-1];return word+(vowels.includes(lastChar)?"\u0576":"\u0568")}function hy_default(){return{localeError:error20()}}var error20;var init_hy=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hy.js"(){init_util();error20=()=>{const Sizable={string:{unit:{one:"\u0576\u0577\u0561\u0576",many:"\u0576\u0577\u0561\u0576\u0576\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},file:{unit:{one:"\u0562\u0561\u0575\u0569",many:"\u0562\u0561\u0575\u0569\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},array:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},set:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0574\u0578\u0582\u057F\u0584",email:"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565",url:"URL",emoji:"\u0567\u0574\u0578\u057B\u056B",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574",date:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E",time:"ISO \u056A\u0561\u0574",duration:"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",ipv4:"IPv4 \u0570\u0561\u057D\u0581\u0565",ipv6:"IPv6 \u0570\u0561\u057D\u0581\u0565",cidrv4:"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",cidrv6:"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",base64:"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",base64url:"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",json_string:"JSON \u057F\u0578\u0572",e164:"E.164 \u0570\u0561\u0574\u0561\u0580",jwt:"JWT",template_literal:"\u0574\u0578\u0582\u057F\u0584"};const TypeDictionary={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue2.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`}return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${stringifyPrimitive(issue2.values[1])}`;return`\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){const maxValue=Number(issue2.maximum);const unit=getArmenianPlural(maxValue,sizing.unit.one,sizing.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue2.maximum.toString()} ${unit}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){const minValue=Number(issue2.minimum);const unit=getArmenianPlural(minValue,sizing.unit.one,sizing.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue2.minimum.toString()} ${unit}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue2.origin)} \u056C\u056B\u0576\u056B ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${_issue.prefix}"-\u0578\u057E`;if(_issue.format==="ends_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${_issue.suffix}"-\u0578\u057E`;if(_issue.format==="includes")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${_issue.includes}"`;if(_issue.format==="regex")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;return`\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue2.divisor}-\u056B`;case"unrecognized_keys":return`\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue2.keys.length>1?"\u0576\u0565\u0580":""}. ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue2.origin)}-\u0578\u0582\u0574`;case"invalid_union":return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574";case"invalid_element":return`\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue2.origin)}-\u0578\u0582\u0574`;default:return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`}}}}});function id_default(){return{localeError:error21()}}var error21;var init_id=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/id.js"(){init_util();error21=()=>{const Sizable={string:{unit:"karakter",verb:"memiliki"},file:{unit:"byte",verb:"memiliki"},array:{unit:"item",verb:"memiliki"},set:{unit:"item",verb:"memiliki"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"input",email:"alamat email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tanggal dan waktu format ISO",date:"tanggal format ISO",time:"jam format ISO",duration:"durasi format ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"rentang alamat IPv4",cidrv6:"rentang alamat IPv6",base64:"string dengan enkode base64",base64url:"string dengan enkode base64url",json_string:"string JSON",e164:"angka E.164",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Input tidak valid: diharapkan instanceof ${issue2.expected}, diterima ${received}`}return`Input tidak valid: diharapkan ${expected}, diterima ${received}`}case"invalid_value":if(issue2.values.length===1)return`Input tidak valid: diharapkan ${stringifyPrimitive(issue2.values[0])}`;return`Pilihan tidak valid: diharapkan salah satu dari ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Terlalu besar: diharapkan ${issue2.origin??"value"} memiliki ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemen"}`;return`Terlalu besar: diharapkan ${issue2.origin??"value"} menjadi ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Terlalu kecil: diharapkan ${issue2.origin} memiliki ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Terlalu kecil: diharapkan ${issue2.origin} menjadi ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`String tidak valid: harus dimulai dengan "${_issue.prefix}"`;if(_issue.format==="ends_with")return`String tidak valid: harus berakhir dengan "${_issue.suffix}"`;if(_issue.format==="includes")return`String tidak valid: harus menyertakan "${_issue.includes}"`;if(_issue.format==="regex")return`String tidak valid: harus sesuai pola ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} tidak valid`}case"not_multiple_of":return`Angka tidak valid: harus kelipatan dari ${issue2.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali ${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Kunci tidak valid di ${issue2.origin}`;case"invalid_union":return"Input tidak valid";case"invalid_element":return`Nilai tidak valid di ${issue2.origin}`;default:return`Input tidak valid`}}}}});function is_default(){return{localeError:error22()}}var error22;var init_is=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/is.js"(){init_util();error22=()=>{const Sizable={string:{unit:"stafi",verb:"a\xF0 hafa"},file:{unit:"b\xE6ti",verb:"a\xF0 hafa"},array:{unit:"hluti",verb:"a\xF0 hafa"},set:{unit:"hluti",verb:"a\xF0 hafa"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"gildi",email:"netfang",url:"vefsl\xF3\xF0",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dagsetning og t\xEDmi",date:"ISO dagsetning",time:"ISO t\xEDmi",duration:"ISO t\xEDmalengd",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded strengur",base64url:"base64url-encoded strengur",json_string:"JSON strengur",e164:"E.164 t\xF6lugildi",jwt:"JWT",template_literal:"gildi"};const TypeDictionary={nan:"NaN",number:"n\xFAmer",array:"fylki"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera instanceof ${issue2.expected}`}return`Rangt gildi: \xDE\xFA sl\xF3st inn ${received} \xFEar sem \xE1 a\xF0 vera ${expected}`}case"invalid_value":if(issue2.values.length===1)return`Rangt gildi: gert r\xE1\xF0 fyrir ${stringifyPrimitive(issue2.values[0])}`;return`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin??"gildi"} hafi ${adj}${issue2.maximum.toString()} ${sizing.unit??"hluti"}`;return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin??"gildi"} s\xE9 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin} hafi ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${issue2.origin} s\xE9 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${_issue.prefix}"`}if(_issue.format==="ends_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${_issue.suffix}"`;if(_issue.format==="includes")return`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${_issue.includes}"`;if(_issue.format==="regex")return`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${_issue.pattern}`;return`Rangt ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${issue2.divisor}`;case"unrecognized_keys":return`\xD3\xFEekkt ${issue2.keys.length>1?"ir lyklar":"ur lykill"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Rangur lykill \xED ${issue2.origin}`;case"invalid_union":return"Rangt gildi";case"invalid_element":return`Rangt gildi \xED ${issue2.origin}`;default:return`Rangt gildi`}}}}});function it_default(){return{localeError:error23()}}var error23;var init_it=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/it.js"(){init_util();error23=()=>{const Sizable={string:{unit:"caratteri",verb:"avere"},file:{unit:"byte",verb:"avere"},array:{unit:"elementi",verb:"avere"},set:{unit:"elementi",verb:"avere"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"input",email:"indirizzo email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e ora ISO",date:"data ISO",time:"ora ISO",duration:"durata ISO",ipv4:"indirizzo IPv4",ipv6:"indirizzo IPv6",cidrv4:"intervallo IPv4",cidrv6:"intervallo IPv6",base64:"stringa codificata in base64",base64url:"URL codificata in base64",json_string:"stringa JSON",e164:"numero E.164",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN",number:"numero",array:"vettore"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Input non valido: atteso instanceof ${issue2.expected}, ricevuto ${received}`}return`Input non valido: atteso ${expected}, ricevuto ${received}`}case"invalid_value":if(issue2.values.length===1)return`Input non valido: atteso ${stringifyPrimitive(issue2.values[0])}`;return`Opzione non valida: atteso uno tra ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Troppo grande: ${issue2.origin??"valore"} deve avere ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementi"}`;return`Troppo grande: ${issue2.origin??"valore"} deve essere ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Troppo piccolo: ${issue2.origin} deve avere ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Troppo piccolo: ${issue2.origin} deve essere ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Stringa non valida: deve iniziare con "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Stringa non valida: deve terminare con "${_issue.suffix}"`;if(_issue.format==="includes")return`Stringa non valida: deve includere "${_issue.includes}"`;if(_issue.format==="regex")return`Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;return`Input non valido: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Numero non valido: deve essere un multiplo di ${issue2.divisor}`;case"unrecognized_keys":return`Chiav${issue2.keys.length>1?"i":"e"} non riconosciut${issue2.keys.length>1?"e":"a"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Chiave non valida in ${issue2.origin}`;case"invalid_union":return"Input non valido";case"invalid_element":return`Valore non valido in ${issue2.origin}`;default:return`Input non valido`}}}}});function ja_default(){return{localeError:error24()}}var error24;var init_ja=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ja.js"(){init_util();error24=()=>{const Sizable={string:{unit:"\u6587\u5B57",verb:"\u3067\u3042\u308B"},file:{unit:"\u30D0\u30A4\u30C8",verb:"\u3067\u3042\u308B"},array:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"},set:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u5165\u529B\u5024",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",url:"URL",emoji:"\u7D75\u6587\u5B57",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u6642",date:"ISO\u65E5\u4ED8",time:"ISO\u6642\u523B",duration:"ISO\u671F\u9593",ipv4:"IPv4\u30A2\u30C9\u30EC\u30B9",ipv6:"IPv6\u30A2\u30C9\u30EC\u30B9",cidrv4:"IPv4\u7BC4\u56F2",cidrv6:"IPv6\u7BC4\u56F2",base64:"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",base64url:"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",json_string:"JSON\u6587\u5B57\u5217",e164:"E.164\u756A\u53F7",jwt:"JWT",template_literal:"\u5165\u529B\u5024"};const TypeDictionary={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue2.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`}return`\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`}case"invalid_value":if(issue2.values.length===1)return`\u7121\u52B9\u306A\u5165\u529B: ${stringifyPrimitive(issue2.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u9078\u629E: ${joinValues(issue2.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{const adj=issue2.inclusive?"\u4EE5\u4E0B\u3067\u3042\u308B":"\u3088\u308A\u5C0F\u3055\u3044";const sizing=getSizing(issue2.origin);if(sizing)return`\u5927\u304D\u3059\u304E\u308B\u5024: ${issue2.origin??"\u5024"}\u306F${issue2.maximum.toString()}${sizing.unit??"\u8981\u7D20"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5927\u304D\u3059\u304E\u308B\u5024: ${issue2.origin??"\u5024"}\u306F${issue2.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{const adj=issue2.inclusive?"\u4EE5\u4E0A\u3067\u3042\u308B":"\u3088\u308A\u5927\u304D\u3044";const sizing=getSizing(issue2.origin);if(sizing)return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue2.origin}\u306F${issue2.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue2.origin}\u306F${issue2.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(_issue.format==="ends_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(_issue.format==="includes")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${_issue.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(_issue.format==="regex")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u7121\u52B9\u306A${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u7121\u52B9\u306A\u6570\u5024: ${issue2.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"unrecognized_keys":return`\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue2.keys.length>1?"\u7FA4":""}: ${joinValues(issue2.keys,"\u3001")}`;case"invalid_key":return`${issue2.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;case"invalid_union":return"\u7121\u52B9\u306A\u5165\u529B";case"invalid_element":return`${issue2.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;default:return`\u7121\u52B9\u306A\u5165\u529B`}}}}});function ka_default(){return{localeError:error25()}}var error25;var init_ka=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ka.js"(){init_util();error25=()=>{const Sizable={string:{unit:"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},file:{unit:"\u10D1\u10D0\u10D8\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},array:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},set:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0",email:"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",url:"URL",emoji:"\u10D4\u10DB\u10DD\u10EF\u10D8",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD",date:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8",time:"\u10D3\u10E0\u10DD",duration:"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0",ipv4:"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",ipv6:"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",cidrv4:"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",cidrv6:"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",base64:"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",base64url:"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",json_string:"JSON \u10D5\u10D4\u10DA\u10D8",e164:"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8",jwt:"JWT",template_literal:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"};const TypeDictionary={nan:"NaN",number:"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8",string:"\u10D5\u10D4\u10DA\u10D8",boolean:"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8",function:"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0",array:"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue2.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`}return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${stringifyPrimitive(issue2.values[0])}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${joinValues(issue2.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit}`;return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue2.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.prefix}"-\u10D8\u10D7`}if(_issue.format==="ends_with")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${_issue.suffix}"-\u10D8\u10D7`;if(_issue.format==="includes")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${_issue.includes}"-\u10E1`;if(_issue.format==="regex")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue2.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;case"unrecognized_keys":return`\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue2.keys.length>1?"\u10D4\u10D1\u10D8":"\u10D8"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue2.origin}-\u10E8\u10D8`;case"invalid_union":return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0";case"invalid_element":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue2.origin}-\u10E8\u10D8`;default:return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`}}}}});function km_default(){return{localeError:error26()}}var error26;var init_km=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/km.js"(){init_util();error26=()=>{const Sizable={string:{unit:"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},file:{unit:"\u1794\u17C3",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},array:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},set:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B",email:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B",url:"URL",emoji:"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO",date:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO",time:"\u1798\u17C9\u17C4\u1784 ISO",duration:"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO",ipv4:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",ipv6:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",cidrv4:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",cidrv6:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",base64:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64",base64url:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url",json_string:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON",e164:"\u179B\u17C1\u1781 E.164",jwt:"JWT",template_literal:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B"};const TypeDictionary={nan:"NaN",number:"\u179B\u17C1\u1781",array:"\u17A2\u17B6\u179A\u17C1 (Array)",null:"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue2.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`}return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${stringifyPrimitive(issue2.values[0])}`;return`\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"\u1792\u17B6\u178F\u17BB"}`;return`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${adj} ${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`}return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue2.origin} ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${_issue.prefix}"`}if(_issue.format==="ends_with")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${_issue.includes}"`;if(_issue.format==="regex")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`;return`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue2.divisor}`;case"unrecognized_keys":return`\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue2.origin}`;case"invalid_union":return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;case"invalid_element":return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue2.origin}`;default:return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`}}}}});function kh_default(){return km_default()}var init_kh=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/kh.js"(){init_km()}});function ko_default(){return{localeError:error27()}}var error27;var init_ko=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ko.js"(){init_util();error27=()=>{const Sizable={string:{unit:"\uBB38\uC790",verb:"to have"},file:{unit:"\uBC14\uC774\uD2B8",verb:"to have"},array:{unit:"\uAC1C",verb:"to have"},set:{unit:"\uAC1C",verb:"to have"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\uC785\uB825",email:"\uC774\uBA54\uC77C \uC8FC\uC18C",url:"URL",emoji:"\uC774\uBAA8\uC9C0",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \uB0A0\uC9DC\uC2DC\uAC04",date:"ISO \uB0A0\uC9DC",time:"ISO \uC2DC\uAC04",duration:"ISO \uAE30\uAC04",ipv4:"IPv4 \uC8FC\uC18C",ipv6:"IPv6 \uC8FC\uC18C",cidrv4:"IPv4 \uBC94\uC704",cidrv6:"IPv6 \uBC94\uC704",base64:"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",base64url:"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",json_string:"JSON \uBB38\uC790\uC5F4",e164:"E.164 \uBC88\uD638",jwt:"JWT",template_literal:"\uC785\uB825"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue2.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`}return`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`}case"invalid_value":if(issue2.values.length===1)return`\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${stringifyPrimitive(issue2.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC635\uC158: ${joinValues(issue2.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{const adj=issue2.inclusive?"\uC774\uD558":"\uBBF8\uB9CC";const suffix=adj==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4";const sizing=getSizing(issue2.origin);const unit=sizing?.unit??"\uC694\uC18C";if(sizing)return`${issue2.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue2.maximum.toString()}${unit} ${adj}${suffix}`;return`${issue2.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue2.maximum.toString()} ${adj}${suffix}`}case"too_small":{const adj=issue2.inclusive?"\uC774\uC0C1":"\uCD08\uACFC";const suffix=adj==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4";const sizing=getSizing(issue2.origin);const unit=sizing?.unit??"\uC694\uC18C";if(sizing){return`${issue2.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue2.minimum.toString()}${unit} ${adj}${suffix}`}return`${issue2.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue2.minimum.toString()} ${adj}${suffix}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`}if(_issue.format==="ends_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;if(_issue.format==="includes")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${_issue.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;if(_issue.format==="regex")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\uC798\uBABB\uB41C \uC22B\uC790: ${issue2.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"unrecognized_keys":return`\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\uC798\uBABB\uB41C \uD0A4: ${issue2.origin}`;case"invalid_union":return`\uC798\uBABB\uB41C \uC785\uB825`;case"invalid_element":return`\uC798\uBABB\uB41C \uAC12: ${issue2.origin}`;default:return`\uC798\uBABB\uB41C \uC785\uB825`}}}}});function getUnitTypeFromNumber(number4){const abs=Math.abs(number4);const last=abs%10;const last2=abs%100;if(last2>=11&&last2<=19||last===0)return"many";if(last===1)return"one";return"few"}function lt_default(){return{localeError:error28()}}var capitalizeFirstCharacter,error28;var init_lt=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/lt.js"(){init_util();capitalizeFirstCharacter=text2=>{return text2.charAt(0).toUpperCase()+text2.slice(1)};error28=()=>{const Sizable={string:{unit:{one:"simbolis",few:"simboliai",many:"simboli\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne ilgesn\u0117 kaip",notInclusive:"turi b\u016Bti trumpesn\u0117 kaip"},bigger:{inclusive:"turi b\u016Bti ne trumpesn\u0117 kaip",notInclusive:"turi b\u016Bti ilgesn\u0117 kaip"}}},file:{unit:{one:"baitas",few:"baitai",many:"bait\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne didesnis kaip",notInclusive:"turi b\u016Bti ma\u017Eesnis kaip"},bigger:{inclusive:"turi b\u016Bti ne ma\u017Eesnis kaip",notInclusive:"turi b\u016Bti didesnis kaip"}}},array:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}},set:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}}};function getSizing(origin,unitType,inclusive,targetShouldBe){const result=Sizable[origin]??null;if(result===null)return result;return{unit:result.unit[unitType],verb:result.verb[targetShouldBe][inclusive?"inclusive":"notInclusive"]}}const FormatDictionary={regex:"\u012Fvestis",email:"el. pa\u0161to adresas",url:"URL",emoji:"jaustukas",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO data ir laikas",date:"ISO data",time:"ISO laikas",duration:"ISO trukm\u0117",ipv4:"IPv4 adresas",ipv6:"IPv6 adresas",cidrv4:"IPv4 tinklo prefiksas (CIDR)",cidrv6:"IPv6 tinklo prefiksas (CIDR)",base64:"base64 u\u017Ekoduota eilut\u0117",base64url:"base64url u\u017Ekoduota eilut\u0117",json_string:"JSON eilut\u0117",e164:"E.164 numeris",jwt:"JWT",template_literal:"\u012Fvestis"};const TypeDictionary={nan:"NaN",number:"skai\u010Dius",bigint:"sveikasis skai\u010Dius",string:"eilut\u0117",boolean:"login\u0117 reik\u0161m\u0117",undefined:"neapibr\u0117\u017Eta reik\u0161m\u0117",function:"funkcija",symbol:"simbolis",array:"masyvas",object:"objektas",null:"nulin\u0117 reik\u0161m\u0117"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue2.expected}`}return`Gautas tipas ${received}, o tik\u0117tasi - ${expected}`}case"invalid_value":if(issue2.values.length===1)return`Privalo b\u016Bti ${stringifyPrimitive(issue2.values[0])}`;return`Privalo b\u016Bti vienas i\u0161 ${joinValues(issue2.values,"|")} pasirinkim\u0173`;case"too_big":{const origin=TypeDictionary[issue2.origin]??issue2.origin;const sizing=getSizing(issue2.origin,getUnitTypeFromNumber(Number(issue2.maximum)),issue2.inclusive??false,"smaller");if(sizing?.verb)return`${capitalizeFirstCharacter(origin??issue2.origin??"reik\u0161m\u0117")} ${sizing.verb} ${issue2.maximum.toString()} ${sizing.unit??"element\u0173"}`;const adj=issue2.inclusive?"ne didesnis kaip":"ma\u017Eesnis kaip";return`${capitalizeFirstCharacter(origin??issue2.origin??"reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue2.maximum.toString()} ${sizing?.unit}`}case"too_small":{const origin=TypeDictionary[issue2.origin]??issue2.origin;const sizing=getSizing(issue2.origin,getUnitTypeFromNumber(Number(issue2.minimum)),issue2.inclusive??false,"bigger");if(sizing?.verb)return`${capitalizeFirstCharacter(origin??issue2.origin??"reik\u0161m\u0117")} ${sizing.verb} ${issue2.minimum.toString()} ${sizing.unit??"element\u0173"}`;const adj=issue2.inclusive?"ne ma\u017Eesnis kaip":"didesnis kaip";return`${capitalizeFirstCharacter(origin??issue2.origin??"reik\u0161m\u0117")} turi b\u016Bti ${adj} ${issue2.minimum.toString()} ${sizing?.unit}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`Eilut\u0117 privalo prasid\u0117ti "${_issue.prefix}"`}if(_issue.format==="ends_with")return`Eilut\u0117 privalo pasibaigti "${_issue.suffix}"`;if(_issue.format==="includes")return`Eilut\u0117 privalo \u012Ftraukti "${_issue.includes}"`;if(_issue.format==="regex")return`Eilut\u0117 privalo atitikti ${_issue.pattern}`;return`Neteisingas ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Skai\u010Dius privalo b\u016Bti ${issue2.divisor} kartotinis.`;case"unrecognized_keys":return`Neatpa\u017Eint${issue2.keys.length>1?"i":"as"} rakt${issue2.keys.length>1?"ai":"as"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{const origin=TypeDictionary[issue2.origin]??issue2.origin;return`${capitalizeFirstCharacter(origin??issue2.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}}}});function mk_default(){return{localeError:error29()}}var error29;var init_mk=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/mk.js"(){init_util();error29=()=>{const Sizable={string:{unit:"\u0437\u043D\u0430\u0446\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},file:{unit:"\u0431\u0430\u0458\u0442\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},array:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},set:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0432\u043D\u0435\u0441",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430",url:"URL",emoji:"\u0435\u043C\u043E\u045F\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0443\u043C",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430",cidrv4:"IPv4 \u043E\u043F\u0441\u0435\u0433",cidrv6:"IPv6 \u043E\u043F\u0441\u0435\u0433",base64:"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",base64url:"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",json_string:"JSON \u043D\u0438\u0437\u0430",e164:"E.164 \u0431\u0440\u043E\u0458",jwt:"JWT",template_literal:"\u0432\u043D\u0435\u0441"};const TypeDictionary={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue2.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`}return`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`}case"invalid_value":if(issue2.values.length===1)return`Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`;return`\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`;return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue2.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${_issue.prefix}"`}if(_issue.format==="ends_with")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${_issue.suffix}"`;if(_issue.format==="includes")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${_issue.includes}"`;if(_issue.format==="regex")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`;return`Invalid ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438":"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue2.origin}`;case"invalid_union":return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441";case"invalid_element":return`\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue2.origin}`;default:return`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`}}}}});function ms_default(){return{localeError:error30()}}var error30;var init_ms=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ms.js"(){init_util();error30=()=>{const Sizable={string:{unit:"aksara",verb:"mempunyai"},file:{unit:"bait",verb:"mempunyai"},array:{unit:"elemen",verb:"mempunyai"},set:{unit:"elemen",verb:"mempunyai"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"input",email:"alamat e-mel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tarikh masa ISO",date:"tarikh ISO",time:"masa ISO",duration:"tempoh ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"julat IPv4",cidrv6:"julat IPv6",base64:"string dikodkan base64",base64url:"string dikodkan base64url",json_string:"string JSON",e164:"nombor E.164",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN",number:"nombor"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Input tidak sah: dijangka instanceof ${issue2.expected}, diterima ${received}`}return`Input tidak sah: dijangka ${expected}, diterima ${received}`}case"invalid_value":if(issue2.values.length===1)return`Input tidak sah: dijangka ${stringifyPrimitive(issue2.values[0])}`;return`Pilihan tidak sah: dijangka salah satu daripada ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Terlalu besar: dijangka ${issue2.origin??"nilai"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemen"}`;return`Terlalu besar: dijangka ${issue2.origin??"nilai"} adalah ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Terlalu kecil: dijangka ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Terlalu kecil: dijangka ${issue2.origin} adalah ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`String tidak sah: mesti bermula dengan "${_issue.prefix}"`;if(_issue.format==="ends_with")return`String tidak sah: mesti berakhir dengan "${_issue.suffix}"`;if(_issue.format==="includes")return`String tidak sah: mesti mengandungi "${_issue.includes}"`;if(_issue.format==="regex")return`String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${issue2.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Kunci tidak sah dalam ${issue2.origin}`;case"invalid_union":return"Input tidak sah";case"invalid_element":return`Nilai tidak sah dalam ${issue2.origin}`;default:return`Input tidak sah`}}}}});function nl_default(){return{localeError:error31()}}var error31;var init_nl=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/nl.js"(){init_util();error31=()=>{const Sizable={string:{unit:"tekens",verb:"heeft"},file:{unit:"bytes",verb:"heeft"},array:{unit:"elementen",verb:"heeft"},set:{unit:"elementen",verb:"heeft"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"invoer",email:"emailadres",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum en tijd",date:"ISO datum",time:"ISO tijd",duration:"ISO duur",ipv4:"IPv4-adres",ipv6:"IPv6-adres",cidrv4:"IPv4-bereik",cidrv6:"IPv6-bereik",base64:"base64-gecodeerde tekst",base64url:"base64 URL-gecodeerde tekst",json_string:"JSON string",e164:"E.164-nummer",jwt:"JWT",template_literal:"invoer"};const TypeDictionary={nan:"NaN",number:"getal"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Ongeldige invoer: verwacht instanceof ${issue2.expected}, ontving ${received}`}return`Ongeldige invoer: verwacht ${expected}, ontving ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ongeldige invoer: verwacht ${stringifyPrimitive(issue2.values[0])}`;return`Ongeldige optie: verwacht \xE9\xE9n van ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);const longName=issue2.origin==="date"?"laat":issue2.origin==="string"?"lang":"groot";if(sizing)return`Te ${longName}: verwacht dat ${issue2.origin??"waarde"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementen"} ${sizing.verb}`;return`Te ${longName}: verwacht dat ${issue2.origin??"waarde"} ${adj}${issue2.maximum.toString()} is`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);const shortName=issue2.origin==="date"?"vroeg":issue2.origin==="string"?"kort":"klein";if(sizing){return`Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`}return`Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} is`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`Ongeldige tekst: moet met "${_issue.prefix}" beginnen`}if(_issue.format==="ends_with")return`Ongeldige tekst: moet op "${_issue.suffix}" eindigen`;if(_issue.format==="includes")return`Ongeldige tekst: moet "${_issue.includes}" bevatten`;if(_issue.format==="regex")return`Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;return`Ongeldig: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ongeldig getal: moet een veelvoud van ${issue2.divisor} zijn`;case"unrecognized_keys":return`Onbekende key${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ongeldige key in ${issue2.origin}`;case"invalid_union":return"Ongeldige invoer";case"invalid_element":return`Ongeldige waarde in ${issue2.origin}`;default:return`Ongeldige invoer`}}}}});function no_default(){return{localeError:error32()}}var error32;var init_no=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/no.js"(){init_util();error32=()=>{const Sizable={string:{unit:"tegn",verb:"\xE5 ha"},file:{unit:"bytes",verb:"\xE5 ha"},array:{unit:"elementer",verb:"\xE5 inneholde"},set:{unit:"elementer",verb:"\xE5 inneholde"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"input",email:"e-postadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkeslett",date:"ISO-dato",time:"ISO-klokkeslett",duration:"ISO-varighet",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spekter",cidrv6:"IPv6-spekter",base64:"base64-enkodet streng",base64url:"base64url-enkodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN",number:"tall",array:"liste"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Ugyldig input: forventet instanceof ${issue2.expected}, fikk ${received}`}return`Ugyldig input: forventet ${expected}, fikk ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ugyldig verdi: forventet ${stringifyPrimitive(issue2.values[0])}`;return`Ugyldig valg: forventet en av ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`For stor(t): forventet ${issue2.origin??"value"} til \xE5 ha ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementer"}`;return`For stor(t): forventet ${issue2.origin??"value"} til \xE5 ha ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`For lite(n): forventet ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`For lite(n): forventet ${issue2.origin} til \xE5 ha ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Ugyldig streng: m\xE5 starte med "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Ugyldig streng: m\xE5 ende med "${_issue.suffix}"`;if(_issue.format==="includes")return`Ugyldig streng: m\xE5 inneholde "${_issue.includes}"`;if(_issue.format==="regex")return`Ugyldig streng: m\xE5 matche m\xF8nsteret ${_issue.pattern}`;return`Ugyldig ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ugyldig tall: m\xE5 v\xE6re et multiplum av ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Ukjente n\xF8kler":"Ukjent n\xF8kkel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8kkel i ${issue2.origin}`;case"invalid_union":return"Ugyldig input";case"invalid_element":return`Ugyldig verdi i ${issue2.origin}`;default:return`Ugyldig input`}}}}});function ota_default(){return{localeError:error33()}}var error33;var init_ota=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ota.js"(){init_util();error33=()=>{const Sizable={string:{unit:"harf",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"unsur",verb:"olmal\u0131d\u0131r"},set:{unit:"unsur",verb:"olmal\u0131d\u0131r"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"giren",email:"epostag\xE2h",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO heng\xE2m\u0131",date:"ISO tarihi",time:"ISO zaman\u0131",duration:"ISO m\xFCddeti",ipv4:"IPv4 ni\u015F\xE2n\u0131",ipv6:"IPv6 ni\u015F\xE2n\u0131",cidrv4:"IPv4 menzili",cidrv6:"IPv6 menzili",base64:"base64-\u015Fifreli metin",base64url:"base64url-\u015Fifreli metin",json_string:"JSON metin",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"giren"};const TypeDictionary={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`F\xE2sit giren: umulan instanceof ${issue2.expected}, al\u0131nan ${received}`}return`F\xE2sit giren: umulan ${expected}, al\u0131nan ${received}`}case"invalid_value":if(issue2.values.length===1)return`F\xE2sit giren: umulan ${stringifyPrimitive(issue2.values[0])}`;return`F\xE2sit tercih: m\xFBteberler ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Fazla b\xFCy\xFCk: ${issue2.origin??"value"}, ${adj}${issue2.maximum.toString()} ${sizing.unit??"elements"} sahip olmal\u0131yd\u0131.`;return`Fazla b\xFCy\xFCk: ${issue2.origin??"value"}, ${adj}${issue2.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Fazla k\xFC\xE7\xFCk: ${issue2.origin}, ${adj}${issue2.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`}return`Fazla k\xFC\xE7\xFCk: ${issue2.origin}, ${adj}${issue2.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`F\xE2sit metin: "${_issue.prefix}" ile ba\u015Flamal\u0131.`;if(_issue.format==="ends_with")return`F\xE2sit metin: "${_issue.suffix}" ile bitmeli.`;if(_issue.format==="includes")return`F\xE2sit metin: "${_issue.includes}" ihtiv\xE2 etmeli.`;if(_issue.format==="regex")return`F\xE2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`;return`F\xE2sit ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`F\xE2sit say\u0131: ${issue2.divisor} kat\u0131 olmal\u0131yd\u0131.`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar ${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} i\xE7in tan\u0131nmayan anahtar var.`;case"invalid_union":return"Giren tan\u0131namad\u0131.";case"invalid_element":return`${issue2.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`;default:return`K\u0131ymet tan\u0131namad\u0131.`}}}}});function ps_default(){return{localeError:error34()}}var error34;var init_ps=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ps.js"(){init_util();error34=()=>{const Sizable={string:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},file:{unit:"\u0628\u0627\u06CC\u067C\u0633",verb:"\u0648\u0644\u0631\u064A"},array:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},set:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0648\u0631\u0648\u062F\u064A",email:"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9",url:"\u06CC\u0648 \u0622\u0631 \u0627\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A",date:"\u0646\u06D0\u067C\u0647",time:"\u0648\u062E\u062A",duration:"\u0645\u0648\u062F\u0647",ipv4:"\u062F IPv4 \u067E\u062A\u0647",ipv6:"\u062F IPv6 \u067E\u062A\u0647",cidrv4:"\u062F IPv4 \u0633\u0627\u062D\u0647",cidrv6:"\u062F IPv6 \u0633\u0627\u062D\u0647",base64:"base64-encoded \u0645\u062A\u0646",base64url:"base64url-encoded \u0645\u062A\u0646",json_string:"JSON \u0645\u062A\u0646",e164:"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u064A"};const TypeDictionary={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue2.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`}return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`}case"invalid_value":if(issue2.values.length===1){return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${stringifyPrimitive(issue2.values[0])} \u0648\u0627\u06CC`}return`\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${joinValues(issue2.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){return`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue2.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`}return`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue2.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${adj}${issue2.maximum.toString()} \u0648\u064A`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`}return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue2.origin} \u0628\u0627\u06CC\u062F ${adj}${issue2.minimum.toString()} \u0648\u064A`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`}if(_issue.format==="ends_with"){return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${_issue.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`}if(_issue.format==="includes"){return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${_issue.includes}" \u0648\u0644\u0631\u064A`}if(_issue.format==="regex"){return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`}return`${FormatDictionary[_issue.format]??issue2.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`}case"not_multiple_of":return`\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue2.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;case"unrecognized_keys":return`\u0646\u0627\u0633\u0645 ${issue2.keys.length>1?"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647":"\u06A9\u0644\u06CC\u0689"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue2.origin} \u06A9\u06D0`;case"invalid_union":return`\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;case"invalid_element":return`\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue2.origin} \u06A9\u06D0`;default:return`\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`}}}}});function pl_default(){return{localeError:error35()}}var error35;var init_pl=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/pl.js"(){init_util();error35=()=>{const Sizable={string:{unit:"znak\xF3w",verb:"mie\u0107"},file:{unit:"bajt\xF3w",verb:"mie\u0107"},array:{unit:"element\xF3w",verb:"mie\u0107"},set:{unit:"element\xF3w",verb:"mie\u0107"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"wyra\u017Cenie",email:"adres email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i godzina w formacie ISO",date:"data w formacie ISO",time:"godzina w formacie ISO",duration:"czas trwania ISO",ipv4:"adres IPv4",ipv6:"adres IPv6",cidrv4:"zakres IPv4",cidrv6:"zakres IPv6",base64:"ci\u0105g znak\xF3w zakodowany w formacie base64",base64url:"ci\u0105g znak\xF3w zakodowany w formacie base64url",json_string:"ci\u0105g znak\xF3w w formacie JSON",e164:"liczba E.164",jwt:"JWT",template_literal:"wej\u015Bcie"};const TypeDictionary={nan:"NaN",number:"liczba",array:"tablica"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue2.expected}, otrzymano ${received}`}return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`}case"invalid_value":if(issue2.values.length===1)return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${stringifyPrimitive(issue2.values[0])}`;return`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){return`Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue2.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue2.maximum.toString()} ${sizing.unit??"element\xF3w"}`}return`Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue2.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue2.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${adj}${issue2.minimum.toString()} ${sizing.unit??"element\xF3w"}`}return`Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue2.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${_issue.suffix}"`;if(_issue.format==="includes")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${_issue.includes}"`;if(_issue.format==="regex")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`;return`Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue2.divisor}`;case"unrecognized_keys":return`Nierozpoznane klucze${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Nieprawid\u0142owy klucz w ${issue2.origin}`;case"invalid_union":return"Nieprawid\u0142owe dane wej\u015Bciowe";case"invalid_element":return`Nieprawid\u0142owa warto\u015B\u0107 w ${issue2.origin}`;default:return`Nieprawid\u0142owe dane wej\u015Bciowe`}}}}});function pt_default(){return{localeError:error36()}}var error36;var init_pt=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/pt.js"(){init_util();error36=()=>{const Sizable={string:{unit:"caracteres",verb:"ter"},file:{unit:"bytes",verb:"ter"},array:{unit:"itens",verb:"ter"},set:{unit:"itens",verb:"ter"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"padr\xE3o",email:"endere\xE7o de e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e hora ISO",date:"data ISO",time:"hora ISO",duration:"dura\xE7\xE3o ISO",ipv4:"endere\xE7o IPv4",ipv6:"endere\xE7o IPv6",cidrv4:"faixa de IPv4",cidrv6:"faixa de IPv6",base64:"texto codificado em base64",base64url:"URL codificada em base64",json_string:"texto JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"};const TypeDictionary={nan:"NaN",number:"n\xFAmero",null:"nulo"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Tipo inv\xE1lido: esperado instanceof ${issue2.expected}, recebido ${received}`}return`Tipo inv\xE1lido: esperado ${expected}, recebido ${received}`}case"invalid_value":if(issue2.values.length===1)return`Entrada inv\xE1lida: esperado ${stringifyPrimitive(issue2.values[0])}`;return`Op\xE7\xE3o inv\xE1lida: esperada uma das ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Muito grande: esperado que ${issue2.origin??"valor"} tivesse ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementos"}`;return`Muito grande: esperado que ${issue2.origin??"valor"} fosse ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Muito pequeno: esperado que ${issue2.origin} tivesse ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Muito pequeno: esperado que ${issue2.origin} fosse ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Texto inv\xE1lido: deve come\xE7ar com "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Texto inv\xE1lido: deve terminar com "${_issue.suffix}"`;if(_issue.format==="includes")return`Texto inv\xE1lido: deve incluir "${_issue.includes}"`;if(_issue.format==="regex")return`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} inv\xE1lido`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${issue2.divisor}`;case"unrecognized_keys":return`Chave${issue2.keys.length>1?"s":""} desconhecida${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Chave inv\xE1lida em ${issue2.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido em ${issue2.origin}`;default:return`Campo inv\xE1lido`}}}}});function ro_default(){return{localeError:error37()}}var error37;var init_ro=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ro.js"(){init_util();error37=()=>{const Sizable={string:{unit:"caractere",verb:"s\u0103 aib\u0103"},file:{unit:"octe\u021Bi",verb:"s\u0103 aib\u0103"},array:{unit:"elemente",verb:"s\u0103 aib\u0103"},set:{unit:"elemente",verb:"s\u0103 aib\u0103"},map:{unit:"intr\u0103ri",verb:"s\u0103 aib\u0103"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"intrare",email:"adres\u0103 de email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"dat\u0103 \u0219i or\u0103 ISO",date:"dat\u0103 ISO",time:"or\u0103 ISO",duration:"durat\u0103 ISO",ipv4:"adres\u0103 IPv4",ipv6:"adres\u0103 IPv6",mac:"adres\u0103 MAC",cidrv4:"interval IPv4",cidrv6:"interval IPv6",base64:"\u0219ir codat base64",base64url:"\u0219ir codat base64url",json_string:"\u0219ir JSON",e164:"num\u0103r E.164",jwt:"JWT",template_literal:"intrare"};const TypeDictionary={nan:"NaN",string:"\u0219ir",number:"num\u0103r",boolean:"boolean",function:"func\u021Bie",array:"matrice",object:"obiect",undefined:"nedefinit",symbol:"simbol",bigint:"num\u0103r mare",void:"void",never:"never",map:"hart\u0103",set:"set"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;return`Intrare invalid\u0103: a\u0219teptat ${expected}, primit ${received}`}case"invalid_value":if(issue2.values.length===1)return`Intrare invalid\u0103: a\u0219teptat ${stringifyPrimitive(issue2.values[0])}`;return`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Prea mare: a\u0219teptat ca ${issue2.origin??"valoarea"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemente"}`;return`Prea mare: a\u0219teptat ca ${issue2.origin??"valoarea"} s\u0103 fie ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Prea mic: a\u0219teptat ca ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Prea mic: a\u0219teptat ca ${issue2.origin} s\u0103 fie ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${_issue.prefix}"`}if(_issue.format==="ends_with")return`\u0218ir invalid: trebuie s\u0103 se termine cu "${_issue.suffix}"`;if(_issue.format==="includes")return`\u0218ir invalid: trebuie s\u0103 includ\u0103 "${_issue.includes}"`;if(_issue.format==="regex")return`\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${_issue.pattern}`;return`Format invalid: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Num\u0103r invalid: trebuie s\u0103 fie multiplu de ${issue2.divisor}`;case"unrecognized_keys":return`Chei nerecunoscute: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Cheie invalid\u0103 \xEEn ${issue2.origin}`;case"invalid_union":return"Intrare invalid\u0103";case"invalid_element":return`Valoare invalid\u0103 \xEEn ${issue2.origin}`;default:return`Intrare invalid\u0103`}}}}});function getRussianPlural(count,one,few,many){const absCount=Math.abs(count);const lastDigit=absCount%10;const lastTwoDigits=absCount%100;if(lastTwoDigits>=11&&lastTwoDigits<=19){return many}if(lastDigit===1){return one}if(lastDigit>=2&&lastDigit<=4){return few}return many}function ru_default(){return{localeError:error38()}}var error38;var init_ru=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ru.js"(){init_util();error38=()=>{const Sizable={string:{unit:{one:"\u0441\u0438\u043C\u0432\u043E\u043B",few:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",many:"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u0430",many:"\u0431\u0430\u0439\u0442"},verb:"\u0438\u043C\u0435\u0442\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0432\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u044F",duration:"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64",base64url:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url",json_string:"JSON \u0441\u0442\u0440\u043E\u043A\u0430",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0432\u043E\u0434"};const TypeDictionary={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue2.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`}return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${stringifyPrimitive(issue2.values[0])}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){const maxValue=Number(issue2.maximum);const unit=getRussianPlural(maxValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue2.maximum.toString()} ${unit}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){const minValue=Number(issue2.minimum);const unit=getRussianPlural(minValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue2.minimum.toString()} ${unit}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue2.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${_issue.prefix}"`;if(_issue.format==="ends_with")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${_issue.includes}"`;if(_issue.format==="regex")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue2.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue2.keys.length>1?"\u044B\u0435":"\u044B\u0439"} \u043A\u043B\u044E\u0447${issue2.keys.length>1?"\u0438":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue2.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435";case"invalid_element":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue2.origin}`;default:return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`}}}}});function sl_default(){return{localeError:error39()}}var error39;var init_sl=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/sl.js"(){init_util();error39=()=>{const Sizable={string:{unit:"znakov",verb:"imeti"},file:{unit:"bajtov",verb:"imeti"},array:{unit:"elementov",verb:"imeti"},set:{unit:"elementov",verb:"imeti"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"vnos",email:"e-po\u0161tni naslov",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum in \u010Das",date:"ISO datum",time:"ISO \u010Das",duration:"ISO trajanje",ipv4:"IPv4 naslov",ipv6:"IPv6 naslov",cidrv4:"obseg IPv4",cidrv6:"obseg IPv6",base64:"base64 kodiran niz",base64url:"base64url kodiran niz",json_string:"JSON niz",e164:"E.164 \u0161tevilka",jwt:"JWT",template_literal:"vnos"};const TypeDictionary={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Neveljaven vnos: pri\u010Dakovano instanceof ${issue2.expected}, prejeto ${received}`}return`Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`}case"invalid_value":if(issue2.values.length===1)return`Neveljaven vnos: pri\u010Dakovano ${stringifyPrimitive(issue2.values[0])}`;return`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Preveliko: pri\u010Dakovano, da bo ${issue2.origin??"vrednost"} imelo ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementov"}`;return`Preveliko: pri\u010Dakovano, da bo ${issue2.origin??"vrednost"} ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Premajhno: pri\u010Dakovano, da bo ${issue2.origin} imelo ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Premajhno: pri\u010Dakovano, da bo ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`Neveljaven niz: mora se za\u010Deti z "${_issue.prefix}"`}if(_issue.format==="ends_with")return`Neveljaven niz: mora se kon\u010Dati z "${_issue.suffix}"`;if(_issue.format==="includes")return`Neveljaven niz: mora vsebovati "${_issue.includes}"`;if(_issue.format==="regex")return`Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;return`Neveljaven ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue2.divisor}`;case"unrecognized_keys":return`Neprepoznan${issue2.keys.length>1?"i klju\u010Di":" klju\u010D"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neveljaven klju\u010D v ${issue2.origin}`;case"invalid_union":return"Neveljaven vnos";case"invalid_element":return`Neveljavna vrednost v ${issue2.origin}`;default:return"Neveljaven vnos"}}}}});function sv_default(){return{localeError:error40()}}var error40;var init_sv=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/sv.js"(){init_util();error40=()=>{const Sizable={string:{unit:"tecken",verb:"att ha"},file:{unit:"bytes",verb:"att ha"},array:{unit:"objekt",verb:"att inneh\xE5lla"},set:{unit:"objekt",verb:"att inneh\xE5lla"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"regulj\xE4rt uttryck",email:"e-postadress",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datum och tid",date:"ISO-datum",time:"ISO-tid",duration:"ISO-varaktighet",ipv4:"IPv4-intervall",ipv6:"IPv6-intervall",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodad str\xE4ng",base64url:"base64url-kodad str\xE4ng",json_string:"JSON-str\xE4ng",e164:"E.164-nummer",jwt:"JWT",template_literal:"mall-literal"};const TypeDictionary={nan:"NaN",number:"antal",array:"lista"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${issue2.expected}, fick ${received}`}return`Ogiltig inmatning: f\xF6rv\xE4ntat ${expected}, fick ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ogiltig inmatning: f\xF6rv\xE4ntat ${stringifyPrimitive(issue2.values[0])}`;return`Ogiltigt val: f\xF6rv\xE4ntade en av ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){return`F\xF6r stor(t): f\xF6rv\xE4ntade ${issue2.origin??"v\xE4rdet"} att ha ${adj}${issue2.maximum.toString()} ${sizing.unit??"element"}`}return`F\xF6r stor(t): f\xF6rv\xE4ntat ${issue2.origin??"v\xE4rdet"} att ha ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`F\xF6r lite(t): f\xF6rv\xE4ntade ${issue2.origin??"v\xE4rdet"} att ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`F\xF6r lite(t): f\xF6rv\xE4ntade ${issue2.origin??"v\xE4rdet"} att ha ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${_issue.prefix}"`}if(_issue.format==="ends_with")return`Ogiltig str\xE4ng: m\xE5ste sluta med "${_issue.suffix}"`;if(_issue.format==="includes")return`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${_issue.includes}"`;if(_issue.format==="regex")return`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${_issue.pattern}"`;return`Ogiltig(t) ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ogiltigt tal: m\xE5ste vara en multipel av ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Ok\xE4nda nycklar":"Ok\xE4nd nyckel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ogiltig nyckel i ${issue2.origin??"v\xE4rdet"}`;case"invalid_union":return"Ogiltig input";case"invalid_element":return`Ogiltigt v\xE4rde i ${issue2.origin??"v\xE4rdet"}`;default:return`Ogiltig input`}}}}});function ta_default(){return{localeError:error41()}}var error41;var init_ta=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ta.js"(){init_util();error41=()=>{const Sizable={string:{unit:"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},file:{unit:"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},array:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},set:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1",email:"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",date:"ISO \u0BA4\u0BC7\u0BA4\u0BBF",time:"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",duration:"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1",ipv4:"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",ipv6:"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",cidrv4:"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",cidrv6:"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",base64:"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD",base64url:"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD",json_string:"JSON \u0B9A\u0BB0\u0BAE\u0BCD",e164:"E.164 \u0B8E\u0BA3\u0BCD",jwt:"JWT",template_literal:"input"};const TypeDictionary={nan:"NaN",number:"\u0B8E\u0BA3\u0BCD",array:"\u0B85\u0BA3\u0BBF",null:"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue2.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`}return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${stringifyPrimitive(issue2.values[0])}`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${joinValues(issue2.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing){return`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}return`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${adj}${issue2.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}return`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue2.origin} ${adj}${issue2.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(_issue.format==="ends_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(_issue.format==="includes")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${_issue.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(_issue.format==="regex")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue2.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;case"unrecognized_keys":return`\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue2.keys.length>1?"\u0B95\u0BB3\u0BCD":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;case"invalid_union":return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1";case"invalid_element":return`${issue2.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;default:return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`}}}}});function th_default(){return{localeError:error42()}}var error42;var init_th=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/th.js"(){init_util();error42=()=>{const Sizable={string:{unit:"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},file:{unit:"\u0E44\u0E1A\u0E15\u0E4C",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},array:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},set:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19",email:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25",url:"URL",emoji:"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",date:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO",time:"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",duration:"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",ipv4:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4",ipv6:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6",cidrv4:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4",cidrv6:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6",base64:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64",base64url:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL",json_string:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON",e164:"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)",jwt:"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT",template_literal:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19"};const TypeDictionary={nan:"NaN",number:"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02",array:"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)",null:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue2.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`}return`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${stringifyPrimitive(issue2.values[0])}`;return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19":"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32";const sizing=getSizing(issue2.origin);if(sizing)return`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.maximum.toString()} ${sizing.unit??"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`;return`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22":"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32";const sizing=getSizing(issue2.origin);if(sizing){return`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.minimum.toString()} ${sizing.unit}`}return`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue2.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${_issue.prefix}"`}if(_issue.format==="ends_with")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${_issue.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;if(_issue.format==="regex")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`;return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue2.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;case"unrecognized_keys":return`\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue2.origin}`;case"invalid_union":return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49";case"invalid_element":return`\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue2.origin}`;default:return`\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`}}}}});function tr_default(){return{localeError:error43()}}var error43;var init_tr=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/tr.js"(){init_util();error43=()=>{const Sizable={string:{unit:"karakter",verb:"olmal\u0131"},file:{unit:"bayt",verb:"olmal\u0131"},array:{unit:"\xF6\u011Fe",verb:"olmal\u0131"},set:{unit:"\xF6\u011Fe",verb:"olmal\u0131"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"girdi",email:"e-posta adresi",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO tarih ve saat",date:"ISO tarih",time:"ISO saat",duration:"ISO s\xFCre",ipv4:"IPv4 adresi",ipv6:"IPv6 adresi",cidrv4:"IPv4 aral\u0131\u011F\u0131",cidrv6:"IPv6 aral\u0131\u011F\u0131",base64:"base64 ile \u015Fifrelenmi\u015F metin",base64url:"base64url ile \u015Fifrelenmi\u015F metin",json_string:"JSON dizesi",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"\u015Eablon dizesi"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Ge\xE7ersiz de\u011Fer: beklenen instanceof ${issue2.expected}, al\u0131nan ${received}`}return`Ge\xE7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ge\xE7ersiz de\u011Fer: beklenen ${stringifyPrimitive(issue2.values[0])}`;return`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\xC7ok b\xFCy\xFCk: beklenen ${issue2.origin??"de\u011Fer"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"\xF6\u011Fe"}`;return`\xC7ok b\xFCy\xFCk: beklenen ${issue2.origin??"de\u011Fer"} ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing)return`\xC7ok k\xFC\xE7\xFCk: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`\xC7ok k\xFC\xE7\xFCk: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Ge\xE7ersiz metin: "${_issue.prefix}" ile ba\u015Flamal\u0131`;if(_issue.format==="ends_with")return`Ge\xE7ersiz metin: "${_issue.suffix}" ile bitmeli`;if(_issue.format==="includes")return`Ge\xE7ersiz metin: "${_issue.includes}" i\xE7ermeli`;if(_issue.format==="regex")return`Ge\xE7ersiz metin: ${_issue.pattern} desenine uymal\u0131`;return`Ge\xE7ersiz ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ge\xE7ersiz say\u0131: ${issue2.divisor} ile tam b\xF6l\xFCnebilmeli`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} i\xE7inde ge\xE7ersiz anahtar`;case"invalid_union":return"Ge\xE7ersiz de\u011Fer";case"invalid_element":return`${issue2.origin} i\xE7inde ge\xE7ersiz de\u011Fer`;default:return`Ge\xE7ersiz de\u011Fer`}}}}});function uk_default(){return{localeError:error44()}}var error44;var init_uk=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/uk.js"(){init_util();error44=()=>{const Sizable={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},file:{unit:"\u0431\u0430\u0439\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO",date:"\u0434\u0430\u0442\u0430 ISO",time:"\u0447\u0430\u0441 ISO",duration:"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO",ipv4:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4",ipv6:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6",cidrv4:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4",cidrv6:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6",base64:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64",base64url:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url",json_string:"\u0440\u044F\u0434\u043E\u043A JSON",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"};const TypeDictionary={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue2.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`}return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${stringifyPrimitive(issue2.values[0])}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`;return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue2.origin} \u0431\u0443\u0434\u0435 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${_issue.prefix}"`;if(_issue.format==="ends_with")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${_issue.suffix}"`;if(_issue.format==="includes")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${_issue.includes}"`;if(_issue.format==="regex")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue2.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue2.keys.length>1?"\u0456":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue2.origin}`;case"invalid_union":return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456";case"invalid_element":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue2.origin}`;default:return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`}}}}});function ua_default(){return uk_default()}var init_ua=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ua.js"(){init_uk()}});function ur_default(){return{localeError:error45()}}var error45;var init_ur=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ur.js"(){init_util();error45=()=>{const Sizable={string:{unit:"\u062D\u0631\u0648\u0641",verb:"\u06C1\u0648\u0646\u0627"},file:{unit:"\u0628\u0627\u0626\u0679\u0633",verb:"\u06C1\u0648\u0646\u0627"},array:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"},set:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0627\u0646 \u067E\u0679",email:"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633",url:"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",uuidv4:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4",uuidv6:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6",nanoid:"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC",guid:"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid2:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2",ulid:"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC",xid:"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC",ksuid:"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",datetime:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645",date:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E",time:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A",duration:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A",ipv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633",ipv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633",cidrv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C",cidrv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C",base64:"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",base64url:"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",json_string:"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF",e164:"\u0627\u06CC 164 \u0646\u0645\u0628\u0631",jwt:"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC",template_literal:"\u0627\u0646 \u067E\u0679"};const TypeDictionary={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue2.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`}return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`}case"invalid_value":if(issue2.values.length===1)return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${stringifyPrimitive(issue2.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;return`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${joinValues(issue2.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue2.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue2.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${adj}${issue2.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue2.origin} \u06A9\u06D2 ${adj}${issue2.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`}return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue2.origin} \u06A9\u0627 ${adj}${issue2.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`}if(_issue.format==="ends_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(_issue.format==="includes")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${_issue.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(_issue.format==="regex")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;return`\u063A\u0644\u0637 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue2.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;case"unrecognized_keys":return`\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue2.keys.length>1?"\u0632":""}: ${joinValues(issue2.keys,"\u060C ")}`;case"invalid_key":return`${issue2.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;case"invalid_union":return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679";case"invalid_element":return`${issue2.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;default:return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`}}}}});function uz_default(){return{localeError:error46()}}var error46;var init_uz=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/uz.js"(){init_util();error46=()=>{const Sizable={string:{unit:"belgi",verb:"bo\u2018lishi kerak"},file:{unit:"bayt",verb:"bo\u2018lishi kerak"},array:{unit:"element",verb:"bo\u2018lishi kerak"},set:{unit:"element",verb:"bo\u2018lishi kerak"},map:{unit:"yozuv",verb:"bo\u2018lishi kerak"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"kirish",email:"elektron pochta manzili",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO sana va vaqti",date:"ISO sana",time:"ISO vaqt",duration:"ISO davomiylik",ipv4:"IPv4 manzil",ipv6:"IPv6 manzil",mac:"MAC manzil",cidrv4:"IPv4 diapazon",cidrv6:"IPv6 diapazon",base64:"base64 kodlangan satr",base64url:"base64url kodlangan satr",json_string:"JSON satr",e164:"E.164 raqam",jwt:"JWT",template_literal:"kirish"};const TypeDictionary={nan:"NaN",number:"raqam",array:"massiv"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue2.expected}, qabul qilingan ${received}`}return`Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`}case"invalid_value":if(issue2.values.length===1)return`Noto\u2018g\u2018ri kirish: kutilgan ${stringifyPrimitive(issue2.values[0])}`;return`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Juda katta: kutilgan ${issue2.origin??"qiymat"} ${adj}${issue2.maximum.toString()} ${sizing.unit} ${sizing.verb}`;return`Juda katta: kutilgan ${issue2.origin??"qiymat"} ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`}return`Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Noto\u2018g\u2018ri satr: "${_issue.prefix}" bilan boshlanishi kerak`;if(_issue.format==="ends_with")return`Noto\u2018g\u2018ri satr: "${_issue.suffix}" bilan tugashi kerak`;if(_issue.format==="includes")return`Noto\u2018g\u2018ri satr: "${_issue.includes}" ni o\u2018z ichiga olishi kerak`;if(_issue.format==="regex")return`Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;return`Noto\u2018g\u2018ri ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Noto\u2018g\u2018ri raqam: ${issue2.divisor} ning karralisi bo\u2018lishi kerak`;case"unrecognized_keys":return`Noma\u2019lum kalit${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} dagi kalit noto\u2018g\u2018ri`;case"invalid_union":return"Noto\u2018g\u2018ri kirish";case"invalid_element":return`${issue2.origin} da noto\u2018g\u2018ri qiymat`;default:return`Noto\u2018g\u2018ri kirish`}}}}});function vi_default(){return{localeError:error47()}}var error47;var init_vi=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/vi.js"(){init_util();error47=()=>{const Sizable={string:{unit:"k\xFD t\u1EF1",verb:"c\xF3"},file:{unit:"byte",verb:"c\xF3"},array:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"},set:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u0111\u1EA7u v\xE0o",email:"\u0111\u1ECBa ch\u1EC9 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ng\xE0y gi\u1EDD ISO",date:"ng\xE0y ISO",time:"gi\u1EDD ISO",duration:"kho\u1EA3ng th\u1EDDi gian ISO",ipv4:"\u0111\u1ECBa ch\u1EC9 IPv4",ipv6:"\u0111\u1ECBa ch\u1EC9 IPv6",cidrv4:"d\u1EA3i IPv4",cidrv6:"d\u1EA3i IPv6",base64:"chu\u1ED7i m\xE3 h\xF3a base64",base64url:"chu\u1ED7i m\xE3 h\xF3a base64url",json_string:"chu\u1ED7i JSON",e164:"s\u1ED1 E.164",jwt:"JWT",template_literal:"\u0111\u1EA7u v\xE0o"};const TypeDictionary={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue2.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`}return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${stringifyPrimitive(issue2.values[0])}`;return`T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue2.origin??"gi\xE1 tr\u1ECB"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"ph\u1EA7n t\u1EED"}`;return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${issue2.origin??"gi\xE1 tr\u1ECB"} ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${_issue.suffix}"`;if(_issue.format==="includes")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${_issue.includes}"`;if(_issue.format==="regex")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} kh\xF4ng h\u1EE3p l\u1EC7`}case"not_multiple_of":return`S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue2.divisor}`;case"unrecognized_keys":return`Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue2.origin}`;case"invalid_union":return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7";case"invalid_element":return`Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${issue2.origin}`;default:return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7`}}}}});function zh_CN_default(){return{localeError:error48()}}var error48;var init_zh_CN=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/zh-CN.js"(){init_util();error48=()=>{const Sizable={string:{unit:"\u5B57\u7B26",verb:"\u5305\u542B"},file:{unit:"\u5B57\u8282",verb:"\u5305\u542B"},array:{unit:"\u9879",verb:"\u5305\u542B"},set:{unit:"\u9879",verb:"\u5305\u542B"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u8F93\u5165",email:"\u7535\u5B50\u90AE\u4EF6",url:"URL",emoji:"\u8868\u60C5\u7B26\u53F7",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u671F\u65F6\u95F4",date:"ISO\u65E5\u671F",time:"ISO\u65F6\u95F4",duration:"ISO\u65F6\u957F",ipv4:"IPv4\u5730\u5740",ipv6:"IPv6\u5730\u5740",cidrv4:"IPv4\u7F51\u6BB5",cidrv6:"IPv6\u7F51\u6BB5",base64:"base64\u7F16\u7801\u5B57\u7B26\u4E32",base64url:"base64url\u7F16\u7801\u5B57\u7B26\u4E32",json_string:"JSON\u5B57\u7B26\u4E32",e164:"E.164\u53F7\u7801",jwt:"JWT",template_literal:"\u8F93\u5165"};const TypeDictionary={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue2.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`}return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${stringifyPrimitive(issue2.values[0])}`;return`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue2.origin??"\u503C"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u4E2A\u5143\u7D20"}`;return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue2.origin??"\u503C"} ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.prefix}" \u5F00\u5934`;if(_issue.format==="ends_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${_issue.suffix}" \u7ED3\u5C3E`;if(_issue.format==="includes")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${_issue.includes}"`;if(_issue.format==="regex")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`;return`\u65E0\u6548${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue2.divisor} \u7684\u500D\u6570`;case"unrecognized_keys":return`\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;case"invalid_union":return"\u65E0\u6548\u8F93\u5165";case"invalid_element":return`${issue2.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;default:return`\u65E0\u6548\u8F93\u5165`}}}}});function zh_TW_default(){return{localeError:error49()}}var error49;var init_zh_TW=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/zh-TW.js"(){init_util();error49=()=>{const Sizable={string:{unit:"\u5B57\u5143",verb:"\u64C1\u6709"},file:{unit:"\u4F4D\u5143\u7D44",verb:"\u64C1\u6709"},array:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"},set:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u8F38\u5165",email:"\u90F5\u4EF6\u5730\u5740",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u65E5\u671F\u6642\u9593",date:"ISO \u65E5\u671F",time:"ISO \u6642\u9593",duration:"ISO \u671F\u9593",ipv4:"IPv4 \u4F4D\u5740",ipv6:"IPv6 \u4F4D\u5740",cidrv4:"IPv4 \u7BC4\u570D",cidrv6:"IPv6 \u7BC4\u570D",base64:"base64 \u7DE8\u78BC\u5B57\u4E32",base64url:"base64url \u7DE8\u78BC\u5B57\u4E32",json_string:"JSON \u5B57\u4E32",e164:"E.164 \u6578\u503C",jwt:"JWT",template_literal:"\u8F38\u5165"};const TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue2.expected}\uFF0C\u4F46\u6536\u5230 ${received}`}return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`}case"invalid_value":if(issue2.values.length===1)return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${stringifyPrimitive(issue2.values[0])}`;return`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue2.origin??"\u503C"} \u61C9\u70BA ${adj}${issue2.maximum.toString()} ${sizing.unit??"\u500B\u5143\u7D20"}`;return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue2.origin??"\u503C"} \u61C9\u70BA ${adj}${issue2.maximum.toString()}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing){return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue2.origin} \u61C9\u70BA ${adj}${issue2.minimum.toString()} ${sizing.unit}`}return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue2.origin} \u61C9\u70BA ${adj}${issue2.minimum.toString()}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with"){return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.prefix}" \u958B\u982D`}if(_issue.format==="ends_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${_issue.suffix}" \u7D50\u5C3E`;if(_issue.format==="includes")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${_issue.includes}"`;if(_issue.format==="regex")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`;return`\u7121\u6548\u7684 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue2.divisor} \u7684\u500D\u6578`;case"unrecognized_keys":return`\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue2.keys.length>1?"\u5011":""}\uFF1A${joinValues(issue2.keys,"\u3001")}`;case"invalid_key":return`${issue2.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;case"invalid_union":return"\u7121\u6548\u7684\u8F38\u5165\u503C";case"invalid_element":return`${issue2.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;default:return`\u7121\u6548\u7684\u8F38\u5165\u503C`}}}}});function yo_default(){return{localeError:error50()}}var error50;var init_yo=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/yo.js"(){init_util();error50=()=>{const Sizable={string:{unit:"\xE0mi",verb:"n\xED"},file:{unit:"bytes",verb:"n\xED"},array:{unit:"nkan",verb:"n\xED"},set:{unit:"nkan",verb:"n\xED"}};function getSizing(origin){return Sizable[origin]??null}const FormatDictionary={regex:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9",email:"\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\xE0k\xF3k\xF2 ISO",date:"\u1ECDj\u1ECD\u0301 ISO",time:"\xE0k\xF3k\xF2 ISO",duration:"\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO",ipv4:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv4",ipv6:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv6",cidrv4:"\xE0gb\xE8gb\xE8 IPv4",cidrv6:"\xE0gb\xE8gb\xE8 IPv6",base64:"\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64",base64url:"\u1ECD\u0300r\u1ECD\u0300 base64url",json_string:"\u1ECD\u0300r\u1ECD\u0300 JSON",e164:"n\u1ECD\u0301mb\xE0 E.164",jwt:"JWT",template_literal:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9"};const TypeDictionary={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return issue2=>{switch(issue2.code){case"invalid_type":{const expected=TypeDictionary[issue2.expected]??issue2.expected;const receivedType=parsedType(issue2.input);const received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected)){return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${issue2.expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`}return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${expected}, \xE0m\u1ECD\u0300 a r\xED ${received}`}case"invalid_value":if(issue2.values.length===1)return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${stringifyPrimitive(issue2.values[0])}`;return`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${joinValues(issue2.values,"|")}`;case"too_big":{const adj=issue2.inclusive?"<=":"<";const sizing=getSizing(issue2.origin);if(sizing)return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue2.origin??"iye"} ${sizing.verb} ${adj}${issue2.maximum} ${sizing.unit}`;return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue2.maximum}`}case"too_small":{const adj=issue2.inclusive?">=":">";const sizing=getSizing(issue2.origin);if(sizing)return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum} ${sizing.unit}`;return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${adj}${issue2.minimum}`}case"invalid_format":{const _issue=issue2;if(_issue.format==="starts_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${_issue.prefix}"`;if(_issue.format==="ends_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${_issue.suffix}"`;if(_issue.format==="includes")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${_issue.includes}"`;if(_issue.format==="regex")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`;return`A\u1E63\xEC\u1E63e: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${issue2.divisor}`;case"unrecognized_keys":return`B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue2.origin}`;case"invalid_union":return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e";case"invalid_element":return`Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${issue2.origin}`;default:return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"}}}}});var locales_exports={};__export(locales_exports,{ar:()=>ar_default,az:()=>az_default,be:()=>be_default,bg:()=>bg_default,ca:()=>ca_default,cs:()=>cs_default,da:()=>da_default,de:()=>de_default,el:()=>el_default,en:()=>en_default,eo:()=>eo_default,es:()=>es_default,fa:()=>fa_default,fi:()=>fi_default,fr:()=>fr_default,frCA:()=>fr_CA_default,he:()=>he_default,hr:()=>hr_default,hu:()=>hu_default,hy:()=>hy_default,id:()=>id_default,is:()=>is_default,it:()=>it_default,ja:()=>ja_default,ka:()=>ka_default,kh:()=>kh_default,km:()=>km_default,ko:()=>ko_default,lt:()=>lt_default,mk:()=>mk_default,ms:()=>ms_default,nl:()=>nl_default,no:()=>no_default,ota:()=>ota_default,pl:()=>pl_default,ps:()=>ps_default,pt:()=>pt_default,ro:()=>ro_default,ru:()=>ru_default,sl:()=>sl_default,sv:()=>sv_default,ta:()=>ta_default,th:()=>th_default,tr:()=>tr_default,ua:()=>ua_default,uk:()=>uk_default,ur:()=>ur_default,uz:()=>uz_default,vi:()=>vi_default,yo:()=>yo_default,zhCN:()=>zh_CN_default,zhTW:()=>zh_TW_default});var init_locales=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/index.js"(){init_ar();init_az();init_be();init_bg();init_ca();init_cs();init_da();init_de();init_el();init_en();init_eo();init_es();init_fa();init_fi();init_fr();init_fr_CA();init_he();init_hr();init_hu();init_hy();init_id();init_is();init_it();init_ja();init_ka();init_kh();init_km();init_ko();init_lt();init_mk();init_ms();init_nl();init_no();init_ota();init_ps();init_pl();init_pt();init_ro();init_ru();init_sl();init_sv();init_ta();init_th();init_tr();init_ua();init_uk();init_ur();init_uz();init_vi();init_zh_CN();init_zh_TW();init_yo()}});function registry3(){return new $ZodRegistry}var _a2,$output,$input,$ZodRegistry,globalRegistry;var init_registries=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/registries.js"(){$output=Symbol("ZodOutput");$input=Symbol("ZodInput");$ZodRegistry=class{constructor(){this._map=new WeakMap;this._idmap=new Map}add(schema,..._meta){const meta3=_meta[0];this._map.set(schema,meta3);if(meta3&&typeof meta3==="object"&&"id"in meta3){this._idmap.set(meta3.id,schema)}return this}clear(){this._map=new WeakMap;this._idmap=new Map;return this}remove(schema){const meta3=this._map.get(schema);if(meta3&&typeof meta3==="object"&&"id"in meta3){this._idmap.delete(meta3.id)}this._map.delete(schema);return this}get(schema){const p=schema._zod.parent;if(p){const pm={...this.get(p)??{}};delete pm.id;const f={...pm,...this._map.get(schema)};return Object.keys(f).length?f:void 0}return this._map.get(schema)}has(schema){return this._map.has(schema)}};(_a2=globalThis).__zod_globalRegistry??(_a2.__zod_globalRegistry=registry3());globalRegistry=globalThis.__zod_globalRegistry}});function _string(Class2,params){return new Class2({type:"string",...normalizeParams(params)})}function _coercedString(Class2,params){return new Class2({type:"string",coerce:true,...normalizeParams(params)})}function _email(Class2,params){return new Class2({type:"string",format:"email",check:"string_format",abort:false,...normalizeParams(params)})}function _guid(Class2,params){return new Class2({type:"string",format:"guid",check:"string_format",abort:false,...normalizeParams(params)})}function _uuid(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:false,...normalizeParams(params)})}function _uuidv4(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:false,version:"v4",...normalizeParams(params)})}function _uuidv6(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:false,version:"v6",...normalizeParams(params)})}function _uuidv7(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:false,version:"v7",...normalizeParams(params)})}function _url(Class2,params){return new Class2({type:"string",format:"url",check:"string_format",abort:false,...normalizeParams(params)})}function _emoji2(Class2,params){return new Class2({type:"string",format:"emoji",check:"string_format",abort:false,...normalizeParams(params)})}function _nanoid(Class2,params){return new Class2({type:"string",format:"nanoid",check:"string_format",abort:false,...normalizeParams(params)})}function _cuid(Class2,params){return new Class2({type:"string",format:"cuid",check:"string_format",abort:false,...normalizeParams(params)})}function _cuid2(Class2,params){return new Class2({type:"string",format:"cuid2",check:"string_format",abort:false,...normalizeParams(params)})}function _ulid(Class2,params){return new Class2({type:"string",format:"ulid",check:"string_format",abort:false,...normalizeParams(params)})}function _xid(Class2,params){return new Class2({type:"string",format:"xid",check:"string_format",abort:false,...normalizeParams(params)})}function _ksuid(Class2,params){return new Class2({type:"string",format:"ksuid",check:"string_format",abort:false,...normalizeParams(params)})}function _ipv4(Class2,params){return new Class2({type:"string",format:"ipv4",check:"string_format",abort:false,...normalizeParams(params)})}function _ipv6(Class2,params){return new Class2({type:"string",format:"ipv6",check:"string_format",abort:false,...normalizeParams(params)})}function _mac(Class2,params){return new Class2({type:"string",format:"mac",check:"string_format",abort:false,...normalizeParams(params)})}function _cidrv4(Class2,params){return new Class2({type:"string",format:"cidrv4",check:"string_format",abort:false,...normalizeParams(params)})}function _cidrv6(Class2,params){return new Class2({type:"string",format:"cidrv6",check:"string_format",abort:false,...normalizeParams(params)})}function _base64(Class2,params){return new Class2({type:"string",format:"base64",check:"string_format",abort:false,...normalizeParams(params)})}function _base64url(Class2,params){return new Class2({type:"string",format:"base64url",check:"string_format",abort:false,...normalizeParams(params)})}function _e164(Class2,params){return new Class2({type:"string",format:"e164",check:"string_format",abort:false,...normalizeParams(params)})}function _jwt(Class2,params){return new Class2({type:"string",format:"jwt",check:"string_format",abort:false,...normalizeParams(params)})}function _isoDateTime(Class2,params){return new Class2({type:"string",format:"datetime",check:"string_format",offset:false,local:false,precision:null,...normalizeParams(params)})}function _isoDate(Class2,params){return new Class2({type:"string",format:"date",check:"string_format",...normalizeParams(params)})}function _isoTime(Class2,params){return new Class2({type:"string",format:"time",check:"string_format",precision:null,...normalizeParams(params)})}function _isoDuration(Class2,params){return new Class2({type:"string",format:"duration",check:"string_format",...normalizeParams(params)})}function _number(Class2,params){return new Class2({type:"number",checks:[],...normalizeParams(params)})}function _coercedNumber(Class2,params){return new Class2({type:"number",coerce:true,checks:[],...normalizeParams(params)})}function _int(Class2,params){return new Class2({type:"number",check:"number_format",abort:false,format:"safeint",...normalizeParams(params)})}function _float32(Class2,params){return new Class2({type:"number",check:"number_format",abort:false,format:"float32",...normalizeParams(params)})}function _float64(Class2,params){return new Class2({type:"number",check:"number_format",abort:false,format:"float64",...normalizeParams(params)})}function _int32(Class2,params){return new Class2({type:"number",check:"number_format",abort:false,format:"int32",...normalizeParams(params)})}function _uint32(Class2,params){return new Class2({type:"number",check:"number_format",abort:false,format:"uint32",...normalizeParams(params)})}function _boolean(Class2,params){return new Class2({type:"boolean",...normalizeParams(params)})}function _coercedBoolean(Class2,params){return new Class2({type:"boolean",coerce:true,...normalizeParams(params)})}function _bigint(Class2,params){return new Class2({type:"bigint",...normalizeParams(params)})}function _coercedBigint(Class2,params){return new Class2({type:"bigint",coerce:true,...normalizeParams(params)})}function _int64(Class2,params){return new Class2({type:"bigint",check:"bigint_format",abort:false,format:"int64",...normalizeParams(params)})}function _uint64(Class2,params){return new Class2({type:"bigint",check:"bigint_format",abort:false,format:"uint64",...normalizeParams(params)})}function _symbol(Class2,params){return new Class2({type:"symbol",...normalizeParams(params)})}function _undefined2(Class2,params){return new Class2({type:"undefined",...normalizeParams(params)})}function _null2(Class2,params){return new Class2({type:"null",...normalizeParams(params)})}function _any(Class2){return new Class2({type:"any"})}function _unknown(Class2){return new Class2({type:"unknown"})}function _never(Class2,params){return new Class2({type:"never",...normalizeParams(params)})}function _void(Class2,params){return new Class2({type:"void",...normalizeParams(params)})}function _date(Class2,params){return new Class2({type:"date",...normalizeParams(params)})}function _coercedDate(Class2,params){return new Class2({type:"date",coerce:true,...normalizeParams(params)})}function _nan(Class2,params){return new Class2({type:"nan",...normalizeParams(params)})}function _lt(value,params){return new $ZodCheckLessThan({check:"less_than",...normalizeParams(params),value,inclusive:false})}function _lte(value,params){return new $ZodCheckLessThan({check:"less_than",...normalizeParams(params),value,inclusive:true})}function _gt(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:false})}function _gte(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:true})}function _positive(params){return _gt(0,params)}function _negative(params){return _lt(0,params)}function _nonpositive(params){return _lte(0,params)}function _nonnegative(params){return _gte(0,params)}function _multipleOf(value,params){return new $ZodCheckMultipleOf({check:"multiple_of",...normalizeParams(params),value})}function _maxSize(maximum,params){return new $ZodCheckMaxSize({check:"max_size",...normalizeParams(params),maximum})}function _minSize(minimum,params){return new $ZodCheckMinSize({check:"min_size",...normalizeParams(params),minimum})}function _size(size,params){return new $ZodCheckSizeEquals({check:"size_equals",...normalizeParams(params),size})}function _maxLength(maximum,params){const ch=new $ZodCheckMaxLength({check:"max_length",...normalizeParams(params),maximum});return ch}function _minLength(minimum,params){return new $ZodCheckMinLength({check:"min_length",...normalizeParams(params),minimum})}function _length(length,params){return new $ZodCheckLengthEquals({check:"length_equals",...normalizeParams(params),length})}function _regex(pattern,params){return new $ZodCheckRegex({check:"string_format",format:"regex",...normalizeParams(params),pattern})}function _lowercase(params){return new $ZodCheckLowerCase({check:"string_format",format:"lowercase",...normalizeParams(params)})}function _uppercase(params){return new $ZodCheckUpperCase({check:"string_format",format:"uppercase",...normalizeParams(params)})}function _includes(includes,params){return new $ZodCheckIncludes({check:"string_format",format:"includes",...normalizeParams(params),includes})}function _startsWith(prefix,params){return new $ZodCheckStartsWith({check:"string_format",format:"starts_with",...normalizeParams(params),prefix})}function _endsWith(suffix,params){return new $ZodCheckEndsWith({check:"string_format",format:"ends_with",...normalizeParams(params),suffix})}function _property(property,schema,params){return new $ZodCheckProperty({check:"property",property,schema,...normalizeParams(params)})}function _mime(types,params){return new $ZodCheckMimeType({check:"mime_type",mime:types,...normalizeParams(params)})}function _overwrite(tx){return new $ZodCheckOverwrite({check:"overwrite",tx})}function _normalize(form){return _overwrite(input=>input.normalize(form))}function _trim(){return _overwrite(input=>input.trim())}function _toLowerCase(){return _overwrite(input=>input.toLowerCase())}function _toUpperCase(){return _overwrite(input=>input.toUpperCase())}function _slugify(){return _overwrite(input=>slugify(input))}function _array(Class2,element,params){return new Class2({type:"array",element,...normalizeParams(params)})}function _union(Class2,options,params){return new Class2({type:"union",options,...normalizeParams(params)})}function _xor(Class2,options,params){return new Class2({type:"union",options,inclusive:false,...normalizeParams(params)})}function _discriminatedUnion(Class2,discriminator,options,params){return new Class2({type:"union",options,discriminator,...normalizeParams(params)})}function _intersection(Class2,left,right){return new Class2({type:"intersection",left,right})}function _tuple(Class2,items,_paramsOrRest,_params){const hasRest=_paramsOrRest instanceof $ZodType;const params=hasRest?_params:_paramsOrRest;const rest=hasRest?_paramsOrRest:null;return new Class2({type:"tuple",items,rest,...normalizeParams(params)})}function _record(Class2,keyType,valueType,params){return new Class2({type:"record",keyType,valueType,...normalizeParams(params)})}function _map(Class2,keyType,valueType,params){return new Class2({type:"map",keyType,valueType,...normalizeParams(params)})}function _set(Class2,valueType,params){return new Class2({type:"set",valueType,...normalizeParams(params)})}function _enum(Class2,values,params){const entries=Array.isArray(values)?Object.fromEntries(values.map(v=>[v,v])):values;return new Class2({type:"enum",entries,...normalizeParams(params)})}function _nativeEnum(Class2,entries,params){return new Class2({type:"enum",entries,...normalizeParams(params)})}function _literal(Class2,value,params){return new Class2({type:"literal",values:Array.isArray(value)?value:[value],...normalizeParams(params)})}function _file(Class2,params){return new Class2({type:"file",...normalizeParams(params)})}function _transform(Class2,fn){return new Class2({type:"transform",transform:fn})}function _optional(Class2,innerType){return new Class2({type:"optional",innerType})}function _nullable(Class2,innerType){return new Class2({type:"nullable",innerType})}function _default(Class2,innerType,defaultValue){return new Class2({type:"default",innerType,get defaultValue(){return typeof defaultValue==="function"?defaultValue():shallowClone(defaultValue)}})}function _nonoptional(Class2,innerType,params){return new Class2({type:"nonoptional",innerType,...normalizeParams(params)})}function _success(Class2,innerType){return new Class2({type:"success",innerType})}function _catch(Class2,innerType,catchValue){return new Class2({type:"catch",innerType,catchValue:typeof catchValue==="function"?catchValue:()=>catchValue})}function _pipe(Class2,in_,out){return new Class2({type:"pipe",in:in_,out})}function _readonly(Class2,innerType){return new Class2({type:"readonly",innerType})}function _templateLiteral(Class2,parts,params){return new Class2({type:"template_literal",parts,...normalizeParams(params)})}function _lazy(Class2,getter){return new Class2({type:"lazy",getter})}function _promise(Class2,innerType){return new Class2({type:"promise",innerType})}function _custom(Class2,fn,_params){const norm=normalizeParams(_params);norm.abort??(norm.abort=true);const schema=new Class2({type:"custom",check:"custom",fn,...norm});return schema}function _refine(Class2,fn,_params){const schema=new Class2({type:"custom",check:"custom",fn,...normalizeParams(_params)});return schema}function _superRefine(fn,params){const ch=_check(payload=>{payload.addIssue=issue2=>{if(typeof issue2==="string"){payload.issues.push(issue(issue2,payload.value,ch._zod.def))}else{const _issue=issue2;if(_issue.fatal)_issue.continue=false;_issue.code??(_issue.code="custom");_issue.input??(_issue.input=payload.value);_issue.inst??(_issue.inst=ch);_issue.continue??(_issue.continue=!ch._zod.def.abort);payload.issues.push(issue(_issue))}};return fn(payload.value,payload)},params);return ch}function _check(fn,params){const ch=new $ZodCheck({check:"custom",...normalizeParams(params)});ch._zod.check=fn;return ch}function describe(description){const ch=new $ZodCheck({check:"describe"});ch._zod.onattach=[inst=>{const existing=globalRegistry.get(inst)??{};globalRegistry.add(inst,{...existing,description})}];ch._zod.check=()=>{};return ch}function meta(metadata2){const ch=new $ZodCheck({check:"meta"});ch._zod.onattach=[inst=>{const existing=globalRegistry.get(inst)??{};globalRegistry.add(inst,{...existing,...metadata2})}];ch._zod.check=()=>{};return ch}function _stringbool(Classes,_params){const params=normalizeParams(_params);let truthyArray=params.truthy??["true","1","yes","on","y","enabled"];let falsyArray=params.falsy??["false","0","no","off","n","disabled"];if(params.case!=="sensitive"){truthyArray=truthyArray.map(v=>typeof v==="string"?v.toLowerCase():v);falsyArray=falsyArray.map(v=>typeof v==="string"?v.toLowerCase():v)}const truthySet=new Set(truthyArray);const falsySet=new Set(falsyArray);const _Codec=Classes.Codec??$ZodCodec;const _Boolean=Classes.Boolean??$ZodBoolean;const _String=Classes.String??$ZodString;const stringSchema=new _String({type:"string",error:params.error});const booleanSchema=new _Boolean({type:"boolean",error:params.error});const codec2=new _Codec({type:"pipe",in:stringSchema,out:booleanSchema,transform:((input,payload)=>{let data=input;if(params.case!=="sensitive")data=data.toLowerCase();if(truthySet.has(data)){return true}else if(falsySet.has(data)){return false}else{payload.issues.push({code:"invalid_value",expected:"stringbool",values:[...truthySet,...falsySet],input:payload.value,inst:codec2,continue:false});return{}}}),reverseTransform:((input,_payload)=>{if(input===true){return truthyArray[0]||"true"}else{return falsyArray[0]||"false"}}),error:params.error});return codec2}function _stringFormat(Class2,format,fnOrRegex,_params={}){const params=normalizeParams(_params);const def={...normalizeParams(_params),check:"string_format",type:"string",format,fn:typeof fnOrRegex==="function"?fnOrRegex:val=>fnOrRegex.test(val),...params};if(fnOrRegex instanceof RegExp){def.pattern=fnOrRegex}const inst=new Class2(def);return inst}var TimePrecision;var init_api=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/api.js"(){init_checks();init_registries();init_schemas();init_util();TimePrecision={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}}});function initializeContext(params){let target2=params?.target??"draft-2020-12";if(target2==="draft-4")target2="draft-04";if(target2==="draft-7")target2="draft-07";return{processors:params.processors??{},metadataRegistry:params?.metadata??globalRegistry,target:target2,unrepresentable:params?.unrepresentable??"throw",override:params?.override??(()=>{}),io:params?.io??"output",counter:0,seen:new Map,cycles:params?.cycles??"ref",reused:params?.reused??"inline",external:params?.external??void 0}}function process2(schema,ctx,_params={path:[],schemaPath:[]}){var _a3;const def=schema._zod.def;const seen=ctx.seen.get(schema);if(seen){seen.count++;const isCycle=_params.schemaPath.includes(schema);if(isCycle){seen.cycle=_params.path}return seen.schema}const result={schema:{},count:1,cycle:void 0,path:_params.path};ctx.seen.set(schema,result);const overrideSchema=schema._zod.toJSONSchema?.();if(overrideSchema){result.schema=overrideSchema}else{const params={..._params,schemaPath:[..._params.schemaPath,schema],path:_params.path};if(schema._zod.processJSONSchema){schema._zod.processJSONSchema(ctx,result.schema,params)}else{const _json=result.schema;const processor=ctx.processors[def.type];if(!processor){throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`)}processor(schema,ctx,_json,params)}const parent=schema._zod.parent;if(parent){if(!result.ref)result.ref=parent;process2(parent,ctx,params);ctx.seen.get(parent).isParent=true}}const meta3=ctx.metadataRegistry.get(schema);if(meta3)Object.assign(result.schema,meta3);if(ctx.io==="input"&&isTransforming(schema)){delete result.schema.examples;delete result.schema.default}if(ctx.io==="input"&&"_prefault"in result.schema)(_a3=result.schema).default??(_a3.default=result.schema._prefault);delete result.schema._prefault;const _result=ctx.seen.get(schema);return _result.schema}function extractDefs(ctx,schema){const root=ctx.seen.get(schema);if(!root)throw new Error("Unprocessed schema. This is a bug in Zod.");const idToSchema=new Map;for(const entry of ctx.seen.entries()){const id2=ctx.metadataRegistry.get(entry[0])?.id;if(id2){const existing=idToSchema.get(id2);if(existing&&existing!==entry[0]){throw new Error(`Duplicate schema id "${id2}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`)}idToSchema.set(id2,entry[0])}}const makeURI=entry=>{const defsSegment=ctx.target==="draft-2020-12"?"$defs":"definitions";if(ctx.external){const externalId=ctx.external.registry.get(entry[0])?.id;const uriGenerator=ctx.external.uri??(id3=>id3);if(externalId){return{ref:uriGenerator(externalId)}}const id2=entry[1].defId??entry[1].schema.id??`schema${ctx.counter++}`;entry[1].defId=id2;return{defId:id2,ref:`${uriGenerator("__shared")}#/${defsSegment}/${id2}`}}if(entry[1]===root){return{ref:"#"}}const uriPrefix=`#`;const defUriPrefix=`${uriPrefix}/${defsSegment}/`;const defId=entry[1].schema.id??`__schema${ctx.counter++}`;return{defId,ref:defUriPrefix+defId}};const extractToDef=entry=>{if(entry[1].schema.$ref){return}const seen=entry[1];const{ref,defId}=makeURI(entry);seen.def={...seen.schema};if(defId)seen.defId=defId;const schema2=seen.schema;for(const key in schema2){delete schema2[key]}schema2.$ref=ref};if(ctx.cycles==="throw"){for(const entry of ctx.seen.entries()){const seen=entry[1];if(seen.cycle){throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/<root>
|
|
111
111
|
|
|
112
112
|
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}}}for(const entry of ctx.seen.entries()){const seen=entry[1];if(schema===entry[0]){extractToDef(entry);continue}if(ctx.external){const ext=ctx.external.registry.get(entry[0])?.id;if(schema!==entry[0]&&ext){extractToDef(entry);continue}}const id2=ctx.metadataRegistry.get(entry[0])?.id;if(id2){extractToDef(entry);continue}if(seen.cycle){extractToDef(entry);continue}if(seen.count>1){if(ctx.reused==="ref"){extractToDef(entry);continue}}}}function finalize(ctx,schema){const root=ctx.seen.get(schema);if(!root)throw new Error("Unprocessed schema. This is a bug in Zod.");const flattenRef=zodSchema=>{const seen=ctx.seen.get(zodSchema);if(seen.ref===null)return;const schema2=seen.def??seen.schema;const _cached={...schema2};const ref=seen.ref;seen.ref=null;if(ref){flattenRef(ref);const refSeen=ctx.seen.get(ref);const refSchema=refSeen.schema;if(refSchema.$ref&&(ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0")){schema2.allOf=schema2.allOf??[];schema2.allOf.push(refSchema)}else{Object.assign(schema2,refSchema)}Object.assign(schema2,_cached);const isParentRef=zodSchema._zod.parent===ref;if(isParentRef){for(const key in schema2){if(key==="$ref"||key==="allOf")continue;if(!(key in _cached)){delete schema2[key]}}}if(refSchema.$ref&&refSeen.def){for(const key in schema2){if(key==="$ref"||key==="allOf")continue;if(key in refSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(refSeen.def[key])){delete schema2[key]}}}}const parent=zodSchema._zod.parent;if(parent&&parent!==ref){flattenRef(parent);const parentSeen=ctx.seen.get(parent);if(parentSeen?.schema.$ref){schema2.$ref=parentSeen.schema.$ref;if(parentSeen.def){for(const key in schema2){if(key==="$ref"||key==="allOf")continue;if(key in parentSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(parentSeen.def[key])){delete schema2[key]}}}}}ctx.override({zodSchema,jsonSchema:schema2,path:seen.path??[]})};for(const entry of[...ctx.seen.entries()].reverse()){flattenRef(entry[0])}const result={};if(ctx.target==="draft-2020-12"){result.$schema="https://json-schema.org/draft/2020-12/schema"}else if(ctx.target==="draft-07"){result.$schema="http://json-schema.org/draft-07/schema#"}else if(ctx.target==="draft-04"){result.$schema="http://json-schema.org/draft-04/schema#"}else if(ctx.target==="openapi-3.0"){}else{}if(ctx.external?.uri){const id2=ctx.external.registry.get(schema)?.id;if(!id2)throw new Error("Schema is missing an `id` property");result.$id=ctx.external.uri(id2)}Object.assign(result,root.def??root.schema);const rootMetaId=ctx.metadataRegistry.get(schema)?.id;if(rootMetaId!==void 0&&result.id===rootMetaId)delete result.id;const defs=ctx.external?.defs??{};for(const entry of ctx.seen.entries()){const seen=entry[1];if(seen.def&&seen.defId){if(seen.def.id===seen.defId)delete seen.def.id;defs[seen.defId]=seen.def}}if(ctx.external){}else{if(Object.keys(defs).length>0){if(ctx.target==="draft-2020-12"){result.$defs=defs}else{result.definitions=defs}}}try{const finalized=JSON.parse(JSON.stringify(result));Object.defineProperty(finalized,"~standard",{value:{...schema["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(schema,"input",ctx.processors),output:createStandardJSONSchemaMethod(schema,"output",ctx.processors)}},enumerable:false,writable:false});return finalized}catch(_err){throw new Error("Error converting schema to JSON.")}}function isTransforming(_schema,_ctx){const ctx=_ctx??{seen:new Set};if(ctx.seen.has(_schema))return false;ctx.seen.add(_schema);const def=_schema._zod.def;if(def.type==="transform")return true;if(def.type==="array")return isTransforming(def.element,ctx);if(def.type==="set")return isTransforming(def.valueType,ctx);if(def.type==="lazy")return isTransforming(def.getter(),ctx);if(def.type==="promise"||def.type==="optional"||def.type==="nonoptional"||def.type==="nullable"||def.type==="readonly"||def.type==="default"||def.type==="prefault"){return isTransforming(def.innerType,ctx)}if(def.type==="intersection"){return isTransforming(def.left,ctx)||isTransforming(def.right,ctx)}if(def.type==="record"||def.type==="map"){return isTransforming(def.keyType,ctx)||isTransforming(def.valueType,ctx)}if(def.type==="pipe"){if(_schema._zod.traits.has("$ZodCodec"))return true;return isTransforming(def.in,ctx)||isTransforming(def.out,ctx)}if(def.type==="object"){for(const key in def.shape){if(isTransforming(def.shape[key],ctx))return true}return false}if(def.type==="union"){for(const option of def.options){if(isTransforming(option,ctx))return true}return false}if(def.type==="tuple"){for(const item of def.items){if(isTransforming(item,ctx))return true}if(def.rest&&isTransforming(def.rest,ctx))return true;return false}return false}var createToJSONSchemaMethod,createStandardJSONSchemaMethod;var init_to_json_schema=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/to-json-schema.js"(){init_registries();createToJSONSchemaMethod=(schema,processors={})=>params=>{const ctx=initializeContext({...params,processors});process2(schema,ctx);extractDefs(ctx,schema);return finalize(ctx,schema)};createStandardJSONSchemaMethod=(schema,io,processors={})=>params=>{const{libraryOptions,target:target2}=params??{};const ctx=initializeContext({...libraryOptions??{},target:target2,io,processors});process2(schema,ctx);extractDefs(ctx,schema);return finalize(ctx,schema)}}});function toJSONSchema(input,params){if("_idmap"in input){const registry4=input;const ctx2=initializeContext({...params,processors:allProcessors});const defs={};for(const entry of registry4._idmap.entries()){const[_,schema]=entry;process2(schema,ctx2)}const schemas={};const external={registry:registry4,uri:params?.uri,defs};ctx2.external=external;for(const entry of registry4._idmap.entries()){const[key,schema]=entry;extractDefs(ctx2,schema);schemas[key]=finalize(ctx2,schema)}if(Object.keys(defs).length>0){const defsSegment=ctx2.target==="draft-2020-12"?"$defs":"definitions";schemas.__shared={[defsSegment]:defs}}return{schemas}}const ctx=initializeContext({...params,processors:allProcessors});process2(input,ctx);extractDefs(ctx,input);return finalize(ctx,input)}var formatMap,stringProcessor,numberProcessor,booleanProcessor,bigintProcessor,symbolProcessor,nullProcessor,undefinedProcessor,voidProcessor,neverProcessor,anyProcessor,unknownProcessor,dateProcessor,enumProcessor,literalProcessor,nanProcessor,templateLiteralProcessor,fileProcessor,successProcessor,customProcessor,functionProcessor,transformProcessor,mapProcessor,setProcessor,arrayProcessor,objectProcessor,unionProcessor,intersectionProcessor,tupleProcessor,recordProcessor,nullableProcessor,nonoptionalProcessor,defaultProcessor,prefaultProcessor,catchProcessor,pipeProcessor,readonlyProcessor,promiseProcessor,optionalProcessor,lazyProcessor,allProcessors;var init_json_schema_processors=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema-processors.js"(){init_to_json_schema();init_util();formatMap={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""};stringProcessor=(schema,ctx,_json,_params)=>{const json2=_json;json2.type="string";const{minimum,maximum,format,patterns:patterns2,contentEncoding}=schema._zod.bag;if(typeof minimum==="number")json2.minLength=minimum;if(typeof maximum==="number")json2.maxLength=maximum;if(format){json2.format=formatMap[format]??format;if(json2.format==="")delete json2.format;if(format==="time"){delete json2.format}}if(contentEncoding)json2.contentEncoding=contentEncoding;if(patterns2&&patterns2.size>0){const regexes=[...patterns2];if(regexes.length===1)json2.pattern=regexes[0].source;else if(regexes.length>1){json2.allOf=[...regexes.map(regex=>({...ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0"?{type:"string"}:{},pattern:regex.source}))]}}};numberProcessor=(schema,ctx,_json,_params)=>{const json2=_json;const{minimum,maximum,format,multipleOf,exclusiveMaximum,exclusiveMinimum}=schema._zod.bag;if(typeof format==="string"&&format.includes("int"))json2.type="integer";else json2.type="number";const exMin=typeof exclusiveMinimum==="number"&&exclusiveMinimum>=(minimum??Number.NEGATIVE_INFINITY);const exMax=typeof exclusiveMaximum==="number"&&exclusiveMaximum<=(maximum??Number.POSITIVE_INFINITY);const legacy=ctx.target==="draft-04"||ctx.target==="openapi-3.0";if(exMin){if(legacy){json2.minimum=exclusiveMinimum;json2.exclusiveMinimum=true}else{json2.exclusiveMinimum=exclusiveMinimum}}else if(typeof minimum==="number"){json2.minimum=minimum}if(exMax){if(legacy){json2.maximum=exclusiveMaximum;json2.exclusiveMaximum=true}else{json2.exclusiveMaximum=exclusiveMaximum}}else if(typeof maximum==="number"){json2.maximum=maximum}if(typeof multipleOf==="number")json2.multipleOf=multipleOf};booleanProcessor=(_schema,_ctx,json2,_params)=>{json2.type="boolean"};bigintProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("BigInt cannot be represented in JSON Schema")}};symbolProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Symbols cannot be represented in JSON Schema")}};nullProcessor=(_schema,ctx,json2,_params)=>{if(ctx.target==="openapi-3.0"){json2.type="string";json2.nullable=true;json2.enum=[null]}else{json2.type="null"}};undefinedProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Undefined cannot be represented in JSON Schema")}};voidProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Void cannot be represented in JSON Schema")}};neverProcessor=(_schema,_ctx,json2,_params)=>{json2.not={}};anyProcessor=(_schema,_ctx,_json,_params)=>{};unknownProcessor=(_schema,_ctx,_json,_params)=>{};dateProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Date cannot be represented in JSON Schema")}};enumProcessor=(schema,_ctx,json2,_params)=>{const def=schema._zod.def;const values=getEnumValues(def.entries);if(values.every(v=>typeof v==="number"))json2.type="number";if(values.every(v=>typeof v==="string"))json2.type="string";json2.enum=values};literalProcessor=(schema,ctx,json2,_params)=>{const def=schema._zod.def;const vals=[];for(const val of def.values){if(val===void 0){if(ctx.unrepresentable==="throw"){throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else{}}else if(typeof val==="bigint"){if(ctx.unrepresentable==="throw"){throw new Error("BigInt literals cannot be represented in JSON Schema")}else{vals.push(Number(val))}}else{vals.push(val)}}if(vals.length===0){}else if(vals.length===1){const val=vals[0];json2.type=val===null?"null":typeof val;if(ctx.target==="draft-04"||ctx.target==="openapi-3.0"){json2.enum=[val]}else{json2.const=val}}else{if(vals.every(v=>typeof v==="number"))json2.type="number";if(vals.every(v=>typeof v==="string"))json2.type="string";if(vals.every(v=>typeof v==="boolean"))json2.type="boolean";if(vals.every(v=>v===null))json2.type="null";json2.enum=vals}};nanProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("NaN cannot be represented in JSON Schema")}};templateLiteralProcessor=(schema,_ctx,json2,_params)=>{const _json=json2;const pattern=schema._zod.pattern;if(!pattern)throw new Error("Pattern not found in template literal");_json.type="string";_json.pattern=pattern.source};fileProcessor=(schema,_ctx,json2,_params)=>{const _json=json2;const file2={type:"string",format:"binary",contentEncoding:"binary"};const{minimum,maximum,mime}=schema._zod.bag;if(minimum!==void 0)file2.minLength=minimum;if(maximum!==void 0)file2.maxLength=maximum;if(mime){if(mime.length===1){file2.contentMediaType=mime[0];Object.assign(_json,file2)}else{Object.assign(_json,file2);_json.anyOf=mime.map(m=>({contentMediaType:m}))}}else{Object.assign(_json,file2)}};successProcessor=(_schema,_ctx,json2,_params)=>{json2.type="boolean"};customProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Custom types cannot be represented in JSON Schema")}};functionProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Function types cannot be represented in JSON Schema")}};transformProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Transforms cannot be represented in JSON Schema")}};mapProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Map cannot be represented in JSON Schema")}};setProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw"){throw new Error("Set cannot be represented in JSON Schema")}};arrayProcessor=(schema,ctx,_json,params)=>{const json2=_json;const def=schema._zod.def;const{minimum,maximum}=schema._zod.bag;if(typeof minimum==="number")json2.minItems=minimum;if(typeof maximum==="number")json2.maxItems=maximum;json2.type="array";json2.items=process2(def.element,ctx,{...params,path:[...params.path,"items"]})};objectProcessor=(schema,ctx,_json,params)=>{const json2=_json;const def=schema._zod.def;json2.type="object";json2.properties={};const shape=def.shape;for(const key in shape){json2.properties[key]=process2(shape[key],ctx,{...params,path:[...params.path,"properties",key]})}const allKeys=new Set(Object.keys(shape));const requiredKeys=new Set([...allKeys].filter(key=>{const v=def.shape[key]._zod;if(ctx.io==="input"){return v.optin===void 0}else{return v.optout===void 0}}));if(requiredKeys.size>0){json2.required=Array.from(requiredKeys)}if(def.catchall?._zod.def.type==="never"){json2.additionalProperties=false}else if(!def.catchall){if(ctx.io==="output")json2.additionalProperties=false}else if(def.catchall){json2.additionalProperties=process2(def.catchall,ctx,{...params,path:[...params.path,"additionalProperties"]})}};unionProcessor=(schema,ctx,json2,params)=>{const def=schema._zod.def;const isExclusive=def.inclusive===false;const options=def.options.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,isExclusive?"oneOf":"anyOf",i]}));if(isExclusive){json2.oneOf=options}else{json2.anyOf=options}};intersectionProcessor=(schema,ctx,json2,params)=>{const def=schema._zod.def;const a=process2(def.left,ctx,{...params,path:[...params.path,"allOf",0]});const b=process2(def.right,ctx,{...params,path:[...params.path,"allOf",1]});const isSimpleIntersection=val=>"allOf"in val&&Object.keys(val).length===1;const allOf=[...isSimpleIntersection(a)?a.allOf:[a],...isSimpleIntersection(b)?b.allOf:[b]];json2.allOf=allOf};tupleProcessor=(schema,ctx,_json,params)=>{const json2=_json;const def=schema._zod.def;json2.type="array";const prefixPath=ctx.target==="draft-2020-12"?"prefixItems":"items";const restPath=ctx.target==="draft-2020-12"?"items":ctx.target==="openapi-3.0"?"items":"additionalItems";const prefixItems=def.items.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,prefixPath,i]}));const rest=def.rest?process2(def.rest,ctx,{...params,path:[...params.path,restPath,...ctx.target==="openapi-3.0"?[def.items.length]:[]]}):null;if(ctx.target==="draft-2020-12"){json2.prefixItems=prefixItems;if(rest){json2.items=rest}}else if(ctx.target==="openapi-3.0"){json2.items={anyOf:prefixItems};if(rest){json2.items.anyOf.push(rest)}json2.minItems=prefixItems.length;if(!rest){json2.maxItems=prefixItems.length}}else{json2.items=prefixItems;if(rest){json2.additionalItems=rest}}const{minimum,maximum}=schema._zod.bag;if(typeof minimum==="number")json2.minItems=minimum;if(typeof maximum==="number")json2.maxItems=maximum};recordProcessor=(schema,ctx,_json,params)=>{const json2=_json;const def=schema._zod.def;json2.type="object";const keyType=def.keyType;const keyBag=keyType._zod.bag;const patterns2=keyBag?.patterns;if(def.mode==="loose"&&patterns2&&patterns2.size>0){const valueSchema=process2(def.valueType,ctx,{...params,path:[...params.path,"patternProperties","*"]});json2.patternProperties={};for(const pattern of patterns2){json2.patternProperties[pattern.source]=valueSchema}}else{if(ctx.target==="draft-07"||ctx.target==="draft-2020-12"){json2.propertyNames=process2(def.keyType,ctx,{...params,path:[...params.path,"propertyNames"]})}json2.additionalProperties=process2(def.valueType,ctx,{...params,path:[...params.path,"additionalProperties"]})}const keyValues=keyType._zod.values;if(keyValues){const validKeyValues=[...keyValues].filter(v=>typeof v==="string"||typeof v==="number");if(validKeyValues.length>0){json2.required=validKeyValues}}};nullableProcessor=(schema,ctx,json2,params)=>{const def=schema._zod.def;const inner=process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);if(ctx.target==="openapi-3.0"){seen.ref=def.innerType;json2.nullable=true}else{json2.anyOf=[inner,{type:"null"}]}};nonoptionalProcessor=(schema,ctx,_json,params)=>{const def=schema._zod.def;process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=def.innerType};defaultProcessor=(schema,ctx,json2,params)=>{const def=schema._zod.def;process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=def.innerType;json2.default=JSON.parse(JSON.stringify(def.defaultValue))};prefaultProcessor=(schema,ctx,json2,params)=>{const def=schema._zod.def;process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=def.innerType;if(ctx.io==="input")json2._prefault=JSON.parse(JSON.stringify(def.defaultValue))};catchProcessor=(schema,ctx,json2,params)=>{const def=schema._zod.def;process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=def.innerType;let catchValue;try{catchValue=def.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}json2.default=catchValue};pipeProcessor=(schema,ctx,_json,params)=>{const def=schema._zod.def;const inIsTransform=def.in._zod.traits.has("$ZodTransform");const innerType=ctx.io==="input"?inIsTransform?def.out:def.in:def.out;process2(innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=innerType};readonlyProcessor=(schema,ctx,json2,params)=>{const def=schema._zod.def;process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=def.innerType;json2.readOnly=true};promiseProcessor=(schema,ctx,_json,params)=>{const def=schema._zod.def;process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=def.innerType};optionalProcessor=(schema,ctx,_json,params)=>{const def=schema._zod.def;process2(def.innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=def.innerType};lazyProcessor=(schema,ctx,_json,params)=>{const innerType=schema._zod.innerType;process2(innerType,ctx,params);const seen=ctx.seen.get(schema);seen.ref=innerType};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}}});var JSONSchemaGenerator;var init_json_schema_generator=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema-generator.js"(){init_json_schema_processors();init_to_json_schema();JSONSchemaGenerator=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(value){this.ctx.counter=value}get seen(){return this.ctx.seen}constructor(params){let normalizedTarget=params?.target??"draft-2020-12";if(normalizedTarget==="draft-4")normalizedTarget="draft-04";if(normalizedTarget==="draft-7")normalizedTarget="draft-07";this.ctx=initializeContext({processors:allProcessors,target:normalizedTarget,...params?.metadata&&{metadata:params.metadata},...params?.unrepresentable&&{unrepresentable:params.unrepresentable},...params?.override&&{override:params.override},...params?.io&&{io:params.io}})}process(schema,_params={path:[],schemaPath:[]}){return process2(schema,this.ctx,_params)}emit(schema,_params){if(_params){if(_params.cycles)this.ctx.cycles=_params.cycles;if(_params.reused)this.ctx.reused=_params.reused;if(_params.external)this.ctx.external=_params.external}extractDefs(this.ctx,schema);const result=finalize(this.ctx,schema);const{"~standard":_,...plainResult}=result;return plainResult}}}});var json_schema_exports={};var init_json_schema=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema.js"(){}});var core_exports2={};__export(core_exports2,{$ZodAny:()=>$ZodAny,$ZodArray:()=>$ZodArray,$ZodAsyncError:()=>$ZodAsyncError,$ZodBase64:()=>$ZodBase64,$ZodBase64URL:()=>$ZodBase64URL,$ZodBigInt:()=>$ZodBigInt,$ZodBigIntFormat:()=>$ZodBigIntFormat,$ZodBoolean:()=>$ZodBoolean,$ZodCIDRv4:()=>$ZodCIDRv4,$ZodCIDRv6:()=>$ZodCIDRv6,$ZodCUID:()=>$ZodCUID,$ZodCUID2:()=>$ZodCUID2,$ZodCatch:()=>$ZodCatch,$ZodCheck:()=>$ZodCheck,$ZodCheckBigIntFormat:()=>$ZodCheckBigIntFormat,$ZodCheckEndsWith:()=>$ZodCheckEndsWith,$ZodCheckGreaterThan:()=>$ZodCheckGreaterThan,$ZodCheckIncludes:()=>$ZodCheckIncludes,$ZodCheckLengthEquals:()=>$ZodCheckLengthEquals,$ZodCheckLessThan:()=>$ZodCheckLessThan,$ZodCheckLowerCase:()=>$ZodCheckLowerCase,$ZodCheckMaxLength:()=>$ZodCheckMaxLength,$ZodCheckMaxSize:()=>$ZodCheckMaxSize,$ZodCheckMimeType:()=>$ZodCheckMimeType,$ZodCheckMinLength:()=>$ZodCheckMinLength,$ZodCheckMinSize:()=>$ZodCheckMinSize,$ZodCheckMultipleOf:()=>$ZodCheckMultipleOf,$ZodCheckNumberFormat:()=>$ZodCheckNumberFormat,$ZodCheckOverwrite:()=>$ZodCheckOverwrite,$ZodCheckProperty:()=>$ZodCheckProperty,$ZodCheckRegex:()=>$ZodCheckRegex,$ZodCheckSizeEquals:()=>$ZodCheckSizeEquals,$ZodCheckStartsWith:()=>$ZodCheckStartsWith,$ZodCheckStringFormat:()=>$ZodCheckStringFormat,$ZodCheckUpperCase:()=>$ZodCheckUpperCase,$ZodCodec:()=>$ZodCodec,$ZodCustom:()=>$ZodCustom,$ZodCustomStringFormat:()=>$ZodCustomStringFormat,$ZodDate:()=>$ZodDate,$ZodDefault:()=>$ZodDefault,$ZodDiscriminatedUnion:()=>$ZodDiscriminatedUnion,$ZodE164:()=>$ZodE164,$ZodEmail:()=>$ZodEmail,$ZodEmoji:()=>$ZodEmoji,$ZodEncodeError:()=>$ZodEncodeError,$ZodEnum:()=>$ZodEnum,$ZodError:()=>$ZodError,$ZodExactOptional:()=>$ZodExactOptional,$ZodFile:()=>$ZodFile,$ZodFunction:()=>$ZodFunction,$ZodGUID:()=>$ZodGUID,$ZodIPv4:()=>$ZodIPv4,$ZodIPv6:()=>$ZodIPv6,$ZodISODate:()=>$ZodISODate,$ZodISODateTime:()=>$ZodISODateTime,$ZodISODuration:()=>$ZodISODuration,$ZodISOTime:()=>$ZodISOTime,$ZodIntersection:()=>$ZodIntersection,$ZodJWT:()=>$ZodJWT,$ZodKSUID:()=>$ZodKSUID,$ZodLazy:()=>$ZodLazy,$ZodLiteral:()=>$ZodLiteral,$ZodMAC:()=>$ZodMAC,$ZodMap:()=>$ZodMap,$ZodNaN:()=>$ZodNaN,$ZodNanoID:()=>$ZodNanoID,$ZodNever:()=>$ZodNever,$ZodNonOptional:()=>$ZodNonOptional,$ZodNull:()=>$ZodNull,$ZodNullable:()=>$ZodNullable,$ZodNumber:()=>$ZodNumber,$ZodNumberFormat:()=>$ZodNumberFormat,$ZodObject:()=>$ZodObject,$ZodObjectJIT:()=>$ZodObjectJIT,$ZodOptional:()=>$ZodOptional,$ZodPipe:()=>$ZodPipe,$ZodPrefault:()=>$ZodPrefault,$ZodPreprocess:()=>$ZodPreprocess,$ZodPromise:()=>$ZodPromise,$ZodReadonly:()=>$ZodReadonly,$ZodRealError:()=>$ZodRealError,$ZodRecord:()=>$ZodRecord,$ZodRegistry:()=>$ZodRegistry,$ZodSet:()=>$ZodSet,$ZodString:()=>$ZodString,$ZodStringFormat:()=>$ZodStringFormat,$ZodSuccess:()=>$ZodSuccess,$ZodSymbol:()=>$ZodSymbol,$ZodTemplateLiteral:()=>$ZodTemplateLiteral,$ZodTransform:()=>$ZodTransform,$ZodTuple:()=>$ZodTuple,$ZodType:()=>$ZodType,$ZodULID:()=>$ZodULID,$ZodURL:()=>$ZodURL,$ZodUUID:()=>$ZodUUID,$ZodUndefined:()=>$ZodUndefined,$ZodUnion:()=>$ZodUnion,$ZodUnknown:()=>$ZodUnknown,$ZodVoid:()=>$ZodVoid,$ZodXID:()=>$ZodXID,$ZodXor:()=>$ZodXor,$brand:()=>$brand,$constructor:()=>$constructor,$input:()=>$input,$output:()=>$output,Doc:()=>Doc,JSONSchema:()=>json_schema_exports,JSONSchemaGenerator:()=>JSONSchemaGenerator,NEVER:()=>NEVER,TimePrecision:()=>TimePrecision,_any:()=>_any,_array:()=>_array,_base64:()=>_base64,_base64url:()=>_base64url,_bigint:()=>_bigint,_boolean:()=>_boolean,_catch:()=>_catch,_check:()=>_check,_cidrv4:()=>_cidrv4,_cidrv6:()=>_cidrv6,_coercedBigint:()=>_coercedBigint,_coercedBoolean:()=>_coercedBoolean,_coercedDate:()=>_coercedDate,_coercedNumber:()=>_coercedNumber,_coercedString:()=>_coercedString,_cuid:()=>_cuid,_cuid2:()=>_cuid2,_custom:()=>_custom,_date:()=>_date,_decode:()=>_decode,_decodeAsync:()=>_decodeAsync,_default:()=>_default,_discriminatedUnion:()=>_discriminatedUnion,_e164:()=>_e164,_email:()=>_email,_emoji:()=>_emoji2,_encode:()=>_encode,_encodeAsync:()=>_encodeAsync,_endsWith:()=>_endsWith,_enum:()=>_enum,_file:()=>_file,_float32:()=>_float32,_float64:()=>_float64,_gt:()=>_gt,_gte:()=>_gte,_guid:()=>_guid,_includes:()=>_includes,_int:()=>_int,_int32:()=>_int32,_int64:()=>_int64,_intersection:()=>_intersection,_ipv4:()=>_ipv4,_ipv6:()=>_ipv6,_isoDate:()=>_isoDate,_isoDateTime:()=>_isoDateTime,_isoDuration:()=>_isoDuration,_isoTime:()=>_isoTime,_jwt:()=>_jwt,_ksuid:()=>_ksuid,_lazy:()=>_lazy,_length:()=>_length,_literal:()=>_literal,_lowercase:()=>_lowercase,_lt:()=>_lt,_lte:()=>_lte,_mac:()=>_mac,_map:()=>_map,_max:()=>_lte,_maxLength:()=>_maxLength,_maxSize:()=>_maxSize,_mime:()=>_mime,_min:()=>_gte,_minLength:()=>_minLength,_minSize:()=>_minSize,_multipleOf:()=>_multipleOf,_nan:()=>_nan,_nanoid:()=>_nanoid,_nativeEnum:()=>_nativeEnum,_negative:()=>_negative,_never:()=>_never,_nonnegative:()=>_nonnegative,_nonoptional:()=>_nonoptional,_nonpositive:()=>_nonpositive,_normalize:()=>_normalize,_null:()=>_null2,_nullable:()=>_nullable,_number:()=>_number,_optional:()=>_optional,_overwrite:()=>_overwrite,_parse:()=>_parse,_parseAsync:()=>_parseAsync,_pipe:()=>_pipe,_positive:()=>_positive,_promise:()=>_promise,_property:()=>_property,_readonly:()=>_readonly,_record:()=>_record,_refine:()=>_refine,_regex:()=>_regex,_safeDecode:()=>_safeDecode,_safeDecodeAsync:()=>_safeDecodeAsync,_safeEncode:()=>_safeEncode,_safeEncodeAsync:()=>_safeEncodeAsync,_safeParse:()=>_safeParse,_safeParseAsync:()=>_safeParseAsync,_set:()=>_set,_size:()=>_size,_slugify:()=>_slugify,_startsWith:()=>_startsWith,_string:()=>_string,_stringFormat:()=>_stringFormat,_stringbool:()=>_stringbool,_success:()=>_success,_superRefine:()=>_superRefine,_symbol:()=>_symbol,_templateLiteral:()=>_templateLiteral,_toLowerCase:()=>_toLowerCase,_toUpperCase:()=>_toUpperCase,_transform:()=>_transform,_trim:()=>_trim,_tuple:()=>_tuple,_uint32:()=>_uint32,_uint64:()=>_uint64,_ulid:()=>_ulid,_undefined:()=>_undefined2,_union:()=>_union,_unknown:()=>_unknown,_uppercase:()=>_uppercase,_url:()=>_url,_uuid:()=>_uuid,_uuidv4:()=>_uuidv4,_uuidv6:()=>_uuidv6,_uuidv7:()=>_uuidv7,_void:()=>_void,_xid:()=>_xid,_xor:()=>_xor,clone:()=>clone,config:()=>config,createStandardJSONSchemaMethod:()=>createStandardJSONSchemaMethod,createToJSONSchemaMethod:()=>createToJSONSchemaMethod,decode:()=>decode3,decodeAsync:()=>decodeAsync,describe:()=>describe,encode:()=>encode2,encodeAsync:()=>encodeAsync,extractDefs:()=>extractDefs,finalize:()=>finalize,flattenError:()=>flattenError,formatError:()=>formatError,globalConfig:()=>globalConfig,globalRegistry:()=>globalRegistry,initializeContext:()=>initializeContext,isValidBase64:()=>isValidBase64,isValidBase64URL:()=>isValidBase64URL,isValidJWT:()=>isValidJWT,locales:()=>locales_exports,meta:()=>meta,parse:()=>parse,parseAsync:()=>parseAsync,prettifyError:()=>prettifyError,process:()=>process2,regexes:()=>regexes_exports,registry:()=>registry3,safeDecode:()=>safeDecode,safeDecodeAsync:()=>safeDecodeAsync,safeEncode:()=>safeEncode,safeEncodeAsync:()=>safeEncodeAsync,safeParse:()=>safeParse,safeParseAsync:()=>safeParseAsync,toDotPath:()=>toDotPath,toJSONSchema:()=>toJSONSchema,treeifyError:()=>treeifyError,util:()=>util_exports,version:()=>version});var init_core2=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/index.js"(){init_core();init_parse();init_errors();init_schemas();init_checks();init_versions();init_util();init_regexes();init_locales();init_registries();init_doc();init_api();init_to_json_schema();init_json_schema_processors();init_json_schema_generator();init_json_schema()}});var checks_exports2={};__export(checks_exports2,{endsWith:()=>_endsWith,gt:()=>_gt,gte:()=>_gte,includes:()=>_includes,length:()=>_length,lowercase:()=>_lowercase,lt:()=>_lt,lte:()=>_lte,maxLength:()=>_maxLength,maxSize:()=>_maxSize,mime:()=>_mime,minLength:()=>_minLength,minSize:()=>_minSize,multipleOf:()=>_multipleOf,negative:()=>_negative,nonnegative:()=>_nonnegative,nonpositive:()=>_nonpositive,normalize:()=>_normalize,overwrite:()=>_overwrite,positive:()=>_positive,property:()=>_property,regex:()=>_regex,size:()=>_size,slugify:()=>_slugify,startsWith:()=>_startsWith,toLowerCase:()=>_toLowerCase,toUpperCase:()=>_toUpperCase,trim:()=>_trim,uppercase:()=>_uppercase});var init_checks2=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/checks.js"(){init_core2()}});var iso_exports={};__export(iso_exports,{ZodISODate:()=>ZodISODate,ZodISODateTime:()=>ZodISODateTime,ZodISODuration:()=>ZodISODuration,ZodISOTime:()=>ZodISOTime,date:()=>date2,datetime:()=>datetime2,duration:()=>duration2,time:()=>time2});function datetime2(params){return _isoDateTime(ZodISODateTime,params)}function date2(params){return _isoDate(ZodISODate,params)}function time2(params){return _isoTime(ZodISOTime,params)}function duration2(params){return _isoDuration(ZodISODuration,params)}var ZodISODateTime,ZodISODate,ZodISOTime,ZodISODuration;var init_iso=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/iso.js"(){init_core2();init_schemas2();ZodISODateTime=$constructor("ZodISODateTime",(inst,def)=>{$ZodISODateTime.init(inst,def);ZodStringFormat.init(inst,def)});ZodISODate=$constructor("ZodISODate",(inst,def)=>{$ZodISODate.init(inst,def);ZodStringFormat.init(inst,def)});ZodISOTime=$constructor("ZodISOTime",(inst,def)=>{$ZodISOTime.init(inst,def);ZodStringFormat.init(inst,def)});ZodISODuration=$constructor("ZodISODuration",(inst,def)=>{$ZodISODuration.init(inst,def);ZodStringFormat.init(inst,def)})}});var initializer2,ZodError,ZodRealError;var init_errors2=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/errors.js"(){init_core2();init_core2();init_util();initializer2=(inst,issues)=>{$ZodError.init(inst,issues);inst.name="ZodError";Object.defineProperties(inst,{format:{value:mapper=>formatError(inst,mapper)},flatten:{value:mapper=>flattenError(inst,mapper)},addIssue:{value:issue2=>{inst.issues.push(issue2);inst.message=JSON.stringify(inst.issues,jsonStringifyReplacer,2)}},addIssues:{value:issues2=>{inst.issues.push(...issues2);inst.message=JSON.stringify(inst.issues,jsonStringifyReplacer,2)}},isEmpty:{get(){return inst.issues.length===0}}})};ZodError=$constructor("ZodError",initializer2);ZodRealError=$constructor("ZodError",initializer2,{Parent:Error})}});var parse2,parseAsync2,safeParse2,safeParseAsync2,encode3,decode4,encodeAsync2,decodeAsync2,safeEncode2,safeDecode2,safeEncodeAsync2,safeDecodeAsync2;var init_parse2=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/parse.js"(){init_core2();init_errors2();parse2=_parse(ZodRealError);parseAsync2=_parseAsync(ZodRealError);safeParse2=_safeParse(ZodRealError);safeParseAsync2=_safeParseAsync(ZodRealError);encode3=_encode(ZodRealError);decode4=_decode(ZodRealError);encodeAsync2=_encodeAsync(ZodRealError);decodeAsync2=_decodeAsync(ZodRealError);safeEncode2=_safeEncode(ZodRealError);safeDecode2=_safeDecode(ZodRealError);safeEncodeAsync2=_safeEncodeAsync(ZodRealError);safeDecodeAsync2=_safeDecodeAsync(ZodRealError)}});var schemas_exports2={};__export(schemas_exports2,{ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBase64:()=>ZodBase64,ZodBase64URL:()=>ZodBase64URL,ZodBigInt:()=>ZodBigInt,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBoolean:()=>ZodBoolean,ZodCIDRv4:()=>ZodCIDRv4,ZodCIDRv6:()=>ZodCIDRv6,ZodCUID:()=>ZodCUID,ZodCUID2:()=>ZodCUID2,ZodCatch:()=>ZodCatch,ZodCodec:()=>ZodCodec,ZodCustom:()=>ZodCustom,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodE164:()=>ZodE164,ZodEmail:()=>ZodEmail,ZodEmoji:()=>ZodEmoji,ZodEnum:()=>ZodEnum,ZodExactOptional:()=>ZodExactOptional,ZodFile:()=>ZodFile,ZodFunction:()=>ZodFunction,ZodGUID:()=>ZodGUID,ZodIPv4:()=>ZodIPv4,ZodIPv6:()=>ZodIPv6,ZodIntersection:()=>ZodIntersection,ZodJWT:()=>ZodJWT,ZodKSUID:()=>ZodKSUID,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMAC:()=>ZodMAC,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNanoID:()=>ZodNanoID,ZodNever:()=>ZodNever,ZodNonOptional:()=>ZodNonOptional,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodNumberFormat:()=>ZodNumberFormat,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodPipe:()=>ZodPipe,ZodPrefault:()=>ZodPrefault,ZodPreprocess:()=>ZodPreprocess,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRecord:()=>ZodRecord,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodStringFormat:()=>ZodStringFormat,ZodSuccess:()=>ZodSuccess,ZodSymbol:()=>ZodSymbol,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodTransform:()=>ZodTransform,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodULID:()=>ZodULID,ZodURL:()=>ZodURL,ZodUUID:()=>ZodUUID,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,ZodXID:()=>ZodXID,ZodXor:()=>ZodXor,_ZodString:()=>_ZodString,_default:()=>_default2,_function:()=>_function,any:()=>any,array:()=>array,base64:()=>base642,base64url:()=>base64url3,bigint:()=>bigint2,boolean:()=>boolean2,catch:()=>_catch2,check:()=>check,cidrv4:()=>cidrv42,cidrv6:()=>cidrv62,codec:()=>codec,cuid:()=>cuid3,cuid2:()=>cuid22,custom:()=>custom,date:()=>date3,describe:()=>describe2,discriminatedUnion:()=>discriminatedUnion,e164:()=>e1642,email:()=>email2,emoji:()=>emoji2,enum:()=>_enum2,exactOptional:()=>exactOptional,file:()=>file,float32:()=>float32,float64:()=>float64,function:()=>_function,guid:()=>guid2,hash:()=>hash,hex:()=>hex2,hostname:()=>hostname3,httpUrl:()=>httpUrl,instanceof:()=>_instanceof,int:()=>int,int32:()=>int32,int64:()=>int64,intersection:()=>intersection,invertCodec:()=>invertCodec,ipv4:()=>ipv42,ipv6:()=>ipv62,json:()=>json,jwt:()=>jwt,keyof:()=>keyof,ksuid:()=>ksuid2,lazy:()=>lazy,literal:()=>literal,looseObject:()=>looseObject,looseRecord:()=>looseRecord,mac:()=>mac2,map:()=>map,meta:()=>meta2,nan:()=>nan,nanoid:()=>nanoid2,nativeEnum:()=>nativeEnum,never:()=>never,nonoptional:()=>nonoptional,null:()=>_null3,nullable:()=>nullable,nullish:()=>nullish2,number:()=>number2,object:()=>object,optional:()=>optional,partialRecord:()=>partialRecord,pipe:()=>pipe,prefault:()=>prefault,preprocess:()=>preprocess,promise:()=>promise,readonly:()=>readonly,record:()=>record,refine:()=>refine,set:()=>set2,strictObject:()=>strictObject,string:()=>string2,stringFormat:()=>stringFormat,stringbool:()=>stringbool,success:()=>success,superRefine:()=>superRefine,symbol:()=>symbol,templateLiteral:()=>templateLiteral,transform:()=>transform,tuple:()=>tuple,uint32:()=>uint32,uint64:()=>uint64,ulid:()=>ulid2,undefined:()=>_undefined3,union:()=>union2,unknown:()=>unknown,url:()=>url,uuid:()=>uuid2,uuidv4:()=>uuidv4,uuidv6:()=>uuidv6,uuidv7:()=>uuidv7,void:()=>_void2,xid:()=>xid2,xor:()=>xor});function _installLazyMethods(inst,group,methods){const proto=Object.getPrototypeOf(inst);let installed=_installedGroups.get(proto);if(!installed){installed=new Set;_installedGroups.set(proto,installed)}if(installed.has(group))return;installed.add(group);for(const key in methods){const fn=methods[key];Object.defineProperty(proto,key,{configurable:true,enumerable:false,get(){const bound=fn.bind(this);Object.defineProperty(this,key,{configurable:true,writable:true,enumerable:true,value:bound});return bound},set(v){Object.defineProperty(this,key,{configurable:true,writable:true,enumerable:true,value:v})}})}}function string2(params){return _string(ZodString,params)}function email2(params){return _email(ZodEmail,params)}function guid2(params){return _guid(ZodGUID,params)}function uuid2(params){return _uuid(ZodUUID,params)}function uuidv4(params){return _uuidv4(ZodUUID,params)}function uuidv6(params){return _uuidv6(ZodUUID,params)}function uuidv7(params){return _uuidv7(ZodUUID,params)}function url(params){return _url(ZodURL,params)}function httpUrl(params){return _url(ZodURL,{protocol:regexes_exports.httpProtocol,hostname:regexes_exports.domain,...util_exports.normalizeParams(params)})}function emoji2(params){return _emoji2(ZodEmoji,params)}function nanoid2(params){return _nanoid(ZodNanoID,params)}function cuid3(params){return _cuid(ZodCUID,params)}function cuid22(params){return _cuid2(ZodCUID2,params)}function ulid2(params){return _ulid(ZodULID,params)}function xid2(params){return _xid(ZodXID,params)}function ksuid2(params){return _ksuid(ZodKSUID,params)}function ipv42(params){return _ipv4(ZodIPv4,params)}function mac2(params){return _mac(ZodMAC,params)}function ipv62(params){return _ipv6(ZodIPv6,params)}function cidrv42(params){return _cidrv4(ZodCIDRv4,params)}function cidrv62(params){return _cidrv6(ZodCIDRv6,params)}function base642(params){return _base64(ZodBase64,params)}function base64url3(params){return _base64url(ZodBase64URL,params)}function e1642(params){return _e164(ZodE164,params)}function jwt(params){return _jwt(ZodJWT,params)}function stringFormat(format,fnOrRegex,_params={}){return _stringFormat(ZodCustomStringFormat,format,fnOrRegex,_params)}function hostname3(_params){return _stringFormat(ZodCustomStringFormat,"hostname",regexes_exports.hostname,_params)}function hex2(_params){return _stringFormat(ZodCustomStringFormat,"hex",regexes_exports.hex,_params)}function hash(alg,params){const enc7=params?.enc??"hex";const format=`${alg}_${enc7}`;const regex=regexes_exports[format];if(!regex)throw new Error(`Unrecognized hash format: ${format}`);return _stringFormat(ZodCustomStringFormat,format,regex,params)}function number2(params){return _number(ZodNumber,params)}function int(params){return _int(ZodNumberFormat,params)}function float32(params){return _float32(ZodNumberFormat,params)}function float64(params){return _float64(ZodNumberFormat,params)}function int32(params){return _int32(ZodNumberFormat,params)}function uint32(params){return _uint32(ZodNumberFormat,params)}function boolean2(params){return _boolean(ZodBoolean,params)}function bigint2(params){return _bigint(ZodBigInt,params)}function int64(params){return _int64(ZodBigIntFormat,params)}function uint64(params){return _uint64(ZodBigIntFormat,params)}function symbol(params){return _symbol(ZodSymbol,params)}function _undefined3(params){return _undefined2(ZodUndefined,params)}function _null3(params){return _null2(ZodNull,params)}function any(){return _any(ZodAny)}function unknown(){return _unknown(ZodUnknown)}function never(params){return _never(ZodNever,params)}function _void2(params){return _void(ZodVoid,params)}function date3(params){return _date(ZodDate,params)}function array(element,params){return _array(ZodArray,element,params)}function keyof(schema){const shape=schema._zod.def.shape;return _enum2(Object.keys(shape))}function object(shape,params){const def={type:"object",shape:shape??{},...util_exports.normalizeParams(params)};return new ZodObject(def)}function strictObject(shape,params){return new ZodObject({type:"object",shape,catchall:never(),...util_exports.normalizeParams(params)})}function looseObject(shape,params){return new ZodObject({type:"object",shape,catchall:unknown(),...util_exports.normalizeParams(params)})}function union2(options,params){return new ZodUnion({type:"union",options,...util_exports.normalizeParams(params)})}function xor(options,params){return new ZodXor({type:"union",options,inclusive:false,...util_exports.normalizeParams(params)})}function discriminatedUnion(discriminator,options,params){return new ZodDiscriminatedUnion({type:"union",options,discriminator,...util_exports.normalizeParams(params)})}function intersection(left,right){return new ZodIntersection({type:"intersection",left,right})}function tuple(items,_paramsOrRest,_params){const hasRest=_paramsOrRest instanceof $ZodType;const params=hasRest?_params:_paramsOrRest;const rest=hasRest?_paramsOrRest:null;return new ZodTuple({type:"tuple",items,rest,...util_exports.normalizeParams(params)})}function record(keyType,valueType,params){if(!valueType||!valueType._zod){return new ZodRecord({type:"record",keyType:string2(),valueType:keyType,...util_exports.normalizeParams(valueType)})}return new ZodRecord({type:"record",keyType,valueType,...util_exports.normalizeParams(params)})}function partialRecord(keyType,valueType,params){const k=clone(keyType);k._zod.values=void 0;return new ZodRecord({type:"record",keyType:k,valueType,...util_exports.normalizeParams(params)})}function looseRecord(keyType,valueType,params){return new ZodRecord({type:"record",keyType,valueType,mode:"loose",...util_exports.normalizeParams(params)})}function map(keyType,valueType,params){return new ZodMap({type:"map",keyType,valueType,...util_exports.normalizeParams(params)})}function set2(valueType,params){return new ZodSet({type:"set",valueType,...util_exports.normalizeParams(params)})}function _enum2(values,params){const entries=Array.isArray(values)?Object.fromEntries(values.map(v=>[v,v])):values;return new ZodEnum({type:"enum",entries,...util_exports.normalizeParams(params)})}function nativeEnum(entries,params){return new ZodEnum({type:"enum",entries,...util_exports.normalizeParams(params)})}function literal(value,params){return new ZodLiteral({type:"literal",values:Array.isArray(value)?value:[value],...util_exports.normalizeParams(params)})}function file(params){return _file(ZodFile,params)}function transform(fn){return new ZodTransform({type:"transform",transform:fn})}function optional(innerType){return new ZodOptional({type:"optional",innerType})}function exactOptional(innerType){return new ZodExactOptional({type:"optional",innerType})}function nullable(innerType){return new ZodNullable({type:"nullable",innerType})}function nullish2(innerType){return optional(nullable(innerType))}function _default2(innerType,defaultValue){return new ZodDefault({type:"default",innerType,get defaultValue(){return typeof defaultValue==="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}function prefault(innerType,defaultValue){return new ZodPrefault({type:"prefault",innerType,get defaultValue(){return typeof defaultValue==="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}function nonoptional(innerType,params){return new ZodNonOptional({type:"nonoptional",innerType,...util_exports.normalizeParams(params)})}function success(innerType){return new ZodSuccess({type:"success",innerType})}function _catch2(innerType,catchValue){return new ZodCatch({type:"catch",innerType,catchValue:typeof catchValue==="function"?catchValue:()=>catchValue})}function nan(params){return _nan(ZodNaN,params)}function pipe(in_,out){return new ZodPipe({type:"pipe",in:in_,out})}function codec(in_,out,params){return new ZodCodec({type:"pipe",in:in_,out,transform:params.decode,reverseTransform:params.encode})}function invertCodec(codec2){const def=codec2._zod.def;return new ZodCodec({type:"pipe",in:def.out,out:def.in,transform:def.reverseTransform,reverseTransform:def.transform})}function readonly(innerType){return new ZodReadonly({type:"readonly",innerType})}function templateLiteral(parts,params){return new ZodTemplateLiteral({type:"template_literal",parts,...util_exports.normalizeParams(params)})}function lazy(getter){return new ZodLazy({type:"lazy",getter})}function promise(innerType){return new ZodPromise({type:"promise",innerType})}function _function(params){return new ZodFunction({type:"function",input:Array.isArray(params?.input)?tuple(params?.input):params?.input??array(unknown()),output:params?.output??unknown()})}function check(fn){const ch=new $ZodCheck({check:"custom"});ch._zod.check=fn;return ch}function custom(fn,_params){return _custom(ZodCustom,fn??(()=>true),_params)}function refine(fn,_params={}){return _refine(ZodCustom,fn,_params)}function superRefine(fn,params){return _superRefine(fn,params)}function _instanceof(cls,params={}){const inst=new ZodCustom({type:"custom",check:"custom",fn:data=>data instanceof cls,abort:true,...util_exports.normalizeParams(params)});inst._zod.bag.Class=cls;inst._zod.check=payload=>{if(!(payload.value instanceof cls)){payload.issues.push({code:"invalid_type",expected:cls.name,input:payload.value,inst,path:[...inst._zod.def.path??[]]})}};return inst}function json(params){const jsonSchema=lazy(()=>{return union2([string2(params),number2(),boolean2(),_null3(),array(jsonSchema),record(string2(),jsonSchema)])});return jsonSchema}function preprocess(fn,schema){return new ZodPreprocess({type:"pipe",in:transform(fn),out:schema})}var _installedGroups,ZodType,_ZodString,ZodString,ZodStringFormat,ZodEmail,ZodGUID,ZodUUID,ZodURL,ZodEmoji,ZodNanoID,ZodCUID,ZodCUID2,ZodULID,ZodXID,ZodKSUID,ZodIPv4,ZodMAC,ZodIPv6,ZodCIDRv4,ZodCIDRv6,ZodBase64,ZodBase64URL,ZodE164,ZodJWT,ZodCustomStringFormat,ZodNumber,ZodNumberFormat,ZodBoolean,ZodBigInt,ZodBigIntFormat,ZodSymbol,ZodUndefined,ZodNull,ZodAny,ZodUnknown,ZodNever,ZodVoid,ZodDate,ZodArray,ZodObject,ZodUnion,ZodXor,ZodDiscriminatedUnion,ZodIntersection,ZodTuple,ZodRecord,ZodMap,ZodSet,ZodEnum,ZodLiteral,ZodFile,ZodTransform,ZodOptional,ZodExactOptional,ZodNullable,ZodDefault,ZodPrefault,ZodNonOptional,ZodSuccess,ZodCatch,ZodNaN,ZodPipe,ZodCodec,ZodPreprocess,ZodReadonly,ZodTemplateLiteral,ZodLazy,ZodPromise,ZodFunction,ZodCustom,describe2,meta2,stringbool;var init_schemas2=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/schemas.js"(){init_core2();init_core2();init_json_schema_processors();init_to_json_schema();init_checks2();init_iso();init_parse2();_installedGroups=new WeakMap;ZodType=$constructor("ZodType",(inst,def)=>{$ZodType.init(inst,def);Object.assign(inst["~standard"],{jsonSchema:{input:createStandardJSONSchemaMethod(inst,"input"),output:createStandardJSONSchemaMethod(inst,"output")}});inst.toJSONSchema=createToJSONSchemaMethod(inst,{});inst.def=def;inst.type=def.type;Object.defineProperty(inst,"_def",{value:def});inst.parse=(data,params)=>parse2(inst,data,params,{callee:inst.parse});inst.safeParse=(data,params)=>safeParse2(inst,data,params);inst.parseAsync=async(data,params)=>parseAsync2(inst,data,params,{callee:inst.parseAsync});inst.safeParseAsync=async(data,params)=>safeParseAsync2(inst,data,params);inst.spa=inst.safeParseAsync;inst.encode=(data,params)=>encode3(inst,data,params);inst.decode=(data,params)=>decode4(inst,data,params);inst.encodeAsync=async(data,params)=>encodeAsync2(inst,data,params);inst.decodeAsync=async(data,params)=>decodeAsync2(inst,data,params);inst.safeEncode=(data,params)=>safeEncode2(inst,data,params);inst.safeDecode=(data,params)=>safeDecode2(inst,data,params);inst.safeEncodeAsync=async(data,params)=>safeEncodeAsync2(inst,data,params);inst.safeDecodeAsync=async(data,params)=>safeDecodeAsync2(inst,data,params);_installLazyMethods(inst,"ZodType",{check(...chks){const def2=this.def;return this.clone(util_exports.mergeDefs(def2,{checks:[...def2.checks??[],...chks.map(ch=>typeof ch==="function"?{_zod:{check:ch,def:{check:"custom"},onattach:[]}}:ch)]}),{parent:true})},with(...chks){return this.check(...chks)},clone(def2,params){return clone(this,def2,params)},brand(){return this},register(reg,meta3){reg.add(this,meta3);return this},refine(check2,params){return this.check(refine(check2,params))},superRefine(refinement,params){return this.check(superRefine(refinement,params))},overwrite(fn){return this.check(_overwrite(fn))},optional(){return optional(this)},exactOptional(){return exactOptional(this)},nullable(){return nullable(this)},nullish(){return optional(nullable(this))},nonoptional(params){return nonoptional(this,params)},array(){return array(this)},or(arg){return union2([this,arg])},and(arg){return intersection(this,arg)},transform(tx){return pipe(this,transform(tx))},default(d){return _default2(this,d)},prefault(d){return prefault(this,d)},catch(params){return _catch2(this,params)},pipe(target2){return pipe(this,target2)},readonly(){return readonly(this)},describe(description){const cl=this.clone();globalRegistry.add(cl,{description});return cl},meta(...args){if(args.length===0)return globalRegistry.get(this);const cl=this.clone();globalRegistry.add(cl,args[0]);return cl},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(fn){return fn(this)}});Object.defineProperty(inst,"description",{get(){return globalRegistry.get(inst)?.description},configurable:true});return inst});_ZodString=$constructor("_ZodString",(inst,def)=>{$ZodString.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>stringProcessor(inst,ctx,json2,params);const bag=inst._zod.bag;inst.format=bag.format??null;inst.minLength=bag.minimum??null;inst.maxLength=bag.maximum??null;_installLazyMethods(inst,"_ZodString",{regex(...args){return this.check(_regex(...args))},includes(...args){return this.check(_includes(...args))},startsWith(...args){return this.check(_startsWith(...args))},endsWith(...args){return this.check(_endsWith(...args))},min(...args){return this.check(_minLength(...args))},max(...args){return this.check(_maxLength(...args))},length(...args){return this.check(_length(...args))},nonempty(...args){return this.check(_minLength(1,...args))},lowercase(params){return this.check(_lowercase(params))},uppercase(params){return this.check(_uppercase(params))},trim(){return this.check(_trim())},normalize(...args){return this.check(_normalize(...args))},toLowerCase(){return this.check(_toLowerCase())},toUpperCase(){return this.check(_toUpperCase())},slugify(){return this.check(_slugify())}})});ZodString=$constructor("ZodString",(inst,def)=>{$ZodString.init(inst,def);_ZodString.init(inst,def);inst.email=params=>inst.check(_email(ZodEmail,params));inst.url=params=>inst.check(_url(ZodURL,params));inst.jwt=params=>inst.check(_jwt(ZodJWT,params));inst.emoji=params=>inst.check(_emoji2(ZodEmoji,params));inst.guid=params=>inst.check(_guid(ZodGUID,params));inst.uuid=params=>inst.check(_uuid(ZodUUID,params));inst.uuidv4=params=>inst.check(_uuidv4(ZodUUID,params));inst.uuidv6=params=>inst.check(_uuidv6(ZodUUID,params));inst.uuidv7=params=>inst.check(_uuidv7(ZodUUID,params));inst.nanoid=params=>inst.check(_nanoid(ZodNanoID,params));inst.guid=params=>inst.check(_guid(ZodGUID,params));inst.cuid=params=>inst.check(_cuid(ZodCUID,params));inst.cuid2=params=>inst.check(_cuid2(ZodCUID2,params));inst.ulid=params=>inst.check(_ulid(ZodULID,params));inst.base64=params=>inst.check(_base64(ZodBase64,params));inst.base64url=params=>inst.check(_base64url(ZodBase64URL,params));inst.xid=params=>inst.check(_xid(ZodXID,params));inst.ksuid=params=>inst.check(_ksuid(ZodKSUID,params));inst.ipv4=params=>inst.check(_ipv4(ZodIPv4,params));inst.ipv6=params=>inst.check(_ipv6(ZodIPv6,params));inst.cidrv4=params=>inst.check(_cidrv4(ZodCIDRv4,params));inst.cidrv6=params=>inst.check(_cidrv6(ZodCIDRv6,params));inst.e164=params=>inst.check(_e164(ZodE164,params));inst.datetime=params=>inst.check(datetime2(params));inst.date=params=>inst.check(date2(params));inst.time=params=>inst.check(time2(params));inst.duration=params=>inst.check(duration2(params))});ZodStringFormat=$constructor("ZodStringFormat",(inst,def)=>{$ZodStringFormat.init(inst,def);_ZodString.init(inst,def)});ZodEmail=$constructor("ZodEmail",(inst,def)=>{$ZodEmail.init(inst,def);ZodStringFormat.init(inst,def)});ZodGUID=$constructor("ZodGUID",(inst,def)=>{$ZodGUID.init(inst,def);ZodStringFormat.init(inst,def)});ZodUUID=$constructor("ZodUUID",(inst,def)=>{$ZodUUID.init(inst,def);ZodStringFormat.init(inst,def)});ZodURL=$constructor("ZodURL",(inst,def)=>{$ZodURL.init(inst,def);ZodStringFormat.init(inst,def)});ZodEmoji=$constructor("ZodEmoji",(inst,def)=>{$ZodEmoji.init(inst,def);ZodStringFormat.init(inst,def)});ZodNanoID=$constructor("ZodNanoID",(inst,def)=>{$ZodNanoID.init(inst,def);ZodStringFormat.init(inst,def)});ZodCUID=$constructor("ZodCUID",(inst,def)=>{$ZodCUID.init(inst,def);ZodStringFormat.init(inst,def)});ZodCUID2=$constructor("ZodCUID2",(inst,def)=>{$ZodCUID2.init(inst,def);ZodStringFormat.init(inst,def)});ZodULID=$constructor("ZodULID",(inst,def)=>{$ZodULID.init(inst,def);ZodStringFormat.init(inst,def)});ZodXID=$constructor("ZodXID",(inst,def)=>{$ZodXID.init(inst,def);ZodStringFormat.init(inst,def)});ZodKSUID=$constructor("ZodKSUID",(inst,def)=>{$ZodKSUID.init(inst,def);ZodStringFormat.init(inst,def)});ZodIPv4=$constructor("ZodIPv4",(inst,def)=>{$ZodIPv4.init(inst,def);ZodStringFormat.init(inst,def)});ZodMAC=$constructor("ZodMAC",(inst,def)=>{$ZodMAC.init(inst,def);ZodStringFormat.init(inst,def)});ZodIPv6=$constructor("ZodIPv6",(inst,def)=>{$ZodIPv6.init(inst,def);ZodStringFormat.init(inst,def)});ZodCIDRv4=$constructor("ZodCIDRv4",(inst,def)=>{$ZodCIDRv4.init(inst,def);ZodStringFormat.init(inst,def)});ZodCIDRv6=$constructor("ZodCIDRv6",(inst,def)=>{$ZodCIDRv6.init(inst,def);ZodStringFormat.init(inst,def)});ZodBase64=$constructor("ZodBase64",(inst,def)=>{$ZodBase64.init(inst,def);ZodStringFormat.init(inst,def)});ZodBase64URL=$constructor("ZodBase64URL",(inst,def)=>{$ZodBase64URL.init(inst,def);ZodStringFormat.init(inst,def)});ZodE164=$constructor("ZodE164",(inst,def)=>{$ZodE164.init(inst,def);ZodStringFormat.init(inst,def)});ZodJWT=$constructor("ZodJWT",(inst,def)=>{$ZodJWT.init(inst,def);ZodStringFormat.init(inst,def)});ZodCustomStringFormat=$constructor("ZodCustomStringFormat",(inst,def)=>{$ZodCustomStringFormat.init(inst,def);ZodStringFormat.init(inst,def)});ZodNumber=$constructor("ZodNumber",(inst,def)=>{$ZodNumber.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>numberProcessor(inst,ctx,json2,params);_installLazyMethods(inst,"ZodNumber",{gt(value,params){return this.check(_gt(value,params))},gte(value,params){return this.check(_gte(value,params))},min(value,params){return this.check(_gte(value,params))},lt(value,params){return this.check(_lt(value,params))},lte(value,params){return this.check(_lte(value,params))},max(value,params){return this.check(_lte(value,params))},int(params){return this.check(int(params))},safe(params){return this.check(int(params))},positive(params){return this.check(_gt(0,params))},nonnegative(params){return this.check(_gte(0,params))},negative(params){return this.check(_lt(0,params))},nonpositive(params){return this.check(_lte(0,params))},multipleOf(value,params){return this.check(_multipleOf(value,params))},step(value,params){return this.check(_multipleOf(value,params))},finite(){return this}});const bag=inst._zod.bag;inst.minValue=Math.max(bag.minimum??Number.NEGATIVE_INFINITY,bag.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null;inst.maxValue=Math.min(bag.maximum??Number.POSITIVE_INFINITY,bag.exclusiveMaximum??Number.POSITIVE_INFINITY)??null;inst.isInt=(bag.format??"").includes("int")||Number.isSafeInteger(bag.multipleOf??.5);inst.isFinite=true;inst.format=bag.format??null});ZodNumberFormat=$constructor("ZodNumberFormat",(inst,def)=>{$ZodNumberFormat.init(inst,def);ZodNumber.init(inst,def)});ZodBoolean=$constructor("ZodBoolean",(inst,def)=>{$ZodBoolean.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>booleanProcessor(inst,ctx,json2,params)});ZodBigInt=$constructor("ZodBigInt",(inst,def)=>{$ZodBigInt.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>bigintProcessor(inst,ctx,json2,params);inst.gte=(value,params)=>inst.check(_gte(value,params));inst.min=(value,params)=>inst.check(_gte(value,params));inst.gt=(value,params)=>inst.check(_gt(value,params));inst.gte=(value,params)=>inst.check(_gte(value,params));inst.min=(value,params)=>inst.check(_gte(value,params));inst.lt=(value,params)=>inst.check(_lt(value,params));inst.lte=(value,params)=>inst.check(_lte(value,params));inst.max=(value,params)=>inst.check(_lte(value,params));inst.positive=params=>inst.check(_gt(BigInt(0),params));inst.negative=params=>inst.check(_lt(BigInt(0),params));inst.nonpositive=params=>inst.check(_lte(BigInt(0),params));inst.nonnegative=params=>inst.check(_gte(BigInt(0),params));inst.multipleOf=(value,params)=>inst.check(_multipleOf(value,params));const bag=inst._zod.bag;inst.minValue=bag.minimum??null;inst.maxValue=bag.maximum??null;inst.format=bag.format??null});ZodBigIntFormat=$constructor("ZodBigIntFormat",(inst,def)=>{$ZodBigIntFormat.init(inst,def);ZodBigInt.init(inst,def)});ZodSymbol=$constructor("ZodSymbol",(inst,def)=>{$ZodSymbol.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>symbolProcessor(inst,ctx,json2,params)});ZodUndefined=$constructor("ZodUndefined",(inst,def)=>{$ZodUndefined.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>undefinedProcessor(inst,ctx,json2,params)});ZodNull=$constructor("ZodNull",(inst,def)=>{$ZodNull.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>nullProcessor(inst,ctx,json2,params)});ZodAny=$constructor("ZodAny",(inst,def)=>{$ZodAny.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>anyProcessor(inst,ctx,json2,params)});ZodUnknown=$constructor("ZodUnknown",(inst,def)=>{$ZodUnknown.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>unknownProcessor(inst,ctx,json2,params)});ZodNever=$constructor("ZodNever",(inst,def)=>{$ZodNever.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>neverProcessor(inst,ctx,json2,params)});ZodVoid=$constructor("ZodVoid",(inst,def)=>{$ZodVoid.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>voidProcessor(inst,ctx,json2,params)});ZodDate=$constructor("ZodDate",(inst,def)=>{$ZodDate.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>dateProcessor(inst,ctx,json2,params);inst.min=(value,params)=>inst.check(_gte(value,params));inst.max=(value,params)=>inst.check(_lte(value,params));const c=inst._zod.bag;inst.minDate=c.minimum?new Date(c.minimum):null;inst.maxDate=c.maximum?new Date(c.maximum):null});ZodArray=$constructor("ZodArray",(inst,def)=>{$ZodArray.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>arrayProcessor(inst,ctx,json2,params);inst.element=def.element;_installLazyMethods(inst,"ZodArray",{min(n,params){return this.check(_minLength(n,params))},nonempty(params){return this.check(_minLength(1,params))},max(n,params){return this.check(_maxLength(n,params))},length(n,params){return this.check(_length(n,params))},unwrap(){return this.element}})});ZodObject=$constructor("ZodObject",(inst,def)=>{$ZodObjectJIT.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>objectProcessor(inst,ctx,json2,params);util_exports.defineLazy(inst,"shape",()=>{return def.shape});_installLazyMethods(inst,"ZodObject",{keyof(){return _enum2(Object.keys(this._zod.def.shape))},catchall(catchall){return this.clone({...this._zod.def,catchall})},passthrough(){return this.clone({...this._zod.def,catchall:unknown()})},loose(){return this.clone({...this._zod.def,catchall:unknown()})},strict(){return this.clone({...this._zod.def,catchall:never()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(incoming){return util_exports.extend(this,incoming)},safeExtend(incoming){return util_exports.safeExtend(this,incoming)},merge(other){return util_exports.merge(this,other)},pick(mask){return util_exports.pick(this,mask)},omit(mask){return util_exports.omit(this,mask)},partial(...args){return util_exports.partial(ZodOptional,this,args[0])},required(...args){return util_exports.required(ZodNonOptional,this,args[0])}})});ZodUnion=$constructor("ZodUnion",(inst,def)=>{$ZodUnion.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>unionProcessor(inst,ctx,json2,params);inst.options=def.options});ZodXor=$constructor("ZodXor",(inst,def)=>{ZodUnion.init(inst,def);$ZodXor.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>unionProcessor(inst,ctx,json2,params);inst.options=def.options});ZodDiscriminatedUnion=$constructor("ZodDiscriminatedUnion",(inst,def)=>{ZodUnion.init(inst,def);$ZodDiscriminatedUnion.init(inst,def)});ZodIntersection=$constructor("ZodIntersection",(inst,def)=>{$ZodIntersection.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>intersectionProcessor(inst,ctx,json2,params)});ZodTuple=$constructor("ZodTuple",(inst,def)=>{$ZodTuple.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>tupleProcessor(inst,ctx,json2,params);inst.rest=rest=>inst.clone({...inst._zod.def,rest})});ZodRecord=$constructor("ZodRecord",(inst,def)=>{$ZodRecord.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>recordProcessor(inst,ctx,json2,params);inst.keyType=def.keyType;inst.valueType=def.valueType});ZodMap=$constructor("ZodMap",(inst,def)=>{$ZodMap.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>mapProcessor(inst,ctx,json2,params);inst.keyType=def.keyType;inst.valueType=def.valueType;inst.min=(...args)=>inst.check(_minSize(...args));inst.nonempty=params=>inst.check(_minSize(1,params));inst.max=(...args)=>inst.check(_maxSize(...args));inst.size=(...args)=>inst.check(_size(...args))});ZodSet=$constructor("ZodSet",(inst,def)=>{$ZodSet.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>setProcessor(inst,ctx,json2,params);inst.min=(...args)=>inst.check(_minSize(...args));inst.nonempty=params=>inst.check(_minSize(1,params));inst.max=(...args)=>inst.check(_maxSize(...args));inst.size=(...args)=>inst.check(_size(...args))});ZodEnum=$constructor("ZodEnum",(inst,def)=>{$ZodEnum.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>enumProcessor(inst,ctx,json2,params);inst.enum=def.entries;inst.options=Object.values(def.entries);const keys=new Set(Object.keys(def.entries));inst.extract=(values,params)=>{const newEntries={};for(const value of values){if(keys.has(value)){newEntries[value]=def.entries[value]}else throw new Error(`Key ${value} not found in enum`)}return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})};inst.exclude=(values,params)=>{const newEntries={...def.entries};for(const value of values){if(keys.has(value)){delete newEntries[value]}else throw new Error(`Key ${value} not found in enum`)}return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})}});ZodLiteral=$constructor("ZodLiteral",(inst,def)=>{$ZodLiteral.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>literalProcessor(inst,ctx,json2,params);inst.values=new Set(def.values);Object.defineProperty(inst,"value",{get(){if(def.values.length>1){throw new Error("This schema contains multiple valid literal values. Use `.values` instead.")}return def.values[0]}})});ZodFile=$constructor("ZodFile",(inst,def)=>{$ZodFile.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>fileProcessor(inst,ctx,json2,params);inst.min=(size,params)=>inst.check(_minSize(size,params));inst.max=(size,params)=>inst.check(_maxSize(size,params));inst.mime=(types,params)=>inst.check(_mime(Array.isArray(types)?types:[types],params))});ZodTransform=$constructor("ZodTransform",(inst,def)=>{$ZodTransform.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>transformProcessor(inst,ctx,json2,params);inst._zod.parse=(payload,_ctx)=>{if(_ctx.direction==="backward"){throw new $ZodEncodeError(inst.constructor.name)}payload.addIssue=issue2=>{if(typeof issue2==="string"){payload.issues.push(util_exports.issue(issue2,payload.value,def))}else{const _issue=issue2;if(_issue.fatal)_issue.continue=false;_issue.code??(_issue.code="custom");_issue.input??(_issue.input=payload.value);_issue.inst??(_issue.inst=inst);payload.issues.push(util_exports.issue(_issue))}};const output=def.transform(payload.value,payload);if(output instanceof Promise){return output.then(output2=>{payload.value=output2;payload.fallback=true;return payload})}payload.value=output;payload.fallback=true;return payload}});ZodOptional=$constructor("ZodOptional",(inst,def)=>{$ZodOptional.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>optionalProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodExactOptional=$constructor("ZodExactOptional",(inst,def)=>{$ZodExactOptional.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>optionalProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodNullable=$constructor("ZodNullable",(inst,def)=>{$ZodNullable.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>nullableProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodDefault=$constructor("ZodDefault",(inst,def)=>{$ZodDefault.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>defaultProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType;inst.removeDefault=inst.unwrap});ZodPrefault=$constructor("ZodPrefault",(inst,def)=>{$ZodPrefault.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>prefaultProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodNonOptional=$constructor("ZodNonOptional",(inst,def)=>{$ZodNonOptional.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>nonoptionalProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodSuccess=$constructor("ZodSuccess",(inst,def)=>{$ZodSuccess.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>successProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodCatch=$constructor("ZodCatch",(inst,def)=>{$ZodCatch.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>catchProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType;inst.removeCatch=inst.unwrap});ZodNaN=$constructor("ZodNaN",(inst,def)=>{$ZodNaN.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>nanProcessor(inst,ctx,json2,params)});ZodPipe=$constructor("ZodPipe",(inst,def)=>{$ZodPipe.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>pipeProcessor(inst,ctx,json2,params);inst.in=def.in;inst.out=def.out});ZodCodec=$constructor("ZodCodec",(inst,def)=>{ZodPipe.init(inst,def);$ZodCodec.init(inst,def)});ZodPreprocess=$constructor("ZodPreprocess",(inst,def)=>{ZodPipe.init(inst,def);$ZodPreprocess.init(inst,def)});ZodReadonly=$constructor("ZodReadonly",(inst,def)=>{$ZodReadonly.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>readonlyProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodTemplateLiteral=$constructor("ZodTemplateLiteral",(inst,def)=>{$ZodTemplateLiteral.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>templateLiteralProcessor(inst,ctx,json2,params)});ZodLazy=$constructor("ZodLazy",(inst,def)=>{$ZodLazy.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>lazyProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.getter()});ZodPromise=$constructor("ZodPromise",(inst,def)=>{$ZodPromise.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>promiseProcessor(inst,ctx,json2,params);inst.unwrap=()=>inst._zod.def.innerType});ZodFunction=$constructor("ZodFunction",(inst,def)=>{$ZodFunction.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>functionProcessor(inst,ctx,json2,params)});ZodCustom=$constructor("ZodCustom",(inst,def)=>{$ZodCustom.init(inst,def);ZodType.init(inst,def);inst._zod.processJSONSchema=(ctx,json2,params)=>customProcessor(inst,ctx,json2,params)});describe2=describe;meta2=meta;stringbool=(...args)=>_stringbool({Codec:ZodCodec,Boolean:ZodBoolean,String:ZodString},...args)}});function setErrorMap(map2){config({customError:map2})}function getErrorMap(){return config().customError}var ZodIssueCode,ZodFirstPartyTypeKind;var init_compat=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/compat.js"(){init_core2();ZodIssueCode={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};(function(ZodFirstPartyTypeKind2){})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}))}});function detectVersion(schema,defaultTarget){const $schema=schema.$schema;if($schema==="https://json-schema.org/draft/2020-12/schema"){return"draft-2020-12"}if($schema==="http://json-schema.org/draft-07/schema#"){return"draft-7"}if($schema==="http://json-schema.org/draft-04/schema#"){return"draft-4"}return defaultTarget??"draft-2020-12"}function resolveRef(ref,ctx){if(!ref.startsWith("#")){throw new Error("External $ref is not supported, only local refs (#/...) are allowed")}const path=ref.slice(1).split("/").filter(Boolean);if(path.length===0){return ctx.rootSchema}const defsKey=ctx.version==="draft-2020-12"?"$defs":"definitions";if(path[0]===defsKey){const key=path[1];if(!key||!ctx.defs[key]){throw new Error(`Reference not found: ${ref}`)}return ctx.defs[key]}throw new Error(`Reference not found: ${ref}`)}function convertBaseSchema(schema,ctx){if(schema.not!==void 0){if(typeof schema.not==="object"&&Object.keys(schema.not).length===0){return z.never()}throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(schema.unevaluatedItems!==void 0){throw new Error("unevaluatedItems is not supported")}if(schema.unevaluatedProperties!==void 0){throw new Error("unevaluatedProperties is not supported")}if(schema.if!==void 0||schema.then!==void 0||schema.else!==void 0){throw new Error("Conditional schemas (if/then/else) are not supported")}if(schema.dependentSchemas!==void 0||schema.dependentRequired!==void 0){throw new Error("dependentSchemas and dependentRequired are not supported")}if(schema.$ref){const refPath=schema.$ref;if(ctx.refs.has(refPath)){return ctx.refs.get(refPath)}if(ctx.processing.has(refPath)){return z.lazy(()=>{if(!ctx.refs.has(refPath)){throw new Error(`Circular reference not resolved: ${refPath}`)}return ctx.refs.get(refPath)})}ctx.processing.add(refPath);const resolved=resolveRef(refPath,ctx);const zodSchema2=convertSchema(resolved,ctx);ctx.refs.set(refPath,zodSchema2);ctx.processing.delete(refPath);return zodSchema2}if(schema.enum!==void 0){const enumValues=schema.enum;if(ctx.version==="openapi-3.0"&&schema.nullable===true&&enumValues.length===1&&enumValues[0]===null){return z.null()}if(enumValues.length===0){return z.never()}if(enumValues.length===1){return z.literal(enumValues[0])}if(enumValues.every(v=>typeof v==="string")){return z.enum(enumValues)}const literalSchemas=enumValues.map(v=>z.literal(v));if(literalSchemas.length<2){return literalSchemas[0]}return z.union([literalSchemas[0],literalSchemas[1],...literalSchemas.slice(2)])}if(schema.const!==void 0){return z.literal(schema.const)}const type=schema.type;if(Array.isArray(type)){const typeSchemas=type.map(t=>{const typeSchema={...schema,type:t};return convertBaseSchema(typeSchema,ctx)});if(typeSchemas.length===0){return z.never()}if(typeSchemas.length===1){return typeSchemas[0]}return z.union(typeSchemas)}if(!type){return z.any()}let zodSchema;switch(type){case"string":{let stringSchema=z.string();if(schema.format){const format=schema.format;if(format==="email"){stringSchema=stringSchema.check(z.email())}else if(format==="uri"||format==="uri-reference"){stringSchema=stringSchema.check(z.url())}else if(format==="uuid"||format==="guid"){stringSchema=stringSchema.check(z.uuid())}else if(format==="date-time"){stringSchema=stringSchema.check(z.iso.datetime())}else if(format==="date"){stringSchema=stringSchema.check(z.iso.date())}else if(format==="time"){stringSchema=stringSchema.check(z.iso.time())}else if(format==="duration"){stringSchema=stringSchema.check(z.iso.duration())}else if(format==="ipv4"){stringSchema=stringSchema.check(z.ipv4())}else if(format==="ipv6"){stringSchema=stringSchema.check(z.ipv6())}else if(format==="mac"){stringSchema=stringSchema.check(z.mac())}else if(format==="cidr"){stringSchema=stringSchema.check(z.cidrv4())}else if(format==="cidr-v6"){stringSchema=stringSchema.check(z.cidrv6())}else if(format==="base64"){stringSchema=stringSchema.check(z.base64())}else if(format==="base64url"){stringSchema=stringSchema.check(z.base64url())}else if(format==="e164"){stringSchema=stringSchema.check(z.e164())}else if(format==="jwt"){stringSchema=stringSchema.check(z.jwt())}else if(format==="emoji"){stringSchema=stringSchema.check(z.emoji())}else if(format==="nanoid"){stringSchema=stringSchema.check(z.nanoid())}else if(format==="cuid"){stringSchema=stringSchema.check(z.cuid())}else if(format==="cuid2"){stringSchema=stringSchema.check(z.cuid2())}else if(format==="ulid"){stringSchema=stringSchema.check(z.ulid())}else if(format==="xid"){stringSchema=stringSchema.check(z.xid())}else if(format==="ksuid"){stringSchema=stringSchema.check(z.ksuid())}}if(typeof schema.minLength==="number"){stringSchema=stringSchema.min(schema.minLength)}if(typeof schema.maxLength==="number"){stringSchema=stringSchema.max(schema.maxLength)}if(schema.pattern){stringSchema=stringSchema.regex(new RegExp(schema.pattern))}zodSchema=stringSchema;break}case"number":case"integer":{let numberSchema=type==="integer"?z.number().int():z.number();if(typeof schema.minimum==="number"){numberSchema=numberSchema.min(schema.minimum)}if(typeof schema.maximum==="number"){numberSchema=numberSchema.max(schema.maximum)}if(typeof schema.exclusiveMinimum==="number"){numberSchema=numberSchema.gt(schema.exclusiveMinimum)}else if(schema.exclusiveMinimum===true&&typeof schema.minimum==="number"){numberSchema=numberSchema.gt(schema.minimum)}if(typeof schema.exclusiveMaximum==="number"){numberSchema=numberSchema.lt(schema.exclusiveMaximum)}else if(schema.exclusiveMaximum===true&&typeof schema.maximum==="number"){numberSchema=numberSchema.lt(schema.maximum)}if(typeof schema.multipleOf==="number"){numberSchema=numberSchema.multipleOf(schema.multipleOf)}zodSchema=numberSchema;break}case"boolean":{zodSchema=z.boolean();break}case"null":{zodSchema=z.null();break}case"object":{const shape={};const properties=schema.properties||{};const requiredSet=new Set(schema.required||[]);for(const[key,propSchema]of Object.entries(properties)){const propZodSchema=convertSchema(propSchema,ctx);shape[key]=requiredSet.has(key)?propZodSchema:propZodSchema.optional()}if(schema.propertyNames){const keySchema=convertSchema(schema.propertyNames,ctx);const valueSchema=schema.additionalProperties&&typeof schema.additionalProperties==="object"?convertSchema(schema.additionalProperties,ctx):z.any();if(Object.keys(shape).length===0){zodSchema=z.record(keySchema,valueSchema);break}const objectSchema2=z.object(shape).passthrough();const recordSchema=z.looseRecord(keySchema,valueSchema);zodSchema=z.intersection(objectSchema2,recordSchema);break}if(schema.patternProperties){const patternProps=schema.patternProperties;const patternKeys=Object.keys(patternProps);const looseRecords=[];for(const pattern of patternKeys){const patternValue=convertSchema(patternProps[pattern],ctx);const keySchema=z.string().regex(new RegExp(pattern));looseRecords.push(z.looseRecord(keySchema,patternValue))}const schemasToIntersect=[];if(Object.keys(shape).length>0){schemasToIntersect.push(z.object(shape).passthrough())}schemasToIntersect.push(...looseRecords);if(schemasToIntersect.length===0){zodSchema=z.object({}).passthrough()}else if(schemasToIntersect.length===1){zodSchema=schemasToIntersect[0]}else{let result=z.intersection(schemasToIntersect[0],schemasToIntersect[1]);for(let i=2;i<schemasToIntersect.length;i++){result=z.intersection(result,schemasToIntersect[i])}zodSchema=result}break}const objectSchema=z.object(shape);if(schema.additionalProperties===false){zodSchema=objectSchema.strict()}else if(typeof schema.additionalProperties==="object"){zodSchema=objectSchema.catchall(convertSchema(schema.additionalProperties,ctx))}else{zodSchema=objectSchema.passthrough()}break}case"array":{const prefixItems=schema.prefixItems;const items=schema.items;if(prefixItems&&Array.isArray(prefixItems)){const tupleItems=prefixItems.map(item=>convertSchema(item,ctx));const rest=items&&typeof items==="object"&&!Array.isArray(items)?convertSchema(items,ctx):void 0;if(rest){zodSchema=z.tuple(tupleItems).rest(rest)}else{zodSchema=z.tuple(tupleItems)}if(typeof schema.minItems==="number"){zodSchema=zodSchema.check(z.minLength(schema.minItems))}if(typeof schema.maxItems==="number"){zodSchema=zodSchema.check(z.maxLength(schema.maxItems))}}else if(Array.isArray(items)){const tupleItems=items.map(item=>convertSchema(item,ctx));const rest=schema.additionalItems&&typeof schema.additionalItems==="object"?convertSchema(schema.additionalItems,ctx):void 0;if(rest){zodSchema=z.tuple(tupleItems).rest(rest)}else{zodSchema=z.tuple(tupleItems)}if(typeof schema.minItems==="number"){zodSchema=zodSchema.check(z.minLength(schema.minItems))}if(typeof schema.maxItems==="number"){zodSchema=zodSchema.check(z.maxLength(schema.maxItems))}}else if(items!==void 0){const element=convertSchema(items,ctx);let arraySchema=z.array(element);if(typeof schema.minItems==="number"){arraySchema=arraySchema.min(schema.minItems)}if(typeof schema.maxItems==="number"){arraySchema=arraySchema.max(schema.maxItems)}zodSchema=arraySchema}else{zodSchema=z.array(z.any())}break}default:throw new Error(`Unsupported type: ${type}`)}return zodSchema}function convertSchema(schema,ctx){if(typeof schema==="boolean"){return schema?z.any():z.never()}let baseSchema=convertBaseSchema(schema,ctx);const hasExplicitType=schema.type||schema.enum!==void 0||schema.const!==void 0;if(schema.anyOf&&Array.isArray(schema.anyOf)){const options=schema.anyOf.map(s=>convertSchema(s,ctx));const anyOfUnion=z.union(options);baseSchema=hasExplicitType?z.intersection(baseSchema,anyOfUnion):anyOfUnion}if(schema.oneOf&&Array.isArray(schema.oneOf)){const options=schema.oneOf.map(s=>convertSchema(s,ctx));const oneOfUnion=z.xor(options);baseSchema=hasExplicitType?z.intersection(baseSchema,oneOfUnion):oneOfUnion}if(schema.allOf&&Array.isArray(schema.allOf)){if(schema.allOf.length===0){baseSchema=hasExplicitType?baseSchema:z.any()}else{let result=hasExplicitType?baseSchema:convertSchema(schema.allOf[0],ctx);const startIdx=hasExplicitType?0:1;for(let i=startIdx;i<schema.allOf.length;i++){result=z.intersection(result,convertSchema(schema.allOf[i],ctx))}baseSchema=result}}if(schema.nullable===true&&ctx.version==="openapi-3.0"){baseSchema=z.nullable(baseSchema)}if(schema.readOnly===true){baseSchema=z.readonly(baseSchema)}if(schema.default!==void 0){baseSchema=baseSchema.default(schema.default)}const extraMeta={};const coreMetadataKeys=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(const key of coreMetadataKeys){if(key in schema){extraMeta[key]=schema[key]}}const contentMetadataKeys=["contentEncoding","contentMediaType","contentSchema"];for(const key of contentMetadataKeys){if(key in schema){extraMeta[key]=schema[key]}}for(const key of Object.keys(schema)){if(!RECOGNIZED_KEYS.has(key)){extraMeta[key]=schema[key]}}if(Object.keys(extraMeta).length>0){ctx.registry.add(baseSchema,extraMeta)}if(schema.description){baseSchema=baseSchema.describe(schema.description)}return baseSchema}function fromJSONSchema(schema,params){if(typeof schema==="boolean"){return schema?z.any():z.never()}let normalized;try{normalized=JSON.parse(JSON.stringify(schema))}catch{throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}const version2=detectVersion(normalized,params?.defaultTarget);const defs=normalized.$defs||normalized.definitions||{};const ctx={version:version2,defs,refs:new Map,processing:new Set,rootSchema:normalized,registry:params?.registry??globalRegistry};return convertSchema(normalized,ctx)}var z,RECOGNIZED_KEYS;var init_from_json_schema=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/from-json-schema.js"(){init_registries();init_checks2();init_iso();init_schemas2();z={...schemas_exports2,...checks_exports2,iso:iso_exports};RECOGNIZED_KEYS=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"])}});var coerce_exports={};__export(coerce_exports,{bigint:()=>bigint3,boolean:()=>boolean3,date:()=>date4,number:()=>number3,string:()=>string3});function string3(params){return _coercedString(ZodString,params)}function number3(params){return _coercedNumber(ZodNumber,params)}function boolean3(params){return _coercedBoolean(ZodBoolean,params)}function bigint3(params){return _coercedBigint(ZodBigInt,params)}function date4(params){return _coercedDate(ZodDate,params)}var init_coerce=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/coerce.js"(){init_core2();init_schemas2()}});var external_exports={};__export(external_exports,{$brand:()=>$brand,$input:()=>$input,$output:()=>$output,NEVER:()=>NEVER,TimePrecision:()=>TimePrecision,ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBase64:()=>ZodBase64,ZodBase64URL:()=>ZodBase64URL,ZodBigInt:()=>ZodBigInt,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBoolean:()=>ZodBoolean,ZodCIDRv4:()=>ZodCIDRv4,ZodCIDRv6:()=>ZodCIDRv6,ZodCUID:()=>ZodCUID,ZodCUID2:()=>ZodCUID2,ZodCatch:()=>ZodCatch,ZodCodec:()=>ZodCodec,ZodCustom:()=>ZodCustom,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodE164:()=>ZodE164,ZodEmail:()=>ZodEmail,ZodEmoji:()=>ZodEmoji,ZodEnum:()=>ZodEnum,ZodError:()=>ZodError,ZodExactOptional:()=>ZodExactOptional,ZodFile:()=>ZodFile,ZodFirstPartyTypeKind:()=>ZodFirstPartyTypeKind,ZodFunction:()=>ZodFunction,ZodGUID:()=>ZodGUID,ZodIPv4:()=>ZodIPv4,ZodIPv6:()=>ZodIPv6,ZodISODate:()=>ZodISODate,ZodISODateTime:()=>ZodISODateTime,ZodISODuration:()=>ZodISODuration,ZodISOTime:()=>ZodISOTime,ZodIntersection:()=>ZodIntersection,ZodIssueCode:()=>ZodIssueCode,ZodJWT:()=>ZodJWT,ZodKSUID:()=>ZodKSUID,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMAC:()=>ZodMAC,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNanoID:()=>ZodNanoID,ZodNever:()=>ZodNever,ZodNonOptional:()=>ZodNonOptional,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodNumberFormat:()=>ZodNumberFormat,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodPipe:()=>ZodPipe,ZodPrefault:()=>ZodPrefault,ZodPreprocess:()=>ZodPreprocess,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRealError:()=>ZodRealError,ZodRecord:()=>ZodRecord,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodStringFormat:()=>ZodStringFormat,ZodSuccess:()=>ZodSuccess,ZodSymbol:()=>ZodSymbol,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodTransform:()=>ZodTransform,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodULID:()=>ZodULID,ZodURL:()=>ZodURL,ZodUUID:()=>ZodUUID,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,ZodXID:()=>ZodXID,ZodXor:()=>ZodXor,_ZodString:()=>_ZodString,_default:()=>_default2,_function:()=>_function,any:()=>any,array:()=>array,base64:()=>base642,base64url:()=>base64url3,bigint:()=>bigint2,boolean:()=>boolean2,catch:()=>_catch2,check:()=>check,cidrv4:()=>cidrv42,cidrv6:()=>cidrv62,clone:()=>clone,codec:()=>codec,coerce:()=>coerce_exports,config:()=>config,core:()=>core_exports2,cuid:()=>cuid3,cuid2:()=>cuid22,custom:()=>custom,date:()=>date3,decode:()=>decode4,decodeAsync:()=>decodeAsync2,describe:()=>describe2,discriminatedUnion:()=>discriminatedUnion,e164:()=>e1642,email:()=>email2,emoji:()=>emoji2,encode:()=>encode3,encodeAsync:()=>encodeAsync2,endsWith:()=>_endsWith,enum:()=>_enum2,exactOptional:()=>exactOptional,file:()=>file,flattenError:()=>flattenError,float32:()=>float32,float64:()=>float64,formatError:()=>formatError,fromJSONSchema:()=>fromJSONSchema,function:()=>_function,getErrorMap:()=>getErrorMap,globalRegistry:()=>globalRegistry,gt:()=>_gt,gte:()=>_gte,guid:()=>guid2,hash:()=>hash,hex:()=>hex2,hostname:()=>hostname3,httpUrl:()=>httpUrl,includes:()=>_includes,instanceof:()=>_instanceof,int:()=>int,int32:()=>int32,int64:()=>int64,intersection:()=>intersection,invertCodec:()=>invertCodec,ipv4:()=>ipv42,ipv6:()=>ipv62,iso:()=>iso_exports,json:()=>json,jwt:()=>jwt,keyof:()=>keyof,ksuid:()=>ksuid2,lazy:()=>lazy,length:()=>_length,literal:()=>literal,locales:()=>locales_exports,looseObject:()=>looseObject,looseRecord:()=>looseRecord,lowercase:()=>_lowercase,lt:()=>_lt,lte:()=>_lte,mac:()=>mac2,map:()=>map,maxLength:()=>_maxLength,maxSize:()=>_maxSize,meta:()=>meta2,mime:()=>_mime,minLength:()=>_minLength,minSize:()=>_minSize,multipleOf:()=>_multipleOf,nan:()=>nan,nanoid:()=>nanoid2,nativeEnum:()=>nativeEnum,negative:()=>_negative,never:()=>never,nonnegative:()=>_nonnegative,nonoptional:()=>nonoptional,nonpositive:()=>_nonpositive,normalize:()=>_normalize,null:()=>_null3,nullable:()=>nullable,nullish:()=>nullish2,number:()=>number2,object:()=>object,optional:()=>optional,overwrite:()=>_overwrite,parse:()=>parse2,parseAsync:()=>parseAsync2,partialRecord:()=>partialRecord,pipe:()=>pipe,positive:()=>_positive,prefault:()=>prefault,preprocess:()=>preprocess,prettifyError:()=>prettifyError,promise:()=>promise,property:()=>_property,readonly:()=>readonly,record:()=>record,refine:()=>refine,regex:()=>_regex,regexes:()=>regexes_exports,registry:()=>registry3,safeDecode:()=>safeDecode2,safeDecodeAsync:()=>safeDecodeAsync2,safeEncode:()=>safeEncode2,safeEncodeAsync:()=>safeEncodeAsync2,safeParse:()=>safeParse2,safeParseAsync:()=>safeParseAsync2,set:()=>set2,setErrorMap:()=>setErrorMap,size:()=>_size,slugify:()=>_slugify,startsWith:()=>_startsWith,strictObject:()=>strictObject,string:()=>string2,stringFormat:()=>stringFormat,stringbool:()=>stringbool,success:()=>success,superRefine:()=>superRefine,symbol:()=>symbol,templateLiteral:()=>templateLiteral,toJSONSchema:()=>toJSONSchema,toLowerCase:()=>_toLowerCase,toUpperCase:()=>_toUpperCase,transform:()=>transform,treeifyError:()=>treeifyError,trim:()=>_trim,tuple:()=>tuple,uint32:()=>uint32,uint64:()=>uint64,ulid:()=>ulid2,undefined:()=>_undefined3,union:()=>union2,unknown:()=>unknown,uppercase:()=>_uppercase,url:()=>url,util:()=>util_exports,uuid:()=>uuid2,uuidv4:()=>uuidv4,uuidv6:()=>uuidv6,uuidv7:()=>uuidv7,void:()=>_void2,xid:()=>xid2,xor:()=>xor});var init_external=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js"(){init_core2();init_schemas2();init_checks2();init_errors2();init_parse2();init_compat();init_core2();init_en();init_core2();init_json_schema_processors();init_from_json_schema();init_locales();init_iso();init_iso();init_coerce();config(en_default())}});var init_classic=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/index.js"(){init_external()}});var init_v4=__esm({"../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/index.js"(){init_classic()}});var RELATED_TASK_META_KEY,JSONRPC_VERSION,AssertObjectSchema,ProgressTokenSchema,CursorSchema,TaskCreationParamsSchema,TaskMetadataSchema,RelatedTaskMetadataSchema,RequestMetaSchema,BaseRequestParamsSchema,TaskAugmentedRequestParamsSchema,RequestSchema,NotificationsParamsSchema,NotificationSchema,ResultSchema,RequestIdSchema,JSONRPCRequestSchema,JSONRPCNotificationSchema,JSONRPCResultResponseSchema,ErrorCode,JSONRPCErrorResponseSchema,JSONRPCMessageSchema,JSONRPCResponseSchema,EmptyResultSchema,CancelledNotificationParamsSchema,CancelledNotificationSchema,IconSchema,IconsSchema,BaseMetadataSchema,ImplementationSchema,FormElicitationCapabilitySchema,ElicitationCapabilitySchema,ClientTasksCapabilitySchema,ServerTasksCapabilitySchema,ClientCapabilitiesSchema,InitializeRequestParamsSchema,InitializeRequestSchema,ServerCapabilitiesSchema,InitializeResultSchema,InitializedNotificationSchema,PingRequestSchema,ProgressSchema,ProgressNotificationParamsSchema,ProgressNotificationSchema,PaginatedRequestParamsSchema,PaginatedRequestSchema,PaginatedResultSchema,TaskStatusSchema,TaskSchema,CreateTaskResultSchema,TaskStatusNotificationParamsSchema,TaskStatusNotificationSchema,GetTaskRequestSchema,GetTaskResultSchema,GetTaskPayloadRequestSchema,GetTaskPayloadResultSchema,ListTasksRequestSchema,ListTasksResultSchema,CancelTaskRequestSchema,CancelTaskResultSchema,ResourceContentsSchema,TextResourceContentsSchema,Base64Schema,BlobResourceContentsSchema,RoleSchema,AnnotationsSchema,ResourceSchema,ResourceTemplateSchema,ListResourcesRequestSchema,ListResourcesResultSchema,ListResourceTemplatesRequestSchema,ListResourceTemplatesResultSchema,ResourceRequestParamsSchema,ReadResourceRequestParamsSchema,ReadResourceRequestSchema,ReadResourceResultSchema,ResourceListChangedNotificationSchema,SubscribeRequestParamsSchema,SubscribeRequestSchema,UnsubscribeRequestParamsSchema,UnsubscribeRequestSchema,ResourceUpdatedNotificationParamsSchema,ResourceUpdatedNotificationSchema,PromptArgumentSchema,PromptSchema,ListPromptsRequestSchema,ListPromptsResultSchema,GetPromptRequestParamsSchema,GetPromptRequestSchema,TextContentSchema,ImageContentSchema,AudioContentSchema,ToolUseContentSchema,EmbeddedResourceSchema,ResourceLinkSchema,ContentBlockSchema,PromptMessageSchema,GetPromptResultSchema,PromptListChangedNotificationSchema,ToolAnnotationsSchema,ToolExecutionSchema,ToolSchema,ListToolsRequestSchema,ListToolsResultSchema,CallToolResultSchema,CompatibilityCallToolResultSchema,CallToolRequestParamsSchema,CallToolRequestSchema,ToolListChangedNotificationSchema,ListChangedOptionsBaseSchema,LoggingLevelSchema,SetLevelRequestParamsSchema,SetLevelRequestSchema,LoggingMessageNotificationParamsSchema,LoggingMessageNotificationSchema,ModelHintSchema,ModelPreferencesSchema,ToolChoiceSchema,ToolResultContentSchema,SamplingContentSchema,SamplingMessageContentBlockSchema,SamplingMessageSchema,CreateMessageRequestParamsSchema,CreateMessageRequestSchema,CreateMessageResultSchema,CreateMessageResultWithToolsSchema,BooleanSchemaSchema,StringSchemaSchema,NumberSchemaSchema,UntitledSingleSelectEnumSchemaSchema,TitledSingleSelectEnumSchemaSchema,LegacyTitledEnumSchemaSchema,SingleSelectEnumSchemaSchema,UntitledMultiSelectEnumSchemaSchema,TitledMultiSelectEnumSchemaSchema,MultiSelectEnumSchemaSchema,EnumSchemaSchema,PrimitiveSchemaDefinitionSchema,ElicitRequestFormParamsSchema,ElicitRequestURLParamsSchema,ElicitRequestParamsSchema,ElicitRequestSchema,ElicitationCompleteNotificationParamsSchema,ElicitationCompleteNotificationSchema,ElicitResultSchema,ResourceTemplateReferenceSchema,PromptReferenceSchema,CompleteRequestParamsSchema,CompleteRequestSchema,CompleteResultSchema,RootSchema,ListRootsRequestSchema,ListRootsResultSchema,RootsListChangedNotificationSchema,ClientRequestSchema,ClientNotificationSchema,ClientResultSchema,ServerRequestSchema,ServerNotificationSchema,ServerResultSchema;var init_types=__esm({"../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@4.4.3/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js"(){init_v4();RELATED_TASK_META_KEY="io.modelcontextprotocol/related-task";JSONRPC_VERSION="2.0";AssertObjectSchema=custom(v=>v!==null&&(typeof v==="object"||typeof v==="function"));ProgressTokenSchema=union2([string2(),number2().int()]);CursorSchema=string2();TaskCreationParamsSchema=looseObject({ttl:number2().optional(),pollInterval:number2().optional()});TaskMetadataSchema=object({ttl:number2().optional()});RelatedTaskMetadataSchema=object({taskId:string2()});RequestMetaSchema=looseObject({progressToken:ProgressTokenSchema.optional(),[RELATED_TASK_META_KEY]:RelatedTaskMetadataSchema.optional()});BaseRequestParamsSchema=object({_meta:RequestMetaSchema.optional()});TaskAugmentedRequestParamsSchema=BaseRequestParamsSchema.extend({task:TaskMetadataSchema.optional()});RequestSchema=object({method:string2(),params:BaseRequestParamsSchema.loose().optional()});NotificationsParamsSchema=object({_meta:RequestMetaSchema.optional()});NotificationSchema=object({method:string2(),params:NotificationsParamsSchema.loose().optional()});ResultSchema=looseObject({_meta:RequestMetaSchema.optional()});RequestIdSchema=union2([string2(),number2().int()]);JSONRPCRequestSchema=object({jsonrpc:literal(JSONRPC_VERSION),id:RequestIdSchema,...RequestSchema.shape}).strict();JSONRPCNotificationSchema=object({jsonrpc:literal(JSONRPC_VERSION),...NotificationSchema.shape}).strict();JSONRPCResultResponseSchema=object({jsonrpc:literal(JSONRPC_VERSION),id:RequestIdSchema,result:ResultSchema}).strict();(function(ErrorCode2){ErrorCode2[ErrorCode2["ConnectionClosed"]=-32e3]="ConnectionClosed";ErrorCode2[ErrorCode2["RequestTimeout"]=-32001]="RequestTimeout";ErrorCode2[ErrorCode2["ParseError"]=-32700]="ParseError";ErrorCode2[ErrorCode2["InvalidRequest"]=-32600]="InvalidRequest";ErrorCode2[ErrorCode2["MethodNotFound"]=-32601]="MethodNotFound";ErrorCode2[ErrorCode2["InvalidParams"]=-32602]="InvalidParams";ErrorCode2[ErrorCode2["InternalError"]=-32603]="InternalError";ErrorCode2[ErrorCode2["UrlElicitationRequired"]=-32042]="UrlElicitationRequired"})(ErrorCode||(ErrorCode={}));JSONRPCErrorResponseSchema=object({jsonrpc:literal(JSONRPC_VERSION),id:RequestIdSchema.optional(),error:object({code:number2().int(),message:string2(),data:unknown().optional()})}).strict();JSONRPCMessageSchema=union2([JSONRPCRequestSchema,JSONRPCNotificationSchema,JSONRPCResultResponseSchema,JSONRPCErrorResponseSchema]);JSONRPCResponseSchema=union2([JSONRPCResultResponseSchema,JSONRPCErrorResponseSchema]);EmptyResultSchema=ResultSchema.strict();CancelledNotificationParamsSchema=NotificationsParamsSchema.extend({requestId:RequestIdSchema.optional(),reason:string2().optional()});CancelledNotificationSchema=NotificationSchema.extend({method:literal("notifications/cancelled"),params:CancelledNotificationParamsSchema});IconSchema=object({src:string2(),mimeType:string2().optional(),sizes:array(string2()).optional(),theme:_enum2(["light","dark"]).optional()});IconsSchema=object({icons:array(IconSchema).optional()});BaseMetadataSchema=object({name:string2(),title:string2().optional()});ImplementationSchema=BaseMetadataSchema.extend({...BaseMetadataSchema.shape,...IconsSchema.shape,version:string2(),websiteUrl:string2().optional(),description:string2().optional()});FormElicitationCapabilitySchema=intersection(object({applyDefaults:boolean2().optional()}),record(string2(),unknown()));ElicitationCapabilitySchema=preprocess(value=>{if(value&&typeof value==="object"&&!Array.isArray(value)){if(Object.keys(value).length===0){return{form:{}}}}return value},intersection(object({form:FormElicitationCapabilitySchema.optional(),url:AssertObjectSchema.optional()}),record(string2(),unknown()).optional()));ClientTasksCapabilitySchema=looseObject({list:AssertObjectSchema.optional(),cancel:AssertObjectSchema.optional(),requests:looseObject({sampling:looseObject({createMessage:AssertObjectSchema.optional()}).optional(),elicitation:looseObject({create:AssertObjectSchema.optional()}).optional()}).optional()});ServerTasksCapabilitySchema=looseObject({list:AssertObjectSchema.optional(),cancel:AssertObjectSchema.optional(),requests:looseObject({tools:looseObject({call:AssertObjectSchema.optional()}).optional()}).optional()});ClientCapabilitiesSchema=object({experimental:record(string2(),AssertObjectSchema).optional(),sampling:object({context:AssertObjectSchema.optional(),tools:AssertObjectSchema.optional()}).optional(),elicitation:ElicitationCapabilitySchema.optional(),roots:object({listChanged:boolean2().optional()}).optional(),tasks:ClientTasksCapabilitySchema.optional(),extensions:record(string2(),AssertObjectSchema).optional()});InitializeRequestParamsSchema=BaseRequestParamsSchema.extend({protocolVersion:string2(),capabilities:ClientCapabilitiesSchema,clientInfo:ImplementationSchema});InitializeRequestSchema=RequestSchema.extend({method:literal("initialize"),params:InitializeRequestParamsSchema});ServerCapabilitiesSchema=object({experimental:record(string2(),AssertObjectSchema).optional(),logging:AssertObjectSchema.optional(),completions:AssertObjectSchema.optional(),prompts:object({listChanged:boolean2().optional()}).optional(),resources:object({subscribe:boolean2().optional(),listChanged:boolean2().optional()}).optional(),tools:object({listChanged:boolean2().optional()}).optional(),tasks:ServerTasksCapabilitySchema.optional(),extensions:record(string2(),AssertObjectSchema).optional()});InitializeResultSchema=ResultSchema.extend({protocolVersion:string2(),capabilities:ServerCapabilitiesSchema,serverInfo:ImplementationSchema,instructions:string2().optional()});InitializedNotificationSchema=NotificationSchema.extend({method:literal("notifications/initialized"),params:NotificationsParamsSchema.optional()});PingRequestSchema=RequestSchema.extend({method:literal("ping"),params:BaseRequestParamsSchema.optional()});ProgressSchema=object({progress:number2(),total:optional(number2()),message:optional(string2())});ProgressNotificationParamsSchema=object({...NotificationsParamsSchema.shape,...ProgressSchema.shape,progressToken:ProgressTokenSchema});ProgressNotificationSchema=NotificationSchema.extend({method:literal("notifications/progress"),params:ProgressNotificationParamsSchema});PaginatedRequestParamsSchema=BaseRequestParamsSchema.extend({cursor:CursorSchema.optional()});PaginatedRequestSchema=RequestSchema.extend({params:PaginatedRequestParamsSchema.optional()});PaginatedResultSchema=ResultSchema.extend({nextCursor:CursorSchema.optional()});TaskStatusSchema=_enum2(["working","input_required","completed","failed","cancelled"]);TaskSchema=object({taskId:string2(),status:TaskStatusSchema,ttl:union2([number2(),_null3()]),createdAt:string2(),lastUpdatedAt:string2(),pollInterval:optional(number2()),statusMessage:optional(string2())});CreateTaskResultSchema=ResultSchema.extend({task:TaskSchema});TaskStatusNotificationParamsSchema=NotificationsParamsSchema.merge(TaskSchema);TaskStatusNotificationSchema=NotificationSchema.extend({method:literal("notifications/tasks/status"),params:TaskStatusNotificationParamsSchema});GetTaskRequestSchema=RequestSchema.extend({method:literal("tasks/get"),params:BaseRequestParamsSchema.extend({taskId:string2()})});GetTaskResultSchema=ResultSchema.merge(TaskSchema);GetTaskPayloadRequestSchema=RequestSchema.extend({method:literal("tasks/result"),params:BaseRequestParamsSchema.extend({taskId:string2()})});GetTaskPayloadResultSchema=ResultSchema.loose();ListTasksRequestSchema=PaginatedRequestSchema.extend({method:literal("tasks/list")});ListTasksResultSchema=PaginatedResultSchema.extend({tasks:array(TaskSchema)});CancelTaskRequestSchema=RequestSchema.extend({method:literal("tasks/cancel"),params:BaseRequestParamsSchema.extend({taskId:string2()})});CancelTaskResultSchema=ResultSchema.merge(TaskSchema);ResourceContentsSchema=object({uri:string2(),mimeType:optional(string2()),_meta:record(string2(),unknown()).optional()});TextResourceContentsSchema=ResourceContentsSchema.extend({text:string2()});Base64Schema=string2().refine(val=>{try{atob(val);return true}catch{return false}},{message:"Invalid Base64 string"});BlobResourceContentsSchema=ResourceContentsSchema.extend({blob:Base64Schema});RoleSchema=_enum2(["user","assistant"]);AnnotationsSchema=object({audience:array(RoleSchema).optional(),priority:number2().min(0).max(1).optional(),lastModified:iso_exports.datetime({offset:true}).optional()});ResourceSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,uri:string2(),description:optional(string2()),mimeType:optional(string2()),size:optional(number2()),annotations:AnnotationsSchema.optional(),_meta:optional(looseObject({}))});ResourceTemplateSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,uriTemplate:string2(),description:optional(string2()),mimeType:optional(string2()),annotations:AnnotationsSchema.optional(),_meta:optional(looseObject({}))});ListResourcesRequestSchema=PaginatedRequestSchema.extend({method:literal("resources/list")});ListResourcesResultSchema=PaginatedResultSchema.extend({resources:array(ResourceSchema)});ListResourceTemplatesRequestSchema=PaginatedRequestSchema.extend({method:literal("resources/templates/list")});ListResourceTemplatesResultSchema=PaginatedResultSchema.extend({resourceTemplates:array(ResourceTemplateSchema)});ResourceRequestParamsSchema=BaseRequestParamsSchema.extend({uri:string2()});ReadResourceRequestParamsSchema=ResourceRequestParamsSchema;ReadResourceRequestSchema=RequestSchema.extend({method:literal("resources/read"),params:ReadResourceRequestParamsSchema});ReadResourceResultSchema=ResultSchema.extend({contents:array(union2([TextResourceContentsSchema,BlobResourceContentsSchema]))});ResourceListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/resources/list_changed"),params:NotificationsParamsSchema.optional()});SubscribeRequestParamsSchema=ResourceRequestParamsSchema;SubscribeRequestSchema=RequestSchema.extend({method:literal("resources/subscribe"),params:SubscribeRequestParamsSchema});UnsubscribeRequestParamsSchema=ResourceRequestParamsSchema;UnsubscribeRequestSchema=RequestSchema.extend({method:literal("resources/unsubscribe"),params:UnsubscribeRequestParamsSchema});ResourceUpdatedNotificationParamsSchema=NotificationsParamsSchema.extend({uri:string2()});ResourceUpdatedNotificationSchema=NotificationSchema.extend({method:literal("notifications/resources/updated"),params:ResourceUpdatedNotificationParamsSchema});PromptArgumentSchema=object({name:string2(),description:optional(string2()),required:optional(boolean2())});PromptSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,description:optional(string2()),arguments:optional(array(PromptArgumentSchema)),_meta:optional(looseObject({}))});ListPromptsRequestSchema=PaginatedRequestSchema.extend({method:literal("prompts/list")});ListPromptsResultSchema=PaginatedResultSchema.extend({prompts:array(PromptSchema)});GetPromptRequestParamsSchema=BaseRequestParamsSchema.extend({name:string2(),arguments:record(string2(),string2()).optional()});GetPromptRequestSchema=RequestSchema.extend({method:literal("prompts/get"),params:GetPromptRequestParamsSchema});TextContentSchema=object({type:literal("text"),text:string2(),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()});ImageContentSchema=object({type:literal("image"),data:Base64Schema,mimeType:string2(),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()});AudioContentSchema=object({type:literal("audio"),data:Base64Schema,mimeType:string2(),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()});ToolUseContentSchema=object({type:literal("tool_use"),name:string2(),id:string2(),input:record(string2(),unknown()),_meta:record(string2(),unknown()).optional()});EmbeddedResourceSchema=object({type:literal("resource"),resource:union2([TextResourceContentsSchema,BlobResourceContentsSchema]),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()});ResourceLinkSchema=ResourceSchema.extend({type:literal("resource_link")});ContentBlockSchema=union2([TextContentSchema,ImageContentSchema,AudioContentSchema,ResourceLinkSchema,EmbeddedResourceSchema]);PromptMessageSchema=object({role:RoleSchema,content:ContentBlockSchema});GetPromptResultSchema=ResultSchema.extend({description:string2().optional(),messages:array(PromptMessageSchema)});PromptListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/prompts/list_changed"),params:NotificationsParamsSchema.optional()});ToolAnnotationsSchema=object({title:string2().optional(),readOnlyHint:boolean2().optional(),destructiveHint:boolean2().optional(),idempotentHint:boolean2().optional(),openWorldHint:boolean2().optional()});ToolExecutionSchema=object({taskSupport:_enum2(["required","optional","forbidden"]).optional()});ToolSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,description:string2().optional(),inputSchema:object({type:literal("object"),properties:record(string2(),AssertObjectSchema).optional(),required:array(string2()).optional()}).catchall(unknown()),outputSchema:object({type:literal("object"),properties:record(string2(),AssertObjectSchema).optional(),required:array(string2()).optional()}).catchall(unknown()).optional(),annotations:ToolAnnotationsSchema.optional(),execution:ToolExecutionSchema.optional(),_meta:record(string2(),unknown()).optional()});ListToolsRequestSchema=PaginatedRequestSchema.extend({method:literal("tools/list")});ListToolsResultSchema=PaginatedResultSchema.extend({tools:array(ToolSchema)});CallToolResultSchema=ResultSchema.extend({content:array(ContentBlockSchema).default([]),structuredContent:record(string2(),unknown()).optional(),isError:boolean2().optional()});CompatibilityCallToolResultSchema=CallToolResultSchema.or(ResultSchema.extend({toolResult:unknown()}));CallToolRequestParamsSchema=TaskAugmentedRequestParamsSchema.extend({name:string2(),arguments:record(string2(),unknown()).optional()});CallToolRequestSchema=RequestSchema.extend({method:literal("tools/call"),params:CallToolRequestParamsSchema});ToolListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/tools/list_changed"),params:NotificationsParamsSchema.optional()});ListChangedOptionsBaseSchema=object({autoRefresh:boolean2().default(true),debounceMs:number2().int().nonnegative().default(300)});LoggingLevelSchema=_enum2(["debug","info","notice","warning","error","critical","alert","emergency"]);SetLevelRequestParamsSchema=BaseRequestParamsSchema.extend({level:LoggingLevelSchema});SetLevelRequestSchema=RequestSchema.extend({method:literal("logging/setLevel"),params:SetLevelRequestParamsSchema});LoggingMessageNotificationParamsSchema=NotificationsParamsSchema.extend({level:LoggingLevelSchema,logger:string2().optional(),data:unknown()});LoggingMessageNotificationSchema=NotificationSchema.extend({method:literal("notifications/message"),params:LoggingMessageNotificationParamsSchema});ModelHintSchema=object({name:string2().optional()});ModelPreferencesSchema=object({hints:array(ModelHintSchema).optional(),costPriority:number2().min(0).max(1).optional(),speedPriority:number2().min(0).max(1).optional(),intelligencePriority:number2().min(0).max(1).optional()});ToolChoiceSchema=object({mode:_enum2(["auto","required","none"]).optional()});ToolResultContentSchema=object({type:literal("tool_result"),toolUseId:string2().describe("The unique identifier for the corresponding tool call."),content:array(ContentBlockSchema).default([]),structuredContent:object({}).loose().optional(),isError:boolean2().optional(),_meta:record(string2(),unknown()).optional()});SamplingContentSchema=discriminatedUnion("type",[TextContentSchema,ImageContentSchema,AudioContentSchema]);SamplingMessageContentBlockSchema=discriminatedUnion("type",[TextContentSchema,ImageContentSchema,AudioContentSchema,ToolUseContentSchema,ToolResultContentSchema]);SamplingMessageSchema=object({role:RoleSchema,content:union2([SamplingMessageContentBlockSchema,array(SamplingMessageContentBlockSchema)]),_meta:record(string2(),unknown()).optional()});CreateMessageRequestParamsSchema=TaskAugmentedRequestParamsSchema.extend({messages:array(SamplingMessageSchema),modelPreferences:ModelPreferencesSchema.optional(),systemPrompt:string2().optional(),includeContext:_enum2(["none","thisServer","allServers"]).optional(),temperature:number2().optional(),maxTokens:number2().int(),stopSequences:array(string2()).optional(),metadata:AssertObjectSchema.optional(),tools:array(ToolSchema).optional(),toolChoice:ToolChoiceSchema.optional()});CreateMessageRequestSchema=RequestSchema.extend({method:literal("sampling/createMessage"),params:CreateMessageRequestParamsSchema});CreateMessageResultSchema=ResultSchema.extend({model:string2(),stopReason:optional(_enum2(["endTurn","stopSequence","maxTokens"]).or(string2())),role:RoleSchema,content:SamplingContentSchema});CreateMessageResultWithToolsSchema=ResultSchema.extend({model:string2(),stopReason:optional(_enum2(["endTurn","stopSequence","maxTokens","toolUse"]).or(string2())),role:RoleSchema,content:union2([SamplingMessageContentBlockSchema,array(SamplingMessageContentBlockSchema)])});BooleanSchemaSchema=object({type:literal("boolean"),title:string2().optional(),description:string2().optional(),default:boolean2().optional()});StringSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),minLength:number2().optional(),maxLength:number2().optional(),format:_enum2(["email","uri","date","date-time"]).optional(),default:string2().optional()});NumberSchemaSchema=object({type:_enum2(["number","integer"]),title:string2().optional(),description:string2().optional(),minimum:number2().optional(),maximum:number2().optional(),default:number2().optional()});UntitledSingleSelectEnumSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),default:string2().optional()});TitledSingleSelectEnumSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),oneOf:array(object({const:string2(),title:string2()})),default:string2().optional()});LegacyTitledEnumSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),enumNames:array(string2()).optional(),default:string2().optional()});SingleSelectEnumSchemaSchema=union2([UntitledSingleSelectEnumSchemaSchema,TitledSingleSelectEnumSchemaSchema]);UntitledMultiSelectEnumSchemaSchema=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({type:literal("string"),enum:array(string2())}),default:array(string2()).optional()});TitledMultiSelectEnumSchemaSchema=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({anyOf:array(object({const:string2(),title:string2()}))}),default:array(string2()).optional()});MultiSelectEnumSchemaSchema=union2([UntitledMultiSelectEnumSchemaSchema,TitledMultiSelectEnumSchemaSchema]);EnumSchemaSchema=union2([LegacyTitledEnumSchemaSchema,SingleSelectEnumSchemaSchema,MultiSelectEnumSchemaSchema]);PrimitiveSchemaDefinitionSchema=union2([EnumSchemaSchema,BooleanSchemaSchema,StringSchemaSchema,NumberSchemaSchema]);ElicitRequestFormParamsSchema=TaskAugmentedRequestParamsSchema.extend({mode:literal("form").optional(),message:string2(),requestedSchema:object({type:literal("object"),properties:record(string2(),PrimitiveSchemaDefinitionSchema),required:array(string2()).optional()})});ElicitRequestURLParamsSchema=TaskAugmentedRequestParamsSchema.extend({mode:literal("url"),message:string2(),elicitationId:string2(),url:string2().url()});ElicitRequestParamsSchema=union2([ElicitRequestFormParamsSchema,ElicitRequestURLParamsSchema]);ElicitRequestSchema=RequestSchema.extend({method:literal("elicitation/create"),params:ElicitRequestParamsSchema});ElicitationCompleteNotificationParamsSchema=NotificationsParamsSchema.extend({elicitationId:string2()});ElicitationCompleteNotificationSchema=NotificationSchema.extend({method:literal("notifications/elicitation/complete"),params:ElicitationCompleteNotificationParamsSchema});ElicitResultSchema=ResultSchema.extend({action:_enum2(["accept","decline","cancel"]),content:preprocess(val=>val===null?void 0:val,record(string2(),union2([string2(),number2(),boolean2(),array(string2())])).optional())});ResourceTemplateReferenceSchema=object({type:literal("ref/resource"),uri:string2()});PromptReferenceSchema=object({type:literal("ref/prompt"),name:string2()});CompleteRequestParamsSchema=BaseRequestParamsSchema.extend({ref:union2([PromptReferenceSchema,ResourceTemplateReferenceSchema]),argument:object({name:string2(),value:string2()}),context:object({arguments:record(string2(),string2()).optional()}).optional()});CompleteRequestSchema=RequestSchema.extend({method:literal("completion/complete"),params:CompleteRequestParamsSchema});CompleteResultSchema=ResultSchema.extend({completion:looseObject({values:array(string2()).max(100),total:optional(number2().int()),hasMore:optional(boolean2())})});RootSchema=object({uri:string2().startsWith("file://"),name:string2().optional(),_meta:record(string2(),unknown()).optional()});ListRootsRequestSchema=RequestSchema.extend({method:literal("roots/list"),params:BaseRequestParamsSchema.optional()});ListRootsResultSchema=ResultSchema.extend({roots:array(RootSchema)});RootsListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/roots/list_changed"),params:NotificationsParamsSchema.optional()});ClientRequestSchema=union2([PingRequestSchema,InitializeRequestSchema,CompleteRequestSchema,SetLevelRequestSchema,GetPromptRequestSchema,ListPromptsRequestSchema,ListResourcesRequestSchema,ListResourceTemplatesRequestSchema,ReadResourceRequestSchema,SubscribeRequestSchema,UnsubscribeRequestSchema,CallToolRequestSchema,ListToolsRequestSchema,GetTaskRequestSchema,GetTaskPayloadRequestSchema,ListTasksRequestSchema,CancelTaskRequestSchema]);ClientNotificationSchema=union2([CancelledNotificationSchema,ProgressNotificationSchema,InitializedNotificationSchema,RootsListChangedNotificationSchema,TaskStatusNotificationSchema]);ClientResultSchema=union2([EmptyResultSchema,CreateMessageResultSchema,CreateMessageResultWithToolsSchema,ElicitResultSchema,ListRootsResultSchema,GetTaskResultSchema,ListTasksResultSchema,CreateTaskResultSchema]);ServerRequestSchema=union2([PingRequestSchema,CreateMessageRequestSchema,ElicitRequestSchema,ListRootsRequestSchema,GetTaskRequestSchema,GetTaskPayloadRequestSchema,ListTasksRequestSchema,CancelTaskRequestSchema]);ServerNotificationSchema=union2([CancelledNotificationSchema,ProgressNotificationSchema,LoggingMessageNotificationSchema,ResourceUpdatedNotificationSchema,ResourceListChangedNotificationSchema,ToolListChangedNotificationSchema,PromptListChangedNotificationSchema,TaskStatusNotificationSchema,ElicitationCompleteNotificationSchema]);ServerResultSchema=union2([EmptyResultSchema,InitializeResultSchema,CompleteResultSchema,GetPromptResultSchema,ListPromptsResultSchema,ListResourcesResultSchema,ListResourceTemplatesResultSchema,ReadResourceResultSchema,CallToolResultSchema,ListToolsResultSchema,GetTaskResultSchema,ListTasksResultSchema,CreateTaskResultSchema])}});var require_draft7=__commonJS({"../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft7.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var core_1=require_core3();var validation_1=require_validation();var applicator_1=require_applicator();var format_1=require_format2();var metadata_1=require_metadata();var draft7Vocabularies=[core_1.default,validation_1.default,(0,applicator_1.default)(),format_1.default,metadata_1.metadataVocabulary,metadata_1.contentVocabulary];exports.default=draft7Vocabularies}});var require_json_schema_draft_07=__commonJS({"../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.json"(exports,module2){module2.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:true,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:true,readOnly:{type:"boolean",default:false},examples:{type:"array",items:true},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:true},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:false},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:true,enum:{type:"array",items:true,minItems:1,uniqueItems:true},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:true}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:true}}});var require_ajv=__commonJS({"../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.js"(exports,module2){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.MissingRefError=exports.ValidationError=exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=exports.Ajv=void 0;var core_1=require_core2();var draft7_1=require_draft7();var discriminator_1=require_discriminator();var draft7MetaSchema=require_json_schema_draft_07();var META_SUPPORT_DATA=["/properties"];var META_SCHEMA_ID="http://json-schema.org/draft-07/schema";var Ajv=class extends core_1.default{_addVocabularies(){super._addVocabularies();draft7_1.default.forEach(v=>this.addVocabulary(v));if(this.opts.discriminator)this.addKeyword(discriminator_1.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();if(!this.opts.meta)return;const metaSchema=this.opts.$data?this.$dataMetaSchema(draft7MetaSchema,META_SUPPORT_DATA):draft7MetaSchema;this.addMetaSchema(metaSchema,META_SCHEMA_ID,false);this.refs["http://json-schema.org/schema"]=META_SCHEMA_ID}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(META_SCHEMA_ID)?META_SCHEMA_ID:void 0)}};exports.Ajv=Ajv;module2.exports=exports=Ajv;module2.exports.Ajv=Ajv;Object.defineProperty(exports,"__esModule",{value:true});exports.default=Ajv;var validate_1=require_validate();Object.defineProperty(exports,"KeywordCxt",{enumerable:true,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen();Object.defineProperty(exports,"_",{enumerable:true,get:function(){return codegen_1._}});Object.defineProperty(exports,"str",{enumerable:true,get:function(){return codegen_1.str}});Object.defineProperty(exports,"stringify",{enumerable:true,get:function(){return codegen_1.stringify}});Object.defineProperty(exports,"nil",{enumerable:true,get:function(){return codegen_1.nil}});Object.defineProperty(exports,"Name",{enumerable:true,get:function(){return codegen_1.Name}});Object.defineProperty(exports,"CodeGen",{enumerable:true,get:function(){return codegen_1.CodeGen}});var validation_error_1=require_validation_error();Object.defineProperty(exports,"ValidationError",{enumerable:true,get:function(){return validation_error_1.default}});var ref_error_1=require_ref_error();Object.defineProperty(exports,"MissingRefError",{enumerable:true,get:function(){return ref_error_1.default}})}});var require_formats=__commonJS({"../../node_modules/.pnpm/ajv-formats@3.0.1/node_modules/ajv-formats/dist/formats.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.formatNames=exports.fastFormats=exports.fullFormats=void 0;function fmtDef(validate2,compare){return{validate:validate2,compare}}exports.fullFormats={date:fmtDef(date5,compareDate),time:fmtDef(getTime(true),compareTime),"date-time":fmtDef(getDateTime(true),compareDateTime),"iso-time":fmtDef(getTime(),compareIsoTime),"iso-date-time":fmtDef(getDateTime(),compareIsoDateTime),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte,int32:{type:"number",validate:validateInt32},int64:{type:"number",validate:validateInt64},float:{type:"number",validate:validateNumber},double:{type:"number",validate:validateNumber},password:true,binary:true};exports.fastFormats={...exports.fullFormats,date:fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,compareDate),time:fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareTime),"date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareDateTime),"iso-time":fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoTime),"iso-date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoDateTime),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};exports.formatNames=Object.keys(exports.fullFormats);function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var DATE=/^(\d\d\d\d)-(\d\d)-(\d\d)$/;var DAYS=[0,31,28,31,30,31,30,31,31,30,31,30,31];function date5(str3){const matches=DATE.exec(str3);if(!matches)return false;const year=+matches[1];const month=+matches[2];const day=+matches[3];return month>=1&&month<=12&&day>=1&&day<=(month===2&&isLeapYear(year)?29:DAYS[month])}function compareDate(d1,d2){if(!(d1&&d2))return void 0;if(d1>d2)return 1;if(d1<d2)return-1;return 0}var TIME=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function getTime(strictTimeZone){return function time3(str3){const matches=TIME.exec(str3);if(!matches)return false;const hr=+matches[1];const min=+matches[2];const sec=+matches[3];const tz=matches[4];const tzSign=matches[5]==="-"?-1:1;const tzH=+(matches[6]||0);const tzM=+(matches[7]||0);if(tzH>23||tzM>59||strictTimeZone&&!tz)return false;if(hr<=23&&min<=59&&sec<60)return true;const utcMin=min-tzM*tzSign;const utcHr=hr-tzH*tzSign-(utcMin<0?1:0);return(utcHr===23||utcHr===-1)&&(utcMin===59||utcMin===-1)&&sec<61}}function compareTime(s1,s2){if(!(s1&&s2))return void 0;const t1=new Date("2020-01-01T"+s1).valueOf();const t2=new Date("2020-01-01T"+s2).valueOf();if(!(t1&&t2))return void 0;return t1-t2}function compareIsoTime(t1,t2){if(!(t1&&t2))return void 0;const a1=TIME.exec(t1);const a2=TIME.exec(t2);if(!(a1&&a2))return void 0;t1=a1[1]+a1[2]+a1[3];t2=a2[1]+a2[2]+a2[3];if(t1>t2)return 1;if(t1<t2)return-1;return 0}var DATE_TIME_SEPARATOR=/t|\s/i;function getDateTime(strictTimeZone){const time3=getTime(strictTimeZone);return function date_time(str3){const dateTime=str3.split(DATE_TIME_SEPARATOR);return dateTime.length===2&&date5(dateTime[0])&&time3(dateTime[1])}}function compareDateTime(dt1,dt2){if(!(dt1&&dt2))return void 0;const d1=new Date(dt1).valueOf();const d2=new Date(dt2).valueOf();if(!(d1&&d2))return void 0;return d1-d2}function compareIsoDateTime(dt1,dt2){if(!(dt1&&dt2))return void 0;const[d1,t1]=dt1.split(DATE_TIME_SEPARATOR);const[d2,t2]=dt2.split(DATE_TIME_SEPARATOR);const res=compareDate(d1,d2);if(res===void 0)return void 0;return res||compareTime(t1,t2)}var NOT_URI_FRAGMENT=/\/|:/;var URI=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function uri(str3){return NOT_URI_FRAGMENT.test(str3)&&URI.test(str3)}var BYTE=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function byte(str3){BYTE.lastIndex=0;return BYTE.test(str3)}var MIN_INT32=-(2**31);var MAX_INT32=2**31-1;function validateInt32(value){return Number.isInteger(value)&&value<=MAX_INT32&&value>=MIN_INT32}function validateInt64(value){return Number.isInteger(value)}function validateNumber(){return true}var Z_ANCHOR=/[^\\]\\Z/;function regex(str3){if(Z_ANCHOR.test(str3))return false;try{new RegExp(str3);return true}catch(e){return false}}}});var require_limit=__commonJS({"../../node_modules/.pnpm/ajv-formats@3.0.1/node_modules/ajv-formats/dist/limit.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.formatLimitDefinition=void 0;var ajv_1=require_ajv();var codegen_1=require_codegen();var ops=codegen_1.operators;var KWDs={formatMaximum:{okStr:"<=",ok:ops.LTE,fail:ops.GT},formatMinimum:{okStr:">=",ok:ops.GTE,fail:ops.LT},formatExclusiveMaximum:{okStr:"<",ok:ops.LT,fail:ops.GTE},formatExclusiveMinimum:{okStr:">",ok:ops.GT,fail:ops.LTE}};var error51={message:({keyword,schemaCode})=>(0,codegen_1.str)`should be ${KWDs[keyword].okStr} ${schemaCode}`,params:({keyword,schemaCode})=>(0,codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`};exports.formatLimitDefinition={keyword:Object.keys(KWDs),type:"string",schemaType:"string",$data:true,error:error51,code(cxt){const{gen,data,schemaCode,keyword,it}=cxt;const{opts,self:self2}=it;if(!opts.validateFormats)return;const fCxt=new ajv_1.KeywordCxt(it,self2.RULES.all.format.definition,"format");if(fCxt.$data)validate$DataFormat();else validateFormat();function validate$DataFormat(){const fmts=gen.scopeValue("formats",{ref:self2.formats,code:opts.code.formats});const fmt=gen.const("fmt",(0,codegen_1._)`${fmts}[${fCxt.schemaCode}]`);cxt.fail$data((0,codegen_1.or)((0,codegen_1._)`typeof ${fmt} != "object"`,(0,codegen_1._)`${fmt} instanceof RegExp`,(0,codegen_1._)`typeof ${fmt}.compare != "function"`,compareCode(fmt)))}function validateFormat(){const format=fCxt.schema;const fmtDef=self2.formats[format];if(!fmtDef||fmtDef===true)return;if(typeof fmtDef!="object"||fmtDef instanceof RegExp||typeof fmtDef.compare!="function"){throw new Error(`"${keyword}": format "${format}" does not define "compare" function`)}const fmt=gen.scopeValue("formats",{key:format,ref:fmtDef,code:opts.code.formats?(0,codegen_1._)`${opts.code.formats}${(0,codegen_1.getProperty)(format)}`:void 0});cxt.fail$data(compareCode(fmt))}function compareCode(fmt){return(0,codegen_1._)`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`}},dependencies:["format"]};var formatLimitPlugin=ajv=>{ajv.addKeyword(exports.formatLimitDefinition);return ajv};exports.default=formatLimitPlugin}});var require_dist2=__commonJS({"../../node_modules/.pnpm/ajv-formats@3.0.1/node_modules/ajv-formats/dist/index.js"(exports,module2){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var formats_1=require_formats();var limit_1=require_limit();var codegen_1=require_codegen();var fullName=new codegen_1.Name("fullFormats");var fastName=new codegen_1.Name("fastFormats");var formatsPlugin=(ajv,opts={keywords:true})=>{if(Array.isArray(opts)){addFormats(ajv,opts,formats_1.fullFormats,fullName);return ajv}const[formats,exportName]=opts.mode==="fast"?[formats_1.fastFormats,fastName]:[formats_1.fullFormats,fullName];const list=opts.formats||formats_1.formatNames;addFormats(ajv,list,formats,exportName);if(opts.keywords)(0,limit_1.default)(ajv);return ajv};formatsPlugin.get=(name,mode="full")=>{const formats=mode==="fast"?formats_1.fastFormats:formats_1.fullFormats;const f=formats[name];if(!f)throw new Error(`Unknown format "${name}"`);return f};function addFormats(ajv,list,fs,exportName){var _a3;var _b;(_a3=(_b=ajv.opts.code).formats)!==null&&_a3!==void 0?_a3:_b.formats=(0,codegen_1._)`require("ajv-formats/dist/formats").${exportName}`;for(const f of list)ajv.addFormat(f,fs[f])}module2.exports=exports=formatsPlugin;Object.defineProperty(exports,"__esModule",{value:true});exports.default=formatsPlugin}});import{execFileSync as execFileSync4,spawnSync}from"node:child_process";import{mkdirSync as mkdirSync6,writeFileSync as writeFileSync4,cpSync,rmSync as rmSync4,existsSync as existsSync3,readFileSync as readFileSync6,statSync as statSync4}from"node:fs";import{tmpdir as tmpdir4}from"node:os";import{isAbsolute,join as join7,resolve as resolve2}from"node:path";import{fileURLToPath}from"node:url";import{createHash as createHash12}from"node:crypto";var import_nkeys=__toESM(require_mod(),1);var import_codec=__toESM(require_codec(),1);import{createPrivateKey,createPublicKey,sign,verify}from"node:crypto";var ED25519_PKCS8=Buffer.from("302e020100300506032b657004220420","hex");var ED25519_SPKI=Buffer.from("302a300506032b6570032100","hex");function nativeNkeySigner(seed){const encodedSeed=Uint8Array.from(seed);const decoded=import_codec.Codec.decodeSeed(encodedSeed);if(decoded.buf.byteLength!==32){decoded.buf.fill(0);encodedSeed.fill(0);throw new import_nkeys.NKeysError(import_nkeys.NKeysErrorCode.InvalidSeedLen)}if(decoded.prefix===import_nkeys.Prefix.Curve){decoded.buf.fill(0);encodedSeed.fill(0);throw new import_nkeys.NKeysError(import_nkeys.NKeysErrorCode.InvalidCurveOperation)}const der=Buffer.concat([ED25519_PKCS8,decoded.buf]);let privateKey;let publicKey;let publicBytes;let publicNkey;try{privateKey=createPrivateKey({key:der,format:"der",type:"pkcs8"});publicKey=createPublicKey(privateKey);const jwk=publicKey.export({format:"jwk"});if(jwk.crv!=="Ed25519"||typeof jwk.x!=="string")throw new Error("native nkey signer did not derive an Ed25519 public key");publicBytes=Buffer.from(jwk.x,"base64url");publicNkey=new TextDecoder().decode(import_codec.Codec.encode(decoded.prefix,publicBytes))}catch(error51){encodedSeed.fill(0);throw error51}finally{decoded.buf.fill(0);der.fill(0)}const active=()=>{if(!privateKey)throw new import_nkeys.NKeysError(import_nkeys.NKeysErrorCode.ClearedPair);return privateKey};return{getPublicKey(){active();return publicNkey},getSeed(){active();return encodedSeed.slice()},getPrivateKey(){active();const raw=import_codec.Codec.decodeSeed(encodedSeed).buf;const secret=Buffer.concat([raw,publicBytes]);try{return import_codec.Codec.encode(import_nkeys.Prefix.Private,secret)}finally{raw.fill(0);secret.fill(0)}},sign(input){return sign(null,input,active())},verify(input,signature){active();return verify(null,input,publicKey,signature)},clear(){encodedSeed.fill(0);privateKey=void 0},seal(){throw new import_nkeys.NKeysError(import_nkeys.NKeysErrorCode.InvalidNKeyOperation)},open(){throw new import_nkeys.NKeysError(import_nkeys.NKeysErrorCode.InvalidNKeyOperation)}}}import{execFileSync}from"node:child_process";import{linkSync,mkdirSync,readFileSync,rmSync,statSync,unlinkSync,writeFileSync}from"node:fs";import{randomBytes}from"node:crypto";import{dirname}from"node:path";function processStatFields(pid){try{const stat=readFileSync(`/proc/${pid}/stat`,"utf8");const after=stat.lastIndexOf(") ");if(after<0||stat.slice(0,stat.indexOf(" "))!==String(pid))return void 0;return stat.slice(after+2).trim().split(/\s+/)}catch{return void 0}}function processStartToken(pid){if(process.platform==="win32")return void 0;if(process.platform==="linux")return processStatFields(pid)?.[19];try{const out=execFileSync("ps",["-o","lstart=","-p",String(pid)],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();return out||void 0}catch{return void 0}}function sleepSync(ms){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,ms)}function pidAlive(pid){try{process.kill(pid,0);return true}catch(e){const code=e.code;if(code==="ESRCH")return false;if(code==="EPERM")return true;throw e}}function readOwner(path){let raw;try{raw=readFileSync(path,"utf8")}catch(e){const code=e.code;if(code==="ENOENT")return void 0;if(code==="EISDIR"||code==="EACCES"||code==="EPERM")throw new Error(`advisory lock path ${path} is unreadable (${code}) - remove the stray file or directory there and retry`);throw e}let ino;try{ino=statSync(path).ino}catch{}try{return{owner:JSON.parse(raw),ino}}catch{return{ino}}}function inspectLock(path){const inspection=inspectLockSnapshot(path);return inspection.state==="active"?{state:"active",owner:inspection.owner}:{state:inspection.state}}function inspectLockSnapshot(path){const found=readOwner(path);if(found===void 0)return{state:"absent"};const{owner:owner2,ino}=found;if(!owner2||typeof owner2.pid!=="number"||!Number.isInteger(owner2.pid)||owner2.pid<=0||typeof owner2.nonce!=="string"){return{state:"stale",ino}}if(!pidAlive(owner2.pid))return{state:"stale",ino};if(owner2.start!==void 0){const fields=process.platform==="linux"?processStatFields(owner2.pid):void 0;const now=process.platform==="linux"?fields?.[19]:processStartToken(owner2.pid);if(now===owner2.start&&fields?.[0]==="Z")return{state:"stale",ino};if(now!==void 0&&now!==owner2.start)return{state:"stale",ino}}return{state:"active",owner:owner2,ino}}function publishAtomic(path,content){const tmp=`${path}.${randomBytes(8).toString("hex")}.tmp`;writeFileSync(tmp,content,{mode:384,flag:"wx"});try{linkSync(tmp,path);return true}catch(e){if(e.code==="EEXIST")return false;throw e}finally{try{unlinkSync(tmp)}catch{}}}function reclaimStale(path,inspectedIno){const sentinel=`${path}.reclaim`;const mine=JSON.stringify({pid:process.pid,start:processStartToken(process.pid),nonce:randomBytes(8).toString("hex"),ts:Date.now()});if(!publishAtomic(sentinel,mine)){const reclaimer=inspectLock(sentinel);if(reclaimer.state==="stale")throw new Error(`a lock reclaim was interrupted and its sentinel remains (${sentinel}) - if no cotal process is running, remove it and retry`);return reclaimer.state==="active"?reclaimer.owner:void 0}try{const inspection=inspectLockSnapshot(path);if(inspection.state!=="stale")return;if(inspectedIno!==void 0&&inspection.ino!==void 0&&inspection.ino!==inspectedIno)return;unlinkSync(path)}catch(e){if(e.code!=="ENOENT")throw e}finally{try{unlinkSync(sentinel)}catch{}}}function newAttempt(path,opts){mkdirSync(dirname(path),{recursive:true,mode:448});const nonce3=randomBytes(12).toString("hex");const owner2={pid:process.pid,start:processStartToken(process.pid),nonce:nonce3,ts:Date.now(),...opts.label?{label:opts.label}:{}};return{path,nonce:nonce3,content:`${JSON.stringify(owner2)}
|
|
113
|
-
`}}function tryAcquireOnce({path,nonce:nonce3,content}){if(publishAtomic(path,content)){let released=false;return{kind:"acquired",held:{nonce:nonce3,release(){if(released)return;released=true;const found=readOwner(path);if(found?.owner?.nonce===nonce3){try{unlinkSync(path)}catch{}}}}}}const inspection=inspectLockSnapshot(path);if(inspection.state==="absent")return{kind:"retry"};if(inspection.state==="stale"){const reclaimer=reclaimStale(path,inspection.ino);return reclaimer?{kind:"reclaiming",owner:reclaimer}:{kind:"retry"}}return{kind:"held",owner:inspection.owner}}function reclaimPollMs(pollMs){return Math.min(pollMs,50)}function acquireLock(path,opts={}){const waitMs=opts.waitMs??3e5;const pollMs=opts.pollMs??200;const attempt=newAttempt(path,opts);const deadline=Date.now()+waitMs;for(;;){const result=tryAcquireOnce(attempt);switch(result.kind){case"acquired":return result.held;case"retry":continue;case"reclaiming":sleepSync(reclaimPollMs(pollMs));continue;case"held":if(Date.now()>=deadline)throw lockTimeoutError(path,opts,result.owner,waitMs);sleepSync(pollMs)}}}function lockTimeoutError(path,opts,owner2,waitMs){return opts.onTimeout?.(owner2)??new Error(`${opts.label??"a lock"} is held by a live process (pid ${owner2.pid}) and did not release within ${Math.round(waitMs/1e3)}s - retry, or if it is wedged, remove ${path}`)}import{createHash}from"node:crypto";import{lstatSync,mkdirSync as mkdirSync2}from"node:fs";import{userInfo}from"node:os";import{join}from"node:path";var LocalConsumerHeldError=class extends Error{};function localConsumerClaimPath(servers,space2,owner2,actor2,lifecycleUid){const user=userInfo();const root=process.platform==="linux"?`/tmp/cotal-consumers-${user.uid}`:join(user.homedir,".cotal-consumers");mkdirSync2(root,{recursive:true,mode:448});const st=lstatSync(root);if(!st.isDirectory()||st.isSymbolicLink()||process.platform!=="win32"&&(st.uid!==user.uid||(st.mode&63)!==0))throw new Error("local consumer custody directory is not private to this OS user");const targets=[...new Set(servers.split(",").map(s=>{const u=new URL(s.trim().includes("://")?s.trim():`nats://${s.trim()}`);u.username="";u.password="";if(!u.port)u.port=u.protocol==="nats:"?"4222":u.protocol==="wss:"?"443":"80";return u.href}))].sort();const key=createHash("sha256").update(JSON.stringify([targets,space2,owner2,actor2,lifecycleUid])).digest("hex");const path=join(root,`${key}.lock`);try{const file2=lstatSync(path);if(!file2.isFile()||file2.isSymbolicLink()||process.platform!=="win32"&&(file2.uid!==user.uid||(file2.mode&63)!==0))throw new Error("local consumer custody file is not private to this OS user")}catch(error51){if(error51.code!=="ENOENT")throw error51}return path}function acquireLocalConsumer(servers,space2,owner2,actor2,lifecycleUid){return acquireLock(localConsumerClaimPath(servers,space2,owner2,actor2,lifecycleUid),{waitMs:0,label:"local inbox consumer",onTimeout:()=>new LocalConsumerHeldError(`local inbox already has a consuming session for ${owner2}.${actor2} in space "${space2}"; preserve that session and choose a distinct actor for a new launch`)})}var import_nkeys2=__toESM(require_mod(),1);var ILLEGAL=/[^A-Za-z0-9_-]/g;function token(s){const t=s.trim().replace(ILLEGAL,"_");return t.length>0?t:"_"}var ROOT="cotal";function spacePrefix(space2){return`${ROOT}.${token(space2)}`}function normalizeMentions(mentions){if(!mentions?.length)return void 0;const out=[...new Set(mentions.map(m=>m.trim().toLowerCase()).filter(m=>m.length>0))];return out.length?out:void 0}function channelPath(channel){const segs=channel.split(".").map(s=>s.trim()).filter(s=>s.length>0);if(segs.length===0)return"_";return segs.map((s,i)=>{if(s===">"){if(i!==segs.length-1)throw new Error(`channel "${channel}": '>' is only valid as the last segment`);return">"}return s==="*"?"*":token(s)}).join(".")}function assertValidRole(role){if(typeof role!=="string"||!/^[A-Za-z0-9_-]+$/.test(role))throw new Error(`invalid role "${role}": must be a single NATS-safe token ([A-Za-z0-9_-]) - a role is an address, so it is rejected rather than silently rewritten`);return role}function routeToken(s){return s==="*"?"*":assertValidRole(s)}function ownerToken(s){return s==="*"?"*":assertValidOwnerToken(s)}function chatSubject(space2,owner2,actor2,channel){return`${spacePrefix(space2)}.chat.${ownerToken(owner2)}.${ownerToken(actor2)}.${channelPath(channel)}`}function isConcreteChannel(channel){return!channel.split(".").some(s=>s.trim()==="*"||s.trim()===">")}function subjectMatches(pattern,subject){const p=pattern.split(".");const s=subject.split(".");for(let i=0;i<p.length;i++){if(p[i]===">")return i<s.length;if(i>=s.length)return false;if(p[i]==="*")continue;if(p[i]!==s[i])return false}return p.length===s.length}function assertValidChannel(channel){if(channel.length>MAX_CHANNEL_LENGTH)throw new Error(`invalid channel "${channel.slice(0,32)}\u2026": ${channel.length} characters exceeds the ${MAX_CHANNEL_LENGTH}-character limit (every grant line a channel mints rides the CONNECT line)`);const segs=channel.split(".");if(!channel.length||segs.some(s=>s.length===0))throw new Error(`invalid channel "${channel}": empty segment (no leading/trailing/double dots)`);segs.forEach((s,i)=>{if(s===">"){if(i!==segs.length-1)throw new Error(`invalid channel "${channel}": '>' is only valid as the last segment`);return}if(s==="*")return;if(!/^[A-Za-z0-9_-]+$/.test(s))throw new Error(`invalid channel "${channel}": segment "${s}" must be a NATS-safe token ([A-Za-z0-9_-])${/[*>]/.test(s)?", '*', or '>'":""} - policy channel names can't contain characters the wire layer would rewrite`)});return channel}var MAX_CHANNEL_LENGTH=4096;function assertValidOwnerToken(owner2){if(typeof owner2!=="string"||!/^[A-Za-z0-9_]+$/.test(owner2))throw new Error(`invalid owner/actor token "${owner2}": must be a single NATS-safe token ([A-Za-z0-9_]) - no dots, '*', '>', or '-'. A separator or wildcard in an id is lane breakout or aliasing, and '-' is reserved as the principal name-form separator, so it is rejected rather than silently rewritten.`);return owner2}function principalKey(owner2,actor2){assertValidOwnerToken(owner2);assertValidOwnerToken(actor2);return{key:`${owner2}.${actor2}`,name:`${owner2}-${actor2}`}}var LIFECYCLE_TOKEN=/^[a-z0-9]{26,32}$/;function assertLifecycleToken(v,what="lifecycleUid"){if(!LIFECYCLE_TOKEN.test(v))throw new Error(`${what} "${v}" is not a valid lifecycle token ([a-z0-9]{26,32})`);return v}function mintLifecycleUid(){return assertLifecycleToken(BigInt(`0x${Array.from(globalThis.crypto.getRandomValues(new Uint8Array(20)),b=>b.toString(16).padStart(2,"0")).join("")}`).toString(36).padStart(26,"0"))}function lifecycleNameKey(owner2,actor2,lifecycleUid){return`${principalKey(owner2,actor2).name}-${assertLifecycleToken(lifecycleUid)}`}function parseLifecycleSubjectKey(key){if(typeof key!=="string")return null;const parts=key.split(".");if(parts.length!==3)return null;const[owner2,actor2,uid2]=parts;if(!/^[A-Za-z0-9_]+$/.test(owner2)||!/^[A-Za-z0-9_]+$/.test(actor2)||!LIFECYCLE_TOKEN.test(uid2))return null;return{owner:owner2,actor:actor2,lifecycleUid:uid2}}function parsePrincipalKey(key){if(typeof key!=="string")return null;const dot=key.indexOf(".");if(dot<=0||dot>=key.length-1)return null;const owner2=key.slice(0,dot);const actor2=key.slice(dot+1);if(!/^[A-Za-z0-9_]+$/.test(owner2)||!/^[A-Za-z0-9_]+$/.test(actor2))return null;return{owner:owner2,actor:actor2}}function assertInboxConnId(connId){if(typeof connId!=="string"||!/^[A-Za-z0-9_-]{8,120}$/.test(connId))throw new Error(`invalid connId/inbox nonce ${JSON.stringify(connId)} - must match [A-Za-z0-9_-]{8,120} (no subject metacharacters; guards the _INBOX_<connId>.> grant against wildcard escalation)`);return connId}var DEV_OWNER="local";var DERIVED_OWNER_PREFIX="u_";function assertDerivedOwnerToken(owner2){if(typeof owner2!=="string"||!/^u_[a-z2-7]{26}$/.test(owner2))throw new Error(`invalid derived owner token "${owner2}": expected "${DERIVED_OWNER_PREFIX}" + 26 lowercase base32 chars ([a-z2-7]). Owner tokens are derived server-side at the auth callout and are structurally disjoint from nkeys; anything else at an owner boundary is rejected, not rewritten.`);return owner2}function assertPrincipalOwnerToken(owner2,opts={}){if(opts.allowLocal&&owner2===DEV_OWNER)return owner2;if(opts.allowPlatform&&/^p_[a-z2-7]{26}$/.test(owner2))return owner2;try{return assertDerivedOwnerToken(owner2)}catch{throw new Error(`invalid principal owner "${owner2}" at a trust boundary: expected a derived owner (u_\u2026)${opts.allowLocal?` or the reserved dev owner "${DEV_OWNER}"`:""}${opts.allowPlatform?" or a platform owner (p_\u2026)":""} - an nkey-shaped or arbitrary token is not a real owner (flip criterion 2: owners are nkey-disjoint).`)}}function isPrincipalOwnerToken(owner2,opts={allowLocal:true}){try{assertPrincipalOwnerToken(owner2,{allowLocal:opts.allowLocal??true,allowPlatform:opts.allowPlatform??false});return true}catch{return false}}function channelInAllow(allow,channel){return allow.some(a=>subjectMatches(a,channel))}function resolveReadAcl(subscribe,allowSubscribe){const allow=allowSubscribe?.length?allowSubscribe:subscribe;for(const ch of subscribe)if(!channelInAllow(allow,ch))throw new Error(`subscribe "${ch}" is not within allowSubscribe [${allow.join(", ")}]`);return allow}function patternCovers(cap,pattern){const c=cap.split(".");const p=pattern.split(".");if(c.slice(0,-1).includes(">")||p.slice(0,-1).includes(">"))return false;for(let i=0;i<c.length;i++){if(c[i]===">")return p.length>i;if(i>=p.length)return false;if(p[i]===">")return false;if(c[i]==="*")continue;if(p[i]==="*")return false;if(c[i]!==p[i])return false}return c.length===p.length}function patternInAllow(allow,pattern){return allow.some(a=>patternCovers(a,pattern))}function unicastSubject(space2,recipOwner,recipActor,sndOwner,sndActor){return`${spacePrefix(space2)}.inst.${ownerToken(recipOwner)}.${ownerToken(recipActor)}.${ownerToken(sndOwner)}.${ownerToken(sndActor)}`}function unicastRecvFilter(space2,owner2,actor2){return`${spacePrefix(space2)}.inst.${ownerToken(owner2)}.${ownerToken(actor2)}.>`}function anycastSubject(space2,service,owner2,actor2){return`${spacePrefix(space2)}.svc.${routeToken(service)}.${ownerToken(owner2)}.${ownerToken(actor2)}`}function anycastServeFilter(space2,service){return`${spacePrefix(space2)}.svc.${routeToken(service)}.>`}function controlServiceSubject(space2,service,owner2,actor2){return`${spacePrefix(space2)}.ctl.${routeToken(service)}.${ownerToken(owner2)}.${ownerToken(actor2)}`}var CONTROL_DELIVERY="delivery";var CONTROL_DELIVERY_ADMIN="delivery-admin";var LIVENESS_ROUTE="live";function livenessSubject(space2,plane,owner2,actor2){return`${spacePrefix(space2)}.${LIVENESS_ROUTE}.${routeToken(plane)}.${ownerToken(owner2)}.${ownerToken(actor2)}`}function livenessServeFilter(space2,plane){return`${spacePrefix(space2)}.${LIVENESS_ROUTE}.${routeToken(plane)}.*.*`}function spaceWildcard(space2){return`${spacePrefix(space2)}.>`}function chatWildcard(space2){return`${spacePrefix(space2)}.chat.>`}function parseSubject(subject){const parts=subject.split(".");if(parts[0]!==ROOT)return null;const kind=parts[2];const mk=(kind2,owner2,actor2,rest)=>({kind:kind2,owner:owner2,actor:actor2,sender:`${owner2}.${actor2}`,rest});if(kind==="chat"){if(parts.length<6)return null;return mk(kind,parts[3],parts[4],parts.slice(5).join("."))}if(kind==="inst"){if(parts.length!==7)return null;return mk(kind,parts[5],parts[6],`${parts[3]}.${parts[4]}`)}if(kind==="svc"||kind==="ctl"){if(parts.length!==6)return null;return mk(kind,parts[4],parts[5],parts[3])}return null}function presenceBucket(space2){return`cotal_presence_${token(space2)}`}var PRESENCE_STATUSES={idle:true,waiting:true,working:true,offline:true};function presenceRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function presenceOptionalString(value){return value===void 0||typeof value==="string"}function isPresenceRow(value,key){return presenceRowProblem(value,key)===void 0}function presenceRowProblem(value,key){if(!presenceRecord(value))return"row";if(!presenceRecord(value.card))return"card";const card=value.card;if(typeof card.id!=="string"||card.id.length===0||card.id!==key)return"card.id";if(typeof card.name!=="string")return"card.name";if(!presenceOptionalString(card.role))return"card.role";if(typeof value.status!=="string"||!Object.hasOwn(PRESENCE_STATUSES,value.status))return"status";if(typeof value.ts!=="number"||!Number.isFinite(value.ts))return"ts";if(!presenceOptionalString(value.activity))return"activity";if(!presenceOptionalString(value.attention))return"attention";if(value.condition!==void 0){if(!presenceRecord(value.condition))return"condition";if(typeof value.condition.code!=="string")return"condition.code"}return void 0}function assertPresenceRow(value,key){const field=presenceRowProblem(value,key);if(field!==void 0)throw new TypeError(`invalid presence ${field}`)}function channelBucket(space2){return`cotal_channels_${token(space2)}`}var CHANNEL_DEFAULTS_KEY="=defaults";function membersBucket(space2){return`cotal_members_${token(space2)}`}function memberKey(channel,principal,lifecycleUid){return`${channel}/${principal}.${assertLifecycleToken(lifecycleUid)}`}function parseMemberKey(key){const i=key.indexOf("/");if(i<=0||i>=key.length-1)return null;const channel=key.slice(0,i);const tail=key.slice(i+1);const dot=tail.lastIndexOf(".");if(dot<=0||dot>=tail.length-1)return null;const principal=tail.slice(0,dot);const uid2=tail.slice(dot+1);if(!LIFECYCLE_TOKEN.test(uid2)||parsePrincipalKey(principal)===null)return null;return{channel,principal,lifecycleUid:uid2}}function aclBucket(space2){return`cotal_acl_${token(space2)}`}function aclKey(principal,lifecycleUid){return`${principal}.${assertLifecycleToken(lifecycleUid)}`}function aclAliasFilter(principal){return`${principal}.*`}function membershipBucket(space2){return`cotal_membership_${token(space2)}`}var MEMBERSHIP_FEED_KEY="=feed";function deliveryBucket(space2){return`cotal_delivery_${token(space2)}`}function leaseKey(shardIndex){return`lease.${shardIndex}`}function managerBucket(space2){return`cotal_manager_${token(space2)}`}var MANAGER_LEASE_KEY="lease";function managerLeaseKey(instanceId){return`${MANAGER_LEASE_KEY}.${instanceId}`}var MANAGER_RENEWAL_LEASE_KEY="renewal";function chatStream(space2){return`CHAT_${token(space2)}`}function dmStream(space2){return`DM_${token(space2)}`}function taskStream(space2){return`TASK_${token(space2)}`}function inboxStream(space2){return`INBOX_${token(space2)}`}function dlvStream(space2){return`DLV_${token(space2)}`}function dinboxSubject(space2,owner2,actor2,lifecycleUid){return`${spacePrefix(space2)}.dinbox.${ownerToken(owner2)}.${ownerToken(actor2)}.${assertLifecycleToken(lifecycleUid)}`}function dlvSubject(space2,owner2,actor2,lifecycleUid){return`${spacePrefix(space2)}.dlv.${ownerToken(owner2)}.${ownerToken(actor2)}.${assertLifecycleToken(lifecycleUid)}`}function parseDinboxPrincipal(subject){const parts=subject.split(".");return parts.length===6&&parts[0]===ROOT&&parts[2]==="dinbox"&&LIFECYCLE_TOKEN.test(parts[5])?{owner:parts[3],actor:parts[4],lifecycleUid:parts[5]}:null}function dlvDurable(owner2,actor2,lifecycleUid){return`dlv_${lifecycleNameKey(owner2,actor2,lifecycleUid)}`}var FANOUT_DURABLE="fanout";var INBOX_READER_DURABLE="reader";function fanoutDurable(shard=0,shards=1){return shards<=1?FANOUT_DURABLE:`${FANOUT_DURABLE}_${shard}`}function readerDurable(shard=0,shards=1){return shards<=1?INBOX_READER_DURABLE:`${INBOX_READER_DURABLE}_${shard}`}function chatHistDurable(owner2,actor2,lifecycleUid){return`chathist_${lifecycleNameKey(owner2,actor2,lifecycleUid)}`}var HISTORY_READERS=8;function historyReaderConsumer(readerId,slot){if(typeof readerId!=="string"||!/^[A-Za-z0-9_-]{1,120}$/.test(readerId))throw new Error(`history reader id ${JSON.stringify(readerId)} must match [A-Za-z0-9_-]{1,120}`);if(!Number.isInteger(slot)||slot<0||slot>=HISTORY_READERS)throw new Error(`history reader slot must be an integer in [0, ${HISTORY_READERS}), received ${slot}`);return`hist_${readerId}_${slot}`}function calloutReaderId(serverId,clientId){if(typeof serverId!=="string"||!/^N[A-Z2-7]{55}$/.test(serverId))throw new Error(`history reader server id ${JSON.stringify(serverId)} is not a server public key`);if(!Number.isSafeInteger(clientId)||clientId<1)throw new Error(`history reader client id must be a positive integer, received ${JSON.stringify(clientId)}`);return`${serverId}_${clientId}`}function dmDurable(owner2,actor2,lifecycleUid){return`dm_${lifecycleNameKey(owner2,actor2,lifecycleUid)}`}function taskDurable(service){return`svc_${assertValidRole(service)}`}var RESERVED_COMMANDS=Object.freeze(["describe","cancel"]);var ENDPOINT_LABEL=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;var COMMAND=/^[a-z0-9-]{1,32}$/;var NONCE=/^[A-Za-z0-9_-]{22,64}$/;var ID=/^[A-Za-z0-9_-]{1,64}$/;var DIGEST_HEX=/^[a-f0-9]{64}$/;var EPOCH=/^(0|[1-9][0-9]*)$/;var GENERATION=/^[a-f0-9]{32}$/;function assertGeneration(generation,what="generation"){if(typeof generation!=="string"||!GENERATION.test(generation))throw new Error(`${what} is not an issued generation (32 lowercase hex characters)`);return generation}var MAX_EP_SUBJECT_BYTES=1024;function endpointToken(name){const labels=name.split(".");for(const l of labels){if(!ENDPOINT_LABEL.test(l))throw new Error(`endpoint name label "${l}" in "${name}" is not DNS-shaped ([a-z0-9]([a-z0-9-]*[a-z0-9])?)`)}const tok2=labels.join("_");if(tok2.length>64)throw new Error(`endpoint name token "${tok2}" exceeds 64 characters`);return tok2}function endpointNameOf(token2){return token2.split("_").join(".")}function assertCommandToken(command){if(!COMMAND.test(command))throw new Error(`command "${command}" is not a valid command token ([a-z0-9-]{1,32})`);return command}function assertNonce(nonce3){if(!NONCE.test(nonce3))throw new Error(`nonce is not a valid nonce token ([A-Za-z0-9_-]{22,64}; >=128 bits of CSPRNG entropy)`);return nonce3}function assertIdToken(v,what="id"){if(!ID.test(v))throw new Error(`${what} "${v}" is not a valid id token ([A-Za-z0-9_-]{1,64})`);return v}function assertPoolToken(pool){if(!COMMAND.test(pool))throw new Error(`pool "${pool}" is not a valid pool token ([a-z0-9-]{1,32})`);return pool}function assertBoundedOwner(v,what){assertValidOwnerToken(v);if(v.length>64)throw new Error(`${what} "${v}" exceeds 64 characters`);return v}function assertSized(subject){if(new TextEncoder().encode(subject).length>MAX_EP_SUBJECT_BYTES)throw new Error(`subject exceeds ${MAX_EP_SUBJECT_BYTES} bytes: ${subject.slice(0,80)}\u2026`);return subject}var EP_AUTHZ_MODES=Object.freeze(["self","owner","any","child","ledger","handle","exact"]);var AUTHZ_SET=new Set(EP_AUTHZ_MODES);function isEpAuthzMode(m){return AUTHZ_SET.has(m)}var TARGET_ARITY={self:0,owner:1,any:1,child:1,ledger:1,handle:3,exact:3};function targetTokens(target2){if(target2.mode==="self")return["self"];if(target2.mode==="handle"||target2.mode==="exact")return[target2.mode,assertBoundedOwner(target2.tOwner,"target owner"),assertBoundedOwner(target2.tActor,"target actor"),assertLifecycleToken(target2.tUid,"target lifecycleUid")];return[target2.mode,assertBoundedOwner(target2.tOwner,"target owner")]}function callerTokens(caller){return[assertBoundedOwner(caller.owner,"caller owner"),assertBoundedOwner(caller.actor,"caller actor"),assertLifecycleToken(caller.uid,"caller lifecycleUid")]}function epGoalProgressGrantRow(space2,endpoint,caller){return`${spacePrefix(space2)}.epe.${endpointToken(endpoint)}.*.*.goal.${callerTokens(caller).join(".")}.>`}function isIssuedCaller(caller){return typeof caller.generation==="string"}function callerRailTokens(caller){return isIssuedCaller(caller)?[...callerTokens(caller),assertGeneration(caller.generation,"caller generation")]:callerTokens(caller)}function epPlaneTokens(caller){return isIssuedCaller(caller)?["ep",EP_RAIL_V1]:["ep"]}var EP_RAIL_V1="v1";function requestHead(space2,plane,route,endpoint,command){const parts=[spacePrefix(space2),...plane,route.mode,endpointToken(endpoint)];if(route.mode==="inst")parts.push(route.instanceId);parts.push(assertCommandToken(command));return parts}function epRequestSubject(space2,req){const route=req.route.mode==="inst"?{mode:"inst",instanceId:assertLifecycleToken(req.route.instanceId,"instanceId")}:req.route;const parts=requestHead(space2,epPlaneTokens(req.caller),route,req.endpoint,req.command);if(req.target)parts.push(...targetTokens(req.target));parts.push(...callerRailTokens(req.caller),assertNonce(req.nonce));return assertSized(parts.join("."))}function epCallerReplyFilter(space2,caller){return`${spacePrefix(space2)}.${epPlaneTokens(caller).join(".")}.reply.*.*.*.${callerRailTokens(caller).join(".")}.*`}function epcSubject(space2,digestHex){if(!DIGEST_HEX.test(digestHex))throw new Error(`contract digest "${digestHex}" is not 64 lowercase hex chars`);return`${spacePrefix(space2)}.epc.${digestHex}`}function parseTail(parts,i,withNonce,issued=false){let target2=null;const disc=parts[i];if(disc!==void 0&&AUTHZ_SET.has(disc)){const mode=disc;const arity=TARGET_ARITY[mode];const t=parts.slice(i+1,i+1+arity);if(t.length!==arity)return null;target2=mode==="self"?{mode}:mode==="handle"||mode==="exact"?{mode,tOwner:t[0],tActor:t[1],tUid:t[2]}:{mode,tOwner:t[0]};i+=1+arity}const want=i+3+(issued?1:0)+(withNonce?1:0);if(parts.length!==want)return null;let caller={owner:parts[i],actor:parts[i+1],uid:parts[i+2]};if(issued){const generation=parts[i+3];try{assertGeneration(generation)}catch{return null}caller={...caller,generation};i+=1}return withNonce?{target:target2,caller,nonce:parts[i+3]}:{target:target2,caller}}function parseEpoch(tok2){if(!EPOCH.test(tok2))return null;const n=Number(tok2);return Number.isSafeInteger(n)?n:null}function parseEpSubject(subject){if(new TextEncoder().encode(subject).length>MAX_EP_SUBJECT_BYTES)return null;const parts=subject.split(".");if(parts[0]!==ROOT||parts.length<4)return null;const plane=parts[2];if(plane==="ep"){const issued=parts[3]===EP_RAIL_V1;const o=issued?1:0;const route=parts[3+o];const rail=issued?{rail:EP_RAIL_V1}:{};if(route==="one"||route==="all"){if(parts.length<10+o)return null;const tail=parseTail(parts,6+o,true,issued);if(!tail)return null;return{plane:"request",...rail,route,endpoint:endpointNameOf(parts[4+o]),command:parts[5+o],target:tail.target,caller:tail.caller,nonce:tail.nonce}}if(route==="inst"){if(parts.length<11+o)return null;const tail=parseTail(parts,7+o,true,issued);if(!tail)return null;return{plane:"request",...rail,route,endpoint:endpointNameOf(parts[4+o]),instanceId:parts[5+o],command:parts[6+o],target:tail.target,caller:tail.caller,nonce:tail.nonce}}if(route==="reply"){if(parts.length!==11+2*o)return null;const epoch=parseEpoch(parts[6+o]);if(epoch===null)return null;const triple={owner:parts[7+o],actor:parts[8+o],uid:parts[9+o]};if(!issued)return{plane:"reply",endpoint:endpointNameOf(parts[4]),instanceId:parts[5],epoch,caller:triple,nonce:parts[10]};const generation=parts[11];try{assertGeneration(generation)}catch{return null}return{plane:"reply",rail:EP_RAIL_V1,endpoint:endpointNameOf(parts[5]),instanceId:parts[6],epoch,caller:{...triple,generation},nonce:parts[12]}}return null}if(plane==="epe"){if(parts.length<7)return null;const epoch=parseEpoch(parts[5]);if(epoch===null)return null;return{plane:"event",endpoint:endpointNameOf(parts[3]),instanceId:parts[4],epoch,topic:parts.slice(6)}}if(plane==="epf"){if(parts.length<5)return null;return{plane:"fact",endpoint:endpointNameOf(parts[3]),topic:parts.slice(4)}}if(plane==="epj"){if(parts.length<8)return null;const tail=parseTail(parts,5,false);if(!tail)return null;return{plane:"journal",endpoint:endpointNameOf(parts[3]),command:parts[4],target:tail.target,caller:tail.caller}}if(plane==="ept"){if(parts.length!==8)return null;const epoch=parseEpoch(parts[5]);const phase=parts[7];if(epoch===null||phase!=="schedule"&&phase!=="armed"&&phase!=="fire")return null;return{plane:"timer",endpoint:endpointNameOf(parts[3]),instanceId:parts[4],epoch,timerId:parts[6],phase}}if(plane==="epr"){if(parts.length<7)return null;const epoch=parseEpoch(parts[5]);if(epoch===null)return null;return{plane:"record",endpoint:endpointNameOf(parts[3]),instanceId:parts[4],epoch,kind:parts[6],qualifier:parts.slice(7)}}if(plane==="epc"){if(parts.length!==4||!DIGEST_HEX.test(parts[3]))return null;return{plane:"contract",digestHex:parts[3]}}if(plane==="epw"){if(parts.length!==9)return null;return{plane:"work",endpoint:endpointNameOf(parts[3]),pool:parts[4],acceptance:{owner:parts[5],actor:parts[6],uid:parts[7],id:parts[8]}}}if(plane==="eps"){if(parts.length!==7)return null;const epoch=parseEpoch(parts[5]);const dir=parts[6];if(epoch===null||dir!=="in"&&dir!=="out")return null;return{plane:"session",endpoint:endpointNameOf(parts[3]),sessionId:parts[4],epoch,dir}}return null}import{createHash as createHash2}from"node:crypto";var import_json_canonicalize=__toESM(require_index_umd(),1);var DIGEST_PREFIX="sha256:";var DIGEST_RE=/^sha256:[0-9a-f]{64}$/;function isContractDigest(s){return DIGEST_RE.test(s)}function hasLoneSurrogate(s){for(let i=0;i<s.length;i++){const c=s.charCodeAt(i);if(c>=55296&&c<=56319){const n=s.charCodeAt(i+1);if(!(n>=56320&&n<=57343))return true;i++}else if(c>=56320&&c<=57343){return true}}return false}function interchangeableCopy(v,path){if(v===null)return null;switch(typeof v){case"string":if(hasLoneSurrogate(v))throw new Error(`canonicalJson: lone surrogate in string at ${path} (I-JSON violation)`);return v;case"number":if(!Number.isFinite(v))throw new Error(`canonicalJson: non-finite number at ${path}`);return v;case"boolean":return v;case"undefined":throw new Error(`canonicalJson: undefined at ${path} (strict mode never coerces to null)`);case"object":{if(Array.isArray(v)){if(Object.getPrototypeOf(v)!==Array.prototype)throw new Error(`canonicalJson: non-ordinary array at ${path} (a subclassed/exotic array canonicalizes through projections)`);const length=Object.getOwnPropertyDescriptor(v,"length")?.value;if(typeof length!=="number"||!Number.isInteger(length)||length<0)throw new Error(`canonicalJson: invalid array length at ${path} (refusing the projection)`);for(const k of Reflect.ownKeys(v)){if(typeof k!=="string")throw new Error(`canonicalJson: symbol-keyed own property on array at ${path} (invisible to canonicalization; refusing the projection)`);if(k==="length")continue;if(!/^(0|[1-9][0-9]*)$/.test(k)||Number(k)>=length)throw new Error(`canonicalJson: non-index own property "${k}" on array at ${path} (invisible to canonicalization; refusing the projection)`)}const copy2=[];for(let i=0;i<length;i++){const d=Object.getOwnPropertyDescriptor(v,i);if(d===void 0)throw new Error(`canonicalJson: hole at ${path}[${i}] (a hole would be coerced to null; refusing the projection)`);if(!d.enumerable||d.get!==void 0||d.set!==void 0)throw new Error(`canonicalJson: non-enumerable or accessor element at ${path}[${i}] (refusing the projection)`);copy2.push(interchangeableCopy(d.value,`${path}[${i}]`))}return copy2}const proto=Object.getPrototypeOf(v);if(proto!==Object.prototype&&proto!==null)throw new Error(`canonicalJson: non-plain object at ${path} (a class/exotic instance canonicalizes through projections like toJSON; only plain data objects are interchangeable)`);const copy=Object.create(null);for(const k of Reflect.ownKeys(v)){if(typeof k!=="string")throw new Error(`canonicalJson: symbol-keyed own property at ${path} (invisible to canonicalization; refusing the projection)`);if(hasLoneSurrogate(k))throw new Error(`canonicalJson: lone surrogate in key at ${path}.${k}`);const d=Object.getOwnPropertyDescriptor(v,k);if(!d.enumerable)throw new Error(`canonicalJson: non-enumerable own property "${k}" at ${path} (invisible to canonicalization; refusing the projection)`);if(d.get!==void 0||d.set!==void 0)throw new Error(`canonicalJson: accessor property "${k}" at ${path} (a getter is code, not data; refusing the projection)`);copy[k]=interchangeableCopy(d.value,`${path}.${k}`)}return copy}default:throw new Error(`canonicalJson: unsupported ${typeof v} at ${path}`)}}function canonicalJson(value){return(0,import_json_canonicalize.canonicalizeEx)(interchangeableCopy(value,"$"),{undefinedInArrayToNull:false})}function contractDigest(value){return DIGEST_PREFIX+createHash2("sha256").update(canonicalJson(value),"utf8").digest("hex")}var EP_ERROR_CODES=Object.freeze(["bad-request","unsupported-version","op-mismatch","class-mismatch","target-mismatch","sender-mismatch","unauthenticated","permission-denied","not-found","already-exists","conflict","contract-mismatch","contract-invalid","failed-precondition","deadline-exceeded","cancelled","expired","unavailable","unimplemented","resource-exhausted","internal"]);var EP_UNBOUND_RESPONDER="ai.cotal.ep.unbound-responder";function respondedButUnbound(e){return e instanceof EpEnvelopeError&&(e.details??[]).some(d=>d.kind===EP_UNBOUND_RESPONDER)}var EP_UNANSWERED="ai.cotal.ep.unanswered";function unansweredRequest(e){return e instanceof EpEnvelopeError&&(e.details??[]).some(d=>d.kind===EP_UNANSWERED)}var EP_UNDECLARED_ARG="ai.cotal.ep.undeclared-arg";var EP_BIND_REFUSED="ai.cotal.ep.bind-refused";function bindRefusalMarked(e){return(e?.details??[]).some(d=>d.kind===EP_BIND_REFUSED)}function replyRefusedBeforeEffect(e){if(!bindRefusalMarked(e))return false;return e?.outcome==="not-executed"}var EP_TARGET_UNMAPPED="ai.cotal.ep.target-unmapped";function replyTargetUnmapped(e){return e?.outcome==="not-executed"&&(e.details??[]).some(d=>d.kind===EP_TARGET_UNMAPPED)}var EP_LIFECYCLE_BLOCKED="ai.cotal.ep.lifecycle-blocked";function detailsOf(source){if(source instanceof EpEnvelopeError)return source.details;if(source&&typeof source==="object"&&Array.isArray(source.details))return source.details;return void 0}function lifecycleBlockedFrom(source){return detailsOf(source)?.find(d=>d.kind===EP_LIFECYCLE_BLOCKED)}function renderLifecycleBlocked(message,source){const d=lifecycleBlockedFrom(source);if(!d)return message;const parts=[`blockedOp=${d.blockedOp}`];for(const k of["headState","gateState","opId","remedy"]){const v=d[k];if(typeof v==="string"&&v.length>0)parts.push(`${k}=${v}`)}const suffix=`[lifecycle ${parts.join(" ")}]`;return message.includes(suffix)?message:`${message} ${suffix}`}var EpEnvelopeError=class extends Error{code;details;outcome;constructor(code,message,details,outcome){super(message);this.code=code;this.details=details;this.outcome=outcome;this.name="EpEnvelopeError"}toEpError(){return{code:this.code,message:this.message,...this.details?{details:this.details}:{},...this.outcome?{outcome:this.outcome}:{}}}};var import_jetstream2=__toESM(require_mod4(),1);var import_transport_node2=__toESM(require_transport_node(),1);var import_kv=__toESM(require_mod6(),1);var SCHEMA_PROFILE=Object.freeze({maxDocumentBytes:256*1024,maxClosureBytes:1024*1024,maxDepth:32,maxRefChain:32,compileBudgetMs:100,maxPatternChars:256,validateBudgetMs:10,compiledCacheEntries:256});var EP_ENVELOPE_V=1;var EP_ERROR_SET=new Set(EP_ERROR_CODES);var UTF8=new TextEncoder;var utf8Bytes=s=>UTF8.encode(s).length;var LABEL="[a-z0-9]([a-z0-9-]*[a-z0-9])?";var EXTENSION_CODE=new RegExp(`^${LABEL}(\\.${LABEL}){2,}$`);function isEpErrorCode(code){if(typeof code!=="string"||utf8Bytes(code)>64)return false;return EP_ERROR_SET.has(code)||EXTENSION_CODE.test(code)}function fail(code,message,outcome){throw new EpEnvelopeError(code,message,void 0,outcome)}function controlReplyFrom(reply){if(reply.ok)return{ok:true,...reply.data!==void 0?{data:reply.data}:{}};const{error:error51}=reply;if(!error51)throw new Error(`endpoint reply ${reply.id} failed without an error`);return{ok:false,error:renderLifecycleBlocked(error51.message,error51),code:error51.code,...reply.data!==void 0?{data:reply.data}:{},...error51.details?{details:error51.details}:{}}}function controlReplyFromThrown(e,message){return{ok:false,error:renderLifecycleBlocked(message,e),code:e.code,...e.details?{details:e.details}:{}}}function asRecord(v,what){if(v===null||typeof v!=="object"||Array.isArray(v))fail("bad-request",`${what} is not a JSON object`);return v}function asString(v,what){if(typeof v!=="string"||v.length===0)fail("bad-request",`${what} is not a non-empty string`);return v}function grammar(fn){try{return fn()}catch(e){fail("bad-request",e.message)}}function assertVersion(o,what){if(o.v!==EP_ENVELOPE_V)fail("unsupported-version",`${what} envelope version ${JSON.stringify(o.v)} is not ${EP_ENVELOPE_V}`)}function pickError(v){const e=asRecord(v,"error");const code=asString(e.code,"error.code");if(!isEpErrorCode(code))fail("bad-request",`error.code ${JSON.stringify(code)} is neither a catalog token nor a reverse-DNS extension token within 64 bytes`);const message=typeof e.message==="string"?e.message:fail("bad-request","error.message is not a string");let details;if(e.details!==void 0){if(!Array.isArray(e.details))fail("bad-request","error.details is not an array");details=e.details.map((d,i)=>{const o=asRecord(d,`error.details[${i}]`);const kind=asString(o.kind,`error.details[${i}].kind`);if(!EXTENSION_CODE.test(kind))fail("bad-request",`error.details[${i}].kind "${kind}" is not reverse-DNS namespaced`);return o})}let outcome;if(e.outcome!==void 0){if(e.outcome!=="executed"&&e.outcome!=="not-executed"&&e.outcome!=="unknown")fail("bad-request",`error.outcome ${JSON.stringify(e.outcome)} is not one of executed, not-executed, unknown (SPEC 13.3)`);outcome=e.outcome}return{code,message,...details?{details}:{},...outcome?{outcome}:{}}}function parseEndpointReply(raw){const o=asRecord(raw,"reply");assertVersion(o,"reply");const id2=grammar(()=>assertIdToken(asString(o.id,"id"),"id"));if(typeof o.ok!=="boolean")fail("bad-request","ok is not a boolean");if(o.ok&&o.error!==void 0)fail("bad-request","an ok reply must not carry an error");if(!o.ok&&o.data!==void 0)fail("bad-request","a failed reply must not carry data");const error51=o.ok?void 0:pickError(o.error);const receipt=o.receipt===void 0?void 0:asString(o.receipt,"receipt");return{v:EP_ENVELOPE_V,id:id2,ok:o.ok,...o.ok&&o.data!==void 0?{data:o.data}:{},...error51?{error:error51}:{},...receipt!==void 0?{receipt}:{}}}var cpuNow=()=>typeof process==="undefined"?void 0:process.cpuUsage();function reportValidateBudget(what,startedCpu,startedMs){if(startedCpu===void 0)return;const cpu=process.cpuUsage(startedCpu);const cpuMs=Math.round((cpu.user+cpu.system)/1e3);if(cpuMs<=SCHEMA_PROFILE.validateBudgetMs)return;console.error(`! schema: ${what} validation took ~${cpuMs}ms of process CPU (\xA713.8 reference budget ${SCHEMA_PROFILE.validateBudgetMs}ms; ${Date.now()-startedMs}ms elapsed). Approximate - process-wide CPU includes JIT/Worker threads. Not a refusal - and note that refusing HERE would not have helped: this fires after validate() completed, so the cost is already paid. Validation cost on this path is bounded by nothing pre-emptively; a byte/item bound before validate is owed.`)}function firstErrorDetail(first){if(!first)return"";const extra=typeof first.params?.additionalProperty==="string"?`: ${JSON.stringify(first.params.additionalProperty)}`:"";return`: ${first.instancePath||"/"} ${first.message??""}${extra}`}function assertArgsValid(validate2,args){const value=args===void 0?null:args;const startedCpu=cpuNow();const started=Date.now();const okValid=validate2(value);reportValidateBudget("args",startedCpu,started);if(!okValid){const first=validate2.errors?.[0];fail("bad-request",`args do not validate against the input schema${firstErrorDetail(first)}`,"not-executed")}return value}function assertOutputValid(validate2,data){const value=data===void 0?null:data;const startedCpu=cpuNow();const started=Date.now();const okValid=validate2(value);reportValidateBudget("output",startedCpu,started);if(!okValid){const first=validate2.errors?.[0];fail("internal",`output does not validate against the pinned output schema; an invalid reply is a responder bug, never success (SPEC 13.7)${firstErrorDetail(first)}`)}}function recordsBucket(space2){return`cotal_records_${token(space2)}`}var qEndpoint={name:"endpoint",assert:v=>endpointToken(v)};var qOwner=name=>({name,assert:v=>assertBoundedOwner(v,name)});var qUid=name=>({name,assert:v=>assertLifecycleToken(v,name)});var qId=name=>({name,assert:v=>assertIdToken(v,name)});var LIFECYCLE_HEAD={kind:"lifecycle",qualifiers:[qOwner("owner"),qOwner("actor")],split:false,writers:{spec:"minting-manager-commit",status:"minting-manager-commit"},mediation:"mediated"};var UID_RESERVATION={kind:"uid",qualifiers:[qUid("lifecycleUid")],split:false,writers:{spec:"minting-authority",status:"minting-authority"},mediation:"mediated"};var OBLIGATION_EP_SENTINEL="ep";var OBLIGATION={kind:"oblig",qualifiers:[{name:"targetUid",assert:v=>v===OBLIGATION_EP_SENTINEL?v:assertLifecycleToken(v,"targetUid")},qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("id")],split:false,writers:{spec:"admission-mediator",status:"admission-mediator"},mediation:"mediated"};var POLICY_VERSION={kind:"policy",qualifiers:[qEndpoint,{name:"digestHex",assert:v=>{if(!/^[0-9a-f]{64}$/.test(v))throw new Error(`policy digest ${JSON.stringify(v)} is not 64 lowercase hex chars (SPEC 13.7)`);return v}}],split:false,writers:{spec:"provisioner-registration",status:"provisioner-registration"},mediation:"mediated"};var RETIREMENT_FRONTIER={kind:"frontier",qualifiers:[qUid("lifecycleUid")],split:false,writers:{spec:"minting-authority",status:"minting-authority"},mediation:"mediated"};var GOVERN_HEAD={kind:"govern",qualifiers:[qEndpoint],split:false,writers:{spec:"provisioner-registration",status:"provisioner-registration"},mediation:"mediated"};var RECORD_KINDS={svc:{kind:"svc",qualifiers:[qEndpoint,qUid("instanceId")],split:true,writers:{spec:"provisioner-registration",status:"instance-commit-epoch-fenced"},mediation:"mediated"},signer:{kind:"signer",qualifiers:[qId("keyId")],split:true,writers:{spec:"operator-registry",status:"operator-registry"},mediation:"mediated"},handle:{kind:"handle",qualifiers:[qId("issuerKeyId"),qId("id")],split:true,writers:{spec:"issuer-create-only",status:"issuer-or-operator-monotonic"},mediation:"mediated"},contracts:{kind:"contracts",qualifiers:[qEndpoint],split:true,writers:{spec:"instance",status:"instance"},mediation:"direct"},goal:{kind:"goal",qualifiers:[qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("goalId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},goalidx:{kind:"goalidx",qualifiers:[qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("goalId")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},goaleff:{kind:"goaleff",qualifiers:[qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("goalId"),qId("gen")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},epname:{kind:"epname",qualifiers:[qEndpoint,qId("nameToken")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},epmig:{kind:"epmig",qualifiers:[qEndpoint],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},cp:{kind:"cp",qualifiers:[qEndpoint,qId("token")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},lease:{kind:"lease",qualifiers:[qEndpoint,{name:"pool",assert:assertPoolToken},qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("id")],split:true,writers:{spec:"pool-owner-lease-command",status:"pool-owner-lease-command"},mediation:"mediated"},run:{kind:"run",qualifiers:[qEndpoint,qId("runId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},answer:{kind:"answer",qualifiers:[qEndpoint,qId("token"),qId("answerId")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},notice:{kind:"notice",qualifiers:[qEndpoint,qId("runId"),qId("addresseeId"),qId("noticeId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},program:{kind:"program",qualifiers:[qEndpoint,qId("runId")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},migration:{kind:"migration",qualifiers:[qEndpoint,qId("runId"),qId("migrationId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},lifecycle:{kind:"lifecycle",qualifiers:[qOwner("owner"),qOwner("actor"),qUid("lifecycleUid")],split:true,writers:{spec:"minting-manager-commit",status:"minting-manager-commit"},mediation:"mediated"}};var AUTHORITY_KIND_DEFS=[LIFECYCLE_HEAD,UID_RESERVATION,GOVERN_HEAD,OBLIGATION,POLICY_VERSION,RETIREMENT_FRONTIER];function freezeDef(def){for(const q of def.qualifiers)Object.freeze(q);Object.freeze(def.qualifiers);Object.freeze(def.writers);return Object.freeze(def)}var registry=new Map;for(const def of[...Object.values(RECORD_KINDS),...AUTHORITY_KIND_DEFS]){freezeDef(def);const list=registry.get(def.kind)??[];list.push(def);registry.set(def.kind,list)}Object.freeze(AUTHORITY_KIND_DEFS);Object.freeze(RECORD_KINDS);var AUTHORITY_DEF_SET=new Set(AUTHORITY_KIND_DEFS);function isCasLoss(e){const code=e?.code;return code===10071||code===10164}var import_transport_node=__toESM(require_transport_node(),1);var IDEMPOTENCY_HORIZON_MS_DEFAULT=24*60*60*1e3;var RESULT_RETENTION_MS_DEFAULT=24*60*60*1e3;var RECEIPT_RETENTION_MS_DEFAULT=90*24*60*60*1e3;var import_jetstream=__toESM(require_mod4(),1);import{createHash as createHash3,randomBytes as randomBytes2}from"node:crypto";var dec=new TextDecoder("utf-8",{fatal:true});function assertIssuedSpace(space2){if(typeof space2!=="string"||space2.length===0||token(space2)!==space2)throw new Error("issued space must be a nonempty canonical subject token ([A-Za-z0-9_-])")}function refSnapshot(value){closed(value,["space","owner","actor","uid","generation"],"issued reference");assertIssuedSpace(value.space);callerTokens(value);assertGeneration(value.generation);return Object.freeze({space:value.space,owner:value.owner,actor:value.actor,uid:value.uid,generation:value.generation})}function closed(value,keys,label){if(value===null||typeof value!=="object"||Array.isArray(value)||Object.getPrototypeOf(value)!==Object.prototype&&Object.getPrototypeOf(value)!==null)throw new Error(`${label} must be a plain record`);for(const key of Reflect.ownKeys(value)){if(typeof key!=="string"||!keys.includes(key))throw new Error(`${label} carries an unsupported field ${String(key)}`);if(!Object.hasOwn(Object.getOwnPropertyDescriptor(value,key),"value"))throw new Error(`${label} cannot carry accessors`)}return value}function acceptedBucket(space2){return`cotal_accepted_${token(space2)}`}function acceptedKey(acceptedToken){return`accepted.v1.${assertGeneration(acceptedToken,"accepted token")}`}async function readAcceptedRow(nc,space2,acceptedToken,timeoutMs=3e3){const bucket=acceptedBucket(space2);const response=await nc.request(`$JS.API.DIRECT.GET.KV_${bucket}.$KV.${bucket}.${acceptedKey(acceptedToken)}`,new Uint8Array(0),{timeout:timeoutMs});const status2=response.headers?.get("Status");if(status2)throw new EpEnvelopeError("permission-denied",`no accepted row for this token (${status2}); the connection holds no issued authority (SPEC 13.15)`);const row=closed(JSON.parse(dec.decode(response.data)),["version","ref"],"accepted row");if(row.version!==1)throw new Error("unsupported accepted-row version");const ref=refSnapshot(row.ref);if(ref.space!==space2)throw new EpEnvelopeError("permission-denied","the accepted row names a foreign space");return ref}async function issuedCallerOfToken(nc,space2,acceptedToken,expected){const ref=await readAcceptedRow(nc,space2,acceptedToken);if(ref.owner!==expected.owner||ref.actor!==expected.actor||ref.uid!==expected.uid)throw new EpEnvelopeError("permission-denied",`this connection's accepted row names ${ref.owner}.${ref.actor}/${ref.uid}, not the caller ${expected.owner}.${expected.actor}/${expected.uid}; refused (SPEC 13.15)`);return{owner:ref.owner,actor:ref.actor,uid:ref.uid,generation:ref.generation}}var STATIC_GENERATION_HORIZON_SEC=30*24*60*60;function subjectToken(value,pattern){if(typeof value!=="string"||value.length===0||/\s/u.test(value)||[...value].some(ch=>ch.charCodeAt(0)<32||ch.charCodeAt(0)===127))throw new Error("a subject must be nonempty without whitespace or control characters; queue-qualified forms are not a ceiling entry");const parts=value.split(".");for(let i=0;i<parts.length;i++){const part=parts[i];if(!part||part.includes("*")&&(!pattern||part!=="*")||part.includes(">")&&(!pattern||part!==">"||i!==parts.length-1))throw new Error(`subject "${value}" has an invalid token or wildcard`)}return value}function patterns(value){if(!Array.isArray(value))throw new Error("subject patterns must be an explicit array");return Object.freeze(value.map(entry=>subjectToken(entry,true)))}function permission(allow,deny){return Object.freeze({allow:Object.freeze(allow),deny})}function readIssuedSubjectPermission(value){const raw=closed(value,["allow","deny"],"subject permission");const allow=closed(raw.allow,["mode","patterns"],"subject allow");const deny=patterns(raw.deny);if(allow.mode==="all"||allow.mode==="none"){if(Object.hasOwn(allow,"patterns"))throw new Error("only patterns mode carries a patterns field");return permission({mode:allow.mode},deny)}if(allow.mode!=="patterns")throw new Error("unsupported subject allow mode");const listed=patterns(allow.patterns);if(listed.length===0)throw new Error("patterns mode requires a nonempty list");return permission({mode:"patterns",patterns:listed},deny)}function importNativeSubjectPermissions(value){const raw=closed(value,["pub","sub"],"native permissions");const direction=v=>{if(v===void 0)return permission({mode:"all"},Object.freeze([]));const r=closed(v,["allow","deny"],"native subject permission");const allow=Object.hasOwn(r,"allow")?patterns(r.allow):Object.freeze([]);const deny=Object.hasOwn(r,"deny")?patterns(r.deny):Object.freeze([]);return permission(allow.length?{mode:"patterns",patterns:allow}:{mode:"all"},deny)};for(const key of["pub","sub"])if(Object.hasOwn(raw,key)&&raw[key]===void 0)throw new Error("an explicit native direction must not be undefined");return Object.freeze({publish:direction(raw.pub),subscribe:direction(raw.sub)})}function issuedPermitsSubject(value,concrete){const parsed=readIssuedSubjectPermission(value);subjectToken(concrete,false);if(parsed.deny.some(pattern=>subjectMatches(pattern,concrete)))return false;if(parsed.allow.mode==="none")return false;return parsed.allow.mode==="all"||parsed.allow.patterns.some(pattern=>subjectMatches(pattern,concrete))}var AUTHORITY_STORE_IMMUTABLE_FLAGS=Object.freeze({allow_rollup_hdrs:false,deny_delete:true,deny_purge:true});var WRITE_ONCE_PER_KEY=Object.freeze({max_msgs_per_subject:1,discard:import_jetstream.DiscardPolicy.New,discard_new_per_subject:true});var APPEND_ONLY_PER_KEY=Object.freeze({max_msgs_per_subject:-1});var ROW_TTL_RETENTION=Object.freeze({allow_msg_ttl:true});var enc=new TextEncoder;function connectionAcceptedToken(connId){if(typeof connId!=="string"||connId.length===0)throw new Error("connectionAcceptedToken: a connection nonce is required");return createHash3("sha256").update(`cotal.accepted.v1\0${connId}`).digest("hex").slice(0,32)}async function issuedUserCaller(nc,space2,connId,expected){return issuedCallerOfToken(nc,space2,connectionAcceptedToken(connId),expected)}function admissionBucket(space2){return`cotal_admission_${token(space2)}`}var enc2=new TextEncoder;var dec2=new TextDecoder("utf-8",{fatal:true});function admissionStoreDefinition(space2){return{bucket:admissionBucket(space2),createOptions:{allow_direct:false},hardenAfterCreate:{...AUTHORITY_STORE_IMMUTABLE_FLAGS,...WRITE_ONCE_PER_KEY}}}function epcStreamName(space2){return`EPC_${token(space2)}`}function wfjStreamName(space2){return`WFJ_${token(space2)}`}function epAuthBucket(space2){return`cotal_auth_${token(space2)}`}var EP_SUBMISSION_MAX_AGE_MS=24*60*60*1e3;var EP_EVENT_MAX_AGE_MS=24*60*60*1e3;var EP_INGRESS_MAX_AGE_MS=24*60*60*1e3;var EP_TIMER_MAX_AGE_MS=31*24*60*60*1e3;var EP_AUTH_MARKER_TTL_MS=60*60*1e3;function endpointAuthorityStoreDefinitions(space2){return{records:{bucket:recordsBucket(space2),createOptions:{allow_direct:true},hardenAfterCreate:AUTHORITY_STORE_IMMUTABLE_FLAGS},auth:{bucket:epAuthBucket(space2),createOptions:{allow_direct:false,markerTTL:EP_AUTH_MARKER_TTL_MS}}}}var AUTHORITY_HEAD_ARITY=new Map(AUTHORITY_KIND_DEFS.map(d=>[d.kind,1+d.qualifiers.length]));function recordsKvStreamName(space2){return`KV_${recordsBucket(space2)}`}var BASELINE_DELIVERY_ENDPOINT="delivery";var BASELINE_DELIVERY_COMMANDS=Object.freeze(["join","leave","list"]);var BASELINE_LIFECYCLE_ENDPOINT="manager";var BASELINE_SELF_LIFECYCLE_COMMANDS=Object.freeze(["stop","turn-participate","turn-pending","turn-yield","run-answer"]);var SPAWN_CREATE_COMMANDS=Object.freeze(["spawn","resolve-agent"]);var SPAWN_OWNER_LIFECYCLE_COMMANDS=Object.freeze(["despawn","attach"]);var OPERATOR_SEAT_COMMANDS=Object.freeze(["input","turn"]);var SPAWN_SERVICE_COMMANDS=Object.freeze(["define-persona","remove-persona","inspect","list-personas","show-persona","goal-result"]);var RUN_WRITE_COMMANDS=Object.freeze(["run-start","run-resume","run-start-keyed","run-submission-status","run-cancel"]);var RUN_READ_COMMANDS=Object.freeze(["run-status","run-ps"]);var CHAT_SESSION_COMMANDS=Object.freeze(["chat-session-open","chat-session-retire"]);var MANAGER_READ_COMMANDS=Object.freeze(["status","ps","slots","inspect","models","list-personas","show-persona","goal-result"]);var MANAGER_ADMIN_COMMANDS=Object.freeze(["purge","launch","resume-preserved","commit-resume","finalize-resume","prepare-preservation","commit-preservation","abort-preservation","transcript-receive"]);var GOAL_BEARING_COMMANDS=Object.freeze(["spawn","launch"]);var GOAL_BEARING_SET=new Set(GOAL_BEARING_COMMANDS);var REPEAT_SAFE_COMMANDS=Object.freeze({[BASELINE_LIFECYCLE_ENDPOINT]:Object.freeze(["status","ps","slots","inspect","list-personas","show-persona","run-status","run-ps","goal-result"]),[BASELINE_DELIVERY_ENDPOINT]:Object.freeze(["list"])});var REPEAT_SAFE_ANY_ENDPOINT="describe";var REPEAT_SAFE_SNAP=new Map(Object.entries(REPEAT_SAFE_COMMANDS).map(([endpoint,commands])=>[endpoint,new Set(commands)]));function isRepeatSafeCommand(endpoint,command){if(command===REPEAT_SAFE_ANY_ENDPOINT)return true;return REPEAT_SAFE_SNAP.get(endpoint)?.has(command)===true}var DELIVERY_COMMANDS_SNAP=Object.freeze([...BASELINE_DELIVERY_COMMANDS]);var SELF_LIFECYCLE_SNAP=Object.freeze([...BASELINE_SELF_LIFECYCLE_COMMANDS]);var SPAWN_CREATE_SNAP=Object.freeze([...SPAWN_CREATE_COMMANDS]);var SPAWN_OWNER_SNAP=Object.freeze([...SPAWN_OWNER_LIFECYCLE_COMMANDS]);var OPERATOR_SEAT_SNAP=Object.freeze([...OPERATOR_SEAT_COMMANDS]);var SPAWN_SERVICE_SNAP=Object.freeze([...SPAWN_SERVICE_COMMANDS]);var RUN_WRITE_SNAP=Object.freeze([...RUN_WRITE_COMMANDS]);var RUN_READ_SNAP=Object.freeze([...RUN_READ_COMMANDS]);var CHAT_SESSION_SNAP=Object.freeze([...CHAT_SESSION_COMMANDS]);var MANAGER_READ_SNAP=Object.freeze([...MANAGER_READ_COMMANDS]);var MANAGER_ADMIN_SNAP=Object.freeze([...MANAGER_ADMIN_COMMANDS]);var import_nkeys3=__toESM(require_mod(),1);var import_nkeys5=__toESM(require_mod(),1);import{createHash as createHash4}from"node:crypto";var Types;(function(Types2){Types2["Operator"]="operator";Types2["Account"]="account";Types2["User"]="user";Types2["Activation"]="activation";Types2["AuthorizationResponse"]="authorization_response"})(Types||(Types={}));(function(nacl2){"use strict";var u64=function(h,l){this.hi=h|0>>>0;this.lo=l|0>>>0};var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i<init.length;i++)r[i]=init[i];return r};var randombytes=function(){throw new Error("no PRNG")};var _0=new Uint8Array(16);var _9=new Uint8Array(32);_9[0]=9;var gf0=gf(),gf1=gf([1]),_121665=gf([56129,1]),D=gf([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),D2=gf([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),X=gf([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),Y=gf([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),I=gf([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function L32(x,c){return x<<c|x>>>32-c}function ld32(x,i){var u=x[i+3]&255;u=u<<8|x[i+2]&255;u=u<<8|x[i+1]&255;return u<<8|x[i+0]&255}function dl64(x,i){var h=x[i]<<24|x[i+1]<<16|x[i+2]<<8|x[i+3];var l=x[i+4]<<24|x[i+5]<<16|x[i+6]<<8|x[i+7];return new u64(h,l)}function st32(x,j,u){var i;for(i=0;i<4;i++){x[j+i]=u&255;u>>>=8}}function ts64(x,i,u){x[i]=u.hi>>24&255;x[i+1]=u.hi>>16&255;x[i+2]=u.hi>>8&255;x[i+3]=u.hi&255;x[i+4]=u.lo>>24&255;x[i+5]=u.lo>>16&255;x[i+6]=u.lo>>8&255;x[i+7]=u.lo&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i<n;i++)d|=x[xi+i]^y[yi+i];return(1&d-1>>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core(out,inp,k,c,h){var w=new Uint32Array(16),x=new Uint32Array(16),y=new Uint32Array(16),t=new Uint32Array(4);var i,j,m;for(i=0;i<4;i++){x[5*i]=ld32(c,4*i);x[1+i]=ld32(k,4*i);x[6+i]=ld32(inp,4*i);x[11+i]=ld32(k,16+4*i)}for(i=0;i<16;i++)y[i]=x[i];for(i=0;i<20;i++){for(j=0;j<4;j++){for(m=0;m<4;m++)t[m]=x[(5*j+4*m)%16];t[1]^=L32(t[0]+t[3]|0,7);t[2]^=L32(t[1]+t[0]|0,9);t[3]^=L32(t[2]+t[1]|0,13);t[0]^=L32(t[3]+t[2]|0,18);for(m=0;m<4;m++)w[4*j+(j+m)%4]=t[m]}for(m=0;m<16;m++)x[m]=w[m]}if(h){for(i=0;i<16;i++)x[i]=x[i]+y[i]|0;for(i=0;i<4;i++){x[5*i]=x[5*i]-ld32(c,4*i)|0;x[6+i]=x[6+i]-ld32(inp,4*i)|0}for(i=0;i<4;i++){st32(out,4*i,x[5*i]);st32(out,16+4*i,x[6+i])}}else{for(i=0;i<16;i++)st32(out,4*i,x[i]+y[i]|0)}}function crypto_core_salsa20(out,inp,k,c){core(out,inp,k,c,false);return 0}function crypto_core_hsalsa20(out,inp,k,c){core(out,inp,k,c,true);return 0}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z2=new Uint8Array(16),x=new Uint8Array(64);var u,i;if(!b)return 0;for(i=0;i<16;i++)z2[i]=0;for(i=0;i<8;i++)z2[i]=n[i];while(b>=64){crypto_core_salsa20(x,z2,k,sigma);for(i=0;i<64;i++)c[cpos+i]=(m?m[mpos+i]:0)^x[i];u=1;for(i=8;i<16;i++){u=u+(z2[i]&255)|0;z2[i]=u&255;u>>>=8}b-=64;cpos+=64;if(m)mpos+=64}if(b>0){crypto_core_salsa20(x,z2,k,sigma);for(i=0;i<b;i++)c[cpos+i]=(m?m[mpos+i]:0)^x[i]}return 0}function crypto_stream_salsa20(c,cpos,d,n,k){return crypto_stream_salsa20_xor(c,cpos,null,0,d,n,k)}function crypto_stream(c,cpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);return crypto_stream_salsa20(c,cpos,d,n.subarray(16),s)}function crypto_stream_xor(c,cpos,m,mpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,n.subarray(16),s)}function add1305(h,c){var j,u=0;for(j=0;j<17;j++){u=u+(h[j]+c[j]|0)|0;h[j]=u&255;u>>>=8}}var minusp=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function crypto_onetimeauth(out,outpos,m,mpos,n,k){var s,i,j,u;var x=new Uint32Array(17),r=new Uint32Array(17),h=new Uint32Array(17),c=new Uint32Array(17),g=new Uint32Array(17);for(j=0;j<17;j++)r[j]=h[j]=0;for(j=0;j<16;j++)r[j]=k[j];r[3]&=15;r[4]&=252;r[7]&=15;r[8]&=252;r[11]&=15;r[12]&=252;r[15]&=15;while(n>0){for(j=0;j<17;j++)c[j]=0;for(j=0;j<16&&j<n;++j)c[j]=m[mpos+j];c[j]=1;mpos+=j;n-=j;add1305(h,c);for(i=0;i<17;i++){x[i]=0;for(j=0;j<17;j++)x[i]=x[i]+h[j]*(j<=i?r[i-j]:320*r[i+17-j]|0)|0|0}for(i=0;i<17;i++)h[i]=x[i];u=0;for(j=0;j<16;j++){u=u+h[j]|0;h[j]=u&255;u>>>=8}u=u+h[16]|0;h[16]=u&3;u=5*(u>>>2)|0;for(j=0;j<16;j++){u=u+h[j]|0;h[j]=u&255;u>>>=8}u=u+h[16]|0;h[16]=u}for(j=0;j<17;j++)g[j]=h[j];add1305(h,minusp);s=-(h[16]>>>7)|0;for(j=0;j<17;j++)h[j]^=s&(g[j]^h[j]);for(j=0;j<16;j++)c[j]=k[j+16];c[16]=0;add1305(h,c);for(j=0;j<16;j++)out[outpos+j]=h[j];return 0}function crypto_onetimeauth_verify(h,hpos,m,mpos,n,k){var x=new Uint8Array(16);crypto_onetimeauth(x,0,m,mpos,n,k);return crypto_verify_16(h,hpos,x,0)}function crypto_secretbox(c,m,d,n,k){var i;if(d<32)return-1;crypto_stream_xor(c,0,m,0,d,n,k);crypto_onetimeauth(c,16,c,32,d-32,c);for(i=0;i<16;i++)c[i]=0;return 0}function crypto_secretbox_open(m,c,d,n,k){var i;var x=new Uint8Array(32);if(d<32)return-1;crypto_stream(x,0,32,n,k);if(crypto_onetimeauth_verify(c,16,c,32,d-32,x)!==0)return-1;crypto_stream_xor(m,0,c,0,d,n,k);for(i=0;i<32;i++)m[i]=0;return 0}function set25519(r,a){var i;for(i=0;i<16;i++)r[i]=a[i]|0}function car25519(o){var c;var i;for(i=0;i<16;i++){o[i]+=65536;c=Math.floor(o[i]/65536);o[(i+1)*(i<15?1:0)]+=c-1+37*(c-1)*(i===15?1:0);o[i]-=c*65536}}function sel25519(p,q,b){var t,c=~(b-1);for(var i=0;i<16;i++){t=c&(p[i]^q[i]);p[i]^=t;q[i]^=t}}function pack25519(o,n){var i,j,b;var m=gf(),t=gf();for(i=0;i<16;i++)t[i]=n[i];car25519(t);car25519(t);car25519(t);for(j=0;j<2;j++){m[0]=t[0]-65517;for(i=1;i<15;i++){m[i]=t[i]-65535-(m[i-1]>>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){var i;for(i=0;i<16;i++)o[i]=a[i]+b[i]|0}function Z(o,a,b){var i;for(i=0;i<16;i++)o[i]=a[i]-b[i]|0}function M(o,a,b){var i,j,t=new Float64Array(31);for(i=0;i<31;i++)t[i]=0;for(i=0;i<16;i++){for(j=0;j<16;j++){t[i+j]+=a[i]*b[j]}}for(i=0;i<15;i++){t[i]+=38*t[i+16]}for(i=0;i<16;i++)o[i]=t[i];car25519(o);car25519(o)}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z2=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z2[i]=n[i];z2[31]=n[31]&127|64;z2[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z2[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}function add64(){var a=0,b=0,c=0,d=0,m16=65535,l,h,i;for(i=0;i<arguments.length;i++){l=arguments[i].lo;h=arguments[i].hi;a+=l&m16;b+=l>>>16;c+=h&m16;d+=h>>>16}b+=a>>>16;c+=b>>>16;d+=c>>>16;return new u64(c&m16|d<<16,a&m16|b<<16)}function shr64(x,c){return new u64(x.hi>>>c,x.lo>>>c|x.hi<<32-c)}function xor64(){var l=0,h=0,i;for(i=0;i<arguments.length;i++){l^=arguments[i].lo;h^=arguments[i].hi}return new u64(h,l)}function R(x,c){var h,l,c1=32-c;if(c<32){h=x.hi>>>c|x.lo<<c1;l=x.lo>>>c|x.hi<<c1}else if(c<64){h=x.lo>>>c|x.hi<<c1;l=x.hi>>>c|x.lo<<c1}return new u64(h,l)}function Ch(x,y,z2){var h=x.hi&y.hi^~x.hi&z2.hi,l=x.lo&y.lo^~x.lo&z2.lo;return new u64(h,l)}function Maj(x,y,z2){var h=x.hi&y.hi^x.hi&z2.hi^y.hi&z2.hi,l=x.lo&y.lo^x.lo&z2.lo^y.lo&z2.lo;return new u64(h,l)}function Sigma0(x){return xor64(R(x,28),R(x,34),R(x,39))}function Sigma1(x){return xor64(R(x,14),R(x,18),R(x,41))}function sigma0(x){return xor64(R(x,1),R(x,8),shr64(x,7))}function sigma1(x){return xor64(R(x,19),R(x,61),shr64(x,6))}var K=[new u64(1116352408,3609767458),new u64(1899447441,602891725),new u64(3049323471,3964484399),new u64(3921009573,2173295548),new u64(961987163,4081628472),new u64(1508970993,3053834265),new u64(2453635748,2937671579),new u64(2870763221,3664609560),new u64(3624381080,2734883394),new u64(310598401,1164996542),new u64(607225278,1323610764),new u64(1426881987,3590304994),new u64(1925078388,4068182383),new u64(2162078206,991336113),new u64(2614888103,633803317),new u64(3248222580,3479774868),new u64(3835390401,2666613458),new u64(4022224774,944711139),new u64(264347078,2341262773),new u64(604807628,2007800933),new u64(770255983,1495990901),new u64(1249150122,1856431235),new u64(1555081692,3175218132),new u64(1996064986,2198950837),new u64(2554220882,3999719339),new u64(2821834349,766784016),new u64(2952996808,2566594879),new u64(3210313671,3203337956),new u64(3336571891,1034457026),new u64(3584528711,2466948901),new u64(113926993,3758326383),new u64(338241895,168717936),new u64(666307205,1188179964),new u64(773529912,1546045734),new u64(1294757372,1522805485),new u64(1396182291,2643833823),new u64(1695183700,2343527390),new u64(1986661051,1014477480),new u64(2177026350,1206759142),new u64(2456956037,344077627),new u64(2730485921,1290863460),new u64(2820302411,3158454273),new u64(3259730800,3505952657),new u64(3345764771,106217008),new u64(3516065817,3606008344),new u64(3600352804,1432725776),new u64(4094571909,1467031594),new u64(275423344,851169720),new u64(430227734,3100823752),new u64(506948616,1363258195),new u64(659060556,3750685593),new u64(883997877,3785050280),new u64(958139571,3318307427),new u64(1322822218,3812723403),new u64(1537002063,2003034995),new u64(1747873779,3602036899),new u64(1955562222,1575990012),new u64(2024104815,1125592928),new u64(2227730452,2716904306),new u64(2361852424,442776044),new u64(2428436474,593698344),new u64(2756734187,3733110249),new u64(3204031479,2999351573),new u64(3329325298,3815920427),new u64(3391569614,3928383900),new u64(3515267271,566280711),new u64(3940187606,3454069534),new u64(4118630271,4000239992),new u64(116418474,1914138554),new u64(174292421,2731055270),new u64(289380356,3203993006),new u64(460393269,320620315),new u64(685471733,587496836),new u64(852142971,1086792851),new u64(1017036298,365543100),new u64(1126000580,2618297676),new u64(1288033470,3409855158),new u64(1501505948,4234509866),new u64(1607167915,987167468),new u64(1816402316,1246189591)];function crypto_hashblocks(x,m,n){var z2=[],b=[],a=[],w=[],t,i,j;for(i=0;i<8;i++)z2[i]=a[i]=dl64(x,8*i);var pos=0;while(n>=128){for(i=0;i<16;i++)w[i]=dl64(m,8*i+pos);for(i=0;i<80;i++){for(j=0;j<8;j++)b[j]=a[j];t=add64(a[7],Sigma1(a[4]),Ch(a[4],a[5],a[6]),K[i],w[i%16]);b[7]=add64(t,Sigma0(a[0]),Maj(a[0],a[1],a[2]));b[3]=add64(b[3],t);for(j=0;j<8;j++)a[(j+1)%8]=b[j];if(i%16===15){for(j=0;j<16;j++){w[j]=add64(w[j],w[(j+9)%16],sigma0(w[(j+1)%16]),sigma1(w[(j+14)%16]))}}}for(i=0;i<8;i++){a[i]=add64(a[i],z2[i]);z2[i]=a[i]}pos+=128;n-=128}for(i=0;i<8;i++)ts64(x,8*i,z2[i]);return n}var iv=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function crypto_hash(out,m,n){var h=new Uint8Array(64),x=new Uint8Array(256);var i,b=n;for(i=0;i<64;i++)h[i]=iv[i];crypto_hashblocks(h,m,n);n%=128;for(i=0;i<256;i++)x[i]=0;for(i=0;i<n;i++)x[i]=m[b-n+i];x[n]=128;n=256-128*(n<112?1:0);x[n-9]=0;ts64(x,n-8,new u64(b/536870912|0,b<<3));crypto_hashblocks(h,x,n);for(i=0;i<64;i++)out[i]=h[i];return 0}function add(p,q){var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf(),g=gf(),h=gf(),t=gf();Z(a,p[1],p[0]);Z(t,q[1],q[0]);M(a,a,t);A(b,p[0],p[1]);A(t,q[0],q[1]);M(b,b,t);M(c,p[3],q[3]);M(c,c,D2);M(d,p[2],q[2]);A(d,d,d);Z(e,b,a);Z(f,d,c);A(g,d,c);A(h,b,a);M(p[0],e,f);M(p[1],h,g);M(p[2],g,f);M(p[3],e,h)}function cswap(p,q,b){var i;for(i=0;i<4;i++){sel25519(p[i],q[i],b)}}function pack(r,p){var tx=gf(),ty=gf(),zi=gf();inv25519(zi,p[2]);M(tx,p[0],zi);M(ty,p[1],zi);pack25519(r,ty);r[31]^=par25519(tx)<<7}function scalarmult(p,q,s){var b,i;set25519(p[0],gf0);set25519(p[1],gf1);set25519(p[2],gf1);set25519(p[3],gf0);for(i=255;i>=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j<k;++j){x[j]+=carry-16*x[i]*L[j-(i-32)];carry=Math.floor((x[j]+128)/256);x[j]-=carry*256}x[j]+=carry;x[i]=0}carry=0;for(j=0;j<32;j++){x[j]+=carry-(x[31]>>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i<n;i++)sm[64+i]=m[i];for(i=0;i<32;i++)sm[32+i]=d[32+i];crypto_hash(r,sm.subarray(32),n+32);reduce(r);scalarbase(p,r);pack(sm,p);for(i=32;i<64;i++)sm[i]=sk[i];crypto_hash(h,sm,n+64);reduce(h);for(i=0;i<64;i++)x[i]=0;for(i=0;i<32;i++)x[i]=r[i];for(i=0;i<32;i++){for(j=0;j<32;j++){x[i+j]+=h[i]*d[j]}}modL(sm.subarray(32),x);return smlen}function unpackneg(r,p){var t=gf(),chk=gf(),num=gf(),den=gf(),den2=gf(),den4=gf(),den6=gf();set25519(r[2],gf1);unpack25519(r[1],p);S(num,r[1]);M(den,num,D);Z(num,num,r[2]);A(den,r[2],den);S(den2,den);S(den4,den2);M(den6,den4,den2);M(t,den6,num);M(t,t,den);pow2523(t,t);M(t,t,num);M(t,t,den);M(t,t,den);M(r[0],t,den);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))M(r[0],r[0],I);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))return-1;if(par25519(r[0])===p[31]>>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i<n;i++)m[i]=sm[i];for(i=0;i<32;i++)m[i+32]=pk[i];crypto_hash(h,m,n);reduce(h);scalarmult(p,q,h);scalarbase(q,sm.subarray(32));add(p,q);pack(t,p);n-=64;if(crypto_verify_32(sm,0,t,0)){for(i=0;i<n;i++)m[i]=0;return-1}for(i=0;i<n;i++)m[i]=sm[i+64];return n}var crypto_secretbox_KEYBYTES=32,crypto_secretbox_NONCEBYTES=24,crypto_secretbox_ZEROBYTES=32,crypto_secretbox_BOXZEROBYTES=16,crypto_scalarmult_BYTES=32,crypto_scalarmult_SCALARBYTES=32,crypto_box_PUBLICKEYBYTES=32,crypto_box_SECRETKEYBYTES=32,crypto_box_BEFORENMBYTES=32,crypto_box_NONCEBYTES=crypto_secretbox_NONCEBYTES,crypto_box_ZEROBYTES=crypto_secretbox_ZEROBYTES,crypto_box_BOXZEROBYTES=crypto_secretbox_BOXZEROBYTES,crypto_sign_BYTES=64,crypto_sign_PUBLICKEYBYTES=32,crypto_sign_SECRETKEYBYTES=64,crypto_sign_SEEDBYTES=32,crypto_hash_BYTES=64;nacl2.lowlevel={crypto_core_hsalsa20,crypto_stream_xor,crypto_stream,crypto_stream_salsa20_xor,crypto_stream_salsa20,crypto_onetimeauth,crypto_onetimeauth_verify,crypto_verify_16,crypto_verify_32,crypto_secretbox,crypto_secretbox_open,crypto_scalarmult,crypto_scalarmult_base,crypto_box_beforenm,crypto_box_afternm,crypto_box,crypto_box_open,crypto_box_keypair,crypto_hash,crypto_sign,crypto_sign_keypair,crypto_sign_open,crypto_secretbox_KEYBYTES,crypto_secretbox_NONCEBYTES,crypto_secretbox_ZEROBYTES,crypto_secretbox_BOXZEROBYTES,crypto_scalarmult_BYTES,crypto_scalarmult_SCALARBYTES,crypto_box_PUBLICKEYBYTES,crypto_box_SECRETKEYBYTES,crypto_box_BEFORENMBYTES,crypto_box_NONCEBYTES,crypto_box_ZEROBYTES,crypto_box_BOXZEROBYTES,crypto_sign_BYTES,crypto_sign_PUBLICKEYBYTES,crypto_sign_SECRETKEYBYTES,crypto_sign_SEEDBYTES,crypto_hash_BYTES,gf,D,L,pack25519,unpack25519,M,A,S,Z,pow2523,add,set25519,modL,scalarmult,scalarbase};function checkLengths(k,n){if(k.length!==crypto_secretbox_KEYBYTES)throw new Error("bad key size");if(n.length!==crypto_secretbox_NONCEBYTES)throw new Error("bad nonce size")}function checkBoxLengths(pk,sk){if(pk.length!==crypto_box_PUBLICKEYBYTES)throw new Error("bad public key size");if(sk.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size")}function checkArrayTypes(){for(var i=0;i<arguments.length;i++){if(!(arguments[i]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}}function cleanup(arr){for(var i=0;i<arr.length;i++)arr[i]=0}nacl2.randomBytes=function(n){var b=new Uint8Array(n);randombytes(b,n);return b};nacl2.secretbox=function(msg,nonce3,key){checkArrayTypes(msg,nonce3,key);checkLengths(key,nonce3);var m=new Uint8Array(crypto_secretbox_ZEROBYTES+msg.length);var c=new Uint8Array(m.length);for(var i=0;i<msg.length;i++)m[i+crypto_secretbox_ZEROBYTES]=msg[i];crypto_secretbox(c,m,m.length,nonce3,key);return c.subarray(crypto_secretbox_BOXZEROBYTES)};nacl2.secretbox.open=function(box,nonce3,key){checkArrayTypes(box,nonce3,key);checkLengths(key,nonce3);var c=new Uint8Array(crypto_secretbox_BOXZEROBYTES+box.length);var m=new Uint8Array(c.length);for(var i=0;i<box.length;i++)c[i+crypto_secretbox_BOXZEROBYTES]=box[i];if(c.length<32)return null;if(crypto_secretbox_open(m,c,c.length,nonce3,key)!==0)return null;return m.subarray(crypto_secretbox_ZEROBYTES)};nacl2.secretbox.keyLength=crypto_secretbox_KEYBYTES;nacl2.secretbox.nonceLength=crypto_secretbox_NONCEBYTES;nacl2.secretbox.overheadLength=crypto_secretbox_BOXZEROBYTES;nacl2.scalarMult=function(n,p){checkArrayTypes(n,p);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");if(p.length!==crypto_scalarmult_BYTES)throw new Error("bad p size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult(q,n,p);return q};nacl2.scalarMult.base=function(n){checkArrayTypes(n);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult_base(q,n);return q};nacl2.scalarMult.scalarLength=crypto_scalarmult_SCALARBYTES;nacl2.scalarMult.groupElementLength=crypto_scalarmult_BYTES;nacl2.box=function(msg,nonce3,publicKey,secretKey){var k=nacl2.box.before(publicKey,secretKey);return nacl2.secretbox(msg,nonce3,k)};nacl2.box.before=function(publicKey,secretKey){checkArrayTypes(publicKey,secretKey);checkBoxLengths(publicKey,secretKey);var k=new Uint8Array(crypto_box_BEFORENMBYTES);crypto_box_beforenm(k,publicKey,secretKey);return k};nacl2.box.after=nacl2.secretbox;nacl2.box.open=function(msg,nonce3,publicKey,secretKey){var k=nacl2.box.before(publicKey,secretKey);return nacl2.secretbox.open(msg,nonce3,k)};nacl2.box.open.after=nacl2.secretbox.open;nacl2.box.keyPair=function(){var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_box_SECRETKEYBYTES);crypto_box_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl2.box.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);crypto_scalarmult_base(pk,secretKey);return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl2.box.publicKeyLength=crypto_box_PUBLICKEYBYTES;nacl2.box.secretKeyLength=crypto_box_SECRETKEYBYTES;nacl2.box.sharedKeyLength=crypto_box_BEFORENMBYTES;nacl2.box.nonceLength=crypto_box_NONCEBYTES;nacl2.box.overheadLength=nacl2.secretbox.overheadLength;nacl2.sign=function(msg,secretKey){checkArrayTypes(msg,secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var signedMsg=new Uint8Array(crypto_sign_BYTES+msg.length);crypto_sign(signedMsg,msg,msg.length,secretKey);return signedMsg};nacl2.sign.open=function(signedMsg,publicKey){checkArrayTypes(signedMsg,publicKey);if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var tmp=new Uint8Array(signedMsg.length);var mlen=crypto_sign_open(tmp,signedMsg,signedMsg.length,publicKey);if(mlen<0)return null;var m=new Uint8Array(mlen);for(var i=0;i<m.length;i++)m[i]=tmp[i];return m};nacl2.sign.detached=function(msg,secretKey){var signedMsg=nacl2.sign(msg,secretKey);var sig=new Uint8Array(crypto_sign_BYTES);for(var i=0;i<sig.length;i++)sig[i]=signedMsg[i];return sig};nacl2.sign.detached.verify=function(msg,sig,publicKey){checkArrayTypes(msg,sig,publicKey);if(sig.length!==crypto_sign_BYTES)throw new Error("bad signature size");if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var sm=new Uint8Array(crypto_sign_BYTES+msg.length);var m=new Uint8Array(crypto_sign_BYTES+msg.length);var i;for(i=0;i<crypto_sign_BYTES;i++)sm[i]=sig[i];for(i=0;i<msg.length;i++)sm[i+crypto_sign_BYTES]=msg[i];return crypto_sign_open(m,sm,sm.length,publicKey)>=0};nacl2.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl2.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i<pk.length;i++)pk[i]=secretKey[32+i];return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl2.sign.keyPair.fromSeed=function(seed){checkArrayTypes(seed);if(seed.length!==crypto_sign_SEEDBYTES)throw new Error("bad seed size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);for(var i=0;i<32;i++)sk[i]=seed[i];crypto_sign_keypair(pk,sk,true);return{publicKey:pk,secretKey:sk}};nacl2.sign.publicKeyLength=crypto_sign_PUBLICKEYBYTES;nacl2.sign.secretKeyLength=crypto_sign_SECRETKEYBYTES;nacl2.sign.seedLength=crypto_sign_SEEDBYTES;nacl2.sign.signatureLength=crypto_sign_BYTES;nacl2.hash=function(msg){checkArrayTypes(msg);var h=new Uint8Array(crypto_hash_BYTES);crypto_hash(h,msg,msg.length);return h};nacl2.hash.hashLength=crypto_hash_BYTES;nacl2.verify=function(x,y){checkArrayTypes(x,y);if(x.length===0||y.length===0)return false;if(x.length!==y.length)return false;return vn(x,0,y,0,x.length)===0?true:false};nacl2.setPRNG=function(fn){randombytes=fn};(function(){var crypto2=typeof globalThis!=="undefined"?globalThis.crypto||globalThis.msCrypto:null;if(crypto2&&crypto2.getRandomValues){var QUOTA=65536;nacl2.setPRNG(function(x,n){var i,v=new Uint8Array(n);for(i=0;i<n;i+=QUOTA){crypto2.getRandomValues(v.subarray(i,i+Math.min(n-i,QUOTA)))}for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}else if(typeof __require!=="undefined"){crypto2=__require("crypto");if(crypto2&&crypto2.randomBytes){nacl2.setPRNG(function(x,n){var i,v=crypto2.randomBytes(n);for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}}})()})(typeof module!=="undefined"&&module.exports?module.exports:globalThis.nacl=globalThis.nacl||{});var nacl=typeof module!=="undefined"&&module.exports?module.exports:globalThis.nacl;var denoHelper={fromSeed:nacl.sign.keyPair.fromSeed,sign:nacl.sign.detached,verify:nacl.sign.detached.verify,randomBytes:nacl.randomBytes,scalarBaseMultiply:nacl.scalarMult.base,seal:nacl.box,open:nacl.box.open};var helper;function setEd25519Helper(lib){helper=lib}var crc16tab=new Uint16Array([0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920]);var NKeysErrorCode2;(function(NKeysErrorCode3){NKeysErrorCode3["InvalidPrefixByte"]="nkeys: invalid prefix byte";NKeysErrorCode3["InvalidKey"]="nkeys: invalid key";NKeysErrorCode3["InvalidPublicKey"]="nkeys: invalid public key";NKeysErrorCode3["InvalidSeedLen"]="nkeys: invalid seed length";NKeysErrorCode3["InvalidSeed"]="nkeys: invalid seed";NKeysErrorCode3["InvalidCurveSeed"]="nkeys: invalid curve seed";NKeysErrorCode3["InvalidCurveKey"]="nkeys: not a valid curve key";NKeysErrorCode3["InvalidCurveOperation"]="nkeys: curve key is not valid for sign/verify";NKeysErrorCode3["InvalidNKeyOperation"]="keys: only curve key can seal/open";NKeysErrorCode3["InvalidEncoding"]="nkeys: invalid encoded key";NKeysErrorCode3["InvalidRecipient"]="nkeys: not a valid recipient public curve key";NKeysErrorCode3["InvalidEncrypted"]="nkeys: encrypted input is not valid";NKeysErrorCode3["CannotSign"]="nkeys: cannot sign, no private key available";NKeysErrorCode3["PublicKeyOnly"]="nkeys: no seed or private key available";NKeysErrorCode3["InvalidChecksum"]="nkeys: invalid checksum";NKeysErrorCode3["SerializationError"]="nkeys: serialization error";NKeysErrorCode3["ApiError"]="nkeys: api error";NKeysErrorCode3["ClearedPair"]="nkeys: pair is cleared"})(NKeysErrorCode2||(NKeysErrorCode2={}));var Prefix2;(function(Prefix3){Prefix3[Prefix3["Unknown"]=-1]="Unknown";Prefix3[Prefix3["Seed"]=144]="Seed";Prefix3[Prefix3["Private"]=120]="Private";Prefix3[Prefix3["Operator"]=112]="Operator";Prefix3[Prefix3["Server"]=104]="Server";Prefix3[Prefix3["Cluster"]=16]="Cluster";Prefix3[Prefix3["Account"]=0]="Account";Prefix3[Prefix3["User"]=160]="User";Prefix3[Prefix3["Curve"]=184]="Curve"})(Prefix2||(Prefix2={}));setEd25519Helper(denoHelper);var Algorithms;(function(Algorithms2){Algorithms2["v1"]="ed25519";Algorithms2["v2"]="ed25519-nkey"})(Algorithms||(Algorithms={}));var import_nats_core=__toESM(require_mod3(),1);var import_nkeys4=__toESM(require_mod(),1);function idFromCreds(creds){return identityFromCreds(creds).id}function jwtFromCreds(creds){return creds.match(/BEGIN NATS USER JWT-----\s*([\s\S]*?)\s*------END NATS USER JWT/)?.[1].trim()}function credsFingerprint(creds){const jwt2=jwtFromCreds(creds);if(!jwt2)throw new Error("creds: no NATS user JWT block found - cannot fingerprint");return createHash4("sha256").update(jwt2).digest("hex")}function credsClaims(creds){const payload=jwtFromCreds(creds)?.split(".")[1];if(!payload)throw new Error("creds: no NATS user JWT block found");try{return JSON.parse(Buffer.from(payload,"base64url").toString("utf8"))}catch{throw new Error("creds: undecodable user JWT payload")}}function credsRenewalDelayMs(creds){const claims2=credsClaims(creds);if(typeof claims2.exp!=="number")throw new Error("creds source returned a cred without a numeric exp - a standing-renewal endpoint requires bounded creds (mint with a lifetime, or pass a static string instead of a source)");const iatMs=(typeof claims2.iat==="number"?claims2.iat:Date.now()/1e3)*1e3;const expMs=claims2.exp*1e3;return iatMs+.75*(expMs-iatMs)-Date.now()}function identityFromCreds(creds){const seedM=creds.match(/BEGIN USER NKEY SEED-----\s*([\s\S]*?)\s*------END USER NKEY SEED/);if(!seedM)throw new Error("creds: no user nkey seed block found");const seed=seedM[1].trim();const id2=(0,import_nkeys4.fromSeed)(new TextEncoder().encode(seed)).getPublicKey();const payload=jwtFromCreds(creds)?.split(".")[1];const sub=payload?JSON.parse(Buffer.from(payload,"base64url").toString("utf8")).sub:void 0;if(sub&&sub!==id2)throw new Error(`creds: seed identity ${id2} != JWT subject ${sub}`);return{id:id2,seed}}var REMOTE_MANAGER_AUTHORITY_OPERATIONS=Object.freeze(["prepare","activate","renew","session","retire","renewStandingBundle","renewRunDriver","transferReader"]);var REMOTE_MANAGER_MAINTENANCE_OPERATIONS=Object.freeze(["evict-family-principal","reconcile-registration"]);var MANAGED_AGENT_RUNTIME_STATES=Object.freeze(["reserved","creating","bound","create-unknown","closing","closed"]);var MANAGED_AGENT_RUNTIME_READINESS=Object.freeze(["ready","bound-not-ready","none"]);var MANAGED_AGENT_RETIREMENT_PHASES=Object.freeze(["intent","released","retired","deprovisioned","terminal"]);var REMOTE_MANAGER_IDENTITY_NAMES=Object.freeze(["supervisor","executor","serve","goalWriter","sessionLedger"]);var dec3=new TextDecoder;var enc3=new TextEncoder;var HEX64=/^[0-9a-f]{64}$/;function contractRefToHex(ref){const hex3=ref.startsWith("sha256:")?ref.slice("sha256:".length):ref;if(!HEX64.test(hex3))throw new EpEnvelopeError("contract-invalid",`contract reference ${JSON.stringify(ref)} is not a sha256 digest; a garbled reference never resolves (SPEC 13.7)`);return hex3}var sha256Ref=hex3=>`sha256:${hex3}`;function buildContractClosureManifest(rootRef,memberRefs){const root=sha256Ref(contractRefToHex(rootRef));const members=[...new Set(memberRefs.map(r=>sha256Ref(contractRefToHex(r))))].sort();return{v:1,root,members}}var CONTRACT_CLOSURE_MAX_ARTIFACTS=64;function assertManifestDigest(ref,what){if(typeof ref!=="string"||!isContractDigest(ref))throw new EpEnvelopeError("contract-invalid",`${what} must be exactly "sha256:<64-hex>" (SPEC 13.7); a bare-hex or otherwise-spelled digest gives one closure two identities and never names it`)}function parseClosureManifest(value,what){if(value===null||typeof value!=="object"||Array.isArray(value))throw new EpEnvelopeError("contract-invalid",`${what} is not a manifest object (SPEC 13.7)`);const o=value;for(const k of Object.keys(o))if(!["v","root","members"].includes(k))throw new EpEnvelopeError("contract-invalid",`${what} carries the unknown field "${k}"; the manifest schema is closed (SPEC 13.7)`);if(o.v!==1||typeof o.root!=="string"||!Array.isArray(o.members))throw new EpEnvelopeError("contract-invalid",`${what} is not { v: 1, root, members } (SPEC 13.7)`);assertManifestDigest(o.root,`${what} root`);if(o.members.length>CONTRACT_CLOSURE_MAX_ARTIFACTS)throw new EpEnvelopeError("contract-invalid",`${what} names ${o.members.length} members, above the ${CONTRACT_CLOSURE_MAX_ARTIFACTS}-artifact ceiling (SPEC 13.7)`);for(let i=0;i<o.members.length;i++){const m=o.members[i];assertManifestDigest(m,`${what} member ${i}`);if(i>0&&o.members[i-1]>=m)throw new EpEnvelopeError("contract-invalid",`${what} members are not strictly sorted/deduplicated at index ${i}; a noncanonical manifest never names a closure (SPEC 13.7)`)}return{v:1,root:o.root,members:o.members}}var import__=__toESM(require__(),1);var FULL={neg:true,ranges:[]};var EMPTY={neg:false,ranges:[]};var set=(...ranges)=>({neg:false,ranges});var single=c=>set([c,c]);function rangesOverlap(a,b){for(const[al,ah]of a)for(const[bl,bh]of b)if(al<=bh&&bl<=ah)return true;return false}function rangesCover(outer,[lo,hi]){return outer.some(([ol,oh])=>ol<=lo&&hi<=oh)}function intersects(a,b){if(!a.neg&&!b.neg)return rangesOverlap(a.ranges,b.ranges);if(a.neg&&b.neg)return true;const pos=a.neg?b:a;const neg=a.neg?a:b;return!pos.ranges.every(r=>rangesCover(neg.ranges,r))}function union(a,b){if(!a.neg&&a.ranges.length===0)return b;if(!b.neg&&b.ranges.length===0)return a;if(a.neg||b.neg)return FULL;return{neg:false,ranges:[...a.ranges,...b.ranges]}}var PatternRefused=class extends Error{};var refuse=reason=>{throw new PatternRefused(reason)};var Parser=class{src;i=0;constructor(src){this.src=src}peek(){return this.src[this.i]}next(){return this.src[this.i++]}eof(){return this.i>=this.src.length}parse(){const node=this.alternation();if(!this.eof())refuse(`unexpected "${this.peek()}" at ${this.i}`);return node}alternation(){const branches=[this.sequence()];while(this.peek()==="|"){this.next();branches.push(this.sequence())}return branches.length===1?branches[0]:{kind:"alt",branches}}sequence(){const items=[];while(!this.eof()&&this.peek()!=="|"&&this.peek()!==")")items.push(this.quantified());return{kind:"seq",items}}quantified(){let node=this.atom();for(;;){const c=this.peek();let min,max;if(c==="*"){min=0;max=Infinity}else if(c==="+"){min=1;max=Infinity}else if(c==="?"){min=0;max=1}else if(c==="{"){const m=/^\{(\d+)(?:,(\d*))?\}/.exec(this.src.slice(this.i));if(!m)break;min=parseInt(m[1],10);max=m[2]===void 0?min:m[2]===""?Infinity:parseInt(m[2],10);if(max<min)refuse(`quantifier {${min},${max}} is inverted`);this.i+=m[0].length-1}else break;this.next();if(this.peek()==="?")this.next();node={kind:"quant",body:node,min,max}}return node}atom(){const c=this.next();if(c==="("){if(this.peek()==="?"){const ahead=this.src.slice(this.i,this.i+3);if(/^\?(:|<[a-zA-Z_])/.test(ahead)){this.next();if(this.peek()==="<"){while(this.next()!==">"){if(this.eof())refuse("unterminated group name")}}else this.next()}else{refuse("lookarounds and special groups are outside the profile's safe subset")}}const body=this.alternation();if(this.next()!==")")refuse("unterminated group");return body}if(c==="[")return{kind:"atom",set:this.charClass()};if(c===".")return{kind:"atom",set:FULL};if(c==="^")return{kind:"anchor",at:"start"};if(c==="$")return{kind:"anchor",at:"end"};if(c==="\\")return{kind:"atom",set:this.escape(false)};if(c===")"||c===void 0)refuse("unbalanced group");return{kind:"atom",set:single(this.codePoint())}}codePoint(){const cp=this.src.codePointAt(this.i-1);if(cp>65535)this.i++;return cp}charClass(){let neg=false;if(this.peek()==="^"){this.next();neg=true}const ranges=[];let approx=false;while(this.peek()!=="]"){if(this.eof())refuse("unterminated character class");let lo;const c=this.next();if(c==="\\"){if(this.peek()==="b"){this.next();lo=8}else{const s=this.escape(true);if(s.neg||s.ranges.length!==1||s.ranges[0][0]!==s.ranges[0][1]){approx=true;for(const r of s.neg?[[0,1114111]]:s.ranges)ranges.push(r)}else lo=s.ranges[0][0]}}else lo=this.codePoint();if(lo!==void 0){if(this.peek()==="-"&&this.src[this.i+1]!=="]"&&this.src[this.i+1]!==void 0){this.next();const hiC=this.next();const hi=hiC==="\\"?(()=>{const s=this.escape(true);if(s.neg||s.ranges.length!==1){approx=true;return 1114111}return s.ranges[0][0]})():this.codePoint();ranges.push([lo,hi])}else ranges.push([lo,lo])}}this.next();if(neg&&approx)return FULL;return{neg,ranges}}escape(inClass){const c=this.next();if(c===void 0)refuse("dangling escape");if(!inClass&&c>="1"&&c<="9")refuse(`backreference \\${c} is outside the profile's safe subset`);if(c==="k")refuse("named backreferences are outside the profile's safe subset");if(c==="b"||c==="B")return EMPTY;switch(c){case"d":return set([48,57]);case"D":return{neg:true,ranges:[[48,57]]};case"w":return set([48,57],[65,90],[95,95],[97,122]);case"W":return{neg:true,ranges:[[48,57],[65,90],[95,95],[97,122]]};case"s":return set([9,13],[32,32],[160,160],[8232,8233]);case"S":return{neg:true,ranges:[[9,13],[32,32],[160,160],[8232,8233]]};case"n":return single(10);case"r":return single(13);case"t":return single(9);case"f":return single(12);case"v":return single(11);case"0":return single(0);case"x":{const m=/^[0-9a-fA-F]{2}/.exec(this.src.slice(this.i));if(!m)refuse("malformed \\x escape");this.i+=2;return single(parseInt(m[0],16))}case"u":{const braced=/^\{([0-9a-fA-F]{1,6})\}/.exec(this.src.slice(this.i));if(braced){this.i+=braced[0].length;const cp2=parseInt(braced[1],16);if(cp2>=55296&&cp2<=57343)refuse("surrogate code point escapes are outside the safe subset");return single(cp2)}const m=/^[0-9a-fA-F]{4}/.exec(this.src.slice(this.i));if(!m)refuse("malformed \\u escape");this.i+=4;const cp=parseInt(m[0],16);if(cp>=55296&&cp<=57343)refuse("surrogate escapes are outside the safe subset (write the character or \\u{\u2026})");return single(cp)}case"p":case"P":{const m=/^\{[^}]*\}/.exec(this.src.slice(this.i));if(!m)refuse("malformed \\p escape");this.i+=m[0].length;return FULL}default:if(/[A-Za-z0-9]/.test(c))refuse(`escape \\${c} is outside the profile's safe subset`);return single(c.codePointAt(0))}}};var CHOICE_BUDGET=64;var CHOICE_SAT=1<<20;var mulSat=(a,b)=>Math.min(a*b,CHOICE_SAT);function powSat(base,exp){let out=1;for(let i=0;i<exp&&out<CHOICE_SAT;i++)out=mulSat(out,base);return out}function edgeRepeat(facts,pick2){const deeper=new Array(facts.length+1);deeper[facts.length]=EMPTY;for(let i=facts.length-1;i>=0;i--)deeper[i]=union(pick2(facts[i]),deeper[i+1]);let acc=EMPTY;for(let i=0;i<facts.length;i++){acc=union(acc,pick2(facts[i]));if(!facts[i].nullable&&!intersects(facts[i].set,deeper[i+1]))break}return acc}function assertStartAnchored(node){switch(node.kind){case"anchor":if(node.at!=="start")refuse("a top-level branch must begin with a '^' start anchor (Ajv tests patterns unanchored)");return;case"seq":if(node.items.length===0)refuse("an empty top-level branch is not start-anchored");assertStartAnchored(node.items[0]);return;case"alt":for(const b of node.branches)assertStartAnchored(b);return;default:refuse("a top-level branch must begin with a '^' start anchor (Ajv tests patterns unanchored)")}}function analyze(node){switch(node.kind){case"anchor":return{set:EMPTY,nullable:true,variable:false,ambiguousAlt:false,choices:1,leadRep:EMPTY,trailRep:EMPTY};case"atom":return{set:node.set,nullable:node.set.ranges.length===0&&!node.set.neg,variable:false,ambiguousAlt:false,choices:1,leadRep:EMPTY,trailRep:EMPTY};case"seq":{const facts=node.items.map(analyze);for(let i=0;i<facts.length;i++){const T=facts[i].trailRep;if(T.ranges.length===0&&!T.neg)continue;for(let j=i+1;j<facts.length;j++){if(intersects(T,facts[j].leadRep))refuse("two overlapping variable repetitions in sequence (polynomial backtracking class)");if(!facts[j].nullable&&!intersects(facts[j].set,T))break}}return{set:facts.reduce((s,f)=>union(s,f.set),EMPTY),nullable:facts.every(f=>f.nullable),variable:facts.some(f=>f.variable),ambiguousAlt:facts.some(f=>f.ambiguousAlt),choices:facts.reduce((n,f)=>mulSat(n,f.choices),1),leadRep:edgeRepeat(facts,f=>f.leadRep),trailRep:edgeRepeat([...facts].reverse(),f=>f.trailRep)}}case"alt":{const facts=node.branches.map(analyze);let ambiguous=facts.some(f=>f.ambiguousAlt);if(facts.filter(f=>f.nullable).length>1)ambiguous=true;for(let i=0;i<facts.length&&!ambiguous;i++){for(let j=i+1;j<facts.length;j++){if(intersects(facts[i].set,facts[j].set)){ambiguous=true;break}}}return{set:facts.reduce((s,f)=>union(s,f.set),EMPTY),nullable:facts.some(f=>f.nullable),variable:facts.some(f=>f.variable),ambiguousAlt:ambiguous,choices:ambiguous?facts.reduce((n,f)=>Math.min(n+f.choices,CHOICE_SAT),0):facts.reduce((n,f)=>Math.max(n,f.choices),1),leadRep:facts.reduce((s,f)=>union(s,f.leadRep),EMPTY),trailRep:facts.reduce((s,f)=>union(s,f.trailRep),EMPTY)}}case"quant":{const body=analyze(node.body);const repeats=node.max>1||node.max===Infinity;if(repeats){if(body.variable)refuse("repeats a group that itself contains a quantifier (exponential backtracking class)");if(body.nullable)refuse("repeats a nullable body (unbounded ambiguity on empty matches)");if(body.ambiguousAlt)refuse("repeats an ambiguous alternation (branches overlap; exponential backtracking class)")}const nondet=node.max>node.min;return{set:body.set,nullable:body.nullable||node.min===0,variable:body.variable||nondet||repeats,ambiguousAlt:body.ambiguousAlt,choices:node.max===node.min?powSat(body.choices,node.min):node.min===0&&node.max===1?Math.min(body.choices+1,CHOICE_SAT):body.choices,leadRep:nondet?union(body.set,body.leadRep):body.leadRep,trailRep:nondet?union(body.set,body.trailRep):body.trailRep}}}}function assertSafePattern(pattern,maxChars){if(pattern.length>maxChars)throw new Error(`pattern of ${pattern.length} characters exceeds the profile complexity bound (${maxChars})`);try{const ast=new Parser(pattern).parse();assertStartAnchored(ast);const facts=analyze(ast);if(facts.choices>CHOICE_BUDGET)refuse(`aggregate alternation ambiguity of ${facts.choices>=CHOICE_SAT?"at least ":""}${facts.choices} paths exceeds the ${CHOICE_BUDGET}-path budget (the fixed-alternation exponential class)`)}catch(e){if(e instanceof PatternRefused)throw new Error(`pattern ${JSON.stringify(pattern)} is outside the profile's safe subset: ${e.message}`);throw new Error(`pattern ${JSON.stringify(pattern)} did not parse under the profile's safe subset: ${e.message}`)}}var AJV_PROFILE_OPTIONS=Object.freeze({strict:false,allErrors:true,ownProperties:true,validateFormats:false,loadSchema:void 0,unicodeRegExp:true,inlineRefs:false});function singleDocumentClosure(root){const manifest=buildContractClosureManifest(contractDigest(root),[]);return{manifest,closureDigest:contractDigest(manifest)}}var VOID_SCHEMA=Object.freeze({type:"null"});var VOID_SCHEMA_ARTIFACT_DIGEST=contractDigest(VOID_SCHEMA);var VOID_SCHEMA_DIGEST=singleDocumentClosure(VOID_SCHEMA).closureDigest;var STORE_REF=/^cotal:(sha256:[0-9a-f]{64})(#.*)?$/;var ContractInvalidError=class extends Error{code="contract-invalid";constructor(message){super(message);this.name="ContractInvalidError"}};function canonicalOrInvalid(v,label){try{return canonicalJson(v)}catch(e){throw new ContractInvalidError(`${label}: ${e.message}`)}}function digestOrInvalid(v,label){try{return contractDigest(v)}catch(e){throw new ContractInvalidError(`${label}: ${e.message}`)}}function structuralDepth(v,depth=0){if(depth>SCHEMA_PROFILE.maxDepth)return depth;if(v===null||typeof v!=="object")return depth;let max=depth;const children=Array.isArray(v)?v:Object.values(v);for(const c of children){const d=structuralDepth(c,depth+1);if(d>max)max=d;if(max>SCHEMA_PROFILE.maxDepth)return max}return max}function assertBoundedPattern(p,label,where){try{assertSafePattern(p,SCHEMA_PROFILE.maxPatternChars)}catch(e){throw new ContractInvalidError(`${label}: ${where} refused: ${e.message}`)}}function collectRefs(v,label,out=[]){if(v===null||typeof v!=="object")return out;if(Array.isArray(v)){for(const c of v)collectRefs(c,label,out);return out}for(const[k,c]of Object.entries(v)){if((k==="$ref"||k==="$dynamicRef")&&typeof c==="string")out.push(c);if(k==="pattern"&&typeof c==="string")assertBoundedPattern(c,label,"a pattern");if(k==="patternProperties"&&c!==null&&typeof c==="object"&&!Array.isArray(c)){for(const p of Object.keys(c))assertBoundedPattern(p,label,"a patternProperties key")}collectRefs(c,label,out)}return out}var SCHEMA_VALUED_KEYS=["not","if","then","else","items","contains","additionalProperties","propertyNames","unevaluatedItems","unevaluatedProperties","contentSchema","additionalItems"];var SCHEMA_VALUED_MAP_KEYS=["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"];var SCHEMA_VALUED_LIST_KEYS=["allOf","anyOf","oneOf","prefixItems"];var SCALAR_KEYS=["type","enum","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","maxContains","minContains","maxProperties","minProperties","required","dependentRequired","format","contentEncoding","contentMediaType","title","description","default","deprecated","readOnly","writeOnly","examples","$comment","$id","$schema","$ref","$anchor","$dynamicRef","$dynamicAnchor","$vocabulary"];var ADMITTED=new Set([...SCHEMA_VALUED_KEYS,...SCHEMA_VALUED_MAP_KEYS,...SCHEMA_VALUED_LIST_KEYS,...SCALAR_KEYS]);function assertAdmittedVocabulary(doc,label){const atSchema=(d,path)=>{if(typeof d==="boolean")return;if(d===null||typeof d!=="object"||Array.isArray(d))return;for(const[k,v]of Object.entries(d)){if(!ADMITTED.has(k))throw new ContractInvalidError(`${label}: keyword ${JSON.stringify(k)} at ${path||"/"} is not in the profile's admitted vocabulary; an unrecognised keyword is REFUSED rather than ignored, because this profile cannot count what it does not recognise`);const here=`${path}/${k}`;if(SCHEMA_VALUED_KEYS.includes(k))atSchema(v,here);else if(SCHEMA_VALUED_MAP_KEYS.includes(k)&&v&&typeof v==="object"&&!Array.isArray(v))for(const[name,sub]of Object.entries(v))atSchema(sub,`${here}/${name}`);else if(SCHEMA_VALUED_LIST_KEYS.includes(k)&&Array.isArray(v))v.forEach((sub,i)=>atSchema(sub,`${here}/${i}`))}};atSchema(doc,"")}function assertDocumentProfile(doc,label){const canonical=canonicalOrInvalid(doc,label);const bytes=Buffer.byteLength(canonical,"utf8");if(bytes>SCHEMA_PROFILE.maxDocumentBytes)throw new ContractInvalidError(`${label}: document is ${bytes} bytes (profile max ${SCHEMA_PROFILE.maxDocumentBytes})`);if(structuralDepth(doc)>SCHEMA_PROFILE.maxDepth)throw new ContractInvalidError(`${label}: nesting exceeds profile depth ${SCHEMA_PROFILE.maxDepth}`);assertAdmittedVocabulary(doc,label);const storeRefs=[];for(const ref of collectRefs(doc,label)){if(ref.startsWith("#"))continue;const m=STORE_REF.exec(ref);if(!m)throw new ContractInvalidError(`${label}: external $ref ${JSON.stringify(ref)}; only local '#\u2026' or digest-pinned 'cotal:sha256:<hex>' references are permitted (no ambient resolution)`);storeRefs.push(m[1])}return storeRefs}var COMPILED=new WeakSet;function makeCompiled(validate2,closureDigest){const compiled=Object.freeze({validate:validate2,closureDigest});COMPILED.add(compiled);return compiled}function assertClosureProfile(bundle2){const members=bundle2.members??{};for(const d of Object.keys(members)){if(!isContractDigest(d))throw new ContractInvalidError(`bundle member key ${JSON.stringify(d)} is not a sha256 digest`)}const seen=new Set;let closureBytes=0;let frontier=assertDocumentProfile(bundle2.root,"root schema");closureBytes+=Buffer.byteLength(canonicalOrInvalid(bundle2.root,"root schema"),"utf8");for(let chain=0;frontier.length>0;chain++){if(chain>=SCHEMA_PROFILE.maxRefChain)throw new ContractInvalidError(`reference chain exceeds profile depth ${SCHEMA_PROFILE.maxRefChain}`);const next=[];for(const digest of frontier){if(seen.has(digest))continue;seen.add(digest);const member=members[digest];if(member===void 0)throw new ContractInvalidError(`unresolved digest reference ${digest}: not present in the bundle (schemas are closed; nothing is fetched)`);if(digestOrInvalid(member,`member ${digest}`)!==digest)throw new ContractInvalidError(`bundle member under ${digest} does not hash to its key (content is ${digestOrInvalid(member,`member ${digest}`)})`);closureBytes+=Buffer.byteLength(canonicalOrInvalid(member,`member ${digest}`),"utf8");if(closureBytes>SCHEMA_PROFILE.maxClosureBytes)throw new ContractInvalidError(`closure is ${closureBytes} bytes (profile max ${SCHEMA_PROFILE.maxClosureBytes})`);next.push(...assertDocumentProfile(member,`member ${digest}`))}frontier=next}const extras=Object.keys(members).filter(d=>!seen.has(d));if(extras.length>0)throw new ContractInvalidError(`bundle carries ${extras.length} member(s) unreachable from the root (${extras.slice(0,3).join(", ")}${extras.length>3?", \u2026":""})`);return contractDigest(buildContractClosureManifest(digestOrInvalid(bundle2.root,"root schema"),[...seen]))}function widestMapKeywordSize(doc,max=0){if(doc===null||typeof doc!=="object"||Array.isArray(doc))return max;for(const[k,v]of Object.entries(doc)){if(SCHEMA_VALUED_MAP_KEYS.includes(k)&&v&&typeof v==="object"&&!Array.isArray(v)){const size=Object.keys(v).length;if(size>max)max=size;for(const sub of Object.values(v))max=widestMapKeywordSize(sub,max)}else if(SCHEMA_VALUED_KEYS.includes(k)){max=widestMapKeywordSize(v,max)}else if(SCHEMA_VALUED_LIST_KEYS.includes(k)&&Array.isArray(v)){for(const sub of v)max=widestMapKeywordSize(sub,max)}}return max}function widestClosurePropertyCount(bundle2){let max=widestMapKeywordSize(bundle2.root);for(const member of Object.values(bundle2.members??{}))max=widestMapKeywordSize(member,max);return max}function compileWithinBudget(bundle2){const ajv=new import__.Ajv2020(AJV_PROFILE_OPTIONS);let validate2;try{for(const[digest,member]of Object.entries(bundle2.members??{}))ajv.addSchema(member,`cotal:${digest}`);validate2=ajv.compile(bundle2.root)}catch(e){if(e instanceof RangeError){const width=widestClosurePropertyCount(bundle2);throw new ContractInvalidError(`schema does not compile under the 2020-12 profile: the generated validator's code shape overflowed the call stack (${e.message}) compiling a ${width}-property object, which every profile ceiling (document/closure bytes, depth, ref-chain, pattern length, admitted vocabulary) had already admitted; this is the compiler's generated-code shape running out of stack, not a defect in the schema`)}throw new ContractInvalidError(`schema does not compile under the 2020-12 profile: ${e.message}`)}return validate2}function compileContract(bundle2){const closureDigest=assertClosureProfile(bundle2);return makeCompiled(compileWithinBudget(bundle2),closureDigest)}var isRec=v=>v!==null&&typeof v==="object"&&!Array.isArray(v);var isDigest=v=>typeof v==="string"&&/^sha256:[0-9a-f]{64}$/.test(v);var URN=/^[a-z0-9][a-z0-9-]{0,62}(\.[a-z0-9][a-z0-9-]{0,62}){1,15}$/;var TRAIT_GUARDED="ai.cotal.guarded";var TRAIT_PRICED="ai.cotal.priced";var GOVERNED_TRAIT_URNS=Object.freeze([TRAIT_GUARDED,TRAIT_PRICED]);var CAPABILITY=/^[a-z][a-z0-9._-]{0,63}$/;function invalid(what){throw new ContractInvalidError(`cluster document does not validate: ${what}`)}function parseClusterDocument(raw){const o=isRec(raw)?raw:invalid("not an object");if(typeof o.urn!=="string"||!URN.test(o.urn))invalid(`urn ${JSON.stringify(o.urn)} is not a reverse-DNS cluster type URN`);if(typeof o.revision!=="number"||!Number.isSafeInteger(o.revision)||o.revision<0)invalid("revision is not an unsigned integer");if(!Array.isArray(o.attributes))invalid("attributes is not an array");if(!Array.isArray(o.events))invalid("events is not an array");if(!Array.isArray(o.commands)||o.commands.length===0)invalid("commands must be a non-empty array");const seen=new Set;const commands=o.commands.map((c,i)=>{const cmd=isRec(c)?c:invalid(`commands[${i}] is not an object`);const name=typeof cmd.name==="string"?cmd.name:invalid(`commands[${i}].name is not a string`);try{assertCommandToken(name)}catch(e){invalid(`commands[${i}].name: ${e.message}`)}if(name==="describe")invalid(`commands[${i}] declares "describe": reserved, served by the machinery, never a cluster command (SPEC 13.7)`);if(seen.has(name))invalid(`command "${name}" is declared twice`);seen.add(name);if(cmd.class!=="ephemeral"&&cmd.class!=="journal")invalid(`command "${name}" class ${JSON.stringify(cmd.class)} is not "ephemeral" | "journal"`);if(typeof cmd.targeted!=="boolean")invalid(`command "${name}" must declare targeted as a boolean (SPEC 13.7)`);let modes;if(cmd.targeted){if(!Array.isArray(cmd.modes)||cmd.modes.length===0)invalid(`targeted command "${name}" must declare its admitted authorization modes (SPEC 13.7)`);const uniq=new Set;for(const m of cmd.modes){if(typeof m!=="string"||!isEpAuthzMode(m))invalid(`command "${name}" admits unknown mode ${JSON.stringify(m)}`);if(uniq.has(m))invalid(`command "${name}" admits mode "${m}" twice`);uniq.add(m)}modes=[...cmd.modes]}else if(cmd.modes!==void 0){invalid(`untargeted command "${name}" must not declare authorization modes`)}if(typeof cmd.capability!=="string"||!CAPABILITY.test(cmd.capability))invalid(`command "${name}" capability is not a bounded capability token`);if(!isDigest(cmd.inputDigest))invalid(`command "${name}" inputDigest is not a sha256 closure digest`);if(!isDigest(cmd.outputDigest))invalid(`command "${name}" outputDigest is not a sha256 closure digest`);let traits;if(cmd.traits!==void 0){if(!Array.isArray(cmd.traits))invalid(`command "${name}" traits is not an array`);const tSeen=new Set;for(const t of cmd.traits){if(typeof t!=="string"||!URN.test(t))invalid(`command "${name}" trait ${JSON.stringify(t)} is not a reverse-DNS trait URN (SPEC 13.7)`);if(tSeen.has(t))invalid(`command "${name}" declares trait "${t}" twice`);tSeen.add(t)}traits=[...cmd.traits]}let action;if(cmd.action!==void 0){if(cmd.action!==true)invalid(`command "${name}" action ${JSON.stringify(cmd.action)} is not true (the action composite is present or absent; "false" is a second way to say absent)`);if(cmd.class!=="journal")invalid(`command "${name}" declares the action composite but class "${cmd.class}": an action command's submissions are journal-class (SPEC 13.7)`);action=true}let admissionCeiling;if(cmd.class==="journal"){const ceil=isRec(cmd.admissionCeiling)?cmd.admissionCeiling:invalid(`journal-class command "${name}" must declare admissionCeiling {maxBytes, maxDepth, maxItems}: the canonicalizer reads its ceilings from the digest-verified surface, never from a constant`);const nums={};for(const f of["maxBytes","maxDepth","maxItems"]){const v=ceil[f];if(typeof v!=="number"||!Number.isSafeInteger(v)||v<=0)invalid(`command "${name}" admissionCeiling.${f} ${JSON.stringify(v)} is not a positive safe integer`);nums[f]=v}admissionCeiling={maxBytes:nums.maxBytes,maxDepth:nums.maxDepth,maxItems:nums.maxItems}}else if(cmd.admissionCeiling!==void 0){invalid(`ephemeral command "${name}" declares admissionCeiling: an ephemeral command receives no journal submissions, so a ceiling on it is unreadable by anything`)}let readinessDeadlineMs;if(cmd.readinessDeadlineMs!==void 0){if(!action)invalid(`command "${name}" declares readinessDeadlineMs without the action composite: readiness is goal state and only an action command has a goal`);if(typeof cmd.readinessDeadlineMs!=="number"||!Number.isSafeInteger(cmd.readinessDeadlineMs)||cmd.readinessDeadlineMs<0)invalid(`command "${name}" readinessDeadlineMs ${JSON.stringify(cmd.readinessDeadlineMs)} is not a non-negative safe integer (SPEC 13.11)`);readinessDeadlineMs=cmd.readinessDeadlineMs}return{name,class:cmd.class,targeted:cmd.targeted,...modes?{modes}:{},capability:cmd.capability,inputDigest:cmd.inputDigest,outputDigest:cmd.outputDigest,...traits?{traits}:{},...action?{action}:{},...admissionCeiling?{admissionCeiling}:{},...readinessDeadlineMs!==void 0?{readinessDeadlineMs}:{}}});return{urn:o.urn,revision:o.revision,attributes:[...o.attributes],commands,events:[...o.events]}}var import_jetstream16=__toESM(require_mod4(),1);var import_kv8=__toESM(require_mod6(),1);var import_transport_node15=__toESM(require_transport_node(),1);var import_jetstream3=__toESM(require_mod4(),1);var import_transport_node3=__toESM(require_transport_node(),1);var DEFAULT_DUPLICATE_WINDOW=(0,import_transport_node3.nanos)(2*60*1e3);var BACKUP_MAX_MSGS_PER_SUBJECT=1e3;var BACKUP_PLANE3_DEDUP_WINDOW_MS=2*60*60*1e3;var PLANE3_DUPLICATE_WINDOW=(0,import_transport_node3.nanos)(BACKUP_PLANE3_DEDUP_WINDOW_MS);function baseConfig(name,subjects){return{name,subjects,retention:import_jetstream3.RetentionPolicy.Limits,storage:import_jetstream3.StorageType.File,max_consumers:-1,max_msgs:-1,max_bytes:-1,max_age:0,max_msgs_per_subject:-1,max_msg_size:-1,discard:import_jetstream3.DiscardPolicy.Old,num_replicas:1,no_ack:false,duplicate_window:DEFAULT_DUPLICATE_WINDOW,compression:import_jetstream3.StoreCompression.None,allow_direct:false,mirror_direct:false,discard_new_per_subject:false,allow_rollup_hdrs:false,deny_delete:false,deny_purge:false,sealed:false,consumer_limits:{}}}function canonicalBackupStreamConfig(space2,stream){const p=spacePrefix(space2);if(stream===chatStream(space2)){return{...baseConfig(stream,[`${p}.chat.>`]),max_msgs_per_subject:BACKUP_MAX_MSGS_PER_SUBJECT,allow_direct:true}}if(stream===dmStream(space2))return baseConfig(stream,[`${p}.inst.>`]);if(stream===taskStream(space2)){return{...baseConfig(stream,[`${p}.svc.>`]),retention:import_jetstream3.RetentionPolicy.Workqueue}}if(stream===inboxStream(space2)){return{...baseConfig(stream,[`${p}.dinbox.>`]),max_msgs_per_subject:BACKUP_MAX_MSGS_PER_SUBJECT,duplicate_window:PLANE3_DUPLICATE_WINDOW}}if(stream===dlvStream(space2)){return{...baseConfig(stream,[`${p}.dlv.>`]),max_msgs_per_subject:BACKUP_MAX_MSGS_PER_SUBJECT,duplicate_window:PLANE3_DUPLICATE_WINDOW}}if(stream===wfjStreamName(space2))return baseConfig(stream,[`${p}.wfj.*`]);if(stream===recordsKvStreamName(space2))return{...kvStoreConfig(stream,recordsBucket(space2)),allow_direct:true,...endpointAuthorityStoreDefinitions(space2).records.hardenAfterCreate};if(stream===`KV_${admissionBucket(space2)}`)return{...kvStoreConfig(stream,admissionBucket(space2)),...admissionStoreDefinition(space2).hardenAfterCreate};for(const bucket of[channelBucket(space2),aclBucket(space2),membersBucket(space2)]){if(stream===`KV_${bucket}`){return{...baseConfig(stream,[`$KV.${bucket}.>`]),max_msgs_per_subject:1,discard:import_jetstream3.DiscardPolicy.New,allow_direct:true,allow_rollup_hdrs:true}}}throw new Error(`stream ${JSON.stringify(stream)} is not a backed-up stream for space ${JSON.stringify(space2)}`)}function kvStoreConfig(name,bucket){return{...baseConfig(name,[`$KV.${bucket}.>`]),max_msgs_per_subject:1,discard:import_jetstream3.DiscardPolicy.New,allow_rollup_hdrs:true}}var import_kv7=__toESM(require_mod6(),1);var import_transport_node14=__toESM(require_transport_node(),1);var import_transport_node13=__toESM(require_transport_node(),1);var import_nats_core6=__toESM(require_mod3(),1);import{EventEmitter}from"node:events";import{randomUUID as randomUUID3}from"node:crypto";import{setTimeout as delay}from"node:timers/promises";import{createConnection,isIP}from"node:net";var LIVENESS_PLANES=Object.freeze(["manager","delivery"]);function isLivenessPlane(plane){return LIVENESS_PLANES.includes(plane)}function responderFromLease(lease,expectedHolder){if(lease===void 0)return"unbound";if(lease.ready!==true)return"unbound";if(expectedHolder!==void 0&&lease.holder!==expectedHolder)return"stale";return"bound"}function responderFromProbe(outcome,answered){if(outcome==="replied")return answered??"unknown";if(outcome==="noResponders")return"unbound";return"unknown"}function parseLivenessAnswer(body,expectPlane){if(typeof body!=="object"||body===null)return void 0;const{plane,responder,instance}=body;if(typeof plane!=="string"||!isLivenessPlane(plane)||plane!==expectPlane)return void 0;if(responder!=="bound"&&responder!=="unbound"&&responder!=="stale"&&responder!=="unknown")return void 0;if(instance!==void 0&&(typeof instance!=="string"||instance===""))return void 0;return instance===void 0?{plane,responder}:{plane,responder,instance}}import{randomUUID}from"node:crypto";var startedAt=Math.floor(performance.timeOrigin);var scopes=new Map;function processRuntime(lifecycleUid){let own=scopes.get(lifecycleUid);if(!own){own=Object.freeze({id:randomUUID(),startedAt,source:"endpoint-process"});scopes.set(lifecycleUid,own)}return own}var import_nkeys6=__toESM(require_mod(),1);function nativeCredsAuthenticator(creds){return nonce3=>{const blocks=/\s*(?:(?:[-]{3,}[^\n]*[-]{3,}\n)(.+)(?:\n\s*[-]{3,}[^\n]*[-]{3,}\n))/ig;const text2=typeof creds==="function"?creds():creds;const jwtBlock=blocks.exec(text2);if(!jwtBlock)throw new Error("unable to parse credentials");const seedBlock=blocks.exec(text2);if(!seedBlock)throw new Error("unable to parse credentials");const seed=new TextEncoder().encode(seedBlock[1].trim());let signer;try{signer=nativeNkeySigner(seed);return{jwt:jwtBlock[1].trim(),nkey:signer.getPublicKey(),sig:nonce3?(0,import_nkeys6.encode)(signer.sign(new TextEncoder().encode(nonce3))):""}}finally{seed.fill(0);signer?.clear()}}}var RENEWAL_WINDOW=Object.freeze({from:.5,to:.8});var RENEWAL_SPACING_MS=1e3;var MAX_TIMER_MS=2147483647;var armed=new Map;function pickFree(taken,from,to){const free=[];let lo=from;for(const t of[...taken].sort((a,b)=>a-b)){if(t-RENEWAL_SPACING_MS>lo)free.push([lo,Math.min(to,t-RENEWAL_SPACING_MS)]);lo=Math.max(lo,t+RENEWAL_SPACING_MS);if(lo>=to)break}if(lo<=to)free.push([lo,to]);const total=free.reduce((sum,[a,b])=>sum+(b-a),0);if(free.length===0)return from+Math.random()*(to-from);let r=Math.random()*total;for(const[a,b]of free){if(r<=b-a)return a+r;r-=b-a}return free[free.length-1][1]}function armRenewal(space2,issuedAtMs,expiresAtMs,renew,minDelayMs=0){const now=Date.now();const life=Math.max(0,expiresAtMs-issuedAtMs);const from=Math.max(issuedAtMs+RENEWAL_WINDOW.from*life,now+minDelayMs);const to=Math.max(issuedAtMs+RENEWAL_WINDOW.to*life,from);const taken=armed.get(space2)??new Set;armed.set(space2,taken);const at=pickFree([...taken],from,to);taken.add(at);const release=()=>{taken.delete(at);if(taken.size===0&&armed.get(space2)===taken)armed.delete(space2)};let timer;const wait=()=>{const left=at-Date.now();timer=setTimeout(left>MAX_TIMER_MS?wait:()=>{release();renew()},Math.min(Math.max(0,left),MAX_TIMER_MS));timer.unref?.()};wait();return()=>{clearTimeout(timer);release()}}function renewalDeadlineMs(issuedAtMs,expiresAtMs){return issuedAtMs+RENEWAL_WINDOW.to*Math.max(0,expiresAtMs-issuedAtMs)}function jitteredBackoffMs(attempt,baseMs,capMs){const step=Math.min(capMs,baseMs*2**attempt);return step/2+Math.random()*(step/2)}var BROKER_FLOOR=Object.freeze({major:2,minor:12});function parseServerVersion(v){const m=/^(\d+)\.(\d+)\.(\d+)/.exec(v.trim());if(!m)return null;return{major:Number(m[1]),minor:Number(m[2]),patch:Number(m[3])}}function meetsBrokerFloor(version2){const p=parseServerVersion(version2);if(!p)return false;if(p.major!==BROKER_FLOOR.major)return p.major>BROKER_FLOOR.major;return p.minor>=BROKER_FLOOR.minor}function requireBrokerFloor(nc){const version2=nc.info?.version;if(!version2)throw new Error("control surface: connected broker reports no server version; refusing to start (floor is nats-server >= 2.12)");if(!meetsBrokerFloor(version2))throw new Error(`control surface: nats-server ${version2} is below the required floor 2.12; upgrade the broker (no degraded mode exists)`)}async function withDeadline(p,ms,onTimeout){let timer;const timeout=new Promise((_,rej)=>{timer=setTimeout(()=>rej(onTimeout()),Math.max(1,ms))});try{return await Promise.race([p,timeout])}finally{clearTimeout(timer)}}var import_jetstream6=__toESM(require_mod4(),1);var import_transport_node4=__toESM(require_transport_node(),1);import{randomUUID as randomUUID2}from"node:crypto";var import_kv4=__toESM(require_mod6(),1);var import_obj=__toESM(require_mod7(),1);var import_jetstream4=__toESM(require_mod4(),1);function isJetStreamMissing(e,...codes){return e instanceof import_jetstream4.JetStreamApiError&&codes.includes(e.code)}function isConsumerNotFound(e){return isJetStreamMissing(e,import_jetstream4.JetStreamApiCodes.ConsumerNotFound)}function isConsumerAlreadyExists(e){return isJetStreamMissing(e,10148)}var import_kv2=__toESM(require_mod6(),1);var import_internal=__toESM(require_internal_mod3(),1);var import_jetstream5=__toESM(require_mod4(),1);var import_nats_core2=__toESM(require_mod3(),1);function openPublishDenialWatch(nc,subject,refusal,what){const statusStream=nc.status();if(typeof statusStream?.stop!=="function")throw new EpEnvelopeError("unavailable",`the NATS connection's status() stream does not expose stop(); the ${what} permission watch cannot be released and would leak a listener per call`);const statusIter=statusStream[Symbol.asyncIterator]();const denied=new Promise((_,reject)=>{void(async()=>{for(;;){const{value:s,done}=await statusIter.next();if(done===true||s===void 0)return;if(s.type!=="error")continue;if(s.error instanceof import_nats_core2.PermissionViolationError&&s.error.subject===subject){reject(refusal(s.error));return}}})().catch(()=>{})});return{denied,release(){statusStream.stop();void statusIter.return?.(void 0)}}}var IncompleteKvScan=class extends Error{bucket;received;expected;constructor(bucket,received,expected){super(`reading ${bucket} ended after ${received} of ~${expected} entries without reaching the end of the bucket - the connection or consumer died mid-pass. Refusing to return a partial view (a short or empty result here is indistinguishable from a real answer). Retry; if it persists, the link to the broker is dropping.`);this.bucket=bucket;this.received=received;this.expected=expected;this.name="IncompleteKvScan"}};async function liveKvEntries(kv,filterOrOptions,options){let filter;let opts=options;if(typeof filterOrOptions==="string"||Array.isArray(filterOrOptions)){filter=filterOrOptions;opts=options}else if(filterOrOptions&&typeof filterOrOptions==="object"){opts=filterOrOptions}if(opts?.signal?.aborted){throw opts.signal.reason??new Error("scan aborted")}if(!(kv instanceof import_internal.Bucket))throw new Error(`liveKvEntries needs the @nats-io/kv Bucket implementation to bind its own consumer (got ${kv?.constructor?.name??typeof kv}). Refusing to fall back to history(), whose hidden bind-time pending count is exactly the ambiguity this exists to remove.`);const bucket=kv;const cc=bucket._buildCC(filter??">",import_internal.KvWatchInclude.AllHistory,{headers_only:false});cc.mem_storage=true;const oc=await bucket.js.consumers.getPushConsumer(bucket.stream,cc);const own=oc;const api=own.api;const owned=[{name:own.name,answered:Promise.resolve(true)}];own.api=Object.assign(Object.create(api),{add:(...args)=>{const created=api.add(...args);owned.push({name:args[1].name,answered:created.then(()=>true,e=>e instanceof import_jetstream5.JetStreamApiError)});return created}});const latest=new Map;let received=0;let sawTerminal=false;let bucketName=bucket.bucket;let expected=0;let complete=false;try{const initialInfo=await oc.info(true);opts?.onConsumer?.(initialInfo);expected=initialInfo.num_pending;if(opts?.signal?.aborted){throw opts.signal.reason??new Error("scan aborted")}if(expected!==0){const iter=await oc.consume();const onAbort=()=>{iter.stop(opts?.signal?.reason??new Error("scan aborted"))};opts?.signal?.addEventListener("abort",onAbort,{once:true});try{for await(const m of iter){if(opts?.signal?.aborted)break;const e=bucket.jmToWatchEntry(m,false);received++;bucketName=e.bucket;const prior=latest.get(e.key);if(prior===void 0||e.revision>=prior.revision)latest.set(e.key,e);if(m.info.pending===0){sawTerminal=true;break}}}finally{opts?.signal?.removeEventListener("abort",onAbort);await iter.close()}}complete=expected===0||sawTerminal}finally{try{const answered=await Promise.all(owned.map(c=>c.answered));if(owned.at(-1).name!==own.name)throw new Error(`scan consumer ${own.name} was not created through the scan's consumer API - the pinned nats.js changed shape`);const deleteOwn=opts?.deleteOwnConsumer??((_stream,_name,del)=>del());let unanswered;for(let i=owned.length-1;i>=0;i--){const target2=owned[i].name;try{await deleteOwn(bucket.stream,target2,()=>bucket.jsm.consumers.delete(bucket.stream,target2))}catch(e){if(isPublishPermissionDenied(e))break;if(!isConsumerNotFound(e))throw e;if(!answered[i])unanswered??=target2}}if(unanswered)throw new Error(`the broker never answered the create of scan consumer ${unanswered}, so it can land after its delete and live until its inactive_threshold`)}catch(e){if(complete&&!opts?.signal?.aborted)throw e}}if(opts?.signal?.aborted){throw opts.signal.reason??new Error("scan aborted")}if(expected===0)return[];if(!sawTerminal)throw new IncompleteKvScan(bucketName,received,expected);const out=[];for(const e of latest.values())if(e.operation!=="DEL"&&e.operation!=="PURGE")out.push(e);return out}var DIRECT_BATCH=1024;async function lastKvEntries(kv){if(!(kv instanceof import_internal.Bucket))throw new Error(`lastKvEntries needs the @nats-io/kv Bucket implementation to address its backing stream (got ${kv?.constructor?.name??typeof kv})`);const bucket=kv;const nc=bucket.jsm.getConnection?.();if(nc===void 0)throw new Error("lastKvEntries needs the bucket's JetStream manager to expose its connection, to tell a denied Direct Get from a slow one");const watch=openPublishDenialWatch(nc,`${bucket.jsm.getOptions().apiPrefix||"$JS.API"}.DIRECT.GET.${bucket.stream}`,err3=>err3,"Direct Get");let page;try{const read=(async()=>{const latest=new Map;for(let seq=1;;){let last=0,pending=-1;try{const iter=await bucket.jsm.direct.getBatch(bucket.stream,{seq,batch:DIRECT_BATCH,next_by_subj:`${bucket.prefix}.>`});page=iter;for await(const sm of iter){const e=bucket.smToEntry(sm);const prior=latest.get(e.key);if(prior===void 0||e.revision>=prior.revision)latest.set(e.key,e);last=sm.seq;pending=sm.pending}}catch(e){if(last===0&&e?.code===404)break;throw e}if(pending===0)break;if(last===0)throw new IncompleteKvScan(bucket.bucket,latest.size,latest.size+Math.max(pending,1));seq=last+1}return[...latest.values()]})();read.catch(()=>{});return await Promise.race([read,watch.denied.catch(err3=>{page?.stop(err3);throw err3})])}finally{watch.release()}}async function openAclRegistry(nc,space2,opts={}){const kvm=new import_kv2.Kvm(nc);return opts.create?kvm.create(aclBucket(space2)):kvm.open(aclBucket(space2))}async function readAcl(kv,owner2,lifecycleUid){const e=await kv.get(aclKey(owner2,lifecycleUid));if(!e||e.operation==="DEL"||e.operation==="PURGE")return void 0;try{const record2=e.json();if(!Array.isArray(record2.allowSubscribe))return void 0;return{record:record2,revision:e.revision}}catch{return void 0}}async function aclRetired(kv,owner2,lifecycleUid){const e=await kv.get(aclKey(owner2,lifecycleUid));return e?.operation==="DEL"||e?.operation==="PURGE"}var AmbiguousAclAlias=class extends Error{principal;lifecycleUids;constructor(principal,lifecycleUids){super(`read-ACL alias "${principal}" resolves to ${lifecycleUids.length} live lifecycle rows (${lifecycleUids.join(", ")}); at most one lifecycle may be live per alias (SPEC 13.1) - refusing to authorize on a first-match guess`);this.principal=principal;this.lifecycleUids=lifecycleUids}};async function readAclForAlias(kv,principal){const first=await enumerateLiveAclRows(kv,principal);if(first.length>1)throw new AmbiguousAclAlias(principal,first.map(l=>l.lifecycleUid).sort());const second=await enumerateLiveAclRows(kv,principal);if(second.length>1)throw new AmbiguousAclAlias(principal,second.map(l=>l.lifecycleUid).sort());if(second.length===0)return void 0;if(first.length===1&&first[0].lifecycleUid!==second[0].lifecycleUid)throw new AmbiguousAclAlias(principal,[first[0].lifecycleUid,second[0].lifecycleUid].sort());return{record:second[0].record,revision:second[0].revision,lifecycleUid:second[0].lifecycleUid}}async function enumerateLiveAclRows(kv,principal){const live=[];for(const e of await liveKvEntries(kv,aclAliasFilter(principal))){const parsed=parseLifecycleSubjectKey(e.key);if(!parsed||`${parsed.owner}.${parsed.actor}`!==principal)continue;let record2;try{record2=e.json()}catch{continue}if(!Array.isArray(record2.allowSubscribe))continue;live.push({lifecycleUid:parsed.lifecycleUid,record:record2,revision:e.revision})}return live}async function reissueAcl(kv,owner2,lifecycleUid,allowSubscribe){return writeAcl(kv,owner2,lifecycleUid,allowSubscribe,{reissue:true})}async function commitAcl(kv,owner2,lifecycleUid,allowSubscribe){return writeAcl(kv,owner2,lifecycleUid,allowSubscribe,{reissue:false})}async function writeAcl(kv,owner2,lifecycleUid,allowSubscribe,opts){const key=aclKey(owner2,lifecycleUid);let lastErr;for(let attempt=0;attempt<5;attempt++){const cur=await readAcl(kv,owner2,lifecycleUid);let issued;if(opts.reissue||!cur){issued=[...allowSubscribe]}else{issued=[...cur.record.issuedAllowSubscribe??cur.record.allowSubscribe];const excess=allowSubscribe.filter(a=>!patternInAllow(issued,a));if(excess.length>0){throw new Error(`commitAcl: cannot raise ACL above mint-time ceiling without reissue (entries [${excess.join(", ")}] not within ceiling [${issued.join(", ")}]); use reissueAcl from the provisioning path that also remints the JWT`)}}const next={allowSubscribe:[...allowSubscribe],issuedAllowSubscribe:issued,revision:(cur?.record.revision??0)+1,updatedAt:Date.now()};const data=new TextEncoder().encode(JSON.stringify(next));if(!cur){try{await kv.create(key,data);return next}catch(e){lastErr=e;try{const raw=await kv.get(key);if(raw){await kv.update(key,data,raw.revision);return next}}catch(e2){lastErr=e2}continue}}try{await kv.update(key,data,cur.revision);return next}catch(e){lastErr=e;continue}}throw new Error(`acl CAS exhausted retries for ${owner2}${lastErr?` - last error: ${lastErr instanceof Error?lastErr.message:String(lastErr)}`:""}`,lastErr instanceof Error?{cause:lastErr}:void 0)}var import_kv3=__toESM(require_mod6(),1);var StaleMembershipWrite=class extends Error{constructor(channel,owner2,attempted,current){super(`stale membership write for ${channel}/${owner2}: generation ${attempted} < current ${current}`);this.name="StaleMembershipWrite"}};async function openMembersRegistry(nc,space2,opts={}){const kvm=new import_kv3.Kvm(nc);return opts.create?kvm.create(membersBucket(space2)):kvm.open(membersBucket(space2))}async function readMember(kv,channel,owner2,lifecycleUid){const e=await kv.get(memberKey(channel,owner2,lifecycleUid));if(!e||e.operation==="DEL"||e.operation==="PURGE")return void 0;try{return{record:e.json(),revision:e.revision}}catch{return void 0}}async function commitMemberRevision(kv,next){const key=memberKey(next.channel,next.owner,next.lifecycleUid);const data=new TextEncoder().encode(JSON.stringify(next));for(let attempt=0;attempt<5;attempt++){const cur=await readMember(kv,next.channel,next.owner,next.lifecycleUid);if(!cur){try{return{record:next,revision:await kv.create(key,data)}}catch{continue}}if(next.generation<cur.record.generation)throw new StaleMembershipWrite(next.channel,next.owner,next.generation,cur.record.generation);try{return{record:next,revision:await kv.update(key,data,cur.revision)}}catch{continue}}throw new Error(`members CAS exhausted retries for ${key}`)}async function tombstoneMember(kv,channel,owner2,lifecycleUid,leaveCursor,writerIdentity,expectedGeneration){const key=memberKey(channel,owner2,lifecycleUid);let generation=expectedGeneration;for(let attempt=0;attempt<5;attempt++){const cur=await readMember(kv,channel,owner2,lifecycleUid);if(!cur)return void 0;generation??=cur.record.generation;if(cur.record.generation!==generation)throw new StaleMembershipWrite(channel,owner2,generation,cur.record.generation);if(cur.record.leaveCursor!==void 0&&cur.record.leaveCursor<=leaveCursor)return cur.record;const next={...cur.record,state:"live-confirmed",leaveCursor,writerIdentity,updatedAt:Date.now()};try{await kv.update(key,new TextEncoder().encode(JSON.stringify(next)),cur.revision);return next}catch{continue}}throw new Error(`members CAS exhausted retries for ${key}`)}async function activateMember(kv,channel,owner2,lifecycleUid,expectedGeneration,expectedJoinCursor){const key=memberKey(channel,owner2,lifecycleUid);for(let attempt=0;attempt<5;attempt++){const cur=await readMember(kv,channel,owner2,lifecycleUid);if(!cur)return void 0;const r=cur.record;if(r.generation!==expectedGeneration||r.joinCursor!==expectedJoinCursor||r.leaveCursor!==void 0)return void 0;if(r.activated)return r;const next={...r,activated:true,updatedAt:Date.now()};try{await kv.update(key,new TextEncoder().encode(JSON.stringify(next)),cur.revision);return next}catch{continue}}return void 0}async function deleteMember(kv,channel,owner2,lifecycleUid){await kv.purge(memberKey(channel,owner2,lifecycleUid))}async function listMembers(kv,filter={}){const out=[];for(const e of await liveKvEntries(kv)){const parsed=parseMemberKey(e.key);if(!parsed)continue;if(filter.channel!==void 0&&parsed.channel!==filter.channel)continue;if(filter.owner!==void 0&&parsed.principal!==filter.owner)continue;try{out.push(e.json())}catch{}}return out}function durableEligible(rec,seq){if(seq<=rec.joinCursor)return false;if(rec.leaveCursor!==void 0&&seq>rec.leaveCursor)return false;return true}var inventoryPasses=new WeakMap;function inventoryPassAfterNow(kv){let passes=inventoryPasses.get(kv);if(passes===void 0)inventoryPasses.set(kv,passes={});const state=passes;if(state.next)return state.next;const next=(state.running??Promise.resolve([])).catch(()=>[]).then(()=>{state.next=void 0;const pass=liveKvEntries(kv);state.running=pass;const done=()=>{if(state.running===pass)state.running=void 0};pass.then(done,done);return pass});state.next=next;return next}async function listLifecycleMemberChannels(kv,principal,lifecycleUid){const pr=parsePrincipalKey(principal);if(!pr)throw new Error(`listLifecycleMemberChannels: invalid principal "${principal}"`);assertLifecycleToken(lifecycleUid);const channels=new Set;for(const e of await inventoryPassAfterNow(kv)){const parsed=parseMemberKey(e.key);if(!parsed)continue;if(parsed.principal!==principal||parsed.lifecycleUid!==lifecycleUid)continue;if(!isConcreteChannel(parsed.channel))continue;channels.add(parsed.channel)}return[...channels].sort()}var PRESENCE_STORAGE=import_jetstream6.StorageType.Memory;var MAX_MSGS_PER_SUBJECT=BACKUP_MAX_MSGS_PER_SUBJECT;var DINBOX_MAX_ACK_PENDING=1e3;var MANAGER_LEASE_TTL_MS=1e4;var MANAGER_LEASE_RENEW_MS=MANAGER_LEASE_TTL_MS/4;var MANAGER_LEASE_ATTEMPT_MS=2e3;var LEGACY_MEMBERSHIP_MAX_BYTES=64*1024*1024;var MEMBERSHIP_MAX_VALUE_SIZE=256*1024;var LEGACY_ARTIFACT_STORE_MAX_BYTES=4*1024*1024*1024;function standaloneConnectOpts(auth){if(auth?.tls===void 0)throw new Error("standaloneConnectOpts requires an explicit `tls` boolean: pass `tls: true` to REQUIRE TLS, or `tls: false` for a plaintext broker. It has no default, because defaulting it would silently connect without the requirement that protects the credentials being passed.");const tlsOpt=auth.tls?{tls:{}}:{};if(auth.bearer!==void 0){if(!auth.sentinelCreds)throw new Error("user-mode standalone connect requires sentinelCreds alongside the bearer");if(auth.creds)throw new Error("standalone connect takes creds OR bearer+sentinelCreds, never both");const nonce3=`ibx${randomUUID2().replace(/-/g,"")}`;return{name:nonce3,inboxPrefix:`_INBOX_${nonce3}`,authenticator:[nativeCredsAuthenticator(auth.sentinelCreds),(0,import_transport_node4.tokenAuthenticator)(auth.bearer)],...tlsOpt}}const creds=auth.creds;if(!creds)return{...tlsOpt};return{authenticator:nativeCredsAuthenticator(creds),inboxPrefix:`_INBOX_${idFromCreds(typeof creds==="function"?creds():creds)}`,...tlsOpt}}function spaceMessageStreamConfigs(space2){return[chatStream(space2),dmStream(space2),taskStream(space2),inboxStream(space2),dlvStream(space2)].map(stream=>canonicalBackupStreamConfig(space2,stream))}async function createSpaceStreams(jsm,space2){for(const definition of spaceMessageStreamConfigs(space2))await jsm.streams.add(definition)}function dmDurableConfig(space2,owner2,actor2,lifecycleUid,opts={}){const frontier=opts.activationFrontier??0;if(!Number.isInteger(frontier)||frontier<0)throw new Error(`dmDurableConfig activationFrontier must be a non-negative integer, got ${String(frontier)}`);const cfg={durable_name:dmDurable(owner2,actor2,lifecycleUid),filter_subject:unicastRecvFilter(space2,owner2,actor2),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),...frontier>0?{deliver_policy:import_jetstream6.DeliverPolicy.StartSequence,opt_start_seq:frontier+1}:{deliver_policy:import_jetstream6.DeliverPolicy.All}};if(opts.inactiveThresholdMs)cfg.inactive_threshold=(0,import_transport_node4.nanos)(opts.inactiveThresholdMs);return cfg}function taskDurableConfig(space2,role,opts={}){return{durable_name:taskDurable(role),filter_subject:anycastServeFilter(space2,role),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4)}}function inboxReaderConfig(space2,opts={}){return{durable_name:readerDurable(opts.shard,opts.shards),filter_subject:`${spacePrefix(space2)}.dinbox.>`,ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),deliver_policy:import_jetstream6.DeliverPolicy.All,max_ack_pending:DINBOX_MAX_ACK_PENDING}}function dlvDurableConfig(space2,owner2,actor2,lifecycleUid,opts={}){const cfg={durable_name:dlvDurable(owner2,actor2,lifecycleUid),filter_subject:dlvSubject(space2,owner2,actor2,lifecycleUid),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),deliver_policy:import_jetstream6.DeliverPolicy.All};if(opts.inactiveThresholdMs)cfg.inactive_threshold=(0,import_transport_node4.nanos)(opts.inactiveThresholdMs);return cfg}function fanoutDurableConfig(space2,opts={}){return{durable_name:fanoutDurable(opts.shard,opts.shards),filter_subject:chatWildcard(space2),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),deliver_policy:import_jetstream6.DeliverPolicy.New}}var TTL_RECONCILE_CANARY_KEY="_cotal_ttl_reconcile";var import_transport_node5=__toESM(require_transport_node(),1);var import_nkeys8=__toESM(require_mod(),1);var SERVICE_RENEWAL_TTL_SECONDS=24*60*60;var SERVICE_AUTHORITY_MAX_BYTES=2*1024*1024;var SERVICE_CALLER_PAYLOAD_OVERHEAD=1024;var SERVICE_CALLER_PAYLOAD_FLOOR=SERVICE_AUTHORITY_MAX_BYTES+SERVICE_CALLER_PAYLOAD_OVERHEAD;var import_jetstream7=__toESM(require_mod4(),1);var import_transport_node6=__toESM(require_transport_node(),1);import{createHash as createHash5}from"node:crypto";var CONTRACT_ARTIFACT_MAX_BYTES=256*1024;var CONTRACT_CLOSURE_MAX_BYTES=1024*1024;var CONTRACT_CLOSURE_MAX_REF_DEPTH=32;var STORE_RESOURCES=new WeakMap;async function contractStoreContext(nc,space2){if(nc===null||typeof nc!=="object"||typeof nc.close!=="function")throw new EpEnvelopeError("failed-precondition","a contract-store context is constructed from ONE binding-layer connection; separate resources are never accepted (SPEC 13.4)");if(typeof space2!=="string"||space2.length===0)throw new EpEnvelopeError("failed-precondition","a contract-store context needs a space");const js=(0,import_jetstream7.jetstream)(nc);const jsm=await(0,import_jetstream7.jetstreamManager)(nc,{checkAPI:false});const ctx=Object.freeze({space:space2});STORE_RESOURCES.set(ctx,{js,jsm});return ctx}function resources(ctx){const r=ctx===null||typeof ctx!=="object"?void 0:STORE_RESOURCES.get(ctx);if(r===void 0)throw new EpEnvelopeError("failed-precondition",`the contract-store context was not constructed by contractStoreContext(); a hand-assembled resource bundle never authorizes - the space bond is constructed, not asserted (SPEC 13.4)`);return r}function contractArtifactDigestHex(bytes){return createHash5("sha256").update(bytes).digest("hex")}function assertCanonicalArtifactBytes(bytes,what){let text2;try{text2=new TextDecoder("utf-8",{fatal:true}).decode(bytes)}catch{throw new EpEnvelopeError("contract-invalid",`${what} is not valid UTF-8; only strict canonical JSON is a contract artifact (SPEC 13.7)`)}let value;try{value=JSON.parse(text2)}catch(e){throw new EpEnvelopeError("contract-invalid",`${what} does not parse as JSON (${e.message}); only strict canonical JSON is a contract artifact (SPEC 13.7)`)}let canonical;try{canonical=canonicalJson(value)}catch(e){throw new EpEnvelopeError("contract-invalid",`${what} is not interchangeable I-JSON (${e.message}); only strict canonical JSON is a contract artifact (SPEC 13.7)`)}if(canonical!==text2)throw new EpEnvelopeError("contract-invalid",`${what} is not its own RFC 8785 canonical serialization; a noncanonical encoding never gets its own content identity (SPEC 13.7)`);return value}function verifyStored(data,digestHex,subject){if(data.length>CONTRACT_ARTIFACT_MAX_BYTES)return void 0;if(contractArtifactDigestHex(data)!==digestHex)return void 0;try{assertCanonicalArtifactBytes(data,`the artifact at ${subject}`)}catch{return void 0}return data}async function fetchContractArtifact(ctx,digestHex){const{jsm}=resources(ctx);const stream=epcStreamName(ctx.space);const subject=epcSubject(ctx.space,digestHex);const read=async req=>{try{const stored=await jsm.direct.getMessage(stream,req);return stored===null?"absent":stored.data}catch(e){if(e?.code===10037)return"absent";throw new EpEnvelopeError("unavailable",`the contract-store read for ${digestHex} failed (a failed observation is never absence, SPEC 13.7): ${e?.message??String(e)}`)}};const last=await read({last_by_subj:subject});if(last==="absent")return void 0;const okLast=verifyStored(last,digestHex,subject);if(okLast!==void 0)return okLast;const first=await read({seq:0,next_by_subj:subject});if(first==="absent")return void 0;const okFirst=verifyStored(first,digestHex,subject);if(okFirst!==void 0)return okFirst;throw new EpEnvelopeError("internal",`no message at ${subject} recomputes its digest as strict canonical JSON (checked both the last and the create-only winner); verify-on-read is the tamper boundary and a store with no verifying artifact never serves (SPEC 13.7)`)}async function fetchContractClosure(ctx,closureDigestRef,extractRefs,opts={}){resources(ctx);const max=opts.maxArtifacts??CONTRACT_CLOSURE_MAX_ARTIFACTS;if(!Number.isSafeInteger(max)||max<=0||max>CONTRACT_CLOSURE_MAX_ARTIFACTS)throw new EpEnvelopeError("failed-precondition",`maxArtifacts must be a positive integer at or below the frozen ${CONTRACT_CLOSURE_MAX_ARTIFACTS}-artifact ceiling (a caller narrows, never widens); got ${JSON.stringify(opts.maxArtifacts)} (SPEC 13.7)`);const budgetMs=opts.walkBudgetMs??3e4;if(!Number.isSafeInteger(budgetMs)||budgetMs<=0)throw new EpEnvelopeError("failed-precondition",`walkBudgetMs must be a positive integer; got ${JSON.stringify(opts.walkBudgetMs)}`);if(typeof extractRefs!=="function")throw new EpEnvelopeError("failed-precondition","a closure fetch requires the reference-resolution seam (extractRefs); the store never guesses a document's reference shape (SPEC 13.7)");const startedAt2=performance.now();const overBudget=()=>performance.now()-startedAt2>budgetMs;const raceBudget=async(p,what)=>{opts.signal?.throwIfAborted();const rem=budgetMs-(performance.now()-startedAt2);if(rem<=0)throw new EpEnvelopeError("deadline-exceeded",`the closure walk exhausted its ${budgetMs}ms budget before ${what} (SPEC 13.7/13.8)`);let timer;let onAbort;const bound=new Promise((_,reject)=>{timer=setTimeout(()=>reject(new EpEnvelopeError("deadline-exceeded",`the closure walk exceeded its ${budgetMs}ms budget during ${what}; a closure fetch is bounded and fails loud, never hangs (SPEC 13.7/13.8)`)),rem);onAbort=()=>reject(opts.signal?.reason);opts.signal?.addEventListener("abort",onAbort,{once:true})});try{return await Promise.race([p,bound])}finally{clearTimeout(timer);if(onAbort)opts.signal?.removeEventListener("abort",onAbort)}};const getArtifact=hex3=>{const memo=opts.artifactMemo;if(!memo)return fetchContractArtifact(ctx,hex3);const hit=memo.get(hex3);if(hit)return hit;const p=fetchContractArtifact(ctx,hex3);p.catch(()=>{});memo.set(hex3,p);return p};const closureHex=contractRefToHex(closureDigestRef);const manifestBytes=await raceBudget(getArtifact(closureHex),`the manifest fetch for ${closureHex}`);if(manifestBytes===void 0)throw new EpEnvelopeError("failed-precondition",`the closure manifest ${closureHex} is not published; a closure digest names its manifest artifact (SPEC 13.7)`);const manifest=parseClosureManifest(assertCanonicalArtifactBytes(manifestBytes,`the manifest ${closureHex}`),`the manifest ${closureHex}`);const rootHex=contractRefToHex(manifest.root);const out=new Map;let totalBytes=0;let rootReReached=false;const queue=[{hex:rootHex,depth:0}];while(queue.length>0){if(overBudget())throw new EpEnvelopeError("deadline-exceeded",`the closure walk for ${closureHex} exceeded its ${budgetMs}ms budget; a closure fetch is bounded and fails loud, never hangs (SPEC 13.7/13.8)`);const{hex:hex3,depth}=queue.shift();if(depth>CONTRACT_CLOSURE_MAX_REF_DEPTH)throw new EpEnvelopeError("contract-invalid",`the closure walk for ${closureHex} exceeds the ${CONTRACT_CLOSURE_MAX_REF_DEPTH}-deep reference chain bound (SPEC 13.7)`);if(out.has(hex3))continue;if(out.size>=max)throw new EpEnvelopeError("failed-precondition",`the contract closure exceeds the ${max}-artifact bound; a truncated closure never verifies as complete (SPEC 13.7)`);const bytes=await raceBudget(getArtifact(hex3),`the fetch of ${hex3}`);if(bytes===void 0)throw new EpEnvelopeError("failed-precondition",`the closure references artifact ${hex3} but it is not published; a closure is fetched all-or-nothing (SPEC 13.7)`);totalBytes+=bytes.length;if(totalBytes>CONTRACT_CLOSURE_MAX_BYTES)throw new EpEnvelopeError("contract-invalid",`the closure for ${closureHex} exceeds the ${CONTRACT_CLOSURE_MAX_BYTES}-byte bound (SPEC 13.7)`);out.set(hex3,bytes);const refs=extractRefs(new Uint8Array(bytes),hex3);if(!Array.isArray(refs)||!refs.every(r=>typeof r==="string"))throw new EpEnvelopeError("internal",`the reference-resolution seam returned a non-string-array for ${hex3}; a garbled resolution never extends a closure (SPEC 13.7)`);if(refs.length>CONTRACT_CLOSURE_MAX_ARTIFACTS)throw new EpEnvelopeError("contract-invalid",`artifact ${hex3} names ${refs.length} references, above the ${CONTRACT_CLOSURE_MAX_ARTIFACTS}-reference cap; an unbounded reference list never extends a closure (SPEC 13.7)`);if(overBudget())throw new EpEnvelopeError("deadline-exceeded",`the closure walk for ${closureHex} exceeded its ${budgetMs}ms budget resolving references for ${hex3} (SPEC 13.7/13.8)`);for(const r of refs){const rHex=contractRefToHex(r);if(rHex===rootHex)rootReReached=true;queue.push({hex:rHex,depth:depth+1})}}const walked=new Set;for(const hex3 of out.keys())if(hex3!==rootHex||rootReReached)walked.add(sha256Ref(hex3));const memberSet=new Set(manifest.members);for(const m of walked)if(!memberSet.has(m))throw new EpEnvelopeError("contract-invalid",`the closure walk reached ${m} but the manifest ${closureHex} does not name it; an under-naming manifest never verifies (SPEC 13.7)`);for(const m of memberSet)if(!walked.has(m))throw new EpEnvelopeError("contract-invalid",`the manifest ${closureHex} names ${m} but the walk never reached it; an over-naming manifest never verifies (SPEC 13.7)`);return{manifest,artifacts:out}}var ED25519_P=(1n<<255n)-19n;var import_nkeys7=__toESM(require_mod(),1);var import_transport_node7=__toESM(require_transport_node(),1);var EVICT_PRINCIPALS_MAX=256;var SOURCE_CHAIN_ID="[A-Za-z0-9_-]{1,64}";var SOURCE_CHAIN_ELEMENT=new RegExp(`^(root|handle\\.${SOURCE_CHAIN_ID}\\.${SOURCE_CHAIN_ID}|session\\.${SOURCE_CHAIN_ID})$`);var enc4=new TextEncoder;var dec4=new TextDecoder("utf-8",{fatal:true});var PLACEMENT_COMMANDS=Object.freeze(["describe","resolve-cwd","spawn"]);var PLACED_LIFECYCLE_COMMANDS=Object.freeze(["turn"]);var import_nats_core3=__toESM(require_mod3(),1);var import_jetstream8=__toESM(require_mod4(),1);var import_obj2=__toESM(require_mod7(),1);var ARTIFACT_PART_KIND="artifact";function isArtifactPart(value){if(!value||typeof value!=="object")return false;const p=value;return p.kind===ARTIFACT_PART_KIND&&typeof p.name==="string"&&p.name.length>0&&typeof p.mediaType==="string"&&p.mediaType.length>0&&typeof p.digest==="string"&&isContractDigest(p.digest)&&typeof p.size==="number"&&Number.isSafeInteger(p.size)&&p.size>=0}var TRANSFER_CHUNK_MAX=128*1024;var HEADER_ROOM=4*1024;var import_jetstream9=__toESM(require_mod4(),1);var import_transport_node8=__toESM(require_transport_node(),1);var DEFAULT_TRANSFER_TIMEOUT_MS=5*60*1e3;function principalFromDurable(name,prefix){if(!name.startsWith(prefix))return void 0;const match=/^([A-Za-z0-9_]+)-([A-Za-z0-9_]+)-([a-z0-9]+)$/.exec(name.slice(prefix.length));return match?{owner:match[1],actor:match[2],lifecycleUid:match[3]}:void 0}function expectedConsumerConfig(space2,stream,name){if(stream===chatStream(space2)&&name===FANOUT_DURABLE)return fanoutDurableConfig(space2);if(stream===inboxStream(space2)&&name===INBOX_READER_DURABLE)return inboxReaderConfig(space2);if(stream===dmStream(space2)){const principal=principalFromDurable(name,"dm_");if(principal)return dmDurableConfig(space2,principal.owner,principal.actor,principal.lifecycleUid)}if(stream===dlvStream(space2)){const principal=principalFromDurable(name,"dlv_");if(principal)return dlvDurableConfig(space2,principal.owner,principal.actor,principal.lifecycleUid)}if(stream===taskStream(space2)&&/^svc_[A-Za-z0-9_-]+$/.test(name))return{...taskDurableConfig(space2,name.slice("svc_".length)),deliver_policy:import_jetstream9.DeliverPolicy.All};throw new Error(`unsupported persistent consumer ${stream}/${name}`)}var CONSUMER_KEYS=new Set(["ack_policy","ack_wait","backoff","deliver_group","deliver_policy","deliver_subject","description","durable_name","filter_subject","filter_subjects","flow_control","headers_only","idle_heartbeat","inactive_threshold","max_ack_pending","max_batch","max_bytes","max_deliver","max_expires","max_waiting","mem_storage","metadata","name","num_replicas","opt_start_seq","opt_start_time","pause_until","priority_groups","priority_policy","priority_timeout","rate_limit_bps","replay_policy","sample_freq"]);function validatePersistentConsumer(space2,stream,info){const expected=expectedConsumerConfig(space2,stream,info.name);const config2=info.config;const unknown2=Object.keys(config2).filter(key=>!CONSUMER_KEYS.has(key));if(unknown2.length)throw new Error(`${stream}/${info.name} has unsupported consumer fields: ${unknown2.sort().join(", ")}`);if(config2.name!==void 0&&config2.name!==info.name)throw new Error(`${stream}/${info.name} has a mismatched name`);if(config2.durable_name!==info.name)throw new Error(`${stream}/${info.name} is not a canonical durable`);if(config2.deliver_subject||config2.deliver_group)throw new Error(`${stream}/${info.name} is a push consumer`);if(config2.filter_subject!==expected.filter_subject||(config2.filter_subjects?.length??0)!==0)throw new Error(`${stream}/${info.name} has a noncanonical filter`);if(config2.ack_policy!==import_jetstream9.AckPolicy.Explicit||config2.ack_wait!==expected.ack_wait)throw new Error(`${stream}/${info.name} has noncanonical ACK settings`);const task=stream===taskStream(space2);const migrated=!task&&config2.deliver_policy===import_jetstream9.DeliverPolicy.StartSequence;const implicitTaskAll=task&&config2.deliver_policy===void 0;if(config2.deliver_policy!==expected.deliver_policy&&!migrated&&!implicitTaskAll)throw new Error(`${stream}/${info.name} has a noncanonical delivery policy`);if(migrated){if(!Number.isSafeInteger(config2.opt_start_seq)||(config2.opt_start_seq??0)<1)throw new Error(`${stream}/${info.name} has an invalid creation lower bound`)}else if(config2.opt_start_seq!==void 0||config2.opt_start_time!==void 0){throw new Error(`${stream}/${info.name} has an unexpected start bound`)}const expectedMaxAck=expected.max_ack_pending??1e3;if((config2.max_ack_pending??1e3)!==expectedMaxAck)throw new Error(`${stream}/${info.name} has noncanonical max_ack_pending`);if((config2.max_deliver??-1)!==-1||(config2.max_waiting??512)!==512)throw new Error(`${stream}/${info.name} has noncanonical delivery limits`);if((config2.replay_policy??import_jetstream9.ReplayPolicy.Instant)!==import_jetstream9.ReplayPolicy.Instant||(config2.num_replicas??0)!==0)throw new Error(`${stream}/${info.name} has noncanonical replay/replica settings`);for(const key of["backoff","description","flow_control","headers_only","idle_heartbeat","inactive_threshold","max_batch","max_bytes","max_expires","mem_storage","metadata","pause_until","priority_groups","priority_policy","priority_timeout","rate_limit_bps","sample_freq"]){const value=config2[key];if(key==="metadata"&&value&&typeof value==="object"&&!Array.isArray(value)&&Object.entries(value).every(([metadataKey,metadataValue])=>metadataKey.startsWith("_nats.")&&typeof metadataValue==="string"))continue;if(value!==void 0&&value!==false&&value!==0&&value!==""&&!(Array.isArray(value)&&value.length===0)&&!(typeof value==="object"&&value!==null&&Object.keys(value).length===0))throw new Error(`${stream}/${info.name} has active unsupported setting ${key}`)}}function isRestoredConsumer(space2,stream,info,wanted){if(info.name!==wanted.durable_name||info.config.deliver_policy!==import_jetstream9.DeliverPolicy.StartSequence||info.config.ack_wait!==wanted.ack_wait)return false;try{validatePersistentConsumer(space2,stream,info)}catch{return false}return true}var FIVE_MINUTES=5*60;var MAX_CONTROL_LINE_BYTES=65536;var CONNECT_ENVELOPE_OVERHEAD_BYTES=512;var MAX_MINTED_JWT_BYTES=MAX_CONTROL_LINE_BYTES-CONNECT_ENVELOPE_OVERHEAD_BYTES;var STANDING_RENEWABLE_TTL_SEC=24*60*60;var ROTATION_RENEWED_TTL_SEC=30*24*60*60;var CREDENTIAL_LIFETIMES={agent:{class:"mixed",note:"manager children, foreground spawn/join, and `cotal mint` static outputs all use this profile; split or repair flow required before default exp"},"manager-caller":{class:"mixed",note:"short-lived user-auth view bound to the bearer expiry and one manager instance"},observer:{class:"static-operator-managed",note:"out-of-band dashboard/audit credential from `cotal mint`"},admin:{class:"static-operator-managed",note:"out-of-band elevated dashboard/audit credential from `cotal mint`"},supervisor:{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"manager's always-on endpoint; the manager holds the DATA seed and self-remints via the endpoint creds source"},delivery:{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"server-side Plane-3 daemon; seed-less - the manager re-signs .cotal/delivery.creds for the SAME nkey, requests delivery-admin reloadCreds for explicit adoption, and the endpoint source re-read is only a backstop"},"membership-rw":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"membership feed writer; seed-less - the manager re-signs the membership-rw.creds store key for the SAME nkey, the feed adopts it on a 75% preflight-proven renewal timer (its active self-heal), and delivery-admin reloadCreds is the explicit adoption on top"},provisioner:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"setup/spawn provisioning window only"},deprovisioner:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"target-pinned teardown window only"},"retirement-requester":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one despawn's retirement request window; request+reply only"},"lifecycle-executor":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one static lifecycle operation's 13.1 state-write window (activation / terminal / renewal ledger append)"},"endpoint-serve-executor":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one endpoint registration/serve-mint window (13.1 epgate CAS + epcred stage/revoke + eprepair cursor for one (endpoint, instanceId))"},operator:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"send/dm/join/probe-style operator command"},purger:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"history purge command"},backup:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"offline snapshot phase; exact stream and delivery subject, memory-only"},restore:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"offline restore initiation or exact-ID upload phase, memory-only"},probe:{class:"one-shot",defaultTtlSeconds:60,note:"connect-only preflight"},"channel-writer":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"channel registry mutation command"},"channel-purger":{class:"mixed",note:"one-shot for CLI, standing inside web; split or renewal required before default exp"},teardown:{class:"one-shot",note:"space teardown can be long/destructive; needs TTL budget/remint guard before default exp"},"issued-store-recreate":{class:"one-shot",defaultTtlSeconds:30*60,note:"one `up --recreate-issued-stores` step: snapshot and delete the two pre-retention issued-authority stores of one space; 30 minutes bounds a large store's snapshot"},"control-caller-privileged":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"ps/start control call"},"control-caller-admin":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"stop/attach admin control call"},deployer:{class:"one-shot",note:"manifest deploy spans planning/launch/ledger; needs near-expiry guard or remint before default exp"},"endpoint-serve":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"per-instance endpoint serve credential (SPEC 13.9); the managing authority re-mints on renewal and on takeover (new epoch), and the 13.1 barrier revokes the superseded one"},"goal-writer":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"self-mediated goal-writer for spawn-as-action; the manager re-mints for the SAME nkey on renewal, disjoint from the serve credential"},"session-caller":{class:"one-shot",defaultTtlSeconds:24*60*60,note:"per-session console/CLI caller cred: rails-only for ONE \xA713.6 session; TTL-BOUND to the session (the face mints with expiresAt = the session exp; the 24h default is the SESSION_GRANT_MAX_TTL ceiling, never a standing lifetime); NEVER renewed - a new session mints a new cred"},"dm-reader":{class:"mixed",note:"user-auth own-DM reader view: one dm_ durable's INFO/NEXT/ACK, bound to the bearer expiry (which the IdP proof bounds); renewed by re-exchange, never a standing credential"},"session-serving":{class:"one-shot",defaultTtlSeconds:24*60*60,note:"per-session SERVING cred: rails-only for ONE \xA713.6 session, the mirror of session-caller with the directions swapped; minted at redemption and TTL-BOUND to the session (the 24h default is the SESSION_GRANT_MAX_TTL ceiling, never a standing lifetime); NEVER renewed - a new session mints a new cred, and the session's terminal revokes this one by name"},"session-ledger":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"manager's session LEDGER: the dedicated sessions-bucket `session.<id>` rows and NOTHING else - no session rail of any shape. Standing because SPEC 13.6 makes it the durable revocation authority that must survive the serving endpoint; the manager re-mints for the SAME nkey on the half-TTL loop (the goal-writer precedent)"},"run-driver":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"one workflow run's driver, per takeover attempt (SPEC 14.6): the hosting manager mints it when it takes the run over and re-mints for the SAME nkey on renewal; a new takeover mints a new one"},"run-mediator":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"trusted workflow host operations, bound to one run and attempt; kept on the hosting process's connection"},"run-operator":{class:"one-shot",defaultTtlSeconds:60,note:"one served run-status / run-ps / run-answer call (SPEC 14.3): the hosting manager mints it per call on its own connection, never the serve rails; 60s bounds a copied cred to a minute"},issuer:{class:"mixed",defaultTtlSeconds:FIVE_MINUTES,renewalOwner:"auth-service",note:"renewed as the auth plane's held session for connect-time issuance (re-minted before exp, closed with the plane); one-shot for every other issuance window and for a lifecycle terminal's issuance retirement (SPEC 13.15)"},"run-admitter":{class:"one-shot",defaultTtlSeconds:60,note:"one hosted run's admission record create, or its revocation marker (SPEC 14.8); 60s bounds a copied cred to a minute"},"transfer-writer":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one carried resume per CLI call: one object's chunk and meta subjects in one instance's transfer bucket"},"transfer-reader":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one transcript-receive or sweep over the minting instance's own transfer bucket"},"endpoint-evictor":{class:"one-shot",defaultTtlSeconds:60,note:"one re-registration's verify-evict window: a scoped delivery-admin caller that kicks+verifies the SUPERSEDED serve family before the epoch advances; 60s bounds a copied cred to a minute"},"remote-manager":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"auth-service",note:"the scoped remote manager lifecycle: own lease/presence plus same-owner agent provisioning; issued only by the typed supervise protocol, never by `cotal mint` or a raw view/profile string"},"environment-bootstrap":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one admitted environment's bootstrap caller; explicit expiry capped by admission and five minutes"},"environment-manager-supervisor":{class:"standing-renewable",renewalOwner:"environment-authority",note:"own lease/presence/liveness; explicit expiry capped by admission, no auth-store access"},"environment-manager-executor":{class:"standing-renewable",renewalOwner:"environment-authority",note:"own admitted authority instance RPC; explicit expiry capped by admission, no direct store access"},"environment-manager-goal-writer":{class:"standing-renewable",renewalOwner:"environment-authority",note:"manager goal rows without the auth-read belt; explicit expiry capped by admission"},"membership-observer":{class:"rotation-renewed",defaultTtlSeconds:ROTATION_RENEWED_TTL_SEC,renewalOwner:"system-account rotation",note:"$SYS-account CONNZ observer; NOT online-renewable ($SYS seed dies at `up`) - bounded exp, renewed only by rotateSystemAccount + broker restart; doctor warns near expiry"},"account-census":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"Host-only account CONNZ and account-qualified replies; at most five minutes, no KICK or client-side renewal"},"connection-evictor":{class:"rotation-renewed",defaultTtlSeconds:ROTATION_RENEWED_TTL_SEC,renewalOwner:"system-account rotation",note:"$SYS-account KICK-only live-eviction cred; same rotation-renewed posture as the observer"}};for(const p of Object.values(CREDENTIAL_LIFETIMES))Object.freeze(p);Object.freeze(CREDENTIAL_LIFETIMES);var LIFETIME_TTL_SNAP=new Map(Object.entries(CREDENTIAL_LIFETIMES).map(([k,p])=>[k,p.defaultTtlSeconds]));function inspectCredHealth(creds,nowSec=Math.floor(Date.now()/1e3)){let claims2;try{claims2=credsClaims(creds)}catch(e){return{state:"unreadable",error:e.message}}const{iat,exp}=claims2;if(typeof exp!=="number")return{state:"unbounded",iat};if(typeof iat!=="number")return{state:"unreadable",iat:void 0,exp,error:"user JWT carries exp but no iat - cannot place the renewal point"};const renewAt=Math.floor(iat+.75*(exp-iat));if(nowSec>=exp)return{state:"expired",iat,exp,renewAt};if(nowSec>=renewAt)return{state:"near-expiry",iat,exp,renewAt};return{state:"healthy",iat,exp,renewAt}}var BASE_LIMITS={subs:-1,conn:-1,leaf:-1,imports:-1,exports:-1,data:-1,payload:-1,wildcards:true};var DATA_LIMITS={...BASE_LIMITS,mem_storage:-1,disk_storage:-1};var SYS_LIMITS={...BASE_LIMITS,mem_storage:0,disk_storage:0};var LAUNCH_READ_COMMANDS=Object.freeze(["status","models","resolve-cwd"]);function parseSecretStoreIdentity(raw){if(raw===null||typeof raw!=="object"||Array.isArray(raw))throw new Error("secret-store identity must be an object");const o=raw;const keys=Object.keys(o);if(o.kind==="fs"){if(keys.some(k=>k!=="kind"&&k!=="root"&&k!=="id"))throw new Error("secret-store identity of kind fs admits only {kind, root, id}");if(typeof o.root!=="string"||!o.root.trim())throw new Error("secret-store identity of kind fs requires a non-blank root");if(typeof o.id!=="string"||!o.id.trim())throw new Error("secret-store identity of kind fs requires a non-blank id");return{kind:"fs",root:o.root,id:o.id}}if(o.kind==="injected"){if(keys.some(k=>k!=="kind"&&k!=="coordinate"))throw new Error("secret-store identity of kind injected admits only {kind, coordinate}");if(typeof o.coordinate!=="string"||!o.coordinate.trim())throw new Error("secret-store identity of kind injected requires a non-blank coordinate");return{kind:"injected",coordinate:o.coordinate}}throw new Error('secret-store identity kind must be "fs" or "injected"')}var import_jetstream13=__toESM(require_mod4(),1);var import_jetstream12=__toESM(require_mod4(),1);var import_transport_node11=__toESM(require_transport_node(),1);var GOAL_TERMINAL_STATES=Object.freeze(["succeeded","failed","cancelled","expired","uncertain"]);function assertClosedKeys(o,allowed,what){for(const k of Object.keys(o))if(!allowed.includes(k))throw new EpEnvelopeError("internal",`${what} carries unknown field ${JSON.stringify(k)}; a closed schema admits no extras - garbled state never authorizes (SPEC 13.4)`)}function assertGoalResultFactShape(raw,subject,ref){if(raw===null||typeof raw!=="object"||Array.isArray(raw))throw new EpEnvelopeError("internal",`goal result fact on ${subject} is not an object; garbled state never authorizes (SPEC 13.6)`);const o=raw;assertClosedKeys(o,["v","goalId","fingerprint","state","outcomeDigest","data","committer","ts"],`goal result fact on ${subject}`);if(o.committer!==void 0){const cm=o.committer;if(cm===null||typeof cm!=="object"||Array.isArray(cm))throw new EpEnvelopeError("internal",`goal result fact on ${subject} committer is not an object; garbled state never authorizes (SPEC 13.6)`);assertClosedKeys(cm,["instanceId","epoch"],`goal result fact on ${subject} committer`);if(typeof cm.instanceId!=="string"||cm.instanceId.length===0||typeof cm.epoch!=="number"||!Number.isSafeInteger(cm.epoch)||cm.epoch<0)throw new EpEnvelopeError("internal",`goal result fact on ${subject} carries a malformed committer; garbled state never authorizes (SPEC 13.6)`)}if(o.v!==1||typeof o.goalId!=="string"||typeof o.fingerprint!=="string"||o.fingerprint.length===0||typeof o.state!=="string"||!GOAL_TERMINAL_STATES.includes(o.state)||typeof o.outcomeDigest!=="string"||o.outcomeDigest.length===0||typeof o.ts!=="number"||!Number.isSafeInteger(o.ts)||o.ts<0)throw new EpEnvelopeError("internal",`goal result fact on ${subject} is malformed; garbled state never authorizes (SPEC 13.6)`);if(o.goalId!==ref.goalId)throw new EpEnvelopeError("internal",`goal result fact on ${subject} names goalId ${JSON.stringify(o.goalId)}, not its subject's ${ref.goalId}; a mis-subjected fact never authorizes (SPEC 13.4)`);return o}function goalOutcomeDigestMismatch(subject){return new EpEnvelopeError("internal",`goal result fact on ${subject} carries an outcomeDigest that does not match its payload; a digest-inconsistent fact never authorizes (SPEC 13.6)`)}var import_jetstream10=__toESM(require_mod4(),1);var import_transport_node9=__toESM(require_transport_node(),1);var MAX_SCHEDULE_MS=Date.UTC(9999,11,31,23,59,59,999);var import_jetstream11=__toESM(require_mod4(),1);var import_transport_node10=__toESM(require_transport_node(),1);var import_nkeys9=__toESM(require_mod(),1);var ANCHOR_ROLES=Object.freeze(["handles","traits","receipts","resume","sessions","authz-slots","obligations","payments","consents"]);var BRANDED_CONTEXTS=new WeakSet;function assertCtx(ctx){if(!BRANDED_CONTEXTS.has(ctx))throw new EpEnvelopeError("failed-precondition",`the action context was not constructed by actionContext(); a hand-assembled resource bundle never authorizes - the space bond is constructed, not asserted (SPEC 13.4)`)}var GUARD_CLEARANCES=new WeakMap;var clearanceMintClaimed=false;function claimGuardClearanceMint(){if(clearanceMintClaimed)throw new EpEnvelopeError("permission-denied","the guard-clearance mint is already claimed by THE gate; a guarded goal's edge into running opens only through it (SPEC 13.6)");clearanceMintClaimed=true;return(ctx,goalId)=>{assertCtx(ctx);const clearance=Object.freeze({goalId:assertIdToken(goalId,"goalId")});GUARD_CLEARANCES.set(clearance,ctx);return clearance}}var GOAL_STATES=Object.freeze(["accepted","running","waiting","cancelling","succeeded","failed","cancelled","expired","uncertain"]);function parseGoalResultFact(raw,subject,ref){const o=assertGoalResultFactShape(raw,subject,ref);if(contractDigest(o.data===void 0?null:o.data)!==o.outcomeDigest)throw goalOutcomeDigestMismatch(subject);return o}var import_nats_core4=__toESM(require_mod3(),1);function base64url(bytes){let binary="";for(const b of bytes)binary+=String.fromCharCode(b);return btoa(binary).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function fromBase64url(text2){const b64=text2.replace(/-/g,"+").replace(/_/g,"/");const binary=atob(b64+"=".repeat((4-b64.length%4)%4));return Uint8Array.from(binary,ch=>ch.charCodeAt(0))}var nonce=()=>base64url(globalThis.crypto.getRandomValues(new Uint8Array(24)));function subjectTarget(t){if(t.mode==="self")return{mode:"self"};if(t.mode==="handle"||t.mode==="exact")return{mode:t.mode,tOwner:t.owner,tActor:t.actor,tUid:t.lifecycleUid};return{mode:t.mode,tOwner:t.owner}}function bodyTarget(t){if(t.mode==="self")return void 0;return{owner:assertBoundedOwner(t.owner,"target owner"),actor:t.actor,lifecycleUid:assertLifecycleToken(t.lifecycleUid,"target lifecycleUid"),...t.mappingRevision!==void 0?{mappingRevision:t.mappingRevision}:{}}}function buildRequest(space2,route,op,verb){let args;try{args=op.args===void 0?void 0:JSON.parse(JSON.stringify(op.args))}catch(e){throw new EpEnvelopeError("bad-request",`args cannot be sent as JSON: ${e instanceof Error?e.message:String(e)}`,void 0,"not-executed")}try{assertArgsValid(op.contract.input.validate,args)}catch(e){if(!(e instanceof EpEnvelopeError))throw e;const property=op.contract.input.validate.errors?.[0]?.params?.additionalProperty;throw new EpEnvelopeError(e.code,e.message,typeof property==="string"?[{kind:EP_UNDECLARED_ARG,property,...op.bind!==void 0?{instanceId:op.bind.instanceId}:{}}]:void 0,"not-executed")}if(op.bind!==void 0){if(op.command==="describe")throw new EpEnvelopeError("bad-request","describe carries no bind: it is the bootstrap that produces one (SPEC 13.3)");if(route.mode==="all")throw new EpEnvelopeError("bad-request","a scatter addresses every incarnation; a bind would make every member but one refuse (SPEC 13.5)");if(route.mode==="inst"&&op.bind.instanceId!==route.instanceId)throw new EpEnvelopeError("bad-request",`bind.instanceId "${op.bind.instanceId}" contradicts the inst-rail route's instance "${route.instanceId}" (SPEC 13.2)`)}const n=nonce();const subject=epRequestSubject(space2,{route,endpoint:op.endpoint,command:op.command,...op.target?{target:subjectTarget(op.target)}:{},caller:op.caller,nonce:n});const requestId=op.id!==void 0?assertIdToken(op.id,"pinned envelope id"):nonce();const env={v:1,id:requestId,op:{endpoint:op.endpoint,command:op.command,inputDigest:op.contract.input.closureDigest,outputDigest:op.contract.output.closureDigest},class:"ephemeral",replyExpected:verb.replyExpected,...op.goalId!==void 0?{goalId:op.goalId}:{},...op.target&&op.target.mode!=="self"?{target:bodyTarget(op.target)}:{},...op.bind!==void 0?{bind:{instanceId:assertLifecycleToken(op.bind.instanceId,"bind instanceId"),epoch:op.bind.epoch}}:{},...args!==void 0?{args}:{},from:{id:`${op.caller.owner}.${op.caller.actor}`,name:op.name??op.caller.actor},...verb.deadlineMs!==void 0?{deadlineMs:verb.deadlineMs}:{},...op.correlation!==void 0?{correlation:op.correlation}:{},...op.auth!==void 0?{auth:op.auth}:{}};return{subject,requestId,n,body:new TextEncoder().encode(JSON.stringify(env))}}var MAX_TIMER_MS2=2147483647;function assertDeadline(deadlineMs,what="deadlineMs"){if(!Number.isSafeInteger(deadlineMs)||deadlineMs<=0||deadlineMs>MAX_TIMER_MS2)throw new EpEnvelopeError("bad-request",`${what} ${deadlineMs} must be a positive budget within the timer bound ${MAX_TIMER_MS2}ms (SPEC 13.3: bounded, never unbounded; a larger setTimeout clamps to 1ms)`);return deadlineMs}function isNoRespondersMsg(msg){const h=msg.headers;return h!=null&&(h.code===503||h.status==="503")}async function raceBounded(read,ms,what,details){let t;try{return await Promise.race([(async()=>read())(),new Promise((_,reject)=>{t=setTimeout(()=>reject(new EpEnvelopeError("deadline-exceeded",`${what} did not settle within the ${ms}ms budget (SPEC 13.5)`,details)),ms)})])}finally{if(t!==void 0)clearTimeout(t)}}var unansweredDetail=op=>({kind:EP_UNANSWERED,endpoint:op.endpoint,command:op.command,rail:epPlaneTokens(op.caller).join(".")});function replySubjectFor(space2,caller,n){return`${spacePrefix(space2)}.${epPlaneTokens(caller).join(".")}.reply.*.*.*.${callerRailTokens(caller).join(".")}.${n}`}function noRespondersReplyTo(space2,caller,n){return`${spacePrefix(space2)}.${epPlaneTokens(caller).join(".")}.reply._nr._nr._nr.${callerRailTokens(caller).join(".")}.${n}`}function staleEpochRefusal(op,responder,held,reference,rail){const who=`the ${op.endpoint} instance ${responder.instanceId}`;const ahead=responder.epoch>held;const situation=reference==="bind"?ahead?`${who} answered at epoch ${responder.epoch}, but this handle resolved against it at epoch ${held}: a SUCCESSOR of the bound incarnation answered (a restart or supersession), so the handle is the stale side; re-resolve to adopt it`:`${who} answered at epoch ${responder.epoch}, but this handle resolved against it at epoch ${held}: a SUPERSEDED incarnation still connected answered, and its reply is rejected`:ahead?`${who} answered at epoch ${responder.epoch}, but a currency read of its registered epoch returned ${held}: the responder is ahead of the registry read (the read lags a restart), so its reply is rejected until the read catches up; nothing of this caller's is stale`:`${who} answered at epoch ${responder.epoch}, but a currency read of its registered epoch returned ${held}: a SUPERSEDED incarnation still connected answered, and its reply is rejected`;const detail={kind:EP_UNBOUND_RESPONDER,endpoint:op.endpoint,command:op.command,answeredBy:responder.instanceId,...reference==="bind"?{boundTo:responder.instanceId}:{},answeredEpoch:responder.epoch,heldEpoch:held,reference,pinned:rail==="inst"};return new EpEnvelopeError("expired",`${situation}. THIS SAYS NOTHING ABOUT WHETHER THE COMMAND RAN: ${responder.instanceId} received the request and answered it, so if "${op.command}" mutates, that effect may already have landed; verify the outcome ('ps'/'inspect'/roster) before re-issuing (SPEC 13.2, the stale-reply rejection rule)`,[detail])}function parseAttributedReply(space2,subject,data,requestId,op,expect){const parsed=parseEpSubject(subject);if(!parsed||parsed.plane!=="reply")throw new EpEnvelopeError("internal",`a message on the caller's reply rail does not parse as a reply subject: ${subject}`);if(parsed.endpoint!==op.endpoint)throw new EpEnvelopeError("internal",`reply endpoint "${parsed.endpoint}" is not the invoked endpoint "${op.endpoint}" (SPEC 13.2: the caller binds a reply to the requested identity, never trusts the subject alone)`);if(expect?.instanceId!==void 0&&parsed.instanceId!==expect.instanceId)throw new EpEnvelopeError("internal",`reply instance "${parsed.instanceId}" is not the addressed instance "${expect.instanceId}" (SPEC 13.2)`);if(expect?.epoch!==void 0&&parsed.epoch!==expect.epoch)throw staleEpochRefusal(op,{instanceId:parsed.instanceId,epoch:parsed.epoch},expect.epoch,"bind","inst");let rawBody;try{rawBody=JSON.parse(new TextDecoder().decode(data))}catch(e){throw new EpEnvelopeError("internal",`the reply body on the caller's rail is not JSON (${e instanceof Error?e.message:String(e)}); an unparseable reply is a responder bug surfaced as the caller boundary's structured refusal (SPEC 13.3)`)}const reply=parseEndpointReply(rawBody);if(reply.id!==requestId)throw new EpEnvelopeError("internal",`reply id "${reply.id}" does not echo the request id "${requestId}" on its nonce-scoped rail (SPEC 13.3)`);if(reply.ok)assertOutputValid(op.contract.output.validate,reply.data);return{reply,responder:{endpoint:parsed.endpoint,instanceId:parsed.instanceId,epoch:parsed.epoch}}}async function epCall(nc,space2,route,op,opts){opts.signal?.throwIfAborted();const deadlineMs=assertDeadline(opts.deadlineMs);if(route.mode==="one"&&opts.currentEpoch===void 0)throw new EpEnvelopeError("bad-request","epCall on the `one` rail requires opts.currentEpoch: the queue winner is not implicitly current, and a superseded-but-connected member's reply must be rejected (SPEC 13.2, the stale-reply rejection rule)");const req=buildRequest(space2,route,op,{replyExpected:true,deadlineMs});const expect=route.mode==="inst"?{instanceId:route.instanceId,epoch:route.epoch}:void 0;const noRespReplyTo=noRespondersReplyTo(space2,op.caller,req.n);const started=Date.now();let sub;let timer;let denialWatch;let onAbort;let published=false;const cancelled=new Promise((_,reject)=>{onAbort=()=>reject(new EpEnvelopeError("unavailable",`${op.endpoint}.${op.command} observation cancelled; the request may have executed`,published?[{...unansweredDetail(op),requestId:req.requestId}]:void 0,"unknown"));opts.signal?.addEventListener("abort",onAbort,{once:true})});try{denialWatch=openPublishDenialWatch(nc,req.subject,()=>new EpEnvelopeError("permission-denied",`the call for ${op.endpoint}.${op.command} was REFUSED BY THE BROKER, not unanswered: this caller's credential does not authorize publishing to "${req.subject}"${route.mode==="inst"?` (the instance rail for ${route.instanceId})`:""}. The responder may be perfectly healthy; the grant is what is missing: the current credential did not authorize this route, command or target, and the broker does not say which (SPEC 13.2)`,void 0,"not-executed"),"call");const outcome=new Promise((resolve3,reject)=>{sub=nc.subscribe(replySubjectFor(space2,op.caller,req.n),{callback:(err3,msg2)=>{if(err3){reject(new EpEnvelopeError("unavailable",`the caller's reply subscription failed: ${err3.message}`));return}if(msg2.subject===noRespReplyTo){if(isNoRespondersMsg(msg2)){reject(new EpEnvelopeError("unavailable",`no responder for ${op.endpoint}.${op.command} (SPEC 13.5)`,[unansweredDetail(op)],"not-executed"));return}reject(new EpEnvelopeError("internal",`a non-503 message reached the reserved no-responders sentinel for ${op.endpoint}.${op.command}; nothing but the broker control frame is addressable there`));return}resolve3({subject:msg2.subject,data:msg2.data})}});opts.signal?.throwIfAborted();nc.publish(req.subject,req.body,{reply:noRespReplyTo});published=true});const timeout=new Promise((_,reject)=>{timer=setTimeout(()=>reject(new EpEnvelopeError("deadline-exceeded",`no reply to ${op.endpoint}.${op.command} within the ${deadlineMs}ms budget (SPEC 13.5)`,[{...unansweredDetail(op),requestId:req.requestId}],"unknown")),deadlineMs)});const msg=await Promise.race([outcome,timeout,denialWatch.denied,cancelled]);const attributed=parseAttributedReply(space2,msg.subject,msg.data,req.requestId,op,expect);if(attributed.reply.ok===false&&bindRefusalMarked(attributed.reply.error)){if(op.bind===void 0)throw new EpEnvelopeError("internal",`${op.endpoint}.${op.command} replied with a bind refusal to a request that carried no bind`);const r=attributed.responder;if(r.instanceId===op.bind.instanceId&&r.epoch===op.bind.epoch)throw new EpEnvelopeError("internal",`${op.endpoint} instance ${r.instanceId} refused ${op.command} as the wrong incarnation, but the reply subject attributes it to exactly the bound one (${op.bind.instanceId} epoch ${op.bind.epoch}); the body does not get to contradict its own attribution (SPEC 13.3)`);const refusal=(attributed.reply.error?.details??[]).find(d=>d.kind===EP_BIND_REFUSED);if(refusal===void 0)throw new EpEnvelopeError("internal",`${op.endpoint}.${op.command} came back marked ${EP_BIND_REFUSED} with no such detail to derive it from (SPEC 13.3)`);if(refusal.boundTo.instanceId!==op.bind.instanceId||refusal.boundTo.epoch!==op.bind.epoch)throw new EpEnvelopeError("internal",`${op.endpoint} refused ${op.command} against bind ${refusal.boundTo.instanceId} epoch ${refusal.boundTo.epoch}, but this request carried ${op.bind.instanceId} epoch ${op.bind.epoch}; a refusal computed from another request proves nothing about this one (SPEC 13.3)`);if(refusal.servedBy.instanceId!==r.instanceId||refusal.servedBy.epoch!==r.epoch)throw new EpEnvelopeError("internal",`${op.endpoint} refused ${op.command} claiming to be served by ${refusal.servedBy.instanceId} epoch ${refusal.servedBy.epoch}, but the reply subject attributes it to ${r.instanceId} epoch ${r.epoch}; the body does not get to contradict its own attribution (SPEC 13.3)`);return attributed}if(route.mode==="one"){const remaining=deadlineMs-(Date.now()-started);if(remaining<=0)throw new EpEnvelopeError("deadline-exceeded",`no budget left to verify the \`one\` responder's currency within ${deadlineMs}ms (SPEC 13.5)`);let cur;try{cur=await raceBounded(()=>opts.currentEpoch(attributed.responder.instanceId),remaining,`the \`one\` currency read for ${op.endpoint}.${op.command}`)}catch(e){if(e instanceof EpEnvelopeError)throw e;throw new EpEnvelopeError("internal",`the \`one\` currency read threw (${e instanceof Error?e.message:String(e)}); the documented error catalog holds at this boundary (SPEC 13.3)`)}if(!Number.isSafeInteger(cur)||cur<0)throw new EpEnvelopeError("failed-precondition",`the \`one\` currency read returned a non-integer/negative epoch ${String(cur)}; a garbled currency read is refused as the read's own failure, never reported as responder staleness (SPEC 13.2)`);if(attributed.responder.epoch!==cur)throw staleEpochRefusal(op,attributed.responder,cur,opts.currencyReference??"registry","one")}return attributed}finally{sub?.unsubscribe();if(timer!==void 0)clearTimeout(timer);denialWatch?.release();if(onAbort)opts.signal?.removeEventListener("abort",onAbort)}}var dec5=new TextDecoder;var enc5=new TextEncoder;var nonce2=()=>base64url(globalThis.crypto.getRandomValues(new Uint8Array(24)));var DESCRIBE_RETRY_MS=250;function caughtText(e,fallback){try{return e instanceof Error?e.message:String(e)}catch{return fallback}}var GOAL_FOLLOW_MARGIN_MS=1e4;async function describeEndpoint(nc,space2,endpoint,caller,opts={}){opts.signal?.throwIfAborted();if(opts.classInstanceId!==void 0){assertLifecycleToken(opts.classInstanceId,"classInstanceId");if(opts.instanceId!==void 0)throw new EpEnvelopeError("bad-request","a describe cannot select both an instance route and a class responder")}const deadlineMs=opts.deadlineMs??1e4;const n=nonce2();const requestId=nonce2();const route=opts.instanceId!==void 0?{mode:"inst",instanceId:opts.instanceId}:{mode:"one"};const subject=epRequestSubject(space2,{route,endpoint,command:"describe",caller,nonce:n});const rail=epPlaneTokens(caller).join(".");const env={v:1,id:requestId,op:{endpoint,command:"describe"},class:"ephemeral",replyExpected:true,deadlineMs,from:{id:`${caller.owner}.${caller.actor}`,name:caller.actor}};let sub;let timer;let retryTimer;let denialWatch;let onAbort;const startedAt2=performance.now();const unanswered=ms=>new EpEnvelopeError("deadline-exceeded",`no describe reply from ${endpoint}${opts.instanceId!==void 0?` instance ${opts.instanceId}`:opts.classInstanceId!==void 0?` class responder ${opts.classInstanceId}`:""} within ${ms}ms on the ${rail} rail`,[{kind:EP_UNANSWERED,endpoint,command:"describe",rail}]);const cancelled=new Promise((_,reject)=>{onAbort=()=>reject(opts.signal?.reason?.name==="TimeoutError"?unanswered(Math.round(performance.now()-startedAt2)):opts.signal?.reason);opts.signal?.addEventListener("abort",onAbort,{once:true})});try{denialWatch=openPublishDenialWatch(nc,subject,()=>new EpEnvelopeError("permission-denied",`the describe for ${endpoint} was REFUSED BY THE BROKER, not unanswered: this caller's credential does not authorize publishing to "${subject}"${opts.instanceId!==void 0?` (the instance rail for ${opts.instanceId}: an instance-addressed call needs a credential minted with that instance, not a class-rail one)`:""}. The responder may be perfectly healthy; the grant is what is missing (SPEC 13.2)`,void 0,"not-executed"),"describe");const got=new Promise((resolve3,reject)=>{sub=nc.subscribe(epCallerReplyFilter(space2,caller),{callback:(err3,msg)=>{if(err3){reject(new EpEnvelopeError("unavailable",`describe reply subscription failed: ${err3.message}`));return}const parsed=parseEpSubject(msg.subject);if(!parsed||parsed.plane!=="reply"||parsed.endpoint!==endpoint||parsed.nonce!==n)return;let reply2;try{reply2=parseEndpointReply(JSON.parse(dec5.decode(msg.data)))}catch{return}if(reply2.id!==requestId)return;if(opts.classInstanceId!==void 0&&parsed.instanceId!==opts.classInstanceId)return;resolve3({body:reply2,responder:{instanceId:parsed.instanceId,epoch:parsed.epoch}})}});const request=enc5.encode(JSON.stringify(env));nc.publish(subject,request);retryTimer=setInterval(()=>{try{nc.publish(subject,request)}catch(e){reject(new EpEnvelopeError("unavailable",`the describe retry for ${endpoint} could not publish: ${caughtText(e,"unknown publish failure")}`))}},DESCRIBE_RETRY_MS)});const timeout=new Promise((_,reject)=>{timer=setTimeout(()=>reject(unanswered(deadlineMs)),deadlineMs)});const{body:reply,responder}=await Promise.race([got,timeout,denialWatch.denied,cancelled]);if(reply.ok!==true){const e=reply.error;throw new EpEnvelopeError(e?.code??"unavailable",`describe(${endpoint}) failed: ${e?.message??"unknown"}`)}return{answer:reply.data,responder}}finally{sub?.unsubscribe();if(timer!==void 0)clearTimeout(timer);if(retryTimer!==void 0)clearInterval(retryTimer);if(onAbort)opts.signal?.removeEventListener("abort",onAbort);denialWatch?.release()}}var BIND_SPLIT_REISSUES=16;async function invokeCommand(nc,space2,service,command,args,opts){const resolved=service.commands.get(command);if(resolved===void 0)throw new EpEnvelopeError("not-found",`command "${command}" is not in ${service.endpoint}'s visible surface; describe lists ${[...service.commands.keys()].sort().join(", ")||"(none)"}`);if(resolved.targeted&&opts.target===void 0)throw new EpEnvelopeError("bad-request",`command "${command}" is targeted (modes: ${resolved.modes.join(", ")}); an invoke needs its target`);if(!resolved.targeted&&opts.target!==void 0)throw new EpEnvelopeError("bad-request",`command "${command}" is untargeted; an invoke must not carry a target`);const caller=service.caller;let sendArgs=args;if(sendArgs===void 0&&!resolved.contract.input.validate(null)&&resolved.contract.input.validate({}))sendArgs={};const describeBound=instanceId=>{if(instanceId!==service.responder.instanceId){throw new EpEnvelopeError("failed-precondition",service.pinnedInstanceId!==void 0?`the ${service.endpoint} instance ${instanceId} answered but this handle is PINNED to ${service.pinnedInstanceId}; a pinned call names its instance and never accepts another. ${instanceId} did receive and answer the request, so if "${command}" mutates, that effect may already have landed - verify before re-issuing (SPEC 13.2)`:`the ${service.endpoint} instance ${instanceId} won the class queue but this UNPINNED handle resolved against ${service.responder.instanceId}; the describe and the invoke are separate trips through the same queue, so in a multi-instance space this is an ordinary split and not necessarily a supersession - the handle cannot currently adopt a different winner. THIS SAYS NOTHING ABOUT WHETHER THE COMMAND RAN: ${instanceId} received the request and answered it, possibly after this error was raised. For a read that is harmless and re-issuing is safe; if "${command}" mutates, verify the outcome ('ps'/'inspect'/roster) before re-issuing, because a retry that assumes failure duplicates the effect. A call that addresses one instance does not split (SPEC 13.2)`,[{kind:EP_UNBOUND_RESPONDER,endpoint:service.endpoint,command,answeredBy:instanceId,boundTo:service.responder.instanceId,pinned:service.pinnedInstanceId!==void 0}])}return service.responder.epoch};const bind=opts.currentEpoch===void 0?{instanceId:service.pinnedInstanceId??service.responder.instanceId,epoch:service.responder.epoch}:void 0;const deadline=Date.now()+(opts.deadlineMs??1e4);const call=route=>epCall(nc,space2,route,{endpoint:service.endpoint,command,contract:resolved.contract,caller,...sendArgs!==void 0?{args:sendArgs}:{},...opts.target?{target:opts.target}:{},...bind!==void 0?{bind}:{},...opts.id!==void 0?{id:opts.id}:{}},{deadlineMs:deadline-Date.now(),signal:opts.signal,currentEpoch:opts.currentEpoch??describeBound,currencyReference:opts.currentEpoch?"registry":"bind"});if(service.pinnedInstanceId!==void 0)return call({mode:"inst",instanceId:service.pinnedInstanceId,epoch:service.responder.epoch});try{return await call({mode:"one"})}catch(e){if(!(e instanceof EpEnvelopeError)||e.code!=="permission-denied"||e.outcome!=="not-executed"||deadline<=Date.now())throw e;return call({mode:"inst",instanceId:service.responder.instanceId,epoch:service.responder.epoch})}}function goalFollowRefusal(service){if(service.commands.has("goal-result"))return void 0;return{reply:{v:1,id:globalThis.crypto.randomUUID(),ok:false,error:{code:"failed-precondition",outcome:"not-executed",message:`endpoint "${service.endpoint}" does not support "goal-result"; upgrade manager to enable durable goal following (SPEC 13.6)`}},responder:{endpoint:service.endpoint,instanceId:service.responder.instanceId,epoch:service.responder.epoch}}}function goalProgressOrigin(space2,endpoint,caller,subject){const head=`${spacePrefix(space2)}.epe.${endpointToken(endpoint)}.`;if(!subject.startsWith(head))return void 0;const[instanceId,epoch,...tail]=subject.slice(head.length).split(".");const triple=callerTokens(caller);if(tail.length!==6||tail[0]!=="goal"||tail[1]!==triple[0]||tail[2]!==triple[1]||tail[3]!==triple[2]||tail[5]!=="progress")return void 0;if(!instanceId||!epoch||!tail[4])return void 0;return{instanceId,epoch,goalId:tail[4]}}async function submitAndFollowGoalWith(verifyFact,nc,space2,endpoint,caller,deadlineMs,submit,opts){if(!Number.isSafeInteger(deadlineMs)||deadlineMs<=0)throw new EpEnvelopeError("bad-request","goal following requires a positive integer deadline",void 0,"not-executed");const acceptingCaller={...caller};const terminals=new Map;const terminalKey=(goalId,instanceId,epoch)=>`${goalId}\0${instanceId}\0${epoch}`;let terminalPromptedRead=false;const progressSubject=epGoalProgressGrantRow(space2,endpoint,acceptingCaller);const work=new AbortController;const timers=new Set;let activeNc=nc;let activeSub;let generation=0;let unbindReconnect;let completed=false;let stopped=opts?.signal?.aborted===true;let submitted=false;let subError;let observationError;let wake;let abortPhase;let needsReconcile=false;let reading=false;let progressReady=false;const aborted2=new Promise(resolve3=>{abortPhase=resolve3});const onAbort=()=>{stopped=true;work.abort();abortPhase?.();wake?.()};const phaseError=code=>new EpEnvelopeError(code,submitted?"the goal submission was interrupted while in flight; its outcome is unknown. It may have been accepted or executed; do NOT retry without inspecting 'ps'/'inspect' first (SPEC 13.6)":"goal observation stopped or exceeded its deadline before submission; the manager request WAS NOT RUN",void 0,submitted?"unknown":"not-executed");let deadline=Date.now()+deadlineMs;const bounded=async(operation,until)=>{if(stopped||completed)throw phaseError("unavailable");const remaining=until-Date.now();if(remaining<=0)throw phaseError("deadline-exceeded");let timer;try{return await Promise.race([operation(),aborted2.then(()=>{throw phaseError("unavailable")}),new Promise((_,reject)=>{timer=setTimeout(()=>reject(phaseError("deadline-exceeded")),Math.min(remaining,2147483647));timers.add(timer)})])}finally{if(timer!==void 0){clearTimeout(timer);timers.delete(timer)}}};const subscribe=next=>{if(completed||stopped)return;const mine=++generation;activeSub?.unsubscribe();activeNc=next;progressReady=false;subError=void 0;activeSub=next.subscribe(progressSubject,{callback:(err3,msg)=>{if(completed||stopped||mine!==generation)return;if(err3){subError??=err3;wake?.();return}const origin=goalProgressOrigin(space2,endpoint,acceptingCaller,msg.subject);if(!origin)return;let ev;try{ev=JSON.parse(dec5.decode(msg.data))}catch{return}if(ev?.phase==="terminal"&&ev.goalId===origin.goalId){terminals.set(terminalKey(origin.goalId,origin.instanceId,origin.epoch),{state:String(ev.state),data:ev.data});if(!terminalPromptedRead){terminalPromptedRead=true;needsReconcile=true}wake?.()}}})};const replaceConnection=next=>{if(completed||stopped)return;try{subscribe(next)}catch(err3){subError=err3 instanceof Error?err3:new Error(String(err3));wake?.();return}const mine=generation;void bounded(()=>next.flush(),deadline).then(()=>{if(completed||stopped||mine!==generation)return;progressReady=true;needsReconcile=true;wake?.()},err3=>{if(completed||stopped||mine!==generation)return;subError=err3 instanceof Error?err3:new Error(String(err3));wake?.()})};try{opts?.signal?.addEventListener("abort",onAbort,{once:true});if(stopped)throw phaseError("unavailable");if(opts?.prepare){let timer;try{await Promise.race([opts.prepare(work.signal,deadline),aborted2,new Promise(resolve3=>{timer=setTimeout(()=>{work.abort(new DOMException("the goal follow's deadline passed","TimeoutError"));setTimeout(resolve3,0)},Math.min(deadline-Date.now(),2147483647))})]);work.signal.throwIfAborted()}catch(err3){throw stopped?phaseError("unavailable"):work.signal.aborted&&!unansweredRequest(err3)?phaseError("deadline-exceeded"):err3}finally{clearTimeout(timer)}}subscribe(opts?.currentNc?.()??nc);unbindReconnect=opts?.onReconnect?.(replaceConnection);for(;;){const preparing=activeNc;try{await bounded(()=>preparing.flush(),deadline)}catch(err3){if(!stopped&&preparing!==activeNc)continue;throw err3}if(stopped)throw phaseError("unavailable");const current2=opts?.currentNc?.();if(current2&¤t2!==activeNc)subscribe(current2);if(preparing===activeNc){progressReady=true;break}}if(stopped)throw phaseError("unavailable");submitted=true;let attributed;let submission;try{attributed=await bounded(()=>submission=submit(work.signal),deadline)}catch(err3){work.abort();let turn;const cause=submission?await Promise.race([submission.then(()=>err3,failure2=>failure2),new Promise(resolve3=>{turn=setTimeout(()=>resolve3(err3),0)})]).finally(()=>clearTimeout(turn)):err3;if(cause instanceof EpEnvelopeError&&cause.outcome==="not-executed")throw cause;const failure=stopped?phaseError("unavailable"):err3;const message2=failure instanceof Error?failure.message:String(failure);throw new EpEnvelopeError(failure instanceof EpEnvelopeError?failure.code:"unavailable",failure instanceof EpEnvelopeError&&failure.outcome==="unknown"&&message2.includes("do NOT retry")?message2:`${message2}; the submission outcome is unknown. It may have been accepted or executed; do NOT retry without inspecting 'ps'/'inspect' first (SPEC 13.6)`,cause instanceof EpEnvelopeError?cause.details:void 0,"unknown")}if(attributed.reply.ok!==true)return attributed;const acceptance=attributed.reply.data;const goalId=acceptance?.goalId;if(typeof goalId!=="string")return attributed;const acceptedFingerprint=typeof acceptance?.fingerprint==="string"?acceptance.fingerprint:void 0;const acceptedBy=attributed.responder;const acceptedKey2=terminalKey(goalId,acceptedBy.instanceId,acceptedBy.epoch);const readinessDeadlineMs=acceptance?.readinessDeadlineMs;const followDeadlineMs=typeof readinessDeadlineMs==="number"&&Number.isSafeInteger(readinessDeadlineMs)&&readinessDeadlineMs>=0?Math.max(deadlineMs,readinessDeadlineMs+GOAL_FOLLOW_MARGIN_MS):deadlineMs;deadline=Date.now()+followDeadlineMs;const reconcileAt=deadline-Math.min(deadlineMs,followDeadlineMs/2);let finalReadRequested=false;const reconcile=async()=>{if(!opts?.reconcile||completed||stopped||reading||!progressReady)return;reading=true;needsReconcile=false;try{const result=await opts.reconcile(goalId,attributed,{caller:{...acceptingCaller},signal:work.signal,deadlineMs:Math.max(1,deadline-Date.now())});if(completed||stopped||Date.now()>=deadline)return;if(!result||typeof result!=="object"||result.goalId!==goalId)throw new EpEnvelopeError("internal","goal-result reply is malformed or names a different goal; it cannot authorize this outcome (SPEC 13.6)");if(result.result!==void 0){const ref={endpoint,caller:acceptingCaller,goalId};const fact=await verifyFact(result.result,"goal-result reply",ref);if(acceptedFingerprint!==void 0&&fact.fingerprint!==acceptedFingerprint)throw new EpEnvelopeError("internal","goal result fingerprint does not match the accepted goal (SPEC 13.6)");if(fact.committer!==void 0&&fact.committer.instanceId!==acceptedBy.instanceId)throw new EpEnvelopeError("internal",`goal result fact was committed by instance ${fact.committer.instanceId}, not ${acceptedBy.instanceId}, which accepted the goal; it cannot authorize this outcome (SPEC 13.6)`);terminals.set(acceptedKey2,{state:fact.state,data:fact.data})}}catch(err3){if(!completed&&!stopped&&Date.now()<deadline)observationError=err3 instanceof Error?err3:new Error(String(err3))}finally{reading=false;if(!completed&&!stopped)wake?.()}};const current=opts?.currentNc?.();if(current&¤t!==activeNc&&!stopped)replaceConnection(current);needsReconcile=true;while(!terminals.has(acceptedKey2)&&!stopped&&!observationError&&!subError&&Date.now()<deadline){if(!finalReadRequested&&Date.now()>=reconcileAt){finalReadRequested=true;needsReconcile=true}if(needsReconcile&&!reading)void reconcile();if(terminals.has(acceptedKey2)||stopped||observationError||subError)break;await new Promise(resolve3=>{const until=finalReadRequested?deadline:reconcileAt;const timer=setTimeout(()=>{timers.delete(timer);wake=void 0;resolve3()},Math.max(0,Math.min(until-Date.now(),2147483647)));timers.add(timer);wake=()=>{clearTimeout(timer);timers.delete(timer);wake=void 0;resolve3()}})}const terminal=terminals.get(acceptedKey2);const observationFailure=(code,reason)=>({...attributed,reply:{...attributed.reply,ok:false,data:void 0,error:{code,outcome:"unknown",message:`the goal "${goalId}" was accepted, but ${reason}. THE GOAL IS UNAFFECTED - it may already have succeeded; this is not evidence the goal failed. Do NOT retry: another submission could duplicate the effect. Inspect 'ps'/'inspect' first (SPEC 13.6)`}}});if(stopped)return observationFailure("unavailable","the endpoint was stopped while awaiting its outcome");if(observationError)return observationFailure("unavailable",`following its outcome failed: ${observationError.message}`);if(!terminal&&subError)return subError instanceof import_nats_core4.PermissionViolationError?observationFailure("permission-denied",`this caller is NOT PERMITTED to hear its outcome: the broker refused the per-goal progress subscription "${progressSubject}" (${subError.message}); grant this caller the per-goal progress read row`):observationFailure("unavailable",`the per-goal progress subscription "${progressSubject}" FAILED (${subError.name}: ${subError.message}); this is NOT a grant refusal, so changing ACLs is the wrong remedy`);if(!terminal)return observationFailure("deadline-exceeded",`no terminal arrived within ${followDeadlineMs}ms; this is a timeout on the WAIT`);if(terminal.state==="succeeded")return{...attributed,reply:{...attributed.reply,ok:true,data:terminal.data,error:void 0}};const d=terminal.data??{};const raw=typeof d.error==="string"?d.error:typeof d.reason==="string"?d.reason:`the goal settled ${terminal.state}`;const details=Array.isArray(d.details)?d.details:void 0;const message=renderLifecycleBlocked(raw,details?{details}:void 0);const fromAccept=lifecycleBlockedFrom(attributed.reply.error);const merged=details??(fromAccept?[fromAccept]:void 0);return{...attributed,reply:{...attributed.reply,ok:false,error:{code:terminal.state,message,...merged?{details:merged}:{}}}}}finally{completed=true;opts?.signal?.removeEventListener("abort",onAbort);unbindReconnect?.();activeSub?.unsubscribe();for(const timer of timers)clearTimeout(timer);timers.clear();wake=void 0;work.abort();abortPhase?.()}}async function fetchClusterDocument(store,closureDigest,walk){const{manifest,artifacts}=await fetchContractClosure(store,closureDigest,()=>[],walk);const rootBytes=artifacts.get(contractRefToHex(manifest.root));if(rootBytes===void 0)throw new EpEnvelopeError("failed-precondition",`the cluster manifest ${closureDigest} names root ${manifest.root} but the root artifact is absent from the fetched closure (SPEC 13.7)`);return parseClusterDocument(JSON.parse(dec5.decode(rootBytes)))}async function recompileClosure(store,closureDigest,walk){const{manifest,artifacts}=await fetchContractClosure(store,closureDigest,bytes=>extractSchemaRefs(bytes),walk);const members={};for(const[hex3,bytes]of artifacts)members[`sha256:${hex3}`]=JSON.parse(dec5.decode(bytes));const rootRef=manifest.root;const root=members[rootRef];if(root===void 0)throw new EpEnvelopeError("failed-precondition",`schema closure ${closureDigest} is missing its root ${rootRef} (SPEC 13.7)`);const bundleMembers={};for(const[ref,value]of Object.entries(members))if(ref!==rootRef)bundleMembers[ref]=value;const compiled=compileContract({root,members:bundleMembers});if(compiled.closureDigest!==closureDigest)throw new EpEnvelopeError("internal",`the recompiled schema closure hashes to ${compiled.closureDigest}, not the fetched ${closureDigest}; a store that served the wrong bytes never authorizes (SPEC 13.7)`);return compiled}function extractSchemaRefs(bytes){const refs=[];const walk=v=>{if(typeof v==="string"){const m=/^cotal:(sha256:[0-9a-f]{64})$/.exec(v);if(m)refs.push(m[1])}else if(Array.isArray(v)){for(const c of v)walk(c)}else if(v!==null&&typeof v==="object"){for(const c of Object.values(v))walk(c)}};walk(JSON.parse(dec5.decode(bytes)));return refs}var RESOLVE_MAX_INFLIGHT_READS=32;async function pooled(items,limit,work){const out=new Array(items.length);let next=0;const worker=async()=>{for(;;){const i=next++;if(i>=items.length)return;try{out[i]=await work(items[i])}catch(e){next=items.length;throw e}}};await Promise.all(Array.from({length:Math.min(limit,items.length)},worker));return out}async function resolveService(nc,space2,endpoint,caller,opts={}){if(opts.commands!==void 0){if(!Array.isArray(opts.commands)||opts.commands.length===0)throw new EpEnvelopeError("failed-precondition","commands must be a non-empty array when a resolve is narrowed");for(const command of opts.commands){try{assertCommandToken(command)}catch(e){throw new EpEnvelopeError("failed-precondition",`invalid requested command: ${e.message}`)}}}if(opts.optionalCommands!==void 0){if(!Array.isArray(opts.optionalCommands)||opts.optionalCommands.length===0)throw new EpEnvelopeError("failed-precondition","optionalCommands must be a non-empty array when supplied");for(const command of opts.optionalCommands){try{assertCommandToken(command)}catch(e){throw new EpEnvelopeError("failed-precondition",`invalid optional command: ${e.message}`)}}}const startedAt2=performance.now();const deadlineMs=opts.deadlineMs??1e4;const{answer,responder}=await describeEndpoint(nc,space2,endpoint,caller,{...opts,deadlineMs});const store=await contractStoreContext(nc,space2);const visible=new Set(answer.descriptor.clusters.flatMap(cl=>cl.commands));const requested=opts.commands===void 0?visible:new Set(opts.commands);const optional2=new Set(opts.optionalCommands);for(const command of requested){if(visible.has(command))continue;if(optional2.has(command)){requested.delete(command);continue}throw new EpEnvelopeError("not-found",`command "${command}" is not in ${endpoint}'s visible surface; describe lists ${[...visible].sort().join(", ")||"(none)"}`)}const artifactMemo=new Map;const walk=()=>{const walkBudgetMs=Math.floor(deadlineMs-(performance.now()-startedAt2));if(walkBudgetMs<=0)throw new EpEnvelopeError("deadline-exceeded",`resolving ${endpoint} exhausted its ${deadlineMs}ms deadline before a contract-store read`);return{artifactMemo,walkBudgetMs,...opts.signal?{signal:opts.signal}:{}}};const clusters=answer.descriptor.clusters.filter(cl=>cl.commands.some(command=>requested.has(command)));const docs=await pooled(clusters,RESOLVE_MAX_INFLIGHT_READS,cl=>{opts.signal?.throwIfAborted();return fetchClusterDocument(store,cl.digest,walk())});const declared=docs.flatMap(doc=>doc.commands).filter(cmd=>requested.has(cmd.name));const resolved=await pooled(declared,Math.max(1,RESOLVE_MAX_INFLIGHT_READS>>1),async cmd=>{opts.signal?.throwIfAborted();const[input,output]=await Promise.all([recompileClosure(store,cmd.inputDigest,walk()),recompileClosure(store,cmd.outputDigest,walk())]);return{command:cmd.name,contract:{input,output},class:cmd.class,targeted:cmd.targeted,modes:cmd.modes??[],capability:cmd.capability,...cmd.action?{action:true}:{}}});opts.signal?.throwIfAborted();const commands=new Map;for(const rc of resolved)commands.set(rc.command,rc);return{endpoint:answer.descriptor.endpoint,owner:answer.descriptor.owner,caller,responder,commands,...opts.instanceId!==void 0?{pinnedInstanceId:opts.instanceId}:{}}}function submitAndFollowGoal(nc,space2,endpoint,caller,deadlineMs,submit,opts){return submitAndFollowGoalWith(parseGoalResultFact,nc,space2,endpoint,caller,deadlineMs,submit,opts)}import{accessSync,constants as constants2,lstatSync as lstatSync3,mkdirSync as mkdirSync4,readdirSync,readFileSync as readFileSync2,readlinkSync,realpathSync,statSync as statSync2}from"node:fs";var import_yaml=__toESM(require_dist(),1);function peerLabel(card){return(card.role?`${card.name}/${card.role}`:card.name).replace(/[\p{Cc}\p{Zl}\p{Zp}[\]]+/gu," ")}var LINE_BREAK=/\r\n?|[\n\v\f\u0085\u2028\u2029]/;var AmbiguousPeerError=class extends Error{target;candidates;constructor(target2,candidates){super(`"${target2}" is ambiguous - ${candidates.length} peers share that name: `+candidates.map(c=>`${c.name} (${c.id}, ${c.status})`).join("; ")+`. Re-send to the exact instance id.`);this.target=target2;this.candidates=candidates;this.name="AmbiguousPeerError"}};function candidate(p){return{id:p.card.id,name:p.card.name,role:p.card.role,status:p.status,ts:p.ts}}function resolvePeer(roster,target2,opts={}){const peers=opts.selfId?roster.filter(p=>p.card.id!==opts.selfId):roster;const byId=peers.find(p=>p.card.id===target2);if(byId)return byId;const want=target2.trim().toLowerCase();if(!want)return void 0;const matches=peers.filter(p=>p.card.name.toLowerCase()===want);if(matches.length===0){const labelled=peers.find(p=>p.card.role&&peerLabel(p.card).trim().toLowerCase()===want);if(labelled)throw new Error(`"${target2}" is the roster label of ${labelled.card.name} (role ${labelled.card.role}), not an address: use the name "${labelled.card.name}" or its instance id`);return void 0}const live=matches.filter(p=>p.status!=="offline");const pool=live.length>0?live:matches;if(pool.length===1)return pool[0];throw new AmbiguousPeerError(target2,pool.map(candidate))}function isWellFormedUtf16(s){for(let i=0;i<s.length;i++){const c=s.charCodeAt(i);if(c>=56320&&c<=57343)return false;if(c>=55296&&c<=56319){const next=s.charCodeAt(i+1);if(!(next>=56320&&next<=57343))return false;i++}}return true}var MAX_NAME_LENGTH=128;function assertValidName(name){if(name.length===0||name!==name.trim())throw new Error(`invalid name ${JSON.stringify(name)}: must be non-empty with no surrounding whitespace`);if(name.length>MAX_NAME_LENGTH)throw new Error(`invalid name ${JSON.stringify(name.slice(0,32))}\u2026: ${name.length} characters exceeds the ${MAX_NAME_LENGTH}-character limit (the CONNECT line budget that carries it)`);if(LINE_BREAK.test(name))throw new Error(`invalid name ${JSON.stringify(name)}: must be a single line`);if(name.includes("/"))throw new Error(`invalid name ${JSON.stringify(name)}: "/" is reserved (the owner/name separator)`);if(name.includes("\\"))throw new Error(`invalid name ${JSON.stringify(name)}: "\\" is reserved (a Windows path separator)`);if(!isWellFormedUtf16(name))throw new Error(`invalid name ${JSON.stringify(name)}: contains an unpaired UTF-16 surrogate. Such a name cannot survive UTF-8 encoding \u2014 it is replaced with U+FFFD \u2014 so distinct names would silently become one identity.`)}import{chmodSync,closeSync,constants,fchmodSync,fstatSync,ftruncateSync,linkSync as linkSync2,lstatSync as lstatSync2,mkdirSync as mkdirSync3,openSync,renameSync,unlinkSync as unlinkSync2,writeFileSync as writeFileSync2}from"node:fs";import{execFileSync as execFileSync2}from"node:child_process";import{dirname as dirname2,join as join2}from"node:path";var isWin=process.platform==="win32";function sys32(exe){const root=process.env.SystemRoot||process.env.windir||"C:\\Windows";return join2(root,"System32",exe)}var cachedSid;function ownerSid(){if(cachedSid)return cachedSid;const out=execFileSync2(sys32("whoami.exe"),["/user","/fo","csv","/nh"],{encoding:"utf8"});const sid=out.trim().split(",").pop()?.replace(/^"|"$/g,"").trim();if(!sid||!/^S-1-/.test(sid))throw new Error(`could not determine the current user's SID from \`whoami\` (got: ${out.trim()})`);cachedSid=sid;return sid}var BROAD_SIDS=["S-1-1-0","S-1-5-11","S-1-5-32-545"];function hardenPrivate(path,kind){if(!isWin){if(kind==="file")closeSync(openPrivate(path,constants.O_RDONLY));else chmodSync(path,448);return}const perm=kind==="dir"?"(OI)(CI)(F)":"(F)";const removeBroad=BROAD_SIDS.flatMap(sid=>["/remove:g",`*${sid}`]);const grant=sid=>["/grant:r",`*${sid}:${perm}`];try{execFileSync2(sys32("icacls.exe"),[path,"/inheritance:r",...removeBroad,...grant(ownerSid()),...grant("S-1-5-18"),...grant("S-1-5-32-544")],{stdio:["ignore","ignore","pipe"]})}catch(e){throw new Error(`failed to harden ${kind} "${path}" to private via icacls: ${e.message.trim()}. Cotal will not leave a secret with a permissive ACL - ensure the path is on an NTFS volume and %SystemRoot%\\System32\\icacls.exe is available.`)}}function notPrivate(path,why){const refused=new Error(`refusing to write "${path}": it ${why}; it was left unchanged`);refused.code="EPERM";return refused}function openPrivate(path,flags){if(isWin){const fd2=openSync(path,flags,384);try{fchmodSync(fd2,384)}catch(e){closeSync(fd2);throw e}return fd2}let fd;try{fd=openSync(path,flags|constants.O_NOFOLLOW|constants.O_NONBLOCK,384)}catch(e){if(e.code==="ELOOP")throw notPrivate(path,"is a symlink");throw e}try{const info=fstatSync(fd);if(!info.isFile())throw notPrivate(path,"is not a regular file");if(info.uid!==process.getuid())throw notPrivate(path,`is owned by uid ${info.uid}, not this user`);fchmodSync(fd,384);return fd}catch(e){closeSync(fd);throw e}}function writeSecretFile(path,data){writePrivate(path,data,false)}function writeBytes(path,data,exclusive){const fd=openPrivate(path,constants.O_WRONLY|constants.O_CREAT|(exclusive?constants.O_EXCL:0));try{ftruncateSync(fd);writeFileSync2(fd,data)}finally{closeSync(fd)}}function writePrivate(path,data,exclusive){writeBytes(path,data,exclusive);if(!isWin)return;try{hardenPrivate(path,"file")}catch(e){try{unlinkSync2(path)}catch{}throw e}}function utf16Problem(text2){return text2.startsWith("\uFFFD\uFFFD")||text2.includes("\0")?"it is saved as UTF-16, and Cotal reads only UTF-8":void 0}function parseFrontmatter(src,path){let doc;try{doc=(0,import_yaml.parse)(src)}catch(e){throw new Error(`agent file ${path}: invalid YAML frontmatter; ${e.message}`)}if(doc===null||doc===void 0)return{};if(typeof doc!=="object"||Array.isArray(doc))throw new Error(`agent file ${path}: frontmatter must be a YAML mapping (key: value pairs)`);return doc}var AGENT_FILE_FENCE=/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/;var MODELED_KEYS=new Set(["name","role","kind","description","tags","subscribe","allowSubscribe","allowPublish","quiet","muted","agent","model","variant","launchOptions","capabilities","owner"]);var RENAMED_KEYS=["channels","publish"];function assertLaunchSelectors(def,where){for(const k of["model","variant"]){const v=def[k];if(v!==void 0&&!v.trim())throw new Error(`${where}: "${k}" must not be empty`)}}function assertValidKind(kind,where){if(kind==="agent"||kind==="endpoint")return kind;throw new Error(`${where?`${where}: `:`invalid kind ${JSON.stringify(kind)}: `}"kind" must be "agent" or "endpoint"`)}function loadAgentFile(path){return parseAgentFileSource(readFileSync2(path,"utf8"),path)}function parseAgentFileSource(src,path){const encoding=utf16Problem(src);if(encoding)throw new Error(`agent file ${path}: ${encoding}; save it as UTF-8`);const m=AGENT_FILE_FENCE.exec(src.replace(/^\uFEFF/,"").replace(/\r\n/g,"\n"));if(!m)throw new Error(`agent file ${path}: missing "---" frontmatter block`);const fm=parseFrontmatter(m[1],path);const persona=m[2].trim();const str3=k=>{const v=fm[k];if(v===void 0||v===null)return void 0;if(typeof v==="object")throw new Error(`agent file ${path}: "${k}" must be a scalar`);return String(v)};const list=k=>{const v=fm[k];if(v===void 0||v===null)return void 0;return(Array.isArray(v)?v:[v]).map(x=>{if(x===null||typeof x==="object")throw new Error(`agent file ${path}: "${k}" list items must be scalars`);return String(x)})};const name=str3("name");if(!name)throw new Error(`agent file ${path}: "name" is required`);assertValidName(name);const model=str3("model");const variant=str3("variant");assertLaunchSelectors({model,variant},`agent file ${path}`);const rawKind=str3("kind");const kind=rawKind!==void 0?assertValidKind(rawKind,`agent file ${path}`):void 0;for(const old of RENAMED_KEYS)if(old in fm)throw new Error(`agent file ${path}: "${old}" was renamed - use "subscribe"/"allowSubscribe" (read) and "allowPublish" (post)`);const subscribe=list("subscribe");const allowSubscribe=list("allowSubscribe");const allowPublish=list("allowPublish");const quiet=list("quiet");const muted=list("muted");for(const ch of[...subscribe??[],...allowSubscribe??[],...allowPublish??[]])try{assertValidChannel(ch)}catch(e){throw new Error(`agent file ${path}: ${e.message}`)}let effAllow;try{effAllow=resolveReadAcl(subscribe??[],allowSubscribe)}catch(e){throw new Error(`agent file ${path}: ${e.message}`)}const both=(quiet??[]).filter(c=>(muted??[]).includes(c));if(both.length)throw new Error(`agent file ${path}: channel(s) [${both.join(", ")}] are in both quiet and muted - pick one`);for(const[field,chans]of[["quiet",quiet],["muted",muted]])for(const ch of chans??[]){try{assertValidChannel(ch)}catch(e){throw new Error(`agent file ${path}: ${e.message}`)}if(!isConcreteChannel(ch))throw new Error(`agent file ${path}: ${field} channel "${ch}" must be a concrete channel (no wildcard)`);if(!channelInAllow(effAllow,ch))throw new Error(`agent file ${path}: ${field} channel "${ch}" is not within your read ACL / allowSubscribe [${effAllow.join(", ")}]`)}const launchOptionsRaw=fm["launchOptions"];let launchOptions;if(launchOptionsRaw!==void 0&&launchOptionsRaw!==null){if(typeof launchOptionsRaw!=="object"||Array.isArray(launchOptionsRaw))throw new Error(`agent file ${path}: "launchOptions" must be a mapping of key: value pairs`);launchOptions=launchOptionsRaw}const meta3={};for(const[k,v]of Object.entries(fm))if(!MODELED_KEYS.has(k)&&v!==null&&typeof v!=="object")meta3[k]=String(v);return{name,role:str3("role"),kind,description:str3("description"),tags:list("tags"),agent:str3("agent"),subscribe,allowSubscribe,allowPublish,quiet,muted,model,variant,launchOptions,capabilities:list("capabilities"),owner:str3("owner"),meta:Object.keys(meta3).length?meta3:void 0,persona:persona||void 0}}var import_jetstream14=__toESM(require_mod4(),1);var import_jetstream15=__toESM(require_mod4(),1);var import_kv6=__toESM(require_mod6(),1);var import_internal2=__toESM(require_internal_mod3(),1);var import_kv5=__toESM(require_mod6(),1);var import_transport_node12=__toESM(require_transport_node(),1);async function openDeliveryRegistry(nc,space2){return new import_kv5.Kvm(nc).open(deliveryBucket(space2))}var import_nats_core5=__toESM(require_mod3(),1);function isPermissionDenied(e){if(e instanceof import_nats_core5.PermissionViolationError)return true;if(e?.cause instanceof import_nats_core5.PermissionViolationError)return true;return/permissions?\s+violation/i.test(String(e?.message??""))}var DEFAULT_SERVER="nats://127.0.0.1:4222";var PLANE3_FRAME_HEADER="Cotal-Delivery-Frame";var MULTI_FILTER_BATCH=1e3;var MULTI_FILTER_READ_CONCURRENCY=4;var HISTORY_READER_INACTIVE_MS=5*6e4;var MAX_TIMER_MS3=2147483647;var DmDurableMissingError=class extends Error{stream;durable;code="dm-durable-missing";constructor(stream,durable){super(`dm-durable-missing: durable "${durable}" on stream "${stream}" does not exist; a DM-only endpoint binds an existing durable and never creates one`);this.stream=stream;this.durable=durable;this.name="DmDurableMissingError"}};var DmBindRefusedError=class extends Error{stream;durable;code="dm-bind-refused";constructor(stream,durable,cause){super(`dm-bind-refused: binding durable "${durable}" on stream "${stream}" was refused (${cause instanceof Error?cause.message:String(cause)})`,{cause});this.stream=stream;this.durable=durable;this.name="DmBindRefusedError"}};var PresenceWriteStuckError=class extends Error{bucket;since;consecutiveFailures;ttlMs;lastError;code="presence-write-stuck";transient=false;constructor(bucket,since,consecutiveFailures,ttlMs,lastError){super(`presence writes to bucket ${JSON.stringify(bucket)} have failed ${consecutiveFailures} consecutive times for at least one TTL (${ttlMs}ms); the presence view is not live until a write succeeds or the broker store is repaired${lastError?` (last refusal: ${lastError})`:""}`);this.bucket=bucket;this.since=since;this.consecutiveFailures=consecutiveFailures;this.ttlMs=ttlMs;this.lastError=lastError;this.name="PresenceWriteStuckError"}};var READER_MAX_REDELIVERIES=10;var READ_HISTORY_DEFAULT_LIMIT=100;var READ_HISTORY_MAX_LIMIT=200;function fitHistoryPage(items,budget){const enc7=new TextEncoder;let used=enc7.encode(JSON.stringify({ok:true,data:{items:[],complete:false}})).length;let first=items.length;for(let i=items.length-1;i>=0;i--){const size=enc7.encode(JSON.stringify(items[i])).length+1;if(used+size>budget)break;used+=size;first=i}return first===items.length?[]:items.slice(first)}function membershipChange(e,update){const operation=e.operation;if(e.key===MEMBERSHIP_FEED_KEY){let asOf;if(operation==="PUT"){try{asOf=e.json().observedAt}catch{}}return{type:"heartbeat",revision:e.revision,update,asOf}}let member;if(operation==="PUT"){try{const rec=e.json();member={id:e.key,live:rec.live??[],durable:rec.durable??[],observedAt:rec.observedAt}}catch{}}return{type:"member",id:e.key,operation,revision:e.revision,update,member}}var CotalEndpoint=class _CotalEndpoint extends EventEmitter{card;space;channels;servers;token;user;pass;credsSource;currentCreds;credsTimer;watchDeletePermissions=new WeakMap;userMode=false;bearerSource;currentBearer;cancelBearerRenewal;bearerRenewalFailures=0;bearerRefusalSurfaced=false;bearerAdoptedAtMs=0;authExpiryReconnectTimer;sentinelCreds;tls;transportPingIntervalMs;transportMaxPingOut;transportConnectTimeoutMs;heartbeatMs;ttlMs;doRegister;doWatch;doWatchChannels;readOnce;doConsume;dmOnly;dmOnlyInFlight;ackWaitMs;inactiveThresholdMs;nc;onConnection;js;jsm;kv;channelKv;presenceWatchIter;channelWatchIter;kvWatchDeletes=new Set;kvWatchBinds=new Set;leaseWatchIntent;leaseWatchIter;leaseWatchDeletes=new Set;leaseWatchBinds=new Set;membersKv;aclKv;deliveryKv;managerLeaseKv;daemonRenewalLeaseRevision;membershipFeedKv;membershipFeedWatches=new Set;deliveryServeSub;deliveryAdminServeSub;retiringLifecycles=new Map;membershipWrites=new Map;plane3Quiesced=false;plane3;channelConfigs=new Map;channelDefaults={};histLock=Promise.resolve();subs=[];taps=[];livenessResponders=new Map;streamMsgs=[];chatSubs=new Map;chatSubDenied=new Set;plane3Channels=new Map;pendingDurableLeave=new Map;pendingBootJoins=new Set;chatSubRefusals=new WeakSet;ownWatchDeletePrefixes=new Set;historyReaderSlots=new Map;firstConnect=true;heartbeatTimer;sweepTimer;presenceWriteFailingSince;lastPresenceWriteError;presenceWriteFailures=0;presenceWriteEscalated=false;presencePutGeneration=0;presencePutSettled;roster=new Map;presenceRead;presenceReadGeneration=0;presenceReadApplied=0;presenceSnapshot=Promise.resolve();presenceSnapshotPopulated=false;lastPresenceWatchAt=0;presenceViewState="unpopulated";presenceRebind;presenceEpoch=0;presenceWatchEmpty=false;presenceRebindAt=0;status="idle";activity;statusSince=Date.now();activitySince;activeAt;condition;conditionRevision=0;environment;attentionMode;channelModes;stopped=false;stopPromise;startPromise;ownedConnections=new Set;rebuildPromise;reconnecting=false;reestablishing=false;backoffResolve;backoffTimer;retryMs=3e3;retryAttempt=0;connId;owner;actor;actorIsEphemeral;ownLifecycleUid;backfillFloor;acceptedToken;issuedGeneration;resolvedServices=new Map;resolvedCommandServices=new Map;activeGoalFollowers=new Set;splitsRecovered=0;presenceBindingDrops=0;get principal(){return{owner:this.owner,actor:this.actor}}get splitRecoveryCount(){return this.splitsRecovered}get presenceBindingDropCount(){return this.presenceBindingDrops}requireLifecycleUid(what){if(!this.ownLifecycleUid)throw new Error(`${what} requires this endpoint's lifecycleUid (EndpointOptions.lifecycleUid): dm/dlv/chathist broker resources are lifecycle-keyed names (SPEC 13.1)`);return this.ownLifecycleUid}constructor(opts){super();let selfMintedConnId=false;this.space=opts.space;assertValidName(opts.card.name);assertValidKind(opts.card.kind);if(opts.card.role!==void 0)assertValidRole(opts.card.role);if(opts.bearer){if(opts.creds||opts.token||opts.user||opts.pass)throw new Error("bearer (user-mode auth) is mutually exclusive with creds/token/user/pass");if(!opts.sentinelCreds)throw new Error("user-mode bearer requires sentinelCreds (the shared auth-account creds presented alongside it)")}if(opts.bearer){this.userMode=true;if(typeof opts.bearer==="function"){if(!opts.card.owner||!opts.card.actor)throw new Error("a bearer source requires explicit card.owner + card.actor (no bearer to derive them from at construction)");this.owner=opts.card.owner;this.actor=opts.card.actor;this.bearerSource=opts.bearer}else{const claims2=decodeBearerPrincipal(opts.bearer);if(opts.card.owner&&opts.card.owner!==claims2.owner)throw new Error(`card.owner ${opts.card.owner} != bearer owner ${claims2.owner}`);if(opts.card.actor&&opts.card.actor!==claims2.actor)throw new Error(`card.actor ${opts.card.actor} != bearer actor ${claims2.actor}`);this.owner=claims2.owner;this.actor=claims2.actor;this.currentBearer=opts.bearer}this.connId=assertInboxConnId(`ibx${randomUUID3().replace(/-/g,"")}`);this.sentinelCreds=opts.sentinelCreds;this.actorIsEphemeral=false}else{if(typeof opts.creds==="function"){if(!opts.card.id)throw new Error("a creds source requires an explicit card.id (no cred to derive the identity from at construction)");this.credsSource=opts.creds;this.connId=opts.card.id;selfMintedConnId=false}else{const credId=opts.creds?idFromCreds(opts.creds):void 0;if(opts.card.id&&credId&&opts.card.id!==credId)throw new Error(`card.id ${opts.card.id} != creds identity ${credId} - they must be the same nkey`);this.currentCreds=opts.creds;selfMintedConnId=opts.card.id===void 0&&credId===void 0;this.connId=opts.card.id??credId??randomUUID3().replace(/-/g,"")}this.owner=opts.card.owner??DEV_OWNER;this.actor=opts.card.actor??this.connId;this.actorIsEphemeral=opts.card.actor===void 0&&selfMintedConnId}this.ownLifecycleUid=opts.lifecycleUid!==void 0?assertLifecycleToken(opts.lifecycleUid):this.authed?void 0:mintLifecycleUid();if(opts.backfillFloor!==void 0){if(!Number.isInteger(opts.backfillFloor)||opts.backfillFloor<0)throw new Error(`EndpointOptions.backfillFloor must be a non-negative integer stream sequence, got ${opts.backfillFloor}`);this.backfillFloor=opts.backfillFloor}if(opts.acceptedToken!==void 0){if(!opts.creds)throw new Error("EndpointOptions.acceptedToken names a static issuance and needs creds beside it (SPEC 13.15)");this.acceptedToken=assertGeneration(opts.acceptedToken,"acceptedToken")}const principal=principalKey(this.owner,this.actor);this.card={...opts.card,id:principal.key,owner:this.owner,actor:this.actor};this.environment=(opts.environment===void 0?process.env.COTAL_ENVIRONMENT:opts.environment)?.trim()||void 0;this.servers=opts.servers??DEFAULT_SERVER;this.token=opts.token;this.user=opts.user;this.pass=opts.pass;this.tls=opts.tls??false;for(const[label,value]of[["transportPingIntervalMs",opts.transportPingIntervalMs],["transportMaxPingOut",opts.transportMaxPingOut],["transportConnectTimeoutMs",opts.transportConnectTimeoutMs]]){if(value!==void 0&&(!Number.isSafeInteger(value)||value<=0))throw new Error(`EndpointOptions.${label} must be a positive safe integer`)}if(opts.transportPingIntervalMs===void 0!==(opts.transportMaxPingOut===void 0))throw new Error("EndpointOptions transportPingIntervalMs and transportMaxPingOut must be configured together");this.onConnection=opts.onConnection;this.transportPingIntervalMs=opts.transportPingIntervalMs??1e4;this.transportMaxPingOut=opts.transportMaxPingOut??2;this.transportConnectTimeoutMs=opts.transportConnectTimeoutMs;this.channels=opts.channels??[];this.heartbeatMs=opts.heartbeatMs??2e3;this.ttlMs=opts.ttlMs??6e3;this.doRegister=opts.registerPresence??true;this.doWatch=opts.watchPresence??true;this.doWatchChannels=opts.watchChannels??true;this.doConsume=opts.consume??true;this.readOnce=opts.readOnce??false;if(this.readOnce&&(this.doConsume||this.doRegister))throw new Error("EndpointOptions.readOnce requires consume and registerPresence false: a one-time read cannot keep a consumer's channel cache or its own presence current");if(opts.dmOnly!==void 0){if(typeof opts.dmOnly.handler!=="function")throw new Error("EndpointOptions.dmOnly.handler must be a function");const settle=opts.dmOnly.settleTimeoutMs;if(settle!==void 0&&(!Number.isSafeInteger(settle)||settle<=0))throw new Error("EndpointOptions.dmOnly.settleTimeoutMs must be a positive safe integer");if(!this.authed)throw new Error("EndpointOptions.dmOnly requires creds or a bearer: it binds a provisioned durable and never creates one");if(!this.doConsume||this.doRegister||this.doWatch||this.doWatchChannels||this.readOnce)throw new Error("EndpointOptions.dmOnly requires consume true and registerPresence, watchPresence, watchChannels and readOnce false");if(this.channels.length||opts.card.role||opts.acceptedToken!==void 0)throw new Error("EndpointOptions.dmOnly takes no channels, role or acceptedToken: the endpoint reads only its own DM durable");this.requireLifecycleUid("EndpointOptions.dmOnly");this.dmOnly=opts.dmOnly}this.channelModes=opts.channelModes&&Object.keys(opts.channelModes).length?opts.channelModes:void 0;this.ackWaitMs=opts.ackWaitMs??6e4;this.inactiveThresholdMs=opts.inactiveThresholdMs??6e5}ref(){return{id:this.card.id,name:this.card.name,role:this.card.role}}get authed(){return Boolean(this.currentCreds||this.credsSource)||this.userMode}start(){if(this.startPromise)return this.startPromise;const flight=this.startOnce().finally(()=>{if(this.startPromise===flight)this.startPromise=void 0});this.startPromise=flight;return flight}async startOnce(){try{await this.connectAndBind()}catch(error51){if(!this.stopped)throw error51}if(await this.tearDownIfStopped())return;this.superviseConnection()}static BEARER_MIN_RENEWAL_MS=5e3;static BEARER_RETRY_MS=5e3;static BEARER_RETRY_CAP_MS=6e4;emitRecoverable(err3){this.emit("warning",err3)}async refreshBearer(initial=false){try{const bearer=await this.bearerSource();const claims2=decodeBearerPrincipal(bearer);if(claims2.owner!==this.owner||claims2.actor!==this.actor)throw new Error(`bearer source returned principal ${claims2.owner}.${claims2.actor}, expected ${this.owner}.${this.actor}`);const expiryMs=bearerExpiryMs(bearer);const held=this.currentBearer;if(held!==void 0){if(expiryMs<=Date.now())throw new Error("the bearer source returned a token that has already expired - nothing adopted");if(bearer===held&&Date.now()>=bearerRenewalDeadlineMs(held,this.bearerAdoptedAtMs))throw new Error("the bearer source re-served the token already held and it cannot carry another cycle (the auth service has not issued a fresh one) - nothing adopted")}if(bearer!==held)this.bearerAdoptedAtMs=Date.now();this.currentBearer=bearer;this.bearerRenewalFailures=0;const{issuedAtMs,expiresAtMs}=bearerLifetimeMs(bearer,this.bearerAdoptedAtMs);this.armBearerTimer(armRenewal(this.space,issuedAtMs,expiresAtMs,()=>void this.renewBearerOnTimer(),_CotalEndpoint.BEARER_MIN_RENEWAL_MS))}catch(e){if(initial)throw e;if(this.bearerRenewalFailures===0)this.emitRecoverable(new Error(`bearer refresh failed (${e instanceof Error?e.message:String(e)}) - retrying with backoff; this connection dies at its current token's expiry if the auth service stays down`));const named=retryAfterMs(e);const delay2=named>0?named:jitteredBackoffMs(this.bearerRenewalFailures,_CotalEndpoint.BEARER_RETRY_MS,_CotalEndpoint.BEARER_RETRY_CAP_MS);this.bearerRenewalFailures++;const timer=setTimeout(()=>void this.renewBearerOnTimer(),delay2);timer.unref?.();this.armBearerTimer(()=>clearTimeout(timer))}}armBearerTimer(cancel){this.cancelBearerRenewal?.();this.cancelBearerRenewal=cancel;if(this.stopped)cancel()}async renewBearerOnTimer(){const held=this.currentBearer;await this.refreshBearer();if(this.stopped||this.currentBearer===held)return;if(this.nc&&!this.nc.isClosed())await this.swapConnectionOntoFreshCreds();else this.kickBackoff()}bearerForWire(){const bearer=this.currentBearer;if(bearer!==void 0&&bearerExpiryMs(bearer)>Date.now())return bearer;throw new Error(this.bearerSource?"this endpoint's user bearer has expired and renewal through the auth exchange is failing - not presenting the expired token to the broker; retrying with backoff":"this endpoint's user bearer has expired and it holds no bearer source to renew it - re-authenticate and rebuild the endpoint (construct it with a bearer FUNCTION for standing renewal)")}static CREDS_RETRY_MS=6e4;static presentableCreds(creds,opts){const{exp}=credsClaims(creds);if(typeof exp==="number"&&exp*1e3<=Date.now())throw new Error(opts.renewable?"this endpoint's creds have expired and renewal is failing - not presenting the expired credential to the broker; retrying with backoff":"this endpoint's creds have expired and it holds no creds source to renew them - replace the credential and rebuild the endpoint (pass a creds FUNCTION for standing renewal)");return creds}credsForWire(){if(!this.currentCreds)throw new Error(this.credsSource?"this endpoint has no credential to present yet (the creds source has not returned one) - not dialing without auth material":"this endpoint was constructed with an empty creds string - not dialing without auth material (an empty credential is not anonymous access)");return _CotalEndpoint.presentableCreds(this.currentCreds,{renewable:Boolean(this.credsSource)})}wireCreds(){return this.credsForWire()}static assertRenewableGeneration(candidate2,current,delayMs){const{exp}=credsClaims(candidate2);if(typeof exp==="number"&&exp*1e3<=Date.now())throw new Error("the creds source returned an already-expired credential (its `exp` is in the past) - nothing adopted; the renewal owner has not re-signed it, or the store is serving a stale generation");if(current!==void 0&&credsFingerprint(candidate2)===credsFingerprint(current)&&delayMs<=0)throw new Error("the creds source still holds the previous generation past its renewal point (the renewal owner has not re-signed it) - nothing adopted")}static PREFLIGHT_MS=4e3;static RESIDENT_SWAP_DEFER_MS=250;static RESIDENT_SWAP_GATE_MS=5e3;residentSwap;static RELOAD_DEADLINE_MS=12e3;async fetchFreshCreds(){const creds=await this.credsSource();const id2=idFromCreds(creds);if(id2!==this.connId)throw new Error(`creds source returned identity ${id2}, expected ${this.connId} - renewal may not swap the connection's nkey`);const delay2=credsRenewalDelayMs(creds);_CotalEndpoint.assertRenewableGeneration(creds,this.currentCreds,delay2);this.currentCreds=creds;this.armCredsRefresh(delay2);const{iat,exp}=credsClaims(creds);return{iat,exp}}async swapConnectionOntoFreshCreds(){const nc=this.nc;if(nc&&!this.stopped){await nc.reconnect().catch(()=>{});if(this.nc===nc&&!this.stopped)this.armAuthExpiryReconnectFence(nc)}}disableLibraryReconnect(nc){const protocol=nc.protocol;if(protocol?.options)protocol.options.reconnect=false}async closeWithoutLibraryReconnect(nc){if(!nc)return;this.disableLibraryReconnect(nc);await nc.close();if(!nc.isClosed())throw new Error("endpoint connection closure is unproved; consumer custody must be retained");this.ownedConnections.delete(nc)}armAuthExpiryReconnectFence(nc){clearTimeout(this.authExpiryReconnectTimer);this.authExpiryReconnectTimer=void 0;const credsExp=this.currentCreds&&credsClaims(this.currentCreds).exp;const expiryMs=this.userMode&&this.currentBearer?bearerExpiryMs(this.currentBearer):typeof credsExp==="number"?credsExp*1e3:void 0;if(expiryMs===void 0||this.stopped)return;const delay2=Math.max(0,expiryMs-Date.now()-500);this.authExpiryReconnectTimer=delay2>MAX_TIMER_MS3?setTimeout(()=>{if(this.nc===nc)this.armAuthExpiryReconnectFence(nc)},MAX_TIMER_MS3):setTimeout(()=>{if(this.nc===nc)this.disableLibraryReconnect(nc)},delay2);this.authExpiryReconnectTimer.unref?.()}async refreshCreds(initial=false){try{await this.fetchFreshCreds()}catch(e){if(initial)throw e;this.emitRecoverable(new Error(`creds refresh failed (${e instanceof Error?e.message:String(e)}) - retrying; this connection dies at its current JWT's expiry if renewal keeps failing`));this.armCredsRefresh(_CotalEndpoint.CREDS_RETRY_MS)}}credsTxn=Promise.resolve();runCredsTxn(fn){const next=this.credsTxn.then(fn,fn);this.credsTxn=next.then(()=>void 0,()=>void 0);return next}async adoptFreshCreds(opts={}){const deadline=opts.deadline??Date.now()+_CotalEndpoint.RELOAD_DEADLINE_MS;if(Date.now()>deadline)throw new Error("reloadCreds: the request deadline elapsed while queued behind another credential transaction; nothing adopted");const candidate2=await withDeadline(this.credsSource(),deadline-Date.now(),()=>new Error("reloadCreds: the creds source did not return before the daemon deadline; nothing adopted"));const id2=idFromCreds(candidate2);if(id2!==this.connId)throw new Error(`creds source returned identity ${id2}, expected ${this.connId} - renewal may not swap the connection's nkey`);if(opts.expected!==void 0&&credsFingerprint(candidate2)!==opts.expected)throw new Error("reloadCreds: re-read credential generation did not match the expected re-signed generation (a different store, or a torn/stale read); nothing adopted");const proven=_CotalEndpoint.presentableCreds(candidate2,{renewable:true});const probe=await probeConnect(this.servers,{creds:proven,tls:this.tls,timeoutMs:Math.max(500,Math.min(_CotalEndpoint.PREFLIGHT_MS,deadline-Date.now()))});if(!probe.ok)throw new Error(`reloadCreds: the broker did not accept the re-signed credential (${probe.reason}); nothing adopted`);if(Date.now()>deadline)throw new Error("reloadCreds: the proof exceeded the daemon deadline; nothing adopted");const delay2=credsRenewalDelayMs(candidate2);_CotalEndpoint.assertRenewableGeneration(candidate2,this.currentCreds,delay2);this.currentCreds=candidate2;this.armCredsRefresh(delay2);this.emit("creds-adopted",credsClaims(candidate2));return credsClaims(candidate2)}async renewCredsOnTimer(){const deadline=Date.now()+_CotalEndpoint.RELOAD_DEADLINE_MS;try{await this.runCredsTxn(()=>this.adoptFreshCreds({deadline}));await this.swapConnectionOntoFreshCreds()}catch(e){this.emitRecoverable(new Error(`creds refresh failed (${e instanceof Error?e.message:String(e)}) - retrying; this connection dies at its current JWT's expiry if renewal keeps failing`));this.armCredsRefresh(_CotalEndpoint.CREDS_RETRY_MS)}}async reloadCreds(expected){if(!this.credsSource)throw new Error("reloadCreds: this endpoint has no creds source (a static cred cannot be renewed in place)");const deadline=Date.now()+_CotalEndpoint.RELOAD_DEADLINE_MS;const{iat,exp}=await this.runCredsTxn(()=>this.adoptFreshCreds({expected,deadline}));return{identity:this.connId,iat,exp}}scheduleResidentSwap(){if(this.stopped)return;const swap=new Promise(resolve3=>{setTimeout(resolve3,_CotalEndpoint.RESIDENT_SWAP_DEFER_MS).unref?.()}).then(async()=>{const back=this.transportBack(_CotalEndpoint.RESIDENT_SWAP_GATE_MS);await this.swapConnectionOntoFreshCreds();await back}).finally(()=>{if(this.residentSwap===swap)this.residentSwap=void 0});this.residentSwap=swap}transportBack(ms){return new Promise(resolve3=>{const done=()=>{clearTimeout(timer);this.off("transport",seen);resolve3()};const seen=state=>{if(state.connected)done()};const timer=setTimeout(done,ms);timer.unref?.();this.on("transport",seen)})}armCredsRefresh(delayMs){if(this.stopped)return;clearTimeout(this.credsTimer);this.credsTimer=setTimeout(()=>void this.renewCredsOnTimer(),Math.max(1e3,delayMs));this.credsTimer.unref?.()}async connectAndBind(){try{await this.bindConnection()}catch(error51){await this.closeFailedBind();throw error51}}async bindConnection(){this.clearConnectionScoped();if(this.bearerSource){if(!this.currentBearer)await this.refreshBearer(true);else if(this.bearerRenewalFailures===0&&Date.now()>=bearerRenewalDeadlineMs(this.currentBearer,this.bearerAdoptedAtMs))await this.refreshBearer()}if(this.credsSource){const stale=!this.currentCreds||credsRenewalDelayMs(this.currentCreds)<=0;if(stale)await this.refreshCreds(!this.currentCreds)}if(this.userMode){try{this.bearerForWire();this.bearerRefusalSurfaced=false}catch(e){if(!this.bearerRefusalSurfaced){this.bearerRefusalSurfaced=true;throw e}throw new RepeatedRefusal(e.message)}}let watchDeletePermission;this.nc=await dialerFor(this.servers)({servers:this.servers,noAsyncTraces:true,name:this.userMode?this.connId:`cotal:${this.card.name}`,inboxPrefix:`_INBOX_${this.connId}`,...this.transportPingIntervalMs===void 0?{}:{pingInterval:this.transportPingIntervalMs},...this.transportMaxPingOut===void 0?{}:{maxPingOut:this.transportMaxPingOut},...this.transportConnectTimeoutMs===void 0?{}:{timeout:this.transportConnectTimeoutMs},...authOpts({token:this.token,user:this.user,pass:this.pass,creds:this.currentCreds!==void 0||this.credsSource?()=>this.credsForWire():void 0,bearer:this.userMode?()=>this.bearerForWire():void 0,sentinelCreds:this.sentinelCreds,tls:this.tls,onCreds:creds=>{watchDeletePermission=void 0;try{const nats=credsClaims(creds).nats;if(nats?.pub!==void 0)watchDeletePermission=importNativeSubjectPermissions({pub:nats.pub}).publish}catch{}}})});this.watchDeletePermissions.set(this.nc,()=>watchDeletePermission);this.ownedConnections.add(this.nc);const owned=this.nc;void owned.closed().then(()=>this.ownedConnections.delete(owned));this.onConnection?.(this.nc);requireBrokerFloor(this.nc);this.armAuthExpiryReconnectFence(this.nc);this.watchStatus();this.js=(0,import_jetstream14.jetstream)(this.nc);if(this.dmOnly){await this.bindDmOnly(this.dmOnly);if(this.stopped)return;this.emit("connection",{connected:true});return}if(this.acceptedToken!==void 0){const ref=await readAcceptedRow(this.nc,this.space,this.acceptedToken);const uid2=this.requireLifecycleUid("an issued endpoint");if(ref.owner!==this.owner||ref.actor!==this.actor||ref.uid!==uid2)throw new Error(`the accepted row names ${ref.owner}.${ref.actor} (uid ${ref.uid}), not this endpoint ${this.owner}.${this.actor} (uid ${uid2}); refusing to ride a foreign issuance (SPEC 13.15)`);this.issuedGeneration=ref.generation}if(this.doWatch||this.doRegister){const kvm=new import_kv6.Kvm(this.nc);this.kv=this.authed?await kvm.open(presenceBucket(this.space)):await kvm.create(presenceBucket(this.space),{ttl:this.ttlMs,storage:PRESENCE_STORAGE})}if(this.doWatch&&this.readOnce)await this.readPresenceOnce();else if(this.doWatch){await this.startPresenceWatch();this.sweepTimer=setInterval(()=>this.sweep(),Math.max(500,Math.floor(this.ttlMs/3)))}const watchChannels=this.doWatch&&this.doWatchChannels;if(watchChannels||this.doConsume){this.channelKv=await openChannelRegistry(this.nc,this.space,{create:!this.authed});if(watchChannels)await(this.readOnce?this.readChannelsOnce():this.startChannelWatch())}if(this.leaseWatchIntent)await this.bindDeliveryLeaseWatch();if(this.authed&&(this.doConsume||this.doRegister))this.requireLifecycleUid(this.doConsume?"an authed consuming endpoint":"an authed presence-registering endpoint");if(this.doConsume){this.jsm=await(0,import_jetstream14.jetstreamManager)(this.nc);if(!this.authed)await this.ensureStreams();await this.startConsumers()}if(this.doRegister&&!this.doConsume&&this.authed&&this.card.kind==="agent"){const jsm=this.jsm??(this.jsm=await(0,import_jetstream14.jetstreamManager)(this.nc));const uid2=this.requireLifecycleUid("an authed presence-registering agent");try{await jsm.consumers.info(dmStream(this.space),dmDurable(this.owner,this.actor,uid2))}catch(e){throw new Error(`lifecycle proof failed for ${this.card.id} (uid ${uid2}): its dm_ durable is not present at the broker, so this incarnation's uid does not match its provisioned resources - refusing to publish presence (SPEC 13.1 fail-before-presence): ${e?.message??String(e)}`)}}if(this.doRegister){try{await this.publishPresence()}catch(e){const detail=e?.message??String(e);throw new Error(`presence registration failed for ${this.card.id}: the space's presence KV bucket "${presenceBucket(this.space)}" did not accept this endpoint's first write (${detail}). The bucket can be OPENED and WATCHED while refusing every write, so a healthy-looking connection does not rule this out; a broker whose store has latched refuses until it is restarted, and no client can clear it (#1356).`)}this.heartbeatTimer=setInterval(()=>{this.publishPresence().catch(e=>this.emitRecoverable(e))},this.heartbeatMs)}await this.rearmMembershipWatches();await this.armPlane3();for(const plane of this.livenessResponders.keys())this.bindLiveness(plane);for(const tap of this.taps)this.bindTap(tap);if(this.stopped)return;this.emit("connection",{connected:true});if(this.nc){for(const follower of this.activeGoalFollowers){follower.reconnected(this.nc)}}}clearConnectionScoped(){if(this.authExpiryReconnectTimer){clearTimeout(this.authExpiryReconnectTimer);this.authExpiryReconnectTimer=void 0}if(this.heartbeatTimer){clearInterval(this.heartbeatTimer);this.heartbeatTimer=void 0}if(this.sweepTimer){clearInterval(this.sweepTimer);this.sweepTimer=void 0}for(const msgs of this.streamMsgs){try{msgs.stop()}catch{}}this.streamMsgs.length=0;this.presenceEpoch++;this.presenceRebind=void 0;if(this.presenceWatchIter)this.retireKvWatch(this.presenceWatchIter);this.presenceWatchIter=void 0;if(this.channelWatchIter)this.retireKvWatch(this.channelWatchIter);this.channelWatchIter=void 0;this.stopDeliveryLeaseWatch();for(const sub of this.chatSubs.values()){try{sub.unsubscribe()}catch{}}this.chatSubs.clear();this.chatSubDenied.clear();this.ownWatchDeletePrefixes.clear();this.roster.clear();this.presenceRead=void 0;this.presenceReadGeneration++;this.presenceReadApplied=this.presenceReadGeneration;this.clearPresenceWriteFailure();this.lastPresenceWatchAt=0;this.presenceRebindAt=0;this.presenceWatchEmpty=false;this.presenceSnapshotPopulated=false;this.emitPresenceViewIfChanged();this.channelConfigs.clear();this.channelDefaults={};for(const watch of this.membershipFeedWatches)watch.arm=watch.arm.catch(()=>{}).then(()=>this.disarmMembershipWatch(watch)).catch(err3=>{this.emit("error",err3)})}async closeFailedBind(){const failedNc=this.nc;if(failedNc)this.disableLibraryReconnect(failedNc);this.clearConnectionScoped();this.nc=void 0;this.js=void 0;this.jsm=void 0;this.kv=void 0;this.channelKv=void 0;this.membersKv=void 0;this.aclKv=void 0;this.membershipFeedKv=void 0;this.deliveryKv=void 0;this.managerLeaseKv=void 0;this.daemonRenewalLeaseRevision=void 0;if(this.deliveryServeSub){try{this.deliveryServeSub.unsubscribe()}catch{}this.deliveryServeSub=void 0}if(this.deliveryAdminServeSub){try{this.deliveryAdminServeSub.unsubscribe()}catch{}this.deliveryAdminServeSub=void 0}for(const sub of this.subs){try{sub.unsubscribe()}catch{}}this.subs.length=0;if(!failedNc)return;this.emit("transport",{connected:false});this.emit("connection",{connected:false});try{await failedNc.close();return}catch{}if(!failedNc.isClosed?.()){try{await failedNc.drain();return}catch{}}const proto=failedNc.protocol;const transport=proto?.transport;if(transport&&!transport.isClosed){try{await transport.close?.()}catch{}if(!transport.isClosed){try{transport.disconnect?.()}catch{}}}}async tearDownIfStopped(){if(!this.stopped)return false;const nc=this.nc;if(nc)this.disableLibraryReconnect(nc);this.clearConnectionScoped();await this.closeWithoutLibraryReconnect(nc);this.nc=void 0;return true}superviseConnection(){const nc=this.nc;if(!nc)return;void nc.closed().then(err3=>{if(this.stopped)return;if(this.nc!==nc)return;this.emit("connection",{connected:false});this.emit("error",new Error(`mesh connection closed${err3?`: ${err3.message||err3.name}`:""} - re-establishing`));void this.reestablishLoop()})}rebuild(){if(this.rebuildPromise)return this.rebuildPromise;const p=this.doRebuild().finally(()=>{if(this.rebuildPromise===p)this.rebuildPromise=void 0});this.rebuildPromise=p;return p}async doRebuild(){const oldNc=this.nc;if(oldNc)this.disableLibraryReconnect(oldNc);this.reconnecting=true;try{this.clearConnectionScoped();if(oldNc&&!oldNc.isClosed())await Promise.all([...[...this.membershipFeedWatches].map(watch=>watch.arm),this.settleDeliveryLeaseWatches(),this.settleKvWatches()]);this.nc=void 0;this.js=void 0;this.jsm=void 0;this.kv=void 0;this.channelKv=void 0;this.membersKv=void 0;this.aclKv=void 0;this.membershipFeedKv=void 0;this.deliveryKv=void 0;this.managerLeaseKv=void 0;this.daemonRenewalLeaseRevision=void 0;this.emit("transport",{connected:false});this.emit("connection",{connected:false});await this.closeWithoutLibraryReconnect(oldNc);if(this.stopped)return;try{await this.connectAndBind()}catch(error51){if(!this.stopped)throw error51}if(await this.tearDownIfStopped())return;this.superviseConnection()}finally{this.reconnecting=false}}static RETRY_BACKOFF_CAP_MS=6e4;nextRetryDelayMs(){const delay2=Math.min(this.retryMs*2**this.retryAttempt,_CotalEndpoint.RETRY_BACKOFF_CAP_MS);this.retryAttempt++;return Math.round(delay2/2+Math.random()*(delay2/2))}async reestablishLoop(){if(this.reestablishing)return;this.reestablishing=true;try{while(!this.stopped){try{await this.rebuild();this.retryAttempt=0;return}catch(e){const delay2=this.nextRetryDelayMs();if(!this.stopped&&!(e instanceof RepeatedRefusal))this.emitRecoverable(this.userMode&&isAuthRejection(e)?new Error(`the broker refused this endpoint's bearer for ${this.owner}.${this.actor} - retrying in ${Math.ceil(delay2/1e3)}s; the space's auth service logs why`,{cause:e}):e);if(this.stopped)return;await new Promise(resolve3=>{this.backoffResolve=resolve3;this.backoffTimer=setTimeout(resolve3,delay2)})}}}finally{this.reestablishing=false}}kickBackoff(){this.backoffResolve?.();if(this.backoffTimer){clearTimeout(this.backoffTimer);this.backoffTimer=void 0}}async reconnect(){if(this.stopped)throw new Error("endpoint stopped - cannot reconnect");this.kickBackoff();try{await this.rebuild()}catch(e){void this.reestablishLoop();throw e}}stop(){return this.stopPromise??=this.stopOnce()}async stopOnce(){if(this.nc)this.disableLibraryReconnect(this.nc);this.stopped=true;for(const follower of this.activeGoalFollowers){follower.cancel()}this.activeGoalFollowers.clear();this.presenceEpoch++;this.presenceRebind=void 0;this.kickBackoff();if(this.heartbeatTimer)clearInterval(this.heartbeatTimer);if(this.sweepTimer)clearInterval(this.sweepTimer);this.cancelBearerRenewal?.();if(this.credsTimer)clearTimeout(this.credsTimer);if(this.authExpiryReconnectTimer)clearTimeout(this.authExpiryReconnectTimer);for(const watch of this.membershipFeedWatches){watch.stopped=true;watch.arm=watch.arm.catch(()=>{}).then(async()=>{await this.disarmMembershipWatch(watch);await this.deleteRetainedMembershipConsumer(watch)})}await Promise.all([...this.membershipFeedWatches].map(watch=>watch.arm.catch(err3=>{if(this.nc&&!this.nc.isClosed())throw err3})));for(const watch of this.membershipFeedWatches){watch.resolveStop?.();watch.resolveStop=void 0;watch.rejectStop=void 0}this.membershipFeedWatches.clear();for(const msgs of this.streamMsgs){try{msgs.stop()}catch{}}if(this.presenceWatchIter)this.retireKvWatch(this.presenceWatchIter);this.presenceWatchIter=void 0;if(this.channelWatchIter)this.retireKvWatch(this.channelWatchIter);this.channelWatchIter=void 0;this.stopDeliveryLeaseWatch();try{if(this.doRegister){this.status="offline";await this.publishPresence()}}catch{}await Promise.all([this.settleDeliveryLeaseWatches(),this.settleKvWatches()]);let dmOnlyUnsettled=false;if(this.dmOnly&&this.dmOnlyInFlight){const settleMs=this.dmOnly.settleTimeoutMs??3e4;dmOnlyUnsettled=await withDeadline(this.dmOnlyInFlight.then(()=>false),settleMs,()=>new Error("unsettled")).catch(()=>true)}await this.closeWithoutLibraryReconnect(this.nc);this.clearPresenceWriteFailure();await this.rebuildPromise;await this.startPromise;if([...this.ownedConnections].some(nc=>!nc.isClosed()))throw new Error("endpoint stop could not prove its connection closed; local consumer custody must be retained");if(dmOnlyUnsettled)throw new Error(`endpoint stop closed the connection but the DM-only handler did not settle within ${this.dmOnly?.settleTimeoutMs??3e4}ms; its copy stays unacked and handler custody must be retained`)}async multicast(text2,opts){const channel=opts?.channel??this.channels.find(isConcreteChannel);if(channel===void 0)throw new Error("no default channel: this endpoint is not on any concrete channel, so there is nothing to broadcast to - name a channel explicitly, or join one first");if(!isConcreteChannel(channel))throw new Error(`cannot publish to wildcard channel "${channel}" - pick a concrete sub-channel`);const msg={id:randomUUID3(),ts:Date.now(),space:this.space,from:this.ref(),channel,mentions:normalizeMentions(opts?.mentions),parts:opts?.parts??[{kind:"text",text:text2}],replyTo:opts?.replyTo,contextId:opts?.contextId};await this.publishMsg(chatSubject(this.space,this.owner,this.actor,channel),msg);return msg}get maxPayload(){const max=this.nc?.info?.max_payload;if(typeof max!=="number"||!Number.isFinite(max)||max<=0)throw new Error(`${this.notLiveMsg()} - max_payload is only known while connected`);return max}async assertExpectationSemantics(){if(!this.jsm)throw new Error(this.notLiveMsg());const stream=chatStream(this.space);let replicas;try{replicas=(await this.jsm.streams.info(stream)).config.num_replicas}catch(e){throw new Error(`cannot verify expectation semantics: stream "${stream}" info unavailable (${e.message}). Serialized appends are refused rather than run on an unverified stream.`)}if(replicas!==1)throw new Error(`stream "${stream}" reports num_replicas=${String(replicas)}; serialized appends on THIS stream require 1 \u2014 a property of this one stream, not of the broker, so a clustered deployment is fine so long as this stream is R1, which a cluster can host. On a replicated stream the dedup cache is consulted before the subject expectation, so a retry returns a duplicate ack instead of a conflict and a lost message reads as success.`)}casEnvelope(opts){return{id:opts.id,ts:Date.now(),space:this.space,from:this.ref(),channel:opts.channel,mentions:normalizeMentions(opts.mentions),parts:opts.parts,replyTo:opts.replyTo,contextId:opts.contextId}}encodedSize(opts){if(!isConcreteChannel(opts.channel))throw new Error(`cannot publish to wildcard channel "${opts.channel}" - pick a concrete sub-channel`);assertIdToken(opts.id,"publish id");if(!Number.isSafeInteger(opts.expectedLastSubjectSeq)||opts.expectedLastSubjectSeq<0)throw new Error(`expectedLastSubjectSeq must be a non-negative safe integer, got ${JSON.stringify(opts.expectedLastSubjectSeq)}`);if(!Array.isArray(opts.parts)||opts.parts.length===0)throw new Error("encodedSize requires at least one part");const mh=(0,import_transport_node13.headers)();mh.set("Nats-Msg-Id",opts.id);mh.set("Nats-Expected-Last-Subject-Sequence",`${opts.expectedLastSubjectSeq}`);const headerBytes=mh.encode().length;return headerBytes+Buffer.byteLength(JSON.stringify(this.casEnvelope(opts)),"utf8")}async multicastExpecting(opts){if(!this.js)throw new Error(this.notLiveMsg());if(!isConcreteChannel(opts.channel))throw new Error(`cannot publish to wildcard channel "${opts.channel}" - pick a concrete sub-channel`);assertIdToken(opts.id,"publish id");const expected=opts.expectedLastSubjectSeq;if(!Number.isSafeInteger(expected)||expected<0)throw new Error(`expectedLastSubjectSeq must be a non-negative safe integer, got ${JSON.stringify(expected)}`);if(!Array.isArray(opts.parts)||opts.parts.length===0)throw new Error("multicastExpecting requires at least one part");const message=this.casEnvelope(opts);assertPartsSerializable(message.parts);const ack=await this.js.publish(chatSubject(this.space,this.owner,this.actor,opts.channel),JSON.stringify(message),{msgID:opts.id,expect:{lastSubjectSequence:expected}});return{message,ack:{seq:ack.seq,duplicate:ack.duplicate===true}}}async unicast(instanceId,text2,opts){const{msg}=await this.unicastAttributed(instanceId,text2,opts);return msg}async unicastAttributed(instanceId,text2,opts){if(!this.js)throw new Error(this.notLiveMsg());const msg={id:randomUUID3(),ts:Date.now(),space:this.space,from:this.ref(),to:instanceId,parts:opts?.parts??[{kind:"text",text:text2}],replyTo:opts?.replyTo,contextId:opts?.contextId};const recip=parsePrincipalKey(instanceId);if(!recip)throw new Error(`unicast: "${instanceId}" is not a valid recipient principal <owner>.<actor>`);assertPartsSerializable(msg.parts);const subject=unicastSubject(this.space,recip.owner,recip.actor,this.owner,this.actor);try{const ack=await this.js.publish(subject,JSON.stringify(msg),{msgID:msg.id});return{msg,ack:{seq:ack.seq,duplicate:ack.duplicate===true}}}catch(error51){if(error51 instanceof import_transport_node13.TimeoutError)throw new Error(`${error51.message} publishing to ${JSON.stringify(subject)}. The send outcome is unknown: the broker may have stored the message. Check before resending.`,{cause:error51});throw error51}}async anycast(service,text2,opts){const{msg}=await this.anycastAttributed(service,text2,opts);return msg}async anycastAttributed(service,text2,opts){if(!this.js)throw new Error(this.notLiveMsg());assertValidRole(service);const msg={id:randomUUID3(),ts:Date.now(),space:this.space,from:this.ref(),toService:service,parts:opts?.parts??[{kind:"text",text:text2}],replyTo:opts?.replyTo,contextId:opts?.contextId};assertPartsSerializable(msg.parts);const ack=await this.js.publish(anycastSubject(this.space,service,this.owner,this.actor),JSON.stringify(msg),{msgID:msg.id});return{msg,ack:{seq:ack.seq,duplicate:ack.duplicate===true}}}tap(handler,opts){const tap={handler,subject:opts?.subject??spaceWildcard(this.space)};this.taps.push(tap);this.bindTap(tap)}bindTap(tap){if(!this.nc)return;const sub=this.nc.subscribe(tap.subject);this.subs.push(sub);void(async()=>{for await(const m of sub){let decoded;try{decoded=m.json()}catch{decoded=void 0}const parsed=parseSubject(m.subject);if(decoded!==void 0&&(parsed?.kind==="chat"||parsed?.kind==="inst"||parsed?.kind==="svc")){if(!isRecord(decoded)||!decoded.from||decoded.from.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner))continue;decoded=authenticatedMessage(decoded,parsed)}tap.handler(m.subject,decoded)}})().catch(e=>this.emit("error",e))}serveControl(service,handler,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());const sub=this.nc.subscribe(controlServiceSubject(this.space,service,"*","*"),{queue:service});this.subs.push(sub);const inOwnTime=opts.concurrent;let inOrder=Promise.resolve();void(async()=>{for await(const m of sub){if(opts.boundReply&&(!m.reply||!m.reply.startsWith(`${m.subject}.reply.`))){this.emit("error",new Error(`rejected ${service} request on ${m.subject}: reply target "${m.reply??"(none)"}" is not under the sender's own reply subtree`));continue}const answer=()=>this.answerControl(service,handler,m);if(inOwnTime===void 0){await answer();continue}let own=false;try{own=inOwnTime(m.json())}catch{}if(own)void answer().catch(e=>this.emit("error",e));else inOrder=inOrder.then(answer).catch(e=>{this.emit("error",e)})}})().catch(e=>this.emit("error",e));return sub}async answerControl(service,handler,m){let body;try{let reply;const req=m.json();const parsed=parseSubject(m.subject);if(!parsed||req.from?.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner)){this.emit("error",new Error(`rejected control request on ${m.subject}: from ${req.from?.id??"(none)"} does not match subject sender ${parsed?.sender??"(unparseable)"}`));reply={ok:false,error:"sender mismatch - request rejected"}}else{reply=await handler(req)}body=JSON.stringify(reply)}catch(e){body=JSON.stringify({ok:false,error:e.message})}try{m.respond(body)}catch(e){const refused={ok:false,error:`the ${service} reply is ${Buffer.byteLength(body)} bytes and was not published: ${e.message}`};try{m.respond(JSON.stringify(refused))}catch(err3){this.emit("error",new Error(`could not answer ${service} request on ${m.subject}: ${refused.error}, and the refusal failed too: ${err3.message}`))}}}async requestControl(service,req,timeoutMs=5e3){if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=controlServiceSubject(this.space,service,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;const body={...req,from:req.from??this.ref()};const m=await this.nc.request(reqSubject,JSON.stringify(body),{timeout:timeoutMs,noMux:true,reply});return m.json()}serviceRailCaller(){return this.serviceCaller()}serviceCaller(){const triple={owner:this.owner,actor:this.actor,uid:this.requireLifecycleUid("invokeService")};if(this.acceptedToken===void 0)return triple;if(this.issuedGeneration===void 0)throw new Error("invokeService: the issued generation is not yet discovered on this connection");return{...triple,generation:this.issuedGeneration}}async followServiceGoal(endpoint,submit,deadlineMs=1e4,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());if(this.stopped)throw new Error("endpoint stopped - cannot follow goal");const abortController=new AbortController;const onAbort=()=>abortController.abort();if(opts.signal?.aborted)onAbort();else opts.signal?.addEventListener("abort",onAbort,{once:true});let reconnectHandler;const entry={cancel:()=>abortController.abort(),reconnected:nc=>reconnectHandler?.(nc)};this.activeGoalFollowers.add(entry);try{const reconcile=opts.reconcile??(async(goalId,_attributed,context)=>{const current=this.serviceCaller();if(current.owner!==context.caller.owner||current.actor!==context.caller.actor||current.uid!==context.caller.uid)throw new Error("the renewed goal reader no longer has the accepting caller's full identity");const q=await this.invokeService(endpoint,"goal-result",{goalId},{deadlineMs:Math.min(deadlineMs,context.deadlineMs),signal:context.signal});if(q.reply.ok!==true)throw new Error(q.reply.error?.message??"goal-result query refused");return q.reply.data});return await submitAndFollowGoal(this.nc,this.space,endpoint,this.serviceCaller(),deadlineMs,submit,{reconcile,currentNc:()=>this.nc,onReconnect:cb=>{reconnectHandler=cb;return()=>{reconnectHandler=void 0}},signal:abortController.signal,prepare:opts.prepare})}finally{opts.signal?.removeEventListener("abort",onAbort);this.activeGoalFollowers.delete(entry)}}clearResolvedService(endpoint){this.resolvedServices.delete(endpoint);this.resolvedCommandServices.delete(endpoint)}async describeService(endpoint,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());if(opts.refresh)this.clearResolvedService(endpoint);const cached2=opts.instanceId===void 0?this.resolvedServices.get(endpoint):void 0;if(cached2)return cached2;const svc=await resolveService(this.nc,this.space,endpoint,this.serviceCaller(),{deadlineMs:opts.deadlineMs??1e4,signal:opts.signal,...opts.instanceId!==void 0?{instanceId:opts.instanceId}:{}});if(opts.instanceId===void 0)this.resolvedServices.set(endpoint,svc);return svc}async invokeService(endpoint,command,args,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());const nc=this.nc;const caller=this.serviceCaller();const resolve3=async(signal=opts.signal,deadlineMs=opts.deadlineMs??1e4)=>{signal?.throwIfAborted();const needed=opts.follow?[command,"goal-result"]:[command];const classSelected=opts.instanceId===void 0&&opts.classInstanceId===void 0;const full=classSelected?this.resolvedServices.get(endpoint):void 0;if(full&&needed.every(name=>full.commands.has(name)))return full;const cacheKey=[...needed].sort().join("\0");const commandCache=classSelected?this.resolvedCommandServices.get(endpoint):void 0;const cached2=commandCache?.get(cacheKey);if(cached2)return cached2;const svc=await resolveService(nc,this.space,endpoint,caller,{deadlineMs,signal,commands:needed,...opts.follow&&command!=="goal-result"?{optionalCommands:["goal-result"]}:{},...opts.instanceId!==void 0?{instanceId:opts.instanceId}:{},...opts.classInstanceId!==void 0?{classInstanceId:opts.classInstanceId}:{}});if(classSelected){let byCommand=this.resolvedCommandServices.get(endpoint);if(!byCommand){byCommand=new Map;this.resolvedCommandServices.set(endpoint,byCommand)}byCommand.set(cacheKey,svc)}return svc};const invokeOpts={...opts.target?{target:opts.target}:{},...opts.deadlineMs!==void 0?{deadlineMs:opts.deadlineMs}:{}};const invokeResolved=(service2,signal)=>{signal?.throwIfAborted();const unfollowable=opts.follow?goalFollowRefusal(service2):void 0;if(unfollowable)return Promise.resolve(unfollowable);return invokeCommand(nc,this.space,service2,command,args,{...invokeOpts,signal})};const resolveFirst=async(signal=opts.signal,deadline=Date.now()+(opts.deadlineMs??1e4))=>{try{return await resolve3(signal,deadline-Date.now())}catch(e){if(!(e instanceof EpEnvelopeError)||e.code!=="failed-precondition")throw e;const left=deadline-Date.now();if(left<=0)throw e;return await resolve3(signal,left)}};const doInvoke=async(service2,signal=opts.signal)=>{signal?.throwIfAborted();try{let r=await invokeResolved(service2,signal);const unmappedHere=x=>opts.instanceId===void 0&&replyTargetUnmapped(x.reply.error);let unmapped=unmappedHere(r)?r:void 0;for(let reissues=0;reissues<BIND_SPLIT_REISSUES&&r.reply.ok===false&&(replyRefusedBeforeEffect(r.reply.error)||unmappedHere(r));reissues++){this.splitsRecovered++;this.emit("split-recovered",{endpoint,command,servedBy:r.responder,splitsRecovered:this.splitsRecovered,boundTo:(r.reply.error?.details??[]).find(d=>d.kind===EP_BIND_REFUSED)?.boundTo});this.clearResolvedService(endpoint);const raw=r.reply.error?.code;const refusalCode=raw==="expired"?"expired":raw==="failed-precondition"?"failed-precondition":void 0;if(refusalCode===void 0)throw new EpEnvelopeError("internal",`${endpoint}.${command} came back marked as refused before it ran, but with code ${String(raw)}; the fence produces only failed-precondition or expired (SPEC 13.2)`,r.reply.error?.details);let reissueTarget;try{reissueTarget=await resolve3(signal);const unfollowable=opts.follow?goalFollowRefusal(reissueTarget):void 0;if(unfollowable)throw new Error(unfollowable.reply.error.message)}catch(reissue){throw new EpEnvelopeError(refusalCode,`${endpoint}.${command} WAS NOT RUN - the incarnation that received it refused it before any effect, and the re-issue could not be resolved: ${reissue instanceof Error?reissue.message:String(reissue)}. Re-resolve and re-issue when the endpoint is reachable (SPEC 13.2)`,r.reply.error?.details,"not-executed")}r=await invokeResolved(reissueTarget,signal);if(unmappedHere(r))unmapped=r}return replyRefusedBeforeEffect(r.reply.error)?unmapped??r:r}catch(e){if(respondedButUnbound(e)){this.clearResolvedService(endpoint);if(!isRepeatSafeCommand(endpoint,command))throw e;return await invokeResolved(await resolve3(signal),signal)}throw e}};if(!opts.follow)return doInvoke(await resolveFirst());let service;return this.followServiceGoal(endpoint,signal=>doInvoke(service,signal),opts.deadlineMs??1e4,{signal:opts.signal,prepare:async(signal,deadline)=>{service=await resolveFirst(signal,deadline)}})}async requestDelivery(op,args,timeoutMs=5e3){if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=controlServiceSubject(this.space,CONTROL_DELIVERY,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;const body={op,args,from:this.ref()};const m=await this.nc.request(reqSubject,JSON.stringify(body),{timeout:timeoutMs,noMux:true,reply});return m.json()}async requestDeliveryAdmin(op,args,timeoutMs=5e3){if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=controlServiceSubject(this.space,CONTROL_DELIVERY_ADMIN,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;const body={op,args,from:this.ref()};const m=await this.nc.request(reqSubject,JSON.stringify(body),{timeout:timeoutMs,noMux:true,reply});return m.json()}getRoster(){return[...this.roster.values()].sort((a,b)=>a.card.name.localeCompare(b.card.name))}async readPresence(){if(this.doWatch&&!this.readOnce)throw new Error("readPresence is for an endpoint that does not watch presence; this one keeps its roster live (getRoster)");const kv=this.kv;if(!kv)throw new Error(this.nc?"readPresence needs the presence bucket open (registerPresence or watchPresence)":this.notLiveMsg());if(this.presenceRead)return this.presenceRead;const generation=++this.presenceReadGeneration;const roster=(async()=>{let entries;try{entries=await lastKvEntries(kv)}catch(e){if(!isPublishPermissionDenied(e))throw e;throw new Error(`presence read refused for ${this.card.id}: this credential may not publish $JS.API.DIRECT.GET.KV_${presenceBucket(this.space)}, the on-demand roster read (SPEC Appendix B). A credential minted by an older issuer can lack this grant even when newly minted; upgrade the manager or auth service that issues credentials, then mint a new credential. Reusing credentials or reconnecting does not add the grant.`,{cause:e})}const at=Date.now();const read=new Map;for(const e of entries){if(e.key===TTL_RECONCILE_CANARY_KEY||e.operation==="DEL"||e.operation==="PURGE")continue;const p=this.decodePresence(e);if(p)read.set(e.key,p.status==="offline"||at-p.ts>this.ttlMs?this.toOffline(p):p)}if(generation>this.presenceReadApplied){this.presenceReadApplied=generation;for(const[id2,p]of this.roster)if(!read.has(id2))read.set(id2,p.status==="offline"?p:this.toOffline(p));this.roster.clear();for(const[id2,p]of read)this.roster.set(id2,p)}return this.getRoster()})();this.presenceRead=roster;const settled=()=>{if(this.presenceRead===roster)this.presenceRead=void 0};roster.then(settled,settled);return roster}presenceView(){if(!this.doWatch)return{state:"current",fresh:true};if(!this.presenceSnapshotPopulated)return{state:"unpopulated",fresh:false};if(this.presenceWatchEmpty)return{state:"current",fresh:true};const staleSince=this.lastPresenceWatchAt+this.ttlMs;if(Date.now()<staleSince)return{state:"current",fresh:true};return{state:"stale",fresh:false,staleSince}}async waitForPresenceSnapshot(timeoutMs=1e3){let timer;try{return await Promise.race([this.presenceSnapshot.then(()=>"snapshot"),new Promise(resolve3=>{timer=setTimeout(()=>resolve3("timeout"),timeoutMs)})])}finally{if(timer)clearTimeout(timer)}}assertPresenceUpdate(update){assertPresenceRow({card:this.card,status:this.status,activity:this.activity,condition:this.condition,attention:this.attentionMode,ts:Date.now(),...update},this.card.id)}async setActivity(activity){this.assertPresenceUpdate({activity});if(activity!==this.activity)this.statusSince=this.activitySince=Date.now();this.activity=activity;await this.publishPresence()}async setStatus(status2,activity){this.assertPresenceUpdate({status:status2,...activity===void 0?{}:{activity}});if(activity!==void 0&&activity!==this.activity)this.statusSince=this.activitySince=Date.now();if(activity!==void 0)this.activity=activity;if(status2!==this.status)this.statusSince=Date.now();this.status=status2;await this.publishPresence()}noteActivity(at=Date.now()){if(Number.isFinite(at)&&at>(this.activeAt??0))this.activeAt=at}async setCondition(condition){this.assertPresenceUpdate({condition:condition??void 0});this.condition=condition??void 0;this.conditionRevision++;await this.publishPresence()}async setAttention(attention){this.assertPresenceUpdate({attention});this.attentionMode=attention;await this.publishPresence()}async setChannelModes(modes){this.channelModes=Object.keys(modes).length?modes:void 0;await this.publishPresence()}async setCardModel(model,variant,provider){const m=model.trim();const v=variant?.trim();const p=provider?.trim();if(!m||this.card.meta?.model===m&&this.card.meta.variant===v&&(p===void 0||this.card.meta?.provider===p))return;const meta3={...this.card.meta??{},model:m};if(v)meta3.variant=v;else delete meta3.variant;if(p)meta3.provider=p;this.card.meta=meta3;await this.publishPresence()}async setCardCwd(cwd){if(!cwd||this.card.meta?.cwd===cwd)return;this.card.meta={...this.card.meta??{},cwd};await this.publishPresence()}getChannelConfig(channel){return this.channelConfigs.get(channel)}channelReplay(channel){return effectiveReplay(this.channelConfigs.get(channel),this.channelDefaults)}channelReplayWindow(channel){return this.channelConfigs.get(channel)?.replayWindow??this.channelDefaults.replayWindow}async channelReplayPolicy(channel){if(!this.nc)throw new Error(this.notLiveMsg());const kv=this.channelKv??await openChannelRegistry(this.nc,this.space,{create:false});let cfg;let defaults;try{[cfg,defaults]=await Promise.all([isConcreteChannel(channel)?readChannelConfig(kv,channel):Promise.resolve(void 0),readChannelDefaults(kv)])}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e}return{replay:effectiveReplay(cfg,defaults),window:cfg?.replayWindow??defaults?.replayWindow??null,registered:cfg!==void 0}}channelDeliveryClass(channel){return effectiveDeliveryClass(this.channelConfigs.get(channel),this.channelDefaults)}joinedChannels(){return[...this.channels]}async joinChannel(channel){if(!this.jsm)throw new Error(this.notLiveMsg());if(this.channels.includes(channel))return{joined:false,backfilled:0,durable:this.plane3Channels.has(channel)};const armed2=await this.armJoin([channel]);this.subscribeChat(channel);try{await this.confirmChatSub()}catch(e){this.unsubscribeChat(channel);throw new Error(`cannot join "${channel}": live subscription could not be confirmed (${e.message})`)}if(this.chatSubDenied.has(channel)){this.unsubscribeChat(channel);throw new Error(`cannot join "${channel}": not within this agent's read ACL (allowSubscribe)`)}this.channels.push(channel);let durable=false;let reason;if(effectiveDeliveryClass(this.channelConfigs.get(channel),this.channelDefaults)==="durable"){try{const r=await this.durableJoinChannel(channel);if(r.durable){this.plane3Channels.set(channel,r.generation??0);durable=true}else{reason=r.reason??"durable backstop unavailable"}}catch(e){reason=`durable backstop unavailable (${e.message})`}}const backfilled=await this.backfillArmed(armed2);return{joined:true,backfilled,durable,...reason!==void 0?{reason}:{}}}async leaveChannel(channel){if(!this.jsm)throw new Error(this.notLiveMsg());if(!this.channels.includes(channel))return{left:false};if(this.authed&&effectiveDeliveryClass(this.channelConfigs.get(channel),this.channelDefaults)==="durable"){let generation=this.plane3Channels.get(channel);if(generation===void 0)generation=(await this.fetchMemberships())?.find(m=>m.channel===channel)?.generation;if(generation!==void 0){await this.durableLeaveChannel(channel,generation);this.plane3Channels.delete(channel)}}this.unsubscribeChat(channel);const i=this.channels.indexOf(channel);if(i>=0)this.channels.splice(i,1);return{left:true}}async chatRetention(){if(!this.nc)throw new Error(this.notLiveMsg());const mgr=await(0,import_jetstream14.jetstreamManager)(this.nc);let info;try{info=await mgr.streams.info(chatStream(this.space),{subjects_filter:">"})}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e;return{perSender:null,maxAgeMs:null,senders:[],stream:false,lastSeq:0}}const senders=[];for(const[subject,messages]of Object.entries(info.state.subjects??{})){const p=parseSubject(subject);if(p?.kind==="chat"&&isPrincipalOwnerToken(p.owner))senders.push({channel:p.rest,sender:p.sender,messages})}const cap=info.config.max_msgs_per_subject;const age=info.config.max_age;return{perSender:typeof cap==="number"&&cap>0?cap:null,maxAgeMs:typeof age==="number"&&age>0?Math.round(age/1e6):null,senders:senders.sort((a,b)=>a.channel.localeCompare(b.channel)||a.sender.localeCompare(b.sender)),stream:true,lastSeq:info.state.last_seq}}async listChannels(){if(!this.nc)throw new Error(this.notLiveMsg());const mgr=await(0,import_jetstream14.jetstreamManager)(this.nc);const counts=new Map;try{const info=await mgr.streams.info(chatStream(this.space),{subjects_filter:">"});if(info.state.subjects){for(const[subject,count]of Object.entries(info.state.subjects)){const p=parseSubject(subject);if(p?.kind==="chat"&&isPrincipalOwnerToken(p.owner))counts.set(p.rest,(counts.get(p.rest)??0)+count)}}}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e}const channels=new Set([...counts.keys(),...this.channelConfigs.keys()]);return[...channels].map(channel=>({channel,messages:counts.get(channel)??0,config:this.channelConfigs.get(channel)})).sort((a,b)=>a.channel.localeCompare(b.channel))}async channelMembers(channel){const members=(await listMembers(await this.membersRegistry())).filter(r=>r.leaveCursor===void 0&&r.activated===true);const byId=new Map;for(const p of this.roster.values())byId.set(p.card.id,p);const memberForId=id2=>{const p=byId.get(id2);return p?{id:p.card.id,name:p.card.name,role:p.card.role,live:p.status!=="offline"}:{id:id2,name:id2,live:false}};const byName=(a,b)=>a.name.localeCompare(b.name);if(channel!==void 0)return members.filter(r=>subjectMatches(r.channel,channel)).map(r=>memberForId(r.owner)).sort(byName);const map2=new Map;for(const r of members){const arr=map2.get(r.channel);const m=memberForId(r.owner);if(arr){if(!arr.some(x=>x.id===m.id))arr.push(m)}else{map2.set(r.channel,[m])}}for(const arr of map2.values())arr.sort(byName);return map2}async membershipFeedRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.membershipFeedKv??=await new import_kv6.Kvm(this.nc).open(membershipBucket(this.space));return this.membershipFeedKv}async readMembership(){const kv=await this.membershipFeedRegistry();const members=[];let asOf;let entries;try{entries=await lastKvEntries(kv)}catch(e){if(!isPublishPermissionDenied(e))throw e;throw new Error(`membership read refused for ${this.card.id}: this credential may not publish $JS.API.DIRECT.GET.KV_${membershipBucket(this.space)}, the membership feed read (SPEC Appendix B). A credential minted by an older issuer can lack this grant even when newly minted; upgrade the manager or auth service that issues credentials, then mint a new credential. Reusing credentials or reconnecting does not add the grant.`,{cause:e})}for(const e of entries){if(e.key===MEMBERSHIP_FEED_KEY){try{asOf=e.json().observedAt}catch{}continue}try{const rec=e.json();members.push({id:e.key,live:rec.live??[],durable:rec.durable??[],observedAt:rec.observedAt})}catch{}}return{asOf,members}}async watchMembership(onChange,onClosed){if(this.stopped)throw new Error("endpoint stopped - cannot watch membership");const watch={onChange,onClosed,stopped:false,arm:Promise.resolve()};this.membershipFeedWatches.add(watch);watch.arm=watch.arm.catch(()=>{}).then(()=>this.armMembershipWatch(watch));try{await watch.arm}catch(err3){watch.stopped=true;this.membershipFeedWatches.delete(watch);await this.disarmMembershipWatch(watch);throw err3}return{stop:async()=>{if(watch.stopPromise)return watch.stopPromise;watch.stopped=true;watch.stopPromise=new Promise((resolve3,reject)=>{watch.resolveStop=resolve3;watch.rejectStop=reject});watch.arm=watch.arm.catch(()=>{}).then(async()=>{await this.disarmMembershipWatch(watch);await this.deleteRetainedMembershipConsumer(watch);this.finishMembershipWatchStop(watch)}).catch(err3=>{watch.rejectStop?.(err3)});return watch.stopPromise}}}async armMembershipWatch(watch){if(watch.stopped)return;const kv=await this.membershipFeedRegistry();await this.deleteRetainedMembershipConsumer(watch);if(!(kv instanceof import_internal2.Bucket))throw new Error("membership watch needs the @nats-io/kv Bucket implementation");const cc=kv._buildCC(">",import_internal2.KvWatchInclude.LastValue,{headers_only:false});const consumer=await kv.js.consumers.getPushConsumer(kv.stream,cc);const info=await consumer.info(true);this.recordOwnWatchConsumer(info);watch.consumer=consumer;const permission2=this.nc&&this.watchDeletePermissions.get(this.nc);if(permission2)this.watchDeletePermissions.set(consumer,permission2);watch.consumerStream=info.stream_name;watch.consumerName=info.name;let replaying=info.num_pending>0;let iter;try{iter=await consumer.consume({callback:jm=>{if(watch.stopped||watch.consumer!==consumer)return;const entry=kv.jmToWatchEntry(jm,!replaying);watch.onChange(membershipChange(entry,!replaying));if(replaying&&jm.info.pending===0){replaying=false;watch.onChange({type:"replayed",revision:entry.revision})}}})}catch(err3){await this.disarmMembershipWatch(watch);throw err3}watch.iter=iter;if(watch.stopped){await this.disarmMembershipWatch(watch);return}if(!replaying)watch.onChange({type:"replayed",revision:0});iter.closed().then(()=>{if(watch.stopped||watch.consumer!==consumer)return;const err3=new Error("membership watch closed");watch.onClosed?.(err3);this.emit("error",err3)}).catch(()=>{})}async deleteRetainedMembershipConsumer(watch){if(!watch.consumerStream||!watch.consumerName)return;if(!this.nc||this.nc.isClosed())return;if(this.watchConsumerDeleteDenied(watch.consumerStream,watch.consumerName,this.nc)){watch.consumerStream=void 0;watch.consumerName=void 0;return}const jsm=await(0,import_jetstream14.jetstreamManager)(this.nc);if(await this.deleteMembershipConsumer(jsm,watch.consumerStream,watch.consumerName)){watch.consumerStream=void 0;watch.consumerName=void 0}}finishMembershipWatchStop(watch){if(!watch.stopped||watch.consumer||watch.iter||watch.consumerStream||watch.consumerName)return;this.membershipFeedWatches.delete(watch);watch.resolveStop?.();watch.resolveStop=void 0;watch.rejectStop=void 0}recordOwnWatchConsumer({stream_name,name}){const prefix=`$JS.API.CONSUMER.DELETE.${stream_name}.${name.slice(0,name.lastIndexOf("_")+1)}`;this.ownWatchDeletePrefixes.add(prefix);return prefix}isOwnWatchDelete(subject){const cut=subject.lastIndexOf("_")+1;return/^\d+$/.test(subject.slice(cut))&&this.ownWatchDeletePrefixes.has(subject.slice(0,cut))}watchConsumerDeleteDenied(stream,name,owner2){const permission2=owner2&&this.watchDeletePermissions.get(owner2)?.();return Boolean(permission2&&!issuedPermitsSubject(permission2,`$JS.API.CONSUMER.DELETE.${stream}.${name}`))}async deleteOwnConsumer(consumer){const{stream_name,name}=await consumer.info(true);if(this.watchConsumerDeleteDenied(stream_name,name,consumer))return;try{await consumer.delete()}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound)&&!isPublishPermissionDenied(e))throw e}}async deleteMembershipConsumer(jsm,stream,name){try{return await jsm.consumers.delete(stream,name)}catch(err3){if(membershipConsumerReleased(err3))return true;throw err3}}async disarmMembershipWatch(watch){const iter=watch.iter;const consumer=watch.consumer;watch.iter=void 0;watch.consumer=void 0;try{iter?.stop()}catch{}if(consumer){if(watch.consumerStream&&watch.consumerName&&this.watchConsumerDeleteDenied(watch.consumerStream,watch.consumerName,consumer)){watch.consumerStream=void 0;watch.consumerName=void 0;return}try{const deleted=await consumer.delete();if(deleted){watch.consumerStream=void 0;watch.consumerName=void 0}}catch(err3){if(membershipConsumerReleased(err3)){watch.consumerStream=void 0;watch.consumerName=void 0}else{const closedEpoch=err3 instanceof import_transport_node13.ClosedConnectionError;const timeout=err3 instanceof import_transport_node13.TimeoutError;const dyingEpochTimeout=timeout&&(this.reconnecting||!this.nc||this.nc.isClosed());if(timeout||closedEpoch||dyingEpochTimeout){this.emit("error",err3)}else{throw err3}}}}}async rearmMembershipWatches(){await Promise.all([...this.membershipFeedWatches].map(async watch=>{watch.arm=watch.arm.catch(()=>{}).then(async()=>{await this.disarmMembershipWatch(watch);await this.deleteRetainedMembershipConsumer(watch);if(!watch.stopped)await this.armMembershipWatch(watch)});try{await watch.arm;this.finishMembershipWatchStop(watch)}catch(err3){this.emit("error",err3)}}))}async channelHistory(channel,opts){return(await this.streamHistory(chatStream(this.space),[chatSubject(this.space,"*","*",channel)],opts?.limit??100,void 0,opts?.signal)).map(r=>r.msg)}async channelHistoryPage(channel,opts){assertValidChannel(channel);if(!isConcreteChannel(channel))throw new Error("channelHistoryPage requires one concrete channel");const limit=opts?.limit??50;if(!Number.isSafeInteger(limit)||limit<1||limit>1e3)throw new Error("channelHistoryPage limit must be a whole number from 1 to 1000");if(!this.nc||!this.js)throw new Error(this.notLiveMsg());const jsm=this.jsm??=await(0,import_jetstream14.jetstreamManager)(this.nc);const signal=AbortSignal.any([AbortSignal.timeout(1e4),...opts?.signal?[opts.signal]:[]]);signal.throwIfAborted();const stream=chatStream(this.space);const name=chatHistDurable(this.owner,this.actor,this.requireLifecycleUid("channelHistoryPage"));const subject=chatSubject(this.space,"*","*",channel);const marker=randomUUID3();let created;for(;;){signal.throwIfAborted();try{created=await jsm.consumers.add(stream,{name,description:marker,filter_subject:subject,ack_policy:import_jetstream14.AckPolicy.None,deliver_policy:import_jetstream14.DeliverPolicy.All,mem_storage:true,inactive_threshold:(0,import_transport_node13.nanos)(250)});break}catch(e){if(!(e instanceof import_jetstream14.JetStreamApiError)||e.code!==10148)throw e;await delay(50,void 0,{signal})}}signal.throwIfAborted();const owns=info=>info.created===created.created&&info.config.description===marker&&info.config.filter_subject===subject;if(!owns(created))throw new Error("channelHistoryPage: consumer ownership was not established");const consumer=await this.js.consumers.get(stream,name);const pending=created.num_pending;const out=[];let delivered=0;if(pending>0){const iter=await consumer.consume({max_messages:Math.min(pending,32)});const stop=()=>iter.stop(abortReason(signal));signal.addEventListener("abort",stop,{once:true});try{signal.throwIfAborted();for await(const m of iter){signal.throwIfAborted();if(!subjectMatches(subject,m.subject))throw new Error("channelHistoryPage: consumer delivered another channel; ownership was lost");delivered++;const msg=historyMessageFromDelivery(m);if(msg){out.push(msg);if(out.length>limit+1)out.shift()}if(delivered>=pending)break}}finally{signal.removeEventListener("abort",stop);iter.stop()}signal.throwIfAborted();if(delivered!==pending)throw new Error(`channelHistoryPage: read ${delivered} of ${pending} messages before the window was cut short`)}signal.throwIfAborted();if(!owns(await consumer.info()))throw new Error("channelHistoryPage: consumer ownership was lost");signal.throwIfAborted();return{items:out.slice(-limit),complete:out.length<=limit}}async multiChannelHistory(channels,opts){const subjects=[...new Set(channels.map(channel=>{if(!isConcreteChannel(channel))throw new Error(`multiChannelHistory: "${channel}" is a wildcard channel - one consumer's filter subjects may not overlap, so name the concrete channels`);assertValidChannel(channel);return chatSubject(this.space,"*","*",channel)}))];if(subjects.length===0)return[];const limit=opts?.limit??100;const size=Math.max(1,Math.trunc(opts?.batch??MULTI_FILTER_BATCH));const batches=[];for(let i=0;i<subjects.length;i+=size)batches.push(subjects.slice(i,i+size));const pages=new Array(batches.length);let next=0;const readBatch=async()=>{for(;;){const i=next++;if(i>=batches.length)return;pages[i]=await this.streamHistory(chatStream(this.space),batches[i],limit,void 0,opts?.signal)}};await Promise.all(Array.from({length:Math.min(MULTI_FILTER_READ_CONCURRENCY,batches.length)},readBatch));const rows=pages.flat().sort((a,b)=>a.seq-b.seq).slice(-limit);return rows.map(({seq,subject,msg})=>{const p=parseSubject(subject);if(p?.kind!=="chat")throw new Error(`multiChannelHistory: the broker delivered ${subject}, which is not a chat subject on this space`);return{channel:p.rest,seq,msg}})}async readHistory(channel,opts){const reply=await this.requestDelivery("readHistory",{channel,limit:opts?.limit});if(!reply.ok)throw new Error(reply.error??"readHistory failed");const data=reply.data;if(!Array.isArray(data?.items)||typeof data?.complete!=="boolean")throw new Error("readHistory: the delivery daemon returned a malformed page (expected { items, complete })");return{items:data.items,complete:data.complete}}async dmHistory(opts){return(await this.streamHistory(dmStream(this.space),[`${spacePrefix(this.space)}.inst.>`],opts?.limit??100,void 0,opts?.signal)).map(r=>r.msg)}async streamHistory(stream,subjects,limit,before,signal){if(!this.nc)throw new Error(this.notLiveMsg());signal?.throwIfAborted();if(!Number.isSafeInteger(limit))throw new Error(`history limit must be a whole number of messages this server can count exactly, received ${limit}`);if(limit<=0)return[];const nc=this.nc;let reader;try{reader=await this.acquireHistoryReader(nc,this.jsm??(this.jsm=await(0,import_jetstream14.jetstreamManager)(nc)),stream,signal);const ceiling=before!==void 0?before-1:await this.lastMatchingSeq(reader,subjects,signal);if(ceiling<1)return[];let span=Math.max(limit,64);let floor=1;let floorKnown=false;for(;;){signal?.throwIfAborted();const start=Math.max(floor,ceiling-span+1);const page=await this.drainWindow(reader,subjects,start,ceiling,limit,signal);if(page.length>=limit)return page.slice(-limit);if(!floorKnown){floor=Math.max(1,await this.firstMatchingSeq(reader,subjects,signal));floorKnown=true}if(start<=floor)return page.slice(-limit);span*=4}}catch(e){const msg=String(e?.message??"");if(/stream not found/i.test(msg)||e?.code===404)return[];if(isPermissionDenied(e)&&stream===dmStream(this.space))return[];throw e}finally{if(reader)this.releaseHistoryReader(reader)}}historyReaderId(nc){if(!this.userMode)return this.connId;const info=nc.info;if(!info)throw new Error("history: the server has not sent its INFO, so this connection has no history reader id yet");return calloutReaderId(info.server_id,info.client_id)}async acquireHistoryReader(nc,jsm,stream,signal){for(;;){signal?.throwIfAborted();const readerId=this.historyReaderId(nc);let pool=this.historyReaderSlots.get(stream);if(pool?.readerId!==readerId){pool={readerId,free:Array.from({length:HISTORY_READERS},(_,i)=>HISTORY_READERS-1-i),held:0,waiting:[],refusedUntil:0};this.historyReaderSlots.set(stream,pool)}if(pool.refusedUntil>Date.now())throw this.readerDeleteRefused(stream);const slot=pool.free.pop();if(slot!==void 0){pool.held++;return{nc,js:(0,import_jetstream14.jetstream)(nc),jsm,stream,pool,slot,name:historyReaderConsumer(readerId,slot),held:true,left:false}}if(pool.held===0)throw new Error(`history: every history reader name this connection has on ${stream} is set aside, held by a consumer it did not create (another process using the same credential, or one that stopped mid-read) or by a reader it could not confirm deleted; they expire ${HISTORY_READER_INACTIVE_MS/6e4} minutes after their last use`);const waitOn=pool;await new Promise((resolve3,reject)=>{const wake=()=>{signal?.removeEventListener("abort",stop);resolve3()};const stop=()=>{waitOn.waiting.splice(waitOn.waiting.indexOf(wake),1);reject(abortReason(signal))};waitOn.waiting.push(wake);signal?.addEventListener("abort",stop,{once:true})})}}releaseHistoryReader(reader){if(!reader.held)return;reader.held=false;const pool=reader.pool;pool.held--;if(!reader.left){pool.free.push(reader.slot);pool.waiting.shift()?.();return}this.setAsideHistoryReader(pool,reader.slot);if(pool.held===0)for(const wake of pool.waiting.splice(0))wake()}setAsideHistoryReader(pool,slot){setTimeout(()=>{pool.free.push(slot);pool.waiting.shift()?.()},HISTORY_READER_INACTIVE_MS).unref()}async openHistoryReader(reader,config2){const pool=reader.pool;for(;;){if(this.historyReaderId(reader.nc)!==pool.readerId)throw new Error(`history: the connection was re-established during the read on ${reader.stream}, so its history reader names changed; the read is not served`);const description=`cotal history read ${randomUUID3()}`;let info;try{info=await reader.jsm.consumers.add(reader.stream,{...config2,name:reader.name,description,ack_policy:import_jetstream14.AckPolicy.None,max_deliver:1,mem_storage:true,num_replicas:1,inactive_threshold:(0,import_transport_node13.nanos)(HISTORY_READER_INACTIVE_MS)})}catch(e){if(!isConsumerAlreadyExists(e))throw e}if(info?.config.description===description)return reader.js.consumers.getConsumerFromInfo(info);this.setAsideHistoryReader(pool,reader.slot);const next=pool.free.pop();if(next===void 0){reader.held=false;pool.held--;for(const wake of pool.waiting.splice(0))wake();throw new Error(`history: reader ${reader.name} on ${reader.stream} is held by a consumer this read did not create, and no other reader name is free`)}reader.slot=next;reader.name=historyReaderConsumer(pool.readerId,next)}}async closeHistoryReader(reader){try{await reader.jsm.consumers.delete(reader.stream,reader.name)}catch(e){if(isConsumerNotFound(e))return;reader.left=true;if(isPublishPermissionDenied(e)){if(this.historyReaderId(reader.nc)!==reader.pool.readerId)throw new Error(`history: the connection was re-established during the read on ${reader.stream}, so it may no longer delete its reader ${reader.name}, which expires on its own; the read is not served`);reader.pool.refusedUntil=Date.now()+HISTORY_READER_INACTIVE_MS;throw this.readerDeleteRefused(reader.stream)}throw e}}readerDeleteRefused(stream){return new Error(`history: this credential may not delete its own history readers on ${stream}; it predates the observer and admin reader-delete grant, so remint it`)}async firstMatchingSeq(reader,subjects,signal){signal?.throwIfAborted();const consumer=await this.openHistoryReader(reader,{filter_subjects:subjects,deliver_policy:import_jetstream14.DeliverPolicy.All});try{if((await consumer.info(true)).num_pending===0)return 0;signal?.throwIfAborted();const iter=await consumer.fetch({max_messages:1});const stop=()=>iter.stop(abortReason(signal));signal?.addEventListener("abort",stop,{once:true});try{signal?.throwIfAborted();for await(const m of iter)return m.seq}finally{signal?.removeEventListener("abort",stop);iter.stop()}throw new Error(`history: the broker reported messages on ${subjectLabel(subjects)} but delivered none - the read was cut short, not empty`)}finally{await this.closeHistoryReader(reader)}}async lastMatchingSeq(reader,subjects,signal){signal?.throwIfAborted();const consumer=await this.openHistoryReader(reader,{filter_subjects:subjects,deliver_policy:import_jetstream14.DeliverPolicy.Last});try{if((await consumer.info(true)).num_pending===0)return 0;signal?.throwIfAborted();const iter=await consumer.fetch({max_messages:1});const stop=()=>iter.stop(abortReason(signal));signal?.addEventListener("abort",stop,{once:true});try{signal?.throwIfAborted();for await(const m of iter)return m.seq}finally{signal?.removeEventListener("abort",stop);iter.stop()}throw new Error(`history: the broker reported messages on ${subjectLabel(subjects)} but delivered none - the read was cut short, not empty`)}finally{await this.closeHistoryReader(reader)}}async drainWindow(reader,subjects,start,ceiling,limit,signal){signal?.throwIfAborted();const out=[];const consumer=await this.openHistoryReader(reader,{filter_subjects:subjects,deliver_policy:import_jetstream14.DeliverPolicy.StartSequence,opt_start_seq:start});try{const pending=(await consumer.info(true)).num_pending;if(pending===0)return out;signal?.throwIfAborted();const iter=await consumer.consume({max_messages:Math.min(pending,32)});const stop=()=>iter.stop(abortReason(signal));signal?.addEventListener("abort",stop,{once:true});let delivered=0;let complete=false;try{signal?.throwIfAborted();for await(const m of iter){delivered++;if(m.info.deliverySequence!==delivered)throw new Error(`history: delivery ${m.info.deliverySequence} arrived where ${delivered} was due on ${subjectLabel(subjects)} - the window has a gap, so the page is not served`);if(m.seq>=ceiling){if(m.seq===ceiling){const msg2=historyMessageFromDelivery(m);if(msg2)out.push({seq:m.seq,subject:m.subject,msg:msg2})}complete=true;break}const msg=historyMessageFromDelivery(m);if(msg){out.push({seq:m.seq,subject:m.subject,msg});if(out.length>limit)out.shift()}if(delivered>=pending){complete=true;break}}}finally{signal?.removeEventListener("abort",stop);iter.stop()}if(!complete)throw new Error(`history: read ${delivered} of ${pending} messages on ${subjectLabel(subjects)} before the stream ended early - the window was cut short, not empty`);return out}finally{await this.closeHistoryReader(reader)}}watchStatus(){const nc=this.nc;if(!nc)return;const handedToRequest=this.trackRequestDenials(nc);void(async()=>{for await(const s of nc.status()){if(this.nc!==nc)continue;if(s.type==="disconnect"){this.emit("transport",{connected:false,server:s.server});continue}if(s.type==="reconnect"){this.armAuthExpiryReconnectFence(nc);this.emit("transport",{connected:true,server:s.server});for(const follower of this.activeGoalFollowers){follower.reconnected(nc)}continue}if(s.type==="close"){this.emit("transport",{connected:false});continue}if(s.type!=="error")continue;if(s.error instanceof import_transport_node13.PermissionViolationError&&this.chatSubRefusals.has(s.error))continue;if(s.error instanceof import_transport_node13.PermissionViolationError&&handedToRequest.has(s.error))continue;if(s.error instanceof import_transport_node13.PermissionViolationError&&s.error.operation==="publish"&&this.isOwnWatchDelete(s.error.subject))continue;this.emit("error",describeStatusError(s.error))}})().catch(e=>{if(!this.stopped&&this.nc===nc)this.emit("error",e)});if(this.stopped)return;this.emit("transport",{connected:true,server:nc.getServer()})}trackRequestDenials(nc){const handed=new WeakSet;const request=nc.request.bind(nc);nc.request=(subject,payload,opts)=>{const reply=request(subject,payload,opts);reply.catch(({cause})=>{if(cause instanceof import_transport_node13.PermissionViolationError&&cause.operation==="publish")handed.add(cause)});return reply};return handed}notLiveMsg(){return this.reconnecting||this.reestablishing?"reconnecting - try again shortly":"endpoint not started"}async publishMsg(subject,msg){if(!this.js)throw new Error(this.notLiveMsg());assertPartsSerializable(msg.parts);try{await this.js.publish(subject,JSON.stringify(msg),{msgID:msg.id})}catch(error51){if(error51 instanceof import_transport_node13.TimeoutError)throw new Error(`${error51.message} publishing to ${JSON.stringify(subject)}. The send outcome is unknown: the broker may have stored the message. Check before resending.`,{cause:error51});throw error51}}async ensureStreams(){if(!this.jsm)throw new Error(this.notLiveMsg());await createSpaceStreams(this.jsm,this.space)}async provisionDmInbox(owner2,actor2,lifecycleUid){await this.ensureDmDurable(owner2,actor2,lifecycleUid,{})}async ensureDmDurable(owner2,actor2,lifecycleUid,opts){const jsm=await this.manager();const stream=dmStream(this.space);const name=dmDurable(owner2,actor2,lifecycleUid);try{await jsm.consumers.info(stream,name);return}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))throw e}const frontier=(await jsm.streams.info(stream)).state.last_seq;try{await jsm.consumers.add(stream,dmDurableConfig(this.space,owner2,actor2,lifecycleUid,{...opts,activationFrontier:frontier}))}catch(e){try{await jsm.consumers.info(stream,name);return}catch(probeError){if(isPermissionDenied(probeError))throw probeError}throw e}}async provisionDlvInbox(owner2,actor2,lifecycleUid){const jsm=await this.manager();await jsm.consumers.add(dlvStream(this.space),dlvDurableConfig(this.space,owner2,actor2,lifecycleUid))}async provisionTaskQueue(role){const jsm=await this.manager();await jsm.consumers.add(taskStream(this.space),taskDurableConfig(this.space,role))}async membersRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.membersKv??=await openMembersRegistry(this.nc,this.space);return this.membersKv}async aclRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.aclKv??=await openAclRegistry(this.nc,this.space);return this.aclKv}async commitAcl(targetId,lifecycleUid,allowSubscribe){await commitAcl(await this.aclRegistry(),targetId,lifecycleUid,allowSubscribe)}async reissueAcl(targetId,lifecycleUid,allowSubscribe){await reissueAcl(await this.aclRegistry(),targetId,lifecycleUid,allowSubscribe)}async aclForOwner(owner2,lifecycleUid){return(await readAcl(await this.aclRegistry(),owner2,lifecycleUid))?.record.allowSubscribe}async aclForAlias(principal){const row=await readAclForAlias(await this.aclRegistry(),principal);if(row===void 0)return void 0;const allow=row.record.allowSubscribe;const issued=row.record.issuedAllowSubscribe??allow;return{allowSubscribe:allow,issuedAllowSubscribe:issued,lifecycleUid:row.lifecycleUid}}async deliveryRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.deliveryKv??=await openDeliveryRegistry(this.nc,this.space);return this.deliveryKv}leaseIncarnation=randomUUID3();leaseAcquiredAt=new Map;encodeLease(shardIndex,ready,acquiredAt=this.leaseAcquiredAt.get(shardIndex)){return new TextEncoder().encode(JSON.stringify({holder:this.card.id,incarnation:this.leaseIncarnation,acquiredAt,since:Date.now(),ready}))}ownsDeliveryLease(info){return info.holder===this.card.id&&info.incarnation!==void 0&&info.incarnation===this.leaseIncarnation}async acquireDeliveryLease(shardIndex){const acquiredAt=Date.now();const revision=await(await this.deliveryRegistry()).create(leaseKey(shardIndex),this.encodeLease(shardIndex,false,acquiredAt));this.leaseAcquiredAt.set(shardIndex,acquiredAt);return revision}async markDeliveryLeaseReady(shardIndex,revision){return(await this.deliveryRegistry()).update(leaseKey(shardIndex),this.encodeLease(shardIndex,true),revision)}async markDeliveryLeaseNotReady(shardIndex,revision){return(await this.deliveryRegistry()).update(leaseKey(shardIndex),this.encodeLease(shardIndex,false),revision)}async renewDeliveryLease(shardIndex,revision){return(await this.deliveryRegistry()).update(leaseKey(shardIndex),this.encodeLease(shardIndex,true),revision)}async releaseDeliveryLease(shardIndex,revision){if(revision===void 0)return;await(await this.deliveryRegistry()).delete(leaseKey(shardIndex),{previousSeq:revision})}async readDeliveryLease(shardIndex){return(await this.readDeliveryLeaseEntry(shardIndex))?.info}async watchDeliveryLease(shardIndex,onEvent){this.leaseWatchIntent={shardIndex,onEvent};await this.bindDeliveryLeaseWatch();return()=>{if(this.leaseWatchIntent?.onEvent!==onEvent)return;this.leaseWatchIntent=void 0;this.stopDeliveryLeaseWatch()}}stopDeliveryLeaseWatch(){if(this.leaseWatchIter)this.retireDeliveryLeaseWatch(this.leaseWatchIter);this.leaseWatchIter=void 0}retireDeliveryLeaseWatch(iter){try{iter.stop()}catch{}if(!this.nc||this.nc.isClosed())return;const deleting=this.deleteOwnConsumer(kvWatchConsumer(iter)).catch(e=>this.emitRecoverable(new Error(`a retired delivery lease watch consumer was not deleted (${e.message}); the broker reaps it at its inactive threshold`)));this.leaseWatchDeletes.add(deleting);void deleting.then(()=>this.leaseWatchDeletes.delete(deleting))}async settleDeliveryLeaseWatches(){await Promise.allSettled(this.leaseWatchBinds);await Promise.all(this.leaseWatchDeletes)}retireKvWatch(iter){try{iter.stop()}catch{}if(!this.nc||this.nc.isClosed())return;const deleting=this.deleteOwnConsumer(kvWatchConsumer(iter)).catch(e=>this.emitRecoverable(new Error(`a retired KV watch consumer was not deleted (${e.message}); the broker reaps it at its inactive threshold`)));this.kvWatchDeletes.add(deleting);void deleting.then(()=>this.kvWatchDeletes.delete(deleting))}async settleKvWatches(){await Promise.allSettled(this.kvWatchBinds);await Promise.all(this.kvWatchDeletes)}bindKvWatch(kv){if(this.stopped)return Promise.resolve(void 0);const epoch=this.presenceEpoch;const binding=(async()=>{const permission2=this.nc&&this.watchDeletePermissions.get(this.nc);const iter=await kv.watch();const info=await kvWatchConsumer(iter).info(true);this.recordOwnWatchConsumer(info);if(permission2)this.watchDeletePermissions.set(kvWatchConsumer(iter),permission2);if(epoch===this.presenceEpoch&&!this.stopped)return{iter,info};this.retireKvWatch(iter);return void 0})();const settled=()=>{this.kvWatchBinds.delete(binding)};this.kvWatchBinds.add(binding);void binding.then(settled,settled);return binding}bindDeliveryLeaseWatch(){const binding=this.bindDeliveryLeaseWatchOnce();const settled=()=>{this.leaseWatchBinds.delete(binding)};this.leaseWatchBinds.add(binding);void binding.then(settled,settled);return binding}async bindDeliveryLeaseWatchOnce(){const intent=this.leaseWatchIntent;const epoch=this.presenceEpoch;const iter=await(await this.deliveryRegistry()).watch({key:leaseKey(intent.shardIndex)});if(this.leaseWatchIntent!==intent||epoch!==this.presenceEpoch){this.retireDeliveryLeaseWatch(iter);return}this.leaseWatchIter=iter;void(async()=>{for await(const e of iter){if(this.leaseWatchIter!==iter)break;if(e.operation==="DEL"||e.operation==="PURGE"){intent.onEvent(void 0);continue}try{intent.onEvent(e.json())}catch{intent.onEvent(void 0)}}})().catch(e=>this.emit("error",e))}async deliveryLeaseHolder(shardIndex){try{return(await this.readDeliveryLeaseEntry(shardIndex))?.info.holder}catch{return void 0}}async readDeliveryLeaseEntry(shardIndex){const e=await(await this.deliveryRegistry()).get(leaseKey(shardIndex));if(!e||e.operation==="DEL"||e.operation==="PURGE")return void 0;try{return{info:e.json(),revision:e.revision}}catch(err3){throw new Error(`delivery lease row "${leaseKey(shardIndex)}" exists but does not parse as a lease record (${err3.message}) - it is unreadable, not absent`)}}async managerLeaseRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());if(this.managerLeaseKv)return this.managerLeaseKv;const kvm=new import_kv6.Kvm((0,import_jetstream14.jetstream)(this.nc,{timeout:MANAGER_LEASE_ATTEMPT_MS}));if(this.authed){this.managerLeaseKv=await kvm.open(managerBucket(this.space))}else{try{this.managerLeaseKv=await kvm.create(managerBucket(this.space),{ttl:MANAGER_LEASE_TTL_MS})}catch{this.managerLeaseKv=await kvm.open(managerBucket(this.space))}}return this.managerLeaseKv}async holdDaemonRenewalLease(instanceId){const kv=await this.managerLeaseRegistry();const held=this.daemonRenewalLeaseRevision;if(held!==void 0){try{this.daemonRenewalLeaseRevision=await kv.update(MANAGER_RENEWAL_LEASE_KEY,this.encodeDaemonRenewalLease(instanceId),held);return true}catch{this.daemonRenewalLeaseRevision=void 0}}try{this.daemonRenewalLeaseRevision=await kv.create(MANAGER_RENEWAL_LEASE_KEY,this.encodeDaemonRenewalLease(instanceId));return true}catch{return false}}async releaseDaemonRenewalLease(){const held=this.daemonRenewalLeaseRevision;this.daemonRenewalLeaseRevision=void 0;if(held===void 0)return;try{await(await this.managerLeaseRegistry()).delete(MANAGER_RENEWAL_LEASE_KEY,{previousSeq:held})}catch{}}encodeDaemonRenewalLease(instanceId){return new TextEncoder().encode(JSON.stringify({instanceId,since:Date.now()}))}async readDaemonRenewalLease(){const e=await(await this.managerLeaseRegistry()).get(MANAGER_RENEWAL_LEASE_KEY);if(!e||e.operation!=="PUT")return void 0;return JSON.parse(new TextDecoder().decode(e.value))}encodeManagerLease(info){return new TextEncoder().encode(JSON.stringify(info))}async acquireManagerLease(info){return(await this.managerLeaseRegistry()).create(managerLeaseKey(info.instanceId),this.encodeManagerLease({...info,since:Date.now()}))}async renewManagerLease(info,revision){return(await this.managerLeaseRegistry()).update(managerLeaseKey(info.instanceId),this.encodeManagerLease({...info,since:Date.now()}),revision)}async readOwnManagerLease(instanceId){const e=await(await this.managerLeaseRegistry()).get(managerLeaseKey(instanceId));if(!e||e.operation!=="PUT")return void 0;return{info:JSON.parse(new TextDecoder().decode(e.value)),revision:e.revision,created:e.created.getTime()}}async releaseManagerLease(instanceId,revision){const kv=await this.managerLeaseRegistry();if(revision===void 0)await kv.delete(managerLeaseKey(instanceId));else await kv.delete(managerLeaseKey(instanceId),{previousSeq:revision})}async readManagerLease(){if(!this.nc)return void 0;try{const jsm=this.jsm??(this.jsm=await(0,import_jetstream14.jetstreamManager)(this.nc));const stream=`KV_${managerBucket(this.space)}`;const prefix=`$KV.${managerBucket(this.space)}.${MANAGER_LEASE_KEY}.`;const info=await jsm.streams.info(stream,{subjects_filter:`${prefix}*`});let newest;for(const subject of Object.keys(info.state.subjects??{})){let m;try{m=await jsm.streams.getMessage(stream,{last_by_subj:subject})}catch(e){if(e.code===import_jetstream14.JetStreamApiCodes.NoMessageFound)continue;throw e}if(m===null)continue;const op=m.header?.get("KV-Operation");if(op==="DEL"||op==="PURGE"||m.data.length===0)continue;if(newest===void 0||m.seq>newest.seq)newest={data:m.data,seq:m.seq}}if(newest===void 0)return void 0;return JSON.parse(new TextDecoder().decode(newest.data))}catch(e){const code=e.code;if(code===10037)return void 0;if(code===404||/stream not found/i.test(e?.message??""))return void 0;throw e}}async ownerMemberships(owner2,lifecycleUid){const recs=await listMembers(await this.membersRegistry(),{owner:owner2});return recs.filter(r=>r.lifecycleUid===lifecycleUid&&r.leaveCursor===void 0).map(r=>({channel:r.channel,generation:r.generation,activated:r.activated===true}))}async deliveryClassFresh(channel){if(!this.channelKv)return effectiveDeliveryClass(void 0,void 0);const[cfg,defaults]=await Promise.all([isConcreteChannel(channel)?readChannelConfig(this.channelKv,channel):Promise.resolve(void 0),readChannelDefaults(this.channelKv)]);return effectiveDeliveryClass(cfg,defaults)}resolveOwnerByName(name){const matches=[...this.roster.values()].filter(p=>p.card.name.toLowerCase()===name.toLowerCase());return matches.length===1?matches[0].card.id:void 0}plane3MsgId(entry,keyPrefix){return entry.msg.id===""?{}:{msgID:`${entry.msg.id}:${keyPrefix}`}}async publishDinbox(principal,lifecycleUid,entry){if(!this.js)return;const p=parsePrincipalKey(principal);if(!p)throw new Error(`publishDinbox: "${principal}" is not a valid member principal <owner>.<actor>`);await this.js.publish(dinboxSubject(this.space,p.owner,p.actor,lifecycleUid),JSON.stringify(entry),{...this.plane3MsgId(entry,`${principal}:${lifecycleUid}:${entry.generation}`)})}async fanoutDeliveredSeq(){const info=await this.consumerInfo(chatStream(this.space),FANOUT_DURABLE);return info?.delivered?.stream_seq??0}async durableJoinFor(owner2,channel,lifecycleUid,opts={}){if(!this.js)throw new Error(this.notLiveMsg());await this.manager();const kv=await this.membersRegistry();const existing=await readMember(kv,channel,owner2,lifecycleUid);const open=existing?.record.state==="durable-active"&&existing.record.leaveCursor===void 0;if(open&&existing.record.activated)return{durable:true,generation:existing.record.generation};const joinCursor=open?existing.record.joinCursor:await this.chatFrontier();const generation=open?existing.record.generation:(existing?.record.generation??0)+1;const base={channel,owner:owner2,lifecycleUid,state:"durable-active",joinCursor,generation,activated:false,writerIdentity:this.card.id,updatedAt:Date.now()};if(!open){if(opts.aclFence&&!await this.aclAllows(owner2,lifecycleUid,channel))throw new Error(`durableJoin: "${channel}" is no longer within the read ACL of lifecycle ${lifecycleUid} (narrowed or retired); no membership row was written`);const written=await commitMemberRevision(kv,base);if(opts.aclFence)await this.keepRowIfAclAllows(kv,owner2,lifecycleUid,channel,written.revision)}const fence=Math.max(await this.chatFrontier(),await this.fanoutDeliveredSeq());const cu=await this.catchupCopy(owner2,lifecycleUid,channel,joinCursor,fence,generation);if(cu.evicted){try{await tombstoneMember(kv,channel,owner2,lifecycleUid,fence,this.card.id,generation)}catch(e){if(!(e instanceof StaleMembershipWrite))throw e}return{durable:false,reason:"activation catch-up window partially evicted by retention",generation}}const activated=await activateMember(kv,channel,owner2,lifecycleUid,generation,joinCursor);if(!activated)return{durable:false,reason:"activation superseded by a concurrent leave or rejoin",generation};return{durable:true,generation}}async aclAllows(owner2,lifecycleUid,channel){const row=await readAcl(await this.aclRegistry(),owner2,lifecycleUid);return row!==void 0&&channelInAllow(row.record.allowSubscribe,channel)}async keepRowIfAclAllows(kv,owner2,lifecycleUid,channel,revision){let disallowed=false;let why;try{if(await this.aclAllows(owner2,lifecycleUid,channel))return;disallowed=true;why="was narrowed or retired while the row was written"}catch(e){why=`could not be re-read after the row was written (${e.message})`}const fail2=(outcome,cause)=>new Error(`durableJoin: the read ACL of lifecycle ${lifecycleUid} ${why}; ${outcome}`,cause===void 0?void 0:{cause});try{if(disallowed)await deleteMember(kv,channel,owner2,lifecycleUid);else await kv.purge(memberKey(channel,owner2,lifecycleUid),{previousSeq:revision})}catch(e){if(!disallowed&&isCasLoss(e))throw fail2(`a later write replaced its "${channel}" row, which was left to that write`);throw fail2(`removing its "${channel}" row failed (${e.message})`,e)}throw fail2(`its "${channel}" row was removed`)}async durableLeaveFor(owner2,channel,lifecycleUid,expectedGeneration){if(!this.plane3)return;const kv=await this.membersRegistry();await tombstoneMember(kv,channel,owner2,lifecycleUid,await this.chatFrontier(),this.card.id,expectedGeneration)}async catchupCopy(owner2,lifecycleUid,channel,fromSeqExcl,toSeqIncl,generation){if(!this.js||!this.jsm||toSeqIncl<=fromSeqExcl)return{copied:0,evicted:false};const subject=chatSubject(this.space,"*","*",channel);const evicted=await this.channelDropped(subject,fromSeqExcl);const cuP=parsePrincipalKey(owner2);const name=`cu_${cuP?lifecycleNameKey(cuP.owner,cuP.actor,lifecycleUid):`${token(owner2)}-${lifecycleUid}`}_${generation}`;await this.deleteConsumerIfPresent(chatStream(this.space),name);await this.jsm.consumers.add(chatStream(this.space),{name,filter_subject:subject,ack_policy:import_jetstream14.AckPolicy.None,mem_storage:true,inactive_threshold:(0,import_transport_node13.nanos)(3e4),deliver_policy:import_jetstream14.DeliverPolicy.StartSequence,opt_start_seq:fromSeqExcl+1});let copied=0;try{const consumer=await this.js.consumers.get(chatStream(this.space),name);let pending=(await consumer.info()).num_pending;while(pending>0){const want=Math.min(pending,256);const iter=await consumer.fetch({max_messages:want,expires:5e3});let got=0;for await(const m of iter){got++;if(m.seq>toSeqIncl)return{copied,evicted};let msg;try{msg=m.json()}catch{continue}const parsed=parseSubject(m.subject);if(!isRecord(msg)||!parsed||msg.from?.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner)||msg.from.id===owner2)continue;await this.publishDinbox(owner2,lifecycleUid,{msg,channel,seq:m.seq,reason:"durable-channel",generation});copied++}if(got<want)break;pending-=got}}finally{await this.deleteConsumerIfPresent(chatStream(this.space),name)}return{copied,evicted}}async startPlane3(aclFor,opts={}){if(!this.js)throw new Error(this.notLiveMsg());this.plane3={aclFor,reloadMembershipCreds:opts.reloadMembershipCreds,evictPrincipal:opts.evictPrincipal,evictPrincipals:opts.evictPrincipals,planeConnLiveness:opts.planeConnLiveness,principalLiveness:opts.principalLiveness,reloadStoreIdentity:opts.reloadStoreIdentity,onDeliveryCredsAdopted:opts.onDeliveryCredsAdopted,startupComplete:opts.startupComplete};await this.armPlane3()}plane3MayAct(){return!this.plane3Quiesced}async handleDeliveryControl(req){if(!this.plane3MayAct())return{ok:false,error:"delivery: this daemon is not serving this shard (it is re-checking ownership); retry"};const caller=req.from.id;const args=req.args??{};if(req.op==="durableJoin")return this.deliveryJoin(caller,args);if(req.op==="durableLeave")return this.deliveryLeave(caller,args);if(req.op==="readHistory")return this.deliveryReadHistory(caller,args);if(req.op==="listMemberships"){if(typeof args.lifecycleUid!=="string")return{ok:false,error:"listMemberships: the caller's lifecycleUid is required (membership rows are lifecycle-keyed, SPEC 13.1)"};let uid2;try{uid2=assertLifecycleToken(args.lifecycleUid)}catch(e){return{ok:false,error:e.message}}const memberships=await this.ownerMemberships(caller,uid2);if(!this.plane3MayAct())return{ok:false,error:"delivery: this daemon stopped serving this shard while the request was in flight; retry"};return{ok:true,data:{memberships}}}return{ok:false,error:`op "${req.op}" not supported on the delivery control service`}}checkDurableChannelArg(args,op){const channel=typeof args.channel==="string"?args.channel.trim():"";if(!channel)return{ok:false,error:`${op}: channel must be a non-blank string`};try{assertValidChannel(channel)}catch(e){return{ok:false,error:e.message}}if(!isConcreteChannel(channel))return{ok:false,error:`${op}: "${channel}" must be a concrete channel (durable membership is per-concrete-channel, not wildcard)`};return channel}async deliveryJoin(caller,args){const channel=this.checkDurableChannelArg(args,"durableJoin");if(typeof channel!=="string")return channel;let acl;try{acl=await this.aclForAlias(caller)}catch(e){return{ok:false,error:e.message}}if(acl===void 0)return{ok:false,error:`durableJoin: no read ACL on record for ${caller} (not provisioned for durable delivery)`};if(!channelInAllow(acl.allowSubscribe,channel))return{ok:false,error:`channel "${channel}" is not within your read ACL [${acl.allowSubscribe.join(", ")}]`};const uid2=acl.lifecycleUid;try{return{ok:true,data:await this.membershipWrite(caller,uid2,()=>this.durableJoinFor(caller,channel,uid2,{aclFence:true}))}}catch(e){return{ok:false,error:e.message}}}async lifecycleAclUnfenced(principal,lifecycleUid){try{const row=await readAcl(await this.aclRegistry(),principal,lifecycleUid);return row!==void 0&&row.record.allowSubscribe.length>0}catch{return true}}async membershipWrite(principal,lifecycleUid,write){if(this.retiringLifecycles.get(principal)?.has(lifecycleUid))throw new Error(`lifecycle ${lifecycleUid} of ${principal} is retiring: its membership inventory was requested, so its durable memberships no longer change`);const key=`${principal}/${lifecycleUid}`;const running=write();let writes=this.membershipWrites.get(key);if(writes===void 0)this.membershipWrites.set(key,writes=new Set);writes.add(running);try{return await running}finally{writes.delete(running);if(writes.size===0)this.membershipWrites.delete(key)}}async deliveryLeave(caller,args){const channel=this.checkDurableChannelArg(args,"durableLeave");if(typeof channel!=="string")return channel;if(typeof args.generation!=="number"||!Number.isFinite(args.generation))return{ok:false,error:"durableLeave: a finite generation is required (fail-closed stale-leave guard)"};if(typeof args.lifecycleUid!=="string")return{ok:false,error:"durableLeave: the leaving incarnation's lifecycleUid is required (membership rows are lifecycle-keyed, SPEC 13.1)"};let uid2;try{uid2=assertLifecycleToken(args.lifecycleUid)}catch(e){return{ok:false,error:e.message}}const existing=await readMember(await this.membersRegistry(),channel,caller,uid2);if(!existing)return{ok:true,data:{channel,alreadyLeft:true}};const generation=args.generation;try{await this.membershipWrite(caller,uid2,()=>this.durableLeaveFor(caller,channel,uid2,generation))}catch(e){return{ok:false,error:e.message}}return{ok:true,data:{channel}}}async deliveryReadHistory(caller,args){const channel=this.checkDurableChannelArg(args,"readHistory");if(typeof channel!=="string")return channel;const asked=args.limit===void 0?READ_HISTORY_DEFAULT_LIMIT:args.limit;if(typeof asked!=="number"||!Number.isInteger(asked)||asked<1)return{ok:false,error:`readHistory: limit must be a positive integer (got ${JSON.stringify(args.limit)})`};const limit=Math.min(asked,READ_HISTORY_MAX_LIMIT);let acl;try{acl=await this.aclForAlias(caller)}catch(e){return{ok:false,error:e.message}}if(acl===void 0)return{ok:false,error:`readHistory: no read ACL on record for ${caller} - not permitted`};const inLive=channelInAllow(acl.allowSubscribe,channel);const inIssued=channelInAllow(acl.issuedAllowSubscribe,channel);if(!inLive||!inIssued){return{ok:false,error:`readHistory: channel "${channel}" is not within your read ACL [${acl.allowSubscribe.join(", ")}] - refused`}}let page;try{page=await this.channelHistory(channel,{limit:limit+1})}catch(e){return{ok:false,error:`readHistory: ${e.message}`}}const reachedStart=page.length<=limit;const wanted=reachedStart?page:page.slice(-limit);const fitted=fitHistoryPage(wanted,this.maxPayload);if(wanted.length>0&&fitted.length===0)return{ok:false,error:`readHistory: the newest message on "${channel}" alone exceeds the broker payload budget (${this.maxPayload} bytes) - refused loudly rather than served as an empty page`};return{ok:true,data:{items:fitted,complete:reachedStart&&fitted.length===wanted.length}}}async quiescePlane3(){this.plane3Quiesced=true;if(this.deliveryServeSub){try{this.deliveryServeSub.unsubscribe()}catch{}this.deliveryServeSub=void 0}if(this.deliveryAdminServeSub){try{this.deliveryAdminServeSub.unsubscribe()}catch{}this.deliveryAdminServeSub=void 0}for(const msgs of this.streamMsgs.splice(0)){try{msgs.stop()}catch{}}}plane3IsQuiesced(){return this.plane3Quiesced}async rearmPlane3(){if(!this.plane3Quiesced)return;this.plane3Quiesced=false;try{await this.armPlane3()}catch(e){this.plane3Quiesced=true;this.quiescePlane3();throw e}}async armPlane3(){if(!this.plane3||!this.js)return;if(this.plane3Quiesced)return;await this.manager();this.armDeliveryControl();await this.runFanout();await this.runReader()}armDeliveryControl(){if(this.deliveryServeSub){try{this.deliveryServeSub.unsubscribe()}catch{}const i=this.subs.indexOf(this.deliveryServeSub);if(i>=0)this.subs.splice(i,1)}this.deliveryServeSub=this.serveControl(CONTROL_DELIVERY,req=>this.handleDeliveryControl(req),{boundReply:true});if(this.deliveryAdminServeSub){try{this.deliveryAdminServeSub.unsubscribe()}catch{}const i=this.subs.indexOf(this.deliveryAdminServeSub);if(i>=0)this.subs.splice(i,1)}this.deliveryAdminServeSub=this.serveControl(CONTROL_DELIVERY_ADMIN,req=>this.handleDeliveryAdmin(req),{boundReply:true,concurrent:req=>req.op==="lifecycleMemberships"})}serveLiveness(plane,readState){if(!this.nc)throw new Error(this.notLiveMsg());const held=this.livenessResponders.get(plane);if(held)held.readState=readState;else this.livenessResponders.set(plane,{readState});this.bindLiveness(plane)}bindLiveness(plane){const held=this.livenessResponders.get(plane);if(!held||!this.nc)return;if(held.sub){try{held.sub.unsubscribe()}catch{}const i=this.subs.indexOf(held.sub);if(i>=0)this.subs.splice(i,1)}const{readState}=held;const sub=this.nc.subscribe(livenessServeFilter(this.space,plane),{queue:`live.${plane}`});held.sub=sub;this.subs.push(sub);const instance=randomUUID3();void(async()=>{for await(const m of sub){if(!m.reply||!m.reply.startsWith(`${m.subject}.reply.`)){this.emitRecoverable(new Error(`rejected liveness probe on ${m.subject}: reply target "${m.reply??"(none)"}" is not under the sender's own reply subtree`));continue}let responder;try{responder=await readState()}catch{responder="unknown"}const answer={plane,responder,instance};try{m.respond(JSON.stringify(answer))}catch{}}})().catch(e=>this.emit("error",e))}serveDeliveryLiveness(shardIndex=0){this.serveLiveness("delivery",async()=>responderFromLease(await this.readDeliveryLease(shardIndex),this.card.id))}async probeLiveness(plane,timeoutMs=2e3){if(!isLivenessPlane(plane))throw new Error(`liveness: "${plane}" is not a plane this surface answers for (${[...LIVENESS_PLANES].join(", ")})`);if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=livenessSubject(this.space,plane,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;let outcome;let answered;let instance;try{const m=await this.nc.request(reqSubject,"",{timeout:timeoutMs,noMux:true,reply});let body;try{body=m.json()}catch{body=void 0}const parsed=parseLivenessAnswer(body,plane);outcome=parsed?"replied":"malformed";answered=parsed?.responder;instance=parsed?.instance}catch(e){outcome=this.isNoResponders(e)?"noResponders":this.probeFailureOutcome(e)}const verdict={plane,responder:responderFromProbe(outcome,answered)};return instance===void 0?verdict:{...verdict,instance}}probeFailureOutcome(e){if(e instanceof import_transport_node13.AuthorizationError||e instanceof import_transport_node13.PermissionViolationError)return"refused";if(e instanceof import_transport_node13.TimeoutError)return"timeout";return"refused"}async handleDeliveryAdmin(req){await this.residentSwap;if(!this.plane3MayAct())return{ok:false,error:"delivery: this daemon is not serving this shard (it is re-checking ownership); retry"};if(req.op==="reloadCreds"){if(this.plane3?.startupComplete?.()===false)return{ok:false,error:"delivery: this daemon has not finished starting; nothing adopted - the next renewal pass or the daemon's 75% re-read adopts the re-signed creds"};const expected=req.args?.expected??{};const[delivery,membership]=await Promise.all([this.reloadCreds(expected.delivery).then(brokerAccepted=>({ok:true,brokerAccepted,residentSwap:"scheduled"}),e=>({ok:false,error:e.message})),this.plane3?.reloadMembershipCreds?this.plane3.reloadMembershipCreds(expected.membership).then(result=>({ok:true,...result}),e=>({ok:false,error:e.message})):Promise.resolve({ok:true,skipped:"no-membership-hook"})]);const failures=[delivery.ok?void 0:`delivery: ${delivery.error}`,membership.ok?void 0:`membership: ${membership.error}`].filter(m=>m!==void 0);if(delivery.ok){this.plane3?.onDeliveryCredsAdopted?.();this.scheduleResidentSwap()}return failures.length?{ok:false,error:failures.join("; "),data:{delivery,membership}}:{ok:true,data:{delivery,membership}}}if(req.op==="evictPrincipal"){if(!this.plane3?.evictPrincipal)return{ok:false,error:"evictPrincipal: no eviction executor wired on this daemon"};const principal=typeof req.args?.principal==="string"?req.args.principal.trim():"";if(!principal)return{ok:false,error:"evictPrincipal: a principal (owner.actor dot-form) is required"};try{return{ok:true,data:await this.plane3.evictPrincipal(principal)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="evictPrincipals"){if(!this.plane3?.evictPrincipals)return{ok:false,error:"evictPrincipals: no batch eviction executor wired on this daemon"};const raw=req.args?.principals;const principals=Array.isArray(raw)?raw.map(p=>typeof p==="string"?p.trim():""):[];if(principals.length===0||principals.some(p=>!p))return{ok:false,error:"evictPrincipals: principals must be a non-empty array of owner.actor dot-form principals"};if(principals.length>EVICT_PRINCIPALS_MAX||new Set(principals).size!==principals.length)return{ok:false,error:`evictPrincipals: principals must be distinct and at most ${EVICT_PRINCIPALS_MAX}`};try{return{ok:true,data:await this.plane3.evictPrincipals(principals)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="planeConnLiveness"){if(!this.plane3?.planeConnLiveness)return{ok:false,error:"planeConnLiveness: no plane-liveness oracle wired on this daemon"};try{return{ok:true,data:await this.plane3.planeConnLiveness(req.args?.query)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="lifecycleMemberships"){const principal=typeof req.args?.principal==="string"?req.args.principal.trim():"";const uid2=typeof req.args?.lifecycleUid==="string"?req.args.lifecycleUid:"";if(!parsePrincipalKey(principal))return{ok:false,error:"lifecycleMemberships: a principal (owner.actor dot-form) is required"};try{assertLifecycleToken(uid2)}catch(e){return{ok:false,error:`lifecycleMemberships: ${e.message}`}}let marked=this.retiringLifecycles.get(principal);if(marked===void 0)this.retiringLifecycles.set(principal,marked=new Set);for(const earlier of[...marked])if(earlier!==uid2&&await aclRetired(await this.aclRegistry(),principal,earlier).catch(()=>false))marked.delete(earlier);if(await this.lifecycleAclUnfenced(principal,uid2))marked.add(uid2);else if(marked.size===0)this.retiringLifecycles.delete(principal);await Promise.allSettled(this.membershipWrites.get(`${principal}/${uid2}`)??[]);try{const channels=await listLifecycleMemberChannels(await this.membersRegistry(),principal,uid2);return{ok:true,data:{complete:true,channels}}}catch(e){return{ok:false,error:`lifecycleMemberships: the inventory read did not complete (${e.message})`}}}if(req.op==="principalLiveness"){if(!this.plane3?.principalLiveness)return{ok:false,error:"principalLiveness: no liveness oracle wired on this daemon"};const principal=typeof req.args?.principal==="string"?req.args.principal.trim():"";if(!principal)return{ok:false,error:"principalLiveness: a principal (owner.actor dot-form) is required"};try{return{ok:true,data:await this.plane3.principalLiveness(principal)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="reloadStoreIdentity"){if(!this.plane3?.reloadStoreIdentity)return{ok:false,error:"reloadStoreIdentity: this daemon did not name the SecretStore it reloads from"};try{const identity=this.plane3.reloadStoreIdentity();let holdsDeliveryLease=false;try{const own=await this.readDeliveryLeaseEntry(0);holdsDeliveryLease=own!==void 0&&this.ownsDeliveryLease(own.info)}catch{holdsDeliveryLease=false}return{ok:true,data:{identity:parseSecretStoreIdentity(identity),responder:this.card.id,holdsDeliveryLease}}}catch(e){return{ok:false,error:e.message}}}return{ok:false,error:`op "${req.op}" not supported on the delivery admin service`}}async addPlane3Durable(stream,config2){try{await this.jsm.consumers.add(stream,config2)}catch(e){if(!isConsumerAlreadyExists(e)||!isRestoredConsumer(this.space,stream,await this.jsm.consumers.info(stream,config2.durable_name),config2))throw e}}async runFanout(){if(!this.js||!this.jsm)return;await this.addPlane3Durable(chatStream(this.space),fanoutDurableConfig(this.space,{ackWaitMs:this.ackWaitMs}));const consumer=await this.js.consumers.get(chatStream(this.space),FANOUT_DURABLE);const msgs=await consumer.consume();this.streamMsgs.push(msgs);void(async()=>{for await(const m of msgs){try{await this.fanOutMessage(m)}catch(e){if(!this.stopped)this.emit("error",e);try{m.nak()}catch{}}}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}async fanOutMessage(m){if(!this.plane3MayAct())return;const parsed=parseSubject(m.subject);if(!parsed||parsed.kind!=="chat"){m.ack();return}const channel=parsed.rest;let msg;try{msg=m.json()}catch{m.ack();return}if(!isRecord(msg)||!msg.from||msg.from.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner)){m.ack();return}const seq=m.seq;const normalizedMsg=authenticatedChannelMessage(msg,channel);if(!this.plane3MayAct())return;if(await this.deliveryClassFresh(channel)==="durable"){for(const rec of await listMembers(await this.membersRegistry(),{channel})){if(rec.owner===msg.from.id)continue;if(!durableEligible(rec,seq))continue;if(!this.plane3MayAct())return;await this.publishDinbox(rec.owner,rec.lifecycleUid,{msg:normalizedMsg,channel,seq,reason:"durable-channel",generation:rec.generation})}}else{for(const name of msg.mentions??[]){const owner2=this.resolveOwnerByName(name);if(!owner2||owner2===msg.from.id)continue;let row;try{row=await this.aclForAlias(owner2)}catch(e){this.emit("error",e);continue}if(!row||!channelInAllow(row.allowSubscribe,channel))continue;if(!this.plane3MayAct())return;await this.publishDinbox(owner2,row.lifecycleUid,{msg:normalizedMsg,channel,seq,reason:"live-mention",generation:0})}}if(!this.plane3MayAct())return;m.ack()}async runReader(){if(!this.js||!this.jsm)return;await this.addPlane3Durable(inboxStream(this.space),inboxReaderConfig(this.space,{ackWaitMs:this.ackWaitMs}));const consumer=await this.js.consumers.get(inboxStream(this.space),INBOX_READER_DURABLE);const msgs=await consumer.consume();this.streamMsgs.push(msgs);void(async()=>{for await(const m of msgs){try{await this.readerHandle(m)}catch(e){if(!this.stopped)this.emit("error",e);try{m.nak()}catch{}}}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}async removeRetiredMemberRow(channel,owner2,lifecycleUid){try{const kv=await this.membersRegistry();if(await readMember(kv,channel,owner2,lifecycleUid)===void 0)return;await deleteMember(kv,channel,owner2,lifecycleUid)}catch(e){this.emit("warning",new Error(`plane-3 reader: could not remove retired lifecycle ${owner2}.${lifecycleUid}'s "${channel}" member row: ${e.message}`))}}async readerHandle(m){if(!this.plane3MayAct())return;const pr=parseDinboxPrincipal(m.subject);if(!pr){m.ack();return}const owner2=`${pr.owner}.${pr.actor}`;let entry;try{entry=m.json()}catch{m.ack();return}if(!isRecord(entry)){m.ack();return}const redeliveries=m.info?.deliveryCount??1;const acl=await this.plane3?.aclFor(owner2,pr.lifecycleUid);if(acl===void 0){if(await aclRetired(await this.aclRegistry(),owner2,pr.lifecycleUid)){if(!this.plane3MayAct())return;let failure;try{await this.jsm.streams.deleteMessage(inboxStream(this.space),m.seq,false)}catch(e){if(!isJetStreamMissing(e,10043))failure=e instanceof Error?e:new Error(String(e))}if(!this.plane3MayAct())return;if(failure){if(redeliveries>=READER_MAX_REDELIVERIES){m.term();this.emit("error",new Error(`plane-3 reader: gave up removing entry ${m.seq} for retired lifecycle ${owner2}.${pr.lifecycleUid} after ${redeliveries} redeliveries: ${failure.message}`));return}m.nak(2e3);return}if(entry.reason==="durable-channel")await this.removeRetiredMemberRow(entry.channel,owner2,pr.lifecycleUid);if(!this.plane3MayAct())return;m.ack();return}if(redeliveries>=READER_MAX_REDELIVERIES){m.term();this.emit("error",new Error(`plane-3 reader: gave up on entry for unknown owner ${owner2} after ${redeliveries} redeliveries`));return}m.nak(2e3);return}if(!channelInAllow(acl,entry.channel)){m.ack();return}if(entry.reason==="durable-channel"){const rec=await readMember(await this.membersRegistry(),entry.channel,owner2,pr.lifecycleUid);if(!rec||!durableEligible(rec.record,entry.seq)){m.ack();return}}if(!this.plane3MayAct())return;try{const frame={version:1,channel:entry.channel,msg:authenticatedChannelMessage(entry.msg,entry.channel)};const frameHeaders=(0,import_transport_node13.headers)();frameHeaders.set(PLANE3_FRAME_HEADER,"1");await this.js.publish(dlvSubject(this.space,pr.owner,pr.actor,pr.lifecycleUid),JSON.stringify(frame),{...this.plane3MsgId(entry,`${owner2}:${pr.lifecycleUid}:${entry.generation}`),headers:frameHeaders})}catch{if(redeliveries>=READER_MAX_REDELIVERIES){m.term();this.emit("error",new Error(`plane-3 reader: gave up transferring ${entry.msg.id} for ${owner2} after ${redeliveries} redeliveries`));return}m.nak(2e3);return}if(!this.plane3MayAct())return;m.ack()}async pumpDlv(){if(!this.js)return;if(!this.ownLifecycleUid)return;const durable=dlvDurable(this.owner,this.actor,this.ownLifecycleUid);let consumer;try{consumer=await this.js.consumers.get(dlvStream(this.space),durable)}catch(e){if(isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))return;throw e}const lease=await this.readDeliveryLease(0);const liveDeliveryPlane=lease?.ready===true;if(!liveDeliveryPlane)this.emit("warning",new Error(`delivery durable "${durable}" for space "${this.space}" bound while the plane this connection reaches has no ready delivery lease, so the durable delivers nothing until a delivery daemon serves this plane. If a daemon serves this space on another plane, reconnect against it, which re-binds the durable there.`));const ackWaitMs=await ackWaitOf(consumer);const msgs=await consumer.consume();this.streamMsgs.push(msgs);void(async()=>{for await(const m of msgs){if(m.headers?.get(PLANE3_FRAME_HEADER)!=="1"){this.emit("error",new Error("plane-3 delivery: unauthenticated or unversioned DLV entry terminated"));try{m.term()}catch{}continue}let raw;try{raw=m.json()}catch(e){this.emit("error",e);try{m.term()}catch{}continue}if(!isPlane3DeliveryFrame(raw)){this.emit("error",new Error("plane-3 delivery: malformed versioned DLV entry terminated"));try{m.term()}catch{}continue}const msg=authenticatedChannelMessage(raw.msg,raw.channel);if(msg.from?.id===this.card.id){m.ack();continue}this.emit("message",msg,durableDelivery(m,ackWaitMs),{historical:false,kind:"channel"})}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}async durableJoinChannel(channel){const reply=await this.requestDelivery("durableJoin",{channel},3e4);if(!reply.ok)throw new Error(reply.error??"durable join rejected");return reply.data??{durable:false}}async durableLeaveChannel(channel,generation){const lifecycleUid=this.requireLifecycleUid("leaving a durable channel");const reply=await this.requestDelivery("durableLeave",{channel,generation,lifecycleUid});if(!reply.ok)throw new Error(reply.error??"durable leave rejected")}async closeRefusedMembership(channel,generation){this.pendingDurableLeave.set(channel,generation);for(let attempt=0;;attempt++){if(this.stopped)return;try{await this.durableLeaveChannel(channel,generation);this.plane3Channels.delete(channel);this.pendingDurableLeave.delete(channel);return}catch(e){if(attempt===0)this.emitRecoverable(new Error(`channel "${channel}": Plane-3 durable membership (generation ${generation}) not yet tombstoned after a refused live sub - retrying; \xA77 boundary may be open until it succeeds (${e.message})`));await new Promise(r=>setTimeout(r,Math.min(3e4,1e3*2**attempt)))}}}pendingDurableLeaves(){return[...this.pendingDurableLeave.keys()]}isNoResponders(e){return e instanceof import_transport_node13.NoRespondersError||e instanceof import_transport_node13.RequestError&&e.isNoResponders()}async fetchMemberships(){let reply;try{reply=await this.requestDelivery("listMemberships",{lifecycleUid:this.requireLifecycleUid("listing durable memberships")},5e3)}catch(e){if(this.isNoResponders(e))return void 0;throw e}if(!reply.ok)throw new Error(reply.error??"listMemberships failed");return reply.data?.memberships??[]}async armBootDurableMemberships(){for(const channel of this.channels){if(!isConcreteChannel(channel)||this.plane3Channels.has(channel))continue;const cls=await this.deliveryClassFresh(channel);if(cls!=="durable")continue;try{const r=await this.durableJoinChannel(channel);if(r.durable)this.plane3Channels.set(channel,r.generation??0);else void this.reconcileBootJoin(channel)}catch(e){if(!this.isNoResponders(e))this.emitRecoverable(e);void this.reconcileBootJoin(channel)}}}async reconcileBootJoin(channel){if(this.pendingBootJoins.has(channel))return;this.pendingBootJoins.add(channel);for(let attempt=0;;attempt++){await new Promise(r=>setTimeout(r,Math.min(3e4,1e3*2**attempt)));if(this.stopped||!this.channels.includes(channel)||this.plane3Channels.has(channel)){this.pendingBootJoins.delete(channel);return}try{const r=await this.durableJoinChannel(channel);if(r.durable){this.plane3Channels.set(channel,r.generation??0);this.pendingBootJoins.delete(channel);return}}catch(e){if(attempt===0&&!this.isNoResponders(e))this.emitRecoverable(new Error(`channel "${channel}": boot durable self-join not yet established - retrying until the delivery daemon is reachable (${e.message})`))}}}hasDurableMembership(channel){return this.plane3Channels.has(channel)}async manager(){if(!this.nc)throw new Error(this.notLiveMsg());this.jsm??=await(0,import_jetstream14.jetstreamManager)(this.nc);return this.jsm}async startConsumers(){if(!this.jsm)throw new Error(this.notLiveMsg());const ownUid=this.requireLifecycleUid("consuming the DM inbox");if(!this.authed){await this.ensureDmDurable(this.owner,this.actor,ownUid,{ackWaitMs:this.ackWaitMs,inactiveThresholdMs:this.inactiveThresholdMs})}await this.pump(dmStream(this.space),dmDurable(this.owner,this.actor,ownUid),{inbox:true});await this.pumpDlv();if(this.channels.length){const armed2=this.firstConnect?await this.armJoin(this.channels):void 0;for(const ch of this.channels)this.subscribeChat(ch);await this.confirmChatSub();if(armed2)await this.backfillArmed(armed2,this.backfillFloor)}if(this.firstConnect&&this.authed&&this.channels.length)await this.armBootDurableMemberships();this.firstConnect=false;if(this.card.role){if(!this.authed){await this.jsm.consumers.add(taskStream(this.space),taskDurableConfig(this.space,this.card.role,{ackWaitMs:this.ackWaitMs}))}await this.pump(taskStream(this.space),taskDurable(this.card.role))}}async pump(stream,durable,opts={}){if(!this.js)throw new Error(this.notLiveMsg());const consumer=await this.js.consumers.get(stream,durable);const ackWaitMs=await ackWaitOf(consumer);const msgs=await consumer.consume();this.streamMsgs.push(msgs);if(opts.inbox)this.watchInbox(msgs,stream,durable);void(async()=>{for await(const m of msgs){const authed=this.authenticateStreamMsg(m);if(!authed)continue;const{msg,parsed}=authed;this.emit("message",authenticatedMessage(msg,parsed),durableDelivery(m,ackWaitMs),{historical:false,kind:kindFromParsed(parsed.kind)})}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}watchInbox(msgs,stream,durable){const boundNc=this.nc;void(async()=>{let absences=0;let deleted=false;for await(const s of msgs.status()){if(this.stopped||this.nc!==boundNc)break;if(s.type==="next"){absences=0;deleted=false;continue}if(s.type==="consumer_deleted"){if(deleted)continue;deleted=true}else if(s.type!=="consumer_not_found"&&s.type!=="stream_not_found")continue;if(++absences===2)this.emitRecoverable(new Error(`DM inbox missing: the broker reports consumer "${durable}" on stream "${stream}" missing, so direct messages to this endpoint are not delivered. The endpoint keeps checking; if the inbox does not come back, end this session and start a new one`))}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}authenticateStreamMsg(m){let msg;try{msg=m.json()}catch(e){m.term();this.emit("error",e);return void 0}if(!isRecord(msg)||!isUsableMessageId(msg.id)){m.term();this.emit("error",new Error(`dropped message on ${m.subject}: absent or non-string id`));return void 0}const parsed=parseSubject(m.subject);if(!parsed||!msg.from||msg.from.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner)){m.term();this.emit("error",new Error(`dropped message on ${m.subject}: payload from ${msg.from?.id??"(none)"} does not match subject sender ${parsed?.sender??"(unparseable)"}`));return void 0}return{msg,parsed}}async bindDmOnly(mode){if(!this.js)throw new Error(this.notLiveMsg());const stream=dmStream(this.space);const durable=dmDurable(this.owner,this.actor,this.requireLifecycleUid("consuming the DM inbox"));let consumer;try{consumer=await this.js.consumers.get(stream,durable)}catch(e){if(isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))throw new DmDurableMissingError(stream,durable);throw new DmBindRefusedError(stream,durable,e)}const ackWaitMs=await ackWaitOf(consumer);if(this.dmOnlyInFlight){const settleMs=mode.settleTimeoutMs??3e4;await withDeadline(this.dmOnlyInFlight,settleMs,()=>new Error(`DM-only rebind waited ${settleMs}ms for the previous handler to settle; not reading the next DM yet`))}const msgs=await consumer.consume({max_messages:1});this.streamMsgs.push(msgs);const boundNc=this.nc;const retired=()=>this.stopped||this.nc!==boundNc||!boundNc||boundNc.isClosed();void(async()=>{for await(const m of msgs){if(retired())break;const authed=this.authenticateStreamMsg(m);if(!authed)continue;if(authed.parsed.kind!=="inst"){m.term();continue}const run=Promise.resolve().then(()=>mode.handler(authenticatedMessage(authed.msg,authed.parsed),dmOnlyDelivery(m,ackWaitMs,boundNc),{historical:false,kind:"dm"}));const flight=run.then(()=>{},()=>{});this.dmOnlyInFlight=flight;try{await run}catch(e){this.emit("error",e instanceof Error?e:new Error(String(e)))}finally{if(this.dmOnlyInFlight===flight)this.dmOnlyInFlight=void 0}}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}subscribeChat(channel){if(!this.nc||this.chatSubs.has(channel))return;this.chatSubDenied.delete(channel);const subject=chatSubject(this.space,"*","*",channel);const sub=this.nc.subscribe(subject,{callback:(err3,m)=>{if(err3){if(err3 instanceof import_transport_node13.PermissionViolationError)this.chatSubRefusals.add(err3);this.chatSubDenied.add(channel);this.chatSubs.delete(channel);const i=this.channels.indexOf(channel);if(i>=0){this.channels.splice(i,1);const gen=this.plane3Channels.get(channel);if(gen!==void 0)void this.closeRefusedMembership(channel,gen);this.emit("error",new Error(`left channel "${channel}": its live subscription was refused by the broker`,{cause:err3}))}return}const parsed=parseSubject(m.subject);if(!parsed||parsed.kind!=="chat")return;let msg;try{msg=m.json()}catch(e){this.emit("error",e);return}if(!isRecord(msg)||!isUsableMessageId(msg.id))return;if(!msg.from||msg.from.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner))return;if(msg.from.id===this.card.id)return;const delivery={ack:()=>{},nak:()=>{},durable:false};this.emit("message",authenticatedMessage(msg,parsed),delivery,{historical:false,kind:kindFromParsed(parsed.kind)})}});this.chatSubs.set(channel,sub)}unsubscribeChat(channel){const sub=this.chatSubs.get(channel);if(sub){try{sub.unsubscribe()}catch{}this.chatSubs.delete(channel)}this.chatSubDenied.delete(channel)}async confirmChatSub(){if(!this.nc)throw new Error("connection not established");await this.nc.flush();await new Promise(r=>setTimeout(r,50))}async consumerInfo(stream,durable){if(!this.jsm)throw new Error(this.notLiveMsg());try{return await this.jsm.consumers.info(stream,durable)}catch(e){if(isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))return null;throw e}}async deleteConsumerIfPresent(stream,durable){if(!this.jsm)throw new Error(this.notLiveMsg());try{await this.jsm.consumers.delete(stream,durable)}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e}}async chatFrontier(){const jsm=await this.manager();return(await jsm.streams.info(chatStream(this.space))).state.last_seq}async storedBytes(){return(await(await this.manager()).getAccountInfo()).storage}async armJoin(channels){const frontiers=new Map;for(const ch of channels){frontiers.set(ch,await this.chatFrontier())}return frontiers}async backfillArmed(frontiers,floorSeq){let total=0;for(const[ch,frontier]of frontiers){const policy=await this.joinPolicyFresh(ch);if(policy.replay)total+=await this.backfillChannel(ch,frontier,policy.windowMs,floorSeq)}return total}async joinPolicyFresh(channel){if(!this.channelKv)return{replay:effectiveReplay(void 0,void 0)};const[cfg,defaults]=await Promise.all([isConcreteChannel(channel)?readChannelConfig(this.channelKv,channel):Promise.resolve(void 0),readChannelDefaults(this.channelKv)]);return{replay:effectiveReplay(cfg,defaults),windowMs:effectiveReplayWindowMs(cfg,defaults)}}async collectHistory(subject,start,opts={}){const run=this.histLock.then(()=>this.collectHistoryInner(subject,start,opts));this.histLock=run.catch(()=>{});return run}async collectHistoryInner(subject,start,opts={}){if(!this.jsm||!this.js)throw new Error(this.notLiveMsg());const stream=chatStream(this.space);const name=chatHistDurable(this.owner,this.actor,this.requireLifecycleUid("chat history reads"));const out=[];await this.deleteConsumerIfPresent(stream,name);await this.jsm.consumers.add(stream,{name,filter_subject:subject,ack_policy:import_jetstream14.AckPolicy.None,mem_storage:true,inactive_threshold:(0,import_transport_node13.nanos)(3e4),..."time"in start?{deliver_policy:import_jetstream14.DeliverPolicy.StartTime,opt_start_time:start.time.toISOString()}:{deliver_policy:import_jetstream14.DeliverPolicy.StartSequence,opt_start_seq:start.seq}});try{const consumer=await this.js.consumers.get(stream,name);let pending=(await consumer.info()).num_pending;while(pending>0){const want=Math.min(pending,256);const iter=await consumer.fetch({max_messages:want,expires:5e3});let got=0;for await(const m of iter){got++;if(opts.untilSeq!==void 0&&m.seq>opts.untilSeq)return out;if(!subjectMatches(subject,m.subject))continue;out.push(m);if(opts.limit!==void 0&&out.length>=opts.limit)return out}if(got<want)break;pending-=got}}finally{await this.deleteConsumerIfPresent(stream,name)}return out}async backfillChannel(channel,upToSeq,sinceMs,floorSeq){if(floorSeq!==void 0&&floorSeq>=upToSeq)return 0;const subject=chatSubject(this.space,"*","*",channel);const start=floorSeq!==void 0?{seq:floorSeq+1}:sinceMs===void 0?{seq:1}:{time:new Date(Date.now()-sinceMs)};let msgs;try{msgs=await this.collectHistory(subject,start,{untilSeq:upToSeq})}catch(e){this.emit("error",e);if(isPermissionDenied(e))throw e;return 0}const noop={ack:()=>{},nak:()=>{},durable:false};let n=0;for(const sm of msgs){let msg;try{msg=sm.json()}catch{continue}if(!isRecord(msg)||!isUsableMessageId(msg.id))continue;const parsed=parseSubject(sm.subject);if(!parsed||msg.from?.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner)||msg.from.id===this.card.id)continue;this.emit("message",authenticatedMessage(msg,parsed),noop,{historical:true,kind:"channel"});n++}return n}async recallChannel(channel,sinceSeq){if(!this.jsm)throw new Error(this.notLiveMsg());if(!isConcreteChannel(channel))return{messages:[],seqs:[],dropped:false,unanswered:true};const policy=await this.joinPolicyFresh(channel);if(!policy.replay)return{messages:[],seqs:[],dropped:true,unanswered:true};const subject=chatSubject(this.space,"*","*",channel);let raw;try{raw=await this.collectHistory(subject,{seq:sinceSeq+1})}catch(e){this.emit("error",e);if(isPermissionDenied(e))throw e;return{messages:[],seqs:[],dropped:true,unanswered:true}}const collected=[];const seqs=[];for(const sm of raw){let msg;try{msg=sm.json()}catch{continue}if(!isRecord(msg)||!isUsableMessageId(msg.id))continue;const parsed=parseSubject(sm.subject);if(!parsed||msg.from?.id!==parsed.sender||!isPrincipalOwnerToken(parsed.owner)||msg.from.id===this.card.id)continue;collected.push(authenticatedMessage(msg,parsed));seqs.push(sm.seq)}const dropped=await this.channelDropped(subject,sinceSeq);return{messages:collected,seqs,dropped,unanswered:false}}async channelDropped(subject,sinceSeq){if(!this.jsm)return false;let maxPerSubject=0;try{const info=await this.jsm.streams.info(chatStream(this.space),{subjects_filter:subject});for(const count of Object.values(info.state.subjects??{}))maxPerSubject=Math.max(maxPerSubject,count)}catch(e){if(e.code!==404)this.emit("error",e);return false}if(maxPerSubject<MAX_MSGS_PER_SUBJECT)return false;const oldest=await this.channelOldestSeq(subject);return oldest!==void 0&&oldest>sinceSeq+1}async channelOldestSeq(subject){if(!this.jsm)return void 0;try{const[first]=await this.collectHistory(subject,{seq:1},{limit:1});return first?.seq}catch(e){this.emit("error",e);return void 0}}async publishPresence(){if(!this.doRegister||!this.kv)return;const p={card:this.card,...this.ownLifecycleUid!==void 0?{lifecycleUid:this.ownLifecycleUid}:{},runtime:processRuntime(this.ownLifecycleUid),status:this.status,condition:this.condition,environment:this.environment,activity:this.activity,statusSince:this.statusSince,activitySince:this.activitySince,activeAt:this.activeAt,attention:this.attentionMode,channelModes:this.channelModes,ts:Date.now()};const record2=this.status==="offline"?this.toOffline(p):p;assertPresenceRow(record2,this.card.id);const epoch=this.presenceEpoch;const conditionRevision=this.conditionRevision;const generation=++this.presencePutGeneration;try{await this.kv.put(this.card.id,JSON.stringify(record2))}catch(e){const superseded2=(this.presencePutSettled??0)>generation;this.presencePutSettled=Math.max(this.presencePutSettled??0,generation);if(epoch===this.presenceEpoch&&!this.stopped&&!superseded2){this.presenceWriteFailingSince??=Date.now();this.lastPresenceWriteError=e?.message??String(e);this.presenceWriteFailures++;this.escalatePresenceWriteFailureIfStuck()}if(e instanceof import_transport_node13.TimeoutError)throw new Error(`${e.message}. The presence write outcome is unknown: the broker may have stored the update. Read the roster before retrying.`,{cause:e});throw e}const superseded=(this.presencePutSettled??0)>generation;this.presencePutSettled=Math.max(this.presencePutSettled??0,generation);if(epoch!==this.presenceEpoch||this.stopped||superseded)return;if(conditionRevision!==this.conditionRevision){await this.publishPresence();return}this.clearPresenceWriteFailure()}clearPresenceWriteFailure(){this.presenceWriteFailingSince=void 0;this.lastPresenceWriteError=void 0;this.presenceWriteFailures=0;this.presenceWriteEscalated=false}escalatePresenceWriteFailureIfStuck(){if(this.presenceWriteEscalated||this.presenceWriteFailingSince===void 0||this.presenceWriteFailures<2||Date.now()-this.presenceWriteFailingSince<this.ttlMs)return;this.presenceWriteEscalated=true;this.emitRecoverable(new PresenceWriteStuckError(presenceBucket(this.space),this.presenceWriteFailingSince,this.presenceWriteFailures,this.ttlMs,this.lastPresenceWriteError))}presenceWriteFailure(){if(this.presenceWriteFailingSince===void 0)return void 0;return{since:this.presenceWriteFailingSince,forMs:Date.now()-this.presenceWriteFailingSince,error:this.lastPresenceWriteError,bucket:presenceBucket(this.space),consecutiveFailures:this.presenceWriteFailures,stuck:this.presenceWriteEscalated}}async startPresenceWatch(){if(!this.kv)return void 0;let hydrated;this.presenceSnapshot=new Promise(resolve3=>{hydrated=resolve3});const bound=await this.bindKvWatch(this.kv);if(!bound){hydrated();return void 0}const{iter,info}=bound;this.presenceWatchIter=iter;const empty=info.num_pending===0&&!this.doRegister;if(empty){this.presenceSnapshotPopulated=true;hydrated();this.markPresenceBucketEmpty()}void(async()=>{let ready=empty;for await(const e of iter){if(this.presenceWatchIter!==iter)break;this.handleKvEntry(e);if(!ready&&e.isUpdate){ready=true;this.presenceSnapshotPopulated=true;hydrated();this.emitPresenceViewIfChanged()}}hydrated()})().catch(e=>this.emit("error",e));return info}async readPresenceOnce(){if(!this.kv)return;for(const e of await lastKvEntries(this.kv))this.handleKvEntry(e);this.presenceSnapshotPopulated=true;if(this.lastPresenceWatchAt===0)this.markPresenceBucketEmpty();else this.emitPresenceViewIfChanged()}rebindStalePresenceWatch(now){if(this.stopped||this.reconnecting||!this.kv||!this.nc||this.nc.isClosed())return;if(this.presenceRebind||now-this.presenceRebindAt<this.ttlMs)return;this.presenceRebindAt=now;const old=this.presenceWatchIter;const epoch=this.presenceEpoch;this.presenceRebind=(async()=>{try{const silentMs=now-this.lastPresenceWatchAt;const info=await this.startPresenceWatch();if(!info)return;if(old&&old!==this.presenceWatchIter)this.retireKvWatch(old);if(info.num_pending===0)await this.onPresenceBucketEmpty();this.emit("warning",new Error(`presence watch silent for ${silentMs}ms with the connection up; rebound it from the bucket's current state`))}catch(e){if(epoch===this.presenceEpoch)this.emit("error",e)}finally{if(epoch===this.presenceEpoch)this.presenceRebind=void 0}})()}async startChannelWatch(){if(!this.channelKv)return;const bound=await this.bindKvWatch(this.channelKv);if(!bound)return;const{iter}=bound;this.channelWatchIter=iter;void(async()=>{for await(const e of iter)this.handleChannelEntry(e)})().catch(e=>this.emit("error",e))}async readChannelsOnce(){if(!this.channelKv)return;for(const e of await lastKvEntries(this.channelKv))this.handleChannelEntry(e)}handleChannelEntry(e){const isDefaults=e.key===CHANNEL_DEFAULTS_KEY;if(isDefaults)this.channelDefaults={};else this.channelConfigs.delete(e.key);if(e.operation==="DEL"||e.operation==="PURGE")return;try{if(isDefaults)this.channelDefaults=decodeChannelEntry(e);else this.channelConfigs.set(e.key,decodeChannelEntry(e))}catch(err3){this.emitRecoverable(new Error(`dropped channel registry entry for key ${JSON.stringify(e.key)}: ${err3.message}`))}}async onPresenceBucketEmpty(){if(this.doRegister){await this.publishPresence();return}this.markPresenceBucketEmpty()}markPresenceBucketEmpty(){this.presenceWatchEmpty=true;this.lastPresenceWatchAt=0;let changed=false;for(const[id2,p]of this.roster){if(p.status==="offline")continue;const offline=this.toOffline(p);this.roster.set(id2,offline);this.emit("presence",{type:"offline",presence:offline});changed=true}if(changed)this.emit("roster",this.getRoster());this.emitPresenceViewIfChanged()}handleKvEntry(e){if(e.key===TTL_RECONCILE_CANARY_KEY)return;this.lastPresenceWatchAt=Date.now();this.presenceWatchEmpty=false;if(e.operation==="DEL"||e.operation==="PURGE"){this.markOffline(e.key);return}const p=this.decodePresence(e);if(p)this.applyPresence(e.key,p)}decodePresence(e){let p;try{p=e.json()}catch{return void 0}if(!isPresenceRow(p,e.key)){this.presenceBindingDrops++;this.emitRecoverable(new Error(`dropped presence entry for key ${JSON.stringify(e.key)}: not a usable presence row (a record with card.id equal to its KV key, a string card.name, a known status, a finite ts, string display fields and a condition with a string code)`));return void 0}return p}applyPresence(id2,raw){const prev=this.roster.get(id2);const stale=Date.now()-raw.ts>this.ttlMs;if(stale&&raw.status!=="offline"){if(prev)return;this.roster.set(id2,this.toOffline(raw));this.emit("roster",this.getRoster());return}if(this.presenceSnapshotPopulated)this.emitPresenceViewIfChanged();const p=stale||raw.status==="offline"?this.toOffline(raw):raw;if(!prev&&p.status==="offline"){this.roster.set(id2,p);this.emit("roster",this.getRoster());return}if(prev&&prev.status!=="offline"&&p.status!=="offline"&&prev.lifecycleUid===p.lifecycleUid&&sameRuntime(prev.runtime,p.runtime)&&prev.status===p.status&&prev.activity===p.activity&&sameCondition(prev.condition,p.condition)&&prev.environment===p.environment&&prev.attention===p.attention&&sameChannelModes(prev.channelModes,p.channelModes)){this.roster.set(id2,p);return}this.roster.set(id2,p);const type=p.status==="offline"?"offline":!prev||prev.status==="offline"?"join":"update";this.emit("presence",{type,presence:p});this.emit("roster",this.getRoster())}toOffline(p){return{...p,status:"offline",statusSince:void 0,attention:void 0,channelModes:void 0}}markOffline(id2){const prev=this.roster.get(id2);if(!prev||prev.status==="offline")return;const offline=this.toOffline(prev);this.roster.set(id2,offline);this.emit("presence",{type:"offline",presence:offline});this.emit("roster",this.getRoster())}emitPresenceViewIfChanged(){const view=this.presenceView();if(view.state===this.presenceViewState)return;this.presenceViewState=view.state;this.emit("presence-view",view)}sweep(){const now=Date.now();if(this.lastPresenceWatchAt!==0&&now-this.lastPresenceWatchAt>this.ttlMs){this.emitPresenceViewIfChanged();this.rebindStalePresenceWatch(now);return}let changed=false;for(const[id2,p]of this.roster){if(p.status!=="offline"&&now-p.ts>this.ttlMs&&this.lastPresenceWatchAt-p.ts>this.ttlMs){const offline=this.toOffline(p);this.roster.set(id2,offline);this.emit("presence",{type:"offline",presence:offline});changed=true}}if(changed)this.emit("roster",this.getRoster())}};function subjectLabel(subjects){return subjects.length===1?subjects[0]:`${subjects.length} filtered subjects`}function isUsableMessageId(id2){return typeof id2==="string"}function kindFromParsed(kind){switch(kind){case"chat":return"channel";case"inst":return"dm";case"svc":return"anycast";default:throw new Error(`cannot derive a message kind from subject kind "${kind}"`)}}function authenticatedMessage(msg,parsed){if(parsed.kind==="chat")return authenticatedChannelMessage(msg,parsed.rest);if(parsed.kind==="inst")return authenticatedDmMessage(msg,parsed.rest);if(parsed.kind==="svc")return authenticatedAnycastMessage(msg,parsed.rest);return msg}function authenticatedChannelMessage(msg,channel){if(msg.channel===channel&&msg.to===void 0&&msg.toService===void 0)return msg;const{to:_to,toService:_toService,...base}=msg;return{...base,channel}}function authenticatedDmMessage(msg,to){if(msg.to===to&&msg.channel===void 0&&msg.toService===void 0)return msg;const{channel:_channel,toService:_toService,...base}=msg;return{...base,to}}function authenticatedAnycastMessage(msg,toService){if(msg.toService===toService&&msg.to===void 0&&msg.channel===void 0)return msg;const{to:_to,channel:_channel,...base}=msg;return{...base,toService}}async function ackWaitOf(consumer){const{config:config2}=await consumer.info(true);if(config2.ack_wait===void 0)throw new Error(`consumer ${config2.durable_name} reports no ack wait`);return(0,import_transport_node13.millis)(config2.ack_wait)}function durableDelivery(m,ackWaitMs){return{ack:()=>m.ack(),nak:()=>m.nak(),durable:true,redelivery:{deliveryCount:m.info.deliveryCount,ackWaitMs,working:()=>m.working()}}}function dmOnlyDelivery(m,ackWaitMs,nc){const open=what=>{if(!nc||nc.isClosed())throw new Error(`DM-only ${what} refused: the connection that delivered this copy is closed; the broker will redeliver it`)};return{ack:()=>{open("ack");m.ack()},nak:()=>{open("nak");m.nak()},durable:true,redelivery:{deliveryCount:m.info.deliveryCount,ackWaitMs,working:()=>{open("in-progress signal");m.working()}}}}function historyMessageFromDelivery(m){let raw;try{raw=m.json()}catch{return void 0}if(!isHistoryDrainEnvelope(raw))return void 0;if(!isVerifiedHistoryRow(raw))return void 0;const parsed=parseSubject(m.subject);if(!parsed||!isPrincipalOwnerToken(parsed.owner))return void 0;if(raw.from.id!==parsed.sender)return void 0;return authenticatedMessage(raw,parsed)}function isVerifiedHistoryRow(row){if(typeof row.from.name!=="string")return false;if(row.from.role!==void 0&&typeof row.from.role!=="string")return false;if(typeof row.ts!=="number"||!Number.isFinite(row.ts))return false;if(typeof row.space!=="string")return false;if(!Array.isArray(row.parts)||!row.parts.every(isReadableMessagePart))return false;if(row.mentions!==void 0&&(!Array.isArray(row.mentions)||!row.mentions.every(name=>typeof name==="string")))return false;if(row.replyTo!==void 0&&typeof row.replyTo!=="string")return false;if(row.contextId!==void 0&&typeof row.contextId!=="string")return false;return true}function isReadableMessagePart(value){return isRecord(value)&&typeof value.kind==="string"}function isHistoryDrainEnvelope(value){return isRecord(value)&&isUsableMessageId(value.id)&&isRecord(value.from)}function isPlane3DeliveryFrame(value){if(!isRecord(value))return false;const keys=Object.keys(value);if(keys.length!==3||!keys.includes("version")||!keys.includes("channel")||!keys.includes("msg"))return false;if(value.version!==1||typeof value.channel!=="string"||!isConcreteChannel(value.channel))return false;return isCotalMessage(value.msg)&&value.msg.channel===value.channel}function isCotalMessage(value){if(!isRecord(value))return false;const routes=["channel","to","toService"].filter(key=>key in value);if(routes.length!==1||typeof value[routes[0]]!=="string")return false;if(typeof value.id!=="string"||typeof value.ts!=="number"||!Number.isFinite(value.ts)||typeof value.space!=="string"||!isEndpointRef(value.from)||!Array.isArray(value.parts)||!value.parts.every(isMessagePart))return false;if(value.mentions!==void 0&&(!Array.isArray(value.mentions)||!value.mentions.every(name=>typeof name==="string")))return false;if(value.replyTo!==void 0&&typeof value.replyTo!=="string")return false;if(value.contextId!==void 0&&typeof value.contextId!=="string")return false;return true}function isEndpointRef(value){return isRecord(value)&&typeof value.id==="string"&&typeof value.name==="string"&&(value.role===void 0||typeof value.role==="string")}function isMessagePart(value){if(!isRecord(value)||typeof value.kind!=="string")return false;if(value.kind==="text")return typeof value.text==="string";if(value.kind==="data")return Object.prototype.hasOwnProperty.call(value,"data");if(value.kind===ARTIFACT_PART_KIND)return isArtifactPart(value);return/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/.test(value.kind)}function isRecord(value){return!!value&&typeof value==="object"&&!Array.isArray(value)}function jsonPathProblem(path,value,seen){if(value===null)return void 0;const t=typeof value;if(t==="boolean"||t==="string")return void 0;if(t==="number")return Number.isFinite(value)?void 0:`${path} is not a finite number`;if(t==="undefined"||t==="function"||t==="symbol"||t==="bigint")return`${path} is not a JSON value`;if(typeof value==="object"){if(seen.has(value))return`${path} is cyclic`;seen.add(value);let problem;if(Array.isArray(value)){for(let i=0;i<value.length;i++){problem=jsonPathProblem(`${path}[${i}]`,value[i],seen);if(problem)return problem}}else{const proto=Object.getPrototypeOf(value);if(proto!==null&&proto!==Object.prototype){seen.delete(value);return`${path} is not a plain object`}for(const key of Object.keys(value)){if(value[key]===void 0)continue;problem=jsonPathProblem(`${path}.${key}`,value[key],seen);if(problem)return problem}}seen.delete(value);return void 0}return`${path} is not a JSON value`}function assertPartsSerializable(parts){for(const p of parts){if(p.kind!=="data")continue;const problem=jsonPathProblem("data",p.data,new Set);if(problem!==void 0){throw new Error(`cannot publish a data part carrying a non-JSON value (SPEC \xA75) - ${problem}`)}}}function sameChannelModes(a,b){const ak=a?Object.keys(a):[];const bk=b?Object.keys(b):[];if(ak.length!==bk.length)return false;return ak.every(k=>a[k]===b?.[k])}function sameRuntime(a,b){return a?.id===b?.id&&a?.startedAt===b?.startedAt&&a?.source===b?.source}function sameCondition(a,b){return a?.code===b?.code&&a?.source===b?.source&&a?.message===b?.message&&a?.since===b?.since}function authOpts(a){const tls=a.tls?{}:void 0;if(a.bearer){if(a.creds||a.token||a.user||a.pass)throw new Error("bearer (user-mode auth) is mutually exclusive with creds/token/user/pass");if(!a.sentinelCreds)throw new Error("user-mode bearer requires sentinelCreds");return{authenticator:[nativeCredsAuthenticator(a.sentinelCreds),(0,import_transport_node13.tokenAuthenticator)(a.bearer)],tls}}if(a.creds){if(a.token||a.user||a.pass)throw new Error("creds are mutually exclusive with token/user/pass auth");const creds=a.creds;const authenticator=nonce3=>{const presented=typeof creds==="function"?creds():creds;const authenticated=nativeCredsAuthenticator(presented)(nonce3);a.onCreds?.(presented);return authenticated};return{authenticator,tls}}return{token:a.token,user:a.user,pass:a.pass,tls}}function bearerExpiryMs(bearer){return bearerLifetimeMs(bearer,0).expiresAtMs}function bearerLifetimeMs(bearer,adoptedAtMs){const payload=bearer.split(".")[1];if(!payload)throw new Error("user-mode bearer is not a JWT (no payload segment)");let claims2;try{claims2=JSON.parse(Buffer.from(payload,"base64url").toString("utf8"))}catch{throw new Error("user-mode bearer payload is not valid base64url JSON")}if(typeof claims2.exp!=="number")throw new Error("user-mode bearer is missing a numeric exp claim");const expiresAtMs=claims2.exp*1e3;return{issuedAtMs:Math.min(typeof claims2.iat==="number"?claims2.iat*1e3:adoptedAtMs,expiresAtMs),expiresAtMs}}function bearerRenewalDeadlineMs(bearer,adoptedAtMs){const{issuedAtMs,expiresAtMs}=bearerLifetimeMs(bearer,adoptedAtMs);return renewalDeadlineMs(issuedAtMs,expiresAtMs)}var RepeatedRefusal=class extends Error{};function decodeBearerPrincipal(bearer){const payload=bearer.split(".")[1];if(!payload)throw new Error("user-mode bearer is not a JWT (no payload segment)");let claims2;try{claims2=JSON.parse(Buffer.from(payload,"base64url").toString("utf8"))}catch{throw new Error("user-mode bearer payload is not valid base64url JSON")}const owner2=claims2.sub,actor2=claims2.act?.actor;if(typeof owner2!=="string"||typeof actor2!=="string")throw new Error("user-mode bearer is missing a string sub (owner) / act.actor claim");return{owner:owner2,actor:actor2}}function describeStatusError(err3){if(err3 instanceof import_transport_node13.PermissionViolationError){return new Error(`NATS permission denied: cannot ${err3.operation} "${err3.subject}" - check this endpoint's ACLs (a denied peer looks "absent" rather than blocked)`,{cause:err3})}return err3}function kvWatchConsumer(iter){const consumer=iter._data;if(!consumer)throw new Error("KV watch carries no consumer - the pinned nats.js changed shape");return consumer}function membershipConsumerReleased(err3){return err3.code===404||/(consumer|stream) not found/i.test(err3.message)||isPublishPermissionDenied(err3)}function abortReason(signal){return signal?.reason instanceof Error?signal.reason:new DOMException("This operation was aborted","AbortError")}function isPublishPermissionDenied(e){const typed=e instanceof import_transport_node13.PermissionViolationError?e:e?.cause instanceof import_transport_node13.PermissionViolationError?e.cause:void 0;return typed?.operation==="publish"}function wsServers(servers){return/^wss?:\/\//i.test((servers.split(",")[0]??"").trim())}function defaultProbeTimeoutMs(servers){return wsServers(servers)?5e3:1e3}function dialerFor(servers){if(!wsServers(servers))return(opts=>(0,import_transport_node13.connect)(withDialedTlsHost(servers,opts)));return(opts=>{const{tls:_tls,...rest}=opts??{};return(0,import_nats_core6.wsconnect)(rest)})}function withDialedTlsHost(servers,opts){const urls=servers.split(",").map(url2=>url2.trim()).filter(Boolean);const tls=opts?.tls;if(urls.length!==1||tls===null||tls===void 0&&!/^tls:\/\//i.test(urls[0]))return opts;let host;try{({host}=hostPort(urls[0]))}catch{return opts}return isIP(host)?{...opts,tls:{host,...tls}}:opts}function hostPort(server){const raw=(server.split(",")[0]??"").trim();const scheme=raw.match(/^([a-z][a-z0-9+.-]*):\/\//i)?.[1]?.toLowerCase();const first=raw.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"");const u=new URL(`http://${first}`);const fallback=scheme==="wss"?443:scheme==="ws"?80:4222;return{host:u.hostname,port:u.port?Number(u.port):fallback}}function tcpInfoProbe(server,timeoutMs){return new Promise(resolve3=>{let socket;let done=false;let connected=false;const finish=live=>{if(done)return;done=true;try{socket?.destroy()}catch{}resolve3(live)};let host,port;try{({host,port}=hostPort(server))}catch{return resolve3(false)}socket=createConnection({host,port});socket.setTimeout(timeoutMs);let buf="";socket.on("data",chunk=>{buf+=chunk.toString("utf8");const nl=buf.indexOf("\r\n");if(nl===-1){if(buf.length>4096)finish(false);return}const line=buf.slice(0,nl);const brace=line.indexOf("{");if(!/^INFO\b/.test(line)||brace===-1)return finish(false);try{finish({authRequired:JSON.parse(line.slice(brace))?.auth_required===true})}catch{finish(false)}});socket.on("connect",()=>{connected=true});socket.on("timeout",()=>finish(connected?"silent":false));socket.on("error",()=>finish(false));socket.on("close",()=>finish(false))})}function tcpDialable(server,timeoutMs){return new Promise(resolve3=>{let socket;let done=false;const finish=dialable=>{if(done)return;done=true;try{socket?.destroy()}catch{}resolve3(dialable)};let host,port;try{({host,port}=hostPort(server))}catch{return resolve3(false)}socket=createConnection({host,port});socket.setTimeout(timeoutMs);socket.on("connect",()=>finish(true));socket.on("timeout",()=>finish(false));socket.on("error",()=>finish(false));socket.on("close",()=>finish(false))})}function isAuthRejection(e){return e instanceof import_transport_node13.AuthorizationError||e instanceof import_transport_node13.UserAuthenticationExpiredError}function retryAfterMs(e){const seconds=e?.retryAfterSeconds;return typeof seconds==="number"&&Number.isFinite(seconds)&&seconds>0?seconds*1e3:0}async function probeConnect(server=DEFAULT_SERVER,opts={}){const timeoutMs=opts.timeoutMs??defaultProbeTimeoutMs(server);const started=Date.now();const gate=opts.tls||wsServers(server)?tcpDialable:tcpInfoProbe;const greeting=await gate(server,timeoutMs);if(!greeting)return classifyProbeFailure(void 0,opts);if(greeting==="silent")return classifyProbeFailure(void 0,opts,false,"timeout");try{const nc=await dialerFor(server)({servers:server,timeout:Math.max(1,timeoutMs-(Date.now()-started)),reconnect:false,maxReconnectAttempts:0,...authOpts(opts)});await nc.close();return{ok:true}}catch(e){return classifyProbeFailure(e,opts,greeting!==true&&greeting.authRequired)}}function classifyProbeFailure(e,opts,authRequired=false,otherwise="unreachable"){if(typeof opts.creds==="string"){try{if(inspectCredHealth(opts.creds).state==="expired")return{ok:false,reason:"stale-auth"}}catch{}}if(e instanceof import_transport_node13.UserAuthenticationExpiredError)return{ok:false,reason:"stale-auth"};if(e instanceof import_transport_node13.AuthorizationError)return{ok:false,reason:"auth-required"};if(e instanceof import_transport_node13.TimeoutError)return{ok:false,reason:"timeout"};if(authRequired&&e?.code==="ECONNRESET")return{ok:false,reason:"auth-required",inferred:true};return{ok:false,reason:otherwise}}var MAX_CHANNEL_DESCRIPTION=200;var MAX_CHANNEL_INSTRUCTIONS=2e3;function validateChannelConfig(cfg){validateChannelDefaults(cfg);validateText("description",cfg.description,MAX_CHANNEL_DESCRIPTION);validateText("instructions",cfg.instructions,MAX_CHANNEL_INSTRUCTIONS)}function validateText(field,text2,max){if(text2===void 0)return;if(typeof text2!=="string")throw new Error(`channel ${field} must be a string`);if(text2.length>max)throw new Error(`channel ${field} too long (${text2.length} > ${max} chars)`)}function validateChannelDefaults(d){if(d.replay!==void 0&&typeof d.replay!=="boolean")throw new Error(`invalid replay "${d.replay}" - expected true or false`);if(d.replayWindow!==void 0)parseDuration(d.replayWindow);if(d.deliveryClass!==void 0&&d.deliveryClass!=="live"&&d.deliveryClass!=="durable")throw new Error(`invalid deliveryClass "${d.deliveryClass}" - expected "live" or "durable"`)}function decodeChannelEntry(e){const value=e.json();if(typeof value!=="object"||value===null||Array.isArray(value))throw new Error("not a JSON object");if(e.key===CHANNEL_DEFAULTS_KEY)validateChannelDefaults(value);else validateChannelConfig(value);return value}function parseDuration(s){const m=/^(\d+)(s|m|h|d)$/.exec(s.trim());if(!m)throw new Error(`invalid duration "${s}" - expected <number><s|m|h|d>, e.g. "24h"`);const n=Number(m[1]);const unit={s:1e3,m:6e4,h:36e5,d:864e5}[m[2]];return n*unit}function effectiveReplay(cfg,defaults){return cfg?.replay??defaults?.replay??true}function effectiveReplayWindowMs(cfg,defaults){const w=cfg?.replayWindow??defaults?.replayWindow;return w===void 0?void 0:parseDuration(w)}function effectiveDeliveryClass(cfg,defaults){return cfg?.deliveryClass??defaults?.deliveryClass??"durable"}async function openChannelRegistry(nc,space2,opts={}){const kvm=new import_kv7.Kvm(nc);return opts.create?kvm.create(channelBucket(space2)):kvm.open(channelBucket(space2))}async function readChannelConfig(kv,channel){return decode2(kv,channel)}async function readChannelDefaults(kv){return decode2(kv,CHANNEL_DEFAULTS_KEY)}async function decode2(kv,key){return entryValue(await kv.get(key))}function entryValue(e){return entryDecode(e).value}function entryDecode(e){if(!e||e.operation==="DEL"||e.operation==="PURGE")return{};try{return{value:decodeChannelEntry(e)}}catch(err3){return{error:err3.message}}}var import_jetstream17=__toESM(require_mod4(),1);var import_transport_node16=__toESM(require_transport_node(),1);var import_kv9=__toESM(require_mod6(),1);var DEFAULT_FIELDS={replay:true,replayWindow:true,deliveryClass:true};var CHANNEL_FIELDS={...DEFAULT_FIELDS,description:true,instructions:true};var import_jetstream18=__toESM(require_mod4(),1);var mintGuardClearance=claimGuardClearanceMint();var TRAIT_SELECTORS=Object.freeze(["cluster","command","attribute","event"]);var import_jetstream19=__toESM(require_mod4(),1);var import_transport_node17=__toESM(require_transport_node(),1);var import_jetstream20=__toESM(require_mod4(),1);var import_transport_node18=__toESM(require_transport_node(),1);var COMMON_FIELDS=["v","executor","attemptId","ts","phase"];var PHASE_FIELDS={claimed:COMMON_FIELDS,launching:[...COMMON_FIELDS,"addr"],launched:[...COMMON_FIELDS,"addr"],settled:[...COMMON_FIELDS,"addr"]};var BASE=["v","ts","state","claimant"];var STATE_FIELDS={claimed:BASE,launching:[...BASE,"lifecycleUid","launchAttemptId","executor"],live:[...BASE,"lifecycleUid","runtimeOwner"],preserved:[...BASE,"lifecycleUid","runtimeOwner"],relaunching:[...BASE,"lifecycleUid","launchAttemptId","executor"],draining:[...BASE,"lifecycleUid","runtimeOwner","enteredAt"],released:BASE};var enc6=new TextEncoder;var dec6=new TextDecoder;var HANDLE_MAX_LIVE_TTL_MS=24*60*60*1e3;var HANDLE_MAX_STURDY_TTL_MS=30*24*60*60*1e3;var HANDLE_MAX_BYTES=64*1024;var SESSION_GRANT_MAX_TTL_MS=24*60*60*1e3;var SESSION_GRANT_MAX_BYTES=16*1024;var SESSION_TERMINAL_STATES=Object.freeze(["closed","expired","superseded","retired"]);var TERMINAL_STATE_SNAP=new Set(SESSION_TERMINAL_STATES);var MAX_B64_CHARS=4*1024*1024;var B64_ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var B64_INV=(()=>{const m=new Int16Array(128).fill(-1);for(let i=0;i<B64_ALPHABET.length;i++)m[B64_ALPHABET.charCodeAt(i)]=i;return m})();var import_jetstream21=__toESM(require_mod4(),1);var RENEW_AT_FRACTION=1/3;var OVERLAP_MS=10*60*1e3;function presenceAges(p,now){return{conditionSince:ageAt(now,p.condition?.since),statusSince:ageAt(now,p.statusSince),activitySince:p.activity?ageAt(now,p.activitySince):void 0,activeAt:ageAt(now,p.activeAt)}}function formatAge(ms){const s=Math.floor(ms/1e3);if(s<60)return`${s}s`;if(s<3600)return`${Math.floor(s/60)}m`;if(s<86400)return`${Math.floor(s/3600)}h`;return`${Math.floor(s/86400)}d`}function ageAt(now,at){if(typeof at!=="number"||!Number.isFinite(at))return void 0;return Math.max(0,now-at)}function oneLine(text2){return text2.replace(/[\p{Cc}\p{Zl}\p{Zp}\p{Bidi_Control}]/gu,c=>`\\u${c.charCodeAt(0).toString(16).padStart(4,"0")}`)}var PRESENCE_TEXT_MAX=200;function presenceText(text2){const shown=Array.from(text2,oneLine);const width=s=>[...s].length;if(shown.reduce((n2,s)=>n2+width(s),0)<=PRESENCE_TEXT_MAX)return shown.join("");let kept="";let n=0;for(const s of shown){n+=width(s);if(n>PRESENCE_TEXT_MAX-1)break;kept+=s}return`${kept}\u2026`}function parseJoinLink(link){const tls=link.startsWith("cotals://");if(!tls&&!link.startsWith("cotal://"))throw new Error(`not a Cotal link (expected cotal:// or cotals://): ${link}`);const u=new URL(link.replace(/^cotals?:\/\//,tls?"https://":"http://"));if(!u.hostname)throw new Error(`Cotal link has no host: ${link}`);const space2=decodeURIComponent(u.pathname.replace(/^\/+/,"").split("/")[0]??"");if(!space2)throw new Error(`Cotal link has no space (cotal://host/<space>): ${link}`);const chParam=u.searchParams.get("channels")??u.searchParams.get("channel");const channels=chParam?chParam.split(",").map(s=>s.trim()).filter(Boolean):void 0;const user=u.username?decodeURIComponent(u.username):void 0;const pass=u.password?decodeURIComponent(u.password):void 0;return{servers:`nats://${u.hostname}:${u.port||"4222"}`,space:space2,channels,tls,token:user&&!pass?user:void 0,user:pass?user:void 0,pass:pass||void 0}}function brokerUrlHasUserinfo(servers){return servers.split(",").some(entry=>/^[^:/?#]+:\/\/[^/?#]*@/.test(entry.includes("://")?entry.trim():`nats://${entry.trim()}`))}var import_nkeys10=__toESM(require_mod(),1);var import_transport_node19=__toESM(require_transport_node(),1);var import_kv10=__toESM(require_mod6(),1);import{mkdtempSync,readFileSync as readFileSync3,realpathSync as realpathSync2,rmSync as rmSync2,rmdirSync,statSync as statSync3}from"node:fs";import{tmpdir}from"node:os";import{basename,dirname as dirname3,join as join3,resolve}from"node:path";var DIR_PREFIX="cotal-launch-";var MATERIAL_FILE="material.json";var LAUNCH_MATERIAL_ENV="COTAL_LAUNCH_MATERIAL";function writeLaunchMaterial(material){const present=Object.values(material).some(v=>v!==void 0);if(!present)throw new Error("launch material: refusing to write an empty material file - a launch with nothing to hand the session must not reference one at all");const dir=mkdtempSync(join3(tmpdir(),DIR_PREFIX));hardenPrivate(dir,"dir");const path=join3(dir,MATERIAL_FILE);writeSecretFile(path,JSON.stringify(material));return path}function readLaunchMaterial(path){let raw;try{if(process.platform!=="win32"){const mode=statSync3(path).mode&511;if(mode&63)throw new Error(`is readable beyond its owner (mode ${mode.toString(8)}) - refusing to read connection material out of a file other local users can open`)}raw=readFileSync3(path,"utf8")}catch(e){throw new Error(`launch material: cannot read ${path} (${e instanceof Error?e.message:String(e)})`)}let parsed;try{parsed=JSON.parse(raw)}catch{throw new Error(`launch material: ${path} is not valid JSON`)}if(typeof parsed!=="object"||parsed===null||Array.isArray(parsed))throw new Error(`launch material: ${path} must contain a JSON object`);return validate(parsed,path)}function validate(raw,path){const material={};const str3=key=>{const v=raw[key];if(v===void 0)return;if(typeof v!=="string"||!v.trim())throw new Error(`launch material: ${path} has a ${key} that is not a non-empty string`);material[key]=v};str3("servers");str3("creds");str3("token");str3("controlToken");if(raw.eventsRequired!==void 0){if(raw.eventsRequired!==true)throw new Error(`launch material: ${path} has eventsRequired that is not exactly true`);material.eventsRequired=true}if(raw.userAuth!==void 0){const u=raw.userAuth;if(typeof u!=="object"||u===null||Array.isArray(u))throw new Error(`launch material: ${path} has a userAuth that is not an object`);const{owner:owner2,actor:actor2,sentinelCredsPath,bearerCmd}=u;const named={owner:owner2,actor:actor2,sentinelCredsPath};for(const[k,v]of Object.entries(named))if(typeof v!=="string"||!v.trim())throw new Error(`launch material: ${path} has a userAuth.${k} that is not a non-empty string`);if(!Array.isArray(bearerCmd)||bearerCmd.length===0||!bearerCmd.every(a=>typeof a==="string"&&a))throw new Error(`launch material: ${path} has a userAuth.bearerCmd that is not a non-empty array of strings`);material.userAuth={owner:owner2,actor:actor2,sentinelCredsPath,bearerCmd}}if(Object.keys(material).length===0)throw new Error(`launch material: ${path} carries nothing this reader recognises. A launch that references material and supplies none is a broken launcher, not an open-mode launch, so it is refused rather than defaulted.`);return material}function discardLaunchMaterial(path){const file2=resolve(path);try{rmSync2(file2,{force:true})}catch{}const dir=dirname3(file2);if(basename(file2)!==MATERIAL_FILE||!basename(dir).startsWith(DIR_PREFIX))return;try{if(realpathSync2(dirname3(dir))!==realpathSync2(tmpdir()))return;rmdirSync(dir)}catch{}}var import_transport_node20=__toESM(require_transport_node(),1);var import_jetstream22=__toESM(require_mod4(),1);var import_kv11=__toESM(require_mod6(),1);import{BlockList,isIPv4,isIPv6}from"node:net";var LOOPBACK=new BlockList;LOOPBACK.addSubnet("127.0.0.0",8,"ipv4");LOOPBACK.addAddress("::1","ipv6");var TARGET_FIELDS=["space","owner","actor","lifecycleUid"];var STRING_FIELDS=[...TARGET_FIELDS,"kind","server","authProvider","exchangeUrl","sentinelCreds","actorToken"];var LIST_FIELDS=["subscribe","allowSubscribe","allowPublish"];var FIELDS=new Set([...STRING_FIELDS,...LIST_FIELDS,"tlsRequired","idp","policy"]);import{AsyncLocalStorage}from"node:async_hooks";function claims(ext){return[ext.name,...ext.aliases??[]].map(word=>`${ext.kind}:${word}`)}var Registry=class{#byKey=new Map;#providers=new Map;#aliases=new Map;#stage=new AsyncLocalStorage;register(...exts){const stage=this.#stage.getStore();const taken=this.#claimed();for(const staged of stage?.values()??[])for(const key of claims(staged))taken.add(key);for(const ext of exts){for(const key of claims(ext)){if(taken.has(key))throw new Error(`extension already registered: ${key}`);taken.add(key)}}if(stage)for(const ext of exts)stage.set(`${ext.kind}:${ext.name}`,ext);else this.#publish(exts)}#claimed(){return new Set([...this.#byKey.keys(),...this.#aliases.keys()])}#publish(exts){for(const ext of exts){const key=`${ext.kind}:${ext.name}`;this.#byKey.set(key,ext);for(const alias of claims(ext).slice(1))this.#aliases.set(alias,key)}}unregister(kind,name){const key=`${kind}:${name}`;const ext=this.#byKey.get(key);if(!ext)return false;for(const alias of claims(ext).slice(1))this.#aliases.delete(alias);return this.#byKey.delete(key)}async runStaged(load){const stage=new Map;const value=await this.#stage.run(stage,load);return{value,staged:[...stage.values()]}}commitStaged(staged){const taken=this.#claimed();for(const ext of staged)for(const key of claims(ext))if(taken.has(key))throw new Error(`extension already registered: ${key}`);this.#publish(staged)}has(kind,name){return this.#byKey.has(this.#canonical(kind,name))}#canonical(kind,word){const key=`${kind}:${word}`;return this.#aliases.get(key)??key}resolve(kind,name){const ext=this.#byKey.get(this.#canonical(kind,name));if(!ext){if(this.#providers.has(`${kind}:${name}`))throw new Error(`${kind} "${name}" is declared by a provider this process has not loaded`);throw new Error(`no ${kind} registered for "${name}"`)}return ext}provide(provider){const keys=provider.provides.map(ref=>`${ref.kind}:${ref.name}`);for(const key of keys)if(this.#providers.has(key))throw new Error(`extension provider already declared: ${key}`);const entry={provider};for(const key of keys)this.#providers.set(key,entry)}provides(kind,name){return this.#providers.has(`${kind}:${name}`)}async load(kind,name){const entry=this.#providers.get(`${kind}:${name}`);if(entry){entry.loading??=entry.provider.load();await entry.loading;if(!this.#byKey.has(this.#canonical(kind,name)))throw new Error(`the provider declared for ${kind} "${name}" loaded without registering it`)}return this.resolve(kind,name)}all(kind){const values=[...this.#byKey.values()];return kind===void 0?values:values.filter(e=>e.kind===kind)}};var registry2=new Registry;import{execFile}from"node:child_process";function bearerCommandFailure(err3,stderr,timeoutMs,stdout=""){const said=stderr.trim();const retryAfter=/^retry-after (\d+)$/.exec(stdout.trim());if(said)return Object.assign(new Error(said),retryAfter?{retryAfterSeconds:Number(retryAfter[1])}:{});if(err3.killed)return new Error(`the bearer command timed out after ${timeoutMs}ms`);if(err3.signal)return new Error(`the bearer command was killed by ${err3.signal}`);if(typeof err3.code==="number")return new Error(`the bearer command exited with code ${err3.code} and printed nothing`);return new Error(err3.message)}function runAgentBearer(argv,opts={}){const timeoutMs=opts.timeoutMs??3e4;return new Promise((resolve3,reject)=>{execFile(argv[0],argv.slice(1),{timeout:timeoutMs,maxBuffer:64*1024,env:opts.env,signal:opts.signal},(err3,stdout,stderr)=>err3?reject(bearerCommandFailure(err3,stderr,timeoutMs,stdout)):resolve3(stdout.trim()))})}var EVENT_CHANNEL_PREFIX="events.";function eventChannel(principal){return`${EVENT_CHANNEL_PREFIX}${principalKey(principal.owner,principal.actor).key}`}function eventChannelPrincipal(channel){if(typeof channel!=="string"||!channel.startsWith(EVENT_CHANNEL_PREFIX))return null;const principal=parsePrincipalKey(channel.slice(EVENT_CHANNEL_PREFIX.length));if(principal===null)return null;return eventChannel(principal)===channel?principal:null}var SELECTION_MAX_ITEMS=32;var EMPTY_CONVERSATION_SELECTION=Object.freeze({v:1,channels:Object.freeze([]),role:null,capabilities:Object.freeze([]),endpoints:Object.freeze([])});function managerCallerBinding(bearer,expected){let payload;try{const parts=bearer.split(".");if(parts.length!==3)throw new Error("invalid JWT");payload=JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(fromBase64url(parts[1])))}catch{throw new Error("manager control exchange returned an invalid bearer")}const act=payload?.act;if(!act||act.view!=="manager-caller"||payload.sub!==expected.owner||act.owner!==expected.owner||act.actor!==expected.actor||act.lifecycleUid!==expected.lifecycleUid||!(payload.aud===expected.space||Array.isArray(payload.aud)&&payload.aud.length===1&&payload.aud[0]===expected.space))throw new Error("manager control exchange returned different space, principal, lifecycle or view coordinates");if(typeof act.managerInstanceId!=="string")throw new Error("manager control exchange returned no concrete manager instance");const instanceId=assertLifecycleToken(act.managerInstanceId,"managerInstanceId");if(expected.instanceId!==void 0&&instanceId!==expected.instanceId)throw new Error("manager control exchange selected a different manager instance");return{caller:{owner:expected.owner,actor:expected.actor,uid:expected.lifecycleUid},instanceId,...typeof act.credentialId==="string"?{credentialId:act.credentialId}:{}}}var DELEGATED_RECOVERY_REASONS=Object.freeze(["provider-unknown","store-unavailable","authority-unavailable","identity-unverified","descriptor-incomplete","retiring","authority-drift","identity-changed","scope-changed"]);function partText(p){if(p.kind==="text")return p.text;if(p.kind==="artifact")return`[artifact ${p.name} (${p.mediaType}, ${p.size} bytes) ${p.digest}]`;if(p.kind==="data"){const encoded=JSON.stringify(p.data);return encoded===void 0?`[empty data part]`:encoded}if(registry2.has("part-renderer",p.kind)){const renderer=registry2.resolve("part-renderer",p.kind);try{return renderer.render(p)}catch(e){return`[part renderer for ${JSON.stringify(p.kind)} failed: ${e.message}]`}}return`[unrenderable part kind ${JSON.stringify(p.kind)} \u2014 no renderer for it on this surface]`}function partsToText(parts){return parts.map(partText).join(" ")}var AGUI_FRAME_KIND="ag-ui.frame";var AGUI_EVENT_TYPE=Object.freeze({RUN_STARTED:"RUN_STARTED",RUN_FINISHED:"RUN_FINISHED",RUN_ERROR:"RUN_ERROR",TEXT_MESSAGE_START:"TEXT_MESSAGE_START",TEXT_MESSAGE_CONTENT:"TEXT_MESSAGE_CONTENT",TEXT_MESSAGE_END:"TEXT_MESSAGE_END",TOOL_CALL_START:"TOOL_CALL_START",TOOL_CALL_ARGS:"TOOL_CALL_ARGS",TOOL_CALL_END:"TOOL_CALL_END",TOOL_CALL_RESULT:"TOOL_CALL_RESULT",REASONING_MESSAGE_START:"REASONING_MESSAGE_START",REASONING_MESSAGE_CONTENT:"REASONING_MESSAGE_CONTENT",REASONING_MESSAGE_END:"REASONING_MESSAGE_END",CUSTOM:"CUSTOM"});function isAguiFramePart(part){if(typeof part!=="object"||part===null)return false;try{return part.kind===AGUI_FRAME_KIND}catch{return false}}var TURN_INPUT_SCHEMA=deepFreeze({type:"object",additionalProperties:false,required:["payload"],oneOf:[{required:["deadlineMs"]},{required:["deadlineAt"]}],properties:{payload:{type:"string",minLength:1,maxLength:65536},deadlineMs:{type:"integer",minimum:1},deadlineAt:{type:"integer",minimum:1},handoffFrom:{type:"string",minLength:1,maxLength:200}}});var TURN_OUTPUT_SCHEMA=deepFreeze({type:"object",additionalProperties:false,required:["name","owner","actor","uid","goalId","fingerprint","deadlineAt","executor"],properties:{name:{type:"string"},owner:{type:"string"},actor:{type:"string"},uid:{type:"string"},goalId:{type:"string"},fingerprint:{type:"string"},deadlineAt:{type:"integer",minimum:1},executor:{type:"object",additionalProperties:false,required:["lifecycleUid","epoch"],properties:{lifecycleUid:{type:"string"},epoch:{type:"integer",minimum:0}}}}});function deepFreeze(v){if(v!==null&&typeof v==="object"){for(const child of Object.values(v))deepFreeze(child);Object.freeze(v)}return v}var TURN_NOTICE_NONCE="turn-pending-notice-v1";function turnNoticeFilter(space2,instanceId,seat){return[spacePrefix(space2),...epPlaneTokens(seat),"reply",endpointToken("manager"),assertLifecycleToken(instanceId,"instanceId"),"*",...callerRailTokens(seat),TURN_NOTICE_NONCE].join(".")}var import_nkeys11=__toESM(require_mod(),1);var TOOL_RESULTS_ENDPOINT="tool-results";var TOOL_RESULT_MAX_CONTENT_BYTES=64*1024;var TOOL_RESULT_MAX_RETENTION_MS=60*60*1e3;var TOOL_RESULT_CONSENT_MAX_TTL_MS=24*60*60*1e3;function deepFreeze2(value){if(value!==null&&typeof value==="object"){for(const child of Object.values(value))deepFreeze2(child);Object.freeze(value)}return value}var text={type:"string",minLength:1};var id={type:"string",minLength:1,maxLength:200,pattern:"^[A-Za-z0-9_-]+$"};var actor={type:"string",minLength:1,pattern:"^[A-Za-z0-9_]+$"};var owner={type:"string",pattern:"^u_[a-z2-7]{26}$"};var uid={type:"string",pattern:"^[a-z0-9]{26,32}$"};var space={type:"string",minLength:1,pattern:"^[A-Za-z0-9_-]+$"};var uint={type:"integer",minimum:0,maximum:Number.MAX_SAFE_INTEGER};var bool={type:"boolean"};var closed2=properties=>({type:"object",additionalProperties:false,required:Object.keys(properties),properties});var target=closed2({owner,actor,lifecycleUid:uid});var pair={threadId:text,toolCallId:text};var status=(state,fields={})=>closed2({state:{const:state},...fields});var TOOL_RESULT_CONSENT_SCHEMA=deepFreeze2(closed2({v:{const:1},kind:{const:"tool-result-consent"},id,space,target,holder:closed2({owner,actor}),iat:uint,exp:uint,issuer:closed2({keyId:id}),sig:{type:"string",pattern:"^[A-Za-z0-9_-]{86}$"}}));var TOOL_RESULT_REVOCATION_SCHEMA=deepFreeze2(closed2({v:{const:1},kind:{const:"tool-result-revocation"},space,consentId:id,target,revokedAt:uint}));var TOOL_RESULT_SERVING_MATERIAL_SCHEMA=deepFreeze2(closed2({v:{const:1},kind:{const:"tool-result-serving-material"},space,accountPublicKey:{type:"string",pattern:"^A[A-Z2-7]{55}$"},target,grant:closed2({endpoint:{const:TOOL_RESULTS_ENDPOINT},instanceId:uid,epoch:uint,registrationRevision:{...uint,minimum:1}}),credential:{type:"string",minLength:1,maxLength:16384},snapshot:closed2({t0:uint,watermark:uint,watermarkTakenAt:uint,revokedConsentIds:{type:"array",uniqueItems:true,items:id}}),expiresAt:uint}));var TOOL_RESULT_INPUT_SCHEMA=deepFreeze2(closed2(pair));var TOOL_RESULT_ANSWER_SCHEMAS=deepFreeze2({available:status("available",{...pair,content:{type:"string",maxLength:TOOL_RESULT_MAX_CONTENT_BYTES},truncated:bool,byteCount:{...uint,maximum:TOOL_RESULT_MAX_CONTENT_BYTES},error:bool,capturedAt:uint}),pending:status("pending",pair),"not-shared":status("not-shared"),missing:status("missing"),expired:status("expired")});var TOOL_RESULT_OUTPUT_SCHEMA=deepFreeze2({oneOf:Object.values(TOOL_RESULT_ANSWER_SCHEMAS)});var TOOL_RESULT_CONSENT_INPUT_SCHEMA=deepFreeze2(closed2({consent:TOOL_RESULT_CONSENT_SCHEMA}));var TOOL_RESULT_CONSENT_OUTPUT_SCHEMA=deepFreeze2(status("active",{consentId:id}));var TOOL_RESULT_REVOKE_INPUT_SCHEMA=deepFreeze2(closed2({consentId:id}));var TOOL_RESULT_REVOKE_ANSWER_SCHEMAS=deepFreeze2({known:status("known",{consentId:id}),refused:status("refused",{consentId:id}),unknown:status("unknown",{consentId:id})});var TOOL_RESULT_REVOKE_OUTPUT_SCHEMA=deepFreeze2({oneOf:Object.values(TOOL_RESULT_REVOKE_ANSWER_SCHEMAS)});var TOOL_RESULTS_COMMANDS=deepFreeze2([{name:"tool-result",capability:"tool-results.read",input:TOOL_RESULT_INPUT_SCHEMA,output:TOOL_RESULT_OUTPUT_SCHEMA},{name:"tool-result-consent",capability:"tool-results.consent",input:TOOL_RESULT_CONSENT_INPUT_SCHEMA,output:TOOL_RESULT_CONSENT_OUTPUT_SCHEMA},{name:"tool-result-revoke",capability:"tool-results.revoke",input:TOOL_RESULT_REVOKE_INPUT_SCHEMA,output:TOOL_RESULT_REVOKE_OUTPUT_SCHEMA}]);var TOOL_RESULTS_CLUSTER=deepFreeze2({urn:"ai.cotal.tool-results",revision:1,attributes:[],events:[],commands:TOOL_RESULTS_COMMANDS.map(row=>({name:row.name,class:"ephemeral",targeted:true,modes:["handle"],capability:row.capability,inputDigest:singleDocumentClosure(row.input).closureDigest,outputDigest:singleDocumentClosure(row.output).closureDigest}))});var import_nkeys12=__toESM(require_mod(),1);var LANG_PROBLEM_DETAIL_KIND="ai.cotal.lang.problem";var RUN_ACTIVATION_WAIT_MS=15e3;var RUN_LAUNCH_DEADLINE_MS=RUN_ACTIVATION_WAIT_MS+1e4;var import_jetstream23=__toESM(require_mod4(),1);var import_transport_node21=__toESM(require_transport_node(),1);var import_jetstream24=__toESM(require_mod4(),1);var import_kv12=__toESM(require_mod6(),1);import{readFileSync as readFileSync4}from"node:fs";import{userInfo as userInfo2}from"node:os";var DIRECT_MATERIAL_VARS=["COTAL_CREDS","COTAL_SERVERS","COTAL_TOKEN","COTAL_OWNER","COTAL_ACTOR","COTAL_SENTINEL_CREDS","COTAL_BEARER_CMD","COTAL_EVENTS_REQUIRED","COTAL_CONTROL_TOKEN","COTAL_LINK"];function readMaterial(env){const path=env[LAUNCH_MATERIAL_ENV]?.trim();if(!path)return void 0;const direct=DIRECT_MATERIAL_VARS.filter(k=>env[k]?.trim());if(direct.length)throw new Error(`COTAL config: this launch carries connection material BOTH as ${LAUNCH_MATERIAL_ENV} and as ${direct.join(", ")}. One launch carries one identity plane - drop the direct variables, or drop the material file.`);return readLaunchMaterial(path)}function controlFromEnv(env=process.env){const path=env.COTAL_CONTROL_SOCKET?.trim();const token2=readMaterial(env)?.controlToken??env.COTAL_CONTROL_TOKEN?.trim();if(path&&token2)return{path,token:token2};if(!path&&!token2)return void 0;if(path)throw new Error("COTAL config: COTAL_CONTROL_SOCKET is set but no control token could be resolved - neither the launch material nor COTAL_CONTROL_TOKEN carries one. Half a pair is not a control endpoint, so this launch is refused rather than started without the control plane it was configured to have.");throw new Error("COTAL config: a control token was supplied but COTAL_CONTROL_SOCKET is unset, so there is no socket to authenticate against. Half a pair is not a control endpoint, so this launch is refused rather than started without the control plane it was configured to have.")}function hasIdentity(env=process.env){return Boolean(env.COTAL_NAME?.trim()||env.COTAL_LINK?.trim()||env.COTAL_AGENT_FILE?.trim())}var FEEDBACK_URL="https://broker.cotal.ai/v1/feedback";var PUBLIC_FEEDBACK_URL="https://cotal.ai/v1/feedback";function isAuthed(config2){return Boolean(config2.creds)||Boolean(config2.userAuth)}function splitList(v){if(!v)return[];return v.split(",").map(s=>s.trim()).filter(Boolean)}function envList(v){return v===void 0?void 0:splitList(v)}var EnvFlagError=class extends Error{};function envFlag(env,name){const value=env[name]?.trim();if(!value)return void 0;if(/^(1|true|yes|on)$/i.test(value))return true;if(/^(0|false|no|off)$/i.test(value))return false;throw new EnvFlagError(`COTAL config: ${name} must be 1/true/yes/on or 0/false/no/off, got "${env[name]}"`)}function configFromEnv(env=process.env){const link=env.COTAL_LINK?.trim()?parseJoinLink(env.COTAL_LINK.trim()):void 0;const def=env.COTAL_AGENT_FILE?.trim()?loadAgentFile(env.COTAL_AGENT_FILE.trim()):void 0;const name=env.COTAL_NAME?.trim()||def?.name||(link?userInfo2().username:void 0);if(!name)throw new Error("COTAL_NAME, COTAL_AGENT_FILE or COTAL_LINK is required \u2014 a Cotal session needs an explicit identity from its launcher");const resolvedSubscribe=envList(env.COTAL_SUBSCRIBE)??def?.subscribe??link?.channels??[];let resolvedAllowSub;try{resolvedAllowSub=resolveReadAcl(resolvedSubscribe,envList(env.COTAL_ALLOW_SUBSCRIBE)??def?.allowSubscribe)}catch(e){throw new Error(`COTAL config: ${e.message}`)}const resolvedAllowPub=envList(env.COTAL_ALLOW_PUBLISH)??def?.allowPublish??[];for(const ch of[...resolvedSubscribe,...resolvedAllowSub,...resolvedAllowPub])assertValidChannel(ch);const qEnv=splitList(env.COTAL_QUIET),mEnv=splitList(env.COTAL_MUTED);const resolvedQuiet=qEnv.length?qEnv:def?.quiet??[];const resolvedMuted=mEnv.length?mEnv:def?.muted??[];const bothModes=resolvedQuiet.filter(c=>resolvedMuted.includes(c));if(bothModes.length)throw new Error(`COTAL config: channel(s) [${bothModes.join(", ")}] are in both quiet and muted`);for(const[field,chans]of[["quiet",resolvedQuiet],["muted",resolvedMuted]])for(const ch of chans){assertValidChannel(ch);if(!isConcreteChannel(ch))throw new Error(`COTAL config: ${field} channel "${ch}" must be concrete (no wildcard)`);if(!channelInAllow(resolvedAllowSub,ch))throw new Error(`COTAL config: ${field} channel "${ch}" is not within allowSubscribe [${resolvedAllowSub.join(", ")}]`)}const material=readMaterial(env);if(env.COTAL_SERVERS?.trim()&&brokerUrlHasUserinfo(env.COTAL_SERVERS))throw new Error("COTAL config: COTAL_SERVERS must not embed credentials; name the broker URL without user:password@, and pass the credential in COTAL_CREDS, COTAL_TOKEN or a COTAL_LINK");const credsPath=material?.creds??env.COTAL_CREDS?.trim();const initialCreds=credsPath?readFileSync4(credsPath,"utf8"):void 0;const credsId=initialCreds?idFromCreds(initialCreds):void 0;const boundedCreds=initialCreds!==void 0&&typeof credsClaims(initialCreds).exp==="number";const declaredId=env.COTAL_ID?.trim()||void 0;if(declaredId&&credsId&&declaredId!==credsId)throw new Error(`COTAL config: COTAL_ID ${declaredId} != creds identity ${credsId} - they must be the same nkey`);const userVars=material?.userAuth?{owner:material.userAuth.owner,actor:material.userAuth.actor,sentinel:material.userAuth.sentinelCredsPath,bearerCmd:JSON.stringify(material.userAuth.bearerCmd)}:{owner:env.COTAL_OWNER?.trim(),actor:env.COTAL_ACTOR?.trim(),sentinel:env.COTAL_SENTINEL_CREDS?.trim(),bearerCmd:env.COTAL_BEARER_CMD?.trim()};const userSet=Object.values(userVars).filter(Boolean).length;if(userSet>0&&userSet<4)throw new Error("COTAL config: user-mode launch needs ALL of COTAL_OWNER, COTAL_ACTOR, COTAL_SENTINEL_CREDS, COTAL_BEARER_CMD \u2014 a partial set is a broken launcher, not a mode");if(userSet&&credsPath)throw new Error("COTAL config: COTAL_CREDS (static auth) and COTAL_OWNER/... (user-mode auth) are mutually exclusive");const lifecycleUid=env.COTAL_LIFECYCLE_UID?.trim()||void 0;const backfillFloorRaw=env.COTAL_BACKFILL_FLOOR?.trim()||void 0;let backfillFloor;if(backfillFloorRaw!==void 0){const n=Number(backfillFloorRaw);if(!Number.isInteger(n)||n<0)throw new Error(`COTAL config: COTAL_BACKFILL_FLOOR must be a non-negative integer stream sequence, got "${backfillFloorRaw}" (a broken launcher, not a mode)`);backfillFloor=n}const acceptedToken=env.COTAL_ACCEPTED_TOKEN?.trim()||void 0;const managerInstanceId=env.COTAL_MANAGER_INSTANCE?.trim()||void 0;if(managerInstanceId!==void 0)assertLifecycleToken(managerInstanceId,"COTAL_MANAGER_INSTANCE");if(acceptedToken&&!credsPath)throw new Error("COTAL config: COTAL_ACCEPTED_TOKEN names a static issuance and needs COTAL_CREDS beside it (a broken launcher, not a mode)");if((credsPath||userSet===4)&&!lifecycleUid)throw new Error("COTAL config: an authed launch (COTAL_CREDS or user-mode) requires COTAL_LIFECYCLE_UID - the launcher mints it at provision time (a broken launcher, not a mode)");let userAuth;if(userSet===4){let bearerCmd;try{bearerCmd=JSON.parse(userVars.bearerCmd)}catch{throw new Error("COTAL config: COTAL_BEARER_CMD must be a JSON argv array")}if(!Array.isArray(bearerCmd)||!bearerCmd.length||!bearerCmd.every(a=>typeof a==="string"))throw new Error("COTAL config: COTAL_BEARER_CMD must be a non-empty JSON array of strings");userAuth={owner:userVars.owner,actor:userVars.actor,sentinelCreds:readFileSync4(userVars.sentinel,"utf8"),bearerCmd}}const eventsRequired=material?.eventsRequired===true||!material&&envFlag(env,"COTAL_EVENTS_REQUIRED")===true;if(eventsRequired&&!userAuth)throw new Error("COTAL config: COTAL_EVENTS_REQUIRED is valid only for a user-mode registration launch");if(eventsRequired){const principal=userSet===4?{owner:userVars.owner,actor:userVars.actor}:{owner:DEV_OWNER,actor:credsId??declaredId??""};if(!principal.actor)throw new Error("COTAL config: this space requires events, but the session has no stable principal to derive its event channel");const channel=eventChannel(principal);if(!channelInAllow(resolvedAllowPub,channel))throw new Error(`COTAL config: space "${env.COTAL_SPACE?.trim()||link?.space||"demo"}" requires events, but this session's grant does not cover its event channel "${channel}". Widen the whole user-auth actor row with \`cotal actor grant ${principal.actor} --owner ${principal.owner} --scope <current-scope> --allow-subscribe <current-read> --allow-publish '<current-post>,${channel}' --role <current-role> --label <current-label>\`; actor grant replaces the whole row, so preserve every current field.`)}return{space:env.COTAL_SPACE?.trim()||link?.space||"demo",id:credsId??declaredId,lifecycleUid,backfillFloor,acceptedToken,managerInstanceId,creds:boundedCreds?async()=>readFileSync4(credsPath,"utf8"):initialCreds,userAuth,name,role:env.COTAL_ROLE||def?.role||void 0,description:def?.description,tags:def?.tags,meta:def?.meta,capabilities:splitList(env.COTAL_CAPABILITIES).length?splitList(env.COTAL_CAPABILITIES):def?.capabilities,model:env.COTAL_MODEL?.trim()||void 0,variant:env.COTAL_VARIANT?.trim()||void 0,servers:material?.servers||env.COTAL_SERVERS?.trim()||link?.servers||DEFAULT_SERVER,subscribe:resolvedSubscribe,allowSubscribe:resolvedAllowSub,allowPublish:resolvedAllowPub,eventsRequired,quiet:resolvedQuiet,muted:resolvedMuted,kind:assertValidKind(env.COTAL_KIND?.trim()||def?.kind||"agent"),token:material?.token||env.COTAL_TOKEN?.trim()||link?.token,user:link?.user,pass:link?.pass,tls:envFlag(env,"COTAL_TLS")||link?.tls||false,feedbackKey:env.COTAL_FEEDBACK_KEY?.trim()||void 0,feedbackUrl:env.COTAL_FEEDBACK_URL?.trim()||void 0}}import{AsyncLocalStorage as AsyncLocalStorage2}from"node:async_hooks";import{EventEmitter as EventEmitter2}from"node:events";import{hostname}from"node:os";var TURN_PULL_RETRY_MS=15e3;function attributionSafe(s){return peerLabel({name:s})}function fmtFrom(i){return peerLabel({name:i.fromName,role:i.fromRole})}function fmtBody(text2){return text2.split(LINE_BREAK).join("\n ")}function fmtDeliveryItem(i){const field=value=>Array.from(JSON.stringify(value),char=>[91,93,133,8232,8233].includes(char.charCodeAt(0))?`\\u${char.charCodeAt(0).toString(16).padStart(4,"0")}`:char).join("");const metadata2=[`sender_id=${field(i.fromId)}`,...i.id?[`message_id=${field(i.id)}`]:[],...i.contextId?[`context_id=${field(i.contextId)}`]:[],...i.replyTo?[`reply_to=${field(i.replyTo)}`]:[]];return formatItem(i,`[${metadata2.join(" ")}] `)}function formatItem(i,metadata2=""){const h=i.historical?"(history) ":"";const r=i.deliveryCount!==void 0&&i.deliveryCount>1?`(broker redelivery, delivery ${i.deliveryCount}: prior model handoff unknown) `:"";const body=`${metadata2}${h}${r}${fmtBody(i.text)}`;if(i.kind==="dm")return`[DM from ${fmtFrom(i)}] ${body}`;if(i.kind==="anycast")return`[@${attributionSafe(i.service??"")} from ${fmtFrom(i)}] ${body}`;return`[#${attributionSafe(i.channel??"")}${i.mentionsMe?" @you":""} ${fmtFrom(i)}] ${body}`}var legacyRail=new Map;var LEGACY_RAIL_RECHECK_MS=60*6e4;var LEGACY_RAIL_MAX=32;function onLegacyRail(key){const until=legacyRail.get(key);if(until===void 0)return false;if(Date.now()<until)return true;legacyRail.delete(key);return false}function rememberLegacyRail(key){legacyRail.set(key,Date.now()+LEGACY_RAIL_RECHECK_MS);if(legacyRail.size>LEGACY_RAIL_MAX)legacyRail.delete(legacyRail.keys().next().value)}async function invokeUserManager(config2,bearer,command,args,opts={}){opts.signal?.throwIfAborted();const user=config2.userAuth;const endpoint=BASELINE_LIFECYCLE_ENDPOINT;let nc;let caller;let instanceId;let service;let skippedAcceptedRead;const onAbort=()=>{void nc?.close()};const resolve3=(signal=opts.signal,deadlineMs=opts.deadlineMs??1e4)=>resolveService(nc,config2.space,endpoint,caller,{instanceId,deadlineMs,signal,commands:opts.follow?[command,"goal-result"]:[command],...opts.follow&&command!=="goal-result"?{optionalCommands:["goal-result"]}:{}});const resolvePrepared=async(signal=opts.signal,deadline=Date.now()+(opts.deadlineMs??1e4))=>{const remaining=()=>{signal?.throwIfAborted();const left=deadline-Date.now();if(left<=0)throw new EpEnvelopeError("deadline-exceeded","the deadline passed before the manager was resolved; the manager request WAS NOT RUN",void 0,"not-executed");return left};try{return await resolve3(signal,remaining())}catch(error51){if(!skippedAcceptedRead||!isPermissionDenied(error51))throw error51;const{key,connId}=skippedAcceptedRead;skippedAcceptedRead=void 0;remaining();caller=await issuedUserCaller(nc,config2.space,connId,caller);legacyRail.delete(key);return resolve3(signal,remaining())}};const connect3=async(signal=opts.signal,deadline=Date.now()+(opts.deadlineMs??1e4))=>{const token2=await bearer(signal);let credentialId;({caller,instanceId,credentialId}=managerCallerBinding(token2,{space:config2.space,owner:user.owner,actor:user.actor,lifecycleUid:config2.lifecycleUid,instanceId:config2.managerInstanceId}));const connectOpts=standaloneConnectOpts({bearer:token2,sentinelCreds:user.sentinelCreds,tls:config2.tls});signal?.throwIfAborted();const left=deadline-Date.now();if(left<=0)throw new EpEnvelopeError("deadline-exceeded","the deadline passed before the manager was connected; the manager request WAS NOT RUN",void 0,"not-executed");nc=await dialerFor(config2.servers)({servers:config2.servers,...connectOpts,maxReconnectAttempts:0,timeout:left});if(signal?.aborted)onAbort();signal?.throwIfAborted();const railKey=credentialId??token2;if(onLegacyRail(railKey)){skippedAcceptedRead={key:railKey,connId:String(connectOpts.name)}}else{try{caller=await issuedUserCaller(nc,config2.space,String(connectOpts.name),caller)}catch(e){if(!isPermissionDenied(e))throw e;rememberLegacyRail(railKey)}}};const prepare=async(signal,deadline)=>{await connect3(signal,deadline);service=await resolvePrepared(signal,deadline)};const invoke=async(signal=opts.signal)=>{const unfollowable=opts.follow?goalFollowRefusal(service):void 0;if(unfollowable)return unfollowable;const invokeOpts={target:opts.target,deadlineMs:opts.deadlineMs,signal};const result=await invokeCommand(nc,config2.space,service,command,args,invokeOpts);if(result.reply.ok===false&&replyRefusedBeforeEffect(result.reply.error)){try{service=await resolve3(signal);const unfollowable2=opts.follow?goalFollowRefusal(service):void 0;if(unfollowable2)throw new Error(unfollowable2.reply.error.message)}catch(error51){return{...result,reply:{...result.reply,error:{...result.reply.error,message:`${command} WAS NOT RUN; manager instance ${instanceId} refused before effects, and re-resolution failed: ${error51 instanceof Error?error51.message:String(error51)}`}}}}return invokeCommand(nc,config2.space,service,command,args,invokeOpts)}return result};opts.signal?.addEventListener("abort",onAbort,{once:true});try{if(opts.follow)return await opts.follow(invoke,prepare);await connect3();service=await resolvePrepared();return await invoke()}finally{opts.signal?.removeEventListener("abort",onAbort);const control=nc;if(control){let timer;try{await Promise.race([control.drain().catch(()=>control.close()),new Promise(resolve4=>{timer=setTimeout(resolve4,2e3);timer.unref()})])}finally{if(timer!==void 0)clearTimeout(timer);await control.close()}}}}import{createHash as createHash6,randomUUID as randomUUID4}from"node:crypto";var SPAWN_TIMEOUT_MS=4e4;var MANAGER_BEARER_MARGIN_MS=12e4;var CONNECT_GRACE_MS=1e4;function isLocalServer(servers){return servers.split(",").every(s=>/^(?:[a-z]+:\/\/)?(?:[^@/]*@)?(?:localhost|127\.0\.0\.1|\[::1\]|0\.0\.0\.0)(?::\d+)?(?:\/|$)/i.test(s.trim()))}function buildMeta(config2,processCwd){const meta3={...config2.meta??{}};if(config2.model)meta3.model=config2.model;if(config2.variant)meta3.variant=config2.variant;if(config2.connector)meta3.connector=config2.connector;meta3.host=hostname();if(processCwd)meta3.cwd=process.cwd();else delete meta3.cwd;return Object.keys(meta3).length?meta3:void 0}function afterRecallMark(a,b){return a.ts!==b.ts?a.ts>b.ts:a.id>b.id}var MAX_INBOX=200;var MAX_IN_FLIGHT=MAX_INBOX*2;var MAX_AHEAD=256;var CLASSIFICATION_CAP=4096;var FOCUS_EXCLUSION_CAP=4096;var IDLESS_READS=3;var PROTECTED_DISPOSITION_CAP=4096;var MAX_CORRELATIONS=1024;var ENDPOINT_ERROR_LOG_WINDOW_MS=3e4;var MAX_ENDPOINT_NOTICES=16;var NAMED_SIMILAR=5;var STATIC_SLOT_OBSERVATION_DETAIL="ai.cotal.manager.static-slot-observation";var MAX_SETTLED_TURNS=32;function settledTurnError(goalId,deadlineAt){return`turn "${goalId}" was already settled by the run (deadline ${new Date(deadlineAt).toISOString()}), so this yield was not recorded`}var MAX_DATE_MS=864e13;function isPendingTurn(t){const r=t;return typeof r==="object"&&r!==null&&typeof r.goalId==="string"&&typeof r.payload==="string"&&Number.isSafeInteger(r.acceptedAt)&&r.acceptedAt>=0&&Number.isSafeInteger(r.deadlineAt)&&r.deadlineAt>=1&&r.deadlineAt<=MAX_DATE_MS}function idlessDigest(m){return createHash6("sha256").update(JSON.stringify(m)).digest("base64url")}function sleep(ms){return new Promise(r=>setTimeout(r,ms))}function ingestDedupKey(id2){return id2===""?void 0:id2}var AUTOMATIC_QUEUE_STALL_MS=6e5;function renderAskRequest(p){const escalation=renderEscalation(p);if(escalation!=="")return escalation;const ask=p.ask;if(ask===null||typeof ask!=="object")return"";const a=ask;const entries=a.schema!==null&&typeof a.schema==="object"?Object.entries(a.schema):[];const fields=entries.length===0?"any record":entries.map(([k,v])=>`${k}: ${String(v)}`).join(", ");const by=typeof a.deadlineAt==="number"?`, by ${new Date(a.deadlineAt).toISOString()}`:"";const refused=typeof a.refused==="string"?`
|
|
113
|
+
`}}function tryAcquireOnce({path,nonce:nonce3,content}){if(publishAtomic(path,content)){let released=false;return{kind:"acquired",held:{nonce:nonce3,release(){if(released)return;released=true;const found=readOwner(path);if(found?.owner?.nonce===nonce3){try{unlinkSync(path)}catch{}}}}}}const inspection=inspectLockSnapshot(path);if(inspection.state==="absent")return{kind:"retry"};if(inspection.state==="stale"){const reclaimer=reclaimStale(path,inspection.ino);return reclaimer?{kind:"reclaiming",owner:reclaimer}:{kind:"retry"}}return{kind:"held",owner:inspection.owner}}function reclaimPollMs(pollMs){return Math.min(pollMs,50)}function acquireLock(path,opts={}){const waitMs=opts.waitMs??3e5;const pollMs=opts.pollMs??200;const attempt=newAttempt(path,opts);const deadline=Date.now()+waitMs;for(;;){const result=tryAcquireOnce(attempt);switch(result.kind){case"acquired":return result.held;case"retry":continue;case"reclaiming":sleepSync(reclaimPollMs(pollMs));continue;case"held":if(Date.now()>=deadline)throw lockTimeoutError(path,opts,result.owner,waitMs);sleepSync(pollMs)}}}function lockTimeoutError(path,opts,owner2,waitMs){return opts.onTimeout?.(owner2)??new Error(`${opts.label??"a lock"} is held by a live process (pid ${owner2.pid}) and did not release within ${Math.round(waitMs/1e3)}s - retry, or if it is wedged, remove ${path}`)}import{createHash}from"node:crypto";import{lstatSync,mkdirSync as mkdirSync2}from"node:fs";import{userInfo}from"node:os";import{join}from"node:path";var LocalConsumerHeldError=class extends Error{};function localConsumerClaimPath(servers,space2,owner2,actor2,lifecycleUid){const user=userInfo();const root=process.platform==="linux"?`/tmp/cotal-consumers-${user.uid}`:join(user.homedir,".cotal-consumers");mkdirSync2(root,{recursive:true,mode:448});const st=lstatSync(root);if(!st.isDirectory()||st.isSymbolicLink()||process.platform!=="win32"&&(st.uid!==user.uid||(st.mode&63)!==0))throw new Error("local consumer custody directory is not private to this OS user");const targets=[...new Set(servers.split(",").map(s=>{const u=new URL(s.trim().includes("://")?s.trim():`nats://${s.trim()}`);u.username="";u.password="";if(!u.port)u.port=u.protocol==="nats:"?"4222":u.protocol==="wss:"?"443":"80";return u.href}))].sort();const key=createHash("sha256").update(JSON.stringify([targets,space2,owner2,actor2,lifecycleUid])).digest("hex");const path=join(root,`${key}.lock`);try{const file2=lstatSync(path);if(!file2.isFile()||file2.isSymbolicLink()||process.platform!=="win32"&&(file2.uid!==user.uid||(file2.mode&63)!==0))throw new Error("local consumer custody file is not private to this OS user")}catch(error51){if(error51.code!=="ENOENT")throw error51}return path}function acquireLocalConsumer(servers,space2,owner2,actor2,lifecycleUid){return acquireLock(localConsumerClaimPath(servers,space2,owner2,actor2,lifecycleUid),{waitMs:0,label:"local inbox consumer",onTimeout:()=>new LocalConsumerHeldError(`local inbox already has a consuming session for ${owner2}.${actor2} in space "${space2}"; preserve that session and choose a distinct actor for a new launch`)})}var import_nkeys2=__toESM(require_mod(),1);var ILLEGAL=/[^A-Za-z0-9_-]/g;function token(s){const t=s.trim().replace(ILLEGAL,"_");return t.length>0?t:"_"}var ROOT="cotal";function spacePrefix(space2){return`${ROOT}.${token(space2)}`}function normalizeMentions(mentions){if(!mentions?.length)return void 0;const out=[...new Set(mentions.map(m=>m.trim().toLowerCase()).filter(m=>m.length>0))];return out.length?out:void 0}function channelPath(channel){const segs=channel.split(".").map(s=>s.trim()).filter(s=>s.length>0);if(segs.length===0)return"_";return segs.map((s,i)=>{if(s===">"){if(i!==segs.length-1)throw new Error(`channel "${channel}": '>' is only valid as the last segment`);return">"}return s==="*"?"*":token(s)}).join(".")}function assertValidRole(role){if(typeof role!=="string"||!/^[A-Za-z0-9_-]+$/.test(role))throw new Error(`invalid role "${role}": must be a single NATS-safe token ([A-Za-z0-9_-]) - a role is an address, so it is rejected rather than silently rewritten`);return role}function routeToken(s){return s==="*"?"*":assertValidRole(s)}function ownerToken(s){return s==="*"?"*":assertValidOwnerToken(s)}function chatSubject(space2,owner2,actor2,channel){return`${spacePrefix(space2)}.chat.${ownerToken(owner2)}.${ownerToken(actor2)}.${channelPath(channel)}`}function isConcreteChannel(channel){return!channel.split(".").some(s=>s.trim()==="*"||s.trim()===">")}function subjectMatches(pattern,subject){const p=pattern.split(".");const s=subject.split(".");for(let i=0;i<p.length;i++){if(p[i]===">")return i<s.length;if(i>=s.length)return false;if(p[i]==="*")continue;if(p[i]!==s[i])return false}return p.length===s.length}function assertValidChannel(channel){if(channel.length>MAX_CHANNEL_LENGTH)throw new Error(`invalid channel "${channel.slice(0,32)}\u2026": ${channel.length} characters exceeds the ${MAX_CHANNEL_LENGTH}-character limit (every grant line a channel mints rides the CONNECT line)`);const segs=channel.split(".");if(!channel.length||segs.some(s=>s.length===0))throw new Error(`invalid channel "${channel}": empty segment (no leading/trailing/double dots)`);segs.forEach((s,i)=>{if(s===">"){if(i!==segs.length-1)throw new Error(`invalid channel "${channel}": '>' is only valid as the last segment`);return}if(s==="*")return;if(!/^[A-Za-z0-9_-]+$/.test(s))throw new Error(`invalid channel "${channel}": segment "${s}" must be a NATS-safe token ([A-Za-z0-9_-])${/[*>]/.test(s)?", '*', or '>'":""} - policy channel names can't contain characters the wire layer would rewrite`)});return channel}var MAX_CHANNEL_LENGTH=4096;function assertValidOwnerToken(owner2){if(typeof owner2!=="string"||!/^[A-Za-z0-9_]+$/.test(owner2))throw new Error(`invalid owner/actor token "${owner2}": must be a single NATS-safe token ([A-Za-z0-9_]) - no dots, '*', '>', or '-'. A separator or wildcard in an id is lane breakout or aliasing, and '-' is reserved as the principal name-form separator, so it is rejected rather than silently rewritten.`);return owner2}function principalKey(owner2,actor2){assertValidOwnerToken(owner2);assertValidOwnerToken(actor2);return{key:`${owner2}.${actor2}`,name:`${owner2}-${actor2}`}}var LIFECYCLE_TOKEN=/^[a-z0-9]{26,32}$/;function assertLifecycleToken(v,what="lifecycleUid"){if(!LIFECYCLE_TOKEN.test(v))throw new Error(`${what} "${v}" is not a valid lifecycle token ([a-z0-9]{26,32})`);return v}function mintLifecycleUid(){return assertLifecycleToken(BigInt(`0x${Array.from(globalThis.crypto.getRandomValues(new Uint8Array(20)),b=>b.toString(16).padStart(2,"0")).join("")}`).toString(36).padStart(26,"0"))}function lifecycleNameKey(owner2,actor2,lifecycleUid){return`${principalKey(owner2,actor2).name}-${assertLifecycleToken(lifecycleUid)}`}function parseLifecycleSubjectKey(key){if(typeof key!=="string")return null;const parts=key.split(".");if(parts.length!==3)return null;const[owner2,actor2,uid2]=parts;if(!/^[A-Za-z0-9_]+$/.test(owner2)||!/^[A-Za-z0-9_]+$/.test(actor2)||!LIFECYCLE_TOKEN.test(uid2))return null;return{owner:owner2,actor:actor2,lifecycleUid:uid2}}function parsePrincipalKey(key){if(typeof key!=="string")return null;const dot=key.indexOf(".");if(dot<=0||dot>=key.length-1)return null;const owner2=key.slice(0,dot);const actor2=key.slice(dot+1);if(!/^[A-Za-z0-9_]+$/.test(owner2)||!/^[A-Za-z0-9_]+$/.test(actor2))return null;return{owner:owner2,actor:actor2}}function assertInboxConnId(connId){if(typeof connId!=="string"||!/^[A-Za-z0-9_-]{8,120}$/.test(connId))throw new Error(`invalid connId/inbox nonce ${JSON.stringify(connId)} - must match [A-Za-z0-9_-]{8,120} (no subject metacharacters; guards the _INBOX_<connId>.> grant against wildcard escalation)`);return connId}var DEV_OWNER="local";var DERIVED_OWNER_PREFIX="u_";function assertDerivedOwnerToken(owner2){if(typeof owner2!=="string"||!/^u_[a-z2-7]{26}$/.test(owner2))throw new Error(`invalid derived owner token "${owner2}": expected "${DERIVED_OWNER_PREFIX}" + 26 lowercase base32 chars ([a-z2-7]). Owner tokens are derived server-side at the auth callout and are structurally disjoint from nkeys; anything else at an owner boundary is rejected, not rewritten.`);return owner2}function assertPrincipalOwnerToken(owner2,opts={}){if(opts.allowLocal&&owner2===DEV_OWNER)return owner2;if(opts.allowPlatform&&/^p_[a-z2-7]{26}$/.test(owner2))return owner2;try{return assertDerivedOwnerToken(owner2)}catch{throw new Error(`invalid principal owner "${owner2}" at a trust boundary: expected a derived owner (u_\u2026)${opts.allowLocal?` or the reserved dev owner "${DEV_OWNER}"`:""}${opts.allowPlatform?" or a platform owner (p_\u2026)":""} - an nkey-shaped or arbitrary token is not a real owner (flip criterion 2: owners are nkey-disjoint).`)}}function isPrincipalOwnerToken(owner2,opts={allowLocal:true}){try{assertPrincipalOwnerToken(owner2,{allowLocal:opts.allowLocal??true,allowPlatform:opts.allowPlatform??false});return true}catch{return false}}function channelInAllow(allow,channel){return allow.some(a=>subjectMatches(a,channel))}function resolveReadAcl(subscribe,allowSubscribe){const allow=allowSubscribe?.length?allowSubscribe:subscribe;for(const ch of subscribe)if(!channelInAllow(allow,ch))throw new Error(`subscribe "${ch}" is not within allowSubscribe [${allow.join(", ")}]`);return allow}function patternCovers(cap,pattern){const c=cap.split(".");const p=pattern.split(".");if(c.slice(0,-1).includes(">")||p.slice(0,-1).includes(">"))return false;for(let i=0;i<c.length;i++){if(c[i]===">")return p.length>i;if(i>=p.length)return false;if(p[i]===">")return false;if(c[i]==="*")continue;if(p[i]==="*")return false;if(c[i]!==p[i])return false}return c.length===p.length}function patternInAllow(allow,pattern){return allow.some(a=>patternCovers(a,pattern))}function unicastSubject(space2,recipOwner,recipActor,sndOwner,sndActor){return`${spacePrefix(space2)}.inst.${ownerToken(recipOwner)}.${ownerToken(recipActor)}.${ownerToken(sndOwner)}.${ownerToken(sndActor)}`}function unicastRecvFilter(space2,owner2,actor2){return`${spacePrefix(space2)}.inst.${ownerToken(owner2)}.${ownerToken(actor2)}.>`}function anycastSubject(space2,service,owner2,actor2){return`${spacePrefix(space2)}.svc.${routeToken(service)}.${ownerToken(owner2)}.${ownerToken(actor2)}`}function anycastServeFilter(space2,service){return`${spacePrefix(space2)}.svc.${routeToken(service)}.>`}function controlServiceSubject(space2,service,owner2,actor2){return`${spacePrefix(space2)}.ctl.${routeToken(service)}.${ownerToken(owner2)}.${ownerToken(actor2)}`}var CONTROL_DELIVERY="delivery";var CONTROL_DELIVERY_ADMIN="delivery-admin";var LIVENESS_ROUTE="live";function livenessSubject(space2,plane,owner2,actor2){return`${spacePrefix(space2)}.${LIVENESS_ROUTE}.${routeToken(plane)}.${ownerToken(owner2)}.${ownerToken(actor2)}`}function livenessServeFilter(space2,plane){return`${spacePrefix(space2)}.${LIVENESS_ROUTE}.${routeToken(plane)}.*.*`}function spaceWildcard(space2){return`${spacePrefix(space2)}.>`}function chatWildcard(space2){return`${spacePrefix(space2)}.chat.>`}function parseSubject(subject){const parts=subject.split(".");if(parts[0]!==ROOT)return null;const kind=parts[2];const mk=(kind2,owner2,actor2,rest)=>({kind:kind2,owner:owner2,actor:actor2,sender:`${owner2}.${actor2}`,rest});if(kind==="chat"){if(parts.length<6)return null;return mk(kind,parts[3],parts[4],parts.slice(5).join("."))}if(kind==="inst"){if(parts.length!==7)return null;return mk(kind,parts[5],parts[6],`${parts[3]}.${parts[4]}`)}if(kind==="svc"||kind==="ctl"){if(parts.length!==6)return null;return mk(kind,parts[4],parts[5],parts[3])}return null}function presenceBucket(space2){return`cotal_presence_${token(space2)}`}var PRESENCE_STATUSES={idle:true,waiting:true,working:true,offline:true};function presenceRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function presenceOptionalString(value){return value===void 0||typeof value==="string"}function isPresenceRow(value,key){return presenceRowProblem(value,key)===void 0}function presenceRowProblem(value,key){if(!presenceRecord(value))return"row";if(!presenceRecord(value.card))return"card";const card=value.card;if(typeof card.id!=="string"||card.id.length===0||card.id!==key)return"card.id";if(typeof card.name!=="string")return"card.name";if(!presenceOptionalString(card.role))return"card.role";if(typeof value.status!=="string"||!Object.hasOwn(PRESENCE_STATUSES,value.status))return"status";if(typeof value.ts!=="number"||!Number.isFinite(value.ts))return"ts";if(!presenceOptionalString(value.activity))return"activity";if(!presenceOptionalString(value.attention))return"attention";if(value.condition!==void 0){if(!presenceRecord(value.condition))return"condition";if(typeof value.condition.code!=="string")return"condition.code"}return void 0}function assertPresenceRow(value,key){const field=presenceRowProblem(value,key);if(field!==void 0)throw new TypeError(`invalid presence ${field}`)}function channelBucket(space2){return`cotal_channels_${token(space2)}`}var CHANNEL_DEFAULTS_KEY="=defaults";function membersBucket(space2){return`cotal_members_${token(space2)}`}function memberKey(channel,principal,lifecycleUid){return`${channel}/${principal}.${assertLifecycleToken(lifecycleUid)}`}function parseMemberKey(key){const i=key.indexOf("/");if(i<=0||i>=key.length-1)return null;const channel=key.slice(0,i);const tail=key.slice(i+1);const dot=tail.lastIndexOf(".");if(dot<=0||dot>=tail.length-1)return null;const principal=tail.slice(0,dot);const uid2=tail.slice(dot+1);if(!LIFECYCLE_TOKEN.test(uid2)||parsePrincipalKey(principal)===null)return null;return{channel,principal,lifecycleUid:uid2}}function aclBucket(space2){return`cotal_acl_${token(space2)}`}function aclKey(principal,lifecycleUid){return`${principal}.${assertLifecycleToken(lifecycleUid)}`}function aclAliasFilter(principal){return`${principal}.*`}function membershipBucket(space2){return`cotal_membership_${token(space2)}`}var MEMBERSHIP_FEED_KEY="=feed";function deliveryBucket(space2){return`cotal_delivery_${token(space2)}`}function leaseKey(shardIndex){return`lease.${shardIndex}`}function managerBucket(space2){return`cotal_manager_${token(space2)}`}var MANAGER_LEASE_KEY="lease";function managerLeaseKey(instanceId){return`${MANAGER_LEASE_KEY}.${instanceId}`}var MANAGER_RENEWAL_LEASE_KEY="renewal";function chatStream(space2){return`CHAT_${token(space2)}`}function dmStream(space2){return`DM_${token(space2)}`}function taskStream(space2){return`TASK_${token(space2)}`}function inboxStream(space2){return`INBOX_${token(space2)}`}function dlvStream(space2){return`DLV_${token(space2)}`}function dinboxSubject(space2,owner2,actor2,lifecycleUid){return`${spacePrefix(space2)}.dinbox.${ownerToken(owner2)}.${ownerToken(actor2)}.${assertLifecycleToken(lifecycleUid)}`}function dlvSubject(space2,owner2,actor2,lifecycleUid){return`${spacePrefix(space2)}.dlv.${ownerToken(owner2)}.${ownerToken(actor2)}.${assertLifecycleToken(lifecycleUid)}`}function parseDinboxPrincipal(subject){const parts=subject.split(".");return parts.length===6&&parts[0]===ROOT&&parts[2]==="dinbox"&&LIFECYCLE_TOKEN.test(parts[5])?{owner:parts[3],actor:parts[4],lifecycleUid:parts[5]}:null}function dlvDurable(owner2,actor2,lifecycleUid){return`dlv_${lifecycleNameKey(owner2,actor2,lifecycleUid)}`}var FANOUT_DURABLE="fanout";var INBOX_READER_DURABLE="reader";function fanoutDurable(shard=0,shards=1){return shards<=1?FANOUT_DURABLE:`${FANOUT_DURABLE}_${shard}`}function readerDurable(shard=0,shards=1){return shards<=1?INBOX_READER_DURABLE:`${INBOX_READER_DURABLE}_${shard}`}function chatHistDurable(owner2,actor2,lifecycleUid){return`chathist_${lifecycleNameKey(owner2,actor2,lifecycleUid)}`}var HISTORY_READERS=8;function historyReaderConsumer(readerId,slot){if(typeof readerId!=="string"||!/^[A-Za-z0-9_-]{1,120}$/.test(readerId))throw new Error(`history reader id ${JSON.stringify(readerId)} must match [A-Za-z0-9_-]{1,120}`);if(!Number.isInteger(slot)||slot<0||slot>=HISTORY_READERS)throw new Error(`history reader slot must be an integer in [0, ${HISTORY_READERS}), received ${slot}`);return`hist_${readerId}_${slot}`}function calloutReaderId(serverId,clientId){if(typeof serverId!=="string"||!/^N[A-Z2-7]{55}$/.test(serverId))throw new Error(`history reader server id ${JSON.stringify(serverId)} is not a server public key`);if(!Number.isSafeInteger(clientId)||clientId<1)throw new Error(`history reader client id must be a positive integer, received ${JSON.stringify(clientId)}`);return`${serverId}_${clientId}`}function dmDurable(owner2,actor2,lifecycleUid){return`dm_${lifecycleNameKey(owner2,actor2,lifecycleUid)}`}function taskDurable(service){return`svc_${assertValidRole(service)}`}var RESERVED_COMMANDS=Object.freeze(["describe","cancel"]);var ENDPOINT_LABEL=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/;var COMMAND=/^[a-z0-9-]{1,32}$/;var NONCE=/^[A-Za-z0-9_-]{22,64}$/;var ID=/^[A-Za-z0-9_-]{1,64}$/;var DIGEST_HEX=/^[a-f0-9]{64}$/;var EPOCH=/^(0|[1-9][0-9]*)$/;var GENERATION=/^[a-f0-9]{32}$/;function assertGeneration(generation,what="generation"){if(typeof generation!=="string"||!GENERATION.test(generation))throw new Error(`${what} is not an issued generation (32 lowercase hex characters)`);return generation}var MAX_EP_SUBJECT_BYTES=1024;function endpointToken(name){const labels=name.split(".");for(const l of labels){if(!ENDPOINT_LABEL.test(l))throw new Error(`endpoint name label "${l}" in "${name}" is not DNS-shaped ([a-z0-9]([a-z0-9-]*[a-z0-9])?)`)}const tok2=labels.join("_");if(tok2.length>64)throw new Error(`endpoint name token "${tok2}" exceeds 64 characters`);return tok2}function endpointNameOf(token2){return token2.split("_").join(".")}function assertCommandToken(command){if(!COMMAND.test(command))throw new Error(`command "${command}" is not a valid command token ([a-z0-9-]{1,32})`);return command}function assertNonce(nonce3){if(!NONCE.test(nonce3))throw new Error(`nonce is not a valid nonce token ([A-Za-z0-9_-]{22,64}; >=128 bits of CSPRNG entropy)`);return nonce3}function assertIdToken(v,what="id"){if(!ID.test(v))throw new Error(`${what} "${v}" is not a valid id token ([A-Za-z0-9_-]{1,64})`);return v}function assertPoolToken(pool){if(!COMMAND.test(pool))throw new Error(`pool "${pool}" is not a valid pool token ([a-z0-9-]{1,32})`);return pool}function assertBoundedOwner(v,what){assertValidOwnerToken(v);if(v.length>64)throw new Error(`${what} "${v}" exceeds 64 characters`);return v}function assertSized(subject){if(new TextEncoder().encode(subject).length>MAX_EP_SUBJECT_BYTES)throw new Error(`subject exceeds ${MAX_EP_SUBJECT_BYTES} bytes: ${subject.slice(0,80)}\u2026`);return subject}var EP_AUTHZ_MODES=Object.freeze(["self","owner","any","child","ledger","handle","exact"]);var AUTHZ_SET=new Set(EP_AUTHZ_MODES);function isEpAuthzMode(m){return AUTHZ_SET.has(m)}var TARGET_ARITY={self:0,owner:1,any:1,child:1,ledger:1,handle:3,exact:3};function targetTokens(target2){if(target2.mode==="self")return["self"];if(target2.mode==="handle"||target2.mode==="exact")return[target2.mode,assertBoundedOwner(target2.tOwner,"target owner"),assertBoundedOwner(target2.tActor,"target actor"),assertLifecycleToken(target2.tUid,"target lifecycleUid")];return[target2.mode,assertBoundedOwner(target2.tOwner,"target owner")]}function callerTokens(caller){return[assertBoundedOwner(caller.owner,"caller owner"),assertBoundedOwner(caller.actor,"caller actor"),assertLifecycleToken(caller.uid,"caller lifecycleUid")]}function epGoalProgressGrantRow(space2,endpoint,caller){return`${spacePrefix(space2)}.epe.${endpointToken(endpoint)}.*.*.goal.${callerTokens(caller).join(".")}.>`}function isIssuedCaller(caller){return typeof caller.generation==="string"}function callerRailTokens(caller){return isIssuedCaller(caller)?[...callerTokens(caller),assertGeneration(caller.generation,"caller generation")]:callerTokens(caller)}function epPlaneTokens(caller){return isIssuedCaller(caller)?["ep",EP_RAIL_V1]:["ep"]}var EP_RAIL_V1="v1";function requestHead(space2,plane,route,endpoint,command){const parts=[spacePrefix(space2),...plane,route.mode,endpointToken(endpoint)];if(route.mode==="inst")parts.push(route.instanceId);parts.push(assertCommandToken(command));return parts}function epRequestSubject(space2,req){const route=req.route.mode==="inst"?{mode:"inst",instanceId:assertLifecycleToken(req.route.instanceId,"instanceId")}:req.route;const parts=requestHead(space2,epPlaneTokens(req.caller),route,req.endpoint,req.command);if(req.target)parts.push(...targetTokens(req.target));parts.push(...callerRailTokens(req.caller),assertNonce(req.nonce));return assertSized(parts.join("."))}function epCallerReplyFilter(space2,caller){return`${spacePrefix(space2)}.${epPlaneTokens(caller).join(".")}.reply.*.*.*.${callerRailTokens(caller).join(".")}.*`}function epcSubject(space2,digestHex){if(!DIGEST_HEX.test(digestHex))throw new Error(`contract digest "${digestHex}" is not 64 lowercase hex chars`);return`${spacePrefix(space2)}.epc.${digestHex}`}function parseTail(parts,i,withNonce,issued=false){let target2=null;const disc=parts[i];if(disc!==void 0&&AUTHZ_SET.has(disc)){const mode=disc;const arity=TARGET_ARITY[mode];const t=parts.slice(i+1,i+1+arity);if(t.length!==arity)return null;target2=mode==="self"?{mode}:mode==="handle"||mode==="exact"?{mode,tOwner:t[0],tActor:t[1],tUid:t[2]}:{mode,tOwner:t[0]};i+=1+arity}const want=i+3+(issued?1:0)+(withNonce?1:0);if(parts.length!==want)return null;let caller={owner:parts[i],actor:parts[i+1],uid:parts[i+2]};if(issued){const generation=parts[i+3];try{assertGeneration(generation)}catch{return null}caller={...caller,generation};i+=1}return withNonce?{target:target2,caller,nonce:parts[i+3]}:{target:target2,caller}}function parseEpoch(tok2){if(!EPOCH.test(tok2))return null;const n=Number(tok2);return Number.isSafeInteger(n)?n:null}function parseEpSubject(subject){if(new TextEncoder().encode(subject).length>MAX_EP_SUBJECT_BYTES)return null;const parts=subject.split(".");if(parts[0]!==ROOT||parts.length<4)return null;const plane=parts[2];if(plane==="ep"){const issued=parts[3]===EP_RAIL_V1;const o=issued?1:0;const route=parts[3+o];const rail=issued?{rail:EP_RAIL_V1}:{};if(route==="one"||route==="all"){if(parts.length<10+o)return null;const tail=parseTail(parts,6+o,true,issued);if(!tail)return null;return{plane:"request",...rail,route,endpoint:endpointNameOf(parts[4+o]),command:parts[5+o],target:tail.target,caller:tail.caller,nonce:tail.nonce}}if(route==="inst"){if(parts.length<11+o)return null;const tail=parseTail(parts,7+o,true,issued);if(!tail)return null;return{plane:"request",...rail,route,endpoint:endpointNameOf(parts[4+o]),instanceId:parts[5+o],command:parts[6+o],target:tail.target,caller:tail.caller,nonce:tail.nonce}}if(route==="reply"){if(parts.length!==11+2*o)return null;const epoch=parseEpoch(parts[6+o]);if(epoch===null)return null;const triple={owner:parts[7+o],actor:parts[8+o],uid:parts[9+o]};if(!issued)return{plane:"reply",endpoint:endpointNameOf(parts[4]),instanceId:parts[5],epoch,caller:triple,nonce:parts[10]};const generation=parts[11];try{assertGeneration(generation)}catch{return null}return{plane:"reply",rail:EP_RAIL_V1,endpoint:endpointNameOf(parts[5]),instanceId:parts[6],epoch,caller:{...triple,generation},nonce:parts[12]}}return null}if(plane==="epe"){if(parts.length<7)return null;const epoch=parseEpoch(parts[5]);if(epoch===null)return null;return{plane:"event",endpoint:endpointNameOf(parts[3]),instanceId:parts[4],epoch,topic:parts.slice(6)}}if(plane==="epf"){if(parts.length<5)return null;return{plane:"fact",endpoint:endpointNameOf(parts[3]),topic:parts.slice(4)}}if(plane==="epj"){if(parts.length<8)return null;const tail=parseTail(parts,5,false);if(!tail)return null;return{plane:"journal",endpoint:endpointNameOf(parts[3]),command:parts[4],target:tail.target,caller:tail.caller}}if(plane==="ept"){if(parts.length!==8)return null;const epoch=parseEpoch(parts[5]);const phase=parts[7];if(epoch===null||phase!=="schedule"&&phase!=="armed"&&phase!=="fire")return null;return{plane:"timer",endpoint:endpointNameOf(parts[3]),instanceId:parts[4],epoch,timerId:parts[6],phase}}if(plane==="epr"){if(parts.length<7)return null;const epoch=parseEpoch(parts[5]);if(epoch===null)return null;return{plane:"record",endpoint:endpointNameOf(parts[3]),instanceId:parts[4],epoch,kind:parts[6],qualifier:parts.slice(7)}}if(plane==="epc"){if(parts.length!==4||!DIGEST_HEX.test(parts[3]))return null;return{plane:"contract",digestHex:parts[3]}}if(plane==="epw"){if(parts.length!==9)return null;return{plane:"work",endpoint:endpointNameOf(parts[3]),pool:parts[4],acceptance:{owner:parts[5],actor:parts[6],uid:parts[7],id:parts[8]}}}if(plane==="eps"){if(parts.length!==7)return null;const epoch=parseEpoch(parts[5]);const dir=parts[6];if(epoch===null||dir!=="in"&&dir!=="out")return null;return{plane:"session",endpoint:endpointNameOf(parts[3]),sessionId:parts[4],epoch,dir}}return null}import{createHash as createHash2}from"node:crypto";var import_json_canonicalize=__toESM(require_index_umd(),1);var DIGEST_PREFIX="sha256:";var DIGEST_RE=/^sha256:[0-9a-f]{64}$/;function isContractDigest(s){return DIGEST_RE.test(s)}function hasLoneSurrogate(s){for(let i=0;i<s.length;i++){const c=s.charCodeAt(i);if(c>=55296&&c<=56319){const n=s.charCodeAt(i+1);if(!(n>=56320&&n<=57343))return true;i++}else if(c>=56320&&c<=57343){return true}}return false}function interchangeableCopy(v,path){if(v===null)return null;switch(typeof v){case"string":if(hasLoneSurrogate(v))throw new Error(`canonicalJson: lone surrogate in string at ${path} (I-JSON violation)`);return v;case"number":if(!Number.isFinite(v))throw new Error(`canonicalJson: non-finite number at ${path}`);return v;case"boolean":return v;case"undefined":throw new Error(`canonicalJson: undefined at ${path} (strict mode never coerces to null)`);case"object":{if(Array.isArray(v)){if(Object.getPrototypeOf(v)!==Array.prototype)throw new Error(`canonicalJson: non-ordinary array at ${path} (a subclassed/exotic array canonicalizes through projections)`);const length=Object.getOwnPropertyDescriptor(v,"length")?.value;if(typeof length!=="number"||!Number.isInteger(length)||length<0)throw new Error(`canonicalJson: invalid array length at ${path} (refusing the projection)`);for(const k of Reflect.ownKeys(v)){if(typeof k!=="string")throw new Error(`canonicalJson: symbol-keyed own property on array at ${path} (invisible to canonicalization; refusing the projection)`);if(k==="length")continue;if(!/^(0|[1-9][0-9]*)$/.test(k)||Number(k)>=length)throw new Error(`canonicalJson: non-index own property "${k}" on array at ${path} (invisible to canonicalization; refusing the projection)`)}const copy2=[];for(let i=0;i<length;i++){const d=Object.getOwnPropertyDescriptor(v,i);if(d===void 0)throw new Error(`canonicalJson: hole at ${path}[${i}] (a hole would be coerced to null; refusing the projection)`);if(!d.enumerable||d.get!==void 0||d.set!==void 0)throw new Error(`canonicalJson: non-enumerable or accessor element at ${path}[${i}] (refusing the projection)`);copy2.push(interchangeableCopy(d.value,`${path}[${i}]`))}return copy2}const proto=Object.getPrototypeOf(v);if(proto!==Object.prototype&&proto!==null)throw new Error(`canonicalJson: non-plain object at ${path} (a class/exotic instance canonicalizes through projections like toJSON; only plain data objects are interchangeable)`);const copy=Object.create(null);for(const k of Reflect.ownKeys(v)){if(typeof k!=="string")throw new Error(`canonicalJson: symbol-keyed own property at ${path} (invisible to canonicalization; refusing the projection)`);if(hasLoneSurrogate(k))throw new Error(`canonicalJson: lone surrogate in key at ${path}.${k}`);const d=Object.getOwnPropertyDescriptor(v,k);if(!d.enumerable)throw new Error(`canonicalJson: non-enumerable own property "${k}" at ${path} (invisible to canonicalization; refusing the projection)`);if(d.get!==void 0||d.set!==void 0)throw new Error(`canonicalJson: accessor property "${k}" at ${path} (a getter is code, not data; refusing the projection)`);copy[k]=interchangeableCopy(d.value,`${path}.${k}`)}return copy}default:throw new Error(`canonicalJson: unsupported ${typeof v} at ${path}`)}}function canonicalJson(value){return(0,import_json_canonicalize.canonicalizeEx)(interchangeableCopy(value,"$"),{undefinedInArrayToNull:false})}function contractDigest(value){return DIGEST_PREFIX+createHash2("sha256").update(canonicalJson(value),"utf8").digest("hex")}var EP_ERROR_CODES=Object.freeze(["bad-request","unsupported-version","op-mismatch","class-mismatch","target-mismatch","sender-mismatch","unauthenticated","permission-denied","not-found","already-exists","conflict","contract-mismatch","contract-invalid","failed-precondition","deadline-exceeded","cancelled","expired","unavailable","unimplemented","resource-exhausted","internal"]);var EP_UNBOUND_RESPONDER="ai.cotal.ep.unbound-responder";function respondedButUnbound(e){return e instanceof EpEnvelopeError&&(e.details??[]).some(d=>d.kind===EP_UNBOUND_RESPONDER)}var EP_UNANSWERED="ai.cotal.ep.unanswered";function unansweredRequest(e){return e instanceof EpEnvelopeError&&(e.details??[]).some(d=>d.kind===EP_UNANSWERED)}var EP_UNDECLARED_ARG="ai.cotal.ep.undeclared-arg";var EP_BIND_REFUSED="ai.cotal.ep.bind-refused";function bindRefusalMarked(e){return(e?.details??[]).some(d=>d.kind===EP_BIND_REFUSED)}function replyRefusedBeforeEffect(e){if(!bindRefusalMarked(e))return false;return e?.outcome==="not-executed"}var EP_TARGET_UNMAPPED="ai.cotal.ep.target-unmapped";function replyTargetUnmapped(e){return e?.outcome==="not-executed"&&(e.details??[]).some(d=>d.kind===EP_TARGET_UNMAPPED)}var EP_LIFECYCLE_BLOCKED="ai.cotal.ep.lifecycle-blocked";function detailsOf(source){if(source instanceof EpEnvelopeError)return source.details;if(source&&typeof source==="object"&&Array.isArray(source.details))return source.details;return void 0}function lifecycleBlockedFrom(source){return detailsOf(source)?.find(d=>d.kind===EP_LIFECYCLE_BLOCKED)}function renderLifecycleBlocked(message,source){const d=lifecycleBlockedFrom(source);if(!d)return message;const parts=[`blockedOp=${d.blockedOp}`];for(const k of["headState","gateState","opId","remedy"]){const v=d[k];if(typeof v==="string"&&v.length>0)parts.push(`${k}=${v}`)}const suffix=`[lifecycle ${parts.join(" ")}]`;return message.includes(suffix)?message:`${message} ${suffix}`}var EpEnvelopeError=class extends Error{code;details;outcome;constructor(code,message,details,outcome){super(message);this.code=code;this.details=details;this.outcome=outcome;this.name="EpEnvelopeError"}toEpError(){return{code:this.code,message:this.message,...this.details?{details:this.details}:{},...this.outcome?{outcome:this.outcome}:{}}}};var import_jetstream2=__toESM(require_mod4(),1);var import_transport_node2=__toESM(require_transport_node(),1);var import_kv=__toESM(require_mod6(),1);var SCHEMA_PROFILE=Object.freeze({maxDocumentBytes:256*1024,maxClosureBytes:1024*1024,maxDepth:32,maxRefChain:32,compileBudgetMs:100,maxPatternChars:256,validateBudgetMs:10,compiledCacheEntries:256});var EP_ENVELOPE_V=1;var EP_ERROR_SET=new Set(EP_ERROR_CODES);var UTF8=new TextEncoder;var utf8Bytes=s=>UTF8.encode(s).length;var LABEL="[a-z0-9]([a-z0-9-]*[a-z0-9])?";var EXTENSION_CODE=new RegExp(`^${LABEL}(\\.${LABEL}){2,}$`);function isEpErrorCode(code){if(typeof code!=="string"||utf8Bytes(code)>64)return false;return EP_ERROR_SET.has(code)||EXTENSION_CODE.test(code)}function fail(code,message,outcome){throw new EpEnvelopeError(code,message,void 0,outcome)}function controlReplyFrom(reply){if(reply.ok)return{ok:true,...reply.data!==void 0?{data:reply.data}:{}};const{error:error51}=reply;if(!error51)throw new Error(`endpoint reply ${reply.id} failed without an error`);return{ok:false,error:renderLifecycleBlocked(error51.message,error51),code:error51.code,...reply.data!==void 0?{data:reply.data}:{},...error51.details?{details:error51.details}:{}}}function controlReplyFromThrown(e,message){return{ok:false,error:renderLifecycleBlocked(message,e),code:e.code,...e.details?{details:e.details}:{}}}function asRecord(v,what){if(v===null||typeof v!=="object"||Array.isArray(v))fail("bad-request",`${what} is not a JSON object`);return v}function asString(v,what){if(typeof v!=="string"||v.length===0)fail("bad-request",`${what} is not a non-empty string`);return v}function grammar(fn){try{return fn()}catch(e){fail("bad-request",e.message)}}function assertVersion(o,what){if(o.v!==EP_ENVELOPE_V)fail("unsupported-version",`${what} envelope version ${JSON.stringify(o.v)} is not ${EP_ENVELOPE_V}`)}function pickError(v){const e=asRecord(v,"error");const code=asString(e.code,"error.code");if(!isEpErrorCode(code))fail("bad-request",`error.code ${JSON.stringify(code)} is neither a catalog token nor a reverse-DNS extension token within 64 bytes`);const message=typeof e.message==="string"?e.message:fail("bad-request","error.message is not a string");let details;if(e.details!==void 0){if(!Array.isArray(e.details))fail("bad-request","error.details is not an array");details=e.details.map((d,i)=>{const o=asRecord(d,`error.details[${i}]`);const kind=asString(o.kind,`error.details[${i}].kind`);if(!EXTENSION_CODE.test(kind))fail("bad-request",`error.details[${i}].kind "${kind}" is not reverse-DNS namespaced`);return o})}let outcome;if(e.outcome!==void 0){if(e.outcome!=="executed"&&e.outcome!=="not-executed"&&e.outcome!=="unknown")fail("bad-request",`error.outcome ${JSON.stringify(e.outcome)} is not one of executed, not-executed, unknown (SPEC 13.3)`);outcome=e.outcome}return{code,message,...details?{details}:{},...outcome?{outcome}:{}}}function parseEndpointReply(raw){const o=asRecord(raw,"reply");assertVersion(o,"reply");const id2=grammar(()=>assertIdToken(asString(o.id,"id"),"id"));if(typeof o.ok!=="boolean")fail("bad-request","ok is not a boolean");if(o.ok&&o.error!==void 0)fail("bad-request","an ok reply must not carry an error");if(!o.ok&&o.data!==void 0)fail("bad-request","a failed reply must not carry data");const error51=o.ok?void 0:pickError(o.error);const receipt=o.receipt===void 0?void 0:asString(o.receipt,"receipt");return{v:EP_ENVELOPE_V,id:id2,ok:o.ok,...o.ok&&o.data!==void 0?{data:o.data}:{},...error51?{error:error51}:{},...receipt!==void 0?{receipt}:{}}}var cpuNow=()=>typeof process==="undefined"?void 0:process.cpuUsage();function reportValidateBudget(what,startedCpu,startedMs){if(startedCpu===void 0)return;const cpu=process.cpuUsage(startedCpu);const cpuMs=Math.round((cpu.user+cpu.system)/1e3);if(cpuMs<=SCHEMA_PROFILE.validateBudgetMs)return;console.error(`! schema: ${what} validation took ~${cpuMs}ms of process CPU (\xA713.8 reference budget ${SCHEMA_PROFILE.validateBudgetMs}ms; ${Date.now()-startedMs}ms elapsed). Approximate - process-wide CPU includes JIT/Worker threads. Not a refusal - and note that refusing HERE would not have helped: this fires after validate() completed, so the cost is already paid. Validation cost on this path is bounded by nothing pre-emptively; a byte/item bound before validate is owed.`)}function firstErrorDetail(first){if(!first)return"";const extra=typeof first.params?.additionalProperty==="string"?`: ${JSON.stringify(first.params.additionalProperty)}`:"";return`: ${first.instancePath||"/"} ${first.message??""}${extra}`}function assertArgsValid(validate2,args){const value=args===void 0?null:args;const startedCpu=cpuNow();const started=Date.now();const okValid=validate2(value);reportValidateBudget("args",startedCpu,started);if(!okValid){const first=validate2.errors?.[0];fail("bad-request",`args do not validate against the input schema${firstErrorDetail(first)}`,"not-executed")}return value}function assertOutputValid(validate2,data){const value=data===void 0?null:data;const startedCpu=cpuNow();const started=Date.now();const okValid=validate2(value);reportValidateBudget("output",startedCpu,started);if(!okValid){const first=validate2.errors?.[0];fail("internal",`output does not validate against the pinned output schema; an invalid reply is a responder bug, never success (SPEC 13.7)${firstErrorDetail(first)}`)}}function recordsBucket(space2){return`cotal_records_${token(space2)}`}var qEndpoint={name:"endpoint",assert:v=>endpointToken(v)};var qOwner=name=>({name,assert:v=>assertBoundedOwner(v,name)});var qUid=name=>({name,assert:v=>assertLifecycleToken(v,name)});var qId=name=>({name,assert:v=>assertIdToken(v,name)});var LIFECYCLE_HEAD={kind:"lifecycle",qualifiers:[qOwner("owner"),qOwner("actor")],split:false,writers:{spec:"minting-manager-commit",status:"minting-manager-commit"},mediation:"mediated"};var UID_RESERVATION={kind:"uid",qualifiers:[qUid("lifecycleUid")],split:false,writers:{spec:"minting-authority",status:"minting-authority"},mediation:"mediated"};var OBLIGATION_EP_SENTINEL="ep";var OBLIGATION={kind:"oblig",qualifiers:[{name:"targetUid",assert:v=>v===OBLIGATION_EP_SENTINEL?v:assertLifecycleToken(v,"targetUid")},qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("id")],split:false,writers:{spec:"admission-mediator",status:"admission-mediator"},mediation:"mediated"};var POLICY_VERSION={kind:"policy",qualifiers:[qEndpoint,{name:"digestHex",assert:v=>{if(!/^[0-9a-f]{64}$/.test(v))throw new Error(`policy digest ${JSON.stringify(v)} is not 64 lowercase hex chars (SPEC 13.7)`);return v}}],split:false,writers:{spec:"provisioner-registration",status:"provisioner-registration"},mediation:"mediated"};var RETIREMENT_FRONTIER={kind:"frontier",qualifiers:[qUid("lifecycleUid")],split:false,writers:{spec:"minting-authority",status:"minting-authority"},mediation:"mediated"};var GOVERN_HEAD={kind:"govern",qualifiers:[qEndpoint],split:false,writers:{spec:"provisioner-registration",status:"provisioner-registration"},mediation:"mediated"};var RECORD_KINDS={svc:{kind:"svc",qualifiers:[qEndpoint,qUid("instanceId")],split:true,writers:{spec:"provisioner-registration",status:"instance-commit-epoch-fenced"},mediation:"mediated"},signer:{kind:"signer",qualifiers:[qId("keyId")],split:true,writers:{spec:"operator-registry",status:"operator-registry"},mediation:"mediated"},handle:{kind:"handle",qualifiers:[qId("issuerKeyId"),qId("id")],split:true,writers:{spec:"issuer-create-only",status:"issuer-or-operator-monotonic"},mediation:"mediated"},contracts:{kind:"contracts",qualifiers:[qEndpoint],split:true,writers:{spec:"instance",status:"instance"},mediation:"direct"},goal:{kind:"goal",qualifiers:[qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("goalId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},goalidx:{kind:"goalidx",qualifiers:[qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("goalId")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},goaleff:{kind:"goaleff",qualifiers:[qEndpoint,qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("goalId"),qId("gen")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},epname:{kind:"epname",qualifiers:[qEndpoint,qId("nameToken")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},epmig:{kind:"epmig",qualifiers:[qEndpoint],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},cp:{kind:"cp",qualifiers:[qEndpoint,qId("token")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},lease:{kind:"lease",qualifiers:[qEndpoint,{name:"pool",assert:assertPoolToken},qOwner("cOwner"),qOwner("cActor"),qUid("cUid"),qId("id")],split:true,writers:{spec:"pool-owner-lease-command",status:"pool-owner-lease-command"},mediation:"mediated"},run:{kind:"run",qualifiers:[qEndpoint,qId("runId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},answer:{kind:"answer",qualifiers:[qEndpoint,qId("token"),qId("answerId")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},notice:{kind:"notice",qualifiers:[qEndpoint,qId("runId"),qId("addresseeId"),qId("noticeId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},program:{kind:"program",qualifiers:[qEndpoint,qId("runId")],split:false,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},migration:{kind:"migration",qualifiers:[qEndpoint,qId("runId"),qId("migrationId")],split:true,writers:{spec:"commit-path",status:"commit-path"},mediation:"mediated"},lifecycle:{kind:"lifecycle",qualifiers:[qOwner("owner"),qOwner("actor"),qUid("lifecycleUid")],split:true,writers:{spec:"minting-manager-commit",status:"minting-manager-commit"},mediation:"mediated"}};var AUTHORITY_KIND_DEFS=[LIFECYCLE_HEAD,UID_RESERVATION,GOVERN_HEAD,OBLIGATION,POLICY_VERSION,RETIREMENT_FRONTIER];function freezeDef(def){for(const q of def.qualifiers)Object.freeze(q);Object.freeze(def.qualifiers);Object.freeze(def.writers);return Object.freeze(def)}var registry=new Map;for(const def of[...Object.values(RECORD_KINDS),...AUTHORITY_KIND_DEFS]){freezeDef(def);const list=registry.get(def.kind)??[];list.push(def);registry.set(def.kind,list)}Object.freeze(AUTHORITY_KIND_DEFS);Object.freeze(RECORD_KINDS);var AUTHORITY_DEF_SET=new Set(AUTHORITY_KIND_DEFS);function isCasLoss(e){const code=e?.code;return code===10071||code===10164}var import_transport_node=__toESM(require_transport_node(),1);var IDEMPOTENCY_HORIZON_MS_DEFAULT=24*60*60*1e3;var RESULT_RETENTION_MS_DEFAULT=24*60*60*1e3;var RECEIPT_RETENTION_MS_DEFAULT=90*24*60*60*1e3;var import_jetstream=__toESM(require_mod4(),1);import{createHash as createHash3,randomBytes as randomBytes2}from"node:crypto";var dec=new TextDecoder("utf-8",{fatal:true});function assertIssuedSpace(space2){if(typeof space2!=="string"||space2.length===0||token(space2)!==space2)throw new Error("issued space must be a nonempty canonical subject token ([A-Za-z0-9_-])")}function refSnapshot(value){closed(value,["space","owner","actor","uid","generation"],"issued reference");assertIssuedSpace(value.space);callerTokens(value);assertGeneration(value.generation);return Object.freeze({space:value.space,owner:value.owner,actor:value.actor,uid:value.uid,generation:value.generation})}function closed(value,keys,label){if(value===null||typeof value!=="object"||Array.isArray(value)||Object.getPrototypeOf(value)!==Object.prototype&&Object.getPrototypeOf(value)!==null)throw new Error(`${label} must be a plain record`);for(const key of Reflect.ownKeys(value)){if(typeof key!=="string"||!keys.includes(key))throw new Error(`${label} carries an unsupported field ${String(key)}`);if(!Object.hasOwn(Object.getOwnPropertyDescriptor(value,key),"value"))throw new Error(`${label} cannot carry accessors`)}return value}function acceptedBucket(space2){return`cotal_accepted_${token(space2)}`}function acceptedKey(acceptedToken){return`accepted.v1.${assertGeneration(acceptedToken,"accepted token")}`}async function readAcceptedRow(nc,space2,acceptedToken,timeoutMs=3e3){const bucket=acceptedBucket(space2);const response=await nc.request(`$JS.API.DIRECT.GET.KV_${bucket}.$KV.${bucket}.${acceptedKey(acceptedToken)}`,new Uint8Array(0),{timeout:timeoutMs});const status2=response.headers?.get("Status");if(status2)throw new EpEnvelopeError("permission-denied",`no accepted row for this token (${status2}); the connection holds no issued authority (SPEC 13.15)`);const row=closed(JSON.parse(dec.decode(response.data)),["version","ref"],"accepted row");if(row.version!==1)throw new Error("unsupported accepted-row version");const ref=refSnapshot(row.ref);if(ref.space!==space2)throw new EpEnvelopeError("permission-denied","the accepted row names a foreign space");return ref}async function issuedCallerOfToken(nc,space2,acceptedToken,expected){const ref=await readAcceptedRow(nc,space2,acceptedToken);if(ref.owner!==expected.owner||ref.actor!==expected.actor||ref.uid!==expected.uid)throw new EpEnvelopeError("permission-denied",`this connection's accepted row names ${ref.owner}.${ref.actor}/${ref.uid}, not the caller ${expected.owner}.${expected.actor}/${expected.uid}; refused (SPEC 13.15)`);return{owner:ref.owner,actor:ref.actor,uid:ref.uid,generation:ref.generation}}var STATIC_GENERATION_HORIZON_SEC=30*24*60*60;function subjectToken(value,pattern){if(typeof value!=="string"||value.length===0||/\s/u.test(value)||[...value].some(ch=>ch.charCodeAt(0)<32||ch.charCodeAt(0)===127))throw new Error("a subject must be nonempty without whitespace or control characters; queue-qualified forms are not a ceiling entry");const parts=value.split(".");for(let i=0;i<parts.length;i++){const part=parts[i];if(!part||part.includes("*")&&(!pattern||part!=="*")||part.includes(">")&&(!pattern||part!==">"||i!==parts.length-1))throw new Error(`subject "${value}" has an invalid token or wildcard`)}return value}function patterns(value){if(!Array.isArray(value))throw new Error("subject patterns must be an explicit array");return Object.freeze(value.map(entry=>subjectToken(entry,true)))}function permission(allow,deny){return Object.freeze({allow:Object.freeze(allow),deny})}function readIssuedSubjectPermission(value){const raw=closed(value,["allow","deny"],"subject permission");const allow=closed(raw.allow,["mode","patterns"],"subject allow");const deny=patterns(raw.deny);if(allow.mode==="all"||allow.mode==="none"){if(Object.hasOwn(allow,"patterns"))throw new Error("only patterns mode carries a patterns field");return permission({mode:allow.mode},deny)}if(allow.mode!=="patterns")throw new Error("unsupported subject allow mode");const listed=patterns(allow.patterns);if(listed.length===0)throw new Error("patterns mode requires a nonempty list");return permission({mode:"patterns",patterns:listed},deny)}function importNativeSubjectPermissions(value){const raw=closed(value,["pub","sub"],"native permissions");const direction=v=>{if(v===void 0)return permission({mode:"all"},Object.freeze([]));const r=closed(v,["allow","deny"],"native subject permission");const allow=Object.hasOwn(r,"allow")?patterns(r.allow):Object.freeze([]);const deny=Object.hasOwn(r,"deny")?patterns(r.deny):Object.freeze([]);return permission(allow.length?{mode:"patterns",patterns:allow}:{mode:"all"},deny)};for(const key of["pub","sub"])if(Object.hasOwn(raw,key)&&raw[key]===void 0)throw new Error("an explicit native direction must not be undefined");return Object.freeze({publish:direction(raw.pub),subscribe:direction(raw.sub)})}function issuedPermitsSubject(value,concrete){const parsed=readIssuedSubjectPermission(value);subjectToken(concrete,false);if(parsed.deny.some(pattern=>subjectMatches(pattern,concrete)))return false;if(parsed.allow.mode==="none")return false;return parsed.allow.mode==="all"||parsed.allow.patterns.some(pattern=>subjectMatches(pattern,concrete))}var AUTHORITY_STORE_IMMUTABLE_FLAGS=Object.freeze({allow_rollup_hdrs:false,deny_delete:true,deny_purge:true});var WRITE_ONCE_PER_KEY=Object.freeze({max_msgs_per_subject:1,discard:import_jetstream.DiscardPolicy.New,discard_new_per_subject:true});var APPEND_ONLY_PER_KEY=Object.freeze({max_msgs_per_subject:-1});var ROW_TTL_RETENTION=Object.freeze({allow_msg_ttl:true});var enc=new TextEncoder;function connectionAcceptedToken(connId){if(typeof connId!=="string"||connId.length===0)throw new Error("connectionAcceptedToken: a connection nonce is required");return createHash3("sha256").update(`cotal.accepted.v1\0${connId}`).digest("hex").slice(0,32)}async function issuedUserCaller(nc,space2,connId,expected){return issuedCallerOfToken(nc,space2,connectionAcceptedToken(connId),expected)}function admissionBucket(space2){return`cotal_admission_${token(space2)}`}var enc2=new TextEncoder;var dec2=new TextDecoder("utf-8",{fatal:true});function admissionStoreDefinition(space2){return{bucket:admissionBucket(space2),createOptions:{allow_direct:false},hardenAfterCreate:{...AUTHORITY_STORE_IMMUTABLE_FLAGS,...WRITE_ONCE_PER_KEY}}}function epcStreamName(space2){return`EPC_${token(space2)}`}function wfjStreamName(space2){return`WFJ_${token(space2)}`}function epAuthBucket(space2){return`cotal_auth_${token(space2)}`}var EP_SUBMISSION_MAX_AGE_MS=24*60*60*1e3;var EP_EVENT_MAX_AGE_MS=24*60*60*1e3;var EP_INGRESS_MAX_AGE_MS=24*60*60*1e3;var EP_TIMER_MAX_AGE_MS=31*24*60*60*1e3;var EP_AUTH_MARKER_TTL_MS=60*60*1e3;function endpointAuthorityStoreDefinitions(space2){return{records:{bucket:recordsBucket(space2),createOptions:{allow_direct:true},hardenAfterCreate:AUTHORITY_STORE_IMMUTABLE_FLAGS},auth:{bucket:epAuthBucket(space2),createOptions:{allow_direct:false,markerTTL:EP_AUTH_MARKER_TTL_MS}}}}var AUTHORITY_HEAD_ARITY=new Map(AUTHORITY_KIND_DEFS.map(d=>[d.kind,1+d.qualifiers.length]));function recordsKvStreamName(space2){return`KV_${recordsBucket(space2)}`}var BASELINE_DELIVERY_ENDPOINT="delivery";var BASELINE_DELIVERY_COMMANDS=Object.freeze(["join","leave","list"]);var BASELINE_LIFECYCLE_ENDPOINT="manager";var BASELINE_SELF_LIFECYCLE_COMMANDS=Object.freeze(["stop","turn-participate","turn-pending","turn-yield","run-answer"]);var SPAWN_CREATE_COMMANDS=Object.freeze(["spawn","resolve-agent"]);var SPAWN_OWNER_LIFECYCLE_COMMANDS=Object.freeze(["despawn","attach"]);var OPERATOR_SEAT_COMMANDS=Object.freeze(["input","turn"]);var SPAWN_SERVICE_COMMANDS=Object.freeze(["define-persona","remove-persona","inspect","list-personas","show-persona","goal-result"]);var RUN_WRITE_COMMANDS=Object.freeze(["run-start","run-resume","run-start-keyed","run-submission-status","run-cancel"]);var RUN_READ_COMMANDS=Object.freeze(["run-status","run-ps"]);var CHAT_SESSION_COMMANDS=Object.freeze(["chat-session-open","chat-session-retire"]);var MANAGER_READ_COMMANDS=Object.freeze(["status","ps","slots","inspect","models","list-personas","show-persona","goal-result"]);var MANAGER_ADMIN_COMMANDS=Object.freeze(["purge","launch","resume-preserved","commit-resume","finalize-resume","prepare-preservation","commit-preservation","abort-preservation","transcript-receive"]);var GOAL_BEARING_COMMANDS=Object.freeze(["spawn","launch"]);var GOAL_BEARING_SET=new Set(GOAL_BEARING_COMMANDS);var REPEAT_SAFE_COMMANDS=Object.freeze({[BASELINE_LIFECYCLE_ENDPOINT]:Object.freeze(["status","ps","slots","inspect","list-personas","show-persona","run-status","run-ps","goal-result"]),[BASELINE_DELIVERY_ENDPOINT]:Object.freeze(["list"])});var REPEAT_SAFE_ANY_ENDPOINT="describe";var REPEAT_SAFE_SNAP=new Map(Object.entries(REPEAT_SAFE_COMMANDS).map(([endpoint,commands])=>[endpoint,new Set(commands)]));function isRepeatSafeCommand(endpoint,command){if(command===REPEAT_SAFE_ANY_ENDPOINT)return true;return REPEAT_SAFE_SNAP.get(endpoint)?.has(command)===true}var DELIVERY_COMMANDS_SNAP=Object.freeze([...BASELINE_DELIVERY_COMMANDS]);var SELF_LIFECYCLE_SNAP=Object.freeze([...BASELINE_SELF_LIFECYCLE_COMMANDS]);var SPAWN_CREATE_SNAP=Object.freeze([...SPAWN_CREATE_COMMANDS]);var SPAWN_OWNER_SNAP=Object.freeze([...SPAWN_OWNER_LIFECYCLE_COMMANDS]);var OPERATOR_SEAT_SNAP=Object.freeze([...OPERATOR_SEAT_COMMANDS]);var SPAWN_SERVICE_SNAP=Object.freeze([...SPAWN_SERVICE_COMMANDS]);var RUN_WRITE_SNAP=Object.freeze([...RUN_WRITE_COMMANDS]);var RUN_READ_SNAP=Object.freeze([...RUN_READ_COMMANDS]);var CHAT_SESSION_SNAP=Object.freeze([...CHAT_SESSION_COMMANDS]);var MANAGER_READ_SNAP=Object.freeze([...MANAGER_READ_COMMANDS]);var MANAGER_ADMIN_SNAP=Object.freeze([...MANAGER_ADMIN_COMMANDS]);var import_nkeys3=__toESM(require_mod(),1);var import_nkeys5=__toESM(require_mod(),1);import{createHash as createHash4}from"node:crypto";var Types;(function(Types2){Types2["Operator"]="operator";Types2["Account"]="account";Types2["User"]="user";Types2["Activation"]="activation";Types2["AuthorizationResponse"]="authorization_response"})(Types||(Types={}));(function(nacl2){"use strict";var u64=function(h,l){this.hi=h|0>>>0;this.lo=l|0>>>0};var gf=function(init){var i,r=new Float64Array(16);if(init)for(i=0;i<init.length;i++)r[i]=init[i];return r};var randombytes=function(){throw new Error("no PRNG")};var _0=new Uint8Array(16);var _9=new Uint8Array(32);_9[0]=9;var gf0=gf(),gf1=gf([1]),_121665=gf([56129,1]),D=gf([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),D2=gf([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),X=gf([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),Y=gf([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),I=gf([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function L32(x,c){return x<<c|x>>>32-c}function ld32(x,i){var u=x[i+3]&255;u=u<<8|x[i+2]&255;u=u<<8|x[i+1]&255;return u<<8|x[i+0]&255}function dl64(x,i){var h=x[i]<<24|x[i+1]<<16|x[i+2]<<8|x[i+3];var l=x[i+4]<<24|x[i+5]<<16|x[i+6]<<8|x[i+7];return new u64(h,l)}function st32(x,j,u){var i;for(i=0;i<4;i++){x[j+i]=u&255;u>>>=8}}function ts64(x,i,u){x[i]=u.hi>>24&255;x[i+1]=u.hi>>16&255;x[i+2]=u.hi>>8&255;x[i+3]=u.hi&255;x[i+4]=u.lo>>24&255;x[i+5]=u.lo>>16&255;x[i+6]=u.lo>>8&255;x[i+7]=u.lo&255}function vn(x,xi,y,yi,n){var i,d=0;for(i=0;i<n;i++)d|=x[xi+i]^y[yi+i];return(1&d-1>>>8)-1}function crypto_verify_16(x,xi,y,yi){return vn(x,xi,y,yi,16)}function crypto_verify_32(x,xi,y,yi){return vn(x,xi,y,yi,32)}function core(out,inp,k,c,h){var w=new Uint32Array(16),x=new Uint32Array(16),y=new Uint32Array(16),t=new Uint32Array(4);var i,j,m;for(i=0;i<4;i++){x[5*i]=ld32(c,4*i);x[1+i]=ld32(k,4*i);x[6+i]=ld32(inp,4*i);x[11+i]=ld32(k,16+4*i)}for(i=0;i<16;i++)y[i]=x[i];for(i=0;i<20;i++){for(j=0;j<4;j++){for(m=0;m<4;m++)t[m]=x[(5*j+4*m)%16];t[1]^=L32(t[0]+t[3]|0,7);t[2]^=L32(t[1]+t[0]|0,9);t[3]^=L32(t[2]+t[1]|0,13);t[0]^=L32(t[3]+t[2]|0,18);for(m=0;m<4;m++)w[4*j+(j+m)%4]=t[m]}for(m=0;m<16;m++)x[m]=w[m]}if(h){for(i=0;i<16;i++)x[i]=x[i]+y[i]|0;for(i=0;i<4;i++){x[5*i]=x[5*i]-ld32(c,4*i)|0;x[6+i]=x[6+i]-ld32(inp,4*i)|0}for(i=0;i<4;i++){st32(out,4*i,x[5*i]);st32(out,16+4*i,x[6+i])}}else{for(i=0;i<16;i++)st32(out,4*i,x[i]+y[i]|0)}}function crypto_core_salsa20(out,inp,k,c){core(out,inp,k,c,false);return 0}function crypto_core_hsalsa20(out,inp,k,c){core(out,inp,k,c,true);return 0}var sigma=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k){var z2=new Uint8Array(16),x=new Uint8Array(64);var u,i;if(!b)return 0;for(i=0;i<16;i++)z2[i]=0;for(i=0;i<8;i++)z2[i]=n[i];while(b>=64){crypto_core_salsa20(x,z2,k,sigma);for(i=0;i<64;i++)c[cpos+i]=(m?m[mpos+i]:0)^x[i];u=1;for(i=8;i<16;i++){u=u+(z2[i]&255)|0;z2[i]=u&255;u>>>=8}b-=64;cpos+=64;if(m)mpos+=64}if(b>0){crypto_core_salsa20(x,z2,k,sigma);for(i=0;i<b;i++)c[cpos+i]=(m?m[mpos+i]:0)^x[i]}return 0}function crypto_stream_salsa20(c,cpos,d,n,k){return crypto_stream_salsa20_xor(c,cpos,null,0,d,n,k)}function crypto_stream(c,cpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);return crypto_stream_salsa20(c,cpos,d,n.subarray(16),s)}function crypto_stream_xor(c,cpos,m,mpos,d,n,k){var s=new Uint8Array(32);crypto_core_hsalsa20(s,n,k,sigma);return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,n.subarray(16),s)}function add1305(h,c){var j,u=0;for(j=0;j<17;j++){u=u+(h[j]+c[j]|0)|0;h[j]=u&255;u>>>=8}}var minusp=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function crypto_onetimeauth(out,outpos,m,mpos,n,k){var s,i,j,u;var x=new Uint32Array(17),r=new Uint32Array(17),h=new Uint32Array(17),c=new Uint32Array(17),g=new Uint32Array(17);for(j=0;j<17;j++)r[j]=h[j]=0;for(j=0;j<16;j++)r[j]=k[j];r[3]&=15;r[4]&=252;r[7]&=15;r[8]&=252;r[11]&=15;r[12]&=252;r[15]&=15;while(n>0){for(j=0;j<17;j++)c[j]=0;for(j=0;j<16&&j<n;++j)c[j]=m[mpos+j];c[j]=1;mpos+=j;n-=j;add1305(h,c);for(i=0;i<17;i++){x[i]=0;for(j=0;j<17;j++)x[i]=x[i]+h[j]*(j<=i?r[i-j]:320*r[i+17-j]|0)|0|0}for(i=0;i<17;i++)h[i]=x[i];u=0;for(j=0;j<16;j++){u=u+h[j]|0;h[j]=u&255;u>>>=8}u=u+h[16]|0;h[16]=u&3;u=5*(u>>>2)|0;for(j=0;j<16;j++){u=u+h[j]|0;h[j]=u&255;u>>>=8}u=u+h[16]|0;h[16]=u}for(j=0;j<17;j++)g[j]=h[j];add1305(h,minusp);s=-(h[16]>>>7)|0;for(j=0;j<17;j++)h[j]^=s&(g[j]^h[j]);for(j=0;j<16;j++)c[j]=k[j+16];c[16]=0;add1305(h,c);for(j=0;j<16;j++)out[outpos+j]=h[j];return 0}function crypto_onetimeauth_verify(h,hpos,m,mpos,n,k){var x=new Uint8Array(16);crypto_onetimeauth(x,0,m,mpos,n,k);return crypto_verify_16(h,hpos,x,0)}function crypto_secretbox(c,m,d,n,k){var i;if(d<32)return-1;crypto_stream_xor(c,0,m,0,d,n,k);crypto_onetimeauth(c,16,c,32,d-32,c);for(i=0;i<16;i++)c[i]=0;return 0}function crypto_secretbox_open(m,c,d,n,k){var i;var x=new Uint8Array(32);if(d<32)return-1;crypto_stream(x,0,32,n,k);if(crypto_onetimeauth_verify(c,16,c,32,d-32,x)!==0)return-1;crypto_stream_xor(m,0,c,0,d,n,k);for(i=0;i<32;i++)m[i]=0;return 0}function set25519(r,a){var i;for(i=0;i<16;i++)r[i]=a[i]|0}function car25519(o){var c;var i;for(i=0;i<16;i++){o[i]+=65536;c=Math.floor(o[i]/65536);o[(i+1)*(i<15?1:0)]+=c-1+37*(c-1)*(i===15?1:0);o[i]-=c*65536}}function sel25519(p,q,b){var t,c=~(b-1);for(var i=0;i<16;i++){t=c&(p[i]^q[i]);p[i]^=t;q[i]^=t}}function pack25519(o,n){var i,j,b;var m=gf(),t=gf();for(i=0;i<16;i++)t[i]=n[i];car25519(t);car25519(t);car25519(t);for(j=0;j<2;j++){m[0]=t[0]-65517;for(i=1;i<15;i++){m[i]=t[i]-65535-(m[i-1]>>16&1);m[i-1]&=65535}m[15]=t[15]-32767-(m[14]>>16&1);b=m[15]>>16&1;m[14]&=65535;sel25519(t,m,1-b)}for(i=0;i<16;i++){o[2*i]=t[i]&255;o[2*i+1]=t[i]>>8}}function neq25519(a,b){var c=new Uint8Array(32),d=new Uint8Array(32);pack25519(c,a);pack25519(d,b);return crypto_verify_32(c,0,d,0)}function par25519(a){var d=new Uint8Array(32);pack25519(d,a);return d[0]&1}function unpack25519(o,n){var i;for(i=0;i<16;i++)o[i]=n[2*i]+(n[2*i+1]<<8);o[15]&=32767}function A(o,a,b){var i;for(i=0;i<16;i++)o[i]=a[i]+b[i]|0}function Z(o,a,b){var i;for(i=0;i<16;i++)o[i]=a[i]-b[i]|0}function M(o,a,b){var i,j,t=new Float64Array(31);for(i=0;i<31;i++)t[i]=0;for(i=0;i<16;i++){for(j=0;j<16;j++){t[i+j]+=a[i]*b[j]}}for(i=0;i<15;i++){t[i]+=38*t[i+16]}for(i=0;i<16;i++)o[i]=t[i];car25519(o);car25519(o)}function S(o,a){M(o,a,a)}function inv25519(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=253;a>=0;a--){S(c,c);if(a!==2&&a!==4)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function pow2523(o,i){var c=gf();var a;for(a=0;a<16;a++)c[a]=i[a];for(a=250;a>=0;a--){S(c,c);if(a!==1)M(c,c,i)}for(a=0;a<16;a++)o[a]=c[a]}function crypto_scalarmult(q,n,p){var z2=new Uint8Array(32);var x=new Float64Array(80),r,i;var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf();for(i=0;i<31;i++)z2[i]=n[i];z2[31]=n[31]&127|64;z2[0]&=248;unpack25519(x,p);for(i=0;i<16;i++){b[i]=x[i];d[i]=a[i]=c[i]=0}a[0]=d[0]=1;for(i=254;i>=0;--i){r=z2[i>>>3]>>>(i&7)&1;sel25519(a,b,r);sel25519(c,d,r);A(e,a,c);Z(a,a,c);A(c,b,d);Z(b,b,d);S(d,e);S(f,a);M(a,c,a);M(c,b,e);A(e,a,c);Z(a,a,c);S(b,a);Z(c,d,f);M(a,c,_121665);A(a,a,d);M(c,c,a);M(a,d,f);M(d,b,x);S(b,e);sel25519(a,b,r);sel25519(c,d,r)}for(i=0;i<16;i++){x[i+16]=a[i];x[i+32]=c[i];x[i+48]=b[i];x[i+64]=d[i]}var x32=x.subarray(32);var x16=x.subarray(16);inv25519(x32,x32);M(x16,x16,x32);pack25519(q,x16);return 0}function crypto_scalarmult_base(q,n){return crypto_scalarmult(q,n,_9)}function crypto_box_keypair(y,x){randombytes(x,32);return crypto_scalarmult_base(y,x)}function crypto_box_beforenm(k,y,x){var s=new Uint8Array(32);crypto_scalarmult(s,x,y);return crypto_core_hsalsa20(k,_0,s,sigma)}var crypto_box_afternm=crypto_secretbox;var crypto_box_open_afternm=crypto_secretbox_open;function crypto_box(c,m,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_afternm(c,m,d,n,k)}function crypto_box_open(m,c,d,n,y,x){var k=new Uint8Array(32);crypto_box_beforenm(k,y,x);return crypto_box_open_afternm(m,c,d,n,k)}function add64(){var a=0,b=0,c=0,d=0,m16=65535,l,h,i;for(i=0;i<arguments.length;i++){l=arguments[i].lo;h=arguments[i].hi;a+=l&m16;b+=l>>>16;c+=h&m16;d+=h>>>16}b+=a>>>16;c+=b>>>16;d+=c>>>16;return new u64(c&m16|d<<16,a&m16|b<<16)}function shr64(x,c){return new u64(x.hi>>>c,x.lo>>>c|x.hi<<32-c)}function xor64(){var l=0,h=0,i;for(i=0;i<arguments.length;i++){l^=arguments[i].lo;h^=arguments[i].hi}return new u64(h,l)}function R(x,c){var h,l,c1=32-c;if(c<32){h=x.hi>>>c|x.lo<<c1;l=x.lo>>>c|x.hi<<c1}else if(c<64){h=x.lo>>>c|x.hi<<c1;l=x.hi>>>c|x.lo<<c1}return new u64(h,l)}function Ch(x,y,z2){var h=x.hi&y.hi^~x.hi&z2.hi,l=x.lo&y.lo^~x.lo&z2.lo;return new u64(h,l)}function Maj(x,y,z2){var h=x.hi&y.hi^x.hi&z2.hi^y.hi&z2.hi,l=x.lo&y.lo^x.lo&z2.lo^y.lo&z2.lo;return new u64(h,l)}function Sigma0(x){return xor64(R(x,28),R(x,34),R(x,39))}function Sigma1(x){return xor64(R(x,14),R(x,18),R(x,41))}function sigma0(x){return xor64(R(x,1),R(x,8),shr64(x,7))}function sigma1(x){return xor64(R(x,19),R(x,61),shr64(x,6))}var K=[new u64(1116352408,3609767458),new u64(1899447441,602891725),new u64(3049323471,3964484399),new u64(3921009573,2173295548),new u64(961987163,4081628472),new u64(1508970993,3053834265),new u64(2453635748,2937671579),new u64(2870763221,3664609560),new u64(3624381080,2734883394),new u64(310598401,1164996542),new u64(607225278,1323610764),new u64(1426881987,3590304994),new u64(1925078388,4068182383),new u64(2162078206,991336113),new u64(2614888103,633803317),new u64(3248222580,3479774868),new u64(3835390401,2666613458),new u64(4022224774,944711139),new u64(264347078,2341262773),new u64(604807628,2007800933),new u64(770255983,1495990901),new u64(1249150122,1856431235),new u64(1555081692,3175218132),new u64(1996064986,2198950837),new u64(2554220882,3999719339),new u64(2821834349,766784016),new u64(2952996808,2566594879),new u64(3210313671,3203337956),new u64(3336571891,1034457026),new u64(3584528711,2466948901),new u64(113926993,3758326383),new u64(338241895,168717936),new u64(666307205,1188179964),new u64(773529912,1546045734),new u64(1294757372,1522805485),new u64(1396182291,2643833823),new u64(1695183700,2343527390),new u64(1986661051,1014477480),new u64(2177026350,1206759142),new u64(2456956037,344077627),new u64(2730485921,1290863460),new u64(2820302411,3158454273),new u64(3259730800,3505952657),new u64(3345764771,106217008),new u64(3516065817,3606008344),new u64(3600352804,1432725776),new u64(4094571909,1467031594),new u64(275423344,851169720),new u64(430227734,3100823752),new u64(506948616,1363258195),new u64(659060556,3750685593),new u64(883997877,3785050280),new u64(958139571,3318307427),new u64(1322822218,3812723403),new u64(1537002063,2003034995),new u64(1747873779,3602036899),new u64(1955562222,1575990012),new u64(2024104815,1125592928),new u64(2227730452,2716904306),new u64(2361852424,442776044),new u64(2428436474,593698344),new u64(2756734187,3733110249),new u64(3204031479,2999351573),new u64(3329325298,3815920427),new u64(3391569614,3928383900),new u64(3515267271,566280711),new u64(3940187606,3454069534),new u64(4118630271,4000239992),new u64(116418474,1914138554),new u64(174292421,2731055270),new u64(289380356,3203993006),new u64(460393269,320620315),new u64(685471733,587496836),new u64(852142971,1086792851),new u64(1017036298,365543100),new u64(1126000580,2618297676),new u64(1288033470,3409855158),new u64(1501505948,4234509866),new u64(1607167915,987167468),new u64(1816402316,1246189591)];function crypto_hashblocks(x,m,n){var z2=[],b=[],a=[],w=[],t,i,j;for(i=0;i<8;i++)z2[i]=a[i]=dl64(x,8*i);var pos=0;while(n>=128){for(i=0;i<16;i++)w[i]=dl64(m,8*i+pos);for(i=0;i<80;i++){for(j=0;j<8;j++)b[j]=a[j];t=add64(a[7],Sigma1(a[4]),Ch(a[4],a[5],a[6]),K[i],w[i%16]);b[7]=add64(t,Sigma0(a[0]),Maj(a[0],a[1],a[2]));b[3]=add64(b[3],t);for(j=0;j<8;j++)a[(j+1)%8]=b[j];if(i%16===15){for(j=0;j<16;j++){w[j]=add64(w[j],w[(j+9)%16],sigma0(w[(j+1)%16]),sigma1(w[(j+14)%16]))}}}for(i=0;i<8;i++){a[i]=add64(a[i],z2[i]);z2[i]=a[i]}pos+=128;n-=128}for(i=0;i<8;i++)ts64(x,8*i,z2[i]);return n}var iv=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function crypto_hash(out,m,n){var h=new Uint8Array(64),x=new Uint8Array(256);var i,b=n;for(i=0;i<64;i++)h[i]=iv[i];crypto_hashblocks(h,m,n);n%=128;for(i=0;i<256;i++)x[i]=0;for(i=0;i<n;i++)x[i]=m[b-n+i];x[n]=128;n=256-128*(n<112?1:0);x[n-9]=0;ts64(x,n-8,new u64(b/536870912|0,b<<3));crypto_hashblocks(h,x,n);for(i=0;i<64;i++)out[i]=h[i];return 0}function add(p,q){var a=gf(),b=gf(),c=gf(),d=gf(),e=gf(),f=gf(),g=gf(),h=gf(),t=gf();Z(a,p[1],p[0]);Z(t,q[1],q[0]);M(a,a,t);A(b,p[0],p[1]);A(t,q[0],q[1]);M(b,b,t);M(c,p[3],q[3]);M(c,c,D2);M(d,p[2],q[2]);A(d,d,d);Z(e,b,a);Z(f,d,c);A(g,d,c);A(h,b,a);M(p[0],e,f);M(p[1],h,g);M(p[2],g,f);M(p[3],e,h)}function cswap(p,q,b){var i;for(i=0;i<4;i++){sel25519(p[i],q[i],b)}}function pack(r,p){var tx=gf(),ty=gf(),zi=gf();inv25519(zi,p[2]);M(tx,p[0],zi);M(ty,p[1],zi);pack25519(r,ty);r[31]^=par25519(tx)<<7}function scalarmult(p,q,s){var b,i;set25519(p[0],gf0);set25519(p[1],gf1);set25519(p[2],gf1);set25519(p[3],gf0);for(i=255;i>=0;--i){b=s[i/8|0]>>(i&7)&1;cswap(p,q,b);add(q,p);add(p,p);cswap(p,q,b)}}function scalarbase(p,s){var q=[gf(),gf(),gf(),gf()];set25519(q[0],X);set25519(q[1],Y);set25519(q[2],gf1);M(q[3],X,Y);scalarmult(p,q,s)}function crypto_sign_keypair(pk,sk,seeded){var d=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()];var i;if(!seeded)randombytes(sk,32);crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;scalarbase(p,d);pack(pk,p);for(i=0;i<32;i++)sk[i+32]=pk[i];return 0}var L=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function modL(r,x){var carry,i,j,k;for(i=63;i>=32;--i){carry=0;for(j=i-32,k=i-12;j<k;++j){x[j]+=carry-16*x[i]*L[j-(i-32)];carry=Math.floor((x[j]+128)/256);x[j]-=carry*256}x[j]+=carry;x[i]=0}carry=0;for(j=0;j<32;j++){x[j]+=carry-(x[31]>>4)*L[j];carry=x[j]>>8;x[j]&=255}for(j=0;j<32;j++)x[j]-=carry*L[j];for(i=0;i<32;i++){x[i+1]+=x[i]>>8;r[i]=x[i]&255}}function reduce(r){var x=new Float64Array(64),i;for(i=0;i<64;i++)x[i]=r[i];for(i=0;i<64;i++)r[i]=0;modL(r,x)}function crypto_sign(sm,m,n,sk){var d=new Uint8Array(64),h=new Uint8Array(64),r=new Uint8Array(64);var i,j,x=new Float64Array(64);var p=[gf(),gf(),gf(),gf()];crypto_hash(d,sk,32);d[0]&=248;d[31]&=127;d[31]|=64;var smlen=n+64;for(i=0;i<n;i++)sm[64+i]=m[i];for(i=0;i<32;i++)sm[32+i]=d[32+i];crypto_hash(r,sm.subarray(32),n+32);reduce(r);scalarbase(p,r);pack(sm,p);for(i=32;i<64;i++)sm[i]=sk[i];crypto_hash(h,sm,n+64);reduce(h);for(i=0;i<64;i++)x[i]=0;for(i=0;i<32;i++)x[i]=r[i];for(i=0;i<32;i++){for(j=0;j<32;j++){x[i+j]+=h[i]*d[j]}}modL(sm.subarray(32),x);return smlen}function unpackneg(r,p){var t=gf(),chk=gf(),num=gf(),den=gf(),den2=gf(),den4=gf(),den6=gf();set25519(r[2],gf1);unpack25519(r[1],p);S(num,r[1]);M(den,num,D);Z(num,num,r[2]);A(den,r[2],den);S(den2,den);S(den4,den2);M(den6,den4,den2);M(t,den6,num);M(t,t,den);pow2523(t,t);M(t,t,num);M(t,t,den);M(t,t,den);M(r[0],t,den);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))M(r[0],r[0],I);S(chk,r[0]);M(chk,chk,den);if(neq25519(chk,num))return-1;if(par25519(r[0])===p[31]>>7)Z(r[0],gf0,r[0]);M(r[3],r[0],r[1]);return 0}function crypto_sign_open(m,sm,n,pk){var i;var t=new Uint8Array(32),h=new Uint8Array(64);var p=[gf(),gf(),gf(),gf()],q=[gf(),gf(),gf(),gf()];if(n<64)return-1;if(unpackneg(q,pk))return-1;for(i=0;i<n;i++)m[i]=sm[i];for(i=0;i<32;i++)m[i+32]=pk[i];crypto_hash(h,m,n);reduce(h);scalarmult(p,q,h);scalarbase(q,sm.subarray(32));add(p,q);pack(t,p);n-=64;if(crypto_verify_32(sm,0,t,0)){for(i=0;i<n;i++)m[i]=0;return-1}for(i=0;i<n;i++)m[i]=sm[i+64];return n}var crypto_secretbox_KEYBYTES=32,crypto_secretbox_NONCEBYTES=24,crypto_secretbox_ZEROBYTES=32,crypto_secretbox_BOXZEROBYTES=16,crypto_scalarmult_BYTES=32,crypto_scalarmult_SCALARBYTES=32,crypto_box_PUBLICKEYBYTES=32,crypto_box_SECRETKEYBYTES=32,crypto_box_BEFORENMBYTES=32,crypto_box_NONCEBYTES=crypto_secretbox_NONCEBYTES,crypto_box_ZEROBYTES=crypto_secretbox_ZEROBYTES,crypto_box_BOXZEROBYTES=crypto_secretbox_BOXZEROBYTES,crypto_sign_BYTES=64,crypto_sign_PUBLICKEYBYTES=32,crypto_sign_SECRETKEYBYTES=64,crypto_sign_SEEDBYTES=32,crypto_hash_BYTES=64;nacl2.lowlevel={crypto_core_hsalsa20,crypto_stream_xor,crypto_stream,crypto_stream_salsa20_xor,crypto_stream_salsa20,crypto_onetimeauth,crypto_onetimeauth_verify,crypto_verify_16,crypto_verify_32,crypto_secretbox,crypto_secretbox_open,crypto_scalarmult,crypto_scalarmult_base,crypto_box_beforenm,crypto_box_afternm,crypto_box,crypto_box_open,crypto_box_keypair,crypto_hash,crypto_sign,crypto_sign_keypair,crypto_sign_open,crypto_secretbox_KEYBYTES,crypto_secretbox_NONCEBYTES,crypto_secretbox_ZEROBYTES,crypto_secretbox_BOXZEROBYTES,crypto_scalarmult_BYTES,crypto_scalarmult_SCALARBYTES,crypto_box_PUBLICKEYBYTES,crypto_box_SECRETKEYBYTES,crypto_box_BEFORENMBYTES,crypto_box_NONCEBYTES,crypto_box_ZEROBYTES,crypto_box_BOXZEROBYTES,crypto_sign_BYTES,crypto_sign_PUBLICKEYBYTES,crypto_sign_SECRETKEYBYTES,crypto_sign_SEEDBYTES,crypto_hash_BYTES,gf,D,L,pack25519,unpack25519,M,A,S,Z,pow2523,add,set25519,modL,scalarmult,scalarbase};function checkLengths(k,n){if(k.length!==crypto_secretbox_KEYBYTES)throw new Error("bad key size");if(n.length!==crypto_secretbox_NONCEBYTES)throw new Error("bad nonce size")}function checkBoxLengths(pk,sk){if(pk.length!==crypto_box_PUBLICKEYBYTES)throw new Error("bad public key size");if(sk.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size")}function checkArrayTypes(){for(var i=0;i<arguments.length;i++){if(!(arguments[i]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}}function cleanup(arr){for(var i=0;i<arr.length;i++)arr[i]=0}nacl2.randomBytes=function(n){var b=new Uint8Array(n);randombytes(b,n);return b};nacl2.secretbox=function(msg,nonce3,key){checkArrayTypes(msg,nonce3,key);checkLengths(key,nonce3);var m=new Uint8Array(crypto_secretbox_ZEROBYTES+msg.length);var c=new Uint8Array(m.length);for(var i=0;i<msg.length;i++)m[i+crypto_secretbox_ZEROBYTES]=msg[i];crypto_secretbox(c,m,m.length,nonce3,key);return c.subarray(crypto_secretbox_BOXZEROBYTES)};nacl2.secretbox.open=function(box,nonce3,key){checkArrayTypes(box,nonce3,key);checkLengths(key,nonce3);var c=new Uint8Array(crypto_secretbox_BOXZEROBYTES+box.length);var m=new Uint8Array(c.length);for(var i=0;i<box.length;i++)c[i+crypto_secretbox_BOXZEROBYTES]=box[i];if(c.length<32)return null;if(crypto_secretbox_open(m,c,c.length,nonce3,key)!==0)return null;return m.subarray(crypto_secretbox_ZEROBYTES)};nacl2.secretbox.keyLength=crypto_secretbox_KEYBYTES;nacl2.secretbox.nonceLength=crypto_secretbox_NONCEBYTES;nacl2.secretbox.overheadLength=crypto_secretbox_BOXZEROBYTES;nacl2.scalarMult=function(n,p){checkArrayTypes(n,p);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");if(p.length!==crypto_scalarmult_BYTES)throw new Error("bad p size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult(q,n,p);return q};nacl2.scalarMult.base=function(n){checkArrayTypes(n);if(n.length!==crypto_scalarmult_SCALARBYTES)throw new Error("bad n size");var q=new Uint8Array(crypto_scalarmult_BYTES);crypto_scalarmult_base(q,n);return q};nacl2.scalarMult.scalarLength=crypto_scalarmult_SCALARBYTES;nacl2.scalarMult.groupElementLength=crypto_scalarmult_BYTES;nacl2.box=function(msg,nonce3,publicKey,secretKey){var k=nacl2.box.before(publicKey,secretKey);return nacl2.secretbox(msg,nonce3,k)};nacl2.box.before=function(publicKey,secretKey){checkArrayTypes(publicKey,secretKey);checkBoxLengths(publicKey,secretKey);var k=new Uint8Array(crypto_box_BEFORENMBYTES);crypto_box_beforenm(k,publicKey,secretKey);return k};nacl2.box.after=nacl2.secretbox;nacl2.box.open=function(msg,nonce3,publicKey,secretKey){var k=nacl2.box.before(publicKey,secretKey);return nacl2.secretbox.open(msg,nonce3,k)};nacl2.box.open.after=nacl2.secretbox.open;nacl2.box.keyPair=function(){var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_box_SECRETKEYBYTES);crypto_box_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl2.box.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_box_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_box_PUBLICKEYBYTES);crypto_scalarmult_base(pk,secretKey);return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl2.box.publicKeyLength=crypto_box_PUBLICKEYBYTES;nacl2.box.secretKeyLength=crypto_box_SECRETKEYBYTES;nacl2.box.sharedKeyLength=crypto_box_BEFORENMBYTES;nacl2.box.nonceLength=crypto_box_NONCEBYTES;nacl2.box.overheadLength=nacl2.secretbox.overheadLength;nacl2.sign=function(msg,secretKey){checkArrayTypes(msg,secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var signedMsg=new Uint8Array(crypto_sign_BYTES+msg.length);crypto_sign(signedMsg,msg,msg.length,secretKey);return signedMsg};nacl2.sign.open=function(signedMsg,publicKey){checkArrayTypes(signedMsg,publicKey);if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var tmp=new Uint8Array(signedMsg.length);var mlen=crypto_sign_open(tmp,signedMsg,signedMsg.length,publicKey);if(mlen<0)return null;var m=new Uint8Array(mlen);for(var i=0;i<m.length;i++)m[i]=tmp[i];return m};nacl2.sign.detached=function(msg,secretKey){var signedMsg=nacl2.sign(msg,secretKey);var sig=new Uint8Array(crypto_sign_BYTES);for(var i=0;i<sig.length;i++)sig[i]=signedMsg[i];return sig};nacl2.sign.detached.verify=function(msg,sig,publicKey){checkArrayTypes(msg,sig,publicKey);if(sig.length!==crypto_sign_BYTES)throw new Error("bad signature size");if(publicKey.length!==crypto_sign_PUBLICKEYBYTES)throw new Error("bad public key size");var sm=new Uint8Array(crypto_sign_BYTES+msg.length);var m=new Uint8Array(crypto_sign_BYTES+msg.length);var i;for(i=0;i<crypto_sign_BYTES;i++)sm[i]=sig[i];for(i=0;i<msg.length;i++)sm[i+crypto_sign_BYTES]=msg[i];return crypto_sign_open(m,sm,sm.length,publicKey)>=0};nacl2.sign.keyPair=function(){var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);crypto_sign_keypair(pk,sk);return{publicKey:pk,secretKey:sk}};nacl2.sign.keyPair.fromSecretKey=function(secretKey){checkArrayTypes(secretKey);if(secretKey.length!==crypto_sign_SECRETKEYBYTES)throw new Error("bad secret key size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);for(var i=0;i<pk.length;i++)pk[i]=secretKey[32+i];return{publicKey:pk,secretKey:new Uint8Array(secretKey)}};nacl2.sign.keyPair.fromSeed=function(seed){checkArrayTypes(seed);if(seed.length!==crypto_sign_SEEDBYTES)throw new Error("bad seed size");var pk=new Uint8Array(crypto_sign_PUBLICKEYBYTES);var sk=new Uint8Array(crypto_sign_SECRETKEYBYTES);for(var i=0;i<32;i++)sk[i]=seed[i];crypto_sign_keypair(pk,sk,true);return{publicKey:pk,secretKey:sk}};nacl2.sign.publicKeyLength=crypto_sign_PUBLICKEYBYTES;nacl2.sign.secretKeyLength=crypto_sign_SECRETKEYBYTES;nacl2.sign.seedLength=crypto_sign_SEEDBYTES;nacl2.sign.signatureLength=crypto_sign_BYTES;nacl2.hash=function(msg){checkArrayTypes(msg);var h=new Uint8Array(crypto_hash_BYTES);crypto_hash(h,msg,msg.length);return h};nacl2.hash.hashLength=crypto_hash_BYTES;nacl2.verify=function(x,y){checkArrayTypes(x,y);if(x.length===0||y.length===0)return false;if(x.length!==y.length)return false;return vn(x,0,y,0,x.length)===0?true:false};nacl2.setPRNG=function(fn){randombytes=fn};(function(){var crypto2=typeof globalThis!=="undefined"?globalThis.crypto||globalThis.msCrypto:null;if(crypto2&&crypto2.getRandomValues){var QUOTA=65536;nacl2.setPRNG(function(x,n){var i,v=new Uint8Array(n);for(i=0;i<n;i+=QUOTA){crypto2.getRandomValues(v.subarray(i,i+Math.min(n-i,QUOTA)))}for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}else if(typeof __require!=="undefined"){crypto2=__require("crypto");if(crypto2&&crypto2.randomBytes){nacl2.setPRNG(function(x,n){var i,v=crypto2.randomBytes(n);for(i=0;i<n;i++)x[i]=v[i];cleanup(v)})}}})()})(typeof module!=="undefined"&&module.exports?module.exports:globalThis.nacl=globalThis.nacl||{});var nacl=typeof module!=="undefined"&&module.exports?module.exports:globalThis.nacl;var denoHelper={fromSeed:nacl.sign.keyPair.fromSeed,sign:nacl.sign.detached,verify:nacl.sign.detached.verify,randomBytes:nacl.randomBytes,scalarBaseMultiply:nacl.scalarMult.base,seal:nacl.box,open:nacl.box.open};var helper;function setEd25519Helper(lib){helper=lib}var crc16tab=new Uint16Array([0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920]);var NKeysErrorCode2;(function(NKeysErrorCode3){NKeysErrorCode3["InvalidPrefixByte"]="nkeys: invalid prefix byte";NKeysErrorCode3["InvalidKey"]="nkeys: invalid key";NKeysErrorCode3["InvalidPublicKey"]="nkeys: invalid public key";NKeysErrorCode3["InvalidSeedLen"]="nkeys: invalid seed length";NKeysErrorCode3["InvalidSeed"]="nkeys: invalid seed";NKeysErrorCode3["InvalidCurveSeed"]="nkeys: invalid curve seed";NKeysErrorCode3["InvalidCurveKey"]="nkeys: not a valid curve key";NKeysErrorCode3["InvalidCurveOperation"]="nkeys: curve key is not valid for sign/verify";NKeysErrorCode3["InvalidNKeyOperation"]="keys: only curve key can seal/open";NKeysErrorCode3["InvalidEncoding"]="nkeys: invalid encoded key";NKeysErrorCode3["InvalidRecipient"]="nkeys: not a valid recipient public curve key";NKeysErrorCode3["InvalidEncrypted"]="nkeys: encrypted input is not valid";NKeysErrorCode3["CannotSign"]="nkeys: cannot sign, no private key available";NKeysErrorCode3["PublicKeyOnly"]="nkeys: no seed or private key available";NKeysErrorCode3["InvalidChecksum"]="nkeys: invalid checksum";NKeysErrorCode3["SerializationError"]="nkeys: serialization error";NKeysErrorCode3["ApiError"]="nkeys: api error";NKeysErrorCode3["ClearedPair"]="nkeys: pair is cleared"})(NKeysErrorCode2||(NKeysErrorCode2={}));var Prefix2;(function(Prefix3){Prefix3[Prefix3["Unknown"]=-1]="Unknown";Prefix3[Prefix3["Seed"]=144]="Seed";Prefix3[Prefix3["Private"]=120]="Private";Prefix3[Prefix3["Operator"]=112]="Operator";Prefix3[Prefix3["Server"]=104]="Server";Prefix3[Prefix3["Cluster"]=16]="Cluster";Prefix3[Prefix3["Account"]=0]="Account";Prefix3[Prefix3["User"]=160]="User";Prefix3[Prefix3["Curve"]=184]="Curve"})(Prefix2||(Prefix2={}));setEd25519Helper(denoHelper);var Algorithms;(function(Algorithms2){Algorithms2["v1"]="ed25519";Algorithms2["v2"]="ed25519-nkey"})(Algorithms||(Algorithms={}));var import_nats_core=__toESM(require_mod3(),1);var import_nkeys4=__toESM(require_mod(),1);function idFromCreds(creds){return identityFromCreds(creds).id}function jwtFromCreds(creds){return creds.match(/BEGIN NATS USER JWT-----\s*([\s\S]*?)\s*------END NATS USER JWT/)?.[1].trim()}function credsFingerprint(creds){const jwt2=jwtFromCreds(creds);if(!jwt2)throw new Error("creds: no NATS user JWT block found - cannot fingerprint");return createHash4("sha256").update(jwt2).digest("hex")}function credsClaims(creds){const payload=jwtFromCreds(creds)?.split(".")[1];if(!payload)throw new Error("creds: no NATS user JWT block found");try{return JSON.parse(Buffer.from(payload,"base64url").toString("utf8"))}catch{throw new Error("creds: undecodable user JWT payload")}}function credsRenewalDelayMs(creds){const claims2=credsClaims(creds);if(typeof claims2.exp!=="number")throw new Error("creds source returned a cred without a numeric exp - a standing-renewal endpoint requires bounded creds (mint with a lifetime, or pass a static string instead of a source)");const iatMs=(typeof claims2.iat==="number"?claims2.iat:Date.now()/1e3)*1e3;const expMs=claims2.exp*1e3;return iatMs+.75*(expMs-iatMs)-Date.now()}function identityFromCreds(creds){const seedM=creds.match(/BEGIN USER NKEY SEED-----\s*([\s\S]*?)\s*------END USER NKEY SEED/);if(!seedM)throw new Error("creds: no user nkey seed block found");const seed=seedM[1].trim();const id2=(0,import_nkeys4.fromSeed)(new TextEncoder().encode(seed)).getPublicKey();const payload=jwtFromCreds(creds)?.split(".")[1];const sub=payload?JSON.parse(Buffer.from(payload,"base64url").toString("utf8")).sub:void 0;if(sub&&sub!==id2)throw new Error(`creds: seed identity ${id2} != JWT subject ${sub}`);return{id:id2,seed}}var REMOTE_MANAGER_AUTHORITY_OPERATIONS=Object.freeze(["prepare","activate","renew","session","retire","renewStandingBundle","renewRunDriver","transferReader"]);var REMOTE_MANAGER_MAINTENANCE_OPERATIONS=Object.freeze(["evict-family-principal","reconcile-registration"]);var MANAGED_AGENT_RUNTIME_STATES=Object.freeze(["reserved","creating","bound","create-unknown","closing","closed"]);var MANAGED_AGENT_RUNTIME_READINESS=Object.freeze(["ready","bound-not-ready","none"]);var MANAGED_AGENT_RETIREMENT_PHASES=Object.freeze(["intent","released","retired","deprovisioned","terminal"]);var REMOTE_MANAGER_IDENTITY_NAMES=Object.freeze(["supervisor","executor","serve","goalWriter","sessionLedger"]);var dec3=new TextDecoder;var enc3=new TextEncoder;var HEX64=/^[0-9a-f]{64}$/;function contractRefToHex(ref){const hex3=ref.startsWith("sha256:")?ref.slice("sha256:".length):ref;if(!HEX64.test(hex3))throw new EpEnvelopeError("contract-invalid",`contract reference ${JSON.stringify(ref)} is not a sha256 digest; a garbled reference never resolves (SPEC 13.7)`);return hex3}var sha256Ref=hex3=>`sha256:${hex3}`;function buildContractClosureManifest(rootRef,memberRefs){const root=sha256Ref(contractRefToHex(rootRef));const members=[...new Set(memberRefs.map(r=>sha256Ref(contractRefToHex(r))))].sort();return{v:1,root,members}}var CONTRACT_CLOSURE_MAX_ARTIFACTS=64;function assertManifestDigest(ref,what){if(typeof ref!=="string"||!isContractDigest(ref))throw new EpEnvelopeError("contract-invalid",`${what} must be exactly "sha256:<64-hex>" (SPEC 13.7); a bare-hex or otherwise-spelled digest gives one closure two identities and never names it`)}function parseClosureManifest(value,what){if(value===null||typeof value!=="object"||Array.isArray(value))throw new EpEnvelopeError("contract-invalid",`${what} is not a manifest object (SPEC 13.7)`);const o=value;for(const k of Object.keys(o))if(!["v","root","members"].includes(k))throw new EpEnvelopeError("contract-invalid",`${what} carries the unknown field "${k}"; the manifest schema is closed (SPEC 13.7)`);if(o.v!==1||typeof o.root!=="string"||!Array.isArray(o.members))throw new EpEnvelopeError("contract-invalid",`${what} is not { v: 1, root, members } (SPEC 13.7)`);assertManifestDigest(o.root,`${what} root`);if(o.members.length>CONTRACT_CLOSURE_MAX_ARTIFACTS)throw new EpEnvelopeError("contract-invalid",`${what} names ${o.members.length} members, above the ${CONTRACT_CLOSURE_MAX_ARTIFACTS}-artifact ceiling (SPEC 13.7)`);for(let i=0;i<o.members.length;i++){const m=o.members[i];assertManifestDigest(m,`${what} member ${i}`);if(i>0&&o.members[i-1]>=m)throw new EpEnvelopeError("contract-invalid",`${what} members are not strictly sorted/deduplicated at index ${i}; a noncanonical manifest never names a closure (SPEC 13.7)`)}return{v:1,root:o.root,members:o.members}}var import__=__toESM(require__(),1);var FULL={neg:true,ranges:[]};var EMPTY={neg:false,ranges:[]};var set=(...ranges)=>({neg:false,ranges});var single=c=>set([c,c]);function rangesOverlap(a,b){for(const[al,ah]of a)for(const[bl,bh]of b)if(al<=bh&&bl<=ah)return true;return false}function rangesCover(outer,[lo,hi]){return outer.some(([ol,oh])=>ol<=lo&&hi<=oh)}function intersects(a,b){if(!a.neg&&!b.neg)return rangesOverlap(a.ranges,b.ranges);if(a.neg&&b.neg)return true;const pos=a.neg?b:a;const neg=a.neg?a:b;return!pos.ranges.every(r=>rangesCover(neg.ranges,r))}function union(a,b){if(!a.neg&&a.ranges.length===0)return b;if(!b.neg&&b.ranges.length===0)return a;if(a.neg||b.neg)return FULL;return{neg:false,ranges:[...a.ranges,...b.ranges]}}var PatternRefused=class extends Error{};var refuse=reason=>{throw new PatternRefused(reason)};var Parser=class{src;i=0;constructor(src){this.src=src}peek(){return this.src[this.i]}next(){return this.src[this.i++]}eof(){return this.i>=this.src.length}parse(){const node=this.alternation();if(!this.eof())refuse(`unexpected "${this.peek()}" at ${this.i}`);return node}alternation(){const branches=[this.sequence()];while(this.peek()==="|"){this.next();branches.push(this.sequence())}return branches.length===1?branches[0]:{kind:"alt",branches}}sequence(){const items=[];while(!this.eof()&&this.peek()!=="|"&&this.peek()!==")")items.push(this.quantified());return{kind:"seq",items}}quantified(){let node=this.atom();for(;;){const c=this.peek();let min,max;if(c==="*"){min=0;max=Infinity}else if(c==="+"){min=1;max=Infinity}else if(c==="?"){min=0;max=1}else if(c==="{"){const m=/^\{(\d+)(?:,(\d*))?\}/.exec(this.src.slice(this.i));if(!m)break;min=parseInt(m[1],10);max=m[2]===void 0?min:m[2]===""?Infinity:parseInt(m[2],10);if(max<min)refuse(`quantifier {${min},${max}} is inverted`);this.i+=m[0].length-1}else break;this.next();if(this.peek()==="?")this.next();node={kind:"quant",body:node,min,max}}return node}atom(){const c=this.next();if(c==="("){if(this.peek()==="?"){const ahead=this.src.slice(this.i,this.i+3);if(/^\?(:|<[a-zA-Z_])/.test(ahead)){this.next();if(this.peek()==="<"){while(this.next()!==">"){if(this.eof())refuse("unterminated group name")}}else this.next()}else{refuse("lookarounds and special groups are outside the profile's safe subset")}}const body=this.alternation();if(this.next()!==")")refuse("unterminated group");return body}if(c==="[")return{kind:"atom",set:this.charClass()};if(c===".")return{kind:"atom",set:FULL};if(c==="^")return{kind:"anchor",at:"start"};if(c==="$")return{kind:"anchor",at:"end"};if(c==="\\")return{kind:"atom",set:this.escape(false)};if(c===")"||c===void 0)refuse("unbalanced group");return{kind:"atom",set:single(this.codePoint())}}codePoint(){const cp=this.src.codePointAt(this.i-1);if(cp>65535)this.i++;return cp}charClass(){let neg=false;if(this.peek()==="^"){this.next();neg=true}const ranges=[];let approx=false;while(this.peek()!=="]"){if(this.eof())refuse("unterminated character class");let lo;const c=this.next();if(c==="\\"){if(this.peek()==="b"){this.next();lo=8}else{const s=this.escape(true);if(s.neg||s.ranges.length!==1||s.ranges[0][0]!==s.ranges[0][1]){approx=true;for(const r of s.neg?[[0,1114111]]:s.ranges)ranges.push(r)}else lo=s.ranges[0][0]}}else lo=this.codePoint();if(lo!==void 0){if(this.peek()==="-"&&this.src[this.i+1]!=="]"&&this.src[this.i+1]!==void 0){this.next();const hiC=this.next();const hi=hiC==="\\"?(()=>{const s=this.escape(true);if(s.neg||s.ranges.length!==1){approx=true;return 1114111}return s.ranges[0][0]})():this.codePoint();ranges.push([lo,hi])}else ranges.push([lo,lo])}}this.next();if(neg&&approx)return FULL;return{neg,ranges}}escape(inClass){const c=this.next();if(c===void 0)refuse("dangling escape");if(!inClass&&c>="1"&&c<="9")refuse(`backreference \\${c} is outside the profile's safe subset`);if(c==="k")refuse("named backreferences are outside the profile's safe subset");if(c==="b"||c==="B")return EMPTY;switch(c){case"d":return set([48,57]);case"D":return{neg:true,ranges:[[48,57]]};case"w":return set([48,57],[65,90],[95,95],[97,122]);case"W":return{neg:true,ranges:[[48,57],[65,90],[95,95],[97,122]]};case"s":return set([9,13],[32,32],[160,160],[8232,8233]);case"S":return{neg:true,ranges:[[9,13],[32,32],[160,160],[8232,8233]]};case"n":return single(10);case"r":return single(13);case"t":return single(9);case"f":return single(12);case"v":return single(11);case"0":return single(0);case"x":{const m=/^[0-9a-fA-F]{2}/.exec(this.src.slice(this.i));if(!m)refuse("malformed \\x escape");this.i+=2;return single(parseInt(m[0],16))}case"u":{const braced=/^\{([0-9a-fA-F]{1,6})\}/.exec(this.src.slice(this.i));if(braced){this.i+=braced[0].length;const cp2=parseInt(braced[1],16);if(cp2>=55296&&cp2<=57343)refuse("surrogate code point escapes are outside the safe subset");return single(cp2)}const m=/^[0-9a-fA-F]{4}/.exec(this.src.slice(this.i));if(!m)refuse("malformed \\u escape");this.i+=4;const cp=parseInt(m[0],16);if(cp>=55296&&cp<=57343)refuse("surrogate escapes are outside the safe subset (write the character or \\u{\u2026})");return single(cp)}case"p":case"P":{const m=/^\{[^}]*\}/.exec(this.src.slice(this.i));if(!m)refuse("malformed \\p escape");this.i+=m[0].length;return FULL}default:if(/[A-Za-z0-9]/.test(c))refuse(`escape \\${c} is outside the profile's safe subset`);return single(c.codePointAt(0))}}};var CHOICE_BUDGET=64;var CHOICE_SAT=1<<20;var mulSat=(a,b)=>Math.min(a*b,CHOICE_SAT);function powSat(base,exp){let out=1;for(let i=0;i<exp&&out<CHOICE_SAT;i++)out=mulSat(out,base);return out}function edgeRepeat(facts,pick2){const deeper=new Array(facts.length+1);deeper[facts.length]=EMPTY;for(let i=facts.length-1;i>=0;i--)deeper[i]=union(pick2(facts[i]),deeper[i+1]);let acc=EMPTY;for(let i=0;i<facts.length;i++){acc=union(acc,pick2(facts[i]));if(!facts[i].nullable&&!intersects(facts[i].set,deeper[i+1]))break}return acc}function assertStartAnchored(node){switch(node.kind){case"anchor":if(node.at!=="start")refuse("a top-level branch must begin with a '^' start anchor (Ajv tests patterns unanchored)");return;case"seq":if(node.items.length===0)refuse("an empty top-level branch is not start-anchored");assertStartAnchored(node.items[0]);return;case"alt":for(const b of node.branches)assertStartAnchored(b);return;default:refuse("a top-level branch must begin with a '^' start anchor (Ajv tests patterns unanchored)")}}function analyze(node){switch(node.kind){case"anchor":return{set:EMPTY,nullable:true,variable:false,ambiguousAlt:false,choices:1,leadRep:EMPTY,trailRep:EMPTY};case"atom":return{set:node.set,nullable:node.set.ranges.length===0&&!node.set.neg,variable:false,ambiguousAlt:false,choices:1,leadRep:EMPTY,trailRep:EMPTY};case"seq":{const facts=node.items.map(analyze);for(let i=0;i<facts.length;i++){const T=facts[i].trailRep;if(T.ranges.length===0&&!T.neg)continue;for(let j=i+1;j<facts.length;j++){if(intersects(T,facts[j].leadRep))refuse("two overlapping variable repetitions in sequence (polynomial backtracking class)");if(!facts[j].nullable&&!intersects(facts[j].set,T))break}}return{set:facts.reduce((s,f)=>union(s,f.set),EMPTY),nullable:facts.every(f=>f.nullable),variable:facts.some(f=>f.variable),ambiguousAlt:facts.some(f=>f.ambiguousAlt),choices:facts.reduce((n,f)=>mulSat(n,f.choices),1),leadRep:edgeRepeat(facts,f=>f.leadRep),trailRep:edgeRepeat([...facts].reverse(),f=>f.trailRep)}}case"alt":{const facts=node.branches.map(analyze);let ambiguous=facts.some(f=>f.ambiguousAlt);if(facts.filter(f=>f.nullable).length>1)ambiguous=true;for(let i=0;i<facts.length&&!ambiguous;i++){for(let j=i+1;j<facts.length;j++){if(intersects(facts[i].set,facts[j].set)){ambiguous=true;break}}}return{set:facts.reduce((s,f)=>union(s,f.set),EMPTY),nullable:facts.some(f=>f.nullable),variable:facts.some(f=>f.variable),ambiguousAlt:ambiguous,choices:ambiguous?facts.reduce((n,f)=>Math.min(n+f.choices,CHOICE_SAT),0):facts.reduce((n,f)=>Math.max(n,f.choices),1),leadRep:facts.reduce((s,f)=>union(s,f.leadRep),EMPTY),trailRep:facts.reduce((s,f)=>union(s,f.trailRep),EMPTY)}}case"quant":{const body=analyze(node.body);const repeats=node.max>1||node.max===Infinity;if(repeats){if(body.variable)refuse("repeats a group that itself contains a quantifier (exponential backtracking class)");if(body.nullable)refuse("repeats a nullable body (unbounded ambiguity on empty matches)");if(body.ambiguousAlt)refuse("repeats an ambiguous alternation (branches overlap; exponential backtracking class)")}const nondet=node.max>node.min;return{set:body.set,nullable:body.nullable||node.min===0,variable:body.variable||nondet||repeats,ambiguousAlt:body.ambiguousAlt,choices:node.max===node.min?powSat(body.choices,node.min):node.min===0&&node.max===1?Math.min(body.choices+1,CHOICE_SAT):body.choices,leadRep:nondet?union(body.set,body.leadRep):body.leadRep,trailRep:nondet?union(body.set,body.trailRep):body.trailRep}}}}function assertSafePattern(pattern,maxChars){if(pattern.length>maxChars)throw new Error(`pattern of ${pattern.length} characters exceeds the profile complexity bound (${maxChars})`);try{const ast=new Parser(pattern).parse();assertStartAnchored(ast);const facts=analyze(ast);if(facts.choices>CHOICE_BUDGET)refuse(`aggregate alternation ambiguity of ${facts.choices>=CHOICE_SAT?"at least ":""}${facts.choices} paths exceeds the ${CHOICE_BUDGET}-path budget (the fixed-alternation exponential class)`)}catch(e){if(e instanceof PatternRefused)throw new Error(`pattern ${JSON.stringify(pattern)} is outside the profile's safe subset: ${e.message}`);throw new Error(`pattern ${JSON.stringify(pattern)} did not parse under the profile's safe subset: ${e.message}`)}}var AJV_PROFILE_OPTIONS=Object.freeze({strict:false,allErrors:true,ownProperties:true,validateFormats:false,loadSchema:void 0,unicodeRegExp:true,inlineRefs:false});function singleDocumentClosure(root){const manifest=buildContractClosureManifest(contractDigest(root),[]);return{manifest,closureDigest:contractDigest(manifest)}}var VOID_SCHEMA=Object.freeze({type:"null"});var VOID_SCHEMA_ARTIFACT_DIGEST=contractDigest(VOID_SCHEMA);var VOID_SCHEMA_DIGEST=singleDocumentClosure(VOID_SCHEMA).closureDigest;var STORE_REF=/^cotal:(sha256:[0-9a-f]{64})(#.*)?$/;var ContractInvalidError=class extends Error{code="contract-invalid";constructor(message){super(message);this.name="ContractInvalidError"}};function canonicalOrInvalid(v,label){try{return canonicalJson(v)}catch(e){throw new ContractInvalidError(`${label}: ${e.message}`)}}function digestOrInvalid(v,label){try{return contractDigest(v)}catch(e){throw new ContractInvalidError(`${label}: ${e.message}`)}}function structuralDepth(v,depth=0){if(depth>SCHEMA_PROFILE.maxDepth)return depth;if(v===null||typeof v!=="object")return depth;let max=depth;const children=Array.isArray(v)?v:Object.values(v);for(const c of children){const d=structuralDepth(c,depth+1);if(d>max)max=d;if(max>SCHEMA_PROFILE.maxDepth)return max}return max}function assertBoundedPattern(p,label,where){try{assertSafePattern(p,SCHEMA_PROFILE.maxPatternChars)}catch(e){throw new ContractInvalidError(`${label}: ${where} refused: ${e.message}`)}}function collectRefs(v,label,out=[]){if(v===null||typeof v!=="object")return out;if(Array.isArray(v)){for(const c of v)collectRefs(c,label,out);return out}for(const[k,c]of Object.entries(v)){if((k==="$ref"||k==="$dynamicRef")&&typeof c==="string")out.push(c);if(k==="pattern"&&typeof c==="string")assertBoundedPattern(c,label,"a pattern");if(k==="patternProperties"&&c!==null&&typeof c==="object"&&!Array.isArray(c)){for(const p of Object.keys(c))assertBoundedPattern(p,label,"a patternProperties key")}collectRefs(c,label,out)}return out}var SCHEMA_VALUED_KEYS=["not","if","then","else","items","contains","additionalProperties","propertyNames","unevaluatedItems","unevaluatedProperties","contentSchema","additionalItems"];var SCHEMA_VALUED_MAP_KEYS=["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"];var SCHEMA_VALUED_LIST_KEYS=["allOf","anyOf","oneOf","prefixItems"];var SCALAR_KEYS=["type","enum","const","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","maxItems","minItems","uniqueItems","maxContains","minContains","maxProperties","minProperties","required","dependentRequired","format","contentEncoding","contentMediaType","title","description","default","deprecated","readOnly","writeOnly","examples","$comment","$id","$schema","$ref","$anchor","$dynamicRef","$dynamicAnchor","$vocabulary"];var ADMITTED=new Set([...SCHEMA_VALUED_KEYS,...SCHEMA_VALUED_MAP_KEYS,...SCHEMA_VALUED_LIST_KEYS,...SCALAR_KEYS]);function assertAdmittedVocabulary(doc,label){const atSchema=(d,path)=>{if(typeof d==="boolean")return;if(d===null||typeof d!=="object"||Array.isArray(d))return;for(const[k,v]of Object.entries(d)){if(!ADMITTED.has(k))throw new ContractInvalidError(`${label}: keyword ${JSON.stringify(k)} at ${path||"/"} is not in the profile's admitted vocabulary; an unrecognised keyword is REFUSED rather than ignored, because this profile cannot count what it does not recognise`);const here=`${path}/${k}`;if(SCHEMA_VALUED_KEYS.includes(k))atSchema(v,here);else if(SCHEMA_VALUED_MAP_KEYS.includes(k)&&v&&typeof v==="object"&&!Array.isArray(v))for(const[name,sub]of Object.entries(v))atSchema(sub,`${here}/${name}`);else if(SCHEMA_VALUED_LIST_KEYS.includes(k)&&Array.isArray(v))v.forEach((sub,i)=>atSchema(sub,`${here}/${i}`))}};atSchema(doc,"")}function assertDocumentProfile(doc,label){const canonical=canonicalOrInvalid(doc,label);const bytes=Buffer.byteLength(canonical,"utf8");if(bytes>SCHEMA_PROFILE.maxDocumentBytes)throw new ContractInvalidError(`${label}: document is ${bytes} bytes (profile max ${SCHEMA_PROFILE.maxDocumentBytes})`);if(structuralDepth(doc)>SCHEMA_PROFILE.maxDepth)throw new ContractInvalidError(`${label}: nesting exceeds profile depth ${SCHEMA_PROFILE.maxDepth}`);assertAdmittedVocabulary(doc,label);const storeRefs=[];for(const ref of collectRefs(doc,label)){if(ref.startsWith("#"))continue;const m=STORE_REF.exec(ref);if(!m)throw new ContractInvalidError(`${label}: external $ref ${JSON.stringify(ref)}; only local '#\u2026' or digest-pinned 'cotal:sha256:<hex>' references are permitted (no ambient resolution)`);storeRefs.push(m[1])}return storeRefs}var COMPILED=new WeakSet;function makeCompiled(validate2,closureDigest){const compiled=Object.freeze({validate:validate2,closureDigest});COMPILED.add(compiled);return compiled}function assertClosureProfile(bundle2){const members=bundle2.members??{};for(const d of Object.keys(members)){if(!isContractDigest(d))throw new ContractInvalidError(`bundle member key ${JSON.stringify(d)} is not a sha256 digest`)}const seen=new Set;let closureBytes=0;let frontier=assertDocumentProfile(bundle2.root,"root schema");closureBytes+=Buffer.byteLength(canonicalOrInvalid(bundle2.root,"root schema"),"utf8");for(let chain=0;frontier.length>0;chain++){if(chain>=SCHEMA_PROFILE.maxRefChain)throw new ContractInvalidError(`reference chain exceeds profile depth ${SCHEMA_PROFILE.maxRefChain}`);const next=[];for(const digest of frontier){if(seen.has(digest))continue;seen.add(digest);const member=members[digest];if(member===void 0)throw new ContractInvalidError(`unresolved digest reference ${digest}: not present in the bundle (schemas are closed; nothing is fetched)`);if(digestOrInvalid(member,`member ${digest}`)!==digest)throw new ContractInvalidError(`bundle member under ${digest} does not hash to its key (content is ${digestOrInvalid(member,`member ${digest}`)})`);closureBytes+=Buffer.byteLength(canonicalOrInvalid(member,`member ${digest}`),"utf8");if(closureBytes>SCHEMA_PROFILE.maxClosureBytes)throw new ContractInvalidError(`closure is ${closureBytes} bytes (profile max ${SCHEMA_PROFILE.maxClosureBytes})`);next.push(...assertDocumentProfile(member,`member ${digest}`))}frontier=next}const extras=Object.keys(members).filter(d=>!seen.has(d));if(extras.length>0)throw new ContractInvalidError(`bundle carries ${extras.length} member(s) unreachable from the root (${extras.slice(0,3).join(", ")}${extras.length>3?", \u2026":""})`);return contractDigest(buildContractClosureManifest(digestOrInvalid(bundle2.root,"root schema"),[...seen]))}function widestMapKeywordSize(doc,max=0){if(doc===null||typeof doc!=="object"||Array.isArray(doc))return max;for(const[k,v]of Object.entries(doc)){if(SCHEMA_VALUED_MAP_KEYS.includes(k)&&v&&typeof v==="object"&&!Array.isArray(v)){const size=Object.keys(v).length;if(size>max)max=size;for(const sub of Object.values(v))max=widestMapKeywordSize(sub,max)}else if(SCHEMA_VALUED_KEYS.includes(k)){max=widestMapKeywordSize(v,max)}else if(SCHEMA_VALUED_LIST_KEYS.includes(k)&&Array.isArray(v)){for(const sub of v)max=widestMapKeywordSize(sub,max)}}return max}function widestClosurePropertyCount(bundle2){let max=widestMapKeywordSize(bundle2.root);for(const member of Object.values(bundle2.members??{}))max=widestMapKeywordSize(member,max);return max}function compileWithinBudget(bundle2){const ajv=new import__.Ajv2020(AJV_PROFILE_OPTIONS);let validate2;try{for(const[digest,member]of Object.entries(bundle2.members??{}))ajv.addSchema(member,`cotal:${digest}`);validate2=ajv.compile(bundle2.root)}catch(e){if(e instanceof RangeError){const width=widestClosurePropertyCount(bundle2);throw new ContractInvalidError(`schema does not compile under the 2020-12 profile: the generated validator's code shape overflowed the call stack (${e.message}) compiling a ${width}-property object, which every profile ceiling (document/closure bytes, depth, ref-chain, pattern length, admitted vocabulary) had already admitted; this is the compiler's generated-code shape running out of stack, not a defect in the schema`)}throw new ContractInvalidError(`schema does not compile under the 2020-12 profile: ${e.message}`)}return validate2}function compileContract(bundle2){const closureDigest=assertClosureProfile(bundle2);return makeCompiled(compileWithinBudget(bundle2),closureDigest)}var isRec=v=>v!==null&&typeof v==="object"&&!Array.isArray(v);var isDigest=v=>typeof v==="string"&&/^sha256:[0-9a-f]{64}$/.test(v);var URN=/^[a-z0-9][a-z0-9-]{0,62}(\.[a-z0-9][a-z0-9-]{0,62}){1,15}$/;var TRAIT_GUARDED="ai.cotal.guarded";var TRAIT_PRICED="ai.cotal.priced";var GOVERNED_TRAIT_URNS=Object.freeze([TRAIT_GUARDED,TRAIT_PRICED]);var CAPABILITY=/^[a-z][a-z0-9._-]{0,63}$/;function invalid(what){throw new ContractInvalidError(`cluster document does not validate: ${what}`)}function parseClusterDocument(raw){const o=isRec(raw)?raw:invalid("not an object");if(typeof o.urn!=="string"||!URN.test(o.urn))invalid(`urn ${JSON.stringify(o.urn)} is not a reverse-DNS cluster type URN`);if(typeof o.revision!=="number"||!Number.isSafeInteger(o.revision)||o.revision<0)invalid("revision is not an unsigned integer");if(!Array.isArray(o.attributes))invalid("attributes is not an array");if(!Array.isArray(o.events))invalid("events is not an array");if(!Array.isArray(o.commands)||o.commands.length===0)invalid("commands must be a non-empty array");const seen=new Set;const commands=o.commands.map((c,i)=>{const cmd=isRec(c)?c:invalid(`commands[${i}] is not an object`);const name=typeof cmd.name==="string"?cmd.name:invalid(`commands[${i}].name is not a string`);try{assertCommandToken(name)}catch(e){invalid(`commands[${i}].name: ${e.message}`)}if(name==="describe")invalid(`commands[${i}] declares "describe": reserved, served by the machinery, never a cluster command (SPEC 13.7)`);if(seen.has(name))invalid(`command "${name}" is declared twice`);seen.add(name);if(cmd.class!=="ephemeral"&&cmd.class!=="journal")invalid(`command "${name}" class ${JSON.stringify(cmd.class)} is not "ephemeral" | "journal"`);if(typeof cmd.targeted!=="boolean")invalid(`command "${name}" must declare targeted as a boolean (SPEC 13.7)`);let modes;if(cmd.targeted){if(!Array.isArray(cmd.modes)||cmd.modes.length===0)invalid(`targeted command "${name}" must declare its admitted authorization modes (SPEC 13.7)`);const uniq=new Set;for(const m of cmd.modes){if(typeof m!=="string"||!isEpAuthzMode(m))invalid(`command "${name}" admits unknown mode ${JSON.stringify(m)}`);if(uniq.has(m))invalid(`command "${name}" admits mode "${m}" twice`);uniq.add(m)}modes=[...cmd.modes]}else if(cmd.modes!==void 0){invalid(`untargeted command "${name}" must not declare authorization modes`)}if(typeof cmd.capability!=="string"||!CAPABILITY.test(cmd.capability))invalid(`command "${name}" capability is not a bounded capability token`);if(!isDigest(cmd.inputDigest))invalid(`command "${name}" inputDigest is not a sha256 closure digest`);if(!isDigest(cmd.outputDigest))invalid(`command "${name}" outputDigest is not a sha256 closure digest`);let traits;if(cmd.traits!==void 0){if(!Array.isArray(cmd.traits))invalid(`command "${name}" traits is not an array`);const tSeen=new Set;for(const t of cmd.traits){if(typeof t!=="string"||!URN.test(t))invalid(`command "${name}" trait ${JSON.stringify(t)} is not a reverse-DNS trait URN (SPEC 13.7)`);if(tSeen.has(t))invalid(`command "${name}" declares trait "${t}" twice`);tSeen.add(t)}traits=[...cmd.traits]}let action;if(cmd.action!==void 0){if(cmd.action!==true)invalid(`command "${name}" action ${JSON.stringify(cmd.action)} is not true (the action composite is present or absent; "false" is a second way to say absent)`);if(cmd.class!=="journal")invalid(`command "${name}" declares the action composite but class "${cmd.class}": an action command's submissions are journal-class (SPEC 13.7)`);action=true}let admissionCeiling;if(cmd.class==="journal"){const ceil=isRec(cmd.admissionCeiling)?cmd.admissionCeiling:invalid(`journal-class command "${name}" must declare admissionCeiling {maxBytes, maxDepth, maxItems}: the canonicalizer reads its ceilings from the digest-verified surface, never from a constant`);const nums={};for(const f of["maxBytes","maxDepth","maxItems"]){const v=ceil[f];if(typeof v!=="number"||!Number.isSafeInteger(v)||v<=0)invalid(`command "${name}" admissionCeiling.${f} ${JSON.stringify(v)} is not a positive safe integer`);nums[f]=v}admissionCeiling={maxBytes:nums.maxBytes,maxDepth:nums.maxDepth,maxItems:nums.maxItems}}else if(cmd.admissionCeiling!==void 0){invalid(`ephemeral command "${name}" declares admissionCeiling: an ephemeral command receives no journal submissions, so a ceiling on it is unreadable by anything`)}let readinessDeadlineMs;if(cmd.readinessDeadlineMs!==void 0){if(!action)invalid(`command "${name}" declares readinessDeadlineMs without the action composite: readiness is goal state and only an action command has a goal`);if(typeof cmd.readinessDeadlineMs!=="number"||!Number.isSafeInteger(cmd.readinessDeadlineMs)||cmd.readinessDeadlineMs<0)invalid(`command "${name}" readinessDeadlineMs ${JSON.stringify(cmd.readinessDeadlineMs)} is not a non-negative safe integer (SPEC 13.11)`);readinessDeadlineMs=cmd.readinessDeadlineMs}return{name,class:cmd.class,targeted:cmd.targeted,...modes?{modes}:{},capability:cmd.capability,inputDigest:cmd.inputDigest,outputDigest:cmd.outputDigest,...traits?{traits}:{},...action?{action}:{},...admissionCeiling?{admissionCeiling}:{},...readinessDeadlineMs!==void 0?{readinessDeadlineMs}:{}}});return{urn:o.urn,revision:o.revision,attributes:[...o.attributes],commands,events:[...o.events]}}var import_jetstream16=__toESM(require_mod4(),1);var import_kv8=__toESM(require_mod6(),1);var import_transport_node15=__toESM(require_transport_node(),1);var import_jetstream3=__toESM(require_mod4(),1);var import_transport_node3=__toESM(require_transport_node(),1);var DEFAULT_DUPLICATE_WINDOW=(0,import_transport_node3.nanos)(2*60*1e3);var BACKUP_MAX_MSGS_PER_SUBJECT=1e3;var BACKUP_PLANE3_DEDUP_WINDOW_MS=2*60*60*1e3;var PLANE3_DUPLICATE_WINDOW=(0,import_transport_node3.nanos)(BACKUP_PLANE3_DEDUP_WINDOW_MS);function baseConfig(name,subjects){return{name,subjects,retention:import_jetstream3.RetentionPolicy.Limits,storage:import_jetstream3.StorageType.File,max_consumers:-1,max_msgs:-1,max_bytes:-1,max_age:0,max_msgs_per_subject:-1,max_msg_size:-1,discard:import_jetstream3.DiscardPolicy.Old,num_replicas:1,no_ack:false,duplicate_window:DEFAULT_DUPLICATE_WINDOW,compression:import_jetstream3.StoreCompression.None,allow_direct:false,mirror_direct:false,discard_new_per_subject:false,allow_rollup_hdrs:false,deny_delete:false,deny_purge:false,sealed:false,consumer_limits:{}}}function canonicalBackupStreamConfig(space2,stream){const p=spacePrefix(space2);if(stream===chatStream(space2)){return{...baseConfig(stream,[`${p}.chat.>`]),max_msgs_per_subject:BACKUP_MAX_MSGS_PER_SUBJECT,allow_direct:true}}if(stream===dmStream(space2))return baseConfig(stream,[`${p}.inst.>`]);if(stream===taskStream(space2)){return{...baseConfig(stream,[`${p}.svc.>`]),retention:import_jetstream3.RetentionPolicy.Workqueue}}if(stream===inboxStream(space2)){return{...baseConfig(stream,[`${p}.dinbox.>`]),max_msgs_per_subject:BACKUP_MAX_MSGS_PER_SUBJECT,duplicate_window:PLANE3_DUPLICATE_WINDOW}}if(stream===dlvStream(space2)){return{...baseConfig(stream,[`${p}.dlv.>`]),max_msgs_per_subject:BACKUP_MAX_MSGS_PER_SUBJECT,duplicate_window:PLANE3_DUPLICATE_WINDOW}}if(stream===wfjStreamName(space2))return baseConfig(stream,[`${p}.wfj.*`]);if(stream===recordsKvStreamName(space2))return{...kvStoreConfig(stream,recordsBucket(space2)),allow_direct:true,...endpointAuthorityStoreDefinitions(space2).records.hardenAfterCreate};if(stream===`KV_${admissionBucket(space2)}`)return{...kvStoreConfig(stream,admissionBucket(space2)),...admissionStoreDefinition(space2).hardenAfterCreate};for(const bucket of[channelBucket(space2),aclBucket(space2),membersBucket(space2)]){if(stream===`KV_${bucket}`){return{...baseConfig(stream,[`$KV.${bucket}.>`]),max_msgs_per_subject:1,discard:import_jetstream3.DiscardPolicy.New,allow_direct:true,allow_rollup_hdrs:true}}}throw new Error(`stream ${JSON.stringify(stream)} is not a backed-up stream for space ${JSON.stringify(space2)}`)}function kvStoreConfig(name,bucket){return{...baseConfig(name,[`$KV.${bucket}.>`]),max_msgs_per_subject:1,discard:import_jetstream3.DiscardPolicy.New,allow_rollup_hdrs:true}}var import_kv7=__toESM(require_mod6(),1);var import_transport_node14=__toESM(require_transport_node(),1);var import_transport_node13=__toESM(require_transport_node(),1);var import_nats_core6=__toESM(require_mod3(),1);import{EventEmitter}from"node:events";import{randomUUID as randomUUID3}from"node:crypto";import{setTimeout as delay}from"node:timers/promises";import{createConnection,isIP}from"node:net";var LIVENESS_PLANES=Object.freeze(["manager","delivery"]);function isLivenessPlane(plane){return LIVENESS_PLANES.includes(plane)}function responderFromLease(lease,expectedHolder){if(lease===void 0)return"unbound";if(lease.ready!==true)return"unbound";if(expectedHolder!==void 0&&lease.holder!==expectedHolder)return"stale";return"bound"}function responderFromProbe(outcome,answered){if(outcome==="replied")return answered??"unknown";if(outcome==="noResponders")return"unbound";return"unknown"}function parseLivenessAnswer(body,expectPlane){if(typeof body!=="object"||body===null)return void 0;const{plane,responder,instance}=body;if(typeof plane!=="string"||!isLivenessPlane(plane)||plane!==expectPlane)return void 0;if(responder!=="bound"&&responder!=="unbound"&&responder!=="stale"&&responder!=="unknown")return void 0;if(instance!==void 0&&(typeof instance!=="string"||instance===""))return void 0;return instance===void 0?{plane,responder}:{plane,responder,instance}}import{randomUUID}from"node:crypto";var startedAt=Math.floor(performance.timeOrigin);var scopes=new Map;function processRuntime(lifecycleUid){let own=scopes.get(lifecycleUid);if(!own){own=Object.freeze({id:randomUUID(),startedAt,source:"endpoint-process"});scopes.set(lifecycleUid,own)}return own}var import_nkeys6=__toESM(require_mod(),1);function nativeCredsAuthenticator(creds){return nonce3=>{const blocks=/\s*(?:(?:[-]{3,}[^\n]*[-]{3,}\n)(.+)(?:\n\s*[-]{3,}[^\n]*[-]{3,}\n))/ig;const text2=typeof creds==="function"?creds():creds;const jwtBlock=blocks.exec(text2);if(!jwtBlock)throw new Error("unable to parse credentials");const seedBlock=blocks.exec(text2);if(!seedBlock)throw new Error("unable to parse credentials");const seed=new TextEncoder().encode(seedBlock[1].trim());let signer;try{signer=nativeNkeySigner(seed);return{jwt:jwtBlock[1].trim(),nkey:signer.getPublicKey(),sig:nonce3?(0,import_nkeys6.encode)(signer.sign(new TextEncoder().encode(nonce3))):""}}finally{seed.fill(0);signer?.clear()}}}var RENEWAL_WINDOW=Object.freeze({from:.5,to:.8});var RENEWAL_SPACING_MS=1e3;var MAX_TIMER_MS=2147483647;var armed=new Map;function pickFree(taken,from,to){const free=[];let lo=from;for(const t of[...taken].sort((a,b)=>a-b)){if(t-RENEWAL_SPACING_MS>lo)free.push([lo,Math.min(to,t-RENEWAL_SPACING_MS)]);lo=Math.max(lo,t+RENEWAL_SPACING_MS);if(lo>=to)break}if(lo<=to)free.push([lo,to]);const total=free.reduce((sum,[a,b])=>sum+(b-a),0);if(free.length===0)return from+Math.random()*(to-from);let r=Math.random()*total;for(const[a,b]of free){if(r<=b-a)return a+r;r-=b-a}return free[free.length-1][1]}function armRenewal(space2,issuedAtMs,expiresAtMs,renew,minDelayMs=0){const now=Date.now();const life=Math.max(0,expiresAtMs-issuedAtMs);const from=Math.max(issuedAtMs+RENEWAL_WINDOW.from*life,now+minDelayMs);const to=Math.max(issuedAtMs+RENEWAL_WINDOW.to*life,from);const taken=armed.get(space2)??new Set;armed.set(space2,taken);const at=pickFree([...taken],from,to);taken.add(at);const release=()=>{taken.delete(at);if(taken.size===0&&armed.get(space2)===taken)armed.delete(space2)};let timer;const wait=()=>{const left=at-Date.now();timer=setTimeout(left>MAX_TIMER_MS?wait:()=>{release();renew()},Math.min(Math.max(0,left),MAX_TIMER_MS));timer.unref?.()};wait();return()=>{clearTimeout(timer);release()}}function renewalDeadlineMs(issuedAtMs,expiresAtMs){return issuedAtMs+RENEWAL_WINDOW.to*Math.max(0,expiresAtMs-issuedAtMs)}function jitteredBackoffMs(attempt,baseMs,capMs){const step=Math.min(capMs,baseMs*2**attempt);return step/2+Math.random()*(step/2)}var BROKER_FLOOR=Object.freeze({major:2,minor:12});function parseServerVersion(v){const m=/^(\d+)\.(\d+)\.(\d+)/.exec(v.trim());if(!m)return null;return{major:Number(m[1]),minor:Number(m[2]),patch:Number(m[3])}}function meetsBrokerFloor(version2){const p=parseServerVersion(version2);if(!p)return false;if(p.major!==BROKER_FLOOR.major)return p.major>BROKER_FLOOR.major;return p.minor>=BROKER_FLOOR.minor}function requireBrokerFloor(nc){const version2=nc.info?.version;if(!version2)throw new Error("control surface: connected broker reports no server version; refusing to start (floor is nats-server >= 2.12)");if(!meetsBrokerFloor(version2))throw new Error(`control surface: nats-server ${version2} is below the required floor 2.12; upgrade the broker (no degraded mode exists)`)}async function withDeadline(p,ms,onTimeout){let timer;const timeout=new Promise((_,rej)=>{timer=setTimeout(()=>rej(onTimeout()),Math.max(1,ms))});try{return await Promise.race([p,timeout])}finally{clearTimeout(timer)}}var import_jetstream6=__toESM(require_mod4(),1);var import_transport_node4=__toESM(require_transport_node(),1);import{randomUUID as randomUUID2}from"node:crypto";var import_kv4=__toESM(require_mod6(),1);var import_obj=__toESM(require_mod7(),1);var import_jetstream4=__toESM(require_mod4(),1);function isJetStreamMissing(e,...codes){return e instanceof import_jetstream4.JetStreamApiError&&codes.includes(e.code)}function isConsumerNotFound(e){return isJetStreamMissing(e,import_jetstream4.JetStreamApiCodes.ConsumerNotFound)}function isConsumerAlreadyExists(e){return isJetStreamMissing(e,10148)}var import_kv2=__toESM(require_mod6(),1);var import_internal=__toESM(require_internal_mod3(),1);var import_jetstream5=__toESM(require_mod4(),1);var import_nats_core2=__toESM(require_mod3(),1);function openPublishDenialWatch(nc,subject,refusal,what){const statusStream=nc.status();if(typeof statusStream?.stop!=="function")throw new EpEnvelopeError("unavailable",`the NATS connection's status() stream does not expose stop(); the ${what} permission watch cannot be released and would leak a listener per call`);const statusIter=statusStream[Symbol.asyncIterator]();const denied=new Promise((_,reject)=>{void(async()=>{for(;;){const{value:s,done}=await statusIter.next();if(done===true||s===void 0)return;if(s.type!=="error")continue;if(s.error instanceof import_nats_core2.PermissionViolationError&&s.error.subject===subject){reject(refusal(s.error));return}}})().catch(()=>{})});return{denied,release(){statusStream.stop();void statusIter.return?.(void 0)}}}var IncompleteKvScan=class extends Error{bucket;received;expected;constructor(bucket,received,expected){super(`reading ${bucket} ended after ${received} of ~${expected} entries without reaching the end of the bucket - the connection or consumer died mid-pass. Refusing to return a partial view (a short or empty result here is indistinguishable from a real answer). Retry; if it persists, the link to the broker is dropping.`);this.bucket=bucket;this.received=received;this.expected=expected;this.name="IncompleteKvScan"}};async function liveKvEntries(kv,filterOrOptions,options){let filter;let opts=options;if(typeof filterOrOptions==="string"||Array.isArray(filterOrOptions)){filter=filterOrOptions;opts=options}else if(filterOrOptions&&typeof filterOrOptions==="object"){opts=filterOrOptions}if(opts?.signal?.aborted){throw opts.signal.reason??new Error("scan aborted")}if(!(kv instanceof import_internal.Bucket))throw new Error(`liveKvEntries needs the @nats-io/kv Bucket implementation to bind its own consumer (got ${kv?.constructor?.name??typeof kv}). Refusing to fall back to history(), whose hidden bind-time pending count is exactly the ambiguity this exists to remove.`);const bucket=kv;const cc=bucket._buildCC(filter??">",import_internal.KvWatchInclude.AllHistory,{headers_only:false});cc.mem_storage=true;const oc=await bucket.js.consumers.getPushConsumer(bucket.stream,cc);const own=oc;const api=own.api;const owned=[{name:own.name,answered:Promise.resolve(true)}];own.api=Object.assign(Object.create(api),{add:(...args)=>{const created=api.add(...args);owned.push({name:args[1].name,answered:created.then(()=>true,e=>e instanceof import_jetstream5.JetStreamApiError)});return created}});const latest=new Map;let received=0;let sawTerminal=false;let bucketName=bucket.bucket;let expected=0;let complete=false;try{const initialInfo=await oc.info(true);opts?.onConsumer?.(initialInfo);expected=initialInfo.num_pending;if(opts?.signal?.aborted){throw opts.signal.reason??new Error("scan aborted")}if(expected!==0){const iter=await oc.consume();const onAbort=()=>{iter.stop(opts?.signal?.reason??new Error("scan aborted"))};opts?.signal?.addEventListener("abort",onAbort,{once:true});try{for await(const m of iter){if(opts?.signal?.aborted)break;const e=bucket.jmToWatchEntry(m,false);received++;bucketName=e.bucket;const prior=latest.get(e.key);if(prior===void 0||e.revision>=prior.revision)latest.set(e.key,e);if(m.info.pending===0){sawTerminal=true;break}}}finally{opts?.signal?.removeEventListener("abort",onAbort);await iter.close()}}complete=expected===0||sawTerminal}finally{try{const answered=await Promise.all(owned.map(c=>c.answered));if(owned.at(-1).name!==own.name)throw new Error(`scan consumer ${own.name} was not created through the scan's consumer API - the pinned nats.js changed shape`);const deleteOwn=opts?.deleteOwnConsumer??((_stream,_name,del)=>del());let unanswered;for(let i=owned.length-1;i>=0;i--){const target2=owned[i].name;try{await deleteOwn(bucket.stream,target2,()=>bucket.jsm.consumers.delete(bucket.stream,target2))}catch(e){if(isPublishPermissionDenied(e))break;if(!isConsumerNotFound(e))throw e;if(!answered[i])unanswered??=target2}}if(unanswered)throw new Error(`the broker never answered the create of scan consumer ${unanswered}, so it can land after its delete and live until its inactive_threshold`)}catch(e){if(complete&&!opts?.signal?.aborted)throw e}}if(opts?.signal?.aborted){throw opts.signal.reason??new Error("scan aborted")}if(expected===0)return[];if(!sawTerminal)throw new IncompleteKvScan(bucketName,received,expected);const out=[];for(const e of latest.values())if(e.operation!=="DEL"&&e.operation!=="PURGE")out.push(e);return out}var DIRECT_BATCH=1024;async function lastKvEntries(kv){if(!(kv instanceof import_internal.Bucket))throw new Error(`lastKvEntries needs the @nats-io/kv Bucket implementation to address its backing stream (got ${kv?.constructor?.name??typeof kv})`);const bucket=kv;const nc=bucket.jsm.getConnection?.();if(nc===void 0)throw new Error("lastKvEntries needs the bucket's JetStream manager to expose its connection, to tell a denied Direct Get from a slow one");const watch=openPublishDenialWatch(nc,`${bucket.jsm.getOptions().apiPrefix||"$JS.API"}.DIRECT.GET.${bucket.stream}`,err3=>err3,"Direct Get");let page;try{const read=(async()=>{const latest=new Map;for(let seq=1;;){let last=0,pending=-1;try{const iter=await bucket.jsm.direct.getBatch(bucket.stream,{seq,batch:DIRECT_BATCH,next_by_subj:`${bucket.prefix}.>`});page=iter;for await(const sm of iter){const e=bucket.smToEntry(sm);const prior=latest.get(e.key);if(prior===void 0||e.revision>=prior.revision)latest.set(e.key,e);last=sm.seq;pending=sm.pending}}catch(e){if(last===0&&e?.code===404)break;throw e}if(pending===0)break;if(last===0)throw new IncompleteKvScan(bucket.bucket,latest.size,latest.size+Math.max(pending,1));seq=last+1}return[...latest.values()]})();read.catch(()=>{});return await Promise.race([read,watch.denied.catch(err3=>{page?.stop(err3);throw err3})])}finally{watch.release()}}async function openAclRegistry(nc,space2,opts={}){const kvm=new import_kv2.Kvm(nc);return opts.create?kvm.create(aclBucket(space2)):kvm.open(aclBucket(space2))}async function readAcl(kv,owner2,lifecycleUid){const e=await kv.get(aclKey(owner2,lifecycleUid));if(!e||e.operation==="DEL"||e.operation==="PURGE")return void 0;try{const record2=e.json();if(!Array.isArray(record2.allowSubscribe))return void 0;return{record:record2,revision:e.revision}}catch{return void 0}}async function aclRetired(kv,owner2,lifecycleUid){const e=await kv.get(aclKey(owner2,lifecycleUid));return e?.operation==="DEL"||e?.operation==="PURGE"}var AmbiguousAclAlias=class extends Error{principal;lifecycleUids;constructor(principal,lifecycleUids){super(`read-ACL alias "${principal}" resolves to ${lifecycleUids.length} live lifecycle rows (${lifecycleUids.join(", ")}); at most one lifecycle may be live per alias (SPEC 13.1) - refusing to authorize on a first-match guess`);this.principal=principal;this.lifecycleUids=lifecycleUids}};async function readAclForAlias(kv,principal){const first=await enumerateLiveAclRows(kv,principal);if(first.length>1)throw new AmbiguousAclAlias(principal,first.map(l=>l.lifecycleUid).sort());const second=await enumerateLiveAclRows(kv,principal);if(second.length>1)throw new AmbiguousAclAlias(principal,second.map(l=>l.lifecycleUid).sort());if(second.length===0)return void 0;if(first.length===1&&first[0].lifecycleUid!==second[0].lifecycleUid)throw new AmbiguousAclAlias(principal,[first[0].lifecycleUid,second[0].lifecycleUid].sort());return{record:second[0].record,revision:second[0].revision,lifecycleUid:second[0].lifecycleUid}}async function enumerateLiveAclRows(kv,principal){const live=[];for(const e of await liveKvEntries(kv,aclAliasFilter(principal))){const parsed=parseLifecycleSubjectKey(e.key);if(!parsed||`${parsed.owner}.${parsed.actor}`!==principal)continue;let record2;try{record2=e.json()}catch{continue}if(!Array.isArray(record2.allowSubscribe))continue;live.push({lifecycleUid:parsed.lifecycleUid,record:record2,revision:e.revision})}return live}async function reissueAcl(kv,owner2,lifecycleUid,allowSubscribe){return writeAcl(kv,owner2,lifecycleUid,allowSubscribe,{reissue:true})}async function commitAcl(kv,owner2,lifecycleUid,allowSubscribe){return writeAcl(kv,owner2,lifecycleUid,allowSubscribe,{reissue:false})}async function writeAcl(kv,owner2,lifecycleUid,allowSubscribe,opts){const key=aclKey(owner2,lifecycleUid);let lastErr;for(let attempt=0;attempt<5;attempt++){const cur=await readAcl(kv,owner2,lifecycleUid);let issued;if(opts.reissue||!cur){issued=[...allowSubscribe]}else{issued=[...cur.record.issuedAllowSubscribe??cur.record.allowSubscribe];const excess=allowSubscribe.filter(a=>!patternInAllow(issued,a));if(excess.length>0){throw new Error(`commitAcl: cannot raise ACL above mint-time ceiling without reissue (entries [${excess.join(", ")}] not within ceiling [${issued.join(", ")}]); use reissueAcl from the provisioning path that also remints the JWT`)}}const next={allowSubscribe:[...allowSubscribe],issuedAllowSubscribe:issued,revision:(cur?.record.revision??0)+1,updatedAt:Date.now()};const data=new TextEncoder().encode(JSON.stringify(next));if(!cur){try{await kv.create(key,data);return next}catch(e){lastErr=e;try{const raw=await kv.get(key);if(raw){await kv.update(key,data,raw.revision);return next}}catch(e2){lastErr=e2}continue}}try{await kv.update(key,data,cur.revision);return next}catch(e){lastErr=e;continue}}throw new Error(`acl CAS exhausted retries for ${owner2}${lastErr?` - last error: ${lastErr instanceof Error?lastErr.message:String(lastErr)}`:""}`,lastErr instanceof Error?{cause:lastErr}:void 0)}var import_kv3=__toESM(require_mod6(),1);var StaleMembershipWrite=class extends Error{constructor(channel,owner2,attempted,current){super(`stale membership write for ${channel}/${owner2}: generation ${attempted} < current ${current}`);this.name="StaleMembershipWrite"}};async function openMembersRegistry(nc,space2,opts={}){const kvm=new import_kv3.Kvm(nc);return opts.create?kvm.create(membersBucket(space2)):kvm.open(membersBucket(space2))}async function readMember(kv,channel,owner2,lifecycleUid){const e=await kv.get(memberKey(channel,owner2,lifecycleUid));if(!e||e.operation==="DEL"||e.operation==="PURGE")return void 0;try{return{record:e.json(),revision:e.revision}}catch{return void 0}}async function commitMemberRevision(kv,next){const key=memberKey(next.channel,next.owner,next.lifecycleUid);const data=new TextEncoder().encode(JSON.stringify(next));for(let attempt=0;attempt<5;attempt++){const cur=await readMember(kv,next.channel,next.owner,next.lifecycleUid);if(!cur){try{return{record:next,revision:await kv.create(key,data)}}catch{continue}}if(next.generation<cur.record.generation)throw new StaleMembershipWrite(next.channel,next.owner,next.generation,cur.record.generation);try{return{record:next,revision:await kv.update(key,data,cur.revision)}}catch{continue}}throw new Error(`members CAS exhausted retries for ${key}`)}async function tombstoneMember(kv,channel,owner2,lifecycleUid,leaveCursor,writerIdentity,expectedGeneration){const key=memberKey(channel,owner2,lifecycleUid);let generation=expectedGeneration;for(let attempt=0;attempt<5;attempt++){const cur=await readMember(kv,channel,owner2,lifecycleUid);if(!cur)return void 0;generation??=cur.record.generation;if(cur.record.generation!==generation)throw new StaleMembershipWrite(channel,owner2,generation,cur.record.generation);if(cur.record.leaveCursor!==void 0&&cur.record.leaveCursor<=leaveCursor)return cur.record;const next={...cur.record,state:"live-confirmed",leaveCursor,writerIdentity,updatedAt:Date.now()};try{await kv.update(key,new TextEncoder().encode(JSON.stringify(next)),cur.revision);return next}catch{continue}}throw new Error(`members CAS exhausted retries for ${key}`)}async function activateMember(kv,channel,owner2,lifecycleUid,expectedGeneration,expectedJoinCursor){const key=memberKey(channel,owner2,lifecycleUid);for(let attempt=0;attempt<5;attempt++){const cur=await readMember(kv,channel,owner2,lifecycleUid);if(!cur)return void 0;const r=cur.record;if(r.generation!==expectedGeneration||r.joinCursor!==expectedJoinCursor||r.leaveCursor!==void 0)return void 0;if(r.activated)return r;const next={...r,activated:true,updatedAt:Date.now()};try{await kv.update(key,new TextEncoder().encode(JSON.stringify(next)),cur.revision);return next}catch{continue}}return void 0}async function deleteMember(kv,channel,owner2,lifecycleUid){await kv.purge(memberKey(channel,owner2,lifecycleUid))}async function listMembers(kv,filter={}){const out=[];for(const e of await liveKvEntries(kv)){const parsed=parseMemberKey(e.key);if(!parsed)continue;if(filter.channel!==void 0&&parsed.channel!==filter.channel)continue;if(filter.owner!==void 0&&parsed.principal!==filter.owner)continue;try{out.push(e.json())}catch{}}return out}function durableEligible(rec,seq){if(seq<=rec.joinCursor)return false;if(rec.leaveCursor!==void 0&&seq>rec.leaveCursor)return false;return true}var inventoryPasses=new WeakMap;function inventoryPassAfterNow(kv){let passes=inventoryPasses.get(kv);if(passes===void 0)inventoryPasses.set(kv,passes={});const state=passes;if(state.next)return state.next;const next=(state.running??Promise.resolve([])).catch(()=>[]).then(()=>{state.next=void 0;const pass=liveKvEntries(kv);state.running=pass;const done=()=>{if(state.running===pass)state.running=void 0};pass.then(done,done);return pass});state.next=next;return next}async function listLifecycleMemberChannels(kv,principal,lifecycleUid){const pr=parsePrincipalKey(principal);if(!pr)throw new Error(`listLifecycleMemberChannels: invalid principal "${principal}"`);assertLifecycleToken(lifecycleUid);const channels=new Set;for(const e of await inventoryPassAfterNow(kv)){const parsed=parseMemberKey(e.key);if(!parsed)continue;if(parsed.principal!==principal||parsed.lifecycleUid!==lifecycleUid)continue;if(!isConcreteChannel(parsed.channel))continue;channels.add(parsed.channel)}return[...channels].sort()}var PRESENCE_STORAGE=import_jetstream6.StorageType.Memory;var MAX_MSGS_PER_SUBJECT=BACKUP_MAX_MSGS_PER_SUBJECT;var DINBOX_MAX_ACK_PENDING=1e3;var MANAGER_LEASE_TTL_MS=1e4;var MANAGER_LEASE_RENEW_MS=MANAGER_LEASE_TTL_MS/4;var MANAGER_LEASE_ATTEMPT_MS=2e3;var LEGACY_MEMBERSHIP_MAX_BYTES=64*1024*1024;var MEMBERSHIP_MAX_VALUE_SIZE=256*1024;var LEGACY_ARTIFACT_STORE_MAX_BYTES=4*1024*1024*1024;function standaloneConnectOpts(auth){if(auth?.tls===void 0)throw new Error("standaloneConnectOpts requires an explicit `tls` boolean: pass `tls: true` to REQUIRE TLS, or `tls: false` for a plaintext broker. It has no default, because defaulting it would silently connect without the requirement that protects the credentials being passed.");const tlsOpt=auth.tls?{tls:{}}:{};if(auth.bearer!==void 0){if(!auth.sentinelCreds)throw new Error("user-mode standalone connect requires sentinelCreds alongside the bearer");if(auth.creds)throw new Error("standalone connect takes creds OR bearer+sentinelCreds, never both");const nonce3=`ibx${randomUUID2().replace(/-/g,"")}`;return{name:nonce3,inboxPrefix:`_INBOX_${nonce3}`,authenticator:[nativeCredsAuthenticator(auth.sentinelCreds),(0,import_transport_node4.tokenAuthenticator)(auth.bearer)],...tlsOpt}}const creds=auth.creds;if(!creds)return{...tlsOpt};return{authenticator:nativeCredsAuthenticator(creds),inboxPrefix:`_INBOX_${idFromCreds(typeof creds==="function"?creds():creds)}`,...tlsOpt}}function spaceMessageStreamConfigs(space2){return[chatStream(space2),dmStream(space2),taskStream(space2),inboxStream(space2),dlvStream(space2)].map(stream=>canonicalBackupStreamConfig(space2,stream))}async function createSpaceStreams(jsm,space2){for(const definition of spaceMessageStreamConfigs(space2))await jsm.streams.add(definition)}function dmDurableConfig(space2,owner2,actor2,lifecycleUid,opts={}){const frontier=opts.activationFrontier??0;if(!Number.isInteger(frontier)||frontier<0)throw new Error(`dmDurableConfig activationFrontier must be a non-negative integer, got ${String(frontier)}`);const cfg={durable_name:dmDurable(owner2,actor2,lifecycleUid),filter_subject:unicastRecvFilter(space2,owner2,actor2),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),...frontier>0?{deliver_policy:import_jetstream6.DeliverPolicy.StartSequence,opt_start_seq:frontier+1}:{deliver_policy:import_jetstream6.DeliverPolicy.All}};if(opts.inactiveThresholdMs)cfg.inactive_threshold=(0,import_transport_node4.nanos)(opts.inactiveThresholdMs);return cfg}function taskDurableConfig(space2,role,opts={}){return{durable_name:taskDurable(role),filter_subject:anycastServeFilter(space2,role),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4)}}function inboxReaderConfig(space2,opts={}){return{durable_name:readerDurable(opts.shard,opts.shards),filter_subject:`${spacePrefix(space2)}.dinbox.>`,ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),deliver_policy:import_jetstream6.DeliverPolicy.All,max_ack_pending:DINBOX_MAX_ACK_PENDING}}function dlvDurableConfig(space2,owner2,actor2,lifecycleUid,opts={}){const cfg={durable_name:dlvDurable(owner2,actor2,lifecycleUid),filter_subject:dlvSubject(space2,owner2,actor2,lifecycleUid),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),deliver_policy:import_jetstream6.DeliverPolicy.All};if(opts.inactiveThresholdMs)cfg.inactive_threshold=(0,import_transport_node4.nanos)(opts.inactiveThresholdMs);return cfg}function fanoutDurableConfig(space2,opts={}){return{durable_name:fanoutDurable(opts.shard,opts.shards),filter_subject:chatWildcard(space2),ack_policy:import_jetstream6.AckPolicy.Explicit,ack_wait:(0,import_transport_node4.nanos)(opts.ackWaitMs??6e4),deliver_policy:import_jetstream6.DeliverPolicy.New}}var TTL_RECONCILE_CANARY_KEY="_cotal_ttl_reconcile";var import_transport_node5=__toESM(require_transport_node(),1);var import_nkeys8=__toESM(require_mod(),1);var SERVICE_RENEWAL_TTL_SECONDS=24*60*60;var SERVICE_AUTHORITY_MAX_BYTES=2*1024*1024;var SERVICE_CALLER_PAYLOAD_OVERHEAD=1024;var SERVICE_CALLER_PAYLOAD_FLOOR=SERVICE_AUTHORITY_MAX_BYTES+SERVICE_CALLER_PAYLOAD_OVERHEAD;var import_jetstream7=__toESM(require_mod4(),1);var import_transport_node6=__toESM(require_transport_node(),1);import{createHash as createHash5}from"node:crypto";var CONTRACT_ARTIFACT_MAX_BYTES=256*1024;var CONTRACT_CLOSURE_MAX_BYTES=1024*1024;var CONTRACT_CLOSURE_MAX_REF_DEPTH=32;var STORE_RESOURCES=new WeakMap;async function contractStoreContext(nc,space2){if(nc===null||typeof nc!=="object"||typeof nc.close!=="function")throw new EpEnvelopeError("failed-precondition","a contract-store context is constructed from ONE binding-layer connection; separate resources are never accepted (SPEC 13.4)");if(typeof space2!=="string"||space2.length===0)throw new EpEnvelopeError("failed-precondition","a contract-store context needs a space");const js=(0,import_jetstream7.jetstream)(nc);const jsm=await(0,import_jetstream7.jetstreamManager)(nc,{checkAPI:false});const ctx=Object.freeze({space:space2});STORE_RESOURCES.set(ctx,{js,jsm});return ctx}function resources(ctx){const r=ctx===null||typeof ctx!=="object"?void 0:STORE_RESOURCES.get(ctx);if(r===void 0)throw new EpEnvelopeError("failed-precondition",`the contract-store context was not constructed by contractStoreContext(); a hand-assembled resource bundle never authorizes - the space bond is constructed, not asserted (SPEC 13.4)`);return r}function contractArtifactDigestHex(bytes){return createHash5("sha256").update(bytes).digest("hex")}function assertCanonicalArtifactBytes(bytes,what){let text2;try{text2=new TextDecoder("utf-8",{fatal:true}).decode(bytes)}catch{throw new EpEnvelopeError("contract-invalid",`${what} is not valid UTF-8; only strict canonical JSON is a contract artifact (SPEC 13.7)`)}let value;try{value=JSON.parse(text2)}catch(e){throw new EpEnvelopeError("contract-invalid",`${what} does not parse as JSON (${e.message}); only strict canonical JSON is a contract artifact (SPEC 13.7)`)}let canonical;try{canonical=canonicalJson(value)}catch(e){throw new EpEnvelopeError("contract-invalid",`${what} is not interchangeable I-JSON (${e.message}); only strict canonical JSON is a contract artifact (SPEC 13.7)`)}if(canonical!==text2)throw new EpEnvelopeError("contract-invalid",`${what} is not its own RFC 8785 canonical serialization; a noncanonical encoding never gets its own content identity (SPEC 13.7)`);return value}function verifyStored(data,digestHex,subject){if(data.length>CONTRACT_ARTIFACT_MAX_BYTES)return void 0;if(contractArtifactDigestHex(data)!==digestHex)return void 0;try{assertCanonicalArtifactBytes(data,`the artifact at ${subject}`)}catch{return void 0}return data}async function fetchContractArtifact(ctx,digestHex){const{jsm}=resources(ctx);const stream=epcStreamName(ctx.space);const subject=epcSubject(ctx.space,digestHex);const read=async req=>{try{const stored=await jsm.direct.getMessage(stream,req);return stored===null?"absent":stored.data}catch(e){if(e?.code===10037)return"absent";throw new EpEnvelopeError("unavailable",`the contract-store read for ${digestHex} failed (a failed observation is never absence, SPEC 13.7): ${e?.message??String(e)}`)}};const last=await read({last_by_subj:subject});if(last==="absent")return void 0;const okLast=verifyStored(last,digestHex,subject);if(okLast!==void 0)return okLast;const first=await read({seq:0,next_by_subj:subject});if(first==="absent")return void 0;const okFirst=verifyStored(first,digestHex,subject);if(okFirst!==void 0)return okFirst;throw new EpEnvelopeError("internal",`no message at ${subject} recomputes its digest as strict canonical JSON (checked both the last and the create-only winner); verify-on-read is the tamper boundary and a store with no verifying artifact never serves (SPEC 13.7)`)}async function fetchContractClosure(ctx,closureDigestRef,extractRefs,opts={}){resources(ctx);const max=opts.maxArtifacts??CONTRACT_CLOSURE_MAX_ARTIFACTS;if(!Number.isSafeInteger(max)||max<=0||max>CONTRACT_CLOSURE_MAX_ARTIFACTS)throw new EpEnvelopeError("failed-precondition",`maxArtifacts must be a positive integer at or below the frozen ${CONTRACT_CLOSURE_MAX_ARTIFACTS}-artifact ceiling (a caller narrows, never widens); got ${JSON.stringify(opts.maxArtifacts)} (SPEC 13.7)`);const budgetMs=opts.walkBudgetMs??3e4;if(!Number.isSafeInteger(budgetMs)||budgetMs<=0)throw new EpEnvelopeError("failed-precondition",`walkBudgetMs must be a positive integer; got ${JSON.stringify(opts.walkBudgetMs)}`);if(typeof extractRefs!=="function")throw new EpEnvelopeError("failed-precondition","a closure fetch requires the reference-resolution seam (extractRefs); the store never guesses a document's reference shape (SPEC 13.7)");const startedAt2=performance.now();const overBudget=()=>performance.now()-startedAt2>budgetMs;const raceBudget=async(p,what)=>{opts.signal?.throwIfAborted();const rem=budgetMs-(performance.now()-startedAt2);if(rem<=0)throw new EpEnvelopeError("deadline-exceeded",`the closure walk exhausted its ${budgetMs}ms budget before ${what} (SPEC 13.7/13.8)`);let timer;let onAbort;const bound=new Promise((_,reject)=>{timer=setTimeout(()=>reject(new EpEnvelopeError("deadline-exceeded",`the closure walk exceeded its ${budgetMs}ms budget during ${what}; a closure fetch is bounded and fails loud, never hangs (SPEC 13.7/13.8)`)),rem);onAbort=()=>reject(opts.signal?.reason);opts.signal?.addEventListener("abort",onAbort,{once:true})});try{return await Promise.race([p,bound])}finally{clearTimeout(timer);if(onAbort)opts.signal?.removeEventListener("abort",onAbort)}};const getArtifact=hex3=>{const memo=opts.artifactMemo;if(!memo)return fetchContractArtifact(ctx,hex3);const hit=memo.get(hex3);if(hit)return hit;const p=fetchContractArtifact(ctx,hex3);p.catch(()=>{});memo.set(hex3,p);return p};const closureHex=contractRefToHex(closureDigestRef);const manifestBytes=await raceBudget(getArtifact(closureHex),`the manifest fetch for ${closureHex}`);if(manifestBytes===void 0)throw new EpEnvelopeError("failed-precondition",`the closure manifest ${closureHex} is not published; a closure digest names its manifest artifact (SPEC 13.7)`);const manifest=parseClosureManifest(assertCanonicalArtifactBytes(manifestBytes,`the manifest ${closureHex}`),`the manifest ${closureHex}`);const rootHex=contractRefToHex(manifest.root);const out=new Map;let totalBytes=0;let rootReReached=false;const queue=[{hex:rootHex,depth:0}];while(queue.length>0){if(overBudget())throw new EpEnvelopeError("deadline-exceeded",`the closure walk for ${closureHex} exceeded its ${budgetMs}ms budget; a closure fetch is bounded and fails loud, never hangs (SPEC 13.7/13.8)`);const{hex:hex3,depth}=queue.shift();if(depth>CONTRACT_CLOSURE_MAX_REF_DEPTH)throw new EpEnvelopeError("contract-invalid",`the closure walk for ${closureHex} exceeds the ${CONTRACT_CLOSURE_MAX_REF_DEPTH}-deep reference chain bound (SPEC 13.7)`);if(out.has(hex3))continue;if(out.size>=max)throw new EpEnvelopeError("failed-precondition",`the contract closure exceeds the ${max}-artifact bound; a truncated closure never verifies as complete (SPEC 13.7)`);const bytes=await raceBudget(getArtifact(hex3),`the fetch of ${hex3}`);if(bytes===void 0)throw new EpEnvelopeError("failed-precondition",`the closure references artifact ${hex3} but it is not published; a closure is fetched all-or-nothing (SPEC 13.7)`);totalBytes+=bytes.length;if(totalBytes>CONTRACT_CLOSURE_MAX_BYTES)throw new EpEnvelopeError("contract-invalid",`the closure for ${closureHex} exceeds the ${CONTRACT_CLOSURE_MAX_BYTES}-byte bound (SPEC 13.7)`);out.set(hex3,bytes);const refs=extractRefs(new Uint8Array(bytes),hex3);if(!Array.isArray(refs)||!refs.every(r=>typeof r==="string"))throw new EpEnvelopeError("internal",`the reference-resolution seam returned a non-string-array for ${hex3}; a garbled resolution never extends a closure (SPEC 13.7)`);if(refs.length>CONTRACT_CLOSURE_MAX_ARTIFACTS)throw new EpEnvelopeError("contract-invalid",`artifact ${hex3} names ${refs.length} references, above the ${CONTRACT_CLOSURE_MAX_ARTIFACTS}-reference cap; an unbounded reference list never extends a closure (SPEC 13.7)`);if(overBudget())throw new EpEnvelopeError("deadline-exceeded",`the closure walk for ${closureHex} exceeded its ${budgetMs}ms budget resolving references for ${hex3} (SPEC 13.7/13.8)`);for(const r of refs){const rHex=contractRefToHex(r);if(rHex===rootHex)rootReReached=true;queue.push({hex:rHex,depth:depth+1})}}const walked=new Set;for(const hex3 of out.keys())if(hex3!==rootHex||rootReReached)walked.add(sha256Ref(hex3));const memberSet=new Set(manifest.members);for(const m of walked)if(!memberSet.has(m))throw new EpEnvelopeError("contract-invalid",`the closure walk reached ${m} but the manifest ${closureHex} does not name it; an under-naming manifest never verifies (SPEC 13.7)`);for(const m of memberSet)if(!walked.has(m))throw new EpEnvelopeError("contract-invalid",`the manifest ${closureHex} names ${m} but the walk never reached it; an over-naming manifest never verifies (SPEC 13.7)`);return{manifest,artifacts:out}}var ED25519_P=(1n<<255n)-19n;var import_nkeys7=__toESM(require_mod(),1);var import_transport_node7=__toESM(require_transport_node(),1);var EVICT_PRINCIPALS_MAX=256;var SOURCE_CHAIN_ID="[A-Za-z0-9_-]{1,64}";var SOURCE_CHAIN_ELEMENT=new RegExp(`^(root|handle\\.${SOURCE_CHAIN_ID}\\.${SOURCE_CHAIN_ID}|session\\.${SOURCE_CHAIN_ID})$`);var enc4=new TextEncoder;var dec4=new TextDecoder("utf-8",{fatal:true});var PLACEMENT_COMMANDS=Object.freeze(["describe","resolve-cwd","spawn"]);var PLACED_LIFECYCLE_COMMANDS=Object.freeze(["turn"]);var import_nats_core3=__toESM(require_mod3(),1);var import_jetstream8=__toESM(require_mod4(),1);var import_obj2=__toESM(require_mod7(),1);var ARTIFACT_PART_KIND="artifact";function isArtifactPart(value){if(!value||typeof value!=="object")return false;const p=value;return p.kind===ARTIFACT_PART_KIND&&typeof p.name==="string"&&p.name.length>0&&typeof p.mediaType==="string"&&p.mediaType.length>0&&typeof p.digest==="string"&&isContractDigest(p.digest)&&typeof p.size==="number"&&Number.isSafeInteger(p.size)&&p.size>=0}var TRANSFER_CHUNK_MAX=128*1024;var HEADER_ROOM=4*1024;var import_jetstream9=__toESM(require_mod4(),1);var import_transport_node8=__toESM(require_transport_node(),1);var DEFAULT_TRANSFER_TIMEOUT_MS=5*60*1e3;function principalFromDurable(name,prefix){if(!name.startsWith(prefix))return void 0;const match=/^([A-Za-z0-9_]+)-([A-Za-z0-9_]+)-([a-z0-9]+)$/.exec(name.slice(prefix.length));return match?{owner:match[1],actor:match[2],lifecycleUid:match[3]}:void 0}function expectedConsumerConfig(space2,stream,name){if(stream===chatStream(space2)&&name===FANOUT_DURABLE)return fanoutDurableConfig(space2);if(stream===inboxStream(space2)&&name===INBOX_READER_DURABLE)return inboxReaderConfig(space2);if(stream===dmStream(space2)){const principal=principalFromDurable(name,"dm_");if(principal)return dmDurableConfig(space2,principal.owner,principal.actor,principal.lifecycleUid)}if(stream===dlvStream(space2)){const principal=principalFromDurable(name,"dlv_");if(principal)return dlvDurableConfig(space2,principal.owner,principal.actor,principal.lifecycleUid)}if(stream===taskStream(space2)&&/^svc_[A-Za-z0-9_-]+$/.test(name))return{...taskDurableConfig(space2,name.slice("svc_".length)),deliver_policy:import_jetstream9.DeliverPolicy.All};throw new Error(`unsupported persistent consumer ${stream}/${name}`)}var CONSUMER_KEYS=new Set(["ack_policy","ack_wait","backoff","deliver_group","deliver_policy","deliver_subject","description","durable_name","filter_subject","filter_subjects","flow_control","headers_only","idle_heartbeat","inactive_threshold","max_ack_pending","max_batch","max_bytes","max_deliver","max_expires","max_waiting","mem_storage","metadata","name","num_replicas","opt_start_seq","opt_start_time","pause_until","priority_groups","priority_policy","priority_timeout","rate_limit_bps","replay_policy","sample_freq"]);function validatePersistentConsumer(space2,stream,info){const expected=expectedConsumerConfig(space2,stream,info.name);const config2=info.config;const unknown2=Object.keys(config2).filter(key=>!CONSUMER_KEYS.has(key));if(unknown2.length)throw new Error(`${stream}/${info.name} has unsupported consumer fields: ${unknown2.sort().join(", ")}`);if(config2.name!==void 0&&config2.name!==info.name)throw new Error(`${stream}/${info.name} has a mismatched name`);if(config2.durable_name!==info.name)throw new Error(`${stream}/${info.name} is not a canonical durable`);if(config2.deliver_subject||config2.deliver_group)throw new Error(`${stream}/${info.name} is a push consumer`);if(config2.filter_subject!==expected.filter_subject||(config2.filter_subjects?.length??0)!==0)throw new Error(`${stream}/${info.name} has a noncanonical filter`);if(config2.ack_policy!==import_jetstream9.AckPolicy.Explicit||config2.ack_wait!==expected.ack_wait)throw new Error(`${stream}/${info.name} has noncanonical ACK settings`);const task=stream===taskStream(space2);const migrated=!task&&config2.deliver_policy===import_jetstream9.DeliverPolicy.StartSequence;const implicitTaskAll=task&&config2.deliver_policy===void 0;if(config2.deliver_policy!==expected.deliver_policy&&!migrated&&!implicitTaskAll)throw new Error(`${stream}/${info.name} has a noncanonical delivery policy`);if(migrated){if(!Number.isSafeInteger(config2.opt_start_seq)||(config2.opt_start_seq??0)<1)throw new Error(`${stream}/${info.name} has an invalid creation lower bound`)}else if(config2.opt_start_seq!==void 0||config2.opt_start_time!==void 0){throw new Error(`${stream}/${info.name} has an unexpected start bound`)}const expectedMaxAck=expected.max_ack_pending??1e3;if((config2.max_ack_pending??1e3)!==expectedMaxAck)throw new Error(`${stream}/${info.name} has noncanonical max_ack_pending`);if((config2.max_deliver??-1)!==-1||(config2.max_waiting??512)!==512)throw new Error(`${stream}/${info.name} has noncanonical delivery limits`);if((config2.replay_policy??import_jetstream9.ReplayPolicy.Instant)!==import_jetstream9.ReplayPolicy.Instant||(config2.num_replicas??0)!==0)throw new Error(`${stream}/${info.name} has noncanonical replay/replica settings`);for(const key of["backoff","description","flow_control","headers_only","idle_heartbeat","inactive_threshold","max_batch","max_bytes","max_expires","mem_storage","metadata","pause_until","priority_groups","priority_policy","priority_timeout","rate_limit_bps","sample_freq"]){const value=config2[key];if(key==="metadata"&&value&&typeof value==="object"&&!Array.isArray(value)&&Object.entries(value).every(([metadataKey,metadataValue])=>metadataKey.startsWith("_nats.")&&typeof metadataValue==="string"))continue;if(value!==void 0&&value!==false&&value!==0&&value!==""&&!(Array.isArray(value)&&value.length===0)&&!(typeof value==="object"&&value!==null&&Object.keys(value).length===0))throw new Error(`${stream}/${info.name} has active unsupported setting ${key}`)}}function isRestoredConsumer(space2,stream,info,wanted){if(info.name!==wanted.durable_name||info.config.deliver_policy!==import_jetstream9.DeliverPolicy.StartSequence||info.config.ack_wait!==wanted.ack_wait)return false;try{validatePersistentConsumer(space2,stream,info)}catch{return false}return true}var FIVE_MINUTES=5*60;var MAX_CONTROL_LINE_BYTES=65536;var CONNECT_ENVELOPE_OVERHEAD_BYTES=512;var MAX_MINTED_JWT_BYTES=MAX_CONTROL_LINE_BYTES-CONNECT_ENVELOPE_OVERHEAD_BYTES;var STANDING_RENEWABLE_TTL_SEC=24*60*60;var ROTATION_RENEWED_TTL_SEC=30*24*60*60;var CREDENTIAL_LIFETIMES={agent:{class:"mixed",note:"manager children, foreground spawn/join, and `cotal mint` static outputs all use this profile; split or repair flow required before default exp"},"manager-caller":{class:"mixed",note:"short-lived user-auth view bound to the bearer expiry and one manager instance"},observer:{class:"static-operator-managed",note:"out-of-band dashboard/audit credential from `cotal mint`"},admin:{class:"static-operator-managed",note:"out-of-band elevated dashboard/audit credential from `cotal mint`"},supervisor:{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"manager's always-on endpoint; the manager holds the DATA seed and self-remints via the endpoint creds source"},delivery:{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"server-side Plane-3 daemon; seed-less - the manager re-signs .cotal/delivery.creds for the SAME nkey, requests delivery-admin reloadCreds for explicit adoption, and the endpoint source re-read is only a backstop"},"membership-rw":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"membership feed writer; seed-less - the manager re-signs the membership-rw.creds store key for the SAME nkey, the feed adopts it on a 75% preflight-proven renewal timer (its active self-heal), and delivery-admin reloadCreds is the explicit adoption on top"},provisioner:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"setup/spawn provisioning window only"},deprovisioner:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"target-pinned teardown window only"},"retirement-requester":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one despawn's retirement request window; request+reply only"},"lifecycle-executor":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one static lifecycle operation's 13.1 state-write window (activation / terminal / renewal ledger append)"},"endpoint-serve-executor":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one endpoint registration/serve-mint window (13.1 epgate CAS + epcred stage/revoke + eprepair cursor for one (endpoint, instanceId))"},operator:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"send/dm/join/probe-style operator command"},purger:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"history purge command"},backup:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"offline snapshot phase; exact stream and delivery subject, memory-only"},restore:{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"offline restore initiation or exact-ID upload phase, memory-only"},probe:{class:"one-shot",defaultTtlSeconds:60,note:"connect-only preflight"},"channel-writer":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"channel registry mutation command"},"channel-purger":{class:"mixed",note:"one-shot for CLI, standing inside web; split or renewal required before default exp"},teardown:{class:"one-shot",note:"space teardown can be long/destructive; needs TTL budget/remint guard before default exp"},"issued-store-recreate":{class:"one-shot",defaultTtlSeconds:30*60,note:"one `up --recreate-issued-stores` step: snapshot and delete the two pre-retention issued-authority stores of one space; 30 minutes bounds a large store's snapshot"},"control-caller-privileged":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"ps/start control call"},"control-caller-admin":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"stop/attach admin control call"},deployer:{class:"one-shot",note:"manifest deploy spans planning/launch/ledger; needs near-expiry guard or remint before default exp"},"endpoint-serve":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"per-instance endpoint serve credential (SPEC 13.9); the managing authority re-mints on renewal and on takeover (new epoch), and the 13.1 barrier revokes the superseded one"},"goal-writer":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"self-mediated goal-writer for spawn-as-action; the manager re-mints for the SAME nkey on renewal, disjoint from the serve credential"},"session-caller":{class:"one-shot",defaultTtlSeconds:24*60*60,note:"per-session console/CLI caller cred: rails-only for ONE \xA713.6 session; TTL-BOUND to the session (the face mints with expiresAt = the session exp; the 24h default is the SESSION_GRANT_MAX_TTL ceiling, never a standing lifetime); NEVER renewed - a new session mints a new cred"},"dm-reader":{class:"mixed",note:"user-auth own-DM reader view: one dm_ durable's INFO/NEXT/ACK, bound to the bearer expiry (which the IdP proof bounds); renewed by re-exchange, never a standing credential"},"session-serving":{class:"one-shot",defaultTtlSeconds:24*60*60,note:"per-session SERVING cred: rails-only for ONE \xA713.6 session, the mirror of session-caller with the directions swapped; minted at redemption and TTL-BOUND to the session (the 24h default is the SESSION_GRANT_MAX_TTL ceiling, never a standing lifetime); NEVER renewed - a new session mints a new cred, and the session's terminal revokes this one by name"},"session-ledger":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"manager's session LEDGER: the dedicated sessions-bucket `session.<id>` rows and NOTHING else - no session rail of any shape. Standing because SPEC 13.6 makes it the durable revocation authority that must survive the serving endpoint; the manager re-mints for the SAME nkey on the half-TTL loop (the goal-writer precedent)"},"run-driver":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"one workflow run's driver, per takeover attempt (SPEC 14.6): the hosting manager mints it when it takes the run over and re-mints for the SAME nkey on renewal; a new takeover mints a new one"},"run-mediator":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"manager",note:"trusted workflow host operations, bound to one run and attempt; kept on the hosting process's connection"},"run-operator":{class:"one-shot",defaultTtlSeconds:60,note:"one served run-status / run-ps / run-answer call (SPEC 14.3): the hosting manager mints it per call on its own connection, never the serve rails; 60s bounds a copied cred to a minute"},issuer:{class:"mixed",defaultTtlSeconds:FIVE_MINUTES,renewalOwner:"auth-service",note:"renewed as the auth plane's held session for connect-time issuance (re-minted before exp, closed with the plane); one-shot for every other issuance window and for a lifecycle terminal's issuance retirement (SPEC 13.15)"},"run-admitter":{class:"one-shot",defaultTtlSeconds:60,note:"one hosted run's admission record create, or its revocation marker (SPEC 14.8); 60s bounds a copied cred to a minute"},"transfer-writer":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one carried resume per CLI call: one object's chunk and meta subjects in one instance's transfer bucket"},"transfer-reader":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one transcript-receive or sweep over the minting instance's own transfer bucket"},"endpoint-evictor":{class:"one-shot",defaultTtlSeconds:60,note:"one re-registration's verify-evict window: a scoped delivery-admin caller that kicks+verifies the SUPERSEDED serve family before the epoch advances; 60s bounds a copied cred to a minute"},"remote-manager":{class:"standing-renewable",defaultTtlSeconds:STANDING_RENEWABLE_TTL_SEC,renewalOwner:"auth-service",note:"the scoped remote manager lifecycle: own lease/presence plus same-owner agent provisioning; issued only by the typed supervise protocol, never by `cotal mint` or a raw view/profile string"},"environment-bootstrap":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"one admitted environment's bootstrap caller; explicit expiry capped by admission and five minutes"},"environment-manager-supervisor":{class:"standing-renewable",renewalOwner:"environment-authority",note:"own lease/presence/liveness; explicit expiry capped by admission, no auth-store access"},"environment-manager-executor":{class:"standing-renewable",renewalOwner:"environment-authority",note:"own admitted authority instance RPC; explicit expiry capped by admission, no direct store access"},"environment-manager-goal-writer":{class:"standing-renewable",renewalOwner:"environment-authority",note:"manager goal rows without the auth-read belt; explicit expiry capped by admission"},"membership-observer":{class:"rotation-renewed",defaultTtlSeconds:ROTATION_RENEWED_TTL_SEC,renewalOwner:"system-account rotation",note:"$SYS-account CONNZ observer; NOT online-renewable ($SYS seed dies at `up`) - bounded exp, renewed only by rotateSystemAccount + broker restart; doctor warns near expiry"},"account-census":{class:"one-shot",defaultTtlSeconds:FIVE_MINUTES,note:"Host-only account CONNZ and account-qualified replies; at most five minutes, no KICK or client-side renewal"},"connection-evictor":{class:"rotation-renewed",defaultTtlSeconds:ROTATION_RENEWED_TTL_SEC,renewalOwner:"system-account rotation",note:"$SYS-account KICK-only live-eviction cred; same rotation-renewed posture as the observer"}};for(const p of Object.values(CREDENTIAL_LIFETIMES))Object.freeze(p);Object.freeze(CREDENTIAL_LIFETIMES);var LIFETIME_TTL_SNAP=new Map(Object.entries(CREDENTIAL_LIFETIMES).map(([k,p])=>[k,p.defaultTtlSeconds]));function inspectCredHealth(creds,nowSec=Math.floor(Date.now()/1e3)){let claims2;try{claims2=credsClaims(creds)}catch(e){return{state:"unreadable",error:e.message}}const{iat,exp}=claims2;if(typeof exp!=="number")return{state:"unbounded",iat};if(typeof iat!=="number")return{state:"unreadable",iat:void 0,exp,error:"user JWT carries exp but no iat - cannot place the renewal point"};const renewAt=Math.floor(iat+.75*(exp-iat));if(nowSec>=exp)return{state:"expired",iat,exp,renewAt};if(nowSec>=renewAt)return{state:"near-expiry",iat,exp,renewAt};return{state:"healthy",iat,exp,renewAt}}var BASE_LIMITS={subs:-1,conn:-1,leaf:-1,imports:-1,exports:-1,data:-1,payload:-1,wildcards:true};var DATA_LIMITS={...BASE_LIMITS,mem_storage:-1,disk_storage:-1};var SYS_LIMITS={...BASE_LIMITS,mem_storage:0,disk_storage:0};var LAUNCH_READ_COMMANDS=Object.freeze(["status","models","resolve-cwd"]);function parseSecretStoreIdentity(raw){if(raw===null||typeof raw!=="object"||Array.isArray(raw))throw new Error("secret-store identity must be an object");const o=raw;const keys=Object.keys(o);if(o.kind==="fs"){if(keys.some(k=>k!=="kind"&&k!=="root"&&k!=="id"))throw new Error("secret-store identity of kind fs admits only {kind, root, id}");if(typeof o.root!=="string"||!o.root.trim())throw new Error("secret-store identity of kind fs requires a non-blank root");if(typeof o.id!=="string"||!o.id.trim())throw new Error("secret-store identity of kind fs requires a non-blank id");return{kind:"fs",root:o.root,id:o.id}}if(o.kind==="injected"){if(keys.some(k=>k!=="kind"&&k!=="coordinate"))throw new Error("secret-store identity of kind injected admits only {kind, coordinate}");if(typeof o.coordinate!=="string"||!o.coordinate.trim())throw new Error("secret-store identity of kind injected requires a non-blank coordinate");return{kind:"injected",coordinate:o.coordinate}}throw new Error('secret-store identity kind must be "fs" or "injected"')}var import_jetstream13=__toESM(require_mod4(),1);var import_jetstream12=__toESM(require_mod4(),1);var import_transport_node11=__toESM(require_transport_node(),1);var GOAL_TERMINAL_STATES=Object.freeze(["succeeded","failed","cancelled","expired","uncertain"]);function assertClosedKeys(o,allowed,what){for(const k of Object.keys(o))if(!allowed.includes(k))throw new EpEnvelopeError("internal",`${what} carries unknown field ${JSON.stringify(k)}; a closed schema admits no extras - garbled state never authorizes (SPEC 13.4)`)}function assertGoalResultFactShape(raw,subject,ref){if(raw===null||typeof raw!=="object"||Array.isArray(raw))throw new EpEnvelopeError("internal",`goal result fact on ${subject} is not an object; garbled state never authorizes (SPEC 13.6)`);const o=raw;assertClosedKeys(o,["v","goalId","fingerprint","state","outcomeDigest","data","committer","ts"],`goal result fact on ${subject}`);if(o.committer!==void 0){const cm=o.committer;if(cm===null||typeof cm!=="object"||Array.isArray(cm))throw new EpEnvelopeError("internal",`goal result fact on ${subject} committer is not an object; garbled state never authorizes (SPEC 13.6)`);assertClosedKeys(cm,["instanceId","epoch"],`goal result fact on ${subject} committer`);if(typeof cm.instanceId!=="string"||cm.instanceId.length===0||typeof cm.epoch!=="number"||!Number.isSafeInteger(cm.epoch)||cm.epoch<0)throw new EpEnvelopeError("internal",`goal result fact on ${subject} carries a malformed committer; garbled state never authorizes (SPEC 13.6)`)}if(o.v!==1||typeof o.goalId!=="string"||typeof o.fingerprint!=="string"||o.fingerprint.length===0||typeof o.state!=="string"||!GOAL_TERMINAL_STATES.includes(o.state)||typeof o.outcomeDigest!=="string"||o.outcomeDigest.length===0||typeof o.ts!=="number"||!Number.isSafeInteger(o.ts)||o.ts<0)throw new EpEnvelopeError("internal",`goal result fact on ${subject} is malformed; garbled state never authorizes (SPEC 13.6)`);if(o.goalId!==ref.goalId)throw new EpEnvelopeError("internal",`goal result fact on ${subject} names goalId ${JSON.stringify(o.goalId)}, not its subject's ${ref.goalId}; a mis-subjected fact never authorizes (SPEC 13.4)`);return o}function goalOutcomeDigestMismatch(subject){return new EpEnvelopeError("internal",`goal result fact on ${subject} carries an outcomeDigest that does not match its payload; a digest-inconsistent fact never authorizes (SPEC 13.6)`)}var import_jetstream10=__toESM(require_mod4(),1);var import_transport_node9=__toESM(require_transport_node(),1);var MAX_SCHEDULE_MS=Date.UTC(9999,11,31,23,59,59,999);var import_jetstream11=__toESM(require_mod4(),1);var import_transport_node10=__toESM(require_transport_node(),1);var import_nkeys9=__toESM(require_mod(),1);var ANCHOR_ROLES=Object.freeze(["handles","traits","receipts","resume","sessions","authz-slots","obligations","payments","consents"]);var BRANDED_CONTEXTS=new WeakSet;function assertCtx(ctx){if(!BRANDED_CONTEXTS.has(ctx))throw new EpEnvelopeError("failed-precondition",`the action context was not constructed by actionContext(); a hand-assembled resource bundle never authorizes - the space bond is constructed, not asserted (SPEC 13.4)`)}var GUARD_CLEARANCES=new WeakMap;var clearanceMintClaimed=false;function claimGuardClearanceMint(){if(clearanceMintClaimed)throw new EpEnvelopeError("permission-denied","the guard-clearance mint is already claimed by THE gate; a guarded goal's edge into running opens only through it (SPEC 13.6)");clearanceMintClaimed=true;return(ctx,goalId)=>{assertCtx(ctx);const clearance=Object.freeze({goalId:assertIdToken(goalId,"goalId")});GUARD_CLEARANCES.set(clearance,ctx);return clearance}}var GOAL_STATES=Object.freeze(["accepted","running","waiting","cancelling","succeeded","failed","cancelled","expired","uncertain"]);function parseGoalResultFact(raw,subject,ref){const o=assertGoalResultFactShape(raw,subject,ref);if(contractDigest(o.data===void 0?null:o.data)!==o.outcomeDigest)throw goalOutcomeDigestMismatch(subject);return o}var import_nats_core4=__toESM(require_mod3(),1);function base64url(bytes){let binary="";for(const b of bytes)binary+=String.fromCharCode(b);return btoa(binary).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function fromBase64url(text2){const b64=text2.replace(/-/g,"+").replace(/_/g,"/");const binary=atob(b64+"=".repeat((4-b64.length%4)%4));return Uint8Array.from(binary,ch=>ch.charCodeAt(0))}var nonce=()=>base64url(globalThis.crypto.getRandomValues(new Uint8Array(24)));function subjectTarget(t){if(t.mode==="self")return{mode:"self"};if(t.mode==="handle"||t.mode==="exact")return{mode:t.mode,tOwner:t.owner,tActor:t.actor,tUid:t.lifecycleUid};return{mode:t.mode,tOwner:t.owner}}function bodyTarget(t){if(t.mode==="self")return void 0;return{owner:assertBoundedOwner(t.owner,"target owner"),actor:t.actor,lifecycleUid:assertLifecycleToken(t.lifecycleUid,"target lifecycleUid"),...t.mappingRevision!==void 0?{mappingRevision:t.mappingRevision}:{}}}function buildRequest(space2,route,op,verb){let args;try{args=op.args===void 0?void 0:JSON.parse(JSON.stringify(op.args))}catch(e){throw new EpEnvelopeError("bad-request",`args cannot be sent as JSON: ${e instanceof Error?e.message:String(e)}`,void 0,"not-executed")}try{assertArgsValid(op.contract.input.validate,args)}catch(e){if(!(e instanceof EpEnvelopeError))throw e;const property=op.contract.input.validate.errors?.[0]?.params?.additionalProperty;throw new EpEnvelopeError(e.code,e.message,typeof property==="string"?[{kind:EP_UNDECLARED_ARG,property,...op.bind!==void 0?{instanceId:op.bind.instanceId}:{}}]:void 0,"not-executed")}if(op.bind!==void 0){if(op.command==="describe")throw new EpEnvelopeError("bad-request","describe carries no bind: it is the bootstrap that produces one (SPEC 13.3)");if(route.mode==="all")throw new EpEnvelopeError("bad-request","a scatter addresses every incarnation; a bind would make every member but one refuse (SPEC 13.5)");if(route.mode==="inst"&&op.bind.instanceId!==route.instanceId)throw new EpEnvelopeError("bad-request",`bind.instanceId "${op.bind.instanceId}" contradicts the inst-rail route's instance "${route.instanceId}" (SPEC 13.2)`)}const n=nonce();const subject=epRequestSubject(space2,{route,endpoint:op.endpoint,command:op.command,...op.target?{target:subjectTarget(op.target)}:{},caller:op.caller,nonce:n});const requestId=op.id!==void 0?assertIdToken(op.id,"pinned envelope id"):nonce();const env={v:1,id:requestId,op:{endpoint:op.endpoint,command:op.command,inputDigest:op.contract.input.closureDigest,outputDigest:op.contract.output.closureDigest},class:"ephemeral",replyExpected:verb.replyExpected,...op.goalId!==void 0?{goalId:op.goalId}:{},...op.target&&op.target.mode!=="self"?{target:bodyTarget(op.target)}:{},...op.bind!==void 0?{bind:{instanceId:assertLifecycleToken(op.bind.instanceId,"bind instanceId"),epoch:op.bind.epoch}}:{},...args!==void 0?{args}:{},from:{id:`${op.caller.owner}.${op.caller.actor}`,name:op.name??op.caller.actor},...verb.deadlineMs!==void 0?{deadlineMs:verb.deadlineMs}:{},...op.correlation!==void 0?{correlation:op.correlation}:{},...op.auth!==void 0?{auth:op.auth}:{}};return{subject,requestId,n,body:new TextEncoder().encode(JSON.stringify(env))}}var MAX_TIMER_MS2=2147483647;function assertDeadline(deadlineMs,what="deadlineMs"){if(!Number.isSafeInteger(deadlineMs)||deadlineMs<=0||deadlineMs>MAX_TIMER_MS2)throw new EpEnvelopeError("bad-request",`${what} ${deadlineMs} must be a positive budget within the timer bound ${MAX_TIMER_MS2}ms (SPEC 13.3: bounded, never unbounded; a larger setTimeout clamps to 1ms)`);return deadlineMs}function isNoRespondersMsg(msg){const h=msg.headers;return h!=null&&(h.code===503||h.status==="503")}async function raceBounded(read,ms,what,details){let t;try{return await Promise.race([(async()=>read())(),new Promise((_,reject)=>{t=setTimeout(()=>reject(new EpEnvelopeError("deadline-exceeded",`${what} did not settle within the ${ms}ms budget (SPEC 13.5)`,details)),ms)})])}finally{if(t!==void 0)clearTimeout(t)}}var unansweredDetail=op=>({kind:EP_UNANSWERED,endpoint:op.endpoint,command:op.command,rail:epPlaneTokens(op.caller).join(".")});function replySubjectFor(space2,caller,n){return`${spacePrefix(space2)}.${epPlaneTokens(caller).join(".")}.reply.*.*.*.${callerRailTokens(caller).join(".")}.${n}`}function noRespondersReplyTo(space2,caller,n){return`${spacePrefix(space2)}.${epPlaneTokens(caller).join(".")}.reply._nr._nr._nr.${callerRailTokens(caller).join(".")}.${n}`}function staleEpochRefusal(op,responder,held,reference,rail){const who=`the ${op.endpoint} instance ${responder.instanceId}`;const ahead=responder.epoch>held;const situation=reference==="bind"?ahead?`${who} answered at epoch ${responder.epoch}, but this handle resolved against it at epoch ${held}: a SUCCESSOR of the bound incarnation answered (a restart or supersession), so the handle is the stale side; re-resolve to adopt it`:`${who} answered at epoch ${responder.epoch}, but this handle resolved against it at epoch ${held}: a SUPERSEDED incarnation still connected answered, and its reply is rejected`:ahead?`${who} answered at epoch ${responder.epoch}, but a currency read of its registered epoch returned ${held}: the responder is ahead of the registry read (the read lags a restart), so its reply is rejected until the read catches up; nothing of this caller's is stale`:`${who} answered at epoch ${responder.epoch}, but a currency read of its registered epoch returned ${held}: a SUPERSEDED incarnation still connected answered, and its reply is rejected`;const detail={kind:EP_UNBOUND_RESPONDER,endpoint:op.endpoint,command:op.command,answeredBy:responder.instanceId,...reference==="bind"?{boundTo:responder.instanceId}:{},answeredEpoch:responder.epoch,heldEpoch:held,reference,pinned:rail==="inst"};return new EpEnvelopeError("expired",`${situation}. THIS SAYS NOTHING ABOUT WHETHER THE COMMAND RAN: ${responder.instanceId} received the request and answered it, so if "${op.command}" mutates, that effect may already have landed; verify the outcome ('ps'/'inspect'/roster) before re-issuing (SPEC 13.2, the stale-reply rejection rule)`,[detail])}function parseAttributedReply(space2,subject,data,requestId,op,expect){const parsed=parseEpSubject(subject);if(!parsed||parsed.plane!=="reply")throw new EpEnvelopeError("internal",`a message on the caller's reply rail does not parse as a reply subject: ${subject}`);if(parsed.endpoint!==op.endpoint)throw new EpEnvelopeError("internal",`reply endpoint "${parsed.endpoint}" is not the invoked endpoint "${op.endpoint}" (SPEC 13.2: the caller binds a reply to the requested identity, never trusts the subject alone)`);if(expect?.instanceId!==void 0&&parsed.instanceId!==expect.instanceId)throw new EpEnvelopeError("internal",`reply instance "${parsed.instanceId}" is not the addressed instance "${expect.instanceId}" (SPEC 13.2)`);if(expect?.epoch!==void 0&&parsed.epoch!==expect.epoch)throw staleEpochRefusal(op,{instanceId:parsed.instanceId,epoch:parsed.epoch},expect.epoch,"bind","inst");let rawBody;try{rawBody=JSON.parse(new TextDecoder().decode(data))}catch(e){throw new EpEnvelopeError("internal",`the reply body on the caller's rail is not JSON (${e instanceof Error?e.message:String(e)}); an unparseable reply is a responder bug surfaced as the caller boundary's structured refusal (SPEC 13.3)`)}const reply=parseEndpointReply(rawBody);if(reply.id!==requestId)throw new EpEnvelopeError("internal",`reply id "${reply.id}" does not echo the request id "${requestId}" on its nonce-scoped rail (SPEC 13.3)`);if(reply.ok)assertOutputValid(op.contract.output.validate,reply.data);return{reply,responder:{endpoint:parsed.endpoint,instanceId:parsed.instanceId,epoch:parsed.epoch}}}async function epCall(nc,space2,route,op,opts){opts.signal?.throwIfAborted();const deadlineMs=assertDeadline(opts.deadlineMs);if(route.mode==="one"&&opts.currentEpoch===void 0)throw new EpEnvelopeError("bad-request","epCall on the `one` rail requires opts.currentEpoch: the queue winner is not implicitly current, and a superseded-but-connected member's reply must be rejected (SPEC 13.2, the stale-reply rejection rule)");const req=buildRequest(space2,route,op,{replyExpected:true,deadlineMs});const expect=route.mode==="inst"?{instanceId:route.instanceId,epoch:route.epoch}:void 0;const noRespReplyTo=noRespondersReplyTo(space2,op.caller,req.n);const started=Date.now();let sub;let timer;let denialWatch;let onAbort;let published=false;const cancelled=new Promise((_,reject)=>{onAbort=()=>reject(new EpEnvelopeError("unavailable",`${op.endpoint}.${op.command} observation cancelled; the request may have executed`,published?[{...unansweredDetail(op),requestId:req.requestId}]:void 0,"unknown"));opts.signal?.addEventListener("abort",onAbort,{once:true})});try{denialWatch=openPublishDenialWatch(nc,req.subject,()=>new EpEnvelopeError("permission-denied",`the call for ${op.endpoint}.${op.command} was REFUSED BY THE BROKER, not unanswered: this caller's credential does not authorize publishing to "${req.subject}"${route.mode==="inst"?` (the instance rail for ${route.instanceId})`:""}. The responder may be perfectly healthy; the grant is what is missing: the current credential did not authorize this route, command or target, and the broker does not say which (SPEC 13.2)`,void 0,"not-executed"),"call");const outcome=new Promise((resolve3,reject)=>{sub=nc.subscribe(replySubjectFor(space2,op.caller,req.n),{callback:(err3,msg2)=>{if(err3){reject(new EpEnvelopeError("unavailable",`the caller's reply subscription failed: ${err3.message}`));return}if(msg2.subject===noRespReplyTo){if(isNoRespondersMsg(msg2)){reject(new EpEnvelopeError("unavailable",`no responder for ${op.endpoint}.${op.command} (SPEC 13.5)`,[unansweredDetail(op)],"not-executed"));return}reject(new EpEnvelopeError("internal",`a non-503 message reached the reserved no-responders sentinel for ${op.endpoint}.${op.command}; nothing but the broker control frame is addressable there`));return}resolve3({subject:msg2.subject,data:msg2.data})}});opts.signal?.throwIfAborted();nc.publish(req.subject,req.body,{reply:noRespReplyTo});published=true});const timeout=new Promise((_,reject)=>{timer=setTimeout(()=>reject(new EpEnvelopeError("deadline-exceeded",`no reply to ${op.endpoint}.${op.command} within the ${deadlineMs}ms budget (SPEC 13.5)`,[{...unansweredDetail(op),requestId:req.requestId}],"unknown")),deadlineMs)});const msg=await Promise.race([outcome,timeout,denialWatch.denied,cancelled]);const attributed=parseAttributedReply(space2,msg.subject,msg.data,req.requestId,op,expect);if(attributed.reply.ok===false&&bindRefusalMarked(attributed.reply.error)){if(op.bind===void 0)throw new EpEnvelopeError("internal",`${op.endpoint}.${op.command} replied with a bind refusal to a request that carried no bind`);const r=attributed.responder;if(r.instanceId===op.bind.instanceId&&r.epoch===op.bind.epoch)throw new EpEnvelopeError("internal",`${op.endpoint} instance ${r.instanceId} refused ${op.command} as the wrong incarnation, but the reply subject attributes it to exactly the bound one (${op.bind.instanceId} epoch ${op.bind.epoch}); the body does not get to contradict its own attribution (SPEC 13.3)`);const refusal=(attributed.reply.error?.details??[]).find(d=>d.kind===EP_BIND_REFUSED);if(refusal===void 0)throw new EpEnvelopeError("internal",`${op.endpoint}.${op.command} came back marked ${EP_BIND_REFUSED} with no such detail to derive it from (SPEC 13.3)`);if(refusal.boundTo.instanceId!==op.bind.instanceId||refusal.boundTo.epoch!==op.bind.epoch)throw new EpEnvelopeError("internal",`${op.endpoint} refused ${op.command} against bind ${refusal.boundTo.instanceId} epoch ${refusal.boundTo.epoch}, but this request carried ${op.bind.instanceId} epoch ${op.bind.epoch}; a refusal computed from another request proves nothing about this one (SPEC 13.3)`);if(refusal.servedBy.instanceId!==r.instanceId||refusal.servedBy.epoch!==r.epoch)throw new EpEnvelopeError("internal",`${op.endpoint} refused ${op.command} claiming to be served by ${refusal.servedBy.instanceId} epoch ${refusal.servedBy.epoch}, but the reply subject attributes it to ${r.instanceId} epoch ${r.epoch}; the body does not get to contradict its own attribution (SPEC 13.3)`);return attributed}if(route.mode==="one"){const remaining=deadlineMs-(Date.now()-started);if(remaining<=0)throw new EpEnvelopeError("deadline-exceeded",`no budget left to verify the \`one\` responder's currency within ${deadlineMs}ms (SPEC 13.5)`);let cur;try{cur=await raceBounded(()=>opts.currentEpoch(attributed.responder.instanceId),remaining,`the \`one\` currency read for ${op.endpoint}.${op.command}`)}catch(e){if(e instanceof EpEnvelopeError)throw e;throw new EpEnvelopeError("internal",`the \`one\` currency read threw (${e instanceof Error?e.message:String(e)}); the documented error catalog holds at this boundary (SPEC 13.3)`)}if(!Number.isSafeInteger(cur)||cur<0)throw new EpEnvelopeError("failed-precondition",`the \`one\` currency read returned a non-integer/negative epoch ${String(cur)}; a garbled currency read is refused as the read's own failure, never reported as responder staleness (SPEC 13.2)`);if(attributed.responder.epoch!==cur)throw staleEpochRefusal(op,attributed.responder,cur,opts.currencyReference??"registry","one")}return attributed}finally{sub?.unsubscribe();if(timer!==void 0)clearTimeout(timer);denialWatch?.release();if(onAbort)opts.signal?.removeEventListener("abort",onAbort)}}var dec5=new TextDecoder;var enc5=new TextEncoder;var nonce2=()=>base64url(globalThis.crypto.getRandomValues(new Uint8Array(24)));var DESCRIBE_RETRY_MS=250;function caughtText(e,fallback){try{return e instanceof Error?e.message:String(e)}catch{return fallback}}var GOAL_FOLLOW_MARGIN_MS=1e4;async function describeEndpoint(nc,space2,endpoint,caller,opts={}){opts.signal?.throwIfAborted();if(opts.classInstanceId!==void 0){assertLifecycleToken(opts.classInstanceId,"classInstanceId");if(opts.instanceId!==void 0)throw new EpEnvelopeError("bad-request","a describe cannot select both an instance route and a class responder")}const deadlineMs=opts.deadlineMs??1e4;const n=nonce2();const requestId=nonce2();const route=opts.instanceId!==void 0?{mode:"inst",instanceId:opts.instanceId}:{mode:"one"};const subject=epRequestSubject(space2,{route,endpoint,command:"describe",caller,nonce:n});const rail=epPlaneTokens(caller).join(".");const env={v:1,id:requestId,op:{endpoint,command:"describe"},class:"ephemeral",replyExpected:true,deadlineMs,from:{id:`${caller.owner}.${caller.actor}`,name:caller.actor}};let sub;let timer;let retryTimer;let denialWatch;let onAbort;const startedAt2=performance.now();const unanswered=ms=>new EpEnvelopeError("deadline-exceeded",`no describe reply from ${endpoint}${opts.instanceId!==void 0?` instance ${opts.instanceId}`:opts.classInstanceId!==void 0?` class responder ${opts.classInstanceId}`:""} within ${ms}ms on the ${rail} rail`,[{kind:EP_UNANSWERED,endpoint,command:"describe",rail}]);const cancelled=new Promise((_,reject)=>{onAbort=()=>reject(opts.signal?.reason?.name==="TimeoutError"?unanswered(Math.round(performance.now()-startedAt2)):opts.signal?.reason);opts.signal?.addEventListener("abort",onAbort,{once:true})});try{denialWatch=openPublishDenialWatch(nc,subject,()=>new EpEnvelopeError("permission-denied",`the describe for ${endpoint} was REFUSED BY THE BROKER, not unanswered: this caller's credential does not authorize publishing to "${subject}"${opts.instanceId!==void 0?` (the instance rail for ${opts.instanceId}: an instance-addressed call needs a credential minted with that instance, not a class-rail one)`:""}. The responder may be perfectly healthy; the grant is what is missing (SPEC 13.2)`,void 0,"not-executed"),"describe");const got=new Promise((resolve3,reject)=>{sub=nc.subscribe(epCallerReplyFilter(space2,caller),{callback:(err3,msg)=>{if(err3){reject(new EpEnvelopeError("unavailable",`describe reply subscription failed: ${err3.message}`));return}const parsed=parseEpSubject(msg.subject);if(!parsed||parsed.plane!=="reply"||parsed.endpoint!==endpoint||parsed.nonce!==n)return;let reply2;try{reply2=parseEndpointReply(JSON.parse(dec5.decode(msg.data)))}catch{return}if(reply2.id!==requestId)return;if(opts.classInstanceId!==void 0&&parsed.instanceId!==opts.classInstanceId)return;resolve3({body:reply2,responder:{instanceId:parsed.instanceId,epoch:parsed.epoch}})}});const request=enc5.encode(JSON.stringify(env));nc.publish(subject,request);retryTimer=setInterval(()=>{try{nc.publish(subject,request)}catch(e){reject(new EpEnvelopeError("unavailable",`the describe retry for ${endpoint} could not publish: ${caughtText(e,"unknown publish failure")}`))}},DESCRIBE_RETRY_MS)});const timeout=new Promise((_,reject)=>{timer=setTimeout(()=>reject(unanswered(deadlineMs)),deadlineMs)});const{body:reply,responder}=await Promise.race([got,timeout,denialWatch.denied,cancelled]);if(reply.ok!==true){const e=reply.error;throw new EpEnvelopeError(e?.code??"unavailable",`describe(${endpoint}) failed: ${e?.message??"unknown"}`)}return{answer:reply.data,responder}}finally{sub?.unsubscribe();if(timer!==void 0)clearTimeout(timer);if(retryTimer!==void 0)clearInterval(retryTimer);if(onAbort)opts.signal?.removeEventListener("abort",onAbort);denialWatch?.release()}}var BIND_SPLIT_REISSUES=16;async function invokeCommand(nc,space2,service,command,args,opts){const resolved=service.commands.get(command);if(resolved===void 0)throw new EpEnvelopeError("not-found",`command "${command}" is not in ${service.endpoint}'s visible surface; describe lists ${[...service.commands.keys()].sort().join(", ")||"(none)"}`);if(resolved.targeted&&opts.target===void 0)throw new EpEnvelopeError("bad-request",`command "${command}" is targeted (modes: ${resolved.modes.join(", ")}); an invoke needs its target`);if(!resolved.targeted&&opts.target!==void 0)throw new EpEnvelopeError("bad-request",`command "${command}" is untargeted; an invoke must not carry a target`);const caller=service.caller;let sendArgs=args;if(sendArgs===void 0&&!resolved.contract.input.validate(null)&&resolved.contract.input.validate({}))sendArgs={};const describeBound=instanceId=>{if(instanceId!==service.responder.instanceId){throw new EpEnvelopeError("failed-precondition",service.pinnedInstanceId!==void 0?`the ${service.endpoint} instance ${instanceId} answered but this handle is PINNED to ${service.pinnedInstanceId}; a pinned call names its instance and never accepts another. ${instanceId} did receive and answer the request, so if "${command}" mutates, that effect may already have landed - verify before re-issuing (SPEC 13.2)`:`the ${service.endpoint} instance ${instanceId} won the class queue but this UNPINNED handle resolved against ${service.responder.instanceId}; the describe and the invoke are separate trips through the same queue, so in a multi-instance space this is an ordinary split and not necessarily a supersession - the handle cannot currently adopt a different winner. THIS SAYS NOTHING ABOUT WHETHER THE COMMAND RAN: ${instanceId} received the request and answered it, possibly after this error was raised. For a read that is harmless and re-issuing is safe; if "${command}" mutates, verify the outcome ('ps'/'inspect'/roster) before re-issuing, because a retry that assumes failure duplicates the effect. A call that addresses one instance does not split (SPEC 13.2)`,[{kind:EP_UNBOUND_RESPONDER,endpoint:service.endpoint,command,answeredBy:instanceId,boundTo:service.responder.instanceId,pinned:service.pinnedInstanceId!==void 0}])}return service.responder.epoch};const bind=opts.currentEpoch===void 0?{instanceId:service.pinnedInstanceId??service.responder.instanceId,epoch:service.responder.epoch}:void 0;const deadline=Date.now()+(opts.deadlineMs??1e4);const call=route=>epCall(nc,space2,route,{endpoint:service.endpoint,command,contract:resolved.contract,caller,...sendArgs!==void 0?{args:sendArgs}:{},...opts.target?{target:opts.target}:{},...bind!==void 0?{bind}:{},...opts.id!==void 0?{id:opts.id}:{}},{deadlineMs:deadline-Date.now(),signal:opts.signal,currentEpoch:opts.currentEpoch??describeBound,currencyReference:opts.currentEpoch?"registry":"bind"});if(service.pinnedInstanceId!==void 0)return call({mode:"inst",instanceId:service.pinnedInstanceId,epoch:service.responder.epoch});try{return await call({mode:"one"})}catch(e){if(!(e instanceof EpEnvelopeError)||e.code!=="permission-denied"||e.outcome!=="not-executed"||deadline<=Date.now())throw e;return call({mode:"inst",instanceId:service.responder.instanceId,epoch:service.responder.epoch})}}function goalFollowRefusal(service){if(service.commands.has("goal-result"))return void 0;return{reply:{v:1,id:globalThis.crypto.randomUUID(),ok:false,error:{code:"failed-precondition",outcome:"not-executed",message:`endpoint "${service.endpoint}" does not support "goal-result"; upgrade manager to enable durable goal following (SPEC 13.6)`}},responder:{endpoint:service.endpoint,instanceId:service.responder.instanceId,epoch:service.responder.epoch}}}function goalProgressOrigin(space2,endpoint,caller,subject){const head=`${spacePrefix(space2)}.epe.${endpointToken(endpoint)}.`;if(!subject.startsWith(head))return void 0;const[instanceId,epoch,...tail]=subject.slice(head.length).split(".");const triple=callerTokens(caller);if(tail.length!==6||tail[0]!=="goal"||tail[1]!==triple[0]||tail[2]!==triple[1]||tail[3]!==triple[2]||tail[5]!=="progress")return void 0;if(!instanceId||!epoch||!tail[4])return void 0;return{instanceId,epoch,goalId:tail[4]}}async function submitAndFollowGoalWith(verifyFact,nc,space2,endpoint,caller,deadlineMs,submit,opts){if(!Number.isSafeInteger(deadlineMs)||deadlineMs<=0)throw new EpEnvelopeError("bad-request","goal following requires a positive integer deadline",void 0,"not-executed");const acceptingCaller={...caller};const terminals=new Map;const terminalKey=(goalId,instanceId,epoch)=>`${goalId}\0${instanceId}\0${epoch}`;let terminalPromptedRead=false;const progressSubject=epGoalProgressGrantRow(space2,endpoint,acceptingCaller);const work=new AbortController;const timers=new Set;let activeNc=nc;let activeSub;let generation=0;let unbindReconnect;let completed=false;let stopped=opts?.signal?.aborted===true;let submitted=false;let subError;let observationError;let wake;let abortPhase;let needsReconcile=false;let reading=false;let progressReady=false;const aborted2=new Promise(resolve3=>{abortPhase=resolve3});const onAbort=()=>{stopped=true;work.abort();abortPhase?.();wake?.()};const phaseError=code=>new EpEnvelopeError(code,submitted?"the goal submission was interrupted while in flight; its outcome is unknown. It may have been accepted or executed; do NOT retry without inspecting 'ps'/'inspect' first (SPEC 13.6)":"goal observation stopped or exceeded its deadline before submission; the manager request WAS NOT RUN",void 0,submitted?"unknown":"not-executed");let deadline=Date.now()+deadlineMs;const bounded=async(operation,until)=>{if(stopped||completed)throw phaseError("unavailable");const remaining=until-Date.now();if(remaining<=0)throw phaseError("deadline-exceeded");let timer;try{return await Promise.race([operation(),aborted2.then(()=>{throw phaseError("unavailable")}),new Promise((_,reject)=>{timer=setTimeout(()=>reject(phaseError("deadline-exceeded")),Math.min(remaining,2147483647));timers.add(timer)})])}finally{if(timer!==void 0){clearTimeout(timer);timers.delete(timer)}}};const subscribe=next=>{if(completed||stopped)return;const mine=++generation;activeSub?.unsubscribe();activeNc=next;progressReady=false;subError=void 0;activeSub=next.subscribe(progressSubject,{callback:(err3,msg)=>{if(completed||stopped||mine!==generation)return;if(err3){subError??=err3;wake?.();return}const origin=goalProgressOrigin(space2,endpoint,acceptingCaller,msg.subject);if(!origin)return;let ev;try{ev=JSON.parse(dec5.decode(msg.data))}catch{return}if(ev?.phase==="terminal"&&ev.goalId===origin.goalId){terminals.set(terminalKey(origin.goalId,origin.instanceId,origin.epoch),{state:String(ev.state),data:ev.data});if(!terminalPromptedRead){terminalPromptedRead=true;needsReconcile=true}wake?.()}}})};const replaceConnection=next=>{if(completed||stopped)return;try{subscribe(next)}catch(err3){subError=err3 instanceof Error?err3:new Error(String(err3));wake?.();return}const mine=generation;void bounded(()=>next.flush(),deadline).then(()=>{if(completed||stopped||mine!==generation)return;progressReady=true;needsReconcile=true;wake?.()},err3=>{if(completed||stopped||mine!==generation)return;subError=err3 instanceof Error?err3:new Error(String(err3));wake?.()})};try{opts?.signal?.addEventListener("abort",onAbort,{once:true});if(stopped)throw phaseError("unavailable");if(opts?.prepare){let timer;try{await Promise.race([opts.prepare(work.signal,deadline),aborted2,new Promise(resolve3=>{timer=setTimeout(()=>{work.abort(new DOMException("the goal follow's deadline passed","TimeoutError"));setTimeout(resolve3,0)},Math.min(deadline-Date.now(),2147483647))})]);work.signal.throwIfAborted()}catch(err3){throw stopped?phaseError("unavailable"):work.signal.aborted&&!unansweredRequest(err3)?phaseError("deadline-exceeded"):err3}finally{clearTimeout(timer)}}subscribe(opts?.currentNc?.()??nc);unbindReconnect=opts?.onReconnect?.(replaceConnection);for(;;){const preparing=activeNc;try{await bounded(()=>preparing.flush(),deadline)}catch(err3){if(!stopped&&preparing!==activeNc)continue;throw err3}if(stopped)throw phaseError("unavailable");const current2=opts?.currentNc?.();if(current2&¤t2!==activeNc)subscribe(current2);if(preparing===activeNc){progressReady=true;break}}if(stopped)throw phaseError("unavailable");submitted=true;let attributed;let submission;try{attributed=await bounded(()=>submission=submit(work.signal),deadline)}catch(err3){work.abort();let turn;const cause=submission?await Promise.race([submission.then(()=>err3,failure2=>failure2),new Promise(resolve3=>{turn=setTimeout(()=>resolve3(err3),0)})]).finally(()=>clearTimeout(turn)):err3;if(cause instanceof EpEnvelopeError&&cause.outcome==="not-executed")throw cause;const failure=stopped?phaseError("unavailable"):err3;const message2=failure instanceof Error?failure.message:String(failure);throw new EpEnvelopeError(failure instanceof EpEnvelopeError?failure.code:"unavailable",failure instanceof EpEnvelopeError&&failure.outcome==="unknown"&&message2.includes("do NOT retry")?message2:`${message2}; the submission outcome is unknown. It may have been accepted or executed; do NOT retry without inspecting 'ps'/'inspect' first (SPEC 13.6)`,cause instanceof EpEnvelopeError?cause.details:void 0,"unknown")}if(attributed.reply.ok!==true)return attributed;const acceptance=attributed.reply.data;const goalId=acceptance?.goalId;if(typeof goalId!=="string")return attributed;const acceptedFingerprint=typeof acceptance?.fingerprint==="string"?acceptance.fingerprint:void 0;const acceptedBy=attributed.responder;const acceptedKey2=terminalKey(goalId,acceptedBy.instanceId,acceptedBy.epoch);const readinessDeadlineMs=acceptance?.readinessDeadlineMs;const followDeadlineMs=typeof readinessDeadlineMs==="number"&&Number.isSafeInteger(readinessDeadlineMs)&&readinessDeadlineMs>=0?Math.max(deadlineMs,readinessDeadlineMs+GOAL_FOLLOW_MARGIN_MS):deadlineMs;deadline=Date.now()+followDeadlineMs;const reconcileAt=deadline-Math.min(deadlineMs,followDeadlineMs/2);let finalReadRequested=false;const reconcile=async()=>{if(!opts?.reconcile||completed||stopped||reading||!progressReady)return;reading=true;needsReconcile=false;try{const result=await opts.reconcile(goalId,attributed,{caller:{...acceptingCaller},signal:work.signal,deadlineMs:Math.max(1,deadline-Date.now())});if(completed||stopped||Date.now()>=deadline)return;if(!result||typeof result!=="object"||result.goalId!==goalId)throw new EpEnvelopeError("internal","goal-result reply is malformed or names a different goal; it cannot authorize this outcome (SPEC 13.6)");if(result.result!==void 0){const ref={endpoint,caller:acceptingCaller,goalId};const fact=await verifyFact(result.result,"goal-result reply",ref);if(acceptedFingerprint!==void 0&&fact.fingerprint!==acceptedFingerprint)throw new EpEnvelopeError("internal","goal result fingerprint does not match the accepted goal (SPEC 13.6)");if(fact.committer!==void 0&&fact.committer.instanceId!==acceptedBy.instanceId)throw new EpEnvelopeError("internal",`goal result fact was committed by instance ${fact.committer.instanceId}, not ${acceptedBy.instanceId}, which accepted the goal; it cannot authorize this outcome (SPEC 13.6)`);terminals.set(acceptedKey2,{state:fact.state,data:fact.data})}}catch(err3){if(!completed&&!stopped&&Date.now()<deadline)observationError=err3 instanceof Error?err3:new Error(String(err3))}finally{reading=false;if(!completed&&!stopped)wake?.()}};const current=opts?.currentNc?.();if(current&¤t!==activeNc&&!stopped)replaceConnection(current);needsReconcile=true;while(!terminals.has(acceptedKey2)&&!stopped&&!observationError&&!subError&&Date.now()<deadline){if(!finalReadRequested&&Date.now()>=reconcileAt){finalReadRequested=true;needsReconcile=true}if(needsReconcile&&!reading)void reconcile();if(terminals.has(acceptedKey2)||stopped||observationError||subError)break;await new Promise(resolve3=>{const until=finalReadRequested?deadline:reconcileAt;const timer=setTimeout(()=>{timers.delete(timer);wake=void 0;resolve3()},Math.max(0,Math.min(until-Date.now(),2147483647)));timers.add(timer);wake=()=>{clearTimeout(timer);timers.delete(timer);wake=void 0;resolve3()}})}const terminal=terminals.get(acceptedKey2);const observationFailure=(code,reason)=>({...attributed,reply:{...attributed.reply,ok:false,data:void 0,error:{code,outcome:"unknown",message:`the goal "${goalId}" was accepted, but ${reason}. THE GOAL IS UNAFFECTED - it may already have succeeded; this is not evidence the goal failed. Do NOT retry: another submission could duplicate the effect. Inspect 'ps'/'inspect' first (SPEC 13.6)`}}});if(stopped)return observationFailure("unavailable","the endpoint was stopped while awaiting its outcome");if(observationError)return observationFailure("unavailable",`following its outcome failed: ${observationError.message}`);if(!terminal&&subError)return subError instanceof import_nats_core4.PermissionViolationError?observationFailure("permission-denied",`this caller is NOT PERMITTED to hear its outcome: the broker refused the per-goal progress subscription "${progressSubject}" (${subError.message}); grant this caller the per-goal progress read row`):observationFailure("unavailable",`the per-goal progress subscription "${progressSubject}" FAILED (${subError.name}: ${subError.message}); this is NOT a grant refusal, so changing ACLs is the wrong remedy`);if(!terminal)return observationFailure("deadline-exceeded",`no terminal arrived within ${followDeadlineMs}ms; this is a timeout on the WAIT`);if(terminal.state==="succeeded")return{...attributed,reply:{...attributed.reply,ok:true,data:terminal.data,error:void 0}};const d=terminal.data??{};const raw=typeof d.error==="string"?d.error:typeof d.reason==="string"?d.reason:`the goal settled ${terminal.state}`;const details=Array.isArray(d.details)?d.details:void 0;const message=renderLifecycleBlocked(raw,details?{details}:void 0);const fromAccept=lifecycleBlockedFrom(attributed.reply.error);const merged=details??(fromAccept?[fromAccept]:void 0);return{...attributed,reply:{...attributed.reply,ok:false,error:{code:terminal.state,message,...merged?{details:merged}:{}}}}}finally{completed=true;opts?.signal?.removeEventListener("abort",onAbort);unbindReconnect?.();activeSub?.unsubscribe();for(const timer of timers)clearTimeout(timer);timers.clear();wake=void 0;work.abort();abortPhase?.()}}async function fetchClusterDocument(store,closureDigest,walk){const{manifest,artifacts}=await fetchContractClosure(store,closureDigest,()=>[],walk);const rootBytes=artifacts.get(contractRefToHex(manifest.root));if(rootBytes===void 0)throw new EpEnvelopeError("failed-precondition",`the cluster manifest ${closureDigest} names root ${manifest.root} but the root artifact is absent from the fetched closure (SPEC 13.7)`);return parseClusterDocument(JSON.parse(dec5.decode(rootBytes)))}async function recompileClosure(store,closureDigest,walk){const{manifest,artifacts}=await fetchContractClosure(store,closureDigest,bytes=>extractSchemaRefs(bytes),walk);const members={};for(const[hex3,bytes]of artifacts)members[`sha256:${hex3}`]=JSON.parse(dec5.decode(bytes));const rootRef=manifest.root;const root=members[rootRef];if(root===void 0)throw new EpEnvelopeError("failed-precondition",`schema closure ${closureDigest} is missing its root ${rootRef} (SPEC 13.7)`);const bundleMembers={};for(const[ref,value]of Object.entries(members))if(ref!==rootRef)bundleMembers[ref]=value;const compiled=compileContract({root,members:bundleMembers});if(compiled.closureDigest!==closureDigest)throw new EpEnvelopeError("internal",`the recompiled schema closure hashes to ${compiled.closureDigest}, not the fetched ${closureDigest}; a store that served the wrong bytes never authorizes (SPEC 13.7)`);return compiled}function extractSchemaRefs(bytes){const refs=[];const walk=v=>{if(typeof v==="string"){const m=/^cotal:(sha256:[0-9a-f]{64})$/.exec(v);if(m)refs.push(m[1])}else if(Array.isArray(v)){for(const c of v)walk(c)}else if(v!==null&&typeof v==="object"){for(const c of Object.values(v))walk(c)}};walk(JSON.parse(dec5.decode(bytes)));return refs}var RESOLVE_MAX_INFLIGHT_READS=32;async function pooled(items,limit,work){const out=new Array(items.length);let next=0;const worker=async()=>{for(;;){const i=next++;if(i>=items.length)return;try{out[i]=await work(items[i])}catch(e){next=items.length;throw e}}};await Promise.all(Array.from({length:Math.min(limit,items.length)},worker));return out}async function resolveService(nc,space2,endpoint,caller,opts={}){if(opts.commands!==void 0){if(!Array.isArray(opts.commands)||opts.commands.length===0)throw new EpEnvelopeError("failed-precondition","commands must be a non-empty array when a resolve is narrowed");for(const command of opts.commands){try{assertCommandToken(command)}catch(e){throw new EpEnvelopeError("failed-precondition",`invalid requested command: ${e.message}`)}}}if(opts.optionalCommands!==void 0){if(!Array.isArray(opts.optionalCommands)||opts.optionalCommands.length===0)throw new EpEnvelopeError("failed-precondition","optionalCommands must be a non-empty array when supplied");for(const command of opts.optionalCommands){try{assertCommandToken(command)}catch(e){throw new EpEnvelopeError("failed-precondition",`invalid optional command: ${e.message}`)}}}const startedAt2=performance.now();const deadlineMs=opts.deadlineMs??1e4;const{answer,responder}=await describeEndpoint(nc,space2,endpoint,caller,{...opts,deadlineMs});const store=await contractStoreContext(nc,space2);const visible=new Set(answer.descriptor.clusters.flatMap(cl=>cl.commands));const requested=opts.commands===void 0?visible:new Set(opts.commands);const optional2=new Set(opts.optionalCommands);for(const command of requested){if(visible.has(command))continue;if(optional2.has(command)){requested.delete(command);continue}throw new EpEnvelopeError("not-found",`command "${command}" is not in ${endpoint}'s visible surface; describe lists ${[...visible].sort().join(", ")||"(none)"}`)}const artifactMemo=new Map;const walk=()=>{const walkBudgetMs=Math.floor(deadlineMs-(performance.now()-startedAt2));if(walkBudgetMs<=0)throw new EpEnvelopeError("deadline-exceeded",`resolving ${endpoint} exhausted its ${deadlineMs}ms deadline before a contract-store read`);return{artifactMemo,walkBudgetMs,...opts.signal?{signal:opts.signal}:{}}};const clusters=answer.descriptor.clusters.filter(cl=>cl.commands.some(command=>requested.has(command)));const docs=await pooled(clusters,RESOLVE_MAX_INFLIGHT_READS,cl=>{opts.signal?.throwIfAborted();return fetchClusterDocument(store,cl.digest,walk())});const declared=docs.flatMap(doc=>doc.commands).filter(cmd=>requested.has(cmd.name));const resolved=await pooled(declared,Math.max(1,RESOLVE_MAX_INFLIGHT_READS>>1),async cmd=>{opts.signal?.throwIfAborted();const[input,output]=await Promise.all([recompileClosure(store,cmd.inputDigest,walk()),recompileClosure(store,cmd.outputDigest,walk())]);return{command:cmd.name,contract:{input,output},class:cmd.class,targeted:cmd.targeted,modes:cmd.modes??[],capability:cmd.capability,...cmd.action?{action:true}:{}}});opts.signal?.throwIfAborted();const commands=new Map;for(const rc of resolved)commands.set(rc.command,rc);return{endpoint:answer.descriptor.endpoint,owner:answer.descriptor.owner,caller,responder,commands,...opts.instanceId!==void 0?{pinnedInstanceId:opts.instanceId}:{}}}function submitAndFollowGoal(nc,space2,endpoint,caller,deadlineMs,submit,opts){return submitAndFollowGoalWith(parseGoalResultFact,nc,space2,endpoint,caller,deadlineMs,submit,opts)}import{accessSync,constants as constants2,lstatSync as lstatSync3,mkdirSync as mkdirSync4,readdirSync,readFileSync as readFileSync2,readlinkSync,realpathSync,statSync as statSync2}from"node:fs";var import_yaml=__toESM(require_dist(),1);function peerLabel(card){return(card.role?`${card.name}/${card.role}`:card.name).replace(/[\p{Cc}\p{Zl}\p{Zp}[\]]+/gu," ")}var LINE_BREAK=/\r\n?|[\n\v\f\u0085\u2028\u2029]/;var AmbiguousPeerError=class extends Error{target;candidates;constructor(target2,candidates){super(`"${target2}" is ambiguous - ${candidates.length} peers share that name: `+candidates.map(c=>`${c.name} (${c.id}, ${c.status})`).join("; ")+`. Re-send to the exact instance id.`);this.target=target2;this.candidates=candidates;this.name="AmbiguousPeerError"}};function candidate(p){return{id:p.card.id,name:p.card.name,role:p.card.role,status:p.status,ts:p.ts}}function resolvePeer(roster,target2,opts={}){const peers=opts.selfId?roster.filter(p=>p.card.id!==opts.selfId):roster;const byId=peers.find(p=>p.card.id===target2);if(byId)return byId;const want=target2.trim().toLowerCase();if(!want)return void 0;const matches=peers.filter(p=>p.card.name.toLowerCase()===want);if(matches.length===0){const labelled=peers.find(p=>p.card.role&&peerLabel(p.card).trim().toLowerCase()===want);if(labelled)throw new Error(`"${target2}" is the roster label of ${labelled.card.name} (role ${labelled.card.role}), not an address: use the name "${labelled.card.name}" or its instance id`);return void 0}const live=matches.filter(p=>p.status!=="offline");const pool=live.length>0?live:matches;if(pool.length===1)return pool[0];throw new AmbiguousPeerError(target2,pool.map(candidate))}function isWellFormedUtf16(s){for(let i=0;i<s.length;i++){const c=s.charCodeAt(i);if(c>=56320&&c<=57343)return false;if(c>=55296&&c<=56319){const next=s.charCodeAt(i+1);if(!(next>=56320&&next<=57343))return false;i++}}return true}var MAX_NAME_LENGTH=128;function assertValidName(name){if(name.length===0||name!==name.trim())throw new Error(`invalid name ${JSON.stringify(name)}: must be non-empty with no surrounding whitespace`);if(name.length>MAX_NAME_LENGTH)throw new Error(`invalid name ${JSON.stringify(name.slice(0,32))}\u2026: ${name.length} characters exceeds the ${MAX_NAME_LENGTH}-character limit (the CONNECT line budget that carries it)`);if(LINE_BREAK.test(name))throw new Error(`invalid name ${JSON.stringify(name)}: must be a single line`);if(name.includes("/"))throw new Error(`invalid name ${JSON.stringify(name)}: "/" is reserved (the owner/name separator)`);if(name.includes("\\"))throw new Error(`invalid name ${JSON.stringify(name)}: "\\" is reserved (a Windows path separator)`);if(!isWellFormedUtf16(name))throw new Error(`invalid name ${JSON.stringify(name)}: contains an unpaired UTF-16 surrogate. Such a name cannot survive UTF-8 encoding \u2014 it is replaced with U+FFFD \u2014 so distinct names would silently become one identity.`)}import{chmodSync,closeSync,constants,fchmodSync,fstatSync,ftruncateSync,linkSync as linkSync2,lstatSync as lstatSync2,mkdirSync as mkdirSync3,openSync,renameSync,unlinkSync as unlinkSync2,writeFileSync as writeFileSync2}from"node:fs";import{execFileSync as execFileSync2}from"node:child_process";import{dirname as dirname2,join as join2}from"node:path";var isWin=process.platform==="win32";function sys32(exe){const root=process.env.SystemRoot||process.env.windir||"C:\\Windows";return join2(root,"System32",exe)}var cachedSid;function ownerSid(){if(cachedSid)return cachedSid;const out=execFileSync2(sys32("whoami.exe"),["/user","/fo","csv","/nh"],{encoding:"utf8"});const sid=out.trim().split(",").pop()?.replace(/^"|"$/g,"").trim();if(!sid||!/^S-1-/.test(sid))throw new Error(`could not determine the current user's SID from \`whoami\` (got: ${out.trim()})`);cachedSid=sid;return sid}var BROAD_SIDS=["S-1-1-0","S-1-5-11","S-1-5-32-545"];function hardenPrivate(path,kind){if(!isWin){if(kind==="file")closeSync(openPrivate(path,constants.O_RDONLY));else chmodSync(path,448);return}const perm=kind==="dir"?"(OI)(CI)(F)":"(F)";const removeBroad=BROAD_SIDS.flatMap(sid=>["/remove:g",`*${sid}`]);const grant=sid=>["/grant:r",`*${sid}:${perm}`];try{execFileSync2(sys32("icacls.exe"),[path,"/inheritance:r",...removeBroad,...grant(ownerSid()),...grant("S-1-5-18"),...grant("S-1-5-32-544")],{stdio:["ignore","ignore","pipe"]})}catch(e){throw new Error(`failed to harden ${kind} "${path}" to private via icacls: ${e.message.trim()}. Cotal will not leave a secret with a permissive ACL - ensure the path is on an NTFS volume and %SystemRoot%\\System32\\icacls.exe is available.`)}}function notPrivate(path,why){const refused=new Error(`refusing to write "${path}": it ${why}; it was left unchanged`);refused.code="EPERM";return refused}function openPrivate(path,flags){if(isWin){const fd2=openSync(path,flags,384);try{fchmodSync(fd2,384)}catch(e){closeSync(fd2);throw e}return fd2}let fd;try{fd=openSync(path,flags|constants.O_NOFOLLOW|constants.O_NONBLOCK,384)}catch(e){if(e.code==="ELOOP")throw notPrivate(path,"is a symlink");throw e}try{const info=fstatSync(fd);if(!info.isFile())throw notPrivate(path,"is not a regular file");if(info.uid!==process.getuid())throw notPrivate(path,`is owned by uid ${info.uid}, not this user`);fchmodSync(fd,384);return fd}catch(e){closeSync(fd);throw e}}function writeSecretFile(path,data){writePrivate(path,data,false)}function writeBytes(path,data,exclusive){const fd=openPrivate(path,constants.O_WRONLY|constants.O_CREAT|(exclusive?constants.O_EXCL:0));try{ftruncateSync(fd);writeFileSync2(fd,data)}finally{closeSync(fd)}}function writePrivate(path,data,exclusive){writeBytes(path,data,exclusive);if(!isWin)return;try{hardenPrivate(path,"file")}catch(e){try{unlinkSync2(path)}catch{}throw e}}function utf16Problem(text2){return text2.startsWith("\uFFFD\uFFFD")||text2.includes("\0")?"it is saved as UTF-16, and Cotal reads only UTF-8":void 0}function parseFrontmatter(src,path){let doc;try{doc=(0,import_yaml.parse)(src)}catch(e){throw new Error(`agent file ${path}: invalid YAML frontmatter; ${e.message}`)}if(doc===null||doc===void 0)return{};if(typeof doc!=="object"||Array.isArray(doc))throw new Error(`agent file ${path}: frontmatter must be a YAML mapping (key: value pairs)`);return doc}var AGENT_FILE_FENCE=/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/;var MODELED_KEYS=new Set(["name","role","kind","description","tags","subscribe","allowSubscribe","allowPublish","quiet","muted","agent","model","variant","launchOptions","capabilities","owner"]);var RENAMED_KEYS=["channels","publish"];function assertLaunchSelectors(def,where){for(const k of["model","variant"]){const v=def[k];if(v!==void 0&&!v.trim())throw new Error(`${where}: "${k}" must not be empty`)}}function assertValidKind(kind,where){if(kind==="agent"||kind==="endpoint")return kind;throw new Error(`${where?`${where}: `:`invalid kind ${JSON.stringify(kind)}: `}"kind" must be "agent" or "endpoint"`)}function loadAgentFile(path){return parseAgentFileSource(readFileSync2(path,"utf8"),path)}function parseAgentFileSource(src,path){const encoding=utf16Problem(src);if(encoding)throw new Error(`agent file ${path}: ${encoding}; save it as UTF-8`);const m=AGENT_FILE_FENCE.exec(src.replace(/^\uFEFF/,"").replace(/\r\n/g,"\n"));if(!m)throw new Error(`agent file ${path}: missing "---" frontmatter block`);const fm=parseFrontmatter(m[1],path);const persona=m[2].trim();const str3=k=>{const v=fm[k];if(v===void 0||v===null)return void 0;if(typeof v==="object")throw new Error(`agent file ${path}: "${k}" must be a scalar`);return String(v)};const list=k=>{const v=fm[k];if(v===void 0||v===null)return void 0;return(Array.isArray(v)?v:[v]).map(x=>{if(x===null||typeof x==="object")throw new Error(`agent file ${path}: "${k}" list items must be scalars`);return String(x)})};const name=str3("name");if(!name)throw new Error(`agent file ${path}: "name" is required`);assertValidName(name);const model=str3("model");const variant=str3("variant");assertLaunchSelectors({model,variant},`agent file ${path}`);const rawKind=str3("kind");const kind=rawKind!==void 0?assertValidKind(rawKind,`agent file ${path}`):void 0;for(const old of RENAMED_KEYS)if(old in fm)throw new Error(`agent file ${path}: "${old}" was renamed - use "subscribe"/"allowSubscribe" (read) and "allowPublish" (post)`);const subscribe=list("subscribe");const allowSubscribe=list("allowSubscribe");const allowPublish=list("allowPublish");const quiet=list("quiet");const muted=list("muted");for(const ch of[...subscribe??[],...allowSubscribe??[],...allowPublish??[]])try{assertValidChannel(ch)}catch(e){throw new Error(`agent file ${path}: ${e.message}`)}let effAllow;try{effAllow=resolveReadAcl(subscribe??[],allowSubscribe)}catch(e){throw new Error(`agent file ${path}: ${e.message}`)}const both=(quiet??[]).filter(c=>(muted??[]).includes(c));if(both.length)throw new Error(`agent file ${path}: channel(s) [${both.join(", ")}] are in both quiet and muted - pick one`);for(const[field,chans]of[["quiet",quiet],["muted",muted]])for(const ch of chans??[]){try{assertValidChannel(ch)}catch(e){throw new Error(`agent file ${path}: ${e.message}`)}if(!isConcreteChannel(ch))throw new Error(`agent file ${path}: ${field} channel "${ch}" must be a concrete channel (no wildcard)`);if(!channelInAllow(effAllow,ch))throw new Error(`agent file ${path}: ${field} channel "${ch}" is not within your read ACL / allowSubscribe [${effAllow.join(", ")}]`)}const launchOptionsRaw=fm["launchOptions"];let launchOptions;if(launchOptionsRaw!==void 0&&launchOptionsRaw!==null){if(typeof launchOptionsRaw!=="object"||Array.isArray(launchOptionsRaw))throw new Error(`agent file ${path}: "launchOptions" must be a mapping of key: value pairs`);launchOptions=launchOptionsRaw}const meta3={};for(const[k,v]of Object.entries(fm))if(!MODELED_KEYS.has(k)&&v!==null&&typeof v!=="object")meta3[k]=String(v);return{name,role:str3("role"),kind,description:str3("description"),tags:list("tags"),agent:str3("agent"),subscribe,allowSubscribe,allowPublish,quiet,muted,model,variant,launchOptions,capabilities:list("capabilities"),owner:str3("owner"),meta:Object.keys(meta3).length?meta3:void 0,persona:persona||void 0}}var import_jetstream14=__toESM(require_mod4(),1);var import_jetstream15=__toESM(require_mod4(),1);var import_kv6=__toESM(require_mod6(),1);var import_internal2=__toESM(require_internal_mod3(),1);var import_kv5=__toESM(require_mod6(),1);var import_transport_node12=__toESM(require_transport_node(),1);async function openDeliveryRegistry(nc,space2){return new import_kv5.Kvm(nc).open(deliveryBucket(space2))}var import_nats_core5=__toESM(require_mod3(),1);function isPermissionDenied(e){if(e instanceof import_nats_core5.PermissionViolationError)return true;if(e?.cause instanceof import_nats_core5.PermissionViolationError)return true;return/permissions?\s+violation/i.test(String(e?.message??""))}var DEFAULT_SERVER="nats://127.0.0.1:4222";var PLANE3_FRAME_HEADER="Cotal-Delivery-Frame";var MULTI_FILTER_BATCH=1e3;var MULTI_FILTER_READ_CONCURRENCY=4;var HISTORY_READER_INACTIVE_MS=5*6e4;var MAX_TIMER_MS3=2147483647;var DmDurableMissingError=class extends Error{stream;durable;code="dm-durable-missing";constructor(stream,durable){super(`dm-durable-missing: durable "${durable}" on stream "${stream}" does not exist; a DM-only endpoint binds an existing durable and never creates one`);this.stream=stream;this.durable=durable;this.name="DmDurableMissingError"}};var DmBindRefusedError=class extends Error{stream;durable;code="dm-bind-refused";constructor(stream,durable,cause){super(`dm-bind-refused: binding durable "${durable}" on stream "${stream}" was refused (${cause instanceof Error?cause.message:String(cause)})`,{cause});this.stream=stream;this.durable=durable;this.name="DmBindRefusedError"}};var PresenceWriteStuckError=class extends Error{bucket;since;consecutiveFailures;ttlMs;lastError;code="presence-write-stuck";transient=false;constructor(bucket,since,consecutiveFailures,ttlMs,lastError){super(`presence writes to bucket ${JSON.stringify(bucket)} have failed ${consecutiveFailures} consecutive times for at least one TTL (${ttlMs}ms); the presence view is not live until a write succeeds or the broker store is repaired${lastError?` (last refusal: ${lastError})`:""}`);this.bucket=bucket;this.since=since;this.consecutiveFailures=consecutiveFailures;this.ttlMs=ttlMs;this.lastError=lastError;this.name="PresenceWriteStuckError"}};var READER_MAX_REDELIVERIES=10;var READ_HISTORY_DEFAULT_LIMIT=100;var READ_HISTORY_MAX_LIMIT=200;function fitHistoryPage(items,budget){const enc7=new TextEncoder;let used=enc7.encode(JSON.stringify({ok:true,data:{items:[],complete:false}})).length;let first=items.length;for(let i=items.length-1;i>=0;i--){const size=enc7.encode(JSON.stringify(items[i])).length+1;if(used+size>budget)break;used+=size;first=i}return first===items.length?[]:items.slice(first)}function membershipChange(e,update){const operation=e.operation;if(e.key===MEMBERSHIP_FEED_KEY){let asOf;if(operation==="PUT"){try{asOf=e.json().observedAt}catch{}}return{type:"heartbeat",revision:e.revision,update,asOf}}let member;if(operation==="PUT"){try{const rec=e.json();member={id:e.key,live:rec.live??[],durable:rec.durable??[],observedAt:rec.observedAt}}catch{}}return{type:"member",id:e.key,operation,revision:e.revision,update,member}}var CotalEndpoint=class _CotalEndpoint extends EventEmitter{card;space;channels;servers;token;user;pass;credsSource;currentCreds;credsTimer;watchDeletePermissions=new WeakMap;userMode=false;bearerSource;currentBearer;cancelBearerRenewal;bearerRenewalFailures=0;bearerRefusalSurfaced=false;bearerAdoptedAtMs=0;authExpiryReconnectTimer;sentinelCreds;tls;transportPingIntervalMs;transportMaxPingOut;transportConnectTimeoutMs;heartbeatMs;ttlMs;doRegister;doWatch;doWatchChannels;readOnce;doConsume;dmOnly;dmOnlyInFlight;ackWaitMs;inactiveThresholdMs;nc;onConnection;js;jsm;kv;channelKv;presenceWatchIter;channelWatchIter;kvWatchDeletes=new Set;kvWatchBinds=new Set;leaseWatchIntent;leaseWatchIter;leaseWatchDeletes=new Set;leaseWatchBinds=new Set;membersKv;aclKv;deliveryKv;managerLeaseKv;daemonRenewalLeaseRevision;membershipFeedKv;membershipFeedWatches=new Set;deliveryServeSub;deliveryAdminServeSub;retiringLifecycles=new Map;membershipWrites=new Map;plane3Quiesced=false;plane3;channelConfigs=new Map;channelDefaults={};histLock=Promise.resolve();subs=[];taps=[];livenessResponders=new Map;streamMsgs=[];chatSubs=new Map;chatSubDenied=new Set;plane3Channels=new Map;pendingDurableLeave=new Map;pendingBootJoins=new Set;chatSubRefusals=new WeakSet;ownWatchDeletePrefixes=new Set;historyReaderSlots=new Map;firstConnect=true;heartbeatTimer;sweepTimer;presenceWriteFailingSince;lastPresenceWriteError;presenceWriteFailures=0;presenceWriteEscalated=false;presencePutGeneration=0;presencePutSettled;roster=new Map;presenceRead;presenceReadGeneration=0;presenceReadApplied=0;presenceSnapshot=Promise.resolve();presenceSnapshotPopulated=false;lastPresenceWatchAt=0;presenceViewState="unpopulated";presenceRebind;presenceEpoch=0;presenceWatchEmpty=false;presenceRebindAt=0;status="idle";activity;statusSince=Date.now();activitySince;activeAt;condition;conditionRevision=0;environment;attentionMode;channelModes;stopped=false;stopPromise;startPromise;ownedConnections=new Set;rebuildPromise;reconnecting=false;reestablishing=false;backoffResolve;backoffTimer;retryMs=3e3;retryAttempt=0;connId;owner;actor;actorIsEphemeral;ownLifecycleUid;backfillFloor;acceptedToken;issuedGeneration;resolvedServices=new Map;resolvedCommandServices=new Map;activeGoalFollowers=new Set;splitsRecovered=0;presenceBindingDrops=0;get principal(){return{owner:this.owner,actor:this.actor}}get splitRecoveryCount(){return this.splitsRecovered}get presenceBindingDropCount(){return this.presenceBindingDrops}requireLifecycleUid(what){if(!this.ownLifecycleUid)throw new Error(`${what} requires this endpoint's lifecycleUid (EndpointOptions.lifecycleUid): dm/dlv/chathist broker resources are lifecycle-keyed names (SPEC 13.1)`);return this.ownLifecycleUid}constructor(opts){super();let selfMintedConnId=false;this.space=opts.space;assertValidName(opts.card.name);assertValidKind(opts.card.kind);if(opts.card.role!==void 0)assertValidRole(opts.card.role);if(opts.bearer){if(opts.creds||opts.token||opts.user||opts.pass)throw new Error("bearer (user-mode auth) is mutually exclusive with creds/token/user/pass");if(!opts.sentinelCreds)throw new Error("user-mode bearer requires sentinelCreds (the shared auth-account creds presented alongside it)")}if(opts.bearer){this.userMode=true;if(typeof opts.bearer==="function"){if(!opts.card.owner||!opts.card.actor)throw new Error("a bearer source requires explicit card.owner + card.actor (no bearer to derive them from at construction)");this.owner=opts.card.owner;this.actor=opts.card.actor;this.bearerSource=opts.bearer}else{const claims2=decodeBearerPrincipal(opts.bearer);if(opts.card.owner&&opts.card.owner!==claims2.owner)throw new Error(`card.owner ${opts.card.owner} != bearer owner ${claims2.owner}`);if(opts.card.actor&&opts.card.actor!==claims2.actor)throw new Error(`card.actor ${opts.card.actor} != bearer actor ${claims2.actor}`);this.owner=claims2.owner;this.actor=claims2.actor;this.currentBearer=opts.bearer}this.connId=assertInboxConnId(`ibx${randomUUID3().replace(/-/g,"")}`);this.sentinelCreds=opts.sentinelCreds;this.actorIsEphemeral=false}else{if(typeof opts.creds==="function"){if(!opts.card.id)throw new Error("a creds source requires an explicit card.id (no cred to derive the identity from at construction)");this.credsSource=opts.creds;this.connId=opts.card.id;selfMintedConnId=false}else{const credId=opts.creds?idFromCreds(opts.creds):void 0;if(opts.card.id&&credId&&opts.card.id!==credId)throw new Error(`card.id ${opts.card.id} != creds identity ${credId} - they must be the same nkey`);this.currentCreds=opts.creds;selfMintedConnId=opts.card.id===void 0&&credId===void 0;this.connId=opts.card.id??credId??randomUUID3().replace(/-/g,"")}this.owner=opts.card.owner??DEV_OWNER;this.actor=opts.card.actor??this.connId;this.actorIsEphemeral=opts.card.actor===void 0&&selfMintedConnId}this.ownLifecycleUid=opts.lifecycleUid!==void 0?assertLifecycleToken(opts.lifecycleUid):this.authed?void 0:mintLifecycleUid();if(opts.backfillFloor!==void 0){if(!Number.isInteger(opts.backfillFloor)||opts.backfillFloor<0)throw new Error(`EndpointOptions.backfillFloor must be a non-negative integer stream sequence, got ${opts.backfillFloor}`);this.backfillFloor=opts.backfillFloor}if(opts.acceptedToken!==void 0){if(!opts.creds)throw new Error("EndpointOptions.acceptedToken names a static issuance and needs creds beside it (SPEC 13.15)");this.acceptedToken=assertGeneration(opts.acceptedToken,"acceptedToken")}const principal=principalKey(this.owner,this.actor);this.card={...opts.card,id:principal.key,owner:this.owner,actor:this.actor};this.environment=(opts.environment===void 0?process.env.COTAL_ENVIRONMENT:opts.environment)?.trim()||void 0;this.servers=opts.servers??DEFAULT_SERVER;this.token=opts.token;this.user=opts.user;this.pass=opts.pass;this.tls=opts.tls??false;for(const[label,value]of[["transportPingIntervalMs",opts.transportPingIntervalMs],["transportMaxPingOut",opts.transportMaxPingOut],["transportConnectTimeoutMs",opts.transportConnectTimeoutMs]]){if(value!==void 0&&(!Number.isSafeInteger(value)||value<=0))throw new Error(`EndpointOptions.${label} must be a positive safe integer`)}if(opts.transportPingIntervalMs===void 0!==(opts.transportMaxPingOut===void 0))throw new Error("EndpointOptions transportPingIntervalMs and transportMaxPingOut must be configured together");this.onConnection=opts.onConnection;this.transportPingIntervalMs=opts.transportPingIntervalMs??1e4;this.transportMaxPingOut=opts.transportMaxPingOut??2;this.transportConnectTimeoutMs=opts.transportConnectTimeoutMs;this.channels=opts.channels??[];this.heartbeatMs=opts.heartbeatMs??2e3;this.ttlMs=opts.ttlMs??6e3;this.doRegister=opts.registerPresence??true;this.doWatch=opts.watchPresence??true;this.doWatchChannels=opts.watchChannels??true;this.doConsume=opts.consume??true;this.readOnce=opts.readOnce??false;if(this.readOnce&&(this.doConsume||this.doRegister))throw new Error("EndpointOptions.readOnce requires consume and registerPresence false: a one-time read cannot keep a consumer's channel cache or its own presence current");if(opts.dmOnly!==void 0){if(typeof opts.dmOnly.handler!=="function")throw new Error("EndpointOptions.dmOnly.handler must be a function");const settle=opts.dmOnly.settleTimeoutMs;if(settle!==void 0&&(!Number.isSafeInteger(settle)||settle<=0))throw new Error("EndpointOptions.dmOnly.settleTimeoutMs must be a positive safe integer");if(!this.authed)throw new Error("EndpointOptions.dmOnly requires creds or a bearer: it binds a provisioned durable and never creates one");if(!this.doConsume||this.doRegister||this.doWatch||this.doWatchChannels||this.readOnce)throw new Error("EndpointOptions.dmOnly requires consume true and registerPresence, watchPresence, watchChannels and readOnce false");if(this.channels.length||opts.card.role||opts.acceptedToken!==void 0)throw new Error("EndpointOptions.dmOnly takes no channels, role or acceptedToken: the endpoint reads only its own DM durable");this.requireLifecycleUid("EndpointOptions.dmOnly");this.dmOnly=opts.dmOnly}this.channelModes=opts.channelModes&&Object.keys(opts.channelModes).length?opts.channelModes:void 0;this.ackWaitMs=opts.ackWaitMs??6e4;this.inactiveThresholdMs=opts.inactiveThresholdMs??6e5}ref(){return{id:this.card.id,name:this.card.name,role:this.card.role}}get authed(){return Boolean(this.currentCreds||this.credsSource)||this.userMode}start(){if(this.startPromise)return this.startPromise;const flight=this.startOnce().finally(()=>{if(this.startPromise===flight)this.startPromise=void 0});this.startPromise=flight;return flight}async startOnce(){try{await this.connectAndBind()}catch(error51){if(!this.stopped)throw error51}if(await this.tearDownIfStopped())return;this.superviseConnection()}static BEARER_MIN_RENEWAL_MS=5e3;static BEARER_RETRY_MS=5e3;static BEARER_RETRY_CAP_MS=6e4;emitRecoverable(err3){this.emit("warning",err3)}async refreshBearer(initial=false){try{const bearer=await this.bearerSource();const claims2=decodeBearerPrincipal(bearer);if(claims2.owner!==this.owner||claims2.actor!==this.actor)throw new Error(`bearer source returned principal ${claims2.owner}.${claims2.actor}, expected ${this.owner}.${this.actor}`);const expiryMs=bearerExpiryMs(bearer);const held=this.currentBearer;if(held!==void 0){if(expiryMs<=Date.now())throw new Error("the bearer source returned a token that has already expired - nothing adopted");if(bearer===held&&Date.now()>=bearerRenewalDeadlineMs(held,this.bearerAdoptedAtMs))throw new Error("the bearer source re-served the token already held and it cannot carry another cycle (the auth service has not issued a fresh one) - nothing adopted")}if(bearer!==held)this.bearerAdoptedAtMs=Date.now();this.currentBearer=bearer;this.bearerRenewalFailures=0;const{issuedAtMs,expiresAtMs}=bearerLifetimeMs(bearer,this.bearerAdoptedAtMs);this.armBearerTimer(armRenewal(this.space,issuedAtMs,expiresAtMs,()=>void this.renewBearerOnTimer(),_CotalEndpoint.BEARER_MIN_RENEWAL_MS))}catch(e){if(initial)throw e;if(this.bearerRenewalFailures===0)this.emitRecoverable(new Error(`bearer refresh failed (${e instanceof Error?e.message:String(e)}) - retrying with backoff; this connection dies at its current token's expiry if the auth service stays down`));const named=retryAfterMs(e);const delay2=named>0?named:jitteredBackoffMs(this.bearerRenewalFailures,_CotalEndpoint.BEARER_RETRY_MS,_CotalEndpoint.BEARER_RETRY_CAP_MS);this.bearerRenewalFailures++;const timer=setTimeout(()=>void this.renewBearerOnTimer(),delay2);timer.unref?.();this.armBearerTimer(()=>clearTimeout(timer))}}armBearerTimer(cancel){this.cancelBearerRenewal?.();this.cancelBearerRenewal=cancel;if(this.stopped)cancel()}async renewBearerOnTimer(){const held=this.currentBearer;await this.refreshBearer();if(this.stopped||this.currentBearer===held)return;if(this.nc&&!this.nc.isClosed())await this.swapConnectionOntoFreshCreds();else this.kickBackoff()}bearerForWire(){const bearer=this.currentBearer;if(bearer!==void 0&&bearerExpiryMs(bearer)>Date.now())return bearer;throw new Error(this.bearerSource?"this endpoint's user bearer has expired and renewal through the auth exchange is failing - not presenting the expired token to the broker; retrying with backoff":"this endpoint's user bearer has expired and it holds no bearer source to renew it - re-authenticate and rebuild the endpoint (construct it with a bearer FUNCTION for standing renewal)")}static CREDS_RETRY_MS=6e4;static presentableCreds(creds,opts){const{exp}=credsClaims(creds);if(typeof exp==="number"&&exp*1e3<=Date.now())throw new Error(opts.renewable?"this endpoint's creds have expired and renewal is failing - not presenting the expired credential to the broker; retrying with backoff":"this endpoint's creds have expired and it holds no creds source to renew them - replace the credential and rebuild the endpoint (pass a creds FUNCTION for standing renewal)");return creds}credsForWire(){if(!this.currentCreds)throw new Error(this.credsSource?"this endpoint has no credential to present yet (the creds source has not returned one) - not dialing without auth material":"this endpoint was constructed with an empty creds string - not dialing without auth material (an empty credential is not anonymous access)");return _CotalEndpoint.presentableCreds(this.currentCreds,{renewable:Boolean(this.credsSource)})}wireCreds(){return this.credsForWire()}static assertRenewableGeneration(candidate2,current,delayMs){const{exp}=credsClaims(candidate2);if(typeof exp==="number"&&exp*1e3<=Date.now())throw new Error("the creds source returned an already-expired credential (its `exp` is in the past) - nothing adopted; the renewal owner has not re-signed it, or the store is serving a stale generation");if(current!==void 0&&credsFingerprint(candidate2)===credsFingerprint(current)&&delayMs<=0)throw new Error("the creds source still holds the previous generation past its renewal point (the renewal owner has not re-signed it) - nothing adopted")}static PREFLIGHT_MS=4e3;static RESIDENT_SWAP_DEFER_MS=250;static RESIDENT_SWAP_GATE_MS=5e3;residentSwap;static RELOAD_DEADLINE_MS=12e3;async fetchFreshCreds(){const creds=await this.credsSource();const id2=idFromCreds(creds);if(id2!==this.connId)throw new Error(`creds source returned identity ${id2}, expected ${this.connId} - renewal may not swap the connection's nkey`);const delay2=credsRenewalDelayMs(creds);_CotalEndpoint.assertRenewableGeneration(creds,this.currentCreds,delay2);this.currentCreds=creds;this.armCredsRefresh(delay2);const{iat,exp}=credsClaims(creds);return{iat,exp}}async swapConnectionOntoFreshCreds(){const nc=this.nc;if(nc&&!this.stopped){await nc.reconnect().catch(()=>{});if(this.nc===nc&&!this.stopped)this.armAuthExpiryReconnectFence(nc)}}disableLibraryReconnect(nc){const protocol=nc.protocol;if(protocol?.options)protocol.options.reconnect=false}async closeWithoutLibraryReconnect(nc){if(!nc)return;this.disableLibraryReconnect(nc);await nc.close();if(!nc.isClosed())throw new Error("endpoint connection closure is unproved; consumer custody must be retained");this.ownedConnections.delete(nc)}armAuthExpiryReconnectFence(nc){clearTimeout(this.authExpiryReconnectTimer);this.authExpiryReconnectTimer=void 0;const credsExp=this.currentCreds&&credsClaims(this.currentCreds).exp;const expiryMs=this.userMode&&this.currentBearer?bearerExpiryMs(this.currentBearer):typeof credsExp==="number"?credsExp*1e3:void 0;if(expiryMs===void 0||this.stopped)return;const delay2=Math.max(0,expiryMs-Date.now()-500);this.authExpiryReconnectTimer=delay2>MAX_TIMER_MS3?setTimeout(()=>{if(this.nc===nc)this.armAuthExpiryReconnectFence(nc)},MAX_TIMER_MS3):setTimeout(()=>{if(this.nc===nc)this.disableLibraryReconnect(nc)},delay2);this.authExpiryReconnectTimer.unref?.()}async refreshCreds(initial=false){try{await this.fetchFreshCreds()}catch(e){if(initial)throw e;this.emitRecoverable(new Error(`creds refresh failed (${e instanceof Error?e.message:String(e)}) - retrying; this connection dies at its current JWT's expiry if renewal keeps failing`));this.armCredsRefresh(_CotalEndpoint.CREDS_RETRY_MS)}}credsTxn=Promise.resolve();runCredsTxn(fn){const next=this.credsTxn.then(fn,fn);this.credsTxn=next.then(()=>void 0,()=>void 0);return next}async adoptFreshCreds(opts={}){const deadline=opts.deadline??Date.now()+_CotalEndpoint.RELOAD_DEADLINE_MS;if(Date.now()>deadline)throw new Error("reloadCreds: the request deadline elapsed while queued behind another credential transaction; nothing adopted");const candidate2=await withDeadline(this.credsSource(),deadline-Date.now(),()=>new Error("reloadCreds: the creds source did not return before the daemon deadline; nothing adopted"));const id2=idFromCreds(candidate2);if(id2!==this.connId)throw new Error(`creds source returned identity ${id2}, expected ${this.connId} - renewal may not swap the connection's nkey`);if(opts.expected!==void 0&&credsFingerprint(candidate2)!==opts.expected)throw new Error("reloadCreds: re-read credential generation did not match the expected re-signed generation (a different store, or a torn/stale read); nothing adopted");const proven=_CotalEndpoint.presentableCreds(candidate2,{renewable:true});const probe=await probeConnect(this.servers,{creds:proven,tls:this.tls,timeoutMs:Math.max(500,Math.min(_CotalEndpoint.PREFLIGHT_MS,deadline-Date.now()))});if(!probe.ok)throw new Error(`reloadCreds: the broker did not accept the re-signed credential (${probe.reason}); nothing adopted`);if(Date.now()>deadline)throw new Error("reloadCreds: the proof exceeded the daemon deadline; nothing adopted");const delay2=credsRenewalDelayMs(candidate2);_CotalEndpoint.assertRenewableGeneration(candidate2,this.currentCreds,delay2);this.currentCreds=candidate2;this.armCredsRefresh(delay2);this.emit("creds-adopted",credsClaims(candidate2));return credsClaims(candidate2)}async renewCredsOnTimer(){const deadline=Date.now()+_CotalEndpoint.RELOAD_DEADLINE_MS;try{await this.runCredsTxn(()=>this.adoptFreshCreds({deadline}));await this.swapConnectionOntoFreshCreds()}catch(e){this.emitRecoverable(new Error(`creds refresh failed (${e instanceof Error?e.message:String(e)}) - retrying; this connection dies at its current JWT's expiry if renewal keeps failing`));this.armCredsRefresh(_CotalEndpoint.CREDS_RETRY_MS)}}async reloadCreds(expected){if(!this.credsSource)throw new Error("reloadCreds: this endpoint has no creds source (a static cred cannot be renewed in place)");const deadline=Date.now()+_CotalEndpoint.RELOAD_DEADLINE_MS;const{iat,exp}=await this.runCredsTxn(()=>this.adoptFreshCreds({expected,deadline}));return{identity:this.connId,iat,exp}}scheduleResidentSwap(){if(this.stopped)return;const swap=new Promise(resolve3=>{setTimeout(resolve3,_CotalEndpoint.RESIDENT_SWAP_DEFER_MS).unref?.()}).then(async()=>{const back=this.transportBack(_CotalEndpoint.RESIDENT_SWAP_GATE_MS);await this.swapConnectionOntoFreshCreds();await back}).finally(()=>{if(this.residentSwap===swap)this.residentSwap=void 0});this.residentSwap=swap}transportBack(ms){return new Promise(resolve3=>{const done=()=>{clearTimeout(timer);this.off("transport",seen);resolve3()};const seen=state=>{if(state.connected)done()};const timer=setTimeout(done,ms);timer.unref?.();this.on("transport",seen)})}armCredsRefresh(delayMs){if(this.stopped)return;clearTimeout(this.credsTimer);this.credsTimer=setTimeout(()=>void this.renewCredsOnTimer(),Math.max(1e3,delayMs));this.credsTimer.unref?.()}async connectAndBind(){try{await this.bindConnection()}catch(error51){await this.closeFailedBind();throw error51}}async bindConnection(){this.clearConnectionScoped();if(this.bearerSource){if(!this.currentBearer)await this.refreshBearer(true);else if(this.bearerRenewalFailures===0&&Date.now()>=bearerRenewalDeadlineMs(this.currentBearer,this.bearerAdoptedAtMs))await this.refreshBearer()}if(this.credsSource){const stale=!this.currentCreds||credsRenewalDelayMs(this.currentCreds)<=0;if(stale)await this.refreshCreds(!this.currentCreds)}if(this.userMode){try{this.bearerForWire();this.bearerRefusalSurfaced=false}catch(e){if(!this.bearerRefusalSurfaced){this.bearerRefusalSurfaced=true;throw e}throw new RepeatedRefusal(e.message)}}let watchDeletePermission;this.nc=await dialerFor(this.servers)({servers:this.servers,noAsyncTraces:true,name:this.userMode?this.connId:`cotal:${this.card.name}`,inboxPrefix:`_INBOX_${this.connId}`,...this.transportPingIntervalMs===void 0?{}:{pingInterval:this.transportPingIntervalMs},...this.transportMaxPingOut===void 0?{}:{maxPingOut:this.transportMaxPingOut},...this.transportConnectTimeoutMs===void 0?{}:{timeout:this.transportConnectTimeoutMs},...authOpts({token:this.token,user:this.user,pass:this.pass,creds:this.currentCreds!==void 0||this.credsSource?()=>this.credsForWire():void 0,bearer:this.userMode?()=>this.bearerForWire():void 0,sentinelCreds:this.sentinelCreds,tls:this.tls,onCreds:creds=>{watchDeletePermission=void 0;try{const nats=credsClaims(creds).nats;if(nats?.pub!==void 0)watchDeletePermission=importNativeSubjectPermissions({pub:nats.pub}).publish}catch{}}})});this.watchDeletePermissions.set(this.nc,()=>watchDeletePermission);this.ownedConnections.add(this.nc);const owned=this.nc;void owned.closed().then(()=>this.ownedConnections.delete(owned));this.onConnection?.(this.nc);requireBrokerFloor(this.nc);this.armAuthExpiryReconnectFence(this.nc);this.watchStatus();this.js=(0,import_jetstream14.jetstream)(this.nc);if(this.dmOnly){await this.bindDmOnly(this.dmOnly);if(this.stopped)return;this.emit("connection",{connected:true});return}if(this.acceptedToken!==void 0){const ref=await readAcceptedRow(this.nc,this.space,this.acceptedToken);const uid2=this.requireLifecycleUid("an issued endpoint");if(ref.owner!==this.owner||ref.actor!==this.actor||ref.uid!==uid2)throw new Error(`the accepted row names ${ref.owner}.${ref.actor} (uid ${ref.uid}), not this endpoint ${this.owner}.${this.actor} (uid ${uid2}); refusing to ride a foreign issuance (SPEC 13.15)`);this.issuedGeneration=ref.generation}if(this.doWatch||this.doRegister){const kvm=new import_kv6.Kvm(this.nc);this.kv=this.authed?await kvm.open(presenceBucket(this.space)):await kvm.create(presenceBucket(this.space),{ttl:this.ttlMs,storage:PRESENCE_STORAGE})}if(this.doWatch&&this.readOnce)await this.readPresenceOnce();else if(this.doWatch){await this.startPresenceWatch();this.sweepTimer=setInterval(()=>this.sweep(),Math.max(500,Math.floor(this.ttlMs/3)))}const watchChannels=this.doWatch&&this.doWatchChannels;if(watchChannels||this.doConsume){this.channelKv=await openChannelRegistry(this.nc,this.space,{create:!this.authed});if(watchChannels)await(this.readOnce?this.readChannelsOnce():this.startChannelWatch())}if(this.leaseWatchIntent)await this.bindDeliveryLeaseWatch();if(this.authed&&(this.doConsume||this.doRegister))this.requireLifecycleUid(this.doConsume?"an authed consuming endpoint":"an authed presence-registering endpoint");if(this.doConsume){this.jsm=await(0,import_jetstream14.jetstreamManager)(this.nc);if(!this.authed)await this.ensureStreams();await this.startConsumers()}if(this.doRegister&&!this.doConsume&&this.authed&&this.card.kind==="agent"){const jsm=this.jsm??(this.jsm=await(0,import_jetstream14.jetstreamManager)(this.nc));const uid2=this.requireLifecycleUid("an authed presence-registering agent");try{await jsm.consumers.info(dmStream(this.space),dmDurable(this.owner,this.actor,uid2))}catch(e){throw new Error(`lifecycle proof failed for ${this.card.id} (uid ${uid2}): its dm_ durable is not present at the broker, so this incarnation's uid does not match its provisioned resources - refusing to publish presence (SPEC 13.1 fail-before-presence): ${e?.message??String(e)}`)}}if(this.doRegister){try{await this.publishPresence()}catch(e){const detail=e?.message??String(e);throw new Error(`presence registration failed for ${this.card.id}: the space's presence KV bucket "${presenceBucket(this.space)}" did not accept this endpoint's first write (${detail}). The bucket can be OPENED and WATCHED while refusing every write, so a healthy-looking connection does not rule this out; a broker whose store has latched refuses until it is restarted, and no client can clear it (#1356).`)}this.heartbeatTimer=setInterval(()=>{this.publishPresence().catch(e=>this.emitRecoverable(e))},this.heartbeatMs)}await this.rearmMembershipWatches();await this.armPlane3();for(const plane of this.livenessResponders.keys())this.bindLiveness(plane);for(const tap of this.taps)this.bindTap(tap);if(this.stopped)return;this.emit("connection",{connected:true});if(this.nc){for(const follower of this.activeGoalFollowers){follower.reconnected(this.nc)}}}clearConnectionScoped(){if(this.authExpiryReconnectTimer){clearTimeout(this.authExpiryReconnectTimer);this.authExpiryReconnectTimer=void 0}if(this.heartbeatTimer){clearInterval(this.heartbeatTimer);this.heartbeatTimer=void 0}if(this.sweepTimer){clearInterval(this.sweepTimer);this.sweepTimer=void 0}for(const msgs of this.streamMsgs){try{msgs.stop()}catch{}}this.streamMsgs.length=0;this.presenceEpoch++;this.presenceRebind=void 0;if(this.presenceWatchIter)this.retireKvWatch(this.presenceWatchIter);this.presenceWatchIter=void 0;if(this.channelWatchIter)this.retireKvWatch(this.channelWatchIter);this.channelWatchIter=void 0;this.stopDeliveryLeaseWatch();for(const sub of this.chatSubs.values()){try{sub.unsubscribe()}catch{}}this.chatSubs.clear();this.chatSubDenied.clear();this.ownWatchDeletePrefixes.clear();this.roster.clear();this.presenceRead=void 0;this.presenceReadGeneration++;this.presenceReadApplied=this.presenceReadGeneration;this.clearPresenceWriteFailure();this.lastPresenceWatchAt=0;this.presenceRebindAt=0;this.presenceWatchEmpty=false;this.presenceSnapshotPopulated=false;this.emitPresenceViewIfChanged();this.channelConfigs.clear();this.channelDefaults={};for(const watch of this.membershipFeedWatches)watch.arm=watch.arm.catch(()=>{}).then(()=>this.disarmMembershipWatch(watch)).catch(err3=>{this.emit("error",err3)})}async closeFailedBind(){const failedNc=this.nc;if(failedNc)this.disableLibraryReconnect(failedNc);this.clearConnectionScoped();this.nc=void 0;this.js=void 0;this.jsm=void 0;this.kv=void 0;this.channelKv=void 0;this.membersKv=void 0;this.aclKv=void 0;this.membershipFeedKv=void 0;this.deliveryKv=void 0;this.managerLeaseKv=void 0;this.daemonRenewalLeaseRevision=void 0;if(this.deliveryServeSub){try{this.deliveryServeSub.unsubscribe()}catch{}this.deliveryServeSub=void 0}if(this.deliveryAdminServeSub){try{this.deliveryAdminServeSub.unsubscribe()}catch{}this.deliveryAdminServeSub=void 0}for(const sub of this.subs){try{sub.unsubscribe()}catch{}}this.subs.length=0;if(!failedNc)return;this.emit("transport",{connected:false});this.emit("connection",{connected:false});try{await failedNc.close();return}catch{}if(!failedNc.isClosed?.()){try{await failedNc.drain();return}catch{}}const proto=failedNc.protocol;const transport=proto?.transport;if(transport&&!transport.isClosed){try{await transport.close?.()}catch{}if(!transport.isClosed){try{transport.disconnect?.()}catch{}}}}async tearDownIfStopped(){if(!this.stopped)return false;const nc=this.nc;if(nc)this.disableLibraryReconnect(nc);this.clearConnectionScoped();await this.closeWithoutLibraryReconnect(nc);this.nc=void 0;return true}superviseConnection(){const nc=this.nc;if(!nc)return;void nc.closed().then(err3=>{if(this.stopped)return;if(this.nc!==nc)return;this.emit("connection",{connected:false});this.emit("error",new Error(`mesh connection closed${err3?`: ${err3.message||err3.name}`:""} - re-establishing`));void this.reestablishLoop()})}rebuild(){if(this.rebuildPromise)return this.rebuildPromise;const p=this.doRebuild().finally(()=>{if(this.rebuildPromise===p)this.rebuildPromise=void 0});this.rebuildPromise=p;return p}async doRebuild(){const oldNc=this.nc;if(oldNc)this.disableLibraryReconnect(oldNc);this.reconnecting=true;try{this.clearConnectionScoped();if(oldNc&&!oldNc.isClosed())await Promise.all([...[...this.membershipFeedWatches].map(watch=>watch.arm),this.settleDeliveryLeaseWatches(),this.settleKvWatches()]);this.nc=void 0;this.js=void 0;this.jsm=void 0;this.kv=void 0;this.channelKv=void 0;this.membersKv=void 0;this.aclKv=void 0;this.membershipFeedKv=void 0;this.deliveryKv=void 0;this.managerLeaseKv=void 0;this.daemonRenewalLeaseRevision=void 0;this.emit("transport",{connected:false});this.emit("connection",{connected:false});await this.closeWithoutLibraryReconnect(oldNc);if(this.stopped)return;try{await this.connectAndBind()}catch(error51){if(!this.stopped)throw error51}if(await this.tearDownIfStopped())return;this.superviseConnection()}finally{this.reconnecting=false}}static RETRY_BACKOFF_CAP_MS=6e4;nextRetryDelayMs(){const delay2=Math.min(this.retryMs*2**this.retryAttempt,_CotalEndpoint.RETRY_BACKOFF_CAP_MS);this.retryAttempt++;return Math.round(delay2/2+Math.random()*(delay2/2))}async reestablishLoop(){if(this.reestablishing)return;this.reestablishing=true;try{while(!this.stopped){try{await this.rebuild();this.retryAttempt=0;return}catch(e){const delay2=this.nextRetryDelayMs();if(!this.stopped&&!(e instanceof RepeatedRefusal))this.emitRecoverable(this.userMode&&isAuthRejection(e)?new Error(`the broker refused this endpoint's bearer for ${this.owner}.${this.actor} - retrying in ${Math.ceil(delay2/1e3)}s; the space's auth service logs why`,{cause:e}):e);if(this.stopped)return;await new Promise(resolve3=>{this.backoffResolve=resolve3;this.backoffTimer=setTimeout(resolve3,delay2)})}}}finally{this.reestablishing=false}}kickBackoff(){this.backoffResolve?.();if(this.backoffTimer){clearTimeout(this.backoffTimer);this.backoffTimer=void 0}}async reconnect(){if(this.stopped)throw new Error("endpoint stopped - cannot reconnect");this.kickBackoff();try{await this.rebuild()}catch(e){void this.reestablishLoop();throw e}}stop(){return this.stopPromise??=this.stopOnce()}async stopOnce(){if(this.nc)this.disableLibraryReconnect(this.nc);this.stopped=true;for(const follower of this.activeGoalFollowers){follower.cancel()}this.activeGoalFollowers.clear();this.presenceEpoch++;this.presenceRebind=void 0;this.kickBackoff();if(this.heartbeatTimer)clearInterval(this.heartbeatTimer);if(this.sweepTimer)clearInterval(this.sweepTimer);this.cancelBearerRenewal?.();if(this.credsTimer)clearTimeout(this.credsTimer);if(this.authExpiryReconnectTimer)clearTimeout(this.authExpiryReconnectTimer);for(const watch of this.membershipFeedWatches){watch.stopped=true;watch.arm=watch.arm.catch(()=>{}).then(async()=>{await this.disarmMembershipWatch(watch);await this.deleteRetainedMembershipConsumer(watch)})}await Promise.all([...this.membershipFeedWatches].map(watch=>watch.arm.catch(err3=>{if(this.nc&&!this.nc.isClosed())throw err3})));for(const watch of this.membershipFeedWatches){watch.resolveStop?.();watch.resolveStop=void 0;watch.rejectStop=void 0}this.membershipFeedWatches.clear();for(const msgs of this.streamMsgs){try{msgs.stop()}catch{}}if(this.presenceWatchIter)this.retireKvWatch(this.presenceWatchIter);this.presenceWatchIter=void 0;if(this.channelWatchIter)this.retireKvWatch(this.channelWatchIter);this.channelWatchIter=void 0;this.stopDeliveryLeaseWatch();try{if(this.doRegister){this.status="offline";await this.publishPresence()}}catch{}await Promise.all([this.settleDeliveryLeaseWatches(),this.settleKvWatches()]);let dmOnlyUnsettled=false;if(this.dmOnly&&this.dmOnlyInFlight){const settleMs=this.dmOnly.settleTimeoutMs??3e4;dmOnlyUnsettled=await withDeadline(this.dmOnlyInFlight.then(()=>false),settleMs,()=>new Error("unsettled")).catch(()=>true)}await this.closeWithoutLibraryReconnect(this.nc);this.clearPresenceWriteFailure();await this.rebuildPromise;await this.startPromise;if([...this.ownedConnections].some(nc=>!nc.isClosed()))throw new Error("endpoint stop could not prove its connection closed; local consumer custody must be retained");if(dmOnlyUnsettled)throw new Error(`endpoint stop closed the connection but the DM-only handler did not settle within ${this.dmOnly?.settleTimeoutMs??3e4}ms; its copy stays unacked and handler custody must be retained`)}async multicast(text2,opts){const channel=opts?.channel??this.channels.find(isConcreteChannel);if(channel===void 0)throw new Error("no default channel: this endpoint is not on any concrete channel, so there is nothing to broadcast to - name a channel explicitly, or join one first");if(!isConcreteChannel(channel))throw new Error(`cannot publish to wildcard channel "${channel}" - pick a concrete sub-channel`);const msg={id:randomUUID3(),ts:Date.now(),space:this.space,from:this.ref(),channel,mentions:normalizeMentions(opts?.mentions),parts:opts?.parts??[{kind:"text",text:text2}],replyTo:opts?.replyTo,contextId:opts?.contextId};await this.publishMsg(chatSubject(this.space,this.owner,this.actor,channel),msg);return msg}get maxPayload(){const max=this.nc?.info?.max_payload;if(typeof max!=="number"||!Number.isFinite(max)||max<=0)throw new Error(`${this.notLiveMsg()} - max_payload is only known while connected`);return max}async assertExpectationSemantics(){if(!this.jsm)throw new Error(this.notLiveMsg());const stream=chatStream(this.space);let replicas;try{replicas=(await this.jsm.streams.info(stream)).config.num_replicas}catch(e){throw new Error(`cannot verify expectation semantics: stream "${stream}" info unavailable (${e.message}). Serialized appends are refused rather than run on an unverified stream.`)}if(replicas!==1)throw new Error(`stream "${stream}" reports num_replicas=${String(replicas)}; serialized appends on THIS stream require 1 \u2014 a property of this one stream, not of the broker, so a clustered deployment is fine so long as this stream is R1, which a cluster can host. On a replicated stream the dedup cache is consulted before the subject expectation, so a retry returns a duplicate ack instead of a conflict and a lost message reads as success.`)}casEnvelope(opts){return{id:opts.id,ts:Date.now(),space:this.space,from:this.ref(),channel:opts.channel,mentions:normalizeMentions(opts.mentions),parts:opts.parts,replyTo:opts.replyTo,contextId:opts.contextId}}encodedSize(opts){if(!isConcreteChannel(opts.channel))throw new Error(`cannot publish to wildcard channel "${opts.channel}" - pick a concrete sub-channel`);assertIdToken(opts.id,"publish id");if(!Number.isSafeInteger(opts.expectedLastSubjectSeq)||opts.expectedLastSubjectSeq<0)throw new Error(`expectedLastSubjectSeq must be a non-negative safe integer, got ${JSON.stringify(opts.expectedLastSubjectSeq)}`);if(!Array.isArray(opts.parts)||opts.parts.length===0)throw new Error("encodedSize requires at least one part");const mh=(0,import_transport_node13.headers)();mh.set("Nats-Msg-Id",opts.id);mh.set("Nats-Expected-Last-Subject-Sequence",`${opts.expectedLastSubjectSeq}`);const headerBytes=mh.encode().length;return headerBytes+Buffer.byteLength(JSON.stringify(this.casEnvelope(opts)),"utf8")}async multicastExpecting(opts){if(!this.js)throw new Error(this.notLiveMsg());if(!isConcreteChannel(opts.channel))throw new Error(`cannot publish to wildcard channel "${opts.channel}" - pick a concrete sub-channel`);assertIdToken(opts.id,"publish id");const expected=opts.expectedLastSubjectSeq;if(!Number.isSafeInteger(expected)||expected<0)throw new Error(`expectedLastSubjectSeq must be a non-negative safe integer, got ${JSON.stringify(expected)}`);if(!Array.isArray(opts.parts)||opts.parts.length===0)throw new Error("multicastExpecting requires at least one part");const message=this.casEnvelope(opts);assertPartsSerializable(message.parts);const ack=await this.js.publish(chatSubject(this.space,this.owner,this.actor,opts.channel),JSON.stringify(message),{msgID:opts.id,expect:{lastSubjectSequence:expected}});return{message,ack:{seq:ack.seq,duplicate:ack.duplicate===true}}}async unicast(instanceId,text2,opts){const{msg}=await this.unicastAttributed(instanceId,text2,opts);return msg}async unicastAttributed(instanceId,text2,opts){if(!this.js)throw new Error(this.notLiveMsg());const msg={id:randomUUID3(),ts:Date.now(),space:this.space,from:this.ref(),to:instanceId,parts:opts?.parts??[{kind:"text",text:text2}],replyTo:opts?.replyTo,contextId:opts?.contextId};const recip=parsePrincipalKey(instanceId);if(!recip)throw new Error(`unicast: "${instanceId}" is not a valid recipient principal <owner>.<actor>`);assertPartsSerializable(msg.parts);const subject=unicastSubject(this.space,recip.owner,recip.actor,this.owner,this.actor);try{const ack=await this.js.publish(subject,JSON.stringify(msg),{msgID:msg.id});return{msg,ack:{seq:ack.seq,duplicate:ack.duplicate===true}}}catch(error51){if(error51 instanceof import_transport_node13.TimeoutError)throw new Error(`${error51.message} publishing to ${JSON.stringify(subject)}. The send outcome is unknown: the broker may have stored the message. Check before resending.`,{cause:error51});throw error51}}async anycast(service,text2,opts){const{msg}=await this.anycastAttributed(service,text2,opts);return msg}async anycastAttributed(service,text2,opts){if(!this.js)throw new Error(this.notLiveMsg());assertValidRole(service);const msg={id:randomUUID3(),ts:Date.now(),space:this.space,from:this.ref(),toService:service,parts:opts?.parts??[{kind:"text",text:text2}],replyTo:opts?.replyTo,contextId:opts?.contextId};assertPartsSerializable(msg.parts);const ack=await this.js.publish(anycastSubject(this.space,service,this.owner,this.actor),JSON.stringify(msg),{msgID:msg.id});return{msg,ack:{seq:ack.seq,duplicate:ack.duplicate===true}}}tap(handler,opts){const tap={handler,subject:opts?.subject??spaceWildcard(this.space)};this.taps.push(tap);this.bindTap(tap)}bindTap(tap){if(!this.nc)return;const sub=this.nc.subscribe(tap.subject);this.subs.push(sub);void(async()=>{for await(const m of sub){let decoded;try{decoded=m.json()}catch{decoded=void 0}const parsed=parseSubject(m.subject);if(decoded!==void 0&&(parsed?.kind==="chat"||parsed?.kind==="inst"||parsed?.kind==="svc")){if(!isFromSubjectSender(decoded,parsed))continue;decoded=authenticatedMessage(decoded,parsed)}tap.handler(m.subject,decoded)}})().catch(e=>this.emit("error",e))}serveControl(service,handler,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());const sub=this.nc.subscribe(controlServiceSubject(this.space,service,"*","*"),{queue:service});this.subs.push(sub);const inOwnTime=opts.concurrent;let inOrder=Promise.resolve();void(async()=>{for await(const m of sub){if(opts.boundReply&&(!m.reply||!m.reply.startsWith(`${m.subject}.reply.`))){this.emit("error",new Error(`rejected ${service} request on ${m.subject}: reply target "${m.reply??"(none)"}" is not under the sender's own reply subtree`));continue}const answer=()=>this.answerControl(service,handler,m);if(inOwnTime===void 0){await answer();continue}let own=false;try{own=inOwnTime(m.json())}catch{}if(own)void answer().catch(e=>this.emit("error",e));else inOrder=inOrder.then(answer).catch(e=>{this.emit("error",e)})}})().catch(e=>this.emit("error",e));return sub}async answerControl(service,handler,m){let body;try{let reply;const req=m.json();const parsed=parseSubject(m.subject);if(!parsed||!isFromSubjectSender(req,parsed)){this.emit("error",new Error(`rejected control request on ${m.subject}: from ${req.from?.id??"(none)"} does not match subject sender ${parsed?.sender??"(unparseable)"}`));reply={ok:false,error:"sender mismatch - request rejected"}}else{reply=await handler(req)}body=JSON.stringify(reply)}catch(e){body=JSON.stringify({ok:false,error:e.message})}try{m.respond(body)}catch(e){const refused={ok:false,error:`the ${service} reply is ${Buffer.byteLength(body)} bytes and was not published: ${e.message}`};try{m.respond(JSON.stringify(refused))}catch(err3){this.emit("error",new Error(`could not answer ${service} request on ${m.subject}: ${refused.error}, and the refusal failed too: ${err3.message}`))}}}async requestControl(service,req,timeoutMs=5e3){if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=controlServiceSubject(this.space,service,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;const body={...req,from:req.from??this.ref()};const m=await this.nc.request(reqSubject,JSON.stringify(body),{timeout:timeoutMs,noMux:true,reply});return m.json()}serviceRailCaller(){return this.serviceCaller()}serviceCaller(){const triple={owner:this.owner,actor:this.actor,uid:this.requireLifecycleUid("invokeService")};if(this.acceptedToken===void 0)return triple;if(this.issuedGeneration===void 0)throw new Error("invokeService: the issued generation is not yet discovered on this connection");return{...triple,generation:this.issuedGeneration}}async followServiceGoal(endpoint,submit,deadlineMs=1e4,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());if(this.stopped)throw new Error("endpoint stopped - cannot follow goal");const abortController=new AbortController;const onAbort=()=>abortController.abort();if(opts.signal?.aborted)onAbort();else opts.signal?.addEventListener("abort",onAbort,{once:true});let reconnectHandler;const entry={cancel:()=>abortController.abort(),reconnected:nc=>reconnectHandler?.(nc)};this.activeGoalFollowers.add(entry);try{const reconcile=opts.reconcile??(async(goalId,_attributed,context)=>{const current=this.serviceCaller();if(current.owner!==context.caller.owner||current.actor!==context.caller.actor||current.uid!==context.caller.uid)throw new Error("the renewed goal reader no longer has the accepting caller's full identity");const q=await this.invokeService(endpoint,"goal-result",{goalId},{deadlineMs:Math.min(deadlineMs,context.deadlineMs),signal:context.signal});if(q.reply.ok!==true)throw new Error(q.reply.error?.message??"goal-result query refused");return q.reply.data});return await submitAndFollowGoal(this.nc,this.space,endpoint,this.serviceCaller(),deadlineMs,submit,{reconcile,currentNc:()=>this.nc,onReconnect:cb=>{reconnectHandler=cb;return()=>{reconnectHandler=void 0}},signal:abortController.signal,prepare:opts.prepare})}finally{opts.signal?.removeEventListener("abort",onAbort);this.activeGoalFollowers.delete(entry)}}clearResolvedService(endpoint){this.resolvedServices.delete(endpoint);this.resolvedCommandServices.delete(endpoint)}async describeService(endpoint,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());if(opts.refresh)this.clearResolvedService(endpoint);const cached2=opts.instanceId===void 0?this.resolvedServices.get(endpoint):void 0;if(cached2)return cached2;const svc=await resolveService(this.nc,this.space,endpoint,this.serviceCaller(),{deadlineMs:opts.deadlineMs??1e4,signal:opts.signal,...opts.instanceId!==void 0?{instanceId:opts.instanceId}:{}});if(opts.instanceId===void 0)this.resolvedServices.set(endpoint,svc);return svc}async invokeService(endpoint,command,args,opts={}){if(!this.nc)throw new Error(this.notLiveMsg());const nc=this.nc;const caller=this.serviceCaller();const resolve3=async(signal=opts.signal,deadlineMs=opts.deadlineMs??1e4)=>{signal?.throwIfAborted();const needed=opts.follow?[command,"goal-result"]:[command];const classSelected=opts.instanceId===void 0&&opts.classInstanceId===void 0;const full=classSelected?this.resolvedServices.get(endpoint):void 0;if(full&&needed.every(name=>full.commands.has(name)))return full;const cacheKey=[...needed].sort().join("\0");const commandCache=classSelected?this.resolvedCommandServices.get(endpoint):void 0;const cached2=commandCache?.get(cacheKey);if(cached2)return cached2;const svc=await resolveService(nc,this.space,endpoint,caller,{deadlineMs,signal,commands:needed,...opts.follow&&command!=="goal-result"?{optionalCommands:["goal-result"]}:{},...opts.instanceId!==void 0?{instanceId:opts.instanceId}:{},...opts.classInstanceId!==void 0?{classInstanceId:opts.classInstanceId}:{}});if(classSelected){let byCommand=this.resolvedCommandServices.get(endpoint);if(!byCommand){byCommand=new Map;this.resolvedCommandServices.set(endpoint,byCommand)}byCommand.set(cacheKey,svc)}return svc};const invokeOpts={...opts.target?{target:opts.target}:{},...opts.deadlineMs!==void 0?{deadlineMs:opts.deadlineMs}:{}};const invokeResolved=(service2,signal)=>{signal?.throwIfAborted();const unfollowable=opts.follow?goalFollowRefusal(service2):void 0;if(unfollowable)return Promise.resolve(unfollowable);return invokeCommand(nc,this.space,service2,command,args,{...invokeOpts,signal})};const resolveFirst=async(signal=opts.signal,deadline=Date.now()+(opts.deadlineMs??1e4))=>{try{return await resolve3(signal,deadline-Date.now())}catch(e){if(!(e instanceof EpEnvelopeError)||e.code!=="failed-precondition")throw e;const left=deadline-Date.now();if(left<=0)throw e;return await resolve3(signal,left)}};const doInvoke=async(service2,signal=opts.signal)=>{signal?.throwIfAborted();try{let r=await invokeResolved(service2,signal);const unmappedHere=x=>opts.instanceId===void 0&&replyTargetUnmapped(x.reply.error);let unmapped=unmappedHere(r)?r:void 0;for(let reissues=0;reissues<BIND_SPLIT_REISSUES&&r.reply.ok===false&&(replyRefusedBeforeEffect(r.reply.error)||unmappedHere(r));reissues++){this.splitsRecovered++;this.emit("split-recovered",{endpoint,command,servedBy:r.responder,splitsRecovered:this.splitsRecovered,boundTo:(r.reply.error?.details??[]).find(d=>d.kind===EP_BIND_REFUSED)?.boundTo});this.clearResolvedService(endpoint);const raw=r.reply.error?.code;const refusalCode=raw==="expired"?"expired":raw==="failed-precondition"?"failed-precondition":void 0;if(refusalCode===void 0)throw new EpEnvelopeError("internal",`${endpoint}.${command} came back marked as refused before it ran, but with code ${String(raw)}; the fence produces only failed-precondition or expired (SPEC 13.2)`,r.reply.error?.details);let reissueTarget;try{reissueTarget=await resolve3(signal);const unfollowable=opts.follow?goalFollowRefusal(reissueTarget):void 0;if(unfollowable)throw new Error(unfollowable.reply.error.message)}catch(reissue){throw new EpEnvelopeError(refusalCode,`${endpoint}.${command} WAS NOT RUN - the incarnation that received it refused it before any effect, and the re-issue could not be resolved: ${reissue instanceof Error?reissue.message:String(reissue)}. Re-resolve and re-issue when the endpoint is reachable (SPEC 13.2)`,r.reply.error?.details,"not-executed")}r=await invokeResolved(reissueTarget,signal);if(unmappedHere(r))unmapped=r}return replyRefusedBeforeEffect(r.reply.error)?unmapped??r:r}catch(e){if(respondedButUnbound(e)){this.clearResolvedService(endpoint);if(!isRepeatSafeCommand(endpoint,command))throw e;return await invokeResolved(await resolve3(signal),signal)}throw e}};if(!opts.follow)return doInvoke(await resolveFirst());let service;return this.followServiceGoal(endpoint,signal=>doInvoke(service,signal),opts.deadlineMs??1e4,{signal:opts.signal,prepare:async(signal,deadline)=>{service=await resolveFirst(signal,deadline)}})}async requestDelivery(op,args,timeoutMs=5e3){if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=controlServiceSubject(this.space,CONTROL_DELIVERY,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;const body={op,args,from:this.ref()};const m=await this.nc.request(reqSubject,JSON.stringify(body),{timeout:timeoutMs,noMux:true,reply});return m.json()}async requestDeliveryAdmin(op,args,timeoutMs=5e3){if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=controlServiceSubject(this.space,CONTROL_DELIVERY_ADMIN,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;const body={op,args,from:this.ref()};const m=await this.nc.request(reqSubject,JSON.stringify(body),{timeout:timeoutMs,noMux:true,reply});return m.json()}getRoster(){return[...this.roster.values()].sort((a,b)=>a.card.name.localeCompare(b.card.name))}async readPresence(){if(this.doWatch&&!this.readOnce)throw new Error("readPresence is for an endpoint that does not watch presence; this one keeps its roster live (getRoster)");const kv=this.kv;if(!kv)throw new Error(this.nc?"readPresence needs the presence bucket open (registerPresence or watchPresence)":this.notLiveMsg());if(this.presenceRead)return this.presenceRead;const generation=++this.presenceReadGeneration;const roster=(async()=>{let entries;try{entries=await lastKvEntries(kv)}catch(e){if(!isPublishPermissionDenied(e))throw e;throw new Error(`presence read refused for ${this.card.id}: this credential may not publish $JS.API.DIRECT.GET.KV_${presenceBucket(this.space)}, the on-demand roster read (SPEC Appendix B). A credential minted by an older issuer can lack this grant even when newly minted; upgrade the manager or auth service that issues credentials, then mint a new credential. Reusing credentials or reconnecting does not add the grant.`,{cause:e})}const at=Date.now();const read=new Map;for(const e of entries){if(e.key===TTL_RECONCILE_CANARY_KEY||e.operation==="DEL"||e.operation==="PURGE")continue;const p=this.decodePresence(e);if(p)read.set(e.key,p.status==="offline"||at-p.ts>this.ttlMs?this.toOffline(p):p)}if(generation>this.presenceReadApplied){this.presenceReadApplied=generation;for(const[id2,p]of this.roster)if(!read.has(id2))read.set(id2,p.status==="offline"?p:this.toOffline(p));this.roster.clear();for(const[id2,p]of read)this.roster.set(id2,p)}return this.getRoster()})();this.presenceRead=roster;const settled=()=>{if(this.presenceRead===roster)this.presenceRead=void 0};roster.then(settled,settled);return roster}presenceView(){if(!this.doWatch)return{state:"current",fresh:true};if(!this.presenceSnapshotPopulated)return{state:"unpopulated",fresh:false};if(this.presenceWatchEmpty)return{state:"current",fresh:true};const staleSince=this.lastPresenceWatchAt+this.ttlMs;if(Date.now()<staleSince)return{state:"current",fresh:true};return{state:"stale",fresh:false,staleSince}}async waitForPresenceSnapshot(timeoutMs=1e3){let timer;try{return await Promise.race([this.presenceSnapshot.then(()=>"snapshot"),new Promise(resolve3=>{timer=setTimeout(()=>resolve3("timeout"),timeoutMs)})])}finally{if(timer)clearTimeout(timer)}}assertPresenceUpdate(update){assertPresenceRow({card:this.card,status:this.status,activity:this.activity,condition:this.condition,attention:this.attentionMode,ts:Date.now(),...update},this.card.id)}async setActivity(activity){this.assertPresenceUpdate({activity});if(activity!==this.activity)this.statusSince=this.activitySince=Date.now();this.activity=activity;await this.publishPresence()}async setStatus(status2,activity){this.assertPresenceUpdate({status:status2,...activity===void 0?{}:{activity}});if(activity!==void 0&&activity!==this.activity)this.statusSince=this.activitySince=Date.now();if(activity!==void 0)this.activity=activity;if(status2!==this.status)this.statusSince=Date.now();this.status=status2;await this.publishPresence()}noteActivity(at=Date.now()){if(Number.isFinite(at)&&at>(this.activeAt??0))this.activeAt=at}async setCondition(condition){this.assertPresenceUpdate({condition:condition??void 0});this.condition=condition??void 0;this.conditionRevision++;await this.publishPresence()}async setAttention(attention){this.assertPresenceUpdate({attention});this.attentionMode=attention;await this.publishPresence()}async setChannelModes(modes){this.channelModes=Object.keys(modes).length?modes:void 0;await this.publishPresence()}async setCardModel(model,variant,provider){const m=model.trim();const v=variant?.trim();const p=provider?.trim();if(!m||this.card.meta?.model===m&&this.card.meta.variant===v&&(p===void 0||this.card.meta?.provider===p))return;const meta3={...this.card.meta??{},model:m};if(v)meta3.variant=v;else delete meta3.variant;if(p)meta3.provider=p;this.card.meta=meta3;await this.publishPresence()}async setCardCwd(cwd){if(!cwd||this.card.meta?.cwd===cwd)return;this.card.meta={...this.card.meta??{},cwd};await this.publishPresence()}getChannelConfig(channel){return this.channelConfigs.get(channel)}channelReplay(channel){return effectiveReplay(this.channelConfigs.get(channel),this.channelDefaults)}channelReplayWindow(channel){return this.channelConfigs.get(channel)?.replayWindow??this.channelDefaults.replayWindow}async channelReplayPolicy(channel){if(!this.nc)throw new Error(this.notLiveMsg());const kv=this.channelKv??await openChannelRegistry(this.nc,this.space,{create:false});let cfg;let defaults;try{[cfg,defaults]=await Promise.all([isConcreteChannel(channel)?readChannelConfig(kv,channel):Promise.resolve(void 0),readChannelDefaults(kv)])}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e}return{replay:effectiveReplay(cfg,defaults),window:cfg?.replayWindow??defaults?.replayWindow??null,registered:cfg!==void 0}}channelDeliveryClass(channel){return effectiveDeliveryClass(this.channelConfigs.get(channel),this.channelDefaults)}joinedChannels(){return[...this.channels]}async joinChannel(channel){if(!this.jsm)throw new Error(this.notLiveMsg());if(this.channels.includes(channel))return{joined:false,backfilled:0,durable:this.plane3Channels.has(channel)};const armed2=await this.armJoin([channel]);this.subscribeChat(channel);try{await this.confirmChatSub()}catch(e){this.unsubscribeChat(channel);throw new Error(`cannot join "${channel}": live subscription could not be confirmed (${e.message})`)}if(this.chatSubDenied.has(channel)){this.unsubscribeChat(channel);throw new Error(`cannot join "${channel}": not within this agent's read ACL (allowSubscribe)`)}this.channels.push(channel);let durable=false;let reason;if(effectiveDeliveryClass(this.channelConfigs.get(channel),this.channelDefaults)==="durable"){try{const r=await this.durableJoinChannel(channel);if(r.durable){this.plane3Channels.set(channel,r.generation??0);durable=true}else{reason=r.reason??"durable backstop unavailable"}}catch(e){reason=`durable backstop unavailable (${e.message})`}}const backfilled=await this.backfillArmed(armed2);return{joined:true,backfilled,durable,...reason!==void 0?{reason}:{}}}async leaveChannel(channel){if(!this.jsm)throw new Error(this.notLiveMsg());if(!this.channels.includes(channel))return{left:false};if(this.authed&&effectiveDeliveryClass(this.channelConfigs.get(channel),this.channelDefaults)==="durable"){let generation=this.plane3Channels.get(channel);if(generation===void 0)generation=(await this.fetchMemberships())?.find(m=>m.channel===channel)?.generation;if(generation!==void 0){await this.durableLeaveChannel(channel,generation);this.plane3Channels.delete(channel)}}this.unsubscribeChat(channel);const i=this.channels.indexOf(channel);if(i>=0)this.channels.splice(i,1);return{left:true}}async chatRetention(){if(!this.nc)throw new Error(this.notLiveMsg());const mgr=await(0,import_jetstream14.jetstreamManager)(this.nc);let info;try{info=await mgr.streams.info(chatStream(this.space),{subjects_filter:">"})}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e;return{perSender:null,maxAgeMs:null,senders:[],stream:false,lastSeq:0}}const senders=[];for(const[subject,messages]of Object.entries(info.state.subjects??{})){const p=parseSubject(subject);if(p?.kind==="chat"&&isPrincipalOwnerToken(p.owner))senders.push({channel:p.rest,sender:p.sender,messages})}const cap=info.config.max_msgs_per_subject;const age=info.config.max_age;return{perSender:typeof cap==="number"&&cap>0?cap:null,maxAgeMs:typeof age==="number"&&age>0?Math.round(age/1e6):null,senders:senders.sort((a,b)=>a.channel.localeCompare(b.channel)||a.sender.localeCompare(b.sender)),stream:true,lastSeq:info.state.last_seq}}async listChannels(){if(!this.nc)throw new Error(this.notLiveMsg());const mgr=await(0,import_jetstream14.jetstreamManager)(this.nc);const counts=new Map;try{const info=await mgr.streams.info(chatStream(this.space),{subjects_filter:">"});if(info.state.subjects){for(const[subject,count]of Object.entries(info.state.subjects)){const p=parseSubject(subject);if(p?.kind==="chat"&&isPrincipalOwnerToken(p.owner))counts.set(p.rest,(counts.get(p.rest)??0)+count)}}}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e}const channels=new Set([...counts.keys(),...this.channelConfigs.keys()]);return[...channels].map(channel=>({channel,messages:counts.get(channel)??0,config:this.channelConfigs.get(channel)})).sort((a,b)=>a.channel.localeCompare(b.channel))}async channelMembers(channel){const members=(await listMembers(await this.membersRegistry())).filter(r=>r.leaveCursor===void 0&&r.activated===true);const byId=new Map;for(const p of this.roster.values())byId.set(p.card.id,p);const memberForId=id2=>{const p=byId.get(id2);return p?{id:p.card.id,name:p.card.name,role:p.card.role,live:p.status!=="offline"}:{id:id2,name:id2,live:false}};const byName=(a,b)=>a.name.localeCompare(b.name);if(channel!==void 0)return members.filter(r=>subjectMatches(r.channel,channel)).map(r=>memberForId(r.owner)).sort(byName);const map2=new Map;for(const r of members){const arr=map2.get(r.channel);const m=memberForId(r.owner);if(arr){if(!arr.some(x=>x.id===m.id))arr.push(m)}else{map2.set(r.channel,[m])}}for(const arr of map2.values())arr.sort(byName);return map2}async membershipFeedRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.membershipFeedKv??=await new import_kv6.Kvm(this.nc).open(membershipBucket(this.space));return this.membershipFeedKv}async readMembership(){const kv=await this.membershipFeedRegistry();const members=[];let asOf;let entries;try{entries=await lastKvEntries(kv)}catch(e){if(!isPublishPermissionDenied(e))throw e;throw new Error(`membership read refused for ${this.card.id}: this credential may not publish $JS.API.DIRECT.GET.KV_${membershipBucket(this.space)}, the membership feed read (SPEC Appendix B). A credential minted by an older issuer can lack this grant even when newly minted; upgrade the manager or auth service that issues credentials, then mint a new credential. Reusing credentials or reconnecting does not add the grant.`,{cause:e})}for(const e of entries){if(e.key===MEMBERSHIP_FEED_KEY){try{asOf=e.json().observedAt}catch{}continue}try{const rec=e.json();members.push({id:e.key,live:rec.live??[],durable:rec.durable??[],observedAt:rec.observedAt})}catch{}}return{asOf,members}}async watchMembership(onChange,onClosed){if(this.stopped)throw new Error("endpoint stopped - cannot watch membership");const watch={onChange,onClosed,stopped:false,arm:Promise.resolve()};this.membershipFeedWatches.add(watch);watch.arm=watch.arm.catch(()=>{}).then(()=>this.armMembershipWatch(watch));try{await watch.arm}catch(err3){watch.stopped=true;this.membershipFeedWatches.delete(watch);await this.disarmMembershipWatch(watch);throw err3}return{stop:async()=>{if(watch.stopPromise)return watch.stopPromise;watch.stopped=true;watch.stopPromise=new Promise((resolve3,reject)=>{watch.resolveStop=resolve3;watch.rejectStop=reject});watch.arm=watch.arm.catch(()=>{}).then(async()=>{await this.disarmMembershipWatch(watch);await this.deleteRetainedMembershipConsumer(watch);this.finishMembershipWatchStop(watch)}).catch(err3=>{watch.rejectStop?.(err3)});return watch.stopPromise}}}async armMembershipWatch(watch){if(watch.stopped)return;const kv=await this.membershipFeedRegistry();await this.deleteRetainedMembershipConsumer(watch);if(!(kv instanceof import_internal2.Bucket))throw new Error("membership watch needs the @nats-io/kv Bucket implementation");const cc=kv._buildCC(">",import_internal2.KvWatchInclude.LastValue,{headers_only:false});const consumer=await kv.js.consumers.getPushConsumer(kv.stream,cc);const info=await consumer.info(true);this.recordOwnWatchConsumer(info);watch.consumer=consumer;const permission2=this.nc&&this.watchDeletePermissions.get(this.nc);if(permission2)this.watchDeletePermissions.set(consumer,permission2);watch.consumerStream=info.stream_name;watch.consumerName=info.name;let replaying=info.num_pending>0;let iter;try{iter=await consumer.consume({callback:jm=>{if(watch.stopped||watch.consumer!==consumer)return;const entry=kv.jmToWatchEntry(jm,!replaying);watch.onChange(membershipChange(entry,!replaying));if(replaying&&jm.info.pending===0){replaying=false;watch.onChange({type:"replayed",revision:entry.revision})}}})}catch(err3){await this.disarmMembershipWatch(watch);throw err3}watch.iter=iter;if(watch.stopped){await this.disarmMembershipWatch(watch);return}if(!replaying)watch.onChange({type:"replayed",revision:0});iter.closed().then(()=>{if(watch.stopped||watch.consumer!==consumer)return;const err3=new Error("membership watch closed");watch.onClosed?.(err3);this.emit("error",err3)}).catch(()=>{})}async deleteRetainedMembershipConsumer(watch){if(!watch.consumerStream||!watch.consumerName)return;if(!this.nc||this.nc.isClosed())return;if(this.watchConsumerDeleteDenied(watch.consumerStream,watch.consumerName,this.nc)){watch.consumerStream=void 0;watch.consumerName=void 0;return}const jsm=await(0,import_jetstream14.jetstreamManager)(this.nc);if(await this.deleteMembershipConsumer(jsm,watch.consumerStream,watch.consumerName)){watch.consumerStream=void 0;watch.consumerName=void 0}}finishMembershipWatchStop(watch){if(!watch.stopped||watch.consumer||watch.iter||watch.consumerStream||watch.consumerName)return;this.membershipFeedWatches.delete(watch);watch.resolveStop?.();watch.resolveStop=void 0;watch.rejectStop=void 0}recordOwnWatchConsumer({stream_name,name}){const prefix=`$JS.API.CONSUMER.DELETE.${stream_name}.${name.slice(0,name.lastIndexOf("_")+1)}`;this.ownWatchDeletePrefixes.add(prefix);return prefix}isOwnWatchDelete(subject){const cut=subject.lastIndexOf("_")+1;return/^\d+$/.test(subject.slice(cut))&&this.ownWatchDeletePrefixes.has(subject.slice(0,cut))}watchConsumerDeleteDenied(stream,name,owner2){const permission2=owner2&&this.watchDeletePermissions.get(owner2)?.();return Boolean(permission2&&!issuedPermitsSubject(permission2,`$JS.API.CONSUMER.DELETE.${stream}.${name}`))}async deleteOwnConsumer(consumer){const{stream_name,name}=await consumer.info(true);if(this.watchConsumerDeleteDenied(stream_name,name,consumer))return;try{await consumer.delete()}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound)&&!isPublishPermissionDenied(e))throw e}}async deleteMembershipConsumer(jsm,stream,name){try{return await jsm.consumers.delete(stream,name)}catch(err3){if(membershipConsumerReleased(err3))return true;throw err3}}async disarmMembershipWatch(watch){const iter=watch.iter;const consumer=watch.consumer;watch.iter=void 0;watch.consumer=void 0;try{iter?.stop()}catch{}if(consumer){if(watch.consumerStream&&watch.consumerName&&this.watchConsumerDeleteDenied(watch.consumerStream,watch.consumerName,consumer)){watch.consumerStream=void 0;watch.consumerName=void 0;return}try{const deleted=await consumer.delete();if(deleted){watch.consumerStream=void 0;watch.consumerName=void 0}}catch(err3){if(membershipConsumerReleased(err3)){watch.consumerStream=void 0;watch.consumerName=void 0}else{const closedEpoch=err3 instanceof import_transport_node13.ClosedConnectionError;const timeout=err3 instanceof import_transport_node13.TimeoutError;const dyingEpochTimeout=timeout&&(this.reconnecting||!this.nc||this.nc.isClosed());if(timeout||closedEpoch||dyingEpochTimeout){this.emit("error",err3)}else{throw err3}}}}}async rearmMembershipWatches(){await Promise.all([...this.membershipFeedWatches].map(async watch=>{watch.arm=watch.arm.catch(()=>{}).then(async()=>{await this.disarmMembershipWatch(watch);await this.deleteRetainedMembershipConsumer(watch);if(!watch.stopped)await this.armMembershipWatch(watch)});try{await watch.arm;this.finishMembershipWatchStop(watch)}catch(err3){this.emit("error",err3)}}))}async channelHistory(channel,opts){return(await this.streamHistory(chatStream(this.space),[chatSubject(this.space,"*","*",channel)],opts?.limit??100,void 0,opts?.signal)).map(r=>r.msg)}async channelHistoryPage(channel,opts){assertValidChannel(channel);if(!isConcreteChannel(channel))throw new Error("channelHistoryPage requires one concrete channel");const limit=opts?.limit??50;if(!Number.isSafeInteger(limit)||limit<1||limit>1e3)throw new Error("channelHistoryPage limit must be a whole number from 1 to 1000");if(!this.nc||!this.js)throw new Error(this.notLiveMsg());const jsm=this.jsm??=await(0,import_jetstream14.jetstreamManager)(this.nc);const signal=AbortSignal.any([AbortSignal.timeout(1e4),...opts?.signal?[opts.signal]:[]]);signal.throwIfAborted();const stream=chatStream(this.space);const name=chatHistDurable(this.owner,this.actor,this.requireLifecycleUid("channelHistoryPage"));const subject=chatSubject(this.space,"*","*",channel);const marker=randomUUID3();let created;for(;;){signal.throwIfAborted();try{created=await jsm.consumers.add(stream,{name,description:marker,filter_subject:subject,ack_policy:import_jetstream14.AckPolicy.None,deliver_policy:import_jetstream14.DeliverPolicy.All,mem_storage:true,inactive_threshold:(0,import_transport_node13.nanos)(250)});break}catch(e){if(!(e instanceof import_jetstream14.JetStreamApiError)||e.code!==10148)throw e;await delay(50,void 0,{signal})}}signal.throwIfAborted();const owns=info=>info.created===created.created&&info.config.description===marker&&info.config.filter_subject===subject;if(!owns(created))throw new Error("channelHistoryPage: consumer ownership was not established");const consumer=await this.js.consumers.get(stream,name);const pending=created.num_pending;const out=[];let delivered=0;if(pending>0){const iter=await consumer.consume({max_messages:Math.min(pending,32)});const stop=()=>iter.stop(abortReason(signal));signal.addEventListener("abort",stop,{once:true});try{signal.throwIfAborted();for await(const m of iter){signal.throwIfAborted();if(!subjectMatches(subject,m.subject))throw new Error("channelHistoryPage: consumer delivered another channel; ownership was lost");delivered++;const msg=historyMessageFromDelivery(m);if(msg){out.push(msg);if(out.length>limit+1)out.shift()}if(delivered>=pending)break}}finally{signal.removeEventListener("abort",stop);iter.stop()}signal.throwIfAborted();if(delivered!==pending)throw new Error(`channelHistoryPage: read ${delivered} of ${pending} messages before the window was cut short`)}signal.throwIfAborted();if(!owns(await consumer.info()))throw new Error("channelHistoryPage: consumer ownership was lost");signal.throwIfAborted();return{items:out.slice(-limit),complete:out.length<=limit}}async multiChannelHistory(channels,opts){const subjects=[...new Set(channels.map(channel=>{if(!isConcreteChannel(channel))throw new Error(`multiChannelHistory: "${channel}" is a wildcard channel - one consumer's filter subjects may not overlap, so name the concrete channels`);assertValidChannel(channel);return chatSubject(this.space,"*","*",channel)}))];if(subjects.length===0)return[];const limit=opts?.limit??100;const size=Math.max(1,Math.trunc(opts?.batch??MULTI_FILTER_BATCH));const batches=[];for(let i=0;i<subjects.length;i+=size)batches.push(subjects.slice(i,i+size));const pages=new Array(batches.length);let next=0;const readBatch=async()=>{for(;;){const i=next++;if(i>=batches.length)return;pages[i]=await this.streamHistory(chatStream(this.space),batches[i],limit,void 0,opts?.signal)}};await Promise.all(Array.from({length:Math.min(MULTI_FILTER_READ_CONCURRENCY,batches.length)},readBatch));const rows=pages.flat().sort((a,b)=>a.seq-b.seq).slice(-limit);return rows.map(({seq,subject,msg})=>{const p=parseSubject(subject);if(p?.kind!=="chat")throw new Error(`multiChannelHistory: the broker delivered ${subject}, which is not a chat subject on this space`);return{channel:p.rest,seq,msg}})}async readHistory(channel,opts){const reply=await this.requestDelivery("readHistory",{channel,limit:opts?.limit});if(!reply.ok)throw new Error(reply.error??"readHistory failed");const data=reply.data;if(!Array.isArray(data?.items)||typeof data?.complete!=="boolean")throw new Error("readHistory: the delivery daemon returned a malformed page (expected { items, complete })");return{items:data.items,complete:data.complete}}async dmHistory(opts){return(await this.streamHistory(dmStream(this.space),[`${spacePrefix(this.space)}.inst.>`],opts?.limit??100,void 0,opts?.signal)).map(r=>r.msg)}async streamHistory(stream,subjects,limit,before,signal){if(!this.nc)throw new Error(this.notLiveMsg());signal?.throwIfAborted();if(!Number.isSafeInteger(limit))throw new Error(`history limit must be a whole number of messages this server can count exactly, received ${limit}`);if(limit<=0)return[];const nc=this.nc;let reader;try{reader=await this.acquireHistoryReader(nc,this.jsm??(this.jsm=await(0,import_jetstream14.jetstreamManager)(nc)),stream,signal);const ceiling=before!==void 0?before-1:await this.lastMatchingSeq(reader,subjects,signal);if(ceiling<1)return[];let span=Math.max(limit,64);let floor=1;let floorKnown=false;for(;;){signal?.throwIfAborted();const start=Math.max(floor,ceiling-span+1);const page=await this.drainWindow(reader,subjects,start,ceiling,limit,signal);if(page.length>=limit)return page.slice(-limit);if(!floorKnown){floor=Math.max(1,await this.firstMatchingSeq(reader,subjects,signal));floorKnown=true}if(start<=floor)return page.slice(-limit);span*=4}}catch(e){const msg=String(e?.message??"");if(/stream not found/i.test(msg)||e?.code===404)return[];if(isPermissionDenied(e)&&stream===dmStream(this.space))return[];throw e}finally{if(reader)this.releaseHistoryReader(reader)}}historyReaderId(nc){if(!this.userMode)return this.connId;const info=nc.info;if(!info)throw new Error("history: the server has not sent its INFO, so this connection has no history reader id yet");return calloutReaderId(info.server_id,info.client_id)}async acquireHistoryReader(nc,jsm,stream,signal){for(;;){signal?.throwIfAborted();const readerId=this.historyReaderId(nc);let pool=this.historyReaderSlots.get(stream);if(pool?.readerId!==readerId){pool={readerId,free:Array.from({length:HISTORY_READERS},(_,i)=>HISTORY_READERS-1-i),held:0,waiting:[],refusedUntil:0};this.historyReaderSlots.set(stream,pool)}if(pool.refusedUntil>Date.now())throw this.readerDeleteRefused(stream);const slot=pool.free.pop();if(slot!==void 0){pool.held++;return{nc,js:(0,import_jetstream14.jetstream)(nc),jsm,stream,pool,slot,name:historyReaderConsumer(readerId,slot),held:true,left:false}}if(pool.held===0)throw new Error(`history: every history reader name this connection has on ${stream} is set aside, held by a consumer it did not create (another process using the same credential, or one that stopped mid-read) or by a reader it could not confirm deleted; they expire ${HISTORY_READER_INACTIVE_MS/6e4} minutes after their last use`);const waitOn=pool;await new Promise((resolve3,reject)=>{const wake=()=>{signal?.removeEventListener("abort",stop);resolve3()};const stop=()=>{waitOn.waiting.splice(waitOn.waiting.indexOf(wake),1);reject(abortReason(signal))};waitOn.waiting.push(wake);signal?.addEventListener("abort",stop,{once:true})})}}releaseHistoryReader(reader){if(!reader.held)return;reader.held=false;const pool=reader.pool;pool.held--;if(!reader.left){pool.free.push(reader.slot);pool.waiting.shift()?.();return}this.setAsideHistoryReader(pool,reader.slot);if(pool.held===0)for(const wake of pool.waiting.splice(0))wake()}setAsideHistoryReader(pool,slot){setTimeout(()=>{pool.free.push(slot);pool.waiting.shift()?.()},HISTORY_READER_INACTIVE_MS).unref()}async openHistoryReader(reader,config2){const pool=reader.pool;for(;;){if(this.historyReaderId(reader.nc)!==pool.readerId)throw new Error(`history: the connection was re-established during the read on ${reader.stream}, so its history reader names changed; the read is not served`);const description=`cotal history read ${randomUUID3()}`;let info;try{info=await reader.jsm.consumers.add(reader.stream,{...config2,name:reader.name,description,ack_policy:import_jetstream14.AckPolicy.None,max_deliver:1,mem_storage:true,num_replicas:1,inactive_threshold:(0,import_transport_node13.nanos)(HISTORY_READER_INACTIVE_MS)})}catch(e){if(!isConsumerAlreadyExists(e))throw e}if(info?.config.description===description)return reader.js.consumers.getConsumerFromInfo(info);this.setAsideHistoryReader(pool,reader.slot);const next=pool.free.pop();if(next===void 0){reader.held=false;pool.held--;for(const wake of pool.waiting.splice(0))wake();throw new Error(`history: reader ${reader.name} on ${reader.stream} is held by a consumer this read did not create, and no other reader name is free`)}reader.slot=next;reader.name=historyReaderConsumer(pool.readerId,next)}}async closeHistoryReader(reader){try{await reader.jsm.consumers.delete(reader.stream,reader.name)}catch(e){if(isConsumerNotFound(e))return;reader.left=true;if(isPublishPermissionDenied(e)){if(this.historyReaderId(reader.nc)!==reader.pool.readerId)throw new Error(`history: the connection was re-established during the read on ${reader.stream}, so it may no longer delete its reader ${reader.name}, which expires on its own; the read is not served`);reader.pool.refusedUntil=Date.now()+HISTORY_READER_INACTIVE_MS;throw this.readerDeleteRefused(reader.stream)}throw e}}readerDeleteRefused(stream){return new Error(`history: this credential may not delete its own history readers on ${stream}; it predates the observer and admin reader-delete grant, so remint it`)}async firstMatchingSeq(reader,subjects,signal){signal?.throwIfAborted();const consumer=await this.openHistoryReader(reader,{filter_subjects:subjects,deliver_policy:import_jetstream14.DeliverPolicy.All});try{if((await consumer.info(true)).num_pending===0)return 0;signal?.throwIfAborted();const iter=await consumer.fetch({max_messages:1});const stop=()=>iter.stop(abortReason(signal));signal?.addEventListener("abort",stop,{once:true});try{signal?.throwIfAborted();for await(const m of iter)return m.seq}finally{signal?.removeEventListener("abort",stop);iter.stop()}throw new Error(`history: the broker reported messages on ${subjectLabel(subjects)} but delivered none - the read was cut short, not empty`)}finally{await this.closeHistoryReader(reader)}}async lastMatchingSeq(reader,subjects,signal){signal?.throwIfAborted();const consumer=await this.openHistoryReader(reader,{filter_subjects:subjects,deliver_policy:import_jetstream14.DeliverPolicy.Last});try{if((await consumer.info(true)).num_pending===0)return 0;signal?.throwIfAborted();const iter=await consumer.fetch({max_messages:1});const stop=()=>iter.stop(abortReason(signal));signal?.addEventListener("abort",stop,{once:true});try{signal?.throwIfAborted();for await(const m of iter)return m.seq}finally{signal?.removeEventListener("abort",stop);iter.stop()}throw new Error(`history: the broker reported messages on ${subjectLabel(subjects)} but delivered none - the read was cut short, not empty`)}finally{await this.closeHistoryReader(reader)}}async drainWindow(reader,subjects,start,ceiling,limit,signal){signal?.throwIfAborted();const out=[];const consumer=await this.openHistoryReader(reader,{filter_subjects:subjects,deliver_policy:import_jetstream14.DeliverPolicy.StartSequence,opt_start_seq:start});try{const pending=(await consumer.info(true)).num_pending;if(pending===0)return out;signal?.throwIfAborted();const iter=await consumer.consume({max_messages:Math.min(pending,32)});const stop=()=>iter.stop(abortReason(signal));signal?.addEventListener("abort",stop,{once:true});let delivered=0;let complete=false;try{signal?.throwIfAborted();for await(const m of iter){delivered++;if(m.info.deliverySequence!==delivered)throw new Error(`history: delivery ${m.info.deliverySequence} arrived where ${delivered} was due on ${subjectLabel(subjects)} - the window has a gap, so the page is not served`);if(m.seq>=ceiling){if(m.seq===ceiling){const msg2=historyMessageFromDelivery(m);if(msg2)out.push({seq:m.seq,subject:m.subject,msg:msg2})}complete=true;break}const msg=historyMessageFromDelivery(m);if(msg){out.push({seq:m.seq,subject:m.subject,msg});if(out.length>limit)out.shift()}if(delivered>=pending){complete=true;break}}}finally{signal?.removeEventListener("abort",stop);iter.stop()}if(!complete)throw new Error(`history: read ${delivered} of ${pending} messages on ${subjectLabel(subjects)} before the stream ended early - the window was cut short, not empty`);return out}finally{await this.closeHistoryReader(reader)}}watchStatus(){const nc=this.nc;if(!nc)return;const handedToRequest=this.trackRequestDenials(nc);void(async()=>{for await(const s of nc.status()){if(this.nc!==nc)continue;if(s.type==="disconnect"){this.emit("transport",{connected:false,server:s.server});continue}if(s.type==="reconnect"){this.armAuthExpiryReconnectFence(nc);this.emit("transport",{connected:true,server:s.server});for(const follower of this.activeGoalFollowers){follower.reconnected(nc)}continue}if(s.type==="close"){this.emit("transport",{connected:false});continue}if(s.type!=="error")continue;if(s.error instanceof import_transport_node13.PermissionViolationError&&this.chatSubRefusals.has(s.error))continue;if(s.error instanceof import_transport_node13.PermissionViolationError&&handedToRequest.has(s.error))continue;if(s.error instanceof import_transport_node13.PermissionViolationError&&s.error.operation==="publish"&&this.isOwnWatchDelete(s.error.subject))continue;this.emit("error",describeStatusError(s.error))}})().catch(e=>{if(!this.stopped&&this.nc===nc)this.emit("error",e)});if(this.stopped)return;this.emit("transport",{connected:true,server:nc.getServer()})}trackRequestDenials(nc){const handed=new WeakSet;const request=nc.request.bind(nc);nc.request=(subject,payload,opts)=>{const reply=request(subject,payload,opts);reply.catch(({cause})=>{if(cause instanceof import_transport_node13.PermissionViolationError&&cause.operation==="publish")handed.add(cause)});return reply};return handed}notLiveMsg(){return this.reconnecting||this.reestablishing?"reconnecting - try again shortly":"endpoint not started"}async publishMsg(subject,msg){if(!this.js)throw new Error(this.notLiveMsg());assertPartsSerializable(msg.parts);try{await this.js.publish(subject,JSON.stringify(msg),{msgID:msg.id})}catch(error51){if(error51 instanceof import_transport_node13.TimeoutError)throw new Error(`${error51.message} publishing to ${JSON.stringify(subject)}. The send outcome is unknown: the broker may have stored the message. Check before resending.`,{cause:error51});throw error51}}async ensureStreams(){if(!this.jsm)throw new Error(this.notLiveMsg());await createSpaceStreams(this.jsm,this.space)}async provisionDmInbox(owner2,actor2,lifecycleUid){await this.ensureDmDurable(owner2,actor2,lifecycleUid,{})}async ensureDmDurable(owner2,actor2,lifecycleUid,opts){const jsm=await this.manager();const stream=dmStream(this.space);const name=dmDurable(owner2,actor2,lifecycleUid);try{await jsm.consumers.info(stream,name);return}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))throw e}const frontier=(await jsm.streams.info(stream)).state.last_seq;try{await jsm.consumers.add(stream,dmDurableConfig(this.space,owner2,actor2,lifecycleUid,{...opts,activationFrontier:frontier}))}catch(e){try{await jsm.consumers.info(stream,name);return}catch(probeError){if(isPermissionDenied(probeError))throw probeError}throw e}}async provisionDlvInbox(owner2,actor2,lifecycleUid){const jsm=await this.manager();await jsm.consumers.add(dlvStream(this.space),dlvDurableConfig(this.space,owner2,actor2,lifecycleUid))}async provisionTaskQueue(role){const jsm=await this.manager();await jsm.consumers.add(taskStream(this.space),taskDurableConfig(this.space,role))}async membersRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.membersKv??=await openMembersRegistry(this.nc,this.space);return this.membersKv}async aclRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.aclKv??=await openAclRegistry(this.nc,this.space);return this.aclKv}async commitAcl(targetId,lifecycleUid,allowSubscribe){await commitAcl(await this.aclRegistry(),targetId,lifecycleUid,allowSubscribe)}async reissueAcl(targetId,lifecycleUid,allowSubscribe){await reissueAcl(await this.aclRegistry(),targetId,lifecycleUid,allowSubscribe)}async aclForOwner(owner2,lifecycleUid){return(await readAcl(await this.aclRegistry(),owner2,lifecycleUid))?.record.allowSubscribe}async aclForAlias(principal){const row=await readAclForAlias(await this.aclRegistry(),principal);if(row===void 0)return void 0;const allow=row.record.allowSubscribe;const issued=row.record.issuedAllowSubscribe??allow;return{allowSubscribe:allow,issuedAllowSubscribe:issued,lifecycleUid:row.lifecycleUid}}async deliveryRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());this.deliveryKv??=await openDeliveryRegistry(this.nc,this.space);return this.deliveryKv}leaseIncarnation=randomUUID3();leaseAcquiredAt=new Map;encodeLease(shardIndex,ready,acquiredAt=this.leaseAcquiredAt.get(shardIndex)){return new TextEncoder().encode(JSON.stringify({holder:this.card.id,incarnation:this.leaseIncarnation,acquiredAt,since:Date.now(),ready}))}ownsDeliveryLease(info){return info.holder===this.card.id&&info.incarnation!==void 0&&info.incarnation===this.leaseIncarnation}async acquireDeliveryLease(shardIndex){const acquiredAt=Date.now();const revision=await(await this.deliveryRegistry()).create(leaseKey(shardIndex),this.encodeLease(shardIndex,false,acquiredAt));this.leaseAcquiredAt.set(shardIndex,acquiredAt);return revision}async markDeliveryLeaseReady(shardIndex,revision){return(await this.deliveryRegistry()).update(leaseKey(shardIndex),this.encodeLease(shardIndex,true),revision)}async markDeliveryLeaseNotReady(shardIndex,revision){return(await this.deliveryRegistry()).update(leaseKey(shardIndex),this.encodeLease(shardIndex,false),revision)}async renewDeliveryLease(shardIndex,revision){return(await this.deliveryRegistry()).update(leaseKey(shardIndex),this.encodeLease(shardIndex,true),revision)}async releaseDeliveryLease(shardIndex,revision){if(revision===void 0)return;await(await this.deliveryRegistry()).delete(leaseKey(shardIndex),{previousSeq:revision})}async readDeliveryLease(shardIndex){return(await this.readDeliveryLeaseEntry(shardIndex))?.info}async watchDeliveryLease(shardIndex,onEvent){this.leaseWatchIntent={shardIndex,onEvent};await this.bindDeliveryLeaseWatch();return()=>{if(this.leaseWatchIntent?.onEvent!==onEvent)return;this.leaseWatchIntent=void 0;this.stopDeliveryLeaseWatch()}}stopDeliveryLeaseWatch(){if(this.leaseWatchIter)this.retireDeliveryLeaseWatch(this.leaseWatchIter);this.leaseWatchIter=void 0}retireDeliveryLeaseWatch(iter){try{iter.stop()}catch{}if(!this.nc||this.nc.isClosed())return;const deleting=this.deleteOwnConsumer(kvWatchConsumer(iter)).catch(e=>this.emitRecoverable(new Error(`a retired delivery lease watch consumer was not deleted (${e.message}); the broker reaps it at its inactive threshold`)));this.leaseWatchDeletes.add(deleting);void deleting.then(()=>this.leaseWatchDeletes.delete(deleting))}async settleDeliveryLeaseWatches(){await Promise.allSettled(this.leaseWatchBinds);await Promise.all(this.leaseWatchDeletes)}retireKvWatch(iter){try{iter.stop()}catch{}if(!this.nc||this.nc.isClosed())return;const deleting=this.deleteOwnConsumer(kvWatchConsumer(iter)).catch(e=>this.emitRecoverable(new Error(`a retired KV watch consumer was not deleted (${e.message}); the broker reaps it at its inactive threshold`)));this.kvWatchDeletes.add(deleting);void deleting.then(()=>this.kvWatchDeletes.delete(deleting))}async settleKvWatches(){await Promise.allSettled(this.kvWatchBinds);await Promise.all(this.kvWatchDeletes)}bindKvWatch(kv){if(this.stopped)return Promise.resolve(void 0);const epoch=this.presenceEpoch;const binding=(async()=>{const permission2=this.nc&&this.watchDeletePermissions.get(this.nc);const iter=await kv.watch();const info=await kvWatchConsumer(iter).info(true);this.recordOwnWatchConsumer(info);if(permission2)this.watchDeletePermissions.set(kvWatchConsumer(iter),permission2);if(epoch===this.presenceEpoch&&!this.stopped)return{iter,info};this.retireKvWatch(iter);return void 0})();const settled=()=>{this.kvWatchBinds.delete(binding)};this.kvWatchBinds.add(binding);void binding.then(settled,settled);return binding}bindDeliveryLeaseWatch(){const binding=this.bindDeliveryLeaseWatchOnce();const settled=()=>{this.leaseWatchBinds.delete(binding)};this.leaseWatchBinds.add(binding);void binding.then(settled,settled);return binding}async bindDeliveryLeaseWatchOnce(){const intent=this.leaseWatchIntent;const epoch=this.presenceEpoch;const iter=await(await this.deliveryRegistry()).watch({key:leaseKey(intent.shardIndex)});if(this.leaseWatchIntent!==intent||epoch!==this.presenceEpoch){this.retireDeliveryLeaseWatch(iter);return}this.leaseWatchIter=iter;void(async()=>{for await(const e of iter){if(this.leaseWatchIter!==iter)break;if(e.operation==="DEL"||e.operation==="PURGE"){intent.onEvent(void 0);continue}try{intent.onEvent(e.json())}catch{intent.onEvent(void 0)}}})().catch(e=>this.emit("error",e))}async deliveryLeaseHolder(shardIndex){try{return(await this.readDeliveryLeaseEntry(shardIndex))?.info.holder}catch{return void 0}}async readDeliveryLeaseEntry(shardIndex){const e=await(await this.deliveryRegistry()).get(leaseKey(shardIndex));if(!e||e.operation==="DEL"||e.operation==="PURGE")return void 0;try{return{info:e.json(),revision:e.revision}}catch(err3){throw new Error(`delivery lease row "${leaseKey(shardIndex)}" exists but does not parse as a lease record (${err3.message}) - it is unreadable, not absent`)}}async managerLeaseRegistry(){if(!this.nc)throw new Error(this.notLiveMsg());if(this.managerLeaseKv)return this.managerLeaseKv;const kvm=new import_kv6.Kvm((0,import_jetstream14.jetstream)(this.nc,{timeout:MANAGER_LEASE_ATTEMPT_MS}));if(this.authed){this.managerLeaseKv=await kvm.open(managerBucket(this.space))}else{try{this.managerLeaseKv=await kvm.create(managerBucket(this.space),{ttl:MANAGER_LEASE_TTL_MS})}catch{this.managerLeaseKv=await kvm.open(managerBucket(this.space))}}return this.managerLeaseKv}async holdDaemonRenewalLease(instanceId){const kv=await this.managerLeaseRegistry();const held=this.daemonRenewalLeaseRevision;if(held!==void 0){try{this.daemonRenewalLeaseRevision=await kv.update(MANAGER_RENEWAL_LEASE_KEY,this.encodeDaemonRenewalLease(instanceId),held);return true}catch{this.daemonRenewalLeaseRevision=void 0}}try{this.daemonRenewalLeaseRevision=await kv.create(MANAGER_RENEWAL_LEASE_KEY,this.encodeDaemonRenewalLease(instanceId));return true}catch{return false}}async releaseDaemonRenewalLease(){const held=this.daemonRenewalLeaseRevision;this.daemonRenewalLeaseRevision=void 0;if(held===void 0)return;try{await(await this.managerLeaseRegistry()).delete(MANAGER_RENEWAL_LEASE_KEY,{previousSeq:held})}catch{}}encodeDaemonRenewalLease(instanceId){return new TextEncoder().encode(JSON.stringify({instanceId,since:Date.now()}))}async readDaemonRenewalLease(){const e=await(await this.managerLeaseRegistry()).get(MANAGER_RENEWAL_LEASE_KEY);if(!e||e.operation!=="PUT")return void 0;return JSON.parse(new TextDecoder().decode(e.value))}encodeManagerLease(info){return new TextEncoder().encode(JSON.stringify(info))}async acquireManagerLease(info){return(await this.managerLeaseRegistry()).create(managerLeaseKey(info.instanceId),this.encodeManagerLease({...info,since:Date.now()}))}async renewManagerLease(info,revision){return(await this.managerLeaseRegistry()).update(managerLeaseKey(info.instanceId),this.encodeManagerLease({...info,since:Date.now()}),revision)}async readOwnManagerLease(instanceId){const e=await(await this.managerLeaseRegistry()).get(managerLeaseKey(instanceId));if(!e||e.operation!=="PUT")return void 0;return{info:JSON.parse(new TextDecoder().decode(e.value)),revision:e.revision,created:e.created.getTime()}}async releaseManagerLease(instanceId,revision){const kv=await this.managerLeaseRegistry();if(revision===void 0)await kv.delete(managerLeaseKey(instanceId));else await kv.delete(managerLeaseKey(instanceId),{previousSeq:revision})}async readManagerLease(){if(!this.nc)return void 0;try{const jsm=this.jsm??(this.jsm=await(0,import_jetstream14.jetstreamManager)(this.nc));const stream=`KV_${managerBucket(this.space)}`;const prefix=`$KV.${managerBucket(this.space)}.${MANAGER_LEASE_KEY}.`;const info=await jsm.streams.info(stream,{subjects_filter:`${prefix}*`});let newest;for(const subject of Object.keys(info.state.subjects??{})){let m;try{m=await jsm.streams.getMessage(stream,{last_by_subj:subject})}catch(e){if(e.code===import_jetstream14.JetStreamApiCodes.NoMessageFound)continue;throw e}if(m===null)continue;const op=m.header?.get("KV-Operation");if(op==="DEL"||op==="PURGE"||m.data.length===0)continue;if(newest===void 0||m.seq>newest.seq)newest={data:m.data,seq:m.seq}}if(newest===void 0)return void 0;return JSON.parse(new TextDecoder().decode(newest.data))}catch(e){const code=e.code;if(code===10037)return void 0;if(code===404||/stream not found/i.test(e?.message??""))return void 0;throw e}}async ownerMemberships(owner2,lifecycleUid){const recs=await listMembers(await this.membersRegistry(),{owner:owner2});return recs.filter(r=>r.lifecycleUid===lifecycleUid&&r.leaveCursor===void 0).map(r=>({channel:r.channel,generation:r.generation,activated:r.activated===true}))}async deliveryClassFresh(channel){if(!this.channelKv)return effectiveDeliveryClass(void 0,void 0);const[cfg,defaults]=await Promise.all([isConcreteChannel(channel)?readChannelConfig(this.channelKv,channel):Promise.resolve(void 0),readChannelDefaults(this.channelKv)]);return effectiveDeliveryClass(cfg,defaults)}resolveOwnerByName(name){const matches=[...this.roster.values()].filter(p=>p.card.name.toLowerCase()===name.toLowerCase());return matches.length===1?matches[0].card.id:void 0}plane3MsgId(entry,keyPrefix){return entry.msg.id===""?{}:{msgID:`${entry.msg.id}:${keyPrefix}`}}async publishDinbox(principal,lifecycleUid,entry){if(!this.js)return;const p=parsePrincipalKey(principal);if(!p)throw new Error(`publishDinbox: "${principal}" is not a valid member principal <owner>.<actor>`);await this.js.publish(dinboxSubject(this.space,p.owner,p.actor,lifecycleUid),JSON.stringify(entry),{...this.plane3MsgId(entry,`${principal}:${lifecycleUid}:${entry.generation}`)})}async fanoutDeliveredSeq(){const info=await this.consumerInfo(chatStream(this.space),FANOUT_DURABLE);return info?.delivered?.stream_seq??0}async durableJoinFor(owner2,channel,lifecycleUid,opts={}){if(!this.js)throw new Error(this.notLiveMsg());await this.manager();const kv=await this.membersRegistry();const existing=await readMember(kv,channel,owner2,lifecycleUid);const open=existing?.record.state==="durable-active"&&existing.record.leaveCursor===void 0;if(open&&existing.record.activated)return{durable:true,generation:existing.record.generation};const joinCursor=open?existing.record.joinCursor:await this.chatFrontier();const generation=open?existing.record.generation:(existing?.record.generation??0)+1;const base={channel,owner:owner2,lifecycleUid,state:"durable-active",joinCursor,generation,activated:false,writerIdentity:this.card.id,updatedAt:Date.now()};if(!open){if(opts.aclFence&&!await this.aclAllows(owner2,lifecycleUid,channel))throw new Error(`durableJoin: "${channel}" is no longer within the read ACL of lifecycle ${lifecycleUid} (narrowed or retired); no membership row was written`);const written=await commitMemberRevision(kv,base);if(opts.aclFence)await this.keepRowIfAclAllows(kv,owner2,lifecycleUid,channel,written.revision)}const fence=Math.max(await this.chatFrontier(),await this.fanoutDeliveredSeq());const cu=await this.catchupCopy(owner2,lifecycleUid,channel,joinCursor,fence,generation);if(cu.evicted){try{await tombstoneMember(kv,channel,owner2,lifecycleUid,fence,this.card.id,generation)}catch(e){if(!(e instanceof StaleMembershipWrite))throw e}return{durable:false,reason:"activation catch-up window partially evicted by retention",generation}}const activated=await activateMember(kv,channel,owner2,lifecycleUid,generation,joinCursor);if(!activated)return{durable:false,reason:"activation superseded by a concurrent leave or rejoin",generation};return{durable:true,generation}}async aclAllows(owner2,lifecycleUid,channel){const row=await readAcl(await this.aclRegistry(),owner2,lifecycleUid);return row!==void 0&&channelInAllow(row.record.allowSubscribe,channel)}async keepRowIfAclAllows(kv,owner2,lifecycleUid,channel,revision){let disallowed=false;let why;try{if(await this.aclAllows(owner2,lifecycleUid,channel))return;disallowed=true;why="was narrowed or retired while the row was written"}catch(e){why=`could not be re-read after the row was written (${e.message})`}const fail2=(outcome,cause)=>new Error(`durableJoin: the read ACL of lifecycle ${lifecycleUid} ${why}; ${outcome}`,cause===void 0?void 0:{cause});try{if(disallowed)await deleteMember(kv,channel,owner2,lifecycleUid);else await kv.purge(memberKey(channel,owner2,lifecycleUid),{previousSeq:revision})}catch(e){if(!disallowed&&isCasLoss(e))throw fail2(`a later write replaced its "${channel}" row, which was left to that write`);throw fail2(`removing its "${channel}" row failed (${e.message})`,e)}throw fail2(`its "${channel}" row was removed`)}async durableLeaveFor(owner2,channel,lifecycleUid,expectedGeneration){if(!this.plane3)return;const kv=await this.membersRegistry();await tombstoneMember(kv,channel,owner2,lifecycleUid,await this.chatFrontier(),this.card.id,expectedGeneration)}async catchupCopy(owner2,lifecycleUid,channel,fromSeqExcl,toSeqIncl,generation){if(!this.js||!this.jsm||toSeqIncl<=fromSeqExcl)return{copied:0,evicted:false};const subject=chatSubject(this.space,"*","*",channel);const evicted=await this.channelDropped(subject,fromSeqExcl);const cuP=parsePrincipalKey(owner2);const name=`cu_${cuP?lifecycleNameKey(cuP.owner,cuP.actor,lifecycleUid):`${token(owner2)}-${lifecycleUid}`}_${generation}`;await this.deleteConsumerIfPresent(chatStream(this.space),name);await this.jsm.consumers.add(chatStream(this.space),{name,filter_subject:subject,ack_policy:import_jetstream14.AckPolicy.None,mem_storage:true,inactive_threshold:(0,import_transport_node13.nanos)(3e4),deliver_policy:import_jetstream14.DeliverPolicy.StartSequence,opt_start_seq:fromSeqExcl+1});let copied=0;try{const consumer=await this.js.consumers.get(chatStream(this.space),name);let pending=(await consumer.info()).num_pending;while(pending>0){const want=Math.min(pending,256);const iter=await consumer.fetch({max_messages:want,expires:5e3});let got=0;for await(const m of iter){got++;if(m.seq>toSeqIncl)return{copied,evicted};let msg;try{msg=m.json()}catch{continue}const parsed=parseSubject(m.subject);if(!parsed||!isFromSubjectSender(msg,parsed)||msg.from.id===owner2)continue;await this.publishDinbox(owner2,lifecycleUid,{msg,channel,seq:m.seq,reason:"durable-channel",generation});copied++}if(got<want)break;pending-=got}}finally{await this.deleteConsumerIfPresent(chatStream(this.space),name)}return{copied,evicted}}async startPlane3(aclFor,opts={}){if(!this.js)throw new Error(this.notLiveMsg());this.plane3={aclFor,reloadMembershipCreds:opts.reloadMembershipCreds,evictPrincipal:opts.evictPrincipal,evictPrincipals:opts.evictPrincipals,planeConnLiveness:opts.planeConnLiveness,principalLiveness:opts.principalLiveness,reloadStoreIdentity:opts.reloadStoreIdentity,onDeliveryCredsAdopted:opts.onDeliveryCredsAdopted,startupComplete:opts.startupComplete};await this.armPlane3()}plane3MayAct(){return!this.plane3Quiesced}async handleDeliveryControl(req){if(!this.plane3MayAct())return{ok:false,error:"delivery: this daemon is not serving this shard (it is re-checking ownership); retry"};const caller=req.from.id;const args=req.args??{};if(req.op==="durableJoin")return this.deliveryJoin(caller,args);if(req.op==="durableLeave")return this.deliveryLeave(caller,args);if(req.op==="readHistory")return this.deliveryReadHistory(caller,args);if(req.op==="listMemberships"){if(typeof args.lifecycleUid!=="string")return{ok:false,error:"listMemberships: the caller's lifecycleUid is required (membership rows are lifecycle-keyed, SPEC 13.1)"};let uid2;try{uid2=assertLifecycleToken(args.lifecycleUid)}catch(e){return{ok:false,error:e.message}}const memberships=await this.ownerMemberships(caller,uid2);if(!this.plane3MayAct())return{ok:false,error:"delivery: this daemon stopped serving this shard while the request was in flight; retry"};return{ok:true,data:{memberships}}}return{ok:false,error:`op "${req.op}" not supported on the delivery control service`}}checkDurableChannelArg(args,op){const channel=typeof args.channel==="string"?args.channel.trim():"";if(!channel)return{ok:false,error:`${op}: channel must be a non-blank string`};try{assertValidChannel(channel)}catch(e){return{ok:false,error:e.message}}if(!isConcreteChannel(channel))return{ok:false,error:`${op}: "${channel}" must be a concrete channel (durable membership is per-concrete-channel, not wildcard)`};return channel}async deliveryJoin(caller,args){const channel=this.checkDurableChannelArg(args,"durableJoin");if(typeof channel!=="string")return channel;let acl;try{acl=await this.aclForAlias(caller)}catch(e){return{ok:false,error:e.message}}if(acl===void 0)return{ok:false,error:`durableJoin: no read ACL on record for ${caller} (not provisioned for durable delivery)`};if(!channelInAllow(acl.allowSubscribe,channel))return{ok:false,error:`channel "${channel}" is not within your read ACL [${acl.allowSubscribe.join(", ")}]`};const uid2=acl.lifecycleUid;try{return{ok:true,data:await this.membershipWrite(caller,uid2,()=>this.durableJoinFor(caller,channel,uid2,{aclFence:true}))}}catch(e){return{ok:false,error:e.message}}}async lifecycleAclUnfenced(principal,lifecycleUid){try{const row=await readAcl(await this.aclRegistry(),principal,lifecycleUid);return row!==void 0&&row.record.allowSubscribe.length>0}catch{return true}}async membershipWrite(principal,lifecycleUid,write){if(this.retiringLifecycles.get(principal)?.has(lifecycleUid))throw new Error(`lifecycle ${lifecycleUid} of ${principal} is retiring: its membership inventory was requested, so its durable memberships no longer change`);const key=`${principal}/${lifecycleUid}`;const running=write();let writes=this.membershipWrites.get(key);if(writes===void 0)this.membershipWrites.set(key,writes=new Set);writes.add(running);try{return await running}finally{writes.delete(running);if(writes.size===0)this.membershipWrites.delete(key)}}async deliveryLeave(caller,args){const channel=this.checkDurableChannelArg(args,"durableLeave");if(typeof channel!=="string")return channel;if(typeof args.generation!=="number"||!Number.isFinite(args.generation))return{ok:false,error:"durableLeave: a finite generation is required (fail-closed stale-leave guard)"};if(typeof args.lifecycleUid!=="string")return{ok:false,error:"durableLeave: the leaving incarnation's lifecycleUid is required (membership rows are lifecycle-keyed, SPEC 13.1)"};let uid2;try{uid2=assertLifecycleToken(args.lifecycleUid)}catch(e){return{ok:false,error:e.message}}const existing=await readMember(await this.membersRegistry(),channel,caller,uid2);if(!existing)return{ok:true,data:{channel,alreadyLeft:true}};const generation=args.generation;try{await this.membershipWrite(caller,uid2,()=>this.durableLeaveFor(caller,channel,uid2,generation))}catch(e){return{ok:false,error:e.message}}return{ok:true,data:{channel}}}async deliveryReadHistory(caller,args){const channel=this.checkDurableChannelArg(args,"readHistory");if(typeof channel!=="string")return channel;const asked=args.limit===void 0?READ_HISTORY_DEFAULT_LIMIT:args.limit;if(typeof asked!=="number"||!Number.isInteger(asked)||asked<1)return{ok:false,error:`readHistory: limit must be a positive integer (got ${JSON.stringify(args.limit)})`};const limit=Math.min(asked,READ_HISTORY_MAX_LIMIT);let acl;try{acl=await this.aclForAlias(caller)}catch(e){return{ok:false,error:e.message}}if(acl===void 0)return{ok:false,error:`readHistory: no read ACL on record for ${caller} - not permitted`};const inLive=channelInAllow(acl.allowSubscribe,channel);const inIssued=channelInAllow(acl.issuedAllowSubscribe,channel);if(!inLive||!inIssued){return{ok:false,error:`readHistory: channel "${channel}" is not within your read ACL [${acl.allowSubscribe.join(", ")}] - refused`}}let page;try{page=await this.channelHistory(channel,{limit:limit+1})}catch(e){return{ok:false,error:`readHistory: ${e.message}`}}const reachedStart=page.length<=limit;const wanted=reachedStart?page:page.slice(-limit);const fitted=fitHistoryPage(wanted,this.maxPayload);if(wanted.length>0&&fitted.length===0)return{ok:false,error:`readHistory: the newest message on "${channel}" alone exceeds the broker payload budget (${this.maxPayload} bytes) - refused loudly rather than served as an empty page`};return{ok:true,data:{items:fitted,complete:reachedStart&&fitted.length===wanted.length}}}async quiescePlane3(){this.plane3Quiesced=true;if(this.deliveryServeSub){try{this.deliveryServeSub.unsubscribe()}catch{}this.deliveryServeSub=void 0}if(this.deliveryAdminServeSub){try{this.deliveryAdminServeSub.unsubscribe()}catch{}this.deliveryAdminServeSub=void 0}for(const msgs of this.streamMsgs.splice(0)){try{msgs.stop()}catch{}}}plane3IsQuiesced(){return this.plane3Quiesced}async rearmPlane3(){if(!this.plane3Quiesced)return;this.plane3Quiesced=false;try{await this.armPlane3()}catch(e){this.plane3Quiesced=true;this.quiescePlane3();throw e}}async armPlane3(){if(!this.plane3||!this.js)return;if(this.plane3Quiesced)return;await this.manager();this.armDeliveryControl();await this.runFanout();await this.runReader()}armDeliveryControl(){if(this.deliveryServeSub){try{this.deliveryServeSub.unsubscribe()}catch{}const i=this.subs.indexOf(this.deliveryServeSub);if(i>=0)this.subs.splice(i,1)}this.deliveryServeSub=this.serveControl(CONTROL_DELIVERY,req=>this.handleDeliveryControl(req),{boundReply:true});if(this.deliveryAdminServeSub){try{this.deliveryAdminServeSub.unsubscribe()}catch{}const i=this.subs.indexOf(this.deliveryAdminServeSub);if(i>=0)this.subs.splice(i,1)}this.deliveryAdminServeSub=this.serveControl(CONTROL_DELIVERY_ADMIN,req=>this.handleDeliveryAdmin(req),{boundReply:true,concurrent:req=>req.op==="lifecycleMemberships"})}serveLiveness(plane,readState){if(!this.nc)throw new Error(this.notLiveMsg());const held=this.livenessResponders.get(plane);if(held)held.readState=readState;else this.livenessResponders.set(plane,{readState});this.bindLiveness(plane)}bindLiveness(plane){const held=this.livenessResponders.get(plane);if(!held||!this.nc)return;if(held.sub){try{held.sub.unsubscribe()}catch{}const i=this.subs.indexOf(held.sub);if(i>=0)this.subs.splice(i,1)}const{readState}=held;const sub=this.nc.subscribe(livenessServeFilter(this.space,plane),{queue:`live.${plane}`});held.sub=sub;this.subs.push(sub);const instance=randomUUID3();void(async()=>{for await(const m of sub){if(!m.reply||!m.reply.startsWith(`${m.subject}.reply.`)){this.emitRecoverable(new Error(`rejected liveness probe on ${m.subject}: reply target "${m.reply??"(none)"}" is not under the sender's own reply subtree`));continue}let responder;try{responder=await readState()}catch{responder="unknown"}const answer={plane,responder,instance};try{m.respond(JSON.stringify(answer))}catch{}}})().catch(e=>this.emit("error",e))}serveDeliveryLiveness(shardIndex=0){this.serveLiveness("delivery",async()=>responderFromLease(await this.readDeliveryLease(shardIndex),this.card.id))}async probeLiveness(plane,timeoutMs=2e3){if(!isLivenessPlane(plane))throw new Error(`liveness: "${plane}" is not a plane this surface answers for (${[...LIVENESS_PLANES].join(", ")})`);if(!this.nc)throw new Error(this.notLiveMsg());const reqSubject=livenessSubject(this.space,plane,this.owner,this.actor);const reply=`${reqSubject}.reply.${randomUUID3()}`;let outcome;let answered;let instance;try{const m=await this.nc.request(reqSubject,"",{timeout:timeoutMs,noMux:true,reply});let body;try{body=m.json()}catch{body=void 0}const parsed=parseLivenessAnswer(body,plane);outcome=parsed?"replied":"malformed";answered=parsed?.responder;instance=parsed?.instance}catch(e){outcome=this.isNoResponders(e)?"noResponders":this.probeFailureOutcome(e)}const verdict={plane,responder:responderFromProbe(outcome,answered)};return instance===void 0?verdict:{...verdict,instance}}probeFailureOutcome(e){if(e instanceof import_transport_node13.AuthorizationError||e instanceof import_transport_node13.PermissionViolationError)return"refused";if(e instanceof import_transport_node13.TimeoutError)return"timeout";return"refused"}async handleDeliveryAdmin(req){await this.residentSwap;if(!this.plane3MayAct())return{ok:false,error:"delivery: this daemon is not serving this shard (it is re-checking ownership); retry"};if(req.op==="reloadCreds"){if(this.plane3?.startupComplete?.()===false)return{ok:false,error:"delivery: this daemon has not finished starting; nothing adopted - the next renewal pass or the daemon's 75% re-read adopts the re-signed creds"};const expected=req.args?.expected??{};const[delivery,membership]=await Promise.all([this.reloadCreds(expected.delivery).then(brokerAccepted=>({ok:true,brokerAccepted,residentSwap:"scheduled"}),e=>({ok:false,error:e.message})),this.plane3?.reloadMembershipCreds?this.plane3.reloadMembershipCreds(expected.membership).then(result=>({ok:true,...result}),e=>({ok:false,error:e.message})):Promise.resolve({ok:true,skipped:"no-membership-hook"})]);const failures=[delivery.ok?void 0:`delivery: ${delivery.error}`,membership.ok?void 0:`membership: ${membership.error}`].filter(m=>m!==void 0);if(delivery.ok){this.plane3?.onDeliveryCredsAdopted?.();this.scheduleResidentSwap()}return failures.length?{ok:false,error:failures.join("; "),data:{delivery,membership}}:{ok:true,data:{delivery,membership}}}if(req.op==="evictPrincipal"){if(!this.plane3?.evictPrincipal)return{ok:false,error:"evictPrincipal: no eviction executor wired on this daemon"};const principal=typeof req.args?.principal==="string"?req.args.principal.trim():"";if(!principal)return{ok:false,error:"evictPrincipal: a principal (owner.actor dot-form) is required"};try{return{ok:true,data:await this.plane3.evictPrincipal(principal)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="evictPrincipals"){if(!this.plane3?.evictPrincipals)return{ok:false,error:"evictPrincipals: no batch eviction executor wired on this daemon"};const raw=req.args?.principals;const principals=Array.isArray(raw)?raw.map(p=>typeof p==="string"?p.trim():""):[];if(principals.length===0||principals.some(p=>!p))return{ok:false,error:"evictPrincipals: principals must be a non-empty array of owner.actor dot-form principals"};if(principals.length>EVICT_PRINCIPALS_MAX||new Set(principals).size!==principals.length)return{ok:false,error:`evictPrincipals: principals must be distinct and at most ${EVICT_PRINCIPALS_MAX}`};try{return{ok:true,data:await this.plane3.evictPrincipals(principals)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="planeConnLiveness"){if(!this.plane3?.planeConnLiveness)return{ok:false,error:"planeConnLiveness: no plane-liveness oracle wired on this daemon"};try{return{ok:true,data:await this.plane3.planeConnLiveness(req.args?.query)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="lifecycleMemberships"){const principal=typeof req.args?.principal==="string"?req.args.principal.trim():"";const uid2=typeof req.args?.lifecycleUid==="string"?req.args.lifecycleUid:"";if(!parsePrincipalKey(principal))return{ok:false,error:"lifecycleMemberships: a principal (owner.actor dot-form) is required"};try{assertLifecycleToken(uid2)}catch(e){return{ok:false,error:`lifecycleMemberships: ${e.message}`}}let marked=this.retiringLifecycles.get(principal);if(marked===void 0)this.retiringLifecycles.set(principal,marked=new Set);for(const earlier of[...marked])if(earlier!==uid2&&await aclRetired(await this.aclRegistry(),principal,earlier).catch(()=>false))marked.delete(earlier);if(await this.lifecycleAclUnfenced(principal,uid2))marked.add(uid2);else if(marked.size===0)this.retiringLifecycles.delete(principal);await Promise.allSettled(this.membershipWrites.get(`${principal}/${uid2}`)??[]);try{const channels=await listLifecycleMemberChannels(await this.membersRegistry(),principal,uid2);return{ok:true,data:{complete:true,channels}}}catch(e){return{ok:false,error:`lifecycleMemberships: the inventory read did not complete (${e.message})`}}}if(req.op==="principalLiveness"){if(!this.plane3?.principalLiveness)return{ok:false,error:"principalLiveness: no liveness oracle wired on this daemon"};const principal=typeof req.args?.principal==="string"?req.args.principal.trim():"";if(!principal)return{ok:false,error:"principalLiveness: a principal (owner.actor dot-form) is required"};try{return{ok:true,data:await this.plane3.principalLiveness(principal)}}catch(e){return{ok:false,error:e.message}}}if(req.op==="reloadStoreIdentity"){if(!this.plane3?.reloadStoreIdentity)return{ok:false,error:"reloadStoreIdentity: this daemon did not name the SecretStore it reloads from"};try{const identity=this.plane3.reloadStoreIdentity();let holdsDeliveryLease=false;try{const own=await this.readDeliveryLeaseEntry(0);holdsDeliveryLease=own!==void 0&&this.ownsDeliveryLease(own.info)}catch{holdsDeliveryLease=false}return{ok:true,data:{identity:parseSecretStoreIdentity(identity),responder:this.card.id,holdsDeliveryLease}}}catch(e){return{ok:false,error:e.message}}}return{ok:false,error:`op "${req.op}" not supported on the delivery admin service`}}async addPlane3Durable(stream,config2){try{await this.jsm.consumers.add(stream,config2)}catch(e){if(!isConsumerAlreadyExists(e)||!isRestoredConsumer(this.space,stream,await this.jsm.consumers.info(stream,config2.durable_name),config2))throw e}}async runFanout(){if(!this.js||!this.jsm)return;await this.addPlane3Durable(chatStream(this.space),fanoutDurableConfig(this.space,{ackWaitMs:this.ackWaitMs}));const consumer=await this.js.consumers.get(chatStream(this.space),FANOUT_DURABLE);const msgs=await consumer.consume();this.streamMsgs.push(msgs);void(async()=>{for await(const m of msgs){try{await this.fanOutMessage(m)}catch(e){if(!this.stopped)this.emit("error",e);try{m.nak()}catch{}}}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}async fanOutMessage(m){if(!this.plane3MayAct())return;const parsed=parseSubject(m.subject);if(!parsed||parsed.kind!=="chat"){m.ack();return}const channel=parsed.rest;let msg;try{msg=m.json()}catch{m.ack();return}if(!isFromSubjectSender(msg,parsed)){m.ack();return}const seq=m.seq;const normalizedMsg=authenticatedChannelMessage(msg,channel);if(!this.plane3MayAct())return;if(await this.deliveryClassFresh(channel)==="durable"){for(const rec of await listMembers(await this.membersRegistry(),{channel})){if(rec.owner===msg.from.id)continue;if(!durableEligible(rec,seq))continue;if(!this.plane3MayAct())return;await this.publishDinbox(rec.owner,rec.lifecycleUid,{msg:normalizedMsg,channel,seq,reason:"durable-channel",generation:rec.generation})}}else{for(const name of msg.mentions??[]){const owner2=this.resolveOwnerByName(name);if(!owner2||owner2===msg.from.id)continue;let row;try{row=await this.aclForAlias(owner2)}catch(e){this.emit("error",e);continue}if(!row||!channelInAllow(row.allowSubscribe,channel))continue;if(!this.plane3MayAct())return;await this.publishDinbox(owner2,row.lifecycleUid,{msg:normalizedMsg,channel,seq,reason:"live-mention",generation:0})}}if(!this.plane3MayAct())return;m.ack()}async runReader(){if(!this.js||!this.jsm)return;await this.addPlane3Durable(inboxStream(this.space),inboxReaderConfig(this.space,{ackWaitMs:this.ackWaitMs}));const consumer=await this.js.consumers.get(inboxStream(this.space),INBOX_READER_DURABLE);const msgs=await consumer.consume();this.streamMsgs.push(msgs);void(async()=>{for await(const m of msgs){try{await this.readerHandle(m)}catch(e){if(!this.stopped)this.emit("error",e);try{m.nak()}catch{}}}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}async removeRetiredMemberRow(channel,owner2,lifecycleUid){try{const kv=await this.membersRegistry();if(await readMember(kv,channel,owner2,lifecycleUid)===void 0)return;await deleteMember(kv,channel,owner2,lifecycleUid)}catch(e){this.emit("warning",new Error(`plane-3 reader: could not remove retired lifecycle ${owner2}.${lifecycleUid}'s "${channel}" member row: ${e.message}`))}}async readerHandle(m){if(!this.plane3MayAct())return;const pr=parseDinboxPrincipal(m.subject);if(!pr){m.ack();return}const owner2=`${pr.owner}.${pr.actor}`;let entry;try{entry=m.json()}catch{m.ack();return}if(!isRecord(entry)){m.ack();return}const redeliveries=m.info?.deliveryCount??1;const acl=await this.plane3?.aclFor(owner2,pr.lifecycleUid);if(acl===void 0){if(await aclRetired(await this.aclRegistry(),owner2,pr.lifecycleUid)){if(!this.plane3MayAct())return;let failure;try{await this.jsm.streams.deleteMessage(inboxStream(this.space),m.seq,false)}catch(e){if(!isJetStreamMissing(e,10043))failure=e instanceof Error?e:new Error(String(e))}if(!this.plane3MayAct())return;if(failure){if(redeliveries>=READER_MAX_REDELIVERIES){m.term();this.emit("error",new Error(`plane-3 reader: gave up removing entry ${m.seq} for retired lifecycle ${owner2}.${pr.lifecycleUid} after ${redeliveries} redeliveries: ${failure.message}`));return}m.nak(2e3);return}if(entry.reason==="durable-channel")await this.removeRetiredMemberRow(entry.channel,owner2,pr.lifecycleUid);if(!this.plane3MayAct())return;m.ack();return}if(redeliveries>=READER_MAX_REDELIVERIES){m.term();this.emit("error",new Error(`plane-3 reader: gave up on entry for unknown owner ${owner2} after ${redeliveries} redeliveries`));return}m.nak(2e3);return}if(!channelInAllow(acl,entry.channel)){m.ack();return}if(entry.reason==="durable-channel"){const rec=await readMember(await this.membersRegistry(),entry.channel,owner2,pr.lifecycleUid);if(!rec||!durableEligible(rec.record,entry.seq)){m.ack();return}}if(!this.plane3MayAct())return;try{const frame={version:1,channel:entry.channel,msg:authenticatedChannelMessage(entry.msg,entry.channel)};const frameHeaders=(0,import_transport_node13.headers)();frameHeaders.set(PLANE3_FRAME_HEADER,"1");await this.js.publish(dlvSubject(this.space,pr.owner,pr.actor,pr.lifecycleUid),JSON.stringify(frame),{...this.plane3MsgId(entry,`${owner2}:${pr.lifecycleUid}:${entry.generation}`),headers:frameHeaders})}catch{if(redeliveries>=READER_MAX_REDELIVERIES){m.term();this.emit("error",new Error(`plane-3 reader: gave up transferring ${entry.msg.id} for ${owner2} after ${redeliveries} redeliveries`));return}m.nak(2e3);return}if(!this.plane3MayAct())return;m.ack()}async pumpDlv(){if(!this.js)return;if(!this.ownLifecycleUid)return;const durable=dlvDurable(this.owner,this.actor,this.ownLifecycleUid);let consumer;try{consumer=await this.js.consumers.get(dlvStream(this.space),durable)}catch(e){if(isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))return;throw e}const lease=await this.readDeliveryLease(0);const liveDeliveryPlane=lease?.ready===true;if(!liveDeliveryPlane)this.emit("warning",new Error(`delivery durable "${durable}" for space "${this.space}" bound while the plane this connection reaches has no ready delivery lease, so the durable delivers nothing until a delivery daemon serves this plane. If a daemon serves this space on another plane, reconnect against it, which re-binds the durable there.`));const ackWaitMs=await ackWaitOf(consumer);const msgs=await consumer.consume();this.streamMsgs.push(msgs);void(async()=>{for await(const m of msgs){if(m.headers?.get(PLANE3_FRAME_HEADER)!=="1"){this.emit("error",new Error("plane-3 delivery: unauthenticated or unversioned DLV entry terminated"));try{m.term()}catch{}continue}let raw;try{raw=m.json()}catch(e){this.emit("error",e);try{m.term()}catch{}continue}if(!isPlane3DeliveryFrame(raw)){this.emit("error",new Error("plane-3 delivery: malformed versioned DLV entry terminated"));try{m.term()}catch{}continue}const msg=authenticatedChannelMessage(raw.msg,raw.channel);if(msg.from?.id===this.card.id){m.ack();continue}this.emit("message",msg,durableDelivery(m,ackWaitMs),{historical:false,kind:"channel"})}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}async durableJoinChannel(channel){const reply=await this.requestDelivery("durableJoin",{channel},3e4);if(!reply.ok)throw new Error(reply.error??"durable join rejected");return reply.data??{durable:false}}async durableLeaveChannel(channel,generation){const lifecycleUid=this.requireLifecycleUid("leaving a durable channel");const reply=await this.requestDelivery("durableLeave",{channel,generation,lifecycleUid});if(!reply.ok)throw new Error(reply.error??"durable leave rejected")}async closeRefusedMembership(channel,generation){this.pendingDurableLeave.set(channel,generation);for(let attempt=0;;attempt++){if(this.stopped)return;try{await this.durableLeaveChannel(channel,generation);this.plane3Channels.delete(channel);this.pendingDurableLeave.delete(channel);return}catch(e){if(attempt===0)this.emitRecoverable(new Error(`channel "${channel}": Plane-3 durable membership (generation ${generation}) not yet tombstoned after a refused live sub - retrying; \xA77 boundary may be open until it succeeds (${e.message})`));await new Promise(r=>setTimeout(r,Math.min(3e4,1e3*2**attempt)))}}}pendingDurableLeaves(){return[...this.pendingDurableLeave.keys()]}isNoResponders(e){return e instanceof import_transport_node13.NoRespondersError||e instanceof import_transport_node13.RequestError&&e.isNoResponders()}async fetchMemberships(){let reply;try{reply=await this.requestDelivery("listMemberships",{lifecycleUid:this.requireLifecycleUid("listing durable memberships")},5e3)}catch(e){if(this.isNoResponders(e))return void 0;throw e}if(!reply.ok)throw new Error(reply.error??"listMemberships failed");return reply.data?.memberships??[]}async armBootDurableMemberships(){for(const channel of this.channels){if(!isConcreteChannel(channel)||this.plane3Channels.has(channel))continue;const cls=await this.deliveryClassFresh(channel);if(cls!=="durable")continue;try{const r=await this.durableJoinChannel(channel);if(r.durable)this.plane3Channels.set(channel,r.generation??0);else void this.reconcileBootJoin(channel)}catch(e){if(!this.isNoResponders(e))this.emitRecoverable(e);void this.reconcileBootJoin(channel)}}}async reconcileBootJoin(channel){if(this.pendingBootJoins.has(channel))return;this.pendingBootJoins.add(channel);for(let attempt=0;;attempt++){await new Promise(r=>setTimeout(r,Math.min(3e4,1e3*2**attempt)));if(this.stopped||!this.channels.includes(channel)||this.plane3Channels.has(channel)){this.pendingBootJoins.delete(channel);return}try{const r=await this.durableJoinChannel(channel);if(r.durable){this.plane3Channels.set(channel,r.generation??0);this.pendingBootJoins.delete(channel);return}}catch(e){if(attempt===0&&!this.isNoResponders(e))this.emitRecoverable(new Error(`channel "${channel}": boot durable self-join not yet established - retrying until the delivery daemon is reachable (${e.message})`))}}}hasDurableMembership(channel){return this.plane3Channels.has(channel)}async manager(){if(!this.nc)throw new Error(this.notLiveMsg());this.jsm??=await(0,import_jetstream14.jetstreamManager)(this.nc);return this.jsm}async startConsumers(){if(!this.jsm)throw new Error(this.notLiveMsg());const ownUid=this.requireLifecycleUid("consuming the DM inbox");if(!this.authed){await this.ensureDmDurable(this.owner,this.actor,ownUid,{ackWaitMs:this.ackWaitMs,inactiveThresholdMs:this.inactiveThresholdMs})}await this.pump(dmStream(this.space),dmDurable(this.owner,this.actor,ownUid),{inbox:true});await this.pumpDlv();if(this.channels.length){const armed2=this.firstConnect?await this.armJoin(this.channels):void 0;for(const ch of this.channels)this.subscribeChat(ch);await this.confirmChatSub();if(armed2)await this.backfillArmed(armed2,this.backfillFloor)}if(this.firstConnect&&this.authed&&this.channels.length)await this.armBootDurableMemberships();this.firstConnect=false;if(this.card.role){if(!this.authed){await this.jsm.consumers.add(taskStream(this.space),taskDurableConfig(this.space,this.card.role,{ackWaitMs:this.ackWaitMs}))}await this.pump(taskStream(this.space),taskDurable(this.card.role))}}async pump(stream,durable,opts={}){if(!this.js)throw new Error(this.notLiveMsg());const consumer=await this.js.consumers.get(stream,durable);const ackWaitMs=await ackWaitOf(consumer);const msgs=await consumer.consume();this.streamMsgs.push(msgs);if(opts.inbox)this.watchInbox(msgs,stream,durable);void(async()=>{for await(const m of msgs){const authed=this.authenticateStreamMsg(m);if(!authed)continue;const{msg,parsed}=authed;this.emit("message",authenticatedMessage(msg,parsed),durableDelivery(m,ackWaitMs),{historical:false,kind:kindFromParsed(parsed.kind)})}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}watchInbox(msgs,stream,durable){const boundNc=this.nc;void(async()=>{let absences=0;let deleted=false;for await(const s of msgs.status()){if(this.stopped||this.nc!==boundNc)break;if(s.type==="next"){absences=0;deleted=false;continue}if(s.type==="consumer_deleted"){if(deleted)continue;deleted=true}else if(s.type!=="consumer_not_found"&&s.type!=="stream_not_found")continue;if(++absences===2)this.emitRecoverable(new Error(`DM inbox missing: the broker reports consumer "${durable}" on stream "${stream}" missing, so direct messages to this endpoint are not delivered. The endpoint keeps checking; if the inbox does not come back, end this session and start a new one`))}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}authenticateStreamMsg(m){let msg;try{msg=m.json()}catch(e){m.term();this.emit("error",e);return void 0}if(!isRecord(msg)||!isUsableMessageId(msg.id)){m.term();this.emit("error",new Error(`dropped message on ${m.subject}: absent or non-string id`));return void 0}const parsed=parseSubject(m.subject);if(!parsed||!isFromSubjectSender(msg,parsed)){m.term();this.emit("error",new Error(`dropped message on ${m.subject}: payload from ${msg.from?.id??"(none)"} does not match subject sender ${parsed?.sender??"(unparseable)"}`));return void 0}return{msg,parsed}}async bindDmOnly(mode){if(!this.js)throw new Error(this.notLiveMsg());const stream=dmStream(this.space);const durable=dmDurable(this.owner,this.actor,this.requireLifecycleUid("consuming the DM inbox"));let consumer;try{consumer=await this.js.consumers.get(stream,durable)}catch(e){if(isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))throw new DmDurableMissingError(stream,durable);throw new DmBindRefusedError(stream,durable,e)}const ackWaitMs=await ackWaitOf(consumer);if(this.dmOnlyInFlight){const settleMs=mode.settleTimeoutMs??3e4;await withDeadline(this.dmOnlyInFlight,settleMs,()=>new Error(`DM-only rebind waited ${settleMs}ms for the previous handler to settle; not reading the next DM yet`))}const msgs=await consumer.consume({max_messages:1});this.streamMsgs.push(msgs);const boundNc=this.nc;const retired=()=>this.stopped||this.nc!==boundNc||!boundNc||boundNc.isClosed();void(async()=>{for await(const m of msgs){if(retired())break;const authed=this.authenticateStreamMsg(m);if(!authed)continue;if(authed.parsed.kind!=="inst"){m.term();continue}const run=Promise.resolve().then(()=>mode.handler(authenticatedMessage(authed.msg,authed.parsed),dmOnlyDelivery(m,ackWaitMs,boundNc),{historical:false,kind:"dm"}));const flight=run.then(()=>{},()=>{});this.dmOnlyInFlight=flight;try{await run}catch(e){this.emit("error",e instanceof Error?e:new Error(String(e)))}finally{if(this.dmOnlyInFlight===flight)this.dmOnlyInFlight=void 0}}})().catch(e=>{if(!this.stopped)this.emit("error",e)})}subscribeChat(channel){if(!this.nc||this.chatSubs.has(channel))return;this.chatSubDenied.delete(channel);const subject=chatSubject(this.space,"*","*",channel);const sub=this.nc.subscribe(subject,{callback:(err3,m)=>{if(err3){if(err3 instanceof import_transport_node13.PermissionViolationError)this.chatSubRefusals.add(err3);this.chatSubDenied.add(channel);this.chatSubs.delete(channel);const i=this.channels.indexOf(channel);if(i>=0){this.channels.splice(i,1);const gen=this.plane3Channels.get(channel);if(gen!==void 0)void this.closeRefusedMembership(channel,gen);this.emit("error",new Error(`left channel "${channel}": its live subscription was refused by the broker`,{cause:err3}))}return}const parsed=parseSubject(m.subject);if(!parsed||parsed.kind!=="chat")return;let msg;try{msg=m.json()}catch(e){this.emit("error",e);return}if(!isRecord(msg)||!isUsableMessageId(msg.id))return;if(!isFromSubjectSender(msg,parsed))return;if(msg.from.id===this.card.id)return;const delivery={ack:()=>{},nak:()=>{},durable:false};this.emit("message",authenticatedMessage(msg,parsed),delivery,{historical:false,kind:kindFromParsed(parsed.kind)})}});this.chatSubs.set(channel,sub)}unsubscribeChat(channel){const sub=this.chatSubs.get(channel);if(sub){try{sub.unsubscribe()}catch{}this.chatSubs.delete(channel)}this.chatSubDenied.delete(channel)}async confirmChatSub(){if(!this.nc)throw new Error("connection not established");await this.nc.flush();await new Promise(r=>setTimeout(r,50))}async consumerInfo(stream,durable){if(!this.jsm)throw new Error(this.notLiveMsg());try{return await this.jsm.consumers.info(stream,durable)}catch(e){if(isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound))return null;throw e}}async deleteConsumerIfPresent(stream,durable){if(!this.jsm)throw new Error(this.notLiveMsg());try{await this.jsm.consumers.delete(stream,durable)}catch(e){if(!isJetStreamMissing(e,import_jetstream14.JetStreamApiCodes.ConsumerNotFound,import_jetstream14.JetStreamApiCodes.StreamNotFound))throw e}}async chatFrontier(){const jsm=await this.manager();return(await jsm.streams.info(chatStream(this.space))).state.last_seq}async storedBytes(){return(await(await this.manager()).getAccountInfo()).storage}async armJoin(channels){const frontiers=new Map;for(const ch of channels){frontiers.set(ch,await this.chatFrontier())}return frontiers}async backfillArmed(frontiers,floorSeq){let total=0;for(const[ch,frontier]of frontiers){const policy=await this.joinPolicyFresh(ch);if(policy.replay)total+=await this.backfillChannel(ch,frontier,policy.windowMs,floorSeq)}return total}async joinPolicyFresh(channel){if(!this.channelKv)return{replay:effectiveReplay(void 0,void 0)};const[cfg,defaults]=await Promise.all([isConcreteChannel(channel)?readChannelConfig(this.channelKv,channel):Promise.resolve(void 0),readChannelDefaults(this.channelKv)]);return{replay:effectiveReplay(cfg,defaults),windowMs:effectiveReplayWindowMs(cfg,defaults)}}async collectHistory(subject,start,opts={}){const run=this.histLock.then(()=>this.collectHistoryInner(subject,start,opts));this.histLock=run.catch(()=>{});return run}async collectHistoryInner(subject,start,opts={}){if(!this.jsm||!this.js)throw new Error(this.notLiveMsg());const stream=chatStream(this.space);const name=chatHistDurable(this.owner,this.actor,this.requireLifecycleUid("chat history reads"));const out=[];await this.deleteConsumerIfPresent(stream,name);await this.jsm.consumers.add(stream,{name,filter_subject:subject,ack_policy:import_jetstream14.AckPolicy.None,mem_storage:true,inactive_threshold:(0,import_transport_node13.nanos)(3e4),..."time"in start?{deliver_policy:import_jetstream14.DeliverPolicy.StartTime,opt_start_time:start.time.toISOString()}:{deliver_policy:import_jetstream14.DeliverPolicy.StartSequence,opt_start_seq:start.seq}});try{const consumer=await this.js.consumers.get(stream,name);let pending=(await consumer.info()).num_pending;while(pending>0){const want=Math.min(pending,256);const iter=await consumer.fetch({max_messages:want,expires:5e3});let got=0;for await(const m of iter){got++;if(opts.untilSeq!==void 0&&m.seq>opts.untilSeq)return out;if(!subjectMatches(subject,m.subject))continue;out.push(m);if(opts.limit!==void 0&&out.length>=opts.limit)return out}if(got<want)break;pending-=got}}finally{await this.deleteConsumerIfPresent(stream,name)}return out}async backfillChannel(channel,upToSeq,sinceMs,floorSeq){if(floorSeq!==void 0&&floorSeq>=upToSeq)return 0;const subject=chatSubject(this.space,"*","*",channel);const start=floorSeq!==void 0?{seq:floorSeq+1}:sinceMs===void 0?{seq:1}:{time:new Date(Date.now()-sinceMs)};let msgs;try{msgs=await this.collectHistory(subject,start,{untilSeq:upToSeq})}catch(e){this.emit("error",e);if(isPermissionDenied(e))throw e;return 0}const noop={ack:()=>{},nak:()=>{},durable:false};let n=0;for(const sm of msgs){let msg;try{msg=sm.json()}catch{continue}if(!isRecord(msg)||!isUsableMessageId(msg.id))continue;const parsed=parseSubject(sm.subject);if(!parsed||!isFromSubjectSender(msg,parsed)||msg.from.id===this.card.id)continue;this.emit("message",authenticatedMessage(msg,parsed),noop,{historical:true,kind:"channel"});n++}return n}async recallChannel(channel,sinceSeq){if(!this.jsm)throw new Error(this.notLiveMsg());if(!isConcreteChannel(channel))return{messages:[],seqs:[],dropped:false,unanswered:true};const policy=await this.joinPolicyFresh(channel);if(!policy.replay)return{messages:[],seqs:[],dropped:true,unanswered:true};const subject=chatSubject(this.space,"*","*",channel);let raw;try{raw=await this.collectHistory(subject,{seq:sinceSeq+1})}catch(e){this.emit("error",e);if(isPermissionDenied(e))throw e;return{messages:[],seqs:[],dropped:true,unanswered:true}}const collected=[];const seqs=[];for(const sm of raw){let msg;try{msg=sm.json()}catch{continue}if(!isRecord(msg)||!isUsableMessageId(msg.id))continue;const parsed=parseSubject(sm.subject);if(!parsed||!isFromSubjectSender(msg,parsed)||msg.from.id===this.card.id)continue;collected.push(authenticatedMessage(msg,parsed));seqs.push(sm.seq)}const dropped=await this.channelDropped(subject,sinceSeq);return{messages:collected,seqs,dropped,unanswered:false}}async channelDropped(subject,sinceSeq){if(!this.jsm)return false;let maxPerSubject=0;try{const info=await this.jsm.streams.info(chatStream(this.space),{subjects_filter:subject});for(const count of Object.values(info.state.subjects??{}))maxPerSubject=Math.max(maxPerSubject,count)}catch(e){if(e.code!==404)this.emit("error",e);return false}if(maxPerSubject<MAX_MSGS_PER_SUBJECT)return false;const oldest=await this.channelOldestSeq(subject);return oldest!==void 0&&oldest>sinceSeq+1}async channelOldestSeq(subject){if(!this.jsm)return void 0;try{const[first]=await this.collectHistory(subject,{seq:1},{limit:1});return first?.seq}catch(e){this.emit("error",e);return void 0}}async publishPresence(){if(!this.doRegister||!this.kv)return;const p={card:this.card,...this.ownLifecycleUid!==void 0?{lifecycleUid:this.ownLifecycleUid}:{},runtime:processRuntime(this.ownLifecycleUid),status:this.status,condition:this.condition,environment:this.environment,activity:this.activity,statusSince:this.statusSince,activitySince:this.activitySince,activeAt:this.activeAt,attention:this.attentionMode,channelModes:this.channelModes,ts:Date.now()};const record2=this.status==="offline"?this.toOffline(p):p;assertPresenceRow(record2,this.card.id);const epoch=this.presenceEpoch;const conditionRevision=this.conditionRevision;const generation=++this.presencePutGeneration;try{await this.kv.put(this.card.id,JSON.stringify(record2))}catch(e){const superseded2=(this.presencePutSettled??0)>generation;this.presencePutSettled=Math.max(this.presencePutSettled??0,generation);if(epoch===this.presenceEpoch&&!this.stopped&&!superseded2){this.presenceWriteFailingSince??=Date.now();this.lastPresenceWriteError=e?.message??String(e);this.presenceWriteFailures++;this.escalatePresenceWriteFailureIfStuck()}if(e instanceof import_transport_node13.TimeoutError)throw new Error(`${e.message}. The presence write outcome is unknown: the broker may have stored the update. Read the roster before retrying.`,{cause:e});throw e}const superseded=(this.presencePutSettled??0)>generation;this.presencePutSettled=Math.max(this.presencePutSettled??0,generation);if(epoch!==this.presenceEpoch||this.stopped||superseded)return;if(conditionRevision!==this.conditionRevision){await this.publishPresence();return}this.clearPresenceWriteFailure()}clearPresenceWriteFailure(){this.presenceWriteFailingSince=void 0;this.lastPresenceWriteError=void 0;this.presenceWriteFailures=0;this.presenceWriteEscalated=false}escalatePresenceWriteFailureIfStuck(){if(this.presenceWriteEscalated||this.presenceWriteFailingSince===void 0||this.presenceWriteFailures<2||Date.now()-this.presenceWriteFailingSince<this.ttlMs)return;this.presenceWriteEscalated=true;this.emitRecoverable(new PresenceWriteStuckError(presenceBucket(this.space),this.presenceWriteFailingSince,this.presenceWriteFailures,this.ttlMs,this.lastPresenceWriteError))}presenceWriteFailure(){if(this.presenceWriteFailingSince===void 0)return void 0;return{since:this.presenceWriteFailingSince,forMs:Date.now()-this.presenceWriteFailingSince,error:this.lastPresenceWriteError,bucket:presenceBucket(this.space),consecutiveFailures:this.presenceWriteFailures,stuck:this.presenceWriteEscalated}}async startPresenceWatch(){if(!this.kv)return void 0;let hydrated;this.presenceSnapshot=new Promise(resolve3=>{hydrated=resolve3});const bound=await this.bindKvWatch(this.kv);if(!bound){hydrated();return void 0}const{iter,info}=bound;this.presenceWatchIter=iter;const empty=info.num_pending===0&&!this.doRegister;if(empty){this.presenceSnapshotPopulated=true;hydrated();this.markPresenceBucketEmpty()}void(async()=>{let ready=empty;for await(const e of iter){if(this.presenceWatchIter!==iter)break;this.handleKvEntry(e);if(!ready&&e.isUpdate){ready=true;this.presenceSnapshotPopulated=true;hydrated();this.emitPresenceViewIfChanged()}}hydrated()})().catch(e=>this.emit("error",e));return info}async readPresenceOnce(){if(!this.kv)return;for(const e of await lastKvEntries(this.kv))this.handleKvEntry(e);this.presenceSnapshotPopulated=true;if(this.lastPresenceWatchAt===0)this.markPresenceBucketEmpty();else this.emitPresenceViewIfChanged()}rebindStalePresenceWatch(now){if(this.stopped||this.reconnecting||!this.kv||!this.nc||this.nc.isClosed())return;if(this.presenceRebind||now-this.presenceRebindAt<this.ttlMs)return;this.presenceRebindAt=now;const old=this.presenceWatchIter;const epoch=this.presenceEpoch;this.presenceRebind=(async()=>{try{const silentMs=now-this.lastPresenceWatchAt;const info=await this.startPresenceWatch();if(!info)return;if(old&&old!==this.presenceWatchIter)this.retireKvWatch(old);if(info.num_pending===0)await this.onPresenceBucketEmpty();this.emit("warning",new Error(`presence watch silent for ${silentMs}ms with the connection up; rebound it from the bucket's current state`))}catch(e){if(epoch===this.presenceEpoch)this.emit("error",e)}finally{if(epoch===this.presenceEpoch)this.presenceRebind=void 0}})()}async startChannelWatch(){if(!this.channelKv)return;const bound=await this.bindKvWatch(this.channelKv);if(!bound)return;const{iter}=bound;this.channelWatchIter=iter;void(async()=>{for await(const e of iter)this.handleChannelEntry(e)})().catch(e=>this.emit("error",e))}async readChannelsOnce(){if(!this.channelKv)return;for(const e of await lastKvEntries(this.channelKv))this.handleChannelEntry(e)}handleChannelEntry(e){const isDefaults=e.key===CHANNEL_DEFAULTS_KEY;if(isDefaults)this.channelDefaults={};else this.channelConfigs.delete(e.key);if(e.operation==="DEL"||e.operation==="PURGE")return;try{if(isDefaults)this.channelDefaults=decodeChannelEntry(e);else this.channelConfigs.set(e.key,decodeChannelEntry(e))}catch(err3){this.emitRecoverable(new Error(`dropped channel registry entry for key ${JSON.stringify(e.key)}: ${err3.message}`))}}async onPresenceBucketEmpty(){if(this.doRegister){await this.publishPresence();return}this.markPresenceBucketEmpty()}markPresenceBucketEmpty(){this.presenceWatchEmpty=true;this.lastPresenceWatchAt=0;let changed=false;for(const[id2,p]of this.roster){if(p.status==="offline")continue;const offline=this.toOffline(p);this.roster.set(id2,offline);this.emit("presence",{type:"offline",presence:offline});changed=true}if(changed)this.emit("roster",this.getRoster());this.emitPresenceViewIfChanged()}handleKvEntry(e){if(e.key===TTL_RECONCILE_CANARY_KEY)return;this.lastPresenceWatchAt=Date.now();this.presenceWatchEmpty=false;if(e.operation==="DEL"||e.operation==="PURGE"){this.markOffline(e.key);return}const p=this.decodePresence(e);if(p)this.applyPresence(e.key,p)}decodePresence(e){let p;try{p=e.json()}catch{return void 0}if(!isPresenceRow(p,e.key)){this.presenceBindingDrops++;this.emitRecoverable(new Error(`dropped presence entry for key ${JSON.stringify(e.key)}: not a usable presence row (a record with card.id equal to its KV key, a string card.name, a known status, a finite ts, string display fields and a condition with a string code)`));return void 0}return p}applyPresence(id2,raw){const prev=this.roster.get(id2);const stale=Date.now()-raw.ts>this.ttlMs;if(stale&&raw.status!=="offline"){if(prev)return;this.roster.set(id2,this.toOffline(raw));this.emit("roster",this.getRoster());return}if(this.presenceSnapshotPopulated)this.emitPresenceViewIfChanged();const p=stale||raw.status==="offline"?this.toOffline(raw):raw;if(!prev&&p.status==="offline"){this.roster.set(id2,p);this.emit("roster",this.getRoster());return}if(prev&&prev.status!=="offline"&&p.status!=="offline"&&prev.lifecycleUid===p.lifecycleUid&&sameRuntime(prev.runtime,p.runtime)&&prev.status===p.status&&prev.activity===p.activity&&sameCondition(prev.condition,p.condition)&&prev.environment===p.environment&&prev.attention===p.attention&&sameChannelModes(prev.channelModes,p.channelModes)){this.roster.set(id2,p);return}this.roster.set(id2,p);const type=p.status==="offline"?"offline":!prev||prev.status==="offline"?"join":"update";this.emit("presence",{type,presence:p});this.emit("roster",this.getRoster())}toOffline(p){return{...p,status:"offline",statusSince:void 0,attention:void 0,channelModes:void 0}}markOffline(id2){const prev=this.roster.get(id2);if(!prev||prev.status==="offline")return;const offline=this.toOffline(prev);this.roster.set(id2,offline);this.emit("presence",{type:"offline",presence:offline});this.emit("roster",this.getRoster())}emitPresenceViewIfChanged(){const view=this.presenceView();if(view.state===this.presenceViewState)return;this.presenceViewState=view.state;this.emit("presence-view",view)}sweep(){const now=Date.now();if(this.lastPresenceWatchAt!==0&&now-this.lastPresenceWatchAt>this.ttlMs){this.emitPresenceViewIfChanged();this.rebindStalePresenceWatch(now);return}let changed=false;for(const[id2,p]of this.roster){if(p.status!=="offline"&&now-p.ts>this.ttlMs&&this.lastPresenceWatchAt-p.ts>this.ttlMs){const offline=this.toOffline(p);this.roster.set(id2,offline);this.emit("presence",{type:"offline",presence:offline});changed=true}}if(changed)this.emit("roster",this.getRoster())}};function subjectLabel(subjects){return subjects.length===1?subjects[0]:`${subjects.length} filtered subjects`}function isUsableMessageId(id2){return typeof id2==="string"}function kindFromParsed(kind){switch(kind){case"chat":return"channel";case"inst":return"dm";case"svc":return"anycast";default:throw new Error(`cannot derive a message kind from subject kind "${kind}"`)}}function isFromSubjectSender(msg,parsed){return isRecord(msg)&&isRecord(msg.from)&&msg.from.id===parsed.sender&&isPrincipalOwnerToken(parsed.owner)}function authenticatedMessage(msg,parsed){if(parsed.kind==="chat")return authenticatedChannelMessage(msg,parsed.rest);if(parsed.kind==="inst")return authenticatedDmMessage(msg,parsed.rest);if(parsed.kind==="svc")return authenticatedAnycastMessage(msg,parsed.rest);return msg}function authenticatedChannelMessage(msg,channel){if(msg.channel===channel&&msg.to===void 0&&msg.toService===void 0)return msg;const{to:_to,toService:_toService,...base}=msg;return{...base,channel}}function authenticatedDmMessage(msg,to){if(msg.to===to&&msg.channel===void 0&&msg.toService===void 0)return msg;const{channel:_channel,toService:_toService,...base}=msg;return{...base,to}}function authenticatedAnycastMessage(msg,toService){if(msg.toService===toService&&msg.to===void 0&&msg.channel===void 0)return msg;const{to:_to,channel:_channel,...base}=msg;return{...base,toService}}async function ackWaitOf(consumer){const{config:config2}=await consumer.info(true);if(config2.ack_wait===void 0)throw new Error(`consumer ${config2.durable_name} reports no ack wait`);return(0,import_transport_node13.millis)(config2.ack_wait)}function durableDelivery(m,ackWaitMs){return{ack:()=>m.ack(),nak:()=>m.nak(),durable:true,redelivery:{deliveryCount:m.info.deliveryCount,ackWaitMs,working:()=>m.working()}}}function dmOnlyDelivery(m,ackWaitMs,nc){const open=what=>{if(!nc||nc.isClosed())throw new Error(`DM-only ${what} refused: the connection that delivered this copy is closed; the broker will redeliver it`)};return{ack:()=>{open("ack");m.ack()},nak:()=>{open("nak");m.nak()},durable:true,redelivery:{deliveryCount:m.info.deliveryCount,ackWaitMs,working:()=>{open("in-progress signal");m.working()}}}}function historyMessageFromDelivery(m){let raw;try{raw=m.json()}catch{return void 0}if(!isHistoryDrainEnvelope(raw))return void 0;if(!isVerifiedHistoryRow(raw))return void 0;const parsed=parseSubject(m.subject);if(!parsed||!isFromSubjectSender(raw,parsed))return void 0;return authenticatedMessage(raw,parsed)}function isVerifiedHistoryRow(row){if(typeof row.from.name!=="string")return false;if(row.from.role!==void 0&&typeof row.from.role!=="string")return false;if(typeof row.ts!=="number"||!Number.isFinite(row.ts))return false;if(typeof row.space!=="string")return false;if(!Array.isArray(row.parts)||!row.parts.every(isReadableMessagePart))return false;if(row.mentions!==void 0&&(!Array.isArray(row.mentions)||!row.mentions.every(name=>typeof name==="string")))return false;if(row.replyTo!==void 0&&typeof row.replyTo!=="string")return false;if(row.contextId!==void 0&&typeof row.contextId!=="string")return false;return true}function isReadableMessagePart(value){return isRecord(value)&&typeof value.kind==="string"}function isHistoryDrainEnvelope(value){return isRecord(value)&&isUsableMessageId(value.id)&&isRecord(value.from)}function isPlane3DeliveryFrame(value){if(!isRecord(value))return false;const keys=Object.keys(value);if(keys.length!==3||!keys.includes("version")||!keys.includes("channel")||!keys.includes("msg"))return false;if(value.version!==1||typeof value.channel!=="string"||!isConcreteChannel(value.channel))return false;return isCotalMessage(value.msg)&&value.msg.channel===value.channel}function isCotalMessage(value){if(!isRecord(value))return false;const routes=["channel","to","toService"].filter(key=>key in value);if(routes.length!==1||typeof value[routes[0]]!=="string")return false;if(typeof value.id!=="string"||typeof value.ts!=="number"||!Number.isFinite(value.ts)||typeof value.space!=="string"||!isEndpointRef(value.from)||!Array.isArray(value.parts)||!value.parts.every(isMessagePart))return false;if(value.mentions!==void 0&&(!Array.isArray(value.mentions)||!value.mentions.every(name=>typeof name==="string")))return false;if(value.replyTo!==void 0&&typeof value.replyTo!=="string")return false;if(value.contextId!==void 0&&typeof value.contextId!=="string")return false;return true}function isEndpointRef(value){return isRecord(value)&&typeof value.id==="string"&&typeof value.name==="string"&&(value.role===void 0||typeof value.role==="string")}function isMessagePart(value){if(!isRecord(value)||typeof value.kind!=="string")return false;if(value.kind==="text")return typeof value.text==="string";if(value.kind==="data")return Object.prototype.hasOwnProperty.call(value,"data");if(value.kind===ARTIFACT_PART_KIND)return isArtifactPart(value);return/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/.test(value.kind)}function isRecord(value){return!!value&&typeof value==="object"&&!Array.isArray(value)}function jsonPathProblem(path,value,seen){if(value===null)return void 0;const t=typeof value;if(t==="boolean"||t==="string")return void 0;if(t==="number")return Number.isFinite(value)?void 0:`${path} is not a finite number`;if(t==="undefined"||t==="function"||t==="symbol"||t==="bigint")return`${path} is not a JSON value`;if(typeof value==="object"){if(seen.has(value))return`${path} is cyclic`;seen.add(value);let problem;if(Array.isArray(value)){for(let i=0;i<value.length;i++){problem=jsonPathProblem(`${path}[${i}]`,value[i],seen);if(problem)return problem}}else{const proto=Object.getPrototypeOf(value);if(proto!==null&&proto!==Object.prototype){seen.delete(value);return`${path} is not a plain object`}for(const key of Object.keys(value)){if(value[key]===void 0)continue;problem=jsonPathProblem(`${path}.${key}`,value[key],seen);if(problem)return problem}}seen.delete(value);return void 0}return`${path} is not a JSON value`}function assertPartsSerializable(parts){for(const p of parts){if(p.kind!=="data")continue;const problem=jsonPathProblem("data",p.data,new Set);if(problem!==void 0){throw new Error(`cannot publish a data part carrying a non-JSON value (SPEC \xA75) - ${problem}`)}}}function sameChannelModes(a,b){const ak=a?Object.keys(a):[];const bk=b?Object.keys(b):[];if(ak.length!==bk.length)return false;return ak.every(k=>a[k]===b?.[k])}function sameRuntime(a,b){return a?.id===b?.id&&a?.startedAt===b?.startedAt&&a?.source===b?.source}function sameCondition(a,b){return a?.code===b?.code&&a?.source===b?.source&&a?.message===b?.message&&a?.since===b?.since}function authOpts(a){const tls=a.tls?{}:void 0;if(a.bearer){if(a.creds||a.token||a.user||a.pass)throw new Error("bearer (user-mode auth) is mutually exclusive with creds/token/user/pass");if(!a.sentinelCreds)throw new Error("user-mode bearer requires sentinelCreds");return{authenticator:[nativeCredsAuthenticator(a.sentinelCreds),(0,import_transport_node13.tokenAuthenticator)(a.bearer)],tls}}if(a.creds){if(a.token||a.user||a.pass)throw new Error("creds are mutually exclusive with token/user/pass auth");const creds=a.creds;const authenticator=nonce3=>{const presented=typeof creds==="function"?creds():creds;const authenticated=nativeCredsAuthenticator(presented)(nonce3);a.onCreds?.(presented);return authenticated};return{authenticator,tls}}return{token:a.token,user:a.user,pass:a.pass,tls}}function bearerExpiryMs(bearer){return bearerLifetimeMs(bearer,0).expiresAtMs}function bearerLifetimeMs(bearer,adoptedAtMs){const payload=bearer.split(".")[1];if(!payload)throw new Error("user-mode bearer is not a JWT (no payload segment)");let claims2;try{claims2=JSON.parse(Buffer.from(payload,"base64url").toString("utf8"))}catch{throw new Error("user-mode bearer payload is not valid base64url JSON")}if(typeof claims2.exp!=="number")throw new Error("user-mode bearer is missing a numeric exp claim");const expiresAtMs=claims2.exp*1e3;return{issuedAtMs:Math.min(typeof claims2.iat==="number"?claims2.iat*1e3:adoptedAtMs,expiresAtMs),expiresAtMs}}function bearerRenewalDeadlineMs(bearer,adoptedAtMs){const{issuedAtMs,expiresAtMs}=bearerLifetimeMs(bearer,adoptedAtMs);return renewalDeadlineMs(issuedAtMs,expiresAtMs)}var RepeatedRefusal=class extends Error{};function decodeBearerPrincipal(bearer){const payload=bearer.split(".")[1];if(!payload)throw new Error("user-mode bearer is not a JWT (no payload segment)");let claims2;try{claims2=JSON.parse(Buffer.from(payload,"base64url").toString("utf8"))}catch{throw new Error("user-mode bearer payload is not valid base64url JSON")}const owner2=claims2.sub,actor2=claims2.act?.actor;if(typeof owner2!=="string"||typeof actor2!=="string")throw new Error("user-mode bearer is missing a string sub (owner) / act.actor claim");return{owner:owner2,actor:actor2}}function describeStatusError(err3){if(err3 instanceof import_transport_node13.PermissionViolationError){return new Error(`NATS permission denied: cannot ${err3.operation} "${err3.subject}" - check this endpoint's ACLs (a denied peer looks "absent" rather than blocked)`,{cause:err3})}return err3}function kvWatchConsumer(iter){const consumer=iter._data;if(!consumer)throw new Error("KV watch carries no consumer - the pinned nats.js changed shape");return consumer}function membershipConsumerReleased(err3){return err3.code===404||/(consumer|stream) not found/i.test(err3.message)||isPublishPermissionDenied(err3)}function abortReason(signal){return signal?.reason instanceof Error?signal.reason:new DOMException("This operation was aborted","AbortError")}function isPublishPermissionDenied(e){const typed=e instanceof import_transport_node13.PermissionViolationError?e:e?.cause instanceof import_transport_node13.PermissionViolationError?e.cause:void 0;return typed?.operation==="publish"}function wsServers(servers){return/^wss?:\/\//i.test((servers.split(",")[0]??"").trim())}function defaultProbeTimeoutMs(servers){return wsServers(servers)?5e3:1e3}function dialerFor(servers){if(!wsServers(servers))return(opts=>(0,import_transport_node13.connect)(withDialedTlsHost(servers,opts)));return(opts=>{const{tls:_tls,...rest}=opts??{};return(0,import_nats_core6.wsconnect)(rest)})}function withDialedTlsHost(servers,opts){const urls=servers.split(",").map(url2=>url2.trim()).filter(Boolean);const tls=opts?.tls;if(urls.length!==1||tls===null||tls===void 0&&!/^tls:\/\//i.test(urls[0]))return opts;let host;try{({host}=hostPort(urls[0]))}catch{return opts}return isIP(host)?{...opts,tls:{host,...tls}}:opts}function hostPort(server){const raw=(server.split(",")[0]??"").trim();const scheme=raw.match(/^([a-z][a-z0-9+.-]*):\/\//i)?.[1]?.toLowerCase();const first=raw.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"");const u=new URL(`http://${first}`);const fallback=scheme==="wss"?443:scheme==="ws"?80:4222;return{host:u.hostname,port:u.port?Number(u.port):fallback}}function tcpInfoProbe(server,timeoutMs){return new Promise(resolve3=>{let socket;let done=false;let connected=false;const finish=live=>{if(done)return;done=true;try{socket?.destroy()}catch{}resolve3(live)};let host,port;try{({host,port}=hostPort(server))}catch{return resolve3(false)}socket=createConnection({host,port});socket.setTimeout(timeoutMs);let buf="";socket.on("data",chunk=>{buf+=chunk.toString("utf8");const nl=buf.indexOf("\r\n");if(nl===-1){if(buf.length>4096)finish(false);return}const line=buf.slice(0,nl);const brace=line.indexOf("{");if(!/^INFO\b/.test(line)||brace===-1)return finish(false);try{finish({authRequired:JSON.parse(line.slice(brace))?.auth_required===true})}catch{finish(false)}});socket.on("connect",()=>{connected=true});socket.on("timeout",()=>finish(connected?"silent":false));socket.on("error",()=>finish(false));socket.on("close",()=>finish(false))})}function tcpDialable(server,timeoutMs){return new Promise(resolve3=>{let socket;let done=false;const finish=dialable=>{if(done)return;done=true;try{socket?.destroy()}catch{}resolve3(dialable)};let host,port;try{({host,port}=hostPort(server))}catch{return resolve3(false)}socket=createConnection({host,port});socket.setTimeout(timeoutMs);socket.on("connect",()=>finish(true));socket.on("timeout",()=>finish(false));socket.on("error",()=>finish(false));socket.on("close",()=>finish(false))})}function isAuthRejection(e){return e instanceof import_transport_node13.AuthorizationError||e instanceof import_transport_node13.UserAuthenticationExpiredError}function retryAfterMs(e){const seconds=e?.retryAfterSeconds;return typeof seconds==="number"&&Number.isFinite(seconds)&&seconds>0?seconds*1e3:0}async function probeConnect(server=DEFAULT_SERVER,opts={}){const timeoutMs=opts.timeoutMs??defaultProbeTimeoutMs(server);const started=Date.now();const gate=opts.tls||wsServers(server)?tcpDialable:tcpInfoProbe;const greeting=await gate(server,timeoutMs);if(!greeting)return classifyProbeFailure(void 0,opts);if(greeting==="silent")return classifyProbeFailure(void 0,opts,false,"timeout");try{const nc=await dialerFor(server)({servers:server,timeout:Math.max(1,timeoutMs-(Date.now()-started)),reconnect:false,maxReconnectAttempts:0,...authOpts(opts)});await nc.close();return{ok:true}}catch(e){return classifyProbeFailure(e,opts,greeting!==true&&greeting.authRequired)}}function classifyProbeFailure(e,opts,authRequired=false,otherwise="unreachable"){if(typeof opts.creds==="string"){try{if(inspectCredHealth(opts.creds).state==="expired")return{ok:false,reason:"stale-auth"}}catch{}}if(e instanceof import_transport_node13.UserAuthenticationExpiredError)return{ok:false,reason:"stale-auth"};if(e instanceof import_transport_node13.AuthorizationError)return{ok:false,reason:"auth-required"};if(e instanceof import_transport_node13.TimeoutError)return{ok:false,reason:"timeout"};if(authRequired&&e?.code==="ECONNRESET")return{ok:false,reason:"auth-required",inferred:true};return{ok:false,reason:otherwise}}var MAX_CHANNEL_DESCRIPTION=200;var MAX_CHANNEL_INSTRUCTIONS=2e3;function validateChannelConfig(cfg){validateChannelDefaults(cfg);validateText("description",cfg.description,MAX_CHANNEL_DESCRIPTION);validateText("instructions",cfg.instructions,MAX_CHANNEL_INSTRUCTIONS)}function validateText(field,text2,max){if(text2===void 0)return;if(typeof text2!=="string")throw new Error(`channel ${field} must be a string`);if(text2.length>max)throw new Error(`channel ${field} too long (${text2.length} > ${max} chars)`)}function validateChannelDefaults(d){if(d.replay!==void 0&&typeof d.replay!=="boolean")throw new Error(`invalid replay "${d.replay}" - expected true or false`);if(d.replayWindow!==void 0)parseDuration(d.replayWindow);if(d.deliveryClass!==void 0&&d.deliveryClass!=="live"&&d.deliveryClass!=="durable")throw new Error(`invalid deliveryClass "${d.deliveryClass}" - expected "live" or "durable"`)}function decodeChannelEntry(e){const value=e.json();if(typeof value!=="object"||value===null||Array.isArray(value))throw new Error("not a JSON object");if(e.key===CHANNEL_DEFAULTS_KEY)validateChannelDefaults(value);else validateChannelConfig(value);return value}function parseDuration(s){const m=/^(\d+)(s|m|h|d)$/.exec(s.trim());if(!m)throw new Error(`invalid duration "${s}" - expected <number><s|m|h|d>, e.g. "24h"`);const n=Number(m[1]);const unit={s:1e3,m:6e4,h:36e5,d:864e5}[m[2]];return n*unit}function effectiveReplay(cfg,defaults){return cfg?.replay??defaults?.replay??true}function effectiveReplayWindowMs(cfg,defaults){const w=cfg?.replayWindow??defaults?.replayWindow;return w===void 0?void 0:parseDuration(w)}function effectiveDeliveryClass(cfg,defaults){return cfg?.deliveryClass??defaults?.deliveryClass??"durable"}async function openChannelRegistry(nc,space2,opts={}){const kvm=new import_kv7.Kvm(nc);return opts.create?kvm.create(channelBucket(space2)):kvm.open(channelBucket(space2))}async function readChannelConfig(kv,channel){return decode2(kv,channel)}async function readChannelDefaults(kv){return decode2(kv,CHANNEL_DEFAULTS_KEY)}async function decode2(kv,key){return entryValue(await kv.get(key))}function entryValue(e){return entryDecode(e).value}function entryDecode(e){if(!e||e.operation==="DEL"||e.operation==="PURGE")return{};try{return{value:decodeChannelEntry(e)}}catch(err3){return{error:err3.message}}}var import_jetstream17=__toESM(require_mod4(),1);var import_transport_node16=__toESM(require_transport_node(),1);var import_kv9=__toESM(require_mod6(),1);var DEFAULT_FIELDS={replay:true,replayWindow:true,deliveryClass:true};var CHANNEL_FIELDS={...DEFAULT_FIELDS,description:true,instructions:true};var import_jetstream18=__toESM(require_mod4(),1);var mintGuardClearance=claimGuardClearanceMint();var TRAIT_SELECTORS=Object.freeze(["cluster","command","attribute","event"]);var import_jetstream19=__toESM(require_mod4(),1);var import_transport_node17=__toESM(require_transport_node(),1);var import_jetstream20=__toESM(require_mod4(),1);var import_transport_node18=__toESM(require_transport_node(),1);var COMMON_FIELDS=["v","executor","attemptId","ts","phase"];var PHASE_FIELDS={claimed:COMMON_FIELDS,launching:[...COMMON_FIELDS,"addr"],launched:[...COMMON_FIELDS,"addr"],settled:[...COMMON_FIELDS,"addr"]};var BASE=["v","ts","state","claimant"];var STATE_FIELDS={claimed:BASE,launching:[...BASE,"lifecycleUid","launchAttemptId","executor"],live:[...BASE,"lifecycleUid","runtimeOwner"],preserved:[...BASE,"lifecycleUid","runtimeOwner"],relaunching:[...BASE,"lifecycleUid","launchAttemptId","executor"],draining:[...BASE,"lifecycleUid","runtimeOwner","enteredAt"],released:BASE};var enc6=new TextEncoder;var dec6=new TextDecoder;var HANDLE_MAX_LIVE_TTL_MS=24*60*60*1e3;var HANDLE_MAX_STURDY_TTL_MS=30*24*60*60*1e3;var HANDLE_MAX_BYTES=64*1024;var SESSION_GRANT_MAX_TTL_MS=24*60*60*1e3;var SESSION_GRANT_MAX_BYTES=16*1024;var SESSION_TERMINAL_STATES=Object.freeze(["closed","expired","superseded","retired"]);var TERMINAL_STATE_SNAP=new Set(SESSION_TERMINAL_STATES);var MAX_B64_CHARS=4*1024*1024;var B64_ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var B64_INV=(()=>{const m=new Int16Array(128).fill(-1);for(let i=0;i<B64_ALPHABET.length;i++)m[B64_ALPHABET.charCodeAt(i)]=i;return m})();var import_jetstream21=__toESM(require_mod4(),1);var RENEW_AT_FRACTION=1/3;var OVERLAP_MS=10*60*1e3;function presenceAges(p,now){return{conditionSince:ageAt(now,p.condition?.since),statusSince:ageAt(now,p.statusSince),activitySince:p.activity?ageAt(now,p.activitySince):void 0,activeAt:ageAt(now,p.activeAt)}}function formatAge(ms){const s=Math.floor(ms/1e3);if(s<60)return`${s}s`;if(s<3600)return`${Math.floor(s/60)}m`;if(s<86400)return`${Math.floor(s/3600)}h`;return`${Math.floor(s/86400)}d`}function ageAt(now,at){if(typeof at!=="number"||!Number.isFinite(at))return void 0;return Math.max(0,now-at)}function oneLine(text2){return text2.replace(/[\p{Cc}\p{Zl}\p{Zp}\p{Bidi_Control}]/gu,c=>`\\u${c.charCodeAt(0).toString(16).padStart(4,"0")}`)}var PRESENCE_TEXT_MAX=200;function presenceText(text2){const shown=Array.from(text2,oneLine);const width=s=>[...s].length;if(shown.reduce((n2,s)=>n2+width(s),0)<=PRESENCE_TEXT_MAX)return shown.join("");let kept="";let n=0;for(const s of shown){n+=width(s);if(n>PRESENCE_TEXT_MAX-1)break;kept+=s}return`${kept}\u2026`}function parseJoinLink(link){const tls=link.startsWith("cotals://");if(!tls&&!link.startsWith("cotal://"))throw new Error(`not a Cotal link (expected cotal:// or cotals://): ${link}`);const u=new URL(link.replace(/^cotals?:\/\//,tls?"https://":"http://"));if(!u.hostname)throw new Error(`Cotal link has no host: ${link}`);const space2=decodeURIComponent(u.pathname.replace(/^\/+/,"").split("/")[0]??"");if(!space2)throw new Error(`Cotal link has no space (cotal://host/<space>): ${link}`);const chParam=u.searchParams.get("channels")??u.searchParams.get("channel");const channels=chParam?chParam.split(",").map(s=>s.trim()).filter(Boolean):void 0;const user=u.username?decodeURIComponent(u.username):void 0;const pass=u.password?decodeURIComponent(u.password):void 0;return{servers:`nats://${u.hostname}:${u.port||"4222"}`,space:space2,channels,tls,token:user&&!pass?user:void 0,user:pass?user:void 0,pass:pass||void 0}}function brokerUrlHasUserinfo(servers){return servers.split(",").some(entry=>/^[^:/?#]+:\/\/[^/?#]*@/.test(entry.includes("://")?entry.trim():`nats://${entry.trim()}`))}var import_nkeys10=__toESM(require_mod(),1);var import_transport_node19=__toESM(require_transport_node(),1);var import_kv10=__toESM(require_mod6(),1);import{mkdtempSync,readFileSync as readFileSync3,realpathSync as realpathSync2,rmSync as rmSync2,rmdirSync,statSync as statSync3}from"node:fs";import{tmpdir}from"node:os";import{basename,dirname as dirname3,join as join3,resolve}from"node:path";var DIR_PREFIX="cotal-launch-";var MATERIAL_FILE="material.json";var LAUNCH_MATERIAL_ENV="COTAL_LAUNCH_MATERIAL";function writeLaunchMaterial(material){const present=Object.values(material).some(v=>v!==void 0);if(!present)throw new Error("launch material: refusing to write an empty material file - a launch with nothing to hand the session must not reference one at all");const dir=mkdtempSync(join3(tmpdir(),DIR_PREFIX));hardenPrivate(dir,"dir");const path=join3(dir,MATERIAL_FILE);writeSecretFile(path,JSON.stringify(material));return path}function readLaunchMaterial(path){let raw;try{if(process.platform!=="win32"){const mode=statSync3(path).mode&511;if(mode&63)throw new Error(`is readable beyond its owner (mode ${mode.toString(8)}) - refusing to read connection material out of a file other local users can open`)}raw=readFileSync3(path,"utf8")}catch(e){throw new Error(`launch material: cannot read ${path} (${e instanceof Error?e.message:String(e)})`)}let parsed;try{parsed=JSON.parse(raw)}catch{throw new Error(`launch material: ${path} is not valid JSON`)}if(typeof parsed!=="object"||parsed===null||Array.isArray(parsed))throw new Error(`launch material: ${path} must contain a JSON object`);return validate(parsed,path)}function validate(raw,path){const material={};const str3=key=>{const v=raw[key];if(v===void 0)return;if(typeof v!=="string"||!v.trim())throw new Error(`launch material: ${path} has a ${key} that is not a non-empty string`);material[key]=v};str3("servers");str3("creds");str3("token");str3("controlToken");if(raw.eventsRequired!==void 0){if(raw.eventsRequired!==true)throw new Error(`launch material: ${path} has eventsRequired that is not exactly true`);material.eventsRequired=true}if(raw.userAuth!==void 0){const u=raw.userAuth;if(typeof u!=="object"||u===null||Array.isArray(u))throw new Error(`launch material: ${path} has a userAuth that is not an object`);const{owner:owner2,actor:actor2,sentinelCredsPath,bearerCmd}=u;const named={owner:owner2,actor:actor2,sentinelCredsPath};for(const[k,v]of Object.entries(named))if(typeof v!=="string"||!v.trim())throw new Error(`launch material: ${path} has a userAuth.${k} that is not a non-empty string`);if(!Array.isArray(bearerCmd)||bearerCmd.length===0||!bearerCmd.every(a=>typeof a==="string"&&a))throw new Error(`launch material: ${path} has a userAuth.bearerCmd that is not a non-empty array of strings`);material.userAuth={owner:owner2,actor:actor2,sentinelCredsPath,bearerCmd}}if(Object.keys(material).length===0)throw new Error(`launch material: ${path} carries nothing this reader recognises. A launch that references material and supplies none is a broken launcher, not an open-mode launch, so it is refused rather than defaulted.`);return material}function discardLaunchMaterial(path){const file2=resolve(path);try{rmSync2(file2,{force:true})}catch{}const dir=dirname3(file2);if(basename(file2)!==MATERIAL_FILE||!basename(dir).startsWith(DIR_PREFIX))return;try{if(realpathSync2(dirname3(dir))!==realpathSync2(tmpdir()))return;rmdirSync(dir)}catch{}}var import_transport_node20=__toESM(require_transport_node(),1);var import_jetstream22=__toESM(require_mod4(),1);var import_kv11=__toESM(require_mod6(),1);import{BlockList,isIPv4,isIPv6}from"node:net";var LOOPBACK=new BlockList;LOOPBACK.addSubnet("127.0.0.0",8,"ipv4");LOOPBACK.addAddress("::1","ipv6");var TARGET_FIELDS=["space","owner","actor","lifecycleUid"];var STRING_FIELDS=[...TARGET_FIELDS,"kind","server","authProvider","exchangeUrl","sentinelCreds","actorToken"];var LIST_FIELDS=["subscribe","allowSubscribe","allowPublish"];var FIELDS=new Set([...STRING_FIELDS,...LIST_FIELDS,"tlsRequired","idp","policy"]);import{AsyncLocalStorage}from"node:async_hooks";function claims(ext){return[ext.name,...ext.aliases??[]].map(word=>`${ext.kind}:${word}`)}var Registry=class{#byKey=new Map;#providers=new Map;#aliases=new Map;#stage=new AsyncLocalStorage;register(...exts){const stage=this.#stage.getStore();const taken=this.#claimed();for(const staged of stage?.values()??[])for(const key of claims(staged))taken.add(key);for(const ext of exts){for(const key of claims(ext)){if(taken.has(key))throw new Error(`extension already registered: ${key}`);taken.add(key)}}if(stage)for(const ext of exts)stage.set(`${ext.kind}:${ext.name}`,ext);else this.#publish(exts)}#claimed(){return new Set([...this.#byKey.keys(),...this.#aliases.keys()])}#publish(exts){for(const ext of exts){const key=`${ext.kind}:${ext.name}`;this.#byKey.set(key,ext);for(const alias of claims(ext).slice(1))this.#aliases.set(alias,key)}}unregister(kind,name){const key=`${kind}:${name}`;const ext=this.#byKey.get(key);if(!ext)return false;for(const alias of claims(ext).slice(1))this.#aliases.delete(alias);return this.#byKey.delete(key)}async runStaged(load){const stage=new Map;const value=await this.#stage.run(stage,load);return{value,staged:[...stage.values()]}}commitStaged(staged){const taken=this.#claimed();for(const ext of staged)for(const key of claims(ext))if(taken.has(key))throw new Error(`extension already registered: ${key}`);this.#publish(staged)}has(kind,name){return this.#byKey.has(this.#canonical(kind,name))}#canonical(kind,word){const key=`${kind}:${word}`;return this.#aliases.get(key)??key}resolve(kind,name){const ext=this.#byKey.get(this.#canonical(kind,name));if(!ext){if(this.#providers.has(`${kind}:${name}`))throw new Error(`${kind} "${name}" is declared by a provider this process has not loaded`);throw new Error(`no ${kind} registered for "${name}"`)}return ext}provide(provider){const keys=provider.provides.map(ref=>`${ref.kind}:${ref.name}`);for(const key of keys)if(this.#providers.has(key))throw new Error(`extension provider already declared: ${key}`);const entry={provider};for(const key of keys)this.#providers.set(key,entry)}provides(kind,name){return this.#providers.has(`${kind}:${name}`)}async load(kind,name){const entry=this.#providers.get(`${kind}:${name}`);if(entry){entry.loading??=entry.provider.load();await entry.loading;if(!this.#byKey.has(this.#canonical(kind,name)))throw new Error(`the provider declared for ${kind} "${name}" loaded without registering it`)}return this.resolve(kind,name)}all(kind){const values=[...this.#byKey.values()];return kind===void 0?values:values.filter(e=>e.kind===kind)}};var registry2=new Registry;import{execFile}from"node:child_process";function bearerCommandFailure(err3,stderr,timeoutMs,stdout=""){const said=stderr.trim();const retryAfter=/^retry-after (\d+)$/.exec(stdout.trim());if(said)return Object.assign(new Error(said),retryAfter?{retryAfterSeconds:Number(retryAfter[1])}:{});if(err3.killed)return new Error(`the bearer command timed out after ${timeoutMs}ms`);if(err3.signal)return new Error(`the bearer command was killed by ${err3.signal}`);if(typeof err3.code==="number")return new Error(`the bearer command exited with code ${err3.code} and printed nothing`);return new Error(err3.message)}function runAgentBearer(argv,opts={}){const timeoutMs=opts.timeoutMs??3e4;return new Promise((resolve3,reject)=>{execFile(argv[0],argv.slice(1),{timeout:timeoutMs,maxBuffer:64*1024,env:opts.env,signal:opts.signal},(err3,stdout,stderr)=>err3?reject(bearerCommandFailure(err3,stderr,timeoutMs,stdout)):resolve3(stdout.trim()))})}var EVENT_CHANNEL_PREFIX="events.";function eventChannel(principal){return`${EVENT_CHANNEL_PREFIX}${principalKey(principal.owner,principal.actor).key}`}function eventChannelPrincipal(channel){if(typeof channel!=="string"||!channel.startsWith(EVENT_CHANNEL_PREFIX))return null;const principal=parsePrincipalKey(channel.slice(EVENT_CHANNEL_PREFIX.length));if(principal===null)return null;return eventChannel(principal)===channel?principal:null}var SELECTION_MAX_ITEMS=32;var EMPTY_CONVERSATION_SELECTION=Object.freeze({v:1,channels:Object.freeze([]),role:null,capabilities:Object.freeze([]),endpoints:Object.freeze([])});function managerCallerBinding(bearer,expected){let payload;try{const parts=bearer.split(".");if(parts.length!==3)throw new Error("invalid JWT");payload=JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(fromBase64url(parts[1])))}catch{throw new Error("manager control exchange returned an invalid bearer")}const act=payload?.act;if(!act||act.view!=="manager-caller"||payload.sub!==expected.owner||act.owner!==expected.owner||act.actor!==expected.actor||act.lifecycleUid!==expected.lifecycleUid||!(payload.aud===expected.space||Array.isArray(payload.aud)&&payload.aud.length===1&&payload.aud[0]===expected.space))throw new Error("manager control exchange returned different space, principal, lifecycle or view coordinates");if(typeof act.managerInstanceId!=="string")throw new Error("manager control exchange returned no concrete manager instance");const instanceId=assertLifecycleToken(act.managerInstanceId,"managerInstanceId");if(expected.instanceId!==void 0&&instanceId!==expected.instanceId)throw new Error("manager control exchange selected a different manager instance");return{caller:{owner:expected.owner,actor:expected.actor,uid:expected.lifecycleUid},instanceId,...typeof act.credentialId==="string"?{credentialId:act.credentialId}:{}}}var DELEGATED_RECOVERY_REASONS=Object.freeze(["provider-unknown","store-unavailable","authority-unavailable","identity-unverified","descriptor-incomplete","retiring","authority-drift","identity-changed","scope-changed"]);function partText(p){if(p.kind==="text")return p.text;if(p.kind==="artifact")return`[artifact ${p.name} (${p.mediaType}, ${p.size} bytes) ${p.digest}]`;if(p.kind==="data"){const encoded=JSON.stringify(p.data);return encoded===void 0?`[empty data part]`:encoded}if(registry2.has("part-renderer",p.kind)){const renderer=registry2.resolve("part-renderer",p.kind);try{return renderer.render(p)}catch(e){return`[part renderer for ${JSON.stringify(p.kind)} failed: ${e.message}]`}}return`[unrenderable part kind ${JSON.stringify(p.kind)} \u2014 no renderer for it on this surface]`}function partsToText(parts){return parts.map(partText).join(" ")}var AGUI_FRAME_KIND="ag-ui.frame";var AGUI_EVENT_TYPE=Object.freeze({RUN_STARTED:"RUN_STARTED",RUN_FINISHED:"RUN_FINISHED",RUN_ERROR:"RUN_ERROR",TEXT_MESSAGE_START:"TEXT_MESSAGE_START",TEXT_MESSAGE_CONTENT:"TEXT_MESSAGE_CONTENT",TEXT_MESSAGE_END:"TEXT_MESSAGE_END",TOOL_CALL_START:"TOOL_CALL_START",TOOL_CALL_ARGS:"TOOL_CALL_ARGS",TOOL_CALL_END:"TOOL_CALL_END",TOOL_CALL_RESULT:"TOOL_CALL_RESULT",REASONING_MESSAGE_START:"REASONING_MESSAGE_START",REASONING_MESSAGE_CONTENT:"REASONING_MESSAGE_CONTENT",REASONING_MESSAGE_END:"REASONING_MESSAGE_END",CUSTOM:"CUSTOM"});function isAguiFramePart(part){if(typeof part!=="object"||part===null)return false;try{return part.kind===AGUI_FRAME_KIND}catch{return false}}var TURN_INPUT_SCHEMA=deepFreeze({type:"object",additionalProperties:false,required:["payload"],oneOf:[{required:["deadlineMs"]},{required:["deadlineAt"]}],properties:{payload:{type:"string",minLength:1,maxLength:65536},deadlineMs:{type:"integer",minimum:1},deadlineAt:{type:"integer",minimum:1},handoffFrom:{type:"string",minLength:1,maxLength:200}}});var TURN_OUTPUT_SCHEMA=deepFreeze({type:"object",additionalProperties:false,required:["name","owner","actor","uid","goalId","fingerprint","deadlineAt","executor"],properties:{name:{type:"string"},owner:{type:"string"},actor:{type:"string"},uid:{type:"string"},goalId:{type:"string"},fingerprint:{type:"string"},deadlineAt:{type:"integer",minimum:1},executor:{type:"object",additionalProperties:false,required:["lifecycleUid","epoch"],properties:{lifecycleUid:{type:"string"},epoch:{type:"integer",minimum:0}}}}});function deepFreeze(v){if(v!==null&&typeof v==="object"){for(const child of Object.values(v))deepFreeze(child);Object.freeze(v)}return v}var TURN_NOTICE_NONCE="turn-pending-notice-v1";function turnNoticeFilter(space2,instanceId,seat){return[spacePrefix(space2),...epPlaneTokens(seat),"reply",endpointToken("manager"),assertLifecycleToken(instanceId,"instanceId"),"*",...callerRailTokens(seat),TURN_NOTICE_NONCE].join(".")}var import_nkeys11=__toESM(require_mod(),1);var TOOL_RESULTS_ENDPOINT="tool-results";var TOOL_RESULT_MAX_CONTENT_BYTES=64*1024;var TOOL_RESULT_MAX_RETENTION_MS=60*60*1e3;var TOOL_RESULT_CONSENT_MAX_TTL_MS=24*60*60*1e3;function deepFreeze2(value){if(value!==null&&typeof value==="object"){for(const child of Object.values(value))deepFreeze2(child);Object.freeze(value)}return value}var text={type:"string",minLength:1};var id={type:"string",minLength:1,maxLength:200,pattern:"^[A-Za-z0-9_-]+$"};var actor={type:"string",minLength:1,pattern:"^[A-Za-z0-9_]+$"};var owner={type:"string",pattern:"^u_[a-z2-7]{26}$"};var uid={type:"string",pattern:"^[a-z0-9]{26,32}$"};var space={type:"string",minLength:1,pattern:"^[A-Za-z0-9_-]+$"};var uint={type:"integer",minimum:0,maximum:Number.MAX_SAFE_INTEGER};var bool={type:"boolean"};var closed2=properties=>({type:"object",additionalProperties:false,required:Object.keys(properties),properties});var target=closed2({owner,actor,lifecycleUid:uid});var pair={threadId:text,toolCallId:text};var status=(state,fields={})=>closed2({state:{const:state},...fields});var TOOL_RESULT_CONSENT_SCHEMA=deepFreeze2(closed2({v:{const:1},kind:{const:"tool-result-consent"},id,space,target,holder:closed2({owner,actor}),iat:uint,exp:uint,issuer:closed2({keyId:id}),sig:{type:"string",pattern:"^[A-Za-z0-9_-]{86}$"}}));var TOOL_RESULT_REVOCATION_SCHEMA=deepFreeze2(closed2({v:{const:1},kind:{const:"tool-result-revocation"},space,consentId:id,target,revokedAt:uint}));var TOOL_RESULT_SERVING_MATERIAL_SCHEMA=deepFreeze2(closed2({v:{const:1},kind:{const:"tool-result-serving-material"},space,accountPublicKey:{type:"string",pattern:"^A[A-Z2-7]{55}$"},target,grant:closed2({endpoint:{const:TOOL_RESULTS_ENDPOINT},instanceId:uid,epoch:uint,registrationRevision:{...uint,minimum:1}}),credential:{type:"string",minLength:1,maxLength:16384},snapshot:closed2({t0:uint,watermark:uint,watermarkTakenAt:uint,revokedConsentIds:{type:"array",uniqueItems:true,items:id}}),expiresAt:uint}));var TOOL_RESULT_INPUT_SCHEMA=deepFreeze2(closed2(pair));var TOOL_RESULT_ANSWER_SCHEMAS=deepFreeze2({available:status("available",{...pair,content:{type:"string",maxLength:TOOL_RESULT_MAX_CONTENT_BYTES},truncated:bool,byteCount:{...uint,maximum:TOOL_RESULT_MAX_CONTENT_BYTES},error:bool,capturedAt:uint}),pending:status("pending",pair),"not-shared":status("not-shared"),missing:status("missing"),expired:status("expired")});var TOOL_RESULT_OUTPUT_SCHEMA=deepFreeze2({oneOf:Object.values(TOOL_RESULT_ANSWER_SCHEMAS)});var TOOL_RESULT_CONSENT_INPUT_SCHEMA=deepFreeze2(closed2({consent:TOOL_RESULT_CONSENT_SCHEMA}));var TOOL_RESULT_CONSENT_OUTPUT_SCHEMA=deepFreeze2(status("active",{consentId:id}));var TOOL_RESULT_REVOKE_INPUT_SCHEMA=deepFreeze2(closed2({consentId:id}));var TOOL_RESULT_REVOKE_ANSWER_SCHEMAS=deepFreeze2({known:status("known",{consentId:id}),refused:status("refused",{consentId:id}),unknown:status("unknown",{consentId:id})});var TOOL_RESULT_REVOKE_OUTPUT_SCHEMA=deepFreeze2({oneOf:Object.values(TOOL_RESULT_REVOKE_ANSWER_SCHEMAS)});var TOOL_RESULTS_COMMANDS=deepFreeze2([{name:"tool-result",capability:"tool-results.read",input:TOOL_RESULT_INPUT_SCHEMA,output:TOOL_RESULT_OUTPUT_SCHEMA},{name:"tool-result-consent",capability:"tool-results.consent",input:TOOL_RESULT_CONSENT_INPUT_SCHEMA,output:TOOL_RESULT_CONSENT_OUTPUT_SCHEMA},{name:"tool-result-revoke",capability:"tool-results.revoke",input:TOOL_RESULT_REVOKE_INPUT_SCHEMA,output:TOOL_RESULT_REVOKE_OUTPUT_SCHEMA}]);var TOOL_RESULTS_CLUSTER=deepFreeze2({urn:"ai.cotal.tool-results",revision:1,attributes:[],events:[],commands:TOOL_RESULTS_COMMANDS.map(row=>({name:row.name,class:"ephemeral",targeted:true,modes:["handle"],capability:row.capability,inputDigest:singleDocumentClosure(row.input).closureDigest,outputDigest:singleDocumentClosure(row.output).closureDigest}))});var import_nkeys12=__toESM(require_mod(),1);var LANG_PROBLEM_DETAIL_KIND="ai.cotal.lang.problem";var RUN_ACTIVATION_WAIT_MS=15e3;var RUN_LAUNCH_DEADLINE_MS=RUN_ACTIVATION_WAIT_MS+1e4;var import_jetstream23=__toESM(require_mod4(),1);var import_transport_node21=__toESM(require_transport_node(),1);var import_jetstream24=__toESM(require_mod4(),1);var import_kv12=__toESM(require_mod6(),1);import{readFileSync as readFileSync4}from"node:fs";import{userInfo as userInfo2}from"node:os";var DIRECT_MATERIAL_VARS=["COTAL_CREDS","COTAL_SERVERS","COTAL_TOKEN","COTAL_OWNER","COTAL_ACTOR","COTAL_SENTINEL_CREDS","COTAL_BEARER_CMD","COTAL_EVENTS_REQUIRED","COTAL_CONTROL_TOKEN","COTAL_LINK"];function readMaterial(env){const path=env[LAUNCH_MATERIAL_ENV]?.trim();if(!path)return void 0;const direct=DIRECT_MATERIAL_VARS.filter(k=>env[k]?.trim());if(direct.length)throw new Error(`COTAL config: this launch carries connection material BOTH as ${LAUNCH_MATERIAL_ENV} and as ${direct.join(", ")}. One launch carries one identity plane - drop the direct variables, or drop the material file.`);return readLaunchMaterial(path)}function controlFromEnv(env=process.env){const path=env.COTAL_CONTROL_SOCKET?.trim();const token2=readMaterial(env)?.controlToken??env.COTAL_CONTROL_TOKEN?.trim();if(path&&token2)return{path,token:token2};if(!path&&!token2)return void 0;if(path)throw new Error("COTAL config: COTAL_CONTROL_SOCKET is set but no control token could be resolved - neither the launch material nor COTAL_CONTROL_TOKEN carries one. Half a pair is not a control endpoint, so this launch is refused rather than started without the control plane it was configured to have.");throw new Error("COTAL config: a control token was supplied but COTAL_CONTROL_SOCKET is unset, so there is no socket to authenticate against. Half a pair is not a control endpoint, so this launch is refused rather than started without the control plane it was configured to have.")}function hasIdentity(env=process.env){return Boolean(env.COTAL_NAME?.trim()||env.COTAL_LINK?.trim()||env.COTAL_AGENT_FILE?.trim())}var FEEDBACK_URL="https://broker.cotal.ai/v1/feedback";var PUBLIC_FEEDBACK_URL="https://cotal.ai/v1/feedback";function isAuthed(config2){return Boolean(config2.creds)||Boolean(config2.userAuth)}function splitList(v){if(!v)return[];return v.split(",").map(s=>s.trim()).filter(Boolean)}function envList(v){return v===void 0?void 0:splitList(v)}var EnvFlagError=class extends Error{};function envFlag(env,name){const value=env[name]?.trim();if(!value)return void 0;if(/^(1|true|yes|on)$/i.test(value))return true;if(/^(0|false|no|off)$/i.test(value))return false;throw new EnvFlagError(`COTAL config: ${name} must be 1/true/yes/on or 0/false/no/off, got "${env[name]}"`)}function configFromEnv(env=process.env){const link=env.COTAL_LINK?.trim()?parseJoinLink(env.COTAL_LINK.trim()):void 0;const def=env.COTAL_AGENT_FILE?.trim()?loadAgentFile(env.COTAL_AGENT_FILE.trim()):void 0;const name=env.COTAL_NAME?.trim()||def?.name||(link?userInfo2().username:void 0);if(!name)throw new Error("COTAL_NAME, COTAL_AGENT_FILE or COTAL_LINK is required \u2014 a Cotal session needs an explicit identity from its launcher");const resolvedSubscribe=envList(env.COTAL_SUBSCRIBE)??def?.subscribe??link?.channels??[];let resolvedAllowSub;try{resolvedAllowSub=resolveReadAcl(resolvedSubscribe,envList(env.COTAL_ALLOW_SUBSCRIBE)??def?.allowSubscribe)}catch(e){throw new Error(`COTAL config: ${e.message}`)}const resolvedAllowPub=envList(env.COTAL_ALLOW_PUBLISH)??def?.allowPublish??[];for(const ch of[...resolvedSubscribe,...resolvedAllowSub,...resolvedAllowPub])assertValidChannel(ch);const qEnv=splitList(env.COTAL_QUIET),mEnv=splitList(env.COTAL_MUTED);const resolvedQuiet=qEnv.length?qEnv:def?.quiet??[];const resolvedMuted=mEnv.length?mEnv:def?.muted??[];const bothModes=resolvedQuiet.filter(c=>resolvedMuted.includes(c));if(bothModes.length)throw new Error(`COTAL config: channel(s) [${bothModes.join(", ")}] are in both quiet and muted`);for(const[field,chans]of[["quiet",resolvedQuiet],["muted",resolvedMuted]])for(const ch of chans){assertValidChannel(ch);if(!isConcreteChannel(ch))throw new Error(`COTAL config: ${field} channel "${ch}" must be concrete (no wildcard)`);if(!channelInAllow(resolvedAllowSub,ch))throw new Error(`COTAL config: ${field} channel "${ch}" is not within allowSubscribe [${resolvedAllowSub.join(", ")}]`)}const material=readMaterial(env);if(env.COTAL_SERVERS?.trim()&&brokerUrlHasUserinfo(env.COTAL_SERVERS))throw new Error("COTAL config: COTAL_SERVERS must not embed credentials; name the broker URL without user:password@, and pass the credential in COTAL_CREDS, COTAL_TOKEN or a COTAL_LINK");const credsPath=material?.creds??env.COTAL_CREDS?.trim();const initialCreds=credsPath?readFileSync4(credsPath,"utf8"):void 0;const credsId=initialCreds?idFromCreds(initialCreds):void 0;const boundedCreds=initialCreds!==void 0&&typeof credsClaims(initialCreds).exp==="number";const declaredId=env.COTAL_ID?.trim()||void 0;if(declaredId&&credsId&&declaredId!==credsId)throw new Error(`COTAL config: COTAL_ID ${declaredId} != creds identity ${credsId} - they must be the same nkey`);const userVars=material?.userAuth?{owner:material.userAuth.owner,actor:material.userAuth.actor,sentinel:material.userAuth.sentinelCredsPath,bearerCmd:JSON.stringify(material.userAuth.bearerCmd)}:{owner:env.COTAL_OWNER?.trim(),actor:env.COTAL_ACTOR?.trim(),sentinel:env.COTAL_SENTINEL_CREDS?.trim(),bearerCmd:env.COTAL_BEARER_CMD?.trim()};const userSet=Object.values(userVars).filter(Boolean).length;if(userSet>0&&userSet<4)throw new Error("COTAL config: user-mode launch needs ALL of COTAL_OWNER, COTAL_ACTOR, COTAL_SENTINEL_CREDS, COTAL_BEARER_CMD \u2014 a partial set is a broken launcher, not a mode");if(userSet&&credsPath)throw new Error("COTAL config: COTAL_CREDS (static auth) and COTAL_OWNER/... (user-mode auth) are mutually exclusive");const lifecycleUid=env.COTAL_LIFECYCLE_UID?.trim()||void 0;const backfillFloorRaw=env.COTAL_BACKFILL_FLOOR?.trim()||void 0;let backfillFloor;if(backfillFloorRaw!==void 0){const n=Number(backfillFloorRaw);if(!Number.isInteger(n)||n<0)throw new Error(`COTAL config: COTAL_BACKFILL_FLOOR must be a non-negative integer stream sequence, got "${backfillFloorRaw}" (a broken launcher, not a mode)`);backfillFloor=n}const acceptedToken=env.COTAL_ACCEPTED_TOKEN?.trim()||void 0;const managerInstanceId=env.COTAL_MANAGER_INSTANCE?.trim()||void 0;if(managerInstanceId!==void 0)assertLifecycleToken(managerInstanceId,"COTAL_MANAGER_INSTANCE");if(acceptedToken&&!credsPath)throw new Error("COTAL config: COTAL_ACCEPTED_TOKEN names a static issuance and needs COTAL_CREDS beside it (a broken launcher, not a mode)");if((credsPath||userSet===4)&&!lifecycleUid)throw new Error("COTAL config: an authed launch (COTAL_CREDS or user-mode) requires COTAL_LIFECYCLE_UID - the launcher mints it at provision time (a broken launcher, not a mode)");let userAuth;if(userSet===4){let bearerCmd;try{bearerCmd=JSON.parse(userVars.bearerCmd)}catch{throw new Error("COTAL config: COTAL_BEARER_CMD must be a JSON argv array")}if(!Array.isArray(bearerCmd)||!bearerCmd.length||!bearerCmd.every(a=>typeof a==="string"))throw new Error("COTAL config: COTAL_BEARER_CMD must be a non-empty JSON array of strings");userAuth={owner:userVars.owner,actor:userVars.actor,sentinelCreds:readFileSync4(userVars.sentinel,"utf8"),bearerCmd}}const eventsRequired=material?.eventsRequired===true||!material&&envFlag(env,"COTAL_EVENTS_REQUIRED")===true;if(eventsRequired&&!userAuth)throw new Error("COTAL config: COTAL_EVENTS_REQUIRED is valid only for a user-mode registration launch");if(eventsRequired){const principal=userSet===4?{owner:userVars.owner,actor:userVars.actor}:{owner:DEV_OWNER,actor:credsId??declaredId??""};if(!principal.actor)throw new Error("COTAL config: this space requires events, but the session has no stable principal to derive its event channel");const channel=eventChannel(principal);if(!channelInAllow(resolvedAllowPub,channel))throw new Error(`COTAL config: space "${env.COTAL_SPACE?.trim()||link?.space||"demo"}" requires events, but this session's grant does not cover its event channel "${channel}". Widen the whole user-auth actor row with \`cotal actor grant ${principal.actor} --owner ${principal.owner} --scope <current-scope> --allow-subscribe <current-read> --allow-publish '<current-post>,${channel}' --role <current-role> --label <current-label>\`; actor grant replaces the whole row, so preserve every current field.`)}return{space:env.COTAL_SPACE?.trim()||link?.space||"demo",id:credsId??declaredId,lifecycleUid,backfillFloor,acceptedToken,managerInstanceId,creds:boundedCreds?async()=>readFileSync4(credsPath,"utf8"):initialCreds,userAuth,name,role:env.COTAL_ROLE||def?.role||void 0,description:def?.description,tags:def?.tags,meta:def?.meta,capabilities:splitList(env.COTAL_CAPABILITIES).length?splitList(env.COTAL_CAPABILITIES):def?.capabilities,model:env.COTAL_MODEL?.trim()||void 0,variant:env.COTAL_VARIANT?.trim()||void 0,servers:material?.servers||env.COTAL_SERVERS?.trim()||link?.servers||DEFAULT_SERVER,subscribe:resolvedSubscribe,allowSubscribe:resolvedAllowSub,allowPublish:resolvedAllowPub,eventsRequired,quiet:resolvedQuiet,muted:resolvedMuted,kind:assertValidKind(env.COTAL_KIND?.trim()||def?.kind||"agent"),token:material?.token||env.COTAL_TOKEN?.trim()||link?.token,user:link?.user,pass:link?.pass,tls:envFlag(env,"COTAL_TLS")||link?.tls||false,feedbackKey:env.COTAL_FEEDBACK_KEY?.trim()||void 0,feedbackUrl:env.COTAL_FEEDBACK_URL?.trim()||void 0}}import{AsyncLocalStorage as AsyncLocalStorage2}from"node:async_hooks";import{EventEmitter as EventEmitter2}from"node:events";import{hostname}from"node:os";var TURN_PULL_RETRY_MS=15e3;function attributionSafe(s){return peerLabel({name:s})}function fmtFrom(i){return peerLabel({name:i.fromName,role:i.fromRole})}function fmtBody(text2){return text2.split(LINE_BREAK).join("\n ")}function fmtDeliveryItem(i){const field=value=>Array.from(JSON.stringify(value),char=>[91,93,133,8232,8233].includes(char.charCodeAt(0))?`\\u${char.charCodeAt(0).toString(16).padStart(4,"0")}`:char).join("");const metadata2=[`sender_id=${field(i.fromId)}`,...i.id?[`message_id=${field(i.id)}`]:[],...i.contextId?[`context_id=${field(i.contextId)}`]:[],...i.replyTo?[`reply_to=${field(i.replyTo)}`]:[]];return formatItem(i,`[${metadata2.join(" ")}] `)}function formatItem(i,metadata2=""){const h=i.historical?"(history) ":"";const r=i.deliveryCount!==void 0&&i.deliveryCount>1?`(broker redelivery, delivery ${i.deliveryCount}: prior model handoff unknown) `:"";const body=`${metadata2}${h}${r}${fmtBody(i.text)}`;if(i.kind==="dm")return`[DM from ${fmtFrom(i)}] ${body}`;if(i.kind==="anycast")return`[@${attributionSafe(i.service??"")} from ${fmtFrom(i)}] ${body}`;return`[#${attributionSafe(i.channel??"")}${i.mentionsMe?" @you":""} ${fmtFrom(i)}] ${body}`}var legacyRail=new Map;var LEGACY_RAIL_RECHECK_MS=60*6e4;var LEGACY_RAIL_MAX=32;function onLegacyRail(key){const until=legacyRail.get(key);if(until===void 0)return false;if(Date.now()<until)return true;legacyRail.delete(key);return false}function rememberLegacyRail(key){legacyRail.set(key,Date.now()+LEGACY_RAIL_RECHECK_MS);if(legacyRail.size>LEGACY_RAIL_MAX)legacyRail.delete(legacyRail.keys().next().value)}async function invokeUserManager(config2,bearer,command,args,opts={}){opts.signal?.throwIfAborted();const user=config2.userAuth;const endpoint=BASELINE_LIFECYCLE_ENDPOINT;let nc;let caller;let instanceId;let service;let skippedAcceptedRead;const onAbort=()=>{void nc?.close()};const resolve3=(signal=opts.signal,deadlineMs=opts.deadlineMs??1e4)=>resolveService(nc,config2.space,endpoint,caller,{instanceId,deadlineMs,signal,commands:opts.follow?[command,"goal-result"]:[command],...opts.follow&&command!=="goal-result"?{optionalCommands:["goal-result"]}:{}});const resolvePrepared=async(signal=opts.signal,deadline=Date.now()+(opts.deadlineMs??1e4))=>{const remaining=()=>{signal?.throwIfAborted();const left=deadline-Date.now();if(left<=0)throw new EpEnvelopeError("deadline-exceeded","the deadline passed before the manager was resolved; the manager request WAS NOT RUN",void 0,"not-executed");return left};try{return await resolve3(signal,remaining())}catch(error51){if(!skippedAcceptedRead||!isPermissionDenied(error51))throw error51;const{key,connId}=skippedAcceptedRead;skippedAcceptedRead=void 0;remaining();caller=await issuedUserCaller(nc,config2.space,connId,caller);legacyRail.delete(key);return resolve3(signal,remaining())}};const connect3=async(signal=opts.signal,deadline=Date.now()+(opts.deadlineMs??1e4))=>{const token2=await bearer(signal);let credentialId;({caller,instanceId,credentialId}=managerCallerBinding(token2,{space:config2.space,owner:user.owner,actor:user.actor,lifecycleUid:config2.lifecycleUid,instanceId:config2.managerInstanceId}));const connectOpts=standaloneConnectOpts({bearer:token2,sentinelCreds:user.sentinelCreds,tls:config2.tls});signal?.throwIfAborted();const left=deadline-Date.now();if(left<=0)throw new EpEnvelopeError("deadline-exceeded","the deadline passed before the manager was connected; the manager request WAS NOT RUN",void 0,"not-executed");nc=await dialerFor(config2.servers)({servers:config2.servers,...connectOpts,maxReconnectAttempts:0,timeout:left});if(signal?.aborted)onAbort();signal?.throwIfAborted();const railKey=credentialId??token2;if(onLegacyRail(railKey)){skippedAcceptedRead={key:railKey,connId:String(connectOpts.name)}}else{try{caller=await issuedUserCaller(nc,config2.space,String(connectOpts.name),caller)}catch(e){if(!isPermissionDenied(e))throw e;rememberLegacyRail(railKey)}}};const prepare=async(signal,deadline)=>{await connect3(signal,deadline);service=await resolvePrepared(signal,deadline)};const invoke=async(signal=opts.signal)=>{const unfollowable=opts.follow?goalFollowRefusal(service):void 0;if(unfollowable)return unfollowable;const invokeOpts={target:opts.target,deadlineMs:opts.deadlineMs,signal};const result=await invokeCommand(nc,config2.space,service,command,args,invokeOpts);if(result.reply.ok===false&&replyRefusedBeforeEffect(result.reply.error)){try{service=await resolve3(signal);const unfollowable2=opts.follow?goalFollowRefusal(service):void 0;if(unfollowable2)throw new Error(unfollowable2.reply.error.message)}catch(error51){return{...result,reply:{...result.reply,error:{...result.reply.error,message:`${command} WAS NOT RUN; manager instance ${instanceId} refused before effects, and re-resolution failed: ${error51 instanceof Error?error51.message:String(error51)}`}}}}return invokeCommand(nc,config2.space,service,command,args,invokeOpts)}return result};opts.signal?.addEventListener("abort",onAbort,{once:true});try{if(opts.follow)return await opts.follow(invoke,prepare);await connect3();service=await resolvePrepared();return await invoke()}finally{opts.signal?.removeEventListener("abort",onAbort);const control=nc;if(control){let timer;try{await Promise.race([control.drain().catch(()=>control.close()),new Promise(resolve4=>{timer=setTimeout(resolve4,2e3);timer.unref()})])}finally{if(timer!==void 0)clearTimeout(timer);await control.close()}}}}import{createHash as createHash6,randomUUID as randomUUID4}from"node:crypto";var SPAWN_TIMEOUT_MS=4e4;var MANAGER_BEARER_MARGIN_MS=12e4;var CONNECT_GRACE_MS=1e4;function isLocalServer(servers){return servers.split(",").every(s=>/^(?:[a-z]+:\/\/)?(?:[^@/]*@)?(?:localhost|127\.0\.0\.1|\[::1\]|0\.0\.0\.0)(?::\d+)?(?:\/|$)/i.test(s.trim()))}function buildMeta(config2,processCwd){const meta3={...config2.meta??{}};if(config2.model)meta3.model=config2.model;if(config2.variant)meta3.variant=config2.variant;if(config2.connector)meta3.connector=config2.connector;meta3.host=hostname();if(processCwd)meta3.cwd=process.cwd();else delete meta3.cwd;return Object.keys(meta3).length?meta3:void 0}function afterRecallMark(a,b){return a.ts!==b.ts?a.ts>b.ts:a.id>b.id}var MAX_INBOX=200;var MAX_IN_FLIGHT=MAX_INBOX*2;var MAX_AHEAD=256;var CLASSIFICATION_CAP=4096;var FOCUS_EXCLUSION_CAP=4096;var IDLESS_READS=3;var PROTECTED_DISPOSITION_CAP=4096;var MAX_CORRELATIONS=1024;var ENDPOINT_ERROR_LOG_WINDOW_MS=3e4;var MAX_ENDPOINT_NOTICES=16;var NAMED_SIMILAR=5;var STATIC_SLOT_OBSERVATION_DETAIL="ai.cotal.manager.static-slot-observation";var MAX_SETTLED_TURNS=32;function settledTurnError(goalId,deadlineAt){return`turn "${goalId}" was already settled by the run (deadline ${new Date(deadlineAt).toISOString()}), so this yield was not recorded`}var MAX_DATE_MS=864e13;function isPendingTurn(t){const r=t;return typeof r==="object"&&r!==null&&typeof r.goalId==="string"&&typeof r.payload==="string"&&Number.isSafeInteger(r.acceptedAt)&&r.acceptedAt>=0&&Number.isSafeInteger(r.deadlineAt)&&r.deadlineAt>=1&&r.deadlineAt<=MAX_DATE_MS}function idlessDigest(m){return createHash6("sha256").update(JSON.stringify(m)).digest("base64url")}function sleep(ms){return new Promise(r=>setTimeout(r,ms))}function ingestDedupKey(id2){return id2===""?void 0:id2}var AUTOMATIC_QUEUE_STALL_MS=6e5;function renderAskRequest(p){const escalation=renderEscalation(p);if(escalation!=="")return escalation;const ask=p.ask;if(ask===null||typeof ask!=="object")return"";const a=ask;const entries=a.schema!==null&&typeof a.schema==="object"?Object.entries(a.schema):[];const fields=entries.length===0?"any record":entries.map(([k,v])=>`${k}: ${String(v)}`).join(", ");const by=typeof a.deadlineAt==="number"?`, by ${new Date(a.deadlineAt).toISOString()}`:"";const refused=typeof a.refused==="string"?`
|
|
114
114
|
Your last answer was refused: ${a.refused}`:"";return`
|
|
115
115
|
This turn is an ask: the run needs a record from you at step ${String(p.step)} with fields ${fields} (attempt ${String(a.attempt)} of ${String(a.attempts)}${by}).${refused}`+renderPauseAnswer(p,"<json record>")}function renderPauseAnswer(p,value){return`
|
|
116
116
|
Answer through your native Cotal tools: call cotal_describe for endpoint "manager", then cotal_invoke with endpoint="manager", command="run-answer", self=true and args={"runId":${JSON.stringify(p.run)},"stepKey":${JSON.stringify(p.step)},"value":${value}}.
|
|
@@ -125,7 +125,7 @@ ${blocks.join("\n")}
|
|
|
125
125
|
${lines.join("\n")}`}channelInfo(channel){const cfg=this.ep.getChannelConfig(channel);return{description:cfg?.description,instructions:cfg?.instructions,replay:this.ep.channelReplay(channel),registered:cfg!==void 0,event:this.eventChannelOf(channel)}}eventChannelOf(channel){const principal=eventChannelPrincipal(channel);if(!principal)return void 0;const own=this.ep.principal;return principal.owner===own.owner&&principal.actor===own.actor?"own":"agent"}joinedChannels(){return this.ep.joinedChannels()}async listChannels(){const mine=this.ep.joinedChannels();const pending=this.ep.pendingDurableLeaves();const unclosed=new Set(pending);let leaseLive=false;let leaseReadable=false;let daemonMemberships;try{leaseLive=(await this.ep.readDeliveryLease(0))?.ready===true;leaseReadable=true}catch{}if(leaseReadable){try{daemonMemberships=await this.ep.fetchMemberships()}catch{daemonMemberships=void 0;leaseReadable=false}}const health=(channel,joined)=>joined&&this.ep.channelDeliveryClass(channel)==="durable"?!leaseReadable?"unknown":daemonMemberships===void 0?"degraded":daemonMemberships.some(m=>m.channel===channel)&&leaseLive?"active":"degraded":void 0;const rows=(await this.ep.listChannels()).map(c=>{const joined=mine.some(p=>subjectMatches(p,c.channel));return{channel:c.channel,description:c.config?.description,replay:this.ep.channelReplay(c.channel),joined,durableUnclosed:unclosed.has(c.channel),deliveryHealth:health(c.channel,joined),messages:c.messages,mode:this.channelMode(c.channel)??"normal",event:this.eventChannelOf(c.channel)}});const present=new Set(rows.map(r=>r.channel));for(const ch of pending){if(present.has(ch))continue;rows.push({channel:ch,description:void 0,replay:this.ep.channelReplay(ch),joined:false,durableUnclosed:true,deliveryHealth:void 0,messages:0,mode:this.channelMode(ch)??"normal",event:this.eventChannelOf(ch)})}return rows}async joinChannel(channel){await this.requireConnected();return this.ep.joinChannel(channel)}async leaveChannel(channel){await this.requireConnected();return this.ep.leaveChannel(channel)}async requireConnected(){return this.whenConnected(CONNECT_GRACE_MS)}async whenConnected(timeoutMs=CONNECT_GRACE_MS){if(this._connected)return;if(!await this.awaitConnection(timeoutMs))throw new Error(this.notConnectedMessage())}awaitConnection(timeoutMs){return new Promise(resolve3=>{let settled=false;const finish=ok3=>{if(settled)return;settled=true;clearTimeout(timer);this.ep.off("connection",onConnection);resolve3(ok3)};const onConnection=e=>{if(e.connected)finish(true)};const timer=setTimeout(()=>finish(false),Math.max(1,timeoutMs));this.ep.on("connection",onConnection);if(this._connected)finish(true)})}notConnectedMessage(){const issue2=this.connectionIssue;if(issue2)return`not connected to the mesh at ${this.config.servers}: ${issue2}`;const remedy=isLocalServer(this.config.servers)?"is it running? (`cotal up`)":"it did not become reachable \u2014 check that the mesh is up and that this machine can reach it.";return`not connected to the mesh at ${this.config.servers} \u2014 ${remedy}`}handleEndpointError(error51){if(!this._connected&&!this._stopping)this.lastConnectionError=error51.message;this.logEndpointNotice("error",error51)}handleEndpointWarning(error51){this.logEndpointNotice("warning",error51)}logEndpointNotice(kind,error51){const now=Date.now();const fingerprint=error51.message.replace(/oc_[A-Za-z0-9]+_\d+/g,"oc_*");const prior=this.endpointNoticeLog.get(fingerprint);if(prior&&now-prior.lastLoggedAt<ENDPOINT_ERROR_LOG_WINDOW_MS){prior.suppressed++;return}const suffix=prior?.suppressed?` (${prior.suppressed} repeats suppressed)`:"";this.endpointNoticeLog.set(fingerprint,{lastLoggedAt:now,suppressed:0});if(this.endpointNoticeLog.size>MAX_ENDPOINT_NOTICES)this.endpointNoticeLog.delete(this.endpointNoticeLog.keys().next().value);this.log(`endpoint ${kind}: ${error51.message}${suffix}`)}log(msg){process.stderr.write(`[cotal-connector] ${msg}
|
|
126
126
|
`)}};function presenceReadCondition(failure){return`the presence read failed (${failure.message})`}function closeChannelNames(channel,known){const out=[];for(const name of known){if(name!==channel&&editDistanceAtMostOne(channel,name))out.push(name)}out.sort((a,b)=>a.localeCompare(b));return out.slice(0,3)}function editDistanceAtMostOne(a,b){if(a===b)return true;const da=a.length-b.length;if(da>1||da<-1)return false;let i=0;let j=0;let skipped=false;while(i<a.length&&j<b.length){if(a[i]===b[j]){i++;j++;continue}if(skipped)return false;skipped=true;if(a.length>b.length)i++;else if(b.length>a.length)j++;else{i++;j++}}return true}import{tmpdir as tmpdir2}from"node:os";import{join as join4}from"node:path";import{createHash as createHash7,randomBytes as randomBytes3}from"node:crypto";var SUN_PATH_MAX_BYTES=process.platform==="darwin"?104:108;function controlEndpoint(space2,name,token2=randomBytes3(32).toString("base64url")){const id2=createHash7("sha256").update(`${space2}\0${name}\0${process.pid}\0${token2}`).digest("base64url").slice(0,32);const path=process.platform==="win32"?`\\\\.\\pipe\\cotal-${id2}`:join4(tmpdir2(),`cotal-${id2}.sock`);const bytes=Buffer.byteLength(path);if(process.platform!=="win32"&&bytes>SUN_PATH_MAX_BYTES){const tail=`/cotal-${id2}.sock`.length;throw new Error(`control socket path is ${bytes} bytes, over the ${SUN_PATH_MAX_BYTES}-byte sun_path limit on ${process.platform}, so it cannot be bound and the kernel would report only EINVAL: ${path}. The socket name is a fixed ${tail} bytes, so the temp root must be at most ${SUN_PATH_MAX_BYTES-tail} bytes \u2014 TMPDIR is ${Buffer.byteLength(tmpdir2())} bytes (${tmpdir2()}). Point TMPDIR at a shorter directory.`)}return{path,token:token2}}var TRUNCATABLE_FIELDS=[{type:AGUI_EVENT_TYPE.TOOL_CALL_ARGS,field:"delta"},{type:AGUI_EVENT_TYPE.TOOL_CALL_RESULT,field:"content"},{type:AGUI_EVENT_TYPE.TEXT_MESSAGE_CONTENT,field:"delta"}];var EGRESS_FORBIDDEN_TYPES=new Set([AGUI_EVENT_TYPE.TOOL_CALL_ARGS,AGUI_EVENT_TYPE.TOOL_CALL_RESULT]);var KNOWN_EVENT_KEYS_BY_TYPE=new Map([[AGUI_EVENT_TYPE.RUN_STARTED,new Set(["type","timestamp","rawEvent","threadId","runId","parentRunId","input","cotal"])],[AGUI_EVENT_TYPE.RUN_FINISHED,new Set(["type","timestamp","rawEvent","threadId","runId","result","outcome","cotal"])],[AGUI_EVENT_TYPE.RUN_ERROR,new Set(["type","timestamp","rawEvent","message","code","cotal"])],[AGUI_EVENT_TYPE.TEXT_MESSAGE_START,new Set(["type","timestamp","rawEvent","messageId","role","name","cotal"])],[AGUI_EVENT_TYPE.TEXT_MESSAGE_CONTENT,new Set(["type","timestamp","rawEvent","messageId","delta","cotal"])],[AGUI_EVENT_TYPE.TEXT_MESSAGE_END,new Set(["type","timestamp","rawEvent","messageId","cotal"])],[AGUI_EVENT_TYPE.TOOL_CALL_START,new Set(["type","timestamp","rawEvent","toolCallId","toolCallName","parentMessageId","cotal"])],[AGUI_EVENT_TYPE.TOOL_CALL_ARGS,new Set(["type","timestamp","rawEvent","toolCallId","delta","cotal"])],[AGUI_EVENT_TYPE.TOOL_CALL_END,new Set(["type","timestamp","rawEvent","toolCallId","cotal"])],[AGUI_EVENT_TYPE.TOOL_CALL_RESULT,new Set(["type","timestamp","rawEvent","messageId","toolCallId","content","role","cotal"])],[AGUI_EVENT_TYPE.REASONING_MESSAGE_START,new Set(["type","timestamp","rawEvent","messageId","role","cotal"])],[AGUI_EVENT_TYPE.REASONING_MESSAGE_CONTENT,new Set(["type","timestamp","rawEvent","messageId","delta","cotal"])],[AGUI_EVENT_TYPE.REASONING_MESSAGE_END,new Set(["type","timestamp","rawEvent","messageId","cotal"])],[AGUI_EVENT_TYPE.CUSTOM,new Set(["type","timestamp","rawEvent","name","value","cotal"])]]);var SIZING_ID="S".repeat(64);var SIZING_EXPECTATION=Number.MAX_SAFE_INTEGER;var str=v=>typeof v==="string"?v:void 0;var CONT=" \xB7 ";var TEXT_PREFIX="\xBB ";var THINK_PREFIX="(thinking) ";var TOOL_PREFIX="\u2699 ";var RESULT_PREFIX=" \u21B3 ";var BLOCK_START_CHARS=new Set([..."#>|`~=_*+-[<0123456789"," "]);function renderEvents(events){const lines=[];const text2=new Map;const reasoning=new Map;const toolName=new Map;const toolArgs=new Map;const emit=(first,cont,body)=>{const[head,...rest]=body.split("\n");lines.push(first+head);for(const l of rest)lines.push(cont+l)};const flush=(map2,id2,first,cont,suffix="")=>{const acc=map2.get(id2);if(acc!==void 0&&acc.length>0)emit(first,cont,acc+suffix);map2.delete(id2)};for(const e of events){const type=typeof e==="object"&&e!==null?str(e.type):void 0;switch(type){case AGUI_EVENT_TYPE.RUN_STARTED:emit("\u25B8 ",CONT,`run ${str(e.runId)??"?"} started`);break;case AGUI_EVENT_TYPE.RUN_FINISHED:{const outcome=str(e.outcome?.type);emit("\u25C2 ",CONT,`run ${str(e.runId)??"?"} finished${outcome?` (${outcome})`:""}`);break}case AGUI_EVENT_TYPE.RUN_ERROR:{const code=str(e.code);emit("\u2717 ",CONT,`run error${code?` [${code}]`:""}: ${str(e.message)??"(no message)"}`);break}case AGUI_EVENT_TYPE.TEXT_MESSAGE_START:text2.set(str(e.messageId)??"","");break;case AGUI_EVENT_TYPE.TEXT_MESSAGE_CONTENT:{const id2=str(e.messageId)??"";text2.set(id2,(text2.get(id2)??"")+(str(e.delta)??""));break}case AGUI_EVENT_TYPE.TEXT_MESSAGE_END:flush(text2,str(e.messageId)??"",TEXT_PREFIX,TEXT_PREFIX);break;case AGUI_EVENT_TYPE.REASONING_MESSAGE_START:reasoning.set(str(e.messageId)??"","");break;case AGUI_EVENT_TYPE.REASONING_MESSAGE_CONTENT:{const id2=str(e.messageId)??"";reasoning.set(id2,(reasoning.get(id2)??"")+(str(e.delta)??""));break}case AGUI_EVENT_TYPE.REASONING_MESSAGE_END:flush(reasoning,str(e.messageId)??"",THINK_PREFIX,CONT);break;case AGUI_EVENT_TYPE.TOOL_CALL_START:{const id2=str(e.toolCallId)??"";toolName.set(id2,str(e.toolCallName)??"?");toolArgs.set(id2,"");break}case AGUI_EVENT_TYPE.TOOL_CALL_ARGS:{const id2=str(e.toolCallId)??"";toolArgs.set(id2,(toolArgs.get(id2)??"")+(str(e.delta)??""));break}case AGUI_EVENT_TYPE.TOOL_CALL_END:{const id2=str(e.toolCallId)??"";emit(TOOL_PREFIX,CONT,`${toolName.get(id2)??"?"}(${toolArgs.get(id2)??""})`);toolName.delete(id2);toolArgs.delete(id2);break}case AGUI_EVENT_TYPE.TOOL_CALL_RESULT:emit(RESULT_PREFIX,CONT,str(e.content)??"(no content)");break;case AGUI_EVENT_TYPE.CUSTOM:emit("\u2022 ",CONT,`custom ${str(e.name)??"(unnamed)"}`);break;default:emit("\u2022 ",CONT,`unrecognised event ${JSON.stringify(type??null)}`)}}for(const id2 of[...text2.keys()])flush(text2,id2,TEXT_PREFIX,TEXT_PREFIX," \u2026");for(const id2 of[...reasoning.keys()])flush(reasoning,id2,THINK_PREFIX,CONT," \u2026");for(const id2 of[...toolName.keys()])emit(TOOL_PREFIX,CONT,`${toolName.get(id2)??"?"}(${toolArgs.get(id2)??""}) \u2026`);return lines}var aguiFramePartRenderer=Object.freeze({kind:"part-renderer",name:AGUI_FRAME_KIND,render(part){if(!isAguiFramePart(part))return`[not an AG-UI frame]`;const events=part.events;if(!Array.isArray(events)||events.length===0)return`[AG-UI frame carrying no events]`;const lines=renderEvents(events);return lines.length>0?lines.join("\n"):`[AG-UI frame with ${events.length} event(s) and nothing to show]`}});function registerAguiFramePartRenderer(){if(registry2.has("part-renderer",AGUI_FRAME_KIND))return;registry2.register(aguiFramePartRenderer)}registerAguiFramePartRenderer();import{connect as connect2,createServer}from"node:net";import{lstatSync as lstatSync4,unlinkSync as unlinkSync3}from"node:fs";import{createHash as createHash8,timingSafeEqual}from"node:crypto";var HANDOFF_DEADLINE_MS=5e3;var LEGACY_WRITE_DEADLINE_MS=5e3;var MAX_FRAME_BYTES=1<<20;var AUTH_DEADLINE_MS=5e3;function tokenMatches(presented,digest){if(typeof presented!=="string")return false;return timingSafeEqual(createHash8("sha256").update(presented).digest(),digest)}function writeReply(sock,reply,awaitHandoff){return new Promise(resolve3=>{let settled=false;const done=ok3=>{if(settled)return;settled=true;resolve3(ok3)};sock.once("error",()=>done(false));sock.once("close",()=>done(false));if(!awaitHandoff){const stall=setTimeout(()=>done(false),LEGACY_WRITE_DEADLINE_MS);stall.unref?.();try{sock.end(JSON.stringify(reply)+"\n",(err3=>{clearTimeout(stall);done(!err3)}))}catch{clearTimeout(stall);done(false)}return}const deadline=setTimeout(()=>{sock.destroy();done(false)},HANDOFF_DEADLINE_MS);deadline.unref?.();let receipt="";sock.on("data",d=>{receipt+=d;if(!receipt.includes("\n"))return;clearTimeout(deadline);try{sock.end()}catch{}done(true)});try{sock.write(JSON.stringify(reply)+"\n",err3=>{if(!err3)return;clearTimeout(deadline);done(false)})}catch{clearTimeout(deadline);done(false)}})}function startControlServer(agent,endpoint,handle,opts={}){const{path}=endpoint;const digest=createHash8("sha256").update(endpoint.token).digest();const server=createServer(sock=>{let buf="";let handled=false;sock.setEncoding("utf8");const deadline=setTimeout(()=>sock.destroy(),AUTH_DEADLINE_MS);deadline.unref?.();sock.on("close",()=>clearTimeout(deadline));sock.on("data",async d=>{if(handled)return;buf+=d;if(buf.length>MAX_FRAME_BYTES){sock.destroy();return}const nl=buf.indexOf("\n");if(nl<0)return;handled=true;clearTimeout(deadline);let frame={};try{frame=JSON.parse(buf.slice(0,nl)||"{}")}catch{}if(!tokenMatches(frame.token,digest)){sock.destroy();return}const op=frame.op;if(op==="shutdown"){try{sock.end(JSON.stringify({ok:true})+"\n")}catch{}opts.onShutdown?.();return}if(op==="session"){const sessionId=opts.onSession?.();try{sock.end(JSON.stringify(sessionId?{ok:true,sessionId}:{ok:false,error:"session not ready"})+"\n")}catch{}return}const ev=frame.event??{};const awaitHandoff=frame.handoff===true;const reply=await handle(agent,ev);const delivered=await writeReply(sock,reply,awaitHandoff);opts.onReply?.(ev,delivered)});sock.on("error",()=>{})});let bound=false;let retried=false;const emit=server.emit.bind(server);server.emit=(event,...args)=>{const error51=args[0];if(event!=="error"||bound||retried||process.platform==="win32"||path.startsWith("\0")||error51?.code!=="EADDRINUSE")return emit(event,...args);retried=true;let original;try{original=lstatSync4(path);if(!original.isSocket())return emit(event,...args)}catch(e){if(e.code!=="ENOENT")return emit(event,...args)}const probe=connect2(path);let settled=false;const finish=stale=>{if(settled)return;settled=true;clearTimeout(deadline);probe.destroy();server.off("close",cancel);if(!stale){emit(event,...args);return}try{const current=lstatSync4(path);if(!original||!current.isSocket()||current.dev!==original.dev||current.ino!==original.ino){emit(event,...args);return}unlinkSync3(path)}catch(e){if(e.code!=="ENOENT"){emit("error",e);return}}server.listen(path)};const cancel=()=>{settled=true;clearTimeout(deadline);probe.destroy()};const deadline=setTimeout(()=>finish(false),250);server.once("close",cancel);probe.once("connect",()=>finish(false));probe.once("error",e=>finish(e.code==="ECONNREFUSED"||e.code==="ENOENT"));return true};server.on("error",e=>{process.stderr.write(`[cotal-connector] control server error: ${e.message}
|
|
127
127
|
`);if(opts.fatalBind&&!bound)process.exit(1)});server.listen(path,()=>{bound=true;process.stderr.write(`[cotal-connector] control socket: ${path}
|
|
128
|
-
`)});return server}var ok=text2=>({text:text2});var err=text2=>({text:text2,isError:true});async function submitFeedback(input,options={}){const url2=options.url??(options.key?FEEDBACK_URL:PUBLIC_FEEDBACK_URL);const headers3={"content-type":"application/json"};const body={...input};if(options.key){headers3.authorization=`Bearer ${options.key}`}else{if(!options.email)return err("Keyless feedback goes to the public cotal.ai intake, which requires a traceable contact email \u2014 ask the user for one and retry with the email argument (or set COTAL_FEEDBACK_EMAIL).");body.email=options.email}try{const res=await fetch(url2,{method:"POST",headers:headers3,body:JSON.stringify(body)});const raw=await res.text();let reply={};if(raw)try{reply=JSON.parse(raw)}catch{reply={error:raw}}if(!res.ok)return err(`Feedback rejected (${res.status}${reply.error?`: ${reply.error}`:""}).`);const note=reply.published===false?" (stored, but the internal feedback channel publish failed)":"";return ok(`Feedback sent${reply.id?` (id ${reply.id})`:""}${note}. Thanks!`)}catch(e){return err(`Couldn't reach the feedback intake at ${url2}: ${e.message}`)}}import{execFileSync as execFileSync3}from"node:child_process";init_external();init_external();import{createHash as createHash9}from"node:crypto";import{readFileSync as readFileSync5}from"node:fs";import{join as join5}from"node:path";import{gunzipSync}from"node:zlib";var DOCS_VERSION="0.133.3";function loadDocsMetadata(){return{"version":"0.133.3","pages":[{"slug":"what-is-cotal","title":"What is Cotal","kind":"Start here (informative)","category":"Start here","summary":"Cotal is an open pub/sub standard for AI agents and software services to work together."},{"slug":"getting-started","title":"Quickstart","kind":"Start here (informative)","category":"Start here","summary":"Paste this into any coding agent (Claude Code, OpenCode, Cursor, Codex) and it will do the whole page for you:"},{"slug":"architecture","title":"Architecture","kind":"Concept (informative)","category":"Concept","summary":"Cotal is built as a thin waist: the normative wire contract (subjects, message schemas, presence/discovery, delivery semantics, the auth grammar) is the standard (SPEC), and everything else is a pl\u2026"},{"slug":"mcp-tools","title":"MCP tool catalog","kind":"Reference: the `cotal_*` tool surface every connected agent gets.","category":"Reference","summary":"The tools are defined once, platform-neutrally, in @cotal-ai/connector-core and rendered onto each host's native tool API (an MCP server for Claude Code, Codex and Jcode, native plugin tools for Op\u2026"},{"slug":"channels-and-permissions","title":"Channel permissions","kind":"Reference (informative task card)","category":"Reference","summary":"Channel permissions decide who can read, who can post, and what each agent tunes into at boot."},{"slug":"identity-and-auth","title":"Identity","kind":"Concept (informative)","category":"Concept","summary":"Who can do what on a mesh, and how it is enforced."},{"slug":"agent-files","title":"Agent files","kind":"Reference (the persisted form of an agent's identity + persona, read by every launcher)","category":"Reference","summary":"An agent's identity and persona live in one Markdown file instead of being passed flag-by-flag, the same shape Claude Code uses for subagents:"},{"slug":"api-reference","title":"API reference","kind":"Reference (informative)","category":"Reference","summary":"Cotal exposes a wire protocol, TypeScript libraries, CLI commands and agent tools."},{"slug":"auth-api","title":"Auth HTTP API","kind":"Reference (informative)","category":"Reference","summary":"HTTP interface of the stock auth public listener: 11 paths and 12 operations."},{"slug":"authoring-a-connector","title":"Authoring a connector","kind":"Reference: describes the TypeScript reference implementation, not the wire contract.","category":"Reference","summary":"A connector teaches Cotal how to launch one agent harness (Claude Code, OpenCode, your own) as a mesh node."},{"slug":"build-a-client","title":"Build a Cotal client","kind":"Guide (informative)","category":"Guide","summary":"This page is the reading order for implementing a Cotal client in another language (Go, Python, Rust, or anything with a NATS client library) against the spec, without reimplementing the protocol."},{"slug":"cli","title":"`cotal` CLI reference","kind":"Reference: describes the TypeScript reference implementation (the `cotal` CLI), not the wire contract.","category":"Reference","summary":"cotal is the operator command line for the reference implementation: bring a mesh up, mint identities, launch agents, watch what they do, and tear it all down."},{"slug":"config","title":"Configuration","kind":"Reference: describes the TypeScript reference implementation (the `cotal` CLI and connectors), not the wire contract.","category":"Reference","summary":"Four things configure a Cotal workstation: the config file (per-connector settings, notably which of your MCP servers get shared with spawned agents), your preferences (the defaults your own comman\u2026"},{"slug":"connect-claude","title":"Connect Claude","kind":"Guide (informative)","category":"Guide","summary":"The Claude Code connector turns a real claude session into a Cotal mesh peer."},{"slug":"connect-codex","title":"Connect Codex (beta)","kind":"Guide (informative)","category":"Guide","summary":"OpenAI Codex joins a Cotal mesh as a lateral peer: the same cotal tool surface, the same message delivery and attention model as the other connectors, plus mid-turn steering: a directed peer messag\u2026"},{"slug":"connect-hermes","title":"Connect Hermes (alpha)","kind":"Guide (informative)","category":"Guide","summary":"Hermes (Nous Research) joins a Cotal mesh as a lateral peer, with the same shared cotal tool surface and delivery model as the other connectors."},{"slug":"connect-jcode","title":"Connect Jcode (beta)","kind":"Guide (informative)","category":"Guide","summary":"Jcode joins a Cotal mesh as a lateral peer."},{"slug":"connect-opencode","title":"Connect OpenCode (beta)","kind":"Guide (informative)","category":"Guide","summary":"OpenCode joins a Cotal mesh as a lateral peer, at parity with Claude Code: the same cotal tool surface, the same message delivery and attention model."},{"slug":"connect-pi","title":"Connect pi (alpha)","kind":"Guide (informative)","category":"Guide","summary":"@cotal-ai/pi is Cotal's first host-native framework adapter."},{"slug":"connectors","title":"Connectors","kind":"Guide (informative)","category":"Guide","summary":"Every connector puts a real agent session on the mesh with the same cotal tools, presence, and delivery model (MCP tools)."},{"slug":"control-surface","title":"The control surface","kind":"Concept (informative)","category":"Concept","summary":"Cotal once had a privileged control rail: a fixed set of named service tiers (self / manager / admin / delivery) on their own ctl."},{"slug":"dashboard-api","title":"Dashboard HTTP API","kind":"Reference (informative)","category":"Reference","summary":"HTTP interface of the @cotal-ai/web reference implementation."},{"slug":"define-a-team","title":"Define a team","kind":"Guide (informative)","category":"Guide","summary":"The Quickstart gives you one agent. To run a specific team (your own channels, your own agents, and the channel access for each agent), describe it once in a cotal.yaml and launch it with a single\u2026"},{"slug":"delivery-daemon","title":"The delivery daemon (Plane-3)","kind":"Concept (informative)","category":"Concept","summary":"Live channel delivery is at-most-once: a message reaches only the peers subscribed at the moment it is published (SPEC \xA74)."},{"slug":"deploy","title":"Deploying agent teams","kind":"Guide (informative)","category":"Guide","summary":"The deploy/ tree runs a team of agents in an isolated container that dials out to an existing Cotal broker."},{"slug":"embedding","title":"Embedding Cotal","kind":"Guide (informative)","category":"Guide","summary":"The cotal binary in this repo is one composition root: an operator CLI."},{"slug":"examples","title":"Examples","kind":"Guide (informative)","category":"Guide","summary":"Examples live in examples/, one self-contained folder each."},{"slug":"glossary","title":"Glossary","kind":"Reference (informative)","category":"Reference","summary":"One-line definitions of the terms used across these docs and the spec."},{"slug":"lang-card","title":"The cotal-lang card","kind":"Reference (informative)","category":"Reference","summary":"One page to write a correct workflow program."},{"slug":"manifest","title":"Mesh manifest (`cotal.yaml`)","kind":"Reference: every field of the mesh manifest.","category":"Reference","summary":"A manifest (cotal.yaml, kind: Mesh) describes a whole team (its channels, its agents, and who may read and post where) in one file."},{"slug":"mesh-view","title":"MeshView","kind":"Reference: TypeScript observer surfaces (`MeshView`)","category":"Reference","summary":"MeshView is the CLI's shared model for the terminal console and its plain stream."},{"slug":"presence-and-delivery","title":"Message flow","kind":"Concept (informative)","category":"Concept","summary":"How peers see each other and how messages reach them: the presence directory, the three delivery modes, and the two delivery guarantees."},{"slug":"release","title":"Publishing a release","kind":"Project (non-normative maintainer notes)","category":"Project","summary":"Cotal uses pnpm, Changesets and one GitHub Actions workflow."},{"slug":"roadmap","title":"Roadmap","kind":"Project (non-normative)","category":"Project","summary":"Cotal is pre-1.0. The wire contract (v0.x) may still change under the change process. This page tracks what is deliberately not built yet, and the direction each area is headed."},{"slug":"run-a-mesh","title":"Run a mesh","kind":"Guide (informative)","category":"Guide","summary":"Day-to-day operation of a local mesh: what cotal up actually runs, how spawning resolves personas, harnesses, and models, how to reach a mesh from any directory, and the operator-only maintenance v\u2026"},{"slug":"security","title":"Security model","kind":"Concept (informative threat model)","category":"Concept","summary":"Cotal v0 provides containment and sender authenticity for peers sharing one trusted NATS broker."},{"slug":"setup-internals","title":"Setup internals (maintainer notes)","kind":"Project (non-normative maintainer notes)","category":"Project","summary":"cotal setup (implementations/cli/src/commands/setup.ts) saves configuration by default: it checks prerequisites, sets up the chosen application and runtimes, and seeds persona files."},{"slug":"spaces","title":"Spaces","kind":"Concept (informative)","category":"Concept","summary":"The space concept, and why it is distinct from a channel."},{"slug":"stability","title":"Substrate stability","kind":"Project (informative)","category":"Project","summary":"Cotal's packages are pre-1.0 and publish in lockstep."},{"slug":"telemetry","title":"Telemetry","kind":"Reference","category":"Reference","summary":"The cotal CLI sends usage data about commands, failures and platforms."},{"slug":"transport","title":"Transport vs protocol","kind":"Concept (informative)","category":"Concept","summary":"What in Cotal is the protocol, what is the transport, and what a transport binding must provide."},{"slug":"upgrading","title":"Upgrading a running deployment","kind":"Guide (informative)","category":"Guide","summary":"Substrate stability tells you what the version numbers promise."},{"slug":"using-cotal","title":"Choose a workflow","kind":"Guide (informative)","category":"Guide","summary":"Cotal can run a local team, connect a session to a shared space, or expose a service to agents."},{"slug":"watch-a-mesh","title":"Watch a mesh","kind":"Guide (informative)","category":"Guide","summary":"Cotal's watch surfaces show who is present, their reported activity and the messages your credential permits you to read."},{"slug":"workflows","title":"Workflow runs","kind":"Concept (informative)","category":"Concept","summary":"A workflow run is a program that coordinates agents over hours or days and survives the process that started it."}],"spec":{"title":"Cotal Wire Specification"},"lang":{"title":"Cotal Lang: the workflow language"},"schema":{"title":"Cotal message schema (JSON Schema)"}}}function loadDocsBundle(){const packed=readFileSync5(join5(import.meta.dirname,"docs-bundle.bin"));if(packed.length!==979447||createHash9("sha256").update(packed).digest("hex")!=="11b6e2816284e544746e48544b7e0e5e9448c2b5a4f9f217a10eea5e83df1a33")throw new Error("docs data file docs-bundle.bin beside this module is not the one built with it");return JSON.parse(gunzipSync(packed).toString("utf8"))}function loadDocsIndex(){const packed=readFileSync5(join5(import.meta.dirname,"docs-index.bin"));if(packed.length!==437020||createHash9("sha256").update(packed).digest("hex")!=="b3053267b8b24fd23ca8a552e25d45bfa14d11c4e33b8aba29acc7af58eb5e5e")throw new Error("docs data file docs-index.bin beside this module is not the one built with it");return gunzipSync(packed)}var TOKEN=/[a-z0-9_$.#>*-]+/gi;var EDGE=/^[.>*#-]+|[.>*#-]+$/g;function tokenize(s){const raw=s.toLowerCase().match(TOKEN);if(!raw)return[];const out=[];for(const r of raw){if(r.length>=2)out.push(r);const t=r.replace(EDGE,"");if(t.length>=2&&t!==r)out.push(t);if(t.includes(".")){for(const seg of t.split("."))if(seg.length>=2)out.push(seg)}}return out}var STOP=new Set("a an and are as at be by do for from has how in is it of on or that the this to use using was what when where which who with you your".split(" "));function decodeIndex(bytes,bodyLengths,version2){if(bytes.length<4)throw new Error("docs index is truncated or malformed");const headerLength=bytes.readUInt32LE(0);if(4+headerLength>bytes.length)throw new Error("docs index is truncated or malformed");const header=JSON.parse(bytes.toString("utf8",4,4+headerLength));if(header.version!==version2||header.bodyLengths.length!==bodyLengths.length||header.bodyLengths.some((length2,i)=>length2!==bodyLengths[i]))throw new Error("docs index does not match the docs bundle it is searching");const n=header.sections;const length=4*n+header.terms.length+1+2*header.postings;if(bytes.length-4-headerLength!==4*length)throw new Error("docs index is truncated or malformed");const columns=new Uint32Array(length);for(let i=0;i<length;i++)columns[i]=bytes.readUInt32LE(4+headerLength+4*i);const offsets=4*n;const sectionColumn=offsets+header.terms.length+1;let total=0;for(let i=0;i<n;i++)total+=columns[3*n+i];return{sections:n,terms:header.terms,headings:header.headings,source:columns.subarray(0,n),start:columns.subarray(n,2*n),end:columns.subarray(2*n,3*n),length:columns.subarray(3*n,4*n),offsets:columns.subarray(offsets,sectionColumn),postSection:columns.subarray(sectionColumn,sectionColumn+header.postings),postWeight:columns.subarray(sectionColumn+header.postings),avgdl:total/Math.max(1,n)}}var indexed;function metadata(){return indexed??=loadDocsMetadata()}var bundled;function bundle(){return bundled??=loadDocsBundle()}var REMOTE_BASE="https://docs.cotal.ai";function resolvePage(page){const key=page.trim().toLowerCase().replace(/\.md$/,"");if(key==="spec")return{slug:"spec",title:bundle().spec.title,kind:"normative",category:"normative",summary:"",body:bundle().spec.body};if(key==="lang"||key==="cotal-lang")return{slug:"lang",title:bundle().lang.title,kind:"normative",category:"normative",summary:"",body:bundle().lang.body};if(key==="schema")return{slug:"schema",title:bundle().schema.title,kind:"reference",category:"reference",summary:"",body:bundle().schema.body};return bundle().pages.find(p=>p.slug===key)}function remoteUrl(slug){const base=`${REMOTE_BASE}/v/${bundle().version}`;if(slug==="schema")return`${base}/cotal.schema.json`;if(slug==="lang")return`${base}/cotal-lang.md`;return`${base}/${slug}.md`}function renderDocsIndex(){const b=metadata();const rows=b.pages.map(p=>{const kind=p.kind?`: ${p.kind}`:"";return`- \`${p.slug}\`${kind}
|
|
128
|
+
`)});return server}var ok=text2=>({text:text2});var err=text2=>({text:text2,isError:true});async function submitFeedback(input,options={}){const url2=options.url??(options.key?FEEDBACK_URL:PUBLIC_FEEDBACK_URL);const headers3={"content-type":"application/json"};const body={...input};if(options.key){headers3.authorization=`Bearer ${options.key}`}else{if(!options.email)return err("Keyless feedback goes to the public cotal.ai intake, which requires a traceable contact email \u2014 ask the user for one and retry with the email argument (or set COTAL_FEEDBACK_EMAIL).");body.email=options.email}try{const res=await fetch(url2,{method:"POST",headers:headers3,body:JSON.stringify(body)});const raw=await res.text();let reply={};if(raw)try{reply=JSON.parse(raw)}catch{reply={error:raw}}if(!res.ok)return err(`Feedback rejected (${res.status}${reply.error?`: ${reply.error}`:""}).`);const note=reply.published===false?" (stored, but the internal feedback channel publish failed)":"";return ok(`Feedback sent${reply.id?` (id ${reply.id})`:""}${note}. Thanks!`)}catch(e){return err(`Couldn't reach the feedback intake at ${url2}: ${e.message}`)}}import{execFileSync as execFileSync3}from"node:child_process";init_external();init_external();import{createHash as createHash9}from"node:crypto";import{readFileSync as readFileSync5}from"node:fs";import{join as join5}from"node:path";import{gunzipSync}from"node:zlib";var DOCS_VERSION="0.133.4";function loadDocsMetadata(){return{"version":"0.133.4","pages":[{"slug":"what-is-cotal","title":"What is Cotal","kind":"Start here (informative)","category":"Start here","summary":"Cotal is an open pub/sub standard for AI agents and software services to work together."},{"slug":"getting-started","title":"Quickstart","kind":"Start here (informative)","category":"Start here","summary":"Paste this into any coding agent (Claude Code, OpenCode, Cursor, Codex) and it will do the whole page for you:"},{"slug":"architecture","title":"Architecture","kind":"Concept (informative)","category":"Concept","summary":"Cotal is built as a thin waist: the normative wire contract (subjects, message schemas, presence/discovery, delivery semantics, the auth grammar) is the standard (SPEC), and everything else is a pl\u2026"},{"slug":"mcp-tools","title":"MCP tool catalog","kind":"Reference: the `cotal_*` tool surface every connected agent gets.","category":"Reference","summary":"The tools are defined once, platform-neutrally, in @cotal-ai/connector-core and rendered onto each host's native tool API (an MCP server for Claude Code, Codex and Jcode, native plugin tools for Op\u2026"},{"slug":"channels-and-permissions","title":"Channel permissions","kind":"Reference (informative task card)","category":"Reference","summary":"Channel permissions decide who can read, who can post, and what each agent tunes into at boot."},{"slug":"identity-and-auth","title":"Identity","kind":"Concept (informative)","category":"Concept","summary":"Who can do what on a mesh, and how it is enforced."},{"slug":"agent-files","title":"Agent files","kind":"Reference (the persisted form of an agent's identity + persona, read by every launcher)","category":"Reference","summary":"An agent's identity and persona live in one Markdown file instead of being passed flag-by-flag, the same shape Claude Code uses for subagents:"},{"slug":"api-reference","title":"API reference","kind":"Reference (informative)","category":"Reference","summary":"Cotal exposes a wire protocol, TypeScript libraries, CLI commands and agent tools."},{"slug":"auth-api","title":"Auth HTTP API","kind":"Reference (informative)","category":"Reference","summary":"HTTP interface of the stock auth public listener: 11 paths and 12 operations."},{"slug":"authoring-a-connector","title":"Authoring a connector","kind":"Reference: describes the TypeScript reference implementation, not the wire contract.","category":"Reference","summary":"A connector teaches Cotal how to launch one agent harness (Claude Code, OpenCode, your own) as a mesh node."},{"slug":"build-a-client","title":"Build a Cotal client","kind":"Guide (informative)","category":"Guide","summary":"This page is the reading order for implementing a Cotal client in another language (Go, Python, Rust, or anything with a NATS client library) against the spec, without reimplementing the protocol."},{"slug":"cli","title":"`cotal` CLI reference","kind":"Reference: describes the TypeScript reference implementation (the `cotal` CLI), not the wire contract.","category":"Reference","summary":"cotal is the operator command line for the reference implementation: bring a mesh up, mint identities, launch agents, watch what they do, and tear it all down."},{"slug":"config","title":"Configuration","kind":"Reference: describes the TypeScript reference implementation (the `cotal` CLI and connectors), not the wire contract.","category":"Reference","summary":"Four things configure a Cotal workstation: the config file (per-connector settings, notably which of your MCP servers get shared with spawned agents), your preferences (the defaults your own comman\u2026"},{"slug":"connect-claude","title":"Connect Claude","kind":"Guide (informative)","category":"Guide","summary":"The Claude Code connector turns a real claude session into a Cotal mesh peer."},{"slug":"connect-codex","title":"Connect Codex (beta)","kind":"Guide (informative)","category":"Guide","summary":"OpenAI Codex joins a Cotal mesh as a lateral peer: the same cotal tool surface, the same message delivery and attention model as the other connectors, plus mid-turn steering: a directed peer messag\u2026"},{"slug":"connect-hermes","title":"Connect Hermes (alpha)","kind":"Guide (informative)","category":"Guide","summary":"Hermes (Nous Research) joins a Cotal mesh as a lateral peer, with the same shared cotal tool surface and delivery model as the other connectors."},{"slug":"connect-jcode","title":"Connect Jcode (beta)","kind":"Guide (informative)","category":"Guide","summary":"Jcode joins a Cotal mesh as a lateral peer."},{"slug":"connect-opencode","title":"Connect OpenCode (beta)","kind":"Guide (informative)","category":"Guide","summary":"OpenCode joins a Cotal mesh as a lateral peer, at parity with Claude Code: the same cotal tool surface, the same message delivery and attention model."},{"slug":"connect-pi","title":"Connect pi (alpha)","kind":"Guide (informative)","category":"Guide","summary":"@cotal-ai/pi is Cotal's first host-native framework adapter."},{"slug":"connectors","title":"Connectors","kind":"Guide (informative)","category":"Guide","summary":"Every connector puts a real agent session on the mesh with the same cotal tools, presence, and delivery model (MCP tools)."},{"slug":"control-surface","title":"The control surface","kind":"Concept (informative)","category":"Concept","summary":"Cotal once had a privileged control rail: a fixed set of named service tiers (self / manager / admin / delivery) on their own ctl."},{"slug":"dashboard-api","title":"Dashboard HTTP API","kind":"Reference (informative)","category":"Reference","summary":"HTTP interface of the @cotal-ai/web reference implementation."},{"slug":"define-a-team","title":"Define a team","kind":"Guide (informative)","category":"Guide","summary":"The Quickstart gives you one agent. To run a specific team (your own channels, your own agents, and the channel access for each agent), describe it once in a cotal.yaml and launch it with a single\u2026"},{"slug":"delivery-daemon","title":"The delivery daemon (Plane-3)","kind":"Concept (informative)","category":"Concept","summary":"Live channel delivery is at-most-once: a message reaches only the peers subscribed at the moment it is published (SPEC \xA74)."},{"slug":"deploy","title":"Deploying agent teams","kind":"Guide (informative)","category":"Guide","summary":"The deploy/ tree runs a team of agents in an isolated container that dials out to an existing Cotal broker."},{"slug":"embedding","title":"Embedding Cotal","kind":"Guide (informative)","category":"Guide","summary":"The cotal binary in this repo is one composition root: an operator CLI."},{"slug":"examples","title":"Examples","kind":"Guide (informative)","category":"Guide","summary":"Examples live in examples/, one self-contained folder each."},{"slug":"glossary","title":"Glossary","kind":"Reference (informative)","category":"Reference","summary":"One-line definitions of the terms used across these docs and the spec."},{"slug":"lang-card","title":"The cotal-lang card","kind":"Reference (informative)","category":"Reference","summary":"One page to write a correct workflow program."},{"slug":"manifest","title":"Mesh manifest (`cotal.yaml`)","kind":"Reference: every field of the mesh manifest.","category":"Reference","summary":"A manifest (cotal.yaml, kind: Mesh) describes a whole team (its channels, its agents, and who may read and post where) in one file."},{"slug":"mesh-view","title":"MeshView","kind":"Reference: TypeScript observer surfaces (`MeshView`)","category":"Reference","summary":"MeshView is the CLI's shared model for the terminal console and its plain stream."},{"slug":"presence-and-delivery","title":"Message flow","kind":"Concept (informative)","category":"Concept","summary":"How peers see each other and how messages reach them: the presence directory, the three delivery modes, and the two delivery guarantees."},{"slug":"release","title":"Publishing a release","kind":"Project (non-normative maintainer notes)","category":"Project","summary":"Cotal uses pnpm, Changesets and one GitHub Actions workflow."},{"slug":"roadmap","title":"Roadmap","kind":"Project (non-normative)","category":"Project","summary":"Cotal is pre-1.0. The wire contract (v0.x) may still change under the change process. This page tracks what is deliberately not built yet, and the direction each area is headed."},{"slug":"run-a-mesh","title":"Run a mesh","kind":"Guide (informative)","category":"Guide","summary":"Day-to-day operation of a local mesh: what cotal up actually runs, how spawning resolves personas, harnesses, and models, how to reach a mesh from any directory, and the operator-only maintenance v\u2026"},{"slug":"security","title":"Security model","kind":"Concept (informative threat model)","category":"Concept","summary":"Cotal v0 provides containment and sender authenticity for peers sharing one trusted NATS broker."},{"slug":"setup-internals","title":"Setup internals (maintainer notes)","kind":"Project (non-normative maintainer notes)","category":"Project","summary":"cotal setup (implementations/cli/src/commands/setup.ts) saves configuration by default: it checks prerequisites, sets up the chosen application and runtimes, and seeds persona files."},{"slug":"spaces","title":"Spaces","kind":"Concept (informative)","category":"Concept","summary":"The space concept, and why it is distinct from a channel."},{"slug":"stability","title":"Substrate stability","kind":"Project (informative)","category":"Project","summary":"Cotal's packages are pre-1.0 and publish in lockstep."},{"slug":"telemetry","title":"Telemetry","kind":"Reference","category":"Reference","summary":"The cotal CLI sends usage data about commands, failures and platforms."},{"slug":"transport","title":"Transport vs protocol","kind":"Concept (informative)","category":"Concept","summary":"What in Cotal is the protocol, what is the transport, and what a transport binding must provide."},{"slug":"upgrading","title":"Upgrading a running deployment","kind":"Guide (informative)","category":"Guide","summary":"Substrate stability tells you what the version numbers promise."},{"slug":"using-cotal","title":"Choose a workflow","kind":"Guide (informative)","category":"Guide","summary":"Cotal can run a local team, connect a session to a shared space, or expose a service to agents."},{"slug":"watch-a-mesh","title":"Watch a mesh","kind":"Guide (informative)","category":"Guide","summary":"Cotal's watch surfaces show who is present, their reported activity and the messages your credential permits you to read."},{"slug":"workflows","title":"Workflow runs","kind":"Concept (informative)","category":"Concept","summary":"A workflow run is a program that coordinates agents over hours or days and survives the process that started it."}],"spec":{"title":"Cotal Wire Specification"},"lang":{"title":"Cotal Lang: the workflow language"},"schema":{"title":"Cotal message schema (JSON Schema)"}}}function loadDocsBundle(){const packed=readFileSync5(join5(import.meta.dirname,"docs-bundle.bin"));if(packed.length!==979447||createHash9("sha256").update(packed).digest("hex")!=="ad4619c7c6e5969a579604aa58faf2f4d37293b0c39fd0e32c67cf782fedb429")throw new Error("docs data file docs-bundle.bin beside this module is not the one built with it");return JSON.parse(gunzipSync(packed).toString("utf8"))}function loadDocsIndex(){const packed=readFileSync5(join5(import.meta.dirname,"docs-index.bin"));if(packed.length!==437017||createHash9("sha256").update(packed).digest("hex")!=="72627bb737a5846329508321ecfa613eb649107b301714518ad830e9be3e17f2")throw new Error("docs data file docs-index.bin beside this module is not the one built with it");return gunzipSync(packed)}var TOKEN=/[a-z0-9_$.#>*-]+/gi;var EDGE=/^[.>*#-]+|[.>*#-]+$/g;function tokenize(s){const raw=s.toLowerCase().match(TOKEN);if(!raw)return[];const out=[];for(const r of raw){if(r.length>=2)out.push(r);const t=r.replace(EDGE,"");if(t.length>=2&&t!==r)out.push(t);if(t.includes(".")){for(const seg of t.split("."))if(seg.length>=2)out.push(seg)}}return out}var STOP=new Set("a an and are as at be by do for from has how in is it of on or that the this to use using was what when where which who with you your".split(" "));function decodeIndex(bytes,bodyLengths,version2){if(bytes.length<4)throw new Error("docs index is truncated or malformed");const headerLength=bytes.readUInt32LE(0);if(4+headerLength>bytes.length)throw new Error("docs index is truncated or malformed");const header=JSON.parse(bytes.toString("utf8",4,4+headerLength));if(header.version!==version2||header.bodyLengths.length!==bodyLengths.length||header.bodyLengths.some((length2,i)=>length2!==bodyLengths[i]))throw new Error("docs index does not match the docs bundle it is searching");const n=header.sections;const length=4*n+header.terms.length+1+2*header.postings;if(bytes.length-4-headerLength!==4*length)throw new Error("docs index is truncated or malformed");const columns=new Uint32Array(length);for(let i=0;i<length;i++)columns[i]=bytes.readUInt32LE(4+headerLength+4*i);const offsets=4*n;const sectionColumn=offsets+header.terms.length+1;let total=0;for(let i=0;i<n;i++)total+=columns[3*n+i];return{sections:n,terms:header.terms,headings:header.headings,source:columns.subarray(0,n),start:columns.subarray(n,2*n),end:columns.subarray(2*n,3*n),length:columns.subarray(3*n,4*n),offsets:columns.subarray(offsets,sectionColumn),postSection:columns.subarray(sectionColumn,sectionColumn+header.postings),postWeight:columns.subarray(sectionColumn+header.postings),avgdl:total/Math.max(1,n)}}var indexed;function metadata(){return indexed??=loadDocsMetadata()}var bundled;function bundle(){return bundled??=loadDocsBundle()}var REMOTE_BASE="https://docs.cotal.ai";function resolvePage(page){const key=page.trim().toLowerCase().replace(/\.md$/,"");if(key==="spec")return{slug:"spec",title:bundle().spec.title,kind:"normative",category:"normative",summary:"",body:bundle().spec.body};if(key==="lang"||key==="cotal-lang")return{slug:"lang",title:bundle().lang.title,kind:"normative",category:"normative",summary:"",body:bundle().lang.body};if(key==="schema")return{slug:"schema",title:bundle().schema.title,kind:"reference",category:"reference",summary:"",body:bundle().schema.body};return bundle().pages.find(p=>p.slug===key)}function remoteUrl(slug){const base=`${REMOTE_BASE}/v/${bundle().version}`;if(slug==="schema")return`${base}/cotal.schema.json`;if(slug==="lang")return`${base}/cotal-lang.md`;return`${base}/${slug}.md`}function renderDocsIndex(){const b=metadata();const rows=b.pages.map(p=>{const kind=p.kind?`: ${p.kind}`:"";return`- \`${p.slug}\`${kind}
|
|
129
129
|
${p.summary}`});return[`# Cotal v${b.version} documentation`,"","The authoritative docs bundled with this installed version. This index lists what","exists; it holds no answers itself. Your next call:",'- Know the page? Read it in full: `cotal_docs(page: "<slug>")` (e.g. "spec", "architecture").','- Not sure which page? Search: `cotal_docs(query: "\u2026")` returns the most relevant sections.',"Prefer these docs over training memory, and read the full page before writing code or wire","frames. Docs are bundled and version-exact; add `refresh: true` to also pull any patches","published to docs.cotal.ai for this same version.","","## The normative sources",`- \`spec\`: ${b.spec.title} (the wire contract; where a page disagrees, the spec wins)`,`- \`lang\`: ${b.lang.title} (the workflow language a durable run executes; spec \xA714)`,`- \`schema\`: ${b.schema.title} (authoritative for message shapes)`,"","## Pages",...rows].join("\n")}function renderPage(p,note){return`${note}
|
|
130
130
|
|
|
131
131
|
${p.body}`.trimStart()}var K1=1.2;var B=.75;function sources(){const b=bundle();return[...b.pages,{slug:"spec",...b.spec},{slug:"lang",...b.lang},{slug:"schema",...b.schema}]}var index;function searchIndex(){return index??=decodeIndex(loadDocsIndex(),sources().map(source=>source.body.length),DOCS_VERSION)}function termId(terms,term){let low=0;let high=terms.length-1;while(low<=high){const mid=low+high>>>1;const candidate2=terms[mid];if(candidate2===term)return mid;if(candidate2<term)low=mid+1;else high=mid-1}return-1}function searchDocs(query,limit=5){if(limit<=0)return[];let terms=tokenize(query).filter(t=>!STOP.has(t));if(!terms.length)terms=tokenize(query);const termSet=new Set(terms);if(!termSet.size)return[];const idx=searchIndex();const N=idx.sections;const scores=new Float64Array(N);for(const t of termSet){const id2=termId(idx.terms,t);if(id2<0)continue;const from=idx.offsets[id2];const to=idx.offsets[id2+1];const n=to-from;const idf=Math.log(1+(N-n+.5)/(n+.5));for(let p=from;p<to;p++){const s=idx.postSection[p];const f=idx.postWeight[p];scores[s]+=idf*(f*(K1+1)/(f+K1*(1-B+B*idx.length[s]/idx.avgdl)))}}const scored=[];for(let s=0;s<N;s++)if(scores[s]>0)scored.push({s,score:scores[s]});scored.sort((a,b)=>b.score-a.score);const all=sources();const perPage=new Map;const hits=[];for(const{s,score}of scored){const source=all[idx.source[s]];const seen=perPage.get(source.slug)??0;if(seen>=2)continue;perPage.set(source.slug,seen+1);hits.push({slug:source.slug,pageTitle:source.title,heading:idx.headings[s],text:source.body.slice(idx.start[s],idx.end[s]),score});if(hits.length>=limit)break}return hits}function capSection(text2,maxLines=48){const lines=text2.split("\n");if(lines.length<=maxLines)return text2.trim();return lines.slice(0,maxLines).join("\n").trimEnd()+"\n\n\u2026 (section continues; read the full page)"}function renderSearch(query,hits){if(!hits.length){return`No matches for "${query}" in the Cotal v${bundle().version} docs. Call cotal_docs() for the page index, or search an exact identifier (a subject, a cotal_* tool, a field name).`}const blocks=hits.map(h=>`## ${h.heading}
|