@gobing-ai/spur 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/config.global.yaml +4 -2
  3. package/config/templates/AGENTS.md +1 -1
  4. package/config/workflows/wrapup-pipeline.yaml +1 -1
  5. package/package.json +10 -10
  6. package/plugins/sp/README.md +1 -2
  7. package/plugins/sp/agents/super-planner.md +5 -6
  8. package/plugins/sp/commands/dev-review-session.md +2 -1
  9. package/plugins/sp/commands/dev-runall.md +18 -9
  10. package/plugins/sp/hooks/context-owner.ts +56 -0
  11. package/plugins/sp/hooks/context-post-tool.ts +23 -0
  12. package/plugins/sp/hooks/context-session-start.ts +49 -27
  13. package/plugins/sp/hooks/context-session-stop.ts +131 -30
  14. package/plugins/sp/hooks/pi/guard-extension.ts +21 -8
  15. package/plugins/sp/lib/idea-handoff.generated.mjs +4 -2
  16. package/plugins/sp/lib/inline-run.generated.mjs +47 -30
  17. package/plugins/sp/lib/plan-projection.generated.d.mts +19 -0
  18. package/plugins/sp/lib/plan-projection.generated.mjs +113 -0
  19. package/plugins/sp/lib/quality-gate.generated.d.mts +0 -12
  20. package/plugins/sp/lib/quality-gate.generated.mjs +48 -230
  21. package/plugins/sp/lib/transcript.ts +49 -21
  22. package/plugins/sp/plugin.json +1 -1
  23. package/plugins/sp/references/roles.md +1 -1
  24. package/plugins/sp/scripts/batch-plan.mjs +154 -1
  25. package/plugins/sp/scripts/batch-plan.ts +48 -3
  26. package/plugins/sp/scripts/inline-run-setup.mjs +24 -13
  27. package/plugins/sp/scripts/pr-reviewing.mjs +19 -5
  28. package/plugins/sp/scripts/pr-reviewing.ts +34 -9
  29. package/plugins/sp/scripts/quality-gate.mjs +25 -207
  30. package/plugins/sp/scripts/run-summary.mjs +24 -13
  31. package/plugins/sp/scripts/session-timeline.mjs +26 -25
  32. package/plugins/sp/scripts/session-timeline.ts +4 -18
  33. package/plugins/sp/scripts/task-diffstat.mjs +32 -29
  34. package/plugins/sp/scripts/task-diffstat.ts +34 -34
  35. package/plugins/sp/skills/indexed-context/SKILL.md +14 -7
  36. package/plugins/sp/skills/parallel-execution/SKILL.md +2 -2
  37. package/plugins/sp/skills/parallel-execution/references/dispatch-surface.md +1 -1
  38. package/plugins/sp/skills/parallel-execution/references/fan-out-patterns.md +2 -2
  39. package/plugins/sp/skills/pr-reviewing/SKILL.md +7 -3
  40. package/plugins/sp/skills/session-review/SKILL.md +5 -3
  41. package/plugins/sp/skills/spur-cli/references/decision.md +9 -2
  42. package/plugins/sp/skills/spur-cli/references/projects.md +7 -5
  43. package/plugins/sp/skills/spur-dev/SKILL.md +2 -0
  44. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +27 -0
  45. package/plugins/sp/skills/spur-dev/references/dev-operations.md +2 -3
  46. package/plugins/sp/skills/spur-dev/references/execution-batch-report.md +5 -0
  47. package/plugins/sp/skills/spur-dev/references/execution-batch.md +43 -4
  48. package/plugins/sp/skills/spur-dev/references/execution-parallel-isolation.md +4 -1
  49. package/plugins/sp/skills/spur-dev/references/flag-glossary.md +13 -11
  50. package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +8 -13
  51. package/spur.js +14261 -2846
  52. package/web/_astro/{BoardApp.D66k_s_T.js → BoardApp.B3GQZvj8.js} +1 -1
  53. package/web/_astro/{BoardApp.D6sjAJr_.js → BoardApp.BT7L2kSb.js} +192 -192
  54. package/web/_astro/TaskDetail.Cxov1_N_.js +1 -0
  55. package/web/_astro/{arc._BUadrdH.js → arc.vaT7tPOB.js} +1 -1
  56. package/web/_astro/{architectureDiagram-3BPJPVTR.Dh7xS1Pp.js → architectureDiagram-3BPJPVTR.DRMmTjkN.js} +1 -1
  57. package/web/_astro/{blockDiagram-GPEHLZMM.DFDVpfXm.js → blockDiagram-GPEHLZMM.cla0LO_q.js} +1 -1
  58. package/web/_astro/{c4Diagram-AAUBKEIU.V7_3_glh.js → c4Diagram-AAUBKEIU.D4YAIBKn.js} +1 -1
  59. package/web/_astro/channel.D4nG9YLf.js +1 -0
  60. package/web/_astro/{chunk-2J33WTMH.De1yx7Jz.js → chunk-2J33WTMH.BrSJbMRZ.js} +1 -1
  61. package/web/_astro/{chunk-4BX2VUAB.BDhHFuxx.js → chunk-4BX2VUAB.CuLMgKF5.js} +1 -1
  62. package/web/_astro/{chunk-55IACEB6.DDLkWnmC.js → chunk-55IACEB6.zkvgu54F.js} +1 -1
  63. package/web/_astro/{chunk-727SXJPM.CwfiLnA7.js → chunk-727SXJPM.DxWkACh8.js} +1 -1
  64. package/web/_astro/{chunk-AQP2D5EJ.CtGDmUnM.js → chunk-AQP2D5EJ.42XrmIlH.js} +1 -1
  65. package/web/_astro/{chunk-FMBD7UC4.BOLjpw73.js → chunk-FMBD7UC4.Bao2wMK9.js} +1 -1
  66. package/web/_astro/{chunk-ND2GUHAM.BDhQls6O.js → chunk-ND2GUHAM.BhydojD1.js} +1 -1
  67. package/web/_astro/{chunk-QZHKN3VN.76qBynDF.js → chunk-QZHKN3VN.CmZ82g-H.js} +1 -1
  68. package/web/_astro/{classDiagram-4FO5ZUOK.N0mpPHT0.js → classDiagram-4FO5ZUOK.Blr83Gt_.js} +1 -1
  69. package/web/_astro/{classDiagram-v2-Q7XG4LA2.N0mpPHT0.js → classDiagram-v2-Q7XG4LA2.Blr83Gt_.js} +1 -1
  70. package/web/_astro/{cose-bilkent-S5V4N54A.CKknFfjB.js → cose-bilkent-S5V4N54A.qmfv0SPn.js} +1 -1
  71. package/web/_astro/{cynefin-OW5HDTMX.Cw3ZWBAh.js → cynefin-OW5HDTMX.BtELhXPR.js} +1 -1
  72. package/web/_astro/{dagre-BM42HDAG.D3yIKCRD.js → dagre-BM42HDAG.AWmaAvXo.js} +1 -1
  73. package/web/_astro/{diagram-2AECGRRQ.D51dO83Z.js → diagram-2AECGRRQ.DdH34KDi.js} +1 -1
  74. package/web/_astro/{diagram-5GNKFQAL.Bb-FViDj.js → diagram-5GNKFQAL.BmNPix1k.js} +1 -1
  75. package/web/_astro/{diagram-KO2AKTUF.D3mN8S6x.js → diagram-KO2AKTUF.BNQd_Ppo.js} +1 -1
  76. package/web/_astro/{diagram-LMA3HP47.dMMyPcbJ.js → diagram-LMA3HP47.BAPgDi0e.js} +1 -1
  77. package/web/_astro/{diagram-OG6HWLK6.AzbvzY4C.js → diagram-OG6HWLK6.DZ4zyLdC.js} +1 -1
  78. package/web/_astro/{erDiagram-TEJ5UH35.BR5I4OZb.js → erDiagram-TEJ5UH35.Q1TySMmw.js} +1 -1
  79. package/web/_astro/{flowDiagram-I6XJVG4X.DFqvhGkn.js → flowDiagram-I6XJVG4X.BXhFBicG.js} +1 -1
  80. package/web/_astro/{ganttDiagram-6RSMTGT7.ByJbhH6J.js → ganttDiagram-6RSMTGT7.vHSgcuo2.js} +1 -1
  81. package/web/_astro/{gitGraphDiagram-PVQCEYII.CInHjQR3.js → gitGraphDiagram-PVQCEYII.Bi1f73C7.js} +1 -1
  82. package/web/_astro/{index.COh_kBxN.css → index.BhSwN8yY.css} +1 -1
  83. package/web/_astro/{infoDiagram-5YYISTIA.Cm0dGVjJ.js → infoDiagram-5YYISTIA.DPvXZEWm.js} +1 -1
  84. package/web/_astro/{ishikawaDiagram-YF4QCWOH.C3nOP6Sj.js → ishikawaDiagram-YF4QCWOH.Cz829fsV.js} +1 -1
  85. package/web/_astro/{journeyDiagram-JHISSGLW.4IvLa2MW.js → journeyDiagram-JHISSGLW.enRnB9Me.js} +1 -1
  86. package/web/_astro/{kanban-definition-UN3LZRKU.DS87Cl-k.js → kanban-definition-UN3LZRKU.DnTNk6d2.js} +1 -1
  87. package/web/_astro/{linear.MzmRrNER.js → linear.BzGnBwNL.js} +1 -1
  88. package/web/_astro/{mermaid.core.fK-WNswS.js → mermaid.core.CSbTpIVz.js} +4 -4
  89. package/web/_astro/{mindmap-definition-RKZ34NQL.BqipOHhY.js → mindmap-definition-RKZ34NQL.DGJDy8zT.js} +1 -1
  90. package/web/_astro/{pieDiagram-4H26LBE5.0nBiPqFG.js → pieDiagram-4H26LBE5.HSPdi5_8.js} +1 -1
  91. package/web/_astro/{quadrantDiagram-W4KKPZXB.Szj7Zpx5.js → quadrantDiagram-W4KKPZXB.6Gv8mz2Y.js} +1 -1
  92. package/web/_astro/{requirementDiagram-4Y6WPE33.D4UR6TWo.js → requirementDiagram-4Y6WPE33.CnBCtFwa.js} +1 -1
  93. package/web/_astro/{sankeyDiagram-5OEKKPKP.DAE7BdOs.js → sankeyDiagram-5OEKKPKP.5M8VWAu8.js} +1 -1
  94. package/web/_astro/{sequenceDiagram-3UESZ5HK.BP9ZVq25.js → sequenceDiagram-3UESZ5HK.DN41XN-U.js} +1 -1
  95. package/web/_astro/{stateDiagram-AJRCARHV.BQW7mIxk.js → stateDiagram-AJRCARHV.ErOO3W8j.js} +1 -1
  96. package/web/_astro/{stateDiagram-v2-BHNVJYJU.PbK4nDih.js → stateDiagram-v2-BHNVJYJU.B_ZHICM-.js} +1 -1
  97. package/web/_astro/{timeline-definition-PNZ67QCA.Ci_GvUpo.js → timeline-definition-PNZ67QCA.CWdosr07.js} +1 -1
  98. package/web/_astro/{vennDiagram-CIIHVFJN.DNw1Y5qx.js → vennDiagram-CIIHVFJN.BHzYjNV5.js} +1 -1
  99. package/web/_astro/{wardleyDiagram-YWT4CUSO.CwlkaaNe.js → wardleyDiagram-YWT4CUSO.h8x4IwPX.js} +1 -1
  100. package/web/_astro/{xychartDiagram-2RQKCTM6.MI6ZuiH_.js → xychartDiagram-2RQKCTM6.RTapW2X8.js} +1 -1
  101. package/web/index.html +2 -2
  102. package/plugins/sp/commands/dev-parallel.md +0 -37
  103. package/web/_astro/TaskDetail.BynLnMNc.js +0 -1
  104. package/web/_astro/channel.DZVfto-r.js +0 -1
@@ -62,7 +62,7 @@ import{createRequire}from"node:module";var __create=Object.create;var{getPrototy
62
62
 
63
63
  `)}doc.write("payload.value = newResult;"),doc.write("return payload;");let fn=doc.compile();return(payload,ctx)=>fn(shape,payload,ctx)},fastpass,isObject2=isObject,jit=!globalConfig.jitless,fastEnabled=jit&&allowsEval.value,catchall=def.catchall,value;inst._zod.parse=(payload,ctx)=>{value??(value=_normalized.value);let input=payload.value;if(!isObject2(input))return payload.issues.push({expected:"object",code:"invalid_type",input,inst}),payload;if(jit&&fastEnabled&&ctx?.async===!1&&ctx.jitless!==!0){if(!fastpass)fastpass=generateFastpass(def.shape);if(payload=fastpass(payload,ctx),!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}),defineLazy(inst._zod,"pattern",()=>{if(def.options.every((o)=>o._zod.pattern)){let patterns=def.options.map((o)=>o._zod.pattern);return new RegExp(`^(${patterns.map((p)=>cleanRegex(p.source)).join("|")})$`)}return});let first=def.options.length===1?def.options[0]._zod.run:null;inst._zod.parse=(payload,ctx)=>{if(first)return first(payload,ctx);let async=!1,results=[];for(let option of def.options){let result=option._zod.run({value:payload.value,issues:[]},ctx);if(result instanceof Promise)results.push(result),async=!0;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=!1;let first=def.options.length===1?def.options[0]._zod.run:null;inst._zod.parse=(payload,ctx)=>{if(first)return first(payload,ctx);let async=!1,results=[];for(let option of def.options){let result=option._zod.run({value:payload.value,issues:[]},ctx);if(result instanceof Promise)results.push(result),async=!0;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=!1,$ZodUnion.init(inst,def);let _super=inst._zod.parse;defineLazy(inst._zod,"propValues",()=>{let propValues={};for(let option of def.options){let pv=option._zod.propValues;if(!pv||Object.keys(pv).length===0)throw Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`);for(let[k,v]of Object.entries(pv)){if(!propValues[k])propValues[k]=new Set;for(let val of v)propValues[k].add(val)}}return propValues});let disc=cached(()=>{let opts=def.options,map=new Map;for(let o of opts){let values=o._zod.propValues?.[def.discriminator];if(!values||values.size===0)throw Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`);for(let v of values){if(map.has(v))throw Error(`Duplicate discriminator value "${String(v)}"`);map.set(v,o)}}return map});inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!isObject(input))return payload.issues.push({code:"invalid_type",expected:"object",input,inst}),payload;let 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);return 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}),payload}}),$ZodIntersection=$constructor("$ZodIntersection",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{let input=payload.value,left=def.left._zod.run({value:input,issues:[]},ctx),right=def.right._zod.run({value:input,issues:[]},ctx);if(left instanceof Promise||right instanceof Promise)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);let items=def.items;inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!Array.isArray(input))return payload.issues.push({input,inst,expected:"tuple",code:"invalid_type"}),payload;payload.value=[];let proms=[],optinStart=getTupleOptStart(items,"optin"),optoutStart=getTupleOptStart(items,"optout");if(!def.rest){if(input.length<optinStart)return payload.issues.push({code:"too_small",minimum:optinStart,inclusive:!0,input,inst,origin:"array"}),payload;if(input.length>items.length)payload.issues.push({code:"too_big",maximum:items.length,inclusive:!0,input,inst,origin:"array"})}let itemResults=Array(items.length);for(let i=0;i<items.length;i++){let 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,rest=input.slice(items.length);for(let el of rest){i++;let 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)=>{let input=payload.value;if(!isPlainObject2(input))return payload.issues.push({expected:"record",code:"invalid_type",input,inst}),payload;let proms=[],values=def.keyType._zod.values;if(values){payload.value={};let recordKeys=new Set;for(let key of values)if(typeof key==="string"||typeof key==="number"||typeof key==="symbol"){recordKeys.add(typeof key==="number"?key.toString():key);let keyResult=def.keyType._zod.run({value:key,issues:[]},ctx);if(keyResult instanceof Promise)throw 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}let outKey=keyResult.value,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(let 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(let 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 Error("Async schemas not supported in object keys currently");if(typeof key==="string"&&number.test(key)&&keyResult.issues.length){let retryResult=def.keyType._zod.run({value:Number(key),issues:[]},ctx);if(retryResult instanceof Promise)throw 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}let 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)=>{let input=payload.value;if(!(input instanceof Map))return payload.issues.push({expected:"map",code:"invalid_type",input,inst}),payload;let proms=[];payload.value=new Map;for(let[key,value]of input){let keyResult=def.keyType._zod.run({value:key,issues:[]},ctx),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)=>{let input=payload.value;if(!(input instanceof Set))return payload.issues.push({input,inst,expected:"set",code:"invalid_type"}),payload;let proms=[];payload.value=new Set;for(let item of input){let 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);let values=getEnumValues(def.entries),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)=>{let input=payload.value;if(valuesSet.has(input))return payload;return payload.issues.push({code:"invalid_value",values,input,inst}),payload}}),$ZodLiteral=$constructor("$ZodLiteral",(inst,def)=>{if($ZodType.init(inst,def),def.values.length===0)throw Error("Cannot create literal schema with no valid values");let 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)=>{let input=payload.value;if(values.has(input))return payload;return payload.issues.push({code:"invalid_value",values:def.values,input,inst}),payload}}),$ZodFile=$constructor("$ZodFile",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;if(input instanceof File)return payload;return payload.issues.push({expected:"file",code:"invalid_type",input,inst}),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);let _out=def.transform(payload.value,payload);if(ctx.async)return(_out instanceof Promise?_out:Promise.resolve(_out)).then((output3)=>{return payload.value=output3,payload.fallback=!0,payload});if(_out instanceof Promise)throw new $ZodAsyncError;return payload.value=_out,payload.fallback=!0,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",()=>{let 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"){let input=payload.value,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",()=>{let 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)return payload.value=def.defaultValue,payload;let 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",()=>{let v=def.innerType._zod.values;return v?new Set([...v].filter((x)=>x!==void 0)):void 0}),inst._zod.parse=(payload,ctx)=>{let 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");let result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise)return result.then((result2)=>{return payload.value=result2.issues.length===0,payload});return payload.value=result.issues.length===0,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);let result=def.innerType._zod.run(payload,ctx);if(result instanceof Promise)return result.then((result2)=>{if(payload.value=result2.value,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=!0;return payload});if(payload.value=result.value,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=!0;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))return payload.issues.push({input:payload.value,inst,expected:"nan",code:"invalid_type"}),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"){let 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)}let 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)=>{if((ctx.direction||"forward")==="forward"){let 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{let 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);let 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);let regexParts=[];for(let part of def.parts)if(typeof part==="object"&&part!==null){if(!part._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);let source=part._zod.pattern instanceof RegExp?part._zod.pattern.source:part._zod.pattern;if(!source)throw Error(`Invalid template literal part: ${part._zod.traits}`);let start=source.startsWith("^")?1:0,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 Error(`Invalid template literal part: ${part}`);inst._zod.pattern=new RegExp(`^${regexParts.join("")}$`),inst._zod.parse=(payload,_ctx)=>{if(typeof payload.value!=="string")return payload.issues.push({input:payload.value,inst,expected:"string",code:"invalid_type"}),payload;if(inst._zod.pattern.lastIndex=0,!inst._zod.pattern.test(payload.value))return payload.issues.push({input:payload.value,inst,code:"invalid_format",format:def.format??"template_literal",pattern:inst._zod.pattern.source}),payload;return payload}}),$ZodFunction=$constructor("$ZodFunction",(inst,def)=>{return $ZodType.init(inst,def),inst._def=def,inst._zod.def=def,inst.implement=(func)=>{if(typeof func!=="function")throw Error("implement() must be called with a function");return function(...args){let parsedArgs=inst._def.input?parse(inst._def.input,args):args,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 Error("implementAsync() must be called with a function");return async function(...args){let parsedArgs=inst._def.input?await parseAsync(inst._def.input,args):args,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")return payload.issues.push({code:"invalid_type",expected:"function",input:payload.value,inst}),payload;if(inst._def.output&&inst._def.output._zod.def.type==="promise")payload.value=inst.implementAsync(payload.value);else payload.value=inst.implement(payload.value);return payload},inst.input=(...args)=>{let 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=(output2)=>{return new inst.constructor({type:"function",input:inst._def.input,output:output2})},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",()=>{let 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)=>{return inst._zod.innerType._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)=>{let input=payload.value,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=()=>{let Sizable={string:{unit:"حرف",verb:"أن يحوي"},file:{unit:"بايت",verb:"أن يحوي"},array:{unit:"عنصر",verb:"أن يحوي"},set:{unit:"عنصر",verb:"أن يحوي"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"مدخل",email:"بريد إلكتروني",url:"رابط",emoji:"إيموجي",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"تاريخ ووقت بمعيار ISO",date:"تاريخ بمعيار ISO",time:"وقت بمعيار ISO",duration:"مدة بمعيار ISO",ipv4:"عنوان IPv4",ipv6:"عنوان IPv6",cidrv4:"مدى عناوين بصيغة IPv4",cidrv6:"مدى عناوين بصيغة IPv6",base64:"نَص بترميز base64-encoded",base64url:"نَص بترميز base64url-encoded",json_string:"نَص على هيئة JSON",e164:"رقم هاتف بمعيار E.164",jwt:"JWT",template_literal:"مدخل"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`مدخلات غير مقبولة: يفترض إدخال instanceof ${issue2.expected}، ولكن تم إدخال ${received}`;return`مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`}case"invalid_value":if(issue2.values.length===1)return`مدخلات غير مقبولة: يفترض إدخال ${stringifyPrimitive(issue2.values[0])}`;return`اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return` أكبر من اللازم: يفترض أن تكون ${issue2.origin??"القيمة"} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"عنصر"}`;return`أكبر من اللازم: يفترض أن تكون ${issue2.origin??"القيمة"} ${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`أصغر من اللازم: يفترض لـ ${issue2.origin} أن يكون ${adj} ${issue2.minimum.toString()} ${sizing.unit}`;return`أصغر من اللازم: يفترض لـ ${issue2.origin} أن يكون ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`نَص غير مقبول: يجب أن يبدأ بـ "${issue2.prefix}"`;if(_issue.format==="ends_with")return`نَص غير مقبول: يجب أن ينتهي بـ "${_issue.suffix}"`;if(_issue.format==="includes")return`نَص غير مقبول: يجب أن يتضمَّن "${_issue.includes}"`;if(_issue.format==="regex")return`نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} غير مقبول`}case"not_multiple_of":return`رقم غير مقبول: يجب أن يكون من مضاعفات ${issue2.divisor}`;case"unrecognized_keys":return`معرف${issue2.keys.length>1?"ات":""} غريب${issue2.keys.length>1?"ة":""}: ${joinValues(issue2.keys,"، ")}`;case"invalid_key":return`معرف غير مقبول في ${issue2.origin}`;case"invalid_union":return"مدخل غير مقبول";case"invalid_element":return`مدخل غير مقبول في ${issue2.origin}`;default:return"مدخل غير مقبول"}}};var init_ar=__esm(()=>{init_util()});function az_default(){return{localeError:error2()}}var error2=()=>{let Sizable={string:{unit:"simvol",verb:"olmalıdır"},file:{unit:"bayt",verb:"olmalıdır"},array:{unit:"element",verb:"olmalıdır"},set:{unit:"element",verb:"olmalıdır"}};function getSizing(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Yanlış dəyər: gözlənilən instanceof ${issue2.expected}, daxil olan ${received}`;return`Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`}case"invalid_value":if(issue2.values.length===1)return`Yanlış dəyər: gözlənilən ${stringifyPrimitive(issue2.values[0])}`;return`Yanlış seçim: aşağıdakılardan biri olmalıdır: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Çox böyük: gözlənilən ${issue2.origin??"dəyər"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"element"}`;return`Çox böyük: gözlənilən ${issue2.origin??"dəyər"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Çox kiçik: gözlənilən ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Çox kiçik: gözlənilən ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Yanlış mətn: "${_issue.prefix}" ilə başlamalıdır`;if(_issue.format==="ends_with")return`Yanlış mətn: "${_issue.suffix}" ilə bitməlidir`;if(_issue.format==="includes")return`Yanlış mətn: "${_issue.includes}" daxil olmalıdır`;if(_issue.format==="regex")return`Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;return`Yanlış ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Yanlış ədəd: ${issue2.divisor} ilə bölünə bilən olmalıdır`;case"unrecognized_keys":return`Tanınmayan açar${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} daxilində yanlış açar`;case"invalid_union":return"Yanlış dəyər";case"invalid_element":return`${issue2.origin} daxilində yanlış dəyər`;default:return"Yanlış dəyər"}}};var init_az=__esm(()=>{init_util()});function getBelarusianPlural(count,one,few,many){let absCount=Math.abs(count),lastDigit=absCount%10,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=()=>{let Sizable={string:{unit:{one:"сімвал",few:"сімвалы",many:"сімвалаў"},verb:"мець"},array:{unit:{one:"элемент",few:"элементы",many:"элементаў"},verb:"мець"},set:{unit:{one:"элемент",few:"элементы",many:"элементаў"},verb:"мець"},file:{unit:{one:"байт",few:"байты",many:"байтаў"},verb:"мець"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"увод",email:"email адрас",url:"URL",emoji:"эмодзі",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO дата і час",date:"ISO дата",time:"ISO час",duration:"ISO працягласць",ipv4:"IPv4 адрас",ipv6:"IPv6 адрас",cidrv4:"IPv4 дыяпазон",cidrv6:"IPv6 дыяпазон",base64:"радок у фармаце base64",base64url:"радок у фармаце base64url",json_string:"JSON радок",e164:"нумар E.164",jwt:"JWT",template_literal:"увод"},TypeDictionary={nan:"NaN",number:"лік",array:"масіў"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Няправільны ўвод: чакаўся instanceof ${issue2.expected}, атрымана ${received}`;return`Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`}case"invalid_value":if(issue2.values.length===1)return`Няправільны ўвод: чакалася ${stringifyPrimitive(issue2.values[0])}`;return`Няправільны варыянт: чакаўся адзін з ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing){let maxValue=Number(issue2.maximum),unit=getBelarusianPlural(maxValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Занадта вялікі: чакалася, што ${issue2.origin??"значэнне"} павінна ${sizing.verb} ${adj}${issue2.maximum.toString()} ${unit}`}return`Занадта вялікі: чакалася, што ${issue2.origin??"значэнне"} павінна быць ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing){let minValue=Number(issue2.minimum),unit=getBelarusianPlural(minValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Занадта малы: чакалася, што ${issue2.origin} павінна ${sizing.verb} ${adj}${issue2.minimum.toString()} ${unit}`}return`Занадта малы: чакалася, што ${issue2.origin} павінна быць ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Няправільны радок: павінен пачынацца з "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Няправільны радок: павінен заканчвацца на "${_issue.suffix}"`;if(_issue.format==="includes")return`Няправільны радок: павінен змяшчаць "${_issue.includes}"`;if(_issue.format==="regex")return`Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;return`Няправільны ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Няправільны лік: павінен быць кратным ${issue2.divisor}`;case"unrecognized_keys":return`Нераспазнаны ${issue2.keys.length>1?"ключы":"ключ"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Няправільны ключ у ${issue2.origin}`;case"invalid_union":return"Няправільны ўвод";case"invalid_element":return`Няправільнае значэнне ў ${issue2.origin}`;default:return"Няправільны ўвод"}}};var init_be=__esm(()=>{init_util()});function bg_default(){return{localeError:error4()}}var error4=()=>{let Sizable={string:{unit:"символа",verb:"да съдържа"},file:{unit:"байта",verb:"да съдържа"},array:{unit:"елемента",verb:"да съдържа"},set:{unit:"елемента",verb:"да съдържа"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"вход",email:"имейл адрес",url:"URL",emoji:"емоджи",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO време",date:"ISO дата",time:"ISO време",duration:"ISO продължителност",ipv4:"IPv4 адрес",ipv6:"IPv6 адрес",cidrv4:"IPv4 диапазон",cidrv6:"IPv6 диапазон",base64:"base64-кодиран низ",base64url:"base64url-кодиран низ",json_string:"JSON низ",e164:"E.164 номер",jwt:"JWT",template_literal:"вход"},TypeDictionary={nan:"NaN",number:"число",array:"масив"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Невалиден вход: очакван instanceof ${issue2.expected}, получен ${received}`;return`Невалиден вход: очакван ${expected}, получен ${received}`}case"invalid_value":if(issue2.values.length===1)return`Невалиден вход: очакван ${stringifyPrimitive(issue2.values[0])}`;return`Невалидна опция: очаквано едно от ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Твърде голямо: очаква се ${issue2.origin??"стойност"} да съдържа ${adj}${issue2.maximum.toString()} ${sizing.unit??"елемента"}`;return`Твърде голямо: очаква се ${issue2.origin??"стойност"} да бъде ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Твърде малко: очаква се ${issue2.origin} да съдържа ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Твърде малко: очаква се ${issue2.origin} да бъде ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Невалиден низ: трябва да започва с "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Невалиден низ: трябва да завършва с "${_issue.suffix}"`;if(_issue.format==="includes")return`Невалиден низ: трябва да включва "${_issue.includes}"`;if(_issue.format==="regex")return`Невалиден низ: трябва да съвпада с ${_issue.pattern}`;let invalid_adj="Невалиден";if(_issue.format==="emoji")invalid_adj="Невалидно";if(_issue.format==="datetime")invalid_adj="Невалидно";if(_issue.format==="date")invalid_adj="Невалидна";if(_issue.format==="time")invalid_adj="Невалидно";if(_issue.format==="duration")invalid_adj="Невалидна";return`${invalid_adj} ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Невалидно число: трябва да бъде кратно на ${issue2.divisor}`;case"unrecognized_keys":return`Неразпознат${issue2.keys.length>1?"и":""} ключ${issue2.keys.length>1?"ове":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Невалиден ключ в ${issue2.origin}`;case"invalid_union":return"Невалиден вход";case"invalid_element":return`Невалидна стойност в ${issue2.origin}`;default:return"Невалиден вход"}}};var init_bg=__esm(()=>{init_util()});function ca_default(){return{localeError:error5()}}var error5=()=>{let Sizable={string:{unit:"caràcters",verb:"contenir"},file:{unit:"bytes",verb:"contenir"},array:{unit:"elements",verb:"contenir"},set:{unit:"elements",verb:"contenir"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"entrada",email:"adreça electrònica",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ça IPv4",ipv6:"adreça IPv6",cidrv4:"rang IPv4",cidrv6:"rang IPv6",base64:"cadena codificada en base64",base64url:"cadena codificada en base64url",json_string:"cadena JSON",e164:"número E.164",jwt:"JWT",template_literal:"entrada"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Tipus invàlid: s'esperava instanceof ${issue2.expected}, s'ha rebut ${received}`;return`Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`}case"invalid_value":if(issue2.values.length===1)return`Valor invàlid: s'esperava ${stringifyPrimitive(issue2.values[0])}`;return`Opció invàlida: s'esperava una de ${joinValues(issue2.values," o ")}`;case"too_big":{let adj=issue2.inclusive?"com a màxim":"menys de",sizing=getSizing(issue2.origin);if(sizing)return`Massa gran: s'esperava que ${issue2.origin??"el valor"} contingués ${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":{let adj=issue2.inclusive?"com a mínim":"més de",sizing=getSizing(issue2.origin);if(sizing)return`Massa petit: s'esperava que ${issue2.origin} contingués ${adj} ${issue2.minimum.toString()} ${sizing.unit}`;return`Massa petit: s'esperava que ${issue2.origin} fos ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Format invàlid: ha de començar amb "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Format invàlid: ha d'acabar amb "${_issue.suffix}"`;if(_issue.format==="includes")return`Format invàlid: ha d'incloure "${_issue.includes}"`;if(_issue.format==="regex")return`Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;return`Format invàlid per a ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Número invàlid: ha de ser múltiple 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àlida a ${issue2.origin}`;case"invalid_union":return"Entrada invàlida";case"invalid_element":return`Element invàlid a ${issue2.origin}`;default:return"Entrada invàlida"}}};var init_ca=__esm(()=>{init_util()});function cs_default(){return{localeError:error6()}}var error6=()=>{let Sizable={string:{unit:"znaků",verb:"mít"},file:{unit:"bajtů",verb:"mít"},array:{unit:"prvků",verb:"mít"},set:{unit:"prvků",verb:"mít"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"regulární výraz",email:"e-mailová 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 čas ve formátu ISO",date:"datum ve formátu ISO",time:"čas ve formátu ISO",duration:"doba trvání ISO",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"rozsah IPv4",cidrv6:"rozsah IPv6",base64:"řetězec zakódovaný ve formátu base64",base64url:"řetězec zakódovaný ve formátu base64url",json_string:"řetězec ve formátu JSON",e164:"číslo E.164",jwt:"JWT",template_literal:"vstup"},TypeDictionary={nan:"NaN",number:"číslo",string:"řetězec",function:"funkce",array:"pole"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Neplatný vstup: očekáváno instanceof ${issue2.expected}, obdrženo ${received}`;return`Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`}case"invalid_value":if(issue2.values.length===1)return`Neplatný vstup: očekáváno ${stringifyPrimitive(issue2.values[0])}`;return`Neplatná možnost: očekávána jedna z hodnot ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Hodnota je příliš velká: ${issue2.origin??"hodnota"} musí mít ${adj}${issue2.maximum.toString()} ${sizing.unit??"prvků"}`;return`Hodnota je příliš velká: ${issue2.origin??"hodnota"} musí být ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Hodnota je příliš malá: ${issue2.origin??"hodnota"} musí mít ${adj}${issue2.minimum.toString()} ${sizing.unit??"prvků"}`;return`Hodnota je příliš malá: ${issue2.origin??"hodnota"} musí být ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Neplatný řetězec: musí začínat na "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Neplatný řetězec: musí končit na "${_issue.suffix}"`;if(_issue.format==="includes")return`Neplatný řetězec: musí obsahovat "${_issue.includes}"`;if(_issue.format==="regex")return`Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;return`Neplatný formát ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Neplatné číslo: musí být násobkem ${issue2.divisor}`;case"unrecognized_keys":return`Neznámé klíče: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neplatný klíč v ${issue2.origin}`;case"invalid_union":return"Neplatný vstup";case"invalid_element":return`Neplatná hodnota v ${issue2.origin}`;default:return"Neplatný vstup"}}};var init_cs=__esm(()=>{init_util()});function da_default(){return{localeError:error7()}}var error7=()=>{let Sizable={string:{unit:"tegn",verb:"havde"},file:{unit:"bytes",verb:"havde"},array:{unit:"elementer",verb:"indeholdt"},set:{unit:"elementer",verb:"indeholdt"}};function getSizing(origin2){return Sizable[origin2]??null}let 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æt",date:"ISO-dato",time:"ISO-klokkeslæt",duration:"ISO-varighed",ipv4:"IPv4-område",ipv6:"IPv6-område",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"},TypeDictionary={nan:"NaN",string:"streng",number:"tal",boolean:"boolean",array:"liste",object:"objekt",set:"sæt",file:"fil"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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ærdi: forventede ${stringifyPrimitive(issue2.values[0])}`;return`Ugyldigt valg: forventede en af følgende ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin),origin2=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`For stor: forventede ${origin2??"value"} ${sizing.verb} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"elementer"}`;return`For stor: forventede ${origin2??"value"} havde ${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin),origin2=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`For lille: forventede ${origin2} ${sizing.verb} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`;return`For lille: forventede ${origin2} havde ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _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ønsteret ${_issue.pattern}`;return`Ugyldig ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ugyldigt tal: skal være deleligt med ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Ukendte nøgler":"Ukendt nøgle"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ugyldig nøgle i ${issue2.origin}`;case"invalid_union":return"Ugyldigt input: matcher ingen af de tilladte typer";case"invalid_element":return`Ugyldig værdi i ${issue2.origin}`;default:return"Ugyldigt input"}}};var init_da=__esm(()=>{init_util()});function de_default(){return{localeError:error8()}}var error8=()=>{let 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(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN",number:"Zahl",array:"Array"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Ungültige Eingabe: erwartet instanceof ${issue2.expected}, erhalten ${received}`;return`Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ungültige Eingabe: erwartet ${stringifyPrimitive(issue2.values[0])}`;return`Ungültige Option: erwartet eine von ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Zu groß: erwartet, dass ${issue2.origin??"Wert"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"Elemente"} hat`;return`Zu groß: erwartet, dass ${issue2.origin??"Wert"} ${adj}${issue2.maximum.toString()} ist`}case"too_small":{let adj=issue2.inclusive?">=":">",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":{let _issue=issue2;if(_issue.format==="starts_with")return`Ungültiger String: muss mit "${_issue.prefix}" beginnen`;if(_issue.format==="ends_with")return`Ungültiger String: muss mit "${_issue.suffix}" enden`;if(_issue.format==="includes")return`Ungültiger String: muss "${_issue.includes}" enthalten`;if(_issue.format==="regex")return`Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;return`Ungültig: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ungültige Zahl: muss ein Vielfaches von ${issue2.divisor} sein`;case"unrecognized_keys":return`${issue2.keys.length>1?"Unbekannte Schlüssel":"Unbekannter Schlüssel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ungültiger Schlüssel in ${issue2.origin}`;case"invalid_union":return"Ungültige Eingabe";case"invalid_element":return`Ungültiger Wert in ${issue2.origin}`;default:return"Ungültige Eingabe"}}};var init_de=__esm(()=>{init_util()});function el_default(){return{localeError:error9()}}var error9=()=>{let Sizable={string:{unit:"χαρακτήρες",verb:"να έχει"},file:{unit:"bytes",verb:"να έχει"},array:{unit:"στοιχεία",verb:"να έχει"},set:{unit:"στοιχεία",verb:"να έχει"},map:{unit:"καταχωρήσεις",verb:"να έχει"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"είσοδος",email:"διεύθυνση 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 ημερομηνία και ώρα",date:"ISO ημερομηνία",time:"ISO ώρα",duration:"ISO διάρκεια",ipv4:"διεύθυνση IPv4",ipv6:"διεύθυνση IPv6",mac:"διεύθυνση MAC",cidrv4:"εύρος IPv4",cidrv6:"εύρος IPv6",base64:"συμβολοσειρά κωδικοποιημένη σε base64",base64url:"συμβολοσειρά κωδικοποιημένη σε base64url",json_string:"συμβολοσειρά JSON",e164:"αριθμός E.164",jwt:"JWT",template_literal:"είσοδος"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(typeof issue2.expected==="string"&&/^[A-Z]/.test(issue2.expected))return`Μη έγκυρη είσοδος: αναμενόταν instanceof ${issue2.expected}, λήφθηκε ${received}`;return`Μη έγκυρη είσοδος: αναμενόταν ${expected}, λήφθηκε ${received}`}case"invalid_value":if(issue2.values.length===1)return`Μη έγκυρη είσοδος: αναμενόταν ${stringifyPrimitive(issue2.values[0])}`;return`Μη έγκυρη επιλογή: αναμενόταν ένα από ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Πολύ μεγάλο: αναμενόταν ${issue2.origin??"τιμή"} να έχει ${adj}${issue2.maximum.toString()} ${sizing.unit??"στοιχεία"}`;return`Πολύ μεγάλο: αναμενόταν ${issue2.origin??"τιμή"} να είναι ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Πολύ μικρό: αναμενόταν ${issue2.origin} να έχει ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Πολύ μικρό: αναμενόταν ${issue2.origin} να είναι ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Μη έγκυρη συμβολοσειρά: πρέπει να ξεκινά με "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Μη έγκυρη συμβολοσειρά: πρέπει να τελειώνει με "${_issue.suffix}"`;if(_issue.format==="includes")return`Μη έγκυρη συμβολοσειρά: πρέπει να περιέχει "${_issue.includes}"`;if(_issue.format==="regex")return`Μη έγκυρη συμβολοσειρά: πρέπει να ταιριάζει με το μοτίβο ${_issue.pattern}`;return`Μη έγκυρο: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Μη έγκυρος αριθμός: πρέπει να είναι πολλαπλάσιο του ${issue2.divisor}`;case"unrecognized_keys":return`Άγνωστ${issue2.keys.length>1?"α":"ο"} κλειδ${issue2.keys.length>1?"ιά":"ί"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Μη έγκυρο κλειδί στο ${issue2.origin}`;case"invalid_union":return"Μη έγκυρη είσοδος";case"invalid_element":return`Μη έγκυρη τιμή στο ${issue2.origin}`;default:return"Μη έγκυρη είσοδος"}}};var init_el=__esm(()=>{init_util()});function en_default(){return{localeError:error10()}}var error10=()=>{let 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(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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":{let adj=issue2.inclusive?"<=":"<",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":{let adj=issue2.inclusive?">=":">",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":{let _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)return`Invalid discriminator value. Expected ${issue2.options.map((o)=>`'${o}'`).join(" | ")}`;return"Invalid input";case"invalid_element":return`Invalid value in ${issue2.origin}`;default:return"Invalid input"}}};var init_en=__esm(()=>{init_util()});function eo_default(){return{localeError:error11()}}var error11=()=>{let Sizable={string:{unit:"karaktrojn",verb:"havi"},file:{unit:"bajtojn",verb:"havi"},array:{unit:"elementojn",verb:"havi"},set:{unit:"elementojn",verb:"havi"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"enigo",email:"retadreso",url:"URL",emoji:"emoĝio",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ŭro",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"},TypeDictionary={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Nevalida enigo: atendiĝis instanceof ${issue2.expected}, riceviĝis ${received}`;return`Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`}case"invalid_value":if(issue2.values.length===1)return`Nevalida enigo: atendiĝis ${stringifyPrimitive(issue2.values[0])}`;return`Nevalida opcio: atendiĝis unu el ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Tro granda: atendiĝis ke ${issue2.origin??"valoro"} havu ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementojn"}`;return`Tro granda: atendiĝis ke ${issue2.origin??"valoro"} havu ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Tro malgranda: atendiĝis ke ${issue2.origin} havu ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Tro malgranda: atendiĝis ke ${issue2.origin} estu ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Nevalida karaktraro: devas komenciĝi per "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Nevalida karaktraro: devas finiĝi 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":""} ŝlosilo${issue2.keys.length>1?"j":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Nevalida ŝlosilo en ${issue2.origin}`;case"invalid_union":return"Nevalida enigo";case"invalid_element":return`Nevalida valoro en ${issue2.origin}`;default:return"Nevalida enigo"}}};var init_eo=__esm(()=>{init_util()});function es_default(){return{localeError:error12()}}var error12=()=>{let Sizable={string:{unit:"caracteres",verb:"tener"},file:{unit:"bytes",verb:"tener"},array:{unit:"elementos",verb:"tener"},set:{unit:"elementos",verb:"tener"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"entrada",email:"dirección de correo electrónico",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ón ISO",ipv4:"dirección IPv4",ipv6:"dirección IPv6",cidrv4:"rango IPv4",cidrv6:"rango IPv6",base64:"cadena codificada en base64",base64url:"URL codificada en base64",json_string:"cadena JSON",e164:"número E.164",jwt:"JWT",template_literal:"entrada"},TypeDictionary={nan:"NaN",string:"texto",number:"número",boolean:"booleano",array:"arreglo",object:"objeto",set:"conjunto",file:"archivo",date:"fecha",bigint:"número grande",symbol:"símbolo",undefined:"indefinido",null:"nulo",function:"función",map:"mapa",record:"registro",tuple:"tupla",enum:"enumeración",union:"unión",literal:"literal",promise:"promesa",void:"vacío",never:"nunca",unknown:"desconocido",any:"cualquiera"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Entrada inválida: se esperaba instanceof ${issue2.expected}, recibido ${received}`;return`Entrada inválida: se esperaba ${expected}, recibido ${received}`}case"invalid_value":if(issue2.values.length===1)return`Entrada inválida: se esperaba ${stringifyPrimitive(issue2.values[0])}`;return`Opción inválida: se esperaba una de ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin),origin2=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`Demasiado grande: se esperaba que ${origin2??"valor"} tuviera ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${origin2??"valor"} fuera ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin),origin2=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`Demasiado pequeño: se esperaba que ${origin2} tuviera ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Demasiado pequeño: se esperaba que ${origin2} fuera ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Cadena inválida: debe comenzar con "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Cadena inválida: debe terminar en "${_issue.suffix}"`;if(_issue.format==="includes")return`Cadena inválida: debe incluir "${_issue.includes}"`;if(_issue.format==="regex")return`Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;return`Inválido ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Número inválido: debe ser múltiplo 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álida en ${TypeDictionary[issue2.origin]??issue2.origin}`;case"invalid_union":return"Entrada inválida";case"invalid_element":return`Valor inválido en ${TypeDictionary[issue2.origin]??issue2.origin}`;default:return"Entrada inválida"}}};var init_es=__esm(()=>{init_util()});function fa_default(){return{localeError:error13()}}var error13=()=>{let Sizable={string:{unit:"کاراکتر",verb:"داشته باشد"},file:{unit:"بایت",verb:"داشته باشد"},array:{unit:"آیتم",verb:"داشته باشد"},set:{unit:"آیتم",verb:"داشته باشد"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"ورودی",email:"آدرس ایمیل",url:"URL",emoji:"ایموجی",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"تاریخ و زمان ایزو",date:"تاریخ ایزو",time:"زمان ایزو",duration:"مدت زمان ایزو",ipv4:"IPv4 آدرس",ipv6:"IPv6 آدرس",cidrv4:"IPv4 دامنه",cidrv6:"IPv6 دامنه",base64:"base64-encoded رشته",base64url:"base64url-encoded رشته",json_string:"JSON رشته",e164:"E.164 عدد",jwt:"JWT",template_literal:"ورودی"},TypeDictionary={nan:"NaN",number:"عدد",array:"آرایه"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`ورودی نامعتبر: می‌بایست instanceof ${issue2.expected} می‌بود، ${received} دریافت شد`;return`ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`}case"invalid_value":if(issue2.values.length===1)return`ورودی نامعتبر: می‌بایست ${stringifyPrimitive(issue2.values[0])} می‌بود`;return`گزینه نامعتبر: می‌بایست یکی از ${joinValues(issue2.values,"|")} می‌بود`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`خیلی بزرگ: ${issue2.origin??"مقدار"} باید ${adj}${issue2.maximum.toString()} ${sizing.unit??"عنصر"} باشد`;return`خیلی بزرگ: ${issue2.origin??"مقدار"} باید ${adj}${issue2.maximum.toString()} باشد`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`خیلی کوچک: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} ${sizing.unit} باشد`;return`خیلی کوچک: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} باشد`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`رشته نامعتبر: باید با "${_issue.prefix}" شروع شود`;if(_issue.format==="ends_with")return`رشته نامعتبر: باید با "${_issue.suffix}" تمام شود`;if(_issue.format==="includes")return`رشته نامعتبر: باید شامل "${_issue.includes}" باشد`;if(_issue.format==="regex")return`رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;return`${FormatDictionary[_issue.format]??issue2.format} نامعتبر`}case"not_multiple_of":return`عدد نامعتبر: باید مضرب ${issue2.divisor} باشد`;case"unrecognized_keys":return`کلید${issue2.keys.length>1?"های":""} ناشناس: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`کلید ناشناس در ${issue2.origin}`;case"invalid_union":return"ورودی نامعتبر";case"invalid_element":return`مقدار نامعتبر در ${issue2.origin}`;default:return"ورودی نامعتبر"}}};var init_fa=__esm(()=>{init_util()});function fi_default(){return{localeError:error14()}}var error14=()=>{let Sizable={string:{unit:"merkkiä",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äivämäärän"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"säännöllinen lauseke",email:"sähköpostiosoite",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äivämäärä",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"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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öte: täytyy olla ${stringifyPrimitive(issue2.values[0])}`;return`Virheellinen valinta: täytyy olla yksi seuraavista: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue2.maximum.toString()} ${sizing.unit}`.trim();return`Liian suuri: arvon täytyy olla ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue2.minimum.toString()} ${sizing.unit}`.trim();return`Liian pieni: arvon täytyy olla ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Virheellinen syöte: täytyy alkaa "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Virheellinen syöte: täytyy loppua "${_issue.suffix}"`;if(_issue.format==="includes")return`Virheellinen syöte: täytyy sisältää "${_issue.includes}"`;if(_issue.format==="regex")return`Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;return`Virheellinen ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Virheellinen luku: täytyy 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öte"}}};var init_fi=__esm(()=>{init_util()});function fr_default(){return{localeError:error15()}}var error15=()=>{let Sizable={string:{unit:"caractères",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"éléments",verb:"avoir"},set:{unit:"éléments",verb:"avoir"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"entrée",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ée ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"chaîne encodée en base64",base64url:"chaîne encodée en base64url",json_string:"chaîne JSON",e164:"numéro E.164",jwt:"JWT",template_literal:"entrée"},TypeDictionary={string:"chaîne",number:"nombre",int:"entier",boolean:"booléen",bigint:"grand entier",symbol:"symbole",undefined:"indéfini",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":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Entrée invalide : instanceof ${issue2.expected} attendu, ${received} reçu`;return`Entrée invalide : ${expected} attendu, ${received} reçu`}case"invalid_value":if(issue2.values.length===1)return`Entrée invalide : ${stringifyPrimitive(issue2.values[0])} attendu`;return`Option invalide : une valeur parmi ${joinValues(issue2.values,"|")} attendue`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Trop grand : ${TypeDictionary[issue2.origin]??"valeur"} doit ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"élément(s)"}`;return`Trop grand : ${TypeDictionary[issue2.origin]??"valeur"} doit être ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",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 être ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Chaîne invalide : doit commencer par "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Chaîne invalide : doit se terminer par "${_issue.suffix}"`;if(_issue.format==="includes")return`Chaîne invalide : doit inclure "${_issue.includes}"`;if(_issue.format==="regex")return`Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit être un multiple de ${issue2.divisor}`;case"unrecognized_keys":return`Clé${issue2.keys.length>1?"s":""} non reconnue${issue2.keys.length>1?"s":""} : ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Clé invalide dans ${issue2.origin}`;case"invalid_union":return"Entrée invalide";case"invalid_element":return`Valeur invalide dans ${issue2.origin}`;default:return"Entrée invalide"}}};var init_fr=__esm(()=>{init_util()});function fr_CA_default(){return{localeError:error16()}}var error16=()=>{let Sizable={string:{unit:"caractères",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"éléments",verb:"avoir"},set:{unit:"éléments",verb:"avoir"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"entrée",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ée ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"chaîne encodée en base64",base64url:"chaîne encodée en base64url",json_string:"chaîne JSON",e164:"numéro E.164",jwt:"JWT",template_literal:"entrée"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Entrée invalide : attendu instanceof ${issue2.expected}, reçu ${received}`;return`Entrée invalide : attendu ${expected}, reçu ${received}`}case"invalid_value":if(issue2.values.length===1)return`Entrée invalide : attendu ${stringifyPrimitive(issue2.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"≤":"<",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":{let adj=issue2.inclusive?"≥":">",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":{let _issue=issue2;if(_issue.format==="starts_with")return`Chaîne invalide : doit commencer par "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Chaîne invalide : doit se terminer par "${_issue.suffix}"`;if(_issue.format==="includes")return`Chaîne invalide : doit inclure "${_issue.includes}"`;if(_issue.format==="regex")return`Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit être un multiple de ${issue2.divisor}`;case"unrecognized_keys":return`Clé${issue2.keys.length>1?"s":""} non reconnue${issue2.keys.length>1?"s":""} : ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Clé invalide dans ${issue2.origin}`;case"invalid_union":return"Entrée invalide";case"invalid_element":return`Valeur invalide dans ${issue2.origin}`;default:return"Entrée invalide"}}};var init_fr_CA=__esm(()=>{init_util()});function he_default(){return{localeError:error17()}}var error17=()=>{let TypeNames={string:{label:"מחרוזת",gender:"f"},number:{label:"מספר",gender:"m"},boolean:{label:"ערך בוליאני",gender:"m"},bigint:{label:"BigInt",gender:"m"},date:{label:"תאריך",gender:"m"},array:{label:"מערך",gender:"m"},object:{label:"אובייקט",gender:"m"},null:{label:"ערך ריק (null)",gender:"m"},undefined:{label:"ערך לא מוגדר (undefined)",gender:"m"},symbol:{label:"סימבול (Symbol)",gender:"m"},function:{label:"פונקציה",gender:"f"},map:{label:"מפה (Map)",gender:"f"},set:{label:"קבוצה (Set)",gender:"f"},file:{label:"קובץ",gender:"m"},promise:{label:"Promise",gender:"m"},NaN:{label:"NaN",gender:"m"},unknown:{label:"ערך לא ידוע",gender:"m"},value:{label:"ערך",gender:"m"}},Sizable={string:{unit:"תווים",shortLabel:"קצר",longLabel:"ארוך"},file:{unit:"בייטים",shortLabel:"קטן",longLabel:"גדול"},array:{unit:"פריטים",shortLabel:"קטן",longLabel:"גדול"},set:{unit:"פריטים",shortLabel:"קטן",longLabel:"גדול"},number:{unit:"",shortLabel:"קטן",longLabel:"גדול"}},typeEntry=(t)=>t?TypeNames[t]:void 0,typeLabel=(t)=>{let e=typeEntry(t);if(e)return e.label;return t??TypeNames.unknown.label},withDefinite=(t)=>`ה${typeLabel(t)}`,verbFor=(t)=>{return(typeEntry(t)?.gender??"m")==="f"?"צריכה להיות":"צריך להיות"},getSizing=(origin2)=>{if(!origin2)return null;return Sizable[origin2]??null},FormatDictionary={regex:{label:"קלט",gender:"m"},email:{label:"כתובת אימייל",gender:"f"},url:{label:"כתובת רשת",gender:"f"},emoji:{label:"אימוג'י",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:"תאריך וזמן ISO",gender:"m"},date:{label:"תאריך ISO",gender:"m"},time:{label:"זמן ISO",gender:"m"},duration:{label:"משך זמן ISO",gender:"m"},ipv4:{label:"כתובת IPv4",gender:"f"},ipv6:{label:"כתובת IPv6",gender:"f"},cidrv4:{label:"טווח IPv4",gender:"m"},cidrv6:{label:"טווח IPv6",gender:"m"},base64:{label:"מחרוזת בבסיס 64",gender:"f"},base64url:{label:"מחרוזת בבסיס 64 לכתובות רשת",gender:"f"},json_string:{label:"מחרוזת JSON",gender:"f"},e164:{label:"מספר E.164",gender:"m"},jwt:{label:"JWT",gender:"m"},ends_with:{label:"קלט",gender:"m"},includes:{label:"קלט",gender:"m"},lowercase:{label:"קלט",gender:"m"},starts_with:{label:"קלט",gender:"m"},uppercase:{label:"קלט",gender:"m"}},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expectedKey=issue2.expected,expected=TypeDictionary[expectedKey??""]??typeLabel(expectedKey),receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??TypeNames[receivedType]?.label??receivedType;if(/^[A-Z]/.test(issue2.expected))return`קלט לא תקין: צריך להיות instanceof ${issue2.expected}, התקבל ${received}`;return`קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`}case"invalid_value":{if(issue2.values.length===1)return`ערך לא תקין: הערך חייב להיות ${stringifyPrimitive(issue2.values[0])}`;let stringified=issue2.values.map((v)=>stringifyPrimitive(v));if(issue2.values.length===2)return`ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;let lastValue=stringified[stringified.length-1];return`ערך לא תקין: האפשרויות המתאימות הן ${stringified.slice(0,-1).join(", ")} או ${lastValue}`}case"too_big":{let sizing=getSizing(issue2.origin),subject=withDefinite(issue2.origin??"value");if(issue2.origin==="string")return`${sizing?.longLabel??"ארוך"} מדי: ${subject} צריכה להכיל ${issue2.maximum.toString()} ${sizing?.unit??""} ${issue2.inclusive?"או פחות":"לכל היותר"}`.trim();if(issue2.origin==="number"){let comparison=issue2.inclusive?`קטן או שווה ל-${issue2.maximum}`:`קטן מ-${issue2.maximum}`;return`גדול מדי: ${subject} צריך להיות ${comparison}`}if(issue2.origin==="array"||issue2.origin==="set"){let verb=issue2.origin==="set"?"צריכה":"צריך",comparison=issue2.inclusive?`${issue2.maximum} ${sizing?.unit??""} או פחות`:`פחות מ-${issue2.maximum} ${sizing?.unit??""}`;return`גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim()}let adj=issue2.inclusive?"<=":"<",be=verbFor(issue2.origin??"value");if(sizing?.unit)return`${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue2.maximum.toString()} ${sizing.unit}`;return`${sizing?.longLabel??"גדול"} מדי: ${subject} ${be} ${adj}${issue2.maximum.toString()}`}case"too_small":{let sizing=getSizing(issue2.origin),subject=withDefinite(issue2.origin??"value");if(issue2.origin==="string")return`${sizing?.shortLabel??"קצר"} מדי: ${subject} צריכה להכיל ${issue2.minimum.toString()} ${sizing?.unit??""} ${issue2.inclusive?"או יותר":"לפחות"}`.trim();if(issue2.origin==="number"){let comparison=issue2.inclusive?`גדול או שווה ל-${issue2.minimum}`:`גדול מ-${issue2.minimum}`;return`קטן מדי: ${subject} צריך להיות ${comparison}`}if(issue2.origin==="array"||issue2.origin==="set"){let verb=issue2.origin==="set"?"צריכה":"צריך";if(issue2.minimum===1&&issue2.inclusive){let singularPhrase=issue2.origin==="set"?"לפחות פריט אחד":"לפחות פריט אחד";return`קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`}let comparison=issue2.inclusive?`${issue2.minimum} ${sizing?.unit??""} או יותר`:`יותר מ-${issue2.minimum} ${sizing?.unit??""}`;return`קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim()}let adj=issue2.inclusive?">=":">",be=verbFor(issue2.origin??"value");if(sizing?.unit)return`${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`${sizing?.shortLabel??"קטן"} מדי: ${subject} ${be} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`המחרוזת חייבת להתחיל ב "${_issue.prefix}"`;if(_issue.format==="ends_with")return`המחרוזת חייבת להסתיים ב "${_issue.suffix}"`;if(_issue.format==="includes")return`המחרוזת חייבת לכלול "${_issue.includes}"`;if(_issue.format==="regex")return`המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;let nounEntry=FormatDictionary[_issue.format],noun=nounEntry?.label??_issue.format,adjective=(nounEntry?.gender??"m")==="f"?"תקינה":"תקין";return`${noun} לא ${adjective}`}case"not_multiple_of":return`מספר לא תקין: חייב להיות מכפלה של ${issue2.divisor}`;case"unrecognized_keys":return`מפתח${issue2.keys.length>1?"ות":""} לא מזוה${issue2.keys.length>1?"ים":"ה"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return"שדה לא תקין באובייקט";case"invalid_union":return"קלט לא תקין";case"invalid_element":return`ערך לא תקין ב${withDefinite(issue2.origin??"array")}`;default:return"קלט לא תקין"}}};var init_he=__esm(()=>{init_util()});function hr_default(){return{localeError:error18()}}var error18=()=>{let Sizable={string:{unit:"znakova",verb:"imati"},file:{unit:"bajtova",verb:"imati"},array:{unit:"stavki",verb:"imati"},set:{unit:"stavki",verb:"imati"}};function getSizing(origin2){return Sizable[origin2]??null}let 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"},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":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Neispravan unos: očekuje se instanceof ${issue2.expected}, a primljeno je ${received}`;return`Neispravan unos: očekuje se ${expected}, a primljeno je ${received}`}case"invalid_value":if(issue2.values.length===1)return`Neispravna vrijednost: očekivano ${stringifyPrimitive(issue2.values[0])}`;return`Neispravna opcija: očekivano jedno od ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin),origin2=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`Preveliko: očekivano da ${origin2??"vrijednost"} ima ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemenata"}`;return`Preveliko: očekivano da ${origin2??"vrijednost"} bude ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin),origin2=TypeDictionary[issue2.origin]??issue2.origin;if(sizing)return`Premalo: očekivano da ${origin2} ima ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Premalo: očekivano da ${origin2} bude ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Neispravan tekst: mora započinjati s "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Neispravan tekst: mora završavati s "${_issue.suffix}"`;if(_issue.format==="includes")return`Neispravan tekst: mora sadržavati "${_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šekratnik od ${issue2.divisor}`;case"unrecognized_keys":return`Neprepoznat${issue2.keys.length>1?"i ključevi":" ključ"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neispravan ključ 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"}}};var init_hr=__esm(()=>{init_util()});function hu_default(){return{localeError:error19()}}var error19=()=>{let Sizable={string:{unit:"karakter",verb:"legyen"},file:{unit:"byte",verb:"legyen"},array:{unit:"elem",verb:"legyen"},set:{unit:"elem",verb:"legyen"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"bemenet",email:"email cím",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őbélyeg",date:"ISO dátum",time:"ISO idő",duration:"ISO időintervallum",ipv4:"IPv4 cím",ipv6:"IPv6 cím",cidrv4:"IPv4 tartomány",cidrv6:"IPv6 tartomány",base64:"base64-kódolt string",base64url:"base64url-kódolt string",json_string:"JSON string",e164:"E.164 szám",jwt:"JWT",template_literal:"bemenet"},TypeDictionary={nan:"NaN",number:"szám",array:"tömb"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Érvénytelen bemenet: a várt érték instanceof ${issue2.expected}, a kapott érték ${received}`;return`Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`}case"invalid_value":if(issue2.values.length===1)return`Érvénytelen bemenet: a várt érték ${stringifyPrimitive(issue2.values[0])}`;return`Érvénytelen opció: valamelyik érték várt ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Túl nagy: ${issue2.origin??"érték"} mérete túl nagy ${adj}${issue2.maximum.toString()} ${sizing.unit??"elem"}`;return`Túl nagy: a bemeneti érték ${issue2.origin??"érték"} túl nagy: ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Túl kicsi: a bemeneti érték ${issue2.origin} mérete túl kicsi ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Túl kicsi: a bemeneti érték ${issue2.origin} túl kicsi ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Érvénytelen string: "${_issue.prefix}" értékkel kell kezdődnie`;if(_issue.format==="ends_with")return`Érvénytelen string: "${_issue.suffix}" értékkel kell végződnie`;if(_issue.format==="includes")return`Érvénytelen string: "${_issue.includes}" értéket kell tartalmaznia`;if(_issue.format==="regex")return`Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;return`Érvénytelen ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Érvénytelen szám: ${issue2.divisor} többszörösének kell lennie`;case"unrecognized_keys":return`Ismeretlen kulcs${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Érvénytelen kulcs ${issue2.origin}`;case"invalid_union":return"Érvénytelen bemenet";case"invalid_element":return`Érvénytelen érték: ${issue2.origin}`;default:return"Érvénytelen bemenet"}}};var init_hu=__esm(()=>{init_util()});function getArmenianPlural(count,one,many){return Math.abs(count)===1?one:many}function withDefiniteArticle(word){if(!word)return"";let vowels=["ա","ե","ը","ի","ո","ու","օ"],lastChar=word[word.length-1];return word+(vowels.includes(lastChar)?"ն":"ը")}function hy_default(){return{localeError:error20()}}var error20=()=>{let Sizable={string:{unit:{one:"նշան",many:"նշաններ"},verb:"ունենալ"},file:{unit:{one:"բայթ",many:"բայթեր"},verb:"ունենալ"},array:{unit:{one:"տարր",many:"տարրեր"},verb:"ունենալ"},set:{unit:{one:"տարր",many:"տարրեր"},verb:"ունենալ"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"մուտք",email:"էլ. հասցե",url:"URL",emoji:"էմոջի",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO ամսաթիվ և ժամ",date:"ISO ամսաթիվ",time:"ISO ժամ",duration:"ISO տևողություն",ipv4:"IPv4 հասցե",ipv6:"IPv6 հասցե",cidrv4:"IPv4 միջակայք",cidrv6:"IPv6 միջակայք",base64:"base64 ձևաչափով տող",base64url:"base64url ձևաչափով տող",json_string:"JSON տող",e164:"E.164 համար",jwt:"JWT",template_literal:"մուտք"},TypeDictionary={nan:"NaN",number:"թիվ",array:"զանգված"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Սխալ մուտքագրում․ սպասվում էր instanceof ${issue2.expected}, ստացվել է ${received}`;return`Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`}case"invalid_value":if(issue2.values.length===1)return`Սխալ մուտքագրում․ սպասվում էր ${stringifyPrimitive(issue2.values[1])}`;return`Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing){let maxValue=Number(issue2.maximum),unit=getArmenianPlural(maxValue,sizing.unit.one,sizing.unit.many);return`Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin??"արժեք")} կունենա ${adj}${issue2.maximum.toString()} ${unit}`}return`Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin??"արժեք")} լինի ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing){let minValue=Number(issue2.minimum),unit=getArmenianPlural(minValue,sizing.unit.one,sizing.unit.many);return`Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin)} կունենա ${adj}${issue2.minimum.toString()} ${unit}`}return`Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin)} լինի ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Սխալ տող․ պետք է սկսվի "${_issue.prefix}"-ով`;if(_issue.format==="ends_with")return`Սխալ տող․ պետք է ավարտվի "${_issue.suffix}"-ով`;if(_issue.format==="includes")return`Սխալ տող․ պետք է պարունակի "${_issue.includes}"`;if(_issue.format==="regex")return`Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;return`Սխալ ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue2.divisor}-ի`;case"unrecognized_keys":return`Չճանաչված բանալի${issue2.keys.length>1?"ներ":""}. ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Սխալ բանալի ${withDefiniteArticle(issue2.origin)}-ում`;case"invalid_union":return"Սխալ մուտքագրում";case"invalid_element":return`Սխալ արժեք ${withDefiniteArticle(issue2.origin)}-ում`;default:return"Սխալ մուտքագրում"}}};var init_hy=__esm(()=>{init_util()});function id_default(){return{localeError:error21()}}var error21=()=>{let Sizable={string:{unit:"karakter",verb:"memiliki"},file:{unit:"byte",verb:"memiliki"},array:{unit:"item",verb:"memiliki"},set:{unit:"item",verb:"memiliki"}};function getSizing(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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":{let adj=issue2.inclusive?"<=":"<",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":{let adj=issue2.inclusive?">=":">",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":{let _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"}}};var init_id=__esm(()=>{init_util()});function is_default(){return{localeError:error22()}}var error22=()=>{let Sizable={string:{unit:"stafi",verb:"að hafa"},file:{unit:"bæti",verb:"að hafa"},array:{unit:"hluti",verb:"að hafa"},set:{unit:"hluti",verb:"að hafa"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"gildi",email:"netfang",url:"vefslóð",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ími",date:"ISO dagsetning",time:"ISO tími",duration:"ISO tímalengd",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ölugildi",jwt:"JWT",template_literal:"gildi"},TypeDictionary={nan:"NaN",number:"númer",array:"fylki"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue2.expected}`;return`Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`}case"invalid_value":if(issue2.values.length===1)return`Rangt gildi: gert ráð fyrir ${stringifyPrimitive(issue2.values[0])}`;return`Ógilt val: má vera eitt af eftirfarandi ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Of stórt: gert er ráð fyrir að ${issue2.origin??"gildi"} hafi ${adj}${issue2.maximum.toString()} ${sizing.unit??"hluti"}`;return`Of stórt: gert er ráð fyrir að ${issue2.origin??"gildi"} sé ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Of lítið: gert er ráð fyrir að ${issue2.origin} hafi ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Of lítið: gert er ráð fyrir að ${issue2.origin} sé ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Ógildur strengur: verður að byrja á "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Ógildur strengur: verður að enda á "${_issue.suffix}"`;if(_issue.format==="includes")return`Ógildur strengur: verður að innihalda "${_issue.includes}"`;if(_issue.format==="regex")return`Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;return`Rangt ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Röng tala: verður að vera margfeldi af ${issue2.divisor}`;case"unrecognized_keys":return`Óþekkt ${issue2.keys.length>1?"ir lyklar":"ur lykill"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Rangur lykill í ${issue2.origin}`;case"invalid_union":return"Rangt gildi";case"invalid_element":return`Rangt gildi í ${issue2.origin}`;default:return"Rangt gildi"}}};var init_is=__esm(()=>{init_util()});function it_default(){return{localeError:error23()}}var error23=()=>{let Sizable={string:{unit:"caratteri",verb:"avere"},file:{unit:"byte",verb:"avere"},array:{unit:"elementi",verb:"avere"},set:{unit:"elementi",verb:"avere"}};function getSizing(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN",number:"numero",array:"vettore"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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":{let adj=issue2.inclusive?"<=":"<",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":{let adj=issue2.inclusive?">=":">",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":{let _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"}}};var init_it=__esm(()=>{init_util()});function ja_default(){return{localeError:error24()}}var error24=()=>{let Sizable={string:{unit:"文字",verb:"である"},file:{unit:"バイト",verb:"である"},array:{unit:"要素",verb:"である"},set:{unit:"要素",verb:"である"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"入力値",email:"メールアドレス",url:"URL",emoji:"絵文字",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO日時",date:"ISO日付",time:"ISO時刻",duration:"ISO期間",ipv4:"IPv4アドレス",ipv6:"IPv6アドレス",cidrv4:"IPv4範囲",cidrv6:"IPv6範囲",base64:"base64エンコード文字列",base64url:"base64urlエンコード文字列",json_string:"JSON文字列",e164:"E.164番号",jwt:"JWT",template_literal:"入力値"},TypeDictionary={nan:"NaN",number:"数値",array:"配列"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`無効な入力: instanceof ${issue2.expected}が期待されましたが、${received}が入力されました`;return`無効な入力: ${expected}が期待されましたが、${received}が入力されました`}case"invalid_value":if(issue2.values.length===1)return`無効な入力: ${stringifyPrimitive(issue2.values[0])}が期待されました`;return`無効な選択: ${joinValues(issue2.values,"、")}のいずれかである必要があります`;case"too_big":{let adj=issue2.inclusive?"以下である":"より小さい",sizing=getSizing(issue2.origin);if(sizing)return`大きすぎる値: ${issue2.origin??"値"}は${issue2.maximum.toString()}${sizing.unit??"要素"}${adj}必要があります`;return`大きすぎる値: ${issue2.origin??"値"}は${issue2.maximum.toString()}${adj}必要があります`}case"too_small":{let adj=issue2.inclusive?"以上である":"より大きい",sizing=getSizing(issue2.origin);if(sizing)return`小さすぎる値: ${issue2.origin}は${issue2.minimum.toString()}${sizing.unit}${adj}必要があります`;return`小さすぎる値: ${issue2.origin}は${issue2.minimum.toString()}${adj}必要があります`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`無効な文字列: "${_issue.prefix}"で始まる必要があります`;if(_issue.format==="ends_with")return`無効な文字列: "${_issue.suffix}"で終わる必要があります`;if(_issue.format==="includes")return`無効な文字列: "${_issue.includes}"を含む必要があります`;if(_issue.format==="regex")return`無効な文字列: パターン${_issue.pattern}に一致する必要があります`;return`無効な${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`無効な数値: ${issue2.divisor}の倍数である必要があります`;case"unrecognized_keys":return`認識されていないキー${issue2.keys.length>1?"群":""}: ${joinValues(issue2.keys,"、")}`;case"invalid_key":return`${issue2.origin}内の無効なキー`;case"invalid_union":return"無効な入力";case"invalid_element":return`${issue2.origin}内の無効な値`;default:return"無効な入力"}}};var init_ja=__esm(()=>{init_util()});function ka_default(){return{localeError:error25()}}var error25=()=>{let Sizable={string:{unit:"სიმბოლო",verb:"უნდა შეიცავდეს"},file:{unit:"ბაიტი",verb:"უნდა შეიცავდეს"},array:{unit:"ელემენტი",verb:"უნდა შეიცავდეს"},set:{unit:"ელემენტი",verb:"უნდა შეიცავდეს"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"შეყვანა",email:"ელ-ფოსტის მისამართი",url:"URL",emoji:"ემოჯი",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"თარიღი-დრო",date:"თარიღი",time:"დრო",duration:"ხანგრძლივობა",ipv4:"IPv4 მისამართი",ipv6:"IPv6 მისამართი",cidrv4:"IPv4 დიაპაზონი",cidrv6:"IPv6 დიაპაზონი",base64:"base64-კოდირებული ველი",base64url:"base64url-კოდირებული ველი",json_string:"JSON ველი",e164:"E.164 ნომერი",jwt:"JWT",template_literal:"შეყვანა"},TypeDictionary={nan:"NaN",number:"რიცხვი",string:"ველი",boolean:"ბულეანი",function:"ფუნქცია",array:"მასივი"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`არასწორი შეყვანა: მოსალოდნელი instanceof ${issue2.expected}, მიღებული ${received}`;return`არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`}case"invalid_value":if(issue2.values.length===1)return`არასწორი შეყვანა: მოსალოდნელი ${stringifyPrimitive(issue2.values[0])}`;return`არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${joinValues(issue2.values,"|")}-დან`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`ზედმეტად დიდი: მოსალოდნელი ${issue2.origin??"მნიშვნელობა"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit}`;return`ზედმეტად დიდი: მოსალოდნელი ${issue2.origin??"მნიშვნელობა"} იყოს ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`ზედმეტად პატარა: მოსალოდნელი ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`ზედმეტად პატარა: მოსალოდნელი ${issue2.origin} იყოს ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`არასწორი ველი: უნდა იწყებოდეს "${_issue.prefix}"-ით`;if(_issue.format==="ends_with")return`არასწორი ველი: უნდა მთავრდებოდეს "${_issue.suffix}"-ით`;if(_issue.format==="includes")return`არასწორი ველი: უნდა შეიცავდეს "${_issue.includes}"-ს`;if(_issue.format==="regex")return`არასწორი ველი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;return`არასწორი ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`არასწორი რიცხვი: უნდა იყოს ${issue2.divisor}-ის ჯერადი`;case"unrecognized_keys":return`უცნობი გასაღებ${issue2.keys.length>1?"ები":"ი"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`არასწორი გასაღები ${issue2.origin}-ში`;case"invalid_union":return"არასწორი შეყვანა";case"invalid_element":return`არასწორი მნიშვნელობა ${issue2.origin}-ში`;default:return"არასწორი შეყვანა"}}};var init_ka=__esm(()=>{init_util()});function km_default(){return{localeError:error26()}}var error26=()=>{let Sizable={string:{unit:"តួអក្សរ",verb:"គួរមាន"},file:{unit:"បៃ",verb:"គួរមាន"},array:{unit:"ធាតុ",verb:"គួរមាន"},set:{unit:"ធាតុ",verb:"គួរមាន"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"ទិន្នន័យបញ្ចូល",email:"អាសយដ្ឋានអ៊ីមែល",url:"URL",emoji:"សញ្ញាអារម្មណ៍",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"កាលបរិច្ឆេទ និងម៉ោង ISO",date:"កាលបរិច្ឆេទ ISO",time:"ម៉ោង ISO",duration:"រយៈពេល ISO",ipv4:"អាសយដ្ឋាន IPv4",ipv6:"អាសយដ្ឋាន IPv6",cidrv4:"ដែនអាសយដ្ឋាន IPv4",cidrv6:"ដែនអាសយដ្ឋាន IPv6",base64:"ខ្សែអក្សរអ៊ិកូដ base64",base64url:"ខ្សែអក្សរអ៊ិកូដ base64url",json_string:"ខ្សែអក្សរ JSON",e164:"លេខ E.164",jwt:"JWT",template_literal:"ទិន្នន័យបញ្ចូល"},TypeDictionary={nan:"NaN",number:"លេខ",array:"អារេ (Array)",null:"គ្មានតម្លៃ (null)"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue2.expected} ប៉ុន្តែទទួលបាន ${received}`;return`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`}case"invalid_value":if(issue2.values.length===1)return`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${stringifyPrimitive(issue2.values[0])}`;return`ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`ធំពេក៖ ត្រូវការ ${issue2.origin??"តម្លៃ"} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"ធាតុ"}`;return`ធំពេក៖ ត្រូវការ ${issue2.origin??"តម្លៃ"} ${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`តូចពេក៖ ត្រូវការ ${issue2.origin} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`;return`តូចពេក៖ ត្រូវការ ${issue2.origin} ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ "${_issue.prefix}"`;if(_issue.format==="ends_with")return`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ "${_issue.suffix}"`;if(_issue.format==="includes")return`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន "${_issue.includes}"`;if(_issue.format==="regex")return`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;return`មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue2.divisor}`;case"unrecognized_keys":return`រកឃើញសោមិនស្គាល់៖ ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`សោមិនត្រឹមត្រូវនៅក្នុង ${issue2.origin}`;case"invalid_union":return"ទិន្នន័យមិនត្រឹមត្រូវ";case"invalid_element":return`ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue2.origin}`;default:return"ទិន្នន័យមិនត្រឹមត្រូវ"}}};var init_km=__esm(()=>{init_util()});function kh_default(){return km_default()}var init_kh=__esm(()=>{init_km()});function ko_default(){return{localeError:error27()}}var error27=()=>{let Sizable={string:{unit:"문자",verb:"to have"},file:{unit:"바이트",verb:"to have"},array:{unit:"개",verb:"to have"},set:{unit:"개",verb:"to have"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"입력",email:"이메일 주소",url:"URL",emoji:"이모지",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO 날짜시간",date:"ISO 날짜",time:"ISO 시간",duration:"ISO 기간",ipv4:"IPv4 주소",ipv6:"IPv6 주소",cidrv4:"IPv4 범위",cidrv6:"IPv6 범위",base64:"base64 인코딩 문자열",base64url:"base64url 인코딩 문자열",json_string:"JSON 문자열",e164:"E.164 번호",jwt:"JWT",template_literal:"입력"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`잘못된 입력: 예상 타입은 instanceof ${issue2.expected}, 받은 타입은 ${received}입니다`;return`잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`}case"invalid_value":if(issue2.values.length===1)return`잘못된 입력: 값은 ${stringifyPrimitive(issue2.values[0])} 이어야 합니다`;return`잘못된 옵션: ${joinValues(issue2.values,"또는 ")} 중 하나여야 합니다`;case"too_big":{let adj=issue2.inclusive?"이하":"미만",suffix=adj==="미만"?"이어야 합니다":"여야 합니다",sizing=getSizing(issue2.origin),unit=sizing?.unit??"요소";if(sizing)return`${issue2.origin??"값"}이 너무 큽니다: ${issue2.maximum.toString()}${unit} ${adj}${suffix}`;return`${issue2.origin??"값"}이 너무 큽니다: ${issue2.maximum.toString()} ${adj}${suffix}`}case"too_small":{let adj=issue2.inclusive?"이상":"초과",suffix=adj==="이상"?"이어야 합니다":"여야 합니다",sizing=getSizing(issue2.origin),unit=sizing?.unit??"요소";if(sizing)return`${issue2.origin??"값"}이 너무 작습니다: ${issue2.minimum.toString()}${unit} ${adj}${suffix}`;return`${issue2.origin??"값"}이 너무 작습니다: ${issue2.minimum.toString()} ${adj}${suffix}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`잘못된 문자열: "${_issue.prefix}"(으)로 시작해야 합니다`;if(_issue.format==="ends_with")return`잘못된 문자열: "${_issue.suffix}"(으)로 끝나야 합니다`;if(_issue.format==="includes")return`잘못된 문자열: "${_issue.includes}"을(를) 포함해야 합니다`;if(_issue.format==="regex")return`잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;return`잘못된 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`잘못된 숫자: ${issue2.divisor}의 배수여야 합니다`;case"unrecognized_keys":return`인식할 수 없는 키: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`잘못된 키: ${issue2.origin}`;case"invalid_union":return"잘못된 입력";case"invalid_element":return`잘못된 값: ${issue2.origin}`;default:return"잘못된 입력"}}};var init_ko=__esm(()=>{init_util()});function getUnitTypeFromNumber(number2){let abs=Math.abs(number2),last=abs%10,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=(text)=>{return text.charAt(0).toUpperCase()+text.slice(1)},error28=()=>{let Sizable={string:{unit:{one:"simbolis",few:"simboliai",many:"simbolių"},verb:{smaller:{inclusive:"turi būti ne ilgesnė kaip",notInclusive:"turi būti trumpesnė kaip"},bigger:{inclusive:"turi būti ne trumpesnė kaip",notInclusive:"turi būti ilgesnė kaip"}}},file:{unit:{one:"baitas",few:"baitai",many:"baitų"},verb:{smaller:{inclusive:"turi būti ne didesnis kaip",notInclusive:"turi būti mažesnis kaip"},bigger:{inclusive:"turi būti ne mažesnis kaip",notInclusive:"turi būti didesnis kaip"}}},array:{unit:{one:"elementą",few:"elementus",many:"elementų"},verb:{smaller:{inclusive:"turi turėti ne daugiau kaip",notInclusive:"turi turėti mažiau kaip"},bigger:{inclusive:"turi turėti ne mažiau kaip",notInclusive:"turi turėti daugiau kaip"}}},set:{unit:{one:"elementą",few:"elementus",many:"elementų"},verb:{smaller:{inclusive:"turi turėti ne daugiau kaip",notInclusive:"turi turėti mažiau kaip"},bigger:{inclusive:"turi turėti ne mažiau kaip",notInclusive:"turi turėti daugiau kaip"}}}};function getSizing(origin2,unitType,inclusive,targetShouldBe){let result=Sizable[origin2]??null;if(result===null)return result;return{unit:result.unit[unitType],verb:result.verb[targetShouldBe][inclusive?"inclusive":"notInclusive"]}}let FormatDictionary={regex:"įvestis",email:"el. pašto 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ė",ipv4:"IPv4 adresas",ipv6:"IPv6 adresas",cidrv4:"IPv4 tinklo prefiksas (CIDR)",cidrv6:"IPv6 tinklo prefiksas (CIDR)",base64:"base64 užkoduota eilutė",base64url:"base64url užkoduota eilutė",json_string:"JSON eilutė",e164:"E.164 numeris",jwt:"JWT",template_literal:"įvestis"},TypeDictionary={nan:"NaN",number:"skaičius",bigint:"sveikasis skaičius",string:"eilutė",boolean:"loginė reikšmė",undefined:"neapibrėžta reikšmė",function:"funkcija",symbol:"simbolis",array:"masyvas",object:"objektas",null:"nulinė reikšmė"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Gautas tipas ${received}, o tikėtasi - instanceof ${issue2.expected}`;return`Gautas tipas ${received}, o tikėtasi - ${expected}`}case"invalid_value":if(issue2.values.length===1)return`Privalo būti ${stringifyPrimitive(issue2.values[0])}`;return`Privalo būti vienas iš ${joinValues(issue2.values,"|")} pasirinkimų`;case"too_big":{let origin2=TypeDictionary[issue2.origin]??issue2.origin,sizing=getSizing(issue2.origin,getUnitTypeFromNumber(Number(issue2.maximum)),issue2.inclusive??!1,"smaller");if(sizing?.verb)return`${capitalizeFirstCharacter(origin2??issue2.origin??"reikšmė")} ${sizing.verb} ${issue2.maximum.toString()} ${sizing.unit??"elementų"}`;let adj=issue2.inclusive?"ne didesnis kaip":"mažesnis kaip";return`${capitalizeFirstCharacter(origin2??issue2.origin??"reikšmė")} turi būti ${adj} ${issue2.maximum.toString()} ${sizing?.unit}`}case"too_small":{let origin2=TypeDictionary[issue2.origin]??issue2.origin,sizing=getSizing(issue2.origin,getUnitTypeFromNumber(Number(issue2.minimum)),issue2.inclusive??!1,"bigger");if(sizing?.verb)return`${capitalizeFirstCharacter(origin2??issue2.origin??"reikšmė")} ${sizing.verb} ${issue2.minimum.toString()} ${sizing.unit??"elementų"}`;let adj=issue2.inclusive?"ne mažesnis kaip":"didesnis kaip";return`${capitalizeFirstCharacter(origin2??issue2.origin??"reikšmė")} turi būti ${adj} ${issue2.minimum.toString()} ${sizing?.unit}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Eilutė privalo prasidėti "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Eilutė privalo pasibaigti "${_issue.suffix}"`;if(_issue.format==="includes")return`Eilutė privalo įtraukti "${_issue.includes}"`;if(_issue.format==="regex")return`Eilutė privalo atitikti ${_issue.pattern}`;return`Neteisingas ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Skaičius privalo būti ${issue2.divisor} kartotinis.`;case"unrecognized_keys":return`Neatpažint${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 įvestis";case"invalid_element":{let origin2=TypeDictionary[issue2.origin]??issue2.origin;return`${capitalizeFirstCharacter(origin2??issue2.origin??"reikšmė")} turi klaidingą įvestį`}default:return"Klaidinga įvestis"}}};var init_lt=__esm(()=>{init_util()});function mk_default(){return{localeError:error29()}}var error29=()=>{let Sizable={string:{unit:"знаци",verb:"да имаат"},file:{unit:"бајти",verb:"да имаат"},array:{unit:"ставки",verb:"да имаат"},set:{unit:"ставки",verb:"да имаат"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"внес",email:"адреса на е-пошта",url:"URL",emoji:"емоџи",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO датум и време",date:"ISO датум",time:"ISO време",duration:"ISO времетраење",ipv4:"IPv4 адреса",ipv6:"IPv6 адреса",cidrv4:"IPv4 опсег",cidrv6:"IPv6 опсег",base64:"base64-енкодирана низа",base64url:"base64url-енкодирана низа",json_string:"JSON низа",e164:"E.164 број",jwt:"JWT",template_literal:"внес"},TypeDictionary={nan:"NaN",number:"број",array:"низа"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Грешен внес: се очекува instanceof ${issue2.expected}, примено ${received}`;return`Грешен внес: се очекува ${expected}, примено ${received}`}case"invalid_value":if(issue2.values.length===1)return`Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`;return`Грешана опција: се очекува една ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Премногу голем: се очекува ${issue2.origin??"вредноста"} да има ${adj}${issue2.maximum.toString()} ${sizing.unit??"елементи"}`;return`Премногу голем: се очекува ${issue2.origin??"вредноста"} да биде ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Премногу мал: се очекува ${issue2.origin} да има ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Премногу мал: се очекува ${issue2.origin} да биде ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Неважечка низа: мора да започнува со "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Неважечка низа: мора да завршува со "${_issue.suffix}"`;if(_issue.format==="includes")return`Неважечка низа: мора да вклучува "${_issue.includes}"`;if(_issue.format==="regex")return`Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;return`Invalid ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Грешен број: мора да биде делив со ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Непрепознаени клучеви":"Непрепознаен клуч"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Грешен клуч во ${issue2.origin}`;case"invalid_union":return"Грешен внес";case"invalid_element":return`Грешна вредност во ${issue2.origin}`;default:return"Грешен внес"}}};var init_mk=__esm(()=>{init_util()});function ms_default(){return{localeError:error30()}}var error30=()=>{let Sizable={string:{unit:"aksara",verb:"mempunyai"},file:{unit:"bait",verb:"mempunyai"},array:{unit:"elemen",verb:"mempunyai"},set:{unit:"elemen",verb:"mempunyai"}};function getSizing(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN",number:"nombor"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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":{let adj=issue2.inclusive?"<=":"<",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":{let adj=issue2.inclusive?">=":">",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":{let _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"}}};var init_ms=__esm(()=>{init_util()});function nl_default(){return{localeError:error31()}}var error31=()=>{let Sizable={string:{unit:"tekens",verb:"heeft"},file:{unit:"bytes",verb:"heeft"},array:{unit:"elementen",verb:"heeft"},set:{unit:"elementen",verb:"heeft"}};function getSizing(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN",number:"getal"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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 één van ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin),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":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin),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":{let _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"}}};var init_nl=__esm(()=>{init_util()});function no_default(){return{localeError:error32()}}var error32=()=>{let Sizable={string:{unit:"tegn",verb:"å ha"},file:{unit:"bytes",verb:"å ha"},array:{unit:"elementer",verb:"å inneholde"},set:{unit:"elementer",verb:"å inneholde"}};function getSizing(origin2){return Sizable[origin2]??null}let 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åde",ipv6:"IPv6-område",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"},TypeDictionary={nan:"NaN",number:"tall",array:"liste"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),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":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`For stor(t): forventet ${issue2.origin??"value"} til å ha ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementer"}`;return`For stor(t): forventet ${issue2.origin??"value"} til å ha ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`For lite(n): forventet ${issue2.origin} til å ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`For lite(n): forventet ${issue2.origin} til å ha ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Ugyldig streng: må starte med "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Ugyldig streng: må ende med "${_issue.suffix}"`;if(_issue.format==="includes")return`Ugyldig streng: må inneholde "${_issue.includes}"`;if(_issue.format==="regex")return`Ugyldig streng: må matche mønsteret ${_issue.pattern}`;return`Ugyldig ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ugyldig tall: må være et multiplum av ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Ukjente nøkler":"Ukjent nøkkel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ugyldig nøkkel i ${issue2.origin}`;case"invalid_union":return"Ugyldig input";case"invalid_element":return`Ugyldig verdi i ${issue2.origin}`;default:return"Ugyldig input"}}};var init_no=__esm(()=>{init_util()});function ota_default(){return{localeError:error33()}}var error33=()=>{let Sizable={string:{unit:"harf",verb:"olmalıdır"},file:{unit:"bayt",verb:"olmalıdır"},array:{unit:"unsur",verb:"olmalıdır"},set:{unit:"unsur",verb:"olmalıdır"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"giren",email:"epostagâh",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âmı",date:"ISO tarihi",time:"ISO zamanı",duration:"ISO müddeti",ipv4:"IPv4 nişânı",ipv6:"IPv6 nişânı",cidrv4:"IPv4 menzili",cidrv6:"IPv6 menzili",base64:"base64-şifreli metin",base64url:"base64url-şifreli metin",json_string:"JSON metin",e164:"E.164 sayısı",jwt:"JWT",template_literal:"giren"},TypeDictionary={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Fâsit giren: umulan instanceof ${issue2.expected}, alınan ${received}`;return`Fâsit giren: umulan ${expected}, alınan ${received}`}case"invalid_value":if(issue2.values.length===1)return`Fâsit giren: umulan ${stringifyPrimitive(issue2.values[0])}`;return`Fâsit tercih: mûteberler ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Fazla büyük: ${issue2.origin??"value"}, ${adj}${issue2.maximum.toString()} ${sizing.unit??"elements"} sahip olmalıydı.`;return`Fazla büyük: ${issue2.origin??"value"}, ${adj}${issue2.maximum.toString()} olmalıydı.`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Fazla küçük: ${issue2.origin}, ${adj}${issue2.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;return`Fazla küçük: ${issue2.origin}, ${adj}${issue2.minimum.toString()} olmalıydı.`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Fâsit metin: "${_issue.prefix}" ile başlamalı.`;if(_issue.format==="ends_with")return`Fâsit metin: "${_issue.suffix}" ile bitmeli.`;if(_issue.format==="includes")return`Fâsit metin: "${_issue.includes}" ihtivâ etmeli.`;if(_issue.format==="regex")return`Fâsit metin: ${_issue.pattern} nakşına uymalı.`;return`Fâsit ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Fâsit sayı: ${issue2.divisor} katı olmalıydı.`;case"unrecognized_keys":return`Tanınmayan anahtar ${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} için tanınmayan anahtar var.`;case"invalid_union":return"Giren tanınamadı.";case"invalid_element":return`${issue2.origin} için tanınmayan kıymet var.`;default:return"Kıymet tanınamadı."}}};var init_ota=__esm(()=>{init_util()});function ps_default(){return{localeError:error34()}}var error34=()=>{let Sizable={string:{unit:"توکي",verb:"ولري"},file:{unit:"بایټس",verb:"ولري"},array:{unit:"توکي",verb:"ولري"},set:{unit:"توکي",verb:"ولري"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"ورودي",email:"بریښنالیک",url:"یو آر ال",emoji:"ایموجي",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"نیټه او وخت",date:"نېټه",time:"وخت",duration:"موده",ipv4:"د IPv4 پته",ipv6:"د IPv6 پته",cidrv4:"د IPv4 ساحه",cidrv6:"د IPv6 ساحه",base64:"base64-encoded متن",base64url:"base64url-encoded متن",json_string:"JSON متن",e164:"د E.164 شمېره",jwt:"JWT",template_literal:"ورودي"},TypeDictionary={nan:"NaN",number:"عدد",array:"ارې"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`ناسم ورودي: باید instanceof ${issue2.expected} وای, مګر ${received} ترلاسه شو`;return`ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`}case"invalid_value":if(issue2.values.length===1)return`ناسم ورودي: باید ${stringifyPrimitive(issue2.values[0])} وای`;return`ناسم انتخاب: باید یو له ${joinValues(issue2.values,"|")} څخه وای`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`ډیر لوی: ${issue2.origin??"ارزښت"} باید ${adj}${issue2.maximum.toString()} ${sizing.unit??"عنصرونه"} ولري`;return`ډیر لوی: ${issue2.origin??"ارزښت"} باید ${adj}${issue2.maximum.toString()} وي`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`ډیر کوچنی: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} ${sizing.unit} ولري`;return`ډیر کوچنی: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} وي`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`ناسم متن: باید د "${_issue.prefix}" سره پیل شي`;if(_issue.format==="ends_with")return`ناسم متن: باید د "${_issue.suffix}" سره پای ته ورسيږي`;if(_issue.format==="includes")return`ناسم متن: باید "${_issue.includes}" ولري`;if(_issue.format==="regex")return`ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;return`${FormatDictionary[_issue.format]??issue2.format} ناسم دی`}case"not_multiple_of":return`ناسم عدد: باید د ${issue2.divisor} مضرب وي`;case"unrecognized_keys":return`ناسم ${issue2.keys.length>1?"کلیډونه":"کلیډ"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`ناسم کلیډ په ${issue2.origin} کې`;case"invalid_union":return"ناسمه ورودي";case"invalid_element":return`ناسم عنصر په ${issue2.origin} کې`;default:return"ناسمه ورودي"}}};var init_ps=__esm(()=>{init_util()});function pl_default(){return{localeError:error35()}}var error35=()=>{let Sizable={string:{unit:"znaków",verb:"mieć"},file:{unit:"bajtów",verb:"mieć"},array:{unit:"elementów",verb:"mieć"},set:{unit:"elementów",verb:"mieć"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"wyrażenie",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ąg znaków zakodowany w formacie base64",base64url:"ciąg znaków zakodowany w formacie base64url",json_string:"ciąg znaków w formacie JSON",e164:"liczba E.164",jwt:"JWT",template_literal:"wejście"},TypeDictionary={nan:"NaN",number:"liczba",array:"tablica"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue2.expected}, otrzymano ${received}`;return`Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`}case"invalid_value":if(issue2.values.length===1)return`Nieprawidłowe dane wejściowe: oczekiwano ${stringifyPrimitive(issue2.values[0])}`;return`Nieprawidłowa opcja: oczekiwano jednej z wartości ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Za duża wartość: oczekiwano, że ${issue2.origin??"wartość"} będzie mieć ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementów"}`;return`Zbyt duż(y/a/e): oczekiwano, że ${issue2.origin??"wartość"} będzie wynosić ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Za mała wartość: oczekiwano, że ${issue2.origin??"wartość"} będzie mieć ${adj}${issue2.minimum.toString()} ${sizing.unit??"elementów"}`;return`Zbyt mał(y/a/e): oczekiwano, że ${issue2.origin??"wartość"} będzie wynosić ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Nieprawidłowy ciąg znaków: musi zaczynać się od "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Nieprawidłowy ciąg znaków: musi kończyć się na "${_issue.suffix}"`;if(_issue.format==="includes")return`Nieprawidłowy ciąg znaków: musi zawierać "${_issue.includes}"`;if(_issue.format==="regex")return`Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;return`Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Nieprawidłowa liczba: musi być wielokrotnością ${issue2.divisor}`;case"unrecognized_keys":return`Nierozpoznane klucze${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Nieprawidłowy klucz w ${issue2.origin}`;case"invalid_union":return"Nieprawidłowe dane wejściowe";case"invalid_element":return`Nieprawidłowa wartość w ${issue2.origin}`;default:return"Nieprawidłowe dane wejściowe"}}};var init_pl=__esm(()=>{init_util()});function pt_default(){return{localeError:error36()}}var error36=()=>{let Sizable={string:{unit:"caracteres",verb:"ter"},file:{unit:"bytes",verb:"ter"},array:{unit:"itens",verb:"ter"},set:{unit:"itens",verb:"ter"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"padrão",email:"endereço 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ção ISO",ipv4:"endereço IPv4",ipv6:"endereço 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úmero E.164",jwt:"JWT",template_literal:"entrada"},TypeDictionary={nan:"NaN",number:"número",null:"nulo"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Tipo inválido: esperado instanceof ${issue2.expected}, recebido ${received}`;return`Tipo inválido: esperado ${expected}, recebido ${received}`}case"invalid_value":if(issue2.values.length===1)return`Entrada inválida: esperado ${stringifyPrimitive(issue2.values[0])}`;return`Opção inválida: esperada uma das ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",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":{let adj=issue2.inclusive?">=":">",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":{let _issue=issue2;if(_issue.format==="starts_with")return`Texto inválido: deve começar com "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Texto inválido: deve terminar com "${_issue.suffix}"`;if(_issue.format==="includes")return`Texto inválido: deve incluir "${_issue.includes}"`;if(_issue.format==="regex")return`Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} inválido`}case"not_multiple_of":return`Número inválido: deve ser múltiplo 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álida em ${issue2.origin}`;case"invalid_union":return"Entrada inválida";case"invalid_element":return`Valor inválido em ${issue2.origin}`;default:return"Campo inválido"}}};var init_pt=__esm(()=>{init_util()});function ro_default(){return{localeError:error37()}}var error37=()=>{let Sizable={string:{unit:"caractere",verb:"să aibă"},file:{unit:"octeți",verb:"să aibă"},array:{unit:"elemente",verb:"să aibă"},set:{unit:"elemente",verb:"să aibă"},map:{unit:"intrări",verb:"să aibă"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"intrare",email:"adresă 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ă și oră ISO",date:"dată ISO",time:"oră ISO",duration:"durată ISO",ipv4:"adresă IPv4",ipv6:"adresă IPv6",mac:"adresă MAC",cidrv4:"interval IPv4",cidrv6:"interval IPv6",base64:"șir codat base64",base64url:"șir codat base64url",json_string:"șir JSON",e164:"număr E.164",jwt:"JWT",template_literal:"intrare"},TypeDictionary={nan:"NaN",string:"șir",number:"număr",boolean:"boolean",function:"funcție",array:"matrice",object:"obiect",undefined:"nedefinit",symbol:"simbol",bigint:"număr mare",void:"void",never:"never",map:"hartă",set:"set"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return`Intrare invalidă: așteptat ${expected}, primit ${received}`}case"invalid_value":if(issue2.values.length===1)return`Intrare invalidă: așteptat ${stringifyPrimitive(issue2.values[0])}`;return`Opțiune invalidă: așteptat una dintre ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Prea mare: așteptat ca ${issue2.origin??"valoarea"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemente"}`;return`Prea mare: așteptat ca ${issue2.origin??"valoarea"} să fie ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Prea mic: așteptat ca ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Prea mic: așteptat ca ${issue2.origin} să fie ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Șir invalid: trebuie să înceapă cu "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Șir invalid: trebuie să se termine cu "${_issue.suffix}"`;if(_issue.format==="includes")return`Șir invalid: trebuie să includă "${_issue.includes}"`;if(_issue.format==="regex")return`Șir invalid: trebuie să se potrivească cu modelul ${_issue.pattern}`;return`Format invalid: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Număr invalid: trebuie să fie multiplu de ${issue2.divisor}`;case"unrecognized_keys":return`Chei nerecunoscute: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Cheie invalidă în ${issue2.origin}`;case"invalid_union":return"Intrare invalidă";case"invalid_element":return`Valoare invalidă în ${issue2.origin}`;default:return"Intrare invalidă"}}};var init_ro=__esm(()=>{init_util()});function getRussianPlural(count,one,few,many){let absCount=Math.abs(count),lastDigit=absCount%10,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=()=>{let Sizable={string:{unit:{one:"символ",few:"символа",many:"символов"},verb:"иметь"},file:{unit:{one:"байт",few:"байта",many:"байт"},verb:"иметь"},array:{unit:{one:"элемент",few:"элемента",many:"элементов"},verb:"иметь"},set:{unit:{one:"элемент",few:"элемента",many:"элементов"},verb:"иметь"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"ввод",email:"email адрес",url:"URL",emoji:"эмодзи",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO дата и время",date:"ISO дата",time:"ISO время",duration:"ISO длительность",ipv4:"IPv4 адрес",ipv6:"IPv6 адрес",cidrv4:"IPv4 диапазон",cidrv6:"IPv6 диапазон",base64:"строка в формате base64",base64url:"строка в формате base64url",json_string:"JSON строка",e164:"номер E.164",jwt:"JWT",template_literal:"ввод"},TypeDictionary={nan:"NaN",number:"число",array:"массив"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Неверный ввод: ожидалось instanceof ${issue2.expected}, получено ${received}`;return`Неверный ввод: ожидалось ${expected}, получено ${received}`}case"invalid_value":if(issue2.values.length===1)return`Неверный ввод: ожидалось ${stringifyPrimitive(issue2.values[0])}`;return`Неверный вариант: ожидалось одно из ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing){let maxValue=Number(issue2.maximum),unit=getRussianPlural(maxValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Слишком большое значение: ожидалось, что ${issue2.origin??"значение"} будет иметь ${adj}${issue2.maximum.toString()} ${unit}`}return`Слишком большое значение: ожидалось, что ${issue2.origin??"значение"} будет ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing){let minValue=Number(issue2.minimum),unit=getRussianPlural(minValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Слишком маленькое значение: ожидалось, что ${issue2.origin} будет иметь ${adj}${issue2.minimum.toString()} ${unit}`}return`Слишком маленькое значение: ожидалось, что ${issue2.origin} будет ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Неверная строка: должна начинаться с "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Неверная строка: должна заканчиваться на "${_issue.suffix}"`;if(_issue.format==="includes")return`Неверная строка: должна содержать "${_issue.includes}"`;if(_issue.format==="regex")return`Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;return`Неверный ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Неверное число: должно быть кратным ${issue2.divisor}`;case"unrecognized_keys":return`Нераспознанн${issue2.keys.length>1?"ые":"ый"} ключ${issue2.keys.length>1?"и":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Неверный ключ в ${issue2.origin}`;case"invalid_union":return"Неверные входные данные";case"invalid_element":return`Неверное значение в ${issue2.origin}`;default:return"Неверные входные данные"}}};var init_ru=__esm(()=>{init_util()});function sl_default(){return{localeError:error39()}}var error39=()=>{let Sizable={string:{unit:"znakov",verb:"imeti"},file:{unit:"bajtov",verb:"imeti"},array:{unit:"elementov",verb:"imeti"},set:{unit:"elementov",verb:"imeti"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"vnos",email:"e-poštni 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 čas",date:"ISO datum",time:"ISO čas",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 številka",jwt:"JWT",template_literal:"vnos"},TypeDictionary={nan:"NaN",number:"število",array:"tabela"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Neveljaven vnos: pričakovano instanceof ${issue2.expected}, prejeto ${received}`;return`Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`}case"invalid_value":if(issue2.values.length===1)return`Neveljaven vnos: pričakovano ${stringifyPrimitive(issue2.values[0])}`;return`Neveljavna možnost: pričakovano eno izmed ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Preveliko: pričakovano, da bo ${issue2.origin??"vrednost"} imelo ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementov"}`;return`Preveliko: pričakovano, da bo ${issue2.origin??"vrednost"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Premajhno: pričakovano, da bo ${issue2.origin} imelo ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Premajhno: pričakovano, da bo ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Neveljaven niz: mora se začeti z "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Neveljaven niz: mora se končati 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 število: mora biti večkratnik ${issue2.divisor}`;case"unrecognized_keys":return`Neprepoznan${issue2.keys.length>1?"i ključi":" ključ"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neveljaven ključ v ${issue2.origin}`;case"invalid_union":return"Neveljaven vnos";case"invalid_element":return`Neveljavna vrednost v ${issue2.origin}`;default:return"Neveljaven vnos"}}};var init_sl=__esm(()=>{init_util()});function sv_default(){return{localeError:error40()}}var error40=()=>{let Sizable={string:{unit:"tecken",verb:"att ha"},file:{unit:"bytes",verb:"att ha"},array:{unit:"objekt",verb:"att innehålla"},set:{unit:"objekt",verb:"att innehålla"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"reguljärt 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äng",base64url:"base64url-kodad sträng",json_string:"JSON-sträng",e164:"E.164-nummer",jwt:"JWT",template_literal:"mall-literal"},TypeDictionary={nan:"NaN",number:"antal",array:"lista"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Ogiltig inmatning: förväntat instanceof ${issue2.expected}, fick ${received}`;return`Ogiltig inmatning: förväntat ${expected}, fick ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ogiltig inmatning: förväntat ${stringifyPrimitive(issue2.values[0])}`;return`Ogiltigt val: förväntade en av ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`För stor(t): förväntade ${issue2.origin??"värdet"} att ha ${adj}${issue2.maximum.toString()} ${sizing.unit??"element"}`;return`För stor(t): förväntat ${issue2.origin??"värdet"} att ha ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`För lite(t): förväntade ${issue2.origin??"värdet"} att ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`För lite(t): förväntade ${issue2.origin??"värdet"} att ha ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Ogiltig sträng: måste börja med "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Ogiltig sträng: måste sluta med "${_issue.suffix}"`;if(_issue.format==="includes")return`Ogiltig sträng: måste innehålla "${_issue.includes}"`;if(_issue.format==="regex")return`Ogiltig sträng: måste matcha mönstret "${_issue.pattern}"`;return`Ogiltig(t) ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ogiltigt tal: måste vara en multipel av ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Okända nycklar":"Okänd nyckel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ogiltig nyckel i ${issue2.origin??"värdet"}`;case"invalid_union":return"Ogiltig input";case"invalid_element":return`Ogiltigt värde i ${issue2.origin??"värdet"}`;default:return"Ogiltig input"}}};var init_sv=__esm(()=>{init_util()});function ta_default(){return{localeError:error41()}}var error41=()=>{let Sizable={string:{unit:"எழுத்துக்கள்",verb:"கொண்டிருக்க வேண்டும்"},file:{unit:"பைட்டுகள்",verb:"கொண்டிருக்க வேண்டும்"},array:{unit:"உறுப்புகள்",verb:"கொண்டிருக்க வேண்டும்"},set:{unit:"உறுப்புகள்",verb:"கொண்டிருக்க வேண்டும்"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"உள்ளீடு",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 தேதி நேரம்",date:"ISO தேதி",time:"ISO நேரம்",duration:"ISO கால அளவு",ipv4:"IPv4 முகவரி",ipv6:"IPv6 முகவரி",cidrv4:"IPv4 வரம்பு",cidrv6:"IPv6 வரம்பு",base64:"base64-encoded சரம்",base64url:"base64url-encoded சரம்",json_string:"JSON சரம்",e164:"E.164 எண்",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN",number:"எண்",array:"அணி",null:"வெறுமை"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue2.expected}, பெறப்பட்டது ${received}`;return`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`}case"invalid_value":if(issue2.values.length===1)return`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${stringifyPrimitive(issue2.values[0])}`;return`தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${joinValues(issue2.values,"|")} இல் ஒன்று`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue2.origin??"மதிப்பு"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"உறுப்புகள்"} ஆக இருக்க வேண்டும்`;return`மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue2.origin??"மதிப்பு"} ${adj}${issue2.maximum.toString()} ஆக இருக்க வேண்டும்`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`;return`மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue2.origin} ${adj}${issue2.minimum.toString()} ஆக இருக்க வேண்டும்`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`தவறான சரம்: "${_issue.prefix}" இல் தொடங்க வேண்டும்`;if(_issue.format==="ends_with")return`தவறான சரம்: "${_issue.suffix}" இல் முடிவடைய வேண்டும்`;if(_issue.format==="includes")return`தவறான சரம்: "${_issue.includes}" ஐ உள்ளடக்க வேண்டும்`;if(_issue.format==="regex")return`தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;return`தவறான ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`தவறான எண்: ${issue2.divisor} இன் பலமாக இருக்க வேண்டும்`;case"unrecognized_keys":return`அடையாளம் தெரியாத விசை${issue2.keys.length>1?"கள்":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} இல் தவறான விசை`;case"invalid_union":return"தவறான உள்ளீடு";case"invalid_element":return`${issue2.origin} இல் தவறான மதிப்பு`;default:return"தவறான உள்ளீடு"}}};var init_ta=__esm(()=>{init_util()});function th_default(){return{localeError:error42()}}var error42=()=>{let Sizable={string:{unit:"ตัวอักษร",verb:"ควรมี"},file:{unit:"ไบต์",verb:"ควรมี"},array:{unit:"รายการ",verb:"ควรมี"},set:{unit:"รายการ",verb:"ควรมี"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"ข้อมูลที่ป้อน",email:"ที่อยู่อีเมล",url:"URL",emoji:"อิโมจิ",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"วันที่เวลาแบบ ISO",date:"วันที่แบบ ISO",time:"เวลาแบบ ISO",duration:"ช่วงเวลาแบบ ISO",ipv4:"ที่อยู่ IPv4",ipv6:"ที่อยู่ IPv6",cidrv4:"ช่วง IP แบบ IPv4",cidrv6:"ช่วง IP แบบ IPv6",base64:"ข้อความแบบ Base64",base64url:"ข้อความแบบ Base64 สำหรับ URL",json_string:"ข้อความแบบ JSON",e164:"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)",jwt:"โทเคน JWT",template_literal:"ข้อมูลที่ป้อน"},TypeDictionary={nan:"NaN",number:"ตัวเลข",array:"อาร์เรย์ (Array)",null:"ไม่มีค่า (null)"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue2.expected} แต่ได้รับ ${received}`;return`ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`}case"invalid_value":if(issue2.values.length===1)return`ค่าไม่ถูกต้อง: ควรเป็น ${stringifyPrimitive(issue2.values[0])}`;return`ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"ไม่เกิน":"น้อยกว่า",sizing=getSizing(issue2.origin);if(sizing)return`เกินกำหนด: ${issue2.origin??"ค่า"} ควรมี${adj} ${issue2.maximum.toString()} ${sizing.unit??"รายการ"}`;return`เกินกำหนด: ${issue2.origin??"ค่า"} ควรมี${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?"อย่างน้อย":"มากกว่า",sizing=getSizing(issue2.origin);if(sizing)return`น้อยกว่ากำหนด: ${issue2.origin} ควรมี${adj} ${issue2.minimum.toString()} ${sizing.unit}`;return`น้อยกว่ากำหนด: ${issue2.origin} ควรมี${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย "${_issue.prefix}"`;if(_issue.format==="ends_with")return`รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย "${_issue.suffix}"`;if(_issue.format==="includes")return`รูปแบบไม่ถูกต้อง: ข้อความต้องมี "${_issue.includes}" อยู่ในข้อความ`;if(_issue.format==="regex")return`รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;return`รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue2.divisor} ได้ลงตัว`;case"unrecognized_keys":return`พบคีย์ที่ไม่รู้จัก: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`คีย์ไม่ถูกต้องใน ${issue2.origin}`;case"invalid_union":return"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้";case"invalid_element":return`ข้อมูลไม่ถูกต้องใน ${issue2.origin}`;default:return"ข้อมูลไม่ถูกต้อง"}}};var init_th=__esm(()=>{init_util()});function tr_default(){return{localeError:error43()}}var error43=()=>{let Sizable={string:{unit:"karakter",verb:"olmalı"},file:{unit:"bayt",verb:"olmalı"},array:{unit:"öğe",verb:"olmalı"},set:{unit:"öğe",verb:"olmalı"}};function getSizing(origin2){return Sizable[origin2]??null}let 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üre",ipv4:"IPv4 adresi",ipv6:"IPv6 adresi",cidrv4:"IPv4 aralığı",cidrv6:"IPv6 aralığı",base64:"base64 ile şifrelenmiş metin",base64url:"base64url ile şifrelenmiş metin",json_string:"JSON dizesi",e164:"E.164 sayısı",jwt:"JWT",template_literal:"Şablon dizesi"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Geçersiz değer: beklenen instanceof ${issue2.expected}, alınan ${received}`;return`Geçersiz değer: beklenen ${expected}, alınan ${received}`}case"invalid_value":if(issue2.values.length===1)return`Geçersiz değer: beklenen ${stringifyPrimitive(issue2.values[0])}`;return`Geçersiz seçenek: aşağıdakilerden biri olmalı: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Çok büyük: beklenen ${issue2.origin??"değer"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"öğe"}`;return`Çok büyük: beklenen ${issue2.origin??"değer"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Çok küçük: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Çok küçük: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Geçersiz metin: "${_issue.prefix}" ile başlamalı`;if(_issue.format==="ends_with")return`Geçersiz metin: "${_issue.suffix}" ile bitmeli`;if(_issue.format==="includes")return`Geçersiz metin: "${_issue.includes}" içermeli`;if(_issue.format==="regex")return`Geçersiz metin: ${_issue.pattern} desenine uymalı`;return`Geçersiz ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Geçersiz sayı: ${issue2.divisor} ile tam bölünebilmeli`;case"unrecognized_keys":return`Tanınmayan anahtar${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} içinde geçersiz anahtar`;case"invalid_union":return"Geçersiz değer";case"invalid_element":return`${issue2.origin} içinde geçersiz değer`;default:return"Geçersiz değer"}}};var init_tr=__esm(()=>{init_util()});function uk_default(){return{localeError:error44()}}var error44=()=>{let Sizable={string:{unit:"символів",verb:"матиме"},file:{unit:"байтів",verb:"матиме"},array:{unit:"елементів",verb:"матиме"},set:{unit:"елементів",verb:"матиме"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"вхідні дані",email:"адреса електронної пошти",url:"URL",emoji:"емодзі",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"дата та час ISO",date:"дата ISO",time:"час ISO",duration:"тривалість ISO",ipv4:"адреса IPv4",ipv6:"адреса IPv6",cidrv4:"діапазон IPv4",cidrv6:"діапазон IPv6",base64:"рядок у кодуванні base64",base64url:"рядок у кодуванні base64url",json_string:"рядок JSON",e164:"номер E.164",jwt:"JWT",template_literal:"вхідні дані"},TypeDictionary={nan:"NaN",number:"число",array:"масив"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Неправильні вхідні дані: очікується instanceof ${issue2.expected}, отримано ${received}`;return`Неправильні вхідні дані: очікується ${expected}, отримано ${received}`}case"invalid_value":if(issue2.values.length===1)return`Неправильні вхідні дані: очікується ${stringifyPrimitive(issue2.values[0])}`;return`Неправильна опція: очікується одне з ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Занадто велике: очікується, що ${issue2.origin??"значення"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"елементів"}`;return`Занадто велике: очікується, що ${issue2.origin??"значення"} буде ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Занадто мале: очікується, що ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Занадто мале: очікується, що ${issue2.origin} буде ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Неправильний рядок: повинен починатися з "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Неправильний рядок: повинен закінчуватися на "${_issue.suffix}"`;if(_issue.format==="includes")return`Неправильний рядок: повинен містити "${_issue.includes}"`;if(_issue.format==="regex")return`Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;return`Неправильний ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Неправильне число: повинно бути кратним ${issue2.divisor}`;case"unrecognized_keys":return`Нерозпізнаний ключ${issue2.keys.length>1?"і":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Неправильний ключ у ${issue2.origin}`;case"invalid_union":return"Неправильні вхідні дані";case"invalid_element":return`Неправильне значення у ${issue2.origin}`;default:return"Неправильні вхідні дані"}}};var init_uk=__esm(()=>{init_util()});function ua_default(){return uk_default()}var init_ua=__esm(()=>{init_uk()});function ur_default(){return{localeError:error45()}}var error45=()=>{let Sizable={string:{unit:"حروف",verb:"ہونا"},file:{unit:"بائٹس",verb:"ہونا"},array:{unit:"آئٹمز",verb:"ہونا"},set:{unit:"آئٹمز",verb:"ہونا"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"ان پٹ",email:"ای میل ایڈریس",url:"یو آر ایل",emoji:"ایموجی",uuid:"یو یو آئی ڈی",uuidv4:"یو یو آئی ڈی وی 4",uuidv6:"یو یو آئی ڈی وی 6",nanoid:"نینو آئی ڈی",guid:"جی یو آئی ڈی",cuid:"سی یو آئی ڈی",cuid2:"سی یو آئی ڈی 2",ulid:"یو ایل آئی ڈی",xid:"ایکس آئی ڈی",ksuid:"کے ایس یو آئی ڈی",datetime:"آئی ایس او ڈیٹ ٹائم",date:"آئی ایس او تاریخ",time:"آئی ایس او وقت",duration:"آئی ایس او مدت",ipv4:"آئی پی وی 4 ایڈریس",ipv6:"آئی پی وی 6 ایڈریس",cidrv4:"آئی پی وی 4 رینج",cidrv6:"آئی پی وی 6 رینج",base64:"بیس 64 ان کوڈڈ سٹرنگ",base64url:"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ",json_string:"جے ایس او این سٹرنگ",e164:"ای 164 نمبر",jwt:"جے ڈبلیو ٹی",template_literal:"ان پٹ"},TypeDictionary={nan:"NaN",number:"نمبر",array:"آرے",null:"نل"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`غلط ان پٹ: instanceof ${issue2.expected} متوقع تھا، ${received} موصول ہوا`;return`غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`}case"invalid_value":if(issue2.values.length===1)return`غلط ان پٹ: ${stringifyPrimitive(issue2.values[0])} متوقع تھا`;return`غلط آپشن: ${joinValues(issue2.values,"|")} میں سے ایک متوقع تھا`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`بہت بڑا: ${issue2.origin??"ویلیو"} کے ${adj}${issue2.maximum.toString()} ${sizing.unit??"عناصر"} ہونے متوقع تھے`;return`بہت بڑا: ${issue2.origin??"ویلیو"} کا ${adj}${issue2.maximum.toString()} ہونا متوقع تھا`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`بہت چھوٹا: ${issue2.origin} کے ${adj}${issue2.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;return`بہت چھوٹا: ${issue2.origin} کا ${adj}${issue2.minimum.toString()} ہونا متوقع تھا`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`غلط سٹرنگ: "${_issue.prefix}" سے شروع ہونا چاہیے`;if(_issue.format==="ends_with")return`غلط سٹرنگ: "${_issue.suffix}" پر ختم ہونا چاہیے`;if(_issue.format==="includes")return`غلط سٹرنگ: "${_issue.includes}" شامل ہونا چاہیے`;if(_issue.format==="regex")return`غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;return`غلط ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`غلط نمبر: ${issue2.divisor} کا مضاعف ہونا چاہیے`;case"unrecognized_keys":return`غیر تسلیم شدہ کی${issue2.keys.length>1?"ز":""}: ${joinValues(issue2.keys,"، ")}`;case"invalid_key":return`${issue2.origin} میں غلط کی`;case"invalid_union":return"غلط ان پٹ";case"invalid_element":return`${issue2.origin} میں غلط ویلیو`;default:return"غلط ان پٹ"}}};var init_ur=__esm(()=>{init_util()});function uz_default(){return{localeError:error46()}}var error46=()=>{let Sizable={string:{unit:"belgi",verb:"bo‘lishi kerak"},file:{unit:"bayt",verb:"bo‘lishi kerak"},array:{unit:"element",verb:"bo‘lishi kerak"},set:{unit:"element",verb:"bo‘lishi kerak"},map:{unit:"yozuv",verb:"bo‘lishi kerak"}};function getSizing(origin2){return Sizable[origin2]??null}let 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"},TypeDictionary={nan:"NaN",number:"raqam",array:"massiv"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Noto‘g‘ri kirish: kutilgan instanceof ${issue2.expected}, qabul qilingan ${received}`;return`Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`}case"invalid_value":if(issue2.values.length===1)return`Noto‘g‘ri kirish: kutilgan ${stringifyPrimitive(issue2.values[0])}`;return`Noto‘g‘ri variant: quyidagilardan biri kutilgan ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",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":{let adj=issue2.inclusive?">=":">",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":{let _issue=issue2;if(_issue.format==="starts_with")return`Noto‘g‘ri satr: "${_issue.prefix}" bilan boshlanishi kerak`;if(_issue.format==="ends_with")return`Noto‘g‘ri satr: "${_issue.suffix}" bilan tugashi kerak`;if(_issue.format==="includes")return`Noto‘g‘ri satr: "${_issue.includes}" ni o‘z ichiga olishi kerak`;if(_issue.format==="regex")return`Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;return`Noto‘g‘ri ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Noto‘g‘ri raqam: ${issue2.divisor} ning karralisi bo‘lishi kerak`;case"unrecognized_keys":return`Noma’lum kalit${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} dagi kalit noto‘g‘ri`;case"invalid_union":return"Noto‘g‘ri kirish";case"invalid_element":return`${issue2.origin} da noto‘g‘ri qiymat`;default:return"Noto‘g‘ri kirish"}}};var init_uz=__esm(()=>{init_util()});function vi_default(){return{localeError:error47()}}var error47=()=>{let Sizable={string:{unit:"ký tự",verb:"có"},file:{unit:"byte",verb:"có"},array:{unit:"phần tử",verb:"có"},set:{unit:"phần tử",verb:"có"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"đầu vào",email:"địa chỉ 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ày giờ ISO",date:"ngày ISO",time:"giờ ISO",duration:"khoảng thời gian ISO",ipv4:"địa chỉ IPv4",ipv6:"địa chỉ IPv6",cidrv4:"dải IPv4",cidrv6:"dải IPv6",base64:"chuỗi mã hóa base64",base64url:"chuỗi mã hóa base64url",json_string:"chuỗi JSON",e164:"số E.164",jwt:"JWT",template_literal:"đầu vào"},TypeDictionary={nan:"NaN",number:"số",array:"mảng"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Đầu vào không hợp lệ: mong đợi instanceof ${issue2.expected}, nhận được ${received}`;return`Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`}case"invalid_value":if(issue2.values.length===1)return`Đầu vào không hợp lệ: mong đợi ${stringifyPrimitive(issue2.values[0])}`;return`Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Quá lớn: mong đợi ${issue2.origin??"giá trị"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"phần tử"}`;return`Quá lớn: mong đợi ${issue2.origin??"giá trị"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Quá nhỏ: mong đợi ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`Quá nhỏ: mong đợi ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Chuỗi không hợp lệ: phải bắt đầu bằng "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Chuỗi không hợp lệ: phải kết thúc bằng "${_issue.suffix}"`;if(_issue.format==="includes")return`Chuỗi không hợp lệ: phải bao gồm "${_issue.includes}"`;if(_issue.format==="regex")return`Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;return`${FormatDictionary[_issue.format]??issue2.format} không hợp lệ`}case"not_multiple_of":return`Số không hợp lệ: phải là bội số của ${issue2.divisor}`;case"unrecognized_keys":return`Khóa không được nhận dạng: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Khóa không hợp lệ trong ${issue2.origin}`;case"invalid_union":return"Đầu vào không hợp lệ";case"invalid_element":return`Giá trị không hợp lệ trong ${issue2.origin}`;default:return"Đầu vào không hợp lệ"}}};var init_vi=__esm(()=>{init_util()});function zh_CN_default(){return{localeError:error48()}}var error48=()=>{let Sizable={string:{unit:"字符",verb:"包含"},file:{unit:"字节",verb:"包含"},array:{unit:"项",verb:"包含"},set:{unit:"项",verb:"包含"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"输入",email:"电子邮件",url:"URL",emoji:"表情符号",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO日期时间",date:"ISO日期",time:"ISO时间",duration:"ISO时长",ipv4:"IPv4地址",ipv6:"IPv6地址",cidrv4:"IPv4网段",cidrv6:"IPv6网段",base64:"base64编码字符串",base64url:"base64url编码字符串",json_string:"JSON字符串",e164:"E.164号码",jwt:"JWT",template_literal:"输入"},TypeDictionary={nan:"NaN",number:"数字",array:"数组",null:"空值(null)"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`无效输入:期望 instanceof ${issue2.expected},实际接收 ${received}`;return`无效输入:期望 ${expected},实际接收 ${received}`}case"invalid_value":if(issue2.values.length===1)return`无效输入:期望 ${stringifyPrimitive(issue2.values[0])}`;return`无效选项:期望以下之一 ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`数值过大:期望 ${issue2.origin??"值"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"个元素"}`;return`数值过大:期望 ${issue2.origin??"值"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`数值过小:期望 ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`数值过小:期望 ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`无效字符串:必须以 "${_issue.prefix}" 开头`;if(_issue.format==="ends_with")return`无效字符串:必须以 "${_issue.suffix}" 结尾`;if(_issue.format==="includes")return`无效字符串:必须包含 "${_issue.includes}"`;if(_issue.format==="regex")return`无效字符串:必须满足正则表达式 ${_issue.pattern}`;return`无效${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`无效数字:必须是 ${issue2.divisor} 的倍数`;case"unrecognized_keys":return`出现未知的键(key): ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} 中的键(key)无效`;case"invalid_union":return"无效输入";case"invalid_element":return`${issue2.origin} 中包含无效值(value)`;default:return"无效输入"}}};var init_zh_CN=__esm(()=>{init_util()});function zh_TW_default(){return{localeError:error49()}}var error49=()=>{let Sizable={string:{unit:"字元",verb:"擁有"},file:{unit:"位元組",verb:"擁有"},array:{unit:"項目",verb:"擁有"},set:{unit:"項目",verb:"擁有"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"輸入",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 日期時間",date:"ISO 日期",time:"ISO 時間",duration:"ISO 期間",ipv4:"IPv4 位址",ipv6:"IPv6 位址",cidrv4:"IPv4 範圍",cidrv6:"IPv6 範圍",base64:"base64 編碼字串",base64url:"base64url 編碼字串",json_string:"JSON 字串",e164:"E.164 數值",jwt:"JWT",template_literal:"輸入"},TypeDictionary={nan:"NaN"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`無效的輸入值:預期為 instanceof ${issue2.expected},但收到 ${received}`;return`無效的輸入值:預期為 ${expected},但收到 ${received}`}case"invalid_value":if(issue2.values.length===1)return`無效的輸入值:預期為 ${stringifyPrimitive(issue2.values[0])}`;return`無效的選項:預期為以下其中之一 ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`數值過大:預期 ${issue2.origin??"值"} 應為 ${adj}${issue2.maximum.toString()} ${sizing.unit??"個元素"}`;return`數值過大:預期 ${issue2.origin??"值"} 應為 ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`數值過小:預期 ${issue2.origin} 應為 ${adj}${issue2.minimum.toString()} ${sizing.unit}`;return`數值過小:預期 ${issue2.origin} 應為 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`無效的字串:必須以 "${_issue.prefix}" 開頭`;if(_issue.format==="ends_with")return`無效的字串:必須以 "${_issue.suffix}" 結尾`;if(_issue.format==="includes")return`無效的字串:必須包含 "${_issue.includes}"`;if(_issue.format==="regex")return`無效的字串:必須符合格式 ${_issue.pattern}`;return`無效的 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`無效的數字:必須為 ${issue2.divisor} 的倍數`;case"unrecognized_keys":return`無法識別的鍵值${issue2.keys.length>1?"們":""}:${joinValues(issue2.keys,"、")}`;case"invalid_key":return`${issue2.origin} 中有無效的鍵值`;case"invalid_union":return"無效的輸入值";case"invalid_element":return`${issue2.origin} 中有無效的值`;default:return"無效的輸入值"}}};var init_zh_TW=__esm(()=>{init_util()});function yo_default(){return{localeError:error50()}}var error50=()=>{let Sizable={string:{unit:"àmi",verb:"ní"},file:{unit:"bytes",verb:"ní"},array:{unit:"nkan",verb:"ní"},set:{unit:"nkan",verb:"ní"}};function getSizing(origin2){return Sizable[origin2]??null}let FormatDictionary={regex:"ẹ̀rọ ìbáwọlé",email:"àdírẹ́sì ìmẹ́lì",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:"àkókò ISO",date:"ọjọ́ ISO",time:"àkókò ISO",duration:"àkókò tó pé ISO",ipv4:"àdírẹ́sì IPv4",ipv6:"àdírẹ́sì IPv6",cidrv4:"àgbègbè IPv4",cidrv6:"àgbègbè IPv6",base64:"ọ̀rọ̀ tí a kọ́ ní base64",base64url:"ọ̀rọ̀ base64url",json_string:"ọ̀rọ̀ JSON",e164:"nọ́mbà E.164",jwt:"JWT",template_literal:"ẹ̀rọ ìbáwọlé"},TypeDictionary={nan:"NaN",number:"nọ́mbà",array:"akopọ"};return(issue2)=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;if(/^[A-Z]/.test(issue2.expected))return`Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue2.expected}, àmọ̀ a rí ${received}`;return`Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`}case"invalid_value":if(issue2.values.length===1)return`Ìbáwọlé aṣìṣe: a ní láti fi ${stringifyPrimitive(issue2.values[0])}`;return`Àṣàyàn aṣìṣe: yan ọ̀kan lára ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing)return`Tó pọ̀ jù: a ní láti jẹ́ pé ${issue2.origin??"iye"} ${sizing.verb} ${adj}${issue2.maximum} ${sizing.unit}`;return`Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue2.maximum}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing)return`Kéré ju: a ní láti jẹ́ pé ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum} ${sizing.unit}`;return`Kéré ju: a ní láti jẹ́ ${adj}${issue2.minimum}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú "${_issue.suffix}"`;if(_issue.format==="includes")return`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní "${_issue.includes}"`;if(_issue.format==="regex")return`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;return`Aṣìṣe: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue2.divisor}`;case"unrecognized_keys":return`Bọtìnì àìmọ̀: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Bọtìnì aṣìṣe nínú ${issue2.origin}`;case"invalid_union":return"Ìbáwọlé aṣìṣe";case"invalid_element":return`Iye aṣìṣe nínú ${issue2.origin}`;default:return"Ìbáwọlé aṣìṣe"}}};var init_yo=__esm(()=>{init_util()});var exports_locales={};__export(exports_locales,{zhTW:()=>zh_TW_default,zhCN:()=>zh_CN_default,yo:()=>yo_default,vi:()=>vi_default,uz:()=>uz_default,ur:()=>ur_default,uk:()=>uk_default,ua:()=>ua_default,tr:()=>tr_default,th:()=>th_default,ta:()=>ta_default,sv:()=>sv_default,sl:()=>sl_default,ru:()=>ru_default,ro:()=>ro_default,pt:()=>pt_default,ps:()=>ps_default,pl:()=>pl_default,ota:()=>ota_default,no:()=>no_default,nl:()=>nl_default,ms:()=>ms_default,mk:()=>mk_default,lt:()=>lt_default,ko:()=>ko_default,km:()=>km_default,kh:()=>kh_default,ka:()=>ka_default,ja:()=>ja_default,it:()=>it_default,is:()=>is_default,id:()=>id_default,hy:()=>hy_default,hu:()=>hu_default,hr:()=>hr_default,he:()=>he_default,frCA:()=>fr_CA_default,fr:()=>fr_default,fi:()=>fi_default,fa:()=>fa_default,es:()=>es_default,eo:()=>eo_default,en:()=>en_default,el:()=>el_default,de:()=>de_default,da:()=>da_default,cs:()=>cs_default,ca:()=>ca_default,bg:()=>bg_default,be:()=>be_default,az:()=>az_default,ar:()=>ar_default});var init_locales=__esm(()=>{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()});class $ZodRegistry{constructor(){this._map=new WeakMap,this._idmap=new Map}add(schema,..._meta){let meta=_meta[0];if(this._map.set(schema,meta),meta&&typeof meta==="object"&&"id"in meta)this._idmap.set(meta.id,schema);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(schema){let meta=this._map.get(schema);if(meta&&typeof meta==="object"&&"id"in meta)this._idmap.delete(meta.id);return this._map.delete(schema),this}get(schema){let p=schema._zod.parent;if(p){let pm={...this.get(p)??{}};delete pm.id;let 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)}}function registry(){return new $ZodRegistry}var _a2,$output,$input,globalRegistry;var init_registries=__esm(()=>{$output=Symbol("ZodOutput"),$input=Symbol("ZodInput");(_a2=globalThis).__zod_globalRegistry??(_a2.__zod_globalRegistry=registry());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:!0,...normalizeParams(params)})}function _email(Class2,params){return new Class2({type:"string",format:"email",check:"string_format",abort:!1,...normalizeParams(params)})}function _guid(Class2,params){return new Class2({type:"string",format:"guid",check:"string_format",abort:!1,...normalizeParams(params)})}function _uuid(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _uuidv4(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...normalizeParams(params)})}function _uuidv6(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...normalizeParams(params)})}function _uuidv7(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...normalizeParams(params)})}function _url(Class2,params){return new Class2({type:"string",format:"url",check:"string_format",abort:!1,...normalizeParams(params)})}function _emoji2(Class2,params){return new Class2({type:"string",format:"emoji",check:"string_format",abort:!1,...normalizeParams(params)})}function _nanoid(Class2,params){return new Class2({type:"string",format:"nanoid",check:"string_format",abort:!1,...normalizeParams(params)})}function _cuid(Class2,params){return new Class2({type:"string",format:"cuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _cuid2(Class2,params){return new Class2({type:"string",format:"cuid2",check:"string_format",abort:!1,...normalizeParams(params)})}function _ulid(Class2,params){return new Class2({type:"string",format:"ulid",check:"string_format",abort:!1,...normalizeParams(params)})}function _xid(Class2,params){return new Class2({type:"string",format:"xid",check:"string_format",abort:!1,...normalizeParams(params)})}function _ksuid(Class2,params){return new Class2({type:"string",format:"ksuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _ipv4(Class2,params){return new Class2({type:"string",format:"ipv4",check:"string_format",abort:!1,...normalizeParams(params)})}function _ipv6(Class2,params){return new Class2({type:"string",format:"ipv6",check:"string_format",abort:!1,...normalizeParams(params)})}function _mac(Class2,params){return new Class2({type:"string",format:"mac",check:"string_format",abort:!1,...normalizeParams(params)})}function _cidrv4(Class2,params){return new Class2({type:"string",format:"cidrv4",check:"string_format",abort:!1,...normalizeParams(params)})}function _cidrv6(Class2,params){return new Class2({type:"string",format:"cidrv6",check:"string_format",abort:!1,...normalizeParams(params)})}function _base64(Class2,params){return new Class2({type:"string",format:"base64",check:"string_format",abort:!1,...normalizeParams(params)})}function _base64url(Class2,params){return new Class2({type:"string",format:"base64url",check:"string_format",abort:!1,...normalizeParams(params)})}function _e164(Class2,params){return new Class2({type:"string",format:"e164",check:"string_format",abort:!1,...normalizeParams(params)})}function _jwt(Class2,params){return new Class2({type:"string",format:"jwt",check:"string_format",abort:!1,...normalizeParams(params)})}function _isoDateTime(Class2,params){return new Class2({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,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:!0,checks:[],...normalizeParams(params)})}function _int(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"safeint",...normalizeParams(params)})}function _float32(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"float32",...normalizeParams(params)})}function _float64(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"float64",...normalizeParams(params)})}function _int32(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"int32",...normalizeParams(params)})}function _uint32(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,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:!0,...normalizeParams(params)})}function _bigint(Class2,params){return new Class2({type:"bigint",...normalizeParams(params)})}function _coercedBigint(Class2,params){return new Class2({type:"bigint",coerce:!0,...normalizeParams(params)})}function _int64(Class2,params){return new Class2({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...normalizeParams(params)})}function _uint64(Class2,params){return new Class2({type:"bigint",check:"bigint_format",abort:!1,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:!0,...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:!1})}function _lte(value,params){return new $ZodCheckLessThan({check:"less_than",...normalizeParams(params),value,inclusive:!0})}function _gt(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:!1})}function _gte(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:!0})}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){return new $ZodCheckMaxLength({check:"max_length",...normalizeParams(params),maximum})}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:!1,...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){let hasRest=_paramsOrRest instanceof $ZodType;return new Class2({type:"tuple",items,rest:hasRest?_paramsOrRest:null,...normalizeParams(hasRest?_params:_paramsOrRest)})}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){let 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){let norm=normalizeParams(_params);return norm.abort??(norm.abort=!0),new Class2({type:"custom",check:"custom",fn,...norm})}function _refine(Class2,fn,_params){return new Class2({type:"custom",check:"custom",fn,...normalizeParams(_params)})}function _superRefine(fn,params){let ch=_check((payload)=>{return payload.addIssue=(issue2)=>{if(typeof issue2==="string")payload.issues.push(issue(issue2,payload.value,ch._zod.def));else{let _issue=issue2;if(_issue.fatal)_issue.continue=!1;_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))}},fn(payload.value,payload)},params);return ch}function _check(fn,params){let ch=new $ZodCheck({check:"custom",...normalizeParams(params)});return ch._zod.check=fn,ch}function describe(description){let ch=new $ZodCheck({check:"describe"});return ch._zod.onattach=[(inst)=>{let existing=globalRegistry.get(inst)??{};globalRegistry.add(inst,{...existing,description})}],ch._zod.check=()=>{},ch}function meta(metadata){let ch=new $ZodCheck({check:"meta"});return ch._zod.onattach=[(inst)=>{let existing=globalRegistry.get(inst)??{};globalRegistry.add(inst,{...existing,...metadata})}],ch._zod.check=()=>{},ch}function _stringbool(Classes,_params){let params=normalizeParams(_params),truthyArray=params.truthy??["true","1","yes","on","y","enabled"],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);let truthySet=new Set(truthyArray),falsySet=new Set(falsyArray),_Codec=Classes.Codec??$ZodCodec,_Boolean=Classes.Boolean??$ZodBoolean,stringSchema=new(Classes.String??$ZodString)({type:"string",error:params.error}),booleanSchema=new _Boolean({type:"boolean",error:params.error}),codec=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!0;else if(falsySet.has(data))return!1;else return payload.issues.push({code:"invalid_value",expected:"stringbool",values:[...truthySet,...falsySet],input:payload.value,inst:codec,continue:!1}),{}},reverseTransform:(input,_payload)=>{if(input===!0)return truthyArray[0]||"true";else return falsyArray[0]||"false"},error:params.error});return codec}function _stringFormat(Class2,format,fnOrRegex,_params={}){let params=normalizeParams(_params),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;return new Class2(def)}var TimePrecision;var init_api=__esm(()=>{init_checks();init_registries();init_schemas();init_util();TimePrecision={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function initializeContext(params){let target=params?.target??"draft-2020-12";if(target==="draft-4")target="draft-04";if(target==="draft-7")target="draft-07";return{processors:params.processors??{},metadataRegistry:params?.metadata??globalRegistry,target,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;let def=schema._zod.def,seen=ctx.seen.get(schema);if(seen){if(seen.count++,_params.schemaPath.includes(schema))seen.cycle=_params.path;return seen.schema}let result={schema:{},count:1,cycle:void 0,path:_params.path};ctx.seen.set(schema,result);let overrideSchema=schema._zod.toJSONSchema?.();if(overrideSchema)result.schema=overrideSchema;else{let params={..._params,schemaPath:[..._params.schemaPath,schema],path:_params.path};if(schema._zod.processJSONSchema)schema._zod.processJSONSchema(ctx,result.schema,params);else{let _json=result.schema,processor=ctx.processors[def.type];if(!processor)throw Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);processor(schema,ctx,_json,params)}let parent=schema._zod.parent;if(parent){if(!result.ref)result.ref=parent;process2(parent,ctx,params),ctx.seen.get(parent).isParent=!0}}let meta2=ctx.metadataRegistry.get(schema);if(meta2)Object.assign(result.schema,meta2);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);return delete result.schema._prefault,ctx.seen.get(schema).schema}function extractDefs(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw Error("Unprocessed schema. This is a bug in Zod.");let idToSchema=new Map;for(let entry of ctx.seen.entries()){let id=ctx.metadataRegistry.get(entry[0])?.id;if(id){let existing=idToSchema.get(id);if(existing&&existing!==entry[0])throw Error(`Duplicate schema id "${id}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);idToSchema.set(id,entry[0])}}let makeURI=(entry)=>{let defsSegment=ctx.target==="draft-2020-12"?"$defs":"definitions";if(ctx.external){let externalId=ctx.external.registry.get(entry[0])?.id,uriGenerator=ctx.external.uri??((id2)=>id2);if(externalId)return{ref:uriGenerator(externalId)};let id=entry[1].defId??entry[1].schema.id??`schema${ctx.counter++}`;return entry[1].defId=id,{defId:id,ref:`${uriGenerator("__shared")}#/${defsSegment}/${id}`}}if(entry[1]===root)return{ref:"#"};let defUriPrefix=`${"#"}/${defsSegment}/`,defId=entry[1].schema.id??`__schema${ctx.counter++}`;return{defId,ref:defUriPrefix+defId}},extractToDef=(entry)=>{if(entry[1].schema.$ref)return;let seen=entry[1],{ref,defId}=makeURI(entry);if(seen.def={...seen.schema},defId)seen.defId=defId;let schema2=seen.schema;for(let key in schema2)delete schema2[key];schema2.$ref=ref};if(ctx.cycles==="throw")for(let entry of ctx.seen.entries()){let seen=entry[1];if(seen.cycle)throw Error(`Cycle detected: #/${seen.cycle?.join("/")}/<root>
64
64
 
65
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let entry of ctx.seen.entries()){let seen=entry[1];if(schema===entry[0]){extractToDef(entry);continue}if(ctx.external){let ext=ctx.external.registry.get(entry[0])?.id;if(schema!==entry[0]&&ext){extractToDef(entry);continue}}if(ctx.metadataRegistry.get(entry[0])?.id){extractToDef(entry);continue}if(seen.cycle){extractToDef(entry);continue}if(seen.count>1){if(ctx.reused==="ref"){extractToDef(entry);continue}}}}function finalize(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw Error("Unprocessed schema. This is a bug in Zod.");let flattenRef=(zodSchema)=>{let seen=ctx.seen.get(zodSchema);if(seen.ref===null)return;let schema2=seen.def??seen.schema,_cached={...schema2},ref=seen.ref;if(seen.ref=null,ref){flattenRef(ref);let refSeen=ctx.seen.get(ref),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);if(Object.assign(schema2,_cached),zodSchema._zod.parent===ref)for(let key in schema2){if(key==="$ref"||key==="allOf")continue;if(!(key in _cached))delete schema2[key]}if(refSchema.$ref&&refSeen.def)for(let 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]}}let parent=zodSchema._zod.parent;if(parent&&parent!==ref){flattenRef(parent);let parentSeen=ctx.seen.get(parent);if(parentSeen?.schema.$ref){if(schema2.$ref=parentSeen.schema.$ref,parentSeen.def)for(let 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(let entry of[...ctx.seen.entries()].reverse())flattenRef(entry[0]);let 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");if(ctx.external?.uri){let id=ctx.external.registry.get(schema)?.id;if(!id)throw Error("Schema is missing an `id` property");result.$id=ctx.external.uri(id)}Object.assign(result,root.def??root.schema);let rootMetaId=ctx.metadataRegistry.get(schema)?.id;if(rootMetaId!==void 0&&result.id===rootMetaId)delete result.id;let defs=ctx.external?.defs??{};for(let entry of ctx.seen.entries()){let 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{let finalized=JSON.parse(JSON.stringify(result));return Object.defineProperty(finalized,"~standard",{value:{...schema["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(schema,"input",ctx.processors),output:createStandardJSONSchemaMethod(schema,"output",ctx.processors)}},enumerable:!1,writable:!1}),finalized}catch(_err){throw Error("Error converting schema to JSON.")}}function isTransforming(_schema,_ctx){let ctx=_ctx??{seen:new Set};if(ctx.seen.has(_schema))return!1;ctx.seen.add(_schema);let def=_schema._zod.def;if(def.type==="transform")return!0;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!0;return isTransforming(def.in,ctx)||isTransforming(def.out,ctx)}if(def.type==="object"){for(let key in def.shape)if(isTransforming(def.shape[key],ctx))return!0;return!1}if(def.type==="union"){for(let option of def.options)if(isTransforming(option,ctx))return!0;return!1}if(def.type==="tuple"){for(let item of def.items)if(isTransforming(item,ctx))return!0;if(def.rest&&isTransforming(def.rest,ctx))return!0;return!1}return!1}var createToJSONSchemaMethod=(schema,processors={})=>(params)=>{let ctx=initializeContext({...params,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)},createStandardJSONSchemaMethod=(schema,io,processors={})=>(params)=>{let{libraryOptions,target}=params??{},ctx=initializeContext({...libraryOptions??{},target,io,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)};var init_to_json_schema=__esm(()=>{init_registries()});function toJSONSchema(input,params){if("_idmap"in input){let registry2=input,ctx2=initializeContext({...params,processors:allProcessors}),defs={};for(let entry of registry2._idmap.entries()){let[_,schema]=entry;process2(schema,ctx2)}let schemas={},external={registry:registry2,uri:params?.uri,defs};ctx2.external=external;for(let entry of registry2._idmap.entries()){let[key,schema]=entry;extractDefs(ctx2,schema),schemas[key]=finalize(ctx2,schema)}if(Object.keys(defs).length>0){let defsSegment=ctx2.target==="draft-2020-12"?"$defs":"definitions";schemas.__shared={[defsSegment]:defs}}return{schemas}}let ctx=initializeContext({...params,processors:allProcessors});return process2(input,ctx),extractDefs(ctx,input),finalize(ctx,input)}var formatMap,stringProcessor=(schema,ctx,_json,_params)=>{let json=_json;json.type="string";let{minimum,maximum,format,patterns,contentEncoding}=schema._zod.bag;if(typeof minimum==="number")json.minLength=minimum;if(typeof maximum==="number")json.maxLength=maximum;if(format){if(json.format=formatMap[format]??format,json.format==="")delete json.format;if(format==="time")delete json.format}if(contentEncoding)json.contentEncoding=contentEncoding;if(patterns&&patterns.size>0){let regexes=[...patterns];if(regexes.length===1)json.pattern=regexes[0].source;else if(regexes.length>1)json.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)=>{let json=_json,{minimum,maximum,format,multipleOf,exclusiveMaximum,exclusiveMinimum}=schema._zod.bag;if(typeof format==="string"&&format.includes("int"))json.type="integer";else json.type="number";let exMin=typeof exclusiveMinimum==="number"&&exclusiveMinimum>=(minimum??Number.NEGATIVE_INFINITY),exMax=typeof exclusiveMaximum==="number"&&exclusiveMaximum<=(maximum??Number.POSITIVE_INFINITY),legacy=ctx.target==="draft-04"||ctx.target==="openapi-3.0";if(exMin)if(legacy)json.minimum=exclusiveMinimum,json.exclusiveMinimum=!0;else json.exclusiveMinimum=exclusiveMinimum;else if(typeof minimum==="number")json.minimum=minimum;if(exMax)if(legacy)json.maximum=exclusiveMaximum,json.exclusiveMaximum=!0;else json.exclusiveMaximum=exclusiveMaximum;else if(typeof maximum==="number")json.maximum=maximum;if(typeof multipleOf==="number")json.multipleOf=multipleOf},booleanProcessor=(_schema,_ctx,json,_params)=>{json.type="boolean"},bigintProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},symbolProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},nullProcessor=(_schema,ctx,json,_params)=>{if(ctx.target==="openapi-3.0")json.type="string",json.nullable=!0,json.enum=[null];else json.type="null"},undefinedProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},voidProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},neverProcessor=(_schema,_ctx,json,_params)=>{json.not={}},anyProcessor=(_schema,_ctx,_json,_params)=>{},unknownProcessor=(_schema,_ctx,_json,_params)=>{},dateProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},enumProcessor=(schema,_ctx,json,_params)=>{let def=schema._zod.def,values=getEnumValues(def.entries);if(values.every((v)=>typeof v==="number"))json.type="number";if(values.every((v)=>typeof v==="string"))json.type="string";json.enum=values},literalProcessor=(schema,ctx,json,_params)=>{let def=schema._zod.def,vals=[];for(let val of def.values)if(val===void 0){if(ctx.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof val==="bigint")if(ctx.unrepresentable==="throw")throw 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){let val=vals[0];if(json.type=val===null?"null":typeof val,ctx.target==="draft-04"||ctx.target==="openapi-3.0")json.enum=[val];else json.const=val}else{if(vals.every((v)=>typeof v==="number"))json.type="number";if(vals.every((v)=>typeof v==="string"))json.type="string";if(vals.every((v)=>typeof v==="boolean"))json.type="boolean";if(vals.every((v)=>v===null))json.type="null";json.enum=vals}},nanProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},templateLiteralProcessor=(schema,_ctx,json,_params)=>{let _json=json,pattern=schema._zod.pattern;if(!pattern)throw Error("Pattern not found in template literal");_json.type="string",_json.pattern=pattern.source},fileProcessor=(schema,_ctx,json,_params)=>{let _json=json,file={type:"string",format:"binary",contentEncoding:"binary"},{minimum,maximum,mime}=schema._zod.bag;if(minimum!==void 0)file.minLength=minimum;if(maximum!==void 0)file.maxLength=maximum;if(mime)if(mime.length===1)file.contentMediaType=mime[0],Object.assign(_json,file);else Object.assign(_json,file),_json.anyOf=mime.map((m)=>({contentMediaType:m}));else Object.assign(_json,file)},successProcessor=(_schema,_ctx,json,_params)=>{json.type="boolean"},customProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},functionProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},transformProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},mapProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},setProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},arrayProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def,{minimum,maximum}=schema._zod.bag;if(typeof minimum==="number")json.minItems=minimum;if(typeof maximum==="number")json.maxItems=maximum;json.type="array",json.items=process2(def.element,ctx,{...params,path:[...params.path,"items"]})},objectProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="object",json.properties={};let shape=def.shape;for(let key in shape)json.properties[key]=process2(shape[key],ctx,{...params,path:[...params.path,"properties",key]});let allKeys=new Set(Object.keys(shape)),requiredKeys=new Set([...allKeys].filter((key)=>{let v=def.shape[key]._zod;if(ctx.io==="input")return v.optin===void 0;else return v.optout===void 0}));if(requiredKeys.size>0)json.required=Array.from(requiredKeys);if(def.catchall?._zod.def.type==="never")json.additionalProperties=!1;else if(!def.catchall){if(ctx.io==="output")json.additionalProperties=!1}else if(def.catchall)json.additionalProperties=process2(def.catchall,ctx,{...params,path:[...params.path,"additionalProperties"]})},unionProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,isExclusive=def.inclusive===!1,options=def.options.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,isExclusive?"oneOf":"anyOf",i]}));if(isExclusive)json.oneOf=options;else json.anyOf=options},intersectionProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,a=process2(def.left,ctx,{...params,path:[...params.path,"allOf",0]}),b=process2(def.right,ctx,{...params,path:[...params.path,"allOf",1]}),isSimpleIntersection=(val)=>("allOf"in val)&&Object.keys(val).length===1,allOf=[...isSimpleIntersection(a)?a.allOf:[a],...isSimpleIntersection(b)?b.allOf:[b]];json.allOf=allOf},tupleProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="array";let prefixPath=ctx.target==="draft-2020-12"?"prefixItems":"items",restPath=ctx.target==="draft-2020-12"?"items":ctx.target==="openapi-3.0"?"items":"additionalItems",prefixItems=def.items.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,prefixPath,i]})),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"){if(json.prefixItems=prefixItems,rest)json.items=rest}else if(ctx.target==="openapi-3.0"){if(json.items={anyOf:prefixItems},rest)json.items.anyOf.push(rest);if(json.minItems=prefixItems.length,!rest)json.maxItems=prefixItems.length}else if(json.items=prefixItems,rest)json.additionalItems=rest;let{minimum,maximum}=schema._zod.bag;if(typeof minimum==="number")json.minItems=minimum;if(typeof maximum==="number")json.maxItems=maximum},recordProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="object";let keyType=def.keyType,patterns=keyType._zod.bag?.patterns;if(def.mode==="loose"&&patterns&&patterns.size>0){let valueSchema=process2(def.valueType,ctx,{...params,path:[...params.path,"patternProperties","*"]});json.patternProperties={};for(let pattern of patterns)json.patternProperties[pattern.source]=valueSchema}else{if(ctx.target==="draft-07"||ctx.target==="draft-2020-12")json.propertyNames=process2(def.keyType,ctx,{...params,path:[...params.path,"propertyNames"]});json.additionalProperties=process2(def.valueType,ctx,{...params,path:[...params.path,"additionalProperties"]})}let keyValues=keyType._zod.values;if(keyValues){let validKeyValues=[...keyValues].filter((v)=>typeof v==="string"||typeof v==="number");if(validKeyValues.length>0)json.required=validKeyValues}},nullableProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,inner=process2(def.innerType,ctx,params),seen=ctx.seen.get(schema);if(ctx.target==="openapi-3.0")seen.ref=def.innerType,json.nullable=!0;else json.anyOf=[inner,{type:"null"}]},nonoptionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},defaultProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json.default=JSON.parse(JSON.stringify(def.defaultValue))},prefaultProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);if(seen.ref=def.innerType,ctx.io==="input")json._prefault=JSON.parse(JSON.stringify(def.defaultValue))},catchProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType;let catchValue;try{catchValue=def.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}json.default=catchValue},pipeProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def,inIsTransform=def.in._zod.traits.has("$ZodTransform"),innerType=ctx.io==="input"?inIsTransform?def.out:def.in:def.out;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},readonlyProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json.readOnly=!0},promiseProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},optionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},lazyProcessor=(schema,ctx,_json,params)=>{let innerType=schema._zod.innerType;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},allProcessors;var init_json_schema_processors=__esm(()=>{init_to_json_schema();init_util();formatMap={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},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}});class JSONSchemaGenerator{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);let result=finalize(this.ctx,schema),{"~standard":_,...plainResult}=result;return plainResult}}var init_json_schema_generator=__esm(()=>{init_json_schema_processors();init_to_json_schema()});var exports_json_schema={};var init_json_schema=()=>{};var exports_core2={};__export(exports_core2,{version:()=>version,util:()=>exports_util,treeifyError:()=>treeifyError,toJSONSchema:()=>toJSONSchema,toDotPath:()=>toDotPath,safeParseAsync:()=>safeParseAsync,safeParse:()=>safeParse,safeEncodeAsync:()=>safeEncodeAsync,safeEncode:()=>safeEncode,safeDecodeAsync:()=>safeDecodeAsync,safeDecode:()=>safeDecode,registry:()=>registry,regexes:()=>exports_regexes,process:()=>process2,prettifyError:()=>prettifyError,parseAsync:()=>parseAsync,parse:()=>parse,meta:()=>meta,locales:()=>exports_locales,isValidJWT:()=>isValidJWT,isValidBase64URL:()=>isValidBase64URL,isValidBase64:()=>isValidBase64,initializeContext:()=>initializeContext,globalRegistry:()=>globalRegistry,globalConfig:()=>globalConfig,formatError:()=>formatError,flattenError:()=>flattenError,finalize:()=>finalize,extractDefs:()=>extractDefs,encodeAsync:()=>encodeAsync,encode:()=>encode,describe:()=>describe,decodeAsync:()=>decodeAsync,decode:()=>decode,createToJSONSchemaMethod:()=>createToJSONSchemaMethod,createStandardJSONSchemaMethod:()=>createStandardJSONSchemaMethod,config:()=>config,clone:()=>clone,_xor:()=>_xor,_xid:()=>_xid,_void:()=>_void,_uuidv7:()=>_uuidv7,_uuidv6:()=>_uuidv6,_uuidv4:()=>_uuidv4,_uuid:()=>_uuid,_url:()=>_url,_uppercase:()=>_uppercase,_unknown:()=>_unknown,_union:()=>_union,_undefined:()=>_undefined2,_ulid:()=>_ulid,_uint64:()=>_uint64,_uint32:()=>_uint32,_tuple:()=>_tuple,_trim:()=>_trim,_transform:()=>_transform,_toUpperCase:()=>_toUpperCase,_toLowerCase:()=>_toLowerCase,_templateLiteral:()=>_templateLiteral,_symbol:()=>_symbol,_superRefine:()=>_superRefine,_success:()=>_success,_stringbool:()=>_stringbool,_stringFormat:()=>_stringFormat,_string:()=>_string,_startsWith:()=>_startsWith,_slugify:()=>_slugify,_size:()=>_size,_set:()=>_set,_safeParseAsync:()=>_safeParseAsync,_safeParse:()=>_safeParse,_safeEncodeAsync:()=>_safeEncodeAsync,_safeEncode:()=>_safeEncode,_safeDecodeAsync:()=>_safeDecodeAsync,_safeDecode:()=>_safeDecode,_regex:()=>_regex,_refine:()=>_refine,_record:()=>_record,_readonly:()=>_readonly,_property:()=>_property,_promise:()=>_promise,_positive:()=>_positive,_pipe:()=>_pipe,_parseAsync:()=>_parseAsync,_parse:()=>_parse,_overwrite:()=>_overwrite,_optional:()=>_optional,_number:()=>_number,_nullable:()=>_nullable,_null:()=>_null2,_normalize:()=>_normalize,_nonpositive:()=>_nonpositive,_nonoptional:()=>_nonoptional,_nonnegative:()=>_nonnegative,_never:()=>_never,_negative:()=>_negative,_nativeEnum:()=>_nativeEnum,_nanoid:()=>_nanoid,_nan:()=>_nan,_multipleOf:()=>_multipleOf,_minSize:()=>_minSize,_minLength:()=>_minLength,_min:()=>_gte,_mime:()=>_mime,_maxSize:()=>_maxSize,_maxLength:()=>_maxLength,_max:()=>_lte,_map:()=>_map,_mac:()=>_mac,_lte:()=>_lte,_lt:()=>_lt,_lowercase:()=>_lowercase,_literal:()=>_literal,_length:()=>_length,_lazy:()=>_lazy,_ksuid:()=>_ksuid,_jwt:()=>_jwt,_isoTime:()=>_isoTime,_isoDuration:()=>_isoDuration,_isoDateTime:()=>_isoDateTime,_isoDate:()=>_isoDate,_ipv6:()=>_ipv6,_ipv4:()=>_ipv4,_intersection:()=>_intersection,_int64:()=>_int64,_int32:()=>_int32,_int:()=>_int,_includes:()=>_includes,_guid:()=>_guid,_gte:()=>_gte,_gt:()=>_gt,_float64:()=>_float64,_float32:()=>_float32,_file:()=>_file,_enum:()=>_enum,_endsWith:()=>_endsWith,_encodeAsync:()=>_encodeAsync,_encode:()=>_encode,_emoji:()=>_emoji2,_email:()=>_email,_e164:()=>_e164,_discriminatedUnion:()=>_discriminatedUnion,_default:()=>_default,_decodeAsync:()=>_decodeAsync,_decode:()=>_decode,_date:()=>_date,_custom:()=>_custom,_cuid2:()=>_cuid2,_cuid:()=>_cuid,_coercedString:()=>_coercedString,_coercedNumber:()=>_coercedNumber,_coercedDate:()=>_coercedDate,_coercedBoolean:()=>_coercedBoolean,_coercedBigint:()=>_coercedBigint,_cidrv6:()=>_cidrv6,_cidrv4:()=>_cidrv4,_check:()=>_check,_catch:()=>_catch,_boolean:()=>_boolean,_bigint:()=>_bigint,_base64url:()=>_base64url,_base64:()=>_base64,_array:()=>_array,_any:()=>_any,TimePrecision:()=>TimePrecision,NEVER:()=>NEVER,JSONSchemaGenerator:()=>JSONSchemaGenerator,JSONSchema:()=>exports_json_schema,Doc:()=>Doc,$output:()=>$output,$input:()=>$input,$constructor:()=>$constructor,$brand:()=>$brand,$ZodXor:()=>$ZodXor,$ZodXID:()=>$ZodXID,$ZodVoid:()=>$ZodVoid,$ZodUnknown:()=>$ZodUnknown,$ZodUnion:()=>$ZodUnion,$ZodUndefined:()=>$ZodUndefined,$ZodUUID:()=>$ZodUUID,$ZodURL:()=>$ZodURL,$ZodULID:()=>$ZodULID,$ZodType:()=>$ZodType,$ZodTuple:()=>$ZodTuple,$ZodTransform:()=>$ZodTransform,$ZodTemplateLiteral:()=>$ZodTemplateLiteral,$ZodSymbol:()=>$ZodSymbol,$ZodSuccess:()=>$ZodSuccess,$ZodStringFormat:()=>$ZodStringFormat,$ZodString:()=>$ZodString,$ZodSet:()=>$ZodSet,$ZodRegistry:()=>$ZodRegistry,$ZodRecord:()=>$ZodRecord,$ZodRealError:()=>$ZodRealError,$ZodReadonly:()=>$ZodReadonly,$ZodPromise:()=>$ZodPromise,$ZodPreprocess:()=>$ZodPreprocess,$ZodPrefault:()=>$ZodPrefault,$ZodPipe:()=>$ZodPipe,$ZodOptional:()=>$ZodOptional,$ZodObjectJIT:()=>$ZodObjectJIT,$ZodObject:()=>$ZodObject,$ZodNumberFormat:()=>$ZodNumberFormat,$ZodNumber:()=>$ZodNumber,$ZodNullable:()=>$ZodNullable,$ZodNull:()=>$ZodNull,$ZodNonOptional:()=>$ZodNonOptional,$ZodNever:()=>$ZodNever,$ZodNanoID:()=>$ZodNanoID,$ZodNaN:()=>$ZodNaN,$ZodMap:()=>$ZodMap,$ZodMAC:()=>$ZodMAC,$ZodLiteral:()=>$ZodLiteral,$ZodLazy:()=>$ZodLazy,$ZodKSUID:()=>$ZodKSUID,$ZodJWT:()=>$ZodJWT,$ZodIntersection:()=>$ZodIntersection,$ZodISOTime:()=>$ZodISOTime,$ZodISODuration:()=>$ZodISODuration,$ZodISODateTime:()=>$ZodISODateTime,$ZodISODate:()=>$ZodISODate,$ZodIPv6:()=>$ZodIPv6,$ZodIPv4:()=>$ZodIPv4,$ZodGUID:()=>$ZodGUID,$ZodFunction:()=>$ZodFunction,$ZodFile:()=>$ZodFile,$ZodExactOptional:()=>$ZodExactOptional,$ZodError:()=>$ZodError,$ZodEnum:()=>$ZodEnum,$ZodEncodeError:()=>$ZodEncodeError,$ZodEmoji:()=>$ZodEmoji,$ZodEmail:()=>$ZodEmail,$ZodE164:()=>$ZodE164,$ZodDiscriminatedUnion:()=>$ZodDiscriminatedUnion,$ZodDefault:()=>$ZodDefault,$ZodDate:()=>$ZodDate,$ZodCustomStringFormat:()=>$ZodCustomStringFormat,$ZodCustom:()=>$ZodCustom,$ZodCodec:()=>$ZodCodec,$ZodCheckUpperCase:()=>$ZodCheckUpperCase,$ZodCheckStringFormat:()=>$ZodCheckStringFormat,$ZodCheckStartsWith:()=>$ZodCheckStartsWith,$ZodCheckSizeEquals:()=>$ZodCheckSizeEquals,$ZodCheckRegex:()=>$ZodCheckRegex,$ZodCheckProperty:()=>$ZodCheckProperty,$ZodCheckOverwrite:()=>$ZodCheckOverwrite,$ZodCheckNumberFormat:()=>$ZodCheckNumberFormat,$ZodCheckMultipleOf:()=>$ZodCheckMultipleOf,$ZodCheckMinSize:()=>$ZodCheckMinSize,$ZodCheckMinLength:()=>$ZodCheckMinLength,$ZodCheckMimeType:()=>$ZodCheckMimeType,$ZodCheckMaxSize:()=>$ZodCheckMaxSize,$ZodCheckMaxLength:()=>$ZodCheckMaxLength,$ZodCheckLowerCase:()=>$ZodCheckLowerCase,$ZodCheckLessThan:()=>$ZodCheckLessThan,$ZodCheckLengthEquals:()=>$ZodCheckLengthEquals,$ZodCheckIncludes:()=>$ZodCheckIncludes,$ZodCheckGreaterThan:()=>$ZodCheckGreaterThan,$ZodCheckEndsWith:()=>$ZodCheckEndsWith,$ZodCheckBigIntFormat:()=>$ZodCheckBigIntFormat,$ZodCheck:()=>$ZodCheck,$ZodCatch:()=>$ZodCatch,$ZodCUID2:()=>$ZodCUID2,$ZodCUID:()=>$ZodCUID,$ZodCIDRv6:()=>$ZodCIDRv6,$ZodCIDRv4:()=>$ZodCIDRv4,$ZodBoolean:()=>$ZodBoolean,$ZodBigIntFormat:()=>$ZodBigIntFormat,$ZodBigInt:()=>$ZodBigInt,$ZodBase64URL:()=>$ZodBase64URL,$ZodBase64:()=>$ZodBase64,$ZodAsyncError:()=>$ZodAsyncError,$ZodArray:()=>$ZodArray,$ZodAny:()=>$ZodAny});var init_core2=__esm(()=>{init_util();init_regexes();init_locales();init_json_schema_processors();init_json_schema_generator();init_json_schema();init_core();init_parse();init_errors2();init_schemas();init_checks();init_versions();init_registries();init_api();init_to_json_schema()});var exports_checks2={};__export(exports_checks2,{uppercase:()=>_uppercase,trim:()=>_trim,toUpperCase:()=>_toUpperCase,toLowerCase:()=>_toLowerCase,startsWith:()=>_startsWith,slugify:()=>_slugify,size:()=>_size,regex:()=>_regex,property:()=>_property,positive:()=>_positive,overwrite:()=>_overwrite,normalize:()=>_normalize,nonpositive:()=>_nonpositive,nonnegative:()=>_nonnegative,negative:()=>_negative,multipleOf:()=>_multipleOf,minSize:()=>_minSize,minLength:()=>_minLength,mime:()=>_mime,maxSize:()=>_maxSize,maxLength:()=>_maxLength,lte:()=>_lte,lt:()=>_lt,lowercase:()=>_lowercase,length:()=>_length,includes:()=>_includes,gte:()=>_gte,gt:()=>_gt,endsWith:()=>_endsWith});var init_checks2=__esm(()=>{init_core2()});var exports_iso={};__export(exports_iso,{time:()=>time2,duration:()=>duration2,datetime:()=>datetime2,date:()=>date3,ZodISOTime:()=>ZodISOTime,ZodISODuration:()=>ZodISODuration,ZodISODateTime:()=>ZodISODateTime,ZodISODate:()=>ZodISODate});function datetime2(params){return _isoDateTime(ZodISODateTime,params)}function date3(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(()=>{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=(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,ZodRealError;var init_errors3=__esm(()=>{init_core2();init_core2();init_util();ZodError=$constructor("ZodError",initializer2),ZodRealError=$constructor("ZodError",initializer2,{Parent:Error})});var parse3,parseAsync2,safeParse2,safeParseAsync2,encode2,decode2,encodeAsync2,decodeAsync2,safeEncode2,safeDecode2,safeEncodeAsync2,safeDecodeAsync2;var init_parse2=__esm(()=>{init_core2();init_errors3();parse3=_parse(ZodRealError),parseAsync2=_parseAsync(ZodRealError),safeParse2=_safeParse(ZodRealError),safeParseAsync2=_safeParseAsync(ZodRealError),encode2=_encode(ZodRealError),decode2=_decode(ZodRealError),encodeAsync2=_encodeAsync(ZodRealError),decodeAsync2=_decodeAsync(ZodRealError),safeEncode2=_safeEncode(ZodRealError),safeDecode2=_safeDecode(ZodRealError),safeEncodeAsync2=_safeEncodeAsync(ZodRealError),safeDecodeAsync2=_safeDecodeAsync(ZodRealError)});var exports_schemas2={};__export(exports_schemas2,{xor:()=>xor,xid:()=>xid2,void:()=>_void2,uuidv7:()=>uuidv7,uuidv6:()=>uuidv6,uuidv4:()=>uuidv4,uuid:()=>uuid2,url:()=>url,unknown:()=>unknown,union:()=>union,undefined:()=>_undefined3,ulid:()=>ulid2,uint64:()=>uint64,uint32:()=>uint32,tuple:()=>tuple,transform:()=>transform,templateLiteral:()=>templateLiteral,symbol:()=>symbol,superRefine:()=>superRefine,success:()=>success,stringbool:()=>stringbool,stringFormat:()=>stringFormat,string:()=>string2,strictObject:()=>strictObject,set:()=>set,refine:()=>refine,record:()=>record,readonly:()=>readonly,promise:()=>promise,preprocess:()=>preprocess,prefault:()=>prefault,pipe:()=>pipe,partialRecord:()=>partialRecord,optional:()=>optional,object:()=>object2,number:()=>number2,nullish:()=>nullish2,nullable:()=>nullable,null:()=>_null3,nonoptional:()=>nonoptional,never:()=>never,nativeEnum:()=>nativeEnum,nanoid:()=>nanoid2,nan:()=>nan,meta:()=>meta2,map:()=>map,mac:()=>mac2,looseRecord:()=>looseRecord,looseObject:()=>looseObject,literal:()=>literal,lazy:()=>lazy,ksuid:()=>ksuid2,keyof:()=>keyof,jwt:()=>jwt,json:()=>json,ipv6:()=>ipv62,ipv4:()=>ipv42,invertCodec:()=>invertCodec,intersection:()=>intersection,int64:()=>int64,int32:()=>int32,int:()=>int,instanceof:()=>_instanceof,httpUrl:()=>httpUrl,hostname:()=>hostname2,hex:()=>hex2,hash:()=>hash,guid:()=>guid2,function:()=>_function,float64:()=>float64,float32:()=>float32,file:()=>file,exactOptional:()=>exactOptional,enum:()=>_enum2,emoji:()=>emoji2,email:()=>email2,e164:()=>e1642,discriminatedUnion:()=>discriminatedUnion,describe:()=>describe2,date:()=>date4,custom:()=>custom,cuid2:()=>cuid22,cuid:()=>cuid3,codec:()=>codec,cidrv6:()=>cidrv62,cidrv4:()=>cidrv42,check:()=>check,catch:()=>_catch2,boolean:()=>boolean2,bigint:()=>bigint2,base64url:()=>base64url2,base64:()=>base642,array:()=>array,any:()=>any,_function:()=>_function,_default:()=>_default2,_ZodString:()=>_ZodString,ZodXor:()=>ZodXor,ZodXID:()=>ZodXID,ZodVoid:()=>ZodVoid,ZodUnknown:()=>ZodUnknown,ZodUnion:()=>ZodUnion,ZodUndefined:()=>ZodUndefined,ZodUUID:()=>ZodUUID,ZodURL:()=>ZodURL,ZodULID:()=>ZodULID,ZodType:()=>ZodType,ZodTuple:()=>ZodTuple,ZodTransform:()=>ZodTransform,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodSymbol:()=>ZodSymbol,ZodSuccess:()=>ZodSuccess,ZodStringFormat:()=>ZodStringFormat,ZodString:()=>ZodString,ZodSet:()=>ZodSet,ZodRecord:()=>ZodRecord,ZodReadonly:()=>ZodReadonly,ZodPromise:()=>ZodPromise,ZodPreprocess:()=>ZodPreprocess,ZodPrefault:()=>ZodPrefault,ZodPipe:()=>ZodPipe,ZodOptional:()=>ZodOptional,ZodObject:()=>ZodObject,ZodNumberFormat:()=>ZodNumberFormat,ZodNumber:()=>ZodNumber,ZodNullable:()=>ZodNullable,ZodNull:()=>ZodNull,ZodNonOptional:()=>ZodNonOptional,ZodNever:()=>ZodNever,ZodNanoID:()=>ZodNanoID,ZodNaN:()=>ZodNaN,ZodMap:()=>ZodMap,ZodMAC:()=>ZodMAC,ZodLiteral:()=>ZodLiteral,ZodLazy:()=>ZodLazy,ZodKSUID:()=>ZodKSUID,ZodJWT:()=>ZodJWT,ZodIntersection:()=>ZodIntersection,ZodIPv6:()=>ZodIPv6,ZodIPv4:()=>ZodIPv4,ZodGUID:()=>ZodGUID,ZodFunction:()=>ZodFunction,ZodFile:()=>ZodFile,ZodExactOptional:()=>ZodExactOptional,ZodEnum:()=>ZodEnum,ZodEmoji:()=>ZodEmoji,ZodEmail:()=>ZodEmail,ZodE164:()=>ZodE164,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodDefault:()=>ZodDefault,ZodDate:()=>ZodDate,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodCustom:()=>ZodCustom,ZodCodec:()=>ZodCodec,ZodCatch:()=>ZodCatch,ZodCUID2:()=>ZodCUID2,ZodCUID:()=>ZodCUID,ZodCIDRv6:()=>ZodCIDRv6,ZodCIDRv4:()=>ZodCIDRv4,ZodBoolean:()=>ZodBoolean,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBigInt:()=>ZodBigInt,ZodBase64URL:()=>ZodBase64URL,ZodBase64:()=>ZodBase64,ZodArray:()=>ZodArray,ZodAny:()=>ZodAny});function _installLazyMethods(inst,group,methods){let proto=Object.getPrototypeOf(inst),installed=_installedGroups.get(proto);if(!installed)installed=new Set,_installedGroups.set(proto,installed);if(installed.has(group))return;installed.add(group);for(let key in methods){let fn=methods[key];Object.defineProperty(proto,key,{configurable:!0,enumerable:!1,get(){let bound=fn.bind(this);return Object.defineProperty(this,key,{configurable:!0,writable:!0,enumerable:!0,value:bound}),bound},set(v){Object.defineProperty(this,key,{configurable:!0,writable:!0,enumerable:!0,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:exports_regexes.httpProtocol,hostname:exports_regexes.domain,...exports_util.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 base64url2(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 hostname2(_params){return _stringFormat(ZodCustomStringFormat,"hostname",exports_regexes.hostname,_params)}function hex2(_params){return _stringFormat(ZodCustomStringFormat,"hex",exports_regexes.hex,_params)}function hash(alg,params){let enc=params?.enc??"hex",format=`${alg}_${enc}`,regex=exports_regexes[format];if(!regex)throw 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 date4(params){return _date(ZodDate,params)}function array(element,params){return _array(ZodArray,element,params)}function keyof(schema){let shape=schema._zod.def.shape;return _enum2(Object.keys(shape))}function object2(shape,params){let def={type:"object",shape:shape??{},...exports_util.normalizeParams(params)};return new ZodObject(def)}function strictObject(shape,params){return new ZodObject({type:"object",shape,catchall:never(),...exports_util.normalizeParams(params)})}function looseObject(shape,params){return new ZodObject({type:"object",shape,catchall:unknown(),...exports_util.normalizeParams(params)})}function union(options,params){return new ZodUnion({type:"union",options,...exports_util.normalizeParams(params)})}function xor(options,params){return new ZodXor({type:"union",options,inclusive:!1,...exports_util.normalizeParams(params)})}function discriminatedUnion(discriminator,options,params){return new ZodDiscriminatedUnion({type:"union",options,discriminator,...exports_util.normalizeParams(params)})}function intersection(left,right){return new ZodIntersection({type:"intersection",left,right})}function tuple(items,_paramsOrRest,_params){let hasRest=_paramsOrRest instanceof $ZodType,params=hasRest?_params:_paramsOrRest;return new ZodTuple({type:"tuple",items,rest:hasRest?_paramsOrRest:null,...exports_util.normalizeParams(params)})}function record(keyType,valueType,params){if(!valueType||!valueType._zod)return new ZodRecord({type:"record",keyType:string2(),valueType:keyType,...exports_util.normalizeParams(valueType)});return new ZodRecord({type:"record",keyType,valueType,...exports_util.normalizeParams(params)})}function partialRecord(keyType,valueType,params){let k=clone(keyType);return k._zod.values=void 0,new ZodRecord({type:"record",keyType:k,valueType,...exports_util.normalizeParams(params)})}function looseRecord(keyType,valueType,params){return new ZodRecord({type:"record",keyType,valueType,mode:"loose",...exports_util.normalizeParams(params)})}function map(keyType,valueType,params){return new ZodMap({type:"map",keyType,valueType,...exports_util.normalizeParams(params)})}function set(valueType,params){return new ZodSet({type:"set",valueType,...exports_util.normalizeParams(params)})}function _enum2(values,params){let entries=Array.isArray(values)?Object.fromEntries(values.map((v)=>[v,v])):values;return new ZodEnum({type:"enum",entries,...exports_util.normalizeParams(params)})}function nativeEnum(entries,params){return new ZodEnum({type:"enum",entries,...exports_util.normalizeParams(params)})}function literal(value,params){return new ZodLiteral({type:"literal",values:Array.isArray(value)?value:[value],...exports_util.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():exports_util.shallowClone(defaultValue)}})}function prefault(innerType,defaultValue){return new ZodPrefault({type:"prefault",innerType,get defaultValue(){return typeof defaultValue==="function"?defaultValue():exports_util.shallowClone(defaultValue)}})}function nonoptional(innerType,params){return new ZodNonOptional({type:"nonoptional",innerType,...exports_util.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){let 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,...exports_util.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){let ch=new $ZodCheck({check:"custom"});return ch._zod.check=fn,ch}function custom(fn,_params){return _custom(ZodCustom,fn??(()=>!0),_params)}function refine(fn,_params={}){return _refine(ZodCustom,fn,_params)}function superRefine(fn,params){return _superRefine(fn,params)}function _instanceof(cls,params={}){let inst=new ZodCustom({type:"custom",check:"custom",fn:(data)=>data instanceof cls,abort:!0,...exports_util.normalizeParams(params)});return 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??[]]})},inst}function json(params){let jsonSchema=lazy(()=>{return union([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=(...args)=>_stringbool({Codec:ZodCodec,Boolean:ZodBoolean,String:ZodString},...args);var init_schemas2=__esm(()=>{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)=>{return $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)=>parse3(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)=>encode2(inst,data,params),inst.decode=(data,params)=>decode2(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){let def2=this.def;return this.clone(exports_util.mergeDefs(def2,{checks:[...def2.checks??[],...chks.map((ch)=>typeof ch==="function"?{_zod:{check:ch,def:{check:"custom"},onattach:[]}}:ch)]}),{parent:!0})},with(...chks){return this.check(...chks)},clone(def2,params){return clone(this,def2,params)},brand(){return this},register(reg,meta2){return reg.add(this,meta2),this},refine(check,params){return this.check(refine(check,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 union([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(target){return pipe(this,target)},readonly(){return readonly(this)},describe(description){let cl=this.clone();return globalRegistry.add(cl,{description}),cl},meta(...args){if(args.length===0)return globalRegistry.get(this);let cl=this.clone();return globalRegistry.add(cl,args[0]),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:!0}),inst}),_ZodString=$constructor("_ZodString",(inst,def)=>{$ZodString.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>stringProcessor(inst,ctx,json,params);let 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(date3(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,json,params)=>numberProcessor(inst,ctx,json,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}});let 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??0.5),inst.isFinite=!0,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,json,params)=>booleanProcessor(inst,ctx,json,params)});ZodBigInt=$constructor("ZodBigInt",(inst,def)=>{$ZodBigInt.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>bigintProcessor(inst,ctx,json,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));let 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,json,params)=>symbolProcessor(inst,ctx,json,params)});ZodUndefined=$constructor("ZodUndefined",(inst,def)=>{$ZodUndefined.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>undefinedProcessor(inst,ctx,json,params)});ZodNull=$constructor("ZodNull",(inst,def)=>{$ZodNull.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nullProcessor(inst,ctx,json,params)});ZodAny=$constructor("ZodAny",(inst,def)=>{$ZodAny.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>anyProcessor(inst,ctx,json,params)});ZodUnknown=$constructor("ZodUnknown",(inst,def)=>{$ZodUnknown.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unknownProcessor(inst,ctx,json,params)});ZodNever=$constructor("ZodNever",(inst,def)=>{$ZodNever.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>neverProcessor(inst,ctx,json,params)});ZodVoid=$constructor("ZodVoid",(inst,def)=>{$ZodVoid.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>voidProcessor(inst,ctx,json,params)});ZodDate=$constructor("ZodDate",(inst,def)=>{$ZodDate.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>dateProcessor(inst,ctx,json,params),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params));let 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,json,params)=>arrayProcessor(inst,ctx,json,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,json,params)=>objectProcessor(inst,ctx,json,params),exports_util.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 exports_util.extend(this,incoming)},safeExtend(incoming){return exports_util.safeExtend(this,incoming)},merge(other){return exports_util.merge(this,other)},pick(mask){return exports_util.pick(this,mask)},omit(mask){return exports_util.omit(this,mask)},partial(...args){return exports_util.partial(ZodOptional,this,args[0])},required(...args){return exports_util.required(ZodNonOptional,this,args[0])}})});ZodUnion=$constructor("ZodUnion",(inst,def)=>{$ZodUnion.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unionProcessor(inst,ctx,json,params),inst.options=def.options});ZodXor=$constructor("ZodXor",(inst,def)=>{ZodUnion.init(inst,def),$ZodXor.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unionProcessor(inst,ctx,json,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,json,params)=>intersectionProcessor(inst,ctx,json,params)});ZodTuple=$constructor("ZodTuple",(inst,def)=>{$ZodTuple.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>tupleProcessor(inst,ctx,json,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,json,params)=>recordProcessor(inst,ctx,json,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,json,params)=>mapProcessor(inst,ctx,json,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,json,params)=>setProcessor(inst,ctx,json,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,json,params)=>enumProcessor(inst,ctx,json,params),inst.enum=def.entries,inst.options=Object.values(def.entries);let keys=new Set(Object.keys(def.entries));inst.extract=(values,params)=>{let newEntries={};for(let value of values)if(keys.has(value))newEntries[value]=def.entries[value];else throw Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...exports_util.normalizeParams(params),entries:newEntries})},inst.exclude=(values,params)=>{let newEntries={...def.entries};for(let value of values)if(keys.has(value))delete newEntries[value];else throw Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...exports_util.normalizeParams(params),entries:newEntries})}});ZodLiteral=$constructor("ZodLiteral",(inst,def)=>{$ZodLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>literalProcessor(inst,ctx,json,params),inst.values=new Set(def.values),Object.defineProperty(inst,"value",{get(){if(def.values.length>1)throw 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,json,params)=>fileProcessor(inst,ctx,json,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,json,params)=>transformProcessor(inst,ctx,json,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(exports_util.issue(issue2,payload.value,def));else{let _issue=issue2;if(_issue.fatal)_issue.continue=!1;_issue.code??(_issue.code="custom"),_issue.input??(_issue.input=payload.value),_issue.inst??(_issue.inst=inst),payload.issues.push(exports_util.issue(_issue))}};let output2=def.transform(payload.value,payload);if(output2 instanceof Promise)return output2.then((output3)=>{return payload.value=output3,payload.fallback=!0,payload});return payload.value=output2,payload.fallback=!0,payload}});ZodOptional=$constructor("ZodOptional",(inst,def)=>{$ZodOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>optionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodExactOptional=$constructor("ZodExactOptional",(inst,def)=>{$ZodExactOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>optionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodNullable=$constructor("ZodNullable",(inst,def)=>{$ZodNullable.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nullableProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodDefault=$constructor("ZodDefault",(inst,def)=>{$ZodDefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>defaultProcessor(inst,ctx,json,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,json,params)=>prefaultProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodNonOptional=$constructor("ZodNonOptional",(inst,def)=>{$ZodNonOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nonoptionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodSuccess=$constructor("ZodSuccess",(inst,def)=>{$ZodSuccess.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>successProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodCatch=$constructor("ZodCatch",(inst,def)=>{$ZodCatch.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>catchProcessor(inst,ctx,json,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,json,params)=>nanProcessor(inst,ctx,json,params)});ZodPipe=$constructor("ZodPipe",(inst,def)=>{$ZodPipe.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>pipeProcessor(inst,ctx,json,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,json,params)=>readonlyProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodTemplateLiteral=$constructor("ZodTemplateLiteral",(inst,def)=>{$ZodTemplateLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>templateLiteralProcessor(inst,ctx,json,params)});ZodLazy=$constructor("ZodLazy",(inst,def)=>{$ZodLazy.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>lazyProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.getter()});ZodPromise=$constructor("ZodPromise",(inst,def)=>{$ZodPromise.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>promiseProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodFunction=$constructor("ZodFunction",(inst,def)=>{$ZodFunction.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>functionProcessor(inst,ctx,json,params)});ZodCustom=$constructor("ZodCustom",(inst,def)=>{$ZodCustom.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>customProcessor(inst,ctx,json,params)});describe2=describe,meta2=meta});function setErrorMap(map2){config({customError:map2})}function getErrorMap(){return config().customError}var ZodIssueCode,ZodFirstPartyTypeKind;var init_compat=__esm(()=>{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){let $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 Error("External $ref is not supported, only local refs (#/...) are allowed");let path=ref.slice(1).split("/").filter(Boolean);if(path.length===0)return ctx.rootSchema;let defsKey=ctx.version==="draft-2020-12"?"$defs":"definitions";if(path[0]===defsKey){let key=path[1];if(!key||!ctx.defs[key])throw Error(`Reference not found: ${ref}`);return ctx.defs[key]}throw 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 Error("not is not supported in Zod (except { not: {} } for never)")}if(schema.unevaluatedItems!==void 0)throw Error("unevaluatedItems is not supported");if(schema.unevaluatedProperties!==void 0)throw Error("unevaluatedProperties is not supported");if(schema.if!==void 0||schema.then!==void 0||schema.else!==void 0)throw Error("Conditional schemas (if/then/else) are not supported");if(schema.dependentSchemas!==void 0||schema.dependentRequired!==void 0)throw Error("dependentSchemas and dependentRequired are not supported");if(schema.$ref){let 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 Error(`Circular reference not resolved: ${refPath}`);return ctx.refs.get(refPath)});ctx.processing.add(refPath);let resolved=resolveRef(refPath,ctx),zodSchema2=convertSchema(resolved,ctx);return ctx.refs.set(refPath,zodSchema2),ctx.processing.delete(refPath),zodSchema2}if(schema.enum!==void 0){let enumValues=schema.enum;if(ctx.version==="openapi-3.0"&&schema.nullable===!0&&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);let 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);let type=schema.type;if(Array.isArray(type)){let typeSchemas=type.map((t)=>{let 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){let 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===!0&&typeof schema.minimum==="number")numberSchema=numberSchema.gt(schema.minimum);if(typeof schema.exclusiveMaximum==="number")numberSchema=numberSchema.lt(schema.exclusiveMaximum);else if(schema.exclusiveMaximum===!0&&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":{let shape={},properties=schema.properties||{},requiredSet=new Set(schema.required||[]);for(let[key,propSchema]of Object.entries(properties)){let propZodSchema=convertSchema(propSchema,ctx);shape[key]=requiredSet.has(key)?propZodSchema:propZodSchema.optional()}if(schema.propertyNames){let keySchema=convertSchema(schema.propertyNames,ctx),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}let objectSchema2=z.object(shape).passthrough(),recordSchema=z.looseRecord(keySchema,valueSchema);zodSchema=z.intersection(objectSchema2,recordSchema);break}if(schema.patternProperties){let patternProps=schema.patternProperties,patternKeys=Object.keys(patternProps),looseRecords=[];for(let pattern of patternKeys){let patternValue=convertSchema(patternProps[pattern],ctx),keySchema=z.string().regex(new RegExp(pattern));looseRecords.push(z.looseRecord(keySchema,patternValue))}let schemasToIntersect=[];if(Object.keys(shape).length>0)schemasToIntersect.push(z.object(shape).passthrough());if(schemasToIntersect.push(...looseRecords),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}let objectSchema=z.object(shape);if(schema.additionalProperties===!1)zodSchema=objectSchema.strict();else if(typeof schema.additionalProperties==="object")zodSchema=objectSchema.catchall(convertSchema(schema.additionalProperties,ctx));else zodSchema=objectSchema.passthrough();break}case"array":{let{prefixItems,items}=schema;if(prefixItems&&Array.isArray(prefixItems)){let tupleItems=prefixItems.map((item)=>convertSchema(item,ctx)),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)){let tupleItems=items.map((item)=>convertSchema(item,ctx)),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){let element=convertSchema(items,ctx),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 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),hasExplicitType=schema.type||schema.enum!==void 0||schema.const!==void 0;if(schema.anyOf&&Array.isArray(schema.anyOf)){let options=schema.anyOf.map((s)=>convertSchema(s,ctx)),anyOfUnion=z.union(options);baseSchema=hasExplicitType?z.intersection(baseSchema,anyOfUnion):anyOfUnion}if(schema.oneOf&&Array.isArray(schema.oneOf)){let options=schema.oneOf.map((s)=>convertSchema(s,ctx)),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),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===!0&&ctx.version==="openapi-3.0")baseSchema=z.nullable(baseSchema);if(schema.readOnly===!0)baseSchema=z.readonly(baseSchema);if(schema.default!==void 0)baseSchema=baseSchema.default(schema.default);let extraMeta={},coreMetadataKeys=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let key of coreMetadataKeys)if(key in schema)extraMeta[key]=schema[key];let contentMetadataKeys=["contentEncoding","contentMediaType","contentSchema"];for(let key of contentMetadataKeys)if(key in schema)extraMeta[key]=schema[key];for(let 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 Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let version2=detectVersion(normalized,params?.defaultTarget),defs=normalized.$defs||normalized.definitions||{},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(()=>{init_registries();init_checks2();init_iso();init_schemas2();z={...exports_schemas2,...exports_checks2,iso:exports_iso},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 exports_coerce={};__export(exports_coerce,{string:()=>string3,number:()=>number3,date:()=>date5,boolean:()=>boolean3,bigint:()=>bigint3});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 date5(params){return _coercedDate(ZodDate,params)}var init_coerce=__esm(()=>{init_core2();init_schemas2()});var exports_external={};__export(exports_external,{xor:()=>xor,xid:()=>xid2,void:()=>_void2,uuidv7:()=>uuidv7,uuidv6:()=>uuidv6,uuidv4:()=>uuidv4,uuid:()=>uuid2,util:()=>exports_util,url:()=>url,uppercase:()=>_uppercase,unknown:()=>unknown,union:()=>union,undefined:()=>_undefined3,ulid:()=>ulid2,uint64:()=>uint64,uint32:()=>uint32,tuple:()=>tuple,trim:()=>_trim,treeifyError:()=>treeifyError,transform:()=>transform,toUpperCase:()=>_toUpperCase,toLowerCase:()=>_toLowerCase,toJSONSchema:()=>toJSONSchema,templateLiteral:()=>templateLiteral,symbol:()=>symbol,superRefine:()=>superRefine,success:()=>success,stringbool:()=>stringbool,stringFormat:()=>stringFormat,string:()=>string2,strictObject:()=>strictObject,startsWith:()=>_startsWith,slugify:()=>_slugify,size:()=>_size,setErrorMap:()=>setErrorMap,set:()=>set,safeParseAsync:()=>safeParseAsync2,safeParse:()=>safeParse2,safeEncodeAsync:()=>safeEncodeAsync2,safeEncode:()=>safeEncode2,safeDecodeAsync:()=>safeDecodeAsync2,safeDecode:()=>safeDecode2,registry:()=>registry,regexes:()=>exports_regexes,regex:()=>_regex,refine:()=>refine,record:()=>record,readonly:()=>readonly,property:()=>_property,promise:()=>promise,prettifyError:()=>prettifyError,preprocess:()=>preprocess,prefault:()=>prefault,positive:()=>_positive,pipe:()=>pipe,partialRecord:()=>partialRecord,parseAsync:()=>parseAsync2,parse:()=>parse3,overwrite:()=>_overwrite,optional:()=>optional,object:()=>object2,number:()=>number2,nullish:()=>nullish2,nullable:()=>nullable,null:()=>_null3,normalize:()=>_normalize,nonpositive:()=>_nonpositive,nonoptional:()=>nonoptional,nonnegative:()=>_nonnegative,never:()=>never,negative:()=>_negative,nativeEnum:()=>nativeEnum,nanoid:()=>nanoid2,nan:()=>nan,multipleOf:()=>_multipleOf,minSize:()=>_minSize,minLength:()=>_minLength,mime:()=>_mime,meta:()=>meta2,maxSize:()=>_maxSize,maxLength:()=>_maxLength,map:()=>map,mac:()=>mac2,lte:()=>_lte,lt:()=>_lt,lowercase:()=>_lowercase,looseRecord:()=>looseRecord,looseObject:()=>looseObject,locales:()=>exports_locales,literal:()=>literal,length:()=>_length,lazy:()=>lazy,ksuid:()=>ksuid2,keyof:()=>keyof,jwt:()=>jwt,json:()=>json,iso:()=>exports_iso,ipv6:()=>ipv62,ipv4:()=>ipv42,invertCodec:()=>invertCodec,intersection:()=>intersection,int64:()=>int64,int32:()=>int32,int:()=>int,instanceof:()=>_instanceof,includes:()=>_includes,httpUrl:()=>httpUrl,hostname:()=>hostname2,hex:()=>hex2,hash:()=>hash,guid:()=>guid2,gte:()=>_gte,gt:()=>_gt,globalRegistry:()=>globalRegistry,getErrorMap:()=>getErrorMap,function:()=>_function,fromJSONSchema:()=>fromJSONSchema,formatError:()=>formatError,float64:()=>float64,float32:()=>float32,flattenError:()=>flattenError,file:()=>file,exactOptional:()=>exactOptional,enum:()=>_enum2,endsWith:()=>_endsWith,encodeAsync:()=>encodeAsync2,encode:()=>encode2,emoji:()=>emoji2,email:()=>email2,e164:()=>e1642,discriminatedUnion:()=>discriminatedUnion,describe:()=>describe2,decodeAsync:()=>decodeAsync2,decode:()=>decode2,date:()=>date4,custom:()=>custom,cuid2:()=>cuid22,cuid:()=>cuid3,core:()=>exports_core2,config:()=>config,coerce:()=>exports_coerce,codec:()=>codec,clone:()=>clone,cidrv6:()=>cidrv62,cidrv4:()=>cidrv42,check:()=>check,catch:()=>_catch2,boolean:()=>boolean2,bigint:()=>bigint2,base64url:()=>base64url2,base64:()=>base642,array:()=>array,any:()=>any,_function:()=>_function,_default:()=>_default2,_ZodString:()=>_ZodString,ZodXor:()=>ZodXor,ZodXID:()=>ZodXID,ZodVoid:()=>ZodVoid,ZodUnknown:()=>ZodUnknown,ZodUnion:()=>ZodUnion,ZodUndefined:()=>ZodUndefined,ZodUUID:()=>ZodUUID,ZodURL:()=>ZodURL,ZodULID:()=>ZodULID,ZodType:()=>ZodType,ZodTuple:()=>ZodTuple,ZodTransform:()=>ZodTransform,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodSymbol:()=>ZodSymbol,ZodSuccess:()=>ZodSuccess,ZodStringFormat:()=>ZodStringFormat,ZodString:()=>ZodString,ZodSet:()=>ZodSet,ZodRecord:()=>ZodRecord,ZodRealError:()=>ZodRealError,ZodReadonly:()=>ZodReadonly,ZodPromise:()=>ZodPromise,ZodPreprocess:()=>ZodPreprocess,ZodPrefault:()=>ZodPrefault,ZodPipe:()=>ZodPipe,ZodOptional:()=>ZodOptional,ZodObject:()=>ZodObject,ZodNumberFormat:()=>ZodNumberFormat,ZodNumber:()=>ZodNumber,ZodNullable:()=>ZodNullable,ZodNull:()=>ZodNull,ZodNonOptional:()=>ZodNonOptional,ZodNever:()=>ZodNever,ZodNanoID:()=>ZodNanoID,ZodNaN:()=>ZodNaN,ZodMap:()=>ZodMap,ZodMAC:()=>ZodMAC,ZodLiteral:()=>ZodLiteral,ZodLazy:()=>ZodLazy,ZodKSUID:()=>ZodKSUID,ZodJWT:()=>ZodJWT,ZodIssueCode:()=>ZodIssueCode,ZodIntersection:()=>ZodIntersection,ZodISOTime:()=>ZodISOTime,ZodISODuration:()=>ZodISODuration,ZodISODateTime:()=>ZodISODateTime,ZodISODate:()=>ZodISODate,ZodIPv6:()=>ZodIPv6,ZodIPv4:()=>ZodIPv4,ZodGUID:()=>ZodGUID,ZodFunction:()=>ZodFunction,ZodFirstPartyTypeKind:()=>ZodFirstPartyTypeKind,ZodFile:()=>ZodFile,ZodExactOptional:()=>ZodExactOptional,ZodError:()=>ZodError,ZodEnum:()=>ZodEnum,ZodEmoji:()=>ZodEmoji,ZodEmail:()=>ZodEmail,ZodE164:()=>ZodE164,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodDefault:()=>ZodDefault,ZodDate:()=>ZodDate,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodCustom:()=>ZodCustom,ZodCodec:()=>ZodCodec,ZodCatch:()=>ZodCatch,ZodCUID2:()=>ZodCUID2,ZodCUID:()=>ZodCUID,ZodCIDRv6:()=>ZodCIDRv6,ZodCIDRv4:()=>ZodCIDRv4,ZodBoolean:()=>ZodBoolean,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBigInt:()=>ZodBigInt,ZodBase64URL:()=>ZodBase64URL,ZodBase64:()=>ZodBase64,ZodArray:()=>ZodArray,ZodAny:()=>ZodAny,TimePrecision:()=>TimePrecision,NEVER:()=>NEVER,$output:()=>$output,$input:()=>$input,$brand:()=>$brand});var init_external=__esm(()=>{init_core2();init_core2();init_en();init_core2();init_json_schema_processors();init_from_json_schema();init_locales();init_iso();init_iso();init_coerce();init_schemas2();init_checks2();init_errors3();init_parse2();init_compat();config(en_default())});var init_zod=__esm(()=>{init_external();init_external()});var require_identity=__commonJS((exports)=>{var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===ALIAS,isDocument=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===DOC,isMap=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===MAP,isPair=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===PAIR,isScalar=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===SCALAR,isSeq=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===SEQ;function isCollection(node){if(node&&typeof node==="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}function isNode(node){if(node&&typeof node==="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}var hasAnchor=(node)=>(isScalar(node)||isCollection(node))&&!!node.anchor;exports.ALIAS=ALIAS;exports.DOC=DOC;exports.MAP=MAP;exports.NODE_TYPE=NODE_TYPE;exports.PAIR=PAIR;exports.SCALAR=SCALAR;exports.SEQ=SEQ;exports.hasAnchor=hasAnchor;exports.isAlias=isAlias;exports.isCollection=isCollection;exports.isDocument=isDocument;exports.isMap=isMap;exports.isNode=isNode;exports.isPair=isPair;exports.isScalar=isScalar;exports.isSeq=isSeq});var require_visit=__commonJS((exports)=>{var identity=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit(node,visitor){let visitor_=initVisitor(visitor);if(identity.isDocument(node)){if(visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE)node.contents=null}else visit_(null,node,visitor_,Object.freeze([]))}visit.BREAK=BREAK;visit.SKIP=SKIP;visit.REMOVE=REMOVE;function visit_(key,node,visitor,path){let ctrl=callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visit_(key,ctrl,visitor,path);if(typeof ctrl!=="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path);if(typeof ci==="number")i=ci-1;else if(ci===BREAK)return BREAK;else if(ci===REMOVE)node.items.splice(i,1),i-=1}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=visit_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;else if(ck===REMOVE)node.key=null;let cv=visit_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;else if(cv===REMOVE)node.value=null}}return ctrl}async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);if(identity.isDocument(node)){if(await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE)node.contents=null}else await visitAsync_(null,node,visitor_,Object.freeze([]))}visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path){let ctrl=await callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visitAsync_(key,ctrl,visitor,path);if(typeof ctrl!=="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path);if(typeof ci==="number")i=ci-1;else if(ci===BREAK)return BREAK;else if(ci===REMOVE)node.items.splice(i,1),i-=1}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=await visitAsync_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;else if(ck===REMOVE)node.key=null;let cv=await visitAsync_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;else if(cv===REMOVE)node.value=null}}return ctrl}function initVisitor(visitor){if(typeof visitor==="object"&&(visitor.Collection||visitor.Node||visitor.Value))return Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor);return visitor}function callVisitor(key,node,visitor,path){if(typeof visitor==="function")return visitor(key,node,path);if(identity.isMap(node))return visitor.Map?.(key,node,path);if(identity.isSeq(node))return visitor.Seq?.(key,node,path);if(identity.isPair(node))return visitor.Pair?.(key,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key,node,path);if(identity.isAlias(node))return visitor.Alias?.(key,node,path);return}function replaceNode(key,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key]=node;else if(identity.isPair(parent))if(key==="key")parent.key=node;else parent.value=node;else if(identity.isDocument(parent))parent.contents=node;else{let pt=identity.isAlias(parent)?"alias":"scalar";throw Error(`Cannot replace node with ${pt} parent`)}}exports.visit=visit;exports.visitAsync=visitAsync});var require_directives=__commonJS((exports)=>{var identity=require_identity(),visit=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=(tn)=>tn.replace(/[!,[\]{}]/g,(ch)=>escapeChars[ch]);class Directives{constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},Directives.defaultYaml,yaml),this.tags=Object.assign({},Directives.defaultTags,tags)}clone(){let copy=new Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},Directives.defaultTags);break}return res}add(line,onError){if(this.atNextDocument)this.yaml={explicit:Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},Directives.defaultTags),this.atNextDocument=!1;let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2){if(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2)return!1}let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version2]=parts;if(version2==="1.1"||version2==="1.2")return this.yaml.version=version2,!0;else{let isValid=/^\d+\.\d+$/.test(version2);return onError(6,`Unsupported YAML version ${version2}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);if(verbatim==="!"||verbatim==="!!")return onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null;if(source[source.length-1]!==">")onError("Verbatim tags must end with a >");return verbatim}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);if(!suffix)onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error51){return onError(String(error51)),null}if(handle==="!")return source;return onError(`Could not resolve tag: ${source}`),null}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc2){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc2&&tagEntries.length>0&&identity.isNode(doc2.contents)){let tags={};visit.visit(doc2.contents,(_key,node)=>{if(identity.isNode(node)&&node.tag)tags[node.tag]=!0}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries){if(handle==="!!"&&prefix==="tag:yaml.org,2002:")continue;if(!doc2||tagNames.some((tn)=>tn.startsWith(prefix)))lines.push(`%TAG ${handle} ${prefix}`)}return lines.join(`
65
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let entry of ctx.seen.entries()){let seen=entry[1];if(schema===entry[0]){extractToDef(entry);continue}if(ctx.external){let ext=ctx.external.registry.get(entry[0])?.id;if(schema!==entry[0]&&ext){extractToDef(entry);continue}}if(ctx.metadataRegistry.get(entry[0])?.id){extractToDef(entry);continue}if(seen.cycle){extractToDef(entry);continue}if(seen.count>1){if(ctx.reused==="ref"){extractToDef(entry);continue}}}}function finalize(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw Error("Unprocessed schema. This is a bug in Zod.");let flattenRef=(zodSchema)=>{let seen=ctx.seen.get(zodSchema);if(seen.ref===null)return;let schema2=seen.def??seen.schema,_cached={...schema2},ref=seen.ref;if(seen.ref=null,ref){flattenRef(ref);let refSeen=ctx.seen.get(ref),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);if(Object.assign(schema2,_cached),zodSchema._zod.parent===ref)for(let key in schema2){if(key==="$ref"||key==="allOf")continue;if(!(key in _cached))delete schema2[key]}if(refSchema.$ref&&refSeen.def)for(let 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]}}let parent=zodSchema._zod.parent;if(parent&&parent!==ref){flattenRef(parent);let parentSeen=ctx.seen.get(parent);if(parentSeen?.schema.$ref){if(schema2.$ref=parentSeen.schema.$ref,parentSeen.def)for(let 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(let entry of[...ctx.seen.entries()].reverse())flattenRef(entry[0]);let 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");if(ctx.external?.uri){let id=ctx.external.registry.get(schema)?.id;if(!id)throw Error("Schema is missing an `id` property");result.$id=ctx.external.uri(id)}Object.assign(result,root.def??root.schema);let rootMetaId=ctx.metadataRegistry.get(schema)?.id;if(rootMetaId!==void 0&&result.id===rootMetaId)delete result.id;let defs=ctx.external?.defs??{};for(let entry of ctx.seen.entries()){let 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{let finalized=JSON.parse(JSON.stringify(result));return Object.defineProperty(finalized,"~standard",{value:{...schema["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(schema,"input",ctx.processors),output:createStandardJSONSchemaMethod(schema,"output",ctx.processors)}},enumerable:!1,writable:!1}),finalized}catch(_err){throw Error("Error converting schema to JSON.")}}function isTransforming(_schema,_ctx){let ctx=_ctx??{seen:new Set};if(ctx.seen.has(_schema))return!1;ctx.seen.add(_schema);let def=_schema._zod.def;if(def.type==="transform")return!0;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!0;return isTransforming(def.in,ctx)||isTransforming(def.out,ctx)}if(def.type==="object"){for(let key in def.shape)if(isTransforming(def.shape[key],ctx))return!0;return!1}if(def.type==="union"){for(let option of def.options)if(isTransforming(option,ctx))return!0;return!1}if(def.type==="tuple"){for(let item of def.items)if(isTransforming(item,ctx))return!0;if(def.rest&&isTransforming(def.rest,ctx))return!0;return!1}return!1}var createToJSONSchemaMethod=(schema,processors={})=>(params)=>{let ctx=initializeContext({...params,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)},createStandardJSONSchemaMethod=(schema,io,processors={})=>(params)=>{let{libraryOptions,target}=params??{},ctx=initializeContext({...libraryOptions??{},target,io,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)};var init_to_json_schema=__esm(()=>{init_registries()});function toJSONSchema(input,params){if("_idmap"in input){let registry2=input,ctx2=initializeContext({...params,processors:allProcessors}),defs={};for(let entry of registry2._idmap.entries()){let[_,schema]=entry;process2(schema,ctx2)}let schemas={},external={registry:registry2,uri:params?.uri,defs};ctx2.external=external;for(let entry of registry2._idmap.entries()){let[key,schema]=entry;extractDefs(ctx2,schema),schemas[key]=finalize(ctx2,schema)}if(Object.keys(defs).length>0){let defsSegment=ctx2.target==="draft-2020-12"?"$defs":"definitions";schemas.__shared={[defsSegment]:defs}}return{schemas}}let ctx=initializeContext({...params,processors:allProcessors});return process2(input,ctx),extractDefs(ctx,input),finalize(ctx,input)}var formatMap,stringProcessor=(schema,ctx,_json,_params)=>{let json=_json;json.type="string";let{minimum,maximum,format,patterns,contentEncoding}=schema._zod.bag;if(typeof minimum==="number")json.minLength=minimum;if(typeof maximum==="number")json.maxLength=maximum;if(format){if(json.format=formatMap[format]??format,json.format==="")delete json.format;if(format==="time")delete json.format}if(contentEncoding)json.contentEncoding=contentEncoding;if(patterns&&patterns.size>0){let regexes=[...patterns];if(regexes.length===1)json.pattern=regexes[0].source;else if(regexes.length>1)json.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)=>{let json=_json,{minimum,maximum,format,multipleOf,exclusiveMaximum,exclusiveMinimum}=schema._zod.bag;if(typeof format==="string"&&format.includes("int"))json.type="integer";else json.type="number";let exMin=typeof exclusiveMinimum==="number"&&exclusiveMinimum>=(minimum??Number.NEGATIVE_INFINITY),exMax=typeof exclusiveMaximum==="number"&&exclusiveMaximum<=(maximum??Number.POSITIVE_INFINITY),legacy=ctx.target==="draft-04"||ctx.target==="openapi-3.0";if(exMin)if(legacy)json.minimum=exclusiveMinimum,json.exclusiveMinimum=!0;else json.exclusiveMinimum=exclusiveMinimum;else if(typeof minimum==="number")json.minimum=minimum;if(exMax)if(legacy)json.maximum=exclusiveMaximum,json.exclusiveMaximum=!0;else json.exclusiveMaximum=exclusiveMaximum;else if(typeof maximum==="number")json.maximum=maximum;if(typeof multipleOf==="number")json.multipleOf=multipleOf},booleanProcessor=(_schema,_ctx,json,_params)=>{json.type="boolean"},bigintProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},symbolProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},nullProcessor=(_schema,ctx,json,_params)=>{if(ctx.target==="openapi-3.0")json.type="string",json.nullable=!0,json.enum=[null];else json.type="null"},undefinedProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},voidProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},neverProcessor=(_schema,_ctx,json,_params)=>{json.not={}},anyProcessor=(_schema,_ctx,_json,_params)=>{},unknownProcessor=(_schema,_ctx,_json,_params)=>{},dateProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},enumProcessor=(schema,_ctx,json,_params)=>{let def=schema._zod.def,values=getEnumValues(def.entries);if(values.every((v)=>typeof v==="number"))json.type="number";if(values.every((v)=>typeof v==="string"))json.type="string";json.enum=values},literalProcessor=(schema,ctx,json,_params)=>{let def=schema._zod.def,vals=[];for(let val of def.values)if(val===void 0){if(ctx.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof val==="bigint")if(ctx.unrepresentable==="throw")throw 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){let val=vals[0];if(json.type=val===null?"null":typeof val,ctx.target==="draft-04"||ctx.target==="openapi-3.0")json.enum=[val];else json.const=val}else{if(vals.every((v)=>typeof v==="number"))json.type="number";if(vals.every((v)=>typeof v==="string"))json.type="string";if(vals.every((v)=>typeof v==="boolean"))json.type="boolean";if(vals.every((v)=>v===null))json.type="null";json.enum=vals}},nanProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},templateLiteralProcessor=(schema,_ctx,json,_params)=>{let _json=json,pattern=schema._zod.pattern;if(!pattern)throw Error("Pattern not found in template literal");_json.type="string",_json.pattern=pattern.source},fileProcessor=(schema,_ctx,json,_params)=>{let _json=json,file={type:"string",format:"binary",contentEncoding:"binary"},{minimum,maximum,mime}=schema._zod.bag;if(minimum!==void 0)file.minLength=minimum;if(maximum!==void 0)file.maxLength=maximum;if(mime)if(mime.length===1)file.contentMediaType=mime[0],Object.assign(_json,file);else Object.assign(_json,file),_json.anyOf=mime.map((m)=>({contentMediaType:m}));else Object.assign(_json,file)},successProcessor=(_schema,_ctx,json,_params)=>{json.type="boolean"},customProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},functionProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},transformProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},mapProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},setProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},arrayProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def,{minimum,maximum}=schema._zod.bag;if(typeof minimum==="number")json.minItems=minimum;if(typeof maximum==="number")json.maxItems=maximum;json.type="array",json.items=process2(def.element,ctx,{...params,path:[...params.path,"items"]})},objectProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="object",json.properties={};let shape=def.shape;for(let key in shape)json.properties[key]=process2(shape[key],ctx,{...params,path:[...params.path,"properties",key]});let allKeys=new Set(Object.keys(shape)),requiredKeys=new Set([...allKeys].filter((key)=>{let v=def.shape[key]._zod;if(ctx.io==="input")return v.optin===void 0;else return v.optout===void 0}));if(requiredKeys.size>0)json.required=Array.from(requiredKeys);if(def.catchall?._zod.def.type==="never")json.additionalProperties=!1;else if(!def.catchall){if(ctx.io==="output")json.additionalProperties=!1}else if(def.catchall)json.additionalProperties=process2(def.catchall,ctx,{...params,path:[...params.path,"additionalProperties"]})},unionProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,isExclusive=def.inclusive===!1,options=def.options.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,isExclusive?"oneOf":"anyOf",i]}));if(isExclusive)json.oneOf=options;else json.anyOf=options},intersectionProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,a=process2(def.left,ctx,{...params,path:[...params.path,"allOf",0]}),b=process2(def.right,ctx,{...params,path:[...params.path,"allOf",1]}),isSimpleIntersection=(val)=>("allOf"in val)&&Object.keys(val).length===1,allOf=[...isSimpleIntersection(a)?a.allOf:[a],...isSimpleIntersection(b)?b.allOf:[b]];json.allOf=allOf},tupleProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="array";let prefixPath=ctx.target==="draft-2020-12"?"prefixItems":"items",restPath=ctx.target==="draft-2020-12"?"items":ctx.target==="openapi-3.0"?"items":"additionalItems",prefixItems=def.items.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,prefixPath,i]})),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"){if(json.prefixItems=prefixItems,rest)json.items=rest}else if(ctx.target==="openapi-3.0"){if(json.items={anyOf:prefixItems},rest)json.items.anyOf.push(rest);if(json.minItems=prefixItems.length,!rest)json.maxItems=prefixItems.length}else if(json.items=prefixItems,rest)json.additionalItems=rest;let{minimum,maximum}=schema._zod.bag;if(typeof minimum==="number")json.minItems=minimum;if(typeof maximum==="number")json.maxItems=maximum},recordProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="object";let keyType=def.keyType,patterns=keyType._zod.bag?.patterns;if(def.mode==="loose"&&patterns&&patterns.size>0){let valueSchema=process2(def.valueType,ctx,{...params,path:[...params.path,"patternProperties","*"]});json.patternProperties={};for(let pattern of patterns)json.patternProperties[pattern.source]=valueSchema}else{if(ctx.target==="draft-07"||ctx.target==="draft-2020-12")json.propertyNames=process2(def.keyType,ctx,{...params,path:[...params.path,"propertyNames"]});json.additionalProperties=process2(def.valueType,ctx,{...params,path:[...params.path,"additionalProperties"]})}let keyValues=keyType._zod.values;if(keyValues){let validKeyValues=[...keyValues].filter((v)=>typeof v==="string"||typeof v==="number");if(validKeyValues.length>0)json.required=validKeyValues}},nullableProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,inner=process2(def.innerType,ctx,params),seen=ctx.seen.get(schema);if(ctx.target==="openapi-3.0")seen.ref=def.innerType,json.nullable=!0;else json.anyOf=[inner,{type:"null"}]},nonoptionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},defaultProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json.default=JSON.parse(JSON.stringify(def.defaultValue))},prefaultProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);if(seen.ref=def.innerType,ctx.io==="input")json._prefault=JSON.parse(JSON.stringify(def.defaultValue))},catchProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType;let catchValue;try{catchValue=def.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}json.default=catchValue},pipeProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def,inIsTransform=def.in._zod.traits.has("$ZodTransform"),innerType=ctx.io==="input"?inIsTransform?def.out:def.in:def.out;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},readonlyProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json.readOnly=!0},promiseProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},optionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},lazyProcessor=(schema,ctx,_json,params)=>{let innerType=schema._zod.innerType;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},allProcessors;var init_json_schema_processors=__esm(()=>{init_to_json_schema();init_util();formatMap={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},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}});class JSONSchemaGenerator{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);let result=finalize(this.ctx,schema),{"~standard":_,...plainResult}=result;return plainResult}}var init_json_schema_generator=__esm(()=>{init_json_schema_processors();init_to_json_schema()});var exports_json_schema={};var init_json_schema=()=>{};var exports_core2={};__export(exports_core2,{version:()=>version,util:()=>exports_util,treeifyError:()=>treeifyError,toJSONSchema:()=>toJSONSchema,toDotPath:()=>toDotPath,safeParseAsync:()=>safeParseAsync,safeParse:()=>safeParse,safeEncodeAsync:()=>safeEncodeAsync,safeEncode:()=>safeEncode,safeDecodeAsync:()=>safeDecodeAsync,safeDecode:()=>safeDecode,registry:()=>registry,regexes:()=>exports_regexes,process:()=>process2,prettifyError:()=>prettifyError,parseAsync:()=>parseAsync,parse:()=>parse,meta:()=>meta,locales:()=>exports_locales,isValidJWT:()=>isValidJWT,isValidBase64URL:()=>isValidBase64URL,isValidBase64:()=>isValidBase64,initializeContext:()=>initializeContext,globalRegistry:()=>globalRegistry,globalConfig:()=>globalConfig,formatError:()=>formatError,flattenError:()=>flattenError,finalize:()=>finalize,extractDefs:()=>extractDefs,encodeAsync:()=>encodeAsync,encode:()=>encode,describe:()=>describe,decodeAsync:()=>decodeAsync,decode:()=>decode,createToJSONSchemaMethod:()=>createToJSONSchemaMethod,createStandardJSONSchemaMethod:()=>createStandardJSONSchemaMethod,config:()=>config,clone:()=>clone,_xor:()=>_xor,_xid:()=>_xid,_void:()=>_void,_uuidv7:()=>_uuidv7,_uuidv6:()=>_uuidv6,_uuidv4:()=>_uuidv4,_uuid:()=>_uuid,_url:()=>_url,_uppercase:()=>_uppercase,_unknown:()=>_unknown,_union:()=>_union,_undefined:()=>_undefined2,_ulid:()=>_ulid,_uint64:()=>_uint64,_uint32:()=>_uint32,_tuple:()=>_tuple,_trim:()=>_trim,_transform:()=>_transform,_toUpperCase:()=>_toUpperCase,_toLowerCase:()=>_toLowerCase,_templateLiteral:()=>_templateLiteral,_symbol:()=>_symbol,_superRefine:()=>_superRefine,_success:()=>_success,_stringbool:()=>_stringbool,_stringFormat:()=>_stringFormat,_string:()=>_string,_startsWith:()=>_startsWith,_slugify:()=>_slugify,_size:()=>_size,_set:()=>_set,_safeParseAsync:()=>_safeParseAsync,_safeParse:()=>_safeParse,_safeEncodeAsync:()=>_safeEncodeAsync,_safeEncode:()=>_safeEncode,_safeDecodeAsync:()=>_safeDecodeAsync,_safeDecode:()=>_safeDecode,_regex:()=>_regex,_refine:()=>_refine,_record:()=>_record,_readonly:()=>_readonly,_property:()=>_property,_promise:()=>_promise,_positive:()=>_positive,_pipe:()=>_pipe,_parseAsync:()=>_parseAsync,_parse:()=>_parse,_overwrite:()=>_overwrite,_optional:()=>_optional,_number:()=>_number,_nullable:()=>_nullable,_null:()=>_null2,_normalize:()=>_normalize,_nonpositive:()=>_nonpositive,_nonoptional:()=>_nonoptional,_nonnegative:()=>_nonnegative,_never:()=>_never,_negative:()=>_negative,_nativeEnum:()=>_nativeEnum,_nanoid:()=>_nanoid,_nan:()=>_nan,_multipleOf:()=>_multipleOf,_minSize:()=>_minSize,_minLength:()=>_minLength,_min:()=>_gte,_mime:()=>_mime,_maxSize:()=>_maxSize,_maxLength:()=>_maxLength,_max:()=>_lte,_map:()=>_map,_mac:()=>_mac,_lte:()=>_lte,_lt:()=>_lt,_lowercase:()=>_lowercase,_literal:()=>_literal,_length:()=>_length,_lazy:()=>_lazy,_ksuid:()=>_ksuid,_jwt:()=>_jwt,_isoTime:()=>_isoTime,_isoDuration:()=>_isoDuration,_isoDateTime:()=>_isoDateTime,_isoDate:()=>_isoDate,_ipv6:()=>_ipv6,_ipv4:()=>_ipv4,_intersection:()=>_intersection,_int64:()=>_int64,_int32:()=>_int32,_int:()=>_int,_includes:()=>_includes,_guid:()=>_guid,_gte:()=>_gte,_gt:()=>_gt,_float64:()=>_float64,_float32:()=>_float32,_file:()=>_file,_enum:()=>_enum,_endsWith:()=>_endsWith,_encodeAsync:()=>_encodeAsync,_encode:()=>_encode,_emoji:()=>_emoji2,_email:()=>_email,_e164:()=>_e164,_discriminatedUnion:()=>_discriminatedUnion,_default:()=>_default,_decodeAsync:()=>_decodeAsync,_decode:()=>_decode,_date:()=>_date,_custom:()=>_custom,_cuid2:()=>_cuid2,_cuid:()=>_cuid,_coercedString:()=>_coercedString,_coercedNumber:()=>_coercedNumber,_coercedDate:()=>_coercedDate,_coercedBoolean:()=>_coercedBoolean,_coercedBigint:()=>_coercedBigint,_cidrv6:()=>_cidrv6,_cidrv4:()=>_cidrv4,_check:()=>_check,_catch:()=>_catch,_boolean:()=>_boolean,_bigint:()=>_bigint,_base64url:()=>_base64url,_base64:()=>_base64,_array:()=>_array,_any:()=>_any,TimePrecision:()=>TimePrecision,NEVER:()=>NEVER,JSONSchemaGenerator:()=>JSONSchemaGenerator,JSONSchema:()=>exports_json_schema,Doc:()=>Doc,$output:()=>$output,$input:()=>$input,$constructor:()=>$constructor,$brand:()=>$brand,$ZodXor:()=>$ZodXor,$ZodXID:()=>$ZodXID,$ZodVoid:()=>$ZodVoid,$ZodUnknown:()=>$ZodUnknown,$ZodUnion:()=>$ZodUnion,$ZodUndefined:()=>$ZodUndefined,$ZodUUID:()=>$ZodUUID,$ZodURL:()=>$ZodURL,$ZodULID:()=>$ZodULID,$ZodType:()=>$ZodType,$ZodTuple:()=>$ZodTuple,$ZodTransform:()=>$ZodTransform,$ZodTemplateLiteral:()=>$ZodTemplateLiteral,$ZodSymbol:()=>$ZodSymbol,$ZodSuccess:()=>$ZodSuccess,$ZodStringFormat:()=>$ZodStringFormat,$ZodString:()=>$ZodString,$ZodSet:()=>$ZodSet,$ZodRegistry:()=>$ZodRegistry,$ZodRecord:()=>$ZodRecord,$ZodRealError:()=>$ZodRealError,$ZodReadonly:()=>$ZodReadonly,$ZodPromise:()=>$ZodPromise,$ZodPreprocess:()=>$ZodPreprocess,$ZodPrefault:()=>$ZodPrefault,$ZodPipe:()=>$ZodPipe,$ZodOptional:()=>$ZodOptional,$ZodObjectJIT:()=>$ZodObjectJIT,$ZodObject:()=>$ZodObject,$ZodNumberFormat:()=>$ZodNumberFormat,$ZodNumber:()=>$ZodNumber,$ZodNullable:()=>$ZodNullable,$ZodNull:()=>$ZodNull,$ZodNonOptional:()=>$ZodNonOptional,$ZodNever:()=>$ZodNever,$ZodNanoID:()=>$ZodNanoID,$ZodNaN:()=>$ZodNaN,$ZodMap:()=>$ZodMap,$ZodMAC:()=>$ZodMAC,$ZodLiteral:()=>$ZodLiteral,$ZodLazy:()=>$ZodLazy,$ZodKSUID:()=>$ZodKSUID,$ZodJWT:()=>$ZodJWT,$ZodIntersection:()=>$ZodIntersection,$ZodISOTime:()=>$ZodISOTime,$ZodISODuration:()=>$ZodISODuration,$ZodISODateTime:()=>$ZodISODateTime,$ZodISODate:()=>$ZodISODate,$ZodIPv6:()=>$ZodIPv6,$ZodIPv4:()=>$ZodIPv4,$ZodGUID:()=>$ZodGUID,$ZodFunction:()=>$ZodFunction,$ZodFile:()=>$ZodFile,$ZodExactOptional:()=>$ZodExactOptional,$ZodError:()=>$ZodError,$ZodEnum:()=>$ZodEnum,$ZodEncodeError:()=>$ZodEncodeError,$ZodEmoji:()=>$ZodEmoji,$ZodEmail:()=>$ZodEmail,$ZodE164:()=>$ZodE164,$ZodDiscriminatedUnion:()=>$ZodDiscriminatedUnion,$ZodDefault:()=>$ZodDefault,$ZodDate:()=>$ZodDate,$ZodCustomStringFormat:()=>$ZodCustomStringFormat,$ZodCustom:()=>$ZodCustom,$ZodCodec:()=>$ZodCodec,$ZodCheckUpperCase:()=>$ZodCheckUpperCase,$ZodCheckStringFormat:()=>$ZodCheckStringFormat,$ZodCheckStartsWith:()=>$ZodCheckStartsWith,$ZodCheckSizeEquals:()=>$ZodCheckSizeEquals,$ZodCheckRegex:()=>$ZodCheckRegex,$ZodCheckProperty:()=>$ZodCheckProperty,$ZodCheckOverwrite:()=>$ZodCheckOverwrite,$ZodCheckNumberFormat:()=>$ZodCheckNumberFormat,$ZodCheckMultipleOf:()=>$ZodCheckMultipleOf,$ZodCheckMinSize:()=>$ZodCheckMinSize,$ZodCheckMinLength:()=>$ZodCheckMinLength,$ZodCheckMimeType:()=>$ZodCheckMimeType,$ZodCheckMaxSize:()=>$ZodCheckMaxSize,$ZodCheckMaxLength:()=>$ZodCheckMaxLength,$ZodCheckLowerCase:()=>$ZodCheckLowerCase,$ZodCheckLessThan:()=>$ZodCheckLessThan,$ZodCheckLengthEquals:()=>$ZodCheckLengthEquals,$ZodCheckIncludes:()=>$ZodCheckIncludes,$ZodCheckGreaterThan:()=>$ZodCheckGreaterThan,$ZodCheckEndsWith:()=>$ZodCheckEndsWith,$ZodCheckBigIntFormat:()=>$ZodCheckBigIntFormat,$ZodCheck:()=>$ZodCheck,$ZodCatch:()=>$ZodCatch,$ZodCUID2:()=>$ZodCUID2,$ZodCUID:()=>$ZodCUID,$ZodCIDRv6:()=>$ZodCIDRv6,$ZodCIDRv4:()=>$ZodCIDRv4,$ZodBoolean:()=>$ZodBoolean,$ZodBigIntFormat:()=>$ZodBigIntFormat,$ZodBigInt:()=>$ZodBigInt,$ZodBase64URL:()=>$ZodBase64URL,$ZodBase64:()=>$ZodBase64,$ZodAsyncError:()=>$ZodAsyncError,$ZodArray:()=>$ZodArray,$ZodAny:()=>$ZodAny});var init_core2=__esm(()=>{init_util();init_regexes();init_locales();init_json_schema_processors();init_json_schema_generator();init_json_schema();init_core();init_parse();init_errors2();init_schemas();init_checks();init_versions();init_registries();init_api();init_to_json_schema()});var exports_checks2={};__export(exports_checks2,{uppercase:()=>_uppercase,trim:()=>_trim,toUpperCase:()=>_toUpperCase,toLowerCase:()=>_toLowerCase,startsWith:()=>_startsWith,slugify:()=>_slugify,size:()=>_size,regex:()=>_regex,property:()=>_property,positive:()=>_positive,overwrite:()=>_overwrite,normalize:()=>_normalize,nonpositive:()=>_nonpositive,nonnegative:()=>_nonnegative,negative:()=>_negative,multipleOf:()=>_multipleOf,minSize:()=>_minSize,minLength:()=>_minLength,mime:()=>_mime,maxSize:()=>_maxSize,maxLength:()=>_maxLength,lte:()=>_lte,lt:()=>_lt,lowercase:()=>_lowercase,length:()=>_length,includes:()=>_includes,gte:()=>_gte,gt:()=>_gt,endsWith:()=>_endsWith});var init_checks2=__esm(()=>{init_core2()});var exports_iso={};__export(exports_iso,{time:()=>time2,duration:()=>duration2,datetime:()=>datetime2,date:()=>date3,ZodISOTime:()=>ZodISOTime,ZodISODuration:()=>ZodISODuration,ZodISODateTime:()=>ZodISODateTime,ZodISODate:()=>ZodISODate});function datetime2(params){return _isoDateTime(ZodISODateTime,params)}function date3(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(()=>{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=(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,ZodRealError;var init_errors3=__esm(()=>{init_core2();init_core2();init_util();ZodError=$constructor("ZodError",initializer2),ZodRealError=$constructor("ZodError",initializer2,{Parent:Error})});var parse3,parseAsync2,safeParse2,safeParseAsync2,encode2,decode2,encodeAsync2,decodeAsync2,safeEncode2,safeDecode2,safeEncodeAsync2,safeDecodeAsync2;var init_parse2=__esm(()=>{init_core2();init_errors3();parse3=_parse(ZodRealError),parseAsync2=_parseAsync(ZodRealError),safeParse2=_safeParse(ZodRealError),safeParseAsync2=_safeParseAsync(ZodRealError),encode2=_encode(ZodRealError),decode2=_decode(ZodRealError),encodeAsync2=_encodeAsync(ZodRealError),decodeAsync2=_decodeAsync(ZodRealError),safeEncode2=_safeEncode(ZodRealError),safeDecode2=_safeDecode(ZodRealError),safeEncodeAsync2=_safeEncodeAsync(ZodRealError),safeDecodeAsync2=_safeDecodeAsync(ZodRealError)});var exports_schemas2={};__export(exports_schemas2,{xor:()=>xor,xid:()=>xid2,void:()=>_void2,uuidv7:()=>uuidv7,uuidv6:()=>uuidv6,uuidv4:()=>uuidv4,uuid:()=>uuid2,url:()=>url,unknown:()=>unknown,union:()=>union,undefined:()=>_undefined3,ulid:()=>ulid2,uint64:()=>uint64,uint32:()=>uint32,tuple:()=>tuple,transform:()=>transform,templateLiteral:()=>templateLiteral,symbol:()=>symbol,superRefine:()=>superRefine,success:()=>success,stringbool:()=>stringbool,stringFormat:()=>stringFormat,string:()=>string2,strictObject:()=>strictObject,set:()=>set,refine:()=>refine,record:()=>record,readonly:()=>readonly,promise:()=>promise,preprocess:()=>preprocess,prefault:()=>prefault,pipe:()=>pipe,partialRecord:()=>partialRecord,optional:()=>optional,object:()=>object2,number:()=>number2,nullish:()=>nullish2,nullable:()=>nullable,null:()=>_null3,nonoptional:()=>nonoptional,never:()=>never,nativeEnum:()=>nativeEnum,nanoid:()=>nanoid2,nan:()=>nan,meta:()=>meta2,map:()=>map,mac:()=>mac2,looseRecord:()=>looseRecord,looseObject:()=>looseObject,literal:()=>literal,lazy:()=>lazy,ksuid:()=>ksuid2,keyof:()=>keyof,jwt:()=>jwt,json:()=>json,ipv6:()=>ipv62,ipv4:()=>ipv42,invertCodec:()=>invertCodec,intersection:()=>intersection,int64:()=>int64,int32:()=>int32,int:()=>int,instanceof:()=>_instanceof,httpUrl:()=>httpUrl,hostname:()=>hostname2,hex:()=>hex2,hash:()=>hash,guid:()=>guid2,function:()=>_function,float64:()=>float64,float32:()=>float32,file:()=>file,exactOptional:()=>exactOptional,enum:()=>_enum2,emoji:()=>emoji2,email:()=>email2,e164:()=>e1642,discriminatedUnion:()=>discriminatedUnion,describe:()=>describe2,date:()=>date4,custom:()=>custom,cuid2:()=>cuid22,cuid:()=>cuid3,codec:()=>codec,cidrv6:()=>cidrv62,cidrv4:()=>cidrv42,check:()=>check,catch:()=>_catch2,boolean:()=>boolean2,bigint:()=>bigint2,base64url:()=>base64url2,base64:()=>base642,array:()=>array,any:()=>any,_function:()=>_function,_default:()=>_default2,_ZodString:()=>_ZodString,ZodXor:()=>ZodXor,ZodXID:()=>ZodXID,ZodVoid:()=>ZodVoid,ZodUnknown:()=>ZodUnknown,ZodUnion:()=>ZodUnion,ZodUndefined:()=>ZodUndefined,ZodUUID:()=>ZodUUID,ZodURL:()=>ZodURL,ZodULID:()=>ZodULID,ZodType:()=>ZodType,ZodTuple:()=>ZodTuple,ZodTransform:()=>ZodTransform,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodSymbol:()=>ZodSymbol,ZodSuccess:()=>ZodSuccess,ZodStringFormat:()=>ZodStringFormat,ZodString:()=>ZodString,ZodSet:()=>ZodSet,ZodRecord:()=>ZodRecord,ZodReadonly:()=>ZodReadonly,ZodPromise:()=>ZodPromise,ZodPreprocess:()=>ZodPreprocess,ZodPrefault:()=>ZodPrefault,ZodPipe:()=>ZodPipe,ZodOptional:()=>ZodOptional,ZodObject:()=>ZodObject,ZodNumberFormat:()=>ZodNumberFormat,ZodNumber:()=>ZodNumber,ZodNullable:()=>ZodNullable,ZodNull:()=>ZodNull,ZodNonOptional:()=>ZodNonOptional,ZodNever:()=>ZodNever,ZodNanoID:()=>ZodNanoID,ZodNaN:()=>ZodNaN,ZodMap:()=>ZodMap,ZodMAC:()=>ZodMAC,ZodLiteral:()=>ZodLiteral,ZodLazy:()=>ZodLazy,ZodKSUID:()=>ZodKSUID,ZodJWT:()=>ZodJWT,ZodIntersection:()=>ZodIntersection,ZodIPv6:()=>ZodIPv6,ZodIPv4:()=>ZodIPv4,ZodGUID:()=>ZodGUID,ZodFunction:()=>ZodFunction,ZodFile:()=>ZodFile,ZodExactOptional:()=>ZodExactOptional,ZodEnum:()=>ZodEnum,ZodEmoji:()=>ZodEmoji,ZodEmail:()=>ZodEmail,ZodE164:()=>ZodE164,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodDefault:()=>ZodDefault,ZodDate:()=>ZodDate,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodCustom:()=>ZodCustom,ZodCodec:()=>ZodCodec,ZodCatch:()=>ZodCatch,ZodCUID2:()=>ZodCUID2,ZodCUID:()=>ZodCUID,ZodCIDRv6:()=>ZodCIDRv6,ZodCIDRv4:()=>ZodCIDRv4,ZodBoolean:()=>ZodBoolean,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBigInt:()=>ZodBigInt,ZodBase64URL:()=>ZodBase64URL,ZodBase64:()=>ZodBase64,ZodArray:()=>ZodArray,ZodAny:()=>ZodAny});function _installLazyMethods(inst,group,methods){let proto=Object.getPrototypeOf(inst),installed=_installedGroups.get(proto);if(!installed)installed=new Set,_installedGroups.set(proto,installed);if(installed.has(group))return;installed.add(group);for(let key in methods){let fn=methods[key];Object.defineProperty(proto,key,{configurable:!0,enumerable:!1,get(){let bound=fn.bind(this);return Object.defineProperty(this,key,{configurable:!0,writable:!0,enumerable:!0,value:bound}),bound},set(v){Object.defineProperty(this,key,{configurable:!0,writable:!0,enumerable:!0,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:exports_regexes.httpProtocol,hostname:exports_regexes.domain,...exports_util.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 base64url2(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 hostname2(_params){return _stringFormat(ZodCustomStringFormat,"hostname",exports_regexes.hostname,_params)}function hex2(_params){return _stringFormat(ZodCustomStringFormat,"hex",exports_regexes.hex,_params)}function hash(alg,params){let enc=params?.enc??"hex",format=`${alg}_${enc}`,regex=exports_regexes[format];if(!regex)throw 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 date4(params){return _date(ZodDate,params)}function array(element,params){return _array(ZodArray,element,params)}function keyof(schema){let shape=schema._zod.def.shape;return _enum2(Object.keys(shape))}function object2(shape,params){let def={type:"object",shape:shape??{},...exports_util.normalizeParams(params)};return new ZodObject(def)}function strictObject(shape,params){return new ZodObject({type:"object",shape,catchall:never(),...exports_util.normalizeParams(params)})}function looseObject(shape,params){return new ZodObject({type:"object",shape,catchall:unknown(),...exports_util.normalizeParams(params)})}function union(options,params){return new ZodUnion({type:"union",options,...exports_util.normalizeParams(params)})}function xor(options,params){return new ZodXor({type:"union",options,inclusive:!1,...exports_util.normalizeParams(params)})}function discriminatedUnion(discriminator,options,params){return new ZodDiscriminatedUnion({type:"union",options,discriminator,...exports_util.normalizeParams(params)})}function intersection(left,right){return new ZodIntersection({type:"intersection",left,right})}function tuple(items,_paramsOrRest,_params){let hasRest=_paramsOrRest instanceof $ZodType,params=hasRest?_params:_paramsOrRest;return new ZodTuple({type:"tuple",items,rest:hasRest?_paramsOrRest:null,...exports_util.normalizeParams(params)})}function record(keyType,valueType,params){if(!valueType||!valueType._zod)return new ZodRecord({type:"record",keyType:string2(),valueType:keyType,...exports_util.normalizeParams(valueType)});return new ZodRecord({type:"record",keyType,valueType,...exports_util.normalizeParams(params)})}function partialRecord(keyType,valueType,params){let k=clone(keyType);return k._zod.values=void 0,new ZodRecord({type:"record",keyType:k,valueType,...exports_util.normalizeParams(params)})}function looseRecord(keyType,valueType,params){return new ZodRecord({type:"record",keyType,valueType,mode:"loose",...exports_util.normalizeParams(params)})}function map(keyType,valueType,params){return new ZodMap({type:"map",keyType,valueType,...exports_util.normalizeParams(params)})}function set(valueType,params){return new ZodSet({type:"set",valueType,...exports_util.normalizeParams(params)})}function _enum2(values,params){let entries=Array.isArray(values)?Object.fromEntries(values.map((v)=>[v,v])):values;return new ZodEnum({type:"enum",entries,...exports_util.normalizeParams(params)})}function nativeEnum(entries,params){return new ZodEnum({type:"enum",entries,...exports_util.normalizeParams(params)})}function literal(value,params){return new ZodLiteral({type:"literal",values:Array.isArray(value)?value:[value],...exports_util.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():exports_util.shallowClone(defaultValue)}})}function prefault(innerType,defaultValue){return new ZodPrefault({type:"prefault",innerType,get defaultValue(){return typeof defaultValue==="function"?defaultValue():exports_util.shallowClone(defaultValue)}})}function nonoptional(innerType,params){return new ZodNonOptional({type:"nonoptional",innerType,...exports_util.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){let 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,...exports_util.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){let ch=new $ZodCheck({check:"custom"});return ch._zod.check=fn,ch}function custom(fn,_params){return _custom(ZodCustom,fn??(()=>!0),_params)}function refine(fn,_params={}){return _refine(ZodCustom,fn,_params)}function superRefine(fn,params){return _superRefine(fn,params)}function _instanceof(cls,params={}){let inst=new ZodCustom({type:"custom",check:"custom",fn:(data)=>data instanceof cls,abort:!0,...exports_util.normalizeParams(params)});return 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??[]]})},inst}function json(params){let jsonSchema=lazy(()=>{return union([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=(...args)=>_stringbool({Codec:ZodCodec,Boolean:ZodBoolean,String:ZodString},...args);var init_schemas2=__esm(()=>{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)=>{return $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)=>parse3(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)=>encode2(inst,data,params),inst.decode=(data,params)=>decode2(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){let def2=this.def;return this.clone(exports_util.mergeDefs(def2,{checks:[...def2.checks??[],...chks.map((ch)=>typeof ch==="function"?{_zod:{check:ch,def:{check:"custom"},onattach:[]}}:ch)]}),{parent:!0})},with(...chks){return this.check(...chks)},clone(def2,params){return clone(this,def2,params)},brand(){return this},register(reg,meta2){return reg.add(this,meta2),this},refine(check,params){return this.check(refine(check,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 union([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(target){return pipe(this,target)},readonly(){return readonly(this)},describe(description){let cl=this.clone();return globalRegistry.add(cl,{description}),cl},meta(...args){if(args.length===0)return globalRegistry.get(this);let cl=this.clone();return globalRegistry.add(cl,args[0]),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:!0}),inst}),_ZodString=$constructor("_ZodString",(inst,def)=>{$ZodString.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>stringProcessor(inst,ctx,json,params);let 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(date3(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,json,params)=>numberProcessor(inst,ctx,json,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}});let 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??0.5),inst.isFinite=!0,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,json,params)=>booleanProcessor(inst,ctx,json,params)});ZodBigInt=$constructor("ZodBigInt",(inst,def)=>{$ZodBigInt.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>bigintProcessor(inst,ctx,json,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));let 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,json,params)=>symbolProcessor(inst,ctx,json,params)});ZodUndefined=$constructor("ZodUndefined",(inst,def)=>{$ZodUndefined.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>undefinedProcessor(inst,ctx,json,params)});ZodNull=$constructor("ZodNull",(inst,def)=>{$ZodNull.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nullProcessor(inst,ctx,json,params)});ZodAny=$constructor("ZodAny",(inst,def)=>{$ZodAny.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>anyProcessor(inst,ctx,json,params)});ZodUnknown=$constructor("ZodUnknown",(inst,def)=>{$ZodUnknown.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unknownProcessor(inst,ctx,json,params)});ZodNever=$constructor("ZodNever",(inst,def)=>{$ZodNever.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>neverProcessor(inst,ctx,json,params)});ZodVoid=$constructor("ZodVoid",(inst,def)=>{$ZodVoid.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>voidProcessor(inst,ctx,json,params)});ZodDate=$constructor("ZodDate",(inst,def)=>{$ZodDate.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>dateProcessor(inst,ctx,json,params),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params));let 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,json,params)=>arrayProcessor(inst,ctx,json,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,json,params)=>objectProcessor(inst,ctx,json,params),exports_util.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 exports_util.extend(this,incoming)},safeExtend(incoming){return exports_util.safeExtend(this,incoming)},merge(other){return exports_util.merge(this,other)},pick(mask){return exports_util.pick(this,mask)},omit(mask){return exports_util.omit(this,mask)},partial(...args){return exports_util.partial(ZodOptional,this,args[0])},required(...args){return exports_util.required(ZodNonOptional,this,args[0])}})});ZodUnion=$constructor("ZodUnion",(inst,def)=>{$ZodUnion.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unionProcessor(inst,ctx,json,params),inst.options=def.options});ZodXor=$constructor("ZodXor",(inst,def)=>{ZodUnion.init(inst,def),$ZodXor.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unionProcessor(inst,ctx,json,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,json,params)=>intersectionProcessor(inst,ctx,json,params)});ZodTuple=$constructor("ZodTuple",(inst,def)=>{$ZodTuple.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>tupleProcessor(inst,ctx,json,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,json,params)=>recordProcessor(inst,ctx,json,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,json,params)=>mapProcessor(inst,ctx,json,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,json,params)=>setProcessor(inst,ctx,json,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,json,params)=>enumProcessor(inst,ctx,json,params),inst.enum=def.entries,inst.options=Object.values(def.entries);let keys=new Set(Object.keys(def.entries));inst.extract=(values,params)=>{let newEntries={};for(let value of values)if(keys.has(value))newEntries[value]=def.entries[value];else throw Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...exports_util.normalizeParams(params),entries:newEntries})},inst.exclude=(values,params)=>{let newEntries={...def.entries};for(let value of values)if(keys.has(value))delete newEntries[value];else throw Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...exports_util.normalizeParams(params),entries:newEntries})}});ZodLiteral=$constructor("ZodLiteral",(inst,def)=>{$ZodLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>literalProcessor(inst,ctx,json,params),inst.values=new Set(def.values),Object.defineProperty(inst,"value",{get(){if(def.values.length>1)throw 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,json,params)=>fileProcessor(inst,ctx,json,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,json,params)=>transformProcessor(inst,ctx,json,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(exports_util.issue(issue2,payload.value,def));else{let _issue=issue2;if(_issue.fatal)_issue.continue=!1;_issue.code??(_issue.code="custom"),_issue.input??(_issue.input=payload.value),_issue.inst??(_issue.inst=inst),payload.issues.push(exports_util.issue(_issue))}};let output2=def.transform(payload.value,payload);if(output2 instanceof Promise)return output2.then((output3)=>{return payload.value=output3,payload.fallback=!0,payload});return payload.value=output2,payload.fallback=!0,payload}});ZodOptional=$constructor("ZodOptional",(inst,def)=>{$ZodOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>optionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodExactOptional=$constructor("ZodExactOptional",(inst,def)=>{$ZodExactOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>optionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodNullable=$constructor("ZodNullable",(inst,def)=>{$ZodNullable.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nullableProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodDefault=$constructor("ZodDefault",(inst,def)=>{$ZodDefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>defaultProcessor(inst,ctx,json,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,json,params)=>prefaultProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodNonOptional=$constructor("ZodNonOptional",(inst,def)=>{$ZodNonOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nonoptionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodSuccess=$constructor("ZodSuccess",(inst,def)=>{$ZodSuccess.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>successProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodCatch=$constructor("ZodCatch",(inst,def)=>{$ZodCatch.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>catchProcessor(inst,ctx,json,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,json,params)=>nanProcessor(inst,ctx,json,params)});ZodPipe=$constructor("ZodPipe",(inst,def)=>{$ZodPipe.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>pipeProcessor(inst,ctx,json,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,json,params)=>readonlyProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodTemplateLiteral=$constructor("ZodTemplateLiteral",(inst,def)=>{$ZodTemplateLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>templateLiteralProcessor(inst,ctx,json,params)});ZodLazy=$constructor("ZodLazy",(inst,def)=>{$ZodLazy.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>lazyProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.getter()});ZodPromise=$constructor("ZodPromise",(inst,def)=>{$ZodPromise.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>promiseProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});ZodFunction=$constructor("ZodFunction",(inst,def)=>{$ZodFunction.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>functionProcessor(inst,ctx,json,params)});ZodCustom=$constructor("ZodCustom",(inst,def)=>{$ZodCustom.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>customProcessor(inst,ctx,json,params)});describe2=describe,meta2=meta});function setErrorMap(map2){config({customError:map2})}function getErrorMap(){return config().customError}var ZodIssueCode,ZodFirstPartyTypeKind;var init_compat=__esm(()=>{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){let $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 Error("External $ref is not supported, only local refs (#/...) are allowed");let path=ref.slice(1).split("/").filter(Boolean);if(path.length===0)return ctx.rootSchema;let defsKey=ctx.version==="draft-2020-12"?"$defs":"definitions";if(path[0]===defsKey){let key=path[1];if(!key||!ctx.defs[key])throw Error(`Reference not found: ${ref}`);return ctx.defs[key]}throw 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 Error("not is not supported in Zod (except { not: {} } for never)")}if(schema.unevaluatedItems!==void 0)throw Error("unevaluatedItems is not supported");if(schema.unevaluatedProperties!==void 0)throw Error("unevaluatedProperties is not supported");if(schema.if!==void 0||schema.then!==void 0||schema.else!==void 0)throw Error("Conditional schemas (if/then/else) are not supported");if(schema.dependentSchemas!==void 0||schema.dependentRequired!==void 0)throw Error("dependentSchemas and dependentRequired are not supported");if(schema.$ref){let 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 Error(`Circular reference not resolved: ${refPath}`);return ctx.refs.get(refPath)});ctx.processing.add(refPath);let resolved=resolveRef(refPath,ctx),zodSchema2=convertSchema(resolved,ctx);return ctx.refs.set(refPath,zodSchema2),ctx.processing.delete(refPath),zodSchema2}if(schema.enum!==void 0){let enumValues=schema.enum;if(ctx.version==="openapi-3.0"&&schema.nullable===!0&&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);let 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);let type=schema.type;if(Array.isArray(type)){let typeSchemas=type.map((t)=>{let 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){let 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===!0&&typeof schema.minimum==="number")numberSchema=numberSchema.gt(schema.minimum);if(typeof schema.exclusiveMaximum==="number")numberSchema=numberSchema.lt(schema.exclusiveMaximum);else if(schema.exclusiveMaximum===!0&&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":{let shape={},properties=schema.properties||{},requiredSet=new Set(schema.required||[]);for(let[key,propSchema]of Object.entries(properties)){let propZodSchema=convertSchema(propSchema,ctx);shape[key]=requiredSet.has(key)?propZodSchema:propZodSchema.optional()}if(schema.propertyNames){let keySchema=convertSchema(schema.propertyNames,ctx),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}let objectSchema2=z.object(shape).passthrough(),recordSchema=z.looseRecord(keySchema,valueSchema);zodSchema=z.intersection(objectSchema2,recordSchema);break}if(schema.patternProperties){let patternProps=schema.patternProperties,patternKeys=Object.keys(patternProps),looseRecords=[];for(let pattern of patternKeys){let patternValue=convertSchema(patternProps[pattern],ctx),keySchema=z.string().regex(new RegExp(pattern));looseRecords.push(z.looseRecord(keySchema,patternValue))}let schemasToIntersect=[];if(Object.keys(shape).length>0)schemasToIntersect.push(z.object(shape).passthrough());if(schemasToIntersect.push(...looseRecords),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}let objectSchema=z.object(shape);if(schema.additionalProperties===!1)zodSchema=objectSchema.strict();else if(typeof schema.additionalProperties==="object")zodSchema=objectSchema.catchall(convertSchema(schema.additionalProperties,ctx));else zodSchema=objectSchema.passthrough();break}case"array":{let{prefixItems,items}=schema;if(prefixItems&&Array.isArray(prefixItems)){let tupleItems=prefixItems.map((item)=>convertSchema(item,ctx)),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)){let tupleItems=items.map((item)=>convertSchema(item,ctx)),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){let element=convertSchema(items,ctx),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 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),hasExplicitType=schema.type||schema.enum!==void 0||schema.const!==void 0;if(schema.anyOf&&Array.isArray(schema.anyOf)){let options=schema.anyOf.map((s)=>convertSchema(s,ctx)),anyOfUnion=z.union(options);baseSchema=hasExplicitType?z.intersection(baseSchema,anyOfUnion):anyOfUnion}if(schema.oneOf&&Array.isArray(schema.oneOf)){let options=schema.oneOf.map((s)=>convertSchema(s,ctx)),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),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===!0&&ctx.version==="openapi-3.0")baseSchema=z.nullable(baseSchema);if(schema.readOnly===!0)baseSchema=z.readonly(baseSchema);if(schema.default!==void 0)baseSchema=baseSchema.default(schema.default);let extraMeta={},coreMetadataKeys=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let key of coreMetadataKeys)if(key in schema)extraMeta[key]=schema[key];let contentMetadataKeys=["contentEncoding","contentMediaType","contentSchema"];for(let key of contentMetadataKeys)if(key in schema)extraMeta[key]=schema[key];for(let 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 Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let version2=detectVersion(normalized,params?.defaultTarget),defs=normalized.$defs||normalized.definitions||{},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(()=>{init_registries();init_checks2();init_iso();init_schemas2();z={...exports_schemas2,...exports_checks2,iso:exports_iso},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 exports_coerce={};__export(exports_coerce,{string:()=>string3,number:()=>number3,date:()=>date5,boolean:()=>boolean3,bigint:()=>bigint3});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 date5(params){return _coercedDate(ZodDate,params)}var init_coerce=__esm(()=>{init_core2();init_schemas2()});var exports_external={};__export(exports_external,{xor:()=>xor,xid:()=>xid2,void:()=>_void2,uuidv7:()=>uuidv7,uuidv6:()=>uuidv6,uuidv4:()=>uuidv4,uuid:()=>uuid2,util:()=>exports_util,url:()=>url,uppercase:()=>_uppercase,unknown:()=>unknown,union:()=>union,undefined:()=>_undefined3,ulid:()=>ulid2,uint64:()=>uint64,uint32:()=>uint32,tuple:()=>tuple,trim:()=>_trim,treeifyError:()=>treeifyError,transform:()=>transform,toUpperCase:()=>_toUpperCase,toLowerCase:()=>_toLowerCase,toJSONSchema:()=>toJSONSchema,templateLiteral:()=>templateLiteral,symbol:()=>symbol,superRefine:()=>superRefine,success:()=>success,stringbool:()=>stringbool,stringFormat:()=>stringFormat,string:()=>string2,strictObject:()=>strictObject,startsWith:()=>_startsWith,slugify:()=>_slugify,size:()=>_size,setErrorMap:()=>setErrorMap,set:()=>set,safeParseAsync:()=>safeParseAsync2,safeParse:()=>safeParse2,safeEncodeAsync:()=>safeEncodeAsync2,safeEncode:()=>safeEncode2,safeDecodeAsync:()=>safeDecodeAsync2,safeDecode:()=>safeDecode2,registry:()=>registry,regexes:()=>exports_regexes,regex:()=>_regex,refine:()=>refine,record:()=>record,readonly:()=>readonly,property:()=>_property,promise:()=>promise,prettifyError:()=>prettifyError,preprocess:()=>preprocess,prefault:()=>prefault,positive:()=>_positive,pipe:()=>pipe,partialRecord:()=>partialRecord,parseAsync:()=>parseAsync2,parse:()=>parse3,overwrite:()=>_overwrite,optional:()=>optional,object:()=>object2,number:()=>number2,nullish:()=>nullish2,nullable:()=>nullable,null:()=>_null3,normalize:()=>_normalize,nonpositive:()=>_nonpositive,nonoptional:()=>nonoptional,nonnegative:()=>_nonnegative,never:()=>never,negative:()=>_negative,nativeEnum:()=>nativeEnum,nanoid:()=>nanoid2,nan:()=>nan,multipleOf:()=>_multipleOf,minSize:()=>_minSize,minLength:()=>_minLength,mime:()=>_mime,meta:()=>meta2,maxSize:()=>_maxSize,maxLength:()=>_maxLength,map:()=>map,mac:()=>mac2,lte:()=>_lte,lt:()=>_lt,lowercase:()=>_lowercase,looseRecord:()=>looseRecord,looseObject:()=>looseObject,locales:()=>exports_locales,literal:()=>literal,length:()=>_length,lazy:()=>lazy,ksuid:()=>ksuid2,keyof:()=>keyof,jwt:()=>jwt,json:()=>json,iso:()=>exports_iso,ipv6:()=>ipv62,ipv4:()=>ipv42,invertCodec:()=>invertCodec,intersection:()=>intersection,int64:()=>int64,int32:()=>int32,int:()=>int,instanceof:()=>_instanceof,includes:()=>_includes,httpUrl:()=>httpUrl,hostname:()=>hostname2,hex:()=>hex2,hash:()=>hash,guid:()=>guid2,gte:()=>_gte,gt:()=>_gt,globalRegistry:()=>globalRegistry,getErrorMap:()=>getErrorMap,function:()=>_function,fromJSONSchema:()=>fromJSONSchema,formatError:()=>formatError,float64:()=>float64,float32:()=>float32,flattenError:()=>flattenError,file:()=>file,exactOptional:()=>exactOptional,enum:()=>_enum2,endsWith:()=>_endsWith,encodeAsync:()=>encodeAsync2,encode:()=>encode2,emoji:()=>emoji2,email:()=>email2,e164:()=>e1642,discriminatedUnion:()=>discriminatedUnion,describe:()=>describe2,decodeAsync:()=>decodeAsync2,decode:()=>decode2,date:()=>date4,custom:()=>custom,cuid2:()=>cuid22,cuid:()=>cuid3,core:()=>exports_core2,config:()=>config,coerce:()=>exports_coerce,codec:()=>codec,clone:()=>clone,cidrv6:()=>cidrv62,cidrv4:()=>cidrv42,check:()=>check,catch:()=>_catch2,boolean:()=>boolean2,bigint:()=>bigint2,base64url:()=>base64url2,base64:()=>base642,array:()=>array,any:()=>any,_function:()=>_function,_default:()=>_default2,_ZodString:()=>_ZodString,ZodXor:()=>ZodXor,ZodXID:()=>ZodXID,ZodVoid:()=>ZodVoid,ZodUnknown:()=>ZodUnknown,ZodUnion:()=>ZodUnion,ZodUndefined:()=>ZodUndefined,ZodUUID:()=>ZodUUID,ZodURL:()=>ZodURL,ZodULID:()=>ZodULID,ZodType:()=>ZodType,ZodTuple:()=>ZodTuple,ZodTransform:()=>ZodTransform,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodSymbol:()=>ZodSymbol,ZodSuccess:()=>ZodSuccess,ZodStringFormat:()=>ZodStringFormat,ZodString:()=>ZodString,ZodSet:()=>ZodSet,ZodRecord:()=>ZodRecord,ZodRealError:()=>ZodRealError,ZodReadonly:()=>ZodReadonly,ZodPromise:()=>ZodPromise,ZodPreprocess:()=>ZodPreprocess,ZodPrefault:()=>ZodPrefault,ZodPipe:()=>ZodPipe,ZodOptional:()=>ZodOptional,ZodObject:()=>ZodObject,ZodNumberFormat:()=>ZodNumberFormat,ZodNumber:()=>ZodNumber,ZodNullable:()=>ZodNullable,ZodNull:()=>ZodNull,ZodNonOptional:()=>ZodNonOptional,ZodNever:()=>ZodNever,ZodNanoID:()=>ZodNanoID,ZodNaN:()=>ZodNaN,ZodMap:()=>ZodMap,ZodMAC:()=>ZodMAC,ZodLiteral:()=>ZodLiteral,ZodLazy:()=>ZodLazy,ZodKSUID:()=>ZodKSUID,ZodJWT:()=>ZodJWT,ZodIssueCode:()=>ZodIssueCode,ZodIntersection:()=>ZodIntersection,ZodISOTime:()=>ZodISOTime,ZodISODuration:()=>ZodISODuration,ZodISODateTime:()=>ZodISODateTime,ZodISODate:()=>ZodISODate,ZodIPv6:()=>ZodIPv6,ZodIPv4:()=>ZodIPv4,ZodGUID:()=>ZodGUID,ZodFunction:()=>ZodFunction,ZodFirstPartyTypeKind:()=>ZodFirstPartyTypeKind,ZodFile:()=>ZodFile,ZodExactOptional:()=>ZodExactOptional,ZodError:()=>ZodError,ZodEnum:()=>ZodEnum,ZodEmoji:()=>ZodEmoji,ZodEmail:()=>ZodEmail,ZodE164:()=>ZodE164,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodDefault:()=>ZodDefault,ZodDate:()=>ZodDate,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodCustom:()=>ZodCustom,ZodCodec:()=>ZodCodec,ZodCatch:()=>ZodCatch,ZodCUID2:()=>ZodCUID2,ZodCUID:()=>ZodCUID,ZodCIDRv6:()=>ZodCIDRv6,ZodCIDRv4:()=>ZodCIDRv4,ZodBoolean:()=>ZodBoolean,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBigInt:()=>ZodBigInt,ZodBase64URL:()=>ZodBase64URL,ZodBase64:()=>ZodBase64,ZodArray:()=>ZodArray,ZodAny:()=>ZodAny,TimePrecision:()=>TimePrecision,NEVER:()=>NEVER,$output:()=>$output,$input:()=>$input,$brand:()=>$brand});var init_external=__esm(()=>{init_core2();init_core2();init_en();init_core2();init_json_schema_processors();init_from_json_schema();init_locales();init_iso();init_iso();init_coerce();init_schemas2();init_checks2();init_errors3();init_parse2();init_compat();config(en_default())});var init_zod=__esm(()=>{init_external();init_external()});function isSafeFrameUrl(value){let parsed;try{parsed=new URL(value)}catch{return!1}if(parsed.protocol!=="http:"&&parsed.protocol!=="https:")return!1;return parsed.username===""&&parsed.password===""}var BOARD_MODULE_ID_PATTERN,sharedDeclarationFields,boardModuleDeclarationSchema,boardModuleDeclarationsSchema;var init_board_modules=__esm(()=>{init_zod();BOARD_MODULE_ID_PATTERN=/^[a-z][a-z0-9-]*$/;sharedDeclarationFields={id:exports_external.string().regex(BOARD_MODULE_ID_PATTERN,"module id must match ^[a-z][a-z0-9-]*$"),name:exports_external.string().min(1,"module name must not be empty"),icon:exports_external.string().min(1,"module icon must not be empty"),sidebarLabel:exports_external.string().optional(),description:exports_external.string().optional(),order:exports_external.number().refine((value)=>Number.isFinite(value),{message:"module order must be a finite number"}).optional(),enabled:exports_external.boolean().optional().default(!0)},boardModuleDeclarationSchema=exports_external.discriminatedUnion("type",[exports_external.object({...sharedDeclarationFields,type:exports_external.literal("react"),directory:exports_external.string().min(1),entry:exports_external.string().min(1),styles:exports_external.array(exports_external.string().min(1)).optional().default(()=>[])}).strict(),exports_external.object({...sharedDeclarationFields,type:exports_external.literal("iframe"),url:exports_external.string().refine(isSafeFrameUrl,{message:"iframe url must be an absolute http(s) URL without embedded credentials (relative URLs and other schemes are rejected)"})}).strict()]),boardModuleDeclarationsSchema=exports_external.array(boardModuleDeclarationSchema)});function isRfc3339Timestamp(value){return RFC3339_PATTERN.test(value)&&Number.isFinite(Date.parse(value))}var RFC3339_PATTERN;var init_rfc3339=__esm(()=>{RFC3339_PATTERN=/^\d{4}-\d{2}-\d{2}[Tt]\d{2}:\d{2}:\d{2}(\.\d+)?([Zz]|[+-]\d{2}:\d{2})$/});function isFindingCode(code){return ALL_FINDING_CODES.includes(code)}var ALL_FINDING_CODES,FINDING_CODES;var init_finding_codes=__esm(()=>{ALL_FINDING_CODES=["L1.markdown-parse","L1.schema-validation","L2.missing-required-section","L2.forbidden-section","L2.disallowed-section","L2.heading-level","L2.section-order","L2.unclosed-code-fence","L3.requirements-format","L3.requirements-checkbox","L3.requirements-empty","L3.ac-empty","L3.ac-requirement-coverage","L3.solution-file-line","L3.review-priority-table","L3.required-section-placeholder","L3.plan-format","L3.unchecked-checklist","L3.ac-checklist-text","L3.ac-bdd-error","L3.ac-bdd-warning","L3.ac-bdd-invalid","L3.scope-delineation","L3.one-active-goal","L3.children-limit","L3.review-testing-contradiction","L4.design-placeholder","L4.feature-not-found","L4.feature-terminal","L4.missing-feature-id","L4.parent-not-found","L4.dependency-not-found","L4.rollup-subtasks-open","L4.rollup-parent-open","L4.rollup-missing-roster","L4.rollup-roster-not-declared-dependency","L4.readiness-blocked","L4.prose-prerequisite-unlisted","L4.prerequisite-cycle","L4.prerequisite-not-done","L4.gate-language","L4.linked-task-parse-failed","L4.orphan-scenarios","L4.uncovered-task-scenario","L4.uncovered-feature-scenario","L4.verdict-rows-match-no-scenario","L4.verifying-incomplete-tasks","L4.dogfood-missing","L4.stale-line-anchor","L4.anchor-unresolved","L4.anchor-subject-mismatch","L4.malformed-verdict-artifact","L4.scenario-unverified","L4.testing-verdict-stub","L4.evidence-not-recoverable","L4.feature-receipt-missing","L4.feature-receipt-malformed","L4.feature-receipt-cross-feature","L4.feature-receipt-divergent","L4.feature-receipt-failed","L4.feature-receipt-run","L4.feature-receipt-stale","L4.feature-receipt-contract","precheck-size","precheck-evidence","inventory-coverage","feature-reopen-unavailable"];FINDING_CODES={L1_MARKDOWN_PARSE:"L1.markdown-parse",L1_SCHEMA_VALIDATION:"L1.schema-validation",L2_MISSING_REQUIRED_SECTION:"L2.missing-required-section",L2_FORBIDDEN_SECTION:"L2.forbidden-section",L2_DISALLOWED_SECTION:"L2.disallowed-section",L2_HEADING_LEVEL:"L2.heading-level",L2_SECTION_ORDER:"L2.section-order",L2_UNCLOSED_CODE_FENCE:"L2.unclosed-code-fence",L3_REQUIREMENTS_FORMAT:"L3.requirements-format",L3_REQUIREMENTS_CHECKBOX:"L3.requirements-checkbox",L3_REQUIREMENTS_EMPTY:"L3.requirements-empty",L3_AC_EMPTY:"L3.ac-empty",L3_AC_REQUIREMENT_COVERAGE:"L3.ac-requirement-coverage",L3_SOLUTION_FILE_LINE:"L3.solution-file-line",L3_REVIEW_PRIORITY_TABLE:"L3.review-priority-table",L3_REQUIRED_SECTION_PLACEHOLDER:"L3.required-section-placeholder",L3_PLAN_FORMAT:"L3.plan-format",L3_UNCHECKED_CHECKLIST:"L3.unchecked-checklist",L3_AC_CHECKLIST_TEXT:"L3.ac-checklist-text",L3_AC_BDD_ERROR:"L3.ac-bdd-error",L3_AC_BDD_WARNING:"L3.ac-bdd-warning",L3_AC_BDD_INVALID:"L3.ac-bdd-invalid",L3_SCOPE_DELINEATION:"L3.scope-delineation",L3_ONE_ACTIVE_GOAL:"L3.one-active-goal",L3_CHILDREN_LIMIT:"L3.children-limit",L3_REVIEW_TESTING_CONTRADICTION:"L3.review-testing-contradiction",L4_DESIGN_PLACEHOLDER:"L4.design-placeholder",L4_FEATURE_NOT_FOUND:"L4.feature-not-found",L4_FEATURE_TERMINAL:"L4.feature-terminal",L4_MISSING_FEATURE_ID:"L4.missing-feature-id",L4_PARENT_NOT_FOUND:"L4.parent-not-found",L4_DEPENDENCY_NOT_FOUND:"L4.dependency-not-found",L4_ROLLUP_SUBTASKS_OPEN:"L4.rollup-subtasks-open",L4_ROLLUP_PARENT_OPEN:"L4.rollup-parent-open",L4_ROLLUP_MISSING_ROSTER:"L4.rollup-missing-roster",L4_ROLLUP_ROSTER_NOT_DECLARED_DEPENDENCY:"L4.rollup-roster-not-declared-dependency",L4_READINESS_BLOCKED:"L4.readiness-blocked",L4_PROSE_PREREQUISITE_UNLISTED:"L4.prose-prerequisite-unlisted",L4_PREREQUISITE_CYCLE:"L4.prerequisite-cycle",L4_PREREQUISITE_NOT_DONE:"L4.prerequisite-not-done",L4_GATE_LANGUAGE:"L4.gate-language",L4_LINKED_TASK_PARSE_FAILED:"L4.linked-task-parse-failed",L4_ORPHAN_SCENARIOS:"L4.orphan-scenarios",L4_UNCOVERED_TASK_SCENARIO:"L4.uncovered-task-scenario",L4_UNCOVERED_FEATURE_SCENARIO:"L4.uncovered-feature-scenario",L4_VERDICT_ROWS_MATCH_NO_SCENARIO:"L4.verdict-rows-match-no-scenario",L4_DOGFOOD_MISSING:"L4.dogfood-missing",L4_VERIFYING_INCOMPLETE_TASKS:"L4.verifying-incomplete-tasks",L4_STALE_LINE_ANCHOR:"L4.stale-line-anchor",L4_ANCHOR_UNRESOLVED:"L4.anchor-unresolved",L4_ANCHOR_SUBJECT_MISMATCH:"L4.anchor-subject-mismatch",L4_MALFORMED_VERDICT_ARTIFACT:"L4.malformed-verdict-artifact",L4_SCENARIO_UNVERIFIED:"L4.scenario-unverified",L4_TESTING_VERDICT_STUB:"L4.testing-verdict-stub",L4_EVIDENCE_NOT_RECOVERABLE:"L4.evidence-not-recoverable",L4_FEATURE_RECEIPT_MISSING:"L4.feature-receipt-missing",L4_FEATURE_RECEIPT_MALFORMED:"L4.feature-receipt-malformed",L4_FEATURE_RECEIPT_CROSS_FEATURE:"L4.feature-receipt-cross-feature",L4_FEATURE_RECEIPT_DIVERGENT:"L4.feature-receipt-divergent",L4_FEATURE_RECEIPT_FAILED:"L4.feature-receipt-failed",L4_FEATURE_RECEIPT_RUN:"L4.feature-receipt-run",L4_FEATURE_RECEIPT_STALE:"L4.feature-receipt-stale",L4_FEATURE_RECEIPT_CONTRACT:"L4.feature-receipt-contract",PRECHECK_SIZE:"precheck-size",PRECHECK_EVIDENCE:"precheck-evidence",INVENTORY_COVERAGE:"inventory-coverage",FEATURE_REOPEN_UNAVAILABLE:"feature-reopen-unavailable"}});var projectEntrySchema,projectsFileSchema;var init_projects=__esm(()=>{init_zod();projectEntrySchema=exports_external.object({name:exports_external.string().min(1),path:exports_external.string().min(1),port:exports_external.number().int().nonnegative().default(0)}),projectsFileSchema=exports_external.object({schema_version:exports_external.literal(1).default(1),projects:exports_external.array(projectEntrySchema).default([])})});var slashCommandCategorySchema,slashCommandItemSchema,slashCommandsFileSchema;var init_slash_commands=__esm(()=>{init_zod();slashCommandCategorySchema=exports_external.enum(["git","dev","sys","harness"]),slashCommandItemSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().min(1),category:slashCommandCategorySchema.default("dev"),argumentHint:exports_external.string().optional(),tags:exports_external.array(exports_external.string()).default([]),role:exports_external.string().optional(),source:exports_external.string().optional()}),slashCommandsFileSchema=exports_external.object({version:exports_external.number().int().default(1),updatedAt:exports_external.string().optional(),commands:exports_external.array(slashCommandItemSchema).default([])})});function folderPathWithDefault(defaultPath){return exports_external.preprocess((v)=>v==null?void 0:v,exports_external.string().default(defaultPath))}function normalizeExecutorTier(value){return value==="capable"?"capable-1":value}function normalizeExecutorAvailability(raw){if(raw===void 0||raw===null)return{disabled:!1,owner:void 0,since:void 0,reason:void 0};if(typeof raw==="boolean")return raw?{disabled:!0,owner:"operator",since:void 0,reason:void 0}:{disabled:!1,owner:void 0,since:void 0,reason:void 0};return{disabled:!0,owner:raw.owner,since:raw.since,reason:raw.reason}}var SPUR_LOG_LEVELS,DEFAULT_TASKS_DIR="docs/tasks",DEFAULT_FEATURES_DIR="docs/features",DEFAULT_DATABASE_URL=".spur/spur.db",folderConfigSchema,tasksConfigSchema,featuresConfigSchema,EXECUTOR_CAPABILITY_TIERS,executorCapabilityTierSchema,AGENT_ROLE_NAMES,EXECUTION_CAPABILITY_AXES,SESSION_CAPABILITY_AXES,AGENT_RUN_CAPABILITY_AXES,EXECUTION_CAPABILITY_STATES,EXECUTION_CAPABILITY_PROVENANCES,ExecutionCapabilityAttestationSchema,ExecutionCapabilitiesSchema,EXECUTION_CAPABILITY_REQUIREMENTS,RequiresCapabilitiesSchema,executorAvailabilityOwnerSchema,executorDisabledObjectSchema,AgentExecutorConfigSchema,AgentRoleConfigSchema,FleetMemberSchema,FLEET_STRATEGIES,FleetMemberEntrySchema,AgentFleetSchema,AgentOutputConfigSchema,AgentConfigSchema,RulesConfigSchema,WorkflowsConfigSchema,DecisionsConfigSchema,RedactionConfigSchema,HistoryRefreshConfigSchema,HistoryConfigSchema,VersionCarrierEntrySchema,BuilderBumpVerConfigSchema,BuilderConfigSchema,bootstrapOptionsSchema,bootstrapSectionSchema,spurConfigSchema,configSchema;var init_src=__esm(()=>{init_zod();init_board_modules();init_rfc3339();init_finding_codes();init_dist();init_board_modules();init_projects();init_slash_commands();SPUR_LOG_LEVELS=["debug","info","warn","error"],folderConfigSchema=exports_external.object({baseCounter:exports_external.number().int().nonnegative().default(0),label:exports_external.string().optional()});tasksConfigSchema=exports_external.object({folders:exports_external.record(exports_external.string(),folderConfigSchema).default({}),active:folderPathWithDefault(DEFAULT_TASKS_DIR),severity:exports_external.record(exports_external.string(),exports_external.enum(["error","warning","off"])).optional()}).superRefine((data,ctx)=>{if(data.severity){for(let code of Object.keys(data.severity))if(!isFindingCode(code))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["severity",code],message:`Unknown finding code "${code}" in severity overrides map`})}}),featuresConfigSchema=exports_external.object({dir:folderPathWithDefault(DEFAULT_FEATURES_DIR)}),EXECUTOR_CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"];executorCapabilityTierSchema=exports_external.preprocess((value)=>{if(value===void 0||value===null)return;return typeof value==="string"?normalizeExecutorTier(value):value},exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional()),AGENT_ROLE_NAMES=["scribe","coder","reviewer","planner"],EXECUTION_CAPABILITY_AXES=["fsRead","fsWrite","networkEgress","processSpawn","externalMutationApproval"],SESSION_CAPABILITY_AXES=["resumeById","sessionDir","persistentStdin","structuredOutput"],AGENT_RUN_CAPABILITY_AXES=[...EXECUTION_CAPABILITY_AXES,...SESSION_CAPABILITY_AXES],EXECUTION_CAPABILITY_STATES=["enforced","available","unavailable","unknown"],EXECUTION_CAPABILITY_PROVENANCES=["native-known","operator-configured","unattested"],ExecutionCapabilityAttestationSchema=exports_external.object({state:exports_external.enum(EXECUTION_CAPABILITY_STATES),provenance:exports_external.enum(EXECUTION_CAPABILITY_PROVENANCES)}),ExecutionCapabilitiesSchema=exports_external.object({version:exports_external.literal(1),axes:exports_external.partialRecord(exports_external.enum(EXECUTION_CAPABILITY_AXES),ExecutionCapabilityAttestationSchema)}),EXECUTION_CAPABILITY_REQUIREMENTS=["available","enforced"],RequiresCapabilitiesSchema=exports_external.partialRecord(exports_external.enum(AGENT_RUN_CAPABILITY_AXES),exports_external.enum(EXECUTION_CAPABILITY_REQUIREMENTS)),executorAvailabilityOwnerSchema=exports_external.enum(["operator","quota","probe"]),executorDisabledObjectSchema=exports_external.object({owner:executorAvailabilityOwnerSchema,since:exports_external.string().refine(isRfc3339Timestamp,{message:"since must be an RFC 3339 timestamp"}),reason:exports_external.string().min(1)}),AgentExecutorConfigSchema=exports_external.object({name:exports_external.string().min(1),agent:exports_external.string().min(1),model:exports_external.string().min(1).optional(),tier:executorCapabilityTierSchema.optional(),executionCapabilities:ExecutionCapabilitiesSchema.optional(),disabled:exports_external.union([exports_external.boolean(),executorDisabledObjectSchema]).default(!1)});AgentRoleConfigSchema=exports_external.object({tier:exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional(),stages:exports_external.array(exports_external.string().min(1)).min(1).optional()}),FleetMemberSchema=exports_external.object({id:exports_external.string().min(1).optional(),role:exports_external.enum(AGENT_ROLE_NAMES,{error:(issue2)=>Error(`Unknown role "${issue2.input}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`)}).optional(),executor:exports_external.string().min(1).optional(),purpose:exports_external.string().optional(),enabled:exports_external.boolean().optional()}),FLEET_STRATEGIES=["rest","gtd"],FleetMemberEntrySchema=FleetMemberSchema.superRefine((member,ctx)=>{if(member.role===void 0&&member.executor===void 0)ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:"must declare a role or an executor — at least one is required"})}),AgentFleetSchema=exports_external.object({enabled:exports_external.boolean().default(!1),strategy:exports_external.enum(FLEET_STRATEGIES).default("rest"),orchestrator:exports_external.string().min(1).optional(),members:exports_external.array(FleetMemberEntrySchema).default([])}),AgentOutputConfigSchema=exports_external.object({"max-bytes":exports_external.number().int().positive().optional(),"max-lines":exports_external.number().int().positive().optional()}),AgentConfigSchema=exports_external.object({default:exports_external.string().optional(),executors:exports_external.array(AgentExecutorConfigSchema).optional(),roles:exports_external.record(exports_external.string(),AgentRoleConfigSchema).optional(),output:AgentOutputConfigSchema.optional(),sessionAffinity:exports_external.boolean().optional(),fleet:AgentFleetSchema.optional()}).superRefine((value,ctx)=>{for(let key of Object.keys(value.roles??{}))if(!AGENT_ROLE_NAMES.includes(key))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["roles",key],message:`Unknown role "${key}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`});let executors=value.executors,executorNames=new Set;if(executors!==void 0){let seen=new Set;for(let[index,executor]of executors.entries()){if(seen.has(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Duplicate executor name: ${executor.name}`,path:["executors",index,"name"]});if(executor.name==="inline"||executor.name==="auto")ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" is reserved (the --agent selector value '${executor.name}' has fixed semantics); rename executor at index ${index}.`,path:["executors",index,"name"]});if(AGENT_ROLE_NAMES.includes(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" collides with the role selector namespace ("${executor.name}"); rename executor at index ${index}.`,path:["executors",index,"name"]});seen.add(executor.name),executorNames.add(executor.name)}}}),RulesConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional()}),WorkflowsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional(),hitlDecisionMaker:exports_external.boolean().optional(),decideDecisionMaker:exports_external.boolean().optional(),logRetentionDays:exports_external.number().int().positive().default(30)}),DecisionsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional(),maker:exports_external.string().optional(),makers:exports_external.record(exports_external.string(),exports_external.string()).optional(),log:exports_external.enum(["full","metadata","off"]).optional()}),RedactionConfigSchema=exports_external.object({enabled:exports_external.boolean().optional()}),HistoryRefreshConfigSchema=exports_external.object({on_completion:exports_external.boolean().default(!1),debounce_ms:exports_external.number().int().min(1000).default(600000)}),HistoryConfigSchema=exports_external.object({refresh:HistoryRefreshConfigSchema.optional()}),VersionCarrierEntrySchema=exports_external.looseObject({type:exports_external.string().min(1)}),BuilderBumpVerConfigSchema=exports_external.object({tagVersionSeparator:exports_external.string().min(1).default("-v"),aggregatePackage:exports_external.string().min(1).optional(),publishWorkflow:exports_external.string().min(1).default("publish.yml"),releaseCommitType:exports_external.string().min(1).default("chore"),releaseCommitScope:exports_external.string().min(1).default("release"),ghRunListLimit:exports_external.number().int().positive().default(5),versionCarriers:exports_external.array(VersionCarrierEntrySchema).default([])}),BuilderConfigSchema=exports_external.object({"bump-ver":BuilderBumpVerConfigSchema.optional()}),bootstrapOptionsSchema=exports_external.object({options:exports_external.record(exports_external.string(),exports_external.unknown()).optional()}),bootstrapSectionSchema=bootstrapOptionsSchema.extend({modules:boardModuleDeclarationsSchema.optional()}),spurConfigSchema=exports_external.object({version:exports_external.string().optional(),name:exports_external.string().optional(),bootstrap:bootstrapSectionSchema.optional(),agent:AgentConfigSchema.optional(),rules:RulesConfigSchema.optional(),workflows:WorkflowsConfigSchema.optional(),decisions:DecisionsConfigSchema.optional(),redaction:RedactionConfigSchema.optional(),history:HistoryConfigSchema.optional(),builder:BuilderConfigSchema.optional(),tasks:tasksConfigSchema.optional(),features:featuresConfigSchema.optional()}),configSchema=exports_external.object({database:exports_external.object({url:exports_external.string().default(DEFAULT_DATABASE_URL)}).default({url:DEFAULT_DATABASE_URL}),server:exports_external.object({port:exports_external.coerce.number().int().positive().default(3000),host:exports_external.string().default("localhost"),openBrowser:exports_external.boolean().default(!0),webDistPath:exports_external.string().nullable().default(null)}).default({port:3000,host:"localhost",openBrowser:!0,webDistPath:null}),telemetry:exports_external.object({enabled:exports_external.boolean().default(!1),endpoint:exports_external.string().optional()}).default({enabled:!1}),logging:exports_external.object({level:exports_external.enum(SPUR_LOG_LEVELS).default("info")}).default({level:"info"})})});var require_identity=__commonJS((exports)=>{var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===ALIAS,isDocument=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===DOC,isMap=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===MAP,isPair=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===PAIR,isScalar=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===SCALAR,isSeq=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===SEQ;function isCollection(node){if(node&&typeof node==="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}function isNode(node){if(node&&typeof node==="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}var hasAnchor=(node)=>(isScalar(node)||isCollection(node))&&!!node.anchor;exports.ALIAS=ALIAS;exports.DOC=DOC;exports.MAP=MAP;exports.NODE_TYPE=NODE_TYPE;exports.PAIR=PAIR;exports.SCALAR=SCALAR;exports.SEQ=SEQ;exports.hasAnchor=hasAnchor;exports.isAlias=isAlias;exports.isCollection=isCollection;exports.isDocument=isDocument;exports.isMap=isMap;exports.isNode=isNode;exports.isPair=isPair;exports.isScalar=isScalar;exports.isSeq=isSeq});var require_visit=__commonJS((exports)=>{var identity=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit(node,visitor){let visitor_=initVisitor(visitor);if(identity.isDocument(node)){if(visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE)node.contents=null}else visit_(null,node,visitor_,Object.freeze([]))}visit.BREAK=BREAK;visit.SKIP=SKIP;visit.REMOVE=REMOVE;function visit_(key,node,visitor,path){let ctrl=callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visit_(key,ctrl,visitor,path);if(typeof ctrl!=="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path);if(typeof ci==="number")i=ci-1;else if(ci===BREAK)return BREAK;else if(ci===REMOVE)node.items.splice(i,1),i-=1}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=visit_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;else if(ck===REMOVE)node.key=null;let cv=visit_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;else if(cv===REMOVE)node.value=null}}return ctrl}async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);if(identity.isDocument(node)){if(await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE)node.contents=null}else await visitAsync_(null,node,visitor_,Object.freeze([]))}visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path){let ctrl=await callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visitAsync_(key,ctrl,visitor,path);if(typeof ctrl!=="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path);if(typeof ci==="number")i=ci-1;else if(ci===BREAK)return BREAK;else if(ci===REMOVE)node.items.splice(i,1),i-=1}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=await visitAsync_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;else if(ck===REMOVE)node.key=null;let cv=await visitAsync_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;else if(cv===REMOVE)node.value=null}}return ctrl}function initVisitor(visitor){if(typeof visitor==="object"&&(visitor.Collection||visitor.Node||visitor.Value))return Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor);return visitor}function callVisitor(key,node,visitor,path){if(typeof visitor==="function")return visitor(key,node,path);if(identity.isMap(node))return visitor.Map?.(key,node,path);if(identity.isSeq(node))return visitor.Seq?.(key,node,path);if(identity.isPair(node))return visitor.Pair?.(key,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key,node,path);if(identity.isAlias(node))return visitor.Alias?.(key,node,path);return}function replaceNode(key,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key]=node;else if(identity.isPair(parent))if(key==="key")parent.key=node;else parent.value=node;else if(identity.isDocument(parent))parent.contents=node;else{let pt=identity.isAlias(parent)?"alias":"scalar";throw Error(`Cannot replace node with ${pt} parent`)}}exports.visit=visit;exports.visitAsync=visitAsync});var require_directives=__commonJS((exports)=>{var identity=require_identity(),visit=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=(tn)=>tn.replace(/[!,[\]{}]/g,(ch)=>escapeChars[ch]);class Directives{constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},Directives.defaultYaml,yaml),this.tags=Object.assign({},Directives.defaultTags,tags)}clone(){let copy=new Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},Directives.defaultTags);break}return res}add(line,onError){if(this.atNextDocument)this.yaml={explicit:Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},Directives.defaultTags),this.atNextDocument=!1;let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2){if(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2)return!1}let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version2]=parts;if(version2==="1.1"||version2==="1.2")return this.yaml.version=version2,!0;else{let isValid=/^\d+\.\d+$/.test(version2);return onError(6,`Unsupported YAML version ${version2}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);if(verbatim==="!"||verbatim==="!!")return onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null;if(source[source.length-1]!==">")onError("Verbatim tags must end with a >");return verbatim}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);if(!suffix)onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error51){return onError(String(error51)),null}if(handle==="!")return source;return onError(`Could not resolve tag: ${source}`),null}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc2){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc2&&tagEntries.length>0&&identity.isNode(doc2.contents)){let tags={};visit.visit(doc2.contents,(_key,node)=>{if(identity.isNode(node)&&node.tag)tags[node.tag]=!0}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries){if(handle==="!!"&&prefix==="tag:yaml.org,2002:")continue;if(!doc2||tagNames.some((tn)=>tn.startsWith(prefix)))lines.push(`%TAG ${handle} ${prefix}`)}return lines.join(`
66
66
  `)}}Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports.Directives=Directives});var require_anchors=__commonJS((exports)=>{var identity=require_identity(),visit=require_visit();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw Error(msg)}return!0}function anchorNames(root){let anchors=new Set;return visit.visit(root,{Value(_key,node){if(node.anchor)anchors.add(node.anchor)}}),anchors}function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name=`${prefix}${i}`;if(!exclude.has(name))return name}}function createNodeAnchors(doc2,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:(source)=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc2));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},setAnchors:()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref==="object"&&ref.anchor&&(identity.isScalar(ref.node)||identity.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error51=Error("Failed to resolve repeated object (this should not happen)");throw error51.source=source,error51}}},sourceObjects}}exports.anchorIsValid=anchorIsValid;exports.anchorNames=anchorNames;exports.createNodeAnchors=createNodeAnchors;exports.findNewAnchor=findNewAnchor});var require_applyReviver=__commonJS((exports)=>{function applyReviver(reviver,obj,key,val){if(val&&typeof val==="object")if(Array.isArray(val))for(let i=0,len=val.length;i<len;++i){let v0=val[i],v1=applyReviver(reviver,val,String(i),v0);if(v1===void 0)delete val[i];else if(v1!==v0)val[i]=v1}else if(val instanceof Map)for(let k of Array.from(val.keys())){let v0=val.get(k),v1=applyReviver(reviver,val,k,v0);if(v1===void 0)val.delete(k);else if(v1!==v0)val.set(k,v1)}else if(val instanceof Set)for(let v0 of Array.from(val)){let v1=applyReviver(reviver,val,v0,v0);if(v1===void 0)val.delete(v0);else if(v1!==v0)val.delete(v0),val.add(v1)}else for(let[k,v0]of Object.entries(val)){let v1=applyReviver(reviver,val,k,v0);if(v1===void 0)delete val[k];else if(v1!==v0)val[k]=v1}return reviver.call(obj,key,val)}exports.applyReviver=applyReviver});var require_toJS=__commonJS((exports)=>{var identity=require_identity();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON==="function"){if(!ctx||!identity.hasAnchor(value))return value.toJSON(arg,ctx);let data={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data),ctx.onCreate=(res2)=>{data.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);if(ctx.onCreate)ctx.onCreate(res);return res}if(typeof value==="bigint"&&!ctx?.keep)return Number(value);return value}exports.toJS=toJS});var require_Node=__commonJS((exports)=>{var applyReviver=require_applyReviver(),identity=require_identity(),toJS=require_toJS();class NodeBase{constructor(type){Object.defineProperty(this,identity.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(this.range)copy.range=this.range.slice();return copy}toJS(doc2,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity.isDocument(doc2))throw TypeError("A document argument is required");let ctx={anchors:new Map,doc:doc2,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount==="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor==="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver==="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}}exports.NodeBase=NodeBase});var require_Alias=__commonJS((exports)=>{var anchors=require_anchors(),visit=require_visit(),identity=require_identity(),Node=require_Node(),toJS=require_toJS();class Alias extends Node.NodeBase{constructor(source){super(identity.ALIAS);this.source=source,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve(doc2,ctx){if(ctx?.maxAliasCount===0)throw ReferenceError("Alias resolution is disabled");let nodes;if(ctx?.aliasResolveCache)nodes=ctx.aliasResolveCache;else if(nodes=[],visit.visit(doc2,{Node:(_key,node)=>{if(identity.isAlias(node)||identity.hasAnchor(node))nodes.push(node)}}),ctx)ctx.aliasResolveCache=nodes;let found=void 0;for(let node of nodes){if(node===this)break;if(node.anchor===this.source)found=node}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let{anchors:anchors2,doc:doc2,maxAliasCount}=ctx,source=this.resolve(doc2,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(msg)}let data=anchors2.get(source);if(!data)toJS.toJS(source,null,ctx),data=anchors2.get(source);if(data?.res===void 0)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(maxAliasCount>=0){if(data.count+=1,data.aliasCount===0)data.aliasCount=getAliasCount(doc2,source,anchors2);if(data.count*data.aliasCount>maxAliasCount)throw ReferenceError("Excessive alias count indicates a resource exhaustion attack")}return data.res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(msg)}if(ctx.implicitKey)return`${src} `}return src}}function getAliasCount(doc2,node,anchors2){if(identity.isAlias(node)){let source=node.resolve(doc2),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity.isCollection(node)){let count=0;for(let item of node.items){let c=getAliasCount(doc2,item,anchors2);if(c>count)count=c}return count}else if(identity.isPair(node)){let kc=getAliasCount(doc2,node.key,anchors2),vc=getAliasCount(doc2,node.value,anchors2);return Math.max(kc,vc)}return 1}exports.Alias=Alias});var require_Scalar=__commonJS((exports)=>{var identity=require_identity(),Node=require_Node(),toJS=require_toJS(),isScalarValue=(value)=>!value||typeof value!=="function"&&typeof value!=="object";class Scalar extends Node.NodeBase{constructor(value){super(identity.SCALAR);this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}}Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports.Scalar=Scalar;exports.isScalarValue=isScalarValue});var require_createNode=__commonJS((exports)=>{var Alias=require_Alias(),identity=require_identity(),Scalar=require_Scalar(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match=tags.filter((t)=>t.tag===tagName),tagObj=match.find((t)=>!t.format)??match[0];if(!tagObj)throw Error(`Tag ${tagName} not found`);return tagObj}return tags.find((t)=>t.identify?.(value)&&!t.format)}function createNode(value,tagName,ctx){if(identity.isDocument(value))value=value.contents;if(identity.isNode(value))return value;if(identity.isPair(value)){let map2=ctx.schema[identity.MAP].createNode?.(ctx.schema,null,ctx);return map2.items.push(value),map2}if(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)value=value.valueOf();let{aliasDuplicateObjects,onAnchor,onTagObj,schema,sourceObjects}=ctx,ref=void 0;if(aliasDuplicateObjects&&value&&typeof value==="object")if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);else ref={anchor:null,node:null},sourceObjects.set(value,ref);if(tagName?.startsWith("!!"))tagName=defaultTagPrefix+tagName.slice(2);let tagObj=findTagObject(value,tagName,schema.tags);if(!tagObj){if(value&&typeof value.toJSON==="function")value=value.toJSON();if(!value||typeof value!=="object"){let node2=new Scalar.Scalar(value);if(ref)ref.node=node2;return node2}tagObj=value instanceof Map?schema[identity.MAP]:(Symbol.iterator in Object(value))?schema[identity.SEQ]:schema[identity.MAP]}if(onTagObj)onTagObj(tagObj),delete ctx.onTagObj;let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from==="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);if(tagName)node.tag=tagName;else if(!tagObj.default)node.tag=tagObj.tag;if(ref)ref.node=node;return node}exports.createNode=createNode});var require_Collection=__commonJS((exports)=>{var createNode=require_createNode(),identity=require_identity(),Node=require_Node();function collectionFromPath(schema,path,value){let v=value;for(let i=path.length-1;i>=0;--i){let k=path[i];if(typeof k==="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema,sourceObjects:new Map})}var isEmptyPath=(path)=>path==null||typeof path==="object"&&!!path[Symbol.iterator]().next().done;class Collection extends Node.NodeBase{constructor(type,schema){super(type);Object.defineProperty(this,"schema",{value:schema,configurable:!0,enumerable:!1,writable:!0})}clone(schema){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(schema)copy.schema=schema;if(copy.items=copy.items.map((it)=>identity.isNode(it)||identity.isPair(it)?it.clone(schema):it),this.range)copy.range=this.range.slice();return copy}addIn(path,value){if(isEmptyPath(path))this.add(value);else{let[key,...rest]=path,node=this.get(key,!0);if(identity.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path){let[key,...rest]=path;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity.isCollection(node))return node.deleteIn(rest);else throw Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path,keepScalar){let[key,...rest]=path,node=this.get(key,!0);if(rest.length===0)return!keepScalar&&identity.isScalar(node)?node.value:node;else return identity.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every((node)=>{if(!identity.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path){let[key,...rest]=path;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity.isCollection(node)?node.hasIn(rest):!1}setIn(path,value){let[key,...rest]=path;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}}exports.Collection=Collection;exports.collectionFromPath=collectionFromPath;exports.isEmptyPath=isEmptyPath});var require_stringifyComment=__commonJS((exports)=>{var stringifyComment=(str)=>str.replace(/^(?!$)(?: $)?/gm,"#");function indentComment(comment,indent){if(/^\n+$/.test(comment))return comment.substring(1);return indent?comment.replace(/^(?! *$)/gm,indent):comment}var lineComment=(str,indent,comment)=>str.endsWith(`
67
67
  `)?indentComment(comment,indent):comment.includes(`
68
68
  `)?`
@@ -284,7 +284,7 @@ params: ${params}`);if(this.query=query,this.params=params,this.cause=cause,Erro
284
284
  AND ${queueJobs.attemptToken} IS NULL`)).changes}async failExpiredJobs(){let now=this.now();return(await this.db.update(queueJobs).set({status:"failed",lastError:"Job expired — not processed before TTL deadline",updatedAt:now,attempts:sql`${queueJobs.attempts} + 1`,processingAt:null}).where(sql`${queueJobs.status} = 'pending' AND ${queueJobs.expiresAt} IS NOT NULL AND ${queueJobs.expiresAt} <= ${now}`)).changes}}});var exports_dist={};__export(exports_dist,{embeddedMigrations:()=>embeddedMigrations,createDbAdapter:()=>createDbAdapter,compilePredicate:()=>compilePredicate,compileOrderBy:()=>compileOrderBy,applyMigrations:()=>applyMigrations,RequestKeyConflictError:()=>RequestKeyConflictError,QueueJobDao:()=>QueueJobDao,InboxMessageDao:()=>InboxMessageDao,EntityDao:()=>EntityDao,BaseDao:()=>BaseDao});var init_dist4=__esm(()=>{init_base_dao();init_embedded_migrations();init_entity_dao();init_inbox_message_dao();init_migrate();init_query_spec();init_queue_job_dao()});function sqlExpressionToText(value){if(typeof value!=="object"||value===null||!("queryChunks"in value))return;let chunks=value.queryChunks;if(!chunks)return;return chunks.map((chunk)=>{if("value"in chunk&&typeof chunk.value==="string")return chunk.value;if("input"in chunk&&chunk.input!==void 0)return String(chunk.input);return String(chunk.value??"?")}).join("")}function getDrizzleTableName(table3){return String(table3[Symbol.for("drizzle:Name")])}function quoteIdent(name){return`"${name.replace(/"/g,'""')}"`}function defaultToSql(value){if(value==null)return value===null?"NULL":void 0;if(typeof value==="number")return String(value);if(typeof value==="string")return`'${value.replace(/'/g,"''")}'`;if(typeof value==="boolean")return value?"1":"0";return sqlExpressionToText(value)??String(value)}function generateCreateTableSql(table3){let config3=getTableConfig(table3),columnDefs=[],tableConstraints=[],compositeUniqueCols=new Set;for(let uc of config3.uniqueConstraints)if(uc.columns.length>1)for(let col of uc.columns)compositeUniqueCols.add(col.name);let compositePkCols=new Set;for(let pk of config3.primaryKeys)if(pk.columns.length>1)for(let col of pk.columns)compositePkCols.add(col.name);for(let col of config3.columns){let parts=[quoteIdent(col.name),col.getSQLType()];if(col.primary&&!compositePkCols.has(col.name))parts.push("PRIMARY KEY");if(col.notNull)parts.push("NOT NULL");if(col.hasDefault&&col.default!==void 0){let sqlDefault=defaultToSql(col.default);if(sqlDefault!==void 0)parts.push(`DEFAULT ${sqlDefault}`)}if(col.isUnique&&!compositeUniqueCols.has(col.name))parts.push("UNIQUE");columnDefs.push(parts.join(" "))}for(let pk of config3.primaryKeys)if(pk.columns.length>1){let pkCols=pk.columns.map((c3)=>quoteIdent(c3.name)).join(", ");tableConstraints.push(`PRIMARY KEY (${pkCols})`)}for(let uc of config3.uniqueConstraints)if(uc.columns.length>1){let cols=uc.columns.map((c3)=>quoteIdent(c3.name)).join(", ");tableConstraints.push(`UNIQUE (${cols})`)}for(let fk of config3.foreignKeys){let ref=fk.reference(),localCols=ref.columns.map((c3)=>quoteIdent(c3.name)).join(", "),foreignCols=ref.foreignColumns.map((c3)=>quoteIdent(c3.name)).join(", "),foreignTableName=getDrizzleTableName(ref.foreignTable),constraint=`FOREIGN KEY (${localCols}) REFERENCES ${quoteIdent(foreignTableName)} (${foreignCols})`;if(fk.onDelete)constraint+=` ON DELETE ${fk.onDelete}`;if(fk.onUpdate)constraint+=` ON UPDATE ${fk.onUpdate}`;tableConstraints.push(constraint)}let allDefs=[...columnDefs,...tableConstraints];return`CREATE TABLE IF NOT EXISTS ${quoteIdent(config3.name)} (
285
285
  ${allDefs.join(`,
286
286
  `)}
287
- )`}var init_ddl=__esm(()=>{init_sqlite_core()});var init_classic=__esm(()=>{init_external();init_external()});var init_v4=__esm(()=>{init_classic()});function isColumnType(column2,columnTypes){return columnTypes.includes(column2.columnType)}function isWithEnum(column2){return"enumValues"in column2&&Array.isArray(column2.enumValues)&&column2.enumValues.length>0}function columnToSchema(column2,factory){let z$1=factory?.zodInstance??exports_external,coerce=factory?.coerce??{},schema;if(isWithEnum(column2))schema=column2.enumValues.length?z$1.enum(column2.enumValues):z$1.string();if(!schema){if(isColumnType(column2,["PgGeometry","PgPointTuple"]))schema=z$1.tuple([z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgGeometryObject","PgPointObject"]))schema=z$1.object({x:z$1.number(),y:z$1.number()});else if(isColumnType(column2,["PgHalfVector","PgVector"]))schema=z$1.array(z$1.number()),schema=column2.dimensions?schema.length(column2.dimensions):schema;else if(isColumnType(column2,["PgLine"]))schema=z$1.tuple([z$1.number(),z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgLineABC"]))schema=z$1.object({a:z$1.number(),b:z$1.number(),c:z$1.number()});else if(isColumnType(column2,["PgArray"]))schema=z$1.array(columnToSchema(column2.baseColumn,factory)),schema=column2.size?schema.length(column2.size):schema;else if(column2.dataType==="array")schema=z$1.array(z$1.any());else if(column2.dataType==="number")schema=numberColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="bigint")schema=bigintColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="boolean")schema=coerce===!0||coerce.boolean?z$1.coerce.boolean():z$1.boolean();else if(column2.dataType==="date")schema=coerce===!0||coerce.date?z$1.coerce.date():z$1.date();else if(column2.dataType==="string")schema=stringColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="json")schema=jsonSchema;else if(column2.dataType==="custom")schema=z$1.any();else if(column2.dataType==="buffer")schema=bufferSchema}if(!schema)schema=z$1.any();return schema}function numberColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min,max,integer4=!1;if(isColumnType(column2,["MySqlTinyInt","SingleStoreTinyInt"]))min=unsigned?0:CONSTANTS.INT8_MIN,max=unsigned?CONSTANTS.INT8_UNSIGNED_MAX:CONSTANTS.INT8_MAX,integer4=!0;else if(isColumnType(column2,["PgSmallInt","PgSmallSerial","MySqlSmallInt","SingleStoreSmallInt"]))min=unsigned?0:CONSTANTS.INT16_MIN,max=unsigned?CONSTANTS.INT16_UNSIGNED_MAX:CONSTANTS.INT16_MAX,integer4=!0;else if(isColumnType(column2,["PgReal","MySqlFloat","MySqlMediumInt","SingleStoreMediumInt","SingleStoreFloat"]))min=unsigned?0:CONSTANTS.INT24_MIN,max=unsigned?CONSTANTS.INT24_UNSIGNED_MAX:CONSTANTS.INT24_MAX,integer4=isColumnType(column2,["MySqlMediumInt","SingleStoreMediumInt"]);else if(isColumnType(column2,["PgInteger","PgSerial","MySqlInt","SingleStoreInt"]))min=unsigned?0:CONSTANTS.INT32_MIN,max=unsigned?CONSTANTS.INT32_UNSIGNED_MAX:CONSTANTS.INT32_MAX,integer4=!0;else if(isColumnType(column2,["PgDoublePrecision","MySqlReal","MySqlDouble","SingleStoreReal","SingleStoreDouble","SQLiteReal"]))min=unsigned?0:CONSTANTS.INT48_MIN,max=unsigned?CONSTANTS.INT48_UNSIGNED_MAX:CONSTANTS.INT48_MAX;else if(isColumnType(column2,["PgBigInt53","PgBigSerial53","MySqlBigInt53","MySqlSerial","SingleStoreBigInt53","SingleStoreSerial","SQLiteInteger"]))unsigned=unsigned||isColumnType(column2,["MySqlSerial","SingleStoreSerial"]),min=unsigned?0:Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER,integer4=!0;else if(isColumnType(column2,["MySqlYear","SingleStoreYear"]))min=1901,max=2155,integer4=!0;else min=Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER;let schema=coerce===!0||coerce?.number?integer4?z2.coerce.number():z2.coerce.number().int():integer4?z2.int():z2.number();return schema=schema.gte(min).lte(max),schema}function bigintColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min=unsigned?0n:CONSTANTS.INT64_MIN,max=unsigned?CONSTANTS.INT64_UNSIGNED_MAX:CONSTANTS.INT64_MAX;return(coerce===!0||coerce?.bigint?z2.coerce.bigint():z2.bigint()).gte(min).lte(max)}function stringColumnToSchema(column2,z2,coerce){if(isColumnType(column2,["PgUUID"]))return z2.uuid();let max,regex,fixed=!1;if(isColumnType(column2,["PgVarchar","SQLiteText"]))max=column2.length;else if(isColumnType(column2,["MySqlVarChar","SingleStoreVarChar"]))max=column2.length??CONSTANTS.INT16_UNSIGNED_MAX;else if(isColumnType(column2,["MySqlText","SingleStoreText"]))if(column2.textType==="longtext")max=CONSTANTS.INT32_UNSIGNED_MAX;else if(column2.textType==="mediumtext")max=CONSTANTS.INT24_UNSIGNED_MAX;else if(column2.textType==="text")max=CONSTANTS.INT16_UNSIGNED_MAX;else max=CONSTANTS.INT8_UNSIGNED_MAX;if(isColumnType(column2,["PgChar","MySqlChar","SingleStoreChar"]))max=column2.length,fixed=!0;if(isColumnType(column2,["PgBinaryVector"]))regex=/^[01]+$/,max=column2.dimensions;let schema=coerce===!0||coerce?.string?z2.coerce.string():z2.string();return schema=regex?schema.regex(regex):schema,max&&fixed?schema.length(max):max?schema.max(max):schema}function getColumns(tableLike){return isTable(tableLike)?getTableColumns(tableLike):getViewSelectedFields(tableLike)}function handleColumns(columns2,refinements,conditions2,factory){let columnSchemas={};for(let[key,selected]of Object.entries(columns2)){if(!is(selected,Column)&&!is(selected,SQL)&&!is(selected,SQL.Aliased)&&typeof selected==="object"){let columns3=isTable(selected)||isView(selected)?getColumns(selected):selected;columnSchemas[key]=handleColumns(columns3,refinements[key]??{},conditions2,factory);continue}let refinement=refinements[key];if(refinement!==void 0&&typeof refinement!=="function"){columnSchemas[key]=refinement;continue}let column2=is(selected,Column)?selected:void 0,schema=column2?columnToSchema(column2,factory):exports_external.any(),refined=typeof refinement==="function"?refinement(schema):schema;if(conditions2.never(column2))continue;else columnSchemas[key]=refined;if(column2){if(conditions2.nullable(column2))columnSchemas[key]=columnSchemas[key].nullable();if(conditions2.optional(column2))columnSchemas[key]=columnSchemas[key].optional()}}return exports_external.object(columnSchemas)}function handleEnum(enum_,factory){return(factory?.zodInstance??exports_external).enum(enum_.enumValues)}var CONSTANTS,isPgEnum2,literalSchema,jsonSchema,bufferSchema,selectConditions,insertConditions,createSelectSchema=(entity2,refine2)=>{if(isPgEnum2(entity2))return handleEnum(entity2);let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},selectConditions)},createInsertSchema=(entity2,refine2)=>{let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},insertConditions)};var init_drizzle_zod=__esm(()=>{init_v4();init_drizzle_orm();CONSTANTS={INT8_MIN:-128,INT8_MAX:127,INT8_UNSIGNED_MAX:255,INT16_MIN:-32768,INT16_MAX:32767,INT16_UNSIGNED_MAX:65535,INT24_MIN:-8388608,INT24_MAX:8388607,INT24_UNSIGNED_MAX:16777215,INT32_MIN:-2147483648,INT32_MAX:2147483647,INT32_UNSIGNED_MAX:4294967295,INT48_MIN:-140737488355328,INT48_MAX:140737488355327,INT48_UNSIGNED_MAX:281474976710655,INT64_MIN:-9223372036854775808n,INT64_MAX:9223372036854775807n,INT64_UNSIGNED_MAX:18446744073709551615n};isPgEnum2=isWithEnum,literalSchema=exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null()]),jsonSchema=exports_external.union([literalSchema,exports_external.record(exports_external.string(),exports_external.any()),exports_external.array(exports_external.any())]),bufferSchema=exports_external.custom((v)=>v instanceof Buffer);selectConditions={never:()=>!1,optional:()=>!1,nullable:(column2)=>!column2.notNull},insertConditions={never:(column2)=>column2?.generated?.type==="always"||column2?.generatedIdentity?.type==="always",optional:(column2)=>!column2.notNull||column2.notNull&&column2.hasDefault,nullable:(column2)=>!column2.notNull}});function defineTable(name,columns2){let table3=sqliteTable(name,columns2),insert2,select3,ddl;return{table:table3,get insertSchema(){if(insert2===void 0)insert2=createInsertSchema(table3);return insert2},get selectSchema(){if(select3===void 0)select3=createSelectSchema(table3);return select3},get createTableSql(){if(ddl===void 0)ddl=generateCreateTableSql(table3);return ddl}}}var init_define_table=__esm(()=>{init_sqlite_core();init_drizzle_zod();init_ddl()});var init_schema=__esm(()=>{init_sqlite_core();init_define_table();init_common3()});function parseYamlObject(text3){let parsed;try{parsed=$parse(text3)}catch(error51){throw new YamlParseError(`YAML parsing failed: ${error51.message}`,error51 instanceof Error?error51:void 0)}if(parsed===null||parsed===void 0)return{};if(typeof parsed!=="object"||Array.isArray(parsed))throw new YamlParseError("YAML must parse to an object");return parsed}function stringifyYamlObject(value){return $stringify(value)}function getProcessEnv(){return getEnvVars()}function interpolateEnv(value){return value.replace(ENV_INTERPOLATION_RE,(_match,name)=>getEnvVar(name)??`\${${name}}`)}function interpolateTree(value){if(typeof value==="string")return interpolateEnv(value);if(Array.isArray(value))return value.map(interpolateTree);if(isPlainObject4(value))return Object.fromEntries(Object.entries(value).map(([key,child])=>[key,interpolateTree(child)]));return value}function buildConfigFromObject(raw,options={}){let interpolated=interpolateTree(raw),merged=options.overrides?deepMerge(interpolated,options.overrides):interpolated,result=configSchema3.safeParse(merged);if(!result.success)throw new ConfigLoadError("Config validation failed",result.error.issues);return deepFreeze(result.data)}function isPlainObject4(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function deepFreeze(obj){Object.freeze(obj);for(let value of Object.values(obj))if(Array.isArray(value)){Object.freeze(value);for(let item of value)if(isPlainObject4(item)&&!Object.isFrozen(item))deepFreeze(item)}else if(isPlainObject4(value)&&!Object.isFrozen(value))deepFreeze(value);return obj}var configSchema3,ENV_INTERPOLATION_RE,YamlParseError,ConfigLoadError;var init_config2=__esm(()=>{init_dist();init_dist2();init_zod();configSchema3=exports_external.object({app:exports_external.object({name:exports_external.string().default("app"),env:exports_external.enum(["development","staging","production","test"]).default("development"),port:exports_external.number().int().positive().default(3000)}).default({name:"app",env:"development",port:3000}),database:exports_external.object({url:exports_external.string().default(":memory:")}).default({url:":memory:"}),logging:exports_external.object({level:exports_external.enum(["trace","debug","info","warn","error","fatal"]).default("info"),console:exports_external.boolean().default(!0),file:exports_external.boolean().default(!1),filePath:exports_external.string().optional(),json:exports_external.boolean().default(!1)}).default({level:"info",console:!0,file:!1,json:!1})}),ENV_INTERPOLATION_RE=/\$\{([A-Z_][A-Z0-9_]*)\}/g;YamlParseError=class YamlParseError extends Error{innerError;constructor(message,innerError){super(message);this.innerError=innerError,this.name="YamlParseError"}};ConfigLoadError=class ConfigLoadError extends Error{issues;constructor(message,issues=[]){super(message);this.name="ConfigLoadError",this.issues=issues}}});import{appendFileSync as appendFileSync2,cpSync,createReadStream as createReadStream2,createWriteStream as createWriteStream2,existsSync,mkdirSync,readdirSync,readFileSync as readFileSync3,realpathSync,renameSync,rmSync,statSync as statSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname,resolve as resolvePath2}from"node:path";function createNodeFileSystem2(root,paths){let projectRoot=root??findProjectRoot2(paths?.cwd??process.cwd());return{getProjectRoot:()=>projectRoot,resolve:(...segments)=>resolvePath2(projectRoot,...segments),exists:(path7)=>existsSync(path7),readFile:(path7)=>readFileSync3(path7,"utf-8"),readFileStream:async function*(path7){let stream=createReadStream2(path7,{encoding:"utf-8"}),buffer="";for await(let chunk of stream){buffer+=chunk;let lines=buffer.split(/\r?\n/);buffer=lines.pop()??"";for(let line of lines)yield line}if(buffer.length>0)yield buffer},writeFile:(path7,content)=>{ensureParentDir(path7),writeFileSync2(path7,content,"utf-8")},appendFile:(path7,content)=>{ensureParentDir(path7),appendFileSync2(path7,content,"utf-8")},ensureDir:(path7)=>{mkdirSync(path7,{recursive:!0})},readDir:(path7)=>readdirSync(path7),deleteFile:(path7)=>{rmSync(path7,{recursive:!0,force:!0})},rename:(src,dest)=>{renameSync(src,dest)},copy:(src,dest)=>{cpSync(src,dest,{recursive:!0})},createWriteStream:(path7)=>{return ensureParentDir(path7),createWriteStream2(path7,{flags:"a"})},stat:(path7)=>{try{let s2=statSync2(path7);return{isFile:()=>s2.isFile(),isDirectory:()=>s2.isDirectory(),size:s2.size,mtimeMs:s2.mtimeMs}}catch{return null}},realPath:(path7)=>realpathSync(path7)}}function ensureParentDir(filePath){let dir=dirname(filePath);if(!existsSync(dir))mkdirSync(dir,{recursive:!0})}function findProjectRoot2(startDir){let dir=resolvePath2(startDir),root=resolvePath2("/");while(dir!==root){if(existsSync(resolvePath2(dir,"bun.lock"))||existsSync(resolvePath2(dir,"package.json")))return dir;let parent=resolvePath2(dir,"..");if(parent===dir)break;dir=parent}return startDir}var init_file_system_node=()=>{};var DbModuleNotInstalledError2;var init_db_errors=__esm(()=>{DbModuleNotInstalledError2=class DbModuleNotInstalledError2 extends Error{constructor(message="@gobing-ai/ts-db is not installed. It is an optional peer of @gobing-ai/ts-runtime, required only for createDbAdapter on node-bun. Install it (`bun add @gobing-ai/ts-db`) or, when bundling, mark `@gobing-ai/ts-db` external.",options){super(message,options);this.name="DbModuleNotInstalledError"}}});function resolveDeadline(optionTimeout,defaultTimeout){if(optionTimeout===null)return null;let candidate=optionTimeout===void 0?defaultTimeout:optionTimeout;if(candidate===void 0||candidate===null)return candidate;if(!Number.isInteger(candidate)||candidate<=0||candidate>2147483647)throw TypeError(`Process timeout must be a positive integer within the native timer range (1-2147483647 ms), got ${String(candidate)}`);return candidate}function resolveKillGraceMs(optionGraceMs){if(optionGraceMs===void 0)return 5000;if(!Number.isInteger(optionGraceMs)||optionGraceMs<0||optionGraceMs>2147483647)throw TypeError(`Process killGraceMs must be a non-negative integer within the native timer range (0-2147483647 ms), got ${String(optionGraceMs)}`);return optionGraceMs}function groupExists(pid){try{return process.kill(-pid,0),!0}catch(error51){return error51.code==="EPERM"}}function signalGroup(pid,signal){try{return process.kill(-pid,signal),!0}catch{return!1}}async function waitForGroupExit(pid,budgetMs){let giveUpAt=Date.now()+budgetMs;while(groupExists(pid)){if(Date.now()>=giveUpAt)return!1;await new Promise((resolve)=>setTimeout(resolve,25))}return!0}async function reapProcessGroup(pid,graceMs){if(!signalGroup(pid,"SIGTERM"))return!1;if(await waitForGroupExit(pid,graceMs))return!0;return signalGroup(pid,"SIGKILL"),await waitForGroupExit(pid,2000),!0}function ownProcessGroupLifecycle(ownership){let{pid,graceMs}=ownership,trigger,termination,timer,initiate=(reason)=>{if(trigger!==void 0)return;trigger=reason,termination=reapProcessGroup(pid,graceMs)};if(ownership.deadlineMs!==void 0)timer=setTimeout(()=>initiate("timeout"),ownership.deadlineMs);let onAbort=()=>initiate("cancelled");if(ownership.signal!==void 0)if(ownership.signal.aborted)onAbort();else ownership.signal.addEventListener("abort",onAbort,{once:!0});return{finish:async()=>{if(trigger===void 0){await reapProcessGroup(pid,graceMs);return}return await termination?trigger:void 0},stop:()=>{if(timer!==void 0)clearTimeout(timer);ownership.signal?.removeEventListener("abort",onAbort)}}}import{spawnSync as spawnSync2}from"node:child_process";import{isatty}from"node:tty";function processEventSeverity(reason,exitCode){if(reason==="error")return"error";if(reason==="timeout"||reason==="cancelled")return"warning";if(exitCode!==null&&exitCode!==0)return"warning";return"info"}function resolveChildEnv(env2,envMode){if(envMode==="replace")return env2;let merged={};for(let[key,value]of Object.entries(getProcessEnv()))if(value!==void 0)merged[key]=value;return{...merged,...env2}}class NodeProcessExecutor2{config;constructor(config3={}){this.config=config3}async run(options){return this.trace("process.run",()=>this.runUntraced(options))}async runUntraced(options){let args=options.args??[],deadline=resolveDeadline(options.timeout,this.config.defaultTimeout),killGraceMs=resolveKillGraceMs(options.killGraceMs),groupOwned=process.platform!=="win32"&&(typeof deadline==="number"||options.signal!==void 0),execaOptions=buildExecaOptions({cwd:options.cwd??this.config.paths?.cwd,env:options.env,timeout:typeof deadline==="number"?deadline:void 0,maxOutput:options.maxOutput??this.config.defaultMaxOutput,rejectOnError:options.rejectOnError??!1,outputPolicy:this.config.output,forceBuffered:options.forceBuffered??!1,signal:options.signal,groupOwned}),startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"one-shot",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let ownership;try{let subprocess=execa(options.command,args,execaOptions);if(groupOwned&&subprocess.pid!==void 0)ownership=ownProcessGroupLifecycle({pid:subprocess.pid,deadlineMs:typeof deadline==="number"?deadline:void 0,signal:options.signal,graceMs:killGraceMs});if(subprocess.pid!==void 0){if(this.config.registry?.update(registryId,{pid:subprocess.pid}),options.onSpawn!==void 0)try{options.onSpawn(subprocess.pid)}catch{}}let stopOwnedTermination=()=>ownership?.stop();observeOutput(subprocess.stdout,"stdout",options.onOutput),observeOutput(subprocess.stderr,"stderr",options.onOutput);let result=await subprocess.finally(stopOwnedTermination),ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:result.exitCode??null,stdout:asString(result.stdout),stderr:asString(result.stderr),...result.signalDescription!==void 0?{signal:result.signalDescription}:{},durationMs:result.durationMs,outcome:ownedOutcome??(result.signalDescription!==void 0?"signal":"exit")};return this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,result),processResult}catch(error51){let failed=error51,ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:failed.exitCode??null,stdout:asString(failed.stdout),stderr:asString(failed.stderr),...failed.signalDescription!==void 0?{signal:failed.signalDescription}:failed.signal!==void 0?{signal:failed.signal}:{},durationMs:failed.durationMs??Date.now()-startedAt,outcome:ownedOutcome??classifyFailedCompletion(failed)};if(this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,error51,error51),options.rejectOnError)throw error51;return processResult}}runStreaming(options){let args=options.args??[],startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"other",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});try{this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let subprocess=Bun.spawn({cmd:[options.command,...args],stdin:"pipe",stdout:"pipe",stderr:"pipe",...options.cwd!==void 0?{cwd:options.cwd}:{},...options.env!==void 0?{env:resolveChildEnv(options.env,options.envMode)}:{}}),pipe2=new BunPipeProcess(subprocess);if(pipe2.pid!==null)this.config.registry?.update(registryId,{pid:pipe2.pid});return new ObservedPipeProcess(pipe2,this.config.events,{command:options.command,args,startedAt,registry:this.config.registry,registryId,...options.label!==void 0?{label:options.label}:{}})}catch(error51){throw this.completeRegistry(registryId,null),this.emitProcessEvent("process.exited",{command:options.command,args,exitCode:null,durationMs:0,reason:"error",timestamp:new Date().toISOString(),severity:processEventSeverity("error",null),...options.label!==void 0?{label:options.label}:{},error:errorMessage(error51)}),error51}}async trace(name,fn){if(this.config.tracer===void 0)return await fn();return await this.config.tracer.traceAsync(name,async()=>await fn())}beginRegistry(command,args,meta3){let registry2=this.config.registry;if(!registry2)return"";return registry2.begin({command,args,source:meta3.source,startedAt:meta3.startedAt,...meta3.label!==void 0?{label:meta3.label}:{},...meta3.teamId!==void 0?{teamId:meta3.teamId}:{},...meta3.agentId!==void 0?{agentId:meta3.agentId}:{}})}completeRegistry(id,exitCode,pid){if(!id||!this.config.registry)return;this.config.registry.complete(id,{exitCode,...pid!==void 0?{pid}:{}})}emitExitedFromResult(options,result,completion,error51){let reason=result.outcome??(isTimedOut(completion)?"timeout":result.signal!==void 0?"signal":error51?"error":"exit");this.emitProcessEvent("process.exited",{command:result.command,args:result.args,exitCode:result.exitCode,...result.signal!==void 0?{signal:result.signal}:{},durationMs:result.durationMs,reason,timestamp:new Date().toISOString(),severity:processEventSeverity(reason,result.exitCode),...options.label!==void 0?{label:options.label}:{},...error51!==void 0?{error:errorMessage(error51)}:{}})}emitProcessEvent(event,detail){this.config.events?.emit(event,detail)}}class ObservedPipeProcess{inner;killedWith;exited;constructor(inner,events,context2){this.inner=inner,this.exited=inner.exited.then((exitCode)=>{if(context2.registry&&context2.registryId)context2.registry.complete(context2.registryId,{exitCode,...inner.pid!==null?{pid:inner.pid}:{}});return events?.emit("process.exited",{command:context2.command,args:context2.args,exitCode,...this.killedWith!==void 0?{signal:String(this.killedWith)}:{},durationMs:Date.now()-context2.startedAt,reason:this.killedWith!==void 0?"signal":"exit",timestamp:new Date().toISOString(),severity:processEventSeverity(this.killedWith!==void 0?"signal":"exit",exitCode),...context2.label!==void 0?{label:context2.label}:{}}),exitCode})}get pid(){return this.inner.pid}get stdout(){return this.inner.stdout}get stderr(){return this.inner.stderr}writeStdin(input){this.inner.writeStdin(input)}endStdin(){this.inner.endStdin()}kill(signal){this.killedWith=signal,this.inner.kill(signal)}}class BunPipeProcess{subprocess;writer;constructor(subprocess){this.subprocess=subprocess,this.writer=subprocess.stdin}get pid(){return this.subprocess.pid??null}get stdout(){return isReadableStream3(this.subprocess.stdout)?this.subprocess.stdout:null}get stderr(){return isReadableStream3(this.subprocess.stderr)?this.subprocess.stderr:null}get exited(){return this.subprocess.exited}writeStdin(input){this.writer.write(input),this.writer.flush?.()}endStdin(){this.writer.end?.()}kill(signal){this.subprocess.kill(signal)}}class NodeSyncProcessExecutor2{runSync(options){let args=options.args??[],startedAt=Date.now(),result=spawnSync2(options.command,args,{stdio:["ignore","pipe","pipe"],...options.cwd!==void 0?{cwd:options.cwd}:{},...options.env!==void 0?{env:options.env}:{}}),exitCode=result.status??1;if(options.rejectOnError===!0&&exitCode!==0)throw Error(`${options.command} ${args.join(" ")} failed with exit code ${exitCode}: ${stripFinalNewline2(asString(result.stderr))}`);return{command:options.command,args,exitCode,stdout:stripFinalNewline2(asString(result.stdout)),stderr:stripFinalNewline2(asString(result.stderr)),durationMs:Date.now()-startedAt}}}function buildExecaOptions(opts){let mode=opts.forceBuffered?"buffered":opts.outputPolicy?.mode??"buffered",streamToTerminal=mode==="stream"&&(opts.outputPolicy?.mode==="stream"?opts.outputPolicy.isTTY??process.stdout.isTTY??isatty(1):!1);return{reject:opts.rejectOnError,stdin:"ignore",stripFinalNewline:!0,...mode==="pipe"?{stdout:"pipe",stderr:"pipe"}:streamToTerminal?{stdout:["inherit","pipe"],stderr:["inherit","pipe"]}:{all:!0},...opts.cwd!==void 0?{cwd:opts.cwd}:{},...opts.env!==void 0?{env:opts.env}:{},...opts.timeout!==void 0&&!opts.groupOwned?{timeout:opts.timeout}:{},...opts.maxOutput!==void 0?{maxBuffer:opts.maxOutput}:{},...opts.groupOwned?{detached:!0}:{},...opts.signal!==void 0&&!opts.groupOwned?{cancelSignal:opts.signal}:{}}}function classifyFailedCompletion(error51){if(error51.timedOut===!0)return"timeout";if(error51.isCanceled===!0)return"cancelled";if(error51.isTerminated===!0||error51.signalDescription!==void 0||error51.signal!==void 0)return"signal";return"error"}function observeOutput(stream,name,observer){if(!stream||!observer)return;let decoder=new TextDecoder,emit=(chunk)=>{try{observer({stream:name,chunk,timestamp:new Date().toISOString()})}catch{}};stream.on("data",(chunk)=>{emit(typeof chunk==="string"?chunk:decoder.decode(chunk,{stream:!0}))}),stream.on("end",()=>{let tail=decoder.decode();if(tail.length>0)emit(tail)})}function asString(value){if(typeof value==="string")return value;if(value instanceof Uint8Array)return new TextDecoder().decode(value);if(Array.isArray(value))return value.map(String).join("");return""}function stripFinalNewline2(value){return value.endsWith(`\r
287
+ )`}var init_ddl=__esm(()=>{init_sqlite_core()});var init_classic=__esm(()=>{init_external();init_external()});var init_v4=__esm(()=>{init_classic()});function isColumnType(column2,columnTypes){return columnTypes.includes(column2.columnType)}function isWithEnum(column2){return"enumValues"in column2&&Array.isArray(column2.enumValues)&&column2.enumValues.length>0}function columnToSchema(column2,factory){let z$1=factory?.zodInstance??exports_external,coerce=factory?.coerce??{},schema;if(isWithEnum(column2))schema=column2.enumValues.length?z$1.enum(column2.enumValues):z$1.string();if(!schema){if(isColumnType(column2,["PgGeometry","PgPointTuple"]))schema=z$1.tuple([z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgGeometryObject","PgPointObject"]))schema=z$1.object({x:z$1.number(),y:z$1.number()});else if(isColumnType(column2,["PgHalfVector","PgVector"]))schema=z$1.array(z$1.number()),schema=column2.dimensions?schema.length(column2.dimensions):schema;else if(isColumnType(column2,["PgLine"]))schema=z$1.tuple([z$1.number(),z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgLineABC"]))schema=z$1.object({a:z$1.number(),b:z$1.number(),c:z$1.number()});else if(isColumnType(column2,["PgArray"]))schema=z$1.array(columnToSchema(column2.baseColumn,factory)),schema=column2.size?schema.length(column2.size):schema;else if(column2.dataType==="array")schema=z$1.array(z$1.any());else if(column2.dataType==="number")schema=numberColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="bigint")schema=bigintColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="boolean")schema=coerce===!0||coerce.boolean?z$1.coerce.boolean():z$1.boolean();else if(column2.dataType==="date")schema=coerce===!0||coerce.date?z$1.coerce.date():z$1.date();else if(column2.dataType==="string")schema=stringColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="json")schema=jsonSchema;else if(column2.dataType==="custom")schema=z$1.any();else if(column2.dataType==="buffer")schema=bufferSchema}if(!schema)schema=z$1.any();return schema}function numberColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min,max,integer4=!1;if(isColumnType(column2,["MySqlTinyInt","SingleStoreTinyInt"]))min=unsigned?0:CONSTANTS.INT8_MIN,max=unsigned?CONSTANTS.INT8_UNSIGNED_MAX:CONSTANTS.INT8_MAX,integer4=!0;else if(isColumnType(column2,["PgSmallInt","PgSmallSerial","MySqlSmallInt","SingleStoreSmallInt"]))min=unsigned?0:CONSTANTS.INT16_MIN,max=unsigned?CONSTANTS.INT16_UNSIGNED_MAX:CONSTANTS.INT16_MAX,integer4=!0;else if(isColumnType(column2,["PgReal","MySqlFloat","MySqlMediumInt","SingleStoreMediumInt","SingleStoreFloat"]))min=unsigned?0:CONSTANTS.INT24_MIN,max=unsigned?CONSTANTS.INT24_UNSIGNED_MAX:CONSTANTS.INT24_MAX,integer4=isColumnType(column2,["MySqlMediumInt","SingleStoreMediumInt"]);else if(isColumnType(column2,["PgInteger","PgSerial","MySqlInt","SingleStoreInt"]))min=unsigned?0:CONSTANTS.INT32_MIN,max=unsigned?CONSTANTS.INT32_UNSIGNED_MAX:CONSTANTS.INT32_MAX,integer4=!0;else if(isColumnType(column2,["PgDoublePrecision","MySqlReal","MySqlDouble","SingleStoreReal","SingleStoreDouble","SQLiteReal"]))min=unsigned?0:CONSTANTS.INT48_MIN,max=unsigned?CONSTANTS.INT48_UNSIGNED_MAX:CONSTANTS.INT48_MAX;else if(isColumnType(column2,["PgBigInt53","PgBigSerial53","MySqlBigInt53","MySqlSerial","SingleStoreBigInt53","SingleStoreSerial","SQLiteInteger"]))unsigned=unsigned||isColumnType(column2,["MySqlSerial","SingleStoreSerial"]),min=unsigned?0:Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER,integer4=!0;else if(isColumnType(column2,["MySqlYear","SingleStoreYear"]))min=1901,max=2155,integer4=!0;else min=Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER;let schema=coerce===!0||coerce?.number?integer4?z2.coerce.number():z2.coerce.number().int():integer4?z2.int():z2.number();return schema=schema.gte(min).lte(max),schema}function bigintColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min=unsigned?0n:CONSTANTS.INT64_MIN,max=unsigned?CONSTANTS.INT64_UNSIGNED_MAX:CONSTANTS.INT64_MAX;return(coerce===!0||coerce?.bigint?z2.coerce.bigint():z2.bigint()).gte(min).lte(max)}function stringColumnToSchema(column2,z2,coerce){if(isColumnType(column2,["PgUUID"]))return z2.uuid();let max,regex,fixed=!1;if(isColumnType(column2,["PgVarchar","SQLiteText"]))max=column2.length;else if(isColumnType(column2,["MySqlVarChar","SingleStoreVarChar"]))max=column2.length??CONSTANTS.INT16_UNSIGNED_MAX;else if(isColumnType(column2,["MySqlText","SingleStoreText"]))if(column2.textType==="longtext")max=CONSTANTS.INT32_UNSIGNED_MAX;else if(column2.textType==="mediumtext")max=CONSTANTS.INT24_UNSIGNED_MAX;else if(column2.textType==="text")max=CONSTANTS.INT16_UNSIGNED_MAX;else max=CONSTANTS.INT8_UNSIGNED_MAX;if(isColumnType(column2,["PgChar","MySqlChar","SingleStoreChar"]))max=column2.length,fixed=!0;if(isColumnType(column2,["PgBinaryVector"]))regex=/^[01]+$/,max=column2.dimensions;let schema=coerce===!0||coerce?.string?z2.coerce.string():z2.string();return schema=regex?schema.regex(regex):schema,max&&fixed?schema.length(max):max?schema.max(max):schema}function getColumns(tableLike){return isTable(tableLike)?getTableColumns(tableLike):getViewSelectedFields(tableLike)}function handleColumns(columns2,refinements,conditions2,factory){let columnSchemas={};for(let[key,selected]of Object.entries(columns2)){if(!is(selected,Column)&&!is(selected,SQL)&&!is(selected,SQL.Aliased)&&typeof selected==="object"){let columns3=isTable(selected)||isView(selected)?getColumns(selected):selected;columnSchemas[key]=handleColumns(columns3,refinements[key]??{},conditions2,factory);continue}let refinement=refinements[key];if(refinement!==void 0&&typeof refinement!=="function"){columnSchemas[key]=refinement;continue}let column2=is(selected,Column)?selected:void 0,schema=column2?columnToSchema(column2,factory):exports_external.any(),refined=typeof refinement==="function"?refinement(schema):schema;if(conditions2.never(column2))continue;else columnSchemas[key]=refined;if(column2){if(conditions2.nullable(column2))columnSchemas[key]=columnSchemas[key].nullable();if(conditions2.optional(column2))columnSchemas[key]=columnSchemas[key].optional()}}return exports_external.object(columnSchemas)}function handleEnum(enum_,factory){return(factory?.zodInstance??exports_external).enum(enum_.enumValues)}var CONSTANTS,isPgEnum2,literalSchema,jsonSchema,bufferSchema,selectConditions,insertConditions,createSelectSchema=(entity2,refine2)=>{if(isPgEnum2(entity2))return handleEnum(entity2);let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},selectConditions)},createInsertSchema=(entity2,refine2)=>{let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},insertConditions)};var init_drizzle_zod=__esm(()=>{init_v4();init_drizzle_orm();CONSTANTS={INT8_MIN:-128,INT8_MAX:127,INT8_UNSIGNED_MAX:255,INT16_MIN:-32768,INT16_MAX:32767,INT16_UNSIGNED_MAX:65535,INT24_MIN:-8388608,INT24_MAX:8388607,INT24_UNSIGNED_MAX:16777215,INT32_MIN:-2147483648,INT32_MAX:2147483647,INT32_UNSIGNED_MAX:4294967295,INT48_MIN:-140737488355328,INT48_MAX:140737488355327,INT48_UNSIGNED_MAX:281474976710655,INT64_MIN:-9223372036854775808n,INT64_MAX:9223372036854775807n,INT64_UNSIGNED_MAX:18446744073709551615n};isPgEnum2=isWithEnum,literalSchema=exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null()]),jsonSchema=exports_external.union([literalSchema,exports_external.record(exports_external.string(),exports_external.any()),exports_external.array(exports_external.any())]),bufferSchema=exports_external.custom((v)=>v instanceof Buffer);selectConditions={never:()=>!1,optional:()=>!1,nullable:(column2)=>!column2.notNull},insertConditions={never:(column2)=>column2?.generated?.type==="always"||column2?.generatedIdentity?.type==="always",optional:(column2)=>!column2.notNull||column2.notNull&&column2.hasDefault,nullable:(column2)=>!column2.notNull}});function defineTable(name,columns2){let table3=sqliteTable(name,columns2),insert2,select3,ddl;return{table:table3,get insertSchema(){if(insert2===void 0)insert2=createInsertSchema(table3);return insert2},get selectSchema(){if(select3===void 0)select3=createSelectSchema(table3);return select3},get createTableSql(){if(ddl===void 0)ddl=generateCreateTableSql(table3);return ddl}}}var init_define_table=__esm(()=>{init_sqlite_core();init_drizzle_zod();init_ddl()});var init_schema=__esm(()=>{init_sqlite_core();init_define_table();init_common3()});function parseYamlObject(text3){let parsed;try{parsed=$parse(text3)}catch(error51){throw new YamlParseError(`YAML parsing failed: ${error51.message}`,error51 instanceof Error?error51:void 0)}if(parsed===null||parsed===void 0)return{};if(typeof parsed!=="object"||Array.isArray(parsed))throw new YamlParseError("YAML must parse to an object");return parsed}function stringifyYamlObject(value){return $stringify(value)}function getProcessEnv(){return getEnvVars()}function getHomeDir(){return getEnvVar("HOME")??getEnvVar("USERPROFILE")}function interpolateEnv(value){return value.replace(ENV_INTERPOLATION_RE,(_match,name)=>getEnvVar(name)??`\${${name}}`)}function interpolateTree(value){if(typeof value==="string")return interpolateEnv(value);if(Array.isArray(value))return value.map(interpolateTree);if(isPlainObject4(value))return Object.fromEntries(Object.entries(value).map(([key,child])=>[key,interpolateTree(child)]));return value}function buildConfigFromObject(raw,options={}){let interpolated=interpolateTree(raw),merged=options.overrides?deepMerge(interpolated,options.overrides):interpolated,result=configSchema3.safeParse(merged);if(!result.success)throw new ConfigLoadError("Config validation failed",result.error.issues);return deepFreeze(result.data)}function isPlainObject4(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function deepFreeze(obj){Object.freeze(obj);for(let value of Object.values(obj))if(Array.isArray(value)){Object.freeze(value);for(let item of value)if(isPlainObject4(item)&&!Object.isFrozen(item))deepFreeze(item)}else if(isPlainObject4(value)&&!Object.isFrozen(value))deepFreeze(value);return obj}var configSchema3,ENV_INTERPOLATION_RE,YamlParseError,ConfigLoadError;var init_config2=__esm(()=>{init_dist();init_dist2();init_zod();configSchema3=exports_external.object({app:exports_external.object({name:exports_external.string().default("app"),env:exports_external.enum(["development","staging","production","test"]).default("development"),port:exports_external.number().int().positive().default(3000)}).default({name:"app",env:"development",port:3000}),database:exports_external.object({url:exports_external.string().default(":memory:")}).default({url:":memory:"}),logging:exports_external.object({level:exports_external.enum(["trace","debug","info","warn","error","fatal"]).default("info"),console:exports_external.boolean().default(!0),file:exports_external.boolean().default(!1),filePath:exports_external.string().optional(),json:exports_external.boolean().default(!1)}).default({level:"info",console:!0,file:!1,json:!1})}),ENV_INTERPOLATION_RE=/\$\{([A-Z_][A-Z0-9_]*)\}/g;YamlParseError=class YamlParseError extends Error{innerError;constructor(message,innerError){super(message);this.innerError=innerError,this.name="YamlParseError"}};ConfigLoadError=class ConfigLoadError extends Error{issues;constructor(message,issues=[]){super(message);this.name="ConfigLoadError",this.issues=issues}}});import{appendFileSync as appendFileSync2,cpSync,createReadStream as createReadStream2,createWriteStream as createWriteStream2,existsSync,mkdirSync,readdirSync,readFileSync as readFileSync3,realpathSync,renameSync,rmSync,statSync as statSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname,resolve as resolvePath2}from"node:path";function createNodeFileSystem2(root,paths){let projectRoot=root??findProjectRoot2(paths?.cwd??process.cwd());return{getProjectRoot:()=>projectRoot,resolve:(...segments)=>resolvePath2(projectRoot,...segments),exists:(path7)=>existsSync(path7),readFile:(path7)=>readFileSync3(path7,"utf-8"),readFileStream:async function*(path7){let stream=createReadStream2(path7,{encoding:"utf-8"}),buffer="";for await(let chunk of stream){buffer+=chunk;let lines=buffer.split(/\r?\n/);buffer=lines.pop()??"";for(let line of lines)yield line}if(buffer.length>0)yield buffer},writeFile:(path7,content)=>{ensureParentDir(path7),writeFileSync2(path7,content,"utf-8")},appendFile:(path7,content)=>{ensureParentDir(path7),appendFileSync2(path7,content,"utf-8")},ensureDir:(path7)=>{mkdirSync(path7,{recursive:!0})},readDir:(path7)=>readdirSync(path7),deleteFile:(path7)=>{rmSync(path7,{recursive:!0,force:!0})},rename:(src,dest)=>{renameSync(src,dest)},copy:(src,dest)=>{cpSync(src,dest,{recursive:!0})},createWriteStream:(path7)=>{return ensureParentDir(path7),createWriteStream2(path7,{flags:"a"})},stat:(path7)=>{try{let s2=statSync2(path7);return{isFile:()=>s2.isFile(),isDirectory:()=>s2.isDirectory(),size:s2.size,mtimeMs:s2.mtimeMs}}catch{return null}},realPath:(path7)=>realpathSync(path7)}}function ensureParentDir(filePath){let dir=dirname(filePath);if(!existsSync(dir))mkdirSync(dir,{recursive:!0})}function findProjectRoot2(startDir){let dir=resolvePath2(startDir),root=resolvePath2("/");while(dir!==root){if(existsSync(resolvePath2(dir,"bun.lock"))||existsSync(resolvePath2(dir,"package.json")))return dir;let parent=resolvePath2(dir,"..");if(parent===dir)break;dir=parent}return startDir}var init_file_system_node=()=>{};var DbModuleNotInstalledError2;var init_db_errors=__esm(()=>{DbModuleNotInstalledError2=class DbModuleNotInstalledError2 extends Error{constructor(message="@gobing-ai/ts-db is not installed. It is an optional peer of @gobing-ai/ts-runtime, required only for createDbAdapter on node-bun. Install it (`bun add @gobing-ai/ts-db`) or, when bundling, mark `@gobing-ai/ts-db` external.",options){super(message,options);this.name="DbModuleNotInstalledError"}}});function resolveDeadline(optionTimeout,defaultTimeout){if(optionTimeout===null)return null;let candidate=optionTimeout===void 0?defaultTimeout:optionTimeout;if(candidate===void 0||candidate===null)return candidate;if(!Number.isInteger(candidate)||candidate<=0||candidate>2147483647)throw TypeError(`Process timeout must be a positive integer within the native timer range (1-2147483647 ms), got ${String(candidate)}`);return candidate}function resolveKillGraceMs(optionGraceMs){if(optionGraceMs===void 0)return 5000;if(!Number.isInteger(optionGraceMs)||optionGraceMs<0||optionGraceMs>2147483647)throw TypeError(`Process killGraceMs must be a non-negative integer within the native timer range (0-2147483647 ms), got ${String(optionGraceMs)}`);return optionGraceMs}function groupExists(pid){try{return process.kill(-pid,0),!0}catch(error51){return error51.code==="EPERM"}}function signalGroup(pid,signal){try{return process.kill(-pid,signal),!0}catch{return!1}}async function waitForGroupExit(pid,budgetMs){let giveUpAt=Date.now()+budgetMs;while(groupExists(pid)){if(Date.now()>=giveUpAt)return!1;await new Promise((resolve)=>setTimeout(resolve,25))}return!0}async function reapProcessGroup(pid,graceMs){if(!signalGroup(pid,"SIGTERM"))return!1;if(await waitForGroupExit(pid,graceMs))return!0;return signalGroup(pid,"SIGKILL"),await waitForGroupExit(pid,2000),!0}function ownProcessGroupLifecycle(ownership){let{pid,graceMs}=ownership,trigger,termination,timer,initiate=(reason)=>{if(trigger!==void 0)return;trigger=reason,termination=reapProcessGroup(pid,graceMs)};if(ownership.deadlineMs!==void 0)timer=setTimeout(()=>initiate("timeout"),ownership.deadlineMs);let onAbort=()=>initiate("cancelled");if(ownership.signal!==void 0)if(ownership.signal.aborted)onAbort();else ownership.signal.addEventListener("abort",onAbort,{once:!0});return{finish:async()=>{if(trigger===void 0){await reapProcessGroup(pid,graceMs);return}return await termination?trigger:void 0},stop:()=>{if(timer!==void 0)clearTimeout(timer);ownership.signal?.removeEventListener("abort",onAbort)}}}import{spawnSync as spawnSync2}from"node:child_process";import{isatty}from"node:tty";function processEventSeverity(reason,exitCode){if(reason==="error")return"error";if(reason==="timeout"||reason==="cancelled")return"warning";if(exitCode!==null&&exitCode!==0)return"warning";return"info"}function resolveChildEnv(env2,envMode){if(envMode==="replace")return env2;let merged={};for(let[key,value]of Object.entries(getProcessEnv()))if(value!==void 0)merged[key]=value;return{...merged,...env2}}class NodeProcessExecutor2{config;constructor(config3={}){this.config=config3}async run(options){return this.trace("process.run",()=>this.runUntraced(options))}async runUntraced(options){let args=options.args??[],deadline=resolveDeadline(options.timeout,this.config.defaultTimeout),killGraceMs=resolveKillGraceMs(options.killGraceMs),groupOwned=process.platform!=="win32"&&(typeof deadline==="number"||options.signal!==void 0),execaOptions=buildExecaOptions({cwd:options.cwd??this.config.paths?.cwd,env:options.env,timeout:typeof deadline==="number"?deadline:void 0,maxOutput:options.maxOutput??this.config.defaultMaxOutput,rejectOnError:options.rejectOnError??!1,outputPolicy:this.config.output,forceBuffered:options.forceBuffered??!1,signal:options.signal,groupOwned}),startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"one-shot",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let ownership;try{let subprocess=execa(options.command,args,execaOptions);if(groupOwned&&subprocess.pid!==void 0)ownership=ownProcessGroupLifecycle({pid:subprocess.pid,deadlineMs:typeof deadline==="number"?deadline:void 0,signal:options.signal,graceMs:killGraceMs});if(subprocess.pid!==void 0){if(this.config.registry?.update(registryId,{pid:subprocess.pid}),options.onSpawn!==void 0)try{options.onSpawn(subprocess.pid)}catch{}}let stopOwnedTermination=()=>ownership?.stop();observeOutput(subprocess.stdout,"stdout",options.onOutput),observeOutput(subprocess.stderr,"stderr",options.onOutput);let result=await subprocess.finally(stopOwnedTermination),ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:result.exitCode??null,stdout:asString(result.stdout),stderr:asString(result.stderr),...result.signalDescription!==void 0?{signal:result.signalDescription}:{},durationMs:result.durationMs,outcome:ownedOutcome??(result.signalDescription!==void 0?"signal":"exit")};return this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,result),processResult}catch(error51){let failed=error51,ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:failed.exitCode??null,stdout:asString(failed.stdout),stderr:asString(failed.stderr),...failed.signalDescription!==void 0?{signal:failed.signalDescription}:failed.signal!==void 0?{signal:failed.signal}:{},durationMs:failed.durationMs??Date.now()-startedAt,outcome:ownedOutcome??classifyFailedCompletion(failed)};if(this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,error51,error51),options.rejectOnError)throw error51;return processResult}}runStreaming(options){let args=options.args??[],startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"other",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});try{this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let subprocess=Bun.spawn({cmd:[options.command,...args],stdin:"pipe",stdout:"pipe",stderr:"pipe",...options.cwd!==void 0?{cwd:options.cwd}:{},...options.env!==void 0?{env:resolveChildEnv(options.env,options.envMode)}:{}}),pipe2=new BunPipeProcess(subprocess);if(pipe2.pid!==null)this.config.registry?.update(registryId,{pid:pipe2.pid});return new ObservedPipeProcess(pipe2,this.config.events,{command:options.command,args,startedAt,registry:this.config.registry,registryId,...options.label!==void 0?{label:options.label}:{}})}catch(error51){throw this.completeRegistry(registryId,null),this.emitProcessEvent("process.exited",{command:options.command,args,exitCode:null,durationMs:0,reason:"error",timestamp:new Date().toISOString(),severity:processEventSeverity("error",null),...options.label!==void 0?{label:options.label}:{},error:errorMessage(error51)}),error51}}async trace(name,fn){if(this.config.tracer===void 0)return await fn();return await this.config.tracer.traceAsync(name,async()=>await fn())}beginRegistry(command,args,meta3){let registry2=this.config.registry;if(!registry2)return"";return registry2.begin({command,args,source:meta3.source,startedAt:meta3.startedAt,...meta3.label!==void 0?{label:meta3.label}:{},...meta3.teamId!==void 0?{teamId:meta3.teamId}:{},...meta3.agentId!==void 0?{agentId:meta3.agentId}:{}})}completeRegistry(id,exitCode,pid){if(!id||!this.config.registry)return;this.config.registry.complete(id,{exitCode,...pid!==void 0?{pid}:{}})}emitExitedFromResult(options,result,completion,error51){let reason=result.outcome??(isTimedOut(completion)?"timeout":result.signal!==void 0?"signal":error51?"error":"exit");this.emitProcessEvent("process.exited",{command:result.command,args:result.args,exitCode:result.exitCode,...result.signal!==void 0?{signal:result.signal}:{},durationMs:result.durationMs,reason,timestamp:new Date().toISOString(),severity:processEventSeverity(reason,result.exitCode),...options.label!==void 0?{label:options.label}:{},...error51!==void 0?{error:errorMessage(error51)}:{}})}emitProcessEvent(event,detail){this.config.events?.emit(event,detail)}}class ObservedPipeProcess{inner;killedWith;exited;constructor(inner,events,context2){this.inner=inner,this.exited=inner.exited.then((exitCode)=>{if(context2.registry&&context2.registryId)context2.registry.complete(context2.registryId,{exitCode,...inner.pid!==null?{pid:inner.pid}:{}});return events?.emit("process.exited",{command:context2.command,args:context2.args,exitCode,...this.killedWith!==void 0?{signal:String(this.killedWith)}:{},durationMs:Date.now()-context2.startedAt,reason:this.killedWith!==void 0?"signal":"exit",timestamp:new Date().toISOString(),severity:processEventSeverity(this.killedWith!==void 0?"signal":"exit",exitCode),...context2.label!==void 0?{label:context2.label}:{}}),exitCode})}get pid(){return this.inner.pid}get stdout(){return this.inner.stdout}get stderr(){return this.inner.stderr}writeStdin(input){this.inner.writeStdin(input)}endStdin(){this.inner.endStdin()}kill(signal){this.killedWith=signal,this.inner.kill(signal)}}class BunPipeProcess{subprocess;writer;constructor(subprocess){this.subprocess=subprocess,this.writer=subprocess.stdin}get pid(){return this.subprocess.pid??null}get stdout(){return isReadableStream3(this.subprocess.stdout)?this.subprocess.stdout:null}get stderr(){return isReadableStream3(this.subprocess.stderr)?this.subprocess.stderr:null}get exited(){return this.subprocess.exited}writeStdin(input){this.writer.write(input),this.writer.flush?.()}endStdin(){this.writer.end?.()}kill(signal){this.subprocess.kill(signal)}}class NodeSyncProcessExecutor2{runSync(options){let args=options.args??[],startedAt=Date.now(),result=spawnSync2(options.command,args,{stdio:["ignore","pipe","pipe"],...options.cwd!==void 0?{cwd:options.cwd}:{},...options.env!==void 0?{env:options.env}:{}}),exitCode=result.status??1;if(options.rejectOnError===!0&&exitCode!==0)throw Error(`${options.command} ${args.join(" ")} failed with exit code ${exitCode}: ${stripFinalNewline2(asString(result.stderr))}`);return{command:options.command,args,exitCode,stdout:stripFinalNewline2(asString(result.stdout)),stderr:stripFinalNewline2(asString(result.stderr)),durationMs:Date.now()-startedAt}}}function buildExecaOptions(opts){let mode=opts.forceBuffered?"buffered":opts.outputPolicy?.mode??"buffered",streamToTerminal=mode==="stream"&&(opts.outputPolicy?.mode==="stream"?opts.outputPolicy.isTTY??process.stdout.isTTY??isatty(1):!1);return{reject:opts.rejectOnError,stdin:"ignore",stripFinalNewline:!0,...mode==="pipe"?{stdout:"pipe",stderr:"pipe"}:streamToTerminal?{stdout:["inherit","pipe"],stderr:["inherit","pipe"]}:{all:!0},...opts.cwd!==void 0?{cwd:opts.cwd}:{},...opts.env!==void 0?{env:opts.env}:{},...opts.timeout!==void 0&&!opts.groupOwned?{timeout:opts.timeout}:{},...opts.maxOutput!==void 0?{maxBuffer:opts.maxOutput}:{},...opts.groupOwned?{detached:!0}:{},...opts.signal!==void 0&&!opts.groupOwned?{cancelSignal:opts.signal}:{}}}function classifyFailedCompletion(error51){if(error51.timedOut===!0)return"timeout";if(error51.isCanceled===!0)return"cancelled";if(error51.isTerminated===!0||error51.signalDescription!==void 0||error51.signal!==void 0)return"signal";return"error"}function observeOutput(stream,name,observer){if(!stream||!observer)return;let decoder=new TextDecoder,emit=(chunk)=>{try{observer({stream:name,chunk,timestamp:new Date().toISOString()})}catch{}};stream.on("data",(chunk)=>{emit(typeof chunk==="string"?chunk:decoder.decode(chunk,{stream:!0}))}),stream.on("end",()=>{let tail=decoder.decode();if(tail.length>0)emit(tail)})}function asString(value){if(typeof value==="string")return value;if(value instanceof Uint8Array)return new TextDecoder().decode(value);if(Array.isArray(value))return value.map(String).join("");return""}function stripFinalNewline2(value){return value.endsWith(`\r
288
288
  `)?value.slice(0,-2):value.endsWith(`
289
289
  `)?value.slice(0,-1):value}function isReadableStream3(value){return value instanceof ReadableStream}function isTimedOut(error51){return typeof error51==="object"&&error51!==null&&"timedOut"in error51&&error51.timedOut===!0}function errorMessage(error51){return error51 instanceof Error?error51.message:String(error51)}var init_process_executor=__esm(()=>{init_execa();init_config2()});import{Database as Database3}from"bun:sqlite";var init_bun_sqlite4=()=>{};var inboxMessages2;var init_inbox_messages2=__esm(()=>{init_sqlite_core();inboxMessages2=sqliteTable("inbox_messages",{id:text("id").primaryKey(),fromId:text("from_id"),toId:text("to_id").notNull(),body:text("body").notNull(),status:text("status").notNull().default("queued"),inReplyTo:text("in_reply_to"),createdAt:integer2("created_at").notNull(),updatedAt:integer2("updated_at").notNull(),deliveredAt:integer2("delivered_at"),injectAttempts:integer2("inject_attempts").notNull().default(0),injectError:text("inject_error"),requestKey:text("request_key")},(table3)=>[index("idx_inbox_messages_to_status").on(table3.toId,table3.status)])});function nowTimestamp2(){return Date.now()}function buildStandardColumns2(){return{createdAt:integer2("created_at").notNull().$defaultFn(nowTimestamp2).default(0),updatedAt:integer2("updated_at").notNull().$defaultFn(nowTimestamp2).default(0)}}function buildStandardColumnsWithSoftDelete2(){return{...buildStandardColumns2(),inUsed:integer2("in_used").notNull().default(1)}}function buildAppendOnlyColumns2(){return{createdAt:integer2("created_at").notNull().$defaultFn(nowTimestamp2).default(0)}}var standardColumns2,standardColumnsWithSoftDelete2,appendOnlyColumns2;var init_common4=__esm(()=>{init_sqlite_core();standardColumns2=buildStandardColumns2();standardColumnsWithSoftDelete2=buildStandardColumnsWithSoftDelete2();appendOnlyColumns2=buildAppendOnlyColumns2()});var queueJobs2;var init_queue_jobs2=__esm(()=>{init_sqlite_core();init_common4();queueJobs2=sqliteTable("queue_jobs",{id:text("id").primaryKey(),type:text("type").notNull(),payload:text("payload").notNull(),status:text("status").notNull().default("pending"),attempts:integer2("attempts").notNull().default(0),maxRetries:integer2("max_retries").notNull().default(3),...standardColumns2,nextRetryAt:integer2("next_retry_at"),lastError:text("last_error"),processingAt:integer2("processing_at"),expiresAt:integer2("expires_at"),timeoutMs:integer2("timeout_ms"),timeoutUnlimited:integer2("timeout_unlimited").notNull().default(0),attemptToken:text("attempt_token"),leaseExpiresAt:integer2("lease_expires_at")},(table3)=>[index("queue_jobs_ready_idx").on(table3.status,table3.nextRetryAt,table3.createdAt)])});var exports_runtime2={};__export(exports_runtime2,{queueJobs:()=>queueJobs2,inboxMessages:()=>inboxMessages2});var init_runtime2=__esm(()=>{init_inbox_messages2();init_queue_jobs2()});var exports_bun_sqlite2={};__export(exports_bun_sqlite2,{BunSqliteAdapter:()=>BunSqliteAdapter2});class BunSqliteAdapter2{sqlite;drizzleDb;stmtCache=new Map;getStatement(sql4){let cached2=this.stmtCache.get(sql4);if(cached2!==void 0)return cached2;let stmt=this.sqlite.prepare(sql4);return this.stmtCache.set(sql4,stmt),stmt}constructor(options){let dbPath=options?.databaseUrl??DEFAULT_DB_PATH2,pragmas={...DEFAULT_PRAGMAS2,...options?.pragmas};if(dbPath!==":memory:"&&!isAbsolutePath2(dbPath))dbPath=resolvePath3(dbPath);this.sqlite=new Database3(dbPath,{create:!0}),this.sqlite.run(pragmas.journalMode),this.sqlite.run(pragmas.synchronous),this.sqlite.run(pragmas.foreignKeys),this.sqlite.run(pragmas.busyTimeout),this.drizzleDb=drizzle({client:this.sqlite,schema:exports_runtime2})}get db(){return this.drizzleDb}getDrizzleDb(){return this.drizzleDb}async exec(sql4){this.sqlite.prepare(sql4).run()}async run(sql4,...params){this.getStatement(sql4).run(...params)}async queryFirst(sql4,...params){return this.getStatement(sql4).get(...params)??void 0}async queryAll(sql4,...params){return this.getStatement(sql4).all(...params)??[]}async batch(operations2){if(operations2.length===0)return;this.sqlite.transaction(()=>{for(let op of operations2)this.getStatement(op.sql).run(...op.params)})()}close(){this.sqlite.close()}}var DEFAULT_PRAGMAS2,DEFAULT_DB_PATH2=".spur/spur.db";var init_bun_sqlite5=__esm(()=>{init_dist6();init_bun_sqlite4();init_bun_sqlite2();init_runtime2();DEFAULT_PRAGMAS2={journalMode:"PRAGMA journal_mode = WAL",synchronous:"PRAGMA synchronous = NORMAL",foreignKeys:"PRAGMA foreign_keys = ON",busyTimeout:"PRAGMA busy_timeout = 5000"}});var exports_d12={};__export(exports_d12,{D1Adapter:()=>D1Adapter2});class D1Adapter2{binding;drizzleDb;constructor(binding){this.binding=binding,this.drizzleDb=drizzle2(this.binding,{schema:exports_runtime2})}get db(){return this.drizzleDb}getDrizzleDb(){return this.drizzleDb}getBinding(){return this.binding}async exec(sql4){await this.binding.exec(sql4)}async run(sql4,...params){let stmt=this.binding.prepare(sql4);await(params.length>0?stmt.bind(...params):stmt).run()}async queryFirst(sql4,...params){let stmt=this.binding.prepare(sql4);return await(params.length>0?stmt.bind(...params):stmt).first()??void 0}async queryAll(sql4,...params){return(await this.binding.prepare(sql4).bind(...params).all()).results??[]}async batch(operations2){if(operations2.length===0)return;if(this.binding.batch===void 0&&operations2.length>1)throw Error(`D1 binding has no batch() — cannot execute ${operations2.length} statements atomically; provide a binding with native batch() support`);let boundStmts=operations2.map((op)=>{let stmt=this.binding.prepare(op.sql);return op.params.length>0?stmt.bind(...op.params):stmt.bind()});if(this.binding.batch!==void 0)await this.binding.batch(boundStmts);else await boundStmts[0]?.run()}close(){}}var init_d13=__esm(()=>{init_d1();init_runtime2()});async function createDbAdapter2(config3){switch(config3.driver){case"bun-sqlite":{let{BunSqliteAdapter:BunSqliteAdapter3}=await Promise.resolve().then(() => (init_bun_sqlite5(),exports_bun_sqlite2));return new BunSqliteAdapter3({...config3.url?{databaseUrl:config3.url}:{},...config3.pragmas?{pragmas:config3.pragmas}:{}})}case"d1":{let{D1Adapter:D1Adapter3}=await Promise.resolve().then(() => (init_d13(),exports_d12));return new D1Adapter3(config3.binding)}}}function compilePredicate2(predicate){if("and"in predicate){let parts=predicate.and.map(compilePredicate2).filter((p)=>p!==void 0);return parts.length>0?and(...parts):void 0}if("or"in predicate){let parts=predicate.or.map(compilePredicate2).filter((p)=>p!==void 0);return parts.length>0?or(...parts):void 0}switch(predicate.op){case"isNull":return isNull(predicate.col);case"isNotNull":return isNotNull(predicate.col);case"in":return inArray(predicate.col,predicate.values);default:return COMPARISON_BUILDERS2[predicate.op](predicate.col,predicate.value)}}function compileOrderBy2(orderBy){return orderBy.map((term)=>term.dir==="desc"?desc(term.col):asc(term.col))}var COMPARISON_BUILDERS2;var init_query_spec2=__esm(()=>{init_drizzle_orm();COMPARISON_BUILDERS2={eq:(col,value)=>eq(col,value),ne:(col,value)=>ne(col,value),gt:(col,value)=>gt(col,value),gte:(col,value)=>gte(col,value),lt:(col,value)=>lt(col,value),lte:(col,value)=>lte(col,value),like:(col,value)=>like(col,value)}});function asSelectQuery2(query){return query}class BaseDao2{adapter;constructor(adapter){this.adapter=adapter}get db(){return this.adapter.db}now(){return Date.now()}async tx(fn){return this.db.transaction((tx)=>fn(tx))}async query(table3,spec={}){let condition=spec.where?compilePredicate2(spec.where):void 0,order=spec.orderBy?compileOrderBy2(spec.orderBy):[],q=asSelectQuery2(this.db.select().from(table3));if(condition)q=q.where(condition);if(order.length>0)q=q.orderBy(...order);if(spec.limit!==void 0)q=q.limit(spec.limit);if(spec.offset!==void 0)q=q.offset(spec.offset);return await q??[]}async one(table3,where){return(await this.query(table3,{where,limit:1}))[0]}}var init_base_dao2=__esm(()=>{init_query_spec2()});var embeddedMigrations2;var init_embedded_migrations2=__esm(()=>{embeddedMigrations2=[{tag:"0000_init",sql:"CREATE TABLE `queue_jobs` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`type` text NOT NULL,\n\t`payload` text NOT NULL,\n\t`status` text DEFAULT 'pending' NOT NULL,\n\t`attempts` integer DEFAULT 0 NOT NULL,\n\t`max_retries` integer DEFAULT 3 NOT NULL,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer NOT NULL,\n\t`next_retry_at` integer,\n\t`last_error` text,\n\t`processing_at` integer\n);\n",hash:"558dea3834348925f79b4d30ca79d0afd0d990b2883341377d369444d50ce76e"},{tag:"0001_salty_red_ghost",sql:"CREATE INDEX `queue_jobs_ready_idx` ON `queue_jobs` (`status`,`next_retry_at`,`created_at`);",hash:"f842da3f49edeec8a17bcab399669410db09996ab258dc4fa781357d0400ddbf"},{tag:"0002_nasty_namora",sql:"ALTER TABLE `queue_jobs` ADD `expires_at` integer;",hash:"7380f8c162352a61b15205af5a87e0e7313a499203dae98fe62151a1dc7fec0e"},{tag:"0003_inbox_messages",sql:"CREATE TABLE `inbox_messages` (\n\t`id` text PRIMARY KEY NOT NULL,\n\t`from_id` text,\n\t`to_id` text NOT NULL,\n\t`body` text NOT NULL,\n\t`status` text DEFAULT 'queued' NOT NULL,\n\t`in_reply_to` text,\n\t`created_at` integer NOT NULL,\n\t`updated_at` integer NOT NULL,\n\t`delivered_at` integer,\n\t`inject_attempts` integer DEFAULT 0 NOT NULL,\n\t`inject_error` text\n);",hash:"c4ba569172d1be276c42b5c164c668404e6229dcf48b41d7fb2bc93e8d29d11b"},{tag:"0004_inbox_messages_to_status_idx",sql:"CREATE INDEX `idx_inbox_messages_to_status` ON `inbox_messages` (`to_id`,`status`);",hash:"3c00f1bce4f569e442f3142df31ff478d6c9b3d460824d46575f50a324bfae61"},{tag:"0005_queue_attempt_ownership",sql:"ALTER TABLE `queue_jobs` ADD `timeout_ms` integer;\nALTER TABLE `queue_jobs` ADD `timeout_unlimited` integer DEFAULT 0 NOT NULL;\nALTER TABLE `queue_jobs` ADD `attempt_token` text;\nALTER TABLE `queue_jobs` ADD `lease_expires_at` integer;",hash:"f6a4eaf11eee838f424515e57eca3a46539260bb2fb5b0b112870ca5ed38d040"},{tag:"0014_inbox_messages_request_key",sql:"ALTER TABLE `inbox_messages` ADD `request_key` text;\nCREATE UNIQUE INDEX `idx_inbox_messages_request_key` ON `inbox_messages` (`request_key`) WHERE `request_key` IS NOT NULL;\n",hash:"7277e79f8339975b29565e7b33e04f0dbd50995b99b82048fd83079757334f71"}]});var EntityDao2;var init_entity_dao2=__esm(()=>{init_drizzle_orm();init_base_dao2();init_query_spec2();EntityDao2=class EntityDao2 extends BaseDao2{table;primaryKey;collectionName;validation;constructor(adapter,table3,primaryKey,collectionName,options={}){super(adapter);this.table=table3,this.primaryKey=Array.isArray(primaryKey)?primaryKey:[primaryKey],this.collectionName=collectionName,this.validation=options}validate(op,input){let schema=op==="update"?this.validation.updateSchema:this.validation.insertSchema;if(schema===void 0)return;if(!(this.validation.validateOn??["create","createMany","upsert","update"]).includes(op))return;schema.parse(input)}get hasSoftDelete(){return"inUsed"in this.table}get activeCondition(){let table3=this.table;if("inUsed"in table3)return eq(table3.inUsed,1);return}pkCondition(id){let values=Array.isArray(id)?id:[id];if(values.length!==this.primaryKey.length)throw Error(`${this.collectionName}: primary key expects ${this.primaryKey.length} value(s), got ${values.length}`);let parts=this.primaryKey.map((col,i2)=>eq(col,values[i2]));return parts.length===1?parts[0]:and(...parts)}get insertBuilder(){return this.db.insert(this.table)}async create(data){let now=this.now(),record2={createdAt:now,updatedAt:now,...data};return this.validate("create",record2),(await this.insertBuilder.values(record2).returning())[0]}async createMany(data){if(data.length===0)return[];let now=this.now(),records=data.map((d)=>({createdAt:now,updatedAt:now,...d}));for(let record2 of records)this.validate("createMany",record2);return await this.insertBuilder.values(records).returning()}async upsert(data,conflictColumns,updateColumns){let now=this.now(),record2={createdAt:now,updatedAt:now,...data};this.validate("upsert",record2);let identityCols=new Set([...conflictColumns,...this.primaryKey]),identityProps=new Set(Object.entries(this.table).filter(([,col])=>identityCols.has(col)).map(([key])=>key)),defaultSet=Object.fromEntries(Object.entries(data).filter(([key])=>!identityProps.has(key))),setOnConflict={...updateColumns??defaultSet,updatedAt:now};return(await this.insertBuilder.values(record2).onConflictDoUpdate({target:conflictColumns,set:setOnConflict}).returning())[0]}async findById(id,includeDeleted=!1){let conditions2=[this.pkCondition(id)];if(!includeDeleted&&this.activeCondition)conditions2.push(this.activeCondition);return(await this.db.select().from(this.table).where(and(...conditions2)))[0]}async findAll(includeDeleted=!1){return this.list({includeDeleted})}async findBy(column2,value,includeDeleted=!1){return(await this.list({where:{col:column2,op:"eq",value},limit:1,includeDeleted}))[0]}async findAllBy(column2,value,includeDeleted=!1){return this.list({where:{col:column2,op:"eq",value},includeDeleted})}async update(id,data){let updateData={...data,updatedAt:this.now()};return this.validate("update",updateData),(await this.db.update(this.table).set(updateData).where(this.pkCondition(id)).returning())[0]}async delete(id,soft){if((soft??this.hasSoftDelete)&&this.hasSoftDelete)return this.update(id,{inUsed:0});await this.db.delete(this.table).where(this.pkCondition(id));return}async list(spec={}){let where=this.withActive(spec.where,spec.includeDeleted);return this.query(this.table,{...where?{where}:{},...spec.orderBy?{orderBy:spec.orderBy}:{},...spec.limit!==void 0?{limit:spec.limit}:{},...spec.offset!==void 0?{offset:spec.offset}:{}})}async listByCursor(spec){let dir=spec.direction??"asc",filters=[];if(spec.where)filters.push(spec.where);if(spec.cursor!==void 0)filters.push({col:spec.cursorColumn,op:dir==="asc"?"gt":"lt",value:spec.cursor});let where=this.withActive(filters.length>0?{and:filters}:void 0,spec.includeDeleted),rows=await this.query(this.table,{...where?{where}:{},orderBy:[{col:spec.cursorColumn,dir}],limit:spec.limit}),last=rows[rows.length-1],cursorResultKey=this.resultKeyForColumn(spec.cursorColumn),nextCursor=rows.length===spec.limit&&last?last[cursorResultKey]:void 0;return nextCursor!==void 0?{rows,nextCursor}:{rows}}resultKeyForColumn(column2){for(let[key,value]of Object.entries(this.table))if(value===column2)return key;return column2.name}async count(where,includeDeleted=!1){let condition=this.withActive(where,includeDeleted),compiled=condition?compilePredicate2(condition):void 0,base2=this.db.select({value:count2()}).from(this.table);return(await(compiled?base2.where(compiled):base2))[0]?.value??0}withActive(where,includeDeleted){if(includeDeleted||!this.hasSoftDelete)return where;let table3=this.table;if(!("inUsed"in table3))return where;let active={col:table3.inUsed,op:"eq",value:1};if(!where)return active;return{and:[where,active]}}}});function isPromiseLike2(value){return value!==null&&(typeof value==="object"||typeof value==="function")&&typeof value.then==="function"}function isRequestKeyUniqueViolation2(error51){let msg=error51 instanceof Error?error51.message:String(error51);return msg.includes("UNIQUE constraint failed")&&(msg.includes("idx_inbox_messages_request_key")||msg.includes("inbox_messages.request_key"))}var RequestKeyConflictError2,InboxMessageDao2;var init_inbox_message_dao2=__esm(()=>{init_drizzle_orm();init_entity_dao2();init_inbox_messages2();RequestKeyConflictError2=class RequestKeyConflictError2 extends Error{requestKey;existingId;constructor(requestKey,existingId){super("Request key conflict: key is already bound to another payload"+(existingId?` (existing message id: ${existingId})`:""));this.name="RequestKeyConflictError",this.requestKey=requestKey,this.existingId=existingId}};InboxMessageDao2=class InboxMessageDao2 extends EntityDao2{events;constructor(adapter,options={}){super(adapter,inboxMessages2,[inboxMessages2.id],"inbox_messages");this.events=options.events}async enqueue(fromId,toId,body,inReplyTo){let id=crypto.randomUUID(),now=this.now();return await this.create({id,fromId,toId,body,status:"queued",injectAttempts:0,createdAt:now,updatedAt:now,...inReplyTo!==void 0?{inReplyTo}:{}}),this.emitEvent("message.enqueued",{id,fromId,toId,...inReplyTo!==void 0?{inReplyTo}:{},timestamp:now}),id}async enqueueIdempotent(fromId,toId,body,requestKey,inReplyTo){let id=crypto.randomUUID(),now=this.now();try{await this.create({id,fromId,toId,body,status:"queued",injectAttempts:0,requestKey,createdAt:now,updatedAt:now,...inReplyTo!==void 0?{inReplyTo}:{}})}catch(error51){if(isRequestKeyUniqueViolation2(error51)){let existing=await this.findBy(inboxMessages2.requestKey,requestKey);if(existing&&existing.body===body&&existing.toId===toId)return{id:existing.id,replayed:!0};throw new RequestKeyConflictError2(requestKey,existing?.id??"")}throw error51}return this.emitEvent("message.enqueued",{id,fromId,toId,...inReplyTo!==void 0?{inReplyTo}:{},timestamp:now}),{id,replayed:!1}}async drainPending(toId,options){let limit=options?.limit??100;if(!Number.isInteger(limit)||limit<=0)throw RangeError(`drainPending limit must be a positive integer; received ${limit}`);let now=this.now(),rows=await this.db.update(inboxMessages2).set({status:"injected",injectAttempts:sql`${inboxMessages2.injectAttempts} + 1`,updatedAt:now}).where(sql`${inboxMessages2.id} IN (
290
290
  SELECT id
@@ -331,7 +331,15 @@ ${promptOptions.input}`;return{...promptOptions,input}}var AGENT_RUN_ID_ENV="SPU
331
331
  ${result.stderr}`.trim(),lower=output2.toLowerCase();if(lower.includes("command not found")||lower.includes("enoent")||lower.includes("not recognized"))return unavailable(canonical,`${command}: command not found`);if(result.signal!==void 0)return unavailable(canonical,`Terminated by signal: ${result.signal}`);if(result.exitCode===null)return unavailable(canonical,"Process did not produce an exit code");if(result.exitCode!==0)return unavailable(canonical,`Non-zero exit code: ${result.exitCode}. stderr: ${result.stderr.slice(0,200)}`);let match=VERSION_PATTERN.exec(output2);if(match?.groups?.version===void 0)return unavailable(canonical,"Could not parse version output");let version3=output2.split(`
332
332
  `)[0]?.trim()||match.groups.version;return{name:canonical,installed:!0,version:version3,channels:this.detectChannels(canonical,output2),error:null,...deprecationOf(canonical)}}detectChannels(_agent,_output){return[]}}function unavailable(name,error51){return{name,installed:!1,version:null,channels:[],error:error51,...deprecationOf(name)}}function deprecationOf(name){let canonical=resolveAgentName(name);if(canonical===void 0)return{};let shim=getAgentShim(canonical);if(shim.deprecated===void 0)return{};return{deprecated:!0,replacedBy:shim.deprecated.replacedBy}}var DEFAULT_TIMEOUT_MS=5000,VERSION_PATTERN;var init_agent_detector=__esm(()=>{init_shims();init_ai_runner();VERSION_PATTERN=/(?<version>\d+\.\d+(?:\.\d+)?)/});function isNonEmpty(value){return value!==void 0&&value.trim().length>0}async function isAuthenticated(agent,ctx){let env2=ctx.env??getProcessEnv(),fs2=ctx.fileSystem,timeout=ctx.timeout??DEFAULT_AUTH_TIMEOUT_MS,home=env2.HOME||env2.USERPROFILE||"";if(agent==="gemini")return geminiSettingsContainCredentials(fs2,home);if(agent==="codex")return checkCodexAuth(ctx.runner,fs2,home,timeout);if(agent==="grok")return checkGrokAuth(fs2,home,env2);if((agent==="pi"||agent==="omp")&&(isNonEmpty(env2.GOOGLE_API_KEY)||isNonEmpty(env2.ANTHROPIC_API_KEY)))return"authenticated";return probeAuthOutput(ctx.runner,agent,timeout)}async function checkCodexAuth(runner,fs2,home,timeout){let probeStatus=await probeAuthOutput(runner,"codex",timeout);if(probeStatus!=="unknown")return probeStatus;return await hasNonEmptyFile(fs2,joinPath2(home,".codex","auth.json"))||await hasNonEmptyFile(fs2,joinPath2(home,".codex","auth"))?"authenticated":"unknown"}async function checkGrokAuth(fs2,home,env2){if(isNonEmpty(env2.XAI_API_KEY))return"authenticated";if(await hasNonEmptyFile(fs2,joinPath2(home,".grok","auth.json")))return"authenticated";return"unknown"}async function geminiSettingsContainCredentials(fs2,home){let content;try{content=await fs2.readFile(joinPath2(home,".gemini","settings.json"))}catch{return"unknown"}let settings;try{settings=JSON.parse(content)}catch{return"unauthenticated"}if(typeof settings!=="object"||settings===null)return"unauthenticated";let record2=settings;if(typeof record2.apiKey==="string"&&record2.apiKey.length>0)return"authenticated";if(typeof record2.accessToken==="string"&&record2.accessToken.length>0)return"authenticated";let tokens=record2.tokens;if(tokens!==null&&typeof tokens==="object"){let accessToken=tokens.access_token;if(typeof accessToken==="string"&&accessToken.length>0)return"authenticated"}return"unauthenticated"}async function probeAuthOutput(runner,agent,timeout){let options={timeout},command=runner.runAuthCommand(agent,options),patterns=AUTH_PATTERNS[agent];if(command===null||patterns===void 0)return"unknown";try{let result=await command;if(result.exitCode!==0)return"unauthenticated";let output2=`${result.stdout}
333
333
  ${result.stderr}`;if(patterns.negative.test(output2))return"unauthenticated";if(patterns.positive.test(output2))return"authenticated";return"unknown"}catch{return"unknown"}}async function hasNonEmptyFile(fs2,path8){let stat=await fs2.stat(path8);if(stat===null)return!1;return stat.isFile()&&stat.size>0}var DEFAULT_AUTH_TIMEOUT_MS=5000,AUTH_PATTERNS;var init_auth_shims=__esm(()=>{init_dist6();init_shims();AUTH_PATTERNS={claude:{positive:/authenticated|logged[\s_-]*in|"loggedIn"\s*:\s*true/i,negative:/not[\s_-]*authenticated|not[\s_-]*logged[\s_-]*in|logged[\s_-]*out|unauthenticated|"loggedIn"\s*:\s*false/i},codex:{positive:/logged[\s_-]*in|authenticated/i,negative:/not[\s_-]*authenticated|not[\s_-]*logged[\s_-]*in|logged[\s_-]*out|unauthenticated/i},opencode:{positive:/configured|available/i,negative:/not[\s_-]*configured|no[\s_-]+providers?[\s_-]+available|unavailable/i},openclaw:{positive:/(^|[^a-z])ok([^a-z]|$)|healthy/i,negative:/not[\s_-]*healthy|unhealthy|not[\s_-]*ok/i},pi:{positive:/\S/,negative:/not[\s_-]*authenticated|not[\s_-]*logged[\s_-]*in|unauthenticated|no[\s_-]+providers?/i},omp:{positive:/\S/,negative:/not[\s_-]*authenticated|not[\s_-]*logged[\s_-]*in|unauthenticated|no[\s_-]+providers?/i},hermes:{positive:/(^|[^a-z])ok([^a-z]|$)|healthy|configured|ready/i,negative:/not[\s_-]*(configured|healthy|ok)|unhealthy|missing[\s_-]+dependenc|error|failed/i},fm:{positive:/System model available/i,negative:/unavailable/i}}});var DecisionError,DecisionConfigError,DecisionAuthError,DecisionRateLimitError,DecisionTimeoutError,DecisionConnectionError,DecisionRequestError,DecisionBackendError;var init_errors5=__esm(()=>{DecisionError=class DecisionError extends Error{constructor(message,options){super(message,options);this.name=new.target.name}};DecisionConfigError=class DecisionConfigError extends DecisionError{variable;constructor(message,variable,options){super(message,options);this.variable=variable}};DecisionAuthError=class DecisionAuthError extends DecisionError{status;constructor(message,status,options){super(message,options);this.status=status}};DecisionRateLimitError=class DecisionRateLimitError extends DecisionError{status;retryAfterMs;constructor(message,status,retryAfterMs,options){super(message,options);this.status=status,this.retryAfterMs=retryAfterMs}};DecisionTimeoutError=class DecisionTimeoutError extends DecisionError{timeoutMs;constructor(message,timeoutMs,options){super(message,options);this.timeoutMs=timeoutMs}};DecisionConnectionError=class DecisionConnectionError extends DecisionError{constructor(message,options){super(message,options)}};DecisionRequestError=class DecisionRequestError extends DecisionError{status;bodySummary;constructor(message,status,bodySummary,options){super(message,options);this.status=status,this.bodySummary=bodySummary}};DecisionBackendError=class DecisionBackendError extends DecisionError{status;constructor(message,status,options){super(message,options);this.status=status}}});var q;var init_types3=__esm(()=>{q={choice:(prompt,labels)=>({kind:"choice",prompt,labels}),score:(prompt,rubric)=>({kind:"score",prompt,rubric}),noul:(prompt,outcomes)=>({kind:"noul",prompt,...outcomes})}});var requestIdFrom=(headers)=>headers.get("x-typesafe-request-id")??void 0,APIPromise,ENV,readEnv=(name)=>{if(typeof process>"u"||!process.env)return;return process.env[name]?.trim()||void 0},fromCodeOrEnv=(fromCode,envVar)=>fromCode??readEnv(envVar),range=(from,to)=>Array.from({length:to-from},(_,i2)=>from+i2),DEFAULT_RETRY_POLICY,isRetryableStatus=(status,policy=DEFAULT_RETRY_POLICY)=>policy.httpStatuses.has(status),parseRetryAfter=(headers,now=Date.now())=>{let ms=Number(headers.get("retry-after-ms"));if(headers.has("retry-after-ms")&&Number.isFinite(ms)&&ms>=0)return ms;let raw=headers.get("retry-after");if(raw===null)return;let seconds=Number(raw);if(Number.isFinite(seconds))return seconds>=0?seconds*1000:void 0;let date6=Date.parse(raw);if(!Number.isNaN(date6))return Math.max(0,date6-now)},retryDelayMs=(attempt,headers,policy=DEFAULT_RETRY_POLICY,random=Math.random)=>{if(policy.respectRetryAfter&&headers!==void 0){let retryAfter=parseRetryAfter(headers);if(retryAfter!==void 0&&retryAfter<=policy.maxRetryAfterMs)return retryAfter}let exponential=Math.min(policy.backoffInitialMs*2**attempt,policy.backoffMaxMs);return Math.round(exponential*(1-random()*policy.backoffJitter))},sleep=(ms,signal)=>new Promise((resolve,reject)=>{if(signal?.aborted)return reject(signal.reason);let onAbort=()=>{clearTimeout(timer),reject(signal?.reason)},timer=setTimeout(()=>{signal?.removeEventListener("abort",onAbort),resolve()},ms);signal?.addEventListener("abort",onAbort,{once:!0})}),TypeSafeError,isRecord2=(value)=>typeof value==="object"&&value!==null,extractMessage=(body)=>{if(typeof body==="string")return body||void 0;if(!isRecord2(body))return;let{error:error51,message,detail}=body;if(typeof error51==="string")return error51;if(isRecord2(error51)&&typeof error51.message==="string")return error51.message;if(typeof message==="string")return message;if(typeof detail==="string")return detail;if(isRecord2(detail)&&typeof detail.message==="string")return detail.message;if(Array.isArray(detail))return describeValidationErrors(detail)},describeValidationErrors=(errors6)=>{let parts=errors6.flatMap((e)=>{if(!isRecord2(e)||typeof e.msg!=="string")return[];let loc=Array.isArray(e.loc)?e.loc.filter((x)=>x!=="body").join("."):"";return[loc?`${loc}: ${e.msg}`:e.msg]});return parts.length>0?parts.join("; "):void 0},MAX_RAW_BODY_IN_MESSAGE=200,APIError2,BadRequestError,AuthenticationError,PermissionDeniedError,NotFoundError,UnprocessableEntityError,RateLimitError,InternalServerError,APIConnectionError,APITimeoutError,APIUserAbortError,LOG_LEVELS,DEFAULT_LOG_LEVEL="warn",isLogLevel2=(value)=>LOG_LEVELS.includes(value),parseLogLevel2=(value,source)=>{if(isLogLevel2(value))return value;throw new TypeSafeError(`Invalid log level "${value}" from ${source}. Expected one of: ${LOG_LEVELS.join(", ")}.`)},PREFIX="[typesafe-sdk]",consoleLogger,RANK,drop=()=>{},withLevel=(sink,level)=>{let enabled=(at)=>RANK[at]>=RANK[level];return{debug:enabled("debug")?(message,...args)=>sink.debug(message,...args):drop,info:enabled("info")?(message,...args)=>sink.info(message,...args):drop,warn:enabled("warn")?(message,...args)=>sink.warn(message,...args):drop,error:enabled("error")?(message,...args)=>sink.error(message,...args):drop}},KEY_HEADERS,OPAQUE_HEADERS,redactKey=(value)=>{let[scheme,secret]=value.includes(" ")?value.split(/\s+/,2):[void 0,value],tail=secret&&secret.length>8?secret.slice(-4):"";return`${scheme?`${scheme} `:""}***${tail}`},redact=(name,value)=>{let lower=name.toLowerCase();if(KEY_HEADERS.has(lower))return redactKey(value);if(OPAQUE_HEADERS.has(lower))return"***";return value},redactHeaders=(headers)=>Object.fromEntries(Object.entries(headers).map(([name,value])=>[name,redact(name,value)])),noul=(instructions=null,criteria)=>({type:"noul",instructions,criteria}),score=(instructions,criteria)=>{if(!Array.isArray(criteria))throw new TypeSafeError("Score criteria must be a list of descriptions indexed by score from zero, not a map.");return{type:"score",instructions,criteria}},choice=(instructions,criteria)=>{if(Array.isArray(criteria))throw new TypeSafeError("Choice criteria must be a map of labels to descriptions, not a list.");return{type:"choice",instructions,criteria}},validateQuestions=(questions)=>{if(Object.keys(questions).length===0)throw new TypeSafeError("At least one question is required.");for(let[name,question]of Object.entries(questions)){if(question.type!=="score")continue;if(!Array.isArray(question.criteria))throw new TypeSafeError(`Score question "${name}" has criteria that are not a list; score criteria must be a list of descriptions indexed by score from zero.`);if(question.criteria.length<2)throw new TypeSafeError(`Score question "${name}" has ${question.criteria.length} criteria; at least two scores are required.`)}},Models=class{#transport;constructor(transport){this.#transport=transport}list(options={}){return this.#transport.request("GET","/v1/models",options).map(unwrapModels)}},unwrapModels=(wire)=>{if(Array.isArray(wire?.models))return wire.models;throw new TypeSafeError("Unexpected response shape from GET /v1/models; expected { models: [...] }.")},g,isBrowser=()=>typeof g.window<"u"&&typeof g.window.document<"u"&&typeof g.navigator<"u",describeRuntime=()=>{let platform2=g.process?.platform&&g.process?.arch?` (${g.process.platform}; ${g.process.arch})`:"";if(g.Bun?.version)return`bun/${g.Bun.version}${platform2}`;if(g.Deno?.version?.deno)return`deno/${g.Deno.version.deno}${platform2}`;if(g.EdgeRuntime!==void 0)return"vercel-edge";if(g.navigator?.userAgent==="Cloudflare-Workers")return"cloudflare-workers";if(g.process?.versions?.node)return`node/${g.process.versions.node}${platform2}`;if(isBrowser())return"browser";return"unknown"},VERSION="0.6.0",missingApiKey=()=>{throw new TypeSafeError(`No API key was provided. Pass \`apiKey\` to the TypeSafeClient constructor or set the ${ENV.apiKey} environment variable.`)},missingFetch=()=>{throw new TypeSafeError("No global `fetch` is available in this runtime. Pass a `fetch` implementation to the TypeSafeClient constructor.")},refuseBrowser=()=>{throw new TypeSafeError("TypeSafeClient is running in a browser, which would expose your API key to anyone using the page. Call the API from a server instead, or pass `dangerouslyAllowBrowser: true` if you understand the risk.")},defaultFetch=(input,init)=>globalThis.fetch(input,init),assertNonNegativeInteger=(name,value)=>{if(!Number.isInteger(value)||value<0)throw new TypeSafeError(`\`${name}\` must be a non-negative integer, got ${String(value)}.`);return value},assertPositiveMs=(name,value)=>{if(!Number.isFinite(value)||value<=0)throw new TypeSafeError(`\`${name}\` must be a positive number of milliseconds, got ${String(value)}.`);return value},assertNonNegativeMs=(name,value)=>{if(!Number.isFinite(value)||value<0)throw new TypeSafeError(`\`${name}\` must be a non-negative number of milliseconds, got ${String(value)}.`);return value},assertFraction=(name,value)=>{if(!Number.isFinite(value)||value<0||value>1)throw new TypeSafeError(`\`${name}\` must be between 0 and 1, got ${String(value)}.`);return value},assertStatusSet=(name,statuses)=>{for(let status of statuses)if(!Number.isInteger(status)||status<100||status>999)throw new TypeSafeError(`\`${name}\` must contain HTTP status codes, got ${String(status)}.`);return statuses},resolveRetryPolicy=(base2,overrides)=>{let o3=overrides??{};return{maxRetries:o3.maxRetries===void 0?base2.maxRetries:assertNonNegativeInteger("retry.maxRetries",o3.maxRetries),backoffInitialMs:o3.backoffInitialMs===void 0?base2.backoffInitialMs:assertNonNegativeMs("retry.backoffInitialMs",o3.backoffInitialMs),backoffMaxMs:o3.backoffMaxMs===void 0?base2.backoffMaxMs:assertNonNegativeMs("retry.backoffMaxMs",o3.backoffMaxMs),backoffJitter:o3.backoffJitter===void 0?base2.backoffJitter:assertFraction("retry.backoffJitter",o3.backoffJitter),httpStatuses:new Set(o3.httpStatuses===void 0?base2.httpStatuses:assertStatusSet("retry.httpStatuses",o3.httpStatuses)),respectRetryAfter:o3.respectRetryAfter??base2.respectRetryAfter,maxRetryAfterMs:o3.maxRetryAfterMs===void 0?base2.maxRetryAfterMs:assertNonNegativeMs("retry.maxRetryAfterMs",o3.maxRetryAfterMs),apiConnectionError:o3.apiConnectionError??base2.apiConnectionError,apiTimeoutError:o3.apiTimeoutError??base2.apiTimeoutError}},isRetryableError=(err,policy)=>{if(err instanceof APITimeoutError)return policy.apiTimeoutError;if(err instanceof APIConnectionError)return policy.apiConnectionError;return!1},resolveLogLevel=(fromCode)=>{if(fromCode!==void 0)return parseLogLevel2(fromCode,"the `logLevel` option");let fromEnv=readEnv(ENV.logLevel);if(fromEnv!==void 0)return parseLogLevel2(fromEnv,ENV.logLevel);return DEFAULT_LOG_LEVEL},stripTrailingSlashes=(url2)=>url2.replace(/\/+$/,""),mergeHeaders=(...sources)=>{let entries=new Map;for(let source of sources)for(let[name,value]of Object.entries(source))if(value===void 0)entries.delete(name.toLowerCase());else entries.set(name.toLowerCase(),[name,value]);return Object.fromEntries(entries.values())},bufferResponse=async(response,signal)=>{let reader=response.clone().body?.getReader();if(!reader)return;let cancel=()=>{reader.cancel(signal.reason).catch(()=>{}),response.body?.cancel(signal.reason).catch(()=>{})};signal.addEventListener("abort",cancel,{once:!0});try{if(signal.aborted)cancel();signal.throwIfAborted();while(!(await reader.read()).done)signal.throwIfAborted();signal.throwIfAborted()}finally{signal.removeEventListener("abort",cancel),reader.releaseLock()}},RUNTIME,TypeSafeClient=class{#apiKey;baseURL;defaultModel;logLevel;logger;retry;timeout;defaultHeaders;fetch;models;#requestCount=0;constructor(config4={}){if(isBrowser()&&!config4.dangerouslyAllowBrowser)refuseBrowser();if(this.#apiKey=fromCodeOrEnv(config4.apiKey,ENV.apiKey)??missingApiKey(),this.baseURL=stripTrailingSlashes(fromCodeOrEnv(config4.baseURL,ENV.baseURL)??"https://api.typesafe.ai"),this.defaultModel=fromCodeOrEnv(config4.defaultModel,ENV.defaultModel)??"jev-latest",this.logLevel=resolveLogLevel(config4.logLevel),this.logger=withLevel(config4.logger??consoleLogger,this.logLevel),this.retry=resolveRetryPolicy(DEFAULT_RETRY_POLICY,config4.retry),this.timeout=assertPositiveMs("timeout",config4.timeout??1e4),this.defaultHeaders={...config4.defaultHeaders},config4.fetch===void 0&&typeof globalThis.fetch!=="function")missingFetch();this.fetch=config4.fetch??defaultFetch;let transport={request:(method,path8,options)=>this.#request(method,path8,options),defaultModel:this.defaultModel};this.models=new Models(transport)}systemOne(request,options={}){validateQuestions(request.questions);let body={...request,model:request.model??this.defaultModel};return this.#request("POST","/v1/systemone",{...options,body})}#request(method,path8,options={}){let resolved={method,path:path8,body:options.body,headers:mergeHeaders(this.defaultHeaders,options.headers??{}),signal:options.signal,timeout:options.timeout===void 0?this.timeout:assertPositiveMs("timeout",options.timeout),retry:resolveRetryPolicy(this.retry,options.retry)},tag=`#${++this.#requestCount} ${method} ${path8}`;return new APIPromise(this.fetchWithRetries(tag,resolved),async(res)=>{let parsed=await parseBody(res);return this.logger.debug(`${tag} <- body`,parsed),parsed})}async fetchWithRetries(tag,req){let url2=`${this.baseURL}${req.path}`,headers=mergeHeaders(req.headers,{Authorization:`Bearer ${this.#apiKey}`,Accept:"application/json","User-Agent":`typesafe-sdk/${VERSION}`,"X-TypeSafe-SDK":`typesafe-sdk/${VERSION}`,"X-TypeSafe-Runtime":RUNTIME,"Content-Type":req.body===void 0?void 0:"application/json","X-TypeSafe-Retry-Count":void 0}),body=req.body===void 0?void 0:JSON.stringify(req.body);for(let attempt=0;;attempt++){let retriesLeft=req.retry.maxRetries-attempt,attemptHeaders=attempt===0?headers:{...headers,"X-TypeSafe-Retry-Count":String(attempt)};this.logger.debug(`${tag} -> ${url2}`,{headers:redactHeaders(attemptHeaders),body:req.body});let started=Date.now(),res;try{res=await this.attempt(tag,url2,{method:req.method,headers:attemptHeaders,body},req)}catch(err){if(err instanceof APIUserAbortError||retriesLeft<=0)throw err;if(!isRetryableError(err,req.retry))throw err;await this.backOff(tag,attempt,retriesLeft,err.message,void 0,req);continue}let requestId=requestIdFrom(res.headers);if(this.logger.info(`${tag} <- ${res.status} in ${Date.now()-started}ms${requestId?` (request ${requestId})`:""}`),res.ok)return res;let errorBody=await parseBody(res);this.logger.debug(`${tag} <- error body`,errorBody);let error51=APIError2.fromResponse(res.status,errorBody,res.headers);if(retriesLeft<=0||!isRetryableStatus(res.status,req.retry))throw error51;await this.backOff(tag,attempt,retriesLeft,`${res.status}`,res.headers,req)}}async attempt(tag,url2,init,{signal,timeout}){let controller=new AbortController,abortFromCaller=()=>controller.abort(signal?.reason);if(signal?.aborted)abortFromCaller();signal?.addEventListener("abort",abortFromCaller,{once:!0});let timedOut=!1,timer=setTimeout(()=>{timedOut=!0,controller.abort()},timeout),started=Date.now(),elapsed=()=>`${Date.now()-started}ms`;try{let response=await this.fetch(url2,{...init,signal:controller.signal});return await bufferResponse(response,controller.signal),response}catch(err){if(signal?.aborted)throw this.logger.info(`${tag} aborted by caller after ${elapsed()}`),new APIUserAbortError(void 0,{cause:err});if(timedOut)throw this.logger.info(`${tag} timed out after ${elapsed()}`),new APITimeoutError(timeout,{cause:err});throw this.logger.info(`${tag} connection error after ${elapsed()}`,err),new APIConnectionError(err instanceof Error?`Connection error: ${err.message}`:void 0,{cause:err})}finally{clearTimeout(timer),signal?.removeEventListener("abort",abortFromCaller)}}async backOff(tag,attempt,retriesLeft,reason,headers,{retry,signal}){let delay=retryDelayMs(attempt,headers,retry),nth=attempt+1,total=attempt+retriesLeft;this.logger.info(`${tag} retrying in ${delay}ms (retry ${nth}/${total}) after ${reason}`);try{await sleep(delay,signal)}catch(err){throw this.logger.info(`${tag} aborted by caller while waiting to retry`),new APIUserAbortError(void 0,{cause:err})}}},parseBody=async(res)=>{let text3=await res.text();if(text3.length===0)return;if((res.headers.get("content-type")??"").includes("application/json"))try{return JSON.parse(text3)}catch{return text3}try{return JSON.parse(text3)}catch{return text3}};var init_dist8=__esm(()=>{APIPromise=class APIPromise2 extends Promise{#responsePromise;#parseResponse;#parsed;constructor(responsePromise,parseResponse){super((resolve)=>resolve(void 0));this.#responsePromise=responsePromise,this.#parseResponse=parseResponse}asResponse(){return this.#responsePromise}async withResponse(){let[data,response]=await Promise.all([this.#parse(),this.#responsePromise]);return{data,response,requestId:requestIdFrom(response.headers)}}map(fn){return new APIPromise2(this.#responsePromise,()=>this.#parse().then(fn))}#parse(){return this.#parsed??=this.#responsePromise.then(this.#parseResponse),this.#parsed}then(onfulfilled,onrejected){return this.#parse().then(onfulfilled,onrejected)}catch(onrejected){return this.#parse().catch(onrejected)}finally(onfinally){return this.#parse().finally(onfinally)}},ENV={apiKey:"TYPESAFE_API_KEY",baseURL:"TYPESAFE_BASE_URL",defaultModel:"TYPESAFE_DEFAULT_MODEL",logLevel:"TYPESAFE_LOG_LEVEL"},DEFAULT_RETRY_POLICY={maxRetries:2,backoffInitialMs:500,backoffMaxMs:5000,backoffJitter:0.25,httpStatuses:new Set([408,429,...range(500,600)]),respectRetryAfter:!0,maxRetryAfterMs:60000,apiConnectionError:!0,apiTimeoutError:!0};DEFAULT_RETRY_POLICY.maxRetries;TypeSafeError=class extends Error{constructor(message,options){super(message,options);this.name=new.target.name}},APIError2=class APIError3 extends TypeSafeError{status;headers;body;requestId;constructor(status,body,headers,message){super(message??APIError3.describe(status,body));this.status=status,this.body=body,this.headers=headers,this.requestId=requestIdFrom(headers)}static describe(status,body){let detail=extractMessage(body);if(detail)return`${status} ${detail}`;if(body===void 0)return`${status} status code (no body)`;let raw=typeof body==="string"?body:JSON.stringify(body);return`${status} ${raw.length>MAX_RAW_BODY_IN_MESSAGE?`${raw.slice(0,MAX_RAW_BODY_IN_MESSAGE)}…`:raw}`}static fromResponse(status,body,headers){if(status===400)return new BadRequestError(status,body,headers);if(status===401)return new AuthenticationError(status,body,headers);if(status===403)return new PermissionDeniedError(status,body,headers);if(status===404)return new NotFoundError(status,body,headers);if(status===422)return new UnprocessableEntityError(status,body,headers);if(status===429)return new RateLimitError(status,body,headers);if(status>=500)return new InternalServerError(status,body,headers);return new APIError3(status,body,headers)}},BadRequestError=class extends APIError2{},AuthenticationError=class extends APIError2{},PermissionDeniedError=class extends APIError2{},NotFoundError=class extends APIError2{},UnprocessableEntityError=class extends APIError2{},RateLimitError=class extends APIError2{retryAfterMs=parseRetryAfter(this.headers)},InternalServerError=class extends APIError2{},APIConnectionError=class extends TypeSafeError{constructor(message="Connection error.",options){super(message,options)}},APITimeoutError=class extends APIConnectionError{timeoutMs;constructor(timeoutMs,options){super(`Request timed out after ${timeoutMs}ms.`,options);this.timeoutMs=timeoutMs}},APIUserAbortError=class extends TypeSafeError{constructor(message="Request was aborted.",options){super(message,options)}},LOG_LEVELS=["debug","info","warn","error","off"],consoleLogger={debug:(message,...args)=>console.debug(`${PREFIX} ${message}`,...args),info:(message,...args)=>console.info(`${PREFIX} ${message}`,...args),warn:(message,...args)=>console.warn(`${PREFIX} ${message}`,...args),error:(message,...args)=>console.error(`${PREFIX} ${message}`,...args)},RANK={debug:0,info:1,warn:2,error:3,off:4},KEY_HEADERS=new Set(["authorization","proxy-authorization","x-api-key"]),OPAQUE_HEADERS=new Set(["cookie","set-cookie"]),g=globalThis,RUNTIME=describeRuntime()});function record2(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function json2(value,ancestors=new Set){if(value===null||typeof value==="string"||typeof value==="boolean")return!0;if(typeof value==="number")return Number.isFinite(value);if(typeof value!=="object"||ancestors.has(value))return!1;ancestors.add(value);let valid=Object.values(value).every((entry)=>json2(entry,ancestors));return ancestors.delete(value),valid}function desc2(value){return(value===null||typeof value==="string"||typeof value==="object")&&json2(value)}function validateQuestions2(questions){let fail=(name)=>{throw new DecisionRequestError(`Invalid decision question: ${name}`,void 0,void 0)};if(!record2(questions)||Object.keys(questions).length===0)fail("expected a nonempty question map");for(let[name,question]of Object.entries(questions)){if(!record2(question))fail(name);if(question.prompt!==void 0&&!desc2(question.prompt))fail(name);switch(question.kind){case"choice":if(!record2(question.labels)||Object.keys(question.labels).length===0||!Object.values(question.labels).every(desc2))fail(name);break;case"score":if(!Array.isArray(question.rubric)||question.rubric.length<2||!Array.from(question.rubric).every(desc2))fail(name);break;case"noul":if(question.yes!==void 0&&!desc2(question.yes)||question.no!==void 0&&!desc2(question.no))fail(name);break;default:fail(name)}}}function bounded(value,max=1){return typeof value==="number"&&Number.isFinite(value)&&value>=0&&value<=max}function keysMatch(value,keys){return record2(value)&&Object.keys(value).length===keys.length&&keys.every((key)=>Object.hasOwn(value,key))}function validateAnswers(questions,answers){let fail=(name)=>{throw new DecisionBackendError(`Invalid decision response: ${name}`,void 0)};if(!keysMatch(answers,Object.keys(questions)))fail("answer names do not match questions");for(let[name,question]of Object.entries(questions)){let answer=answers[name];if(!record2(answer)||answer.kind!==question.kind)fail(name);if(question.kind==="noul"){if(!bounded(answer.probability))fail(name);continue}let keys=question.kind==="choice"?Object.keys(question.labels):Array.from(question.rubric.keys(),String);if(!bounded(answer.confidence)||!keysMatch(answer.probabilities,keys)||!Object.values(answer.probabilities).every((p)=>bounded(p)))fail(name);if(question.kind==="choice"){if(typeof answer.label!=="string"||!Object.hasOwn(question.labels,answer.label))fail(name)}else if(!bounded(answer.score,question.rubric.length-1)||!keysMatch(answer.legend,keys)||!Object.values(answer.legend).every(desc2))fail(name);let total=Object.values(answer.probabilities).reduce((sum,p)=>sum+p,0);if(Math.abs(total-1)>DISTRIBUTION_MASS_TOLERANCE)fail(name)}}var DISTRIBUTION_MASS_TOLERANCE=0.000001;var init_validation2=__esm(()=>{init_errors5()});function createTypesafeDriver(config4){let client;try{client=new TypeSafeClient({apiKey:config4.apiKey,baseURL:config4.baseURL,defaultModel:config4.model,timeout:config4.timeoutMs,retry:config4.maxRetries===void 0?void 0:{maxRetries:config4.maxRetries},fetch:config4.fetch})}catch(err){translateError(err)}return{name:"typesafe",async ask({state,questions,model}){validateQuestions2(questions);let result;try{let sdkQuestions=Object.fromEntries(Object.entries(questions).map(([name,question])=>[name,toSdkQuestion(question)]));result=await client.systemOne({state,questions:sdkQuestions,model})}catch(err){translateError(err)}if(!result?.answers||typeof result.answers!=="object"||Array.isArray(result.answers))throw new DecisionBackendError("Invalid decision response: expected answers map",void 0);let answers=Object.fromEntries(Object.entries(result.answers).map(([name,answer])=>[name,fromSdkAnswer(answer)]));return validateAnswers(questions,answers),answers}}}function toSdkQuestion(question){switch(question.kind){case"choice":return choice(question.prompt??null,question.labels);case"score":return score(question.prompt??null,question.rubric);case"noul":{let outcomes=question.yes===void 0&&question.no===void 0?void 0:{true:question.yes,false:question.no};return noul(question.prompt??null,outcomes)}}}function fromSdkAnswer(answer){if(!answer||typeof answer!=="object")throw new DecisionBackendError("Invalid decision response: expected answer object",void 0);switch(answer.type){case"choice":return{kind:"choice",label:answer.choice,confidence:answer.confidence,probabilities:answer.probabilities};case"score":return{kind:"score",score:answer.score,confidence:answer.confidence,legend:answer.legend,probabilities:answer.probabilities};case"noul":return{kind:"noul",probability:answer.noul};default:throw new DecisionBackendError("Invalid decision response: unknown answer kind",void 0)}}function translateError(err){let message=err instanceof Error?err.message:String(err);if(err instanceof RateLimitError)throw new DecisionRateLimitError(message,err.status,err.retryAfterMs,{cause:err});if(err instanceof AuthenticationError||err instanceof PermissionDeniedError)throw new DecisionAuthError(message,err.status,{cause:err});if(err instanceof APITimeoutError)throw new DecisionTimeoutError(message,err.timeoutMs,{cause:err});if(err instanceof APIConnectionError)throw new DecisionConnectionError(message,{cause:err});if(err instanceof APIError2){if(err.status<500){let raw=typeof err.body==="string"?err.body:JSON.stringify(err.body)??"";throw new DecisionRequestError(message,err.status,raw.slice(0,200)||void 0,{cause:err})}throw new DecisionBackendError(message,err.status,{cause:err})}if(err instanceof TypeSafeError)throw new DecisionRequestError(message,void 0,message,{cause:err});throw err}var init_typesafe_driver=__esm(()=>{init_dist8();init_errors5();init_validation2()});function resolveApiKey(options){let env2=options.env??getProcessEnv(),apiKey=options.apiKey??env2.TYPESAFE_API_KEY;if(!apiKey)throw new DecisionConfigError("Missing TYPESAFE_API_KEY — set it in the environment or pass options.apiKey.","TYPESAFE_API_KEY");return apiKey}async function resolveLayaDriver(options,importModule=(specifier)=>import(specifier)){let mod;try{mod=await importModule(LAYA_DRIVER_PACKAGE)}catch(cause){throw new DecisionConfigError(`The 'laya-local' backend requires '${LAYA_DRIVER_PACKAGE}' to be installed; install it with 'bun add ${LAYA_DRIVER_PACKAGE}'`,"LAYA_BACKEND",{cause})}if(typeof mod.createLayaDriver!=="function")throw new DecisionConfigError(`Module '${LAYA_DRIVER_PACKAGE}' does not export createLayaDriver`,"LAYA_BACKEND");return mod.createLayaDriver(options)}async function resolveFmDriver(options,importModule=(specifier)=>import(specifier)){let mod;try{mod=await importModule(FM_DRIVER_PACKAGE)}catch(cause){throw new DecisionConfigError(`The 'fm-local' backend requires '${FM_DRIVER_PACKAGE}' to be installed; install it with 'bun add ${FM_DRIVER_PACKAGE}'`,"FM_BACKEND",{cause})}if(typeof mod.createFmDriver!=="function")throw new DecisionConfigError(`Module '${FM_DRIVER_PACKAGE}' does not export createFmDriver`,"FM_BACKEND");return mod.createFmDriver(options)}function createDecisionMaker(options={}){let resolvedDriver,getDriver=async()=>{if(options.driver)return options.driver;if(resolvedDriver)return resolvedDriver;let backend=options.backend??"typesafe";if(backend==="typesafe")return resolvedDriver=createTypesafeDriver({apiKey:resolveApiKey(options),model:options.model,baseURL:options.baseURL,timeoutMs:options.timeoutMs,maxRetries:options.maxRetries,fetch:options.fetch}),resolvedDriver;if(backend==="laya-local")return resolvedDriver=await resolveLayaDriver(options),resolvedDriver;if(backend==="fm-local")return resolvedDriver=await resolveFmDriver(options),resolvedDriver;throw new DecisionConfigError(`Unknown decision backend '${backend}'`,"backend")},ask=async(req)=>{let driver3=await getDriver();validateQuestions2(req.questions);let answers=await driver3.ask(req);return validateAnswers(req.questions,answers),answers};return{driver:options.driver?.name??options.backend??"typesafe",ask,choice:(state,prompt,labels)=>ask({state,questions:{question:q.choice(prompt,labels)}}).then((a2)=>a2.question),score:(state,prompt,rubric)=>ask({state,questions:{question:q.score(prompt,rubric)}}).then((a2)=>a2.question),noul:(state,prompt,outcomes)=>ask({state,questions:{question:q.noul(prompt,outcomes)}}).then((a2)=>a2.question)}}var LAYA_DRIVER_PACKAGE="@gobing-ai/ts-laya-mlx",FM_DRIVER_PACKAGE="@gobing-ai/ts-decision-fm";var init_decision_maker=__esm(()=>{init_dist6();init_errors5();init_types3();init_typesafe_driver();init_validation2()});class ModelHealthProbeRegistry{probes=new Map;register(providerPrefix,probe){this.probes.set(providerPrefix,probe)}resolve(model){let slashIndex=model.indexOf("/"),provider=slashIndex>=0?model.slice(0,slashIndex):model;return this.probes.get(provider)??null}}function extractProvider(model){let slashIndex=model.indexOf("/");return slashIndex>=0?model.slice(0,slashIndex):model}function extractModelName(model){let slashIndex=model.indexOf("/");return slashIndex>=0?model.slice(slashIndex+1):model}class OmpModelProbe{apiClientConfig;constructor(options){this.apiClientConfig=options?.apiClientConfig}async probe(provider,model,config4){let checkedAt=new Date().toISOString(),providerConfig=OMP_PROVIDERS[provider];if(!providerConfig)return{status:"unknown",detail:`unknown omp provider '${provider}'`,checkedAt};let baseUrl=config4.endpoint??providerConfig.baseUrl;try{let response=await this.issueRequest(providerConfig.apiType,baseUrl,model,config4.apiKey,config4.timeoutMs);return this.interpretResponse(response,checkedAt)}catch(error51){if(error51 instanceof APIError&&error51.status===0)return{status:"unknown",detail:"probe timed out",checkedAt};return{status:"unknown",detail:error51 instanceof Error?error51.message:"probe failed",checkedAt}}}async issueRequest(apiType,baseUrl,model,apiKey,timeoutMs){let client=new APIClient({...this.apiClientConfig,baseUrl});if(apiType==="anthropic-messages")return await client.rawRequest("POST","/messages",JSON.stringify({model,messages:[{role:"user",content:"ping"}],max_tokens:1}),{headers:{"Content-Type":"application/json","x-api-key":apiKey,"anthropic-version":"2023-06-01"},timeout:timeoutMs,operationName:"model-health-probe anthropic-messages"});return await client.rawRequest("POST","/chat/completions",JSON.stringify({model,messages:[{role:"user",content:"ping"}],max_tokens:1}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${apiKey}`},timeout:timeoutMs,operationName:"model-health-probe openai-completions"})}interpretResponse(response,checkedAt){if(response.status===200)return{status:"available",checkedAt};if(response.status===429){let body=this.parseBody(response.body),errorType=body?.error?.type??body?.error?.code??"",errorMessage3=body?.error?.message??"";if(errorType.includes("quota")||errorType.includes("insufficient_quota")||errorType.includes("insufficient"))return{status:"quota_exhausted",detail:errorMessage3||"quota exceeded",checkedAt};return{status:"rate_limited",detail:errorMessage3||"rate limited",checkedAt}}return{status:"unavailable",detail:`HTTP ${response.status}`,checkedAt}}parseBody(body){try{return JSON.parse(body)}catch{return null}}}function observeQuotaHealthResult(result,options){if(result.status!=="quota_exhausted")return null;let producer=options.producer??new QuotaObservationProducer(options.events),observation=buildQuotaObservation({source:"health-probe",reason:"provider_quota_exhausted",observedAt:new Date(result.checkedAt),...result.detail!==void 0?{detail:result.detail}:{},attribution:options.attribution,...options.correlation!==void 0?{correlation:options.correlation}:{}});return producer.produce(observation),observation}var OMP_PROVIDERS,DEFAULT_PROBE_TIMEOUT_MS=1e4;var init_model_health_probe=__esm(()=>{init_dist7();init_quota();OMP_PROVIDERS={zai:{baseUrl:"https://api.z.ai/api/coding/paas/v4",apiType:"openai-completions"},volc:{baseUrl:"https://ark.cn-beijing.volces.com/api/coding",apiType:"anthropic-messages"},minimax:{baseUrl:"https://api.minimaxi.com/v1",apiType:"openai-completions"},deepseek:{baseUrl:"https://api.deepseek.com",apiType:"openai-completions"}}});class DoctorRunner{detector;runner;timeout;env;fs;logger;executors;probeRegistry;probeTimeoutMs;probeAuth;constructor(options={}){this.runner=options.runner??new AiRunner,this.detector=options.agentDetector??new AgentDetector({runner:this.runner}),this.timeout=options.timeout??DEFAULT_TIMEOUT_MS2,this.env=options.env??getProcessEnv(),this.fs=options.fileSystem??createNodeFileSystem2(),this.logger=options.logger??getLogger2("doctor"),this.executors=options.executors??[],this.probeTimeoutMs=options.probeTimeoutMs??DEFAULT_PROBE_TIMEOUT_MS,this.probeRegistry=options.probeRegistry??this.createDefaultRegistry(),this.probeAuth=options.probeAuth??!0}createDefaultRegistry(){let registry2=new ModelHealthProbeRegistry,probe=new OmpModelProbe;for(let provider of["zai","volc","minimax","deepseek"])registry2.register(provider,probe);return registry2}async runAll(){if(this.executors.length>0)return await this.runAllWithExecutors();let detected=await this.detector.detectAll(),byName=new Map(detected.map((agent)=>[agent.name,agent]));return await Promise.all(DISPLAY_ORDER.map((agent)=>this.buildResult(byName.get(agent)??{name:agent,installed:!1,version:null,channels:[],error:`Unknown agent: ${agent}`})))}async runAllWithExecutors(){let detected=await this.detector.detectAll(),byName=new Map(detected.map((agent)=>[agent.name,agent])),results=[];for(let executor of this.executors){let canonical=resolveAgentName(executor.agent),agentDetected=byName.get(executor.agent)??(canonical!==void 0?byName.get(canonical):void 0)??{name:executor.agent,installed:!1,version:null,channels:[],error:`Unknown agent: ${executor.agent}`},result=await this.buildResult(agentDetected);result.agent=executor.name,result.modelStatus=executor.model?await this.probeModel(executor.model):null,results.push(result)}return results}async runOne(agent){if(this.executors.length>0){let executor=this.executors.find((e)=>e.name===agent);if(executor){let detected=await this.detector.detectOne(executor.agent),result=await this.buildResult(detected);return result.agent=executor.name,result.modelStatus=executor.model?await this.probeModel(executor.model):null,result}}return this.buildResult(await this.detector.detectOne(agent))}async probeModel(model){let provider=extractProvider(model),probe=this.probeRegistry.resolve(model);if(!probe)return{status:"unknown",detail:`no probe registered for provider '${provider}'`,checkedAt:new Date().toISOString()};let apiKey=this.resolveApiKey(provider);if(!apiKey)return{status:"unknown",detail:`API key not found for provider '${provider}'`,checkedAt:new Date().toISOString()};return await probe.probe(provider,model,{apiKey,timeoutMs:this.probeTimeoutMs})}resolveApiKey(provider){return this.env[`${provider.toUpperCase()}_API_KEY`]}async buildResult(detected){let canonical=resolveAgentName(detected.name)??null,tier=canonical!==null&&TIER2_AGENTS.has(canonical)?2:1;this.logger.debug("checking agent",{agent:detected.name,installed:detected.installed,tier});let authenticated=!this.probeAuth?"unknown":detected.installed&&canonical!==null?await isAuthenticated(canonical,{runner:this.runner,env:this.env,fileSystem:this.fs,timeout:this.timeout}):"unauthenticated";return{agent:detected.name,installed:detected.installed,version:detected.version,authenticated,usable:detected.installed&&detected.version!==null,tier,channels:detected.channels,deprecated:detected.deprecated,replacedBy:detected.replacedBy,error:detected.error}}}var DEFAULT_TIMEOUT_MS2=5000;var init_doctor_runner=__esm(()=>{init_dist7();init_dist6();init_agent_detector();init_auth_shims();init_shims();init_ai_runner();init_model_health_probe()});var init_events=()=>{};function formatMessage(msg){return`[task from=${msg.fromId??"operator"} id=${msg.id}] ${msg.body}`}import{Buffer as Buffer5}from"node:buffer";class TeamAgentProcess{agentId;command;env;cwd;processExecutor;logger;subprocess=null;status="stopped";exitCode=null;subscribers=new Set;stderrTail="";quotaProducer;spec;quotaContext;stdinFramer;constructor(options){this.agentId=options.spec.id,this.command=options.command,this.env=options.env,this.cwd=options.cwd??options.spec.workspace,this.processExecutor=options.processExecutor??nodeBunFactory2.createProcessExecutor(),this.logger=options.logger??getLogger2("team-agent"),this.quotaProducer=new QuotaObservationProducer(options.events),this.spec=options.spec,this.quotaContext=options.quotaContext,this.stdinFramer=options.stdinFramer}async start(){if(this.status==="running")return;let[command,...args]=this.command;if(command===void 0)throw Error(`${this.agentId}: command must not be empty`);if(this.subprocess=this.processExecutor.runStreaming({command,args,label:`team-agent.${this.agentId}`,...this.cwd!==void 0?{cwd:this.cwd}:{},...this.env!==void 0?{env:this.env}:{}}),this.status="running",this.exitCode=null,this.stderrTail="",this.subprocess.stdout!==null)this.pipe(this.subprocess.stdout,!1);if(this.subprocess.stderr!==null)this.pipe(this.subprocess.stderr,!0);this.subprocess.exited.then((code)=>{if(this.exitCode=code,this.status==="running"){if(this.status=code===0?"stopped":"errored",this.status==="errored")this.classifyQuota()}})}async stop(){let process11=this.subprocess;if(process11===null){this.status="stopped";return}try{process11.endStdin()}catch(error51){this.warn("stdin close failed","stop.endStdin",error51)}process11.kill("SIGTERM");let timeout=new Promise((resolve)=>{setTimeout(()=>resolve("timeout"),5000)}),result=await Promise.race([process11.exited,timeout]);if(result==="timeout")process11.kill("SIGKILL"),this.exitCode=await process11.exited;else this.exitCode=result;this.status="stopped",this.subprocess=null}async send(message){if(this.status!=="running"||this.subprocess===null)return this.warn("send skipped because process is not running","send.notRunning"),{ok:!1};try{return this.subprocess.writeStdin(this.stdinFramer!==void 0?this.stdinFramer(message):`${message}
334
- `),{ok:!0}}catch(error51){return this.warn("stdin write failed","send.writeStdin",error51),this.status="errored",{ok:!1}}}subscribe(callback){return this.subscribers.add(callback),()=>{this.subscribers.delete(callback)}}getStatus(){return this.status}getPid(){return this.subprocess?.pid??null}getExitCode(){return this.exitCode}async pipe(stream,isStderr){let reader=stream.getReader();try{while(!0){let chunk=await reader.read();if(chunk.done)break;let buffer=Buffer5.from(chunk.value);if(isStderr)this.retainStderrTail(buffer.toString("utf8"));for(let subscriber of this.subscribers)subscriber(buffer)}}catch(error51){if(this.warn("stream pipe failed","pipe",error51),this.status==="running")this.status="errored"}finally{reader.releaseLock()}}retainStderrTail(text3){this.stderrTail=(this.stderrTail+text3).slice(-MAX_QUOTA_EVIDENCE_BYTES)}classifyQuota(){let classification=classifyQuotaErrorRecord(this.stderrTail);if(!classification.quota)return;this.quotaProducer.produce(buildQuotaObservation({source:"streaming-error",reason:classification.reason,attribution:{...this.quotaContext,agent:this.quotaContext?.agent??this.spec.id,executor:this.quotaContext?.executor??this.spec.executor??this.spec.type}}))}warn(message,op,error51){this.logger.warn(message,{agentId:this.agentId,op,...error51!==void 0?{error:error51 instanceof Error?error51.message:String(error51)}:{}})}}var init_team_agent_process=__esm(()=>{init_dist7();init_dist6();init_quota()});class TeamOrchestrator{configDir;inbox;specs=[];running=new Map;processFactory;events;constructor(configDir,inbox,options={}){this.configDir=configDir,this.inbox=inbox,this.processFactory=options.processFactory??((processOptions)=>new TeamAgentProcess(processOptions)),this.events=options.events??(options.lifecycleBus?new EventBus({lifecycleBus:options.lifecycleBus}):new EventBus)}async loadSpecs(){return this.specs=await loadAgentSpecs(this.configDir),[...this.specs]}async getSpec(id){if(this.specs.length===0)await this.loadSpecs();return this.specs.find((spec)=>spec.id===id)}async startAgent(id){let spec=await this.requireSpec(id),agentType=this.requireAgentName(spec.type),peers=(await this.getPeerSpecs(spec.workspace,spec.id)).map((peer)=>({id:peer.id,type:peer.type,purpose:peer.purpose})),command=buildAgentCommand(agentType,{purpose:spec.purpose,systemPrompt:typeof spec.config.systemPrompt==="string"?spec.config.systemPrompt:void 0,peers},{workspace:spec.workspace}),process11=this.processFactory({spec,command:[command.command,...command.args],cwd:spec.workspace});return await process11.start(),this.running.set(id,process11),await this.injectPendingMessages(process11),this.events.emit("agent.started",{agentId:spec.id,agentType:spec.type,pid:process11.getPid(),severity:"info"}),process11}async stopAgent(id){let process11=this.running.get(id);if(process11===void 0)return;await process11.stop(),this.running.delete(id);let exitCode=process11.getExitCode();this.events.emit("agent.stopped",{agentId:id,exitCode,severity:exitCode===0||exitCode===null?"info":"warning"})}async restartAgent(id){return await this.stopAgent(id),this.startAgent(id)}async sendMessage(fromId,toId,body,inReplyTo){let msgId=await this.inbox.enqueue(fromId,toId,body,inReplyTo),process11=this.running.get(toId),ok=process11!==void 0?await this.flushInbox(process11,"live stdin injection failed"):!1;return this.events.emit("agent.message.sent",{agentId:toId,ok,severity:ok?"info":"warning"}),msgId}getRunningAgents(){return new Map(this.running)}async getAgentStatus(id){let process11=this.running.get(id);if(process11===void 0)return await this.getSpec(id)===void 0?"unknown":"stopped";return process11.getStatus()}async getPeerSpecs(workspace,excludeId){if(this.specs.length===0)await this.loadSpecs();return this.specs.filter((spec)=>spec.workspace===workspace&&spec.id!==excludeId)}async stopAll(){await Promise.all([...this.running.keys()].map((id)=>this.stopAgent(id)))}on(event,listener){return this.events.on(event,listener),()=>this.events.off(event,listener)}async requireSpec(id){let spec=await this.getSpec(id);if(spec===void 0)throw Error(`Agent spec not found: ${id}`);return spec}requireAgentName(type){let canonical=resolveAgentName(type);if(canonical===void 0)throw Error(`Unsupported agent type: ${type}`);return canonical}async injectPendingMessages(process11){return this.flushInbox(process11,"startup stdin injection failed")}async flushInbox(process11,failLabel){let ok=!0;for(;;){let messages=await this.inbox.drainPending(process11.agentId);if(messages.length===0)break;for(let message of messages)if((await process11.send(formatMessage(message))).ok)await this.inbox.markDelivered(message.id);else ok=!1,await this.inbox.markFailed(message.id,failLabel);if(messages.length<100)break}return ok}}var init_team_orchestrator=__esm(()=>{init_dist7();init_agent_spec();init_shims();init_ai_runner();init_team_agent_process()});var exports_dist3={};__export(exports_dist3,{validateQuestions:()=>validateQuestions2,validateAnswers:()=>validateAnswers,validateAgentId:()=>validateAgentId,translateSlashCommand:()=>translateSlashCommand,saveAgentSpec:()=>saveAgentSpec,resolveLayaDriver:()=>resolveLayaDriver,resolveFmDriver:()=>resolveFmDriver,resolveAgentName:()=>resolveAgentName,q:()=>q,observeQuotaHealthResult:()=>observeQuotaHealthResult,normalizeObservedAt:()=>normalizeObservedAt,loadAgentSpecs:()=>loadAgentSpecs,isClaudeStyleSlashCommand:()=>isClaudeStyleSlashCommand,isAuthenticated:()=>isAuthenticated,isAgentName:()=>isAgentName,getGitContextSync:()=>getGitContextSync,getGitContext:()=>getGitContext,getAgentShim:()=>getAgentShim,getAgentSessionCapability:()=>getAgentSessionCapability,formatMessage:()=>formatMessage,extractProvider:()=>extractProvider,extractModelName:()=>extractModelName,deleteAgentSpec:()=>deleteAgentSpec,createDecisionMaker:()=>createDecisionMaker,classifyQuotaErrorRecord:()=>classifyQuotaErrorRecord,buildQuotaObservation:()=>buildQuotaObservation,buildIdentityPreamble:()=>buildIdentityPreamble,buildAgentCommand:()=>buildAgentCommand,assertSafeSessionId:()=>assertSafeSessionId,ValueError:()=>ValueError,TeamOrchestrator:()=>TeamOrchestrator,TeamAgentProcess:()=>TeamAgentProcess,TIER2_AGENTS:()=>TIER2_AGENTS,TIER1_PRIORITY:()=>TIER1_PRIORITY,QuotaObservationProducer:()=>QuotaObservationProducer,OmpModelProbe:()=>OmpModelProbe,ModelHealthProbeRegistry:()=>ModelHealthProbeRegistry,MAX_QUOTA_EVIDENCE_BYTES:()=>MAX_QUOTA_EVIDENCE_BYTES,DoctorRunner:()=>DoctorRunner,DecisionTimeoutError:()=>DecisionTimeoutError,DecisionRequestError:()=>DecisionRequestError,DecisionRateLimitError:()=>DecisionRateLimitError,DecisionError:()=>DecisionError,DecisionConnectionError:()=>DecisionConnectionError,DecisionConfigError:()=>DecisionConfigError,DecisionBackendError:()=>DecisionBackendError,DecisionAuthError:()=>DecisionAuthError,DISPLAY_ORDER:()=>DISPLAY_ORDER,DEFAULT_PROBE_TIMEOUT_MS:()=>DEFAULT_PROBE_TIMEOUT_MS,AiRunner:()=>AiRunner,AgentDetector:()=>AgentDetector,AGENT_SHIMS:()=>AGENT_SHIMS,AGENT_RUN_ID_ENV:()=>AGENT_RUN_ID_ENV,AGENT_EXECUTION_ID_ENV:()=>AGENT_EXECUTION_ID_ENV,AGENT_ACTION_ID_ENV:()=>AGENT_ACTION_ID_ENV});var init_dist9=__esm(()=>{init_agent_detector();init_agent_spec();init_auth_shims();init_shims();init_ai_runner();init_decision_maker();init_errors5();init_types3();init_validation2();init_doctor_runner();init_events();init_identity();init_model_health_probe();init_quota();init_slash_command();init_team_agent_process();init_team_orchestrator()});import{basename as basename5,dirname as dirname9,join as join11,resolve as resolve7}from"node:path";init_zod();init_zod();var BOARD_MODULE_ID_PATTERN=/^[a-z][a-z0-9-]*$/;function isSafeFrameUrl(value){let parsed;try{parsed=new URL(value)}catch{return!1}if(parsed.protocol!=="http:"&&parsed.protocol!=="https:")return!1;return parsed.username===""&&parsed.password===""}var sharedDeclarationFields={id:exports_external.string().regex(BOARD_MODULE_ID_PATTERN,"module id must match ^[a-z][a-z0-9-]*$"),name:exports_external.string().min(1,"module name must not be empty"),icon:exports_external.string().min(1,"module icon must not be empty"),sidebarLabel:exports_external.string().optional(),description:exports_external.string().optional(),order:exports_external.number().refine((value)=>Number.isFinite(value),{message:"module order must be a finite number"}).optional(),enabled:exports_external.boolean().optional().default(!0)},boardModuleDeclarationSchema=exports_external.discriminatedUnion("type",[exports_external.object({...sharedDeclarationFields,type:exports_external.literal("react"),directory:exports_external.string().min(1),entry:exports_external.string().min(1),styles:exports_external.array(exports_external.string().min(1)).optional().default(()=>[])}).strict(),exports_external.object({...sharedDeclarationFields,type:exports_external.literal("iframe"),url:exports_external.string().refine(isSafeFrameUrl,{message:"iframe url must be an absolute http(s) URL without embedded credentials (relative URLs and other schemes are rejected)"})}).strict()]),boardModuleDeclarationsSchema=exports_external.array(boardModuleDeclarationSchema);var RFC3339_PATTERN=/^\d{4}-\d{2}-\d{2}[Tt]\d{2}:\d{2}:\d{2}(\.\d+)?([Zz]|[+-]\d{2}:\d{2})$/;function isRfc3339Timestamp(value){return RFC3339_PATTERN.test(value)&&Number.isFinite(Date.parse(value))}var ALL_FINDING_CODES=["L1.markdown-parse","L1.schema-validation","L2.missing-required-section","L2.forbidden-section","L2.disallowed-section","L2.heading-level","L2.section-order","L2.unclosed-code-fence","L3.requirements-format","L3.requirements-checkbox","L3.requirements-empty","L3.ac-empty","L3.ac-requirement-coverage","L3.solution-file-line","L3.review-priority-table","L3.required-section-placeholder","L3.plan-format","L3.unchecked-checklist","L3.ac-checklist-text","L3.ac-bdd-error","L3.ac-bdd-warning","L3.ac-bdd-invalid","L3.scope-delineation","L3.one-active-goal","L3.children-limit","L3.review-testing-contradiction","L4.design-placeholder","L4.feature-not-found","L4.feature-terminal","L4.missing-feature-id","L4.parent-not-found","L4.dependency-not-found","L4.rollup-subtasks-open","L4.rollup-parent-open","L4.rollup-missing-roster","L4.rollup-roster-not-declared-dependency","L4.readiness-blocked","L4.prose-prerequisite-unlisted","L4.prerequisite-cycle","L4.prerequisite-not-done","L4.gate-language","L4.linked-task-parse-failed","L4.orphan-scenarios","L4.uncovered-task-scenario","L4.uncovered-feature-scenario","L4.verdict-rows-match-no-scenario","L4.verifying-incomplete-tasks","L4.dogfood-missing","L4.stale-line-anchor","L4.anchor-unresolved","L4.anchor-subject-mismatch","L4.malformed-verdict-artifact","L4.scenario-unverified","L4.testing-verdict-stub","L4.evidence-not-recoverable","L4.feature-receipt-missing","L4.feature-receipt-malformed","L4.feature-receipt-cross-feature","L4.feature-receipt-divergent","L4.feature-receipt-failed","L4.feature-receipt-run","L4.feature-receipt-stale","L4.feature-receipt-contract","precheck-size","precheck-evidence","inventory-coverage","feature-reopen-unavailable"];function isFindingCode(code){return ALL_FINDING_CODES.includes(code)}var FINDING_CODES={L1_MARKDOWN_PARSE:"L1.markdown-parse",L1_SCHEMA_VALIDATION:"L1.schema-validation",L2_MISSING_REQUIRED_SECTION:"L2.missing-required-section",L2_FORBIDDEN_SECTION:"L2.forbidden-section",L2_DISALLOWED_SECTION:"L2.disallowed-section",L2_HEADING_LEVEL:"L2.heading-level",L2_SECTION_ORDER:"L2.section-order",L2_UNCLOSED_CODE_FENCE:"L2.unclosed-code-fence",L3_REQUIREMENTS_FORMAT:"L3.requirements-format",L3_REQUIREMENTS_CHECKBOX:"L3.requirements-checkbox",L3_REQUIREMENTS_EMPTY:"L3.requirements-empty",L3_AC_EMPTY:"L3.ac-empty",L3_AC_REQUIREMENT_COVERAGE:"L3.ac-requirement-coverage",L3_SOLUTION_FILE_LINE:"L3.solution-file-line",L3_REVIEW_PRIORITY_TABLE:"L3.review-priority-table",L3_REQUIRED_SECTION_PLACEHOLDER:"L3.required-section-placeholder",L3_PLAN_FORMAT:"L3.plan-format",L3_UNCHECKED_CHECKLIST:"L3.unchecked-checklist",L3_AC_CHECKLIST_TEXT:"L3.ac-checklist-text",L3_AC_BDD_ERROR:"L3.ac-bdd-error",L3_AC_BDD_WARNING:"L3.ac-bdd-warning",L3_AC_BDD_INVALID:"L3.ac-bdd-invalid",L3_SCOPE_DELINEATION:"L3.scope-delineation",L3_ONE_ACTIVE_GOAL:"L3.one-active-goal",L3_CHILDREN_LIMIT:"L3.children-limit",L3_REVIEW_TESTING_CONTRADICTION:"L3.review-testing-contradiction",L4_DESIGN_PLACEHOLDER:"L4.design-placeholder",L4_FEATURE_NOT_FOUND:"L4.feature-not-found",L4_FEATURE_TERMINAL:"L4.feature-terminal",L4_MISSING_FEATURE_ID:"L4.missing-feature-id",L4_PARENT_NOT_FOUND:"L4.parent-not-found",L4_DEPENDENCY_NOT_FOUND:"L4.dependency-not-found",L4_ROLLUP_SUBTASKS_OPEN:"L4.rollup-subtasks-open",L4_ROLLUP_PARENT_OPEN:"L4.rollup-parent-open",L4_ROLLUP_MISSING_ROSTER:"L4.rollup-missing-roster",L4_ROLLUP_ROSTER_NOT_DECLARED_DEPENDENCY:"L4.rollup-roster-not-declared-dependency",L4_READINESS_BLOCKED:"L4.readiness-blocked",L4_PROSE_PREREQUISITE_UNLISTED:"L4.prose-prerequisite-unlisted",L4_PREREQUISITE_CYCLE:"L4.prerequisite-cycle",L4_PREREQUISITE_NOT_DONE:"L4.prerequisite-not-done",L4_GATE_LANGUAGE:"L4.gate-language",L4_LINKED_TASK_PARSE_FAILED:"L4.linked-task-parse-failed",L4_ORPHAN_SCENARIOS:"L4.orphan-scenarios",L4_UNCOVERED_TASK_SCENARIO:"L4.uncovered-task-scenario",L4_UNCOVERED_FEATURE_SCENARIO:"L4.uncovered-feature-scenario",L4_VERDICT_ROWS_MATCH_NO_SCENARIO:"L4.verdict-rows-match-no-scenario",L4_DOGFOOD_MISSING:"L4.dogfood-missing",L4_VERIFYING_INCOMPLETE_TASKS:"L4.verifying-incomplete-tasks",L4_STALE_LINE_ANCHOR:"L4.stale-line-anchor",L4_ANCHOR_UNRESOLVED:"L4.anchor-unresolved",L4_ANCHOR_SUBJECT_MISMATCH:"L4.anchor-subject-mismatch",L4_MALFORMED_VERDICT_ARTIFACT:"L4.malformed-verdict-artifact",L4_SCENARIO_UNVERIFIED:"L4.scenario-unverified",L4_TESTING_VERDICT_STUB:"L4.testing-verdict-stub",L4_EVIDENCE_NOT_RECOVERABLE:"L4.evidence-not-recoverable",L4_FEATURE_RECEIPT_MISSING:"L4.feature-receipt-missing",L4_FEATURE_RECEIPT_MALFORMED:"L4.feature-receipt-malformed",L4_FEATURE_RECEIPT_CROSS_FEATURE:"L4.feature-receipt-cross-feature",L4_FEATURE_RECEIPT_DIVERGENT:"L4.feature-receipt-divergent",L4_FEATURE_RECEIPT_FAILED:"L4.feature-receipt-failed",L4_FEATURE_RECEIPT_RUN:"L4.feature-receipt-run",L4_FEATURE_RECEIPT_STALE:"L4.feature-receipt-stale",L4_FEATURE_RECEIPT_CONTRACT:"L4.feature-receipt-contract",PRECHECK_SIZE:"precheck-size",PRECHECK_EVIDENCE:"precheck-evidence",INVENTORY_COVERAGE:"inventory-coverage",FEATURE_REOPEN_UNAVAILABLE:"feature-reopen-unavailable"};init_dist();init_zod();var projectEntrySchema=exports_external.object({name:exports_external.string().min(1),path:exports_external.string().min(1),port:exports_external.number().int().nonnegative().default(0)}),projectsFileSchema=exports_external.object({schema_version:exports_external.literal(1).default(1),projects:exports_external.array(projectEntrySchema).default([])});init_zod();var slashCommandCategorySchema=exports_external.enum(["git","dev","sys","harness"]),slashCommandItemSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().min(1),category:slashCommandCategorySchema.default("dev"),argumentHint:exports_external.string().optional(),tags:exports_external.array(exports_external.string()).default([]),role:exports_external.string().optional(),source:exports_external.string().optional()}),slashCommandsFileSchema=exports_external.object({version:exports_external.number().int().default(1),updatedAt:exports_external.string().optional(),commands:exports_external.array(slashCommandItemSchema).default([])});var SPUR_LOG_LEVELS=["debug","info","warn","error"],DEFAULT_TASKS_DIR="docs/tasks",DEFAULT_FEATURES_DIR="docs/features",DEFAULT_DATABASE_URL=".spur/spur.db";var folderConfigSchema=exports_external.object({baseCounter:exports_external.number().int().nonnegative().default(0),label:exports_external.string().optional()});function folderPathWithDefault(defaultPath){return exports_external.preprocess((v)=>v==null?void 0:v,exports_external.string().default(defaultPath))}var tasksConfigSchema=exports_external.object({folders:exports_external.record(exports_external.string(),folderConfigSchema).default({}),active:folderPathWithDefault(DEFAULT_TASKS_DIR),severity:exports_external.record(exports_external.string(),exports_external.enum(["error","warning","off"])).optional()}).superRefine((data,ctx)=>{if(data.severity){for(let code of Object.keys(data.severity))if(!isFindingCode(code))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["severity",code],message:`Unknown finding code "${code}" in severity overrides map`})}}),featuresConfigSchema=exports_external.object({dir:folderPathWithDefault(DEFAULT_FEATURES_DIR)}),EXECUTOR_CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"];function normalizeExecutorTier(value){return value==="capable"?"capable-1":value}var executorCapabilityTierSchema=exports_external.preprocess((value)=>{if(value===void 0||value===null)return;return typeof value==="string"?normalizeExecutorTier(value):value},exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional()),AGENT_ROLE_NAMES=["scribe","coder","reviewer","planner"];var EXECUTION_CAPABILITY_AXES=["fsRead","fsWrite","networkEgress","processSpawn","externalMutationApproval"],SESSION_CAPABILITY_AXES=["resumeById","sessionDir","persistentStdin","structuredOutput"],AGENT_RUN_CAPABILITY_AXES=[...EXECUTION_CAPABILITY_AXES,...SESSION_CAPABILITY_AXES],EXECUTION_CAPABILITY_STATES=["enforced","available","unavailable","unknown"],EXECUTION_CAPABILITY_PROVENANCES=["native-known","operator-configured","unattested"],ExecutionCapabilityAttestationSchema=exports_external.object({state:exports_external.enum(EXECUTION_CAPABILITY_STATES),provenance:exports_external.enum(EXECUTION_CAPABILITY_PROVENANCES)}),ExecutionCapabilitiesSchema=exports_external.object({version:exports_external.literal(1),axes:exports_external.partialRecord(exports_external.enum(EXECUTION_CAPABILITY_AXES),ExecutionCapabilityAttestationSchema)}),EXECUTION_CAPABILITY_REQUIREMENTS=["available","enforced"],RequiresCapabilitiesSchema=exports_external.partialRecord(exports_external.enum(AGENT_RUN_CAPABILITY_AXES),exports_external.enum(EXECUTION_CAPABILITY_REQUIREMENTS)),executorAvailabilityOwnerSchema=exports_external.enum(["operator","quota","probe"]),executorDisabledObjectSchema=exports_external.object({owner:executorAvailabilityOwnerSchema,since:exports_external.string().refine(isRfc3339Timestamp,{message:"since must be an RFC 3339 timestamp"}),reason:exports_external.string().min(1)}),AgentExecutorConfigSchema=exports_external.object({name:exports_external.string().min(1),agent:exports_external.string().min(1),model:exports_external.string().min(1).optional(),tier:executorCapabilityTierSchema.optional(),executionCapabilities:ExecutionCapabilitiesSchema.optional(),disabled:exports_external.union([exports_external.boolean(),executorDisabledObjectSchema]).default(!1)});function normalizeExecutorAvailability(raw){if(raw===void 0||raw===null)return{disabled:!1,owner:void 0,since:void 0,reason:void 0};if(typeof raw==="boolean")return raw?{disabled:!0,owner:"operator",since:void 0,reason:void 0}:{disabled:!1,owner:void 0,since:void 0,reason:void 0};return{disabled:!0,owner:raw.owner,since:raw.since,reason:raw.reason}}var AgentRoleConfigSchema=exports_external.object({tier:exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional(),stages:exports_external.array(exports_external.string().min(1)).min(1).optional()});var FleetMemberSchema=exports_external.object({id:exports_external.string().min(1).optional(),role:exports_external.enum(AGENT_ROLE_NAMES,{error:(issue2)=>Error(`Unknown role "${issue2.input}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`)}).optional(),executor:exports_external.string().min(1).optional(),purpose:exports_external.string().optional(),enabled:exports_external.boolean().optional()}),FLEET_STRATEGIES=["rest","gtd"],FleetMemberEntrySchema=FleetMemberSchema.superRefine((member,ctx)=>{if(member.role===void 0&&member.executor===void 0)ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:"must declare a role or an executor — at least one is required"})}),AgentFleetSchema=exports_external.object({enabled:exports_external.boolean().default(!1),strategy:exports_external.enum(FLEET_STRATEGIES).default("rest"),orchestrator:exports_external.string().min(1).optional(),members:exports_external.array(FleetMemberEntrySchema).default([])});var AgentOutputConfigSchema=exports_external.object({"max-bytes":exports_external.number().int().positive().optional(),"max-lines":exports_external.number().int().positive().optional()}),AgentConfigSchema=exports_external.object({default:exports_external.string().optional(),executors:exports_external.array(AgentExecutorConfigSchema).optional(),roles:exports_external.record(exports_external.string(),AgentRoleConfigSchema).optional(),output:AgentOutputConfigSchema.optional(),sessionAffinity:exports_external.boolean().optional(),fleet:AgentFleetSchema.optional()}).superRefine((value,ctx)=>{for(let key of Object.keys(value.roles??{}))if(!AGENT_ROLE_NAMES.includes(key))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["roles",key],message:`Unknown role "${key}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`});let executors=value.executors,executorNames=new Set;if(executors!==void 0){let seen=new Set;for(let[index,executor]of executors.entries()){if(seen.has(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Duplicate executor name: ${executor.name}`,path:["executors",index,"name"]});if(executor.name==="inline"||executor.name==="auto")ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" is reserved (the --agent selector value '${executor.name}' has fixed semantics); rename executor at index ${index}.`,path:["executors",index,"name"]});if(AGENT_ROLE_NAMES.includes(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" collides with the role selector namespace ("${executor.name}"); rename executor at index ${index}.`,path:["executors",index,"name"]});seen.add(executor.name),executorNames.add(executor.name)}}}),RulesConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional()}),WorkflowsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional(),hitlDecisionMaker:exports_external.boolean().optional(),decideDecisionMaker:exports_external.boolean().optional(),logRetentionDays:exports_external.number().int().positive().default(30)}),DecisionsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional(),maker:exports_external.string().optional(),makers:exports_external.record(exports_external.string(),exports_external.string()).optional(),log:exports_external.enum(["full","metadata","off"]).optional()}),RedactionConfigSchema=exports_external.object({enabled:exports_external.boolean().optional()}),HistoryRefreshConfigSchema=exports_external.object({on_completion:exports_external.boolean().default(!1),debounce_ms:exports_external.number().int().min(1000).default(600000)}),HistoryConfigSchema=exports_external.object({refresh:HistoryRefreshConfigSchema.optional()}),VersionCarrierEntrySchema=exports_external.looseObject({type:exports_external.string().min(1)}),BuilderBumpVerConfigSchema=exports_external.object({tagVersionSeparator:exports_external.string().min(1).default("-v"),aggregatePackage:exports_external.string().min(1).optional(),publishWorkflow:exports_external.string().min(1).default("publish.yml"),releaseCommitType:exports_external.string().min(1).default("chore"),releaseCommitScope:exports_external.string().min(1).default("release"),ghRunListLimit:exports_external.number().int().positive().default(5),versionCarriers:exports_external.array(VersionCarrierEntrySchema).default([])}),BuilderConfigSchema=exports_external.object({"bump-ver":BuilderBumpVerConfigSchema.optional()});var bootstrapOptionsSchema=exports_external.object({options:exports_external.record(exports_external.string(),exports_external.unknown()).optional()}),bootstrapSectionSchema=bootstrapOptionsSchema.extend({modules:boardModuleDeclarationsSchema.optional()}),spurConfigSchema=exports_external.object({version:exports_external.string().optional(),name:exports_external.string().optional(),bootstrap:bootstrapSectionSchema.optional(),agent:AgentConfigSchema.optional(),rules:RulesConfigSchema.optional(),workflows:WorkflowsConfigSchema.optional(),decisions:DecisionsConfigSchema.optional(),redaction:RedactionConfigSchema.optional(),history:HistoryConfigSchema.optional(),builder:BuilderConfigSchema.optional(),tasks:tasksConfigSchema.optional(),features:featuresConfigSchema.optional()});var configSchema=exports_external.object({database:exports_external.object({url:exports_external.string().default(DEFAULT_DATABASE_URL)}).default({url:DEFAULT_DATABASE_URL}),server:exports_external.object({port:exports_external.coerce.number().int().positive().default(3000),host:exports_external.string().default("localhost"),openBrowser:exports_external.boolean().default(!0),webDistPath:exports_external.string().nullable().default(null)}).default({port:3000,host:"localhost",openBrowser:!0,webDistPath:null}),telemetry:exports_external.object({enabled:exports_external.boolean().default(!1),endpoint:exports_external.string().optional()}).default({enabled:!1}),logging:exports_external.object({level:exports_external.enum(SPUR_LOG_LEVELS).default("info")}).default({level:"info"})});var ARTIFACT_ARRAY_CLASSIFICATION={byTool:"ranked",bySession:"ranked",topStepsByTokens:"ranked",topStepsByDuration:"ranked",topSteps:"ranked",bottlenecks:"ranked",coverage:"set",daily:"set",loops:"set",warnings:"set",pairings:"set",ladderSnapshot:"set",stepSupport:"set",phases:"set",tools:"set",skills:"set",sources:"set",models:"set"},RANKED_ARTIFACT_KEYS=new Set(Object.entries(ARTIFACT_ARRAY_CLASSIFICATION).filter(([,kind])=>kind==="ranked").map(([key])=>key));var RESOLVED_TOOL_NAME_SQL=`CASE
334
+ `),{ok:!0}}catch(error51){return this.warn("stdin write failed","send.writeStdin",error51),this.status="errored",{ok:!1}}}subscribe(callback){return this.subscribers.add(callback),()=>{this.subscribers.delete(callback)}}getStatus(){return this.status}getPid(){return this.subprocess?.pid??null}getExitCode(){return this.exitCode}async pipe(stream,isStderr){let reader=stream.getReader();try{while(!0){let chunk=await reader.read();if(chunk.done)break;let buffer=Buffer5.from(chunk.value);if(isStderr)this.retainStderrTail(buffer.toString("utf8"));for(let subscriber of this.subscribers)subscriber(buffer)}}catch(error51){if(this.warn("stream pipe failed","pipe",error51),this.status==="running")this.status="errored"}finally{reader.releaseLock()}}retainStderrTail(text3){this.stderrTail=(this.stderrTail+text3).slice(-MAX_QUOTA_EVIDENCE_BYTES)}classifyQuota(){let classification=classifyQuotaErrorRecord(this.stderrTail);if(!classification.quota)return;this.quotaProducer.produce(buildQuotaObservation({source:"streaming-error",reason:classification.reason,attribution:{...this.quotaContext,agent:this.quotaContext?.agent??this.spec.id,executor:this.quotaContext?.executor??this.spec.executor??this.spec.type}}))}warn(message,op,error51){this.logger.warn(message,{agentId:this.agentId,op,...error51!==void 0?{error:error51 instanceof Error?error51.message:String(error51)}:{}})}}var init_team_agent_process=__esm(()=>{init_dist7();init_dist6();init_quota()});class TeamOrchestrator{configDir;inbox;specs=[];running=new Map;processFactory;events;constructor(configDir,inbox,options={}){this.configDir=configDir,this.inbox=inbox,this.processFactory=options.processFactory??((processOptions)=>new TeamAgentProcess(processOptions)),this.events=options.events??(options.lifecycleBus?new EventBus({lifecycleBus:options.lifecycleBus}):new EventBus)}async loadSpecs(){return this.specs=await loadAgentSpecs(this.configDir),[...this.specs]}async getSpec(id){if(this.specs.length===0)await this.loadSpecs();return this.specs.find((spec)=>spec.id===id)}async startAgent(id){let spec=await this.requireSpec(id),agentType=this.requireAgentName(spec.type),peers=(await this.getPeerSpecs(spec.workspace,spec.id)).map((peer)=>({id:peer.id,type:peer.type,purpose:peer.purpose})),command=buildAgentCommand(agentType,{purpose:spec.purpose,systemPrompt:typeof spec.config.systemPrompt==="string"?spec.config.systemPrompt:void 0,peers},{workspace:spec.workspace}),process11=this.processFactory({spec,command:[command.command,...command.args],cwd:spec.workspace});return await process11.start(),this.running.set(id,process11),await this.injectPendingMessages(process11),this.events.emit("agent.started",{agentId:spec.id,agentType:spec.type,pid:process11.getPid(),severity:"info"}),process11}async stopAgent(id){let process11=this.running.get(id);if(process11===void 0)return;await process11.stop(),this.running.delete(id);let exitCode=process11.getExitCode();this.events.emit("agent.stopped",{agentId:id,exitCode,severity:exitCode===0||exitCode===null?"info":"warning"})}async restartAgent(id){return await this.stopAgent(id),this.startAgent(id)}async sendMessage(fromId,toId,body,inReplyTo){let msgId=await this.inbox.enqueue(fromId,toId,body,inReplyTo),process11=this.running.get(toId),ok=process11!==void 0?await this.flushInbox(process11,"live stdin injection failed"):!1;return this.events.emit("agent.message.sent",{agentId:toId,ok,severity:ok?"info":"warning"}),msgId}getRunningAgents(){return new Map(this.running)}async getAgentStatus(id){let process11=this.running.get(id);if(process11===void 0)return await this.getSpec(id)===void 0?"unknown":"stopped";return process11.getStatus()}async getPeerSpecs(workspace,excludeId){if(this.specs.length===0)await this.loadSpecs();return this.specs.filter((spec)=>spec.workspace===workspace&&spec.id!==excludeId)}async stopAll(){await Promise.all([...this.running.keys()].map((id)=>this.stopAgent(id)))}on(event,listener){return this.events.on(event,listener),()=>this.events.off(event,listener)}async requireSpec(id){let spec=await this.getSpec(id);if(spec===void 0)throw Error(`Agent spec not found: ${id}`);return spec}requireAgentName(type){let canonical=resolveAgentName(type);if(canonical===void 0)throw Error(`Unsupported agent type: ${type}`);return canonical}async injectPendingMessages(process11){return this.flushInbox(process11,"startup stdin injection failed")}async flushInbox(process11,failLabel){let ok=!0;for(;;){let messages=await this.inbox.drainPending(process11.agentId);if(messages.length===0)break;for(let message of messages)if((await process11.send(formatMessage(message))).ok)await this.inbox.markDelivered(message.id);else ok=!1,await this.inbox.markFailed(message.id,failLabel);if(messages.length<100)break}return ok}}var init_team_orchestrator=__esm(()=>{init_dist7();init_agent_spec();init_shims();init_ai_runner();init_team_agent_process()});var exports_dist3={};__export(exports_dist3,{validateQuestions:()=>validateQuestions2,validateAnswers:()=>validateAnswers,validateAgentId:()=>validateAgentId,translateSlashCommand:()=>translateSlashCommand,saveAgentSpec:()=>saveAgentSpec,resolveLayaDriver:()=>resolveLayaDriver,resolveFmDriver:()=>resolveFmDriver,resolveAgentName:()=>resolveAgentName,q:()=>q,observeQuotaHealthResult:()=>observeQuotaHealthResult,normalizeObservedAt:()=>normalizeObservedAt,loadAgentSpecs:()=>loadAgentSpecs,isClaudeStyleSlashCommand:()=>isClaudeStyleSlashCommand,isAuthenticated:()=>isAuthenticated,isAgentName:()=>isAgentName,getGitContextSync:()=>getGitContextSync,getGitContext:()=>getGitContext,getAgentShim:()=>getAgentShim,getAgentSessionCapability:()=>getAgentSessionCapability,formatMessage:()=>formatMessage,extractProvider:()=>extractProvider,extractModelName:()=>extractModelName,deleteAgentSpec:()=>deleteAgentSpec,createDecisionMaker:()=>createDecisionMaker,classifyQuotaErrorRecord:()=>classifyQuotaErrorRecord,buildQuotaObservation:()=>buildQuotaObservation,buildIdentityPreamble:()=>buildIdentityPreamble,buildAgentCommand:()=>buildAgentCommand,assertSafeSessionId:()=>assertSafeSessionId,ValueError:()=>ValueError,TeamOrchestrator:()=>TeamOrchestrator,TeamAgentProcess:()=>TeamAgentProcess,TIER2_AGENTS:()=>TIER2_AGENTS,TIER1_PRIORITY:()=>TIER1_PRIORITY,QuotaObservationProducer:()=>QuotaObservationProducer,OmpModelProbe:()=>OmpModelProbe,ModelHealthProbeRegistry:()=>ModelHealthProbeRegistry,MAX_QUOTA_EVIDENCE_BYTES:()=>MAX_QUOTA_EVIDENCE_BYTES,DoctorRunner:()=>DoctorRunner,DecisionTimeoutError:()=>DecisionTimeoutError,DecisionRequestError:()=>DecisionRequestError,DecisionRateLimitError:()=>DecisionRateLimitError,DecisionError:()=>DecisionError,DecisionConnectionError:()=>DecisionConnectionError,DecisionConfigError:()=>DecisionConfigError,DecisionBackendError:()=>DecisionBackendError,DecisionAuthError:()=>DecisionAuthError,DISPLAY_ORDER:()=>DISPLAY_ORDER,DEFAULT_PROBE_TIMEOUT_MS:()=>DEFAULT_PROBE_TIMEOUT_MS,AiRunner:()=>AiRunner,AgentDetector:()=>AgentDetector,AGENT_SHIMS:()=>AGENT_SHIMS,AGENT_RUN_ID_ENV:()=>AGENT_RUN_ID_ENV,AGENT_EXECUTION_ID_ENV:()=>AGENT_EXECUTION_ID_ENV,AGENT_ACTION_ID_ENV:()=>AGENT_ACTION_ID_ENV});var init_dist9=__esm(()=>{init_agent_detector();init_agent_spec();init_auth_shims();init_shims();init_ai_runner();init_decision_maker();init_errors5();init_types3();init_validation2();init_doctor_runner();init_events();init_identity();init_model_health_probe();init_quota();init_slash_command();init_team_agent_process();init_team_orchestrator()});function isBigIntDType(dtype){return dtype==="u64"||dtype==="i64"}function f32ToBf16Bits(x){f32Scratch[0]=x;let u2=u32Scratch[0];if((u2&2147483647)>2139095040)return 32704;return u2+32767+(u2>>>16&1)>>>16&65535}function bf16BitsToF32(bits){return u32Scratch[0]=bits<<16,f32Scratch[0]}function toF32(t){if(t.dtype==="f32")return t.data;if(t.dtype==="bf16"){let u2=t.data,out=new Float32Array(u2.length);for(let i2=0;i2<u2.length;i2++)out[i2]=bf16BitsToF32(u2[i2]);return out}if(isBigIntDType(t.dtype)){let b=t.data,out=new Float32Array(b.length);for(let i2=0;i2<b.length;i2++)out[i2]=Number(b[i2]);return out}return Float32Array.from(t.data)}function quantGroups(inFeatures,groupSize){return Math.ceil(inFeatures/groupSize)}function validateQuantized(h2){let[N,K]=h2.shape,where=`quantized [${N}, ${K}] q${h2.bits}/${h2.mode}/g${h2.groupSize}`;if(h2.bits!==4&&h2.bits!==8)throw RangeError(`${where}: bits must be 4 or 8`);if(h2.mode!=="symmetric"&&h2.mode!=="affine")throw RangeError(`${where}: mode must be "symmetric" or "affine"`);if(!(Number.isInteger(N)&&N>0&&Number.isInteger(K)&&K>0))throw RangeError(`${where}: bad shape`);if(!(Number.isInteger(h2.groupSize)&&h2.groupSize>0))throw RangeError(`${where}: bad group size`);if(K*h2.bits%32)throw RangeError(`${where}: in · bits must be a multiple of 32`);if(h2.data.length!==N*K*h2.bits/8)throw RangeError(`${where}: data has ${h2.data.length} bytes, want ${N*K*h2.bits/8}`);let G=quantGroups(K,h2.groupSize),check2=(t,name)=>{if(!t)throw RangeError(`${where}: missing ${name}`);if(t.dtype!=="f32"&&t.dtype!=="f16"&&t.dtype!=="bf16")throw TypeError(`${where}: ${name} must be float`);if(t.shape.length!==2||t.shape[0]!==N||t.shape[1]!==G)throw RangeError(`${where}: ${name} has shape [${t.shape}], want [${N}, ${G}]`)};if(check2(h2.scales,"scales"),h2.mode==="affine")check2(h2.biases,"biases");else if(h2.biases)throw RangeError(`${where}: symmetric quantization takes no biases`)}function unpackQuantized(h2){let[N,K]=h2.shape,n2=N*K,d=h2.data,q2=new Int32Array(n2),signed=h2.mode==="symmetric";if(h2.bits===8)for(let i2=0;i2<n2;i2++)q2[i2]=signed?d[i2]<<24>>24:d[i2];else for(let i2=0;i2<n2;i2+=2){let lo=d[i2>>1]&15,hi=d[i2>>1]>>4;q2[i2]=signed?lo<<28>>28:lo,q2[i2+1]=signed?hi<<28>>28:hi}return q2}var f32Scratch,u32Scratch;var init_host=__esm(()=>{f32Scratch=new Float32Array(1),u32Scratch=new Uint32Array(f32Scratch.buffer)});function bit(b,x){return b.cast(b.cast(x,"bool"),"f32")}function onesLike(b,x,dtype=x.dtype){return b.scope(()=>b.cast(b.cast(b.exp(b.scale(bit(b,x),0)),"bool"),dtype))}function geglu(b,x){if(b.geglu)return b.geglu(x);return b.scope(()=>{let[value,gate]=b.split(x,2,x.shape.length-1);return b.mul(b.gelu(value),gate)})}function meanPool(b,x,mask){if(b.meanPool)return b.meanPool(x,mask);return b.scope(()=>{let[B,L]=x.shape,m=b.cast(b.reshape(mask,[B,L,1]),"f32"),total=b.sum(b.mul(b.cast(x,"f32"),m),1),n2=b.sum(m,1);return b.div(total,b.maximum(n2,onesLike(b,n2)))})}function hasNativeQuantized(b){return QUANTIZED_OPS.every((op)=>typeof b[op]==="function")}function isQuantized(x){return!!x&&typeof x==="object"&&"scales"in x&&"native"in x}async function uploadFloat(b,h2,dtype){let t=await b.fromHost(h2.dtype==="f32"||b.supports(h2.dtype)?h2:{dtype:"f32",shape:h2.shape,data:toF32(h2)});if(t.dtype===dtype)return t;let c3=b.cast(t,dtype);return b.dispose(t),c3}async function uploadQuantized(b,h2,dtype){if(validateQuantized(h2),!isFloat(dtype))throw TypeError(`uploadQuantized: dtype must be float, got ${dtype}`);if(b.fromHostQuantized&&b.quantizedLinear&&b.quantizedEmbedding){let q3=await b.fromHostQuantized(h2,dtype);if(q3)return q3}let[N,K]=h2.shape,q2=unpackQuantized(h2),jobs=[uploadFloat(b,{dtype:"f32",shape:[N,K],data:Float32Array.from(q2)},dtype),uploadFloat(b,h2.scales,dtype),...h2.mode==="affine"?[uploadFloat(b,h2.biases,dtype)]:[]],r=await Promise.allSettled(jobs),bad=r.find((x)=>x.status==="rejected"),ok=r.flatMap((x)=>x.status==="fulfilled"?[x.value]:[]);if(bad){for(let t of ok)b.dispose(t);throw bad.reason}let{bits,groupSize,mode}=h2;return{shape:[N,K],bits,groupSize,mode,dtype,native:!1,w:ok[0],scales:ok[1],biases:ok[2]??null}}function disposeQuantized(b,q2){if(b.dispose(q2.w),b.dispose(q2.scales),q2.biases)b.dispose(q2.biases)}function dequantRows(b,w,scales,biases,groupSize,dtype){return b.scope(()=>{let[R,K]=w.shape,G=Math.ceil(K/groupSize),full=Math.floor(K/groupSize),f=(t)=>b.cast(t,"f32"),part=(w0,w1,g0,g1)=>{let n2=g1-g0,gs=(w1-w0)/n2,wq=b.reshape(f(b.slice(w,[0,w0],[R,w1])),[R,n2,gs]),s2=b.reshape(f(b.slice(scales,[0,g0],[R,g1])),[R,n2,1]),v2=b.mul(wq,s2);if(biases)v2=b.add(v2,b.reshape(f(b.slice(biases,[0,g0],[R,g1])),[R,n2,1]));return b.reshape(v2,[R,w1-w0])},pieces=[];if(full)pieces.push(part(0,full*groupSize,0,full));if(G>full)pieces.push(part(full*groupSize,K,full,G));let v=pieces.length===1?pieces[0]:b.concat(pieces,1);return v.dtype===dtype?v:b.cast(v,dtype)})}function quantizedLinear(b,x,q2,bias){if(x.shape[x.shape.length-1]!==q2.shape[1])throw Error(`quantizedLinear: x [${x.shape}] vs w [${q2.shape}]`);if(q2.native){if(!b.quantizedLinear)throw Error(`quantizedLinear: the ${b.name} backend has no native quantizedLinear for its native-layout weight`);return b.quantizedLinear(x,q2.w,q2.scales,q2.biases,q2,bias??null)}return b.scope(()=>b.linear(x,dequantRows(b,q2.w,q2.scales,q2.biases,q2.groupSize,isFloat(x.dtype)?x.dtype:"f32"),bias??null))}function quantizedEmbedding(b,q2,ids){if(q2.native){if(!b.quantizedEmbedding)throw Error(`quantizedEmbedding: the ${b.name} backend has no native quantizedEmbedding for its native-layout weight`);return b.quantizedEmbedding(q2.w,q2.scales,q2.biases,q2,ids)}return b.scope(()=>{let n2=ids.shape.reduce((a2,d)=>a2*d,1),flat=b.reshape(ids,[n2]),rows=dequantRows(b,b.embedding(q2.w,flat),b.embedding(q2.scales,flat),q2.biases?b.embedding(q2.biases,flat):null,q2.groupSize,q2.dtype);return b.reshape(rows,[...ids.shape,q2.shape[1]])})}function linearAny(b,x,w,bias){return isQuantized(w)?quantizedLinear(b,x,w,bias):b.linear(x,w,bias??null)}function embeddingAny(b,table3,ids){return isQuantized(table3)?quantizedEmbedding(b,table3,ids):b.embedding(table3,ids)}var isFloat=(d)=>d==="f32"||d==="f16"||d==="bf16"||d==="f64",QUANTIZED_OPS;var init_compose=__esm(()=>{init_host();QUANTIZED_OPS=["fromHostQuantized","quantizedLinear","quantizedEmbedding"]});var init_dist10=__esm(()=>{init_host();init_compose()});function create_normalizer(config4){if(config4===null)return null;switch(config4.type){case"BertNormalizer":return new BertNormalizer_default(config4);case"Precompiled":return new Precompiled_default(config4);case"Sequence":return new Sequence_default(config4);case"Replace":return new Replace_default(config4);case"NFC":return new NFC_default(config4);case"NFD":return new NFD_default(config4);case"NFKC":return new NFKC_default(config4);case"NFKD":return new NFKD_default(config4);case"Strip":return new Strip_default(config4);case"StripAccents":return new StripAccents_default(config4);case"Lowercase":return new Lowercase_default(config4);case"Prepend":return new Prepend_default(config4);default:throw Error(`Unknown Normalizer type: ${config4.type}`)}}function create_pre_tokenizer(config4){if(config4===null)return null;switch(config4.type){case"BertPreTokenizer":return new BertPreTokenizer_default;case"Sequence":return new Sequence_default2(config4);case"Whitespace":return new Whitespace_default;case"WhitespaceSplit":return new WhitespaceSplit_default;case"Metaspace":return new Metaspace_default(config4);case"ByteLevel":return new ByteLevel_default(config4);case"Split":return new Split_default(config4);case"Punctuation":return new Punctuation_default(config4);case"Digits":return new Digits_default(config4);case"Replace":return new Replace_default2(config4);case"FixedLength":return new FixedLength_default(config4);default:throw Error(`Unknown PreTokenizer type: ${config4.type}`)}}function min(arr){if(arr.length===0)throw Error("Array must not be empty");let min_value=arr[0],index_of_min=0;for(let i2=1;i2<arr.length;++i2)if(arr[i2]<min_value)min_value=arr[i2],index_of_min=i2;return[min_value,index_of_min]}function create_tokenizer_model(model_config,config4){switch(model_config.type){case"WordPiece":return new WordPiece_default(model_config);case"Unigram":return new Unigram_default(model_config,config4.eos_token);case"BPE":return new BPE_default(model_config);default:if(model_config.vocab)if(Array.isArray(model_config.vocab))return new Unigram_default(model_config,config4.eos_token);else if(Object.hasOwn(model_config,"continuing_subword_prefix")&&Object.hasOwn(model_config,"unk_token"))if(Object.hasOwn(model_config,"merges"))return new BPE_default(model_config);else return new WordPiece_default(model_config);else return new Legacy_default(model_config,{target_lang:config4.target_lang,bos_token:config4.bos_token,eos_token:config4.eos_token,pad_token:config4.pad_token,unk_token:config4.unk_token});throw Error(`Unknown TokenizerModel type: ${model_config?.type}`)}}function create_post_processor(config4){if(config4===null)return null;switch(config4.type){case"TemplateProcessing":return new TemplateProcessing_default(config4);case"ByteLevel":return new ByteLevel_default2(config4);case"BertProcessing":return new BertProcessing_default(config4);case"RobertaProcessing":return new RobertaProcessing_default(config4);case"Sequence":return new Sequence_default3(config4);default:throw Error(`Unknown PostProcessor type: ${config4.type}`)}}function create_decoder(config4){if(config4===null)return null;switch(config4.type){case"ByteLevel":return new ByteLevel_default3(config4);case"WordPiece":return new WordPiece_default2(config4);case"Metaspace":return new Metaspace_default2(config4);case"BPEDecoder":return new BPE_default2(config4);case"CTC":return new CTC_default(config4);case"Sequence":return new Sequence_default4(config4);case"Replace":return new Replace_default3(config4);case"Fuse":return new Fuse_default(config4);case"Strip":return new Strip_default2(config4);case"ByteFallback":return new ByteFallback_default(config4);default:throw Error(`Unknown Decoder type: ${config4.type}`)}}var DictionarySplitter=class{constructor(dictionary){this.trie=this._build_trie(dictionary)}_build_trie(dictionary){let trie=Object.create(null);for(let word of dictionary){let node=trie;for(let i2=0;i2<word.length;++i2){let char=word[i2];node=node[char]??=Object.create(null)}node.end=word}return trie}split(text3){let result=[],n2=text3.length,start=0,i2=0;while(i2<n2){let node=this.trie,match=null,j=i2;while(j<n2&&(node=node[text3[j]])){if(node.end)match=node.end;++j}if(match){if(i2>start)result.push(text3.slice(start,i2));result.push(match),i2+=match.length,start=i2}else++i2}if(start<n2)result.push(text3.slice(start));return result}},DictionarySplitter_default,AddedToken=class{constructor(config4){this.content=config4.content,this.id=config4.id,this.single_word=config4.single_word??!1,this.lstrip=config4.lstrip??!1,this.rstrip=config4.rstrip??!1,this.special=config4.special??!1,this.normalized=config4.normalized??!this.special}},AddedToken_default,compile_unicode_regexp=(source,flags)=>{try{return new RegExp(source,flags)}catch(error51){if(!(error51 instanceof SyntaxError))throw error51;let property_names=new Map,rewritten=source.replace(/(\\[pP])\{([^}=]+)\}/g,(text3,p,n2,offset)=>{let preceding_backslashes=0;for(let i2=offset-1;i2>=0&&source[i2]==="\\";--i2)++preceding_backslashes;if(preceding_backslashes%2===1)return text3;let property_name=property_names.get(n2);if(property_name===void 0){try{new RegExp(`\\p{${n2}}`,"u"),property_name=n2}catch{property_name=`Script=${n2}`}property_names.set(n2,property_name)}return`${p}{${property_name}}`});if(rewritten===source)throw error51;try{return new RegExp(rewritten,flags)}catch{throw error51}}},clean_up_tokenization=(text3)=>text3.replace(/ \./g,".").replace(/ \?/g,"?").replace(/ \!/g,"!").replace(/ ,/g,",").replace(/ \' /g,"'").replace(/ n't/g,"n't").replace(/ 'm/g,"'m").replace(/ 's/g,"'s").replace(/ 've/g,"'ve").replace(/ 're/g,"'re"),create_pattern=(pattern,invert=!0)=>{if(pattern.Regex!==void 0){let regex=rewrite_oniguruma_to_js(normalize_bloom_split_char_class(pattern.Regex));return compile_unicode_regexp(regex,"gu")}else if(pattern.String!==void 0){let escaped=escape_reg_exp(pattern.String);return new RegExp(invert?escaped:`(${escaped})`,"gu")}else return console.warn("Unknown pattern type:",pattern),null},UNICODE_WORD_CHARS_IN_CLASS="\\p{Alphabetic}\\p{M}\\p{Nd}\\p{Pc}",UNICODE_WORD_CHARS,UNICODE_WORD_CLASS,UNICODE_NON_WORD_CLASS,UNICODE_WORD_BOUNDARY,UNICODE_NON_WORD_BOUNDARY,LINE_START_ANCHOR="(?:(?<![\\s\\S])|(?<=\\n))",LINE_END_ANCHOR="(?:(?=\\n)|(?![\\s\\S]))",HEX_DIGIT_CHARS="0-9A-Fa-f",ESCAPE_REWRITES,CLASS_ESCAPE_REWRITES,CLASS_COMPLEMENT_ALTERNATIVES,RAW_WHITESPACE_ESCAPES,POSIX_CLASS_FRAGMENTS,JS_SYNTAX_CHARS="^$\\.*+?()[]{}|/",GROUP_PREFIX_RE,BRACED_ESCAPE_RE,QUANTIFIER_BRACE_RE,POSIX_BRACKET_RE,EMPTY_NEGATED_POSIX_BRACKET_RE,UNSUPPORTED_POSIX_BRACKET_RE,FIXED_WIDTH_ESCAPE_RE,is_ascii_letter=(char)=>char>="A"&&char<="Z"||char>="a"&&char<="z",character_at=(text3,index2)=>String.fromCodePoint(text3.codePointAt(index2)),get_ascii_folded_hex_atom=(hex3)=>{if(!/^[0-9A-Fa-f]{1,8}$/.test(hex3))return null;let code_point=Number.parseInt(hex3,16);if(code_point>127)return null;let letter=String.fromCharCode(code_point);return is_ascii_letter(letter)?`[${letter.toLowerCase()}${letter.toUpperCase()}]`:null},normalize_bloom_split_char_class=(regex)=>regex.replace(/\[\^\(\\s\|\[([^\]]+)\]\)\]/g,"[^()|\\s$1]"),ANY_CODE_POINT="[\\s\\S]",MAX_CHARACTER_CLASS_NESTING_DEPTH=256,create_character_class_operand=()=>({fragment:"",alternatives:[],tail:null,contains_complex_set:!1}),throw_character_class_range_error=(index2)=>{throw SyntaxError(`Unsupported range with a set-valued character-class operand at index ${index2}`)},add_character_class_atom=(operand,atom,index2,contains_complex_set=!0)=>{if(operand.tail==="range")throw_character_class_range_error(index2);operand.alternatives.push(atom),operand.tail="set",operand.contains_complex_set=operand.contains_complex_set||contains_complex_set},append_character_class_fragment=(operand,fragment,set_valued=!1,index2=-1)=>{if(set_valued&&operand.tail==="range")throw_character_class_range_error(index2);if(operand.tail==="range"){operand.fragment+=fragment,operand.tail="complete_range";return}operand.fragment+=fragment,operand.tail=set_valued?"set":"scalar",operand.contains_complex_set=operand.contains_complex_set||set_valued},rewrite_character_class_escape=(regex,index2,operand)=>{let braced=BRACED_ESCAPE_RE.exec(regex.slice(index2));if(braced){let[text3,kind,body]=braced;if(kind==="P"&&body==="Word")add_character_class_atom(operand,`[^${UNICODE_WORD_CHARS_IN_CLASS}]`,index2);else{let replacement2=kind==="x"?`\\u{${body}}`:kind==="p"&&body==="Word"?UNICODE_WORD_CHARS_IN_CLASS:text3;append_character_class_fragment(operand,replacement2,kind==="p"||kind==="P",index2)}return index2+text3.length}let fixed_width=FIXED_WIDTH_ESCAPE_RE.exec(regex.slice(index2));if(fixed_width)return append_character_class_fragment(operand,fixed_width[0]),index2+fixed_width[0].length;if(index2+1>=regex.length)throw SyntaxError(`Unterminated escape in character class at index ${index2}`);let next=character_at(regex,index2+1),next_end=index2+1+next.length,raw_whitespace=RAW_WHITESPACE_ESCAPES.get(next);if(raw_whitespace!==void 0)return append_character_class_fragment(operand,raw_whitespace),next_end;let complement=CLASS_COMPLEMENT_ALTERNATIVES.get(next);if(complement!==void 0)return add_character_class_atom(operand,complement,index2),next_end;let rewrite=CLASS_ESCAPE_REWRITES.get(next),replacement,set_valued=!1;if(rewrite!==void 0)replacement=rewrite,set_valued=next!=="a"&&next!=="e";else if(/[A-Za-z0-9]/.test(next))replacement=`\\${next}`;else if(JS_SYNTAX_CHARS.includes(next)||next==="-")replacement=`\\${next}`;else replacement=next;return append_character_class_fragment(operand,replacement,set_valued,index2),next_end},compile_character_set_union=(pieces)=>{if(pieces.length===1)return pieces[0];return`(?:(?=(?:${pieces.join("|")}))${ANY_CODE_POINT})`},compile_character_class_operand=(operand)=>{let pieces=operand.fragment.length===0?operand.alternatives:[`[${operand.fragment}]`,...operand.alternatives];return compile_character_set_union(pieces)},get_ascii_fold_additions=(positive_atom)=>{let membership=compile_unicode_regexp(`^(?:${positive_atom})$`,"u"),additions="";for(let offset=0;offset<26;++offset){let upper=String.fromCharCode(65+offset),lower=String.fromCharCode(97+offset),has_upper=membership.test(upper),has_lower=membership.test(lower);if(has_upper!==has_lower)additions+=has_upper?lower:upper}return additions},parse_character_class=(regex,start,ascii_fold,apply_ascii_fold=!0,nesting_depth=1)=>{if(nesting_depth>MAX_CHARACTER_CLASS_NESTING_DEPTH)throw SyntaxError(`Maximum character-class nesting depth of ${MAX_CHARACTER_CLASS_NESTING_DEPTH} exceeded at index ${start}`);let i2=start+1,negated=regex[i2]==="^";if(negated)++i2;let first_content_index=i2,operands=[create_character_class_operand()],operand=operands[0],contains_nested_negated_complex_set=!1;while(i2<regex.length){let char=character_at(regex,i2);if(char==="\\"){i2=rewrite_character_class_escape(regex,i2,operand);continue}if(char==="]"){if(i2===first_content_index){append_character_class_fragment(operand,"\\]"),++i2;continue}if(operand.tail===null){if(operands.length>1)throw SyntaxError(`Malformed character-class intersection with an empty operand at index ${i2}`);throw SyntaxError(`Empty character class at index ${start}`)}let contains_complex_set=operands.some((candidate)=>candidate.contains_complex_set);if(negated&&operands.length>1&&contains_nested_negated_complex_set)throw SyntaxError(`Unsupported outer-negated character-class intersection with a nested negated class containing a Unicode property, POSIX class, or shorthand at index ${start}`);let first_atom=compile_character_class_operand(operands[0]),positive_atom=first_atom;if(operands.length>1){let lookaheads="";for(let j=1;j<operands.length;++j)lookaheads+=`(?=${compile_character_class_operand(operands[j])})`;positive_atom=`(?:${lookaheads}${first_atom})`}let is_direct_class=operands.length===1&&operand.alternatives.length===0,direct_fragment=operand.fragment;if(ascii_fold&&apply_ascii_fold){let additions=get_ascii_fold_additions(positive_atom);if(additions.length>0)if(is_direct_class)direct_fragment+=additions,positive_atom=`[${direct_fragment}]`;else positive_atom=compile_character_set_union([positive_atom,`[${additions}]`])}return{atom:negated?is_direct_class?`[^${direct_fragment}]`:`(?:(?!${positive_atom})${ANY_CODE_POINT})`:positive_atom,end:i2+1,negated,contains_complex_set,contains_nested_negated_complex_set}}if(regex.startsWith("&&",i2)){if(operand.tail===null)throw SyntaxError(`Malformed character-class intersection with an empty operand at index ${i2}`);operand=create_character_class_operand(),operands.push(operand),i2+=2;continue}if(char==="["){let suffix=regex.slice(i2);if(EMPTY_NEGATED_POSIX_BRACKET_RE.test(suffix))throw SyntaxError(`Malformed empty negated POSIX character class at index ${i2}`);let posix=POSIX_BRACKET_RE.exec(suffix);if(posix){let[,posix_negated,name]=posix,fragment=POSIX_CLASS_FRAGMENTS.get(name);if(fragment===void 0)throw SyntaxError(`Unsupported POSIX character class "${name}" at index ${i2}`);if(ascii_fold&&posix_negated&&(name==="lower"||name==="upper"))throw SyntaxError(`Unsupported negated POSIX ${name} class inside an inline case-insensitive group`);if(posix_negated)add_character_class_atom(operand,`[^${fragment}]`,i2);else append_character_class_fragment(operand,fragment,!0,i2);i2+=posix[0].length;continue}if(UNSUPPORTED_POSIX_BRACKET_RE.test(suffix))throw SyntaxError(`Unsupported POSIX collating or equivalence bracket expression at index ${i2}`);let nested=parse_character_class(regex,i2,ascii_fold,!1,nesting_depth+1);add_character_class_atom(operand,nested.atom,i2,nested.contains_complex_set),contains_nested_negated_complex_set||=nested.contains_nested_negated_complex_set||nested.negated&&nested.contains_complex_set,i2=nested.end;continue}if(char==="-"){let is_terminal_literal=regex[i2+1]==="]"||regex.startsWith("&&",i2+1);if(operand.tail==="set"&&!is_terminal_literal)throw_character_class_range_error(i2);if(operand.tail===null||operand.tail==="range"||operand.tail==="complete_range"||is_terminal_literal)append_character_class_fragment(operand,"\\-");else operand.fragment+="-",operand.tail="range";++i2;continue}append_character_class_fragment(operand,char==="^"&&operand.fragment.length===0?"\\^":char),i2+=char.length}throw SyntaxError(`${operands.length>1?"Unterminated character-class intersection":"Unterminated character class"} at index ${start}`)},rewrite_oniguruma_to_js=(regex)=>{let out="",atom_start=-1,last_was_quantifier=!1,ascii_fold=!1,group_states=[],emit_atom=(text3)=>{atom_start=out.length,out+=text3,last_was_quantifier=!1};for(let i2=0;i2<regex.length;){let char=character_at(regex,i2);if(char==="\\"){let braced=BRACED_ESCAPE_RE.exec(regex.slice(i2));if(braced){let[text3,kind,body]=braced,replacement2=text3;if(kind==="x"){let code_point_escape=`\\u{${body}}`;replacement2=ascii_fold?get_ascii_folded_hex_atom(body)??code_point_escape:code_point_escape}else if(body==="Word")replacement2=kind==="p"?UNICODE_WORD_CLASS:UNICODE_NON_WORD_CLASS;emit_atom(replacement2),i2+=text3.length;continue}let fixed_width=FIXED_WIDTH_ESCAPE_RE.exec(regex.slice(i2));if(fixed_width){let text3=fixed_width[0],replacement2=ascii_fold&&text3[1]!=="c"?get_ascii_folded_hex_atom(text3.slice(2))??text3:text3;emit_atom(replacement2),i2+=text3.length;continue}if(i2+1>=regex.length){out+=char;break}let next=character_at(regex,i2+1);if(i2+=1+next.length,next==="G")continue;let raw_whitespace=RAW_WHITESPACE_ESCAPES.get(next);if(raw_whitespace!==void 0){emit_atom(raw_whitespace);continue}let rewrite=ESCAPE_REWRITES.get(next),replacement;if(rewrite!==void 0)replacement=rewrite;else if(/[A-Za-z0-9]/.test(next))replacement=`\\${next}`;else if(JS_SYNTAX_CHARS.includes(next))replacement=`\\${next}`;else replacement=next;emit_atom(replacement);continue}switch(char){case"[":{let parsed=parse_character_class(regex,i2,ascii_fold);emit_atom(parsed.atom),i2=parsed.end;continue}case"]":emit_atom("\\]"),++i2;continue;case".":emit_atom("[^\\n]"),++i2;continue;case"^":emit_atom(LINE_START_ANCHOR),++i2;continue;case"$":emit_atom(LINE_END_ANCHOR),++i2;continue;case"(":{let inline_case_insensitive=regex.startsWith("(?i:",i2),source_prefix=inline_case_insensitive?"(?i:":GROUP_PREFIX_RE.exec(regex.slice(i2))?.[0]??"(",output_prefix=inline_case_insensitive?"(?:":source_prefix==="(?>"?"(?:":source_prefix;if(group_states.push([out.length,ascii_fold]),inline_case_insensitive)ascii_fold=!0;out+=output_prefix,last_was_quantifier=!1,i2+=source_prefix.length;continue}case")":out+=char,[atom_start,ascii_fold]=group_states.pop()??[-1,!1],last_was_quantifier=!1,++i2;continue;case"|":out+=char,atom_start=-1,last_was_quantifier=!1,++i2;continue;case"{":{let quant=QUANTIFIER_BRACE_RE.exec(regex.slice(i2));if(!quant||atom_start<0){emit_atom("\\{"),++i2;continue}let body=quant[1].startsWith(",")?`0${quant[1]}`:quant[1];i2+=quant[0].length;let following=regex[i2];if(following==="+"||following==="*")out=`${out.slice(0,atom_start)}(?:${out.slice(atom_start)}{${body}})${following}`,++i2;else out+=`{${body}}`;last_was_quantifier=!0;continue}case"}":emit_atom("\\}"),++i2;continue;case"+":if(last_was_quantifier){++i2;continue}out+=char,last_was_quantifier=!0,++i2;continue;case"*":case"?":out+=char,last_was_quantifier=!0,++i2;continue;default:emit_atom(ascii_fold&&is_ascii_letter(char)?`[${char.toLowerCase()}${char.toUpperCase()}]`:char),i2+=char.length;continue}}return out},escape_reg_exp=(string4)=>string4.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),fuse_unk=(arr,tokens_to_ids,unk_token_id)=>{let fused=[],i2=0;while(i2<arr.length){if(fused.push(arr[i2]),(tokens_to_ids.get(arr[i2])??unk_token_id)!==unk_token_id){++i2;continue}while(++i2<arr.length&&(tokens_to_ids.get(arr[i2])??unk_token_id)===unk_token_id)if(tokens_to_ids.get(fused.at(-1))!==unk_token_id)fused[fused.length-1]+=arr[i2]}return fused},is_chinese_char=(cp)=>cp>=19968&&cp<=40959||cp>=13312&&cp<=19903||cp>=131072&&cp<=173791||cp>=173824&&cp<=177983||cp>=177984&&cp<=178207||cp>=178208&&cp<=183983||cp>=63744&&cp<=64255||cp>=194560&&cp<=195103,is_integral_number=(x)=>Number.isInteger(x)||typeof x==="bigint",len=(s2)=>{let length=0;for(let c3 of s2)++length;return length},lowercase_and_remove_accents=(text3)=>remove_accents(text3.toLowerCase()),merge_arrays=(...arrs)=>Array.prototype.concat.apply([],arrs),object_to_map=(obj)=>new Map(Object.entries(obj)),regex_split=(text3,regex)=>{let result=[],prev=0;for(let match of text3.matchAll(regex)){let full_match=match[0];if(prev<match.index)result.push(text3.slice(prev,match.index));if(full_match.length>0)result.push(full_match);prev=match.index+full_match.length}if(prev<text3.length)result.push(text3.slice(prev));return result},remove_accents=(text3)=>text3.replace(/\p{M}/gu,""),validate_object=(obj,name,required_keys=[])=>{if(!obj||Array.isArray(obj)||typeof obj!=="object")return`${name} must be a valid object`;for(let key of required_keys)if(!(key in obj))return`${name} must contain a "${key}" property`;return null},whitespace_split=(text3)=>text3.match(/\S+/g)||[],Callable=class{constructor(){let closure=function(...args){return closure._call(...args)};return Object.setPrototypeOf(closure,new.target.prototype)}},Callable_default,Normalizer,Normalizer_default,BertNormalizer,BertNormalizer_default,Precompiled,Precompiled_default,Sequence,Sequence_default,Replace,Replace_default,UnicodeNormalizer,UnicodeNormalizer_default,NFC,NFC_default,NFD,NFD_default,NFKC,NFKC_default,NFKD,NFKD_default,Strip,Strip_default,StripAccents,StripAccents_default,Lowercase,Lowercase_default,Prepend,Prepend_default,create_normalizer_default,PreTokenizer,PreTokenizer_default,BYTES_TO_UNICODE,reverse_dictionary=(data)=>Object.fromEntries(Object.entries(data).map(([key,value])=>[value,key])),UNICODE_TO_BYTES,PUNCTUATION_REGEX="\\p{P}\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E",ByteLevel,ByteLevel_default,Whitespace,Whitespace_default,Metaspace,Metaspace_default,Split,Split_default,Punctuation,Punctuation_default,Digits,Digits_default,BertPreTokenizer,BertPreTokenizer_default,Replace2,Replace_default2,Sequence2,Sequence_default2,WhitespaceSplit,WhitespaceSplit_default,FixedLength,FixedLength_default,create_pre_tokenizer_default,TokenizerModel,TokenizerModel_default,WordPieceTokenizer,WordPiece_default,CharTrieNode=class _CharTrieNode{constructor(is_leaf,children){this.is_leaf=is_leaf,this.children=children}static default(){return new _CharTrieNode(!1,new Map)}},CharTrie=class{constructor(){this.root=CharTrieNode.default()}extend(texts){for(let text3 of texts)this.push(text3)}push(text3){let node=this.root;for(let ch of text3){let child=node.children.get(ch);if(child===void 0)child=CharTrieNode.default(),node.children.set(ch,child);node=child}node.is_leaf=!0}*common_prefix_search(chars,start=0){let node=this.root;if(node===void 0)return;let prefix="";for(let i2=start;i2<chars.length;++i2){let ch=chars[i2];if(prefix+=ch,node=node.children.get(ch),node===void 0)return;if(node.is_leaf)yield prefix}}},CharTrie_default,TokenLatticeNode=class _TokenLatticeNode{constructor(token_id,node_id,pos,length,score2){this.token_id=token_id,this.node_id=node_id,this.pos=pos,this.length=length,this.score=score2,this.prev=null,this.backtrace_score=0}clone(){let n2=new _TokenLatticeNode(this.token_id,this.node_id,this.pos,this.length,this.score);return n2.prev=this.prev,n2.backtrace_score=this.backtrace_score,n2}},TokenLattice=class{constructor(sentence,bos_token_id,eos_token_id){this.chars=Array.from(sentence),this.len=this.chars.length,this.bos_token_id=bos_token_id,this.eos_token_id=eos_token_id,this.nodes=[],this.begin_nodes=Array.from({length:this.len+1},()=>[]),this.end_nodes=Array.from({length:this.len+1},()=>[]);let bos=new TokenLatticeNode(this.bos_token_id??0,0,0,0,0),eos=new TokenLatticeNode(this.eos_token_id??0,1,this.len,0,0);this.nodes.push(bos.clone()),this.nodes.push(eos.clone()),this.begin_nodes[this.len].push(eos),this.end_nodes[0].push(bos)}insert(pos,length,score2,token_id){let node_id=this.nodes.length,node=new TokenLatticeNode(token_id,node_id,pos,length,score2);this.begin_nodes[pos].push(node),this.end_nodes[pos+length].push(node),this.nodes.push(node)}viterbi(){let len2=this.len,pos=0;while(pos<=len2){if(this.begin_nodes[pos].length==0)return[];for(let rnode of this.begin_nodes[pos]){rnode.prev=null;let best_score=0,best_node=null;for(let lnode of this.end_nodes[pos]){let score2=lnode.backtrace_score+rnode.score;if(best_node===null||score2>best_score)best_node=lnode.clone(),best_score=score2}if(best_node!==null)rnode.prev=best_node,rnode.backtrace_score=best_score;else return[]}++pos}let results=[],prev=this.begin_nodes[len2][0].prev;if(prev===null)return[];let node=prev.clone();while(node.prev!==null)results.push(node.clone()),node=node.clone().prev.clone();return results.reverse(),results}piece(node){return this.chars.slice(node.pos,node.pos+node.length).join("")}tokens(){return this.viterbi().map((x)=>this.piece(x))}token_ids(){return this.viterbi().map((x)=>x.token_id)}},TokenLattice_default,Unigram,Unigram_default,PriorityQueue=class{constructor(comparator=(a2,b)=>a2>b,max_size=1/0){this._heap=[],this._comparator=comparator,this._max_size=max_size}get size(){return this._heap.length}is_empty(){return this.size===0}peek(){return this._heap[0]}push(...values){return this.extend(values)}extend(values){for(let value of values)if(this.size<this._max_size)this._heap.push(value),this._sift_up();else{let smallest=this._smallest();if(this._comparator(value,this._heap[smallest]))this._heap[smallest]=value,this._sift_up_from(smallest)}return this.size}pop(){let popped_value=this.peek(),bottom=this.size-1;if(bottom>0)this._swap(0,bottom);return this._heap.pop(),this._sift_down(),popped_value}replace(value){let replaced_value=this.peek();return this._heap[0]=value,this._sift_down(),replaced_value}_parent(i2){return(i2+1>>>1)-1}_left(i2){return(i2<<1)+1}_right(i2){return i2+1<<1}_greater(i2,j){return this._comparator(this._heap[i2],this._heap[j])}_swap(i2,j){let temp=this._heap[i2];this._heap[i2]=this._heap[j],this._heap[j]=temp}_sift_up(){this._sift_up_from(this.size-1)}_sift_up_from(node){while(node>0&&this._greater(node,this._parent(node)))this._swap(node,this._parent(node)),node=this._parent(node)}_sift_down(){let node=0;while(this._left(node)<this.size&&this._greater(this._left(node),node)||this._right(node)<this.size&&this._greater(this._right(node),node)){let max_child=this._right(node)<this.size&&this._greater(this._right(node),this._left(node))?this._right(node):this._left(node);this._swap(node,max_child),node=max_child}}_smallest(){return 2**Math.floor(Math.log2(this.size))-1}},PriorityQueue_default,LRUCache=class{constructor(capacity){this.capacity=capacity,this.cache=new Map}get(key){if(!this.cache.has(key))return;let value=this.cache.get(key);return this.cache.delete(key),this.cache.set(key,value),value}put(key,value){if(this.cache.has(key))this.cache.delete(key);if(this.cache.set(key,value),this.cache.size>this.capacity)this.cache.delete(this.cache.keys().next().value)}clear(){this.cache.clear()}},LRUCache_default,BPE,BPE_default,Legacy,Legacy_default,create_tokenizer_model_default,PostProcessor,PostProcessor_default,TemplateProcessing,TemplateProcessing_default,ByteLevel2,ByteLevel_default2,BertProcessing,BertProcessing_default,RobertaProcessing,RobertaProcessing_default,Sequence3,Sequence_default3,create_post_processor_default,Decoder,Decoder_default,ByteLevel3,ByteLevel_default3,WordPiece,WordPiece_default2,Metaspace2,Metaspace_default2,BPE2,BPE_default2,CTC,CTC_default,Sequence4,Sequence_default4,Replace3,Replace_default3,Fuse,Fuse_default,Strip2,Strip_default2,ByteFallback,ByteFallback_default,create_decoder_default,Tokenizer=class{constructor(tokenizer,config4){let tokenizer_error=validate_object(tokenizer,"Tokenizer",["model","decoder","post_processor","pre_tokenizer","normalizer"]);if(tokenizer_error)throw Error(tokenizer_error);let config_error=validate_object(config4,"Config");if(config_error)throw Error(config_error);this.tokenizer=tokenizer,this.config=config4,this.normalizer=create_normalizer_default(this.tokenizer.normalizer),this.pre_tokenizer=create_pre_tokenizer_default(this.tokenizer.pre_tokenizer),this.model=create_tokenizer_model_default(this.tokenizer.model,this.config),this.post_processor=create_post_processor_default(this.tokenizer.post_processor),this.decoder=create_decoder_default(this.tokenizer.decoder),this.special_tokens=[],this.all_special_ids=[],this.added_tokens=[];let unnormalized_contents=[],normalized_contents=[];this.added_tokens_map=new Map;for(let added_token of this.tokenizer.added_tokens){let token=new AddedToken_default(added_token);if(this.added_tokens.push(token),this.model.tokens_to_ids.set(token.content,token.id),this.model.vocab[token.id]=token.content,token.special)this.special_tokens.push(token.content),this.all_special_ids.push(token.id);if(this.added_tokens_map.set(token.content,token),token.normalized&&this.normalizer!==null){let normalized_content=this.normalizer(token.content);normalized_contents.push(normalized_content),this.added_tokens_map.set(normalized_content,token)}else unnormalized_contents.push(token.content)}if((this.config.additional_special_tokens??[]).forEach((token)=>{if(!this.special_tokens.includes(token))this.special_tokens.push(token)}),this.decoder)this.decoder.added_tokens=this.added_tokens,this.decoder.end_of_word_suffix=this.model.end_of_word_suffix;this.splitter_unnormalized=new DictionarySplitter_default(unnormalized_contents),this.splitter_normalized=new DictionarySplitter_default(normalized_contents),this.remove_space=this.config.remove_space,this.clean_up_tokenization_spaces=this.config.clean_up_tokenization_spaces??!0,this.do_lowercase_and_remove_accent=this.config.do_lowercase_and_remove_accent??!1}encode(text3,{text_pair=null,add_special_tokens=!0,return_token_type_ids=null}={}){let{tokens,token_type_ids}=this.tokenize_helper(text3,{text_pair,add_special_tokens}),input_ids=tokens.map((t)=>this.added_tokens_map.get(t)?.id??this.model.tokens_to_ids.get(t)??this.model.unk_token_id),result={ids:input_ids,tokens,attention_mask:Array(input_ids.length).fill(1)};if(return_token_type_ids&&token_type_ids)result.token_type_ids=token_type_ids;return result}decode(token_ids,options={}){if(!Array.isArray(token_ids)||token_ids.length===0||!is_integral_number(token_ids[0]))throw Error("token_ids must be a non-empty array of integers.");let tokens=token_ids.map((i2)=>this.model.vocab[Number(i2)]??this.model.unk_token);if(options.skip_special_tokens)tokens=tokens.filter((x)=>!this.special_tokens.includes(x));let decoded=this.decoder?this.decoder(tokens):tokens.join(" ");if(this.decoder&&this.decoder.end_of_word_suffix){if(decoded=decoded.replaceAll(this.decoder.end_of_word_suffix," "),options.skip_special_tokens)decoded=decoded.trim()}if(options.clean_up_tokenization_spaces??this.clean_up_tokenization_spaces)decoded=clean_up_tokenization(decoded);return decoded}tokenize(text3,{text_pair=null,add_special_tokens=!1}={}){return this.tokenize_helper(text3,{text_pair,add_special_tokens}).tokens}encode_text(text3){if(text3===null)return null;let sections=this.splitter_unnormalized.split(text3);return sections.forEach((section,i2)=>{let added_token=this.added_tokens_map.get(section);if(added_token){if(added_token.lstrip&&i2>0)sections[i2-1]=sections[i2-1].trimEnd();if(added_token.rstrip&&i2<sections.length-1)sections[i2+1]=sections[i2+1].trimStart()}}),sections.flatMap((processed_text,section_index)=>{if(processed_text.length===0)return[];if(this.added_tokens_map.has(processed_text))return[processed_text];if(this.remove_space===!0)processed_text=processed_text.trim().split(/\s+/).join(" ");if(this.do_lowercase_and_remove_accent)processed_text=lowercase_and_remove_accents(processed_text);if(this.normalizer!==null)processed_text=this.normalizer(processed_text);if(processed_text.length===0)return[];let subsections=this.splitter_normalized.split(processed_text);return subsections.forEach((subsection,j)=>{let added_token=this.added_tokens_map.get(subsection);if(added_token){if(added_token.lstrip&&j>0)subsections[j-1]=subsections[j-1].trimEnd();if(added_token.rstrip&&j<subsections.length-1)subsections[j+1]=subsections[j+1].trimStart()}}),subsections.flatMap((subsection)=>{if(subsection.length===0)return[];if(this.added_tokens_map.has(subsection))return[subsection];let section_tokens=this.pre_tokenizer!==null?this.pre_tokenizer(subsection,{section_index}):[subsection];return this.model(section_tokens)})})}tokenize_helper(text3,{text_pair=null,add_special_tokens=!0}){let tokens1=this.encode_text(text3),tokens2=this.encode_text(text_pair||null);return this.post_processor?this.post_processor(tokens1,tokens2,add_special_tokens):{tokens:merge_arrays(tokens1??[],tokens2??[])}}token_to_id(token){return this.model.tokens_to_ids.get(token)}id_to_token(id){return this.model.vocab[id]}get_added_tokens_decoder(){let decoder=new Map;for(let token of this.added_tokens)decoder.set(token.id,token);return decoder}get_vocab(with_added_tokens=!0){let vocab=new Map;for(let i2=0;i2<this.model.vocab.length;++i2){let token=this.model.vocab[i2];if(with_added_tokens||!this.added_tokens_map.has(token))vocab.set(token,i2)}return vocab}},Tokenizer_default;var init_tokenizers=__esm(()=>{DictionarySplitter_default=DictionarySplitter,AddedToken_default=AddedToken,UNICODE_WORD_CHARS=`${UNICODE_WORD_CHARS_IN_CLASS}\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE`,UNICODE_WORD_CLASS=`[${UNICODE_WORD_CHARS}]`,UNICODE_NON_WORD_CLASS=`[^${UNICODE_WORD_CHARS}]`,UNICODE_WORD_BOUNDARY=`(?:(?<!${UNICODE_WORD_CLASS})(?=${UNICODE_WORD_CLASS})|(?<=${UNICODE_WORD_CLASS})(?!${UNICODE_WORD_CLASS}))`,UNICODE_NON_WORD_BOUNDARY=`(?:(?<!${UNICODE_WORD_CLASS})(?!${UNICODE_WORD_CLASS})|(?<=${UNICODE_WORD_CLASS})(?=${UNICODE_WORD_CLASS}))`,ESCAPE_REWRITES=new Map([["A","(?<![\\s\\S])"],["z","(?![\\s\\S])"],["Z","(?=\\n?(?![\\s\\S]))"],["h",`[${HEX_DIGIT_CHARS}]`],["H",`[^${HEX_DIGIT_CHARS}]`],["w",UNICODE_WORD_CLASS],["W",UNICODE_NON_WORD_CLASS],["d","\\p{Nd}"],["D","\\P{Nd}"],["s","\\p{White_Space}"],["S","\\P{White_Space}"],["b",UNICODE_WORD_BOUNDARY],["B",UNICODE_NON_WORD_BOUNDARY],["a","\\x07"],["e","\\x1B"]]),CLASS_ESCAPE_REWRITES=new Map([["h",HEX_DIGIT_CHARS],["w",UNICODE_WORD_CHARS_IN_CLASS],["d","\\p{Nd}"],["D","\\P{Nd}"],["s","\\p{White_Space}"],["S","\\P{White_Space}"],["a","\\x07"],["e","\\x1B"]]),CLASS_COMPLEMENT_ALTERNATIVES=new Map([["W",`[^${UNICODE_WORD_CHARS_IN_CLASS}]`],["H",`[^${HEX_DIGIT_CHARS}]`]]),RAW_WHITESPACE_ESCAPES=new Map([[`
335
+ `,"\\n"],["\r","\\r"],["\t","\\t"],["\f","\\f"],["\v","\\v"]]),POSIX_CLASS_FRAGMENTS=new Map([["alpha","\\p{Alphabetic}"],["alnum","\\p{Alphabetic}\\p{Nd}"],["digit","\\p{Nd}"],["lower","\\p{Lowercase}"],["upper","\\p{Uppercase}"],["space","\\p{White_Space}"],["blank","\\t\\p{Zs}"],["punct","\\p{P}\\p{S}"],["cntrl","\\p{Cc}"],["word",UNICODE_WORD_CHARS_IN_CLASS],["xdigit",HEX_DIGIT_CHARS]]),GROUP_PREFIX_RE=/^\(\?(?:<[=!]|<[A-Za-z_][A-Za-z0-9_]*>|[:=!>])/,BRACED_ESCAPE_RE=/^\\([pPxu])\{([^}]*)\}/,QUANTIFIER_BRACE_RE=/^\{(\d+(?:,\d*)?|,\d+)\}/,POSIX_BRACKET_RE=/^\[:(\^?)(\p{Alphabetic}+):\]/u,EMPTY_NEGATED_POSIX_BRACKET_RE=/^\[:\^:\]/,UNSUPPORTED_POSIX_BRACKET_RE=/^\[(?:\.[^\]]*\.\]|=[^\]]*=\])/,FIXED_WIDTH_ESCAPE_RE=/^(?:\\x[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}|\\c[A-Za-z])/,Callable_default=Callable,Normalizer=class extends Callable_default{constructor(config4){super();this.config=config4}_call(text3){return this.normalize(text3)}},Normalizer_default=Normalizer,BertNormalizer=class extends Normalizer_default{tokenize_chinese_chars(text3){let output2=[];for(let i2=0;i2<text3.length;++i2){let char=text3[i2],cp=char.charCodeAt(0);if(is_chinese_char(cp))output2.push(" "),output2.push(char),output2.push(" ");else output2.push(char)}return output2.join("")}strip_accents(text3){return text3.normalize("NFD").replace(/\p{Mn}/gu,"")}is_control(char){switch(char){case"\t":case`
336
+ `:case"\r":return!1;default:return/^\p{Cc}|\p{Cf}|\p{Co}|\p{Cs}$/u.test(char)}}clean_text(text3){let output2=[];for(let char of text3){let cp=char.charCodeAt(0);if(cp===0||cp===65533||this.is_control(char))continue;if(/^\s$/.test(char))output2.push(" ");else output2.push(char)}return output2.join("")}normalize(text3){if(this.config.clean_text)text3=this.clean_text(text3);if(this.config.handle_chinese_chars)text3=this.tokenize_chinese_chars(text3);if(this.config.lowercase){if(text3=text3.toLowerCase(),this.config.strip_accents!==!1)text3=this.strip_accents(text3)}else if(this.config.strip_accents)text3=this.strip_accents(text3);return text3}},BertNormalizer_default=BertNormalizer,Precompiled=class extends Normalizer_default{constructor(config4){super(config4);this.charsmap=config4.precompiled_charsmap??null}normalize(text3){if(text3=text3.replace(/[\u0001-\u0008\u000B\u000E-\u001F\u007F\u008F\u009F]/gm,""),text3=text3.replace(/[\u0009\u000A\u000C\u000D\u00A0\u1680\u2000-\u200F\u2028\u2029\u202F\u205F\u2581\u3000\uFEFF\uFFFD]/gm," "),text3.includes("~"))text3=text3.split("~").map((part)=>part.normalize("NFKC")).join("~");else text3=text3.normalize("NFKC");return text3}},Precompiled_default=Precompiled,Sequence=class extends Normalizer_default{constructor(config4){super(config4);this.normalizers=(config4.normalizers??[]).map((x)=>create_normalizer_default(x))}normalize(text3){return this.normalizers.reduce((t,normalizer)=>{return normalizer?normalizer.normalize(t):t},text3)}},Sequence_default=Sequence,Replace=class extends Normalizer_default{constructor(config4){super(config4);this.pattern=create_pattern(this.config.pattern??{})}normalize(text3){return this.pattern===null?text3:text3.replaceAll(this.pattern,this.config.content??"")}},Replace_default=Replace,UnicodeNormalizer=class extends Normalizer_default{constructor(){super(...arguments);this.form="NFC"}normalize(text3){return text3=text3.normalize(this.form),text3}},UnicodeNormalizer_default=UnicodeNormalizer,NFC=class extends UnicodeNormalizer_default{constructor(){super(...arguments);this.form="NFC"}},NFC_default=NFC,NFD=class extends UnicodeNormalizer_default{constructor(){super(...arguments);this.form="NFD"}},NFD_default=NFD,NFKC=class extends UnicodeNormalizer_default{constructor(){super(...arguments);this.form="NFKC"}},NFKC_default=NFKC,NFKD=class extends UnicodeNormalizer_default{constructor(){super(...arguments);this.form="NFKD"}},NFKD_default=NFKD,Strip=class extends Normalizer_default{normalize(text3){if(this.config.strip_left&&this.config.strip_right)text3=text3.trim();else{if(this.config.strip_left)text3=text3.trimStart();if(this.config.strip_right)text3=text3.trimEnd()}return text3}},Strip_default=Strip,StripAccents=class extends Normalizer_default{normalize(text3){return remove_accents(text3)}},StripAccents_default=StripAccents,Lowercase=class extends Normalizer_default{normalize(text3){return text3.toLowerCase()}},Lowercase_default=Lowercase,Prepend=class extends Normalizer_default{normalize(text3){return text3=this.config.prepend+text3,text3}},Prepend_default=Prepend;create_normalizer_default=create_normalizer,PreTokenizer=class extends Callable_default{pre_tokenize(text3,options){return(Array.isArray(text3)?text3.map((x)=>this.pre_tokenize_text(x,options)):this.pre_tokenize_text(text3,options)).flat()}_call(text3,options){return this.pre_tokenize(text3,options)}},PreTokenizer_default=PreTokenizer,BYTES_TO_UNICODE=(()=>{let bs=[...Array.from({length:94},(_,i2)=>i2+33),...Array.from({length:"¬".charCodeAt(0)-"¡".charCodeAt(0)+1},(_,i2)=>i2+"¡".charCodeAt(0)),...Array.from({length:"ÿ".charCodeAt(0)-"®".charCodeAt(0)+1},(_,i2)=>i2+"®".charCodeAt(0))],cs=bs.slice(),n2=0;for(let b=0;b<256;++b)if(!bs.includes(b))bs.push(b),cs.push(256+n2),n2+=1;let ccs=cs.map((n22)=>String.fromCharCode(n22));return Object.fromEntries(bs.map((b,i2)=>[b,ccs[i2]]))})(),UNICODE_TO_BYTES=reverse_dictionary(BYTES_TO_UNICODE),ByteLevel=class extends PreTokenizer_default{constructor(config4){super();this.config=config4,this.add_prefix_space=this.config.add_prefix_space??!1,this.trim_offsets=this.config.trim_offsets??!1,this.use_regex=this.config.use_regex??!0,this.pattern=/'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+/gu,this.byte_encoder=BYTES_TO_UNICODE,this.text_encoder=new TextEncoder}pre_tokenize_text(text3,options){if(this.add_prefix_space&&!text3.startsWith(" "))text3=" "+text3;return(this.use_regex?text3.match(this.pattern)||[]:[text3]).map((token)=>Array.from(this.text_encoder.encode(token),(byte)=>this.byte_encoder[byte]).join(""))}},ByteLevel_default=ByteLevel,Whitespace=class extends PreTokenizer_default{pre_tokenize_text(text3,options){return text3.match(/\w+|[^\w\s]+/g)||[]}},Whitespace_default=Whitespace,Metaspace=class extends PreTokenizer_default{constructor(config4){super();this.replacement=config4.replacement??"▁",this.str_rep=config4.str_rep||this.replacement,this.prepend_scheme=config4.prepend_scheme??"always"}pre_tokenize_text(text3,options){let{section_index=void 0}=options??{},normalized=text3.replaceAll(" ",this.str_rep);if(!normalized.startsWith(this.replacement)&&(this.prepend_scheme==="always"||this.prepend_scheme==="first"&&section_index===0))normalized=this.str_rep+normalized;return[normalized]}},Metaspace_default=Metaspace,Split=class extends PreTokenizer_default{constructor(config4){super();this.config=config4,this.pattern=create_pattern(this.config.pattern??{},this.config.invert??!0)}pre_tokenize_text(text3){if(this.pattern===null)return[];if(this.config.invert)return(text3.match(this.pattern)||[]).filter((x)=>x);else if(this.config.behavior?.toLowerCase()==="removed")return text3.split(this.pattern).filter((x)=>x);else return regex_split(text3,this.pattern)}},Split_default=Split,Punctuation=class extends PreTokenizer_default{constructor(config4){super();this.config=config4,this.pattern=new RegExp(`[^${PUNCTUATION_REGEX}]+|[${PUNCTUATION_REGEX}]+`,"gu")}pre_tokenize_text(text3){return text3.match(this.pattern)||[]}},Punctuation_default=Punctuation,Digits=class extends PreTokenizer_default{constructor(config4){super();this.config=config4;let digit_pattern=`[^\\d]+|\\d${this.config.individual_digits?"":"+"}`;this.pattern=new RegExp(digit_pattern,"gu")}pre_tokenize_text(text3){return text3.match(this.pattern)||[]}},Digits_default=Digits,BertPreTokenizer=class extends PreTokenizer_default{constructor(){super();this.pattern=new RegExp(`[^\\s${PUNCTUATION_REGEX}]+|[${PUNCTUATION_REGEX}]`,"gu")}pre_tokenize_text(text3,options){return text3.trim().match(this.pattern)||[]}},BertPreTokenizer_default=BertPreTokenizer,Replace2=class extends PreTokenizer_default{constructor(config4){super();this.config=config4,this.pattern=create_pattern(this.config.pattern??{}),this.content=this.config.content??""}pre_tokenize_text(text3){if(this.pattern===null)return[text3];return[text3.replaceAll(this.pattern,this.config.content??"")]}},Replace_default2=Replace2,Sequence2=class extends PreTokenizer_default{constructor(config4){super();this.tokenizers=(config4.pretokenizers??[]).map((x)=>create_pre_tokenizer_default(x))}pre_tokenize_text(text3,options){return this.tokenizers.reduce((pre_tokenized_text,tokenizer)=>{return tokenizer?tokenizer.pre_tokenize(pre_tokenized_text,options):pre_tokenized_text},[text3])}},Sequence_default2=Sequence2,WhitespaceSplit=class extends PreTokenizer_default{pre_tokenize_text(text3){return whitespace_split(text3)}},WhitespaceSplit_default=WhitespaceSplit,FixedLength=class extends PreTokenizer_default{constructor(config4){super();this.config=config4,this._length=config4.length}pre_tokenize_text(text3){let tokens=[];for(let i2=0;i2<text3.length;i2+=this._length)tokens.push(text3.slice(i2,i2+this._length));return tokens}},FixedLength_default=FixedLength;create_pre_tokenizer_default=create_pre_tokenizer,TokenizerModel=class extends Callable_default{constructor(config4){super();this.config=config4,this.vocab=[],this.tokens_to_ids=new Map,this.unk_token_id=void 0,this.unk_token=void 0,this.end_of_word_suffix=void 0,this.fuse_unk=this.config.fuse_unk??!1}_call(tokens){let result=this.encode(tokens);if(this.fuse_unk)result=fuse_unk(result,this.tokens_to_ids,this.unk_token_id);return result}},TokenizerModel_default=TokenizerModel,WordPieceTokenizer=class extends TokenizerModel_default{constructor(config4){super(config4);this.max_input_chars_per_word=100,this.tokens_to_ids=object_to_map(config4.vocab),this.unk_token_id=this.tokens_to_ids.get(config4.unk_token),this.unk_token=config4.unk_token,this.max_input_chars_per_word=config4.max_input_chars_per_word??100,this.vocab=Array(this.tokens_to_ids.size);for(let[key,value]of this.tokens_to_ids)this.vocab[value]=key}encode(tokens){let output_tokens=[];for(let token of tokens){let chars=[...token];if(chars.length>this.max_input_chars_per_word){output_tokens.push(this.unk_token);continue}let is_unknown=!1,start=0,sub_tokens=[];while(start<chars.length){let end=chars.length,current_substring=null;while(start<end){let substr=chars.slice(start,end).join("");if(start>0)substr=this.config.continuing_subword_prefix+substr;if(this.tokens_to_ids.has(substr)){current_substring=substr;break}--end}if(current_substring===null){is_unknown=!0;break}sub_tokens.push(current_substring),start=end}if(is_unknown)output_tokens.push(this.unk_token);else output_tokens.push(...sub_tokens)}return output_tokens}},WordPiece_default=WordPieceTokenizer,CharTrie_default=CharTrie,TokenLattice_default=TokenLattice;Unigram=class extends TokenizerModel_default{constructor(config4,eos_token){super(config4);let vocab_size=config4.vocab.length;this.vocab=Array(vocab_size),this.scores=Array(vocab_size);for(let i2=0;i2<vocab_size;++i2)[this.vocab[i2],this.scores[i2]]=config4.vocab[i2];this.unk_token_id=config4.unk_id,this.unk_token=this.vocab[config4.unk_id],this.tokens_to_ids=new Map(this.vocab.map((x,i2)=>[x,i2])),this.bos_token=" ",this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.unk_token=this.vocab[this.unk_token_id],this.min_score=min(this.scores)[0],this.unk_score=this.min_score-10,this.scores[this.unk_token_id]=this.unk_score,this.trie=new CharTrie_default,this.trie.extend(this.vocab),this.fuse_unk=!0}populate_nodes(lattice){let chars=lattice.chars,mblen=1,begin_pos=0;while(begin_pos<chars.length){let has_single_node=!1,prefixed_tokens=this.trie.common_prefix_search(chars,begin_pos);for(let token of prefixed_tokens){let token_id=this.tokens_to_ids.get(token),token_score=this.scores[token_id],n2=len(token);if(lattice.insert(begin_pos,n2,token_score,token_id),!has_single_node&&n2===1)has_single_node=!0}if(!has_single_node)lattice.insert(begin_pos,1,this.unk_score,this.unk_token_id);begin_pos+=1}}tokenize(normalized){let lattice=new TokenLattice_default(normalized,this.bos_token_id,this.eos_token_id);return this.populate_nodes(lattice),lattice.tokens()}encode(tokens){let to_return=[];for(let token of tokens){let tokenized=this.tokenize(token);to_return.push(...tokenized)}return to_return}},Unigram_default=Unigram,PriorityQueue_default=PriorityQueue,LRUCache_default=LRUCache,BPE=class extends TokenizerModel_default{constructor(config4){super(config4);this.tokens_to_ids=object_to_map(config4.vocab),this.unk_token_id=this.tokens_to_ids.get(config4.unk_token),this.unk_token=config4.unk_token,this.vocab=Array(this.tokens_to_ids.size);for(let[key,value]of this.tokens_to_ids)this.vocab[value]=key;let use_new_merge_format=Array.isArray(config4.merges[0]);if(this.merges=use_new_merge_format?config4.merges:config4.merges.map((x)=>x.split(" ",2)),this.bpe_ranks=new Map(this.merges.map((x,i2)=>[JSON.stringify(x),i2])),this.end_of_word_suffix=config4.end_of_word_suffix,this.continuing_subword_suffix=config4.continuing_subword_suffix??null,this.byte_fallback=this.config.byte_fallback??!1,this.byte_fallback)this.text_encoder=new TextEncoder;this.ignore_merges=this.config.ignore_merges??!1,this.max_length_to_cache=256,this.cache_capacity=1e4,this.cache=new LRUCache_default(this.cache_capacity)}clear_cache(){this.cache.clear()}bpe(token){if(token.length===0)return[];let cached2=this.cache.get(token);if(cached2!==void 0)return cached2;let word=Array.from(token);if(this.end_of_word_suffix)word[word.length-1]+=this.end_of_word_suffix;let result=[];if(word.length>1){let queue=new PriorityQueue_default((a2,b)=>a2.score<b.score),starting_node={token:word[0],bias:0,prev:null,next:null},previous_node=starting_node;for(let i2=1;i2<word.length;++i2){let current_node={bias:i2/word.length,token:word[i2],prev:previous_node,next:null};previous_node.next=current_node,this.add_node(queue,previous_node),previous_node=current_node}while(!queue.is_empty()){let node=queue.pop();if(node.deleted||!node.next||node.next.deleted)continue;if(node.deleted=!0,node.next.deleted=!0,node.prev){let new_previous_node={...node.prev};if(node.prev.deleted=!0,node.prev=new_previous_node,new_previous_node.prev)new_previous_node.prev.next=new_previous_node;else starting_node=new_previous_node}let merged={token:node.token+node.next.token,bias:node.bias,prev:node.prev,next:node.next.next};if(merged.prev)merged.prev.next=merged,this.add_node(queue,merged.prev);else starting_node=merged;if(merged.next)merged.next.prev=merged,this.add_node(queue,merged)}for(let current_node=starting_node;current_node!==null;current_node=current_node.next)result.push(current_node.token)}else result=word;if(this.continuing_subword_suffix)for(let i2=0;i2<result.length-1;++i2)result[i2]+=this.continuing_subword_suffix;if(token.length<this.max_length_to_cache)this.cache.put(token,result);return result}add_node(queue,node){let rank=this.bpe_ranks.get(JSON.stringify([node.token,node.next.token]));if(rank!==void 0)node.score=rank+node.bias,queue.push(node)}encode(tokens){let output_tokens=[];for(let token of tokens){if(this.ignore_merges&&this.tokens_to_ids.has(token)){output_tokens.push(token);continue}let bpe_token_list=this.bpe(token);for(let t of bpe_token_list)if(this.tokens_to_ids.has(t))output_tokens.push(t);else if(this.byte_fallback){let byte_tokens=Array.from(this.text_encoder.encode(t)).map((x)=>`<0x${x.toString(16).toUpperCase().padStart(2,"0")}>`);if(byte_tokens.every((x)=>this.tokens_to_ids.has(x)))output_tokens.push(...byte_tokens);else if(this.unk_token!=null)output_tokens.push(this.unk_token)}else if(this.unk_token!=null)output_tokens.push(this.unk_token)}return output_tokens}},BPE_default=BPE,Legacy=class extends TokenizerModel_default{constructor(config4,more_config){super(config4);let vocab=config4.vocab;this.tokens_to_ids=object_to_map(more_config.target_lang?vocab[more_config.target_lang]:vocab),this.bos_token=more_config.bos_token,this.bos_token_id=this.tokens_to_ids.get(this.bos_token),this.eos_token=more_config.eos_token,this.eos_token_id=this.tokens_to_ids.get(this.eos_token),this.pad_token=more_config.pad_token,this.pad_token_id=this.tokens_to_ids.get(this.pad_token),this.unk_token=more_config.unk_token,this.unk_token_id=this.tokens_to_ids.get(this.unk_token),this.vocab=Array(this.tokens_to_ids.size);for(let[key,value]of this.tokens_to_ids)this.vocab[value]=key}encode(tokens){return tokens}},Legacy_default=Legacy;create_tokenizer_model_default=create_tokenizer_model,PostProcessor=class extends Callable_default{constructor(config4){super();this.config=config4}_call(tokens,...args){return this.post_process(tokens,...args)}},PostProcessor_default=PostProcessor,TemplateProcessing=class extends PostProcessor_default{post_process(tokens,tokens_pair=null,add_special_tokens=!0){let type=tokens_pair===null?this.config.single:this.config.pair,processed_tokens=[],types4=[];for(let item of type)if("SpecialToken"in item){if(add_special_tokens)processed_tokens.push(item.SpecialToken.id),types4.push(item.SpecialToken.type_id)}else if("Sequence"in item){if(item.Sequence.id==="A")processed_tokens=merge_arrays(processed_tokens,tokens),types4=merge_arrays(types4,Array(tokens.length).fill(item.Sequence.type_id));else if(item.Sequence.id==="B")processed_tokens=merge_arrays(processed_tokens,tokens_pair),types4=merge_arrays(types4,Array(tokens_pair.length).fill(item.Sequence.type_id))}return{tokens:processed_tokens,token_type_ids:types4}}},TemplateProcessing_default=TemplateProcessing,ByteLevel2=class extends PostProcessor_default{post_process(tokens,tokens_pair=null){return{tokens,tokens_pair}}},ByteLevel_default2=ByteLevel2,BertProcessing=class extends PostProcessor_default{constructor(config4){super(config4);this.sep=config4.sep,this.cls=config4.cls}post_process(tokens,tokens_pair=null,add_special_tokens=!0){if(add_special_tokens)tokens=merge_arrays([this.cls[0]],tokens,[this.sep[0]]);let token_type_ids=Array(tokens.length).fill(0);if(tokens_pair){let middle=[],after=add_special_tokens?[this.sep[0]]:[];tokens=merge_arrays(tokens,middle,tokens_pair,after),token_type_ids=merge_arrays(token_type_ids,Array(tokens_pair.length+middle.length+after.length).fill(1))}return{tokens,token_type_ids}}},BertProcessing_default=BertProcessing,RobertaProcessing=class extends PostProcessor_default{constructor(config4){super(config4);this.sep=config4.sep,this.cls=config4.cls}post_process(tokens,tokens_pair,add_special_tokens=!0){if(add_special_tokens)tokens=merge_arrays([this.cls[0]],tokens,[this.sep[0]]);let token_type_ids=Array(tokens.length).fill(0);if(tokens_pair){let middle=add_special_tokens?[this.sep[0]]:[],after=add_special_tokens?[this.sep[0]]:[];tokens=merge_arrays(tokens,middle,tokens_pair,after),token_type_ids=merge_arrays(token_type_ids,Array(tokens_pair.length+middle.length+after.length).fill(1))}return{tokens,token_type_ids}}},RobertaProcessing_default=RobertaProcessing,Sequence3=class extends PostProcessor_default{constructor(config4){super(config4);this.processors=(config4.processors??[]).map((x)=>create_post_processor_default(x))}post_process(tokens,tokens_pair=null,add_special_tokens=!0){let processed_tokens={tokens,tokens_pair};for(let processor of this.processors)processed_tokens=processor.post_process(processed_tokens.tokens,processed_tokens.tokens_pair,add_special_tokens);return processed_tokens}},Sequence_default3=Sequence3;create_post_processor_default=create_post_processor,Decoder=class extends Callable_default{constructor(config4){super();this.config=config4,this.added_tokens=[],this.end_of_word_suffix=null,this.trim_offsets="trim_offsets"in config4?config4.trim_offsets:!1}_call(tokens){return this.decode(tokens)}decode(tokens){return this.decode_chain(tokens).join("")}},Decoder_default=Decoder,ByteLevel3=class extends Decoder_default{constructor(config4){super(config4);this.byte_decoder=UNICODE_TO_BYTES,this.text_decoder=new TextDecoder("utf-8",{fatal:!1,ignoreBOM:!0}),this.end_of_word_suffix=null}convert_tokens_to_string(tokens){let text3=tokens.join(""),byte_array=new Uint8Array([...text3].map((c3)=>this.byte_decoder[c3]));return this.text_decoder.decode(byte_array)}decode_chain(tokens){let sub_texts=[],current_sub_text=[];for(let token of tokens)if(this.added_tokens.find((x)=>x.content===token)!==void 0){if(current_sub_text.length>0)sub_texts.push(this.convert_tokens_to_string(current_sub_text)),current_sub_text=[];sub_texts.push(token)}else current_sub_text.push(token);if(current_sub_text.length>0)sub_texts.push(this.convert_tokens_to_string(current_sub_text));return sub_texts}},ByteLevel_default3=ByteLevel3,WordPiece=class extends Decoder_default{constructor(config4){super(config4);this.cleanup=config4.cleanup}decode_chain(tokens){return tokens.map((token,i2)=>{if(i2!==0){let prefix=this.config.prefix;if(prefix&&token.startsWith(prefix))token=token.replace(prefix,"");else token=" "+token}if(this.cleanup)token=clean_up_tokenization(token);return token})}},WordPiece_default2=WordPiece,Metaspace2=class extends Decoder_default{constructor(config4){super(config4);this.replacement=config4.replacement??"▁"}decode_chain(tokens){let result=[];for(let i2=0;i2<tokens.length;++i2){let normalized=tokens[i2].replaceAll(this.replacement," ");if(i2==0&&normalized.startsWith(" "))normalized=normalized.substring(1);result.push(normalized)}return result}},Metaspace_default2=Metaspace2,BPE2=class extends Decoder_default{constructor(config4){super(config4);this.suffix=config4.suffix??""}decode_chain(tokens){return tokens.map((token,i2)=>{return token.replaceAll(this.suffix,i2===tokens.length-1?"":" ")})}},BPE_default2=BPE2,CTC=class extends Decoder_default{constructor(config4){super(config4);this.pad_token=config4.pad_token??"",this.word_delimiter_token=config4.word_delimiter_token??"",this.cleanup=config4.cleanup}convert_tokens_to_string(tokens){if(tokens.length===0)return"";let grouped_tokens=[tokens[0]];for(let i2=1;i2<tokens.length;++i2)if(tokens[i2]!==grouped_tokens.at(-1))grouped_tokens.push(tokens[i2]);let text3=grouped_tokens.filter((token)=>token!==this.pad_token).join("");if(this.cleanup)text3=clean_up_tokenization(text3).replaceAll(this.word_delimiter_token," ").trim();return text3}decode_chain(tokens){return[this.convert_tokens_to_string(tokens)]}},CTC_default=CTC,Sequence4=class extends Decoder_default{constructor(config4){super(config4);this.decoders=(config4.decoders??[]).map((x)=>create_decoder_default(x))}decode_chain(tokens){return this.decoders.reduce((toks,decoder)=>{return decoder.decode_chain(toks)},tokens)}},Sequence_default4=Sequence4,Replace3=class extends Decoder_default{constructor(config4){super(config4);this.pattern=create_pattern(this.config.pattern)}decode_chain(tokens){let content=this.config.content??"",pattern=this.pattern;return pattern===null?tokens:tokens.map((token)=>token.replaceAll(pattern,content))}},Replace_default3=Replace3,Fuse=class extends Decoder_default{decode_chain(tokens){return[tokens.join("")]}},Fuse_default=Fuse,Strip2=class extends Decoder_default{constructor(config4){super(config4);this.content=config4.content??"",this.start=config4.start??0,this.stop=config4.stop??0}decode_chain(tokens){return tokens.map((token)=>{let start_cut=0;for(let i2=0;i2<this.start;++i2)if(token[i2]===this.content){start_cut=i2+1;continue}else break;let stop_cut=token.length;for(let i2=0;i2<this.stop;++i2){let index2=token.length-i2-1;if(token[index2]===this.content){stop_cut=index2;continue}else break}return token.slice(start_cut,stop_cut)})}},Strip_default2=Strip2,ByteFallback=class extends Decoder_default{constructor(config4){super(config4);this.text_decoder=new TextDecoder}decode_chain(tokens){let new_tokens=[],previous_byte_tokens=[];for(let token of tokens){let bytes=null;if(token.length===6&&token.startsWith("<0x")&&token.endsWith(">")){let byte=parseInt(token.slice(3,5),16);if(!isNaN(byte))bytes=byte}if(bytes!==null)previous_byte_tokens.push(bytes);else{if(previous_byte_tokens.length>0){let string4=this.text_decoder.decode(Uint8Array.from(previous_byte_tokens));new_tokens.push(string4),previous_byte_tokens=[]}new_tokens.push(token)}}if(previous_byte_tokens.length>0){let string4=this.text_decoder.decode(Uint8Array.from(previous_byte_tokens));new_tokens.push(string4),previous_byte_tokens=[]}return new_tokens}},ByteFallback_default=ByteFallback;create_decoder_default=create_decoder,Tokenizer_default=Tokenizer});function splitMergedWithNext(s2,rep){let out=[],start=0,from=s2.startsWith(rep)?rep.length:0;for(;;){let j=s2.indexOf(rep,from);if(j<0)break;if(j>start)out.push(s2.slice(start,j));start=j,from=j+rep.length}if(start<s2.length)out.push(s2.slice(start));return out}function patchTokenizer(tok,tokenizerJson){let applied=[],walk=(cfg,inst2)=>{if(!cfg||!inst2)return;if(cfg.type==="Sequence"&&Array.isArray(cfg.pretokenizers)&&Array.isArray(inst2.tokenizers))cfg.pretokenizers.forEach((c3,i2)=>walk(c3,inst2.tokenizers[i2]));else if(cfg.type==="Metaspace"&&cfg.split!==!1){let orig=inst2.pre_tokenize_text.bind(inst2),rep=cfg.replacement??"▁";inst2.pre_tokenize_text=(text3,options)=>orig(text3,options).flatMap((s2)=>splitMergedWithNext(s2,rep)),applied.push("Metaspace.split")}else if(cfg.type==="Whitespace")inst2.pre_tokenize_text=(text3)=>text3.match(WHITESPACE_RE)??[],applied.push("Whitespace.unicode")};walk(tokenizerJson.pre_tokenizer,tok.pre_tokenizer);let model=tokenizerJson.model,inst=tok.model;if(model?.type==="WordLevel"&&inst&&typeof model.unk_token==="string"){let unk=inst.tokens_to_ids?.get(model.unk_token);if(unk!==void 0&&inst.unk_token_id!==unk)inst.unk_token=model.unk_token,inst.unk_token_id=unk,applied.push("WordLevel.unk")}return applied}class HFLayaTokenizer{backend;clsToken;clsTokenId;sepToken;sepTokenId;padToken;padTokenId;maskToken;maskTokenId;patches;constructor(tokenizerJson,tokenizerConfig){this.backend=new Tokenizer_default(tokenizerJson,tokenizerConfig),this.patches=patchTokenizer(this.backend,tokenizerJson);let special={};for(let name of SPECIALS){let value=tokenizerConfig[name];if(value&&typeof value==="object")value=value.content;let id=typeof value==="string"?this.tokenToId(value):void 0;if(id===void 0)throw Error(`Tokenizer is missing a valid ${name}`);special[name]=[value,id]}[this.clsToken,this.clsTokenId]=special.cls_token,[this.sepToken,this.sepTokenId]=special.sep_token,[this.padToken,this.padTokenId]=special.pad_token,[this.maskToken,this.maskTokenId]=special.mask_token}tokenToId(token){let id=this.backend.token_to_id(token);if(id!==void 0)return id;for(let[i2,t]of this.backend.get_added_tokens_decoder())if(t.content===token)return i2;return}encode(text3){return this.backend.encode(text3,{add_special_tokens:!1}).ids}encodeWithSpecialTokens(text3){return this.backend.encode(text3,{add_special_tokens:!0}).ids}decode(ids){return this.backend.decode(ids)}}function loadTokenizer(tokenizerJson,tokenizerConfig){return new HFLayaTokenizer(asObject(tokenizerJson),asObject(tokenizerConfig))}var SPECIALS,RUST_WORD,WHITESPACE_RE,asObject=(v)=>typeof v==="string"?JSON.parse(v):v;var init_tokenizer=__esm(()=>{init_tokenizers();SPECIALS=["cls_token","sep_token","pad_token","mask_token"];RUST_WORD=String.raw`\p{Alphabetic}\p{M}\p{Nd}\p{Pc}\p{Join_Control}`,WHITESPACE_RE=new RegExp(`[${RUST_WORD}]+|[^${RUST_WORD}\\p{White_Space}]+`,"gu")});import{readFile}from"node:fs/promises";import{join}from"node:path";async function loadTokenizerFromDir(dir){let[json3,config4]=await Promise.all([readFile(join(dir,"tokenizer.json"),"utf8"),readFile(join(dir,"tokenizer_config.json"),"utf8")]);return loadTokenizer(json3,config4)}var init_node3=__esm(()=>{init_tokenizer()});function env2(name){let v=globalThis.process?.env?.[name];return v===void 0||v===""?void 0:v}function envFlag(name){return["1","ON","YES","TRUE"].includes((env2(name)??"").toUpperCase())}function isOffline(options){return options.offline??envFlag("HF_HUB_OFFLINE")}function endpointOf(options){return(options.endpoint??env2("HF_ENDPOINT")??DEFAULT_ENDPOINT).replace(/\/+$/,"")}function validateRepo(repo){if(!/^[\w.-]+(\/[\w.-]+)?$/.test(repo)||repo.includes(".."))throw new HfCacheError("RepoNotFound",`invalid repo id ${JSON.stringify(repo)}`)}function validateFilename(file2){let parts=file2.split("/");if(file2.startsWith("/")||file2.includes("\\")||parts.some((p)=>p===""||p==="."||p===".."))throw new HfCacheError("InvalidFilename",`invalid repo file path ${JSON.stringify(file2)}`)}function typePrefix(repoType){return repoType==="model"?"":`${repoType}s/`}function resolveUrl(endpoint,repo,repoType,revision,file2){let path8=file2.split("/").map(encodeURIComponent).join("/");return`${endpoint}/${typePrefix(repoType)}${repo}/resolve/${encodeURIComponent(revision)}/${path8}`}function revisionApiUrl(endpoint,repo,repoType,revision){return`${endpoint}/api/${repoType}s/${repo}/revision/${encodeURIComponent(revision)}`}function normalizeEtag(etag){if(!etag)return;return etag.replace(/^W\//,"").replace(/"/g,"")}function authHeaders(token){return token?{Authorization:`Bearer ${token}`}:{}}function httpError(res,what){let code=res.headers.get("x-error-code"),message=res.headers.get("x-error-message")??res.statusText;if(code==="EntryNotFound")return new HfCacheError("EntryNotFound",`${what}: ${message}`,{status:res.status});if(code==="RevisionNotFound")return new HfCacheError("RevisionNotFound",`${what}: ${message}`,{status:res.status});if(code==="RepoNotFound")return new HfCacheError("RepoNotFound",`${what}: ${message}`,{status:res.status});if(code==="GatedRepo")return new HfCacheError("GatedRepo",`${what}: ${message}`,{status:res.status});if(res.status===401||res.status===403)return new HfCacheError("Unauthorized",`${what}: HTTP ${res.status} ${message}`,{status:res.status});if(res.status===404)return new HfCacheError("RepoNotFound",`${what}: HTTP 404 ${message}`,{status:res.status});return new HfCacheError("HttpError",`${what}: HTTP ${res.status} ${message}`,{status:res.status})}function isNetworkError(e){return e instanceof TypeError||e instanceof Error&&/fetch failed|ECONN|ENOTFOUND|EAI_AGAIN|network/i.test(e.message)}function globToRegExp(pattern){let re="";for(let i2=0;i2<pattern.length;i2++){let c3=pattern[i2];if(c3==="*")re+=".*";else if(c3==="?")re+=".";else if(c3==="["){let j=pattern.indexOf("]",i2+2);if(j===-1)re+="\\[";else{let body=pattern.slice(i2+1,j).replace(/\\/g,"\\\\");if(body.startsWith("!"))body=`^${body.slice(1)}`;re+=`[${body}]`,i2=j}}else re+=c3.replace(/[.+^${}()|\\/]/g,"\\$&")}return new RegExp(`^${re}$`,"s")}function filterFiles(files,allow,ignore){let compile=(ps)=>ps?.map((p)=>globToRegExp(p.endsWith("/")?`${p}*`:p)),allowRe=compile(allow),ignoreRe=compile(ignore);return files.filter((f)=>(!allowRe||allowRe.some((r)=>r.test(f)))&&!(ignoreRe??[]).some((r)=>r.test(f)))}async function fetchRevisionInfo(repo,options){let repoType=options.repoType??"model",revision=options.revision??"main",url2=revisionApiUrl(endpointOf(options),repo,repoType,revision),res=await(options.fetch??globalThis.fetch)(url2,{headers:authHeaders(options.token),...options.signal?{signal:options.signal}:{}});if(!res.ok)throw await res.body?.cancel(),httpError(res,`${repo}@${revision}`);let json3=await res.json();if(!json3.sha||!COMMIT_RE.test(json3.sha))throw new HfCacheError("HttpError",`${url2}: response has no commit sha`);return{commit:json3.sha,files:(json3.siblings??[]).map((s2)=>s2.rfilename).sort()}}async function mapLimit(items,limit,fn){let out=Array(items.length),next=0,worker=async()=>{while(next<items.length){let i2=next++;out[i2]=await fn(items[i2])}};return await Promise.all(Array.from({length:Math.max(1,Math.min(limit,items.length))},worker)),out}async function*readBody(res,file2,total,onProgress){if(!res.body)return;let reader=res.body.getReader(),loaded=0;onProgress?.({file:file2,loaded,total});for(;;){let{done,value}=await reader.read();if(done)break;loaded+=value.byteLength,onProgress?.({file:file2,loaded,total}),yield value}}var HfCacheError,COMMIT_RE,DEFAULT_ENDPOINT="https://huggingface.co";var init_common5=__esm(()=>{HfCacheError=class HfCacheError extends Error{code;status;constructor(code,message,options={}){super(`hf-cache: ${message}`,options.cause===void 0?void 0:{cause:options.cause});this.name="HfCacheError",this.code=code,this.status=options.status}};COMMIT_RE=/^[0-9a-f]{40}$/});import{randomBytes}from"node:crypto";import*as fs2 from"node:fs/promises";import{homedir}from"node:os";import{dirname as dirname2,join as join2,relative}from"node:path";function hfHome(){return env2("HF_HOME")??join2(env2("XDG_CACHE_HOME")??join2(homedir(),".cache"),"huggingface")}function hubCacheDir(options={}){return options.cacheDir??env2("HF_HUB_CACHE")??env2("HUGGINGFACE_HUB_CACHE")??join2(hfHome(),"hub")}function repoFolderName(repo,repoType="model"){return[`${repoType}s`,...repo.split("/")].join("--")}async function tokenOf(options){if(options.token!==void 0)return options.token||void 0;let fromEnv=env2("HF_TOKEN")??env2("HUGGING_FACE_HUB_TOKEN");if(fromEnv)return fromEnv;try{return(await fs2.readFile(env2("HF_TOKEN_PATH")??join2(hfHome(),"token"),"utf8")).trim()||void 0}catch{return}}async function exists2(path8){try{return await fs2.stat(path8),!0}catch{return!1}}function storageFolder(repo,options){return join2(hubCacheDir(options),repoFolderName(repo,options.repoType??"model"))}function pointerPath(storage,commit,file2){return join2(storage,"snapshots",commit,...file2.split("/"))}async function readRef(storage,revision){try{let commit=(await fs2.readFile(join2(storage,"refs",...revision.split("/")),"utf8")).trim();return COMMIT_RE.test(commit)?commit:void 0}catch{return}}async function atomicWrite(path8,data){await fs2.mkdir(dirname2(path8),{recursive:!0});let tmp=`${path8}.${randomBytes(4).toString("hex")}.tmp`;await fs2.writeFile(tmp,data),await fs2.rename(tmp,path8)}async function writeRef(storage,revision,commit){if(revision===commit)return;if(await readRef(storage,revision)===commit)return;await atomicWrite(join2(storage,"refs",...revision.split("/")),commit)}async function linkPointer(blob3,pointer){await fs2.mkdir(dirname2(pointer),{recursive:!0});let tmp=`${pointer}.${randomBytes(4).toString("hex")}.tmp`;try{await fs2.symlink(relative(dirname2(pointer),blob3),tmp)}catch(e){if(e.code!=="EPERM"&&e.code!=="ENOTSUP")throw e;await fs2.copyFile(blob3,tmp)}await fs2.rename(tmp,pointer)}async function tryToLoadFromCache(repo,file2,options={}){validateRepo(repo),validateFilename(file2);let storage=storageFolder(repo,options),revision=options.revision??"main",commit=COMMIT_RE.test(revision)?revision:await readRef(storage,revision);if(!commit)return;let pointer=pointerPath(storage,commit,file2);if(await exists2(pointer))return pointer;if(await exists2(join2(storage,".no_exist",commit,...file2.split("/"))))return null;return}async function resolveFromCache(repo,file2,options,cause){let hit=await tryToLoadFromCache(repo,file2,options);if(hit)return hit;let where=`${repo}@${options.revision??"main"}:${file2}`;if(hit===null)throw new HfCacheError("EntryNotFound",`${where} does not exist (cached 404)`);throw new HfCacheError("OfflineCacheMiss",`${where} is not in the cache at ${hubCacheDir(options)}${cause?" and the Hub is unreachable":" (offline mode)"}`,cause===void 0?{}:{cause})}async function headMetadata(repo,file2,storage,token,options){let fetchImpl=options.fetch??globalThis.fetch,url2=resolveUrl(endpointOf(options),repo,options.repoType??"model",options.revision??"main",file2),commit,linkedEtag,linkedSize;for(let hop=0;hop<10;hop++){let res=await fetchImpl(url2,{method:"HEAD",redirect:"manual",headers:{...authHeaders(token),"Accept-Encoding":"identity"},...options.signal?{signal:options.signal}:{}});await res.body?.cancel(),commit??=res.headers.get("x-repo-commit")??void 0,linkedEtag??=normalizeEtag(res.headers.get("x-linked-etag"));let ls=res.headers.get("x-linked-size");if(ls!==null&&linkedSize===void 0)linkedSize=Number(ls);let location=res.headers.get("location"),size=linkedSize,etag=linkedEtag;if(REDIRECT.has(res.status)&&location){let next=new URL(location,url2);if(next.origin===new URL(url2).origin){url2=next.href;continue}}else if(res.ok){etag??=normalizeEtag(res.headers.get("etag"));let cl=res.headers.get("content-length");if(size===void 0&&cl!==null)size=Number(cl)}else{if(res.status===404&&commit&&COMMIT_RE.test(commit)&&res.headers.get("x-error-code")==="EntryNotFound"){let marker=join2(storage,".no_exist",commit,...file2.split("/"));await fs2.mkdir(dirname2(marker),{recursive:!0}),await fs2.writeFile(marker,""),await writeRef(storage,options.revision??"main",commit)}throw httpError(res,`${repo}@${options.revision??"main"}:${file2}`)}if(!commit||!COMMIT_RE.test(commit))throw new HfCacheError("HttpError",`${url2}: response has no X-Repo-Commit header`);if(!etag)throw new HfCacheError("HttpError",`${url2}: response has no ETag`);return{commit,etag,size}}throw new HfCacheError("HttpError",`${url2}: too many redirects`)}async function getFollowing(url2,token,options){let fetchImpl=options.fetch??globalThis.fetch,current=url2,headers={...authHeaders(token),"Accept-Encoding":"identity"};for(let hop=0;hop<10;hop++){let res=await fetchImpl(current,{redirect:"manual",headers,...options.signal?{signal:options.signal}:{}}),location=res.headers.get("location");if(!REDIRECT.has(res.status)||!location)return res;await res.body?.cancel();let next=new URL(location,current);if(next.origin!==new URL(current).origin)headers={"Accept-Encoding":"identity"};current=next.href}throw new HfCacheError("HttpError",`${url2}: too many redirects`)}async function downloadBlob(url2,blob3,file2,meta3,token,options){let res=await getFollowing(url2,token,options);if(!res.ok)throw await res.body?.cancel(),httpError(res,`${url2}`);let total=meta3.size??(res.headers.get("content-length")?Number(res.headers.get("content-length")):void 0);await fs2.mkdir(dirname2(blob3),{recursive:!0});let tmp=`${blob3}.${randomBytes(4).toString("hex")}.incomplete`,handle=await fs2.open(tmp,"w"),written=0;try{try{for await(let chunk of readBody(res,file2,total,options.onProgress))await handle.write(chunk),written+=chunk.byteLength}finally{await handle.close()}if(meta3.size!==void 0&&written!==meta3.size)throw new HfCacheError("HttpError",`${file2}: downloaded ${written} bytes, expected ${meta3.size}`);await fs2.rename(tmp,blob3)}catch(e){throw await fs2.rm(tmp,{force:!0}),e}}async function resolveFile(repo,file2,options={}){validateRepo(repo),validateFilename(file2);let revision=options.revision??"main",storage=storageFolder(repo,options);if(COMMIT_RE.test(revision)){let pointer2=pointerPath(storage,revision,file2);if(await exists2(pointer2))return pointer2}if(isOffline(options))return resolveFromCache(repo,file2,options);let token=await tokenOf(options),meta3;try{meta3=await headMetadata(repo,file2,storage,token,options)}catch(e){if(isNetworkError(e))return resolveFromCache(repo,file2,options,e);throw e}await writeRef(storage,revision,meta3.commit);let pointer=pointerPath(storage,meta3.commit,file2);if(await exists2(pointer))return pointer;let blob3=join2(storage,"blobs",meta3.etag);if(!await exists2(blob3)){let url2=resolveUrl(endpointOf(options),repo,options.repoType??"model",meta3.commit,file2);await downloadBlob(url2,blob3,file2,meta3,token,options)}else if(meta3.size!==void 0)options.onProgress?.({file:file2,loaded:meta3.size,total:meta3.size});return await linkPointer(blob3,pointer),pointer}async function walk(dir,prefix=""){let out=[];for(let entry of await fs2.readdir(dir,{withFileTypes:!0})){let rel=prefix?`${prefix}/${entry.name}`:entry.name;if(entry.isDirectory())out.push(...await walk(join2(dir,entry.name),rel));else if(await exists2(join2(dir,entry.name)))out.push(rel)}return out}async function treeCacheFiles(storage,commit){try{let json3=JSON.parse(await fs2.readFile(join2(storage,"trees",`${commit}.json`),"utf8"));return json3.format_version===1&&json3.files?Object.keys(json3.files):void 0}catch{return}}async function snapshotFromCache(repo,options,cause){let storage=storageFolder(repo,options),revision=options.revision??"main",commit=COMMIT_RE.test(revision)?revision:await readRef(storage,revision),dir=commit?join2(storage,"snapshots",commit):void 0;if(!commit||!dir||!await exists2(dir))throw new HfCacheError("OfflineCacheMiss",`${repo}@${revision} has no cached snapshot in ${hubCacheDir(options)}`,cause===void 0?{}:{cause});if(options.files){for(let f of options.files)await resolveFromCache(repo,f,{...options,revision:commit},cause);return{dir,files:[...options.files].sort(),commit}}let present=await walk(dir),presentSet=new Set(present),listing=await treeCacheFiles(storage,commit)??present,files=filterFiles(listing,options.allowPatterns,options.ignorePatterns).filter((f)=>presentSet.has(f));return{dir,files:files.sort(),commit}}async function snapshot(repo,options={}){validateRepo(repo);for(let f of options.files??[])validateFilename(f);let revision=options.revision??"main";if(isOffline(options))return snapshotFromCache(repo,options);if(COMMIT_RE.test(revision)&&options.files){let storage2=storageFolder(repo,options);if((await Promise.all(options.files.map((f)=>exists2(pointerPath(storage2,revision,f))))).every(Boolean))return{dir:join2(storage2,"snapshots",revision),files:[...options.files].sort(),commit:revision}}let token=await tokenOf(options),info;try{info=await fetchRevisionInfo(repo,{...options,token})}catch(e){if(isNetworkError(e))return snapshotFromCache(repo,options,e);throw e}let storage=storageFolder(repo,options);await writeRef(storage,revision,info.commit);let files=options.files?[...options.files]:filterFiles(info.files,options.allowPatterns,options.ignorePatterns);return await mapLimit(files,options.concurrency??4,(f)=>resolveFile(repo,f,{...options,token,revision:info.commit})),{dir:join2(storage,"snapshots",info.commit),files:files.sort(),commit:info.commit}}var REDIRECT;var init_node4=__esm(()=>{init_common5();REDIRECT=new Set([301,302,303,307,308])});var init_dist11=__esm(()=>{init_node4()});function headerLength(first8){if(first8.byteLength<8)throw new SafetensorsError("HeaderTooSmall",`need 8 bytes for the header length, got ${first8.byteLength}`);let n2=new DataView(first8.buffer,first8.byteOffset,8).getBigUint64(0,!0);if(n2>BigInt(MAX_HEADER))throw new SafetensorsError("HeaderTooLarge",`header length ${n2} exceeds ${MAX_HEADER}`);return Number(n2)}function topLevelKeys(json3){let keys=[],depth=0,expectKey=!1;for(let i2=0;i2<json3.length;i2++){let c3=json3.charCodeAt(i2);if(c3===34){let j=i2+1;while(json3.charCodeAt(j)!==34)j+=json3.charCodeAt(j)===92?2:1;if(depth===1&&expectKey)keys.push(JSON.parse(json3.slice(i2,j+1))),expectKey=!1;i2=j}else if(c3===123||c3===91){if(depth++,depth===1)expectKey=!0}else if(c3===125||c3===93)depth--;else if(c3===44&&depth===1)expectKey=!0}return keys}function isNonNegativeSafeInt(v){return typeof v==="number"&&Number.isSafeInteger(v)&&v>=0}function parseHeader(bytes,options={}){let n2=headerLength(bytes);if(bytes.byteLength<8+n2)throw new SafetensorsError("InvalidHeaderLength",`truncated header: need ${8+n2} bytes, have ${bytes.byteLength}`);if(options.fileSize!==void 0&&options.fileSize<8+n2)throw new SafetensorsError("InvalidHeaderLength",`header length ${n2} exceeds file size ${options.fileSize}`);let text3;try{text3=new TextDecoder("utf-8",{fatal:!0}).decode(bytes.subarray(8,8+n2))}catch(cause){throw new SafetensorsError("InvalidHeader","header is not valid UTF-8",{cause})}if(!text3.startsWith("{"))throw new SafetensorsError("InvalidHeaderStart","header must start with '{'");let json3;try{json3=JSON.parse(text3)}catch(cause){throw new SafetensorsError("InvalidHeaderDeserialization",`header is not valid JSON (${cause.message})`,{cause})}if(typeof json3!=="object"||json3===null||Array.isArray(json3))throw new SafetensorsError("InvalidHeaderDeserialization","header JSON must be an object");let keys=topLevelKeys(text3),seen=new Set;for(let key of keys){if(seen.has(key))throw new SafetensorsError("DuplicateTensor",`duplicate entry ${JSON.stringify(key)} in header`);seen.add(key)}let tensors=[],metadata={};for(let name of keys){let raw=json3[name];if(name==="__metadata__"){if(raw===null)continue;if(typeof raw!=="object"||Array.isArray(raw))throw new SafetensorsError("InvalidHeaderDeserialization","__metadata__ must be an object of strings");for(let[k,v]of Object.entries(raw))if(typeof v!=="string")throw new SafetensorsError("InvalidHeaderDeserialization",`__metadata__.${k} must be a string, got ${typeof v}`);metadata={...raw};continue}if(typeof raw!=="object"||raw===null||Array.isArray(raw))throw new SafetensorsError("InvalidHeaderDeserialization",`entry ${name} must be an object`);let r=raw;if(typeof r.dtype!=="string"||!Object.hasOwn(BYTES,r.dtype))throw new SafetensorsError("InvalidDtype",`unsupported dtype ${JSON.stringify(r.dtype)} for ${name}`);let dtype=r.dtype;if(!Array.isArray(r.shape)||!r.shape.every(isNonNegativeSafeInt))throw new SafetensorsError("InvalidShape",`${name}: shape must be an array of non-negative integers`);let shape=[...r.shape],offsets=r.data_offsets;if(!Array.isArray(offsets)||offsets.length!==2||!offsets.every(isNonNegativeSafeInt))throw new SafetensorsError("InvalidOffset",`${name}: data_offsets must be [begin, end] non-negative integers`);let[begin,end]=offsets;if(end<begin)throw new SafetensorsError("InvalidOffset",`${name}: data_offsets end ${end} < begin ${begin}`);let expected=BYTES[dtype];for(let d of shape)if(expected*=d,!Number.isSafeInteger(expected))throw new SafetensorsError("ValidationOverflow",`${name}: byte size overflows`);if(end-begin!==expected)throw new SafetensorsError("TensorInvalidInfo",`${name} spans ${end-begin} bytes, expected ${expected} for ${dtype}[${shape}]`);tensors.push(Object.freeze({name,dtype,shape:Object.freeze(shape),dataOffsets:Object.freeze([begin,end])}))}let sorted=[...tensors].sort((a2,b)=>a2.dataOffsets[0]-b.dataOffsets[0]||a2.dataOffsets[1]-b.dataOffsets[1]),cursor2=0;for(let t of sorted){let[b,e]=t.dataOffsets;if(b!==cursor2)throw new SafetensorsError("InvalidOffset",b<cursor2?`${t.name} overlaps the previous tensor (begins at ${b}, previous ends at ${cursor2})`:`gap before ${t.name} (begins at ${b}, previous ends at ${cursor2})`);cursor2=e}let dataStart=8+n2;if(options.fileSize!==void 0&&dataStart+cursor2!==options.fileSize)throw new SafetensorsError("MetadataIncompleteBuffer",`data section is ${options.fileSize-dataStart} bytes but the header's offsets cover ${cursor2}`);return{tensors:new Map(tensors.map((t)=>[t.name,t])),metadata:Object.freeze(metadata),dataStart,dataLength:cursor2}}var BYTES,SafetensorsError,MAX_HEADER=104857600;var init_header=__esm(()=>{BYTES={BOOL:1,U8:1,I8:1,U16:2,I16:2,F16:2,BF16:2,U32:4,I32:4,F32:4,U64:8,I64:8,F64:8};SafetensorsError=class SafetensorsError extends Error{code;constructor(code,message,options){super(`safetensors: ${message}`,options);this.name="SafetensorsError",this.code=code}}});function aligned(bytes,size){return bytes.byteOffset%size===0?bytes:new Uint8Array(bytes)}function float16Ctor(){let ctor=globalThis.Float16Array;if(typeof ctor!=="function")throw new SafetensorsError("Float16Unavailable","F16 needs a runtime with Float16Array (Node >= 24, Bun, Deno, Chrome 135+, Firefox 129+, Safari 18.2+)");return ctor}function viewAs(dtype,bytes){let size=BYTES[dtype];if(bytes.byteLength%size!==0)throw new SafetensorsError("TensorInvalidInfo",`${bytes.byteLength} bytes is not a whole number of ${dtype} elements`);let{buffer,byteOffset}=aligned(bytes,size),n2=bytes.byteLength/size;switch(dtype){case"F16":return new(float16Ctor())(buffer,byteOffset,n2);case"BF16":case"U16":return new Uint16Array(buffer,byteOffset,n2);case"I16":return new Int16Array(buffer,byteOffset,n2);case"F32":return new Float32Array(buffer,byteOffset,n2);case"F64":return new Float64Array(buffer,byteOffset,n2);case"I32":return new Int32Array(buffer,byteOffset,n2);case"U32":return new Uint32Array(buffer,byteOffset,n2);case"I64":return new BigInt64Array(buffer,byteOffset,n2);case"U64":return new BigUint64Array(buffer,byteOffset,n2);case"I8":return new Int8Array(buffer,byteOffset,n2);case"U8":case"BOOL":return new Uint8Array(buffer,byteOffset,n2)}}function toFloat32(dtype,bytes){if(dtype==="BF16"){let bits=viewAs("BF16",bytes),wide=new Uint32Array(bits.length);for(let i2=0;i2<bits.length;i2++)wide[i2]=bits[i2]<<16;return new Float32Array(wide.buffer)}let view2=viewAs(dtype,bytes);if(view2 instanceof BigInt64Array||view2 instanceof BigUint64Array)return Float32Array.from(view2,Number);return new Float32Array(view2)}var init_views=__esm(()=>{init_header()});function writeSafetensors(tensors,metadata){let entries=tensors instanceof Map?[...tensors.entries()]:Object.entries(tensors);for(let[name,t]of entries){if(name==="__metadata__")throw new SafetensorsError("InvalidHeaderDeserialization",'"__metadata__" is reserved and cannot name a tensor');if(!Object.hasOwn(BYTES,t.dtype))throw new SafetensorsError("InvalidDtype",`unsupported dtype ${JSON.stringify(t.dtype)} for ${name}`);if(!t.shape.every((d)=>Number.isSafeInteger(d)&&d>=0))throw new SafetensorsError("InvalidShape",`${name}: shape must be non-negative integers, got [${t.shape}]`);let expected=t.shape.reduce((a2,d)=>a2*d,BYTES[t.dtype]);if(t.data.byteLength!==expected)throw new SafetensorsError("TensorInvalidInfo",`${name}: data has ${t.data.byteLength} bytes, expected ${expected} for ${t.dtype}[${t.shape}]`)}if(metadata!==void 0){for(let[k,v]of Object.entries(metadata))if(typeof v!=="string")throw new SafetensorsError("InvalidHeaderDeserialization",`metadata.${k} must be a string`)}entries.sort(([an,a2],[bn,b])=>DTYPE_ORDER[b.dtype]-DTYPE_ORDER[a2.dtype]||(an<bn?-1:an>bn?1:0));let parts=[];if(metadata!==void 0)parts.push(`"__metadata__":${JSON.stringify(metadata)}`);let offset=0;for(let[name,t]of entries){let end=offset+t.data.byteLength;parts.push(`${JSON.stringify(name)}:${JSON.stringify({dtype:t.dtype,shape:[...t.shape],data_offsets:[offset,end]})}`),offset=end}let json3=new TextEncoder().encode(`{${parts.join(",")}}`),pad=(8-json3.byteLength%8)%8,n2=json3.byteLength+pad,out=new Uint8Array(8+n2+offset);new DataView(out.buffer).setBigUint64(0,BigInt(n2),!0),out.set(json3,8),out.fill(32,8+json3.byteLength,8+n2);let cursor2=8+n2;for(let[,t]of entries)out.set(new Uint8Array(t.data.buffer,t.data.byteOffset,t.data.byteLength),cursor2),cursor2+=t.data.byteLength;return out}var DTYPE_ORDER;var init_writer=__esm(()=>{init_header();DTYPE_ORDER={BOOL:0,U8:1,I8:2,I16:3,U16:4,F16:5,BF16:6,I32:7,U32:8,F32:9,F64:10,I64:11,U64:12}});class MemorySource{#bytes;size;constructor(bytes){this.#bytes=bytes instanceof Uint8Array?bytes:new Uint8Array(bytes),this.size=this.#bytes.byteLength}async read(offset,length){return this.#bytes.subarray(offset,offset+length)}}class BlobSource{#blob;size;constructor(blob3){this.#blob=blob3,this.size=blob3.size}async read(offset,length){return new Uint8Array(await this.#blob.slice(offset,offset+length).arrayBuffer())}}function parseContentRangeTotal(value){let m=value?.match(/\/\s*(\d+)\s*$/);return m?Number(m[1]):void 0}class HttpSource{url;size;rangesSupported=!0;#fetch;#headers;#signal;#full;requests=0;constructor(url2,options={}){this.url=String(url2),this.#fetch=options.fetch??globalThis.fetch.bind(globalThis),this.#headers=options.headers??{},this.#signal=options.signal}async read(offset,length){if(this.#full)return this.#full.subarray(offset,offset+length);if(length===0)return new Uint8Array(0);this.requests++;let res=await this.#fetch(this.url,{headers:{...this.#headers,Range:`bytes=${offset}-${offset+length-1}`},...this.#signal?{signal:this.#signal}:{}});if(res.status===206){let total=parseContentRangeTotal(res.headers.get("content-range"));if(total!==void 0)this.size=total;let bytes=new Uint8Array(await res.arrayBuffer());if(bytes.byteLength!==length&&(this.size===void 0||offset+bytes.byteLength!==this.size))throw new SafetensorsError("ReadError",`${this.url}: asked for ${length} bytes at ${offset}, got ${bytes.byteLength}`);return bytes}if(res.status===200)return this.rangesSupported=!1,this.#full=new Uint8Array(await res.arrayBuffer()),this.size=this.#full.byteLength,this.#full.subarray(offset,offset+length);if(res.status===416){let total=parseContentRangeTotal(res.headers.get("content-range"));if(total!==void 0)this.size=total;return await res.body?.cancel(),new Uint8Array(0)}throw await res.body?.cancel(),new SafetensorsError("ReadError",`${this.url}: HTTP ${res.status} ${res.statusText}`)}}function isFileHandleLike(v){return typeof v==="object"&&v!==null&&typeof v.read==="function"&&typeof v.stat==="function"}class FileHandleSource{#handle;#owned;size;constructor(handle,size,owned){this.#handle=handle,this.size=size,this.#owned=owned}static async fromHandle(handle){return new FileHandleSource(handle,Number((await handle.stat()).size),!1)}static async open(path8){let fs3;try{fs3=await import(__rewriteRelativeImportExtension("node:fs/promises"))}catch(cause){throw new SafetensorsError("UnsupportedSource",`file paths need node:fs (Node/Bun/Deno); got ${JSON.stringify(path8)}. In a browser pass a Blob/File or an http(s) URL`,{cause})}let handle=await fs3.open(path8,"r");try{return new FileHandleSource(handle,Number((await handle.stat()).size),!0)}catch(e){throw await handle.close?.(),e}}async read(offset,length){let end=Math.min(offset+length,this.size),out=new Uint8Array(Math.max(0,end-offset)),done=0;while(done<out.byteLength){let{bytesRead}=await this.#handle.read(out,done,out.byteLength-done,offset+done);if(bytesRead===0)throw new SafetensorsError("ReadError",`unexpected end of file at ${offset+done}`);done+=bytesRead}return out}async close(){if(this.#owned)await this.#handle.close?.()}}function isByteSource(v){return typeof v==="object"&&v!==null&&typeof v.read==="function"}async function toByteSource(source,options={}){if(source instanceof Uint8Array||source instanceof ArrayBuffer)return new MemorySource(source);if(typeof Blob<"u"&&source instanceof Blob)return new BlobSource(source);if(source instanceof URL||typeof source==="string"){let text3=String(source);if(/^(https?|blob|data):/i.test(text3))return new HttpSource(text3,options);if(/^file:/i.test(text3))return FileHandleSource.open(decodeURIComponent(new URL(text3).pathname));return FileHandleSource.open(text3)}if(isFileHandleLike(source))return FileHandleSource.fromHandle(source);if(isByteSource(source))return source;throw new SafetensorsError("UnsupportedSource","expected bytes, a Blob, a URL, a file path, a FileHandle or a ByteSource")}var __rewriteRelativeImportExtension=function(path8,preserveJsx){if(typeof path8==="string"&&/^\.\.?\//.test(path8))return path8.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(m,tsx,d,ext,cm){return tsx?preserveJsx?".jsx":".js":d&&(!ext||!cm)?m:d+ext+"."+cm.toLowerCase()+"js"});return path8};var init_sources=__esm(()=>{init_header()});class LazySafetensors{header;source;constructor(header,source){this.header=header,this.source=source}get metadata(){return this.header.metadata}get size(){return this.source.size}names(){return[...this.header.tensors.keys()]}has(name){return this.header.tensors.has(name)}info(name){let t=this.header.tensors.get(name);if(!t)throw new SafetensorsError("TensorNotFound",`no tensor named ${name}`);return t}async readBytes(name){let{dataOffsets:[b,e]}=this.info(name),bytes=await this.source.read(this.header.dataStart+b,e-b);if(bytes.byteLength!==e-b)throw new SafetensorsError("ReadError",`${name}: expected ${e-b} bytes, source returned ${bytes.byteLength} (truncated file?)`);return bytes}async read(name){return viewAs(this.info(name).dtype,await this.readBytes(name))}async toF32(name){return toFloat32(this.info(name).dtype,await this.readBytes(name))}async readMany(names=this.names(),options={}){let maxGap=options.maxGap??65536,maxChunk=options.maxChunk??67108864,infos=[...new Set(names)].map((n2)=>this.info(n2)).sort((a2,b)=>a2.dataOffsets[0]-b.dataOffsets[0]),groups=[];for(let t of infos){let group=groups.at(-1),first=group?.[0],last=group?.at(-1);if(group&&first&&last&&t.dataOffsets[0]-last.dataOffsets[1]<=maxGap&&t.dataOffsets[1]-first.dataOffsets[0]<=maxChunk)group.push(t);else groups.push([t])}let views=new Map;return await Promise.all(groups.map(async(group)=>{let start=group[0].dataOffsets[0],end=group.at(-1).dataOffsets[1],chunk=await this.source.read(this.header.dataStart+start,end-start);if(chunk.byteLength!==end-start)throw new SafetensorsError("ReadError",`expected ${end-start} bytes at ${start}, source returned ${chunk.byteLength} (truncated file?)`);for(let t of group)views.set(t.name,viewAs(t.dtype,chunk.subarray(t.dataOffsets[0]-start,t.dataOffsets[1]-start)))})),new Map([...new Set(names)].map((n2)=>[n2,views.get(n2)]))}async close(){await this.source.close?.()}}async function openSafetensors(source,options={}){let src=await toByteSource(source,options);try{let probe=Math.max(8,options.probeBytes??262144),head=await src.read(0,src.size===void 0?probe:Math.min(probe,src.size));if(head.byteLength<8)throw new SafetensorsError("HeaderTooSmall",`file is ${head.byteLength} bytes; a safetensors file has at least 8`);let n2=new DataView(head.buffer,head.byteOffset,8).getBigUint64(0,!0),need=8+Number(n2);if(n2<=BigInt(Number.MAX_SAFE_INTEGER)&&head.byteLength<need&&(src.size===void 0||src.size>=need)&&need<=104857608){let rest=await src.read(head.byteLength,need-head.byteLength),joined=new Uint8Array(head.byteLength+rest.byteLength);joined.set(head),joined.set(rest,head.byteLength),head=joined}let header=parseHeader(head,src.size===void 0?{}:{fileSize:src.size});return new LazySafetensors(header,src)}catch(e){throw await src.close?.(),e}}var init_lazy=__esm(()=>{init_header();init_sources();init_views()});class SafetensorsFile{header;#bytes;constructor(source){this.#bytes=source instanceof Uint8Array?source:new Uint8Array(source),this.header=parseHeader(this.#bytes,{fileSize:this.#bytes.byteLength})}get metadata(){return this.header.metadata}names(){return[...this.header.tensors.keys()]}has(name){return this.header.tensors.has(name)}info(name){let t=this.header.tensors.get(name);if(!t)throw new SafetensorsError("TensorNotFound",`no tensor named ${name}`);return t}bytes(name){let{dataOffsets:[b,e]}=this.info(name);return this.#bytes.subarray(this.header.dataStart+b,this.header.dataStart+e)}view(name){return viewAs(this.info(name).dtype,this.bytes(name))}toF32(name){return toFloat32(this.info(name).dtype,this.bytes(name))}}var init_dist12=__esm(()=>{init_header();init_views();init_views();init_writer();init_lazy()});function quantMetadata(metadata){let scheme=metadata?.laya_quant;if(scheme===void 0)return null;if(scheme!=="q8"&&scheme!=="q4")throw Error(`laya: unknown quantization scheme laya_quant=${JSON.stringify(scheme)} (expected "q8" or "q4")`);let version3=metadata.version??"";if(version3!==QUANT_FORMAT_VERSION)throw Error(`laya: quantized checkpoint format version ${JSON.stringify(version3)} is not supported (this laya reads version ${QUANT_FORMAT_VERSION}); upgrade @johnhenry/laya`);let g2=metadata.group_size,groupSize=g2===void 0||g2==="row"?null:Number(g2);if(groupSize!==null&&!(Number.isInteger(groupSize)&&groupSize>0))throw Error(`laya: invalid group_size ${JSON.stringify(g2)} in quantized checkpoint`);return{scheme,bits:scheme==="q8"?8:4,groupSize,version:version3,sourceDtype:metadata.laya_quant_source_dtype}}function quantizeMatrix(values,rows,cols,bits,groupSize=cols,{refine:refine2=!0}={}){if(values.length!==rows*cols)throw RangeError(`quantizeMatrix: ${values.length} values for [${rows}, ${cols}]`);if(bits!==8&&bits!==4)throw RangeError(`quantizeMatrix: bits must be 8 or 4, got ${String(bits)}`);if(!(Number.isInteger(groupSize)&&groupSize>0&&cols%groupSize===0))throw RangeError(`quantizeMatrix: group size ${groupSize} must divide ${cols}`);if(bits===4&&(cols%2||groupSize%2))throw RangeError("quantizeMatrix: q4 needs an even column count and group size");let G=cols/groupSize,scales=new Float16Array(rows*G),biases=bits===4?new Float16Array(rows*G):void 0,q2=new Int32Array(rows*cols),fit=bits===8?fitSymmetric:fitAffine,steps=refine2?REFINE_STEPS:0,w=new Float64Array(groupSize),cur=new Int32Array(groupSize),best=new Int32Array(groupSize);for(let r=0;r<rows;r++)for(let gi=0;gi<G;gi++){let start=r*cols+gi*groupSize;for(let k=0;k<groupSize;k++)w[k]=values[start+k];let[s2,b]=fit(w,cur,best,steps);if(scales[r*G+gi]=s2,biases)biases[r*G+gi]=b;q2.set(best,start)}if(bits===8)return{bits,rows,cols,data:Int8Array.from(q2),scales,groupSize};let data=new Uint8Array(rows*cols/2);for(let i2=0;i2<rows*cols;i2+=2)data[i2>>1]=q2[i2]|q2[i2+1]<<4;return{bits,rows,cols,data,scales,biases,groupSize}}function assign(w,q2,s2,b,qmin,qmax){let err=0,ok=s2>0&&Number.isFinite(s2);for(let k=0;k<w.length;k++){let v=ok?Math.round((w[k]-b)/s2):0;v=v<qmin?qmin:v>qmax?qmax:v,q2[k]=v;let d=w[k]-(v*(ok?s2:0)+b);err+=d*d}return err}function fitSymmetric(w,cur,best,steps){let amax=0;for(let k=0;k<w.length;k++)amax=Math.max(amax,Math.abs(w[k]));let s2=toF16(amax/127),bestErr=assign(w,best,s2,0,-127,127),bestS=s2;for(let it=0;it<steps;it++){let num=0,den=0;for(let k=0;k<w.length;k++)num+=best[k]*w[k],den+=best[k]*best[k];if(den===0)break;s2=toF16(num/den);let err=assign(w,cur,s2,0,-127,127);if(!(err<bestErr))break;bestErr=err,bestS=s2,best.set(cur)}return[bestS,0]}function fitAffine(w,cur,best,steps){let lo=1/0,hi=-1/0;for(let k=0;k<w.length;k++)lo=Math.min(lo,w[k]),hi=Math.max(hi,w[k]);let b=toF16(lo),s2=toF16((hi-b)/15),bestErr=assign(w,best,s2,b,0,15),bestS=s2,bestB=b;for(let it=0;it<steps;it++){let n2=w.length,sq=0,sw=0,sqq=0,sqw=0;for(let k=0;k<n2;k++)sq+=best[k],sw+=w[k],sqq+=best[k]*best[k],sqw+=best[k]*w[k];let den=n2*sqq-sq*sq;if(den===0)break;s2=toF16((n2*sqw-sq*sw)/den),b=toF16((sw-s2*sq)/n2);let err=assign(w,cur,s2,b,0,15);if(!(err<bestErr))break;bestErr=err,bestS=s2,bestB=b,best.set(cur)}return[bestS,bestB]}function dequantizeMatrix(m,dtype){let{bits,rows,cols,data,scales,biases,groupSize}=m,G=cols/groupSize;if(!Number.isInteger(G)||scales.length!==rows*G)throw RangeError(`dequantizeMatrix: scales has ${scales.length} values, want ${rows} × ${G}`);let n2=rows*cols,out=dtype==="f16"?new Float16Array(n2):new Float32Array(n2),bitsOut=dtype==="f16"?new Uint16Array(out.buffer):new Uint32Array(out.buffer),levels=1<<bits,lut=dtype==="f16"?new Float16Array(levels):new Float32Array(levels),lutBits=dtype==="f16"?new Uint16Array(lut.buffer):new Uint32Array(lut.buffer);if(bits===8){if(data.length!==n2)throw RangeError(`dequantizeMatrix: q8 data has ${data.length} values, want ${n2}`);let q2=data,useLut=groupSize>=256;for(let r=0;r<rows;r++)for(let gi=0;gi<G;gi++){let s2=scales[r*G+gi],start=r*cols+gi*groupSize,end=start+groupSize;if(useLut){for(let k=0;k<256;k++)lut[k]=(k-128)*s2;for(let i2=start;i2<end;i2++)bitsOut[i2]=lutBits[q2[i2]+128]}else for(let i2=start;i2<end;i2++)out[i2]=q2[i2]*s2}return out}if(!biases||biases.length!==rows*G)throw RangeError("dequantizeMatrix: q4 needs biases [rows, cols/groupSize]");if(data.length*2!==n2)throw RangeError(`dequantizeMatrix: q4 data has ${data.length} bytes, want ${n2/2}`);for(let r=0;r<rows;r++)for(let gi=0;gi<G;gi++){let s2=scales[r*G+gi],b=biases[r*G+gi];for(let k=0;k<16;k++)lut[k]=k*s2+b;let start=r*cols+gi*groupSize,end=start+groupSize;for(let i2=start;i2<end;i2+=2){let byte=data[i2>>1];bitsOut[i2]=lutBits[byte&15],bitsOut[i2+1]=lutBits[byte>>4]}}return out}function shouldQuantize(name,dtype,shape,opts){if(!["F16","BF16","F32"].includes(dtype)||shape.length!==2||!name.endsWith(".weight"))return!1;if(/(^|\.)(norm\d*|[a-z_]*norm)\./.test(name)||name==="type_emb.weight")return!1;if(name.endsWith("tok_embeddings.weight")&&opts.embeddings===!1)return!1;if(opts.exclude?.some((re)=>re.test(name)))return!1;let[rows,cols]=shape;if(rows<64)return!1;return groupOf(opts,bitsOf(name,opts),cols)!==null}function bitsOf(name,opts){return opts.bits===4&&opts.q8?.some((re)=>re.test(name))?8:opts.bits}function groupOf(opts,bits,cols){let g2=opts.groupSize??DEFAULT_GROUP_SIZE,size=g2==="row"?cols:g2;if(cols%size)return null;if(bits===4&&(size%2||cols%2))return null;return size}async function quantizeSafetensors(file2,opts){if(opts.bits!==8&&opts.bits!==4)throw RangeError(`bits must be 8 or 4, got ${String(opts.bits)}`);let g2=opts.groupSize??DEFAULT_GROUP_SIZE;if(g2!=="row"&&!(Number.isInteger(g2)&&g2>0))throw RangeError(`group size must be a positive integer or "row", got ${String(g2)}`);if(quantMetadata(file2.metadata))throw Error("laya quantize: the source checkpoint is already quantized");let scheme=opts.bits===8?"q8":"q4",out=new Map,report={scheme,groupSize:g2,quantized:[],promoted:[],kept:[],bytesIn:0,bytesOut:0},dtypes=new Set;for(let name of file2.names()){let info=file2.info(name),bytes2=await file2.readBytes(name);if(report.bytesIn+=bytes2.byteLength,/\.(scales|biases)$/.test(name)&&file2.has(name.replace(/\.(scales|biases)$/,"")))throw Error(`laya quantize: tensor name ${name} collides with the quantization companions`);if(!shouldQuantize(name,info.dtype,info.shape,opts)){out.set(name,{dtype:info.dtype,shape:info.shape,data:bytes2}),report.kept.push(name);continue}dtypes.add(info.dtype);let[rows,cols]=info.shape,bits=bitsOf(name,opts),q2=quantizeMatrix(toFloat32(info.dtype,bytes2),rows,cols,bits,groupOf(opts,bits,cols),{refine:bits===4&&(opts.refine??!0)}),G=cols/q2.groupSize;if(bits!==opts.bits)report.promoted.push(name);if(out.set(name,bits===8?{dtype:"I8",shape:[rows,cols],data:q2.data}:{dtype:"U8",shape:[rows,cols/2],data:q2.data}),out.set(name+".scales",{dtype:"F16",shape:[rows,G],data:q2.scales}),q2.biases)out.set(name+".biases",{dtype:"F16",shape:[rows,G],data:q2.biases});report.quantized.push(name)}let metadata={...opts.metadata,laya_quant:scheme,group_size:String(g2),version:QUANT_FORMAT_VERSION,laya_quant_source_dtype:[...dtypes].join(",")||"none"},bytes=writeSafetensors(out,metadata);return report.bytesOut=bytes.byteLength,{bytes,report}}function groupQuantized(tensors){let quantized=new Map,plain=new Map,companion=new Set;for(let[name,t]of tensors){let scales=tensors.get(name+".scales");if(!scales)continue;let where=`laya: quantized tensor ${name}`;if(scales.dtype!=="F16"||scales.shape.length!==2)throw Error(`${where}: .scales must be F16 [rows, groups]`);let[rows,G]=scales.shape,bits,cols,biases;if(t.dtype==="I8")bits=8,cols=t.shape[1];else if(t.dtype==="U8"){bits=4,cols=2*t.shape[1];let b=tensors.get(name+".biases");if(!b||b.dtype!=="F16"||b.shape[0]!==rows||b.shape[1]!==G)throw Error(`${where}: q4 needs .biases F16 [${rows}, ${G}]`);biases=b.data,companion.add(name+".biases")}else throw Error(`${where}: dtype ${t.dtype} is not a quantized dtype (I8 or U8)`);if(t.shape.length!==2||t.shape[0]!==rows||cols%G)throw Error(`${where}: shape [${t.shape}] does not match .scales [${scales.shape}]`);companion.add(name+".scales"),quantized.set(name,{bits,rows,cols,data:t.data,scales:scales.data,...biases?{biases}:{},groupSize:cols/G})}for(let[name,t]of tensors)if(!quantized.has(name)&&!companion.has(name))plain.set(name,t);return{quantized,plain}}var QUANT_FORMAT_VERSION="1",f16,toF16=(x)=>(f16[0]=x,f16[0]),REFINE_STEPS=8,DEFAULT_GROUP_SIZE=64;var init_quant=__esm(()=>{init_dist12();f16=new Float16Array(1)});function sanitizeName(name){let n2=name.replace(".in_proj_weight",".in_proj.weight").replace(".in_proj_bias",".in_proj.bias");for(let prefix of["scorer","act_head"])if(n2.startsWith(prefix+".")&&!n2.startsWith(prefix+".layers."))n2=prefix+".layers."+n2.slice(prefix.length+1);return n2}function consumingWeights(tensors){let map2=new Map;for(let[name,t]of tensors){let key=sanitizeName(name);if(map2.has(key))throw Error(`Duplicate checkpoint parameter after conversion: ${key}`);map2.set(key,t)}return{get:(name)=>{let t=map2.get(name);if(t)map2.delete(name);return t},remaining:()=>[...map2.keys()]}}async function readAllTensors(file2){let views=await file2.readMany(),out=new Map;for(let[name,data]of views){let info=file2.info(name),dtype=DTYPES[info.dtype];if(!dtype)throw TypeError(`laya: unsupported safetensors dtype ${info.dtype} for ${name}`);out.set(name,{dtype,shape:[...info.shape],data})}return out}function hostQuantized(m){let G=m.cols/m.groupSize;return{shape:[m.rows,m.cols],bits:m.bits,groupSize:m.groupSize,mode:m.bits===8?"symmetric":"affine",data:new Uint8Array(m.data.buffer,m.data.byteOffset,m.data.byteLength),scales:{dtype:"f16",shape:[m.rows,G],data:m.scales},biases:m.biases?{dtype:"f16",shape:[m.rows,G],data:m.biases}:null}}function dequantizingWeights(tensors,dtype="f16",keepQuantized=!1){let{quantized,plain}=groupQuantized(tensors),q2=new Map;for(let[name,m]of quantized){let key=sanitizeName(name);if(q2.has(key))throw Error(`Duplicate checkpoint parameter after conversion: ${key}`);q2.set(key,m)}let hosts=new Map;for(let[name,t]of plain){let d=DTYPES[t.dtype];if(!d)throw TypeError(`laya: unsupported safetensors dtype ${t.dtype} for ${name}`);hosts.set(name,{dtype:d,shape:[...t.shape],data:t.data})}let rest=consumingWeights(hosts),plainKeys=new Set(rest.remaining());for(let key of q2.keys())if(plainKeys.has(key))throw Error(`Duplicate checkpoint parameter after conversion: ${key}`);return{get:(name)=>{let m=q2.get(name);if(!m)return rest.get(name);if(q2.delete(name),keepQuantized)return hostQuantized(m);return{dtype,shape:[m.rows,m.cols],data:dequantizeMatrix(m,dtype)}},remaining:()=>[...q2.keys(),...rest.remaining()]}}async function readWeights(source,options){let{dtype,quantized,...open2}=options??{},file2=await openSafetensors(source,open2);try{if(!quantMetadata(file2.metadata))return consumingWeights(await readAllTensors(file2));let views=await file2.readMany(),raw=new Map;for(let[name,data]of views){let info=file2.info(name);raw.set(name,{dtype:info.dtype,shape:info.shape,data})}return dequantizingWeights(raw,dtype??"f16",quantized==="device")}finally{await file2.close()}}var DTYPES;var init_weights=__esm(()=>{init_dist12();init_quant();DTYPES={F16:"f16",BF16:"bf16",F32:"f32",I32:"i32",BOOL:"bool",U8:"bool"}});var QTYPES;var init_types4=__esm(()=>{QTYPES={choice:0,score:1,noul:2}});class PyFloat{value;constructor(value){this.value=Number(value)}valueOf(){return this.value}toJSON(){return this.value}}function exactDecimal(x){F64[0]=x;let bits=U64[0],neg=bits>>63n===1n,e=Number(bits>>52n&0x7ffn),mant=bits&0xfffffffffffffn,exp=-1074;if(e!==0)mant|=1n<<52n,exp=e-1075;if(exp>=0)return{neg,n:mant<<BigInt(exp),scale:0};return{neg,n:mant*5n**BigInt(-exp),scale:-exp}}function divRoundEven(n2,drop2){if(drop2<=0)return n2*pow10(-drop2);let d=pow10(drop2),q2=n2/d,r2=n2%d*2n;if(r2>d||r2===d&&(q2&1n)===1n)q2+=1n;return q2}function placeDecimal(q2,scale){if(scale<=0)return(q2*pow10(-scale)).toString();let s2=q2.toString();if(s2.length<=scale)s2="0".repeat(scale-s2.length+1)+s2;return s2.slice(0,s2.length-scale)+"."+s2.slice(s2.length-scale)}function pyRound(x,ndigits=0){if(x=Number(x),!Number.isInteger(ndigits))throw TypeError("ndigits must be an integer");if(!Number.isFinite(x)||x===0)return x;if(ndigits>323)return x;if(ndigits<-308)return 0*x;let{neg,n:n2,scale}=exactDecimal(x);if(scale<=ndigits)return x;let q2=divRoundEven(n2,scale-ndigits),y=Number((neg?"-":"")+placeDecimal(q2,ndigits));if(!Number.isFinite(y))throw RangeError("rounded value too large to represent");return y}function shortest(x){let s2=Math.abs(x).toExponential(),e=s2.indexOf("e");return{digits:s2.slice(0,e).replace(".",""),decpt:Number(s2.slice(e+1))+1}}function pyFloatRepr(x){if(x=Number(x),Number.isNaN(x))return"nan";if(x===1/0)return"inf";if(x===-1/0)return"-inf";let sign=signOf(x);if(x===0)return sign+"0.0";let{digits,decpt}=shortest(x);if(-4<decpt&&decpt<=16){if(decpt<=0)return sign+"0."+"0".repeat(-decpt)+digits;if(digits.length<=decpt)return sign+digits+"0".repeat(decpt-digits.length)+".0";return sign+digits.slice(0,decpt)+"."+digits.slice(decpt)}let mant=digits.length===1?digits:digits[0]+"."+digits.slice(1);return sign+mant+expSuffix(decpt-1)}function pyFormatG(x,precision=6){if(x=Number(x),Number.isNaN(x))return"nan";if(!Number.isFinite(x))return x>0?"inf":"-inf";let p=Math.max(1,precision),sign=signOf(x);if(x===0)return sign+"0";let{n:n2,scale}=exactDecimal(x),len2=n2.toString().length,e=len2-1-scale,q2=divRoundEven(n2,len2-p);if(q2.toString().length>p)q2/=10n,e+=1;let digits=q2.toString().replace(/0+$/,"")||"0";if(e<-4||e>=p){let mant=digits.length===1?digits:digits[0]+"."+digits.slice(1);return sign+mant+expSuffix(e)}if(e>=0){if(digits.length<=e+1)return sign+digits+"0".repeat(e+1-digits.length);return sign+digits.slice(0,e+1)+"."+digits.slice(e+1)}return sign+"0."+"0".repeat(-e-1)+digits}function encodeString(s2,ensureAscii=!0){let out='"';for(let i2=0;i2<s2.length;i2++){let ch=s2[i2],c3=s2.charCodeAt(i2),short=SHORT[ch];if(short)out+=short;else if(c3<32||ensureAscii&&c3>126)out+=hex4(c3);else out+=ch}return out+'"'}function comparePyStr(a2,b){let ia=a2[Symbol.iterator](),ib=b[Symbol.iterator]();for(;;){let x=ia.next(),y=ib.next();if(x.done)return y.done?0:-1;if(y.done)return 1;let d=x.value.codePointAt(0)-y.value.codePointAt(0);if(d)return d}}function floatToken(x,allowNan){if(Number.isFinite(x))return pyFloatRepr(x);if(!allowNan)throw RangeError("Out of range float values are not JSON compliant: "+pyFloatRepr(x));return Number.isNaN(x)?"NaN":x>0?"Infinity":"-Infinity"}function numberToken(x,allowNan){if(Number.isInteger(x)&&!Object.is(x,-0))return BigInt(x).toString();return floatToken(x,allowNan)}function keyToken(k,allowNan){if(typeof k==="string")return k;if(k instanceof PyFloat)return floatToken(k.value,allowNan);if(typeof k==="number")return numberToken(k,allowNan);if(typeof k==="bigint")return k.toString();if(k===!0)return"true";if(k===!1)return"false";if(k===null||k===void 0)return"null";throw TypeError(`keys must be str, int, float, bool or None, not ${typeName2(k)}`)}function typeName2(v){if(v===null)return"NoneType";if(typeof v==="object")return v.constructor?.name??"object";return typeof v}function dumps(value,options={}){let{ensureAscii=!0,separators=[", ",": "],sortKeys=!1,allowNan=!0}=options,[itemSep,keySep]=separators,stack=new Set,enc=(v)=>{if(v===null||v===void 0)return"null";if(v===!0)return"true";if(v===!1)return"false";if(typeof v==="string")return encodeString(v,ensureAscii);if(typeof v==="number")return numberToken(v,allowNan);if(typeof v==="bigint")return v.toString();if(v instanceof PyFloat)return floatToken(v.value,allowNan);if(typeof v!=="object")throw TypeError(`Object of type ${typeName2(v)} is not JSON serializable`);if(stack.has(v))throw Error("Circular reference detected");stack.add(v);try{if(Array.isArray(v))return v.length===0?"[]":"["+v.map(enc).join(itemSep)+"]";let entries;if(v instanceof Map)entries=[...v.entries()];else{let proto=Object.getPrototypeOf(v);if(proto!==Object.prototype&&proto!==null)throw TypeError(`Object of type ${typeName2(v)} is not JSON serializable`);entries=Object.entries(v)}if(entries.length===0)return"{}";let pairs=entries.map(([k,x])=>[keyToken(k,allowNan),x]);if(sortKeys)pairs.sort((a2,b)=>comparePyStr(a2[0],b[0]));return"{"+pairs.map(([k,x])=>encodeString(k,ensureAscii)+keySep+enc(x)).join(itemSep)+"}"}finally{stack.delete(v)}};return enc(value)}var F64,U64,pow10=(n2)=>10n**BigInt(n2),expSuffix=(e)=>"e"+(e<0?"-":"+")+Math.abs(e).toString().padStart(2,"0"),signOf=(x)=>x<0||Object.is(x,-0)?"-":"",SHORT,hex4=(c3)=>"\\u"+c3.toString(16).padStart(4,"0");var init_dist13=__esm(()=>{F64=new Float64Array(1),U64=new BigUint64Array(F64.buffer);SHORT={'"':"\\\"","\\":"\\\\","\n":"\\n","\r":"\\r","\t":"\\t","\b":"\\b","\f":"\\f"}});function pairwise(a2,lo,n2,round){if(n2<8){let res=round(0);for(let i2=0;i2<n2;i2++)res=round(res+a2[lo+i2]);return res}if(n2<=128){let r=[,,,,,,,,];for(let j=0;j<8;j++)r[j]=round(a2[lo+j]);let i2=8;for(;i2<n2-n2%8;i2+=8)for(let j=0;j<8;j++)r[j]=round(r[j]+a2[lo+i2+j]);let res=round(round(round(r[0]+r[1])+round(r[2]+r[3]))+round(round(r[4]+r[5])+round(r[6]+r[7])));for(;i2<n2;i2++)res=round(res+a2[lo+i2]);return res}let n22=Math.floor(n2/2);return n22-=n22%8,round(pairwise(a2,lo,n22,round)+pairwise(a2,lo+n22,n2-n22,round))}function softmaxF32(logits,scale=1){let k=logits.length,s2=f32(scale),z2=new Float32Array(k);for(let i2=0;i2<k;i2++)z2[i2]=f32(logits[i2]/s2);let m=-1/0;for(let i2=0;i2<k;i2++)if(z2[i2]>m)m=z2[i2];let p=new Float32Array(k);for(let i2=0;i2<k;i2++)p[i2]=expF32(f32(z2[i2]-m));let total=sumF32(p);for(let i2=0;i2<k;i2++)p[i2]=f32(p[i2]/total);return p}var f32,id=(x)=>x,sumF32=(a2)=>f32(0+pairwise(a2,0,a2.length,f32)),sumF64=(a2)=>0+pairwise(a2,0,a2.length,id),expF32=(x)=>f32(Math.exp(x)),logF32=(x)=>f32(Math.log(x));var init_numpy=__esm(()=>{f32=Math.fround});function serializeState(state){if(typeof state==="string")return state;return dumps(state,{ensureAscii:!1})}function renderCriterion(value){if(typeof value==="string")return value;return dumps(value,{ensureAscii:!1,separators:[", ",": "]})}function choiceLabels(q2){return q2.labels?[...q2.labels]:Object.keys(q2.crit)}function renderOptions(q2){let{t}=q2;if(t==="choice"){let crit2=q2.crit;return choiceLabels(q2).map((k)=>{let v=crit2[k];return v===null||v===void 0||v===""?k:`${k}: ${renderCriterion(v)}`})}if(t==="score")return q2.crit.map((c3,i2)=>`level ${i2}: ${renderCriterion(c3)}`);let crit=isDict(q2.crit)?q2.crit:{},f=crit.false,tr=crit.true,blank=(v)=>v===null||v===void 0||v==="";return["false: "+(blank(f)?"no, the statement does not hold":renderCriterion(f)),"true: "+(blank(tr)?"yes, the statement holds":renderCriterion(tr))]}function buildPrefix(tok,q2,headMaxLen=192,optionOrder){let maskTok=tok.maskToken,opts=renderOptions(q2),order=optionOrder??opts.map((_,i2)=>i2),ins=pyReplace(String(q2.ins),maskTok," "),headIds=tok.encode(`${q2.t} question: ${ins}`),optIds=order.map((i2)=>[tok.maskTokenId,...tok.encode(" "+pyReplace(opts[i2],maskTok," ")).slice(0,48)]),total=()=>optIds.reduce((n2,o3)=>n2+o3.length,0),optBudget=headMaxLen-total();if(optBudget<16){let per=Math.max(4,Math.floor((headMaxLen-16)/Math.max(1,optIds.length)));optIds=optIds.map((o3)=>o3.slice(0,per)),optBudget=headMaxLen-total()}headIds=headIds.slice(0,Math.max(8,optBudget));let ids=[tok.clsTokenId,...headIds,tok.sepTokenId],markers=[];for(let o3 of optIds)markers.push(ids.length),ids.push(...o3);return ids.push(tok.sepTokenId),{ids,markers}}function buildSequence(tok,state,q2,maxLen=512,headMaxLen=192,optionOrder,truncateLeft=!1){let prefix=buildPrefix(tok,q2,headMaxLen,optionOrder),room=Math.max(0,maxLen-prefix.ids.length-1),st=tok.encode(pyReplace(serializeState(state),tok.maskToken," "));return st=truncateLeft?tail(st,room):st.slice(0,room),{ids:[...prefix.ids,...st,tok.sepTokenId].slice(0,maxLen),markers:prefix.markers.filter((m)=>m<maxLen)}}function confidenceFromProbs(p,k){if(k<2)return 1;let lo=f32(0.000000000001),terms=new Float32Array(k);for(let i2=0;i2<k;i2++){let pi=f32(p[i2]),c3=pi<lo?lo:pi>1?1:pi;terms[i2]=f32(pi*logF32(c3))}let ent=-sumF32(terms),v=f32(1-f32(ent/f32(Math.log(k))));return v<0?0:v>1?1:v}function tempBucket(qtype,k){let size=k<=2?"2":k<=5?"3-5":k<=10?"6-10":"11+",name=QTYPE_NAMES[qtype];if(!name)throw Error(`Unknown qtype ${qtype}`);return`${name}:${size}`}function pyFloatOf(t){if(typeof t==="number")return t;if(typeof t==="boolean")return t?1:0;if(typeof t==="string"){let s2=t.trim().toLowerCase().replaceAll("_","");if(/^[+-]?(inf|infinity)$/.test(s2))return s2.startsWith("-")?-1/0:1/0;if(/^[+-]?nan$/.test(s2))return NaN;if(/^[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/.test(s2))return Number(s2)}return NaN}function clampTemperature(t,lo=TEMP_MIN,hi=TEMP_MAX){let x=pyFloatOf(t);if(!Number.isFinite(x))return 1;return Math.min(hi,Math.max(lo,x))}var QTYPE_NAMES,isDict=(v)=>typeof v==="object"&&v!==null&&!Array.isArray(v),pyReplace=(s2,old,rep)=>s2.split(old).join(rep),tail=(a2,n2)=>n2===0?a2:a2.slice(-n2),TEMP_MIN=0.5,TEMP_MAX=5;var init_common6=__esm(()=>{init_dist13();init_numpy();QTYPE_NAMES={0:"choice",1:"score",2:"noul"}});function pyRepr(v){if(v===null||v===void 0)return"None";if(v===!0)return"True";if(v===!1)return"False";if(typeof v==="number")return Number.isInteger(v)?String(v):pyFloatRepr(v);if(typeof v==="string"){let q2=v.includes("'")&&!v.includes('"')?'"':"'",body=v.replaceAll("\\","\\\\").replaceAll(`
337
+ `,"\\n").replaceAll("\r","\\r").replaceAll("\t","\\t").replaceAll(q2,"\\"+q2);return q2+body+q2}return dumps(v)}function toInternal(qdef){if(!isDict2(qdef))throw Error("Each question must be a dictionary");let kind=qdef.type;if(typeof kind!=="string"||!Object.hasOwn(QTYPES,kind))throw Error(`Unknown question type ${pyRepr(kind)}; expected choice, score, or noul`);if(!("instructions"in qdef))throw Error("Question is missing instructions");let criteria=qdef.criteria??null,labels;if(kind==="choice"){if(Array.isArray(criteria)){if(!criteria.every((c3)=>typeof c3==="string"))throw Error("Choice labels must be strings");if(new Set(criteria).size!==criteria.length)throw Error("Choice labels must be unique");labels=[...criteria];let obj={};for(let c3 of labels)obj[c3]=null;criteria=obj}if(!isDict2(criteria)||Object.keys(criteria).length===0)throw Error("Choice criteria must be a nonempty dictionary or list")}else if(kind==="score"){if(!Array.isArray(criteria)||criteria.length===0)throw Error("Score criteria must be a nonempty list")}else if(criteria!==null&&!isDict2(criteria))throw Error("Noul criteria must be a dictionary with false/true descriptions");let instructions=qdef.instructions,ins=typeof instructions==="string"?instructions:dumps(instructions),q2={t:kind,ins,crit:criteria};if(labels)q2.labels=labels;return q2}function prepare(tok,state,questions,cfg={},options={}){if(options.cache)return options.cache.prepare(tok,state,questions,cfg);if(!isDict2(questions))throw Error("questions must be a dictionary keyed by question id");let maxLen=cfg.max_len??512,headLen=cfg.head_max_len??192,items=[],internal=[];for(let[qid,definition]of Object.entries(questions)){let q2=toInternal(definition),{ids,markers}=buildSequence(tok,state,q2,maxLen,headLen);if(markers.length!==renderOptions(q2).length)throw Error(`Question ${pyRepr(qid)} has too many options for the token budget`);items.push({ids,markers,qtype:QTYPES[q2.t]}),internal.push({...q2,id:qid})}return{items,internal}}function collate(items,padId,options={}){if(items.length===0)throw Error("Cannot collate an empty batch");let{padToMultiple,maxLength}=options,n2=items.length,length=Math.max(...items.map((it)=>it.ids.length));if(padToMultiple){if(length=Math.ceil(length/padToMultiple)*padToMultiple,maxLength!==void 0&&maxLength!==null)length=Math.min(length,maxLength)}let count3=Math.max(2,...items.map((it)=>it.markers.length)),inputIds=new Int32Array(n2*length).fill(padId),attentionMask=new Uint8Array(n2*length),markerPos=new Int32Array(n2*count3),markerMask=new Uint8Array(n2*count3),qtype=new Int32Array(n2);return items.forEach((it,i2)=>{if(it.ids.length>length)throw Error("Item is longer than the batch length");inputIds.set(it.ids,i2*length),attentionMask.fill(1,i2*length,i2*length+it.ids.length),markerPos.set(it.markers,i2*count3),markerMask.fill(1,i2*count3,i2*count3+it.markers.length),qtype[i2]=it.qtype}),{size:n2,length,markerCount:count3,inputIds,attentionMask,markerPos,markerMask,qtype}}function resolveTemperatures(cfg){let raw=cfg.temperature??[1,1,1],byRaw=cfg.temperature_by_options??{};if(!Array.isArray(raw)||raw.length!==3||[...raw,...Object.values(byRaw)].some((t)=>{let x=pyFloatOf(t);return!Number.isFinite(x)||x<=0}))throw Error("Calibration temperatures must be finite and positive");let temperature=raw.map((t)=>clampTemperature(t)),temperatureByOptions={};for(let[k,v]of Object.entries(byRaw))temperatureByOptions[k]=clampTemperature(v);let rejected=[...Object.entries(byRaw).filter(([,v])=>clampTemperature(v)!==pyFloatOf(v)).map(([k,v])=>`${k}=${pyFormatG(pyFloatOf(v),4)}`),...raw.flatMap((t,i2)=>clampTemperature(t)!==pyFloatOf(t)?[`temperature[${i2}]=${pyFormatG(pyFloatOf(t),4)}`]:[])],warning=rejected.length?`laya: this checkpoint ships temperatures outside [${pyFormatG(TEMP_MIN)}, ${pyFormatG(TEMP_MAX)}] which would distort confidence; clamping ${rejected.join(", ")}. Treat confidence from the affected buckets as uncalibrated.`:null;return{temperature,temperatureByOptions,temperatureRaw:raw,temperatureByOptionsRaw:byRaw,rejected,warning}}function temperatureFor(temps,qtype,k){return temps.temperatureByOptions[tempBucket(qtype,k)]??temps.temperature[qtype]}function formatResults(internal,items,outputs,temps){if(internal.length!==items.length)throw Error("internal and items must have the same length");let answers={},offset=0;for(let out of outputs){let{logits,act,nAct}=out,rows=act.length/nAct;if(!Number.isInteger(rows)||rows<1)throw Error("act length is not a multiple of nAct");let stride=logits.length/rows;if(!Number.isInteger(stride))throw Error("logits length is not a multiple of the row count");for(let v of logits)if(!Number.isFinite(v))throw Error("Non-finite model outputs; retry with dtype='float32'");for(let v of act)if(!Number.isFinite(v))throw Error("Non-finite model outputs; retry with dtype='float32'");for(let row=0;row<rows;row++){let index2=offset+row,item=items[index2],q2=internal[index2];if(!item||!q2)throw Error("More output rows than prepared items");let a2=act.subarray(row*nAct,(row+1)*nAct),am=-1/0;for(let v of a2)if(v>am)am=v;let ea=Float32Array.from(a2,(v)=>expF32(f32(v-am))),actProb=f32(ea[0]/sumF32(ea)),k=item.markers.length;if(k>stride)throw Error("Item has more markers than the output row");let scale=temperatureFor(temps,item.qtype,k),p=softmaxF32(logits.subarray(row*stride,row*stride+k),scale),answer={type:q2.t,confidence:pyRound(confidenceFromProbs(p,k),4),action:{act_probability:pyRound(actProb,4)}};if(q2.t==="choice"){let labels=choiceLabels(q2),best=0;for(let i2=1;i2<k;i2++)if(p[i2]>p[best])best=i2;answer.choice=labels[best];let probs={};labels.forEach((label,i2)=>{if(i2<k)probs[label]=pyRound(p[i2],4)}),answer.probabilities=probs}else if(q2.t==="score"){let crit=q2.crit;answer.score=pyRound(sumF64(Array.from(p,(v,i2)=>i2*v)),4);let legend={};crit.forEach((v,i2)=>legend[String(i2)]=v),answer.legend=legend;let probs={};p.forEach((v,i2)=>probs[String(i2)]=pyRound(v,4)),answer.probabilities=probs}else{let p1=p[1];answer.noul=pyRound(p1,4),answer.confidence=pyRound(Math.max(p1,1-p1),4)}let qid=q2.id??String(index2);answers[qid]=answer}offset+=rows}if(offset!==items.length)throw Error(`Outputs cover ${offset} rows but ${items.length} items were prepared`);return{model:"laya-rl-agent",answers,usage:{input_tokens:items.reduce((n2,it)=>n2+it.ids.length,0),output_tokens:0}}}function chunkItems(items,batchSize){if(!Number.isInteger(batchSize)||batchSize<1)throw Error("batch_size must be a positive integer");let out=[];for(let i2=0;i2<items.length;i2+=batchSize)out.push(items.slice(i2,i2+batchSize));return out}var isDict2=(v)=>typeof v==="object"&&v!==null&&!Array.isArray(v);var init_agent=__esm(()=>{init_dist13();init_common6();init_numpy();init_types4()});class PrefixCache{capacity;entries=new Map;constructor(capacity=128){this.capacity=capacity}prepare(tok,state,questions,cfg={}){if(!isDict3(questions))throw Error("questions must be a dictionary keyed by question id");let items=[],internal=[],entries=Object.entries(questions);if(entries.length===0)return{items,internal};let maxLen=cfg.max_len??512,headLen=cfg.head_max_len??192,stateIds=tok.encode(serializeState(state).split(tok.maskToken).join(" "));for(let[qid,definition]of entries){let q2=toInternal(definition),options=renderOptions(q2),key=JSON.stringify([tokenizerId(tok),tok.clsTokenId,tok.sepTokenId,tok.maskTokenId,tok.maskToken,headLen,q2.t,q2.ins,options]),prefix=this.entries.get(key);if(prefix===void 0){let built=buildPrefix(tok,q2,headLen);if(prefix={ids:Object.freeze(built.ids),markers:Object.freeze(built.markers)},this.entries.set(key,prefix),this.entries.size>this.capacity)this.entries.delete(this.entries.keys().next().value)}this.entries.delete(key),this.entries.set(key,prefix);let room=Math.max(0,maxLen-prefix.ids.length-1),ids=[...prefix.ids,...stateIds.slice(0,room),tok.sepTokenId].slice(0,maxLen),markers=prefix.markers.filter((m)=>m<maxLen);if(markers.length!==options.length)throw Error(`Question ${pyRepr(qid)} has too many options for the token budget`);items.push({ids,markers,qtype:QTYPES[q2.t]}),internal.push({...q2,id:qid})}return{items,internal}}}var nextTokenizerId=1,tokenizerIds,tokenizerId=(tok)=>{let id2=tokenizerIds.get(tok);if(id2===void 0)tokenizerIds.set(tok,id2=nextTokenizerId++);return id2},isDict3=(v)=>typeof v==="object"&&v!==null&&!Array.isArray(v);var init_prefix_cache=__esm(()=>{init_agent();init_common6();init_types4();tokenizerIds=new WeakMap});var init_dist14=__esm(()=>{init_common6();init_agent();init_prefix_cache();init_tokenizer();init_types4()});async function readCheckpointFromUrl(baseUrl,prefix,opts={}){let doFetch=opts.fetch??globalThis.fetch.bind(globalThis),base2=new URL(String(baseUrl).replace(/\/*$/,"/")+prefix,globalThis.location?.href),url2=(file2)=>new URL(file2,base2).href,text3=async(file2)=>{let res=await doFetch(url2(file2));if(!res.ok)throw Error(`Not a complete Laya checkpoint: ${url2(file2)} is missing (HTTP ${res.status})`);return res.text()},[agentConfig,encoderConfig,tokJson,tokConfig]=await Promise.all([text3("rl_agent_config.json").then(JSON.parse),text3("encoder/config.json").then(JSON.parse),text3("tokenizer/tokenizer.json"),text3("tokenizer/tokenizer_config.json")]);return{location:base2.href,agentConfig,encoderConfig,tokenizer:loadTokenizer(tokJson,tokConfig),weights:(w)=>readWeights(url2("model.safetensors"),{...opts.fetch?{fetch:opts.fetch}:{},...w?.dtype?{dtype:w.dtype}:{},...w?.quantized?{quantized:w.quantized}:{}})}}var init_url=__esm(()=>{init_dist14();init_weights()});function checkSubfolder(subfolder){let parts=subfolder.split("/");if(subfolder.startsWith("/")||parts.includes(".."))throw Error("subfolder must be a relative path inside the model repository");return parts.filter((p)=>p!==""&&p!==".").join("/")}var CHECKPOINT_FILES,REQUIRED_FILES;var init_common7=__esm(()=>{CHECKPOINT_FILES=["model.safetensors","rl_agent_config.json","encoder/config.json","tokenizer/tokenizer.json","tokenizer/tokenizer_config.json"],REQUIRED_FILES=["model.safetensors","rl_agent_config.json","encoder/config.json"]});import{createRequire as createRequire2}from"node:module";function openBun(path8){let ffi=require2("bun:ffi"),T={h:"ptr",buf:"ptr",i32:"i32",bool:"bool",f32:"f32",usize:"usize",optf:"u64",void:"void"},probe=!1;try{let p=ffi.dlopen(path8,{mlx_compile_cache_new:{args:[],returns:"ptr"}});probe=!0,p.close()}catch{probe=!1}let specs={...SYMBOLS,...probe?ABI_NEW:ABI_OLD,mlx_fast_scaled_dot_product_attention:probe?SDPA_NEW:SDPA_OLD},defs={};for(let[k,s2]of Object.entries(specs))defs[k]={args:s2.args.map((a2)=>T[a2]),returns:T[s2.ret]};let lib=ffi.dlopen(path8,defs),out={};for(let[k,s2]of Object.entries(specs)){let fn=lib.symbols[k];out[k]=s2.ret==="h"?(...a2)=>Number(fn(...a2)??0):s2.ret==="usize"?(...a2)=>Number(fn(...a2)):fn}let keep=[],errCb=new ffi.JSCallback((msg)=>{try{lastError=msg?new ffi.CString(msg).toString():"unknown mlx-c error"}catch{lastError="mlx-c error (message not decodable)"}},{args:["ptr","ptr"],returns:"void"});return keep.push(errCb),out.mlx_set_error_handler(errCb.ptr,0,0),Object.assign(out,{sdpaForceFused:probe,runtime:"bun",libPath:path8,_keep:keep,addressOf:(a2)=>Number(ffi.ptr(a2)),takeError:()=>{let e=lastError;return lastError=null,e},closureTrampoline(fn){let cb=new ffi.JSCallback((r,i2,p)=>fn(r??0,i2??0,Number(p)),{args:["ptr","ptr","u64"],returns:"i32"});return keep.push(cb),Number(cb.ptr)}})}function openDeno(path8){let D=denoNs(),T={h:"usize",buf:"buffer",i32:"i32",bool:"bool",f32:"f32",usize:"usize",optf:"u64",void:"void"},probeLib=D.dlopen(path8,{mlx_compile_cache_new:{parameters:[],result:"usize",optional:!0}}),probe=probeLib.symbols.mlx_compile_cache_new!=null;probeLib.close();let specs={...SYMBOLS,...probe?ABI_NEW:ABI_OLD,mlx_fast_scaled_dot_product_attention:probe?SDPA_NEW:SDPA_OLD},defs={};for(let[k,s2]of Object.entries(specs))defs[k]={parameters:s2.args.map((a2)=>T[a2]),result:T[s2.ret]};let lib=D.dlopen(path8,defs),out={};for(let[k,s2]of Object.entries(specs)){let fn=lib.symbols[k];out[k]=s2.ret==="h"||s2.ret==="usize"?(...a2)=>Number(fn(...a2)):fn}let addr=(p)=>p==null?0:Number(D.UnsafePointer.value(p)),keep=[lib],errCb=new D.UnsafeCallback({parameters:["pointer","pointer"],result:"void"},(msg)=>{try{lastError=msg?D.UnsafePointerView.getCString(msg):"unknown mlx-c error"}catch{lastError="mlx-c error (message not decodable)"}});return keep.push(errCb),out.mlx_set_error_handler(addr(errCb.pointer),0,0),Object.assign(out,{sdpaForceFused:probe,runtime:"deno",libPath:path8,_keep:keep,addressOf:(a2)=>addr(D.UnsafePointer.of(a2)),takeError:()=>{let e=lastError;return lastError=null,e},closureTrampoline(fn){let cb=new D.UnsafeCallback({parameters:["usize","usize","usize"],result:"i32"},(r,i2,p)=>fn(Number(r),Number(i2),Number(p)));return keep.push(cb),addr(cb.pointer)}})}function openNode(path8){let koffi=require2("koffi"),T={h:"uintptr_t",buf:"void *",i32:"int32_t",bool:"bool",f32:"float",usize:"size_t",optf:"uint64_t",void:"void"},lib=koffi.load(path8),probe=!1;try{lib.func("mlx_compile_cache_new","uintptr_t",[]),probe=!0}catch{probe=!1}let specs={...SYMBOLS,...probe?ABI_NEW:ABI_OLD,mlx_fast_scaled_dot_product_attention:probe?SDPA_NEW:SDPA_OLD},out={};for(let[k,s2]of Object.entries(specs)){let fn=lib.func(k,T[s2.ret],s2.args.map((a2)=>T[a2]));out[k]=s2.ret==="usize"||s2.ret==="h"?(...a2)=>Number(fn(...a2)):fn}let keep=[],ErrProto=koffi.proto("void laya_mlx_err_cb(const char *msg, void *data)"),errCb=koffi.register((msg)=>{lastError=msg??"unknown mlx-c error"},koffi.pointer(ErrProto));keep.push(errCb),out.mlx_set_error_handler(Number(koffi.address(errCb)),0,0);let ClosureProto=koffi.proto("int laya_mlx_closure_cb(uintptr_t res, uintptr_t input, uintptr_t payload)");return Object.assign(out,{sdpaForceFused:probe,runtime:"node",libPath:path8,_keep:keep,addressOf:(a2)=>Number(koffi.address(a2)),takeError:()=>{let e=lastError;return lastError=null,e},closureTrampoline(fn){let cb=koffi.register((r,i2,p)=>fn(Number(r),Number(i2),Number(p)),koffi.pointer(ClosureProto));return keep.push(cb),Number(koffi.address(cb))}})}function openNative(path8){let n2=cache2.get(path8);if(!n2){n2=isBun?openBun(path8):denoNs()?openDeno(path8):openNode(path8);let raw=n2;n2.cumsum=n2.sdpaForceFused?(res,a2,axis,reverse,inclusive,s2)=>raw.mlx_cumsum_axis(res,a2,axis,reverse,inclusive,0n,s2):(res,a2,axis,reverse,inclusive,s2)=>raw.mlx_cumsum(res,a2,axis,reverse,inclusive,s2),cache2.set(path8,n2),installExitHook(n2)}return n2}function installExitHook(n2){let g2=globalThis;if(denoNs()&&g2.addEventListener){g2.addEventListener("unload",()=>clearCompileCache(n2));return}globalThis.process?.on?.("exit",()=>clearCompileCache(n2))}function clearCompileCache(n2){try{if(n2.sdpaForceFused&&n2.mlx_detail_compile_cache&&n2.mlx_compile_cache_free){let slot=new Uint32Array(new ArrayBuffer(16)),addr=n2.addressOf(slot);if(n2.mlx_detail_compile_cache(addr)===0){let c3=slot[0]+slot[1]*4294967296;n2.mlx_detail_compile_clear_cache(c3),n2.mlx_compile_cache_free(c3)}}else n2.mlx_detail_compile_clear_cache()}catch{}}var require2=(id2)=>createRequire2(import.meta.url)(id2),SYMBOLS,ABI_OLD,ABI_NEW,SDPA_OLD,SDPA_NEW,isBun,denoNs=()=>globalThis.Deno,lastError=null,cache2;var init_ffi=__esm(()=>{SYMBOLS={mlx_set_error_handler:{args:["h","h","h"],ret:"void"},mlx_array_new_data:{args:["buf","h","i32","i32"],ret:"h"},mlx_array_free:{args:["h"],ret:"i32"},mlx_array_ndim:{args:["h"],ret:"usize"},mlx_array_shape:{args:["h"],ret:"h"},mlx_array_dtype:{args:["h"],ret:"i32"},mlx_array_eval:{args:["h"],ret:"i32"},mlx_array_data_uint8:{args:["h"],ret:"h"},mlx_array_nbytes:{args:["h"],ret:"usize"},mlx_eval:{args:["h"],ret:"i32"},mlx_vector_array_new_data:{args:["h","usize"],ret:"h"},mlx_vector_array_set_data:{args:["h","h","usize"],ret:"i32"},mlx_vector_array_free:{args:["h"],ret:"i32"},mlx_vector_array_size:{args:["h"],ret:"usize"},mlx_vector_array_get:{args:["h","h","usize"],ret:"i32"},mlx_default_gpu_stream_new:{args:[],ret:"h"},mlx_default_cpu_stream_new:{args:[],ret:"h"},mlx_stream_free:{args:["h"],ret:"i32"},mlx_synchronize:{args:["h"],ret:"i32"},mlx_get_active_memory:{args:["h"],ret:"i32"},mlx_get_peak_memory:{args:["h"],ret:"i32"},mlx_clear_cache:{args:[],ret:"i32"},mlx_add:{args:["h","h","h","h"],ret:"i32"},mlx_subtract:{args:["h","h","h","h"],ret:"i32"},mlx_multiply:{args:["h","h","h","h"],ret:"i32"},mlx_divide:{args:["h","h","h","h"],ret:"i32"},mlx_maximum:{args:["h","h","h","h"],ret:"i32"},mlx_where:{args:["h","h","h","h","h"],ret:"i32"},mlx_exp:{args:["h","h","h"],ret:"i32"},mlx_log:{args:["h","h","h"],ret:"i32"},mlx_erf:{args:["h","h","h"],ret:"i32"},mlx_astype:{args:["h","h","i32","h"],ret:"i32"},mlx_reshape:{args:["h","h","h","usize","h"],ret:"i32"},mlx_transpose_axes:{args:["h","h","h","usize","h"],ret:"i32"},mlx_slice:{args:["h","h","h","usize","h","usize","h","usize","h"],ret:"i32"},mlx_split:{args:["h","h","i32","i32","h"],ret:"i32"},mlx_concatenate_axis:{args:["h","h","i32","h"],ret:"i32"},mlx_sum_axis:{args:["h","h","i32","bool","h"],ret:"i32"},mlx_max_axis:{args:["h","h","i32","bool","h"],ret:"i32"},mlx_softmax_axis:{args:["h","h","i32","bool","h"],ret:"i32"},mlx_sort_axis:{args:["h","h","i32","h"],ret:"i32"},mlx_matmul:{args:["h","h","h","h"],ret:"i32"},mlx_addmm:{args:["h","h","h","h","f32","f32","h"],ret:"i32"},mlx_take_axis:{args:["h","h","h","i32","h"],ret:"i32"},mlx_take_along_axis:{args:["h","h","h","i32","h"],ret:"i32"},mlx_expand_dims:{args:["h","h","i32","h"],ret:"i32"},mlx_contiguous:{args:["h","h","bool","h"],ret:"i32"},mlx_equal:{args:["h","h","h","h"],ret:"i32"},mlx_not_equal:{args:["h","h","h","h"],ret:"i32"},mlx_less:{args:["h","h","h","h"],ret:"i32"},mlx_less_equal:{args:["h","h","h","h"],ret:"i32"},mlx_greater:{args:["h","h","h","h"],ret:"i32"},mlx_greater_equal:{args:["h","h","h","h"],ret:"i32"},mlx_logical_and:{args:["h","h","h","h"],ret:"i32"},mlx_logical_or:{args:["h","h","h","h"],ret:"i32"},mlx_logical_not:{args:["h","h","h"],ret:"i32"},mlx_sqrt:{args:["h","h","h"],ret:"i32"},mlx_rsqrt:{args:["h","h","h"],ret:"i32"},mlx_power:{args:["h","h","h","h"],ret:"i32"},mlx_negative:{args:["h","h","h"],ret:"i32"},mlx_abs:{args:["h","h","h"],ret:"i32"},mlx_tanh:{args:["h","h","h"],ret:"i32"},mlx_sigmoid:{args:["h","h","h"],ret:"i32"},mlx_argmax_axis:{args:["h","h","i32","bool","h"],ret:"i32"},mlx_argmin_axis:{args:["h","h","i32","bool","h"],ret:"i32"},mlx_mean_axis:{args:["h","h","i32","bool","h"],ret:"i32"},mlx_min_axis:{args:["h","h","i32","bool","h"],ret:"i32"},mlx_fast_layer_norm:{args:["h","h","h","h","f32","h"],ret:"i32"},mlx_fast_rope:{args:["h","h","i32","bool","optf","f32","i32","h","h"],ret:"i32"},mlx_quantized_matmul:{args:["h","h","h","h","h","bool","optf","optf","buf","h"],ret:"i32"},mlx_dequantize:{args:["h","h","h","h","optf","optf","buf","h","optf","h"],ret:"i32"},mlx_closure_new_func_payload:{args:["h","usize","h"],ret:"h"},mlx_closure_free:{args:["h"],ret:"i32"},mlx_closure_apply:{args:["h","h","h"],ret:"i32"},mlx_compile:{args:["h","h","bool"],ret:"i32"},memcpy:{args:["buf","h","usize"],ret:"h"}},ABI_OLD={mlx_detail_compile_clear_cache:{args:[],ret:"i32"},mlx_cumsum:{args:["h","h","i32","bool","bool","h"],ret:"i32"}},ABI_NEW={mlx_cumsum_axis:{args:["h","h","i32","bool","bool","optf","h"],ret:"i32"},mlx_detail_compile_cache:{args:["h"],ret:"i32"},mlx_detail_compile_clear_cache:{args:["h"],ret:"i32"},mlx_compile_cache_free:{args:["h"],ret:"i32"}},SDPA_OLD={args:["h","h","h","h","f32","buf","h","h","h"],ret:"i32"},SDPA_NEW={args:["h","h","h","h","f32","buf","h","h","bool","h"],ret:"i32"},isBun=typeof globalThis.Bun<"u";cache2=new Map});import{existsSync as existsSync2,statSync as statSync3}from"node:fs";import{createRequire as createRequire3}from"node:module";import{dirname as dirname3,join as join3}from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";function moduleDir(){return import.meta.url.startsWith("file:")?dirname3(fileURLToPath3(import.meta.url)):void 0}function packageFile(spec,...rel){let bases=[import.meta.url],d=deno();if(d)try{bases.push(join3(d.cwd(),"package.json"))}catch{}for(let base2 of bases)try{return join3(dirname3(createRequire3(base2).resolve(`${spec}/package.json`)),...rel)}catch{}return}function denoPlatformLib(){if(!deno())return;try{let url2=import.meta.resolve("@johnhenry/backend-mlx-darwin-arm64/package.json");return url2.startsWith("file:")?join3(dirname3(fileURLToPath3(url2)),"lib","libmlxc.dylib"):void 0}catch{return}}function envPath(value){if(!value)return;try{if(statSync3(value).isDirectory())return join3(value,"libmlxc.dylib")}catch{}return value}function libCandidates(explicit){let here=moduleDir(),env3=processEnv();return[[explicit,"option libPath"],[envPath(env3.LAYA_MLXC_PATH),"$LAYA_MLXC_PATH"],[envPath(env3.LAYA_MLXC_LIB),"$LAYA_MLXC_LIB"],[packageFile(PLATFORM_PACKAGE,"lib","libmlxc.dylib")??denoPlatformLib(),PLATFORM_PACKAGE],[here&&join3(here,"..","prebuilds","darwin-arm64","libmlxc.dylib"),"backend-mlx local build (npm run build:mlxc)"],[packageFile("@nielspeter/mlx-ts-darwin-arm64","libmlxc.dylib"),"@nielspeter/mlx-ts-darwin-arm64"],["/opt/homebrew/opt/mlx-c/lib/libmlxc.dylib","Homebrew"],["/opt/homebrew/lib/libmlxc.dylib","Homebrew"]].filter((e)=>!!e[0]).map(([path8,source])=>({path:path8,source,exists:existsSync2(path8)}))}function resolveLib(explicit){let cands=libCandidates(explicit);if(explicit){let c3=cands[0];if(!c3.exists)throw Error(`backend-mlx: libPath ${explicit} does not exist`);return c3}let pinned=cands.find((c3)=>c3.source.startsWith("$LAYA_MLXC"));if(pinned&&!pinned.exists)throw Error(`backend-mlx: ${pinned.source} is set but ${pinned.path} does not exist`);let found=cands.find((c3)=>c3.exists);if(!found)throw Error(`backend-mlx: libmlxc.dylib not found. Install ${PLATFORM_PACKAGE} (npm adds it automatically on darwin/arm64 unless optional dependencies are omitted; under Deno without node_modules, \`deno add npm:@johnhenry/backend-mlx-darwin-arm64\`), run \`npm run build:mlxc -w @johnhenry/backend-mlx\`, \`brew install mlx-c\`, or set LAYA_MLXC_PATH. Tried:
338
+ `+cands.map((c3)=>` ${c3.path} (${c3.source})`).join(`
339
+ `));return found}function mlxPlatformSupported(){let p=globalThis.process;return p?.platform==="darwin"&&p?.arch==="arm64"}var PLATFORM_PACKAGE="@johnhenry/backend-mlx-darwin-arm64",processEnv=()=>{try{return{...globalThis.process?.env}}catch{return{}}},deno=()=>globalThis.Deno;var init_lib=()=>{};var exports_dist4={};__export(exports_dist4,{resolveLib:()=>resolveLib,mlxPlatformSupported:()=>mlxPlatformSupported,libCandidates:()=>libCandidates,createMlxBackend:()=>createMlxBackend});class MlxArray{h;_shape;_dtype;_b;constructor(b,h2,shape,dtype){this._b=b,this.h=h2,this._shape=shape,this._dtype=dtype}get shape(){return this._shape??=this._b.queryShape(this)}get dtype(){return this._dtype??=this._b.queryDtype(this)}}class MlxBackendImpl{name="mlx";device;info;n;stream;scratch=new ArrayBuffer(SCRATCH_BYTES);u32=new Uint32Array(this.scratch);i32=new Int32Array(this.scratch);base;scopes=[];registry;live=0;destroyed=!1;sF32=new Float32Array(1);sF16=new Float16Array(1);sU16=new Uint16Array(1);sI32=new Int32Array(1);sU8=new Uint8Array(1);sI8=new Int8Array(1);sI16=new Int16Array(1);sU32=new Uint32Array(1);sF64=new Float64Array(1);sU64=new BigUint64Array(1);sI64=new BigInt64Array(1);sdpaMaskArray=cstr("array");affine=cstr("affine");sdpaMaskNone=cstr("");closureTramp=0;closures=new Map;nextClosureId=1;compiledGelu;tracing=0;constructor(opts={}){if(!mlxPlatformSupported())throw Error("backend-mlx: MLX requires macOS on Apple Silicon (darwin/arm64)");this.device=opts.device??"gpu";let lib=resolveLib(opts.libPath);if(this.n=openNative(lib.path),this.info={libPath:lib.path,runtime:this.n.runtime,mlxcAbi:this.n.sdpaForceFused?"mlx-c>=0.6 (MLX 0.32.2)":"mlx-c<0.6 (MLX 0.32.1)"},this.base=this.n.addressOf(this.u32),this.stream=this.device==="gpu"?this.n.mlx_default_gpu_stream_new():this.n.mlx_default_cpu_stream_new(),!this.stream)throw Error(`backend-mlx: could not create ${this.device} stream: ${this.n.takeError()}`);if(opts.compiledGelu===!1)this.compiledGelu=null;let n2=this.n;this.registry=opts.finalizers===!1?null:new FinalizationRegistry((h2)=>{if(h2)n2.mlx_array_free(h2)})}wrap(h2,shape,dtype){let t=new MlxArray(this,h2,shape,dtype);this.live++,this.registry?.register(t,h2,t);let s2=this.scopes[this.scopes.length-1];if(s2)s2.add(t);return t}take(rc,op,slot=0){let u2=this.u32,i2=slot>>2,h2=u2[i2]+u2[i2+1]*TWO32;if(u2[i2]=0,u2[i2+1]=0,rc!==0){if(h2)this.n.mlx_array_free(h2);throw Error(`backend-mlx ${op}: ${this.n.takeError()??"mlx-c error"}`)}return h2}out(rc,op,shape,dtype){return this.wrap(this.take(rc,op),shape,dtype)}h(t){let a2=t;if(!a2.h)throw Error("backend-mlx: tensor used after dispose");return a2.h}ints(region,xs){if(xs.length>64)throw RangeError("backend-mlx: more than 64 dims");let off=region>>2;for(let i2=0;i2<xs.length;i2++)this.i32[off+i2]=xs[i2];return this.base+region}vec(ts){let addr;if(ts.length<=MAX_HANDLES){let off=HANDLES>>2;for(let i2=0;i2<ts.length;i2++){let h2=this.h(ts[i2]);this.u32[off+2*i2]=h2%TWO32,this.u32[off+2*i2+1]=Math.floor(h2/TWO32)}addr=this.base+HANDLES;let v2=this.n.mlx_vector_array_new_data(addr,ts.length);if(!v2)throw Error(`backend-mlx: vector_array: ${this.n.takeError()}`);return v2}let tmp=handleBuffer(ts.map((t)=>this.h(t))),v=this.n.mlx_vector_array_new_data(this.n.addressOf(tmp),ts.length);if(!v)throw Error(`backend-mlx: vector_array: ${this.n.takeError()}`);return v}unvec(v,op,free){let count3=this.n.mlx_vector_array_size(v),out=[];try{for(let i2=0;i2<count3;i2++)out.push(this.out(this.n.mlx_vector_array_get(this.base,v,i2),op))}finally{if(free)this.n.mlx_vector_array_free(v)}return out}queryShape(t){let nd=this.n.mlx_array_ndim(this.h(t));if(nd===0)return[];let p=this.n.mlx_array_shape(t.h),out=new Int32Array(nd);return this.n.memcpy(out,p,nd*4),Array.from(out)}queryDtype(t){let d=this.n.mlx_array_dtype(this.h(t)),dt=FROM_MLX[d];if(!dt)throw Error(`backend-mlx: unsupported mlx dtype ${d}`);return dt}scalar(v,dtype){let buf;switch(dtype){case"f32":this.sF32[0]=v,buf=this.sF32;break;case"f16":this.sF16[0]=v,buf=this.sF16;break;case"bf16":this.sU16[0]=f32ToBf16Bits(v),buf=this.sU16;break;case"i32":this.sI32[0]=v,buf=this.sI32;break;case"bool":this.sU8[0]=v?1:0,buf=this.sU8;break;case"u8":this.sU8[0]=v,buf=this.sU8;break;case"i8":this.sI8[0]=v,buf=this.sI8;break;case"u16":this.sU16[0]=v,buf=this.sU16;break;case"i16":this.sI16[0]=v,buf=this.sI16;break;case"u32":this.sU32[0]=v,buf=this.sU32;break;case"f64":this.sF64[0]=v,buf=this.sF64;break;case"u64":this.sU64[0]=BigInt(v),buf=this.sU64;break;case"i64":this.sI64[0]=BigInt(v),buf=this.sI64;break}let h2=this.n.mlx_array_new_data(buf,this.base+INTS_A,0,MLX_DTYPE[dtype]);if(!h2)throw Error(`backend-mlx scalar: ${this.n.takeError()}`);return this.wrap(h2,[],dtype)}withScalar(v,dtype,f){let s2=this.scalar(v,dtype);try{return f(s2.h)}finally{this.dispose(s2)}}supports(dtype){if(dtype==="f64")return this.device==="cpu";return dtype in MLX_DTYPE}async fromHost(t){return this.upload(t)}upload(t){let shape=[...t.shape],size=1;for(let d of shape)size*=d;if(t.data.length!==size)throw RangeError(`backend-mlx fromHost: ${t.data.length} values for shape [${shape}]`);let dt=MLX_DTYPE[t.dtype];if(dt===void 0)throw TypeError(`backend-mlx: unsupported dtype ${t.dtype}`);let data=t.data.length?t.data:new HOST_CTOR[t.dtype](1),h2=this.n.mlx_array_new_data(data,this.ints(INTS_A,shape),shape.length,dt);if(!h2)throw Error(`backend-mlx fromHost: ${this.n.takeError()}`);return this.wrap(h2,shape,t.dtype)}async read(t){return this.readSync(t)}readSync(t){let a2=t,src=this.h(a2),dtype=a2.dtype,shape=[...a2.shape],c3=this.take(this.n.mlx_contiguous(this.base,src,!1,this.stream),"read");try{if(this.n.mlx_array_eval(c3)!==0)throw Error(`backend-mlx eval: ${this.n.takeError()}`);let size=1;for(let d of shape)size*=d;let out=new HOST_CTOR[dtype](size),bytes=size*BYTES2[dtype];if(bytes){let nb=this.n.mlx_array_nbytes(c3);if(nb!==bytes)throw Error(`backend-mlx read: ${nb} bytes, expected ${bytes}`);this.n.memcpy(out,this.n.mlx_array_data_uint8(c3),bytes)}return{dtype,shape,data:out}}finally{this.n.mlx_array_free(c3)}}dispose(t){let a2=t;if(!a2.h)return;this.registry?.unregister(a2),this.n.mlx_array_free(a2.h),a2.h=0,this.live--}scope(fn){let cur=new Set;this.scopes.push(cur);let result;try{result=fn()}catch(e){this.scopes.pop();for(let t of cur)this.dispose(t);throw e}this.scopes.pop();let keep=new Set;collect(result,keep);for(let t of cur)if(!keep.has(t))this.dispose(t);let parent=this.scopes[this.scopes.length-1];if(parent){for(let t of keep)if(cur.has(t))parent.add(t)}return result}flush(...ts){if(ts.length===0){if(this.n.mlx_synchronize(this.stream)!==0)throw Error(`backend-mlx synchronize: ${this.n.takeError()}`);return}let v=this.vec(ts),rc=this.n.mlx_eval(v);if(this.n.mlx_vector_array_free(v),rc!==0)throw Error(`backend-mlx eval: ${this.n.takeError()}`)}destroy(){if(this.destroyed)return;this.destroyed=!0,this.n.mlx_stream_free(this.stream),this.stream=0}memory(){let u2=new Uint32Array(new ArrayBuffer(16)),p=this.n.addressOf(u2);return this.n.mlx_get_active_memory(p),this.n.mlx_get_peak_memory(p+8),{active:u2[0]+u2[1]*TWO32,peak:u2[2]+u2[3]*TWO32}}liveTensors(){return this.live}reshape(x,shape){return this.out(this.n.mlx_reshape(this.base,this.h(x),this.ints(INTS_A,shape),shape.length,this.stream),"reshape")}transpose(x,perm){return this.out(this.n.mlx_transpose_axes(this.base,this.h(x),this.ints(INTS_A,perm),perm.length,this.stream),"transpose")}slice(x,begin,end){let shape=x.shape,nd=shape.length,b=[],e=[],st=[];for(let i2=0;i2<nd;i2++)b.push(i2<begin.length?begin[i2]:0),e.push(i2<end.length?end[i2]:shape[i2]),st.push(1);return this.out(this.n.mlx_slice(this.base,this.h(x),this.ints(INTS_A,b),nd,this.ints(INTS_B,e),nd,this.ints(INTS_C,st),nd,this.stream),"slice")}split(x,parts,axis){let v=this.take(this.n.mlx_split(this.base,this.h(x),parts,axis,this.stream),"split");return this.unvec(v,"split",!0)}concat(xs,axis){let v=this.vec(xs);try{return this.out(this.n.mlx_concatenate_axis(this.base,v,axis,this.stream),"concat")}finally{this.n.mlx_vector_array_free(v)}}cast(x,dtype){let dt=MLX_DTYPE[dtype];if(dt===void 0)throw TypeError(`backend-mlx: unsupported dtype ${dtype}`);return this.out(this.n.mlx_astype(this.base,this.h(x),dt,this.stream),"cast",void 0,dtype)}add(a2,b){return this.out(this.n.mlx_add(this.base,this.h(a2),this.h(b),this.stream),"add")}sub(a2,b){return this.out(this.n.mlx_subtract(this.base,this.h(a2),this.h(b),this.stream),"sub")}mul(a2,b){return this.out(this.n.mlx_multiply(this.base,this.h(a2),this.h(b),this.stream),"mul")}div(a2,b){return this.out(this.n.mlx_divide(this.base,this.h(a2),this.h(b),this.stream),"div")}maximum(a2,b){return this.out(this.n.mlx_maximum(this.base,this.h(a2),this.h(b),this.stream),"maximum")}where(cond,a2,b){return this.out(this.n.mlx_where(this.base,this.h(cond),this.h(a2),this.h(b),this.stream),"where")}scale(x,s2){let hx=this.h(x);return this.withScalar(s2,floatOr(x.dtype),(hs)=>this.out(this.n.mlx_multiply(this.base,hx,hs,this.stream),"scale"))}exp(x){return this.out(this.n.mlx_exp(this.base,this.h(x),this.stream),"exp")}log(x){return this.out(this.n.mlx_log(this.base,this.h(x),this.stream),"log")}relu(x){let hx=this.h(x);return this.withScalar(0,x.dtype,(hs)=>this.out(this.n.mlx_maximum(this.base,hx,hs,this.stream),"relu"))}gelu(x){if(this.compiledGelu===void 0)this.compiledGelu=this.makeCompiledGelu();if(this.compiledGelu&&this.tracing===0)return this.compiledGelu(x);return this.geluEager(x)}geluEager(x){return this.scope(()=>{let dt=floatOr(x.dtype),hx=this.h(x),sq=this.scalar(Math.SQRT2,dt),one=this.scalar(1,dt),two=this.scalar(2,dt),t=this.out(this.n.mlx_divide(this.base,hx,sq.h,this.stream),"gelu"),e=this.out(this.n.mlx_erf(this.base,t.h,this.stream),"gelu"),p=this.out(this.n.mlx_add(this.base,one.h,e.h,this.stream),"gelu"),m=this.out(this.n.mlx_multiply(this.base,hx,p.h,this.stream),"gelu");return this.out(this.n.mlx_divide(this.base,m.h,two.h,this.stream),"gelu")})}makeCompiledGelu(){if(this.device!=="gpu")return null;return this.compileImpl((x)=>this.geluEager(x),!0)}sum(x,axis,keepDims=!1){return this.out(this.n.mlx_sum_axis(this.base,this.h(x),axis,keepDims,this.stream),"sum")}max(x,axis,keepDims=!1){return this.out(this.n.mlx_max_axis(this.base,this.h(x),axis,keepDims,this.stream),"max")}softmax(x,axis){return this.out(this.n.mlx_softmax_axis(this.base,this.h(x),axis,!0,this.stream),"softmax")}sort(x,axis){return this.out(this.n.mlx_sort_axis(this.base,this.h(x),axis,this.stream),"sort")}matmul(a2,b){return this.out(this.n.mlx_matmul(this.base,this.h(a2),this.h(b),this.stream),"matmul")}linear(x,w,b){let hx=this.h(x),wt=this.take(this.n.mlx_transpose_axes(this.base,this.h(w),this.ints(INTS_A,[1,0]),2,this.stream),"linear");try{let rc=b?this.n.mlx_addmm(this.base,this.h(b),hx,wt,1,1,this.stream):this.n.mlx_matmul(this.base,hx,wt,this.stream);return this.out(rc,"linear")}finally{this.n.mlx_array_free(wt)}}layerNorm(x,weight,bias,eps){return this.out(this.n.mlx_fast_layer_norm(this.base,this.h(x),weight?this.h(weight):0,bias?this.h(bias):0,eps,this.stream),"layerNorm")}embedding(table3,ids){return this.out(this.n.mlx_take_axis(this.base,this.h(table3),this.h(ids),0,this.stream),"embedding")}gatherRows(x,idx){let e=this.take(this.n.mlx_expand_dims(this.base,this.h(idx),2,this.stream),"gatherRows");try{return this.out(this.n.mlx_take_along_axis(this.base,this.h(x),e,1,this.stream),"gatherRows")}finally{this.n.mlx_array_free(e)}}rope(x,base2){let dims=x.shape[x.shape.length-1];return this.out(this.n.mlx_fast_rope(this.base,this.h(x),dims,!1,optFloat(base2),1,0,0,this.stream),"rope")}sdpa(q2,k,v,mask,scale){let mode=mask?this.sdpaMaskArray:this.sdpaMaskNone,hm=mask?this.h(mask):0,rc=this.n.sdpaForceFused?this.n.mlx_fast_scaled_dot_product_attention(this.base,this.h(q2),this.h(k),this.h(v),scale,mode,hm,0,!1,this.stream):this.n.mlx_fast_scaled_dot_product_attention(this.base,this.h(q2),this.h(k),this.h(v),scale,mode,hm,0,this.stream);return this.out(rc,"sdpa")}geglu(x){return this.scope(()=>{let[value,gate]=this.split(x,2,x.shape.length-1);return this.mul(this.gelu(value),gate)})}meanPool(x,mask){return this.scope(()=>{let m=this.cast(this.reshape(mask,[mask.shape[0],mask.shape[1],1]),"f32"),total=this.sum(this.mul(this.cast(x,"f32"),m),1),count3=this.withScalar(1,"f32",(one)=>this.out(this.n.mlx_maximum(this.base,this.h(this.sum(m,1)),one,this.stream),"meanPool"));return this.div(total,count3)})}bin(fn,a2,b,op,dtype){return this.out(fn(this.base,this.h(a2),this.h(b),this.stream),op,void 0,dtype)}un(fn,x,op,dtype){return this.out(fn(this.base,this.h(x),this.stream),op,void 0,dtype)}unF(fn,x,op){if(isFloat2(x.dtype))return this.un(fn,x,op,x.dtype);let f=this.take(this.n.mlx_astype(this.base,this.h(x),MLX_DTYPE.f32,this.stream),op);try{return this.out(fn(this.base,f,this.stream),op,void 0,"f32")}finally{this.n.mlx_array_free(f)}}axisOp(fn,x,axis,keepDims,op){return this.take(fn(this.base,this.h(x),axis,keepDims,this.stream),op)}equal(a2,b){return this.bin(this.n.mlx_equal,a2,b,"equal","bool")}notEqual(a2,b){return this.bin(this.n.mlx_not_equal,a2,b,"notEqual","bool")}less(a2,b){return this.bin(this.n.mlx_less,a2,b,"less","bool")}lessEqual(a2,b){return this.bin(this.n.mlx_less_equal,a2,b,"lessEqual","bool")}greater(a2,b){return this.bin(this.n.mlx_greater,a2,b,"greater","bool")}greaterEqual(a2,b){return this.bin(this.n.mlx_greater_equal,a2,b,"greaterEqual","bool")}logicalAnd(a2,b){return this.bin(this.n.mlx_logical_and,a2,b,"logicalAnd","bool")}logicalOr(a2,b){return this.bin(this.n.mlx_logical_or,a2,b,"logicalOr","bool")}logicalNot(x){return this.un(this.n.mlx_logical_not,x,"logicalNot","bool")}sqrt(x){return this.unF(this.n.mlx_sqrt,x,"sqrt")}rsqrt(x){return this.unF(this.n.mlx_rsqrt,x,"rsqrt")}tanh(x){return this.unF(this.n.mlx_tanh,x,"tanh")}sigmoid(x){return this.unF(this.n.mlx_sigmoid,x,"sigmoid")}erf(x){return this.unF(this.n.mlx_erf,x,"erf")}neg(x){return this.un(this.n.mlx_negative,x,"neg")}abs(x){return this.un(this.n.mlx_abs,x,"abs")}pow(a2,b){if(isFloat2(a2.dtype)||isFloat2(b.dtype))return this.bin(this.n.mlx_power,a2,b,"pow");return this.scope(()=>this.bin(this.n.mlx_power,this.cast(a2,"f32"),b,"pow","f32"))}argmax(x,axis,keepDims=!1){return this.argIdx(this.n.mlx_argmax_axis,x,axis,keepDims,"argmax")}argmin(x,axis,keepDims=!1){return this.argIdx(this.n.mlx_argmin_axis,x,axis,keepDims,"argmin")}argIdx(fn,x,axis,keepDims,op){let u2=this.axisOp(fn,x,axis,keepDims,op);try{return this.out(this.n.mlx_astype(this.base,u2,MLX_DTYPE.i32,this.stream),op,void 0,"i32")}finally{this.n.mlx_array_free(u2)}}mean(x,axis,keepDims=!1){return this.wrap(this.axisOp(this.n.mlx_mean_axis,x,axis,keepDims,"mean"))}min(x,axis,keepDims=!1){return this.wrap(this.axisOp(this.n.mlx_min_axis,x,axis,keepDims,"min"))}cumsum(x,axis){if(x.dtype==="bool")return this.scope(()=>this.cumsum(this.cast(x,"i32"),axis));return this.out(this.n.cumsum(this.base,this.h(x),axis,!1,!0,this.stream),"cumsum")}async fromHostQuantized(h2,dtype){let[N,K]=h2.shape;if(!MLX_GROUP_SIZES.has(h2.groupSize)||K%h2.groupSize||K*h2.bits%32)return null;if(!isFloat2(dtype))throw TypeError(`backend-mlx fromHostQuantized: dtype must be float, got ${dtype}`);let G=K/h2.groupSize,data=h2.data,biases=h2.biases;if(h2.mode==="symmetric"){let flip=h2.bits===8?128:136,d=new Uint8Array(data.length);for(let i2=0;i2<d.length;i2++)d[i2]=data[i2]^flip;data=d;let s2=toF32(h2.scales),off=-(1<<h2.bits-1),b=new Float32Array(s2.length);for(let i2=0;i2<s2.length;i2++)b[i2]=off*s2[i2];biases={dtype:"f32",shape:[N,G],data:b}}let shape=[N,K*h2.bits/32],wh=this.n.mlx_array_new_data(data,this.ints(INTS_A,shape),2,MLX_UINT32);if(!wh)throw Error(`backend-mlx fromHostQuantized: ${this.n.takeError()}`);let w=this.wrap(wh,shape,"i32"),up=(t)=>this.scope(()=>{let u2=this.upload(t);return u2.dtype===dtype?u2:this.cast(u2,dtype)}),{bits,groupSize,mode}=h2;return{shape:[N,K],bits,groupSize,mode,dtype,native:!0,w,scales:up(h2.scales),biases:up(biases)}}quantizedLinear(x,w,scales,biases,opts,bias){if(!biases)throw Error("backend-mlx quantizedLinear: weights must come from this backend's fromHostQuantized");return this.scope(()=>{let y=this.out(this.n.mlx_quantized_matmul(this.base,this.h(x),this.h(w),this.h(scales),this.h(biases),!0,optInt(opts.groupSize),optInt(opts.bits),this.affine,this.stream),"quantizedLinear");if(bias)y=this.add(y,bias);return y.dtype===x.dtype||!isFloat2(x.dtype)?y:this.cast(y,x.dtype)})}quantizedEmbedding(w,scales,biases,opts,ids){if(!biases)throw Error("backend-mlx quantizedEmbedding: weights must come from this backend's fromHostQuantized");return this.scope(()=>{let n2=ids.shape.reduce((a2,d2)=>a2*d2,1),flat=this.reshape(ids,[n2]),rows=(t)=>this.embedding(t,flat),dt=scales.dtype,d=this.out(this.n.mlx_dequantize(this.base,this.h(rows(w)),this.h(rows(scales)),this.h(rows(biases)),optInt(opts.groupSize),optInt(opts.bits),this.affine,0,optDtype(MLX_DTYPE[dt]),this.stream),"quantizedEmbedding",void 0,dt);return this.reshape(d,[...ids.shape,d.shape[1]])})}compile(fn){if(this.device!=="gpu")return fn;return this.compileImpl(fn,!1)}compileImpl(fn,shapeless){let n2=this.n;if(!this.closureTramp)this.closureTramp=n2.closureTrampoline((res,input,payload)=>{let f=this.closures.get(payload);return f?f(res,input):1});let id2=this.nextClosureId++,rebuild=null;this.closures.set(id2,(res,input)=>{this.tracing++;let ins=[];try{let count3=n2.mlx_vector_array_size(input);for(let i2=0;i2<count3;i2++)ins.push(this.out(n2.mlx_vector_array_get(this.base,input,i2),"trace input"));return this.scope(()=>{let flat=flatten(fn(...ins));rebuild=flat.rebuild;let buf=handleBuffer(flat.flat.map((t)=>this.h(t)));if(n2.mlx_vector_array_set_data(res,n2.addressOf(buf),flat.flat.length)!==0)throw Error(n2.takeError()??"vector set failed");return null}),0}catch(e){return pendingTraceError=e,1}finally{for(let t of ins)this.dispose(t);this.tracing--}});let cls=n2.mlx_closure_new_func_payload(this.closureTramp,id2,0);if(!cls)throw Error(`backend-mlx compile: ${n2.takeError()}`);let compiled;try{compiled=this.take(n2.mlx_compile(this.base,cls,shapeless),"compile")}finally{n2.mlx_closure_free(cls)}let closures=this.closures,wrapper=(...args)=>{let vin=this.vec(args),rc;try{rc=n2.mlx_closure_apply(this.base+APPLY_SLOT,compiled,vin)}finally{n2.mlx_vector_array_free(vin)}let u2=this.u32,i2=APPLY_SLOT>>2,vout=u2[i2]+u2[i2+1]*TWO32;if(u2[i2]=0,u2[i2+1]=0,rc!==0){if(vout)n2.mlx_vector_array_free(vout);let e=pendingTraceError;pendingTraceError=null;let msg=n2.takeError();throw e instanceof Error?e:Error(`backend-mlx compiled call: ${msg??String(e)}`)}return rebuild(this.unvec(vout,"compiled call",!0))};return compiledRegistry.register(wrapper,{n:n2,compiled,closures,id:id2}),wrapper}}function handleBuffer(hs){let buf=new Uint32Array(new ArrayBuffer(Math.max(8,hs.length*8)));for(let i2=0;i2<hs.length;i2++)buf[2*i2]=hs[i2]%TWO32,buf[2*i2+1]=Math.floor(hs[i2]/TWO32);return buf}function isFloat2(d){return d==="f32"||d==="f16"||d==="bf16"||d==="f64"}function floatOr(d){return isFloat2(d)?d:"f32"}function optFloat(v){return f32b[0]=v,BigInt(u32b[0])|1n<<32n}function optInt(v){return BigInt(v>>>0)|1n<<32n}function optDtype(d){return BigInt(d)|1n<<32n}function cstr(s2){let b=new TextEncoder().encode(s2),out=new Uint8Array(new ArrayBuffer(b.length+8));return out.set(b),out}function collect(v,into){if(v instanceof MlxArray)into.add(v);else if(Array.isArray(v)){for(let x of v)if(x instanceof MlxArray)into.add(x)}else if(v&&typeof v==="object"){for(let x of Object.values(v))if(x instanceof MlxArray)into.add(x)}}function flatten(r){if(r instanceof MlxArray)return{flat:[r],rebuild:(o3)=>o3[0]};if(Array.isArray(r)&&r.every((x)=>x instanceof MlxArray))return{flat:r,rebuild:(o3)=>o3};if(r&&typeof r==="object"&&!Array.isArray(r)){let keys=Object.keys(r),vals=Object.values(r);if(vals.every((x)=>x instanceof MlxArray))return{flat:vals,rebuild:(o3)=>Object.fromEntries(keys.map((k,i2)=>[k,o3[i2]]))}}throw TypeError("backend-mlx compile: fn must return a tensor, an array of tensors, or an object of tensors")}function createMlxBackend(opts={}){return new MlxBackendImpl(opts)}var MLX_UINT32=3,MLX_GROUP_SIZES,MLX_DTYPE,FROM_MLX,BYTES2,TWO32=4294967296,HOST_CTOR,SCRATCH_BYTES=4096,APPLY_SLOT=8,INTS_A=64,INTS_B=320,INTS_C=576,HANDLES=1024,MAX_HANDLES,pendingTraceError=null,compiledRegistry,f32b,u32b;var init_dist15=__esm(()=>{init_dist10();init_ffi();init_lib();init_lib();MLX_GROUP_SIZES=new Set([32,64,128]),MLX_DTYPE={bool:0,i32:7,f16:9,f32:10,bf16:12,u8:1,u16:2,u32:3,u64:4,i8:5,i16:6,i64:8,f64:11},FROM_MLX={0:"bool",7:"i32",9:"f16",10:"f32",12:"bf16",1:"u8",2:"u16",3:"u32",4:"u64",5:"i8",6:"i16",8:"i64",11:"f64"},BYTES2={bool:1,i32:4,f16:2,f32:4,bf16:2,u8:1,i8:1,u16:2,i16:2,u32:4,u64:8,i64:8,f64:8},HOST_CTOR={f32:Float32Array,f16:Float16Array,bf16:Uint16Array,i32:Int32Array,bool:Uint8Array,u8:Uint8Array,i8:Int8Array,u16:Uint16Array,i16:Int16Array,u32:Uint32Array,f64:Float64Array,u64:BigUint64Array,i64:BigInt64Array};MAX_HANDLES=(SCRATCH_BYTES-HANDLES)/8;compiledRegistry=new FinalizationRegistry((c3)=>{c3.n.mlx_closure_free(c3.compiled),c3.closures.delete(c3.id)});f32b=new Float32Array(1),u32b=new Uint32Array(f32b.buffer)});var exports_backend_webgpu={};__export(exports_backend_webgpu,{createWebGpuBackend:()=>createWebGpuBackend});async function createWebGpuBackend(){throw Error("the webgpu laya backend is not bundled")}function sizeOf(shape){let n2=1;for(let d of shape)n2*=d;return n2}function bf16BitsToF322(bits){return u32Scratch2[0]=bits<<16,f32Scratch2[0]}function toF322(t){if(t.dtype==="f32")return t.data;if(t.dtype==="bf16"){let u2=t.data,out=new Float32Array(u2.length);for(let i2=0;i2<u2.length;i2++)out[i2]=bf16BitsToF322(u2[i2]);return out}return Float32Array.from(t.data)}var f32Scratch2,u32Scratch2;var init_host2=__esm(()=>{f32Scratch2=new Float32Array(1),u32Scratch2=new Uint32Array(f32Scratch2.buffer)});var init_compose2=()=>{};var init_dist16=__esm(()=>{init_host2();init_compose2()});function isBigIntDType2(dtype){return dtype==="i64"||dtype==="u64"}function allocate(dtype,length){return new CONSTRUCTORS[dtype](length)}function isHalfDType(dtype){return dtype==="f16"||dtype==="bf16"}function roundHalfEven(v){let f=Math.floor(v),d=v-f;if(d>0.5)return f+1;if(d<0.5)return f;return f%2===0?f:f+1}function encodeBinaryFloat(x,expBits,mantBits){let signBit=1<<expBits+mantBits,expMask=(1<<expBits)-1,bias=(1<<expBits-1)-1;if(Number.isNaN(x))return expMask<<mantBits|1<<mantBits-1;let sign=x<0||Object.is(x,-0)?signBit:0,a2=Math.abs(x);if(a2===0)return sign;let overflow=(2-2**-(mantBits+1))*2**bias;if(a2>=overflow)return sign|expMask<<mantBits;let emin=1-bias;if(a2<2**emin)return sign|roundHalfEven(a2/2**(emin-mantBits));let e=Math.floor(Math.log2(a2));if(2**e>a2)e--;else if(2**(e+1)<=a2)e++;let frac=roundHalfEven((a2/2**e-1)*2**mantBits);return sign|(e+bias<<mantBits)+frac}function decodeBinaryFloat(bits,expBits,mantBits){let expMask=(1<<expBits)-1,bias=(1<<expBits-1)-1,sign=bits>>expBits+mantBits&1?-1:1,e=bits>>mantBits&expMask,m=bits&(1<<mantBits)-1;if(e===0)return sign*m*2**(1-bias-mantBits);if(e===expMask)return m===0?sign*(1/0):Number.NaN;return sign*(1+m/2**mantBits)*2**(e-bias)}function encodeHalf(dtype,x){return dtype==="f16"?encodeBinaryFloat(x,5,10):encodeBinaryFloat(x,8,7)}function decodeHalf(dtype,bits){return dtype==="f16"?decodeBinaryFloat(bits,5,10):decodeBinaryFloat(bits,8,7)}var CONSTRUCTORS;var init_dtype=__esm(()=>{CONSTRUCTORS={bool:Uint8Array,u8:Uint8Array,i8:Int8Array,u16:Uint16Array,i16:Int16Array,u32:Uint32Array,i32:Int32Array,u64:BigUint64Array,i64:BigInt64Array,f16:Uint16Array,bf16:Uint16Array,f32:Float32Array,f64:Float64Array}});function binaryFlat(op,a2,ao,b,bo,o3,oo,n2){switch(op){case 0:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]+b[bo+i2];break;case 1:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]-b[bo+i2];break;case 2:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]*b[bo+i2];break;default:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]/b[bo+i2]}}function binaryScalarRight(op,a2,ao,s2,o3,oo,n2){switch(op){case 0:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]+s2;break;case 1:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]-s2;break;case 2:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]*s2;break;default:for(let i2=0;i2<n2;i2++)o3[oo+i2]=a2[ao+i2]/s2}}function binaryScalarLeft(op,s2,b,bo,o3,oo,n2){switch(op){case 0:for(let i2=0;i2<n2;i2++)o3[oo+i2]=s2+b[bo+i2];break;case 1:for(let i2=0;i2<n2;i2++)o3[oo+i2]=s2-b[bo+i2];break;case 2:for(let i2=0;i2<n2;i2++)o3[oo+i2]=s2*b[bo+i2];break;default:for(let i2=0;i2<n2;i2++)o3[oo+i2]=s2/b[bo+i2]}}function compareFlat(op,a2,ao,b,bo,bStep,o3,n2){switch(op){case CMP_EQ:for(let i2=0;i2<n2;i2++)o3[i2]=a2[ao+i2]===b[bo+i2*bStep]?1:0;break;case CMP_NE:for(let i2=0;i2<n2;i2++)o3[i2]=a2[ao+i2]!==b[bo+i2*bStep]?1:0;break;case CMP_LT:for(let i2=0;i2<n2;i2++)o3[i2]=a2[ao+i2]<b[bo+i2*bStep]?1:0;break;case CMP_LTE:for(let i2=0;i2<n2;i2++)o3[i2]=a2[ao+i2]<=b[bo+i2*bStep]?1:0;break;case CMP_GT:for(let i2=0;i2<n2;i2++)o3[i2]=a2[ao+i2]>b[bo+i2*bStep]?1:0;break;default:for(let i2=0;i2<n2;i2++)o3[i2]=a2[ao+i2]>=b[bo+i2*bStep]?1:0}}function sumAxis(x,xo,outer,dim2,inner,o3,mean){if(inner===1){for(let r=0;r<outer;r++){let base2=xo+r*dim2,acc2=0;for(let j=0;j<dim2;j++)acc2+=x[base2+j];o3[r]=mean?acc2/dim2:acc2}return}let acc=new Float64Array(inner);for(let r=0;r<outer;r++){acc.fill(0);let base2=xo+r*dim2*inner;for(let j=0;j<dim2;j++){let row=base2+j*inner;for(let t=0;t<inner;t++)acc[t]=acc[t]+x[row+t]}let oo=r*inner;for(let t=0;t<inner;t++)o3[oo+t]=mean?acc[t]/dim2:acc[t]}}function extremumAxis(x,xo,outer,dim2,inner,o3,wantMax){if(inner===1){for(let r=0;r<outer;r++){let base2=xo+r*dim2,best2=x[base2];if(wantMax)for(let j=1;j<dim2;j++){let v=x[base2+j];if(v>best2)best2=v}else for(let j=1;j<dim2;j++){let v=x[base2+j];if(v<best2)best2=v}o3[r]=best2}return}let best=new Float64Array(inner);for(let r=0;r<outer;r++){let base2=xo+r*dim2*inner;for(let t=0;t<inner;t++)best[t]=x[base2+t];for(let j=1;j<dim2;j++){let row=base2+j*inner;if(wantMax)for(let t=0;t<inner;t++){let v=x[row+t];if(v>best[t])best[t]=v}else for(let t=0;t<inner;t++){let v=x[row+t];if(v<best[t])best[t]=v}}let oo=r*inner;for(let t=0;t<inner;t++)o3[oo+t]=best[t]}}function softmaxAxis(x,xo,outer,dim2,inner,o3,f322){for(let r=0;r<outer;r++){let base2=r*dim2*inner;for(let t=0;t<inner;t++){let lane=base2+t,max=x[xo+lane];for(let j=1;j<dim2;j++){let v=x[xo+lane+j*inner];if(v>max)max=v}let sum=0;for(let j=0;j<dim2;j++){let k=lane+j*inner,d=x[xo+k]-max;o3[k]=Math.exp(f322?Math.fround(d):d),sum+=o3[k]}let s2=f322?Math.fround(sum):sum;for(let j=0;j<dim2;j++){let k=lane+j*inner;o3[k]=o3[k]/s2}}}}function varianceAxis(x,xo,outer,dim2,inner,o3,denom,f322){let d=f322?Math.fround(denom):denom;for(let r=0;r<outer;r++){let base2=xo+r*dim2*inner;for(let t=0;t<inner;t++){let lane=base2+t,acc=0;for(let j=0;j<dim2;j++)acc+=x[lane+j*inner];let mean=f322?Math.fround(acc/dim2):acc/dim2,ss=0;for(let j=0;j<dim2;j++){let c3=f322?Math.fround(x[lane+j*inner]-mean):x[lane+j*inner]-mean;ss+=f322?Math.fround(c3*c3):c3*c3}o3[r*inner+t]=(f322?Math.fround(ss):ss)/d}}}function gemmNT(A,B,C,cOff,ldc,M,N,K){for(let j0=0;j0<N;j0+=64){let j1=Math.min(N,j0+64),i2=0;for(;i2+4<=M;i2+=4){let a0=i2*K,a1=a0+K,a2=a1+K,a3=a2+K,c0=cOff+i2*ldc,c1=c0+ldc,c22=c1+ldc,c3=c22+ldc,j=j0;for(;j+4<=j1;j+=4){let b0=j*K,b1=b0+K,b2=b1+K,b3=b2+K,s00=0,s01=0,s02=0,s03=0,s10=0,s11=0,s12=0,s13=0,s20=0,s21=0,s22=0,s23=0,s30=0,s31=0,s32=0,s33=0;for(let p=0;p<K;p++){let x0=A[a0+p],x1=A[a1+p],x2=A[a2+p],x3=A[a3+p],y0=B[b0+p],y1=B[b1+p],y2=B[b2+p],y3=B[b3+p];s00+=x0*y0,s01+=x0*y1,s02+=x0*y2,s03+=x0*y3,s10+=x1*y0,s11+=x1*y1,s12+=x1*y2,s13+=x1*y3,s20+=x2*y0,s21+=x2*y1,s22+=x2*y2,s23+=x2*y3,s30+=x3*y0,s31+=x3*y1,s32+=x3*y2,s33+=x3*y3}C[c0+j]=s00,C[c0+j+1]=s01,C[c0+j+2]=s02,C[c0+j+3]=s03,C[c1+j]=s10,C[c1+j+1]=s11,C[c1+j+2]=s12,C[c1+j+3]=s13,C[c22+j]=s20,C[c22+j+1]=s21,C[c22+j+2]=s22,C[c22+j+3]=s23,C[c3+j]=s30,C[c3+j+1]=s31,C[c3+j+2]=s32,C[c3+j+3]=s33}for(;j<j1;j++){let b0=j*K,s0=0,s1=0,s2=0,s3=0;for(let p=0;p<K;p++){let y=B[b0+p];s0+=A[a0+p]*y,s1+=A[a1+p]*y,s2+=A[a2+p]*y,s3+=A[a3+p]*y}C[c0+j]=s0,C[c1+j]=s1,C[c22+j]=s2,C[c3+j]=s3}}for(;i2<M;i2++){let a0=i2*K,c0=cOff+i2*ldc,j=j0;for(;j+4<=j1;j+=4){let b0=j*K,b1=b0+K,b2=b1+K,b3=b2+K,s0=0,s1=0,s2=0,s3=0;for(let p=0;p<K;p++){let x=A[a0+p];s0+=x*B[b0+p],s1+=x*B[b1+p],s2+=x*B[b2+p],s3+=x*B[b3+p]}C[c0+j]=s0,C[c0+j+1]=s1,C[c0+j+2]=s2,C[c0+j+3]=s3}for(;j<j1;j++){let b0=j*K,s2=0;for(let p=0;p<K;p++)s2+=A[a0+p]*B[b0+p];C[c0+j]=s2}}}}function packPanel(src,off,rowStride,colStride,rows,cols,dst){if(colStride===1){for(let r=0;r<rows;r++){let s2=off+r*rowStride,d=r*cols;for(let c3=0;c3<cols;c3++)dst[d+c3]=src[s2+c3]}return}for(let r=0;r<rows;r++){let s2=off+r*rowStride,d=r*cols;for(let c3=0;c3<cols;c3++)dst[d+c3]=src[s2+c3*colStride]}}function alignedStrides(shape,outShape){let out=Array(outShape.length).fill(0),acc=1;for(let i2=shape.length-1;i2>=0;i2--){let d=shape[i2];out[outShape.length-shape.length+i2]=d===1?0:acc,acc*=d}return out}function rowOffsets(shape,strides,base2=0){let rank=shape.length,rows=1;for(let i2=0;i2<rank-1;i2++)rows*=shape[i2];let offs=new Float64Array(rows);if(rows===0)return offs;let idx=Array(Math.max(0,rank-1)).fill(0),off=base2;for(let r=0;r<rows;r++){offs[r]=off;for(let d=rank-2;d>=0;d--){if(idx[d]++,off+=strides[d],idx[d]<shape[d])break;off-=strides[d]*shape[d],idx[d]=0}}return offs}function stridedCopy(src,off,shape,strides,dst,dstOff=0){let rank=shape.length;if(rank===0){dst[dstOff]=src[off];return}let n2=shape[rank-1];if(n2===0)return;let s2=strides[rank-1],offs=rowOffsets(shape,strides,off),sameKind=src.constructor===dst.constructor;for(let r=0;r<offs.length;r++){let o3=offs[r],d=dstOff+r*n2;if(s2===1&&sameKind)dst.set(src.subarray(o3,o3+n2),d);else for(let j=0;j<n2;j++)dst[d+j]=src[o3+j*s2]}}function binaryStrided(op,A,ao,as,B,bo,bs,O,oo,n2){switch(op){case 0:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]+B[bo+j*bs];break;case 1:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]-B[bo+j*bs];break;case 2:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]*B[bo+j*bs];break;case 3:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]/B[bo+j*bs];break;case OP_MAXIMUM:for(let j=0;j<n2;j++){let x=A[ao+j*as],y=B[bo+j*bs];O[oo+j]=x!==x||y!==y?NaN:x>y?x:y}break;default:for(let j=0;j<n2;j++)O[oo+j]=Math.pow(A[ao+j*as],B[bo+j*bs])}}function compareStrided(op,A,ao,as,B,bo,bs,O,oo,n2){switch(op){case CMP_EQ:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]===B[bo+j*bs]?1:0;break;case CMP_NE:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]!==B[bo+j*bs]?1:0;break;case CMP_LT:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]<B[bo+j*bs]?1:0;break;case CMP_LTE:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]<=B[bo+j*bs]?1:0;break;case CMP_GT:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]>B[bo+j*bs]?1:0;break;case CMP_GTE:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]>=B[bo+j*bs]?1:0;break;case CMP_AND:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]!==0&&B[bo+j*bs]!==0?1:0;break;default:for(let j=0;j<n2;j++)O[oo+j]=A[ao+j*as]!==0||B[bo+j*bs]!==0?1:0}}function whereStrided(C,co,cs,A,ao,as,B,bo,bs,O,oo,n2){for(let j=0;j<n2;j++)O[oo+j]=C[co+j*cs]?A[ao+j*as]:B[bo+j*bs]}function argExtremumAxis(x,xo,outer,dim2,inner,o3,wantMax){for(let r=0;r<outer;r++){let base2=xo+r*dim2*inner;for(let t=0;t<inner;t++){let lane=base2+t,best=x[lane],bi=0;if(wantMax)for(let j=1;j<dim2;j++){let v=x[lane+j*inner];if(v>best)best=v,bi=j}else for(let j=1;j<dim2;j++){let v=x[lane+j*inner];if(v<best)best=v,bi=j}o3[r*inner+t]=bi}}}function cumsumAxis(x,xo,outer,dim2,inner,o3){for(let r=0;r<outer;r++){let base2=r*dim2*inner;for(let t=0;t<inner;t++){let lane=base2+t,acc=0;for(let j=0;j<dim2;j++)acc+=x[xo+lane+j*inner],o3[lane+j*inner]=acc}}}function sortAxis(x,xo,outer,dim2,inner,o3,lane){let buf=lane.subarray(0,dim2);for(let r=0;r<outer;r++)for(let t=0;t<inner;t++){let base2=r*dim2*inner+t;for(let j=0;j<dim2;j++)buf[j]=x[xo+base2+j*inner];buf.sort();for(let j=0;j<dim2;j++)o3[base2+j*inner]=buf[j]}}var OP_ADD=0,OP_SUB=1,OP_MUL=2,OP_DIV=3,CMP_EQ=0,CMP_NE=1,CMP_LT=2,CMP_LTE=3,CMP_GT=4,CMP_GTE=5,OP_MAXIMUM=4,OP_POW=5,CMP_AND=6,CMP_OR=7;function serializeNpy(payload){let descr=DTYPE_TO_DESCR[payload.dtype];if(!descr)throw TypeError(`dtype ${payload.dtype} has no .npy representation`);let shapeTuple=payload.shape.length===1?`(${payload.shape[0]},)`:`(${payload.shape.join(", ")})`,header=`{'descr': '${descr}', 'fortran_order': False, 'shape': ${shapeTuple}, }`,unpadded=10+header.length+1;header+=" ".repeat((64-unpadded%64)%64)+`
340
+ `;let body=new Uint8Array(payload.data.buffer,payload.data.byteOffset,payload.data.byteLength),out=new Uint8Array(10+header.length+body.length);for(let i2=0;i2<MAGIC.length;i2++)out[i2]=MAGIC.charCodeAt(i2);out[6]=1,out[7]=0,out[8]=header.length&255,out[9]=header.length>>8;for(let i2=0;i2<header.length;i2++)out[10+i2]=header.charCodeAt(i2);return out.set(body,10+header.length),out}function parseNpy(bytes,options={}){for(let i2=0;i2<MAGIC.length;i2++)if(bytes[i2]!==MAGIC.charCodeAt(i2))throw TypeError("not an NPY file (bad magic)");let major=bytes[6],headerLength2,headerStart;if(major===1)headerLength2=bytes[8]|bytes[9]<<8,headerStart=10;else if(major===2||major===3)headerLength2=bytes[8]|bytes[9]<<8|bytes[10]<<16|bytes[11]<<24,headerStart=12;else throw TypeError(`unsupported NPY version ${major}`);let header="";for(let i2=0;i2<headerLength2;i2++)header+=String.fromCharCode(bytes[headerStart+i2]);let descrMatch=header.match(/'descr':\s*'([^']+)'/),fortranMatch=header.match(/'fortran_order':\s*(True|False)/),shapeMatch=header.match(/'shape':\s*\(([^)]*)\)/);if(!descrMatch||!fortranMatch||!shapeMatch)throw TypeError(`unparseable NPY header: ${header}`);if(fortranMatch[1]==="True")throw TypeError("fortran_order NPY files are not supported");let descr=descrMatch[1];if(VOID2.test(descr)&&options.voidAs!=="bf16")throw TypeError(`NPY descr '${descr}' is an untyped 2-byte void, which is how NumPy saves ml_dtypes.bfloat16 arrays. If this file holds bfloat16, read it with fromNpy(bytes, { voidAs: "bf16" }).`);let dtype=VOID2.test(descr)?"bf16":DESCR_TO_DTYPE[descr];if(!dtype)throw TypeError(`unsupported NPY descr ${descrMatch[1]}`);let shape=shapeMatch[1].split(",").map((s2)=>s2.trim()).filter((s2)=>s2.length>0).map(Number),dataStart=headerStart+headerLength2,size=shape.reduce((a2,b)=>a2*b,1),data=allocate(dtype,size),bodyBytes=bytes.subarray(dataStart,dataStart+data.byteLength);return new Uint8Array(data.buffer).set(bodyBytes),{data,shape,dtype}}var MAGIC="“NUMPY",DTYPE_TO_DESCR,DESCR_TO_DTYPE,VOID2;var init_npy=__esm(()=>{init_dtype();DTYPE_TO_DESCR={bool:"|b1",u8:"|u1",i8:"|i1",u16:"<u2",i16:"<i2",u32:"<u4",i32:"<i4",u64:"<u8",i64:"<i8",f16:"<f2",f32:"<f4",f64:"<f8"},DESCR_TO_DTYPE=Object.fromEntries(Object.entries(DTYPE_TO_DESCR).map(([dtype,descr])=>[descr,dtype]));DTYPE_TO_DESCR.bf16="<V2";DESCR_TO_DTYPE["<i1"]="i8";DESCR_TO_DTYPE["<u1"]="u8";DESCR_TO_DTYPE["<b1"]="bool";VOID2=/^[<>|=]V2$/});function erfSeries(x,maxTerms=60){if(x===0)return x;let x2=x*x,term=x,sum=x;for(let n2=1;n2<=maxTerms;n2++){term*=-x2/n2;let c3=term/(2*n2+1);if(sum+=c3,Math.abs(c3)<=0.00000000000000001*Math.abs(sum))break}return 1.1283791670955126*sum}function cfDepthFor(z2){if(z2<1.5)return 100;if(z2<2)return 60;if(z2<3)return 36;return 24}function expNegSquare(z2){let s2=Math.round(z2*4096)/4096;return Math.exp(-s2*s2)*Math.exp(-(z2-s2)*(z2+s2))}function expNegHalfSquare(x){let s2=Math.round(x*4096)/4096;return Math.exp(-0.5*(s2*s2))*Math.exp(-0.5*(x-s2)*(x+s2))}function erfcTail(z2,expTerm,depth){let t=2*z2*z2+1,f=0;for(let n2=depth;n2>=1;n2--)f=(2*n2-1)*(2*n2)/(t+4*n2-f);return expTerm*0.5641895835477563*2*z2/(t-f)}function erfcContinuedFraction(z2,depth=cfDepthFor(z2)){if(z2>27.3)return 0;return erfcTail(z2,expNegSquare(z2),depth)}function normalCdf(x){let z2=-x*0.7071067811865476;if(z2>=1){if(z2>27.3)return 0;return 0.5*erfcTail(z2,expNegHalfSquare(x),cfDepthFor(z2))}return 0.5*erfc(z2)}function erf(x){if(x!==x)return NaN;let ax=Math.abs(x);if(ax<1)return erfSeries(x);let c3=erfcContinuedFraction(ax);return x>0?1-c3:c3-1}function erfc(x){if(x!==x)return NaN;if(x>=1)return erfcContinuedFraction(x);if(x<=-1)return 2-erfcContinuedFraction(-x);return 1-erfSeries(x)}function geluErf(x){return x*normalCdf(x)}function geluTanh(x){return 0.5*x*(1+Math.tanh(0.7978845608028654*(x+0.044715*x*x*x)))}function checkGeluApproximate(approximate){if(approximate===void 0)return"none";if(approximate==="none"||approximate==="tanh")return approximate;throw TypeError(`gelu: approximate must be "none" or "tanh", got ${JSON.stringify(approximate)}`)}var ERF_F32_PARAMS;var init_dist17=__esm(()=>{ERF_F32_PARAMS=Object.freeze({seriesTerms:10,cfDepth:28,underflow:10.1})});function shapeSize(shape){let size=1;for(let dim2 of shape){if(!Number.isInteger(dim2)||dim2<0)throw RangeError(`invalid dimension ${dim2} in shape [${shape}]`);size*=dim2}return size}function contiguousStrides(shape){let strides=Array(shape.length),acc=1;for(let i2=shape.length-1;i2>=0;i2--)strides[i2]=acc,acc*=shape[i2];return strides}function decodeElement(dtype,raw){return isHalfDType(dtype)?decodeHalf(dtype,raw):raw}function assertNotHalf(dtype,op){if(isHalfDType(dtype))throw TypeError(`${op} is not supported on ${dtype} (a storage dtype: Uint16Array bit patterns) -- cast("f32") first, then cast back if needed, or run the computation inside withCompute("f32", [inputs], fn)`)}function broadcastShapes(a2,b){let ndim=Math.max(a2.length,b.length),out=Array(ndim);for(let i2=0;i2<ndim;i2++){let da=a2[a2.length-1-i2]??1,db2=b[b.length-1-i2]??1;if(da!==db2&&da!==1&&db2!==1)throw RangeError(`shapes [${a2}] and [${b}] are not broadcast-compatible at axis ${ndim-1-i2}`);out[ndim-1-i2]=da===1?db2:da}return out}function resolveSlice(spec,dim2){let step=spec.step??1;if(step===0)throw RangeError("slice step must be non-zero");let clamp=(i2,lo,hi)=>Math.max(lo,Math.min(hi,i2)),resolve=(raw,defaultValue)=>{if(raw===void 0)return defaultValue;let i2=raw;if(i2<0)i2+=dim2;return step>0?clamp(i2,0,dim2):clamp(i2,-1,dim2-1)},start=resolve(spec.start,step>0?0:dim2-1),end=resolve(spec.end,step>0?dim2:-1),length=step>0?Math.max(0,Math.ceil((end-start)/step)):Math.max(0,Math.ceil((end-start)/step));return{start,length,step}}function broadcastStrides(shape,strides,target){let out=Array(target.length).fill(0);for(let i2=0;i2<shape.length;i2++){let targetAxis=target.length-shape.length+i2;if(shape[i2]===target[targetAxis])out[targetAxis]=strides[i2];else out[targetAxis]=0}return out}function sameShape(a2,b){if(a2.length!==b.length)return!1;for(let i2=0;i2<a2.length;i2++)if(a2[i2]!==b[i2])return!1;return!0}function splitAround(shape,ax){let outer=1,inner=1;for(let i2=0;i2<ax;i2++)outer*=shape[i2];for(let i2=ax+1;i2<shape.length;i2++)inner*=shape[i2];return[outer,shape[ax],inner]}function isTrailingBlock(small,out){let s2=0;while(s2<small.length&&small[s2]===1)s2++;let rest=small.length-s2;if(rest>out.length)return!1;for(let i2=0;i2<rest;i2++)if(small[s2+i2]!==out[out.length-rest+i2])return!1;return!0}function rowBroadcastInner(small,out){let pad=out.length-small.length;if(pad<0)return-1;let at=(k)=>k<pad?1:small[k-pad],p=out.length;while(p>0&&at(p-1)===1)p--;for(let k=0;k<p;k++)if(at(k)!==out[k])return-1;let inner=1;for(let k=p;k<out.length;k++)inner*=out[k];return inner}function binaryFastPath(op,a2,b,out){let n2=out.size;if(n2===0)return!0;let{shape:outShape,data:o3}=out,ad=a2.data,bd=b.data,aFull=sameShape(a2.shape,outShape)&&a2.isContiguous,bFull=sameShape(b.shape,outShape)&&b.isContiguous;if(aFull&&bFull)return binaryFlat(op,ad,a2.offset,bd,b.offset,o3,0,n2),!0;if(aFull){if(b.size===1)return binaryScalarRight(op,ad,a2.offset,bd[b.offset],o3,0,n2),!0;if(!b.isContiguous)return!1;if(isTrailingBlock(b.shape,outShape)){let inner2=b.size;for(let base2=0;base2<n2;base2+=inner2)binaryFlat(op,ad,a2.offset+base2,bd,b.offset,o3,base2,inner2);return!0}let inner=rowBroadcastInner(b.shape,outShape);if(inner<=0)return!1;for(let r=0,base2=0;base2<n2;r++,base2+=inner)binaryScalarRight(op,ad,a2.offset+base2,bd[b.offset+r],o3,base2,inner);return!0}if(bFull){if(a2.size===1)return binaryScalarLeft(op,ad[a2.offset],bd,b.offset,o3,0,n2),!0;if(!a2.isContiguous)return!1;if(isTrailingBlock(a2.shape,outShape)){let inner2=a2.size;for(let base2=0;base2<n2;base2+=inner2)binaryFlat(op,ad,a2.offset,bd,b.offset+base2,o3,base2,inner2);return!0}let inner=rowBroadcastInner(a2.shape,outShape);if(inner<=0)return!1;for(let r=0,base2=0;base2<n2;r++,base2+=inner)binaryScalarLeft(op,ad[a2.offset+r],bd,b.offset+base2,o3,base2,inner);return!0}return!1}class Tensor{shape;strides;dtype;size;data;offset;constructor(data,shape,strides,dtype,offset){this.data=data,this.shape=Object.freeze([...shape]),this.strides=Object.freeze([...strides]),this.dtype=dtype,this.size=shapeSize(shape),this.offset=offset}get ndim(){return this.shape.length}get isContiguous(){let expected=contiguousStrides(this.shape);for(let i2=0;i2<expected.length;i2++)if(this.shape[i2]!==1&&this.strides[i2]!==expected[i2])return!1;return!0}static zeros(shape,options={}){let dtype=options.dtype??"f32";return new _a3(allocate(dtype,shapeSize(shape)),shape,contiguousStrides(shape),dtype,0)}static ones(shape,options={}){return _a3.full(shape,1,options)}static full(shape,value,options={}){let dtype=options.dtype??"f32",data=allocate(dtype,shapeSize(shape));if(isBigIntDType2(dtype))data.fill(BigInt(value));else if(isHalfDType(dtype))data.fill(encodeHalf(dtype,value));else data.fill(value);return new _a3(data,shape,contiguousStrides(shape),dtype,0)}static arange(start,stop,step=1,options={}){if(stop===void 0)stop=start,start=0;if(step===0)throw RangeError("arange step must be non-zero");let dtype=options.dtype??"f32",length=Math.max(0,Math.ceil((stop-start)/step)),data=allocate(dtype,length);if(isBigIntDType2(dtype)){let big=data;for(let i2=0;i2<length;i2++)big[i2]=BigInt(start+i2*step)}else if(isHalfDType(dtype)){let bits=data;for(let i2=0;i2<length;i2++)bits[i2]=encodeHalf(dtype,start+i2*step)}else{let num=data;for(let i2=0;i2<length;i2++)num[i2]=start+i2*step}return new _a3(data,[length],[1],dtype,0)}static from(values,options={}){let dtype=options.dtype??"f32",data=allocate(dtype,values.length);if(isBigIntDType2(dtype)){let big=data;for(let i2=0;i2<values.length;i2++)big[i2]=BigInt(values[i2])}else if(isHalfDType(dtype)){let bits=data;for(let i2=0;i2<values.length;i2++)bits[i2]=encodeHalf(dtype,values[i2])}else data.set(values);return new _a3(data,[values.length],[1],dtype,0)}static fromTypedArray(data,shape,options){if(shapeSize(shape)!==data.length)throw RangeError(`shape [${shape}] (${shapeSize(shape)} elements) does not match data length ${data.length}`);return new _a3(data,shape,contiguousStrides(shape),options.dtype,0)}static concat(tensors,options={}){if(tensors.length===0)throw RangeError("concat requires at least one tensor");let first=tensors[0],axis=options.axis??0,ax=axis;if(ax<0)ax+=first.ndim;if(ax<0||ax>=first.ndim)throw RangeError(`axis ${axis} out of range for ndim ${first.ndim}`);for(let t of tensors){if(t.dtype!==first.dtype)throw TypeError(`concat: dtype mismatch ${first.dtype} vs ${t.dtype}`);if(t.ndim!==first.ndim)throw RangeError(`concat: ndim mismatch ${first.ndim} vs ${t.ndim}`);for(let i2=0;i2<first.ndim;i2++)if(i2!==ax&&t.shape[i2]!==first.shape[i2])throw RangeError(`concat: shape mismatch on axis ${i2} (${first.shape[i2]} vs ${t.shape[i2]})`)}let axisSize=tensors.reduce((sum,t)=>sum+t.shape[ax],0),outShape=first.shape.map((d,i2)=>i2===ax?axisSize:d),out=_a3.zeros(outShape,{dtype:first.dtype}),cursor2=0;for(let t of tensors){let dim2=t.shape[ax],specs=Array(out.ndim).fill(null);specs[ax]={start:cursor2,end:cursor2+dim2},out.slice(...specs).#copyFrom(t),cursor2+=dim2}return out}static stack(tensors,options={}){if(tensors.length===0)throw RangeError("stack requires at least one tensor");let axis=options.axis??0;return _a3.concat(tensors.map((t)=>t.unsqueeze(axis)),{axis})}static where(condition,a2,b){if(condition.dtype!=="bool")throw TypeError(`where: condition must be a bool tensor, got ${condition.dtype}`);if(a2.dtype!==b.dtype)throw TypeError(`where: dtype mismatch ${a2.dtype} vs ${b.dtype}`);let outShape=broadcastShapes(broadcastShapes(condition.shape,a2.shape),b.shape),out=_a3.zeros(outShape,{dtype:a2.dtype}),condStrides=broadcastStrides(condition.shape,condition.strides,outShape),aStrides=broadcastStrides(a2.shape,a2.strides,outShape),bStrides=broadcastStrides(b.shape,b.strides,outShape),index2=Array(outShape.length).fill(0),condOff=condition.offset,aOff=a2.offset,bOff=b.offset;for(let i2=0;i2<out.size;i2++){let pick2=condition.data[condOff]!==0;out.data[i2]=pick2?a2.data[aOff]:b.data[bOff];for(let axis=outShape.length-1;axis>=0;axis--){if(index2[axis]=index2[axis]+1,condOff+=condStrides[axis],aOff+=aStrides[axis],bOff+=bStrides[axis],index2[axis]<outShape[axis])break;index2[axis]=0,condOff-=outShape[axis]*condStrides[axis],aOff-=outShape[axis]*aStrides[axis],bOff-=outShape[axis]*bStrides[axis]}}return out}reshape(shape){if(!this.isContiguous)throw TypeError("reshape of a non-contiguous tensor is not a view; call .contiguous() first (no implicit copies)");let inferred=[...shape],negatives=inferred.filter((d)=>d===-1).length;if(negatives>1)throw RangeError("reshape allows at most one -1 dimension");if(negatives===1){let known=inferred.reduce((a2,d)=>d===-1?a2:a2*d,1);if(known===0||this.size%known!==0)throw RangeError(`cannot infer -1: ${this.size} elements do not divide by ${known}`);inferred[inferred.indexOf(-1)]=this.size/known}if(shapeSize(inferred)!==this.size)throw RangeError(`cannot reshape ${this.size} elements into [${shape}]`);return new _a3(this.data,inferred,contiguousStrides(inferred),this.dtype,this.offset)}permute(axes){if(axes.length!==this.ndim)throw RangeError(`permute needs ${this.ndim} axes, got ${axes.length}`);if(new Set(axes).size!==this.ndim||axes.some((a2)=>a2<0||a2>=this.ndim))throw RangeError(`invalid permutation [${axes}] for ndim ${this.ndim}`);let shape=axes.map((a2)=>this.shape[a2]),strides=axes.map((a2)=>this.strides[a2]);return new _a3(this.data,shape,strides,this.dtype,this.offset)}transpose(axes){if(axes)return this.permute(axes);let reversed=Array.from({length:this.ndim},(_,i2)=>this.ndim-1-i2);return this.permute(reversed)}contiguous(){if(this.isContiguous&&this.offset===0&&this.size===this.data.length)return this;if(this.isContiguous)return new _a3(this.data.slice(this.offset,this.offset+this.size),this.shape,contiguousStrides(this.shape),this.dtype,0);let data=allocate(this.dtype,this.size);if(!isBigIntDType2(this.dtype))return stridedCopy(this.data,this.offset,this.shape,this.strides,data),new _a3(data,this.shape,contiguousStrides(this.shape),this.dtype,0);let source=this.data,i2=0;for(let elementOffset of this.elementOffsets())data[i2++]=source[elementOffset];return new _a3(data,this.shape,contiguousStrides(this.shape),this.dtype,0)}#contiguousView(){return this.isContiguous?this:this.contiguous()}squeeze(axis){let axesToRemove;if(axis===void 0)axesToRemove=new Set(this.shape.flatMap((d,i2)=>d===1?[i2]:[]));else{let ax=this.#normalizeAxis(axis);if(this.shape[ax]!==1)throw RangeError(`squeeze: axis ${axis} has size ${this.shape[ax]}, not 1`);axesToRemove=new Set([ax])}return new _a3(this.data,this.shape.filter((_,i2)=>!axesToRemove.has(i2)),this.strides.filter((_,i2)=>!axesToRemove.has(i2)),this.dtype,this.offset)}unsqueeze(axis){let ax=axis;if(ax<0)ax+=this.ndim+1;if(ax<0||ax>this.ndim)throw RangeError(`unsqueeze: axis ${axis} out of range for ndim ${this.ndim}`);return new _a3(this.data,[...this.shape.slice(0,ax),1,...this.shape.slice(ax)],[...this.strides.slice(0,ax),0,...this.strides.slice(ax)],this.dtype,this.offset)}flatten(start=0,end=-1){let s2=start<0?start+this.ndim:start,e=end<0?end+this.ndim:end;if(s2<0||e>=this.ndim||s2>e)throw RangeError(`flatten: invalid range [${start}, ${end}] for ndim ${this.ndim}`);let packed=this.#contiguousView(),flatSize=packed.shape.slice(s2,e+1).reduce((a2,b)=>a2*b,1);return packed.reshape([...packed.shape.slice(0,s2),flatSize,...packed.shape.slice(e+1)])}broadcastTo(shape){let target=[...shape],validated=broadcastShapes(this.shape,target);if(validated.length!==target.length||validated.some((d,i2)=>d!==target[i2]))throw RangeError(`cannot broadcastTo [${shape}] from [${this.shape}] (broadcasting the two gives [${validated}])`);return new _a3(this.data,target,broadcastStrides(this.shape,this.strides,target),this.dtype,this.offset)}unfold(windowShape,axes){let rawAxes=axes??Array.from({length:this.ndim},(_,i2)=>i2);if(rawAxes.length!==windowShape.length)throw RangeError(`unfold: windowShape (${windowShape.length}) and axes (${rawAxes.length}) must have the same length`);let normalizedAxes=rawAxes.map((a2)=>this.#normalizeAxis(a2));if(new Set(normalizedAxes).size!==normalizedAxes.length)throw RangeError(`unfold: duplicate axis in [${rawAxes}]`);normalizedAxes.forEach((axis,i2)=>{let w=windowShape[i2],dim2=this.shape[axis];if(!Number.isInteger(w)||w<=0||w>dim2)throw RangeError(`unfold: window size ${w} invalid for axis ${axis} of size ${dim2}`)});let outerShape=this.shape.map((d,i2)=>{let windowIdx=normalizedAxes.indexOf(i2);return windowIdx===-1?d:d-windowShape[windowIdx]+1}),windowStrides=normalizedAxes.map((a2)=>this.strides[a2]);return new _a3(this.data,[...outerShape,...windowShape],[...this.strides,...windowStrides],this.dtype,this.offset)}clip(min2,max){assertNotHalf(this.dtype,"clip");let out=this;if(min2!==void 0)out=_a3.where(out.lt(min2),_a3.full(out.shape,min2,{dtype:out.dtype}),out);if(max!==void 0)out=_a3.where(out.gt(max),_a3.full(out.shape,max,{dtype:out.dtype}),out);return out}prod(axis){if(assertNotHalf(this.dtype,"prod"),axis===void 0)return this.cumprod().select(0,-1);let ax=this.#normalizeAxis(axis);return this.cumprod(ax).select(ax,-1)}pad(padding,options={}){let ndim=this.ndim;if(padding.length>ndim)throw RangeError(`pad: ${padding.length} axis pairs given but tensor has only ${ndim} axes`);let fullPadding=this.shape.map((_,i2)=>{let fromEnd=ndim-i2,idx=padding.length-fromEnd,pair=idx>=0?padding[idx]:void 0;if(pair&&(pair[0]<0||pair[1]<0))throw RangeError("pad: negative padding is not supported (use slice() to shrink instead)");return pair?[pair[0],pair[1]]:[0,0]}),outShape=this.shape.map((d,i2)=>d+fullPadding[i2][0]+fullPadding[i2][1]),out=_a3.full(outShape,options.value??0,{dtype:this.dtype}),specs=fullPadding.map(([before],i2)=>({start:before,end:before+this.shape[i2]}));return out.slice(...specs).#copyFrom(this),out}split(sections,options={}){let ax=this.#normalizeAxis(options.axis??0),dim2=this.shape[ax],points;if(typeof sections==="number"){if(sections<=0||dim2%sections!==0)throw RangeError(`split: axis size ${dim2} is not evenly divisible into ${sections} equal sections`);let size=dim2/sections;points=Array.from({length:sections-1},(_,i2)=>(i2+1)*size)}else points=[...sections];let bounds=[0,...points,dim2],out=[];for(let i2=0;i2<bounds.length-1;i2++){let specs=this.shape.map((_,a2)=>a2===ax?{start:bounds[i2],end:bounds[i2+1]}:null);out.push(this.slice(...specs))}return out}repeat(counts,options={}){let ax=this.#normalizeAxis(options.axis??0),dim2=this.shape[ax],countArr=typeof counts==="number"?Array(dim2).fill(counts):counts;if(countArr.length!==dim2)throw RangeError(`repeat: counts length ${countArr.length} does not match axis size ${dim2}`);let indices=[];for(let i2=0;i2<dim2;i2++){let c3=countArr[i2];for(let j=0;j<c3;j++)indices.push(i2)}return this.take(indices,{axis:ax})}flip(axis){let axes=axis===void 0?this.shape.map((_,i2)=>i2):Array.isArray(axis)?axis:[axis],out=this;for(let a2 of axes){let ax=out.#normalizeAxis(a2),dim2=out.shape[ax],indices=Array.from({length:dim2},(_,i2)=>dim2-1-i2);out=out.take(indices,{axis:ax})}return out}roll(shift,options={}){if(options.axis===void 0)return this.#contiguousView().reshape([this.size]).roll(shift,{axis:0}).reshape(this.shape);let ax=this.#normalizeAxis(options.axis),dim2=this.shape[ax];if(dim2===0)return this;let s2=(shift%dim2+dim2)%dim2,indices=Array.from({length:dim2},(_,i2)=>(i2-s2+dim2)%dim2);return this.take(indices,{axis:ax})}nonzero(){assertNotHalf(this.dtype,"nonzero");let ndim=this.ndim,shape=this.shape,big=isBigIntDType2(this.dtype),rows=[],count3=0,idx=Array(ndim).fill(0);for(let off of this.elementOffsets()){let v=this.data[off];if(big?v!==0n:v!==0)rows.push(...idx),count3++;for(let a2=ndim-1;a2>=0;a2--){if(idx[a2]=idx[a2]+1,idx[a2]<shape[a2])break;idx[a2]=0}}return _a3.from(rows,{dtype:"i64"}).reshape([count3,ndim])}slice(...specs){if(specs.length>this.ndim)throw RangeError(`got ${specs.length} slice specs for a ${this.ndim}-d tensor`);let shape=[],strides=[],offset=this.offset;for(let axis=0;axis<this.ndim;axis++){let dim2=this.shape[axis],stride=this.strides[axis],spec=specs[axis];if(spec===void 0||spec===null){shape.push(dim2),strides.push(stride);continue}let{start,length,step}=resolveSlice(spec,dim2);offset+=start*stride,shape.push(length),strides.push(stride*step)}return new _a3(this.data,shape,strides,this.dtype,offset)}select(axis,index2){let ax=this.#normalizeAxis(axis),dim2=this.shape[ax],i2=index2;if(i2<0)i2+=dim2;if(i2<0||i2>=dim2)throw RangeError(`index ${index2} out of bounds for axis ${ax} (size ${dim2})`);return new _a3(this.data,this.shape.filter((_,a2)=>a2!==ax),this.strides.filter((_,a2)=>a2!==ax),this.dtype,this.offset+i2*this.strides[ax])}take(indices,options={}){let ax=this.#normalizeAxis(options.axis??0),dim2=this.shape[ax],resolved=indices.map((raw)=>{let i2=raw<0?raw+dim2:raw;if(i2<0||i2>=dim2)throw RangeError(`index ${raw} out of bounds for axis ${ax} (size ${dim2})`);return i2}),outShape=this.shape.map((d,a2)=>a2===ax?resolved.length:d),out=_a3.zeros(outShape,{dtype:this.dtype});for(let k=0;k<resolved.length;k++){let source=this.select(ax,resolved[k]);out.select(ax,k).#copyFrom(source)}return out}gather(axis,indices){return this.take(indices,{axis})}mask(condition){if(condition.dtype!=="bool")throw TypeError(`mask expects a bool tensor, got ${condition.dtype}`);if(condition.ndim!==this.ndim||condition.shape.some((d,i2)=>d!==this.shape[i2]))throw RangeError(`mask shape [${condition.shape}] does not match [${this.shape}]`);let selected=[],condOffsets=[...condition.elementOffsets()],selfOffsets=[...this.elementOffsets()];for(let i2=0;i2<condOffsets.length;i2++)if(condition.data[condOffsets[i2]])selected.push(selfOffsets[i2]);let out=_a3.zeros([selected.length],{dtype:this.dtype});for(let i2=0;i2<selected.length;i2++)out.data[i2]=this.data[selected[i2]];return out}#normalizeAxis(axis){let ax=axis;if(ax<0)ax+=this.ndim;if(ax<0||ax>=this.ndim)throw RangeError(`axis ${axis} out of range for ndim ${this.ndim}`);return ax}at(...indices){if(indices.length!==this.ndim)throw RangeError(`expected ${this.ndim} indices, got ${indices.length}`);let elementOffset=this.offset;for(let axis=0;axis<indices.length;axis++){let dim2=this.shape[axis],index2=indices[axis];if(index2<0)index2+=dim2;if(index2<0||index2>=dim2)throw RangeError(`index ${indices[axis]} out of bounds for axis ${axis} (size ${dim2})`);elementOffset+=index2*this.strides[axis]}return decodeElement(this.dtype,this.data[elementOffset])}item(){if(this.size!==1)throw RangeError(`item() requires size 1, got ${this.size}`);return decodeElement(this.dtype,this.data[this.offset])}toArray(){let build=(axis,offset)=>{let dim2=this.shape[axis],stride=this.strides[axis],out=Array(dim2);for(let i2=0;i2<dim2;i2++)out[i2]=axis===this.ndim-1?decodeElement(this.dtype,this.data[offset+i2*stride]):build(axis+1,offset+i2*stride);return out};if(this.ndim===0)return[];return build(0,this.offset)}*elementOffsets(){if(this.size===0)return;if(this.ndim===0){yield this.offset;return}let index2=Array(this.ndim).fill(0),offset=this.offset;outer:for(;;){yield offset;for(let axis=this.ndim-1;axis>=0;axis--){if(index2[axis]=index2[axis]+1,offset+=this.strides[axis],index2[axis]<this.shape[axis])continue outer;index2[axis]=0,offset-=this.shape[axis]*this.strides[axis]}return}}#copyFrom(source){if(this.shape.length!==source.shape.length||this.shape.some((d,i2)=>d!==source.shape[i2]))throw RangeError(`copy shape mismatch: [${this.shape}] vs [${source.shape}]`);let targetOffsets=this.elementOffsets(),sourceOffsets=source.elementOffsets(),target=targetOffsets.next(),src=sourceOffsets.next();while(!target.done&&!src.done)this.data[target.value]=source.data[src.value],target=targetOffsets.next(),src=sourceOffsets.next()}#binary(op,other){assertNotHalf(this.dtype,op);let rhs=typeof other==="number"?_a3.full([],other,{dtype:this.dtype}):other;if(rhs.dtype!==this.dtype)throw TypeError(`dtype mismatch: ${this.dtype} vs ${rhs.dtype} (M1 has no implicit promotion; cast() first)`);let outShape=broadcastShapes(this.shape,rhs.shape),out=_a3.zeros(outShape,{dtype:this.dtype}),aStrides=broadcastStrides(this.shape,this.strides,outShape),bStrides=broadcastStrides(rhs.shape,rhs.strides,outShape),size=out.size,ndim=outShape.length,index2=Array(ndim).fill(0),aOff=this.offset,bOff=rhs.offset;if(isBigIntDType2(this.dtype)){let fn=BIGINT_OPS[op];if(!fn)throw TypeError(`${op} is not defined for ${this.dtype} (NumPy true-division returns f64; cast() first)`);let a2=this.data,b=rhs.data,o3=out.data;for(let i2=0;i2<size;i2++){o3[i2]=fn(a2[aOff],b[bOff]);for(let axis=ndim-1;axis>=0;axis--){if(index2[axis]=index2[axis]+1,aOff+=aStrides[axis],bOff+=bStrides[axis],index2[axis]<outShape[axis])break;index2[axis]=0,aOff-=outShape[axis]*aStrides[axis],bOff-=outShape[axis]*bStrides[axis]}}}else{if(binaryFastPath(BINARY_CODE[op],this,rhs,out))return out;let fn=NUMBER_OPS[op],a2=this.data,b=rhs.data,o3=out.data;for(let i2=0;i2<size;i2++){o3[i2]=fn(a2[aOff],b[bOff]);for(let axis=ndim-1;axis>=0;axis--){if(index2[axis]=index2[axis]+1,aOff+=aStrides[axis],bOff+=bStrides[axis],index2[axis]<outShape[axis])break;index2[axis]=0,aOff-=outShape[axis]*aStrides[axis],bOff-=outShape[axis]*bStrides[axis]}}}return out}add(other){return this.#binary("add",other)}sub(other){return this.#binary("sub",other)}mul(other){return this.#binary("mul",other)}div(other){return this.#binary("div",other)}sqrt(){return this.#unaryFloat(Math.sqrt,"sqrt")}log(){return this.#unaryFloat(Math.log,"log")}#unaryFloat(fn,name="this elementwise op"){if(assertNotHalf(this.dtype,name),isBigIntDType2(this.dtype))throw TypeError(`${name} requires a float dtype, got ${this.dtype}`);let out=_a3.zeros(this.shape,{dtype:this.dtype}),outData=out.data,size=this.size;if(this.isContiguous){let src=this.data,off=this.offset;for(let i3=0;i3<size;i3++)outData[i3]=fn(src[off+i3]);return out}let i2=0;for(let off of this.elementOffsets())outData[i2++]=fn(this.data[off]);return out}relu(){return this.#unaryFloat((v)=>v>0?v:0)}sigmoid(){return this.#unaryFloat((v)=>1/(1+Math.exp(-v)))}gelu(options={}){let approximate=checkGeluApproximate(options.approximate);return this.#unaryFloat(approximate==="tanh"?geluTanh:geluErf)}erf(){return this.#unaryFloat(erf)}erfc(){return this.#unaryFloat(erfc)}exp(){return this.#unaryFloat((v)=>Math.exp(v))}pow(exponent){return this.#unaryFloat((v)=>Math.pow(v,exponent))}abs(){assertNotHalf(this.dtype,"abs");let out=_a3.zeros(this.shape,{dtype:this.dtype});if(isBigIntDType2(this.dtype)){let outData2=out.data,i3=0;for(let off of this.elementOffsets()){let v=this.data[off];outData2[i3++]=v<0n?-v:v}return out}let outData=out.data;if(this.isContiguous){let src=this.data,off=this.offset;for(let j=0;j<this.size;j++)outData[j]=Math.abs(src[off+j]);return out}let i2=0;for(let off of this.elementOffsets())outData[i2++]=Math.abs(this.data[off]);return out}neg(){return this.mul(-1)}sign(){return this.#unaryFloat((v)=>Math.sign(v))}sin(){return this.#unaryFloat((v)=>Math.sin(v))}cos(){return this.#unaryFloat((v)=>Math.cos(v))}tan(){return this.#unaryFloat((v)=>Math.tan(v))}asin(){return this.#unaryFloat((v)=>Math.asin(v))}acos(){return this.#unaryFloat((v)=>Math.acos(v))}atan(){return this.#unaryFloat((v)=>Math.atan(v))}sinh(){return this.#unaryFloat((v)=>Math.sinh(v))}cosh(){return this.#unaryFloat((v)=>Math.cosh(v))}tanh(){return this.#unaryFloat((v)=>Math.tanh(v))}asinh(){return this.#unaryFloat((v)=>Math.asinh(v))}acosh(){return this.#unaryFloat((v)=>Math.acosh(v))}atanh(){return this.#unaryFloat((v)=>Math.atanh(v))}cbrt(){return this.#unaryFloat((v)=>Math.cbrt(v))}log10(){return this.#unaryFloat((v)=>Math.log10(v))}log2(){return this.#unaryFloat((v)=>Math.log2(v))}expm1(){return this.#unaryFloat((v)=>Math.expm1(v))}log1p(){return this.#unaryFloat((v)=>Math.log1p(v))}floor(){return this.#unaryFloat((v)=>Math.floor(v))}ceil(){return this.#unaryFloat((v)=>Math.ceil(v))}round(){return this.#unaryFloat((v)=>Math.round(v))}trunc(){return this.#unaryFloat((v)=>Math.trunc(v))}softmax(axis=-1){if(assertNotHalf(this.dtype,"softmax"),isBigIntDType2(this.dtype))throw TypeError(`softmax requires a float dtype, got ${this.dtype}`);let ax=this.#normalizeAxis(axis);if((this.dtype==="f32"||this.dtype==="f64")&&this.isContiguous&&this.shape[ax]>0){let out=_a3.zeros(this.shape,{dtype:this.dtype}),[outer,dim2,inner]=splitAround(this.shape,ax);return softmaxAxis(this.data,this.offset,outer,dim2,inner,out.data,this.dtype==="f32"),out}let expd=this.sub(this.max(ax).unsqueeze(ax).broadcastTo(this.shape).contiguous()).#unaryFloat(Math.exp);return expd.div(expd.sum(ax).unsqueeze(ax).broadcastTo(this.shape).contiguous())}matmul(other){if(assertNotHalf(this.dtype,"matmul"),other.dtype!==this.dtype)throw TypeError(`dtype mismatch: ${this.dtype} vs ${other.dtype} (no implicit promotion; cast() first)`);if(this.ndim===0||other.ndim===0)throw RangeError("matmul operands must have ndim >= 1 (scalars aren't matrices)");let lhsIs1D=this.ndim===1,rhsIs1D=other.ndim===1,lhsShape=lhsIs1D?[1,this.shape[0]]:[...this.shape],rhsShape=rhsIs1D?[other.shape[0],1]:[...other.shape],m=lhsShape[lhsShape.length-2],k=lhsShape[lhsShape.length-1],k2=rhsShape[rhsShape.length-2],n2=rhsShape[rhsShape.length-1];if(k!==k2)throw RangeError(`matmul: inner dimensions ${k} and ${k2} do not match (shapes [${this.shape}] @ [${other.shape}])`);let lhsBatch=lhsShape.slice(0,-2),rhsBatch=rhsShape.slice(0,-2),batchShape=broadcastShapes(lhsBatch,rhsBatch),fullOutShape=[...batchShape,m,n2],out=_a3.zeros(fullOutShape,{dtype:this.dtype}),lhsBatchStrides=broadcastStrides(lhsBatch,this.strides.slice(0,lhsBatch.length),batchShape),rhsBatchStrides=broadcastStrides(rhsBatch,other.strides.slice(0,rhsBatch.length),batchShape),lhsRowStride=this.strides[lhsIs1D?0:this.ndim-2],lhsColStride=this.strides[this.ndim-1],rhsRowStride=other.strides[other.ndim-(rhsIs1D?1:2)],rhsColStride=rhsIs1D?0:other.strides[other.ndim-1],batchSize=batchShape.reduce((a2,b)=>a2*b,1),batchIndex=Array(batchShape.length).fill(0),lhsBatchOffset=this.offset,rhsBatchOffset=other.offset,big=isBigIntDType2(this.dtype);if(!big){let packA=new Float64Array(m*k),packB=new Float64Array(n2*k),outIsF64=out.dtype==="f64",acc=outIsF64?out.data:new Float64Array(m*n2),lhsData=this.data,rhsData=other.data,packedA=-1,packedB=-1;for(let b=0;b<batchSize;b++){let outBase=b*m*n2;if(lhsBatchOffset!==packedA)packPanel(lhsData,lhsBatchOffset,lhsRowStride,lhsColStride,m,k,packA),packedA=lhsBatchOffset;if(rhsBatchOffset!==packedB)packPanel(rhsData,rhsBatchOffset,rhsColStride,rhsRowStride,n2,k,packB),packedB=rhsBatchOffset;if(outIsF64)gemmNT(packA,packB,acc,outBase,n2,m,n2,k);else gemmNT(packA,packB,acc,0,n2,m,n2,k),out.data.set(acc,outBase);for(let axis=batchShape.length-1;axis>=0;axis--){if(batchIndex[axis]=batchIndex[axis]+1,lhsBatchOffset+=lhsBatchStrides[axis],rhsBatchOffset+=rhsBatchStrides[axis],batchIndex[axis]<batchShape[axis])break;batchIndex[axis]=0,lhsBatchOffset-=batchShape[axis]*lhsBatchStrides[axis],rhsBatchOffset-=batchShape[axis]*rhsBatchStrides[axis]}}}for(let b=0;big&&b<batchSize;b++){let outBase=b*m*n2;for(let i2=0;i2<m;i2++){let lhsRowBase=lhsBatchOffset+i2*lhsRowStride;for(let j=0;j<n2;j++){let rhsColBase=rhsBatchOffset+j*rhsColStride;if(big){let acc=0n;for(let p=0;p<k;p++)acc+=this.data[lhsRowBase+p*lhsColStride]*other.data[rhsColBase+p*rhsRowStride];out.data[outBase+i2*n2+j]=acc}else{let acc=0;for(let p=0;p<k;p++)acc+=this.data[lhsRowBase+p*lhsColStride]*other.data[rhsColBase+p*rhsRowStride];out.data[outBase+i2*n2+j]=acc}}}for(let axis=batchShape.length-1;axis>=0;axis--){if(batchIndex[axis]=batchIndex[axis]+1,lhsBatchOffset+=lhsBatchStrides[axis],rhsBatchOffset+=rhsBatchStrides[axis],batchIndex[axis]<batchShape[axis])break;batchIndex[axis]=0,lhsBatchOffset-=batchShape[axis]*lhsBatchStrides[axis],rhsBatchOffset-=batchShape[axis]*rhsBatchStrides[axis]}}let tail2=[];if(!lhsIs1D)tail2.push(m);if(!rhsIs1D)tail2.push(n2);let resultShape=[...batchShape,...tail2];return resultShape.length===out.ndim?out:out.reshape(resultShape)}dot(other){if(this.ndim!==1||other.ndim!==1)throw RangeError(`dot expects two 1-D tensors, got ndim ${this.ndim} and ${other.ndim} (use matmul for higher rank)`);return this.matmul(other)}cast(dtype){let out=_a3.zeros(this.shape,{dtype}),outBig=isBigIntDType2(dtype),srcBig=isBigIntDType2(this.dtype);if(!outBig&&!srcBig&&!isHalfDType(this.dtype)&&!isHalfDType(dtype)&&this.isContiguous){let src=this.data.subarray(this.offset,this.offset+this.size),o3=out.data;if(dtype==="bool")for(let i2=0;i2<src.length;i2++)o3[i2]=src[i2]!==0?1:0;else o3.set(src);return out}let targetOffsets=out.elementOffsets(),sourceOffsets=this.elementOffsets(),t=targetOffsets.next(),s2=sourceOffsets.next(),srcDtype=this.dtype,outHalf=isHalfDType(dtype)?dtype:void 0;while(!t.done&&!s2.done){let raw=decodeElement(srcDtype,this.data[s2.value]),converted;if(outBig)converted=srcBig?raw:BigInt(Math.trunc(raw));else{let num=srcBig?Number(raw):raw;converted=dtype==="bool"?num!==0?1:0:dtype==="f32"||dtype==="f64"?num:outHalf?encodeHalf(outHalf,num):Math.trunc(num)}out.data[t.value]=converted,t=targetOffsets.next(),s2=sourceOffsets.next()}return out}#compare(op,other){assertNotHalf(this.dtype,op);let rhs=typeof other==="number"?_a3.full([],other,{dtype:this.dtype}):other;if(rhs.dtype!==this.dtype)throw TypeError(`dtype mismatch: ${this.dtype} vs ${rhs.dtype} (no implicit promotion; cast() first)`);let outShape=broadcastShapes(this.shape,rhs.shape),out=_a3.zeros(outShape,{dtype:"bool"}),big=isBigIntDType2(this.dtype);if(!big&&sameShape(this.shape,outShape)&&this.isContiguous&&(rhs.size===1||sameShape(rhs.shape,outShape)&&rhs.isContiguous))return compareFlat(CMP_CODE[op],this.data,this.offset,rhs.data,rhs.offset,rhs.size===1?0:1,out.data,out.size),out;let aStrides=broadcastStrides(this.shape,this.strides,outShape),bStrides=broadcastStrides(rhs.shape,rhs.strides,outShape),ndim=outShape.length,index2=Array(ndim).fill(0),aOff=this.offset,bOff=rhs.offset,numFn=NUMBER_CMP[op],bigFn=BIGINT_CMP[op],outData=out.data;for(let i2=0;i2<out.size;i2++){outData[i2]=big?bigFn(this.data[aOff],rhs.data[bOff])?1:0:numFn(this.data[aOff],rhs.data[bOff])?1:0;for(let axis=ndim-1;axis>=0;axis--){if(index2[axis]=index2[axis]+1,aOff+=aStrides[axis],bOff+=bStrides[axis],index2[axis]<outShape[axis])break;index2[axis]=0,aOff-=outShape[axis]*aStrides[axis],bOff-=outShape[axis]*bStrides[axis]}}return out}eq(other){return this.#compare("eq",other)}ne(other){return this.#compare("ne",other)}lt(other){return this.#compare("lt",other)}lte(other){return this.#compare("lte",other)}gt(other){return this.#compare("gt",other)}gte(other){return this.#compare("gte",other)}#assertBool(name){if(this.dtype!=="bool")throw TypeError(`${name} expects a bool tensor, got ${this.dtype}`)}logicalAnd(other){this.#assertBool("logicalAnd"),other.#assertBool("logicalAnd");let outShape=broadcastShapes(this.shape,other.shape),out=_a3.zeros(outShape,{dtype:"bool"}),aStrides=broadcastStrides(this.shape,this.strides,outShape),bStrides=broadcastStrides(other.shape,other.strides,outShape),index2=Array(outShape.length).fill(0),aOff=this.offset,bOff=other.offset,outData=out.data;for(let i2=0;i2<out.size;i2++){outData[i2]=this.data[aOff]!==0&&other.data[bOff]!==0?1:0;for(let axis=outShape.length-1;axis>=0;axis--){if(index2[axis]=index2[axis]+1,aOff+=aStrides[axis],bOff+=bStrides[axis],index2[axis]<outShape[axis])break;index2[axis]=0,aOff-=outShape[axis]*aStrides[axis],bOff-=outShape[axis]*bStrides[axis]}}return out}logicalOr(other){this.#assertBool("logicalOr"),other.#assertBool("logicalOr");let outShape=broadcastShapes(this.shape,other.shape),out=_a3.zeros(outShape,{dtype:"bool"}),aStrides=broadcastStrides(this.shape,this.strides,outShape),bStrides=broadcastStrides(other.shape,other.strides,outShape),index2=Array(outShape.length).fill(0),aOff=this.offset,bOff=other.offset,outData=out.data;for(let i2=0;i2<out.size;i2++){outData[i2]=this.data[aOff]!==0||other.data[bOff]!==0?1:0;for(let axis=outShape.length-1;axis>=0;axis--){if(index2[axis]=index2[axis]+1,aOff+=aStrides[axis],bOff+=bStrides[axis],index2[axis]<outShape[axis])break;index2[axis]=0,aOff-=outShape[axis]*aStrides[axis],bOff-=outShape[axis]*bStrides[axis]}}return out}logicalNot(){this.#assertBool("logicalNot");let out=_a3.zeros(this.shape,{dtype:"bool"}),outData=out.data,sourceOffsets=this.elementOffsets(),i2=0;for(let off of sourceOffsets)outData[i2++]=this.data[off]===0?1:0;return out}any(axis){return this.#boolReduce(axis,!1)}all(axis){return this.#boolReduce(axis,!0)}#boolReduce(axis,requireAll){if(assertNotHalf(this.dtype,"any/all"),axis===void 0){let result=requireAll;for(let off of this.elementOffsets()){let truthy=this.data[off]!=0;result=requireAll?result&&truthy:result||truthy}let out2=_a3.zeros([],{dtype:"bool"});return out2.data[0]=result?1:0,out2}let ax=this.#normalizeAxis(axis),outShape=this.shape.filter((_,i2)=>i2!==ax),reduceDim=this.shape[ax],reduceStride=this.strides[ax],out=_a3.zeros(outShape,{dtype:"bool"}),leadStrides=this.strides.filter((_,i2)=>i2!==ax),leadSize=shapeSize(outShape),index2=Array(outShape.length).fill(0),base2=this.offset,outData=out.data;for(let i2=0;i2<leadSize;i2++){let result=requireAll;for(let j=0;j<reduceDim;j++){let truthy=this.data[base2+j*reduceStride]!=0;result=requireAll?result&&truthy:result||truthy}outData[i2]=result?1:0;for(let a2=outShape.length-1;a2>=0;a2--){if(index2[a2]=index2[a2]+1,base2+=leadStrides[a2],index2[a2]<outShape[a2])break;index2[a2]=0,base2-=outShape[a2]*leadStrides[a2]}}return out}sum(axis){return this.#reduce(axis,!1)}mean(axis){return this.#reduce(axis,!0)}#reduce(axis,mean){assertNotHalf(this.dtype,mean?"mean":"sum");let big=isBigIntDType2(this.dtype),isFloat3=this.dtype==="f32"||this.dtype==="f64",outDtype=mean&&!isFloat3?"f64":this.dtype;if(!big&&this.isContiguous){let ax2=axis===void 0?-1:this.#normalizeAxis(axis),out2=_a3.zeros(ax2===-1?[]:this.shape.filter((_,i2)=>i2!==ax2),{dtype:outDtype}),[outer,dim2,inner]=ax2===-1?[1,this.size,1]:splitAround(this.shape,ax2);return sumAxis(this.data,this.offset,outer,dim2,inner,out2.data,mean),out2}if(axis===void 0){let count3=this.size,out2=_a3.zeros([],{dtype:outDtype});if(big){let acc=0n;for(let off of this.elementOffsets())acc+=this.data[off];if(mean)out2.data[0]=Number(acc)/count3;else out2.data[0]=acc}else{let acc=0;for(let off of this.elementOffsets())acc+=this.data[off];out2.data[0]=mean?acc/count3:acc}return out2}let ax=axis;if(ax<0)ax+=this.ndim;if(ax<0||ax>=this.ndim)throw RangeError(`axis ${axis} out of range for ndim ${this.ndim}`);let outShape=this.shape.filter((_,i2)=>i2!==ax),reduceDim=this.shape[ax],reduceStride=this.strides[ax],out=_a3.zeros(outShape,{dtype:outDtype}),leadShape=outShape,leadStrides=this.strides.filter((_,i2)=>i2!==ax),leadSize=shapeSize(outShape),index2=Array(leadShape.length).fill(0),base2=this.offset;for(let i2=0;i2<leadSize;i2++){if(big){let acc=0n;for(let j=0;j<reduceDim;j++)acc+=this.data[base2+j*reduceStride];if(mean)out.data[i2]=Number(acc)/reduceDim;else out.data[i2]=acc}else{let acc=0;for(let j=0;j<reduceDim;j++)acc+=this.data[base2+j*reduceStride];out.data[i2]=mean?acc/reduceDim:acc}for(let a2=leadShape.length-1;a2>=0;a2--){if(index2[a2]=index2[a2]+1,base2+=leadStrides[a2],index2[a2]<leadShape[a2])break;index2[a2]=0,base2-=leadShape[a2]*leadStrides[a2]}}return out}min(axis){return this.#extremum(axis,!1)}max(axis){return this.#extremum(axis,!0)}#extremum(axis,wantMax){assertNotHalf(this.dtype,wantMax?"max":"min");let label=wantMax?"max":"min",big=isBigIntDType2(this.dtype),better=(v,best)=>big?wantMax?v>best:v<best:wantMax?v>best:v<best;if(!big&&this.isContiguous){let ax2=axis===void 0?-1:this.#normalizeAxis(axis),[outer,dim2,inner]=ax2===-1?[1,this.size,1]:splitAround(this.shape,ax2);if(dim2===0)throw RangeError(ax2===-1?`${label} of an empty tensor`:`${label} of an empty axis`);let out2=_a3.zeros(ax2===-1?[]:this.shape.filter((_,i2)=>i2!==ax2),{dtype:this.dtype});return extremumAxis(this.data,this.offset,outer,dim2,inner,out2.data,wantMax),out2}if(axis===void 0){if(this.size===0)throw RangeError(`${label} of an empty tensor`);let best;for(let off of this.elementOffsets()){let v=this.data[off];if(best===void 0||better(v,best))best=v}let out2=_a3.zeros([],{dtype:this.dtype});return out2.data[0]=best,out2}let ax=this.#normalizeAxis(axis),reduceDim=this.shape[ax];if(reduceDim===0)throw RangeError(`${label} of an empty axis`);let outShape=this.shape.filter((_,i2)=>i2!==ax);if(!big&&this.isContiguous){let fast=_a3.zeros(outShape,{dtype:"i32"}),[outer,dim2,inner]=splitAround(this.shape,ax);return argExtremumAxis(this.data,this.offset,outer,dim2,inner,fast.data,wantMax),fast}let reduceStride=this.strides[ax],out=_a3.zeros(outShape,{dtype:this.dtype}),leadStrides=this.strides.filter((_,i2)=>i2!==ax),leadSize=shapeSize(outShape),index2=Array(outShape.length).fill(0),base2=this.offset;for(let i2=0;i2<leadSize;i2++){let best=this.data[base2];for(let j=1;j<reduceDim;j++){let v=this.data[base2+j*reduceStride];if(better(v,best))best=v}out.data[i2]=best;for(let a2=outShape.length-1;a2>=0;a2--){if(index2[a2]=index2[a2]+1,base2+=leadStrides[a2],index2[a2]<outShape[a2])break;index2[a2]=0,base2-=outShape[a2]*leadStrides[a2]}}return out}argmin(axis){return this.#argExtremum(axis,!1)}argmax(axis){return this.#argExtremum(axis,!0)}#argExtremum(axis,wantMax){assertNotHalf(this.dtype,wantMax?"argmax":"argmin");let label=wantMax?"argmax":"argmin",big=isBigIntDType2(this.dtype),better=(v,best)=>big?wantMax?v>best:v<best:wantMax?v>best:v<best;if(axis===void 0){if(this.size===0)throw RangeError(`${label} of an empty tensor`);let best,bestIndex=0,i2=0;for(let off of this.elementOffsets()){let v=this.data[off];if(best===void 0||better(v,best))best=v,bestIndex=i2;i2++}let out2=_a3.zeros([],{dtype:"i32"});return out2.data[0]=bestIndex,out2}let ax=this.#normalizeAxis(axis),reduceDim=this.shape[ax];if(reduceDim===0)throw RangeError(`${label} of an empty axis`);let outShape=this.shape.filter((_,i2)=>i2!==ax);if(!big&&this.isContiguous){let fast=_a3.zeros(outShape,{dtype:"i32"}),[outer,dim2,inner]=splitAround(this.shape,ax);return argExtremumAxis(this.data,this.offset,outer,dim2,inner,fast.data,wantMax),fast}let reduceStride=this.strides[ax],out=_a3.zeros(outShape,{dtype:"i32"}),leadStrides=this.strides.filter((_,i2)=>i2!==ax),leadSize=shapeSize(outShape),index2=Array(outShape.length).fill(0),base2=this.offset,outData=out.data;for(let i2=0;i2<leadSize;i2++){let best=this.data[base2],bestIndex=0;for(let j=1;j<reduceDim;j++){let v=this.data[base2+j*reduceStride];if(better(v,best))best=v,bestIndex=j}outData[i2]=bestIndex;for(let a2=outShape.length-1;a2>=0;a2--){if(index2[a2]=index2[a2]+1,base2+=leadStrides[a2],index2[a2]<outShape[a2])break;index2[a2]=0,base2-=outShape[a2]*leadStrides[a2]}}return out}variance(axis,options={}){assertNotHalf(this.dtype,"variance");let ddof=options.ddof??0,working=this.dtype==="f32"||this.dtype==="f64"?this:this.cast("f64");if(working.isContiguous&&working.size>0){let ax=axis===void 0?-1:this.#normalizeAxis(axis),[outer,dim2,inner]=ax===-1?[1,working.size,1]:splitAround(working.shape,ax);if(dim2-ddof>0){let out=_a3.zeros(ax===-1?[]:working.shape.filter((_,i2)=>i2!==ax),{dtype:working.dtype});return varianceAxis(working.data,working.offset,outer,dim2,inner,out.data,dim2-ddof,working.dtype==="f32"),out}}let meanTensor=working.mean(axis),meanBroadcastable;if(axis===void 0)meanBroadcastable=meanTensor;else{let ax=this.#normalizeAxis(axis),expanded=[...meanTensor.shape];expanded.splice(ax,0,1),meanBroadcastable=meanTensor.reshape(expanded)}let centered=working.sub(meanBroadcastable),count3=axis===void 0?this.size:this.shape[this.#normalizeAxis(axis)],denom=count3-ddof;if(denom<=0)throw RangeError(`variance: ddof=${ddof} >= count=${count3}`);return centered.mul(centered).sum(axis).div(denom)}std(axis,options={}){return this.variance(axis,options).sqrt()}cumsum(axis){return this.#cumulative(axis,"add")}cumprod(axis){return this.#cumulative(axis,"mul")}#cumulative(axis,op){assertNotHalf(this.dtype,op==="add"?"cumsum":"cumprod");let source=axis===void 0?this.#contiguousView().reshape([this.size]):this,ax=axis===void 0?0:source.#normalizeAxis(axis),big=isBigIntDType2(source.dtype),out=_a3.zeros(source.shape,{dtype:source.dtype});if(!big&&op==="add"&&source.isContiguous){let[outer,dim2,inner]=splitAround(source.shape,ax);return cumsumAxis(source.data,source.offset,outer,dim2,inner,out.data),out}let scanDim=source.shape[ax],scanStrideIn=source.strides[ax],scanStrideOut=out.strides[ax],leadShape=source.shape.filter((_,i2)=>i2!==ax),leadStridesIn=source.strides.filter((_,i2)=>i2!==ax),leadStridesOut=out.strides.filter((_,i2)=>i2!==ax),leadSize=shapeSize(leadShape),index2=Array(leadShape.length).fill(0),baseIn=source.offset,baseOut=0;for(let i2=0;i2<leadSize;i2++){if(big){let acc=op==="add"?0n:1n;for(let j=0;j<scanDim;j++){let v=source.data[baseIn+j*scanStrideIn];acc=op==="add"?acc+v:acc*v,out.data[baseOut+j*scanStrideOut]=acc}}else{let acc=op==="add"?0:1;for(let j=0;j<scanDim;j++){let v=source.data[baseIn+j*scanStrideIn];acc=op==="add"?acc+v:acc*v,out.data[baseOut+j*scanStrideOut]=acc}}for(let a2=leadShape.length-1;a2>=0;a2--){if(index2[a2]=index2[a2]+1,baseIn+=leadStridesIn[a2],baseOut+=leadStridesOut[a2],index2[a2]<leadShape[a2])break;index2[a2]=0,baseIn-=leadShape[a2]*leadStridesIn[a2],baseOut-=leadShape[a2]*leadStridesOut[a2]}}return out}sort(axis=-1){return this.#sortAlong(axis).values}argsort(axis=-1){return this.#sortAlong(axis).indices}#sortAlong(axis){assertNotHalf(this.dtype,"sort/argsort/topK");let ax=this.#normalizeAxis(axis),reduceDim=this.shape[ax],reduceStride=this.strides[ax],values=_a3.zeros(this.shape,{dtype:this.dtype}),indices=_a3.zeros(this.shape,{dtype:"i32"}),outAxisStride=values.strides[ax],leadShape=this.shape.filter((_,i2)=>i2!==ax),leadStridesIn=this.strides.filter((_,i2)=>i2!==ax),leadStridesOut=values.strides.filter((_,i2)=>i2!==ax),leadSize=shapeSize(leadShape),index2=Array(leadShape.length).fill(0),baseIn=this.offset,baseOut=0,big=isBigIntDType2(this.dtype),indicesData=indices.data;for(let i2=0;i2<leadSize;i2++){let positions=Array.from({length:reduceDim},(_,j)=>j);if(big)positions.sort((p,q2)=>{let a2=this.data[baseIn+p*reduceStride],b=this.data[baseIn+q2*reduceStride];return a2<b?-1:a2>b?1:0});else positions.sort((p,q2)=>this.data[baseIn+p*reduceStride]-this.data[baseIn+q2*reduceStride]);for(let k=0;k<reduceDim;k++){let srcPos=positions[k];values.data[baseOut+k*outAxisStride]=this.data[baseIn+srcPos*reduceStride],indicesData[baseOut+k*outAxisStride]=srcPos}for(let a2=leadShape.length-1;a2>=0;a2--){if(index2[a2]=index2[a2]+1,baseIn+=leadStridesIn[a2],baseOut+=leadStridesOut[a2],index2[a2]<leadShape[a2])break;index2[a2]=0,baseIn-=leadShape[a2]*leadStridesIn[a2],baseOut-=leadShape[a2]*leadStridesOut[a2]}}return{values,indices}}topK(k,options={}){let axis=options.axis??-1,largest=options.largest??!0,ax=this.#normalizeAxis(axis),dim2=this.shape[ax];if(!Number.isInteger(k)||k<=0||k>dim2)throw RangeError(`topK: k=${k} out of range for axis size ${dim2}`);let{values,indices}=this.#sortAlong(axis),specs=Array(this.ndim).fill(null);return specs[ax]=largest?{start:-1,end:-(k+1),step:-1}:{start:0,end:k},{values:values.slice(...specs),indices:indices.slice(...specs)}}toNpy(){let packed=this.contiguous();return serializeNpy({data:packed.data.length===packed.size?packed.data:packed.data.slice(packed.offset,packed.offset+packed.size),shape:[...packed.shape],dtype:packed.dtype})}static fromNpy(bytes,options={}){let{data,shape,dtype}=parseNpy(bytes,options);return _a3.fromTypedArray(data,shape,{dtype})}}var _a3,BINARY_CODE,NUMBER_OPS,BIGINT_OPS,CMP_CODE,NUMBER_CMP,BIGINT_CMP;var init_dist18=__esm(()=>{init_dtype();init_npy();init_dist17();init_dist17();BINARY_CODE={add:OP_ADD,sub:OP_SUB,mul:OP_MUL,div:OP_DIV},NUMBER_OPS={add:(a2,b)=>a2+b,sub:(a2,b)=>a2-b,mul:(a2,b)=>a2*b,div:(a2,b)=>a2/b},BIGINT_OPS={add:(a2,b)=>a2+b,sub:(a2,b)=>a2-b,mul:(a2,b)=>a2*b},CMP_CODE={eq:CMP_EQ,ne:CMP_NE,lt:CMP_LT,lte:CMP_LTE,gt:CMP_GT,gte:CMP_GTE};NUMBER_CMP={eq:(a2,b)=>a2===b,ne:(a2,b)=>a2!==b,lt:(a2,b)=>a2<b,lte:(a2,b)=>a2<=b,gt:(a2,b)=>a2>b,gte:(a2,b)=>a2>=b},BIGINT_CMP={eq:(a2,b)=>a2===b,ne:(a2,b)=>a2!==b,lt:(a2,b)=>a2<b,lte:(a2,b)=>a2<=b,gt:(a2,b)=>a2>b,gte:(a2,b)=>a2>=b};_a3=Tensor});function unaryFlat(op,x,xo,o3,oo,n2){switch(op){case UN_EXP:for(let i2=0;i2<n2;i2++)o3[oo+i2]=Math.exp(x[xo+i2]);break;case UN_LOG:for(let i2=0;i2<n2;i2++)o3[oo+i2]=Math.log(x[xo+i2]);break;case UN_RELU:for(let i2=0;i2<n2;i2++){let v=x[xo+i2];o3[oo+i2]=v>0?v:0}break;case UN_GELU:for(let i2=0;i2<n2;i2++)o3[oo+i2]=geluErf(x[xo+i2]);break;case UN_SQRT:for(let i2=0;i2<n2;i2++)o3[oo+i2]=Math.sqrt(x[xo+i2]);break;case UN_RSQRT:for(let i2=0;i2<n2;i2++)o3[oo+i2]=1/Math.sqrt(x[xo+i2]);break;case UN_TANH:for(let i2=0;i2<n2;i2++)o3[oo+i2]=Math.tanh(x[xo+i2]);break;case UN_SIGMOID:for(let i2=0;i2<n2;i2++){let v=x[xo+i2];if(v>=0)o3[oo+i2]=1/(1+Math.exp(-v));else{let e=Math.exp(v);o3[oo+i2]=e/(1+e)}}break;case UN_ERF:for(let i2=0;i2<n2;i2++)o3[oo+i2]=erf(x[xo+i2]);break;case UN_NEG:for(let i2=0;i2<n2;i2++)o3[oo+i2]=-x[xo+i2];break;case UN_ABS:for(let i2=0;i2<n2;i2++)o3[oo+i2]=Math.abs(x[xo+i2]);break;default:throw RangeError(`unaryFlat: unknown op ${op}`)}}function linearNT(X,xo,rows,K,W,N,bias,out,oo=0){let pw=new Float64Array(N*K);packPanel(W,0,K,1,N,K,pw);let rb=Math.min(ROW_BLOCK,rows),pa=new Float64Array(rb*K),acc=new Float64Array(rb*N);for(let r0=0;r0<rows;r0+=rb){let m=Math.min(rb,rows-r0);packPanel(X,xo+r0*K,K,1,m,K,pa),gemmNT(pa,pw,acc,0,N,m,N,K);let base2=oo+r0*N;if(bias)for(let i2=0;i2<m;i2++){let a2=i2*N,o3=base2+a2;for(let j=0;j<N;j++)out[o3+j]=acc[a2+j]+bias[j]}else if(m===rb)out.set(acc,base2);else out.set(acc.subarray(0,m*N),base2)}}function layerNormRows(x,xo,rows,D,weight,bias,eps,o3,oo=0){for(let r=0;r<rows;r++){let s2=xo+r*D,d=oo+r*D,mean=0;for(let j=0;j<D;j++)mean+=x[s2+j];mean/=D;let v=0;for(let j=0;j<D;j++){let c3=x[s2+j]-mean;v+=c3*c3}let inv=1/Math.sqrt(v/D+eps);if(weight&&bias)for(let j=0;j<D;j++)o3[d+j]=(x[s2+j]-mean)*inv*weight[j]+bias[j];else if(weight)for(let j=0;j<D;j++)o3[d+j]=(x[s2+j]-mean)*inv*weight[j];else if(bias)for(let j=0;j<D;j++)o3[d+j]=(x[s2+j]-mean)*inv+bias[j];else for(let j=0;j<D;j++)o3[d+j]=(x[s2+j]-mean)*inv}}function ropeHalf(x,xo,BH,L,Dh,base2,o3,oo=0){let half=Dh>>1,lb=Math.fround(Math.log2(base2)),cos=new Float64Array(L*half),sin=new Float64Array(L*half);for(let i2=0;i2<half;i2++){let invf=Math.fround(2**Math.fround(-Math.fround(i2/half)*lb));for(let p=0;p<L;p++){let th=Math.fround(p*invf);cos[p*half+i2]=Math.cos(th),sin[p*half+i2]=Math.sin(th)}}for(let bh=0;bh<BH;bh++)for(let p=0;p<L;p++){let s2=xo+(bh*L+p)*Dh,d=oo+(bh*L+p)*Dh,t=p*half;for(let i2=0;i2<half;i2++){let x1=x[s2+i2],x2=x[s2+half+i2],c3=cos[t+i2],sn=sin[t+i2];o3[d+i2]=x1*c3-x2*sn,o3[d+half+i2]=x2*c3+x1*sn}}}function attention(Q,K,V,B,H,Hk,Lq,Lk,Dh,Dv,scale,mask,out){let rep=H/Hk,pq=new Float64Array(Lq*Dh),pk=new Float64Array(Lk*Dh),pvt=new Float64Array(Dv*Lk),S=new Float64Array(Lq*Lk),acc=new Float64Array(Lq*Dv),M=mask?.data??null,[msB,msH,msI,msJ]=mask?.strides??[0,0,0,0],isBool=mask?.boolean??!0,packedKV=-1;for(let b=0;b<B;b++)for(let h2=0;h2<H;h2++){let kvh=b*Hk+Math.floor(h2/rep);if(packPanel(Q,(b*H+h2)*Lq*Dh,Dh,1,Lq,Dh,pq),kvh!==packedKV)packPanel(K,kvh*Lk*Dh,Dh,1,Lk,Dh,pk),packPanel(V,kvh*Lk*Dv,1,Dv,Dv,Lk,pvt),packedKV=kvh;gemmNT(pq,pk,S,0,Lk,Lq,Lk,Dh);for(let i2=0;i2<Lq;i2++){let row=i2*Lk,mo=b*msB+h2*msH+i2*msI,m=-1/0;for(let j=0;j<Lk;j++){let s2=S[row+j]*scale;if(M){let mv=M[mo+j*msJ];if(isBool){if(!mv)s2=-1/0}else s2+=mv}if(S[row+j]=s2,s2>m)m=s2}if(m===-1/0){S.fill(0,row,row+Lk);continue}let sum=0;for(let j=0;j<Lk;j++){let e=Math.exp(S[row+j]-m);S[row+j]=e,sum+=e}let inv=1/sum;for(let j=0;j<Lk;j++)S[row+j]*=inv}gemmNT(S,pvt,acc,0,Dv,Lq,Dv,Lk),out.set(acc,(b*H+h2)*Lq*Dv)}}function gegluRows(x,xo,rows,D,o3,oo=0){for(let r=0;r<rows;r++){let s2=xo+r*2*D,d=oo+r*D;for(let j=0;j<D;j++)o3[d+j]=geluErf(x[s2+j])*x[s2+D+j]}}function maskedMeanPool(x,B,L,D,mask,o3){let acc=new Float64Array(D);for(let b=0;b<B;b++){acc.fill(0);let cnt=0;for(let l=0;l<L;l++){if(!mask[b*L+l])continue;cnt++;let s2=(b*L+l)*D;for(let j=0;j<D;j++)acc[j]+=x[s2+j]}let inv=1/Math.max(cnt,1);for(let j=0;j<D;j++)o3[b*D+j]=acc[j]*inv}}function takeRows(table3,rowLen,nRows,idx,o3){let sameKind=table3.constructor===o3.constructor;for(let i2=0;i2<idx.length;i2++){let r=idx[i2];if(!(r>=0&&r<nRows))throw RangeError(`takeRows: row index ${r} out of range [0, ${nRows})`);let s2=r*rowLen,d=i2*rowLen;if(sameKind)o3.set(table3.subarray(s2,s2+rowLen),d);else for(let j=0;j<rowLen;j++)o3[d+j]=table3[s2+j]}}var UN_EXP=0,UN_LOG=1,UN_RELU=2,UN_GELU=3,UN_SQRT=4,UN_RSQRT=5,UN_TANH=6,UN_SIGMOID=7,UN_ERF=8,UN_NEG=9,UN_ABS=10,ROW_BLOCK=256;var init_nn_kernels=__esm(()=>{init_dist17()});var init_public_kernels=__esm(()=>{init_nn_kernels()});class CpuTensor{shape;dtype;#data;constructor(shape,dtype,data){this.shape=shape,this.dtype=dtype,this.#data=data}get data(){let d=this.#data;if(d===null)throw Error("tensor-cpu: tensor used after dispose");return d}get disposed(){return this.#data===null}_release(){this.#data=null}}function createCpuBackend(){return new CpuBackendImpl}function normAxis(axis,rank){let a2=axis<0?axis+rank:axis;if(!Number.isInteger(a2)||a2<0||a2>=rank)throw RangeError(`tensor-cpu: axis ${axis} out of range for rank ${rank}`);return a2}function stridesOf(shape){let s2=Array(shape.length),acc=1;for(let i2=shape.length-1;i2>=0;i2--)s2[i2]=acc,acc*=shape[i2];return s2}function sameShape2(a2,b){if(a2.length!==b.length)return!1;for(let i2=0;i2<a2.length;i2++)if(a2[i2]!==b[i2])return!1;return!0}function alloc(dtype,n2){return dtype==="f32"?new Float32Array(n2):dtype==="i32"?new Int32Array(n2):new Uint8Array(n2)}function around(shape,a2){let outer=1,inner=1;for(let i2=0;i2<a2;i2++)outer*=shape[i2];for(let i2=a2+1;i2<shape.length;i2++)inner*=shape[i2];return[outer,shape[a2],inner]}function reducedShape(shape,a2,keepDims){return keepDims?shape.map((d,i2)=>i2===a2?1:d):shape.filter((_,i2)=>i2!==a2)}function broadcastRows(outShape,shapes,row){let rank=outShape.length,n2=rank?outShape[rank-1]:1,strides=shapes.map((s2)=>alignedStrides(s2,outShape)),rows=strides.map((st)=>rowOffsets(outShape,st)),steps=strides.map((st)=>rank?st[rank-1]:0),offs=Array(shapes.length),count3=rows[0].length;for(let r=0;r<count3;r++){for(let k=0;k<rows.length;k++)offs[k]=rows[k][r];row(offs,steps,r*n2,n2)}}class CpuBackendImpl{name="cpu";#scopes=[];supports(dtype){return dtype==="f32"||dtype==="i32"||dtype==="bool"}#make(shape,dtype,data){let t=new CpuTensor(Object.freeze([...shape]),dtype,data),top=this.#scopes[this.#scopes.length-1];if(top)top.add(t);return t}async fromHost(t){return this.#upload(t)}#upload(t){let n2=sizeOf(t.shape);if(t.data.length!==n2)throw RangeError(`tensor-cpu: fromHost ${t.data.length} values for shape [${t.shape}]`);switch(t.dtype){case"f32":return this.#make(t.shape,"f32",Float32Array.from(t.data));case"f16":case"bf16":return this.#make(t.shape,"f32",toF322(t));case"i32":return this.#make(t.shape,"i32",Int32Array.from(t.data));case"bool":{let out=new Uint8Array(n2);return compareStrided(CMP_NE,t.data,0,1,ZERO,0,0,out,0,n2),this.#make(t.shape,"bool",out)}default:throw TypeError(`tensor-cpu: fromHost: unknown dtype ${String(t.dtype)}`)}}async read(t){return{dtype:t.dtype,shape:[...t.shape],data:t.data.slice()}}dispose(t){t._release()}scope(fn){let set2=new Set;this.#scopes.push(set2);let result;try{result=fn()}catch(e){this.#scopes.pop();for(let t of set2)t._release();throw e}this.#scopes.pop();let keep=new Set,visit2=(v)=>{if(v instanceof CpuTensor)keep.add(v)};if(result instanceof CpuTensor)keep.add(result);else if(Array.isArray(result))result.forEach(visit2);else if(result&&typeof result==="object")Object.values(result).forEach(visit2);let parent=this.#scopes[this.#scopes.length-1];for(let t of set2)if(keep.has(t))parent?.add(t);else t._release();return result}flush(){}destroy(){for(let s2 of this.#scopes)for(let t of s2)t._release();this.#scopes.length=0}reshape(x,shape){let n2=sizeOf(x.shape),out=[...shape],neg=out.indexOf(-1);if(neg>=0){let known=1;out.forEach((d,i2)=>{if(i2!==neg)known*=d}),out[neg]=n2/known}if(sizeOf(out)!==n2||out.some((d)=>!Number.isInteger(d)||d<0))throw RangeError(`tensor-cpu: reshape [${x.shape}] -> [${shape}]`);return this.#make(out,x.dtype,x.data)}transpose(x,perm){let rank=x.shape.length;if(perm.length!==rank)throw RangeError(`tensor-cpu: transpose perm [${perm}] for rank ${rank}`);let p=perm.map((a2)=>normAxis(a2,rank));if(new Set(p).size!==rank)throw RangeError(`tensor-cpu: transpose perm [${perm}] is not a permutation`);let inStr=stridesOf(x.shape),outShape=p.map((a2)=>x.shape[a2]),out=alloc(x.dtype,x.data.length);if(out.length)stridedCopy(x.data,0,outShape,p.map((a2)=>inStr[a2]),out);return this.#make(outShape,x.dtype,out)}slice(x,begin,end){let rank=x.shape.length,inStr=stridesOf(x.shape),outShape=[],base2=0;for(let i2=0;i2<rank;i2++){let d=x.shape[i2],lo=i2<begin.length?begin[i2]:0,hi=i2<end.length?end[i2]:d;if(lo<0)lo+=d;if(hi<0)hi+=d;lo=Math.min(Math.max(lo,0),d),hi=Math.min(Math.max(hi,lo),d),base2+=lo*inStr[i2],outShape.push(hi-lo)}let out=alloc(x.dtype,sizeOf(outShape));if(out.length)stridedCopy(x.data,base2,outShape,inStr,out);return this.#make(outShape,x.dtype,out)}split(x,parts,axis){let a2=normAxis(axis,x.shape.length),d=x.shape[a2];if(!(parts>0)||d%parts)throw RangeError(`tensor-cpu: cannot split ${d} into ${parts}`);let step=d/parts,res=[];for(let p=0;p<parts;p++){let begin=x.shape.map((_,i2)=>i2===a2?p*step:0),end=x.shape.map((s2,i2)=>i2===a2?(p+1)*step:s2);res.push(this.slice(x,begin,end))}return res}concat(xs,axis){if(xs.length===0)throw RangeError("tensor-cpu: concat of nothing");let first=xs[0],rank=first.shape.length,a2=normAxis(axis,rank),dtype=first.dtype;for(let x of xs){if(x.shape.length!==rank)throw RangeError("tensor-cpu: concat rank mismatch");for(let i2=0;i2<rank;i2++)if(i2!==a2&&x.shape[i2]!==first.shape[i2])throw RangeError("tensor-cpu: concat shape mismatch");if(x.dtype==="f32")dtype="f32";else if(x.dtype==="i32"&&dtype==="bool")dtype="i32"}let outShape=[...first.shape];outShape[a2]=xs.reduce((s2,x)=>s2+x.shape[a2],0);let[outer,,inner]=around(outShape,a2),out=alloc(dtype,sizeOf(outShape)),rowLen=outShape[a2]*inner,colOff=0;for(let x of xs){let chunk=x.shape[a2]*inner,src=x.data;for(let o3=0;o3<outer;o3++)out.set(src.subarray(o3*chunk,(o3+1)*chunk),o3*rowLen+colOff);colOff+=chunk}return this.#make(outShape,dtype,out)}cast(x,dtype){if(dtype==="f16"||dtype==="bf16")throw TypeError(`tensor-cpu: ${dtype} is not supported (f32 reference backend)`);if(dtype!=="f32"&&dtype!=="i32"&&dtype!=="bool")throw TypeError(`tensor-cpu: unknown dtype ${String(dtype)}`);if(dtype===x.dtype)return this.#make(x.shape,dtype,x.data);let src=x.data,out=alloc(dtype,src.length);if(dtype==="bool")compareStrided(CMP_NE,src,0,1,ZERO,0,0,out,0,src.length);else out.set(src);return this.#make(x.shape,dtype,out)}#arith(a2,b,op){return a2.dtype==="f32"||b.dtype==="f32"||op===OP_DIV||op===OP_POW?"f32":"i32"}#binary(a2,b,op){let dtype=this.#arith(a2,b,op),A=a2.data,B=b.data;if(sameShape2(a2.shape,b.shape)){let out2=alloc(dtype,A.length);if(op<=OP_DIV)binaryFlat(op,A,0,B,0,out2,0,A.length);else binaryStrided(op,A,0,1,B,0,1,out2,0,A.length);return this.#make(a2.shape,dtype,out2)}let outShape=broadcastShapes(a2.shape,b.shape),out=alloc(dtype,sizeOf(outShape));if(out.length===0)return this.#make(outShape,dtype,out);if(op<=OP_DIV&&B.length===1&&sameShape2(a2.shape,outShape))return binaryScalarRight(op,A,0,B[0],out,0,out.length),this.#make(outShape,dtype,out);return broadcastRows(outShape,[a2.shape,b.shape],(o3,s2,oo,n2)=>binaryStrided(op,A,o3[0],s2[0],B,o3[1],s2[1],out,oo,n2)),this.#make(outShape,dtype,out)}add(a2,b){return this.#binary(a2,b,OP_ADD)}sub(a2,b){return this.#binary(a2,b,OP_SUB)}mul(a2,b){return this.#binary(a2,b,OP_MUL)}div(a2,b){return this.#binary(a2,b,OP_DIV)}maximum(a2,b){return this.#binary(a2,b,OP_MAXIMUM)}pow(a2,b){return this.#binary(a2,b,OP_POW)}where(cond,a2,b){let outShape=broadcastShapes(broadcastShapes(cond.shape,a2.shape),b.shape),dtype=a2.dtype==="f32"||b.dtype==="f32"?"f32":a2.dtype==="i32"||b.dtype==="i32"?"i32":"bool",out=alloc(dtype,sizeOf(outShape));if(out.length===0)return this.#make(outShape,dtype,out);let C=cond.data,A=a2.data,B=b.data;return broadcastRows(outShape,[cond.shape,a2.shape,b.shape],(o3,s2,oo,n2)=>whereStrided(C,o3[0],s2[0],A,o3[1],s2[1],B,o3[2],s2[2],out,oo,n2)),this.#make(outShape,dtype,out)}scale(x,s2){let src=x.data,out=new Float32Array(src.length);return binaryScalarRight(OP_MUL,src,0,s2,out,0,src.length),this.#make(x.shape,"f32",out)}#unaryF(x,op){let src=x.data,out=new Float32Array(src.length);return unaryFlat(op,src,0,out,0,src.length),this.#make(x.shape,"f32",out)}#unaryKeep(x,op){if(x.dtype==="f32")return this.#unaryF(x,op);let src=x.data,out=new Int32Array(src.length);return unaryFlat(op,src,0,out,0,src.length),this.#make(x.shape,"i32",out)}exp(x){return this.#unaryF(x,UN_EXP)}log(x){return this.#unaryF(x,UN_LOG)}relu(x){return this.#unaryF(x,UN_RELU)}gelu(x){return this.#unaryF(x,UN_GELU)}sqrt(x){return this.#unaryF(x,UN_SQRT)}rsqrt(x){return this.#unaryF(x,UN_RSQRT)}tanh(x){return this.#unaryF(x,UN_TANH)}sigmoid(x){return this.#unaryF(x,UN_SIGMOID)}erf(x){return this.#unaryF(x,UN_ERF)}neg(x){return this.#unaryKeep(x,UN_NEG)}abs(x){return this.#unaryKeep(x,UN_ABS)}#compare(a2,b,op){let outShape=broadcastShapes(a2.shape,b.shape),out=new Uint8Array(sizeOf(outShape));if(out.length===0)return this.#make(outShape,"bool",out);let A=a2.data,B=b.data;if(sameShape2(a2.shape,b.shape))compareStrided(op,A,0,1,B,0,1,out,0,out.length);else broadcastRows(outShape,[a2.shape,b.shape],(o3,s2,oo,n2)=>compareStrided(op,A,o3[0],s2[0],B,o3[1],s2[1],out,oo,n2));return this.#make(outShape,"bool",out)}equal(a2,b){return this.#compare(a2,b,CMP_EQ)}notEqual(a2,b){return this.#compare(a2,b,CMP_NE)}less(a2,b){return this.#compare(a2,b,CMP_LT)}lessEqual(a2,b){return this.#compare(a2,b,CMP_LTE)}greater(a2,b){return this.#compare(a2,b,CMP_GT)}greaterEqual(a2,b){return this.#compare(a2,b,CMP_GTE)}logicalAnd(a2,b){return this.#compare(a2,b,CMP_AND)}logicalOr(a2,b){return this.#compare(a2,b,CMP_OR)}logicalNot(x){let src=x.data,out=new Uint8Array(src.length);return compareStrided(CMP_EQ,src,0,1,ZERO,0,0,out,0,src.length),this.#make(x.shape,"bool",out)}#axisReduce(x,axis,keepDims,dtype,what){let a2=normAxis(axis,x.shape.length),[outer,dim2,inner]=around(x.shape,a2);if(dim2===0&&what!=="sum"&&what!=="mean")throw RangeError(`tensor-cpu: ${what} over an empty axis`);return{out:alloc(dtype,outer*inner),shape:reducedShape(x.shape,a2,keepDims),outer,dim:dim2,inner}}sum(x,axis,keepDims=!1){let dtype=x.dtype==="f32"?"f32":"i32",r=this.#axisReduce(x,axis,keepDims,dtype,"sum");return sumAxis(x.data,0,r.outer,r.dim,r.inner,r.out,!1),this.#make(r.shape,dtype,r.out)}mean(x,axis,keepDims=!1){let r=this.#axisReduce(x,axis,keepDims,"f32","mean");return sumAxis(x.data,0,r.outer,r.dim,r.inner,r.out,!0),this.#make(r.shape,"f32",r.out)}max(x,axis,keepDims=!1){let r=this.#axisReduce(x,axis,keepDims,x.dtype,"max");return extremumAxis(x.data,0,r.outer,r.dim,r.inner,r.out,!0),this.#make(r.shape,x.dtype,r.out)}min(x,axis,keepDims=!1){let r=this.#axisReduce(x,axis,keepDims,x.dtype,"min");return extremumAxis(x.data,0,r.outer,r.dim,r.inner,r.out,!1),this.#make(r.shape,x.dtype,r.out)}argmax(x,axis,keepDims=!1){let r=this.#axisReduce(x,axis,keepDims,"i32","argmax");return argExtremumAxis(x.data,0,r.outer,r.dim,r.inner,r.out,!0),this.#make(r.shape,"i32",r.out)}argmin(x,axis,keepDims=!1){let r=this.#axisReduce(x,axis,keepDims,"i32","argmin");return argExtremumAxis(x.data,0,r.outer,r.dim,r.inner,r.out,!1),this.#make(r.shape,"i32",r.out)}cumsum(x,axis){let[outer,dim2,inner]=around(x.shape,normAxis(axis,x.shape.length)),dtype=x.dtype==="f32"?"f32":"i32",out=alloc(dtype,x.data.length);return cumsumAxis(x.data,0,outer,dim2,inner,out),this.#make(x.shape,dtype,out)}softmax(x,axis){let[outer,dim2,inner]=around(x.shape,normAxis(axis,x.shape.length)),src=x.data instanceof Float32Array?x.data:Float32Array.from(x.data),out=new Float32Array(src.length);if(dim2>0)softmaxAxis(src,0,outer,dim2,inner,out,!0);return this.#make(x.shape,"f32",out)}sort(x,axis){let[outer,dim2,inner]=around(x.shape,normAxis(axis,x.shape.length)),out=alloc(x.dtype,x.data.length);return sortAxis(x.data,0,outer,dim2,inner,out,alloc(x.dtype,dim2)),this.#make(x.shape,x.dtype,out)}#f32(x){let d=x.data;return d instanceof Float32Array?d:Float32Array.from(d)}matmul(a2,b){if(a2.shape.length<2||b.shape.length<2)throw RangeError("tensor-cpu: matmul needs rank >= 2");let ta=Tensor.fromTypedArray(this.#f32(a2),a2.shape,{dtype:"f32"}),tb=Tensor.fromTypedArray(this.#f32(b),b.shape,{dtype:"f32"}),r=ta.matmul(tb);return this.#make(r.shape,"f32",r.data)}linear(x,w,b){if(w.shape.length!==2)throw RangeError("tensor-cpu: linear weight must be [out, in]");let[nOut,nIn]=w.shape;if(x.shape.length<1||x.shape[x.shape.length-1]!==nIn)throw RangeError(`tensor-cpu: linear [${x.shape}] with weight [${w.shape}]`);if(b&&sizeOf(b.shape)!==nOut)throw RangeError(`tensor-cpu: linear bias [${b.shape}] for ${nOut} outputs`);let X=x.data,rows=nIn===0?sizeOf(x.shape.slice(0,-1)):X.length/nIn,out=new Float32Array(rows*nOut);return linearNT(X,0,rows,nIn,w.data,nOut,b?b.data:null,out),this.#make([...x.shape.slice(0,-1),nOut],"f32",out)}layerNorm(x,weight,bias,eps){let D=x.shape[x.shape.length-1],X=x.data,out=new Float32Array(X.length);if(D>0)layerNormRows(X,0,X.length/D,D,weight?weight.data:null,bias?bias.data:null,eps,out);return this.#make(x.shape,"f32",out)}embedding(table3,ids){if(table3.shape.length!==2)throw RangeError("tensor-cpu: embedding table must be [V, D]");let[V,D]=table3.shape,I=ids.data,out=new Float32Array(I.length*D);return takeRows(this.#f32(table3),D,V,I,out),this.#make([...ids.shape,D],"f32",out)}gatherRows(x,idx){let[B,L,D]=x.shape,[B2,M]=idx.shape;if(x.shape.length!==3||idx.shape.length!==2||B2!==B)throw RangeError(`tensor-cpu: gatherRows [${x.shape}] idx [${idx.shape}]`);let I=idx.data,flat=new Float64Array(B*M);for(let b=0;b<B;b++)for(let m=0;m<M;m++){let raw=I[b*M+m],r=raw<0?raw+L:raw;if(!(r>=0&&r<L))throw RangeError(`tensor-cpu: gatherRows index ${raw} out of range for length ${L}`);flat[b*M+m]=b*L+r}let out=new Float32Array(B*M*D);return takeRows(this.#f32(x),D,B*L,flat,out),this.#make([B,M,D],"f32",out)}rope(x,base2){if(x.shape.length!==4)throw RangeError(`tensor-cpu: rope expects [B, H, L, Dh], got [${x.shape}]`);let[B,H,L,Dh]=x.shape;if(Dh%2)throw RangeError(`tensor-cpu: rope needs an even head dim, got ${Dh}`);let out=new Float32Array(x.data.length);return ropeHalf(x.data,0,B*H,L,Dh,base2,out),this.#make(x.shape,"f32",out)}sdpa(q2,k,v,mask,scale){if(q2.shape.length!==4||k.shape.length!==4||v.shape.length!==4)throw RangeError("tensor-cpu: sdpa expects rank-4 q/k/v");let[B,H,Lq,Dh]=q2.shape,Hk=k.shape[1],Lk=k.shape[2],Dv=v.shape[3];if(k.shape[0]!==B||v.shape[0]!==B||v.shape[1]!==Hk||v.shape[2]!==Lk||k.shape[3]!==Dh||H%Hk)throw RangeError(`tensor-cpu: sdpa q [${q2.shape}] k [${k.shape}] v [${v.shape}]`);let m=null;if(mask){let ms=[...mask.shape];if(ms.length>4)throw RangeError(`tensor-cpu: sdpa mask [${mask.shape}] has rank > 4`);while(ms.length<4)ms.unshift(1);let target=[B,H,Lq,Lk];if(broadcastShapes(ms,target).some((d,i2)=>d!==target[i2]))throw RangeError(`tensor-cpu: sdpa mask [${mask.shape}] does not broadcast to [${target}]`);m={data:mask.data,strides:alignedStrides(ms,target),boolean:mask.dtype==="bool"}}let out=new Float32Array(B*H*Lq*Dv);return attention(q2.data,k.data,v.data,B,H,Hk,Lq,Lk,Dh,Dv,scale,m,out),this.#make([B,H,Lq,Dv],"f32",out)}geglu(x){let D2=x.shape[x.shape.length-1];if(D2%2)throw RangeError(`tensor-cpu: geglu needs an even last axis, got ${D2}`);let D=D2/2,rows=D2===0?0:x.data.length/D2,out=new Float32Array(rows*D);return gegluRows(x.data,0,rows,D,out),this.#make([...x.shape.slice(0,-1),D],"f32",out)}meanPool(x,mask){let[B,L,D]=x.shape;if(x.shape.length!==3||mask.shape.length!==2||mask.shape[0]!==B||mask.shape[1]!==L)throw RangeError(`tensor-cpu: meanPool x [${x.shape}] mask [${mask.shape}]`);let out=new Float32Array(B*D);return maskedMeanPool(x.data,B,L,D,mask.data,out),this.#make([B,D],"f32",out)}}var ZERO;var init_dist19=__esm(()=>{init_dist16();init_dist18();init_public_kernels();init_dist18();ZERO=new Float32Array(1)});var exports_dist5={};__export(exports_dist5,{geluScalar:()=>geluErf,erfc:()=>erfc,erf:()=>erf,createCpuBackend:()=>createCpuBackend,CpuTensor:()=>CpuTensor});var init_dist20=__esm(()=>{init_dist19()});import{existsSync as existsSync3,statSync as statSync4}from"node:fs";import{readFile as readFile3}from"node:fs/promises";import{homedir as homedir2}from"node:os";import{isAbsolute,join as join4,normalize,resolve}from"node:path";async function resolveModelDir(modelIdOrPath,opts={}){let sub=opts.subfolder?checkSubfolder(opts.subfolder):"",value=String(modelIdOrPath),dir=value.startsWith("~")?join4(homedir2(),value.slice(1)):value;if(!existsSync3(dir)){if(value.startsWith("/")||value.startsWith("./")||value.startsWith("../")||value.startsWith("~")||isAbsolute(value))throw Error(`Local model directory does not exist: ${value}`);let prefix=sub?sub.replace(/\/+$/,"")+"/":"";dir=(await snapshot(value,{files:CHECKPOINT_FILES.map((f)=>prefix+f),...opts.revision!==void 0?{revision:opts.revision}:{},...opts.token!==void 0?{token:opts.token}:{},...opts.offline!==void 0?{offline:opts.offline}:{},...opts.fetch?{fetch:opts.fetch}:{},...opts.onProgress?{onProgress:(e)=>opts.onProgress({file:e.file,loaded:e.loaded,...e.total!==void 0?{total:e.total}:{}})}:{}})).dir}if(dir=resolve(normalize(dir)),sub)dir=join4(dir,sub);for(let name of REQUIRED_FILES)if(!isFile(join4(dir,name)))throw Error(`Not a complete Laya checkpoint: ${join4(dir,name)} is missing`);return dir}async function readCheckpoint(modelIdOrPath,opts={}){if(/^https?:\/\//i.test(String(modelIdOrPath))){let sub=opts.subfolder?checkSubfolder(opts.subfolder):"";return readCheckpointFromUrl(String(modelIdOrPath),sub?sub+"/":"",opts)}let dir=await resolveModelDir(modelIdOrPath,opts),json3=async(name)=>JSON.parse(await readFile3(join4(dir,name),"utf8")),[agentConfig,encoderConfig,tokenizer]=await Promise.all([json3("rl_agent_config.json"),json3("encoder/config.json"),loadTokenizerFromDir(join4(dir,"tokenizer"))]);return{location:dir,agentConfig,encoderConfig,tokenizer,weights:(w)=>readWeights(join4(dir,"model.safetensors"),{...w?.dtype?{dtype:w.dtype}:{},...w?.quantized?{quantized:w.quantized}:{}})}}async function createBackend(req,device){let mlx=async()=>{let m=await Promise.resolve().then(() => (init_dist15(),exports_dist4));if(!m.mlxPlatformSupported())throw Error("MLX needs macOS on Apple Silicon");return m.resolveLib(),m.createMlxBackend(device?{device}:{})},webgpu=async()=>{return await(await Promise.resolve().then(() => exports_backend_webgpu)).createWebGpuBackend()},cpu=async()=>(await Promise.resolve().then(() => (init_dist20(),exports_dist5))).createCpuBackend();if(req==="mlx")return mlx();if(req==="webgpu")return webgpu();if(req==="cpu")return cpu();if(req!=="auto")throw Error(`backend must be a Backend or one of "auto", "mlx", "webgpu", "cpu"; got ${String(req)}`);autoSkipped.length=0;for(let[name,make]of[["mlx",mlx],["webgpu",webgpu]])try{return await make()}catch(e){autoSkipped.push(`${name}: ${e.message.split(`
341
+ `)[0]}`)}return cpu()}var RUNTIME2="node",isFile=(p)=>{try{return statSync4(p).isFile()}catch{return!1}},autoSkipped;var init_io_node=__esm(()=>{init_node3();init_dist11();init_weights();init_url();init_common7();autoSkipped=[]});function num(v,fallback,name){if(v===void 0||v===null)return fallback;if(typeof v!=="number"||!Number.isFinite(v))throw TypeError(`modernbert config: ${name} must be a number`);return v}function int2(v,name,fallback){if((v===void 0||v===null)&&fallback!==void 0)return fallback;if(typeof v!=="number"||!Number.isInteger(v))throw TypeError(`modernbert config: ${name} must be an integer`);return v}function bool(v,fallback){return v===void 0||v===null?fallback:Boolean(v)}function parseModernBertConfig(json3){let modelType=json3.model_type??"modernbert";if(modelType!=="modernbert")throw Error(`Unsupported encoder: ${JSON.stringify(modelType)}; expected modernbert`);let act=json3.hidden_activation??"gelu";if(act!=="gelu")throw Error(`Unsupported encoder activation: ${JSON.stringify(act)}`);let hiddenSize=int2(json3.hidden_size,"hidden_size"),numAttentionHeads=int2(json3.num_attention_heads,"num_attention_heads"),numHiddenLayers=int2(json3.num_hidden_layers,"num_hidden_layers");if(numAttentionHeads<=0||hiddenSize%numAttentionHeads||hiddenSize/numAttentionHeads%2)throw Error("ModernBERT requires an even, integral attention head dimension");let every=int2(json3.global_attn_every_n_layers,"global_attn_every_n_layers",3),layerTypes=json3.layer_types;if(layerTypes===void 0||layerTypes===null)layerTypes=Array.from({length:numHiddenLayers},(_,i2)=>i2%every===0?"full_attention":"sliding_attention");if(!Array.isArray(layerTypes)||layerTypes.length!==numHiddenLayers||layerTypes.some((k)=>k!=="full_attention"&&k!=="sliding_attention"))throw Error("Invalid ModernBERT layer_types");let ropeParams=json3.rope_parameters??{};for(let kind of new Set(layerTypes))if((ropeParams[kind]?.rope_type??"default")!=="default")throw Error("Only default (unscaled) ModernBERT RoPE is supported");let globalTheta=num(json3.global_rope_theta,160000,"global_rope_theta"),localTheta=num(json3.local_rope_theta,1e4,"local_rope_theta"),ropeBase={full_attention:Number(ropeParams.full_attention?.rope_theta??globalTheta),sliding_attention:Number(ropeParams.sliding_attention?.rope_theta??localTheta)};return Object.freeze({modelType:"modernbert",vocabSize:int2(json3.vocab_size,"vocab_size"),hiddenSize,intermediateSize:int2(json3.intermediate_size,"intermediate_size"),numHiddenLayers,numAttentionHeads,headDim:hiddenSize/numAttentionHeads,normEps:num(json3.norm_eps,0.00001,"norm_eps"),normBias:bool(json3.norm_bias,!1),attentionBias:bool(json3.attention_bias,!1),mlpBias:bool(json3.mlp_bias,!1),hiddenActivation:"gelu",localAttention:int2(json3.local_attention,"local_attention",128),globalAttnEveryNLayers:every,maxPositionEmbeddings:int2(json3.max_position_embeddings,"max_position_embeddings",8192),layerTypes:Object.freeze([...layerTypes]),ropeBase:Object.freeze(ropeBase)})}function isHostQuantized(h2){return"bits"in h2&&"scales"in h2}function disposeWeight(backend,w){if(!w)return;if(isQuantized(w))disposeQuantized(backend,w);else backend.dispose(w)}function toWeightGetter(src){return typeof src==="function"?src:(name)=>src.get(name)}async function uploadAs(backend,h2,dtype){if(isHostQuantized(h2)){if(!backend.supports(dtype))throw Error(`${backend.name} backend does not support ${dtype}`);return uploadQuantized(backend,h2,dtype)}if(!FLOATS.has(h2.dtype))return backend.fromHost(h2);if(!backend.supports(dtype))throw Error(`${backend.name} backend does not support ${dtype}`);let src=h2.dtype===dtype||backend.supports(h2.dtype)?h2:{dtype:"f32",shape:h2.shape,data:toF32(h2)},t=await backend.fromHost(src);if(t.dtype===dtype)return t;let c3=backend.cast(t,dtype);return backend.dispose(t),c3}async function settleUploads(backend,jobs){let keys=[...jobs.keys()],results=await Promise.allSettled(jobs.values()),failed=results.find((r)=>r.status==="rejected");if(failed){for(let r of results)if(r.status==="fulfilled")disposeWeight(backend,r.value);throw failed.reason}return new Map(keys.map((k,i2)=>[k,results[i2].value]))}async function loadInBatch(backend,build,dtype){let jobs=new Map;try{build((name,h2)=>{if(!jobs.has(name))jobs.set(name,uploadAs(backend,h2,dtype));return})}catch(e){throw await settleUploads(backend,jobs).then((m)=>m.forEach((t)=>disposeWeight(backend,t)),()=>{}),e}let tensors=await settleUploads(backend,jobs);return build((name)=>tensors.get(name))}function attentionMasks(attentionMask,B,L,window2){if(attentionMask.length!==B*L)throw RangeError(`attentionMasks: mask has ${attentionMask.length} values, want ${B*L}`);let half=Math.floor(window2/2),full=new Uint8Array(B*L),sliding=new Uint8Array(B*L*L);for(let b=0;b<B;b++){for(let j=0;j<L;j++)full[b*L+j]=attentionMask[b*L+j]?1:0;for(let i2=0;i2<L;i2++){let padQuery=!attentionMask[b*L+i2],row=(b*L+i2)*L;for(let j=0;j<L;j++)sliding[row+j]=full[b*L+j]&&(padQuery||Math.abs(i2-j)<=half)?1:0}}return{full:{dtype:"bool",shape:[B,1,1,L],data:full},sliding:{dtype:"bool",shape:[B,1,L,L],data:sliding}}}class ModernBert{backend;config;dtype;weights;constructor(backend,config4,weights,dtype){this.backend=backend,this.config=config4,this.weights=weights,this.dtype=dtype}embeddings(ids){let b=this.backend,w=this.weights;return b.scope(()=>b.layerNorm(embeddingAny(b,w.tokEmbeddings,ids),w.embNorm.weight,w.embNorm.bias,this.config.normEps))}layer(i2,x,mask){let b=this.backend,c3=this.config,w=this.weights.layers[i2];return b.scope(()=>{let[B,L,H]=x.shape,nh=c3.numAttentionHeads,hd=c3.headDim,h2=w.attnNorm?b.layerNorm(x,w.attnNorm.weight,w.attnNorm.bias,c3.normEps):x,qkv=b.transpose(b.reshape(linearAny(b,h2,w.Wqkv,w.WqkvBias),[B,L,3,nh,hd]),[2,0,3,1,4]),[q2,k,v]=b.split(qkv,3,0).map((t)=>b.reshape(t,[B,nh,L,hd])),base2=c3.ropeBase[w.kind],att=b.sdpa(b.rope(q2,base2),b.rope(k,base2),v,mask,hd**-0.5),merged=b.reshape(b.transpose(att,[0,2,1,3]),[B,L,H]),x1=b.add(x,linearAny(b,merged,w.Wo,w.WoBias)),m=linearAny(b,b.layerNorm(x1,w.mlpNorm.weight,w.mlpNorm.bias,c3.normEps),w.Wi,w.WiBias);return b.add(x1,linearAny(b,geglu(b,m),w.WoMlp,w.WoMlpBias))})}finalNorm(x){let b=this.backend,w=this.weights;return b.scope(()=>b.layerNorm(x,w.finalNorm.weight,w.finalNorm.bias,this.config.normEps))}async uploadInputs(inputIds,attentionMask,B,L){let b=this.backend,c3=this.config;if(inputIds.length!==B*L)throw RangeError(`modernbert: inputIds has ${inputIds.length} values, want ${B*L}`);let hm=attentionMasks(attentionMask,B,L,c3.localAttention),jobs=new Map([["ids",b.fromHost({dtype:"i32",shape:[B,L],data:inputIds})],["mask",b.fromHost({dtype:"bool",shape:[B,L],data:attentionMask})]]);if(c3.layerTypes.includes("full_attention"))jobs.set("full",b.fromHost(hm.full));if(c3.layerTypes.includes("sliding_attention"))jobs.set("sliding",b.fromHost(hm.sliding));let t=await settleUploads(b,jobs);return{ids:t.get("ids"),mask:t.get("mask"),masks:{full_attention:t.get("full")??null,sliding_attention:t.get("sliding")??null}}}disposeInputs(inp){let b=this.backend;for(let t of[inp.ids,inp.mask,inp.masks.full_attention,inp.masks.sliding_attention])if(t)b.dispose(t)}async forward(inputIds,attentionMask,B,L,opts={}){let inp=await this.uploadInputs(inputIds,attentionMask,B,L);try{return this.encode(inp,opts)}finally{this.disposeInputs(inp)}}encode(inp,opts={}){let b=this.backend,c3=this.config,kept=[],emit=(name,t,last)=>{if(opts.onStage?.(name,t)===!0&&!last)kept.push(t)};return b.scope(()=>{let masks=inp.masks,x=this.embeddings(inp.ids);emit("embeddings",x,!1);for(let i2=0;i2<c3.numHiddenLayers;i2++){let next=this.layer(i2,x,masks[c3.layerTypes[i2]]);if(!kept.includes(x))b.dispose(x);x=next,emit(`layers.${i2}`,x,!1)}let y=this.finalNorm(x);if(!kept.includes(x))b.dispose(x);return emit("final_norm",y,!0),[y,...kept]})[0]}async embed(inputIds,attentionMask,B,L){let b=this.backend,inp=await this.uploadInputs(inputIds,attentionMask,B,L);try{return b.scope(()=>meanPool(b,this.encode(inp),inp.mask))}finally{this.disposeInputs(inp)}}async embedToHost(inputIds,attentionMask,B,L){let t=await this.embed(inputIds,attentionMask,B,L);try{return toF32(await this.backend.read(t))}finally{this.backend.dispose(t)}}dispose(){let b=this.backend,w=this.weights,free=(t)=>disposeWeight(b,t),norm=(n2)=>{if(n2)free(n2.weight),free(n2.bias)};free(w.tokEmbeddings),norm(w.embNorm),norm(w.finalNorm);for(let l of w.layers){norm(l.attnNorm),norm(l.mlpNorm);for(let t of[l.Wqkv,l.WqkvBias,l.Wo,l.WoBias,l.Wi,l.WiBias,l.WoMlp,l.WoMlpBias])free(t)}}}function hasQuantizedWeights(m){let w=m.weights;return isQuantized(w.tokEmbeddings)||w.layers.some((l)=>[l.Wqkv,l.Wo,l.Wi,l.WoMlp].some((t)=>isQuantized(t)))}function detectPrefix(get){for(let p of["encoder.","model.",""])if(get(`${p}embeddings.tok_embeddings.weight`))return p;throw Error("modernbert: no embeddings.tok_embeddings.weight under prefixes encoder., model. or ''")}async function loadModernBert(backend,config4,weights,opts={}){let dtype=opts.dtype??"f32";if(!backend.supports(dtype))throw Error(`${backend.name} backend does not support ${dtype}`);let get=toWeightGetter(weights),prefix=opts.prefix??detectPrefix(get),hosts=new Map,w=await loadInBatch(backend,(upload)=>{return buildEncoderWeights(config4,(name,shape,matrix=!1)=>{let key=prefix+name,h2=hosts.get(key);if(!h2){if(h2=get(key),!h2)throw Error(`modernbert: missing weight ${key}`);hosts.set(key,h2)}if(h2.shape.length!==shape.length||h2.shape.some((d,i2)=>d!==shape[i2]))throw Error(`modernbert: ${key} has shape [${h2.shape}], want [${shape}]`);if(!matrix&&isHostQuantized(h2))throw Error(`modernbert: ${key} cannot be quantized (only Linear weights and the token embedding)`);return upload(key,h2)})},dtype);return hosts.clear(),new ModernBert(backend,config4,w,dtype)}function buildEncoderWeights(config4,needAny){let need=(name,shape)=>needAny(name,shape),mat=(name,shape)=>needAny(name,shape,!0),maybe=(on6,name,shape)=>on6?need(name,shape):null,H=config4.hiddenSize,I=config4.intermediateSize,normW=(p)=>({weight:need(`${p}.weight`,[H]),bias:maybe(config4.normBias,`${p}.bias`,[H])}),tokEmbeddings=mat("embeddings.tok_embeddings.weight",[config4.vocabSize,H]),embNorm=normW("embeddings.norm"),layers=[];for(let i2=0;i2<config4.numHiddenLayers;i2++){let p=`layers.${i2}`;layers.push({kind:config4.layerTypes[i2],attnNorm:i2===0?null:normW(`${p}.attn_norm`),Wqkv:mat(`${p}.attn.Wqkv.weight`,[3*H,H]),WqkvBias:maybe(config4.attentionBias,`${p}.attn.Wqkv.bias`,[3*H]),Wo:mat(`${p}.attn.Wo.weight`,[H,H]),WoBias:maybe(config4.attentionBias,`${p}.attn.Wo.bias`,[H]),mlpNorm:normW(`${p}.mlp_norm`),Wi:mat(`${p}.mlp.Wi.weight`,[2*I,H]),WiBias:maybe(config4.mlpBias,`${p}.mlp.Wi.bias`,[2*I]),WoMlp:mat(`${p}.mlp.Wo.weight`,[H,I]),WoMlpBias:maybe(config4.mlpBias,`${p}.mlp.Wo.bias`,[H])})}let finalNorm=normW("final_norm");return{tokEmbeddings,embNorm,layers,finalNorm}}var FLOATS;var init_dist21=__esm(()=>{init_dist10();FLOATS=new Set(["f32","f16","bf16"])});class DecisionModel{backend;encoder;weights;dtype;nAct;hiddenSize;headHeads;constructor(backend,encoder,weights,dtype,nAct){this.backend=backend,this.encoder=encoder,this.weights=weights,this.dtype=dtype,this.nAct=nAct,this.hiddenSize=encoder.config.hiddenSize,this.headHeads=Math.max(1,Math.floor(this.hiddenSize/64))}headLayer(j,x,mask){let b=this.backend,w=this.weights.head[j];return b.scope(()=>{let[B,L,D]=x.shape,nh=this.headHeads,hd=D/nh,h2=b.layerNorm(x,w.norm1.weight,w.norm1.bias,HEAD_EPS),qkv=b.transpose(b.reshape(linearAny(b,h2,w.inProj,w.inProjBias),[B,L,3,nh,hd]),[2,0,3,1,4]),[q2,k,v]=b.split(qkv,3,0).map((t)=>b.reshape(t,[B,nh,L,hd])),att=b.reshape(b.transpose(b.sdpa(q2,k,v,mask,hd**-0.5),[0,2,1,3]),[B,L,D]),x1=b.add(x,linearAny(b,att,w.outProj,w.outProjBias)),f=linearAny(b,b.relu(linearAny(b,b.layerNorm(x1,w.norm2.weight,w.norm2.bias,HEAD_EPS),w.linear1,w.linear1Bias)),w.linear2,w.linear2Bias);return b.add(x1,f)})}async uploadBatch(batch){let b=this.backend,{size:B,length:L,markerCount:M}=batch;if(M<2)throw RangeError("DecisionModel: markerCount must be >= 2 (collate pads to two slots)");let hm=attentionMasks(batch.attentionMask,B,L,this.encoder.config.localAttention),pos=new Int32Array(B*M);for(let i2=0;i2<pos.length;i2++)pos[i2]=Math.max(batch.markerPos[i2],0);let k=new Float32Array(B);for(let r=0;r<B;r++){let n2=0;for(let m=0;m<M;m++)n2+=batch.markerMask[r*M+m]?1:0;k[r]=Math.max(n2,2)}let t=await settleUploads(b,new Map([["inputIds",b.fromHost({dtype:"i32",shape:[B,L],data:batch.inputIds})],["fullMask",b.fromHost(hm.full)],["slidingMask",b.fromHost(hm.sliding)],["headMask",b.fromHost({dtype:"bool",shape:[B,1,1,L],data:batch.attentionMask})],["qtype",b.fromHost({dtype:"i32",shape:[B],data:batch.qtype})],["markerPos",b.fromHost({dtype:"i32",shape:[B,M],data:pos})],["markerMask",b.fromHost({dtype:"bool",shape:[B,M],data:batch.markerMask})],["k",b.fromHost({dtype:"f32",shape:[B],data:k})]]));return Object.fromEntries(t)}disposeInputs(inp){for(let t of Object.values(inp))this.backend.dispose(t)}forwardCore(inp,opts={}){let b=this.backend,w=this.weights,enc=this.encoder,[B,L]=inp.inputIds.shape,M=inp.markerPos.shape[1],D=this.hiddenSize,kept=[],emit=(name,t)=>{let own=opts.onStage?.(name,t)===!0;if(own)kept.push(t);return own},cst2=w.constants,out=b.scope(()=>{let masks={full_attention:inp.fullMask,sliding_attention:inp.slidingMask},x=enc.embeddings(inp.inputIds),owned=emit("embeddings",x);for(let i2=0;i2<enc.config.numHiddenLayers;i2++){let next=enc.layer(i2,x,masks[enc.config.layerTypes[i2]]);if(!owned)b.dispose(x);x=next,owned=emit(`encoder.layers.${i2}`,x)}let encOut=enc.finalNorm(x);if(!owned)b.dispose(x);emit("encoder.final_norm",encOut);let h2=b.add(encOut,b.reshape(embeddingAny(b,w.typeEmb,inp.qtype),[B,1,D]));emit("type_emb_added",h2);for(let j=0;j<w.head.length;j++)h2=this.headLayer(j,h2,inp.headMask),emit(`head.layers.${j}`,h2);let markers=b.gatherRows(h2,inp.markerPos),s2=w.scorer,scored=linearAny(b,b.gelu(linearAny(b,b.layerNorm(markers,s2.norm.weight,s2.norm.bias,HEAD_EPS),s2.w1,s2.b1)),s2.w2,s2.b2),logits=b.where(inp.markerMask,b.cast(b.reshape(scored,[B,M]),"f32"),cst2.maskedLogit),p=b.softmax(logits,-1),plogp=b.mul(p,b.log(b.maximum(p,cst2.probFloor))),entropy=b.div(b.scale(b.sum(plogp,-1),-1),b.log(inp.k)),top=b.slice(b.sort(p,-1),[0,M-2],[B,M]),top2=b.slice(top,[0,0],[B,1]),top1=b.slice(top,[0,1],[B,2]),kScaled=b.div(b.reshape(inp.k,[B,1]),cst2.kScale),features=b.concat([top1,b.sub(top1,top2),b.reshape(entropy,[B,1]),kScaled],-1),cls=b.cast(b.reshape(b.slice(h2,[0,0,0],[B,1,D]),[B,D]),"f32"),pooled=b.cast(b.concat([cls,features],-1),this.dtype),a2=w.act,act=b.cast(linearAny(b,b.gelu(linearAny(b,pooled,a2.w1,a2.b1)),a2.w2,a2.b2),"f32");return[logits,act,...kept]});return{logits:out[0],act:out[1]}}async forwardTensors(batch,opts={}){let inp=await this.uploadBatch(batch);try{return this.forwardCore(inp,opts)}finally{this.disposeInputs(inp)}}compiled(){let b=this.backend;if(!b.compile)return null;let fn=b.compile((...ts)=>{let[inputIds,fullMask,slidingMask,headMask,qtype,markerPos,markerMask,k]=ts,r=this.forwardCore({inputIds,fullMask,slidingMask,headMask,qtype,markerPos,markerMask,k});return[r.logits,r.act]});return async(batch)=>{let inp=await this.uploadBatch(batch);try{let[logits,act]=fn(inp.inputIds,inp.fullMask,inp.slidingMask,inp.headMask,inp.qtype,inp.markerPos,inp.markerMask,inp.k);return{logits,act}}finally{this.disposeInputs(inp)}}}async readOutputs(r){let{logits,act}=r;try{this.backend.flush?.(logits,act);let[l,a2]=await Promise.all([this.backend.read(logits),this.backend.read(act)]);return{logits:toF32(l),act:toF32(a2),nAct:this.nAct}}finally{this.backend.dispose(logits),this.backend.dispose(act)}}async forward(batch,opts={}){return this.readOutputs(await this.forwardTensors(batch,opts))}get quantizedOnDevice(){let w=this.weights,qs=[w.typeEmb,w.scorer.w1,w.scorer.w2,w.act.w1,w.act.w2,...w.head.flatMap((l)=>[l.inProj,l.outProj,l.linear1,l.linear2])];return hasQuantizedWeights(this.encoder)||qs.some((t)=>isQuantized(t))}dispose(){this.encoder.dispose(),disposeWeights(this.backend,this.weights)}}function isParsed(c3){return typeof c3.hiddenSize==="number"&&Array.isArray(c3.layerTypes)}async function loadDecisionModel(backend,opts){let dtype=opts.dtype??"f32",config4=isParsed(opts.encoderConfig)?opts.encoderConfig:parseModernBertConfig(opts.encoderConfig),get=toWeightGetter(opts.weights),D=config4.hiddenSize,headLayers=opts.agentConfig.head_layers??2,nAct=Object.keys(opts.agentConfig.act_costs??{}).length+1,nh=Math.max(1,Math.floor(D/64));if(D%nh)throw Error("Decision head dimensions must be divisible by its head count");let hosts=new Map,f322=(v)=>({dtype:"f32",shape:[1],data:Float32Array.of(v)}),[encoder,heads,consts]=await Promise.allSettled([loadModernBert(backend,config4,get,{dtype,prefix:"encoder."}),loadInBatch(backend,(upload)=>{return buildHeadWeights(D,headLayers,nAct,(names,shape,matrix=!1)=>{for(let n2 of names){let h2=hosts.get(n2)??get(n2);if(!h2)continue;if(hosts.set(n2,h2),h2.shape.length!==shape.length||h2.shape.some((d,i2)=>d!==shape[i2]))throw Error(`DecisionModel: ${n2} has shape [${h2.shape}], want [${shape}]`);if(!matrix&&isHostQuantized(h2))throw Error(`DecisionModel: ${n2} cannot be quantized (only Linear weights and type_emb)`);return upload(n2,h2)}throw Error(`DecisionModel: missing weight ${names[0]}`)})},dtype),settleUploads(backend,new Map([["maskedLogit",backend.fromHost(f322(-1e4))],["probFloor",backend.fromHost(f322(0.000000001))],["kScale",backend.fromHost(f322(255))]]))]);if(hosts.clear(),encoder.status==="rejected"||heads.status==="rejected"||consts.status==="rejected"){if(encoder.status==="fulfilled")encoder.value.dispose();if(heads.status==="fulfilled")disposeWeights(backend,heads.value);if(consts.status==="fulfilled")consts.value.forEach((t)=>backend.dispose(t));throw[encoder,heads,consts].find((r)=>r.status==="rejected").reason}let c3=consts.value,constants4={maskedLogit:c3.get("maskedLogit"),probFloor:c3.get("probFloor"),kScale:c3.get("kScale")};return new DecisionModel(backend,encoder.value,{...heads.value,constants:constants4},dtype,nAct)}function buildHeadWeights(D,headLayers,nAct,needAny){let need=(names,shape)=>needAny(names,shape),mat=(names,shape)=>needAny(names,shape,!0),seq=(prefix,i2,what)=>[`${prefix}.layers.${i2}.${what}`,`${prefix}.${i2}.${what}`],head=[];for(let j=0;j<headLayers;j++){let p=`head.layers.${j}`;head.push({norm1:{weight:need([`${p}.norm1.weight`],[D]),bias:need([`${p}.norm1.bias`],[D])},norm2:{weight:need([`${p}.norm2.weight`],[D]),bias:need([`${p}.norm2.bias`],[D])},inProj:mat([`${p}.self_attn.in_proj.weight`,`${p}.self_attn.in_proj_weight`],[3*D,D]),inProjBias:need([`${p}.self_attn.in_proj.bias`,`${p}.self_attn.in_proj_bias`],[3*D]),outProj:mat([`${p}.self_attn.out_proj.weight`],[D,D]),outProjBias:need([`${p}.self_attn.out_proj.bias`],[D]),linear1:mat([`${p}.linear1.weight`],[4*D,D]),linear1Bias:need([`${p}.linear1.bias`],[4*D]),linear2:mat([`${p}.linear2.weight`],[D,4*D]),linear2Bias:need([`${p}.linear2.bias`],[D])})}let typeEmb=mat(["type_emb.weight"],[3,D]),scorer={norm:{weight:need(seq("scorer",0,"weight"),[D]),bias:need(seq("scorer",0,"bias"),[D])},w1:mat(seq("scorer",1,"weight"),[D,D]),b1:need(seq("scorer",1,"bias"),[D]),w2:mat(seq("scorer",3,"weight"),[1,D]),b2:need(seq("scorer",3,"bias"),[1])},act={w1:mat(seq("act_head",0,"weight"),[256,D+4]),b1:need(seq("act_head",0,"bias"),[256]),w2:mat(seq("act_head",2,"weight"),[nAct,256]),b2:need(seq("act_head",2,"bias"),[nAct])};return{head,typeEmb,scorer,act}}function disposeWeights(b,w){let free=(...ts)=>ts.forEach((t)=>disposeWeight(b,t));for(let l of w.head)free(l.norm1.weight,l.norm1.bias,l.norm2.weight,l.norm2.bias,l.inProj,l.inProjBias,l.outProj,l.outProjBias),free(l.linear1,l.linear1Bias,l.linear2,l.linear2Bias);if(free(w.typeEmb,w.scorer.norm.weight,w.scorer.norm.bias,w.scorer.w1,w.scorer.b1,w.scorer.w2,w.scorer.b2),free(w.act.w1,w.act.b1,w.act.w2,w.act.b2),w.constants)free(w.constants.maskedLogit,w.constants.probFloor,w.constants.kScale)}var HEAD_EPS=0.00001;var init_model=__esm(()=>{init_dist10();init_dist21()});function validateConfig(cfg,enc){if(!cfg||typeof cfg!=="object"||!("encoder"in cfg)||!("head_layers"in cfg))throw Error("Laya config must specify encoder and head_layers");let maxLen=cfg.max_len??512,headMaxLen=cfg.head_max_len??192;if(!(4<headMaxLen&&headMaxLen<maxLen&&maxLen<=enc.maxPositionEmbeddings))throw Error("Expected 4 < head_max_len < max_len <= max_position_embeddings")}class Agent{modelId;backend;dtype;config;encoderConfig;tokenizer;temperature;temperatureByOptions;temperatureRaw;temperatureByOptionsRaw;batchSize;padToMultiple;model;temps;cache;run;ownsBackend;disposed=!1;constructor(parts,v,model){let{enc,temps,batchSize,pad}=v;this.backend=parts.backend,this.dtype=v.dtype,this.modelId=parts.modelId??"<local>",this.config=parts.agentConfig,this.encoderConfig=enc,this.tokenizer=parts.tokenizer,this.batchSize=batchSize,this.padToMultiple=pad,this.temps=temps,this.temperature=temps.temperature,this.temperatureByOptions=temps.temperatureByOptions,this.temperatureRaw=temps.temperatureRaw,this.temperatureByOptionsRaw=temps.temperatureByOptionsRaw,this.cache=parts.cachePrompts?new PrefixCache:null,this.ownsBackend=parts.ownsBackend??!1,this.model=model;let compiled=parts.compile?this.model.compiled():null;this.run=compiled??((batch)=>this.model.forwardTensors(batch))}live(){if(this.disposed)throw Error("LayaAgent has been disposed")}prepare(state,questions){return prepare(this.tokenizer,state,questions,this.config,{cache:this.cache})}async forward(batch){return this.live(),this.model.readOutputs(await this.run(batch))}async predict(state,questions){this.live();let{items,internal}=this.prepare(state,questions),maxLength=this.config.max_len??512,outputs=[];for(let chunk of chunkItems(items,this.batchSize)){let batch=collate(chunk,this.tokenizer.padTokenId,{padToMultiple:this.padToMultiple,maxLength});outputs.push(await this.forward(batch))}return formatResults(internal,items,outputs,this.temps)}systemOne(state,questions){return this.predict(state,questions)}async embed(texts,opts={}){this.live();let maxLength=opts.maxLength??512,batchSize=opts.batchSize??32;if(!isPosInt(maxLength))throw Error(`max_length must be a positive integer, got ${String(maxLength)}`);if(!isPosInt(batchSize))throw Error(`batch_size must be a positive integer, got ${String(batchSize)}`);let tok=this.tokenizer;if(typeof tok.encodeWithSpecialTokens!=="function")throw Error("embed needs a tokenizer with encodeWithSpecialTokens (e.g. laya-core loadTokenizer)");let H=this.encoderConfig.hiddenSize,rows=texts.map((t)=>t===null||t===void 0?"":String(t)),out=[];for(let start=0;start<rows.length;start+=batchSize){let encoded=rows.slice(start,start+batchSize).map((t)=>tok.encodeWithSpecialTokens(t).slice(0,maxLength)),live=encoded.map((ids,i2)=>[ids,i2]).filter(([ids])=>ids.length>0),vecs=encoded.map(()=>new Float32Array(H));if(live.length){let B=live.length,L=Math.max(...live.map(([ids2])=>ids2.length)),ids=new Int32Array(B*L).fill(this.tokenizer.padTokenId),mask=new Uint8Array(B*L);live.forEach(([row],r)=>{ids.set(row,r*L),mask.fill(1,r*L,r*L+row.length)});let pooled=await this.model.encoder.embedToHost(ids,mask,B,L);live.forEach(([,i2],r)=>vecs[i2]=pooled.slice(r*H,(r+1)*H))}out.push(...vecs)}return out}dispose(){if(this.disposed)return;if(this.disposed=!0,this.model.dispose(),this.ownsBackend)this.backend.destroy?.()}}function isParsed2(c3){return typeof c3.hiddenSize==="number"&&Array.isArray(c3.layerTypes)}function validateParts(parts){let batchSize=parts.batchSize??16;if(!isPosInt(batchSize))throw Error("batch_size must be a positive integer");let pad=parts.padToMultiple??null;if(pad!==null&&!isPosInt(pad))throw Error("pad_to_multiple must be a positive integer or None");let want=parts.dtype??"f16";if(want!=="f16"&&want!=="f32")throw Error('dtype must be one of ["f16", "f32"]');let enc=isParsed2(parts.encoderConfig)?parts.encoderConfig:parseModernBertConfig(parts.encoderConfig);validateConfig(parts.agentConfig,enc);let temps=resolveTemperatures(parts.agentConfig);if(temps.warning)(parts.warn??console.warn)(temps.warning);let dtype=want==="f16"&&parts.backend.name!=="cpu"&&parts.backend.supports("f16")?"f16":"f32";return{enc,temps,batchSize,pad,dtype}}async function createAgent(parts){let v=validateParts(parts),model=await loadDecisionModel(parts.backend,{encoderConfig:v.enc,agentConfig:parts.agentConfig,weights:toWeightGetter(parts.weights),dtype:v.dtype});return parts.backend.flush?.(),new Agent(parts,v,model)}var isPosInt=(v)=>typeof v==="number"&&Number.isInteger(v)&&v>=1;var init_agent2=__esm(()=>{init_dist21();init_dist14();init_model()});async function load2(modelIdOrPath,opts={}){if(opts.dtype!==void 0&&opts.dtype!=="f16"&&opts.dtype!=="f32")throw Error('dtype must be one of ["f16", "f32"]');if(opts.device!==void 0&&!["gpu","metal","cpu"].includes(opts.device))throw Error("MLX device must be 'gpu', 'metal', or 'cpu'");if(opts.quantized!==void 0&&opts.quantized!=="device"&&opts.quantized!=="dequantize")throw Error('quantized must be "device" or "dequantize"');let batchSize=opts.batchSize??16;if(typeof batchSize!=="number"||!Number.isInteger(batchSize)||batchSize<1)throw Error("batch_size must be a positive integer");let pad=opts.padToMultiple??null;if(pad!==null&&(typeof pad!=="number"||!Number.isInteger(pad)||pad<1))throw Error("pad_to_multiple must be a positive integer or None");let ckpt=await readCheckpoint(modelIdOrPath,opts);validateConfig(ckpt.agentConfig,parseModernBertConfig(ckpt.encoderConfig));let req=opts.backend??"auto",owns=typeof req==="string",device=opts.device===void 0?void 0:opts.device==="cpu"?"cpu":"gpu",backend=typeof req==="string"?await createBackend(req,device):req,agent;try{let computeDtype=(opts.dtype??"f16")==="f16"&&backend.name!=="cpu"&&backend.supports("f16")?"f16":"f32",quantized=(opts.quantized??"device")==="device"&&hasNativeQuantized(backend)?"device":"dequantize",weights=await ckpt.weights({dtype:computeDtype,quantized});agent=await createAgent({backend,encoderConfig:ckpt.encoderConfig,agentConfig:ckpt.agentConfig,weights:weights.get,tokenizer:ckpt.tokenizer,modelId:String(modelIdOrPath),ownsBackend:owns,...opts.dtype?{dtype:opts.dtype}:{},batchSize,padToMultiple:pad,...opts.cachePrompts!==void 0?{cachePrompts:opts.cachePrompts}:{},...opts.compile!==void 0?{compile:opts.compile}:{},...opts.warn?{warn:opts.warn}:{}});let extra=weights.remaining().filter((n2)=>n2!=="temperature");if(extra.length)throw agent.dispose(),Error(`Received parameters not in model: ${extra.sort().join(", ")}`);return agent}catch(e){if(owns&&!agent)backend.destroy?.();throw e}}var init_load=__esm(()=>{init_dist10();init_io_node();init_dist21();init_agent2()});function checkK(k){if(typeof k!=="number"||!Number.isInteger(k)||k<1)throw Error(`k must be a positive integer, got ${String(k)}`);return k}function criteriaItems(criteria){let items;if(isDict4(criteria))items=Object.entries(criteria);else if(Array.isArray(criteria))items=criteria.map((c3)=>[c3,null]);else throw TypeError(`choice criteria must be a dict or list, got ${criteria===null?"NoneType":typeof criteria}`);if(!items.length)throw Error("choice criteria must contain at least one option");let seen=new Set;for(let[key]of items){if(seen.has(key))throw Error(`choice criteria label ${JSON.stringify(key)} is duplicated`);seen.add(key)}return items}function optionTexts(items){let crit={};for(let[k,v]of items)crit[k]=v;let texts=renderOptions({t:"choice",crit,labels:items.map(([k])=>k)});if(texts.length!==items.length)throw Error("could not render every choice option");return texts}function queryText(state,instructions){let body=serializeState(state);if(instructions===null||instructions===void 0||instructions==="")return body;return`${typeof instructions==="string"?instructions:dumps(instructions,{ensureAscii:!1})}
342
+ ${body}`}async function embeddings(embedFn,texts){if(typeof embedFn!=="function")throw TypeError("embed_fn must be callable");let raw=await embedFn([...texts]),rows=Array.isArray(raw)?raw:[],dim2=rows[0]?.length??0;if(rows.length!==texts.length||dim2<1||rows.some((r)=>!r||r.length!==dim2))throw Error(`embed_fn must return an array of shape (${texts.length}, dim), got ${rows.length} rows of ${dim2}`);return rows.map((r)=>Float64Array.from(r,(x)=>Number.isFinite(x)?x:0))}function cosine(query,docs){let norm=(v)=>Math.hypot(...v),qn=norm(query),sims=new Float64Array(docs.length);if(qn===0)return sims;return docs.forEach((d,i2)=>{let denom=norm(d)*qn;if(denom>0){let dot=0;for(let j=0;j<d.length;j++)dot+=d[j]*query[j];sims[i2]=dot/denom}}),sims}async function rank(state,criteria,embedFn,k,instructions){let checked=checkK(k),items=criteriaItems(criteria),n2=items.length,keys=items.map(([key])=>key);if(checked>=n2)return{labels:keys,scores:null,passthrough:!0,n:n2};let matrix=await embeddings(embedFn,[queryText(state,instructions),...optionTexts(items)]),sims=cosine(matrix[0],matrix.slice(1)),order=keys.map((_,i2)=>i2).sort((a2,b)=>sims[b]-sims[a2]||a2-b).slice(0,checked);return{labels:order.map((i2)=>keys[i2]),scores:order.map((i2)=>sims[i2]),passthrough:!1,n:n2}}async function shortlistChoice(state,criteria,embedFn,k=DEFAULT_SHORTLIST_K,opts={}){return(await rank(state,criteria,embedFn,k,opts.instructions)).labels}async function predictShortlist(agent,state,questions,opts={}){if(!isDict4(questions))throw TypeError("questions must be a dict of question id -> definition");let k=checkK(opts.k??DEFAULT_SHORTLIST_K),embedFn=opts.embedFn??(typeof agent.embed==="function"?(t)=>agent.embed(t):void 0),reduced={},meta3={};for(let[qid,qdef]of Object.entries(questions)){if(!isDict4(qdef)||qdef.type!=="choice"){reduced[qid]=qdef;continue}if(!("criteria"in qdef))throw Error(`question ${JSON.stringify(qid)} is a choice but has no criteria`);let r=await rank(state,qdef.criteria,embedFn??missingEmbed,k,qdef.instructions);if(meta3[qid]={labels:[...r.labels],scores:r.scores,k,n:r.n,passthrough:r.passthrough},r.passthrough){reduced[qid]=qdef;continue}let crit=qdef.criteria;reduced[qid]={...qdef,criteria:isDict4(crit)?Object.fromEntries(r.labels.map((l)=>[l,crit[l]])):[...r.labels]}}let fn=agent.predict??agent.systemOne;if(typeof fn!=="function")throw TypeError("agent must provide predict or systemOne");let extra=opts.predictOptions===void 0?[]:[opts.predictOptions],result=await fn.call(agent,state,reduced,...extra);if(!isDict4(result))throw TypeError(`predict/systemOne must return an object, got ${result===null?"null":typeof result}`);return{...result,shortlist:meta3}}var DEFAULT_SHORTLIST_K=20,isDict4=(v)=>typeof v==="object"&&v!==null&&!Array.isArray(v),missingEmbed=()=>{throw TypeError("embed_fn must be callable (pass opts.embedFn, or an agent with embed())")};var init_shortlist=__esm(()=>{init_dist13();init_dist14()});var exports_dist6={};__export(exports_dist6,{validateConfig:()=>validateConfig,shouldQuantize:()=>shouldQuantize,shortlistChoice:()=>shortlistChoice,sanitizeName:()=>sanitizeName,readWeights:()=>readWeights,readCheckpoint:()=>readCheckpoint,readAllTensors:()=>readAllTensors,quantizeSafetensors:()=>quantizeSafetensors,quantizeMatrix:()=>quantizeMatrix,quantMetadata:()=>quantMetadata,predictShortlist:()=>predictShortlist,loadDecisionModel:()=>loadDecisionModel,load:()=>load2,hostQuantized:()=>hostQuantized,groupQuantized:()=>groupQuantized,dequantizingWeights:()=>dequantizingWeights,dequantizeMatrix:()=>dequantizeMatrix,createBackend:()=>createBackend,createAgent:()=>createAgent,consumingWeights:()=>consumingWeights,bitsOf:()=>bitsOf,RUNTIME:()=>RUNTIME2,REQUIRED_FILES:()=>REQUIRED_FILES,QUANT_FORMAT_VERSION:()=>QUANT_FORMAT_VERSION,DecisionModel:()=>DecisionModel,DEFAULT_SHORTLIST_K:()=>DEFAULT_SHORTLIST_K,DEFAULT_GROUP_SIZE:()=>DEFAULT_GROUP_SIZE,CHECKPOINT_FILES:()=>CHECKPOINT_FILES});var init_dist22=__esm(()=>{init_load();init_agent2();init_shortlist();init_weights();init_quant();init_model();init_common7();init_io_node()});var init_project_registry=__esm(()=>{init_src()});init_src();import{basename as basename5,dirname as dirname11,join as join15,resolve as resolve8}from"node:path";var ARTIFACT_ARRAY_CLASSIFICATION={byTool:"ranked",bySession:"ranked",topStepsByTokens:"ranked",topStepsByDuration:"ranked",topSteps:"ranked",bottlenecks:"ranked",coverage:"set",daily:"set",loops:"set",warnings:"set",pairings:"set",ladderSnapshot:"set",stepSupport:"set",phases:"set",tools:"set",skills:"set",sources:"set",models:"set"},RANKED_ARTIFACT_KEYS=new Set(Object.entries(ARTIFACT_ARRAY_CLASSIFICATION).filter(([,kind])=>kind==="ranked").map(([key])=>key));var RESOLVED_TOOL_NAME_SQL=`CASE
335
343
  WHEN tc.effective_tool_name IS NOT NULL AND tc.effective_tool_name != '' AND tc.effective_tool_name != 'unknown'
336
344
  THEN tc.effective_tool_name
337
345
  ELSE CASE
@@ -407,7 +415,7 @@ END`;var MEASURE_COLS="messages, tool_calls, skill_calls, fresh_input_tokens, ca
407
415
  ''
408
416
  )
409
417
  ELSE ''
410
- END`;var POST_WATERMARK_TABLES=[...KEYED_ROLLUP_TABLES,...GLOBAL_RANKED_ROLLUP_TABLES,"history_daily_stats","history_board_source_daily"];var HISTORY_IMPORT_SCHEMA_VERSION="0.5.21",HISTORY_IMPORT_SCHEMA_SQL=`
418
+ END`;var POST_WATERMARK_TABLES=[...KEYED_ROLLUP_TABLES,...GLOBAL_RANKED_ROLLUP_TABLES,"history_daily_stats","history_board_source_daily"];var HISTORY_IMPORT_SCHEMA_VERSION="0.5.22",HISTORY_IMPORT_SCHEMA_SQL=`
411
419
  CREATE TABLE IF NOT EXISTS history_import_checkpoint (
412
420
  source TEXT NOT NULL,
413
421
  source_file TEXT NOT NULL,
@@ -768,7 +776,14 @@ CREATE INDEX IF NOT EXISTS idx_history_skill_call_invocation_kind
768
776
  ORDER BY started_at DESC, id DESC
769
777
  LIMIT 1 OFFSET ?
770
778
  )`,9999)}async list(spec={}){let{clauses,params}=buildWhere(spec),limit=spec.limit??100,where=clauses.length>0?`WHERE ${clauses.join(" AND ")}`:"",rows=await this.adapter.queryAll(`SELECT ${SUMMARY_COLUMNS.join(", ")} FROM decision_logs ${where}
771
- ORDER BY started_at DESC, id DESC LIMIT ?`,...params,limit).catch((error51)=>{if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return[];throw error51}),last=rows.at(-1);return{rows,nextCursor:rows.length===limit&&last!==void 0?{started_at:last.started_at,id:last.id}:null}}async summary(spec={}){let{clauses,params}=buildWhere({...spec,before:void 0,limit:void 0}),where=clauses.length>0?`WHERE ${clauses.join(" AND ")}`:"",empty={count:0,accepted:0,fallback:0,rejected:0,durations:[]};try{let grouped=await this.adapter.queryAll(`SELECT outcome, COUNT(*) AS n FROM decision_logs ${where} GROUP BY outcome`,...params);if(grouped.length===0)return empty;let durations=await this.adapter.queryAll(`SELECT duration_ms FROM decision_logs ${where}`,...params),byOutcome=(outcome)=>grouped.find((row)=>row.outcome===outcome)?.n??0;return{count:grouped.reduce((sum,row)=>sum+row.n,0),accepted:byOutcome("accepted"),fallback:byOutcome("fallback"),rejected:byOutcome("rejected"),durations:durations.map((row)=>row.duration_ms)}}catch(error51){if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return empty;throw error51}}async facets(spec={}){let empty={decisionIds:[],makers:[]},clauses=[],params=[];if(spec.since!==void 0)clauses.push("started_at >= ?"),params.push(spec.since);let where=clauses.length>0?`WHERE ${clauses.join(" AND ")}`:"";try{let decisionIds=await this.adapter.queryAll(`SELECT DISTINCT decision_id FROM decision_logs ${where} ORDER BY decision_id`,...params),makerWhere=clauses.length>0?`WHERE ${clauses.join(" AND ")} AND maker_name IS NOT NULL`:"WHERE maker_name IS NOT NULL",makers=await this.adapter.queryAll(`SELECT DISTINCT maker_name FROM decision_logs ${makerWhere} ORDER BY maker_name`,...params);return{decisionIds:decisionIds.map((row)=>row.decision_id),makers:makers.map((row)=>row.maker_name).filter((name)=>name!==null)}}catch(error51){if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return empty;throw error51}}async get(id){try{return await this.adapter.queryFirst("SELECT * FROM decision_logs WHERE id = ?",id)??null}catch(error51){if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return null;throw error51}}}init_schema();var phaseRunsTable=defineTable("phase_runs",{id:text("id").primaryKey(),runId:text("run_id").notNull().references(()=>runs.id),phase:text("phase").notNull(),status:text("status").notNull(),startedAt:integer2("started_at"),completedAt:integer2("completed_at"),...standardColumns}),phaseRuns=phaseRunsTable.table;init_dist4();function normalizePersistedWorkflowLayer(layer){if(layer==="bundled")return"shared";if(layer==="project"||layer==="registered"||layer==="shared")return layer;return null}class RunDao extends EntityDao{constructor(adapter){super(adapter,runs,[runs.id],"runs")}open(input={}){return super.create({id:createId("run"),workspaceId:input.workspaceId??null,status:input.status??"pending",agent:input.agent??null,startedAt:Date.now(),completedAt:null})}traceRows(filter){return this.adapter.queryAll(`SELECT id, workflow_name, mode, status, agent, started_at, completed_at, metadata_json
779
+ ORDER BY started_at DESC, id DESC LIMIT ?`,...params,limit).catch((error51)=>{if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return[];throw error51}),last=rows.at(-1);return{rows,nextCursor:rows.length===limit&&last!==void 0?{started_at:last.started_at,id:last.id}:null}}async summary(spec={}){let{clauses,params}=buildWhere({...spec,before:void 0,limit:void 0}),where=clauses.length>0?`WHERE ${clauses.join(" AND ")}`:"",empty={count:0,accepted:0,fallback:0,rejected:0,durations:[]};try{let grouped=await this.adapter.queryAll(`SELECT outcome, COUNT(*) AS n FROM decision_logs ${where} GROUP BY outcome`,...params);if(grouped.length===0)return empty;let durations=await this.adapter.queryAll(`SELECT duration_ms FROM decision_logs ${where}`,...params),byOutcome=(outcome)=>grouped.find((row)=>row.outcome===outcome)?.n??0;return{count:grouped.reduce((sum,row)=>sum+row.n,0),accepted:byOutcome("accepted"),fallback:byOutcome("fallback"),rejected:byOutcome("rejected"),durations:durations.map((row)=>row.duration_ms)}}catch(error51){if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return empty;throw error51}}async facets(spec={}){let empty={decisionIds:[],makers:[]},clauses=[],params=[];if(spec.since!==void 0)clauses.push("started_at >= ?"),params.push(spec.since);let where=clauses.length>0?`WHERE ${clauses.join(" AND ")}`:"";try{let decisionIds=await this.adapter.queryAll(`SELECT DISTINCT decision_id FROM decision_logs ${where} ORDER BY decision_id`,...params),makerWhere=clauses.length>0?`WHERE ${clauses.join(" AND ")} AND maker_name IS NOT NULL`:"WHERE maker_name IS NOT NULL",makers=await this.adapter.queryAll(`SELECT DISTINCT maker_name FROM decision_logs ${makerWhere} ORDER BY maker_name`,...params);return{decisionIds:decisionIds.map((row)=>row.decision_id),makers:makers.map((row)=>row.maker_name).filter((name)=>name!==null)}}catch(error51){if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return empty;throw error51}}async volumeBuckets(spec){let until=spec.until??new Date().toISOString(),since=spec.since,sinceMs=Date.parse(since),untilMs=Date.parse(until);if(Number.isNaN(sinceMs)||Number.isNaN(untilMs)||untilMs<=sinceMs)return[];let width=untilMs-sinceMs,bucketMs=spec.bucketMs&&spec.bucketMs>0?spec.bucketMs:width<=3600000?60000:width<=21600000?300000:width<=86400000?900000:width<=604800000?3600000:86400000;while(Math.ceil((untilMs-sinceMs)/bucketMs)>240)bucketMs*=2;let bucketCount=Math.max(1,Math.ceil((untilMs-sinceMs)/bucketMs)),buckets=[];for(let i2=0;i2<bucketCount;i2++)buckets.push({timestamp:new Date(sinceMs+i2*bucketMs).toISOString(),total:0,byDecision:{},byOutcome:{accepted:0,fallback:0,rejected:0}});try{let bucketRows=await this.adapter.queryAll(`SELECT
780
+ CAST((strftime('%s', started_at) * 1000 - ?1) / ?2 AS INTEGER) AS bucket_idx,
781
+ decision_id,
782
+ outcome,
783
+ COUNT(*) AS cnt
784
+ FROM decision_logs
785
+ WHERE started_at >= ?3 AND started_at < ?4
786
+ GROUP BY bucket_idx, decision_id, outcome`,sinceMs,bucketMs,since,until);for(let row of bucketRows){let idx=Number(row.bucket_idx);if(idx>=0&&idx<buckets.length){let b=buckets[idx];if(b!==void 0){let cnt=Number(row.cnt);if(b.total+=cnt,b.byDecision[row.decision_id]=(b.byDecision[row.decision_id]??0)+cnt,row.outcome==="accepted"||row.outcome==="fallback"||row.outcome==="rejected")b.byOutcome[row.outcome]+=cnt}}}return buckets}catch(error51){if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return buckets;throw error51}}async get(id){try{return await this.adapter.queryFirst("SELECT * FROM decision_logs WHERE id = ?",id)??null}catch(error51){if(error51 instanceof Error&&error51.message.includes("no such table: decision_logs"))return null;throw error51}}}init_schema();var phaseRunsTable=defineTable("phase_runs",{id:text("id").primaryKey(),runId:text("run_id").notNull().references(()=>runs.id),phase:text("phase").notNull(),status:text("status").notNull(),startedAt:integer2("started_at"),completedAt:integer2("completed_at"),...standardColumns}),phaseRuns=phaseRunsTable.table;init_dist4();function normalizePersistedWorkflowLayer(layer){if(layer==="bundled")return"shared";if(layer==="project"||layer==="registered"||layer==="shared")return layer;return null}class RunDao extends EntityDao{constructor(adapter){super(adapter,runs,[runs.id],"runs")}open(input={}){return super.create({id:createId("run"),workspaceId:input.workspaceId??null,status:input.status??"pending",agent:input.agent??null,startedAt:Date.now(),completedAt:null})}traceRows(filter){return this.adapter.queryAll(`SELECT id, workflow_name, mode, status, agent, started_at, completed_at, metadata_json
772
787
  FROM runs
773
788
  WHERE (?1 IS NULL OR workflow_name = ?1)
774
789
  AND (?2 IS NULL OR status = ?2)
@@ -1001,6 +1016,8 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_inbox_messages_request_key ON inbox_messag
1001
1016
  `,INBOX_MESSAGES_REQUEST_KEY_SCHEMA_SQL=`
1002
1017
  ALTER TABLE inbox_messages ADD COLUMN request_key TEXT;
1003
1018
  CREATE UNIQUE INDEX IF NOT EXISTS idx_inbox_messages_request_key ON inbox_messages (request_key) WHERE request_key IS NOT NULL;
1019
+ `,INBOX_MESSAGES_READ_AT_SCHEMA_SQL=`
1020
+ ALTER TABLE inbox_messages ADD COLUMN read_at INTEGER;
1004
1021
  `,QUEUE_JOBS_SCHEMA_SQL=`
1005
1022
  CREATE TABLE IF NOT EXISTS queue_jobs (
1006
1023
  id TEXT PRIMARY KEY,
@@ -1780,7 +1797,7 @@ ALTER TABLE queue_jobs ADD COLUMN timeout_ms INTEGER;
1780
1797
  ALTER TABLE queue_jobs ADD COLUMN timeout_unlimited INTEGER NOT NULL DEFAULT 0;
1781
1798
  ALTER TABLE queue_jobs ADD COLUMN attempt_token TEXT;
1782
1799
  ALTER TABLE queue_jobs ADD COLUMN lease_expires_at INTEGER;
1783
- `,CLI_MIGRATIONS=[{id:"0000_spur_cli_foundation",sql:CLI_SCHEMA_SQL},{id:"0001_spur_cli_team_inbox",sql:INBOX_MESSAGES_SCHEMA_SQL},{id:"0002_spur_cli_rule_history",sql:RULE_ENGINE_SCHEMA_SQL},{id:"0003_spur_cli_planning",sql:PLANNING_SCHEMA_SQL},{id:"0004_spur_cli_queue_jobs",sql:QUEUE_JOBS_SCHEMA_SQL},{id:"0005_spur_cli_run_pid",sql:RUN_PID_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"pid"}},{id:"0006_spur_cli_system_events",sql:SYSTEM_EVENTS_SCHEMA_SQL},{id:"0007_spur_cli_runs_external_key",sql:RUNS_EXTERNAL_KEY_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"external_key"}},{id:"0008_spur_cli_system_events_correlation",sql:SYSTEM_EVENTS_CORRELATION_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"system_events",column:"sequence"}},{id:"0009_spur_cli_history_message_run_idx",sql:HISTORY_MESSAGE_RUN_INDEX_SCHEMA_SQL},{id:"0010_spur_cli_coordination_runs",sql:COORDINATION_RUNS_SCHEMA_SQL},{id:"0011_spur_cli_system_events_sequence_idx",sql:SYSTEM_EVENTS_SEQUENCE_INDEX_SCHEMA_SQL},{id:"0012_spur_cli_history_tool_call_args_raw",sql:HISTORY_TOOL_CALL_ARGS_RAW_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"args_raw"}},{id:"0013_spur_cli_history_run_session",sql:HISTORY_RUN_SESSION_SCHEMA_SQL},{id:"0014_spur_cli_system_events_name_occurred_idx",sql:SYSTEM_EVENTS_NAME_OCCURRED_INDEX_SCHEMA_SQL},{id:"0015_spur_cli_history_tool_call_call_id",sql:HISTORY_TOOL_CALL_CALL_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"call_id"}},{id:"0016_spur_cli_history_message_ts_nullable",sql:HISTORY_MESSAGE_TS_NULLABLE_SCHEMA_SQL},{id:"0017_spur_cli_runs_status_completed_to_done",sql:"UPDATE runs SET status = 'done' WHERE status = 'completed'"},{id:"0018_spur_cli_history_message_request_id",sql:HISTORY_MESSAGE_REQUEST_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_message",column:"request_id"}},{id:"0019_spur_cli_history_etl_tables_drop",sql:HISTORY_ETL_TABLES_DROP_SCHEMA_SQL},{id:"0020_spur_cli_history_board_query_indexes",sql:HISTORY_BOARD_QUERY_INDEXES_SCHEMA_SQL},{id:"0021_spur_cli_history_board_rollups",sql:HISTORY_BOARD_ROLLUPS_SCHEMA_SQL},{id:"0022_spur_cli_history_performance_indexes",sql:HISTORY_PERFORMANCE_INDEXES_SCHEMA_SQL},{id:"0023_spur_cli_history_message_request_id_idx",sql:HISTORY_MESSAGE_REQUEST_ID_INDEX_SCHEMA_SQL},{id:"0024_spur_cli_history_checkpoint_identity",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_size INTEGER",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_size"}},{id:"0025_spur_cli_history_checkpoint_identity_mtime",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_mtime_ms REAL",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_mtime_ms"}},{id:"0026_spur_cli_history_message_duration_source",sql:"ALTER TABLE history_message ADD COLUMN duration_source TEXT",addColumnIfMissing:{table:"history_message",column:"duration_source"}},{id:"0027_spur_cli_history_refresh_active_unique",sql:HISTORY_REFRESH_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0028_spur_cli_history_task_session",sql:HISTORY_TASK_SESSION_SCHEMA_SQL},{id:"0029_spur_cli_history_tool_call_indexes",sql:HISTORY_TOOL_CALL_INDEXES_SCHEMA_SQL},{id:"0030_spur_cli_history_board_covering_indexes",sql:HISTORY_BOARD_COVERING_INDEXES_SCHEMA_SQL},{id:"0031_spur_cli_history_board_tool_stats_columns",sql:HISTORY_BOARD_TOOL_STATS_COLUMNS_SCHEMA_SQL},{id:"0032_spur_cli_history_board_skill_5m",sql:HISTORY_BOARD_SKILL_5M_SCHEMA_SQL},{id:"0033_spur_cli_importer_schema_version",sql:`INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES ('${IMPORTER_SCHEMA_LEDGER_PREFIX}${HISTORY_IMPORT_SCHEMA_VERSION}', strftime('%s', 'now') * 1000);`},{id:"0034_spur_cli_history_tool_identity",sql:HISTORY_TOOL_IDENTITY_SCHEMA_SQL},{id:"0035_spur_cli_history_measure_vector",sql:HISTORY_MEASURE_VECTOR_SCHEMA_SQL},{id:"0036_spur_cli_history_rollup_watermark",sql:HISTORY_ROLLUP_WATERMARK_SCHEMA_SQL},{id:"0037_spur_cli_history_dimension_marts",sql:HISTORY_DIMENSION_MARTS_SCHEMA_SQL},{id:"0038_spur_cli_retention_compaction_meta",sql:RETENTION_COMPACTION_META_SCHEMA_SQL},{id:"0039_spur_cli_bounded_rollup_derivations",sql:BOUNDED_ROLLUP_DERIVATIONS_SCHEMA_SQL,addColumnIfMissing:{table:"history_board_source_daily",column:"raw_messages"}},{id:"0040_spur_cli_agent_executor_updates",sql:AGENT_EXECUTOR_UPDATES_SCHEMA_SQL},{id:"0041_spur_cli_queue_jobs_deadline_lease_columns",sql:QUEUE_JOBS_DEADLINE_LEASE_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"queue_jobs",column:"timeout_ms"}},{id:"0042_spur_cli_history_model_fallback_index",sql:HISTORY_MESSAGE_MODEL_FALLBACK_INDEX_SCHEMA_SQL},{id:"0043_spur_cli_inbox_messages_request_key",sql:INBOX_MESSAGES_REQUEST_KEY_SCHEMA_SQL,addColumnIfMissing:{table:"inbox_messages",column:"request_key"}},{id:"0044_spur_cli_coordination_runs_receipt_columns",sql:COORDINATION_RUNS_RECEIPT_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"message_ids_json"}},{id:"0045_spur_cli_project_claims",sql:PROJECT_CLAIMS_SCHEMA_SQL},{id:"0046_spur_cli_project_strategy",sql:PROJECT_STRATEGY_SCHEMA_SQL},{id:"0047_spur_cli_scheduler_custom_active_unique",sql:SCHEDULER_CUSTOM_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0048_spur_cli_agent_executor_updates_owner_columns",sql:AGENT_EXECUTOR_UPDATES_OWNER_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"agent_executor_updates",column:"owner"}},{id:"0049_spur_cli_runs_terminal_reason",sql:CLI_RUNS_TERMINAL_REASON_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"terminal_reason"}},{id:"0050_spur_cli_history_board_skill_5m_capability_grain",sql:HISTORY_BOARD_SKILL_5M_CAPABILITY_GRAIN_SCHEMA_SQL},{id:"0051_spur_cli_coordination_runs_parent",sql:COORDINATION_RUNS_PARENT_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"parent_run_id"}},{id:"0052_spur_cli_decision_logs",sql:DECISION_LOGS_SCHEMA_SQL}];async function allMigrationsJournaled(adapter,migrations){if(migrations.length===0)return!0;if(!await tableExists2(adapter,"__spur_cli_migrations"))return!1;let placeholders=migrations.map(()=>"?").join(", ");if(((await adapter.queryFirst(`SELECT COUNT(*) AS n FROM "__spur_cli_migrations" WHERE id IN (${placeholders})`,...migrations.map((m)=>m.id)))?.n??0)!==migrations.length)return!1;if(migrations.some((m)=>m.id==="0033_spur_cli_importer_schema_version")){if(!await adapter.queryFirst('SELECT id FROM "__spur_cli_migrations" WHERE id = ?',IMPORTER_SCHEMA_LEDGER_PREFIX+HISTORY_IMPORT_SCHEMA_VERSION))return!1}return!0}async function applyCliMigrations(adapter,migrations=CLI_MIGRATIONS){if(await allMigrationsJournaled(adapter,migrations))return 0;await adapter.exec('CREATE TABLE IF NOT EXISTS "__spur_cli_migrations" (id TEXT PRIMARY KEY, applied_at INTEGER NOT NULL)');let applied=0;for(let migration of migrations){if(await adapter.queryFirst('SELECT id FROM "__spur_cli_migrations" WHERE id = ?',migration.id)!=null)continue;if(migration.id==="0009_spur_cli_history_message_run_idx"&&!await tableExists2(adapter,"history_message")){for(let statement of splitSqlStatements(HISTORY_IMPORT_SCHEMA_SQL))await adapter.exec(statement);let versionLedgerId=IMPORTER_SCHEMA_LEDGER_PREFIX+HISTORY_IMPORT_SCHEMA_VERSION;await adapter.run('INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',[versionLedgerId,Date.now()])}if((migration.id==="0024_spur_cli_history_checkpoint_identity"||migration.id==="0025_spur_cli_history_checkpoint_identity_mtime")&&!await tableExists2(adapter,"history_import_checkpoint")){await adapter.run('INSERT INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',[migration.id,Date.now()]);continue}if(migration.id==="0034_spur_cli_history_tool_identity"&&await tableExists2(adapter,"history_tool_call")){if(!await columnExists(adapter,"history_tool_call","effective_tool_name"))await adapter.exec("ALTER TABLE history_tool_call ADD COLUMN effective_tool_name TEXT NOT NULL DEFAULT 'unknown'");if(!await columnExists(adapter,"history_tool_call","tool_name_alias"))await adapter.exec("ALTER TABLE history_tool_call ADD COLUMN tool_name_alias TEXT NOT NULL DEFAULT 'unknown'")}let addColumnGuard=migration.addColumnIfMissing,shouldApplySql=addColumnGuard===void 0||!await columnExists(adapter,addColumnGuard.table,addColumnGuard.column),tsNullableSkip=migration.id==="0016_spur_cli_history_message_ts_nullable"&&(!await tableExists2(adapter,"history_message")||!await columnNotNull(adapter,"history_message","ts")),sequenceIndexSkip=migration.id==="0011_spur_cli_system_events_sequence_idx"&&!await tableExists2(adapter,"system_events"),argsRawSkip=migration.id==="0012_spur_cli_history_tool_call_args_raw"&&!await tableExists2(adapter,"history_tool_call"),callIdSkip=migration.id==="0015_spur_cli_history_tool_call_call_id"&&!await tableExists2(adapter,"history_tool_call"),nameOccurredIndexSkip=migration.id==="0014_spur_cli_system_events_name_occurred_idx"&&!await tableExists2(adapter,"system_events"),historyBoardQueryIndexesSkip=migration.id==="0020_spur_cli_history_board_query_indexes"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","seq")||!await columnExists(adapter,"history_message","duration_ms")||!await columnExists(adapter,"history_message","role")||!await columnExists(adapter,"history_message","input_tokens")||!await columnExists(adapter,"history_message","cache_read_tokens")),historyPerformanceIndexesSkip=migration.id==="0022_spur_cli_history_performance_indexes"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","ts")||!await columnExists(adapter,"history_message","model")||!await tableExists2(adapter,"history_tool_call")),historyToolCallIndexesSkip=migration.id==="0029_spur_cli_history_tool_call_indexes"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","ts")||!await tableExists2(adapter,"history_tool_call")),historyBoardCoveringIndexesSkip=migration.id==="0030_spur_cli_history_board_covering_indexes"&&(!await tableExists2(adapter,"history_daily_stats")||!await tableExists2(adapter,"history_board_tool_5m")||!await tableExists2(adapter,"history_board_message_5m")||!await tableExists2(adapter,"history_board_session_stats")||!await tableExists2(adapter,"history_board_source_daily")||!await tableExists2(adapter,"history_tool_call")||!await tableExists2(adapter,"history_task_session")),runsStatusDoneSkip=migration.id==="0017_spur_cli_runs_status_completed_to_done"&&(!await tableExists2(adapter,"runs")||!await columnExists(adapter,"runs","status")),historyBoardToolStatsColumnsSkip=migration.id==="0031_spur_cli_history_board_tool_stats_columns"&&(!await tableExists2(adapter,"history_board_tool_stats")||await columnExists(adapter,"history_board_tool_stats","fresh_input_tokens")),queueJobsActiveIndexSkip=migration.id==="0027_spur_cli_history_refresh_active_unique"&&!await tableExists2(adapter,"queue_jobs"),schedulerCustomActiveIndexSkip=migration.id==="0047_spur_cli_scheduler_custom_active_unique"&&!await tableExists2(adapter,"queue_jobs"),queueJobsDeadlineLeaseSkip=migration.id==="0041_spur_cli_queue_jobs_deadline_lease_columns"&&!await tableExists2(adapter,"queue_jobs"),runsTerminalReasonSkip=migration.id==="0049_spur_cli_runs_terminal_reason"&&!await tableExists2(adapter,"runs"),skillCapabilityGrainSkip=migration.id==="0050_spur_cli_history_board_skill_5m_capability_grain"&&!await tableExists2(adapter,"history_board_skill_5m"),inboxRequestKeySkip=migration.id==="0043_spur_cli_inbox_messages_request_key"&&!await tableExists2(adapter,"inbox_messages"),coordinationReceiptColumnsSkip=migration.id==="0044_spur_cli_coordination_runs_receipt_columns"&&!await tableExists2(adapter,"coordination_runs"),historyToolIdentitySkip=migration.id==="0034_spur_cli_history_tool_identity"&&!await tableExists2(adapter,"history_tool_call"),historyMeasureVectorSkip=migration.id==="0035_spur_cli_history_measure_vector"&&(!await tableExists2(adapter,"history_board_message_5m")||await columnExists(adapter,"history_board_message_5m","cache_write_tokens")),historyRollupWatermarkSkip=migration.id==="0036_spur_cli_history_rollup_watermark"&&(await tableExists2(adapter,"history_board_rollup_watermark")||!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","imported_at")),boundedRollupDerivationsSkip=migration.id==="0039_spur_cli_bounded_rollup_derivations"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","source_file")||!await tableExists2(adapter,"history_board_source_daily")),historyModelFallbackIndexSkip=migration.id==="0042_spur_cli_history_model_fallback_index"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","model"));if(shouldApplySql&&!sequenceIndexSkip&&!argsRawSkip&&!runsStatusDoneSkip&&!nameOccurredIndexSkip&&!historyBoardQueryIndexesSkip&&!historyPerformanceIndexesSkip&&!historyToolCallIndexesSkip&&!historyBoardCoveringIndexesSkip&&!historyBoardToolStatsColumnsSkip&&!callIdSkip&&!tsNullableSkip&&!queueJobsActiveIndexSkip&&!schedulerCustomActiveIndexSkip&&!queueJobsDeadlineLeaseSkip&&!runsTerminalReasonSkip&&!skillCapabilityGrainSkip&&!inboxRequestKeySkip&&!coordinationReceiptColumnsSkip&&!historyToolIdentitySkip&&!historyMeasureVectorSkip&&!historyRollupWatermarkSkip&&!boundedRollupDerivationsSkip&&!historyModelFallbackIndexSkip)for(let statement of splitSqlStatements(migration.sql))await adapter.exec(statement);if(historyToolIdentitySkip&&!await tableExists2(adapter,"history_tool_alias_map"))await adapter.exec("CREATE TABLE IF NOT EXISTS history_tool_alias_map (source TEXT NOT NULL, effective_tool_name TEXT NOT NULL, alias TEXT NOT NULL, PRIMARY KEY (source, effective_tool_name));");await adapter.run('INSERT INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',migration.id,Date.now()),applied+=1}if(migrations.some((m)=>m.id==="0033_spur_cli_importer_schema_version")){let currentVersionLedgerId=IMPORTER_SCHEMA_LEDGER_PREFIX+HISTORY_IMPORT_SCHEMA_VERSION;if(!await adapter.queryFirst('SELECT id FROM "__spur_cli_migrations" WHERE id = ?',currentVersionLedgerId)){for(let statement of splitSqlStatements(HISTORY_IMPORT_SCHEMA_SQL))if(statement.startsWith("CREATE TABLE"))await adapter.exec(statement);await adapter.run('INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',[currentVersionLedgerId,Date.now()]),applied+=1}}return applied}async function columnExists(adapter,table3,column2){return(await adapter.queryAll(`PRAGMA table_info("${table3}")`)).some((row)=>row.name===column2)}async function columnNotNull(adapter,table3,column2){return(await adapter.queryAll(`PRAGMA table_info("${table3}")`)).some((row)=>row.name===column2&&row.notnull===1)}async function tableExists2(adapter,table3){return await adapter.queryFirst("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",table3)!=null}function splitSqlStatements(sql4){return sql4.split(";").map((statement)=>statement.trim()).filter(Boolean)}var SQLITE_BUSY_TIMEOUT_MS=30000;async function createMigratedDb(options){let{createDbAdapter:createDbAdapter3}=await Promise.resolve().then(() => (init_dist4(),exports_dist)),adapter=await createDbAdapter3({driver:"bun-sqlite",url:options.url});return await adapter.exec(`PRAGMA busy_timeout = ${SQLITE_BUSY_TIMEOUT_MS}`),await applyCliMigrations(adapter),adapter}init_zod();init_zod();var STAGE_REGISTRY_SCHEMA_VERSION={major:1,minor:3},stageSchemaVersionSchema=exports_external.object({major:exports_external.number().int().nonnegative(),minor:exports_external.number().int().nonnegative()}).strict();var MUTATION_CLASSES=["none","corpus","code","tests","verdict","learnings","driver","irreversible"];var inlineExecutionSchema=exports_external.object({kind:exports_external.literal("inline"),current_agent_allowed:exports_external.literal(!0),may_reuse_captured_layers:exports_external.boolean().optional()}).strict(),subprocessExecutionSchema=exports_external.object({kind:exports_external.literal("subprocess"),current_agent_allowed:exports_external.literal(!1),via:exports_external.literal("spur-agent-run")}).strict(),deterministicExecutionSchema=exports_external.object({kind:exports_external.literal("deterministic"),current_agent_allowed:exports_external.literal(!1),executor:exports_external.enum(["cli","script"])}).strict(),hitlExecutionSchema=exports_external.object({kind:exports_external.literal("hitl"),current_agent_allowed:exports_external.literal(!0),gate_timing:exports_external.enum(["pre","post","both"])}).strict(),irreversibleExecutionSchema=exports_external.object({kind:exports_external.literal("irreversible"),requires_operator_intent:exports_external.literal(!0),current_agent_allowed:exports_external.boolean(),rollback_disclaimer:exports_external.string().min(1)}).strict(),executionKindSchema=exports_external.discriminatedUnion("kind",[inlineExecutionSchema,subprocessExecutionSchema,deterministicExecutionSchema,hitlExecutionSchema,irreversibleExecutionSchema]),ARTIFACT_DIRECTIONS=["input","output"],stageArtifactSchema=exports_external.object({kind:exports_external.string().min(1),direction:exports_external.enum(ARTIFACT_DIRECTIONS),identity:exports_external.string().optional(),description:exports_external.string().optional(),required:exports_external.boolean().optional().default(!0)}).strict(),stageGateSchema=exports_external.object({name:exports_external.string().min(1),timing:exports_external.enum(["pre","post","transition"]),min_verdict:exports_external.enum(["pass","partial","fail"]).optional(),description:exports_external.string().optional()}).strict(),stageRetryPolicySchema=exports_external.object({max_attempts:exports_external.number().int().min(1),terminal_stop:exports_external.enum(["block","escalate","fail"]),timeout_seconds:exports_external.number().int().positive().optional()}).strict(),CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"],LEGACY_CAPABLE_ALIAS="capable";function normalizeCapabilityTier(value){return value===LEGACY_CAPABLE_ALIAS?"capable-1":value}var capabilityTierSchema=exports_external.preprocess(normalizeCapabilityTier,exports_external.enum(CAPABILITY_TIERS)),objectiveEscalationTriggerSchema=exports_external.enum(["gate-fail","timeout","insufficient-evidence","retry-exhausted","resource-exhaustion","auth"]),stageModelPolicySchema=exports_external.object({min_tier:capabilityTierSchema,fallback:exports_external.array(exports_external.object({tier:capabilityTierSchema,trigger:objectiveEscalationTriggerSchema}).strict()),override_key:exports_external.string().optional()}).strict();var CONTEXT_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence","run-state","tool-observations"],stageContextLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),required:exports_external.literal(!0)}).strict(),stageEventSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().optional()}).strict(),STAGE_ID_PATTERN=/^[a-z][a-z0-9-]*$/,stageRecordSchema=exports_external.object({schema_version:stageSchemaVersionSchema,id:exports_external.string().regex(STAGE_ID_PATTERN,{message:"stage id must be lowercase kebab-case"}),aliases:exports_external.array(exports_external.string().min(1)).optional().default([]),description:exports_external.string().min(1),artifacts:exports_external.array(stageArtifactSchema).min(1),reasoning_skill:exports_external.string().min(1),required_references:exports_external.array(exports_external.string().min(1)).optional().default([]),gates:exports_external.array(stageGateSchema).optional().default([]),mutation_class:exports_external.enum(MUTATION_CLASSES),retry:stageRetryPolicySchema,model_policy:stageModelPolicySchema,context_layers:exports_external.array(stageContextLayerSchema).optional().default([]),observability:exports_external.array(stageEventSchema).optional().default([]),execution:executionKindSchema}).strict();var REGISTERED_CANONICAL_STAGES=[{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"refine",aliases:["dev-refine"],description:"dev-refine: Q&A refinement, section filling, AC tightening",artifacts:[{kind:"task-section",direction:"input",required:!0,description:"Background/Requirements sections"},{kind:"task-section",direction:"output",required:!0,description:"Q&A/Design/Plan/AC sections"}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-2",trigger:"gate-fail"},{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"plan",aliases:["dev-plan"],description:"dev-plan: feature intake -> AC generation -> decomposition",artifacts:[{kind:"feature-frontmatter",direction:"input",required:!0},{kind:"task-batch",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"feature-check",timing:"post",min_verdict:"pass"},{name:"batch-create",timing:"post",min_verdict:"pass"}],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-2",fallback:[{tier:"capable-3",trigger:"gate-fail"},{tier:"capable-3",trigger:"auth"},{tier:"capable-3",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"implement",aliases:["dev-run"],description:"dev-run --mode implement: code edits in worktree",artifacts:[{kind:"worktree-diff",direction:"output",required:!0},{kind:"task-section",direction:"output",required:!0,identity:"Solution"}],reasoning_skill:"sp:code-implementation",required_references:[],gates:[],mutation_class:"code",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"timeout"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"test",aliases:["dev-unit","dev-fixall"],description:"dev-unit: generate/extend tests to coverage target",artifacts:[{kind:"test-file",direction:"output",required:!0},{kind:"coverage-report",direction:"output",required:!1}],reasoning_skill:"sp:code-testing",required_references:[],gates:[],mutation_class:"tests",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}],min_tier:"standard"},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"verify",aliases:["dev-verify"],description:"dev-verify: SECUA review + requirements traceability",artifacts:[{kind:"worktree-diff",direction:"input",required:!0},{kind:"verdict-artifact",direction:"output",required:!0,identity:"<wbs>-verdict.json"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[{name:"verdict-artifact",timing:"post",min_verdict:"pass"},{name:"strict-core",timing:"post",min_verdict:"pass"}],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"escalate"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"wrap",aliases:["dev-wrap"],description:"dev-wrap: learnings/doc-sync/feature transition",artifacts:[{kind:"learning-entry",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"task-check",timing:"pre",min_verdict:"pass"}],mutation_class:"learnings",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"hitl",current_agent_allowed:!0,gate_timing:"both"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"review",aliases:["dev-review"],description:"dev-review: multi-dimensional code review (coordinator writes the combined Review)",artifacts:[{kind:"review-findings",direction:"output",required:!0,identity:"Review"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"record",aliases:["dev-record"],description:"record: deterministic Testing write-back from the verdict artifact; bare-Review fallback only",artifacts:[{kind:"verdict-artifact",direction:"input",required:!0,identity:"<wbs>-verdict.json"},{kind:"task-section",direction:"output",required:!0,identity:"Testing"},{kind:"task-section",direction:"output",required:!1,identity:"Review",description:"fallback-only: backfills Review only when the section is bare; never overwrites authored Review"}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"dogfood",aliases:["dev-dogfood"],description:"dev-dogfood: end-to-end driver test",artifacts:[{kind:"dogfood-report",direction:"output",required:!0},{kind:"monitor-ledger",direction:"output",required:!1}],reasoning_skill:"sp:dogfood-testing",required_references:[],gates:[],mutation_class:"driver",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"brainstorm",aliases:["dev-brainstorm"],description:"dev-brainstorm: structured ideation",artifacts:[{kind:"brainstorm-outline",direction:"output",required:!0}],reasoning_skill:"sp:brainstorm",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"changelog",aliases:["dev-changelog"],description:"dev-changelog: generate changelog from git commits",artifacts:[{kind:"changelog-entry",direction:"output",required:!0}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"none",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}}],CANONICAL_STAGE_BY_KEY=new Map;for(let s2 of REGISTERED_CANONICAL_STAGES){CANONICAL_STAGE_BY_KEY.set(s2.id,s2);for(let a2 of s2.aliases??[])CANONICAL_STAGE_BY_KEY.set(a2,s2)}var CACHEABILITY_CLASSES=["stable-prefix-eligible","volatile"],SENSITIVITY_CLASSES=["public","internal","confidential"],envelopeProvenanceSchema=exports_external.object({owner:exports_external.string().min(1),schema_version:exports_external.string().min(1),source_revision:exports_external.string().nullable().optional(),generated_at:exports_external.string().datetime()}).strict(),envelopeSizeBudgetSchema=exports_external.object({max_bytes:exports_external.number().int().positive()}).strict(),envelopeLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),content:exports_external.string(),size_bytes:exports_external.number().int().nonnegative(),content_hash:exports_external.string().length(64),provenance:envelopeProvenanceSchema,cacheability:exports_external.enum(CACHEABILITY_CLASSES),sensitivity:exports_external.enum(SENSITIVITY_CLASSES).default("internal"),size_budget:envelopeSizeBudgetSchema.optional(),disclosure_handle:exports_external.string().optional()}).strict(),STABLE_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence"],VOLATILE_LAYER_NAMES=["run-state","tool-observations"];var envelopeSchema=exports_external.object({schema_version:exports_external.string().default("1.0"),layers:exports_external.array(envelopeLayerSchema).min(1),stage_id:exports_external.string().optional(),run_id:exports_external.string().optional(),assembled_at:exports_external.string().datetime(),total_size_bytes:exports_external.number().int().nonnegative()}).strict(),projectSnapshotSchema=exports_external.object({name:exports_external.string(),version:exports_external.string(),task_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),todo:exports_external.number().int().nonnegative(),wip:exports_external.number().int().nonnegative(),testing:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),feature_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),active:exports_external.number().int().nonnegative(),verifying:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),active_features:exports_external.array(exports_external.string()),content_hash:exports_external.string().length(64).optional()}).strict(),taskSnapshotSchema=exports_external.object({wbs:exports_external.string().regex(/^\d{4}$/),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),feature_id:exports_external.string().optional(),acceptance_criteria:exports_external.string().optional(),locked_qa:exports_external.array(exports_external.string()).optional(),solution:exports_external.string().optional(),content_hash:exports_external.string().length(64).optional()}).strict(),featureSnapshotSchema=exports_external.object({id:exports_external.string(),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),scenarios:exports_external.array(exports_external.string()).optional(),content_hash:exports_external.string().length(64).optional()}).strict();var ALL_LAYER_NAMES=[...STABLE_LAYER_NAMES,...VOLATILE_LAYER_NAMES],LAYER_ORDER={};ALL_LAYER_NAMES.forEach((name,idx)=>{LAYER_ORDER[name]=idx});init_dist2();var TASK_CANONICAL_SECTIONS=["Background","Requirements","Acceptance Criteria","Q&A","Design","Plan","Root Cause","Solution","Testing","Review","References","History"],FEATURE_CANONICAL_SECTIONS=["Goal","Scope","Acceptance Criteria","Tasks","Notes","History"],UNIVERSAL_SECTIONS=["History","References","Notes"],HEADING_LEVELS={task:3,feature:2},START_MARKER="<!-- AUTO-GENERATED by spur feature refresh -->",END_MARKER="<!-- END AUTO-GENERATED -->",MARKER_START_RE=/<!--[ \t]*AUTO-GENERATED.*?-->/,MARKER_END_RE=/<!--[ \t]*END[ \t]*AUTO-GENERATED.*?-->/;function findHeadings(body,hashes){let hits=[],prefix=`${hashes} `,inCodeBlock=!1,lineStart=0;for(let i2=0;i2<=body.length;i2++){if(i2!==body.length&&body[i2]!==`
1800
+ `,CLI_MIGRATIONS=[{id:"0000_spur_cli_foundation",sql:CLI_SCHEMA_SQL},{id:"0001_spur_cli_team_inbox",sql:INBOX_MESSAGES_SCHEMA_SQL},{id:"0002_spur_cli_rule_history",sql:RULE_ENGINE_SCHEMA_SQL},{id:"0003_spur_cli_planning",sql:PLANNING_SCHEMA_SQL},{id:"0004_spur_cli_queue_jobs",sql:QUEUE_JOBS_SCHEMA_SQL},{id:"0005_spur_cli_run_pid",sql:RUN_PID_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"pid"}},{id:"0006_spur_cli_system_events",sql:SYSTEM_EVENTS_SCHEMA_SQL},{id:"0007_spur_cli_runs_external_key",sql:RUNS_EXTERNAL_KEY_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"external_key"}},{id:"0008_spur_cli_system_events_correlation",sql:SYSTEM_EVENTS_CORRELATION_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"system_events",column:"sequence"}},{id:"0009_spur_cli_history_message_run_idx",sql:HISTORY_MESSAGE_RUN_INDEX_SCHEMA_SQL},{id:"0010_spur_cli_coordination_runs",sql:COORDINATION_RUNS_SCHEMA_SQL},{id:"0011_spur_cli_system_events_sequence_idx",sql:SYSTEM_EVENTS_SEQUENCE_INDEX_SCHEMA_SQL},{id:"0012_spur_cli_history_tool_call_args_raw",sql:HISTORY_TOOL_CALL_ARGS_RAW_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"args_raw"}},{id:"0013_spur_cli_history_run_session",sql:HISTORY_RUN_SESSION_SCHEMA_SQL},{id:"0014_spur_cli_system_events_name_occurred_idx",sql:SYSTEM_EVENTS_NAME_OCCURRED_INDEX_SCHEMA_SQL},{id:"0015_spur_cli_history_tool_call_call_id",sql:HISTORY_TOOL_CALL_CALL_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"call_id"}},{id:"0016_spur_cli_history_message_ts_nullable",sql:HISTORY_MESSAGE_TS_NULLABLE_SCHEMA_SQL},{id:"0017_spur_cli_runs_status_completed_to_done",sql:"UPDATE runs SET status = 'done' WHERE status = 'completed'"},{id:"0018_spur_cli_history_message_request_id",sql:HISTORY_MESSAGE_REQUEST_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_message",column:"request_id"}},{id:"0019_spur_cli_history_etl_tables_drop",sql:HISTORY_ETL_TABLES_DROP_SCHEMA_SQL},{id:"0020_spur_cli_history_board_query_indexes",sql:HISTORY_BOARD_QUERY_INDEXES_SCHEMA_SQL},{id:"0021_spur_cli_history_board_rollups",sql:HISTORY_BOARD_ROLLUPS_SCHEMA_SQL},{id:"0022_spur_cli_history_performance_indexes",sql:HISTORY_PERFORMANCE_INDEXES_SCHEMA_SQL},{id:"0023_spur_cli_history_message_request_id_idx",sql:HISTORY_MESSAGE_REQUEST_ID_INDEX_SCHEMA_SQL},{id:"0024_spur_cli_history_checkpoint_identity",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_size INTEGER",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_size"}},{id:"0025_spur_cli_history_checkpoint_identity_mtime",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_mtime_ms REAL",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_mtime_ms"}},{id:"0026_spur_cli_history_message_duration_source",sql:"ALTER TABLE history_message ADD COLUMN duration_source TEXT",addColumnIfMissing:{table:"history_message",column:"duration_source"}},{id:"0027_spur_cli_history_refresh_active_unique",sql:HISTORY_REFRESH_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0028_spur_cli_history_task_session",sql:HISTORY_TASK_SESSION_SCHEMA_SQL},{id:"0029_spur_cli_history_tool_call_indexes",sql:HISTORY_TOOL_CALL_INDEXES_SCHEMA_SQL},{id:"0030_spur_cli_history_board_covering_indexes",sql:HISTORY_BOARD_COVERING_INDEXES_SCHEMA_SQL},{id:"0031_spur_cli_history_board_tool_stats_columns",sql:HISTORY_BOARD_TOOL_STATS_COLUMNS_SCHEMA_SQL},{id:"0032_spur_cli_history_board_skill_5m",sql:HISTORY_BOARD_SKILL_5M_SCHEMA_SQL},{id:"0033_spur_cli_importer_schema_version",sql:`INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES ('${IMPORTER_SCHEMA_LEDGER_PREFIX}${HISTORY_IMPORT_SCHEMA_VERSION}', strftime('%s', 'now') * 1000);`},{id:"0034_spur_cli_history_tool_identity",sql:HISTORY_TOOL_IDENTITY_SCHEMA_SQL},{id:"0035_spur_cli_history_measure_vector",sql:HISTORY_MEASURE_VECTOR_SCHEMA_SQL},{id:"0036_spur_cli_history_rollup_watermark",sql:HISTORY_ROLLUP_WATERMARK_SCHEMA_SQL},{id:"0037_spur_cli_history_dimension_marts",sql:HISTORY_DIMENSION_MARTS_SCHEMA_SQL},{id:"0038_spur_cli_retention_compaction_meta",sql:RETENTION_COMPACTION_META_SCHEMA_SQL},{id:"0039_spur_cli_bounded_rollup_derivations",sql:BOUNDED_ROLLUP_DERIVATIONS_SCHEMA_SQL,addColumnIfMissing:{table:"history_board_source_daily",column:"raw_messages"}},{id:"0040_spur_cli_agent_executor_updates",sql:AGENT_EXECUTOR_UPDATES_SCHEMA_SQL},{id:"0041_spur_cli_queue_jobs_deadline_lease_columns",sql:QUEUE_JOBS_DEADLINE_LEASE_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"queue_jobs",column:"timeout_ms"}},{id:"0042_spur_cli_history_model_fallback_index",sql:HISTORY_MESSAGE_MODEL_FALLBACK_INDEX_SCHEMA_SQL},{id:"0043_spur_cli_inbox_messages_request_key",sql:INBOX_MESSAGES_REQUEST_KEY_SCHEMA_SQL,addColumnIfMissing:{table:"inbox_messages",column:"request_key"}},{id:"0044_spur_cli_coordination_runs_receipt_columns",sql:COORDINATION_RUNS_RECEIPT_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"message_ids_json"}},{id:"0045_spur_cli_project_claims",sql:PROJECT_CLAIMS_SCHEMA_SQL},{id:"0046_spur_cli_project_strategy",sql:PROJECT_STRATEGY_SCHEMA_SQL},{id:"0047_spur_cli_scheduler_custom_active_unique",sql:SCHEDULER_CUSTOM_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0048_spur_cli_agent_executor_updates_owner_columns",sql:AGENT_EXECUTOR_UPDATES_OWNER_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"agent_executor_updates",column:"owner"}},{id:"0049_spur_cli_runs_terminal_reason",sql:CLI_RUNS_TERMINAL_REASON_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"terminal_reason"}},{id:"0050_spur_cli_history_board_skill_5m_capability_grain",sql:HISTORY_BOARD_SKILL_5M_CAPABILITY_GRAIN_SCHEMA_SQL},{id:"0051_spur_cli_coordination_runs_parent",sql:COORDINATION_RUNS_PARENT_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"parent_run_id"}},{id:"0052_spur_cli_decision_logs",sql:DECISION_LOGS_SCHEMA_SQL},{id:"0053_spur_cli_inbox_messages_read_at",sql:INBOX_MESSAGES_READ_AT_SCHEMA_SQL,addColumnIfMissing:{table:"inbox_messages",column:"read_at"}}];async function allMigrationsJournaled(adapter,migrations){if(migrations.length===0)return!0;if(!await tableExists2(adapter,"__spur_cli_migrations"))return!1;let placeholders=migrations.map(()=>"?").join(", ");if(((await adapter.queryFirst(`SELECT COUNT(*) AS n FROM "__spur_cli_migrations" WHERE id IN (${placeholders})`,...migrations.map((m)=>m.id)))?.n??0)!==migrations.length)return!1;if(migrations.some((m)=>m.id==="0033_spur_cli_importer_schema_version")){if(!await adapter.queryFirst('SELECT id FROM "__spur_cli_migrations" WHERE id = ?',IMPORTER_SCHEMA_LEDGER_PREFIX+HISTORY_IMPORT_SCHEMA_VERSION))return!1}return!0}async function applyCliMigrations(adapter,migrations=CLI_MIGRATIONS){if(await allMigrationsJournaled(adapter,migrations))return 0;await adapter.exec('CREATE TABLE IF NOT EXISTS "__spur_cli_migrations" (id TEXT PRIMARY KEY, applied_at INTEGER NOT NULL)');let applied=0;for(let migration of migrations){if(await adapter.queryFirst('SELECT id FROM "__spur_cli_migrations" WHERE id = ?',migration.id)!=null)continue;if(migration.id==="0009_spur_cli_history_message_run_idx"&&!await tableExists2(adapter,"history_message")){for(let statement of splitSqlStatements(HISTORY_IMPORT_SCHEMA_SQL))await adapter.exec(statement);let versionLedgerId=IMPORTER_SCHEMA_LEDGER_PREFIX+HISTORY_IMPORT_SCHEMA_VERSION;await adapter.run('INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',[versionLedgerId,Date.now()])}if((migration.id==="0024_spur_cli_history_checkpoint_identity"||migration.id==="0025_spur_cli_history_checkpoint_identity_mtime")&&!await tableExists2(adapter,"history_import_checkpoint")){await adapter.run('INSERT INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',[migration.id,Date.now()]);continue}if(migration.id==="0034_spur_cli_history_tool_identity"&&await tableExists2(adapter,"history_tool_call")){if(!await columnExists(adapter,"history_tool_call","effective_tool_name"))await adapter.exec("ALTER TABLE history_tool_call ADD COLUMN effective_tool_name TEXT NOT NULL DEFAULT 'unknown'");if(!await columnExists(adapter,"history_tool_call","tool_name_alias"))await adapter.exec("ALTER TABLE history_tool_call ADD COLUMN tool_name_alias TEXT NOT NULL DEFAULT 'unknown'")}let addColumnGuard=migration.addColumnIfMissing,shouldApplySql=addColumnGuard===void 0||!await columnExists(adapter,addColumnGuard.table,addColumnGuard.column),tsNullableSkip=migration.id==="0016_spur_cli_history_message_ts_nullable"&&(!await tableExists2(adapter,"history_message")||!await columnNotNull(adapter,"history_message","ts")),sequenceIndexSkip=migration.id==="0011_spur_cli_system_events_sequence_idx"&&!await tableExists2(adapter,"system_events"),argsRawSkip=migration.id==="0012_spur_cli_history_tool_call_args_raw"&&!await tableExists2(adapter,"history_tool_call"),callIdSkip=migration.id==="0015_spur_cli_history_tool_call_call_id"&&!await tableExists2(adapter,"history_tool_call"),nameOccurredIndexSkip=migration.id==="0014_spur_cli_system_events_name_occurred_idx"&&!await tableExists2(adapter,"system_events"),historyBoardQueryIndexesSkip=migration.id==="0020_spur_cli_history_board_query_indexes"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","seq")||!await columnExists(adapter,"history_message","duration_ms")||!await columnExists(adapter,"history_message","role")||!await columnExists(adapter,"history_message","input_tokens")||!await columnExists(adapter,"history_message","cache_read_tokens")),historyPerformanceIndexesSkip=migration.id==="0022_spur_cli_history_performance_indexes"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","ts")||!await columnExists(adapter,"history_message","model")||!await tableExists2(adapter,"history_tool_call")),historyToolCallIndexesSkip=migration.id==="0029_spur_cli_history_tool_call_indexes"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","ts")||!await tableExists2(adapter,"history_tool_call")),historyBoardCoveringIndexesSkip=migration.id==="0030_spur_cli_history_board_covering_indexes"&&(!await tableExists2(adapter,"history_daily_stats")||!await tableExists2(adapter,"history_board_tool_5m")||!await tableExists2(adapter,"history_board_message_5m")||!await tableExists2(adapter,"history_board_session_stats")||!await tableExists2(adapter,"history_board_source_daily")||!await tableExists2(adapter,"history_tool_call")||!await tableExists2(adapter,"history_task_session")),runsStatusDoneSkip=migration.id==="0017_spur_cli_runs_status_completed_to_done"&&(!await tableExists2(adapter,"runs")||!await columnExists(adapter,"runs","status")),historyBoardToolStatsColumnsSkip=migration.id==="0031_spur_cli_history_board_tool_stats_columns"&&(!await tableExists2(adapter,"history_board_tool_stats")||await columnExists(adapter,"history_board_tool_stats","fresh_input_tokens")),queueJobsActiveIndexSkip=migration.id==="0027_spur_cli_history_refresh_active_unique"&&!await tableExists2(adapter,"queue_jobs"),schedulerCustomActiveIndexSkip=migration.id==="0047_spur_cli_scheduler_custom_active_unique"&&!await tableExists2(adapter,"queue_jobs"),queueJobsDeadlineLeaseSkip=migration.id==="0041_spur_cli_queue_jobs_deadline_lease_columns"&&!await tableExists2(adapter,"queue_jobs"),runsTerminalReasonSkip=migration.id==="0049_spur_cli_runs_terminal_reason"&&!await tableExists2(adapter,"runs"),skillCapabilityGrainSkip=migration.id==="0050_spur_cli_history_board_skill_5m_capability_grain"&&!await tableExists2(adapter,"history_board_skill_5m"),inboxColumnSkip=(migration.id==="0043_spur_cli_inbox_messages_request_key"||migration.id==="0053_spur_cli_inbox_messages_read_at")&&!await tableExists2(adapter,"inbox_messages"),coordinationReceiptColumnsSkip=migration.id==="0044_spur_cli_coordination_runs_receipt_columns"&&!await tableExists2(adapter,"coordination_runs"),historyToolIdentitySkip=migration.id==="0034_spur_cli_history_tool_identity"&&!await tableExists2(adapter,"history_tool_call"),historyMeasureVectorSkip=migration.id==="0035_spur_cli_history_measure_vector"&&(!await tableExists2(adapter,"history_board_message_5m")||await columnExists(adapter,"history_board_message_5m","cache_write_tokens")),historyRollupWatermarkSkip=migration.id==="0036_spur_cli_history_rollup_watermark"&&(await tableExists2(adapter,"history_board_rollup_watermark")||!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","imported_at")),boundedRollupDerivationsSkip=migration.id==="0039_spur_cli_bounded_rollup_derivations"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","source_file")||!await tableExists2(adapter,"history_board_source_daily")),historyModelFallbackIndexSkip=migration.id==="0042_spur_cli_history_model_fallback_index"&&(!await tableExists2(adapter,"history_message")||!await columnExists(adapter,"history_message","model"));if(shouldApplySql&&!sequenceIndexSkip&&!argsRawSkip&&!runsStatusDoneSkip&&!nameOccurredIndexSkip&&!historyBoardQueryIndexesSkip&&!historyPerformanceIndexesSkip&&!historyToolCallIndexesSkip&&!historyBoardCoveringIndexesSkip&&!historyBoardToolStatsColumnsSkip&&!callIdSkip&&!tsNullableSkip&&!queueJobsActiveIndexSkip&&!schedulerCustomActiveIndexSkip&&!queueJobsDeadlineLeaseSkip&&!runsTerminalReasonSkip&&!skillCapabilityGrainSkip&&!inboxColumnSkip&&!coordinationReceiptColumnsSkip&&!historyToolIdentitySkip&&!historyMeasureVectorSkip&&!historyRollupWatermarkSkip&&!boundedRollupDerivationsSkip&&!historyModelFallbackIndexSkip)for(let statement of splitSqlStatements(migration.sql))await adapter.exec(statement);if(historyToolIdentitySkip&&!await tableExists2(adapter,"history_tool_alias_map"))await adapter.exec("CREATE TABLE IF NOT EXISTS history_tool_alias_map (source TEXT NOT NULL, effective_tool_name TEXT NOT NULL, alias TEXT NOT NULL, PRIMARY KEY (source, effective_tool_name));");await adapter.run('INSERT INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',migration.id,Date.now()),applied+=1}if(migrations.some((m)=>m.id==="0033_spur_cli_importer_schema_version")){let currentVersionLedgerId=IMPORTER_SCHEMA_LEDGER_PREFIX+HISTORY_IMPORT_SCHEMA_VERSION;if(!await adapter.queryFirst('SELECT id FROM "__spur_cli_migrations" WHERE id = ?',currentVersionLedgerId)){for(let statement of splitSqlStatements(HISTORY_IMPORT_SCHEMA_SQL))if(statement.startsWith("CREATE TABLE"))await adapter.exec(statement);await adapter.run('INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES (?, ?)',[currentVersionLedgerId,Date.now()]),applied+=1}}return applied}async function columnExists(adapter,table3,column2){return(await adapter.queryAll(`PRAGMA table_info("${table3}")`)).some((row)=>row.name===column2)}async function columnNotNull(adapter,table3,column2){return(await adapter.queryAll(`PRAGMA table_info("${table3}")`)).some((row)=>row.name===column2&&row.notnull===1)}async function tableExists2(adapter,table3){return await adapter.queryFirst("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?",table3)!=null}function splitSqlStatements(sql4){return sql4.split(";").map((statement)=>statement.trim()).filter(Boolean)}var SQLITE_BUSY_TIMEOUT_MS=30000;async function createMigratedDb(options){let{createDbAdapter:createDbAdapter3}=await Promise.resolve().then(() => (init_dist4(),exports_dist)),adapter=await createDbAdapter3({driver:"bun-sqlite",url:options.url});return await adapter.exec(`PRAGMA busy_timeout = ${SQLITE_BUSY_TIMEOUT_MS}`),await applyCliMigrations(adapter),adapter}init_zod();init_zod();var STAGE_REGISTRY_SCHEMA_VERSION={major:1,minor:3},stageSchemaVersionSchema=exports_external.object({major:exports_external.number().int().nonnegative(),minor:exports_external.number().int().nonnegative()}).strict();var MUTATION_CLASSES=["none","corpus","code","tests","verdict","learnings","driver","irreversible"];var inlineExecutionSchema=exports_external.object({kind:exports_external.literal("inline"),current_agent_allowed:exports_external.literal(!0),may_reuse_captured_layers:exports_external.boolean().optional()}).strict(),subprocessExecutionSchema=exports_external.object({kind:exports_external.literal("subprocess"),current_agent_allowed:exports_external.literal(!1),via:exports_external.literal("spur-agent-run")}).strict(),deterministicExecutionSchema=exports_external.object({kind:exports_external.literal("deterministic"),current_agent_allowed:exports_external.literal(!1),executor:exports_external.enum(["cli","script"])}).strict(),hitlExecutionSchema=exports_external.object({kind:exports_external.literal("hitl"),current_agent_allowed:exports_external.literal(!0),gate_timing:exports_external.enum(["pre","post","both"])}).strict(),irreversibleExecutionSchema=exports_external.object({kind:exports_external.literal("irreversible"),requires_operator_intent:exports_external.literal(!0),current_agent_allowed:exports_external.boolean(),rollback_disclaimer:exports_external.string().min(1)}).strict(),executionKindSchema=exports_external.discriminatedUnion("kind",[inlineExecutionSchema,subprocessExecutionSchema,deterministicExecutionSchema,hitlExecutionSchema,irreversibleExecutionSchema]),ARTIFACT_DIRECTIONS=["input","output"],stageArtifactSchema=exports_external.object({kind:exports_external.string().min(1),direction:exports_external.enum(ARTIFACT_DIRECTIONS),identity:exports_external.string().optional(),description:exports_external.string().optional(),required:exports_external.boolean().optional().default(!0)}).strict(),stageGateSchema=exports_external.object({name:exports_external.string().min(1),timing:exports_external.enum(["pre","post","transition"]),min_verdict:exports_external.enum(["pass","partial","fail"]).optional(),description:exports_external.string().optional()}).strict(),stageRetryPolicySchema=exports_external.object({max_attempts:exports_external.number().int().min(1),terminal_stop:exports_external.enum(["block","escalate","fail"]),timeout_seconds:exports_external.number().int().positive().optional()}).strict(),CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"],LEGACY_CAPABLE_ALIAS="capable";function normalizeCapabilityTier(value){return value===LEGACY_CAPABLE_ALIAS?"capable-1":value}var capabilityTierSchema=exports_external.preprocess(normalizeCapabilityTier,exports_external.enum(CAPABILITY_TIERS)),objectiveEscalationTriggerSchema=exports_external.enum(["gate-fail","timeout","insufficient-evidence","retry-exhausted","resource-exhaustion","auth"]),stageModelPolicySchema=exports_external.object({min_tier:capabilityTierSchema,fallback:exports_external.array(exports_external.object({tier:capabilityTierSchema,trigger:objectiveEscalationTriggerSchema}).strict()),override_key:exports_external.string().optional()}).strict();var CONTEXT_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence","run-state","tool-observations"],stageContextLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),required:exports_external.literal(!0)}).strict(),stageEventSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().optional()}).strict(),STAGE_ID_PATTERN=/^[a-z][a-z0-9-]*$/,stageRecordSchema=exports_external.object({schema_version:stageSchemaVersionSchema,id:exports_external.string().regex(STAGE_ID_PATTERN,{message:"stage id must be lowercase kebab-case"}),aliases:exports_external.array(exports_external.string().min(1)).optional().default([]),description:exports_external.string().min(1),artifacts:exports_external.array(stageArtifactSchema).min(1),reasoning_skill:exports_external.string().min(1),required_references:exports_external.array(exports_external.string().min(1)).optional().default([]),gates:exports_external.array(stageGateSchema).optional().default([]),mutation_class:exports_external.enum(MUTATION_CLASSES),retry:stageRetryPolicySchema,model_policy:stageModelPolicySchema,context_layers:exports_external.array(stageContextLayerSchema).optional().default([]),observability:exports_external.array(stageEventSchema).optional().default([]),execution:executionKindSchema}).strict();var REGISTERED_CANONICAL_STAGES=[{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"refine",aliases:["dev-refine"],description:"dev-refine: Q&A refinement, section filling, AC tightening",artifacts:[{kind:"task-section",direction:"input",required:!0,description:"Background/Requirements sections"},{kind:"task-section",direction:"output",required:!0,description:"Q&A/Design/Plan/AC sections"}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-2",trigger:"gate-fail"},{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"plan",aliases:["dev-plan"],description:"dev-plan: feature intake -> AC generation -> decomposition",artifacts:[{kind:"feature-frontmatter",direction:"input",required:!0},{kind:"task-batch",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"feature-check",timing:"post",min_verdict:"pass"},{name:"batch-create",timing:"post",min_verdict:"pass"}],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-2",fallback:[{tier:"capable-3",trigger:"gate-fail"},{tier:"capable-3",trigger:"auth"},{tier:"capable-3",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"implement",aliases:["dev-run"],description:"dev-run --mode implement: code edits in worktree",artifacts:[{kind:"worktree-diff",direction:"output",required:!0},{kind:"task-section",direction:"output",required:!0,identity:"Solution"}],reasoning_skill:"sp:code-implementation",required_references:[],gates:[],mutation_class:"code",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"timeout"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"test",aliases:["dev-unit","dev-fixall"],description:"dev-unit: generate/extend tests to coverage target",artifacts:[{kind:"test-file",direction:"output",required:!0},{kind:"coverage-report",direction:"output",required:!1}],reasoning_skill:"sp:code-testing",required_references:[],gates:[],mutation_class:"tests",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}],min_tier:"standard"},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"verify",aliases:["dev-verify"],description:"dev-verify: SECUA review + requirements traceability",artifacts:[{kind:"worktree-diff",direction:"input",required:!0},{kind:"verdict-artifact",direction:"output",required:!0,identity:"<wbs>-verdict.json"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[{name:"verdict-artifact",timing:"post",min_verdict:"pass"},{name:"strict-core",timing:"post",min_verdict:"pass"}],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"escalate"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"wrap",aliases:["dev-wrap"],description:"dev-wrap: learnings/doc-sync/feature transition",artifacts:[{kind:"learning-entry",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"task-check",timing:"pre",min_verdict:"pass"}],mutation_class:"learnings",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"hitl",current_agent_allowed:!0,gate_timing:"both"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"review",aliases:["dev-review"],description:"dev-review: multi-dimensional code review (coordinator writes the combined Review)",artifacts:[{kind:"review-findings",direction:"output",required:!0,identity:"Review"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"record",aliases:["dev-record"],description:"record: deterministic Testing write-back from the verdict artifact; bare-Review fallback only",artifacts:[{kind:"verdict-artifact",direction:"input",required:!0,identity:"<wbs>-verdict.json"},{kind:"task-section",direction:"output",required:!0,identity:"Testing"},{kind:"task-section",direction:"output",required:!1,identity:"Review",description:"fallback-only: backfills Review only when the section is bare; never overwrites authored Review"}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"dogfood",aliases:["dev-dogfood"],description:"dev-dogfood: end-to-end driver test",artifacts:[{kind:"dogfood-report",direction:"output",required:!0},{kind:"monitor-ledger",direction:"output",required:!1}],reasoning_skill:"sp:dogfood-testing",required_references:[],gates:[],mutation_class:"driver",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"brainstorm",aliases:["dev-brainstorm"],description:"dev-brainstorm: structured ideation",artifacts:[{kind:"brainstorm-outline",direction:"output",required:!0}],reasoning_skill:"sp:brainstorm",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"changelog",aliases:["dev-changelog"],description:"dev-changelog: generate changelog from git commits",artifacts:[{kind:"changelog-entry",direction:"output",required:!0}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"none",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}}],CANONICAL_STAGE_BY_KEY=new Map;for(let s2 of REGISTERED_CANONICAL_STAGES){CANONICAL_STAGE_BY_KEY.set(s2.id,s2);for(let a2 of s2.aliases??[])CANONICAL_STAGE_BY_KEY.set(a2,s2)}var CACHEABILITY_CLASSES=["stable-prefix-eligible","volatile"],SENSITIVITY_CLASSES=["public","internal","confidential"],envelopeProvenanceSchema=exports_external.object({owner:exports_external.string().min(1),schema_version:exports_external.string().min(1),source_revision:exports_external.string().nullable().optional(),generated_at:exports_external.string().datetime()}).strict(),envelopeSizeBudgetSchema=exports_external.object({max_bytes:exports_external.number().int().positive()}).strict(),envelopeLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),content:exports_external.string(),size_bytes:exports_external.number().int().nonnegative(),content_hash:exports_external.string().length(64),provenance:envelopeProvenanceSchema,cacheability:exports_external.enum(CACHEABILITY_CLASSES),sensitivity:exports_external.enum(SENSITIVITY_CLASSES).default("internal"),size_budget:envelopeSizeBudgetSchema.optional(),disclosure_handle:exports_external.string().optional()}).strict(),STABLE_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence"],VOLATILE_LAYER_NAMES=["run-state","tool-observations"];var envelopeSchema=exports_external.object({schema_version:exports_external.string().default("1.0"),layers:exports_external.array(envelopeLayerSchema).min(1),stage_id:exports_external.string().optional(),run_id:exports_external.string().optional(),assembled_at:exports_external.string().datetime(),total_size_bytes:exports_external.number().int().nonnegative()}).strict(),projectSnapshotSchema=exports_external.object({name:exports_external.string(),version:exports_external.string(),task_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),todo:exports_external.number().int().nonnegative(),wip:exports_external.number().int().nonnegative(),testing:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),feature_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),active:exports_external.number().int().nonnegative(),verifying:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),active_features:exports_external.array(exports_external.string()),content_hash:exports_external.string().length(64).optional()}).strict(),taskSnapshotSchema=exports_external.object({wbs:exports_external.string().regex(/^\d{4}$/),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),feature_id:exports_external.string().optional(),acceptance_criteria:exports_external.string().optional(),locked_qa:exports_external.array(exports_external.string()).optional(),solution:exports_external.string().optional(),content_hash:exports_external.string().length(64).optional()}).strict(),featureSnapshotSchema=exports_external.object({id:exports_external.string(),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),scenarios:exports_external.array(exports_external.string()).optional(),content_hash:exports_external.string().length(64).optional()}).strict();var ALL_LAYER_NAMES=[...STABLE_LAYER_NAMES,...VOLATILE_LAYER_NAMES],LAYER_ORDER={};ALL_LAYER_NAMES.forEach((name,idx)=>{LAYER_ORDER[name]=idx});init_dist2();var TASK_CANONICAL_SECTIONS=["Background","Requirements","Acceptance Criteria","Q&A","Design","Plan","Root Cause","Solution","Testing","Review","References","History"],FEATURE_CANONICAL_SECTIONS=["Goal","Scope","Acceptance Criteria","Tasks","Notes","History"],UNIVERSAL_SECTIONS=["History","References","Notes"],HEADING_LEVELS={task:3,feature:2},START_MARKER="<!-- AUTO-GENERATED by spur feature refresh -->",END_MARKER="<!-- END AUTO-GENERATED -->",MARKER_START_RE=/<!--[ \t]*AUTO-GENERATED.*?-->/,MARKER_END_RE=/<!--[ \t]*END[ \t]*AUTO-GENERATED.*?-->/;function findHeadings(body,hashes){let hits=[],prefix=`${hashes} `,inCodeBlock=!1,lineStart=0;for(let i2=0;i2<=body.length;i2++){if(i2!==body.length&&body[i2]!==`
1784
1801
  `)continue;let line=body.slice(lineStart,i2);if(line.startsWith("```"))inCodeBlock=!inCodeBlock;else if(!inCodeBlock&&line.startsWith(prefix)){let name=line.slice(prefix.length).trim();hits.push({index:lineStart,headingLine:line,name})}lineStart=i2+1}return hits}function findUnclosedFenceLine(text3){let inCodeBlock=!1,openLine=0,lineNo=0,lineStart=0;for(let i2=0;i2<=text3.length;i2++){if(i2!==text3.length&&text3[i2]!==`
1785
1802
  `)continue;let line=text3.slice(lineStart,i2);if(lineNo++,line.startsWith("```"))if(inCodeBlock)inCodeBlock=!1;else inCodeBlock=!0,openLine=lineNo;lineStart=i2+1}return inCodeBlock?openLine:null}function normalizeYamlScalars(data){let out={};for(let[key,value]of Object.entries(data))if(value instanceof Date)out[key]=value.toISOString();else if(value!==null&&typeof value==="object"&&!Array.isArray(value))out[key]=normalizeYamlScalars(value);else out[key]=value;return out}class MarkdownDocument{_domain;_frontmatterBlock;_frontmatter;_preamble;_sections;_demotedHeadings=[];_duplicateSectionNames=[];_unclosedFenceLine;constructor(domain2,frontmatterBlock,frontmatter,preamble,sections,unclosedFenceLine){this._domain=domain2,this._frontmatterBlock=frontmatterBlock,this._frontmatter=frontmatter,this._preamble=preamble,this._sections=sections,this._unclosedFenceLine=unclosedFenceLine}static parse(content,domain2){let level=HEADING_LEVELS[domain2],hashes="#".repeat(level),frontmatterBlock="",frontmatter=null,body=content,fmMatch=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(content);if(fmMatch&&fmMatch.index===0){let raw=fmMatch[1]??"",data={};try{let parsed=$parse(raw);if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))data=normalizeYamlScalars(parsed)}catch{}frontmatter={raw,data},frontmatterBlock=fmMatch[0],body=content.slice(fmMatch[0].length)}let bodyUnclosedFenceLine=findUnclosedFenceLine(body),unclosedFenceLine=bodyUnclosedFenceLine===null?null:bodyUnclosedFenceLine+(frontmatterBlock.match(/\n/g)??[]).length,hits=findHeadings(body,hashes),first=hits[0],preamble=first!==void 0?body.slice(0,first.index):body,allSections=hits.map((hit,idx)=>{let next=hits[idx+1],end=next!==void 0?next.index:body.length;return{name:hit.name,headingLine:hit.headingLine,originalText:body.slice(hit.index,end),modifiedText:null}}),seen=new Set,sections=[],duplicateNames=[];for(let s2 of allSections)if(seen.has(s2.name))duplicateNames.push(s2.name);else seen.add(s2.name),sections.push(s2);let doc2=new MarkdownDocument(domain2,frontmatterBlock,frontmatter,preamble,sections,unclosedFenceLine);return doc2._duplicateSectionNames.push(...duplicateNames),doc2}get domain(){return this._domain}replacePreamble(newBody){this._preamble=newBody}get frontmatter(){return this._frontmatter}get frontmatterRaw(){return this._frontmatter?.raw??null}get frontmatterData(){return this._frontmatter?.data??null}get bodyWithoutFrontmatter(){let result=this._preamble;for(let section of this._sections)result+=section.modifiedText??section.originalText;return result}get sectionNames(){return this._sections.map((s2)=>s2.name)}get demotedHeadings(){return this._demotedHeadings}get duplicateSectionNames(){return this._duplicateSectionNames}unclosedFenceLine(){return this._unclosedFenceLine}assertFenceBalance(name,body){let docFenceLine=this._unclosedFenceLine;if(docFenceLine!==null)throw Error(`Cannot write section "${name}": the document has an unclosed code fence at line ${docFenceLine}; later sections are hidden and would be dropped by this write. Close the fence and re-parse.`);if(this._duplicateSectionNames.length>0){let names=this._duplicateSectionNames.map((n2)=>`"${n2}"`).join(", ");throw Error(`Cannot write section "${name}": the document has duplicate top-level sections (${names}); the serialized result would have fewer sections than the input and the duplicates would be dropped. Merge or remove the duplicates and re-parse.`)}let bodyFenceLine=findUnclosedFenceLine(body);if(bodyFenceLine!==null)throw Error(`Cannot write section "${name}": the new body has an unclosed code fence (opening at body line ${bodyFenceLine}); writing it would leave the document inside an open fence and hide later sections.`)}get canonicalSections(){let base2=this._domain==="task"?TASK_CANONICAL_SECTIONS:FEATURE_CANONICAL_SECTIONS,extra=UNIVERSAL_SECTIONS.filter((s2)=>!base2.includes(s2));return[...base2,...extra]}validateSectionName(name){if(!this.canonicalSections.includes(name))throw Error(`Unknown section "${name}" for domain "${this._domain}". Canonical sections: ${this.canonicalSections.join(", ")}.`)}findSection(name){return this._sections.find((s2)=>s2.name===name)}hasSection(name){return this.findSection(name)!==void 0}getSection(name){this.validateSectionName(name);let section=this.findSection(name);if(section===void 0)return null;let text3=section.modifiedText??section.originalText,newlineIdx=text3.indexOf(`
1786
1803
  `);return newlineIdx===-1?"":text3.slice(newlineIdx+1)}replaceSection(name,body){this.validateSectionName(name),this.assertFenceBalance(name,body);let cleaned=this.stripSameLevelHeadings(body),section=this.findSection(name);if(section!==void 0){let trimmed=cleaned.trim();section.modifiedText=trimmed.length>0?`${section.headingLine}
@@ -1815,47 +1832,47 @@ ${fieldLine}
1815
1832
  `);this._frontmatter={raw,data:{...this._frontmatter.data,[key]:values}};let rawStart=this._frontmatterBlock.indexOf(oldRaw);this._frontmatterBlock=rawStart===-1?`---
1816
1833
  ${raw}
1817
1834
  ---
1818
- `:this._frontmatterBlock.slice(0,rawStart)+raw+this._frontmatterBlock.slice(rawStart+oldRaw.length)}serialize(){let result=this._frontmatterBlock;result+=this._preamble;for(let section of this._sections)result+=section.modifiedText??section.originalText;return result}}function replaceFieldLines(lines,idx,fieldLine){let end=idx+1;while(end<lines.length&&/^(\s|-(\s|$))/.test(lines[end]??""))end++;lines.splice(idx,end-idx,fieldLine)}function escapeYamlArrayElement(value){return`"${value.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`}function escapeYamlValue(value){if(value.startsWith('"')&&value.endsWith('"'))return value;if(/[:{}[\],&*?|>!%@`#"'\\\n\r]/.test(value))return`"${value.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`;if(/^(null|true|false|yes|no|on|off)$/i.test(value))return`"${value}"`;if(/^\d/.test(value)&&!/^\d{4}-\d{2}-\d{2}/.test(value))return`"${value}"`;return value}init_zod();var TASK_STATUSES=["backlog","todo","wip","testing","blocked","done","cancelled"],FEATURE_STATUSES=["backlog","active","verifying","blocked","done","cancelled"];var PRIORITIES=["P0","P1","P2","P3"],PROFILES=["simple","standard","complex","research","refine","plan","unit","review","docs"],TASK_TYPES=["task","issue","review","meta","brainstorm"],TASK_VARIANTS=["standard","feature-impl","issue","review","meta","brainstorm"];var FEATURE_ID_PATTERN=/^[A-Z][1-9]*$/;var TASK_STATUS_ALIASES={completed:"done",complete:"done","in-progress":"wip","in progress":"wip",in_progress:"wip",dropped:"cancelled",cancel:"cancelled",canceled:"cancelled",new:"backlog",pending:"backlog",blocked:"blocked",wip:"wip",testing:"testing",done:"done",cancelled:"cancelled",backlog:"backlog",todo:"todo"};function normalizeTaskStatus(raw){let key=raw.trim().toLowerCase(),resolved=TASK_STATUS_ALIASES[key];if(resolved===void 0)throw Error(`Unknown task status: ${JSON.stringify(raw)} (allowed: ${TASK_STATUSES.join(", ")})`);return resolved}var isoDateString=exports_external.string().min(1).refine((value)=>!Number.isNaN(Date.parse(value)),{message:"must be an ISO 8601 timestamp"}),featureId=exports_external.string().regex(FEATURE_ID_PATTERN,{message:"feature id must match ^[A-Z][1-9]*$ (DD-14)"}).nullable().optional(),wbsString=exports_external.string().regex(/^\d{4}$/,{message:"parent_wbs must be a 4-digit WBS string"}).nullable().optional(),taskFrontmatterSchema=exports_external.object({schema_version:exports_external.literal(1),name:exports_external.string().min(1),description:exports_external.string().optional(),status:exports_external.preprocess((val)=>{if(typeof val==="string")try{return normalizeTaskStatus(val)}catch{}return val},exports_external.enum(TASK_STATUSES)),type:exports_external.enum(TASK_TYPES).optional().default("task"),template:exports_external.enum(TASK_VARIANTS).optional(),profile:exports_external.enum(PROFILES).optional(),feature_id:featureId,parent_wbs:wbsString,priority:exports_external.enum(PRIORITIES).optional(),tags:exports_external.array(exports_external.string()).optional(),dependencies:exports_external.array(exports_external.string()).optional(),ac_numbering:exports_external.literal("task-local").optional(),ac_altitude:exports_external.enum(["graduating","task-local"]).optional(),done_forced:exports_external.preprocess((v)=>typeof v==="string"?v==="true":v,exports_external.boolean().optional()),done_reason:exports_external.string().optional(),feature_link_declined:exports_external.preprocess((v)=>typeof v==="string"?v==="true":v,exports_external.boolean().optional()),estimate_hours:exports_external.preprocess((v)=>typeof v==="string"&&v.trim()!==""?Number(v):v,exports_external.number().positive().optional()),created_at:isoDateString,updated_at:isoDateString}),featureFrontmatterSchema=exports_external.object({schema_version:exports_external.literal(1),id:exports_external.string().regex(FEATURE_ID_PATTERN,{message:"feature id must match ^[A-Z][1-9]*$ (DD-14)"}),name:exports_external.string().min(1),status:exports_external.enum(FEATURE_STATUSES),priority:exports_external.enum(PRIORITIES).optional(),tags:exports_external.array(exports_external.string()).optional(),created_at:isoDateString,updated_at:isoDateString});var taskBatchItemSchema=exports_external.object({name:exports_external.string().min(1,"name is required"),background:exports_external.string().optional(),requirements:exports_external.string().optional(),design:exports_external.string().optional(),plan:exports_external.string().optional(),acceptance_criteria:exports_external.string().optional(),feature_id:featureId,parent_wbs:wbsString,priority:exports_external.enum(PRIORITIES).optional(),tags:exports_external.array(exports_external.string()).optional(),template:exports_external.enum(TASK_VARIANTS).optional(),estimate_hours:exports_external.number().positive().optional()}).strict(),taskBatchSchema=exports_external.array(taskBatchItemSchema).min(1,"batch must contain at least one task");init_dist2();init_zod();var sectionNameSchema=exports_external.enum(TASK_CANONICAL_SECTIONS),matrixEntrySchema=exports_external.object({required:exports_external.array(sectionNameSchema).optional(),optional:exports_external.array(sectionNameSchema).optional(),forbidden:exports_external.array(sectionNameSchema).optional(),gate:exports_external.boolean().optional()}).strict(),matrixStatusSchema=exports_external.enum(["backlog","todo","wip","testing","blocked","done","cancelled"]),sectionMatrixSchema=exports_external.object({variants:exports_external.record(exports_external.string(),exports_external.partialRecord(matrixStatusSchema,matrixEntrySchema))}).strict();var CANONICAL_INDEX=new Map(TASK_CANONICAL_SECTIONS.map((s2,i2)=>[s2,i2]));init_dist9();init_dist7();init_dist6();var SECRET_PATTERN=/(?:sk-[a-z0-9_-]{8,}|(?:api[_-]?key|token|secret|password)\s*[:=]\s*\S+|bearer\s+\S+)/gi;function configuredSecretValues(env2){return Object.entries(env2).filter(([key,value])=>/(?:secret|token|password|api[_-]?key|credential)/i.test(key)&&(value?.length??0)>=4).map(([,value])=>value)}function redactAndBound(value,secrets,maxChars){let redacted=value.replace(SECRET_PATTERN,"[REDACTED]");for(let secret of secrets)if(secret!=="")redacted=redacted.split(secret).join("[REDACTED]");return redacted.length<=maxChars?redacted:`${redacted.slice(0,maxChars)}…`}function decisionLogSink(adapter,config4,env2){let mode=config4?.decisions?.log??"full";if(mode==="off")return;return{dao:new DecisionLogDao(adapter),secrets:configuredSecretValues(env2),mode}}var DECISION_LOG_INPUT_MAX_CHARS=16384,DECISION_LOG_TEXT_MAX_CHARS=2048,DECISION_LOG_SCHEMA_VERSION=1;function boundedQuestion(sink,question){if(sink.mode==="metadata"||question===void 0)return null;return redactAndBound(question,sink.secrets,DECISION_LOG_TEXT_MAX_CHARS)}function boundedInputJson(sink,input){if(sink.mode==="metadata"||input===void 0)return null;let raw=redactAndBound(JSON.stringify(input),sink.secrets,DECISION_LOG_INPUT_MAX_CHARS);if(raw.length<=DECISION_LOG_INPUT_MAX_CHARS)return raw;let truncated=JSON.stringify({truncated:!0,input:raw.slice(0,DECISION_LOG_INPUT_MAX_CHARS-64)});return truncated.length<=DECISION_LOG_INPUT_MAX_CHARS?truncated:truncated.slice(0,DECISION_LOG_INPUT_MAX_CHARS)}function boundedValue(value){return value===void 0?null:String(value)}function buildDecisionLogRow(sink,record3){let value=record3.outcome==="rejected"?null:boundedValue(record3.value),fallbackValue=record3.outcome==="fallback"?boundedValue(record3.fallbackValue??record3.value):record3.outcome==="rejected"?boundedValue(record3.fallbackValue):null;return{id:record3.id,decision_id:record3.decisionId,decision_type:record3.decisionType??null,caller:record3.caller,run_id:record3.correlation?.runId??null,workflow_name:record3.correlation?.workflowName??null,node_id:record3.correlation?.nodeId??null,wbs:record3.correlation?.wbs??null,maker_name:record3.maker??null,maker_source:record3.makerSource??null,catalog_layer:record3.catalogLayer!==void 0&&record3.catalogLayer!==""?record3.catalogLayer:null,catalog_source:record3.catalogSource??null,min_confidence:record3.minConfidence??null,question:boundedQuestion(sink,record3.question),input_json:boundedInputJson(sink,record3.input),input_keys_json:JSON.stringify([...record3.inputKeys??Object.keys(record3.input??{})]),evidence_digest:record3.evidenceDigest??null,outcome:record3.outcome,value,fallback_value:fallbackValue,source:record3.outcome==="rejected"?null:record3.source??null,reason:record3.reason??null,confidence:record3.confidence??null,error:record3.error===void 0?null:redactAndBound(record3.error,sink.secrets,DECISION_LOG_TEXT_MAX_CHARS),started_at:new Date(record3.startedAtMs).toISOString(),ended_at:new Date(record3.endedAtMs).toISOString(),duration_ms:Math.max(0,record3.endedAtMs-record3.startedAtMs),phases_json:JSON.stringify(record3.phases),schema_version:DECISION_LOG_SCHEMA_VERSION}}function writeDecisionLog(sink,row){sink.dao.insert(row).catch((error51)=>{let message=error51 instanceof Error?error51.message:String(error51);try{sink.warn?.(`decision log write failed: ${message}`)}catch{}})}import{createHash as createHash3}from"node:crypto";init_dist6();class DecisionCatalogError extends Error{source;decisionId;field;constructor(message,source,decisionId,field){super(message);this.source=source,this.decisionId=decisionId,this.field=field,this.name="DecisionCatalogError"}}class DecisionRegistryError extends Error{constructor(message){super(message);this.name="DecisionRegistryError"}}class UnknownDecisionMakerError extends Error{name;constructor(message,name){super(message);this.name=name}}class UnknownDecisionError extends Error{decisionId;constructor(message,decisionId){super(message);this.decisionId=decisionId,this.name="UnknownDecisionError"}}class DecisionInputError extends Error{decisionId;param;constructor(message,decisionId,param){super(message);this.decisionId=decisionId,this.param=param,this.name="DecisionInputError"}}var INSTRUCTIONS_PARAM="instructions",DEFAULT_INSTRUCTIONS_TEMPLATE="${params.instructions}",TEMPLATE_REF2=/\$\{([^}]+)\}/g;function implicitInstructionsParam(){return{name:INSTRUCTIONS_PARAM,type:"string",required:!1,default:""}}function expectTypeMatch(decision,param,value){let expects=param.values!==void 0?`one of [${param.values.join(", ")}]`:param.type,ok;switch(param.type){case"string":ok=typeof value==="string";break;case"number":ok=typeof value==="number"&&Number.isFinite(value);break;case"boolean":ok=typeof value==="boolean";break;case"enum":ok=typeof value==="string"&&param.values?.includes(value)===!0;break;case"json":return}if(!ok)throw new DecisionInputError(`Parameter "${param.name}" of decision "${decision.id}" expects ${expects}, got ${JSON.stringify(value)}`,decision.id,param.name)}function resolveDecisionInput(decision,input={}){let params={};for(let key of Object.keys(input))if(!Object.hasOwn(decision.parameters,key))throw new DecisionInputError(`Unknown parameter "${key}" for decision "${decision.id}"; declared parameters: ${Object.keys(decision.parameters).join(", ")}`,decision.id,key);for(let param of Object.values(decision.parameters)){let supplied=param.name in input?input[param.name]:void 0;if(supplied===void 0&&param.required)throw new DecisionInputError(`Missing required parameter "${param.name}" for decision "${decision.id}"`,decision.id,param.name);let value=supplied!==void 0?supplied:param.default??null;expectTypeMatch(decision,param,value),params[param.name]=value}return params}function substitute(decisionId,ref,params){if(!ref.startsWith("params."))throw new DecisionInputError(`Template ref "\${${ref}}" must use the "params" namespace`,decisionId,ref);let name=ref.slice(7),value=params[name];if(value===void 0||value===null)return"";if(typeof value==="string")return value;if(typeof value==="number"||typeof value==="boolean")return String(value);return JSON.stringify(value)}function renderEntryValue(decisionId,value,params){if(typeof value==="string")return value.replace(TEMPLATE_REF2,(_match,ref)=>substitute(decisionId,ref,params));if(Array.isArray(value))return value.map((item)=>renderEntryValue(decisionId,item,params));if(value!==null&&typeof value==="object")return Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,renderEntryValue(decisionId,entry,params)]));return value}function renderEntry(decisionId,entry,params){return renderEntryValue(decisionId,entry,params)}function renderQuestion(decision,params){let instructions=renderEntry(decision.id,decision.instructions,params),criteria=decision.criteria;switch(criteria.kind){case"choice":{let rendered={};for(let[label,entry]of Object.entries(criteria.labels))rendered[label]=renderEntry(decision.id,entry,params);return{type:"choice",instructions,criteria:rendered}}case"score":return{type:"score",instructions,criteria:criteria.levels.map((entry)=>renderEntry(decision.id,entry,params))};case"noul":{let outcomes=criteria.outcomes;if(outcomes===void 0)return{type:"noul",instructions};return{type:"noul",instructions,criteria:{...outcomes.true!==void 0?{true:renderEntry(decision.id,outcomes.true,params)}:{},...outcomes.false!==void 0?{false:renderEntry(decision.id,outcomes.false,params)}:{}}}}}}function buildState(decision,params){let state={};for(let param of Object.values(decision.parameters)){if(param.name===INSTRUCTIONS_PARAM)continue;let value=params[param.name];if(value===null||value===void 0)continue;state[param.name]=value}return Object.keys(state).length===0?null:state}init_zod();var DECISION_ID_PATTERN=/^[a-z][a-z0-9_-]*$/,PARAM_NAME_PATTERN=/^[a-z][a-zA-Z0-9_]*$/,MAKER_NAME_PATTERN=/^[a-z][a-z0-9-]*$/,JsonValueSchema=exports_external.lazy(()=>exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null(),exports_external.array(JsonValueSchema),exports_external.record(exports_external.string(),JsonValueSchema)])),JevEntrySchema=exports_external.lazy(()=>exports_external.union([exports_external.string(),exports_external.null(),exports_external.array(JsonValueSchema),exports_external.record(exports_external.string(),JsonValueSchema)])),ParamTypeSchema=exports_external.enum(["string","number","boolean","enum","json"]),FullParamSchema=exports_external.object({type:ParamTypeSchema,default:exports_external.unknown().optional(),values:exports_external.array(exports_external.string()).min(1).optional(),description:exports_external.string().optional()}).strict(),ParamSchema=exports_external.union([ParamTypeSchema,FullParamSchema]),NoulCriteriaSchema=exports_external.object({true:JevEntrySchema.optional(),false:JevEntrySchema.optional()}).strict(),ChoiceCriteriaSchema=exports_external.record(exports_external.string().min(1),JevEntrySchema),ScoreCriteriaSchema=exports_external.array(JevEntrySchema),DecisionSchema=exports_external.object({type:exports_external.enum(["choice","score","noul"]),description:exports_external.string().optional(),instructions:JevEntrySchema.optional(),parameters:exports_external.record(exports_external.string().regex(PARAM_NAME_PATTERN),ParamSchema).optional(),criteria:exports_external.union([NoulCriteriaSchema,ChoiceCriteriaSchema,ScoreCriteriaSchema]).optional(),fallback:exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean()]),minConfidence:exports_external.number().min(0).max(1).optional(),maker:exports_external.string().regex(MAKER_NAME_PATTERN).optional(),model:exports_external.string().optional()}).strict(),DecisionCatalogSchema=exports_external.object({$schema:exports_external.string().optional(),version:exports_external.literal(1),defaults:exports_external.object({maker:exports_external.string().regex(MAKER_NAME_PATTERN).optional(),model:exports_external.string().optional(),minConfidence:exports_external.number().min(0).max(1).optional()}).strict().optional(),decisions:exports_external.record(exports_external.string().regex(DECISION_ID_PATTERN),DecisionSchema)}).strict().refine((catalog)=>Object.keys(catalog.decisions).length>=1,{message:"decisions must declare at least one decision"});var TEMPLATE_REF3=/\$\{([^}]+)\}/g,YAML_SOURCE_PATTERN=/\.(yaml|yml)$/;function assertYamlSource(source){if(!YAML_SOURCE_PATTERN.test(source))throw new DecisionCatalogError(`Decision catalogs are YAML only; source "${source}" does not end in .yaml or .yml`,source)}async function loadDecisionCatalog(path8,options={}){assertYamlSource(path8);let fileSystem=options.fileSystem??createNodeFileSystem2(),content;try{content=await fileSystem.readFile(path8)}catch(error51){throw new DecisionCatalogError(`Cannot read decision catalog "${path8}": ${error51 instanceof Error?error51.message:String(error51)}`,path8)}return parseDecisionCatalog(content,path8,options)}async function parseDecisionCatalog(content,source,options={}){assertYamlSource(source);let raw;try{raw=await parseStructuredConfig(content,source,{validateSchema:options.validateSchema??!0,fileSystem:options.fileSystem})}catch(error51){throw new DecisionCatalogError(`Decision catalog "${source}" failed to parse or validate: ${error51 instanceof Error?error51.message:String(error51)}`,source)}let parsed=DecisionCatalogSchema.safeParse(raw);if(!parsed.success){let issue2=parsed.error.issues[0],fieldPath=issue2?.path.map(String).join(".")??"",decisionId=fieldPath.startsWith("decisions.")?fieldPath.split(".")[1]:void 0;throw new DecisionCatalogError(`Invalid decision catalog "${source}"${fieldPath?` at ${fieldPath}`:""}: ${issue2?.message??"schema mismatch"}`,source,decisionId,fieldPath||void 0)}return buildCatalog(parsed.data,source)}function buildCatalog(parsed,source){let decisions={};for(let[id,raw]of Object.entries(parsed.decisions))decisions[id]=checkDecision(id,raw,source);let defaults=parsed.defaults??{};return{source,defaults,decisions}}function catalogError(source,decisionId,field,message){return new DecisionCatalogError(`Decision "${decisionId}" in "${source}": ${message}`,source,decisionId,field)}function normalizeParam(name,rawParam){if(typeof rawParam==="string")return{name,type:rawParam,required:!0};let hasDefault="default"in rawParam;return{name,type:rawParam.type,required:!hasDefault,...hasDefault?{default:rawParam.default}:{},...rawParam.values!==void 0?{values:rawParam.values}:{},...rawParam.description!==void 0?{description:rawParam.description}:{}}}function checkParam(id,param,source){if(param.type==="enum"){if(param.values===void 0||param.values.length<1)throw catalogError(source,id,`parameters.${param.name}.values`,"enum parameter requires at least one value")}else if(param.values!==void 0)throw catalogError(source,id,`parameters.${param.name}.values`,`only enum parameters may declare values; parameter type is "${param.type}"`);if(!param.required&&!defaultMatches(param))throw catalogError(source,id,`parameters.${param.name}.default`,`default ${JSON.stringify(param.default??null)} does not match declared type "${param.type}"`+(param.values?` with values [${param.values.join(", ")}]`:""))}function defaultMatches(param){let value=param.default;switch(param.type){case"string":return typeof value==="string";case"number":return typeof value==="number"&&Number.isFinite(value);case"boolean":return typeof value==="boolean";case"enum":return typeof value==="string"&&param.values?.includes(value)===!0;case"json":return!0}}function normalizeCriteria(id,raw,source){let criteria=raw.criteria;if(raw.type==="choice"){if(criteria===void 0||Array.isArray(criteria)||typeof criteria!=="object"||criteria===null)throw catalogError(source,id,"criteria","choice decision requires a criteria label map");let labels=criteria;if(Object.keys(labels).length<2)throw catalogError(source,id,"criteria","choice criteria requires at least two labels");return{kind:"choice",labels}}if(raw.type==="score"){if(criteria===void 0)throw catalogError(source,id,"criteria","score decision requires a criteria rubric list");if(!Array.isArray(criteria))throw catalogError(source,id,"criteria","score criteria must be a list of level descriptions");if(criteria.length<2)throw catalogError(source,id,"criteria","score criteria requires at least two levels");return{kind:"score",levels:criteria}}if(criteria===void 0)return{kind:"noul"};if(Array.isArray(criteria)||typeof criteria!=="object"||criteria===null)throw catalogError(source,id,"criteria",'noul criteria must be an object with "true"/"false" keys');for(let key of Object.keys(criteria))if(key!=="true"&&key!=="false")throw catalogError(source,id,"criteria",`noul criteria accepts only the keys "true" and "false"; got "${key}"`);let outcomes=criteria;return{kind:"noul",...outcomes.true!==void 0||outcomes.false!==void 0?{outcomes:{...outcomes.true!==void 0?{true:outcomes.true}:{},...outcomes.false!==void 0?{false:outcomes.false}:{}}}:{}}}function checkFallback(id,type,criteria,fallback,source){if(type==="choice"){if(criteria.kind!=="choice"||typeof fallback!=="string"||!Object.hasOwn(criteria.labels,fallback)){let labels=criteria.kind==="choice"?Object.keys(criteria.labels).join(", "):"";throw catalogError(source,id,"fallback",`fallback ${JSON.stringify(fallback)} is not a declared criteria label (${labels})`)}return}if(type==="score"){let levelCount=criteria.kind==="score"?criteria.levels.length:0;if(criteria.kind!=="score"||typeof fallback!=="number"||!Number.isInteger(fallback)||fallback<0||fallback>=levelCount)throw catalogError(source,id,"fallback",`fallback ${JSON.stringify(fallback)} is not an integer level in [0, ${levelCount-1}]`);return}if(typeof fallback!=="boolean")throw catalogError(source,id,"fallback",`noul fallback must be a boolean; got ${JSON.stringify(fallback)}`)}function collectTemplateRefs(value,into){if(typeof value==="string"){for(let match of value.matchAll(TEMPLATE_REF3))into.add(match[1]??"");return}if(Array.isArray(value)){for(let item of value)collectTemplateRefs(item,into);return}if(value!==null&&typeof value==="object")for(let entry of Object.values(value))collectTemplateRefs(entry,into)}function checkTemplateRefs(id,field,entry,declared,source){let refs=new Set;collectTemplateRefs(entry,refs);for(let ref of refs){if(!ref.startsWith("params."))throw catalogError(source,id,field,`template ref "\${${ref}}" uses namespace "${ref.split(".")[0]??""}"; only "params" is allowed`);let name=ref.slice(7);if(!declared.has(name))throw catalogError(source,id,field,`template ref "\${${ref}}" names an undeclared parameter`)}}function checkDecision(id,raw,source){let parameters={},rawParams=raw.parameters??{};if(INSTRUCTIONS_PARAM in rawParams)throw catalogError(source,id,"parameters.instructions",'the "instructions" parameter is reserved and implicit (string, default ""); it cannot be declared');for(let[name,rawParam]of Object.entries(rawParams)){let param=normalizeParam(name,rawParam);checkParam(id,param,source),parameters[name]=param}parameters[INSTRUCTIONS_PARAM]=implicitInstructionsParam();let criteria=normalizeCriteria(id,raw,source);checkFallback(id,raw.type,criteria,raw.fallback,source);let instructions=raw.instructions??DEFAULT_INSTRUCTIONS_TEMPLATE,declared=new Set(Object.keys(parameters));checkTemplateRefs(id,"instructions",instructions,declared,source);let criteriaEntries=criteria.kind==="choice"?Object.values(criteria.labels):criteria.kind==="score"?[...criteria.levels]:criteria.outcomes?[criteria.outcomes.true,criteria.outcomes.false].filter((e)=>e!==void 0):[];for(let entry of criteriaEntries)checkTemplateRefs(id,"criteria",entry,declared,source);return{id,source,type:raw.type,...raw.description!==void 0?{description:raw.description}:{},instructions,parameters,criteria,fallback:raw.fallback,...raw.minConfidence!==void 0?{minConfidence:raw.minConfidence}:{},...raw.maker!==void 0?{maker:raw.maker}:{},...raw.model!==void 0?{model:raw.model}:{}}}init_dist9();init_dist9();init_dist9();init_dist6();function entropyConfidence(probabilities){let n2=probabilities.length;if(n2<=1)return 1;let entropy=0;for(let p of probabilities)if(p>0)entropy-=p*Math.log(p);return 1-entropy/Math.log(n2)}function estimateChoice(labels,samples){let counts=new Map(labels.map((label)=>[label,0]));for(let sample of samples)counts.set(sample,(counts.get(sample)??0)+1);let k=samples.length,probabilities={},distribution=[],bestLabel=labels[0]??"",bestCount=-1;for(let label of labels){let count3=counts.get(label)??0,probability=count3/k;if(distribution.push(probability),probabilities[label]=probability,count3>bestCount)bestCount=count3,bestLabel=label}return{kind:"choice",label:bestLabel,confidence:entropyConfidence(distribution),probabilities}}function estimateScore(rubric,samples){let k=samples.length,counts=[];for(let sample of samples){let level=Number.parseInt(sample,10);counts[level]=(counts[level]??0)+1}let probabilities={},distribution=[],bestLevel=0,bestCount=-1;for(let level=0;level<rubric.length;level++){let count3=counts[level]??0,probability=count3/k;if(distribution.push(probability),probabilities[level]=probability,count3>bestCount)bestCount=count3,bestLevel=level}let legend={};return rubric.forEach((desc3,level)=>{legend[level]=desc3}),{kind:"score",score:bestLevel,confidence:entropyConfidence(distribution),legend,probabilities}}function estimateNoul(samples){return{kind:"noul",probability:samples.filter((sample)=>sample==="yes").length/samples.length}}init_dist9();function countTokensArgv(instructions,prompt){return["count-tokens","-q",`--instructions=${instructions}`,"--",prompt]}function respondArgv(options){return["respond","--no-stream","--schema",options.schemaPath,`--instructions=${options.instructions}`,...options.guardrails!==void 0?["--guardrails",options.guardrails]:[],...options.greedy?["-g"]:[],"--",options.prompt]}function availableArgv(){return["available","--model","system"]}function isSpawnFailure(result){return result.outcome==="error"&&result.exitCode===null}function fmText(result){let text3=(result.stderr.trim().length>0?result.stderr:result.stdout).trim();return text3.length>0?text3:"(no output)"}async function probeFmAvailability(executor,fmPath,timeoutMs=1e4){let result=await executor.run({command:fmPath,args:availableArgv(),timeout:timeoutMs});if(result.outcome==="timeout")throw new DecisionTimeoutError(`fm available exceeded requestTimeoutMs (${timeoutMs})`,timeoutMs);if(isSpawnFailure(result))throw new DecisionConfigError(`fm not found: '${fmPath}' could not be spawned`,"fmPath");if(result.exitCode!==0)throw new DecisionConfigError(`fm system model unavailable: ${fmText(result)}`,"fm-system-model")}async function countPromptTokens(executor,fmPath,instructions,prompt,timeoutMs=1e4){let result=await executor.run({command:fmPath,args:countTokensArgv(instructions,prompt),timeout:timeoutMs});if(result.outcome==="timeout")throw new DecisionTimeoutError(`fm count-tokens exceeded requestTimeoutMs (${timeoutMs})`,timeoutMs);if(isSpawnFailure(result))throw new DecisionConfigError(`fm not found: '${fmPath}' could not be spawned`,"fmPath");if(result.exitCode!==0)throw new DecisionBackendError(`fm count-tokens failed (exit ${result.exitCode}): ${fmText(result)}`,void 0);let tokens=Number.parseInt(result.stdout.trim(),10);if(!Number.isFinite(tokens))throw new DecisionBackendError(`fm count-tokens did not print a token count: ${result.stdout.trim()||"(empty)"}`,void 0);return tokens}var CONTEXT_SIZE_MARKER="exceeded the model's context size",GUARDRAILS_MARKER="safety guardrails were triggered";async function runFmRespond(executor,fmPath,args,requestTimeoutMs){let result=await executor.run({command:fmPath,args,timeout:requestTimeoutMs});if(result.outcome==="timeout")throw new DecisionTimeoutError(`fm ${args[0]} exceeded requestTimeoutMs (${requestTimeoutMs})`,requestTimeoutMs);if(isSpawnFailure(result))throw new DecisionConfigError(`fm not found: '${fmPath}' could not be spawned`,"fmPath");if(result.exitCode!==0){let text3=fmText(result);if(text3.includes(CONTEXT_SIZE_MARKER))throw new DecisionRequestError(`fm prompt exceeded the model context size: ${text3}`,void 0,void 0);if(text3.includes(GUARDRAILS_MARKER))throw new DecisionBackendError(`fm safety guardrails were triggered: ${text3}`,void 0);throw new DecisionBackendError(`fm respond failed (exit ${result.exitCode}): ${text3}`,void 0)}return result.stdout}function parseFmRespond(stdout){let parsed;try{parsed=JSON.parse(stdout)}catch(cause){throw new DecisionBackendError(`fm respond printed non-JSON output: ${stdout.trim()||"(empty)"}`,void 0,{cause})}if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))throw new DecisionBackendError(`fm respond printed non-object JSON: ${stdout.trim()}`,void 0);let record3={};for(let[key,value]of Object.entries(parsed)){if(typeof value!=="string")throw new DecisionBackendError(`fm respond printed a non-string value for '${key}'`,void 0);record3[key]=value}return record3}function requireEnumValue(parsed,key,allowed){let value=parsed[key];if(value===void 0||!allowed.includes(value))throw new DecisionBackendError(`fm sample for '${key}' violates the schema enum: ${value===void 0?"(missing)":`'${value}'`}`,void 0);return value}var FM_INSTRUCTIONS="You are a decision engine. Answer every question below using only the supplied state. For each question choose exactly one of the listed options. Reply with the JSON object the schema requires.";function buildFmSchema(questions){let properties={};for(let[key,question]of Object.entries(questions))switch(question.kind){case"choice":properties[key]={type:"string",enum:Object.keys(question.labels)};break;case"score":properties[key]={type:"string",enum:question.rubric.map((_,level)=>String(level))};break;case"noul":properties[key]={type:"string",enum:["yes","no"]};break}let keys=Object.keys(questions);return{type:"object",title:"Decision","x-order":keys,required:keys,additionalProperties:!1,properties}}function formatDesc(desc3){if(typeof desc3==="string")return desc3;if(desc3===null||desc3===void 0)return"";return JSON.stringify(desc3)}function declaredOptions(question){switch(question.kind){case"choice":return Object.keys(question.labels);case"score":return question.rubric.map((_,level)=>String(level));case"noul":return["yes","no"]}}function buildPrompt(state,questions){let parts=[],stateText=typeof state==="string"?state:state===null||state===void 0?"":JSON.stringify(state);if(stateText.length>0)parts.push(stateText);for(let[key,question]of Object.entries(questions)){let lines=[],prompt=formatDesc(question.prompt);switch(lines.push(`Question "${key}":${prompt.length>0?` ${prompt}`:""}`),lines.push("Options:"),question.kind){case"choice":for(let[label,desc3]of Object.entries(question.labels)){let d=formatDesc(desc3);lines.push(d.length>0?`- ${label}: ${d}`:`- ${label}`)}break;case"score":question.rubric.forEach((desc3,level)=>{let d=formatDesc(desc3);lines.push(d.length>0?`- ${level}: ${d}`:`- ${level}`)});break;case"noul":{for(let outcome of["yes","no"]){let d=formatDesc(question[outcome]);lines.push(d.length>0?`- ${outcome}: ${d}`:`- ${outcome}`)}break}}parts.push(lines.join(`
1835
+ `:this._frontmatterBlock.slice(0,rawStart)+raw+this._frontmatterBlock.slice(rawStart+oldRaw.length)}serialize(){let result=this._frontmatterBlock;result+=this._preamble;for(let section of this._sections)result+=section.modifiedText??section.originalText;return result}}function replaceFieldLines(lines,idx,fieldLine){let end=idx+1;while(end<lines.length&&/^(\s|-(\s|$))/.test(lines[end]??""))end++;lines.splice(idx,end-idx,fieldLine)}function escapeYamlArrayElement(value){return`"${value.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`}function escapeYamlValue(value){if(value.startsWith('"')&&value.endsWith('"'))return value;if(/[:{}[\],&*?|>!%@`#"'\\\n\r]/.test(value))return`"${value.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`;if(/^(null|true|false|yes|no|on|off)$/i.test(value))return`"${value}"`;if(/^\d/.test(value)&&!/^\d{4}-\d{2}-\d{2}/.test(value))return`"${value}"`;return value}init_zod();var TASK_STATUSES=["backlog","todo","wip","testing","blocked","done","cancelled"],FEATURE_STATUSES=["backlog","active","verifying","blocked","done","cancelled"];var PRIORITIES=["P0","P1","P2","P3"],PROFILES=["simple","standard","complex","research","refine","plan","unit","review","docs"],TASK_TYPES=["task","issue","review","meta","brainstorm"],TASK_VARIANTS=["standard","feature-impl","issue","review","meta","brainstorm"];var FEATURE_ID_PATTERN=/^[A-Z][1-9]*$/;var TASK_STATUS_ALIASES={completed:"done",complete:"done","in-progress":"wip","in progress":"wip",in_progress:"wip",dropped:"cancelled",cancel:"cancelled",canceled:"cancelled",new:"backlog",pending:"backlog",blocked:"blocked",wip:"wip",testing:"testing",done:"done",cancelled:"cancelled",backlog:"backlog",todo:"todo"};function normalizeTaskStatus(raw){let key=raw.trim().toLowerCase(),resolved=TASK_STATUS_ALIASES[key];if(resolved===void 0)throw Error(`Unknown task status: ${JSON.stringify(raw)} (allowed: ${TASK_STATUSES.join(", ")})`);return resolved}var isoDateString=exports_external.string().min(1).refine((value)=>!Number.isNaN(Date.parse(value)),{message:"must be an ISO 8601 timestamp"}),featureId=exports_external.string().regex(FEATURE_ID_PATTERN,{message:"feature id must match ^[A-Z][1-9]*$ (DD-14)"}).nullable().optional(),wbsString=exports_external.string().regex(/^\d{4}$/,{message:"parent_wbs must be a 4-digit WBS string"}).nullable().optional(),taskFrontmatterSchema=exports_external.object({schema_version:exports_external.literal(1),name:exports_external.string().min(1),description:exports_external.string().optional(),status:exports_external.preprocess((val)=>{if(typeof val==="string")try{return normalizeTaskStatus(val)}catch{}return val},exports_external.enum(TASK_STATUSES)),type:exports_external.enum(TASK_TYPES).optional().default("task"),template:exports_external.enum(TASK_VARIANTS).optional(),profile:exports_external.enum(PROFILES).optional(),feature_id:featureId,parent_wbs:wbsString,priority:exports_external.enum(PRIORITIES).optional(),tags:exports_external.array(exports_external.string()).optional(),dependencies:exports_external.array(exports_external.string()).optional(),ac_numbering:exports_external.literal("task-local").optional(),ac_altitude:exports_external.enum(["graduating","task-local"]).optional(),done_forced:exports_external.preprocess((v)=>typeof v==="string"?v==="true":v,exports_external.boolean().optional()),done_reason:exports_external.string().optional(),feature_link_declined:exports_external.preprocess((v)=>typeof v==="string"?v==="true":v,exports_external.boolean().optional()),estimate_hours:exports_external.preprocess((v)=>typeof v==="string"&&v.trim()!==""?Number(v):v,exports_external.number().positive().optional()),created_at:isoDateString,updated_at:isoDateString}),featureFrontmatterSchema=exports_external.object({schema_version:exports_external.literal(1),id:exports_external.string().regex(FEATURE_ID_PATTERN,{message:"feature id must match ^[A-Z][1-9]*$ (DD-14)"}),name:exports_external.string().min(1),status:exports_external.enum(FEATURE_STATUSES),priority:exports_external.enum(PRIORITIES).optional(),tags:exports_external.array(exports_external.string()).optional(),created_at:isoDateString,updated_at:isoDateString});var taskBatchItemSchema=exports_external.object({name:exports_external.string().min(1,"name is required"),background:exports_external.string().optional(),requirements:exports_external.string().optional(),design:exports_external.string().optional(),plan:exports_external.string().optional(),acceptance_criteria:exports_external.string().optional(),feature_id:featureId,parent_wbs:wbsString,priority:exports_external.enum(PRIORITIES).optional(),tags:exports_external.array(exports_external.string()).optional(),template:exports_external.enum(TASK_VARIANTS).optional(),estimate_hours:exports_external.number().positive().optional()}).strict(),taskBatchSchema=exports_external.array(taskBatchItemSchema).min(1,"batch must contain at least one task");init_dist2();init_zod();var sectionNameSchema=exports_external.enum(TASK_CANONICAL_SECTIONS),matrixEntrySchema=exports_external.object({required:exports_external.array(sectionNameSchema).optional(),optional:exports_external.array(sectionNameSchema).optional(),forbidden:exports_external.array(sectionNameSchema).optional(),gate:exports_external.boolean().optional()}).strict(),matrixStatusSchema=exports_external.enum(["backlog","todo","wip","testing","blocked","done","cancelled"]),sectionMatrixSchema=exports_external.object({variants:exports_external.record(exports_external.string(),exports_external.partialRecord(matrixStatusSchema,matrixEntrySchema))}).strict();var CANONICAL_INDEX=new Map(TASK_CANONICAL_SECTIONS.map((s2,i2)=>[s2,i2]));init_dist9();init_dist7();init_dist6();var SECRET_PATTERN=/(?:sk-[a-z0-9_-]{8,}|(?:api[_-]?key|token|secret|password)\s*[:=]\s*\S+|bearer\s+\S+)/gi;function configuredSecretValues(env2){return Object.entries(env2).filter(([key,value])=>/(?:secret|token|password|api[_-]?key|credential)/i.test(key)&&(value?.length??0)>=4).map(([,value])=>value)}function redactAndBound(value,secrets,maxChars){let redacted=value.replace(SECRET_PATTERN,"[REDACTED]");for(let secret of secrets)if(secret!=="")redacted=redacted.split(secret).join("[REDACTED]");return redacted.length<=maxChars?redacted:`${redacted.slice(0,maxChars)}…`}function decisionLogSink(adapter,config4,env2){let mode=config4?.decisions?.log??"full";if(mode==="off")return;return{dao:new DecisionLogDao(adapter),secrets:configuredSecretValues(env2),mode}}var DECISION_LOG_INPUT_MAX_CHARS=16384,DECISION_LOG_TEXT_MAX_CHARS=2048,DECISION_LOG_SCHEMA_VERSION=1;function boundedQuestion(sink,question){if(sink.mode==="metadata"||question===void 0)return null;return redactAndBound(question,sink.secrets,DECISION_LOG_TEXT_MAX_CHARS)}function boundedInputJson(sink,input){if(sink.mode==="metadata"||input===void 0)return null;let raw=redactAndBound(JSON.stringify(input),sink.secrets,DECISION_LOG_INPUT_MAX_CHARS);if(raw.length<=DECISION_LOG_INPUT_MAX_CHARS)return raw;let truncated=JSON.stringify({truncated:!0,input:raw.slice(0,DECISION_LOG_INPUT_MAX_CHARS-64)});return truncated.length<=DECISION_LOG_INPUT_MAX_CHARS?truncated:truncated.slice(0,DECISION_LOG_INPUT_MAX_CHARS)}function boundedValue(value){return value===void 0?null:String(value)}function buildDecisionLogRow(sink,record3){let value=record3.outcome==="rejected"?null:boundedValue(record3.value),fallbackValue=record3.outcome==="fallback"?boundedValue(record3.fallbackValue??record3.value):record3.outcome==="rejected"?boundedValue(record3.fallbackValue):null;return{id:record3.id,decision_id:record3.decisionId,decision_type:record3.decisionType??null,caller:record3.caller,run_id:record3.correlation?.runId??null,workflow_name:record3.correlation?.workflowName??null,node_id:record3.correlation?.nodeId??null,wbs:record3.correlation?.wbs??null,maker_name:record3.maker??null,maker_source:record3.makerSource??null,catalog_layer:record3.catalogLayer!==void 0&&record3.catalogLayer!==""?record3.catalogLayer:null,catalog_source:record3.catalogSource??null,min_confidence:record3.minConfidence??null,question:boundedQuestion(sink,record3.question),input_json:boundedInputJson(sink,record3.input),input_keys_json:JSON.stringify([...record3.inputKeys??Object.keys(record3.input??{})]),evidence_digest:record3.evidenceDigest??null,outcome:record3.outcome,value,fallback_value:fallbackValue,source:record3.outcome==="rejected"?null:record3.source??null,reason:record3.reason??null,confidence:record3.confidence??null,error:record3.error===void 0?null:redactAndBound(record3.error,sink.secrets,DECISION_LOG_TEXT_MAX_CHARS),started_at:new Date(record3.startedAtMs).toISOString(),ended_at:new Date(record3.endedAtMs).toISOString(),duration_ms:Math.max(0,record3.endedAtMs-record3.startedAtMs),phases_json:JSON.stringify(record3.phases),schema_version:DECISION_LOG_SCHEMA_VERSION}}function writeDecisionLog(sink,row){sink.dao.insert(row).catch((error51)=>{let message=error51 instanceof Error?error51.message:String(error51);try{sink.warn?.(`decision log write failed: ${message}`)}catch{}})}init_src();import{createHash as createHash3}from"node:crypto";init_dist6();class DecisionCatalogError extends Error{source;decisionId;field;constructor(message,source,decisionId,field){super(message);this.source=source,this.decisionId=decisionId,this.field=field,this.name="DecisionCatalogError"}}class DecisionRegistryError extends Error{constructor(message){super(message);this.name="DecisionRegistryError"}}class UnknownDecisionMakerError extends Error{name;constructor(message,name){super(message);this.name=name}}class UnknownDecisionError extends Error{decisionId;constructor(message,decisionId){super(message);this.decisionId=decisionId,this.name="UnknownDecisionError"}}class DecisionInputError extends Error{decisionId;param;constructor(message,decisionId,param){super(message);this.decisionId=decisionId,this.param=param,this.name="DecisionInputError"}}var INSTRUCTIONS_PARAM="instructions",DEFAULT_INSTRUCTIONS_TEMPLATE="${params.instructions}",TEMPLATE_REF2=/\$\{([^}]+)\}/g;function implicitInstructionsParam(){return{name:INSTRUCTIONS_PARAM,type:"string",required:!1,default:""}}function expectTypeMatch(decision,param,value){let expects=param.values!==void 0?`one of [${param.values.join(", ")}]`:param.type,ok;switch(param.type){case"string":ok=typeof value==="string";break;case"number":ok=typeof value==="number"&&Number.isFinite(value);break;case"boolean":ok=typeof value==="boolean";break;case"enum":ok=typeof value==="string"&&param.values?.includes(value)===!0;break;case"json":return}if(!ok)throw new DecisionInputError(`Parameter "${param.name}" of decision "${decision.id}" expects ${expects}, got ${JSON.stringify(value)}`,decision.id,param.name)}function resolveDecisionInput(decision,input={}){let params={};for(let key of Object.keys(input))if(!Object.hasOwn(decision.parameters,key))throw new DecisionInputError(`Unknown parameter "${key}" for decision "${decision.id}"; declared parameters: ${Object.keys(decision.parameters).join(", ")}`,decision.id,key);for(let param of Object.values(decision.parameters)){let supplied=param.name in input?input[param.name]:void 0;if(supplied===void 0&&param.required)throw new DecisionInputError(`Missing required parameter "${param.name}" for decision "${decision.id}"`,decision.id,param.name);let value=supplied!==void 0?supplied:param.default??null;expectTypeMatch(decision,param,value),params[param.name]=value}return params}function substitute(decisionId,ref,params){if(!ref.startsWith("params."))throw new DecisionInputError(`Template ref "\${${ref}}" must use the "params" namespace`,decisionId,ref);let name=ref.slice(7),value=params[name];if(value===void 0||value===null)return"";if(typeof value==="string")return value;if(typeof value==="number"||typeof value==="boolean")return String(value);return JSON.stringify(value)}function renderEntryValue(decisionId,value,params){if(typeof value==="string")return value.replace(TEMPLATE_REF2,(_match,ref)=>substitute(decisionId,ref,params));if(Array.isArray(value))return value.map((item)=>renderEntryValue(decisionId,item,params));if(value!==null&&typeof value==="object")return Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,renderEntryValue(decisionId,entry,params)]));return value}function renderEntry(decisionId,entry,params){return renderEntryValue(decisionId,entry,params)}function renderQuestion(decision,params){let rendered=renderEntry(decision.id,decision.instructions,params),instructions=typeof rendered==="string"&&rendered.trim().length===0&&decision.description?decision.description:rendered,criteria=decision.criteria;switch(criteria.kind){case"choice":{let rendered2={};for(let[label,entry]of Object.entries(criteria.labels))rendered2[label]=renderEntry(decision.id,entry,params);return{type:"choice",instructions,criteria:rendered2}}case"score":return{type:"score",instructions,criteria:criteria.levels.map((entry)=>renderEntry(decision.id,entry,params))};case"noul":{let outcomes=criteria.outcomes;if(outcomes===void 0)return{type:"noul",instructions};return{type:"noul",instructions,criteria:{...outcomes.true!==void 0?{true:renderEntry(decision.id,outcomes.true,params)}:{},...outcomes.false!==void 0?{false:renderEntry(decision.id,outcomes.false,params)}:{}}}}}}function buildState(decision,params){let state={};for(let param of Object.values(decision.parameters)){if(param.name===INSTRUCTIONS_PARAM)continue;let value=params[param.name];if(value===null||value===void 0)continue;state[param.name]=value}return Object.keys(state).length===0?null:state}init_zod();var DECISION_ID_PATTERN=/^[a-z][a-z0-9_-]*$/,PARAM_NAME_PATTERN=/^[a-z][a-zA-Z0-9_]*$/,MAKER_NAME_PATTERN=/^[a-z][a-z0-9-]*$/,JsonValueSchema=exports_external.lazy(()=>exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null(),exports_external.array(JsonValueSchema),exports_external.record(exports_external.string(),JsonValueSchema)])),JevEntrySchema=exports_external.lazy(()=>exports_external.union([exports_external.string(),exports_external.null(),exports_external.array(JsonValueSchema),exports_external.record(exports_external.string(),JsonValueSchema)])),ParamTypeSchema=exports_external.enum(["string","number","boolean","enum","json"]),FullParamSchema=exports_external.object({type:ParamTypeSchema,default:exports_external.unknown().optional(),values:exports_external.array(exports_external.string()).min(1).optional(),description:exports_external.string().optional()}).strict(),ParamSchema=exports_external.union([ParamTypeSchema,FullParamSchema]),NoulCriteriaSchema=exports_external.object({true:JevEntrySchema.optional(),false:JevEntrySchema.optional()}).strict(),ChoiceCriteriaSchema=exports_external.record(exports_external.string().min(1),JevEntrySchema),ScoreCriteriaSchema=exports_external.array(JevEntrySchema),DecisionSchema=exports_external.object({type:exports_external.enum(["choice","score","noul"]),description:exports_external.string().optional(),instructions:JevEntrySchema.optional(),parameters:exports_external.record(exports_external.string().regex(PARAM_NAME_PATTERN),ParamSchema).optional(),criteria:exports_external.union([NoulCriteriaSchema,ChoiceCriteriaSchema,ScoreCriteriaSchema]).optional(),fallback:exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean()]),minConfidence:exports_external.number().min(0).max(1).optional(),maker:exports_external.string().regex(MAKER_NAME_PATTERN).optional(),model:exports_external.string().optional()}).strict(),DecisionCatalogSchema=exports_external.object({$schema:exports_external.string().optional(),version:exports_external.literal(1),defaults:exports_external.object({maker:exports_external.string().regex(MAKER_NAME_PATTERN).optional(),model:exports_external.string().optional(),minConfidence:exports_external.number().min(0).max(1).optional()}).strict().optional(),decisions:exports_external.record(exports_external.string().regex(DECISION_ID_PATTERN),DecisionSchema)}).strict().refine((catalog)=>Object.keys(catalog.decisions).length>=1,{message:"decisions must declare at least one decision"});var TEMPLATE_REF3=/\$\{([^}]+)\}/g,YAML_SOURCE_PATTERN=/\.(yaml|yml)$/;function assertYamlSource(source){if(!YAML_SOURCE_PATTERN.test(source))throw new DecisionCatalogError(`Decision catalogs are YAML only; source "${source}" does not end in .yaml or .yml`,source)}async function loadDecisionCatalog(path8,options={}){assertYamlSource(path8);let fileSystem=options.fileSystem??createNodeFileSystem2(),content;try{content=await fileSystem.readFile(path8)}catch(error51){throw new DecisionCatalogError(`Cannot read decision catalog "${path8}": ${error51 instanceof Error?error51.message:String(error51)}`,path8)}return parseDecisionCatalog(content,path8,options)}async function parseDecisionCatalog(content,source,options={}){assertYamlSource(source);let raw;try{raw=await parseStructuredConfig(content,source,{validateSchema:options.validateSchema??!0,fileSystem:options.fileSystem})}catch(error51){throw new DecisionCatalogError(`Decision catalog "${source}" failed to parse or validate: ${error51 instanceof Error?error51.message:String(error51)}`,source)}let parsed=DecisionCatalogSchema.safeParse(raw);if(!parsed.success){let issue2=parsed.error.issues[0],fieldPath=issue2?.path.map(String).join(".")??"",decisionId=fieldPath.startsWith("decisions.")?fieldPath.split(".")[1]:void 0;throw new DecisionCatalogError(`Invalid decision catalog "${source}"${fieldPath?` at ${fieldPath}`:""}: ${issue2?.message??"schema mismatch"}`,source,decisionId,fieldPath||void 0)}return buildCatalog(parsed.data,source)}function buildCatalog(parsed,source){let decisions={};for(let[id,raw]of Object.entries(parsed.decisions))decisions[id]=checkDecision(id,raw,source);let defaults=parsed.defaults??{};return{source,defaults,decisions}}function catalogError(source,decisionId,field,message){return new DecisionCatalogError(`Decision "${decisionId}" in "${source}": ${message}`,source,decisionId,field)}function normalizeParam(name,rawParam){if(typeof rawParam==="string")return{name,type:rawParam,required:!0};let hasDefault="default"in rawParam;return{name,type:rawParam.type,required:!hasDefault,...hasDefault?{default:rawParam.default}:{},...rawParam.values!==void 0?{values:rawParam.values}:{},...rawParam.description!==void 0?{description:rawParam.description}:{}}}function checkParam(id,param,source){if(param.type==="enum"){if(param.values===void 0||param.values.length<1)throw catalogError(source,id,`parameters.${param.name}.values`,"enum parameter requires at least one value")}else if(param.values!==void 0)throw catalogError(source,id,`parameters.${param.name}.values`,`only enum parameters may declare values; parameter type is "${param.type}"`);if(!param.required&&!defaultMatches(param))throw catalogError(source,id,`parameters.${param.name}.default`,`default ${JSON.stringify(param.default??null)} does not match declared type "${param.type}"`+(param.values?` with values [${param.values.join(", ")}]`:""))}function defaultMatches(param){let value=param.default;switch(param.type){case"string":return typeof value==="string";case"number":return typeof value==="number"&&Number.isFinite(value);case"boolean":return typeof value==="boolean";case"enum":return typeof value==="string"&&param.values?.includes(value)===!0;case"json":return!0}}function normalizeCriteria(id,raw,source){let criteria=raw.criteria;if(raw.type==="choice"){if(criteria===void 0||Array.isArray(criteria)||typeof criteria!=="object"||criteria===null)throw catalogError(source,id,"criteria","choice decision requires a criteria label map");let labels=criteria;if(Object.keys(labels).length<2)throw catalogError(source,id,"criteria","choice criteria requires at least two labels");return{kind:"choice",labels}}if(raw.type==="score"){if(criteria===void 0)throw catalogError(source,id,"criteria","score decision requires a criteria rubric list");if(!Array.isArray(criteria))throw catalogError(source,id,"criteria","score criteria must be a list of level descriptions");if(criteria.length<2)throw catalogError(source,id,"criteria","score criteria requires at least two levels");return{kind:"score",levels:criteria}}if(criteria===void 0)return{kind:"noul"};if(Array.isArray(criteria)||typeof criteria!=="object"||criteria===null)throw catalogError(source,id,"criteria",'noul criteria must be an object with "true"/"false" keys');for(let key of Object.keys(criteria))if(key!=="true"&&key!=="false")throw catalogError(source,id,"criteria",`noul criteria accepts only the keys "true" and "false"; got "${key}"`);let outcomes=criteria;return{kind:"noul",...outcomes.true!==void 0||outcomes.false!==void 0?{outcomes:{...outcomes.true!==void 0?{true:outcomes.true}:{},...outcomes.false!==void 0?{false:outcomes.false}:{}}}:{}}}function checkFallback(id,type,criteria,fallback,source){if(type==="choice"){if(criteria.kind!=="choice"||typeof fallback!=="string"||!Object.hasOwn(criteria.labels,fallback)){let labels=criteria.kind==="choice"?Object.keys(criteria.labels).join(", "):"";throw catalogError(source,id,"fallback",`fallback ${JSON.stringify(fallback)} is not a declared criteria label (${labels})`)}return}if(type==="score"){let levelCount=criteria.kind==="score"?criteria.levels.length:0;if(criteria.kind!=="score"||typeof fallback!=="number"||!Number.isInteger(fallback)||fallback<0||fallback>=levelCount)throw catalogError(source,id,"fallback",`fallback ${JSON.stringify(fallback)} is not an integer level in [0, ${levelCount-1}]`);return}if(typeof fallback!=="boolean")throw catalogError(source,id,"fallback",`noul fallback must be a boolean; got ${JSON.stringify(fallback)}`)}function collectTemplateRefs(value,into){if(typeof value==="string"){for(let match of value.matchAll(TEMPLATE_REF3))into.add(match[1]??"");return}if(Array.isArray(value)){for(let item of value)collectTemplateRefs(item,into);return}if(value!==null&&typeof value==="object")for(let entry of Object.values(value))collectTemplateRefs(entry,into)}function checkTemplateRefs(id,field,entry,declared,source){let refs=new Set;collectTemplateRefs(entry,refs);for(let ref of refs){if(!ref.startsWith("params."))throw catalogError(source,id,field,`template ref "\${${ref}}" uses namespace "${ref.split(".")[0]??""}"; only "params" is allowed`);let name=ref.slice(7);if(!declared.has(name))throw catalogError(source,id,field,`template ref "\${${ref}}" names an undeclared parameter`)}}function checkDecision(id,raw,source){let parameters={},rawParams=raw.parameters??{};if(INSTRUCTIONS_PARAM in rawParams)throw catalogError(source,id,"parameters.instructions",'the "instructions" parameter is reserved and implicit (string, default ""); it cannot be declared');for(let[name,rawParam]of Object.entries(rawParams)){let param=normalizeParam(name,rawParam);checkParam(id,param,source),parameters[name]=param}parameters[INSTRUCTIONS_PARAM]=implicitInstructionsParam();let criteria=normalizeCriteria(id,raw,source);checkFallback(id,raw.type,criteria,raw.fallback,source);let instructions=raw.instructions??DEFAULT_INSTRUCTIONS_TEMPLATE,declared=new Set(Object.keys(parameters));checkTemplateRefs(id,"instructions",instructions,declared,source);let criteriaEntries=criteria.kind==="choice"?Object.values(criteria.labels):criteria.kind==="score"?[...criteria.levels]:criteria.outcomes?[criteria.outcomes.true,criteria.outcomes.false].filter((e)=>e!==void 0):[];for(let entry of criteriaEntries)checkTemplateRefs(id,"criteria",entry,declared,source);return{id,source,type:raw.type,...raw.description!==void 0?{description:raw.description}:{},instructions,parameters,criteria,fallback:raw.fallback,...raw.minConfidence!==void 0?{minConfidence:raw.minConfidence}:{},...raw.maker!==void 0?{maker:raw.maker}:{},...raw.model!==void 0?{model:raw.model}:{}}}init_dist9();init_dist9();init_dist9();init_dist6();function entropyConfidence(probabilities){let n2=probabilities.length;if(n2<=1)return 1;let entropy=0;for(let p of probabilities)if(p>0)entropy-=p*Math.log(p);return 1-entropy/Math.log(n2)}function estimateChoice(labels,samples){let counts=new Map(labels.map((label)=>[label,0]));for(let sample of samples)counts.set(sample,(counts.get(sample)??0)+1);let k=samples.length,probabilities={},distribution=[],bestLabel=labels[0]??"",bestCount=-1;for(let label of labels){let count3=counts.get(label)??0,probability=count3/k;if(distribution.push(probability),probabilities[label]=probability,count3>bestCount)bestCount=count3,bestLabel=label}return{kind:"choice",label:bestLabel,confidence:entropyConfidence(distribution),probabilities}}function estimateScore(rubric,samples){let k=samples.length,counts=[];for(let sample of samples){let level=Number.parseInt(sample,10);counts[level]=(counts[level]??0)+1}let probabilities={},distribution=[],bestLevel=0,bestCount=-1;for(let level=0;level<rubric.length;level++){let count3=counts[level]??0,probability=count3/k;if(distribution.push(probability),probabilities[level]=probability,count3>bestCount)bestCount=count3,bestLevel=level}let legend={};return rubric.forEach((desc3,level)=>{legend[level]=desc3}),{kind:"score",score:bestLevel,confidence:entropyConfidence(distribution),legend,probabilities}}function estimateNoul(samples){return{kind:"noul",probability:samples.filter((sample)=>sample==="yes").length/samples.length}}init_dist9();function countTokensArgv(instructions,prompt){return["count-tokens","-q",`--instructions=${instructions}`,"--",prompt]}function respondArgv(options){return["respond","--no-stream","--schema",options.schemaPath,`--instructions=${options.instructions}`,...options.guardrails!==void 0?["--guardrails",options.guardrails]:[],...options.greedy?["-g"]:[],"--",options.prompt]}function availableArgv(){return["available","--model","system"]}function isSpawnFailure(result){return result.outcome==="error"&&result.exitCode===null}function fmText(result){let text3=(result.stderr.trim().length>0?result.stderr:result.stdout).trim();return text3.length>0?text3:"(no output)"}async function probeFmAvailability(executor,fmPath,timeoutMs=1e4){let result=await executor.run({command:fmPath,args:availableArgv(),timeout:timeoutMs});if(result.outcome==="timeout")throw new DecisionTimeoutError(`fm available exceeded requestTimeoutMs (${timeoutMs})`,timeoutMs);if(isSpawnFailure(result))throw new DecisionConfigError(`fm not found: '${fmPath}' could not be spawned`,"fmPath");if(result.exitCode!==0)throw new DecisionConfigError(`fm system model unavailable: ${fmText(result)}`,"fm-system-model")}async function countPromptTokens(executor,fmPath,instructions,prompt,timeoutMs=1e4){let result=await executor.run({command:fmPath,args:countTokensArgv(instructions,prompt),timeout:timeoutMs});if(result.outcome==="timeout")throw new DecisionTimeoutError(`fm count-tokens exceeded requestTimeoutMs (${timeoutMs})`,timeoutMs);if(isSpawnFailure(result))throw new DecisionConfigError(`fm not found: '${fmPath}' could not be spawned`,"fmPath");if(result.exitCode!==0)throw new DecisionBackendError(`fm count-tokens failed (exit ${result.exitCode}): ${fmText(result)}`,void 0);let tokens=Number.parseInt(result.stdout.trim(),10);if(!Number.isFinite(tokens))throw new DecisionBackendError(`fm count-tokens did not print a token count: ${result.stdout.trim()||"(empty)"}`,void 0);return tokens}var CONTEXT_SIZE_MARKER="exceeded the model's context size",GUARDRAILS_MARKER="safety guardrails were triggered";async function runFmRespond(executor,fmPath,args,requestTimeoutMs){let result=await executor.run({command:fmPath,args,timeout:requestTimeoutMs});if(result.outcome==="timeout")throw new DecisionTimeoutError(`fm ${args[0]} exceeded requestTimeoutMs (${requestTimeoutMs})`,requestTimeoutMs);if(isSpawnFailure(result))throw new DecisionConfigError(`fm not found: '${fmPath}' could not be spawned`,"fmPath");if(result.exitCode!==0){let text3=fmText(result);if(text3.includes(CONTEXT_SIZE_MARKER))throw new DecisionRequestError(`fm prompt exceeded the model context size: ${text3}`,void 0,void 0);if(text3.includes(GUARDRAILS_MARKER))throw new DecisionBackendError(`fm safety guardrails were triggered: ${text3}`,void 0);throw new DecisionBackendError(`fm respond failed (exit ${result.exitCode}): ${text3}`,void 0)}return result.stdout}function parseFmRespond(stdout){let parsed;try{parsed=JSON.parse(stdout)}catch(cause){throw new DecisionBackendError(`fm respond printed non-JSON output: ${stdout.trim()||"(empty)"}`,void 0,{cause})}if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))throw new DecisionBackendError(`fm respond printed non-object JSON: ${stdout.trim()}`,void 0);let record3={};for(let[key,value]of Object.entries(parsed)){if(typeof value!=="string")throw new DecisionBackendError(`fm respond printed a non-string value for '${key}'`,void 0);record3[key]=value}return record3}function requireEnumValue(parsed,key,allowed){let value=parsed[key];if(value===void 0||!allowed.includes(value))throw new DecisionBackendError(`fm sample for '${key}' violates the schema enum: ${value===void 0?"(missing)":`'${value}'`}`,void 0);return value}var FM_INSTRUCTIONS="You are a decision engine. Answer every question below using only the supplied state. For each question choose exactly one of the listed options. Reply with the JSON object the schema requires.";function buildFmSchema(questions){let properties={};for(let[key,question]of Object.entries(questions))switch(question.kind){case"choice":properties[key]={type:"string",enum:Object.keys(question.labels)};break;case"score":properties[key]={type:"string",enum:question.rubric.map((_,level)=>String(level))};break;case"noul":properties[key]={type:"string",enum:["yes","no"]};break}let keys=Object.keys(questions);return{type:"object",title:"Decision","x-order":keys,required:keys,additionalProperties:!1,properties}}function formatDesc(desc3){if(typeof desc3==="string")return desc3;if(desc3===null||desc3===void 0)return"";return JSON.stringify(desc3)}function declaredOptions(question){switch(question.kind){case"choice":return Object.keys(question.labels);case"score":return question.rubric.map((_,level)=>String(level));case"noul":return["yes","no"]}}function buildPrompt(state,questions){let parts=[],stateText=typeof state==="string"?state:state===null||state===void 0?"":JSON.stringify(state);if(stateText.length>0)parts.push(stateText);for(let[key,question]of Object.entries(questions)){let lines=[],prompt=formatDesc(question.prompt);switch(lines.push(`Question "${key}":${prompt.length>0?` ${prompt}`:""}`),lines.push("Options:"),question.kind){case"choice":for(let[label,desc3]of Object.entries(question.labels)){let d=formatDesc(desc3);lines.push(d.length>0?`- ${label}: ${d}`:`- ${label}`)}break;case"score":question.rubric.forEach((desc3,level)=>{let d=formatDesc(desc3);lines.push(d.length>0?`- ${level}: ${d}`:`- ${level}`)});break;case"noul":{for(let outcome of["yes","no"]){let d=formatDesc(question[outcome]);lines.push(d.length>0?`- ${outcome}: ${d}`:`- ${outcome}`)}break}}parts.push(lines.join(`
1819
1836
  `))}return parts.join(`
1820
1837
 
1821
- `)}function createFmDriver(options={}){let{samples=5,deterministic=!1,maxPromptTokens=6000,requestTimeoutMs=30000,guardrails,fmPath="fm",executor=nodeBunFactory2.createProcessExecutor(),platform:platform2=process.platform,arch=process.arch}=options;if(!Number.isInteger(samples)||samples<1)throw new DecisionRequestError(`samples must be a positive integer; got ${samples}`,void 0,void 0);let k=deterministic?1:samples;if(platform2!=="darwin"||arch!=="arm64")throw new DecisionConfigError(`decision-fm requires macOS on Apple Silicon (darwin arm64); current platform is '${platform2} ${arch}'`,"PLATFORM");let fs2=createNodeFileSystem2(),availabilityVerified=!1;async function ensureFmAvailable(){if(availabilityVerified)return;await probeFmAvailability(executor,fmPath,requestTimeoutMs),availabilityVerified=!0}return{name:"fm-local",estimator:{kind:"sample-frequency",samples:k,greedy:deterministic},async ask({state,questions,model}){if(model!==void 0&&model!=="system")throw new DecisionRequestError(`fm-local supports only the 'system' model (or undefined); got '${model}'`,void 0,void 0);let entries=Object.entries(questions);if(entries.length===0)throw new DecisionRequestError("expected a nonempty question map",void 0,void 0);for(let[key,question]of entries){let optionCount=question.kind==="choice"?Object.keys(question.labels).length:question.kind==="score"?question.rubric.length:2;if(optionCount<2)throw new DecisionRequestError(`question '${key}' has fewer than two options (${optionCount})`,void 0,void 0)}await ensureFmAvailable();let instructions=FM_INSTRUCTIONS,prompt=buildPrompt(state,questions),tokens=await countPromptTokens(executor,fmPath,instructions,prompt,requestTimeoutMs);if(tokens>maxPromptTokens)throw new DecisionRequestError(`prompt is ${tokens} tokens, above the maxPromptTokens budget of ${maxPromptTokens}`,void 0,void 0);let schemaPath=joinPath2(getProcessEnv().TMPDIR??"/tmp",`fm-schema-${crypto.randomUUID()}.json`);try{fs2.writeFile(schemaPath,JSON.stringify(buildFmSchema(questions)));let allowed=new Map(entries.map(([key,question])=>[key,declaredOptions(question)])),samplesByKey=new Map(entries.map(([key])=>[key,[]]));for(let i2=0;i2<k;i2++){let stdout=await runFmRespond(executor,fmPath,respondArgv({schemaPath,instructions,prompt,greedy:deterministic,guardrails}),requestTimeoutMs),parsed=parseFmRespond(stdout);for(let[key,values]of samplesByKey)values.push(requireEnumValue(parsed,key,allowed.get(key)??[]))}let answers={};for(let[key,question]of entries){let values=samplesByKey.get(key)??[];switch(question.kind){case"choice":answers[key]=estimateChoice(Object.keys(question.labels),values);break;case"score":answers[key]=estimateScore(question.rubric,values);break;case"noul":answers[key]=estimateNoul(values);break}}return answers}finally{fs2.deleteFile(schemaPath)}}}}init_dist9();init_dist9();init_dist6();var FORWARDED_ENV_KEYS=["LAYA_MODEL_ID","LAYA_MODEL_PATH","LAYA_CACHE_DIR","LAYA_PYTHON","HF_TOKEN"],STDERR_TAIL_LIMIT=2000,STREAM_CLOSE_GRACE_MS=250;function resolveForwardedEnv(env2){let forwarded={};if(!env2)return forwarded;for(let key of FORWARDED_ENV_KEYS){let value=env2[key];if(value!==void 0)forwarded[key]=value}return forwarded}function validateHostPrerequisites(platform2=process.platform,arch=process.arch){if(platform2!=="darwin"||arch!=="arm64")throw new DecisionConfigError(`laya-mlx requires macOS on Apple Silicon (darwin arm64); current platform is '${platform2} ${arch}'`,"PLATFORM")}function hasNonFiniteValues(obj){if(typeof obj==="number")return!Number.isFinite(obj);if(obj!==null&&typeof obj==="object"){for(let val of Object.values(obj))if(hasNonFiniteValues(val))return!0}return!1}function translateWorkerError(kind,message){let lower=message.toLowerCase();if(lower.includes("401")||lower.includes("unauthorized")||lower.includes("403")||lower.includes("forbidden")||lower.includes("gated repo")||lower.includes("hf_token")||lower.includes("invalid credentials")){let status=lower.includes("403")||lower.includes("forbidden")?403:401;return new DecisionAuthError(`laya artifact resolution failed: ${message}`,status)}if(lower.includes("connectionerror")||lower.includes("connection refused")||lower.includes("name resolution")||lower.includes("nameresolutionerror")||lower.includes("network is unreachable")||lower.includes("could not connect")||lower.includes("transport"))return new DecisionConnectionError(`laya artifact resolution failed: ${message}`);if(lower.includes("no module named")||lower.includes("laya_mlx")||lower.includes("laya-mlx"))return new DecisionConfigError(`laya-mlx runtime is not importable: ${message}; install with 'pip install laya-mlx'`,"LAYA_PYTHON");if(lower.includes("non-finite")||lower.includes("floatingpointerror")||lower.includes("nan")||lower.includes("infinity"))return new DecisionBackendError(`laya worker non-finite output: ${message}`,void 0);switch(kind){case"config":return new DecisionConfigError(`laya worker rejected its configuration: ${message}`,"laya-worker");case"request":return new DecisionRequestError(`laya worker rejected the request: ${message}`,void 0,message);default:return new DecisionBackendError(`laya worker backend failure: ${message}`,void 0)}}function toWorkerError(kind,message){return translateWorkerError(kind,message)}class WorkerHandle{proc;handshake;requestTimeoutMs;pending=new Map;nextRequestId=1;alive=!0;stderrTail="";handshakeSettled=!1;handshakeTimer=null;handshakeResolve=null;handshakeReject=null;streamCloseTimer=null;constructor(proc,requestTimeoutMs,startupTimeoutMs){if(this.proc=proc,this.requestTimeoutMs=requestTimeoutMs,this.handshake=new Promise((resolve,reject)=>{this.handshakeResolve=resolve,this.handshakeReject=reject}),this.handshakeTimer=setTimeout(()=>{this.failHandshake(new DecisionTimeoutError(`laya worker did not emit its handshake within startupTimeoutMs (${startupTimeoutMs})`,startupTimeoutMs))},startupTimeoutMs),proc.stdout!==null)this.pump(proc.stdout);if(proc.stderr!==null)this.collectStderr(proc.stderr);proc.exited.then((code)=>{this.alive=!1,this.failHandshake(this.exitError(code)),this.failAll(this.exitError(code))})}failAll(error51){this.alive=!1;for(let entry of this.pending.values())clearTimeout(entry.timer),entry.reject(error51);this.pending.clear()}end(){try{this.proc.endStdin()}catch{}}kill(){try{this.proc.kill()}catch{}}get isAlive(){return this.alive}armRequest(resolve,reject){let id=String(this.nextRequestId++),requestTimeoutMs=this.requestTimeoutMs,timer=setTimeout(()=>{this.pending.delete(id),reject(new DecisionTimeoutError(`laya worker request ${id} exceeded requestTimeoutMs (${requestTimeoutMs})`,requestTimeoutMs))},requestTimeoutMs);return this.pending.set(id,{resolve,reject,timer}),id}exitError(code){let tail=this.stderrTail.length>0?`: ${this.stderrTail}`:"",raw=`${this.stderrTail} (code ${code??"unknown"})`;if(raw.includes("No module named")||raw.includes("laya_mlx"))return new DecisionConfigError(`laya-mlx runtime is not importable: ${raw}; install with 'pip install laya-mlx'`,"LAYA_PYTHON");return new DecisionBackendError(`laya worker exited unexpectedly (code ${code??"unknown"})${tail}`,void 0)}failHandshake(error51){if(this.handshakeSettled)return;if(this.handshakeSettled=!0,this.handshakeTimer!==null)clearTimeout(this.handshakeTimer);this.handshakeReject?.(error51)}pump(stream){let decoder=new TextDecoder,buffer="";(async()=>{for await(let chunk of stream){buffer+=decoder.decode(chunk,{stream:!0});let newlineAt=buffer.indexOf(`
1838
+ `)}function createFmDriver(options={}){let{samples=5,deterministic=!1,maxPromptTokens=6000,requestTimeoutMs=30000,guardrails,fmPath="fm",executor=nodeBunFactory2.createProcessExecutor(),platform:platform2=process.platform,arch=process.arch}=options;if(!Number.isInteger(samples)||samples<1)throw new DecisionRequestError(`samples must be a positive integer; got ${samples}`,void 0,void 0);let k=deterministic?1:samples;if(platform2!=="darwin"||arch!=="arm64")throw new DecisionConfigError(`decision-fm requires macOS on Apple Silicon (darwin arm64); current platform is '${platform2} ${arch}'`,"PLATFORM");let fs2=createNodeFileSystem2(),availabilityVerified=!1;async function ensureFmAvailable(){if(availabilityVerified)return;await probeFmAvailability(executor,fmPath,requestTimeoutMs),availabilityVerified=!0}return{name:"fm-local",estimator:{kind:"sample-frequency",samples:k,greedy:deterministic},async ask({state,questions,model}){if(model!==void 0&&model!=="system")throw new DecisionRequestError(`fm-local supports only the 'system' model (or undefined); got '${model}'`,void 0,void 0);let entries=Object.entries(questions);if(entries.length===0)throw new DecisionRequestError("expected a nonempty question map",void 0,void 0);for(let[key,question]of entries){let optionCount=question.kind==="choice"?Object.keys(question.labels).length:question.kind==="score"?question.rubric.length:2;if(optionCount<2)throw new DecisionRequestError(`question '${key}' has fewer than two options (${optionCount})`,void 0,void 0)}await ensureFmAvailable();let instructions=FM_INSTRUCTIONS,prompt=buildPrompt(state,questions),tokens=await countPromptTokens(executor,fmPath,instructions,prompt,requestTimeoutMs);if(tokens>maxPromptTokens)throw new DecisionRequestError(`prompt is ${tokens} tokens, above the maxPromptTokens budget of ${maxPromptTokens}`,void 0,void 0);let schemaPath=joinPath2(getProcessEnv().TMPDIR??"/tmp",`fm-schema-${crypto.randomUUID()}.json`);try{fs2.writeFile(schemaPath,JSON.stringify(buildFmSchema(questions)));let allowed=new Map(entries.map(([key,question])=>[key,declaredOptions(question)])),samplesByKey=new Map(entries.map(([key])=>[key,[]]));for(let i2=0;i2<k;i2++){let stdout=await runFmRespond(executor,fmPath,respondArgv({schemaPath,instructions,prompt,greedy:deterministic,guardrails}),requestTimeoutMs),parsed=parseFmRespond(stdout);for(let[key,values]of samplesByKey)values.push(requireEnumValue(parsed,key,allowed.get(key)??[]))}let answers={};for(let[key,question]of entries){let values=samplesByKey.get(key)??[];switch(question.kind){case"choice":answers[key]=estimateChoice(Object.keys(question.labels),values);break;case"score":answers[key]=estimateScore(question.rubric,values);break;case"noul":answers[key]=estimateNoul(values);break}}return answers}finally{fs2.deleteFile(schemaPath)}}}}init_dist9();init_dist9();init_dist9();init_dist6();var FORWARDED_ENV_KEYS=["LAYA_MODEL_ID","LAYA_MODEL_PATH","LAYA_CACHE_DIR","LAYA_PYTHON","HF_TOKEN"],STDERR_TAIL_LIMIT=2000,STREAM_CLOSE_GRACE_MS=250;function resolveForwardedEnv(env2){let forwarded={};if(!env2)return forwarded;for(let key of FORWARDED_ENV_KEYS){let value=env2[key];if(value!==void 0)forwarded[key]=value}return forwarded}function validateHostPrerequisites(platform2=process.platform,arch=process.arch){if(platform2!=="darwin"||arch!=="arm64")throw new DecisionConfigError(`laya-mlx requires macOS on Apple Silicon (darwin arm64); current platform is '${platform2} ${arch}'`,"PLATFORM")}var DEFAULT_LAYA_MODEL_ID="convaiinnovations/laya-multilingual";function hasNonFiniteValues(obj){if(typeof obj==="number")return!Number.isFinite(obj);if(obj!==null&&typeof obj==="object"){for(let val of Object.values(obj))if(hasNonFiniteValues(val))return!0}return!1}function translateWorkerError(kind,message){let lower=message.toLowerCase();if(lower.includes("401")||lower.includes("unauthorized")||lower.includes("403")||lower.includes("forbidden")||lower.includes("gated repo")||lower.includes("hf_token")||lower.includes("invalid credentials")){let status=lower.includes("403")||lower.includes("forbidden")?403:401;return new DecisionAuthError(`laya artifact resolution failed: ${message}`,status)}if(lower.includes("connectionerror")||lower.includes("connection refused")||lower.includes("name resolution")||lower.includes("nameresolutionerror")||lower.includes("network is unreachable")||lower.includes("could not connect")||lower.includes("transport"))return new DecisionConnectionError(`laya artifact resolution failed: ${message}`);if(lower.includes("no module named")||lower.includes("laya_mlx")||lower.includes("laya-mlx"))return new DecisionConfigError(`laya-mlx runtime is not importable: ${message}; install with 'pip install laya-mlx'`,"LAYA_PYTHON");if(lower.includes("non-finite")||lower.includes("floatingpointerror")||lower.includes("nan")||lower.includes("infinity"))return new DecisionBackendError(`laya worker non-finite output: ${message}`,void 0);switch(kind){case"config":return new DecisionConfigError(`laya worker rejected its configuration: ${message}`,"laya-worker");case"request":return new DecisionRequestError(`laya worker rejected the request: ${message}`,void 0,message);default:return new DecisionBackendError(`laya worker backend failure: ${message}`,void 0)}}function toWorkerError(kind,message){return translateWorkerError(kind,message)}class WorkerHandle{proc;handshake;requestTimeoutMs;pending=new Map;nextRequestId=1;alive=!0;stderrTail="";handshakeSettled=!1;handshakeTimer=null;handshakeResolve=null;handshakeReject=null;streamCloseTimer=null;constructor(proc,requestTimeoutMs,startupTimeoutMs){if(this.proc=proc,this.requestTimeoutMs=requestTimeoutMs,this.handshake=new Promise((resolve,reject)=>{this.handshakeResolve=resolve,this.handshakeReject=reject}),this.handshakeTimer=setTimeout(()=>{this.failHandshake(new DecisionTimeoutError(`laya worker did not emit its handshake within startupTimeoutMs (${startupTimeoutMs})`,startupTimeoutMs))},startupTimeoutMs),proc.stdout!==null)this.pump(proc.stdout);if(proc.stderr!==null)this.collectStderr(proc.stderr);proc.exited.then((code)=>{this.alive=!1,this.failHandshake(this.exitError(code)),this.failAll(this.exitError(code))})}failAll(error51){this.alive=!1;for(let entry of this.pending.values())clearTimeout(entry.timer),entry.reject(error51);this.pending.clear()}end(){try{this.proc.endStdin()}catch{}}kill(){try{this.proc.kill()}catch{}}get isAlive(){return this.alive}armRequest(resolve,reject){let id=String(this.nextRequestId++),requestTimeoutMs=this.requestTimeoutMs,timer=setTimeout(()=>{this.pending.delete(id),reject(new DecisionTimeoutError(`laya worker request ${id} exceeded requestTimeoutMs (${requestTimeoutMs})`,requestTimeoutMs))},requestTimeoutMs);return this.pending.set(id,{resolve,reject,timer}),id}exitError(code){let tail=this.stderrTail.length>0?`: ${this.stderrTail}`:"",raw=`${this.stderrTail} (code ${code??"unknown"})`;if(raw.includes("No module named")||raw.includes("laya_mlx"))return new DecisionConfigError(`laya-mlx runtime is not importable: ${raw}; install with 'pip install laya-mlx'`,"LAYA_PYTHON");return new DecisionBackendError(`laya worker exited unexpectedly (code ${code??"unknown"})${tail}`,void 0)}failHandshake(error51){if(this.handshakeSettled)return;if(this.handshakeSettled=!0,this.handshakeTimer!==null)clearTimeout(this.handshakeTimer);this.handshakeReject?.(error51)}pump(stream){let decoder=new TextDecoder,buffer="";(async()=>{for await(let chunk of stream){buffer+=decoder.decode(chunk,{stream:!0});let newlineAt=buffer.indexOf(`
1822
1839
  `);while(newlineAt!==-1)this.onLine(buffer.slice(0,newlineAt)),buffer=buffer.slice(newlineAt+1),newlineAt=buffer.indexOf(`
1823
- `)}if(buffer+=decoder.decode(),buffer.trim().length>0)this.onLine(buffer);this.onStreamClosed()})().catch(()=>{this.failAll(new DecisionBackendError("laya worker output stream failed",void 0))})}onStreamClosed(){this.streamCloseTimer=setTimeout(()=>{this.streamCloseTimer=null,this.failAll(new DecisionBackendError("laya worker closed its output stream",void 0))},STREAM_CLOSE_GRACE_MS),this.proc.exited.then((code)=>{if(this.streamCloseTimer!==null)clearTimeout(this.streamCloseTimer),this.streamCloseTimer=null;this.failAll(this.exitError(code))})}onLine(line){if(!this.handshakeSettled){this.settleHandshake(line);return}let parsed;try{parsed=JSON.parse(line)}catch{this.failAll(new DecisionBackendError(`laya worker emitted an unparseable line: ${line.slice(0,200)}`,void 0)),this.kill();return}if(parsed.id===void 0)return;let entry=this.pending.get(String(parsed.id));if(entry===void 0)return;if(this.pending.delete(String(parsed.id)),clearTimeout(entry.timer),parsed.ok===!0&&parsed.result!==void 0){if(hasNonFiniteValues(parsed.result.answers)){entry.reject(new DecisionBackendError("laya worker returned non-finite model outputs; retry with dtype='float32'",void 0));return}entry.resolve(parsed.result);return}if(parsed.ok===!1){entry.reject(toWorkerError(parsed.error?.kind,parsed.error?.message??"unknown worker error"));return}entry.reject(new DecisionBackendError(`laya worker sent a malformed response for request ${String(parsed.id)}`,void 0))}settleHandshake(line){if(this.handshakeSettled)return;if(this.handshakeSettled=!0,this.handshakeTimer!==null)clearTimeout(this.handshakeTimer);let handshake;try{handshake=JSON.parse(line)}catch{this.handshakeReject?.(new DecisionBackendError(`laya worker handshake was not JSON: ${line.slice(0,200)}`,void 0));return}if(handshake.ready===!0){this.handshakeResolve?.(handshake);return}this.handshakeReject?.(toWorkerError(handshake.error?.kind??"config",handshake.error?.message??"worker reported it was not ready"))}collectStderr(stream){let decoder=new TextDecoder;(async()=>{for await(let chunk of stream)this.stderrTail=`${this.stderrTail}${decoder.decode(chunk,{stream:!0})}`.slice(-STDERR_TAIL_LIMIT)})().catch(()=>{})}}class LayaWorkerClient{pythonPath;args;cwd;startupTimeoutMs;requestTimeoutMs;forwardedEnv;executor;worker=null;chain=Promise.resolve();disposed=!1;constructor(options={},executor=nodeBunFactory2.createProcessExecutor()){validateHostPrerequisites(options.platform,options.arch);let packageRoot=joinPath2(import.meta.dir,"..");this.pythonPath=options.pythonPath??options.env?.LAYA_PYTHON??"python3",this.cwd=options.cwd??packageRoot,this.startupTimeoutMs=options.startupTimeoutMs??120000,this.requestTimeoutMs=options.requestTimeoutMs??30000,this.forwardedEnv=resolveForwardedEnv(options.env),this.executor=executor,this.args=[options.workerScript??joinPath2(packageRoot,"worker","laya_worker.py")],this.args.push("--module",options.module??"laya_mlx");let resolvedModelPath=options.modelPath??options.env?.LAYA_MODEL_PATH,resolvedCacheDir=options.cacheDir??options.env?.LAYA_CACHE_DIR,resolvedModelId=options.modelId??options.env?.LAYA_MODEL_ID??"convaiinnovations/laya-multilingual";if(resolvedModelPath!==void 0)this.args.push("--model-path",resolvedModelPath);else this.args.push("--model",resolvedModelId);if(options.revision!==void 0)this.args.push("--revision",options.revision);if(this.args.push("--dtype",options.dtype??"float16"),this.args.push("--batch-size",String(options.batchSize??16)),resolvedCacheDir!==void 0)this.args.push("--cache-dir",resolvedCacheDir)}ask(state,questions){let run=this.chain.then(()=>this.dispatch(state,questions));return this.chain=run.then(()=>{return},()=>{return}),run}dispose(){this.disposed=!0;let worker=this.worker;this.worker=null,worker?.end()}async dispatch(state,questions){if(this.disposed)throw new DecisionBackendError("laya worker client has been disposed",void 0);let worker=await this.ensureWorker();return new Promise((resolve,reject)=>{let id=worker.armRequest(resolve,reject);try{worker.proc.writeStdin(`${JSON.stringify({id,state,questions})}
1824
- `)}catch(cause){reject(new DecisionBackendError("laya worker rejected the request line",void 0,{cause}));return}if(!worker.isAlive)worker.failAll(new DecisionBackendError("laya worker exited before the request could be sent",void 0))})}async ensureWorker(){if(this.worker?.isAlive)return this.worker;this.worker=null;let worker=this.spawn();try{await worker.handshake}catch(error51){throw worker.kill(),error51}if(this.disposed)throw worker.kill(),new DecisionBackendError("laya worker client has been disposed",void 0);return this.worker=worker,worker}spawn(){let proc;try{proc=this.executor.runStreaming({command:this.pythonPath,args:this.args,env:this.forwardedEnv,envMode:"replace",label:"laya-worker",cwd:this.cwd})}catch(cause){throw new DecisionConfigError(`Python interpreter '${this.pythonPath}' is missing or not executable; install Python 3.10+ (e.g. via 'brew install python@3.11') or set LAYA_PYTHON`,"LAYA_PYTHON",{cause})}let handle=new WorkerHandle(proc,this.requestTimeoutMs,this.startupTimeoutMs);return proc.exited.then(()=>{if(this.worker===handle)this.worker=null}),handle}}function formatDesc3(desc3){if(typeof desc3==="string")return desc3;if(desc3===null||desc3===void 0)return"";return JSON.stringify(desc3)}function toWorkerQuestion(question){switch(question.kind){case"choice":return{type:"choice",instructions:formatDesc3(question.prompt),labels:question.labels,criteria:question.labels};case"score":return{type:"score",instructions:formatDesc3(question.prompt),rubric:question.rubric,criteria:question.rubric.map(formatDesc3)};case"noul":{let outcomes=question.yes===void 0&&question.no===void 0?void 0:{true:question.yes??null,false:question.no??null};return{type:"noul",instructions:formatDesc3(question.prompt),...outcomes!==void 0?{criteria:outcomes}:{}}}}}function mapWorkerAnswer(question,rawAnswer){if(!rawAnswer||typeof rawAnswer!=="object"||Array.isArray(rawAnswer))throw new DecisionBackendError("laya worker returned invalid answer: expected object",void 0);let raw=rawAnswer;switch(question.kind){case"choice":{let label=raw.choice??raw.label;if(typeof label!=="string"||label.length===0)throw new DecisionBackendError("laya worker returned invalid choice answer: missing label",void 0);let confidence=typeof raw.confidence==="number"?raw.confidence:0,probabilities=raw.probabilities??{};return{kind:"choice",label,confidence,probabilities}}case"score":{let confidence=typeof raw.confidence==="number"?raw.confidence:0,legend=Object.fromEntries(question.rubric.map((desc3,idx)=>[idx,desc3])),rawLegend=raw.legend,normalizedLegend={};if(rawLegend)for(let[k,v]of Object.entries(rawLegend))normalizedLegend[Number(k)]=v;let rawProbs=raw.probabilities??{},normalizedProbs={};for(let[k,v]of Object.entries(rawProbs))normalizedProbs[Number(k)]=v;let probEntries=Object.entries(normalizedProbs),score2;if(probEntries.length>0)score2=Number(probEntries.reduce((best,cur)=>cur[1]>best[1]?cur:best)[0]);else if(typeof raw.score==="number"&&Number.isFinite(raw.score))score2=Math.round(raw.score);else throw new DecisionBackendError("laya worker returned invalid score answer: no score or probabilities",void 0);return{kind:"score",score:score2,confidence,legend:rawLegend?normalizedLegend:legend,probabilities:normalizedProbs}}case"noul":{let probability=typeof raw.noul==="number"?raw.noul:raw.probability;if(typeof probability!=="number"||!Number.isFinite(probability))throw new DecisionBackendError("laya worker returned invalid noul answer: missing probability",void 0);return{kind:"noul",probability}}}}function createLayaDriver(options={}){let client=options.client??new LayaWorkerClient(options);return{name:"laya-local",async ask({state,questions}){if(!questions||typeof questions!=="object"||Object.keys(questions).length===0)throw new DecisionRequestError("expected a nonempty question map",void 0,void 0);let stateStr=typeof state==="string"?state:state===null||state===void 0?"":JSON.stringify(state),workerQuestions=Object.fromEntries(Object.entries(questions).map(([name,q2])=>[name,toWorkerQuestion(q2)])),result=await client.ask(stateStr,workerQuestions);if(!result?.answers||typeof result.answers!=="object"||Array.isArray(result.answers))throw new DecisionBackendError("laya worker returned invalid result: expected answers map",void 0);return Object.fromEntries(Object.entries(questions).map(([name,q2])=>{let raw=result.answers[name];if(raw===void 0)throw new DecisionBackendError(`laya worker missing answer for question '${name}'`,void 0);return[name,mapWorkerAnswer(q2,raw)]}))}}}var NAME_PATTERN=/^[a-z][a-z0-9-]*$/;class DecisionMakerRegistry{entries=new Map;constructor(options){if(options?.builtins===!1)return;let{makerOptions={},driverOptions={}}=options?.builtins??{};this.register("typesafe",()=>createDecisionMaker({backend:"typesafe",...makerOptions})),this.register("fm-local",()=>createDecisionMaker({driver:createFmDriver(driverOptions["fm-local"]??{}),...makerOptions})),this.register("laya-local",()=>createDecisionMaker({driver:createLayaDriver(driverOptions["laya-local"]??{}),...makerOptions}))}register(name,source){if(!NAME_PATTERN.test(name))throw new DecisionRegistryError(`Invalid decision maker name '${name}' — must match ${NAME_PATTERN}.`);if(this.entries.has(name))throw new DecisionRegistryError(`Decision maker '${name}' is already registered.`);return this.entries.set(name,{source}),this}has(name){return this.entries.has(name)}names(){return[...this.entries.keys()]}async resolve(name){let entry=this.entries.get(name);if(entry===void 0)throw new UnknownDecisionMakerError(`Unknown decision maker '${name}' — register it or use a built-in.`,name);if(entry.maker)return entry.maker;if(!entry.pending){let run=(async()=>{let maker=typeof entry.source==="function"?await entry.source():entry.source;return entry.maker=maker,maker})();run.catch(()=>{if(entry.pending===run)entry.pending=void 0}),entry.pending=run}return await entry.pending}}var DEFAULT_MIN_CONFIDENCE=0.7,DEFAULT_MAKER="typesafe";function effectiveMinConfidence(definition,defaults){return definition.minConfidence??defaults.minConfidence??DEFAULT_MIN_CONFIDENCE}function observedAnswer(answer){switch(answer.kind){case"choice":return{confidence:answer.confidence};case"score":return{confidence:answer.confidence};case"noul":return{confidence:Math.max(answer.probability,1-answer.probability),probability:answer.probability}}}function buildJevQuestion(question){switch(question.type){case"choice":return q.choice(question.instructions,{...question.criteria});case"score":return q.score(question.instructions,question.criteria);case"noul":{let outcomes=question.criteria;return q.noul(question.instructions,outcomes!==void 0?{yes:outcomes.true,no:outcomes.false}:void 0)}}}class DecisionHub{registry;decisions=new Map;defaultMaker;now;constructor(options={}){if(this.registry=options.registry??new DecisionMakerRegistry,this.defaultMaker=options.defaultMaker??DEFAULT_MAKER,this.now=options.now??Date.now,!this.registry.has(this.defaultMaker))throw new UnknownDecisionMakerError(`Default decision maker '${this.defaultMaker}' is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,this.defaultMaker)}load(catalog){let defaultsMaker=catalog.defaults.maker;if(defaultsMaker!==void 0&&!this.registry.has(defaultsMaker))throw new DecisionCatalogError(`Catalog "${catalog.source}" defaults.maker '${defaultsMaker}' is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,catalog.source,void 0,"maker");let staged=[];for(let[id,definition]of Object.entries(catalog.decisions)){let existing=this.decisions.get(id);if(existing!==void 0)throw new DecisionCatalogError(`Decision id "${id}" in catalog "${catalog.source}" duplicates the decision loaded from "${existing.definition.source}"`,catalog.source,id,"id");if(definition.maker!==void 0&&!this.registry.has(definition.maker))throw new DecisionCatalogError(`Decision "${id}" in catalog "${catalog.source}" names maker '${definition.maker}' that is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,catalog.source,id,"maker");staged.push({definition,defaults:catalog.defaults})}for(let entry of staged)this.decisions.set(entry.definition.id,entry)}async loadFile(path8,options={}){this.load(await loadDecisionCatalog(path8,options))}list(){return[...this.decisions.values()].map(({definition})=>({id:definition.id,type:definition.type,...definition.description!==void 0?{description:definition.description}:{},source:definition.source}))}describe(id){let{definition,defaults}=this.mustGet(id),model=definition.model??defaults.model;return{id:definition.id,type:definition.type,...definition.description!==void 0?{description:definition.description}:{},source:definition.source,parameters:definition.parameters,criteria:definition.criteria,fallback:definition.fallback,minConfidence:effectiveMinConfidence(definition,defaults),maker:this.effectiveMakerName(definition,defaults),...model!==void 0?{model}:{}}}async decide(id,input={},options={}){let start=this.now(),{definition,defaults}=this.mustGet(id),params=resolveDecisionInput(definition,input),makerName=options.maker??definition.maker??defaults.maker??this.defaultMaker;if(!this.registry.has(makerName))throw new UnknownDecisionMakerError(`Decision "${id}" was asked on maker '${makerName}' that is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,makerName);let state=buildState(definition,params),model=definition.model??defaults.model,request={state,questions:{[definition.id]:buildJevQuestion(renderQuestion(definition,params))},...model!==void 0?{model}:{}},inAsk=!1;try{let maker=await this.registry.resolve(makerName);inAsk=!0;let answer=(await maker.ask(request))[definition.id];if(answer===void 0||answer.kind!==definition.type)return this.fallbackResult(definition,makerName,"error",null,start);let observed=observedAnswer(answer);if(observed.confidence<effectiveMinConfidence(definition,defaults))return this.fallbackResult(definition,makerName,"low-confidence",observed.confidence,start,observed.probability);let base2={id:definition.id,confidence:observed.confidence,source:"model",reason:"accepted",maker:makerName,durationMs:this.now()-start};switch(answer.kind){case"choice":return{...base2,type:"choice",value:answer.label};case"score":return{...base2,type:"score",value:answer.score};case"noul":return{...base2,type:"noul",value:answer.probability>=0.5,probability:answer.probability}}}catch(error51){let reason=!inAsk||error51 instanceof DecisionConfigError?"no-backend":error51 instanceof DecisionTimeoutError?"timeout":"error";return this.fallbackResult(definition,makerName,reason,null,start)}}effectiveMakerName(definition,defaults){return definition.maker??defaults.maker??this.defaultMaker}mustGet(id){let registered=this.decisions.get(id);if(registered===void 0){let loaded=[...this.decisions.keys()];throw new UnknownDecisionError(`Unknown decision "${id}" — loaded decisions: ${loaded.length>0?loaded.join(", "):"(none)"}`,id)}return registered}fallbackResult(definition,makerName,reason,confidence,start,probability){let base2={id:definition.id,confidence,source:"default",reason,maker:makerName,durationMs:this.now()-start};switch(definition.type){case"choice":return{...base2,type:"choice",value:definition.fallback};case"score":return{...base2,type:"score",value:definition.fallback};case"noul":return{...base2,type:"noul",value:definition.fallback,probability:probability??null}}}}import{join as join4,resolve as resolve2}from"node:path";init_dist6();init_dist();init_dist2();init_zod();import{existsSync as existsSync3,statSync as statSync4}from"node:fs";import{homedir}from"node:os";import{dirname as dirname4,join as join3,resolve}from"node:path";import{fileURLToPath as fileURLToPath3}from"node:url";import{existsSync as existsSync2,readdirSync as readdirSync2,statSync as statSync3}from"node:fs";import{dirname as dirname2,join}from"node:path";var BUNDLED_CONFIG_DIRS=["config","spur-cli/config"],cachedRoot;function bundledConfigRoot(){if(cachedRoot!==void 0)return cachedRoot;return cachedRoot=resolveBundledConfigRoot(import.meta.dirname,process.execPath),cachedRoot}function resolveBundledConfigRoot(moduleDir,execPath2){let dir=moduleDir;while(!0){for(let name of BUNDLED_CONFIG_DIRS){let candidate=join(dir,name);if(isBundledConfigDir(candidate))return candidate}let parent=dirname2(dir);if(parent===dir)break;dir=parent}let executableConfig=join(dirname2(execPath2),"config");return isBundledConfigDir(executableConfig)?executableConfig:null}function isBundledConfigDir(candidate){return existsSync2(candidate)&&statSync3(candidate).isDirectory()&&existsSync2(join(candidate,"rules"))&&existsSync2(join(candidate,"workflows"))}init_dist2();import{chmod,lstat,open,readFile,rename,stat,unlink,writeFile}from"node:fs/promises";import{basename,dirname as dirname3,join as join2}from"node:path";class ExecutorUpdateError extends Error{code;constructor(code,message){super(message);this.code=code;this.name="ExecutorUpdateError"}}var LOCK_RETRY_MS=50,LOCK_MAX_ATTEMPTS=40;async function setExecutorAvailability(request){if(request.executor.length===0)throw new ExecutorUpdateError("INVALID_CONFIG","executor name must be a non-empty string");assertDisabledArgument(request.disabled);let projectPath=join2(request.projectRoot,".spur","config.yaml"),targetPath;if(request.layer==="project")targetPath=projectPath;else{let layers=resolveConfigLayers(request.projectRoot);if(layers.project!==void 0&&await declaresExecutor(layers.project,request.executor))targetPath=layers.project;else if(layers.global!==void 0)targetPath=layers.global;else if(layers.project!==void 0)return{status:"unchanged",reason:"missing-executor"};else return{status:"unchanged",reason:"missing-file"}}return applyExecutorAvailabilityAtPath(targetPath,request.executor,request.disabled)}async function getDeclaredExecutorNames(configPath){let content;try{content=await readFile(configPath,"utf8")}catch{return new Set}let doc2=$parseDocument(content);if(doc2.errors.length>0)return new Set;let executors=doc2.get("agent");if(!$isMap(executors))return new Set;let seq=executors.get("executors");if(!$isSeq(seq))return new Set;let names=new Set;for(let item of seq.items){if($isAlias(item)||!$isMap(item))continue;let nameNode=item.get("name",!0);if($isScalar(nameNode)&&typeof nameNode.value==="string"&&nameNode.value.length>0)names.add(nameNode.value)}return names}async function declaresExecutor(configPath,executorName){return(await getDeclaredExecutorNames(configPath)).has(executorName)}async function applyExecutorAvailabilityAtPath(configPath,executorName,disabled){let original;try{original=await stat(configPath)}catch{return{status:"unchanged",reason:"missing-file"}}if((await lstat(configPath)).isSymbolicLink())throw new ExecutorUpdateError("INVALID_CONFIG",`config is a symlink — refusing to edit through it: ${configPath}`);return withLock(`${configPath}.lock`,async()=>{let content=await readFile(configPath,"utf8"),baseline=await stat(configPath),doc2=$parseDocument(content);if(doc2.errors.length>0)throw new ExecutorUpdateError("INVALID_CONFIG",`config is not valid YAML: ${doc2.errors[0]?.message??"unknown parse error"}`);let agent=doc2.get("agent");if(!$isMap(agent))return{status:"unchanged",reason:"missing-executors"};let executors=agent.get("executors");if(!$isSeq(executors))return{status:"unchanged",reason:"missing-executors"};let target,seen=new Map;for(let item of executors.items){if($isAlias(item)||!$isMap(item))throw new ExecutorUpdateError("INVALID_CONFIG","executor entries must be inline mappings — aliases and merge keys are not supported by the updater");for(let pair of item.items)if($isScalar(pair.key)&&String(pair.key.value)==="<<")throw new ExecutorUpdateError("INVALID_CONFIG","merge keys in executor entries are not supported by the updater — flatten the entry first");let nameNode=item.get("name",!0);if(!$isScalar(nameNode)||typeof nameNode.value!=="string"||nameNode.value.length===0)continue;let name=nameNode.value;if(seen.get(name)!==void 0)throw new ExecutorUpdateError("INVALID_CONFIG",`duplicate executor name "${name}" in config — ambiguous update target`);if(seen.set(name,item),name===executorName)target=item}if(target===void 0)return{status:"unchanged",reason:"missing-executor"};let current=target.get("disabled",!0);if(disabledMatches(current,disabled))return{status:"unchanged",reason:"already-set"};target.set("disabled",typeof disabled==="boolean"?disabled:{owner:disabled.owner,since:disabled.since,reason:disabled.reason});let serialized=String(doc2),tmpPath=join2(dirname3(configPath),`.${basename(configPath)}.tmp-${process.pid}`);try{let latest=await stat(configPath);if(latest.mtimeMs!==baseline.mtimeMs||latest.size!==baseline.size||latest.ino!==baseline.ino)throw new ExecutorUpdateError("CONFIG_CONFLICT",`config changed on disk while the update was prepared — re-run to reapply: ${configPath}`);let backupPath=`${configPath}.bak`;await writeFile(backupPath,content,{mode:original.mode&511}),await chmod(backupPath,original.mode&511);let tmp=await open(tmpPath,"wx",original.mode&511);try{await tmp.writeFile(serialized,"utf8"),await tmp.sync()}finally{await tmp.close()}await rename(tmpPath,configPath),await chmod(configPath,original.mode&511)}catch(error51){try{await unlink(tmpPath)}catch{}if(error51 instanceof ExecutorUpdateError)throw error51;throw new ExecutorUpdateError("CONFIG_WRITE_FAILED",`failed to commit config update: ${error51 instanceof Error?error51.message:String(error51)}`)}return invalidateSpurConfig(configPath),{status:"updated"}})}function assertDisabledArgument(disabled){if(typeof disabled==="boolean")return;if(disabled.owner!=="quota"&&disabled.owner!=="probe")throw new ExecutorUpdateError("INVALID_CONFIG",`disabled.owner must be "quota" or "probe", received ${JSON.stringify(disabled.owner)}`);if(typeof disabled.since!=="string"||!isRfc3339Timestamp(disabled.since))throw new ExecutorUpdateError("INVALID_CONFIG","disabled.since must be an RFC 3339 timestamp string");if(typeof disabled.reason!=="string"||disabled.reason.length===0)throw new ExecutorUpdateError("INVALID_CONFIG","disabled.reason must be a non-empty string")}function disabledMatches(current,desired){if(typeof desired==="boolean")return current!==void 0&&$isScalar(current)&&current.value===desired;if(current===void 0||!$isMap(current))return!1;return current.get("owner")===desired.owner&&current.get("since")===desired.since&&current.get("reason")===desired.reason}async function withLock(lockPath,fn){let holder;for(let attempt=0;attempt<LOCK_MAX_ATTEMPTS&&holder===void 0;attempt++)try{holder=await open(lockPath,"wx")}catch{if(!await reclaimIfDead(lockPath)){if(attempt===LOCK_MAX_ATTEMPTS-1)throw new ExecutorUpdateError("CONFIG_WRITE_FAILED",`config update lock is held by a live process: ${lockPath}`);await new Promise((resolve)=>setTimeout(resolve,LOCK_RETRY_MS))}}if(holder===void 0)throw new ExecutorUpdateError("CONFIG_WRITE_FAILED",`could not acquire config update lock: ${lockPath}`);try{return await holder.writeFile(String(process.pid),"utf8"),await fn()}finally{await holder.close();try{await unlink(lockPath)}catch{}}}async function reclaimIfDead(lockPath){let pid;try{pid=Number.parseInt(await readFile(lockPath,"utf8"),10)}catch{return!1}if(!Number.isFinite(pid))return!1;try{return process.kill(pid,0),!1}catch{return await unlink(lockPath).catch(()=>{}),!0}}var SPUR_CONFIG_DIR=".spur",SPUR_CONFIG_FILE="config.yaml",GLOBAL_CONFIG_FILE=join3(homedir(),".config","spur","config.yaml"),LOADER_DIR=dirname4(fileURLToPath3(import.meta.url)),nextEmbeddedSchemasId=1,embeddedSchemasIds=new WeakMap,spurConfigCache=new Map;function embeddedSchemasId(embeddedSchemas){if(embeddedSchemas===void 0)return"disk";let id=embeddedSchemasIds.get(embeddedSchemas);if(id===void 0)id=nextEmbeddedSchemasId,nextEmbeddedSchemasId+=1,embeddedSchemasIds.set(embeddedSchemas,id);return`embedded:${id}`}function cacheKey(configPath,opts,validateJsonSchema2){return[configPath,validateJsonSchema2?"schema":"zod",opts?.schemaManifestSpecifier??"@gobing-ai/spur/package.json",embeddedSchemasId(opts?.embeddedSchemas)].join("\x00")}function resolveSchemaSpecifier(specifier,manifestSpecifier){if(specifier===manifestSpecifier){let workspaceManifest=join3(LOADER_DIR,"..","..","..","apps","cli","package.json");if(existsSync3(workspaceManifest))return workspaceManifest}try{let resolved=import.meta.resolve(specifier);return resolved.startsWith("file:")?fileURLToPath3(resolved):resolved}catch{if(specifier===manifestSpecifier&&manifestSpecifier==="@gobing-ai/spur/package.json"){let manifest=join3(dirname4(process.execPath),"package.json");if(existsSync3(manifest)&&existsSync3(join3(dirname4(manifest),"schemas")))return manifest}return specifier}}function resolveConfigLayers(cwd){let layers={};if(!(cwd===void 0&&getEnvVar("SPUR_SKIP_PROJECT_CONFIG")==="true")){let projectConfig=join3(cwd??process.cwd(),SPUR_CONFIG_DIR,SPUR_CONFIG_FILE);if(existsSync3(projectConfig))layers.project=projectConfig}if(getEnvVar("SPUR_SKIP_GLOBAL_CONFIG")!=="true"&&existsSync3(GLOBAL_CONFIG_FILE))layers.global=GLOBAL_CONFIG_FILE;return layers}var EMBEDDED_PREFIX="\x00embedded-spur";function makeEmbeddedReader(embeddedSchemas){return async function(path8){if(path8.startsWith(EMBEDDED_PREFIX)){let subpath=path8.slice(EMBEDDED_PREFIX.length+1),embedded=embeddedSchemas.get(subpath);if(embedded===void 0)throw Error(`No embedded schema registered for "${subpath}".`);return embedded}return createNodeFileSystem2().readFile(path8)}}async function loadSpurConfig(cwd,opts){let layers=resolveConfigLayers(cwd),projectRoot=resolve(cwd??process.cwd());if(assertNoLegacyFleetFile(projectRoot,layers.project),layers.global===void 0&&layers.project===void 0)return spurConfigSchema.parse({});let validateJsonSchema2=opts?.validateJsonSchema??getEnvVar("NODE_ENV")!=="test",mtimeOf=(path8)=>path8!==void 0?String(statSync4(path8).mtimeMs):"-",key=[cacheKey(layers.project??layers.global??"",opts,validateJsonSchema2),layers.global??"-",mtimeOf(layers.project),mtimeOf(layers.global)].join("\x00"),cached2=spurConfigCache.get(key);if(cached2!==void 0)return cached2;let promise2=loadMergedConfig(layers,opts,validateJsonSchema2);return spurConfigCache.set(key,promise2),promise2.catch(()=>spurConfigCache.delete(key)),promise2}async function resolveDecideDecisionMakerEnabled(cwd,opts){return(await loadSpurConfig(cwd,opts)).workflows?.decideDecisionMaker===!0}function invalidateSpurConfig(configPath){if(configPath===void 0){spurConfigCache.clear();return}for(let key of spurConfigCache.keys())if(key.startsWith(`${configPath}\x00`)||key.includes(`\x00${configPath}\x00`))spurConfigCache.delete(key)}function assertNoRetiredTeamKey(parsed,layerPath,replacementFile){let agent=parsed.agent;if(!isPlainObject5(agent)||!("team"in agent))return;throw Error(`agent.team is no longer supported (${layerPath??"the merged config"}). Declare the project fleet under agent.fleet in ${replacementFile}.`)}function assertNoGlobalFleetSection(globalRaw,layerPath,projectFile){let agent=globalRaw.agent;if(!isPlainObject5(agent)||!("fleet"in agent))return;throw Error(`agent.fleet is not supported in the global config (${layerPath??SPUR_CONFIG_FILE}). Declare the project fleet under agent.fleet in ${projectFile} — the flock belongs to a project, not to the machine.`)}function assertNoLegacyFleetFile(projectRoot,projectConfigPath){let candidates=new Set([join3(projectRoot,SPUR_CONFIG_DIR,"fleet.json")]);if(projectConfigPath!==void 0)candidates.add(join3(dirname4(projectConfigPath),"fleet.json"));for(let legacyFile of candidates){if(!existsSync3(legacyFile))continue;throw Error(`The retired fleet declaration ${legacyFile} still exists. Move its members and orchestrator under agent.fleet in the project config, then delete the file.`)}}function projectConfigReplacement(layers){return layers.project??join3(SPUR_CONFIG_DIR,SPUR_CONFIG_FILE)}function schemaValidationContext(opts){let embeddedSchemas=opts?.embeddedSchemas,manifestSpecifier=opts?.schemaManifestSpecifier??"@gobing-ai/spur/package.json",resolve2=(specifier)=>{if(embeddedSchemas!==void 0&&specifier===manifestSpecifier)return`${EMBEDDED_PREFIX}/package.json`;return resolveSchemaSpecifier(specifier,manifestSpecifier)},fileSystem=embeddedSchemas?{readFile:makeEmbeddedReader(embeddedSchemas)}:void 0;return{resolve:resolve2,...fileSystem!==void 0?{fileSystem}:{}}}async function readRawYamlLayer(configPath,kind){let nodeFs=createNodeFileSystem2(),text3;try{text3=await nodeFs.readFile(nodeFs.resolve(configPath))}catch(error51){throw Error(`Failed to read ${kind} config ${configPath}: ${error51.message}`)}try{return $parse(text3)??{}}catch(error51){throw Error(`Failed to parse ${kind} config ${configPath}: ${error51.message}`)}}function isPlainObject5(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function executorNameOf(item){return isPlainObject5(item)&&typeof item.name==="string"?item.name:void 0}function isConcatPath(segments){return segments.length===2&&segments[0]==="rules"&&segments[1]==="paths"||segments.length===2&&segments[0]==="workflows"&&segments[1]==="paths"}function byKeyIdentityFor(segments){if(segments.length===2&&segments[0]==="agent"&&segments[1]==="executors")return executorNameOf;return}function concatUnique(globalItems,projectItems){let out=[...globalItems];for(let item of projectItems)if(!out.includes(item))out.push(item);return out}function mergeByKeyIdentity(globalItems,projectItems,identityOf,segments){let merged=[],indexByIdentity=new Map;for(let item of globalItems){let identity5=identityOf(item);if(identity5!==void 0&&!indexByIdentity.has(identity5))indexByIdentity.set(identity5,merged.length);merged.push(item)}let matchedProjectIdentities=new Set;for(let item of projectItems){let identity5=identityOf(item),existing=identity5===void 0||matchedProjectIdentities.has(identity5)?void 0:indexByIdentity.get(identity5);if(existing===void 0){merged.push(item);continue}if(identity5!==void 0)matchedProjectIdentities.add(identity5);let base2=merged[existing];merged[existing]=isPlainObject5(base2)&&isPlainObject5(item)?mergeDeep(base2,item,[...segments,existing]):item}return merged}function mergeDeep(globalValue,projectValue,segments){if(isPlainObject5(globalValue)&&isPlainObject5(projectValue)){let out={...globalValue};for(let[key,projectItem]of Object.entries(projectValue))out[key]=key in out?mergeDeep(out[key],projectItem,[...segments,key]):projectItem;return out}if(Array.isArray(globalValue)&&Array.isArray(projectValue)){if(isConcatPath(segments))return concatUnique(globalValue,projectValue);let identityOf=byKeyIdentityFor(segments);if(identityOf!==void 0)return mergeByKeyIdentity(globalValue,projectValue,identityOf,segments);return projectValue}return projectValue}function mergeSpurConfigLayers(globalRaw,projectRaw){return mergeDeep(globalRaw,projectRaw,[])}function formatZodPath(path8){return path8.map((segment,index2)=>typeof segment==="number"?`[${segment}]`:index2===0?segment:`.${segment}`).join("")}function parseViolationPath(path8){let segments=[];for(let part of path8.split(".")){let bracket=part.indexOf("["),key=bracket===-1?part:part.slice(0,bracket);if(key!=="")segments.push(key);if(bracket!==-1)for(let match of part.slice(bracket).matchAll(/\[(\d+)\]/g))segments.push(Number(match[1]))}return segments}function findItemByIdentity(node,identityOf,identity5){return Array.isArray(node)?node.find((entry)=>identityOf(entry)===identity5):void 0}function describeIssueProvenance(issuePath,merged,globalRaw,projectRaw){let g2=globalRaw,p=projectRaw,m=merged,segments=[],parentG=globalRaw,parentP=projectRaw,identityPrefix="";for(let segment of issuePath){if(parentG=g2,parentP=p,segments=[...segments,segment],typeof segment==="number"){let mergedItem=Array.isArray(m)?m[segment]:void 0,identityOf=byKeyIdentityFor(segments.slice(0,-1));if(identityOf!==void 0&&mergedItem!==void 0){let identity5=identityOf(mergedItem);if(identity5!==void 0)identityPrefix=`executor "${identity5}" `,g2=findItemByIdentity(g2,identityOf,identity5),p=findItemByIdentity(p,identityOf,identity5)}else g2=Array.isArray(g2)&&segment<g2.length?g2[segment]:void 0,p=Array.isArray(p)&&segment<p.length?p[segment]:void 0;m=mergedItem;continue}g2=isPlainObject5(g2)?g2[segment]:void 0,p=isPlainObject5(p)?p[segment]:void 0,m=isPlainObject5(m)?m[segment]:void 0}let label;if(g2!==void 0&&p!==void 0)label="set in both layers (project value wins)";else if(g2!==void 0)label="from global layer";else if(p!==void 0)label="from project layer";else if(parentP!==void 0&&parentG===void 0)label="from project layer (key absent there)";else if(parentG!==void 0&&parentP===void 0)label="from global layer (key absent there)";else label="missing in both layers";return`${identityPrefix}${label}`}function parseMergedWithProvenance(merged,globalRaw,projectRaw,layers){try{return spurConfigSchema.parse(merged)}catch(error51){if(!(error51 instanceof ZodError))throw error51;let details=error51.issues.map((issue2)=>{let path8=issue2.path.filter((segment)=>typeof segment!=="symbol");return` ${formatZodPath(path8)}: ${issue2.message} (${describeIssueProvenance(path8,merged,globalRaw,projectRaw)})`}).join(`
1840
+ `)}if(buffer+=decoder.decode(),buffer.trim().length>0)this.onLine(buffer);this.onStreamClosed()})().catch(()=>{this.failAll(new DecisionBackendError("laya worker output stream failed",void 0))})}onStreamClosed(){this.streamCloseTimer=setTimeout(()=>{this.streamCloseTimer=null,this.failAll(new DecisionBackendError("laya worker closed its output stream",void 0))},STREAM_CLOSE_GRACE_MS),this.proc.exited.then((code)=>{if(this.streamCloseTimer!==null)clearTimeout(this.streamCloseTimer),this.streamCloseTimer=null;this.failAll(this.exitError(code))})}onLine(line){if(!this.handshakeSettled){this.settleHandshake(line);return}let parsed;try{parsed=JSON.parse(line)}catch{this.failAll(new DecisionBackendError(`laya worker emitted an unparseable line: ${line.slice(0,200)}`,void 0)),this.kill();return}if(parsed.id===void 0)return;let entry=this.pending.get(String(parsed.id));if(entry===void 0)return;if(this.pending.delete(String(parsed.id)),clearTimeout(entry.timer),parsed.ok===!0&&parsed.result!==void 0){if(hasNonFiniteValues(parsed.result.answers)){entry.reject(new DecisionBackendError("laya worker returned non-finite model outputs; retry with dtype='float32'",void 0));return}entry.resolve(parsed.result);return}if(parsed.ok===!1){entry.reject(toWorkerError(parsed.error?.kind,parsed.error?.message??"unknown worker error"));return}entry.reject(new DecisionBackendError(`laya worker sent a malformed response for request ${String(parsed.id)}`,void 0))}settleHandshake(line){if(this.handshakeSettled)return;if(this.handshakeSettled=!0,this.handshakeTimer!==null)clearTimeout(this.handshakeTimer);let handshake;try{handshake=JSON.parse(line)}catch{this.handshakeReject?.(new DecisionBackendError(`laya worker handshake was not JSON: ${line.slice(0,200)}`,void 0));return}if(handshake.ready===!0){this.handshakeResolve?.(handshake);return}this.handshakeReject?.(toWorkerError(handshake.error?.kind??"config",handshake.error?.message??"worker reported it was not ready"))}collectStderr(stream){let decoder=new TextDecoder;(async()=>{for await(let chunk of stream)this.stderrTail=`${this.stderrTail}${decoder.decode(chunk,{stream:!0})}`.slice(-STDERR_TAIL_LIMIT)})().catch(()=>{})}}function resolvePythonPath(options,packageRoot,cwd,fileSystem=nodeBunFactory2.createFileSystem()){if(options.pythonPath!==void 0)return options.pythonPath;if(options.env?.LAYA_PYTHON!==void 0&&options.env.LAYA_PYTHON.length>0)return options.env.LAYA_PYTHON;let home=getHomeDir(),candidates=[home?joinPath2(home,".local","share","uv","tools","laya-mlx","bin","python"):void 0,home?joinPath2(home,".virtualenvs","laya-mlx","bin","python"):void 0,joinPath2(packageRoot,"..","..","vendors","laya-mlx",".venv","bin","python"),joinPath2(cwd,".venv","bin","python")].filter((p)=>p!==void 0);for(let candidate of candidates)if(fileSystem.exists(candidate))return candidate;return"python3"}class LayaWorkerClient{pythonPath;args;cwd;startupTimeoutMs;requestTimeoutMs;forwardedEnv;executor;worker=null;chain=Promise.resolve();disposed=!1;constructor(options={},executor=nodeBunFactory2.createProcessExecutor()){validateHostPrerequisites(options.platform,options.arch);let packageRoot=joinPath2(import.meta.dir,"..");this.cwd=options.cwd??packageRoot,this.pythonPath=resolvePythonPath(options,packageRoot,this.cwd),this.startupTimeoutMs=options.startupTimeoutMs??120000,this.requestTimeoutMs=options.requestTimeoutMs??30000,this.forwardedEnv=resolveForwardedEnv(options.env),this.executor=executor,this.args=[options.workerScript??joinPath2(packageRoot,"worker","laya_worker.py")],this.args.push("--module",options.module??"laya_mlx");let resolvedModelPath=options.modelPath??options.env?.LAYA_MODEL_PATH,resolvedCacheDir=options.cacheDir??options.env?.LAYA_CACHE_DIR,resolvedModelId=options.modelId??options.env?.LAYA_MODEL_ID??DEFAULT_LAYA_MODEL_ID;if(resolvedModelPath!==void 0)this.args.push("--model-path",resolvedModelPath);else this.args.push("--model",resolvedModelId);if(options.revision!==void 0)this.args.push("--revision",options.revision);if(this.args.push("--dtype",options.dtype??"float16"),this.args.push("--batch-size",String(options.batchSize??16)),resolvedCacheDir!==void 0)this.args.push("--cache-dir",resolvedCacheDir)}ask(state,questions){let run=this.chain.then(()=>this.dispatch(state,questions));return this.chain=run.then(()=>{return},()=>{return}),run}dispose(){this.disposed=!0;let worker=this.worker;this.worker=null,worker?.end()}async dispatch(state,questions){if(this.disposed)throw new DecisionBackendError("laya worker client has been disposed",void 0);let worker=await this.ensureWorker();return new Promise((resolve,reject)=>{let id=worker.armRequest(resolve,reject);try{worker.proc.writeStdin(`${JSON.stringify({id,state,questions})}
1841
+ `)}catch(cause){reject(new DecisionBackendError("laya worker rejected the request line",void 0,{cause}));return}if(!worker.isAlive)worker.failAll(new DecisionBackendError("laya worker exited before the request could be sent",void 0))})}async ensureWorker(){if(this.worker?.isAlive)return this.worker;this.worker=null;let worker=this.spawn();try{await worker.handshake}catch(error51){throw worker.kill(),error51}if(this.disposed)throw worker.kill(),new DecisionBackendError("laya worker client has been disposed",void 0);return this.worker=worker,worker}spawn(){let proc;try{proc=this.executor.runStreaming({command:this.pythonPath,args:this.args,env:this.forwardedEnv,envMode:"replace",label:"laya-worker",cwd:this.cwd})}catch(cause){throw new DecisionConfigError(`Python interpreter '${this.pythonPath}' is missing or not executable; install Python 3.10+ (e.g. via 'brew install python@3.11') or set LAYA_PYTHON`,"LAYA_PYTHON",{cause})}let handle=new WorkerHandle(proc,this.requestTimeoutMs,this.startupTimeoutMs);return proc.exited.then(()=>{if(this.worker===handle)this.worker=null}),handle}}var defaultLoader=async(target,opts)=>{let{load:load3}=await Promise.resolve().then(() => (init_dist22(),exports_dist6));return load3(target,opts)};class LayaNativeClient{agent=null;loading=null;chain=Promise.resolve();disposed=!1;target;loadOptions;loader;constructor(options={}){if(validateHostPrerequisites(options.platform,options.arch),(options.cacheDir??options.env?.LAYA_CACHE_DIR)!==void 0)throw new DecisionConfigError("laya core 'mlx-native' cannot honor cacheDir/LAYA_CACHE_DIR; set HF_HUB_CACHE for the process or use core 'mlx-python'","LAYA_CACHE_DIR");if(options.dtype==="bfloat16")throw new DecisionConfigError("laya core 'mlx-native' supports dtype 'float16' or 'float32', not 'bfloat16'","LAYA_DTYPE");this.target=options.modelPath??options.env?.LAYA_MODEL_PATH??options.modelId??options.env?.LAYA_MODEL_ID??DEFAULT_LAYA_MODEL_ID,this.loadOptions={backend:"mlx",dtype:options.dtype==="float32"?"f32":"f16",batchSize:options.batchSize??16,...options.revision!==void 0?{revision:options.revision}:{},...options.env?.HF_TOKEN?{token:options.env.HF_TOKEN}:{},warn:()=>{}},this.loader=options.loader??defaultLoader}get model(){return this.target}async warm(){await this.ensureAgent()}ask(state,questions){let run=this.chain.then(()=>this.dispatch(state,questions));return this.chain=run.then(()=>{return},()=>{return}),run}dispose(){this.disposed=!0,this.agent?.dispose(),this.agent=null}async dispatch(state,questions){let agent=await this.ensureAgent(),result;try{result=await agent.predict(state,questions)}catch(cause){let message=cause instanceof Error?cause.message:String(cause);throw new DecisionBackendError(`laya native inference failed: ${message}`,void 0,{cause})}if(hasNonFiniteValues(result.answers))throw new DecisionBackendError("laya native returned non-finite model outputs; retry with dtype='float32'",void 0);return result}ensureAgent(){if(this.disposed)return Promise.reject(new DecisionBackendError("laya native client has been disposed",void 0));if(this.agent)return Promise.resolve(this.agent);return this.loading??=this.loader(this.target,this.loadOptions).then((agent)=>{if(this.loading=null,this.disposed)throw agent.dispose(),new DecisionBackendError("laya native client has been disposed",void 0);return this.agent=agent,agent},(cause)=>{this.loading=null;let message=cause instanceof Error?cause.message:String(cause);throw new DecisionConfigError(`laya core 'mlx-native' failed to load '${this.target}': ${message}`,"LAYA_CORE",{cause})}),this.loading}}var LAYA_CORES=["mlx-python","mlx-native","auto"];function resolveLayaCore(options={}){let raw=options.core??(options.env?.LAYA_CORE||void 0)??"mlx-python";if(!LAYA_CORES.includes(raw))throw new DecisionConfigError(`Unknown laya core '${raw}'; expected one of ${LAYA_CORES.join(", ")}`,"LAYA_CORE");return raw}class AutoLayaClient{options;active=null;resolved=null;disposed=!1;constructor(options){this.options=options}async ask(state,questions){return this.active??=this.select(),(await this.active).ask(state,questions)}dispose(){this.disposed=!0,this.resolved?.dispose()}async select(){let chosen;try{let native=new LayaNativeClient({...this.options,loader:this.options.nativeLoader});try{await native.warm()}catch(error51){throw native.dispose(),error51}chosen=native}catch(error51){if(!(error51 instanceof DecisionConfigError))throw error51;chosen=new LayaWorkerClient(this.options)}if(this.resolved=chosen,this.disposed)chosen.dispose();return chosen}}function createLayaClient(options={}){switch(resolveLayaCore(options)){case"mlx-native":return new LayaNativeClient({...options,loader:options.nativeLoader});case"auto":return new AutoLayaClient(options);default:return new LayaWorkerClient(options)}}function formatDesc3(desc3,fallback=""){if(typeof desc3==="string")return desc3.trim().length>0?desc3:fallback;if(desc3===null||desc3===void 0)return fallback;return JSON.stringify(desc3)}function normalizeDistribution(probs){let entries=Object.entries(probs),sum=entries.reduce((s2,[,p])=>s2+(typeof p==="number"&&Number.isFinite(p)?p:0),0);if(sum<=0||Math.abs(sum-1)<=0.000001)return probs;let result={};for(let[k,p]of entries)result[k]=p/sum;return result}function toWorkerQuestion(question){switch(question.kind){case"choice":return{type:"choice",instructions:formatDesc3(question.prompt,"Select the best matching option."),labels:question.labels,criteria:question.labels};case"score":return{type:"score",instructions:formatDesc3(question.prompt,"Evaluate according to the rubric."),rubric:question.rubric,criteria:question.rubric.map((r)=>formatDesc3(r,"Level"))};case"noul":{let outcomes=question.yes===void 0&&question.no===void 0?void 0:{true:question.yes??null,false:question.no??null};return{type:"noul",instructions:formatDesc3(question.prompt,"Evaluate whether the proposition is true."),...outcomes!==void 0?{criteria:outcomes}:{}}}}}function mapWorkerAnswer(question,rawAnswer){if(!rawAnswer||typeof rawAnswer!=="object"||Array.isArray(rawAnswer))throw new DecisionBackendError("laya worker returned invalid answer: expected object",void 0);let raw=rawAnswer;switch(question.kind){case"choice":{let label=raw.choice??raw.label;if(typeof label!=="string"||label.length===0)throw new DecisionBackendError("laya worker returned invalid choice answer: missing label",void 0);let confidence=typeof raw.confidence==="number"?raw.confidence:0,rawProbs=raw.probabilities??{},probabilities=normalizeDistribution(rawProbs);return{kind:"choice",label,confidence,probabilities}}case"score":{let confidence=typeof raw.confidence==="number"?raw.confidence:0,legend=Object.fromEntries(question.rubric.map((desc3,idx)=>[idx,desc3])),rawLegend=raw.legend,normalizedLegend={};if(rawLegend)for(let[k,v]of Object.entries(rawLegend))normalizedLegend[Number(k)]=v;let rawProbs=raw.probabilities??{},normalizedProbs={};for(let[k,v]of Object.entries(rawProbs))normalizedProbs[Number(k)]=v;let probEntries=Object.entries(normalizedProbs),score2;if(probEntries.length>0)score2=Number(probEntries.reduce((best,cur)=>cur[1]>best[1]?cur:best)[0]);else if(typeof raw.score==="number"&&Number.isFinite(raw.score))score2=Math.round(raw.score);else throw new DecisionBackendError("laya worker returned invalid score answer: no score or probabilities",void 0);return{kind:"score",score:score2,confidence,legend:rawLegend?normalizedLegend:legend,probabilities:normalizeDistribution(normalizedProbs)}}case"noul":{let probability=typeof raw.noul==="number"?raw.noul:raw.probability;if(typeof probability!=="number"||!Number.isFinite(probability))throw new DecisionBackendError("laya worker returned invalid noul answer: missing probability",void 0);return{kind:"noul",probability}}}}function createLayaDriver(options={}){let client=options.client??createLayaClient(options);return{name:"laya-local",async ask({state,questions}){if(!questions||typeof questions!=="object"||Object.keys(questions).length===0)throw new DecisionRequestError("expected a nonempty question map",void 0,void 0);let stateStr=typeof state==="string"?state:state===null||state===void 0?"":JSON.stringify(state),workerQuestions=Object.fromEntries(Object.entries(questions).map(([name,q2])=>[name,toWorkerQuestion(q2)])),result=await client.ask(stateStr,workerQuestions);if(!result?.answers||typeof result.answers!=="object"||Array.isArray(result.answers))throw new DecisionBackendError("laya worker returned invalid result: expected answers map",void 0);return Object.fromEntries(Object.entries(questions).map(([name,q2])=>{let raw=result.answers[name];if(raw===void 0)throw new DecisionBackendError(`laya worker missing answer for question '${name}'`,void 0);return[name,mapWorkerAnswer(q2,raw)]}))}}}var NAME_PATTERN=/^[a-z][a-z0-9-]*$/;class DecisionMakerRegistry{entries=new Map;constructor(options){if(options?.builtins===!1)return;let{makerOptions={},driverOptions={}}=options?.builtins??{};this.register("typesafe",()=>createDecisionMaker({backend:"typesafe",...makerOptions})),this.register("fm-local",()=>createDecisionMaker({driver:createFmDriver(driverOptions["fm-local"]??{}),...makerOptions})),this.register("laya-local",()=>{let driverOpts={...driverOptions["laya-local"]};if(makerOptions.env&&driverOpts.env===void 0)driverOpts.env=makerOptions.env;return createDecisionMaker({driver:createLayaDriver(driverOpts),...makerOptions})})}register(name,source){if(!NAME_PATTERN.test(name))throw new DecisionRegistryError(`Invalid decision maker name '${name}' — must match ${NAME_PATTERN}.`);if(this.entries.has(name))throw new DecisionRegistryError(`Decision maker '${name}' is already registered.`);return this.entries.set(name,{source}),this}has(name){return this.entries.has(name)}names(){return[...this.entries.keys()]}async resolve(name){let entry=this.entries.get(name);if(entry===void 0)throw new UnknownDecisionMakerError(`Unknown decision maker '${name}' — register it or use a built-in.`,name);if(entry.maker)return entry.maker;if(!entry.pending){let run=(async()=>{let maker=typeof entry.source==="function"?await entry.source():entry.source;return entry.maker=maker,maker})();run.catch(()=>{if(entry.pending===run)entry.pending=void 0}),entry.pending=run}return await entry.pending}}var DEFAULT_MIN_CONFIDENCE=0.7,DEFAULT_MAKER="typesafe";function effectiveMinConfidence(definition,defaults){return definition.minConfidence??defaults.minConfidence??DEFAULT_MIN_CONFIDENCE}function observedAnswer(answer){switch(answer.kind){case"choice":return{confidence:answer.confidence};case"score":return{confidence:answer.confidence};case"noul":return{confidence:Math.max(answer.probability,1-answer.probability),probability:answer.probability}}}function buildJevQuestion(question){switch(question.type){case"choice":return q.choice(question.instructions,{...question.criteria});case"score":return q.score(question.instructions,question.criteria);case"noul":{let outcomes=question.criteria;return q.noul(question.instructions,outcomes!==void 0?{yes:outcomes.true,no:outcomes.false}:void 0)}}}class DecisionHub{registry;decisions=new Map;defaultMaker;now;constructor(options={}){if(this.registry=options.registry??new DecisionMakerRegistry,this.defaultMaker=options.defaultMaker??DEFAULT_MAKER,this.now=options.now??Date.now,!this.registry.has(this.defaultMaker))throw new UnknownDecisionMakerError(`Default decision maker '${this.defaultMaker}' is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,this.defaultMaker)}load(catalog){let defaultsMaker=catalog.defaults.maker;if(defaultsMaker!==void 0&&!this.registry.has(defaultsMaker))throw new DecisionCatalogError(`Catalog "${catalog.source}" defaults.maker '${defaultsMaker}' is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,catalog.source,void 0,"maker");let staged=[];for(let[id2,definition]of Object.entries(catalog.decisions)){let existing=this.decisions.get(id2);if(existing!==void 0)throw new DecisionCatalogError(`Decision id "${id2}" in catalog "${catalog.source}" duplicates the decision loaded from "${existing.definition.source}"`,catalog.source,id2,"id");if(definition.maker!==void 0&&!this.registry.has(definition.maker))throw new DecisionCatalogError(`Decision "${id2}" in catalog "${catalog.source}" names maker '${definition.maker}' that is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,catalog.source,id2,"maker");staged.push({definition,defaults:catalog.defaults})}for(let entry of staged)this.decisions.set(entry.definition.id,entry)}async loadFile(path8,options={}){this.load(await loadDecisionCatalog(path8,options))}list(){return[...this.decisions.values()].map(({definition})=>({id:definition.id,type:definition.type,...definition.description!==void 0?{description:definition.description}:{},source:definition.source}))}describe(id2){let{definition,defaults}=this.mustGet(id2),model=definition.model??defaults.model;return{id:definition.id,type:definition.type,...definition.description!==void 0?{description:definition.description}:{},source:definition.source,parameters:definition.parameters,criteria:definition.criteria,fallback:definition.fallback,minConfidence:effectiveMinConfidence(definition,defaults),maker:this.effectiveMakerName(definition,defaults),...model!==void 0?{model}:{}}}async decide(id2,input={},options={}){let start=this.now(),{definition,defaults}=this.mustGet(id2),params=resolveDecisionInput(definition,input),makerName=options.maker??definition.maker??defaults.maker??this.defaultMaker;if(!this.registry.has(makerName))throw new UnknownDecisionMakerError(`Decision "${id2}" was asked on maker '${makerName}' that is not registered in the hub registry (registered: ${this.registry.names().join(", ")||"none"})`,makerName);let state=buildState(definition,params),model=definition.model??defaults.model,request={state,questions:{[definition.id]:buildJevQuestion(renderQuestion(definition,params))},...model!==void 0?{model}:{}},inAsk=!1;try{let maker=await this.registry.resolve(makerName);inAsk=!0;let answer=(await maker.ask(request))[definition.id];if(answer===void 0||answer.kind!==definition.type)return this.fallbackResult(definition,makerName,"error",null,start);let observed=observedAnswer(answer);if(observed.confidence<effectiveMinConfidence(definition,defaults))return this.fallbackResult(definition,makerName,"low-confidence",observed.confidence,start,observed.probability);let base2={id:definition.id,confidence:observed.confidence,source:"model",reason:"accepted",maker:makerName,durationMs:this.now()-start};switch(answer.kind){case"choice":return{...base2,type:"choice",value:answer.label};case"score":return{...base2,type:"score",value:answer.score};case"noul":return{...base2,type:"noul",value:answer.probability>=0.5,probability:answer.probability}}}catch(error51){let reason=!inAsk||error51 instanceof DecisionConfigError?"no-backend":error51 instanceof DecisionTimeoutError?"timeout":"error";return this.fallbackResult(definition,makerName,reason,null,start)}}effectiveMakerName(definition,defaults){return definition.maker??defaults.maker??this.defaultMaker}mustGet(id2){let registered=this.decisions.get(id2);if(registered===void 0){let loaded=[...this.decisions.keys()];throw new UnknownDecisionError(`Unknown decision "${id2}" — loaded decisions: ${loaded.length>0?loaded.join(", "):"(none)"}`,id2)}return registered}fallbackResult(definition,makerName,reason,confidence,start,probability){let base2={id:definition.id,confidence,source:"default",reason,maker:makerName,durationMs:this.now()-start};switch(definition.type){case"choice":return{...base2,type:"choice",value:definition.fallback};case"score":return{...base2,type:"score",value:definition.fallback};case"noul":return{...base2,type:"noul",value:definition.fallback,probability:probability??null}}}}init_dist9();init_dist9();init_dist7();var ACCOUNT_ID_PATTERN=/^[0-9a-fA-F]{32}$/,QUESTION_ID_PATTERN=/^[A-Za-z0-9_.-]{1,100}$/,MAX_REQUEST_BODY_BYTES=13631488,MAX_RESPONSE_BYTES=8388608;function isRecord3(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function hasControlOrWhitespace(value){for(let i2=0;i2<value.length;i2++){let code=value.charCodeAt(i2);if(code<=32||code===127)return!0}return!1}function assertJsonSerializable(value,context4,ancestors=new Set){if(value===null)return;if(typeof value==="string"||typeof value==="boolean")return;if(typeof value==="number"){if(!Number.isFinite(value))throw new DecisionRequestError(`Non-finite number in ${context4}`,void 0,void 0);return}if(typeof value==="bigint"||typeof value==="function"||typeof value==="symbol"||value===void 0)throw new DecisionRequestError(`Unserializable ${typeof value} in ${context4}`,void 0,void 0);if(typeof value==="object"){if(ancestors.has(value))throw new DecisionRequestError(`Circular reference detected in ${context4}`,void 0,void 0);ancestors.add(value);try{if(Object.values(Object.getOwnPropertyDescriptors(value)).some((property)=>!Object.hasOwn(property,"value")))throw new DecisionRequestError(`Accessor property in ${context4}`,void 0,void 0);if(Array.isArray(value)){if(Object.keys(value).length!==value.length||Object.getOwnPropertyNames(value).length!==value.length+1||Object.getOwnPropertySymbols(value).length>0)throw new DecisionRequestError(`Sparse or decorated array in ${context4}`,void 0,void 0);for(let i2=0;i2<value.length;i2++)assertJsonSerializable(value[i2],context4,ancestors)}else{let proto=Object.getPrototypeOf(value);if(proto!==null&&proto!==Object.prototype)throw new DecisionRequestError(`Unsupported object instance in ${context4}`,void 0,void 0);let ownNames=Object.getOwnPropertyNames(value);if(Object.getOwnPropertySymbols(value).length>0||ownNames.length!==Object.keys(value).length)throw new DecisionRequestError(`Unserializable own property in ${context4}`,void 0,void 0);for(let key of ownNames)assertJsonSerializable(value[key],context4,ancestors)}}finally{ancestors.delete(value)}return}throw new DecisionRequestError(`Unserializable value in ${context4}`,void 0,void 0)}function resolveInstructions(prompt,questionId){if(prompt===void 0||prompt===null)return questionId;if(typeof prompt==="string"&&prompt.trim().length===0)return questionId;return prompt}function mapQuestion(name,q2){let instructions=resolveInstructions(q2.prompt,name);switch(q2.kind){case"choice":return{type:"choice",instructions,criteria:Object.fromEntries(Object.entries(q2.labels))};case"score":return{type:"score",instructions,criteria:q2.rubric};case"noul":{let mapped={type:"noul",instructions};if(q2.yes!==void 0||q2.no!==void 0){let criteria={};if(q2.yes!==void 0)criteria.true=q2.yes;if(q2.no!==void 0)criteria.false=q2.no;mapped.criteria=criteria}return mapped}}}function getHeader(headers,name){let target=name.toLowerCase();for(let[key,value]of Object.entries(headers))if(key.toLowerCase()===target)return value;return}function parseRetryAfter2(header){if(!header)return;let trimmed=header.trim();if(/^\d+$/.test(trimmed)){let milliseconds=Number(trimmed)*1000;return Number.isFinite(milliseconds)?milliseconds:void 0}if(!/^[A-Za-z]+(?:,| )/.test(trimmed))return;let timestamp=Date.parse(trimmed);if(!Number.isNaN(timestamp))return Math.max(0,timestamp-Date.now());return}function createClefDriver(options){if(!options||typeof options!=="object")throw new DecisionConfigError("Options must be provided","options");let{accountId,apiToken,model:configuredModel="clef-flash",timeoutMs=30000,fetch:customFetch}=options;if(typeof accountId!=="string"||!ACCOUNT_ID_PATTERN.test(accountId))throw new DecisionConfigError("Invalid accountId: must be a 32-character hexadecimal string","accountId");if(typeof apiToken!=="string"||apiToken.length===0||hasControlOrWhitespace(apiToken))throw new DecisionConfigError("Invalid apiToken: cannot be blank or contain whitespace or control characters","apiToken");if(typeof timeoutMs!=="number"||!Number.isInteger(timeoutMs)||timeoutMs<=0)throw new DecisionConfigError("Invalid timeoutMs: must be a positive integer","timeoutMs");if(configuredModel!=="clef"&&configuredModel!=="clef-flash")throw new DecisionConfigError("Invalid model: must be clef or clef-flash","model");let client=new APIClient({baseUrl:"https://api.cloudflare.com/client/v4",timeout:timeoutMs,fetch:customFetch});return{name:"clef",async ask({state,questions,model}){try{validateQuestions2(questions)}catch{throw new DecisionRequestError("Invalid decision questions",void 0,void 0)}if(model!==void 0&&model!=="clef"&&model!=="clef-flash")throw new DecisionRequestError("Invalid model selector: must be clef or clef-flash",void 0,void 0);let resolvedModel=model??configuredModel,questionEntries=Object.entries(questions);if(questionEntries.length<1||questionEntries.length>64)throw new DecisionRequestError(`Question count must be between 1 and 64, got ${questionEntries.length}`,void 0,void 0);for(let[name,q2]of questionEntries){if(!QUESTION_ID_PATTERN.test(name))throw new DecisionRequestError("Question ID does not match pattern ^[A-Za-z0-9_.-]{1,100}$",void 0,void 0);if(q2.kind==="choice"){let labelKeys=Object.keys(q2.labels);if(labelKeys.length<2||labelKeys.length>255)throw new DecisionRequestError(`Choice question must have between 2 and 255 choice IDs, got ${labelKeys.length}`,void 0,void 0);for(let labelId of labelKeys)if(labelId.length===0)throw new DecisionRequestError("Choice question contains empty choice ID",void 0,void 0)}else if(q2.kind==="score"){let levels=q2.rubric.length;if(levels<2||levels>10)throw new DecisionRequestError(`Score question must have between 2 and 10 score levels, got ${levels}`,void 0,void 0)}}assertJsonSerializable(state,"state");let mappedQuestions=Object.fromEntries(questionEntries.map(([name,q2])=>[name,mapQuestion(name,q2)])),requestBody={model:resolvedModel,state:state??null,questions:mappedQuestions};assertJsonSerializable(requestBody,"request");let bodyString=JSON.stringify(requestBody);if(new TextEncoder().encode(bodyString).byteLength>MAX_REQUEST_BODY_BYTES)throw new DecisionRequestError("Request body exceeds maximum size of 13 MiB",void 0,void 0);let path8=`/accounts/${accountId}/ai/run/@cf/cloudflare/${resolvedModel}`,response;try{response=await client.rawRequest("POST",path8,bodyString,{headers:{Authorization:`Bearer ${apiToken}`,"Content-Type":"application/json"},redirect:"manual",maxResponseBytes:MAX_RESPONSE_BYTES})}catch(error51){if(error51 instanceof APIError&&error51.status===0)throw new DecisionTimeoutError("Request timed out",timeoutMs);throw new DecisionConnectionError("Failed to connect to backend")}if(response.truncated)throw new DecisionBackendError("Response exceeded maximum allowed size of 8 MiB",response.status);if(response.status>=300&&response.status<400)throw new DecisionBackendError(`HTTP ${response.status} redirect received`,response.status);if(response.status===401||response.status===403)throw new DecisionAuthError(`HTTP ${response.status} authentication failure`,response.status);if(response.status===429){let retryAfterHeader=getHeader(response.headers,"retry-after"),retryAfterMs=parseRetryAfter2(retryAfterHeader);throw new DecisionRateLimitError("HTTP 429 rate limit exceeded",response.status,retryAfterMs)}if(response.status>=400&&response.status<500)throw new DecisionRequestError(`HTTP ${response.status} request error`,response.status,void 0);if(response.status>=500&&response.status<600)throw new DecisionBackendError(`HTTP ${response.status} backend error`,response.status);if(response.status<200||response.status>=300)throw new DecisionBackendError(`HTTP ${response.status} unexpected status`,response.status);let json3;try{json3=JSON.parse(response.body)}catch{throw new DecisionBackendError("Malformed JSON response from backend",response.status)}if(!isRecord3(json3)||json3.success!==!0)throw new DecisionBackendError("Backend returned failure envelope",response.status);if(!isRecord3(json3.result))throw new DecisionBackendError("Missing or invalid result in response",response.status);let result=json3.result;if(typeof result.model!=="string"||result.model.trim().length===0)throw new DecisionBackendError("Invalid or missing model in response",response.status);if(!isRecord3(result.answers))throw new DecisionBackendError("Invalid or missing answers in response",response.status);let answers=Object.create(null);for(let[name,rawAnswer]of Object.entries(result.answers)){if(!isRecord3(rawAnswer))throw new DecisionBackendError("Invalid answer in response",response.status);switch(rawAnswer.type){case"choice":{if(typeof rawAnswer.choice!=="string"||typeof rawAnswer.confidence!=="number"||!isRecord3(rawAnswer.probabilities))throw new DecisionBackendError("Malformed choice answer in response",response.status);answers[name]={kind:"choice",label:rawAnswer.choice,confidence:rawAnswer.confidence,probabilities:Object.fromEntries(Object.entries(rawAnswer.probabilities))};break}case"score":{if(typeof rawAnswer.score!=="number"||typeof rawAnswer.confidence!=="number"||!isRecord3(rawAnswer.legend)||!isRecord3(rawAnswer.probabilities))throw new DecisionBackendError("Malformed score answer in response",response.status);answers[name]={kind:"score",score:rawAnswer.score,confidence:rawAnswer.confidence,legend:Object.fromEntries(Object.entries(rawAnswer.legend)),probabilities:Object.fromEntries(Object.entries(rawAnswer.probabilities))};break}case"noul":{if(typeof rawAnswer.noul!=="number")throw new DecisionBackendError("Malformed noul answer in response",response.status);answers[name]={kind:"noul",probability:rawAnswer.noul};break}default:throw new DecisionBackendError("Unknown answer type in response",response.status)}}try{validateAnswers(questions,answers)}catch{throw new DecisionBackendError("Invalid decision answers in response",response.status)}return answers}}}import{join as join8,resolve as resolve3}from"node:path";init_dist6();init_dist();init_dist2();init_zod();init_src();import{existsSync as existsSync5,statSync as statSync6}from"node:fs";import{homedir as homedir3}from"node:os";import{dirname as dirname6,join as join7,resolve as resolve2}from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";import{existsSync as existsSync4,readdirSync as readdirSync2,statSync as statSync5}from"node:fs";import{dirname as dirname4,join as join5}from"node:path";var BUNDLED_CONFIG_DIRS=["config","spur-cli/config"],cachedRoot;function bundledConfigRoot(){if(cachedRoot!==void 0)return cachedRoot;return cachedRoot=resolveBundledConfigRoot(import.meta.dirname,process.execPath),cachedRoot}function resolveBundledConfigRoot(moduleDir2,execPath2){let dir=moduleDir2;while(!0){for(let name of BUNDLED_CONFIG_DIRS){let candidate=join5(dir,name);if(isBundledConfigDir(candidate))return candidate}let parent=dirname4(dir);if(parent===dir)break;dir=parent}let executableConfig=join5(dirname4(execPath2),"config");return isBundledConfigDir(executableConfig)?executableConfig:null}function isBundledConfigDir(candidate){return existsSync4(candidate)&&statSync5(candidate).isDirectory()&&existsSync4(join5(candidate,"rules"))&&existsSync4(join5(candidate,"workflows"))}init_projects();init_dist2();import{chmod,lstat,open as open2,readFile as readFile4,rename as rename2,stat as stat2,unlink,writeFile as writeFile2}from"node:fs/promises";import{basename,dirname as dirname5,join as join6}from"node:path";init_rfc3339();class ExecutorUpdateError extends Error{code;constructor(code,message){super(message);this.code=code;this.name="ExecutorUpdateError"}}var LOCK_RETRY_MS=50,LOCK_MAX_ATTEMPTS=40;async function setExecutorAvailability(request){if(request.executor.length===0)throw new ExecutorUpdateError("INVALID_CONFIG","executor name must be a non-empty string");assertDisabledArgument(request.disabled);let projectPath=join6(request.projectRoot,".spur","config.yaml"),targetPath;if(request.layer==="project")targetPath=projectPath;else{let layers=resolveConfigLayers(request.projectRoot);if(layers.project!==void 0&&await declaresExecutor(layers.project,request.executor))targetPath=layers.project;else if(layers.global!==void 0)targetPath=layers.global;else if(layers.project!==void 0)return{status:"unchanged",reason:"missing-executor"};else return{status:"unchanged",reason:"missing-file"}}return applyExecutorAvailabilityAtPath(targetPath,request.executor,request.disabled)}async function getDeclaredExecutorNames(configPath){let content;try{content=await readFile4(configPath,"utf8")}catch{return new Set}let doc2=$parseDocument(content);if(doc2.errors.length>0)return new Set;let executors=doc2.get("agent");if(!$isMap(executors))return new Set;let seq=executors.get("executors");if(!$isSeq(seq))return new Set;let names=new Set;for(let item of seq.items){if($isAlias(item)||!$isMap(item))continue;let nameNode=item.get("name",!0);if($isScalar(nameNode)&&typeof nameNode.value==="string"&&nameNode.value.length>0)names.add(nameNode.value)}return names}async function declaresExecutor(configPath,executorName){return(await getDeclaredExecutorNames(configPath)).has(executorName)}async function applyExecutorAvailabilityAtPath(configPath,executorName,disabled){let original;try{original=await stat2(configPath)}catch{return{status:"unchanged",reason:"missing-file"}}if((await lstat(configPath)).isSymbolicLink())throw new ExecutorUpdateError("INVALID_CONFIG",`config is a symlink — refusing to edit through it: ${configPath}`);return withLock(`${configPath}.lock`,async()=>{let content=await readFile4(configPath,"utf8"),baseline=await stat2(configPath),doc2=$parseDocument(content);if(doc2.errors.length>0)throw new ExecutorUpdateError("INVALID_CONFIG",`config is not valid YAML: ${doc2.errors[0]?.message??"unknown parse error"}`);let agent=doc2.get("agent");if(!$isMap(agent))return{status:"unchanged",reason:"missing-executors"};let executors=agent.get("executors");if(!$isSeq(executors))return{status:"unchanged",reason:"missing-executors"};let target,seen=new Map;for(let item of executors.items){if($isAlias(item)||!$isMap(item))throw new ExecutorUpdateError("INVALID_CONFIG","executor entries must be inline mappings — aliases and merge keys are not supported by the updater");for(let pair of item.items)if($isScalar(pair.key)&&String(pair.key.value)==="<<")throw new ExecutorUpdateError("INVALID_CONFIG","merge keys in executor entries are not supported by the updater — flatten the entry first");let nameNode=item.get("name",!0);if(!$isScalar(nameNode)||typeof nameNode.value!=="string"||nameNode.value.length===0)continue;let name=nameNode.value;if(seen.get(name)!==void 0)throw new ExecutorUpdateError("INVALID_CONFIG",`duplicate executor name "${name}" in config — ambiguous update target`);if(seen.set(name,item),name===executorName)target=item}if(target===void 0)return{status:"unchanged",reason:"missing-executor"};let current=target.get("disabled",!0);if(disabledMatches(current,disabled))return{status:"unchanged",reason:"already-set"};target.set("disabled",typeof disabled==="boolean"?disabled:{owner:disabled.owner,since:disabled.since,reason:disabled.reason});let serialized=String(doc2),tmpPath=join6(dirname5(configPath),`.${basename(configPath)}.tmp-${process.pid}`);try{let latest=await stat2(configPath);if(latest.mtimeMs!==baseline.mtimeMs||latest.size!==baseline.size||latest.ino!==baseline.ino)throw new ExecutorUpdateError("CONFIG_CONFLICT",`config changed on disk while the update was prepared — re-run to reapply: ${configPath}`);let backupPath=`${configPath}.bak`;await writeFile2(backupPath,content,{mode:original.mode&511}),await chmod(backupPath,original.mode&511);let tmp=await open2(tmpPath,"wx",original.mode&511);try{await tmp.writeFile(serialized,"utf8"),await tmp.sync()}finally{await tmp.close()}await rename2(tmpPath,configPath),await chmod(configPath,original.mode&511)}catch(error51){try{await unlink(tmpPath)}catch{}if(error51 instanceof ExecutorUpdateError)throw error51;throw new ExecutorUpdateError("CONFIG_WRITE_FAILED",`failed to commit config update: ${error51 instanceof Error?error51.message:String(error51)}`)}return invalidateSpurConfig(configPath),{status:"updated"}})}function assertDisabledArgument(disabled){if(typeof disabled==="boolean")return;if(disabled.owner!=="quota"&&disabled.owner!=="probe")throw new ExecutorUpdateError("INVALID_CONFIG",`disabled.owner must be "quota" or "probe", received ${JSON.stringify(disabled.owner)}`);if(typeof disabled.since!=="string"||!isRfc3339Timestamp(disabled.since))throw new ExecutorUpdateError("INVALID_CONFIG","disabled.since must be an RFC 3339 timestamp string");if(typeof disabled.reason!=="string"||disabled.reason.length===0)throw new ExecutorUpdateError("INVALID_CONFIG","disabled.reason must be a non-empty string")}function disabledMatches(current,desired){if(typeof desired==="boolean")return current!==void 0&&$isScalar(current)&&current.value===desired;if(current===void 0||!$isMap(current))return!1;return current.get("owner")===desired.owner&&current.get("since")===desired.since&&current.get("reason")===desired.reason}async function withLock(lockPath,fn){let holder;for(let attempt=0;attempt<LOCK_MAX_ATTEMPTS&&holder===void 0;attempt++)try{holder=await open2(lockPath,"wx")}catch{if(!await reclaimIfDead(lockPath)){if(attempt===LOCK_MAX_ATTEMPTS-1)throw new ExecutorUpdateError("CONFIG_WRITE_FAILED",`config update lock is held by a live process: ${lockPath}`);await new Promise((resolve2)=>setTimeout(resolve2,LOCK_RETRY_MS))}}if(holder===void 0)throw new ExecutorUpdateError("CONFIG_WRITE_FAILED",`could not acquire config update lock: ${lockPath}`);try{return await holder.writeFile(String(process.pid),"utf8"),await fn()}finally{await holder.close();try{await unlink(lockPath)}catch{}}}async function reclaimIfDead(lockPath){let pid;try{pid=Number.parseInt(await readFile4(lockPath,"utf8"),10)}catch{return!1}if(!Number.isFinite(pid))return!1;try{return process.kill(pid,0),!1}catch{return await unlink(lockPath).catch(()=>{}),!0}}var SPUR_CONFIG_DIR=".spur",SPUR_CONFIG_FILE="config.yaml",GLOBAL_CONFIG_FILE=join7(homedir3(),".config","spur","config.yaml"),LOADER_DIR=dirname6(fileURLToPath4(import.meta.url)),nextEmbeddedSchemasId=1,embeddedSchemasIds=new WeakMap,spurConfigCache=new Map;function embeddedSchemasId(embeddedSchemas){if(embeddedSchemas===void 0)return"disk";let id2=embeddedSchemasIds.get(embeddedSchemas);if(id2===void 0)id2=nextEmbeddedSchemasId,nextEmbeddedSchemasId+=1,embeddedSchemasIds.set(embeddedSchemas,id2);return`embedded:${id2}`}function cacheKey(configPath,opts,validateJsonSchema2){return[configPath,validateJsonSchema2?"schema":"zod",opts?.schemaManifestSpecifier??"@gobing-ai/spur/package.json",embeddedSchemasId(opts?.embeddedSchemas)].join("\x00")}function resolveSchemaSpecifier(specifier,manifestSpecifier){if(specifier===manifestSpecifier){let workspaceManifest=join7(LOADER_DIR,"..","..","..","apps","cli","package.json");if(existsSync5(workspaceManifest))return workspaceManifest}try{let resolved=import.meta.resolve(specifier);return resolved.startsWith("file:")?fileURLToPath4(resolved):resolved}catch{if(specifier===manifestSpecifier&&manifestSpecifier==="@gobing-ai/spur/package.json"){let manifest=join7(dirname6(process.execPath),"package.json");if(existsSync5(manifest)&&existsSync5(join7(dirname6(manifest),"schemas")))return manifest}return specifier}}function resolveConfigLayers(cwd){let layers={};if(!(cwd===void 0&&getEnvVar("SPUR_SKIP_PROJECT_CONFIG")==="true")){let projectConfig=join7(cwd??process.cwd(),SPUR_CONFIG_DIR,SPUR_CONFIG_FILE);if(existsSync5(projectConfig))layers.project=projectConfig}if(getEnvVar("SPUR_SKIP_GLOBAL_CONFIG")!=="true"&&existsSync5(GLOBAL_CONFIG_FILE))layers.global=GLOBAL_CONFIG_FILE;return layers}var EMBEDDED_PREFIX="\x00embedded-spur";function makeEmbeddedReader(embeddedSchemas){return async function(path8){if(path8.startsWith(EMBEDDED_PREFIX)){let subpath=path8.slice(EMBEDDED_PREFIX.length+1),embedded=embeddedSchemas.get(subpath);if(embedded===void 0)throw Error(`No embedded schema registered for "${subpath}".`);return embedded}return createNodeFileSystem2().readFile(path8)}}async function loadSpurConfig(cwd,opts){let layers=resolveConfigLayers(cwd),projectRoot=resolve2(cwd??process.cwd());if(assertNoLegacyFleetFile(projectRoot,layers.project),layers.global===void 0&&layers.project===void 0)return spurConfigSchema.parse({});let validateJsonSchema2=opts?.validateJsonSchema??getEnvVar("NODE_ENV")!=="test",mtimeOf=(path8)=>path8!==void 0?String(statSync6(path8).mtimeMs):"-",key=[cacheKey(layers.project??layers.global??"",opts,validateJsonSchema2),layers.global??"-",mtimeOf(layers.project),mtimeOf(layers.global)].join("\x00"),cached2=spurConfigCache.get(key);if(cached2!==void 0)return cached2;let promise2=loadMergedConfig(layers,opts,validateJsonSchema2);return spurConfigCache.set(key,promise2),promise2.catch(()=>spurConfigCache.delete(key)),promise2}async function resolveDecideDecisionMakerEnabled(cwd,opts){return(await loadSpurConfig(cwd,opts)).workflows?.decideDecisionMaker===!0}function invalidateSpurConfig(configPath){if(configPath===void 0){spurConfigCache.clear();return}for(let key of spurConfigCache.keys())if(key.startsWith(`${configPath}\x00`)||key.includes(`\x00${configPath}\x00`))spurConfigCache.delete(key)}function assertNoRetiredTeamKey(parsed,layerPath,replacementFile){let agent=parsed.agent;if(!isPlainObject5(agent)||!("team"in agent))return;throw Error(`agent.team is no longer supported (${layerPath??"the merged config"}). Declare the project fleet under agent.fleet in ${replacementFile}.`)}function assertNoGlobalFleetSection(globalRaw,layerPath,projectFile){let agent=globalRaw.agent;if(!isPlainObject5(agent)||!("fleet"in agent))return;throw Error(`agent.fleet is not supported in the global config (${layerPath??SPUR_CONFIG_FILE}). Declare the project fleet under agent.fleet in ${projectFile} — the flock belongs to a project, not to the machine.`)}function assertNoLegacyFleetFile(projectRoot,projectConfigPath){let candidates=new Set([join7(projectRoot,SPUR_CONFIG_DIR,"fleet.json")]);if(projectConfigPath!==void 0)candidates.add(join7(dirname6(projectConfigPath),"fleet.json"));for(let legacyFile of candidates){if(!existsSync5(legacyFile))continue;throw Error(`The retired fleet declaration ${legacyFile} still exists. Move its members and orchestrator under agent.fleet in the project config, then delete the file.`)}}function projectConfigReplacement(layers){return layers.project??join7(SPUR_CONFIG_DIR,SPUR_CONFIG_FILE)}function schemaValidationContext(opts){let embeddedSchemas=opts?.embeddedSchemas,manifestSpecifier=opts?.schemaManifestSpecifier??"@gobing-ai/spur/package.json",resolve3=(specifier)=>{if(embeddedSchemas!==void 0&&specifier===manifestSpecifier)return`${EMBEDDED_PREFIX}/package.json`;return resolveSchemaSpecifier(specifier,manifestSpecifier)},fileSystem=embeddedSchemas?{readFile:makeEmbeddedReader(embeddedSchemas)}:void 0;return{resolve:resolve3,...fileSystem!==void 0?{fileSystem}:{}}}async function readRawYamlLayer(configPath,kind){let nodeFs=createNodeFileSystem2(),text3;try{text3=await nodeFs.readFile(nodeFs.resolve(configPath))}catch(error51){throw Error(`Failed to read ${kind} config ${configPath}: ${error51.message}`)}try{return $parse(text3)??{}}catch(error51){throw Error(`Failed to parse ${kind} config ${configPath}: ${error51.message}`)}}function isPlainObject5(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function executorNameOf(item){return isPlainObject5(item)&&typeof item.name==="string"?item.name:void 0}function isConcatPath(segments){return segments.length===2&&segments[0]==="rules"&&segments[1]==="paths"||segments.length===2&&segments[0]==="workflows"&&segments[1]==="paths"}function byKeyIdentityFor(segments){if(segments.length===2&&segments[0]==="agent"&&segments[1]==="executors")return executorNameOf;return}function concatUnique(globalItems,projectItems){let out=[...globalItems];for(let item of projectItems)if(!out.includes(item))out.push(item);return out}function mergeByKeyIdentity(globalItems,projectItems,identityOf,segments){let merged=[],indexByIdentity=new Map;for(let item of globalItems){let identity5=identityOf(item);if(identity5!==void 0&&!indexByIdentity.has(identity5))indexByIdentity.set(identity5,merged.length);merged.push(item)}let matchedProjectIdentities=new Set;for(let item of projectItems){let identity5=identityOf(item),existing=identity5===void 0||matchedProjectIdentities.has(identity5)?void 0:indexByIdentity.get(identity5);if(existing===void 0){merged.push(item);continue}if(identity5!==void 0)matchedProjectIdentities.add(identity5);let base2=merged[existing];merged[existing]=isPlainObject5(base2)&&isPlainObject5(item)?mergeDeep(base2,item,[...segments,existing]):item}return merged}function mergeDeep(globalValue,projectValue,segments){if(isPlainObject5(globalValue)&&isPlainObject5(projectValue)){let out={...globalValue};for(let[key,projectItem]of Object.entries(projectValue))out[key]=key in out?mergeDeep(out[key],projectItem,[...segments,key]):projectItem;return out}if(Array.isArray(globalValue)&&Array.isArray(projectValue)){if(isConcatPath(segments))return concatUnique(globalValue,projectValue);let identityOf=byKeyIdentityFor(segments);if(identityOf!==void 0)return mergeByKeyIdentity(globalValue,projectValue,identityOf,segments);return projectValue}return projectValue}function mergeSpurConfigLayers(globalRaw,projectRaw){return mergeDeep(globalRaw,projectRaw,[])}function formatZodPath(path8){return path8.map((segment,index2)=>typeof segment==="number"?`[${segment}]`:index2===0?segment:`.${segment}`).join("")}function parseViolationPath(path8){let segments=[];for(let part of path8.split(".")){let bracket=part.indexOf("["),key=bracket===-1?part:part.slice(0,bracket);if(key!=="")segments.push(key);if(bracket!==-1)for(let match of part.slice(bracket).matchAll(/\[(\d+)\]/g))segments.push(Number(match[1]))}return segments}function findItemByIdentity(node,identityOf,identity5){return Array.isArray(node)?node.find((entry)=>identityOf(entry)===identity5):void 0}function describeIssueProvenance(issuePath,merged,globalRaw,projectRaw){let g2=globalRaw,p=projectRaw,m=merged,segments=[],parentG=globalRaw,parentP=projectRaw,identityPrefix="";for(let segment of issuePath){if(parentG=g2,parentP=p,segments=[...segments,segment],typeof segment==="number"){let mergedItem=Array.isArray(m)?m[segment]:void 0,identityOf=byKeyIdentityFor(segments.slice(0,-1));if(identityOf!==void 0&&mergedItem!==void 0){let identity5=identityOf(mergedItem);if(identity5!==void 0)identityPrefix=`executor "${identity5}" `,g2=findItemByIdentity(g2,identityOf,identity5),p=findItemByIdentity(p,identityOf,identity5)}else g2=Array.isArray(g2)&&segment<g2.length?g2[segment]:void 0,p=Array.isArray(p)&&segment<p.length?p[segment]:void 0;m=mergedItem;continue}g2=isPlainObject5(g2)?g2[segment]:void 0,p=isPlainObject5(p)?p[segment]:void 0,m=isPlainObject5(m)?m[segment]:void 0}let label;if(g2!==void 0&&p!==void 0)label="set in both layers (project value wins)";else if(g2!==void 0)label="from global layer";else if(p!==void 0)label="from project layer";else if(parentP!==void 0&&parentG===void 0)label="from project layer (key absent there)";else if(parentG!==void 0&&parentP===void 0)label="from global layer (key absent there)";else label="missing in both layers";return`${identityPrefix}${label}`}function parseMergedWithProvenance(merged,globalRaw,projectRaw,layers){try{return spurConfigSchema.parse(merged)}catch(error51){if(!(error51 instanceof ZodError))throw error51;let details=error51.issues.map((issue2)=>{let path8=issue2.path.filter((segment)=>typeof segment!=="symbol");return` ${formatZodPath(path8)}: ${issue2.message} (${describeIssueProvenance(path8,merged,globalRaw,projectRaw)})`}).join(`
1825
1842
  `);throw Error(`Spur config validation failed after merging global ${layers.global??"(absent)"} with project ${layers.project??"(absent)"}:
1826
1843
  ${details}`)}}function enrichSchemaViolationError(error51,merged,globalRaw,projectRaw,layers){let violations=error51.violations;if(!Array.isArray(violations))return error51;let details=violations.map((violation)=>{let v=violation,path8=typeof v.path==="string"?v.path:"(root)",message=typeof v.message==="string"?v.message:"schema violation",label=describeIssueProvenance(parseViolationPath(path8),merged,globalRaw,projectRaw);return` ${path8}: ${message} (${label})`}).join(`
1827
1844
  `);return Error(`Merged Spur config failed JSON Schema validation (global ${layers.global??"(absent)"} + project ${layers.project??"(absent)"}):
1828
- ${details}`)}async function loadMergedConfig(layers,opts,validateJsonSchema2){let globalRaw=layers.global!==void 0?await readRawYamlLayer(layers.global,"global"):{},projectRaw=layers.project!==void 0?await readRawYamlLayer(layers.project,"project"):{},replacementFile=projectConfigReplacement(layers);if(layers.global!==void 0)assertNoRetiredTeamKey(globalRaw,layers.global,replacementFile),assertNoGlobalFleetSection(globalRaw,layers.global,replacementFile);if(layers.project!==void 0)assertNoRetiredTeamKey(projectRaw,layers.project,replacementFile);let merged=mergeSpurConfigLayers(globalRaw,projectRaw);if(validateJsonSchema2){let source=layers.project??layers.global??"";try{await validateDeclaredJsonSchema(merged,source,schemaValidationContext(opts))}catch(error51){throw enrichSchemaViolationError(error51,merged,globalRaw,projectRaw,layers)}}return parseMergedWithProvenance(merged,globalRaw,projectRaw,layers)}var BUNDLED_DECISIONS_PREFIX="bundled:";function registeredDecisionPaths(config4){let paths=config4?.decisions?.paths??[],bundledRoot=bundledConfigRoot(),expanded=[];for(let path8 of paths)if(path8.startsWith(BUNDLED_DECISIONS_PREFIX)){if(bundledRoot!==null)expanded.push(join4(bundledRoot,path8.slice(BUNDLED_DECISIONS_PREFIX.length)))}else expanded.push(path8);return expanded}function decisionLayers(opts){let sharedRoot=opts.sharedRoot!==void 0?opts.sharedRoot:bundledConfigRoot(),sharedPath=sharedRoot!==null?resolve2(opts.cwd,join4(sharedRoot,"decisions")):null,layers=[],seen=new Set,add=(id,path8)=>{if(seen.has(path8))return;seen.add(path8),layers.push({id,path:path8})};add("project",resolve2(opts.cwd,join4(opts.cwd,".spur","decisions")));for(let entry of opts.registered){if(sharedPath!==null&&resolve2(opts.cwd,entry)===sharedPath)continue;add("registered",resolve2(opts.cwd,entry))}if(sharedPath!==null)add("shared",sharedPath);return layers}async function resolveDecisionCatalogs(opts){let layers=decisionLayers(opts),winners=new Map;for(let layer of layers){let names=[];try{names=await Array.fromAsync(new Bun.Glob("*.yaml").scan({cwd:layer.path}))}catch{continue}for(let name of names.sort())if(!winners.has(name))winners.set(name,{layer:layer.id,path:join4(layer.path,name)})}let files=[],loadErrors=[];for(let[name,winner]of winners)try{let catalog=await loadDecisionCatalog(winner.path);files.push({layer:winner.layer,path:winner.path,basename:name,catalog})}catch(error51){loadErrors.push({layer:winner.layer,path:winner.path,message:error51 instanceof Error?error51.message:String(error51)})}files.sort((a2,b)=>layerRank(a2.layer)-layerRank(b.layer)||a2.basename.localeCompare(b.basename));let seen=new Map,duplicateIds=[];for(let file2 of files)for(let id of Object.keys(file2.catalog.decisions)){let first=seen.get(id);if(first===void 0)seen.set(id,file2.path);else{let entry=duplicateIds.find((d)=>d.id===id);if(entry){if(!entry.sources.includes(file2.path))entry.sources.push(file2.path)}else duplicateIds.push({id,sources:[first,file2.path]})}}return{layers,files,loadErrors,duplicateIds}}var LAYER_RANK={project:0,registered:1,shared:2},layerRank=(id)=>LAYER_RANK[id];function wbsFromVar(raw){return typeof raw==="string"&&/^\d{4}$/.test(raw)&&raw!=="0000"?raw:void 0}async function loadRunCorrelation(persistence,runId){try{let run=await persistence.loadRun(runId);if(run===void 0)return{};let vars=(await persistence.loadLatestStateSnapshot(runId))?.data.effectiveVars,wbs=wbsFromVar(vars?.wbs);return{...run.workflow_name!==""?{workflowName:run.workflow_name}:{},...wbs!==void 0?{wbs}:{}}}catch{return{}}}var DECISION_MESSAGE_MAX_CHARS=512;function decisionErrorKind(error51){if(error51 instanceof UnknownDecisionError)return"unknown-decision";if(error51 instanceof DecisionInputError)return"input";if(error51 instanceof UnknownDecisionMakerError)return"unknown-decision-maker";if(error51 instanceof DecisionCatalogError)return"catalog";return"error"}function decisionCorrelationFromVars(vars){let runId=vars.__runId;if(runId===void 0||runId==="")return;let wbs=wbsFromVar(vars.wbs);return{runId,...vars.__workflowName!==void 0&&vars.__workflowName!==""?{workflowName:vars.__workflowName}:{},...vars.__nodeId!==void 0&&vars.__nodeId!==""?{nodeId:vars.__nodeId}:{},...wbs!==void 0?{wbs}:{}}}function emitDecisionRejected(bus,ctx,error51,maker,log){let invocationId=crypto.randomUUID(),message=error51 instanceof Error?error51.message:String(error51);if(emitDecisionEvent(bus,"decision.rejected",{invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{},severity:"error",errorKind:decisionErrorKind(error51),message:redactAndBound(message,[],DECISION_MESSAGE_MAX_CHARS),...maker!==void 0?{maker}:{}}),log===void 0)return;writeDecisionLog(log.sink,buildDecisionLogRow(log.sink,{id:invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{},...maker!==void 0?{maker}:{},...log.makerSource!==void 0?{makerSource:log.makerSource}:{},...log.input!==void 0?{input:log.input}:{},outcome:"rejected",reason:decisionErrorKind(error51),error:message,startedAtMs:log.prelude?.startedAt??log.startedAt,endedAtMs:Date.now(),phases:[...log.prelude?.phases??[],...log.phases]}))}function beginDecisionInvocation(bus,ctx,start,log){let invocationId=crypto.randomUUID(),base2=()=>({invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{}});return emitDecisionEvent(bus,"decision.start",{...base2(),severity:"info",type:start.type,maker:start.maker,makerSource:start.makerSource,catalogLayer:start.catalogLayer,inputKeys:[...start.inputKeys],...start.evidenceDigest!==void 0?{evidenceDigest:start.evidenceDigest}:{},minConfidence:start.minConfidence}),{succeed(fields){emitDecisionEvent(bus,"decision.success",{...base2(),severity:"info",...fields})},fail(fields){emitDecisionEvent(bus,"decision.failure",{...base2(),severity:fields.reason==="error"?"error":"warning",...fields})},end(fields){if(emitDecisionEvent(bus,"decision.end",{...base2(),severity:"info",...fields}),log===void 0)return;let outcome=fields.source===void 0?"rejected":fields.source==="model"&&fields.reason==="accepted"?"accepted":"fallback";writeDecisionLog(log.sink,buildDecisionLogRow(log.sink,{id:invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{},decisionType:start.type,maker:start.maker,makerSource:start.makerSource,catalogLayer:start.catalogLayer,...log.catalogSource!==void 0?{catalogSource:log.catalogSource}:{},minConfidence:start.minConfidence,...log.input!==void 0?{input:log.input}:{},inputKeys:start.inputKeys,...log.question!==void 0?{question:log.question}:{},...start.evidenceDigest!==void 0?{evidenceDigest:start.evidenceDigest}:{},outcome,...fields.value!==void 0?{value:fields.value}:{},...log.fallbackValue!==void 0?{fallbackValue:log.fallbackValue}:{},...fields.source!==void 0?{source:fields.source}:{},...fields.reason!==void 0?{reason:fields.reason}:{},...fields.confidence!==void 0?{confidence:fields.confidence}:{},...log.error!==void 0?{error:log.error}:{},startedAtMs:log.prelude?.startedAt??log.startedAt,endedAtMs:Date.now(),phases:[...log.prelude?.phases??[],...log.phases]}))}}}function emitDecisionEvent(bus,name,payload){if(bus===void 0)return;try{bus.emit(name,payload).catch(()=>{})}catch{}}class DecisionService{registry=new DecisionMakerRegistry;resolution;hub;duplicateIds;catalogErrors=[];constructor(resolution){this.resolution=resolution,this.duplicateIds=new Map(resolution.duplicateIds.map((d)=>[d.id,d.sources])),this.hub=new DecisionHub({registry:this.registry});let declaredEarlier=new Set;for(let file2 of resolution.files){let decisions=Object.fromEntries(Object.entries(file2.catalog.decisions).filter(([id])=>!declaredEarlier.has(id)));for(let id of Object.keys(file2.catalog.decisions))declaredEarlier.add(id);try{this.hub.load({...file2.catalog,decisions})}catch(error51){this.catalogErrors.push(error51 instanceof Error?error51.message:String(error51))}}}static async create(config4,cwd,sharedRoot){let resolution=await resolveDecisionCatalogs({cwd,registered:registeredDecisionPaths(config4),sharedRoot});return new DecisionService(resolution).withConfig(config4)}list(){let layerByFile=new Map(this.resolution.files.map((f)=>[f.path,f.layer]));return this.hub.list().map((summary)=>({...summary,layer:layerByFile.get(summary.source)??"shared"}))}describe(id){let descriptor=this.hub.describe(id),file2=this.resolution.files.find((f)=>Object.keys(f.catalog.decisions).includes(id)),raw=file2?.catalog.decisions[id];return{id,type:descriptor.type,description:descriptor.description,catalog:descriptor.source,layer:file2?.layer??"shared",minConfidence:descriptor.minConfidence,criteria:descriptor.criteria,fallback:descriptor.fallback,parameters:descriptor.parameters,model:descriptor.model,effectiveMaker:this.effectiveMaker(id,raw?.maker,file2?.catalog.defaults.maker)}}async decide(id,input,options){let callContext=options?.context??{caller:"cli"},ctx={decisionId:id,...callContext},entryAt=Date.now(),logWrite=options?.decisionLog,log=logWrite!==void 0?{sink:logWrite.sink,startedAt:entryAt,phases:[],...logWrite.prelude!==void 0?{prelude:logWrite.prelude}:{},...input!==void 0?{input}:{}}:void 0;if(this.duplicateIds.has(id)){let sources=this.duplicateIds.get(id)?.join(", ")??"",error51=new DecisionCatalogError(`decision "${id}" is declared by multiple winning catalogs (${sources}); remove one to unblock decide`,sources,id);throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}let description;try{description=this.describe(id)}catch(error51){throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}if(log!==void 0)log.catalogSource=description.catalog,log.fallbackValue=description.fallback;let file2=this.resolution.files.find((f)=>Object.keys(f.catalog.decisions).includes(id)),{name,source}=this.effectiveMaker(id,file2?.catalog.decisions[id]?.maker,file2?.catalog.defaults.maker,options?.maker);if(!this.registry.has(name)){let error51=new UnknownDecisionMakerError(`maker "${name}" for decision "${id}" is not registered (built-ins: ${this.registry.names().join(", ")})`,name);throw emitDecisionRejected(options?.bus,ctx,error51,name,log!==void 0?{...log,makerSource:source}:void 0),error51}let decisionDefinition=file2?.catalog.decisions[id];if(decisionDefinition===void 0){let error51=new UnknownDecisionError(`decision "${id}" is not served by any loaded catalog`,id);throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}try{resolveDecisionInput(decisionDefinition,input)}catch(error51){throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}if(log!==void 0)log.phases.push({phase:"resolve",startedAt:entryAt,durationMs:Date.now()-entryAt});let digestSource=evidenceDigestSource(input),invocation=beginDecisionInvocation(options?.bus,ctx,{type:description.type,maker:name,makerSource:source,catalogLayer:description.layer,inputKeys:Object.keys(input??{}),...digestSource!==void 0?{evidenceDigest:`sha256:${createHash3("sha256").update(digestSource,"utf8").digest("hex")}`}:{},minConfidence:description.minConfidence},log),makerStartedAt=Date.now(),outcome;try{outcome=await this.hub.decide(id,input,{maker:name});let makerEndedAt=Date.now();if(log!==void 0)log.phases.push({phase:"maker",startedAt:makerStartedAt,durationMs:outcome.durationMs>0?outcome.durationMs:makerEndedAt-makerStartedAt});if(outcome.source==="model"&&outcome.reason==="accepted")invocation.succeed({value:outcome.value,confidence:outcome.confidence,maker:outcome.maker});else invocation.fail({reason:outcome.reason,fallbackValue:outcome.value,confidence:outcome.confidence,maker:outcome.maker});if(log!==void 0)log.phases.push({phase:"serve",startedAt:makerEndedAt,durationMs:Date.now()-makerEndedAt});return{...outcome,makerSource:source}}catch(error51){if(log!==void 0)log.error=error51 instanceof Error?error51.message:String(error51),log.phases.push({phase:"maker",startedAt:makerStartedAt,durationMs:Date.now()-makerStartedAt});throw invocation.fail({reason:"error",fallbackValue:description.fallback,confidence:null,maker:name,error:redactAndBound(error51 instanceof Error?error51.message:String(error51),[],512)}),error51}finally{invocation.end(outcome!==void 0?{durationMs:outcome.durationMs,value:outcome.value,source:outcome.source,reason:outcome.reason,maker:outcome.maker,confidence:outcome.confidence}:{durationMs:0,reason:"error",maker:name})}}status(){let config4=this.config,layers={project:0,registered:0,shared:0};for(let file2 of this.resolution.files)layers[file2.layer]++;let configDefaultMaker=config4?.decisions?.maker,configDecisionMakers=config4?.decisions?.makers??{},errors7=[...this.resolution.loadErrors.map((e)=>`load error in ${e.layer} layer (${e.path}): ${e.message}`),...this.resolution.duplicateIds.map((d)=>`duplicate decision id "${d.id}" in ${d.sources.join(", ")}`),...this.catalogErrors];if(configDefaultMaker!==void 0&&!this.registry.has(configDefaultMaker))errors7.push(`configured decisions.maker "${configDefaultMaker}" is not registered (built-ins: ${this.registry.names().join(", ")})`);for(let[id,name]of Object.entries(configDecisionMakers))if(!this.registry.has(name))errors7.push(`configured decisions.makers.${id} "${name}" is not registered (built-ins: ${this.registry.names().join(", ")})`);let perDecision=this.list().map((entry)=>{let file2=this.resolution.files.find((f)=>Object.keys(f.catalog.decisions).includes(entry.id)),{name,source}=this.effectiveMaker(entry.id,file2?.catalog.decisions[entry.id]?.maker,file2?.catalog.defaults.maker);return{id:entry.id,maker:name,source,registered:this.registry.has(name)}});return{ok:errors7.length===0,layers,loadErrors:this.resolution.loadErrors,duplicateIds:this.resolution.duplicateIds,registeredMakers:this.registry.names(),configDefaultMaker,configDecisionMakers,perDecision,errors:errors7}}effectiveMaker(id,catalogEntryMaker,catalogDefaultsMaker,flagMaker){let config4=this.config;if(flagMaker!==void 0)return{name:flagMaker,source:"flag"};let perDecision=config4?.decisions?.makers?.[id];if(perDecision!==void 0)return{name:perDecision,source:"config-decision"};let global3=config4?.decisions?.maker;if(global3!==void 0)return{name:global3,source:"config-default"};if(catalogEntryMaker!==void 0)return{name:catalogEntryMaker,source:"catalog-decision"};if(catalogDefaultsMaker!==void 0)return{name:catalogDefaultsMaker,source:"catalog-default"};return{name:this.hub.describe(id).maker,source:"catalog-default"}}config=null;withConfig(config4){if(config4===this.config)return this;return Object.assign(Object.create(this),{config:config4})}}var serviceCache=new Map;function evidenceDigestSource(input){if(typeof input?.instructions==="string"&&input.instructions!=="")return input.instructions;if(typeof input?.evidence==="string")return input.evidence;return}async function getDecisionService(config4,cwd,sharedRoot){let key=`${cwd}\x00${sharedRoot??""}`,pending=serviceCache.get(key);if(pending===void 0)pending=DecisionService.create(config4,cwd,sharedRoot),serviceCache.set(key,pending);return(await pending).withConfig(config4)}import{appendFileSync as appendFileSync3,existsSync as existsSync4,linkSync,lstatSync,mkdirSync as mkdirSync2,readdirSync as readdirSync3,readFileSync as readFileSync4,renameSync as renameSync2,statSync as statSync5,unlinkSync,writeFileSync as writeFileSync3}from"node:fs";import{tmpdir as tmpdir2}from"node:os";import{basename as basename3,dirname as dirname8,isAbsolute,join as join8,relative as relative2,resolve as resolve5,sep as sep3}from"node:path";import{dirname as dirname5,join as join5,normalize,relative,resolve as resolve3,sep}from"node:path";class RunArtifactPathError extends Error{constructor(message){super(message);this.name="RunArtifactPathError"}}function within(child,ancestor){return child===ancestor||child.startsWith(`${ancestor}${sep}`)}async function resolveDurableArtifactPath(fileSystem,workdir,pathRaw,plane){return resolveConfinedArtifactPath(fileSystem,workdir,pathRaw,plane==="memory"?".spur/memory":`.spur/memory/${plane}`)}async function resolveConfinedArtifactPath(fileSystem,workdir,pathRaw,root){if(typeof fileSystem.realPath!=="function")throw new RunArtifactPathError("physical path confinement requires a FileSystem with realPath support — refusing to skip confinement (0785 R2)");let workdirAbs=resolve3(workdir),canonicalWorkdir;try{canonicalWorkdir=fileSystem.realPath(workdirAbs)}catch(error51){throw new RunArtifactPathError(`project workdir could not be canonicalized: ${error51.message}`)}let lexicalTarget=normalize(resolve3(workdir,pathRaw)),lexicalRunRoot=normalize(join5(resolve3(workdir),root)),canonicalAlias=join5(canonicalWorkdir,root);if(lexicalTarget.startsWith(`${canonicalAlias}${sep}`))lexicalTarget=join5(lexicalRunRoot,relative(canonicalAlias,lexicalTarget));if(!lexicalTarget.startsWith(`${lexicalRunRoot}${sep}`))throw new RunArtifactPathError(`must resolve beneath ${root}/ (got ${pathRaw})`);let canonicalRunRootCandidate=join5(canonicalWorkdir,root),canonicalRunRoot=canonicalRunRootCandidate;if(await fileSystem.stat(canonicalRunRootCandidate)!==null){try{canonicalRunRoot=fileSystem.realPath(canonicalRunRootCandidate)}catch(error51){throw new RunArtifactPathError(`${root} could not be canonicalized: ${error51.message}`)}if(!within(canonicalRunRoot,canonicalWorkdir))throw new RunArtifactPathError(`${root} resolves outside the project workdir through a symlink`)}let probe=lexicalTarget;for(;;){if(await fileSystem.stat(probe)!==null)break;let parent=dirname5(probe),listed;try{listed=await fileSystem.readDir(parent)}catch(error51){if(String(error51.message).includes("ENOENT"))listed=null;else throw new RunArtifactPathError(`ancestor ${parent} is unreadable: ${error51.message}`)}let base2=probe.slice(parent.length+1);if(listed?.includes(base2))throw new RunArtifactPathError(`dangling symlink at ${probe} — refusing artifact path`);let parentNorm=normalize(parent);if(parentNorm===probe)throw new RunArtifactPathError(`no existing ancestor found for ${pathRaw}`);probe=parentNorm}let anchor;try{anchor=fileSystem.realPath(probe)}catch(error51){throw new RunArtifactPathError(`ancestor ${probe} could not be canonicalized: ${error51.message}`)}if(!within(anchor,canonicalWorkdir))throw new RunArtifactPathError(`ancestor ${probe} escapes the project workdir through a symlink`);let reconstructed=normalize(join5(anchor,relative(probe,lexicalTarget)));if(!reconstructed.startsWith(`${canonicalRunRoot}${sep}`))throw new RunArtifactPathError(`path escapes ${root}/ through a symlink (got ${pathRaw})`);return reconstructed}import{basename as basename2,dirname as dirname7,join as join7}from"node:path";import crypto4 from"node:crypto";import{tmpdir}from"node:os";import{dirname as dirname6,join as join6,resolve as resolve4,sep as sep2}from"node:path";init_dist6();import crypto3 from"node:crypto";function canonicalJsonStringify(obj){if(obj===null||typeof obj!=="object")return JSON.stringify(obj);if(Array.isArray(obj))return`[${obj.map(canonicalJsonStringify).join(",")}]`;return`{${Object.keys(obj).sort().map((key)=>`${JSON.stringify(key)}:${canonicalJsonStringify(obj[key])}`).join(",")}}`}function computeDefinitionDigest(workflow){let canonical=canonicalJsonStringify(workflow);return`sha256:${crypto3.createHash("sha256").update(canonical,"utf8").digest("hex")}`}class ProofCaptureError extends Error{stderr;constructor(message,stderr){super(message);this.stderr=stderr;this.name="ProofCaptureError"}}var TASK_SPEC_SECTIONS=["Background","Requirements","Acceptance Criteria","Design","Plan"],CANONICAL_TASK_HEADING_RE=/^##[ \t]+(\d+)\.[ \t]+(\S.*)$/m;function taskDocumentShapeError(content){let doc2=MarkdownDocument.parse(content,"task"),heading=CANONICAL_TASK_HEADING_RE.exec(doc2.bodyWithoutFrontmatter);if(heading===null)return"no canonical task heading (`## <WBS>. <title>`) was found";if((heading[2]??"").trim()==="")return`the canonical task heading for WBS ${heading[1]} has an empty title`;if(TASK_SPEC_SECTIONS.filter((section)=>doc2.hasSection(section)).length===0)return`no task specification section (${TASK_SPEC_SECTIONS.join(", ")}) was found`;return null}async function readProofInputContents(fileSystem=createNodeFileSystem2(),workdir,options){for(let name of["taskFile","featureFile"]){let value=options[name];if(value!==void 0&&typeof value!=="string")return{ok:!1,error:`${name} must be a string when supplied (got ${typeof value})`}}let readOne=async(name)=>{let raw=name==="taskFile"?options.taskFile:options.featureFile;if(raw===void 0||raw==="")return{};let workdirAbs=resolve4(workdir),resolved=resolve4(workdirAbs,raw);if(!(resolved===workdirAbs||resolved.startsWith(`${workdirAbs}${sep2}`)))return{error:`${name} must resolve under the workflow workdir (${workdirAbs}): ${raw}`};let stat2;try{stat2=await fileSystem.stat(resolved)}catch(error51){return{error:`${name} could not be inspected: ${error51.message}`}}if(stat2===null)return{error:`${name} does not exist: ${raw} (resolved ${resolved}) — an explicitly supplied spec must be readable, not silently omitted`};if(!stat2.isFile())return{error:`${name} is not a regular file: ${resolved}`};let content;try{content=await fileSystem.readFile(resolved)}catch(error51){return{error:`${name} is not readable: ${error51.message}`}}if(name==="taskFile"){let shapeError=taskDocumentShapeError(content);if(shapeError!==null)return{error:`taskFile is not a task document: ${raw} (resolved ${resolved}) — ${shapeError}. Supply the task specification markdown itself: a \`## <WBS>. <title>\` heading plus at least one of ${TASK_SPEC_SECTIONS.join(", ")}. A file containing only a path is not dereferenced.`}}return{content}},task=await readOne("taskFile");if(task.error!==void 0)return{ok:!1,error:task.error};let feature=await readOne("featureFile");if(feature.error!==void 0)return{ok:!1,error:feature.error};return{ok:!0,...task.content!==void 0?{taskContent:task.content}:{},...feature.content!==void 0?{featureContent:feature.content}:{}}}var DEFAULT_EXCLUDE_GLOBS=["docs/tasks*","docs/features*"];async function createGitAlternateTree(cwd,excludeGlobs=DEFAULT_EXCLUDE_GLOBS,executor=new NodeProcessExecutor2,fs2=createNodeFileSystem2()){let indexFile=join6(tmpdir(),`spur-proof-fingerprint-${crypto4.randomUUID()}.index`);try{await fs2.ensureDir(dirname6(indexFile));let env2=Object.fromEntries(Object.entries(getEnvVars()).filter((entry)=>entry[1]!==void 0));env2.GIT_INDEX_FILE=indexFile;let common4={cwd,env:env2,forceBuffered:!0,rejectOnError:!1},read=await executor.run({command:"git",args:["read-tree","HEAD"],...common4});if(read.exitCode!==0)throw new ProofCaptureError(`git read-tree HEAD failed with exit code ${read.exitCode}`,read.stderr);let excludes=excludeGlobs.map((glob)=>`:(exclude)${glob}`),add=await executor.run({command:"git",args:["add","-A","--",".",...excludes],...common4});if(add.exitCode!==0)throw new ProofCaptureError(`git add -A failed with exit code ${add.exitCode}`,add.stderr);let tree=await executor.run({command:"git",args:["write-tree"],...common4});if(tree.exitCode!==0)throw new ProofCaptureError(`git write-tree failed with exit code ${tree.exitCode}`,tree.stderr);return tree.stdout.trim()}catch(error51){if(error51 instanceof ProofCaptureError)throw error51;throw new ProofCaptureError(`git alternate-tree capture threw: ${error51.message}`)}finally{if(await fs2.exists(indexFile))try{await fs2.deleteFile(indexFile)}catch{}}}function canonicalizeCheckboxMarkers(body){return body.replace(/^([ \t]*)[-*+][ \t]+\[[ xX]\]/gm,"$1- [x]")}function extractTaskProofData(content){let doc2=MarkdownDocument.parse(content,"task"),fm=doc2.frontmatterData??{},wbs=typeof fm.wbs==="string"?fm.wbs:void 0,name=typeof fm.name==="string"?fm.name:void 0,feature_id=typeof fm.feature_id==="string"?fm.feature_id:void 0,depends_on;if(Array.isArray(fm.depends_on))depends_on=fm.depends_on.filter((d)=>typeof d==="string");else if(Array.isArray(fm.dependencies))depends_on=fm.dependencies.filter((d)=>typeof d==="string");let sections={},taskSections=["Background","Requirements","Acceptance Criteria","Design","Plan"];for(let sec of taskSections)if(doc2.hasSection(sec)){let body=doc2.getSection(sec);if(body!==null)sections[sec]=canonicalizeCheckboxMarkers(body.trim())}return{...wbs!==void 0?{wbs}:{},...name!==void 0?{name}:{},...feature_id!==void 0?{feature_id}:{},...depends_on!==void 0?{depends_on}:{},sections}}function extractFeatureProofData(content){let doc2=MarkdownDocument.parse(content,"feature"),fm=doc2.frontmatterData??{},id=typeof fm.id==="string"?fm.id:void 0,name=typeof fm.name==="string"?fm.name:void 0,sections={},featureSections=["Goal","Scope","Acceptance Criteria"];for(let sec of featureSections)if(doc2.hasSection(sec)){let body=doc2.getSection(sec);if(body!==null)sections[sec]=canonicalizeCheckboxMarkers(body.trim())}return{...id!==void 0?{id}:{},...name!==void 0?{name}:{},sections}}async function computeProofInputFingerprint(options={}){let cwd=options.cwd??process.cwd(),gitTree=await createGitAlternateTree(cwd,options.excludeGlobs??DEFAULT_EXCLUDE_GLOBS,options.processExecutor,options.fileSystem),task;if(options.taskContent!==void 0)task=extractTaskProofData(options.taskContent);let feature;if(options.featureContent!==void 0)feature=extractFeatureProofData(options.featureContent);let canonical=canonicalJsonStringify({gitTree,...task!==void 0?{task}:{},...feature!==void 0?{feature}:{},...options.learningsContent!==void 0?{learnings:options.learningsContent}:{}});return`sha256:${crypto4.createHash("sha256").update(canonical,"utf8").digest("hex")}`}var ProofInputFingerprint={compute:computeProofInputFingerprint};var FEATURE_RECEIPT_SCHEMA_VERSION=1,DEFAULT_FEATURE_VERIFICATION_CMD="bun run spur-check-feature",RECEIPT_ID_PATTERN=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function assertReceiptId(kind,id){if(!RECEIPT_ID_PATTERN.test(id)||id.includes(".."))throw Error(`invalid ${kind} for receipt path: ${JSON.stringify(id)}`)}function featureReceiptPaths(runDir,featureId2,runId){return assertReceiptId("featureId",featureId2),assertReceiptId("runId",runId),{runScoped:join7(dirname7(runDir),"memory","evidence",`${runId}-feature-verification.json`),featureScoped:join7(dirname7(runDir),"memory","evidence",`${featureId2}-feature-verification.json`),log:join7(runDir,`${runId}-feature-verification.log`),status:join7(runDir,`${runId}-feature-verification.status`)}}async function atomicWriteReceipt(fs2,path8,receipt){path8=await resolveDurableArtifactPath(fs2,receipt.workdir,path8,"evidence"),ensureDurablePlaneIgnored(receipt.workdir),await fs2.ensureDir(dirname7(path8));let body=`${JSON.stringify(receipt,null,4)}
1829
- `,tmp=`${path8}.tmp`;await fs2.writeFile(tmp,body),await fs2.rename(tmp,path8)}async function startFeatureVerificationReceipt(fs2,runDir,options){let receipt={schemaVersion:FEATURE_RECEIPT_SCHEMA_VERSION,featureId:options.featureId,runId:options.runId,workdir:options.workdir,verifier:options.verifier,verificationCmd:options.verificationCmd,inputDigest:options.inputDigest,status:"RUNNING",startedAt:options.startedAt??new Date().toISOString().replace(/\.\d{3}Z$/,"Z"),completedAt:null},paths=featureReceiptPaths(runDir,options.featureId,options.runId);return await fs2.ensureDir(runDir),await atomicWriteReceipt(fs2,paths.featureScoped,receipt),await atomicWriteReceipt(fs2,paths.runScoped,receipt),receipt}async function completeFeatureVerificationReceipt(fs2,runDir,running,options){if(running.status!=="RUNNING")throw Error(`receipt for run ${running.runId} is already ${running.status}`);let receipt={...running,status:options.status,inputDigest:options.inputDigest??running.inputDigest,completedAt:options.completedAt??new Date().toISOString().replace(/\.\d{3}Z$/,"Z")},paths=featureReceiptPaths(runDir,receipt.featureId,receipt.runId);return await fs2.ensureDir(runDir),await atomicWriteReceipt(fs2,paths.runScoped,receipt),await atomicWriteReceipt(fs2,paths.featureScoped,receipt),await fs2.writeFile(paths.status,`${receipt.status}
1830
- `),receipt}function parseFeatureVerificationReceipt(raw){let parsed;try{parsed=JSON.parse(raw)}catch(err){throw Error(`not JSON (${String(err)})`)}if(parsed===null||typeof parsed!=="object")throw Error("not an object");let r=parsed;if(r.schemaVersion!==FEATURE_RECEIPT_SCHEMA_VERSION)throw Error(`schemaVersion must be ${FEATURE_RECEIPT_SCHEMA_VERSION}`);let v=r.verifier;if(typeof r.featureId!=="string"||typeof r.runId!=="string"||typeof r.workdir!=="string"||typeof v?.name!=="string"||typeof v?.sourcePath!=="string"||typeof v?.layer!=="string"||typeof v?.definitionDigest!=="string"||typeof r.verificationCmd!=="string"||typeof r.inputDigest!=="string"||r.status!=="RUNNING"&&r.status!=="PASS"&&r.status!=="FAIL"||typeof r.startedAt!=="string"||r.completedAt!==null&&typeof r.completedAt!=="string")throw Error("required fields missing or mistyped");return parsed}async function readReceiptCopy(fs2,path8,label){let raw;try{raw=await fs2.readFile(path8)}catch{throw Error(`no ${label} receipt at ${path8}; run the feature-scoped verification pass`)}try{return parseFeatureVerificationReceipt(raw)}catch(err){throw Error(`${label} receipt at ${basename2(path8)} is not a valid schema-v1 artifact (${String(err)})`)}}async function validateFeatureVerificationReceipt(fs2,options){let latest;try{latest=await readReceiptCopy(fs2,featureReceiptPaths(options.runDir,options.featureId,options.featureId).featureScoped,"feature-latest")}catch(err){let message=String(err);return{ok:!1,reason:message.includes("not a valid")?"malformed":"missing",detail:message}}let paths=featureReceiptPaths(options.runDir,options.featureId,latest.runId);try{let runScoped=await readReceiptCopy(fs2,paths.runScoped,"run-scoped");if(JSON.stringify(runScoped)!==JSON.stringify(latest))return{ok:!1,reason:"divergent",detail:`run-scoped ${paths.runScoped} and feature-latest receipts disagree — a newer attempt started or the evidence was tampered with`}}catch(err){let message=String(err);return{ok:!1,reason:message.includes("not a valid")?"malformed":"missing",detail:message}}if(latest.featureId!==options.featureId)return{ok:!1,reason:"cross-feature",detail:`receipt belongs to feature "${latest.featureId}", not "${options.featureId}"`};if(latest.status==="FAIL")return{ok:!1,reason:"failed",detail:`verification pass recorded FAIL (started ${latest.startedAt}, ended ${latest.completedAt})`};if(latest.status==="RUNNING")return{ok:!1,reason:"run",detail:`verification pass is still RUNNING (started ${latest.startedAt}); no completion evidence exists`};if(options.runPort?.readRunRow){let row=await options.runPort.readRunRow(latest.runId);if(!row)return{ok:!1,reason:"run",detail:`run ${latest.runId} that recorded the receipt does not exist in the run store`};if(row.status!=="done")return{ok:!1,reason:"run",detail:`run ${latest.runId} is "${row.status}", not terminal done — the recording run never finished`};if(row.definitionDigest&&row.definitionDigest!==latest.verifier.definitionDigest)return{ok:!1,reason:"run",detail:`run ${latest.runId} attached with definition digest ${row.definitionDigest}, receipt records ${latest.verifier.definitionDigest} (receipt sourcePath=${latest.verifier.sourcePath}) — a different spur install may have attached the run; re-run the verification pass and the transition with the same spur binary`};let recordedCmd;try{let vars=row.varsJson?JSON.parse(row.varsJson):void 0;if(vars&&typeof vars==="object"&&typeof vars.verificationCmd==="string")recordedCmd=vars.verificationCmd}catch{recordedCmd=void 0}if(recordedCmd!==void 0&&recordedCmd!==latest.verificationCmd)return{ok:!1,reason:"run",detail:`run ${latest.runId} recorded effective command "${recordedCmd}", receipt records "${latest.verificationCmd}"`};if(options.runPort.hasArtifact&&!await options.runPort.hasArtifact(latest.runId,paths.runScoped))return{ok:!1,reason:"run",detail:`receipt ${basename2(paths.runScoped)} is not registered as an artifact of run ${latest.runId}`}}let verifier=latest.verifier,current=options.currentVerifier,drifted=["name","layer","definitionDigest"].filter((k)=>verifier[k]!==current[k]);if(drifted.length>0)return{ok:!1,reason:"contract-mismatch",detail:`receipt recorded verifier ${verifier.name}@${verifier.layer} (${verifier.definitionDigest}), completion evaluates ${current.name}@${current.layer} (${current.definitionDigest}) — the selected definition changed after the pass (${drifted.join(", ")}); receipt sourcePath=${verifier.sourcePath}, current sourcePath=${current.sourcePath}${verifier.sourcePath!==current.sourcePath?" — a different spur install resolved a different definition; re-run the verification pass and the transition with the same spur binary":""}`};if(latest.verificationCmd!==options.currentVerificationCmd)return{ok:!1,reason:"contract-mismatch",detail:`receipt recorded with verifier "${latest.verificationCmd}", completion evaluates the configured command "${options.currentVerificationCmd}"`};if(latest.inputDigest!==options.currentDigest)return{ok:!1,reason:"stale",detail:`receipt digest ${latest.inputDigest} ≠ current inputs ${options.currentDigest} — tree, spec, learnings or check contract changed after the pass`};return{ok:!0,receipt:latest}}async function captureFeatureReceiptDigest(repoRoot,featureContent,learningsContent){return ProofInputFingerprint.compute({cwd:repoRoot,featureContent,learningsContent})}class InvalidWorkflowRunIdError extends Error{code="invalid-run-id";constructor(runId){super(`Invalid workflow run id: ${JSON.stringify(runId)}`);this.name="InvalidWorkflowRunIdError"}}init_zod();var VERDICT_AGGREGATES=["PASS","PARTIAL","FAIL","UNKNOWN"],ROW_STATUSES=["MET","PARTIAL","UNMET","N/A"],CHECK_SEVERITIES=["blocker","major","minor","advisory"],CONFIDENCE_LEVELS=["HIGH","MEDIUM","LOW"],verdictSchema=exports_external.string().transform((v,ctx)=>{let up=v.toUpperCase();if(!VERDICT_AGGREGATES.includes(up))return ctx.addIssue({code:"custom",message:`invalid verdict "${v}" (expected PASS|PARTIAL|FAIL|UNKNOWN)`}),"UNKNOWN";return up}),coverageRowSchema=exports_external.object({id:exports_external.string().optional(),scenario:exports_external.string().optional(),status:exports_external.string(),evidenceType:exports_external.string().optional(),evidence:exports_external.string().optional()}).superRefine((r,ctx)=>{if(r.id!==void 0&&r.scenario!==void 0&&r.id!==r.scenario)ctx.addIssue({code:"custom",message:`id/scenario conflict ("${r.id}" vs "${r.scenario}")`,path:["scenario"]});if(!ROW_STATUSES.includes(r.status.toUpperCase()))ctx.addIssue({code:"custom",message:`invalid row status "${r.status}"`,path:["status"]})}).transform((r)=>({id:r.id??r.scenario??"",status:r.status.toUpperCase(),evidenceType:r.evidenceType??"",evidence:r.evidence??""})),checkSchema=exports_external.object({name:exports_external.string().optional(),check:exports_external.string().optional(),id:exports_external.string().optional(),status:exports_external.string(),evidence:exports_external.string().optional().default(""),severity:exports_external.enum(CHECK_SEVERITIES).optional()}).superRefine((c3,ctx)=>{if(c3.name===void 0&&c3.check===void 0&&c3.id===void 0)ctx.addIssue({code:"custom",message:"check row needs one of name/check/id",path:["name"]})}).transform((c3)=>({name:c3.name??c3.check??c3.id??"",status:c3.status,evidence:c3.evidence,severity:c3.severity})),verifyVerdictSchema=exports_external.object({wbs:exports_external.string().optional().default(""),verdict:verdictSchema,requirements:exports_external.array(coverageRowSchema).optional().default([]),acceptanceCriteria:exports_external.array(coverageRowSchema).optional().default([]),checks:exports_external.array(checkSchema).optional().default([]),source:exports_external.string().optional(),confidence:exports_external.string().transform((c3,ctx)=>{let up=c3.toUpperCase();if(!CONFIDENCE_LEVELS.includes(up))return ctx.addIssue({code:"custom",message:`invalid confidence "${c3}" (expected HIGH|MEDIUM|LOW)`,path:["confidence"]}),"LOW";return up}).optional(),pipelineRunId:exports_external.string().optional(),recordedAt:exports_external.string().optional()});function parseVerifyVerdict(raw,fallbackWbs){let wbs=fallbackWbs??"";if(raw.trim()==="")return{kind:"missing",wbs};let parsed;try{parsed=JSON.parse(raw)}catch(err){return{kind:"malformed",wbs,message:err.message}}if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))return{kind:"invalid",wbs,reason:"root must be a JSON object"};let result=verifyVerdictSchema.safeParse(parsed);if(!result.success){let issues=result.error.issues.map((i2)=>`${i2.path.join(".")}: ${i2.message}`);return{kind:"invalid",wbs,reason:issues.join("; "),issues}}let verdict={...result.data,wbs:result.data.wbs!==""?result.data.wbs:wbs};return{kind:"valid",wbs,verdict}}function runStoragePaths(cwd){let projectRoot=resolveRunStorageRoot(cwd);return{projectRoot,scratchDir:join8(projectRoot,".spur","run"),evidenceDir:join8(projectRoot,".spur","memory","evidence"),recordsDir:join8(projectRoot,".spur","memory","runs")}}function resolveRunStorageRoot(cwd){let start=resolve5(cwd),sharedTmp=new Set([resolve5(tmpdir2()),"/tmp","/private/tmp"]),current=start;for(;;){if(!sharedTmp.has(current)&&(existsSync4(join8(current,".spur"))||existsSync4(join8(current,"package.json"))))return current;let parent=resolve5(current,"..");if(parent===current)return start;current=parent}}var DURABLE_PLANE_EXCLUDE=".spur/memory/";function ensureDurablePlaneIgnored(workdir){try{let gitPath=join8(workdir,".git");if(!existsSync4(gitPath))return;let excludePath=join8(gitPath,"info","exclude");try{if(statSync5(gitPath).isFile()){let gitdir=readFileSync4(gitPath,"utf8").split(/\r?\n/).find((line)=>line.startsWith("gitdir:"))?.slice(7).trim();if(gitdir){let resolved=isAbsolute(gitdir)?gitdir:resolve5(workdir,gitdir),common4=/[/\\]worktrees[/\\][^/\\]+$/.test(resolved)?resolve5(resolved,"..",".."):resolved;excludePath=join8(common4,"info","exclude")}}}catch{}let current="";try{current=readFileSync4(excludePath,"utf8")}catch{current=""}if(current.includes(DURABLE_PLANE_EXCLUDE))return;mkdirSync2(dirname8(excludePath),{recursive:!0});let sep4=current===""||current.endsWith(`
1845
+ ${details}`)}async function loadMergedConfig(layers,opts,validateJsonSchema2){let globalRaw=layers.global!==void 0?await readRawYamlLayer(layers.global,"global"):{},projectRaw=layers.project!==void 0?await readRawYamlLayer(layers.project,"project"):{},replacementFile=projectConfigReplacement(layers);if(layers.global!==void 0)assertNoRetiredTeamKey(globalRaw,layers.global,replacementFile),assertNoGlobalFleetSection(globalRaw,layers.global,replacementFile);if(layers.project!==void 0)assertNoRetiredTeamKey(projectRaw,layers.project,replacementFile);let merged=mergeSpurConfigLayers(globalRaw,projectRaw);if(validateJsonSchema2){let source=layers.project??layers.global??"";try{await validateDeclaredJsonSchema(merged,source,schemaValidationContext(opts))}catch(error51){throw enrichSchemaViolationError(error51,merged,globalRaw,projectRaw,layers)}}return parseMergedWithProvenance(merged,globalRaw,projectRaw,layers)}var BUNDLED_DECISIONS_PREFIX="bundled:";function registeredDecisionPaths(config4){let paths=config4?.decisions?.paths??[],bundledRoot=bundledConfigRoot(),expanded=[];for(let path8 of paths)if(path8.startsWith(BUNDLED_DECISIONS_PREFIX)){if(bundledRoot!==null)expanded.push(join8(bundledRoot,path8.slice(BUNDLED_DECISIONS_PREFIX.length)))}else expanded.push(path8);return expanded}function decisionLayers(opts){let sharedRoot=opts.sharedRoot!==void 0?opts.sharedRoot:bundledConfigRoot(),sharedPath=sharedRoot!==null?resolve3(opts.cwd,join8(sharedRoot,"decisions")):null,layers=[],seen=new Set,add=(id2,path8)=>{if(seen.has(path8))return;seen.add(path8),layers.push({id:id2,path:path8})};add("project",resolve3(opts.cwd,join8(opts.cwd,".spur","decisions")));for(let entry of opts.registered){if(sharedPath!==null&&resolve3(opts.cwd,entry)===sharedPath)continue;add("registered",resolve3(opts.cwd,entry))}if(sharedPath!==null)add("shared",sharedPath);return layers}async function resolveDecisionCatalogs(opts){let layers=decisionLayers(opts),winners=new Map;for(let layer of layers){let names=[];try{names=await Array.fromAsync(new Bun.Glob("*.yaml").scan({cwd:layer.path}))}catch{continue}for(let name of names.sort())if(!winners.has(name))winners.set(name,{layer:layer.id,path:join8(layer.path,name)})}let files=[],loadErrors=[];for(let[name,winner]of winners)try{let catalog=await loadDecisionCatalog(winner.path);files.push({layer:winner.layer,path:winner.path,basename:name,catalog})}catch(error51){loadErrors.push({layer:winner.layer,path:winner.path,message:error51 instanceof Error?error51.message:String(error51)})}files.sort((a2,b)=>layerRank(a2.layer)-layerRank(b.layer)||a2.basename.localeCompare(b.basename));let seen=new Map,duplicateIds=[];for(let file2 of files)for(let id2 of Object.keys(file2.catalog.decisions)){let first=seen.get(id2);if(first===void 0)seen.set(id2,file2.path);else{let entry=duplicateIds.find((d)=>d.id===id2);if(entry){if(!entry.sources.includes(file2.path))entry.sources.push(file2.path)}else duplicateIds.push({id:id2,sources:[first,file2.path]})}}return{layers,files,loadErrors,duplicateIds}}var LAYER_RANK={project:0,registered:1,shared:2},layerRank=(id2)=>LAYER_RANK[id2];function wbsFromVar(raw){return typeof raw==="string"&&/^\d{4}$/.test(raw)&&raw!=="0000"?raw:void 0}async function loadRunCorrelation(persistence,runId){try{let run=await persistence.loadRun(runId);if(run===void 0)return{};let vars=(await persistence.loadLatestStateSnapshot(runId))?.data.effectiveVars,wbs=wbsFromVar(vars?.wbs);return{...run.workflow_name!==""?{workflowName:run.workflow_name}:{},...wbs!==void 0?{wbs}:{}}}catch{return{}}}var DECISION_MESSAGE_MAX_CHARS=512;function decisionErrorKind(error51){if(error51 instanceof UnknownDecisionError)return"unknown-decision";if(error51 instanceof DecisionInputError)return"input";if(error51 instanceof UnknownDecisionMakerError)return"unknown-decision-maker";if(error51 instanceof DecisionCatalogError)return"catalog";return"error"}function decisionCorrelationFromVars(vars){let runId=vars.__runId;if(runId===void 0||runId==="")return;let wbs=wbsFromVar(vars.wbs);return{runId,...vars.__workflowName!==void 0&&vars.__workflowName!==""?{workflowName:vars.__workflowName}:{},...vars.__nodeId!==void 0&&vars.__nodeId!==""?{nodeId:vars.__nodeId}:{},...wbs!==void 0?{wbs}:{}}}function emitDecisionRejected(bus,ctx,error51,maker,log){let invocationId=crypto.randomUUID(),message=error51 instanceof Error?error51.message:String(error51);if(emitDecisionEvent(bus,"decision.rejected",{invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{},severity:"error",errorKind:decisionErrorKind(error51),message:redactAndBound(message,[],DECISION_MESSAGE_MAX_CHARS),...maker!==void 0?{maker}:{}}),log===void 0)return;writeDecisionLog(log.sink,buildDecisionLogRow(log.sink,{id:invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{},...maker!==void 0?{maker}:{},...log.makerSource!==void 0?{makerSource:log.makerSource}:{},...log.input!==void 0?{input:log.input}:{},outcome:"rejected",reason:decisionErrorKind(error51),error:message,startedAtMs:log.prelude?.startedAt??log.startedAt,endedAtMs:Date.now(),phases:[...log.prelude?.phases??[],...log.phases]}))}function beginDecisionInvocation(bus,ctx,start,log){let invocationId=crypto.randomUUID(),base2=()=>({invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{}});return emitDecisionEvent(bus,"decision.start",{...base2(),severity:"info",type:start.type,maker:start.maker,makerSource:start.makerSource,catalogLayer:start.catalogLayer,inputKeys:[...start.inputKeys],...start.evidenceDigest!==void 0?{evidenceDigest:start.evidenceDigest}:{},minConfidence:start.minConfidence}),{succeed(fields){emitDecisionEvent(bus,"decision.success",{...base2(),severity:"info",...fields})},fail(fields){emitDecisionEvent(bus,"decision.failure",{...base2(),severity:fields.reason==="error"?"error":"warning",...fields})},end(fields){if(emitDecisionEvent(bus,"decision.end",{...base2(),severity:"info",...fields}),log===void 0)return;let outcome=fields.source===void 0?"rejected":fields.source==="model"&&fields.reason==="accepted"?"accepted":"fallback";writeDecisionLog(log.sink,buildDecisionLogRow(log.sink,{id:invocationId,decisionId:ctx.decisionId,caller:ctx.caller,...ctx.correlation!==void 0?{correlation:{...ctx.correlation}}:{},decisionType:start.type,maker:start.maker,makerSource:start.makerSource,catalogLayer:start.catalogLayer,...log.catalogSource!==void 0?{catalogSource:log.catalogSource}:{},minConfidence:start.minConfidence,...log.input!==void 0?{input:log.input}:{},inputKeys:start.inputKeys,...log.question!==void 0?{question:log.question}:{},...start.evidenceDigest!==void 0?{evidenceDigest:start.evidenceDigest}:{},outcome,...fields.value!==void 0?{value:fields.value}:{},...log.fallbackValue!==void 0?{fallbackValue:log.fallbackValue}:{},...fields.source!==void 0?{source:fields.source}:{},...fields.reason!==void 0?{reason:fields.reason}:{},...fields.confidence!==void 0?{confidence:fields.confidence}:{},...log.error!==void 0?{error:log.error}:{},startedAtMs:log.prelude?.startedAt??log.startedAt,endedAtMs:Date.now(),phases:[...log.prelude?.phases??[],...log.phases]}))}}}function emitDecisionEvent(bus,name,payload){if(bus===void 0)return;try{bus.emit(name,payload).catch(()=>{})}catch{}}class DecisionService{registry;resolution;hub;duplicateIds;catalogErrors=[];constructor(resolution){this.resolution=resolution,this.duplicateIds=new Map(resolution.duplicateIds.map((d)=>[d.id,d.sources]));let env3=getEnvVars();this.registry=new DecisionMakerRegistry({builtins:{makerOptions:{env:env3},driverOptions:{"laya-local":{env:env3}}}});let clef=clefCredentials(env3);if(clef!==void 0)this.registry.register("clef",()=>createDecisionMaker({driver:createClefDriver(clef)}));this.hub=new DecisionHub({registry:this.registry});let declaredEarlier=new Set;for(let file2 of resolution.files){let decisions=Object.fromEntries(Object.entries(file2.catalog.decisions).filter(([id2])=>!declaredEarlier.has(id2)));for(let id2 of Object.keys(file2.catalog.decisions))declaredEarlier.add(id2);try{this.hub.load({...file2.catalog,decisions})}catch(error51){this.catalogErrors.push(error51 instanceof Error?error51.message:String(error51))}}}static async create(config4,cwd,sharedRoot){let resolution=await resolveDecisionCatalogs({cwd,registered:registeredDecisionPaths(config4),sharedRoot});return new DecisionService(resolution).withConfig(config4)}list(){let layerByFile=new Map(this.resolution.files.map((f)=>[f.path,f.layer]));return this.hub.list().map((summary)=>({...summary,layer:layerByFile.get(summary.source)??"shared"}))}describe(id2){let descriptor=this.hub.describe(id2),file2=this.resolution.files.find((f)=>Object.keys(f.catalog.decisions).includes(id2)),raw=file2?.catalog.decisions[id2];return{id:id2,type:descriptor.type,description:descriptor.description,catalog:descriptor.source,layer:file2?.layer??"shared",minConfidence:descriptor.minConfidence,criteria:descriptor.criteria,fallback:descriptor.fallback,parameters:descriptor.parameters,model:descriptor.model,effectiveMaker:this.effectiveMaker(id2,raw?.maker,file2?.catalog.defaults.maker)}}async decide(id2,input,options){let callContext=options?.context??{caller:"cli"},ctx={decisionId:id2,...callContext},entryAt=Date.now(),logWrite=options?.decisionLog,log=logWrite!==void 0?{sink:logWrite.sink,startedAt:entryAt,phases:[],...logWrite.prelude!==void 0?{prelude:logWrite.prelude}:{},...input!==void 0?{input}:{}}:void 0;if(this.duplicateIds.has(id2)){let sources=this.duplicateIds.get(id2)?.join(", ")??"",error51=new DecisionCatalogError(`decision "${id2}" is declared by multiple winning catalogs (${sources}); remove one to unblock decide`,sources,id2);throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}let description;try{description=this.describe(id2)}catch(error51){throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}if(log!==void 0)log.catalogSource=description.catalog,log.fallbackValue=description.fallback;let file2=this.resolution.files.find((f)=>Object.keys(f.catalog.decisions).includes(id2)),{name,source}=this.effectiveMaker(id2,file2?.catalog.decisions[id2]?.maker,file2?.catalog.defaults.maker,options?.maker);if(!this.registry.has(name)){let error51=new UnknownDecisionMakerError(`maker "${name}" for decision "${id2}" is not registered (built-ins: ${this.registry.names().join(", ")})`,name);throw emitDecisionRejected(options?.bus,ctx,error51,name,log!==void 0?{...log,makerSource:source}:void 0),error51}let decisionDefinition=file2?.catalog.decisions[id2];if(decisionDefinition===void 0){let error51=new UnknownDecisionError(`decision "${id2}" is not served by any loaded catalog`,id2);throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}try{resolveDecisionInput(decisionDefinition,input)}catch(error51){throw emitDecisionRejected(options?.bus,ctx,error51,void 0,log),error51}if(log!==void 0)log.phases.push({phase:"resolve",startedAt:entryAt,durationMs:Date.now()-entryAt});let digestSource=evidenceDigestSource(input),invocation=beginDecisionInvocation(options?.bus,ctx,{type:description.type,maker:name,makerSource:source,catalogLayer:description.layer,inputKeys:Object.keys(input??{}),...digestSource!==void 0?{evidenceDigest:`sha256:${createHash3("sha256").update(digestSource,"utf8").digest("hex")}`}:{},minConfidence:description.minConfidence},log),makerStartedAt=Date.now(),outcome;try{outcome=await this.hub.decide(id2,input,{maker:name});let makerEndedAt=Date.now();if(log!==void 0)log.phases.push({phase:"maker",startedAt:makerStartedAt,durationMs:outcome.durationMs>0?outcome.durationMs:makerEndedAt-makerStartedAt});if(outcome.source==="model"&&outcome.reason==="accepted")invocation.succeed({value:outcome.value,confidence:outcome.confidence,maker:outcome.maker});else invocation.fail({reason:outcome.reason,fallbackValue:outcome.value,confidence:outcome.confidence,maker:outcome.maker});if(log!==void 0)log.phases.push({phase:"serve",startedAt:makerEndedAt,durationMs:Date.now()-makerEndedAt});return{...outcome,makerSource:source}}catch(error51){if(log!==void 0)log.error=error51 instanceof Error?error51.message:String(error51),log.phases.push({phase:"maker",startedAt:makerStartedAt,durationMs:Date.now()-makerStartedAt});throw invocation.fail({reason:"error",fallbackValue:description.fallback,confidence:null,maker:name,error:redactAndBound(error51 instanceof Error?error51.message:String(error51),[],512)}),error51}finally{invocation.end(outcome!==void 0?{durationMs:outcome.durationMs,value:outcome.value,source:outcome.source,reason:outcome.reason,maker:outcome.maker,confidence:outcome.confidence}:{durationMs:0,reason:"error",maker:name})}}status(){let config4=this.config,layers={project:0,registered:0,shared:0};for(let file2 of this.resolution.files)layers[file2.layer]++;let configDefaultMaker=config4?.decisions?.maker,configDecisionMakers=config4?.decisions?.makers??{},errors7=[...this.resolution.loadErrors.map((e)=>`load error in ${e.layer} layer (${e.path}): ${e.message}`),...this.resolution.duplicateIds.map((d)=>`duplicate decision id "${d.id}" in ${d.sources.join(", ")}`),...this.catalogErrors];if(configDefaultMaker!==void 0&&!this.registry.has(configDefaultMaker))errors7.push(`configured decisions.maker "${configDefaultMaker}" is not registered (built-ins: ${this.registry.names().join(", ")})`);for(let[id2,name]of Object.entries(configDecisionMakers))if(!this.registry.has(name))errors7.push(`configured decisions.makers.${id2} "${name}" is not registered (built-ins: ${this.registry.names().join(", ")})`);let perDecision=this.list().map((entry)=>{let file2=this.resolution.files.find((f)=>Object.keys(f.catalog.decisions).includes(entry.id)),{name,source}=this.effectiveMaker(entry.id,file2?.catalog.decisions[entry.id]?.maker,file2?.catalog.defaults.maker);return{id:entry.id,maker:name,source,registered:this.registry.has(name)}});return{ok:errors7.length===0,layers,loadErrors:this.resolution.loadErrors,duplicateIds:this.resolution.duplicateIds,registeredMakers:this.registry.names(),configDefaultMaker,configDecisionMakers,perDecision,errors:errors7}}effectiveMaker(id2,catalogEntryMaker,catalogDefaultsMaker,flagMaker){let config4=this.config;if(flagMaker!==void 0)return{name:flagMaker,source:"flag"};let perDecision=config4?.decisions?.makers?.[id2];if(perDecision!==void 0)return{name:perDecision,source:"config-decision"};let global3=config4?.decisions?.maker;if(global3!==void 0)return{name:global3,source:"config-default"};if(catalogEntryMaker!==void 0)return{name:catalogEntryMaker,source:"catalog-decision"};if(catalogDefaultsMaker!==void 0)return{name:catalogDefaultsMaker,source:"catalog-default"};return{name:this.hub.describe(id2).maker,source:"catalog-default"}}config=null;withConfig(config4){if(config4===this.config)return this;return Object.assign(Object.create(this),{config:config4})}}var serviceCache=new Map;function clefCredentials(env3){let{CLOUDFLARE_ACCOUNT_ID:accountId,CLOUDFLARE_AUTH_TOKEN:apiToken}=env3;if(accountId===void 0||accountId===""||apiToken===void 0||apiToken==="")return;return{accountId,apiToken}}function evidenceDigestSource(input){if(typeof input?.instructions==="string"&&input.instructions!=="")return input.instructions;if(typeof input?.evidence==="string")return input.evidence;return}async function getDecisionService(config4,cwd,sharedRoot){let key=`${cwd}\x00${sharedRoot??""}`,pending=serviceCache.get(key);if(pending===void 0)pending=DecisionService.create(config4,cwd,sharedRoot),serviceCache.set(key,pending);return(await pending).withConfig(config4)}import{appendFileSync as appendFileSync3,existsSync as existsSync6,linkSync,lstatSync,mkdirSync as mkdirSync2,readdirSync as readdirSync3,readFileSync as readFileSync4,renameSync as renameSync2,statSync as statSync7,unlinkSync,writeFileSync as writeFileSync3}from"node:fs";import{tmpdir as tmpdir2}from"node:os";import{basename as basename3,dirname as dirname10,isAbsolute as isAbsolute2,join as join12,relative as relative3,resolve as resolve6,sep as sep3}from"node:path";import{dirname as dirname7,join as join9,normalize as normalize2,relative as relative2,resolve as resolve4,sep}from"node:path";class RunArtifactPathError extends Error{constructor(message){super(message);this.name="RunArtifactPathError"}}function within(child,ancestor){return child===ancestor||child.startsWith(`${ancestor}${sep}`)}async function resolveDurableArtifactPath(fileSystem,workdir,pathRaw,plane){return resolveConfinedArtifactPath(fileSystem,workdir,pathRaw,plane==="memory"?".spur/memory":`.spur/memory/${plane}`)}async function resolveConfinedArtifactPath(fileSystem,workdir,pathRaw,root){if(typeof fileSystem.realPath!=="function")throw new RunArtifactPathError("physical path confinement requires a FileSystem with realPath support — refusing to skip confinement (0785 R2)");let workdirAbs=resolve4(workdir),canonicalWorkdir;try{canonicalWorkdir=fileSystem.realPath(workdirAbs)}catch(error51){throw new RunArtifactPathError(`project workdir could not be canonicalized: ${error51.message}`)}let lexicalTarget=normalize2(resolve4(workdir,pathRaw)),lexicalRunRoot=normalize2(join9(resolve4(workdir),root)),canonicalAlias=join9(canonicalWorkdir,root);if(lexicalTarget.startsWith(`${canonicalAlias}${sep}`))lexicalTarget=join9(lexicalRunRoot,relative2(canonicalAlias,lexicalTarget));if(!lexicalTarget.startsWith(`${lexicalRunRoot}${sep}`))throw new RunArtifactPathError(`must resolve beneath ${root}/ (got ${pathRaw})`);let canonicalRunRootCandidate=join9(canonicalWorkdir,root),canonicalRunRoot=canonicalRunRootCandidate;if(await fileSystem.stat(canonicalRunRootCandidate)!==null){try{canonicalRunRoot=fileSystem.realPath(canonicalRunRootCandidate)}catch(error51){throw new RunArtifactPathError(`${root} could not be canonicalized: ${error51.message}`)}if(!within(canonicalRunRoot,canonicalWorkdir))throw new RunArtifactPathError(`${root} resolves outside the project workdir through a symlink`)}let probe=lexicalTarget;for(;;){if(await fileSystem.stat(probe)!==null)break;let parent=dirname7(probe),listed;try{listed=await fileSystem.readDir(parent)}catch(error51){if(String(error51.message).includes("ENOENT"))listed=null;else throw new RunArtifactPathError(`ancestor ${parent} is unreadable: ${error51.message}`)}let base2=probe.slice(parent.length+1);if(listed?.includes(base2))throw new RunArtifactPathError(`dangling symlink at ${probe} — refusing artifact path`);let parentNorm=normalize2(parent);if(parentNorm===probe)throw new RunArtifactPathError(`no existing ancestor found for ${pathRaw}`);probe=parentNorm}let anchor;try{anchor=fileSystem.realPath(probe)}catch(error51){throw new RunArtifactPathError(`ancestor ${probe} could not be canonicalized: ${error51.message}`)}if(!within(anchor,canonicalWorkdir))throw new RunArtifactPathError(`ancestor ${probe} escapes the project workdir through a symlink`);let reconstructed=normalize2(join9(anchor,relative2(probe,lexicalTarget)));if(!reconstructed.startsWith(`${canonicalRunRoot}${sep}`))throw new RunArtifactPathError(`path escapes ${root}/ through a symlink (got ${pathRaw})`);return reconstructed}import{basename as basename2,dirname as dirname9,join as join11}from"node:path";init_src();import crypto4 from"node:crypto";import{tmpdir}from"node:os";import{dirname as dirname8,join as join10,resolve as resolve5,sep as sep2}from"node:path";init_dist6();import crypto3 from"node:crypto";function canonicalJsonStringify(obj){if(obj===null||typeof obj!=="object")return JSON.stringify(obj);if(Array.isArray(obj))return`[${obj.map(canonicalJsonStringify).join(",")}]`;return`{${Object.keys(obj).sort().map((key)=>`${JSON.stringify(key)}:${canonicalJsonStringify(obj[key])}`).join(",")}}`}function computeDefinitionDigest(workflow){let canonical=canonicalJsonStringify(workflow);return`sha256:${crypto3.createHash("sha256").update(canonical,"utf8").digest("hex")}`}class ProofCaptureError extends Error{stderr;constructor(message,stderr){super(message);this.stderr=stderr;this.name="ProofCaptureError"}}var TASK_SPEC_SECTIONS=["Background","Requirements","Acceptance Criteria","Design","Plan"],CANONICAL_TASK_HEADING_RE=/^##[ \t]+(\d+)\.[ \t]+(\S.*)$/m;function taskDocumentShapeError(content){let doc2=MarkdownDocument.parse(content,"task"),heading=CANONICAL_TASK_HEADING_RE.exec(doc2.bodyWithoutFrontmatter);if(heading===null)return"no canonical task heading (`## <WBS>. <title>`) was found";if((heading[2]??"").trim()==="")return`the canonical task heading for WBS ${heading[1]} has an empty title`;if(TASK_SPEC_SECTIONS.filter((section)=>doc2.hasSection(section)).length===0)return`no task specification section (${TASK_SPEC_SECTIONS.join(", ")}) was found`;return null}async function readProofInputContents(fileSystem=createNodeFileSystem2(),workdir,options){for(let name of["taskFile","featureFile"]){let value=options[name];if(value!==void 0&&typeof value!=="string")return{ok:!1,error:`${name} must be a string when supplied (got ${typeof value})`}}let readOne=async(name)=>{let raw=name==="taskFile"?options.taskFile:options.featureFile;if(raw===void 0||raw==="")return{};let workdirAbs=resolve5(workdir),resolved=resolve5(workdirAbs,raw);if(!(resolved===workdirAbs||resolved.startsWith(`${workdirAbs}${sep2}`)))return{error:`${name} must resolve under the workflow workdir (${workdirAbs}): ${raw}`};let stat3;try{stat3=await fileSystem.stat(resolved)}catch(error51){return{error:`${name} could not be inspected: ${error51.message}`}}if(stat3===null)return{error:`${name} does not exist: ${raw} (resolved ${resolved}) — an explicitly supplied spec must be readable, not silently omitted`};if(!stat3.isFile())return{error:`${name} is not a regular file: ${resolved}`};let content;try{content=await fileSystem.readFile(resolved)}catch(error51){return{error:`${name} is not readable: ${error51.message}`}}if(name==="taskFile"){let shapeError=taskDocumentShapeError(content);if(shapeError!==null)return{error:`taskFile is not a task document: ${raw} (resolved ${resolved}) — ${shapeError}. Supply the task specification markdown itself: a \`## <WBS>. <title>\` heading plus at least one of ${TASK_SPEC_SECTIONS.join(", ")}. A file containing only a path is not dereferenced.`}}return{content}},task=await readOne("taskFile");if(task.error!==void 0)return{ok:!1,error:task.error};let feature=await readOne("featureFile");if(feature.error!==void 0)return{ok:!1,error:feature.error};return{ok:!0,...task.content!==void 0?{taskContent:task.content}:{},...feature.content!==void 0?{featureContent:feature.content}:{}}}var DEFAULT_EXCLUDE_GLOBS=["docs/tasks*","docs/features*"];async function createGitAlternateTree(cwd,excludeGlobs=DEFAULT_EXCLUDE_GLOBS,executor=new NodeProcessExecutor2,fs3=createNodeFileSystem2()){let indexFile=join10(tmpdir(),`spur-proof-fingerprint-${crypto4.randomUUID()}.index`);try{await fs3.ensureDir(dirname8(indexFile));let env3=Object.fromEntries(Object.entries(getEnvVars()).filter((entry)=>entry[1]!==void 0));env3.GIT_INDEX_FILE=indexFile;let common4={cwd,env:env3,forceBuffered:!0,rejectOnError:!1},read=await executor.run({command:"git",args:["read-tree","HEAD"],...common4});if(read.exitCode!==0)throw new ProofCaptureError(`git read-tree HEAD failed with exit code ${read.exitCode}`,read.stderr);let excludes=excludeGlobs.map((glob)=>`:(exclude)${glob}`),add=await executor.run({command:"git",args:["add","-A","--",".",...excludes],...common4});if(add.exitCode!==0)throw new ProofCaptureError(`git add -A failed with exit code ${add.exitCode}`,add.stderr);let tree=await executor.run({command:"git",args:["write-tree"],...common4});if(tree.exitCode!==0)throw new ProofCaptureError(`git write-tree failed with exit code ${tree.exitCode}`,tree.stderr);return tree.stdout.trim()}catch(error51){if(error51 instanceof ProofCaptureError)throw error51;throw new ProofCaptureError(`git alternate-tree capture threw: ${error51.message}`)}finally{if(await fs3.exists(indexFile))try{await fs3.deleteFile(indexFile)}catch{}}}function canonicalizeCheckboxMarkers(body){return body.replace(/^([ \t]*)[-*+][ \t]+\[[ xX]\]/gm,"$1- [x]")}function extractTaskProofData(content){let doc2=MarkdownDocument.parse(content,"task"),fm=doc2.frontmatterData??{},wbs=typeof fm.wbs==="string"?fm.wbs:void 0,name=typeof fm.name==="string"?fm.name:void 0,feature_id=typeof fm.feature_id==="string"?fm.feature_id:void 0,depends_on;if(Array.isArray(fm.depends_on))depends_on=fm.depends_on.filter((d)=>typeof d==="string");else if(Array.isArray(fm.dependencies))depends_on=fm.dependencies.filter((d)=>typeof d==="string");let sections={},taskSections=["Background","Requirements","Acceptance Criteria","Design","Plan"];for(let sec of taskSections)if(doc2.hasSection(sec)){let body=doc2.getSection(sec);if(body!==null)sections[sec]=canonicalizeCheckboxMarkers(body.trim())}return{...wbs!==void 0?{wbs}:{},...name!==void 0?{name}:{},...feature_id!==void 0?{feature_id}:{},...depends_on!==void 0?{depends_on}:{},sections}}function extractFeatureProofData(content){let doc2=MarkdownDocument.parse(content,"feature"),fm=doc2.frontmatterData??{},id2=typeof fm.id==="string"?fm.id:void 0,name=typeof fm.name==="string"?fm.name:void 0,sections={},featureSections=["Goal","Scope","Acceptance Criteria"];for(let sec of featureSections)if(doc2.hasSection(sec)){let body=doc2.getSection(sec);if(body!==null)sections[sec]=canonicalizeCheckboxMarkers(body.trim())}return{...id2!==void 0?{id:id2}:{},...name!==void 0?{name}:{},sections}}async function computeProofInputFingerprint(options={}){let cwd=options.cwd??process.cwd(),gitTree=await createGitAlternateTree(cwd,options.excludeGlobs??DEFAULT_EXCLUDE_GLOBS,options.processExecutor,options.fileSystem),task;if(options.taskContent!==void 0)task=extractTaskProofData(options.taskContent);let feature;if(options.featureContent!==void 0)feature=extractFeatureProofData(options.featureContent);let canonical=canonicalJsonStringify({gitTree,...task!==void 0?{task}:{},...feature!==void 0?{feature}:{},...options.learningsContent!==void 0?{learnings:options.learningsContent}:{}});return`sha256:${crypto4.createHash("sha256").update(canonical,"utf8").digest("hex")}`}var ProofInputFingerprint={compute:computeProofInputFingerprint};var FEATURE_RECEIPT_SCHEMA_VERSION=1,DEFAULT_FEATURE_VERIFICATION_CMD="bun run spur-check-feature",RECEIPT_ID_PATTERN=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function assertReceiptId(kind,id2){if(!RECEIPT_ID_PATTERN.test(id2)||id2.includes(".."))throw Error(`invalid ${kind} for receipt path: ${JSON.stringify(id2)}`)}function featureReceiptPaths(runDir,featureId2,runId){return assertReceiptId("featureId",featureId2),assertReceiptId("runId",runId),{runScoped:join11(dirname9(runDir),"memory","evidence",`${runId}-feature-verification.json`),featureScoped:join11(dirname9(runDir),"memory","evidence",`${featureId2}-feature-verification.json`),log:join11(runDir,`${runId}-feature-verification.log`),status:join11(runDir,`${runId}-feature-verification.status`)}}async function atomicWriteReceipt(fs3,path8,receipt){path8=await resolveDurableArtifactPath(fs3,receipt.workdir,path8,"evidence"),ensureDurablePlaneIgnored(receipt.workdir),await fs3.ensureDir(dirname9(path8));let body=`${JSON.stringify(receipt,null,4)}
1846
+ `,tmp=`${path8}.tmp`;await fs3.writeFile(tmp,body),await fs3.rename(tmp,path8)}async function startFeatureVerificationReceipt(fs3,runDir,options){let receipt={schemaVersion:FEATURE_RECEIPT_SCHEMA_VERSION,featureId:options.featureId,runId:options.runId,workdir:options.workdir,verifier:options.verifier,verificationCmd:options.verificationCmd,inputDigest:options.inputDigest,status:"RUNNING",startedAt:options.startedAt??new Date().toISOString().replace(/\.\d{3}Z$/,"Z"),completedAt:null},paths=featureReceiptPaths(runDir,options.featureId,options.runId);return await fs3.ensureDir(runDir),await atomicWriteReceipt(fs3,paths.featureScoped,receipt),await atomicWriteReceipt(fs3,paths.runScoped,receipt),receipt}async function completeFeatureVerificationReceipt(fs3,runDir,running,options){if(running.status!=="RUNNING")throw Error(`receipt for run ${running.runId} is already ${running.status}`);let receipt={...running,status:options.status,inputDigest:options.inputDigest??running.inputDigest,completedAt:options.completedAt??new Date().toISOString().replace(/\.\d{3}Z$/,"Z")},paths=featureReceiptPaths(runDir,receipt.featureId,receipt.runId);return await fs3.ensureDir(runDir),await atomicWriteReceipt(fs3,paths.runScoped,receipt),await atomicWriteReceipt(fs3,paths.featureScoped,receipt),await fs3.writeFile(paths.status,`${receipt.status}
1847
+ `),receipt}function parseFeatureVerificationReceipt(raw){let parsed;try{parsed=JSON.parse(raw)}catch(err){throw Error(`not JSON (${String(err)})`)}if(parsed===null||typeof parsed!=="object")throw Error("not an object");let r=parsed;if(r.schemaVersion!==FEATURE_RECEIPT_SCHEMA_VERSION)throw Error(`schemaVersion must be ${FEATURE_RECEIPT_SCHEMA_VERSION}`);let v=r.verifier;if(typeof r.featureId!=="string"||typeof r.runId!=="string"||typeof r.workdir!=="string"||typeof v?.name!=="string"||typeof v?.sourcePath!=="string"||typeof v?.layer!=="string"||typeof v?.definitionDigest!=="string"||typeof r.verificationCmd!=="string"||typeof r.inputDigest!=="string"||r.status!=="RUNNING"&&r.status!=="PASS"&&r.status!=="FAIL"||typeof r.startedAt!=="string"||r.completedAt!==null&&typeof r.completedAt!=="string")throw Error("required fields missing or mistyped");return parsed}async function readReceiptCopy(fs3,path8,label){let raw;try{raw=await fs3.readFile(path8)}catch{throw Error(`no ${label} receipt at ${path8}; run the feature-scoped verification pass`)}try{return parseFeatureVerificationReceipt(raw)}catch(err){throw Error(`${label} receipt at ${basename2(path8)} is not a valid schema-v1 artifact (${String(err)})`)}}async function validateFeatureVerificationReceipt(fs3,options){let latest;try{latest=await readReceiptCopy(fs3,featureReceiptPaths(options.runDir,options.featureId,options.featureId).featureScoped,"feature-latest")}catch(err){let message=String(err);return{ok:!1,reason:message.includes("not a valid")?"malformed":"missing",detail:message}}let paths=featureReceiptPaths(options.runDir,options.featureId,latest.runId);try{let runScoped=await readReceiptCopy(fs3,paths.runScoped,"run-scoped");if(JSON.stringify(runScoped)!==JSON.stringify(latest))return{ok:!1,reason:"divergent",detail:`run-scoped ${paths.runScoped} and feature-latest receipts disagree — a newer attempt started or the evidence was tampered with`}}catch(err){let message=String(err);return{ok:!1,reason:message.includes("not a valid")?"malformed":"missing",detail:message}}if(latest.featureId!==options.featureId)return{ok:!1,reason:"cross-feature",detail:`receipt belongs to feature "${latest.featureId}", not "${options.featureId}"`};if(latest.status==="FAIL")return{ok:!1,reason:"failed",detail:`verification pass recorded FAIL (started ${latest.startedAt}, ended ${latest.completedAt})`};if(latest.status==="RUNNING")return{ok:!1,reason:"run",detail:`verification pass is still RUNNING (started ${latest.startedAt}); no completion evidence exists`};if(options.runPort?.readRunRow){let row=await options.runPort.readRunRow(latest.runId);if(!row)return{ok:!1,reason:"run",detail:`run ${latest.runId} that recorded the receipt does not exist in the run store`};if(row.status!=="done")return{ok:!1,reason:"run",detail:`run ${latest.runId} is "${row.status}", not terminal done — the recording run never finished`};if(row.definitionDigest&&row.definitionDigest!==latest.verifier.definitionDigest)return{ok:!1,reason:"run",detail:`run ${latest.runId} attached with definition digest ${row.definitionDigest}, receipt records ${latest.verifier.definitionDigest} (receipt sourcePath=${latest.verifier.sourcePath}) — a different spur install may have attached the run; re-run the verification pass and the transition with the same spur binary`};let recordedCmd;try{let vars=row.varsJson?JSON.parse(row.varsJson):void 0;if(vars&&typeof vars==="object"&&typeof vars.verificationCmd==="string")recordedCmd=vars.verificationCmd}catch{recordedCmd=void 0}if(recordedCmd!==void 0&&recordedCmd!==latest.verificationCmd)return{ok:!1,reason:"run",detail:`run ${latest.runId} recorded effective command "${recordedCmd}", receipt records "${latest.verificationCmd}"`};if(options.runPort.hasArtifact&&!await options.runPort.hasArtifact(latest.runId,paths.runScoped))return{ok:!1,reason:"run",detail:`receipt ${basename2(paths.runScoped)} is not registered as an artifact of run ${latest.runId}`}}let verifier=latest.verifier,current=options.currentVerifier,drifted=["name","layer","definitionDigest"].filter((k)=>verifier[k]!==current[k]);if(drifted.length>0)return{ok:!1,reason:"contract-mismatch",detail:`receipt recorded verifier ${verifier.name}@${verifier.layer} (${verifier.definitionDigest}), completion evaluates ${current.name}@${current.layer} (${current.definitionDigest}) — the selected definition changed after the pass (${drifted.join(", ")}); receipt sourcePath=${verifier.sourcePath}, current sourcePath=${current.sourcePath}${verifier.sourcePath!==current.sourcePath?" — a different spur install resolved a different definition; re-run the verification pass and the transition with the same spur binary":""}`};if(latest.verificationCmd!==options.currentVerificationCmd)return{ok:!1,reason:"contract-mismatch",detail:`receipt recorded with verifier "${latest.verificationCmd}", completion evaluates the configured command "${options.currentVerificationCmd}"`};if(latest.inputDigest!==options.currentDigest)return{ok:!1,reason:"stale",detail:`receipt digest ${latest.inputDigest} ≠ current inputs ${options.currentDigest} — tree, spec, learnings or check contract changed after the pass`};return{ok:!0,receipt:latest}}async function captureFeatureReceiptDigest(repoRoot,featureContent,learningsContent){return ProofInputFingerprint.compute({cwd:repoRoot,featureContent,learningsContent})}class InvalidWorkflowRunIdError extends Error{code="invalid-run-id";constructor(runId){super(`Invalid workflow run id: ${JSON.stringify(runId)}`);this.name="InvalidWorkflowRunIdError"}}init_zod();var VERDICT_AGGREGATES=["PASS","PARTIAL","FAIL","UNKNOWN"],ROW_STATUSES=["MET","PARTIAL","UNMET","N/A"],CHECK_SEVERITIES=["blocker","major","minor","advisory"],CONFIDENCE_LEVELS=["HIGH","MEDIUM","LOW"],verdictSchema=exports_external.string().transform((v,ctx)=>{let up=v.toUpperCase();if(!VERDICT_AGGREGATES.includes(up))return ctx.addIssue({code:"custom",message:`invalid verdict "${v}" (expected PASS|PARTIAL|FAIL|UNKNOWN)`}),"UNKNOWN";return up}),coverageRowSchema=exports_external.object({id:exports_external.string().optional(),scenario:exports_external.string().optional(),status:exports_external.string(),evidenceType:exports_external.string().optional(),evidence:exports_external.string().optional()}).superRefine((r,ctx)=>{if(r.id!==void 0&&r.scenario!==void 0&&r.id!==r.scenario)ctx.addIssue({code:"custom",message:`id/scenario conflict ("${r.id}" vs "${r.scenario}")`,path:["scenario"]});if(!ROW_STATUSES.includes(r.status.toUpperCase()))ctx.addIssue({code:"custom",message:`invalid row status "${r.status}"`,path:["status"]})}).transform((r)=>({id:r.id??r.scenario??"",status:r.status.toUpperCase(),evidenceType:r.evidenceType??"",evidence:r.evidence??""})),checkSchema=exports_external.object({name:exports_external.string().optional(),check:exports_external.string().optional(),id:exports_external.string().optional(),status:exports_external.string(),evidence:exports_external.string().optional().default(""),severity:exports_external.enum(CHECK_SEVERITIES).optional()}).superRefine((c3,ctx)=>{if(c3.name===void 0&&c3.check===void 0&&c3.id===void 0)ctx.addIssue({code:"custom",message:"check row needs one of name/check/id",path:["name"]})}).transform((c3)=>({name:c3.name??c3.check??c3.id??"",status:c3.status,evidence:c3.evidence,severity:c3.severity})),verifyVerdictSchema=exports_external.object({wbs:exports_external.string().optional().default(""),verdict:verdictSchema,requirements:exports_external.array(coverageRowSchema).optional().default([]),acceptanceCriteria:exports_external.array(coverageRowSchema).optional().default([]),checks:exports_external.array(checkSchema).optional().default([]),source:exports_external.string().optional(),confidence:exports_external.string().transform((c3,ctx)=>{let up=c3.toUpperCase();if(!CONFIDENCE_LEVELS.includes(up))return ctx.addIssue({code:"custom",message:`invalid confidence "${c3}" (expected HIGH|MEDIUM|LOW)`,path:["confidence"]}),"LOW";return up}).optional(),pipelineRunId:exports_external.string().optional(),recordedAt:exports_external.string().optional()});function parseVerifyVerdict(raw,fallbackWbs){let wbs=fallbackWbs??"";if(raw.trim()==="")return{kind:"missing",wbs};let parsed;try{parsed=JSON.parse(raw)}catch(err){return{kind:"malformed",wbs,message:err.message}}if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))return{kind:"invalid",wbs,reason:"root must be a JSON object"};let result=verifyVerdictSchema.safeParse(parsed);if(!result.success){let issues=result.error.issues.map((i2)=>`${i2.path.join(".")}: ${i2.message}`);return{kind:"invalid",wbs,reason:issues.join("; "),issues}}let verdict={...result.data,wbs:result.data.wbs!==""?result.data.wbs:wbs};return{kind:"valid",wbs,verdict}}function runStoragePaths(cwd){let projectRoot=resolveRunStorageRoot(cwd);return{projectRoot,scratchDir:join12(projectRoot,".spur","run"),evidenceDir:join12(projectRoot,".spur","memory","evidence"),recordsDir:join12(projectRoot,".spur","memory","runs")}}function resolveRunStorageRoot(cwd){let start=resolve6(cwd),sharedTmp=new Set([resolve6(tmpdir2()),"/tmp","/private/tmp"]),current=start;for(;;){if(!sharedTmp.has(current)&&(existsSync6(join12(current,".spur"))||existsSync6(join12(current,"package.json"))))return current;let parent=resolve6(current,"..");if(parent===current)return start;current=parent}}var DURABLE_PLANE_EXCLUDE=".spur/memory/";function ensureDurablePlaneIgnored(workdir){try{let gitPath=join12(workdir,".git");if(!existsSync6(gitPath))return;let excludePath=join12(gitPath,"info","exclude");try{if(statSync7(gitPath).isFile()){let gitdir=readFileSync4(gitPath,"utf8").split(/\r?\n/).find((line)=>line.startsWith("gitdir:"))?.slice(7).trim();if(gitdir){let resolved=isAbsolute2(gitdir)?gitdir:resolve6(workdir,gitdir),common4=/[/\\]worktrees[/\\][^/\\]+$/.test(resolved)?resolve6(resolved,"..",".."):resolved;excludePath=join12(common4,"info","exclude")}}}catch{}let current="";try{current=readFileSync4(excludePath,"utf8")}catch{current=""}if(current.includes(DURABLE_PLANE_EXCLUDE))return;mkdirSync2(dirname10(excludePath),{recursive:!0});let sep4=current===""||current.endsWith(`
1831
1848
  `)?"":`
1832
1849
  `;appendFileSync3(excludePath,`${sep4}# spur durable run-record plane (E71/1026): must stay proof-fingerprint-inert
1833
1850
  ${DURABLE_PLANE_EXCLUDE}
1834
- `,"utf8")}catch{}}var TERMINAL_REASONS=["done","paused-operator","failed-check","failed-agent","failed-timeout","failed-guard","cancelled","interrupted","retry-exhausted"];function isTerminalReason(value){return TERMINAL_REASONS.includes(value)}var BOOKKEEPING_WORKFLOWS=["task-lifecycle","feature-lifecycle"];function isBookkeepingWorkflow(workflowName){return BOOKKEEPING_WORKFLOWS.includes(workflowName)}function classifyTerminalReason({status,engineReason,actionKind,errorText}){if(engineReason!==void 0&&engineReason!==null&&isTerminalReason(engineReason))return engineReason;if(status==="interrupted")return"interrupted";if(status==="paused")return"paused-operator";if(status==="done")return"done";if(engineReason==="no-passing-transition"||engineReason==="no-passing-edge")return"failed-guard";if(engineReason==="iteration-bound-exceeded")return"retry-exhausted";if(errorText!==void 0&&errorText!==null&&/outcome[-_ ]?unknown/i.test(errorText))return"interrupted";if(errorText!==void 0&&errorText!==null&&/timeout/i.test(errorText))return"failed-timeout";if(actionKind==="agent.run")return"failed-agent";return"failed-check"}var MAX_FIELD_LENGTH=256,SECRET_PATTERN2=/(?:sk-[a-z0-9_-]{8,}|(?:api[_-]?key|token|secret|password)\s*[:=]\s*\S+|bearer\s+\S+)/gi;function bounded2(value,maxLength=MAX_FIELD_LENGTH){let redacted=value.replace(SECRET_PATTERN2,"[REDACTED]");return redacted.length<=maxLength?redacted:`${redacted.slice(0,maxLength)}…`}function projectShellInvocation(options){let command=typeof options?.command==="string"?options.command:"";if(command.trim()==="")return;return{command:bounded2(sanitizeCommand(command),80),...typeof options?.cwd==="string"&&options.cwd!==""?{cwd:options.cwd}:{},...typeof options?.timeoutMs==="number"&&Number.isFinite(options.timeoutMs)?{timeoutMs:Math.max(0,options.timeoutMs)}:{}}}function sanitizeCommand(cmd){let trimmed=cmd.replace(/\n+/g," ").replace(/\s+/g," ").trim();if(/(?:authorization|bearer|password|secret|token|api_key|private_key)/i.test(trimmed))return"[shell command redacted]";return trimmed}function isRecord3(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function withShellInvocation(result,options){let invocation=projectShellInvocation(options);if(invocation===void 0)return result;return{...result,data:{...isRecord3(result.data)?result.data:{},invocation}}}var UNPERSISTED_PREFIX="trace-unpersisted:";class RunRowNotFoundError extends Error{runId;constructor(runId){super(`run row not found: ${runId}`);this.name="RunRowNotFoundError",this.runId=runId}}class WorkflowActionTraceWriter{inner;recordFailure;db;boundaries=new Map;constructor(inner,recordFailure,db2){this.inner=inner;this.recordFailure=recordFailure;this.db=db2}async saveActionStart(runId,node,kind,options){let outcome=await this.guard("action.start",{runId,node,kind},()=>this.inner.saveActionStart(runId,node,kind,options));if(!outcome.ok){let syntheticId=`${UNPERSISTED_PREFIX}${crypto.randomUUID()}`;return this.boundaries.set(syntheticId,{runId,node,kind}),this.lastStart={runId,node,kind},syntheticId}return this.boundaries.set(outcome.value,{runId,node,kind,options}),this.lastStart={runId,node,kind},outcome.value}lastStart;async saveActionFinalize(actionId,status,durationMs,ok,kind,result,redactor){let boundary2=this.boundaries.get(actionId),origin2=boundary2??this.lastStart,stamped=kind==="shell"&&boundary2!==void 0&&isRecord3(result)?withShellInvocation(result,boundary2.options):result;await this.guard("action.finish",{runId:origin2?.runId??"",node:origin2?.node,kind},()=>this.inner.saveActionFinalize(actionId,status,durationMs,ok,kind,stamped,redactor)),this.boundaries.delete(actionId)}async finalizeRun(runId,status,completedAt,fence,reason){await this.inner.finalizeRun(runId,status,completedAt,fence,reason===void 0?void 0:classifyTerminalReason({status,engineReason:reason,errorText:reason}))}async claimRunOwnership(runId,owner,expectedStatuses){return this.inner.claimRunOwnership(runId,owner,expectedStatuses)}async interruptRun(runId,reason){return this.inner.interruptRun(runId,reason)}async recordAction(boundary2){let start=await this.guard("action.start",{runId:boundary2.runId,node:boundary2.node,kind:boundary2.kind},()=>this.inner.saveActionStart(boundary2.runId,boundary2.node,boundary2.kind));if(!start.ok)return start;let finish=await this.guard("action.finish",{runId:boundary2.runId,node:boundary2.node,kind:boundary2.kind},()=>this.inner.saveActionFinalize(start.value,boundary2.status,boundary2.durationMs,boundary2.ok,boundary2.kind,boundary2.result,boundary2.redactor));if(!finish.ok)return finish;return await this.backdateStart(start.value,boundary2),{ok:!0,actionId:start.value}}async backdateStart(actionId,boundary2){let db2=this.db;if(db2===void 0||boundary2.durationMs<=0)return;await this.guard("action.backdate",{runId:boundary2.runId,node:boundary2.node,kind:boundary2.kind},async()=>{let dao2=new ActionRunDao(db2),completedAt=await dao2.completedAtById(actionId);if(completedAt===null)return;let startedAt=new Date(new Date(completedAt).getTime()-boundary2.durationMs).toISOString();await dao2.setStartedAt(actionId,startedAt)})}async closeRun(runId,status,completedAt,reason){let existing=await this.inner.loadRun(runId);if(existing===void 0)throw new RunRowNotFoundError(runId);if(await this.inner.finalizeRun(runId,status,completedAt??new Date().toISOString(),void 0,reason===void 0?void 0:classifyTerminalReason({status,engineReason:reason,errorText:reason})),this.db===void 0)return{ok:!0,startedAt:existing.started_at};return{ok:!0,actionRows:(await new ActionRunDao(this.db).actionRowsByRunId(runId)).length,startedAt:existing.started_at}}async guard(operation,context4,emit){try{return{ok:!0,value:await emit()}}catch(error51){let failure={operation,runId:context4.runId,...context4.node!==void 0?{node:context4.node}:{},...context4.kind!==void 0?{kind:context4.kind}:{},error:error51 instanceof Error?error51.message:String(error51),at:new Date().toISOString()};try{this.recordFailure?.(failure)}catch{}return{ok:!1,failure}}}createRun(record3){return this.inner.createRun(record3)}savePhase(runId,phase,status){return this.inner.savePhase(runId,phase,status)}saveTransition(runId,from,to,trigger){return this.inner.saveTransition(runId,from,to,trigger)}saveWorkflowState(runId,state,data){return this.inner.saveWorkflowState(runId,state,data)}commitTransition(runId,from,to,trigger,state,data,phase){return this.inner.commitTransition(runId,from,to,trigger,state,data,phase)}loadRun(runId){return this.inner.loadRun(runId)}listRuns(){return this.inner.listRuns()}findRunByKey(workflowName,externalKey){return this.inner.findRunByKey(workflowName,externalKey)}createOrAttachRun(record3){return this.inner.createOrAttachRun(record3)}reseedRun(runId,newState){return this.inner.reseedRun(runId,newState)}loadCurrentState(runId){return this.inner.loadCurrentState(runId)}loadLatestStateSnapshot(runId){return this.inner.loadLatestStateSnapshot(runId)}listPausedRuns(options){return this.inner.listPausedRuns(options)}saveBranchStart(runId,parallelNode,branchId,startNode){return this.inner.saveBranchStart(runId,parallelNode,branchId,startNode)}saveBranchFinalize(runId,branchId,status,durationMs,outputVars,error51){return this.inner.saveBranchFinalize(runId,branchId,status,durationMs,outputVars,error51)}listRunBranches(runId,parallelNode){return this.inner.listRunBranches(runId,parallelNode)}commitJoin(runId,parallelNode,joinNode,mergedVars,phase){return this.inner.commitJoin(runId,parallelNode,joinNode,mergedVars,phase)}}function createWorkflowActionTraceWriter(db2,recordFailure){return new WorkflowActionTraceWriter(new DbWorkflowPersistenceAdapter(db2),recordFailure,db2)}init_zod();import{join as join9}from"node:path";function confidenceLevel(confidence){if(confidence===null||confidence===void 0)return"LOW";if(!Number.isFinite(confidence)||confidence<0||confidence>1)return"LOW";if(confidence>=0.8)return"HIGH";return confidence>=0.5?"MEDIUM":"LOW"}init_dist9();import{createHash as createHash4}from"node:crypto";function evidencePayloadDigest(payload){return`sha256:${createHash4("sha256").update(canonicalJsonStringify(payload),"utf8").digest("hex")}`}async function defaultDecisionMaker(){return(await Promise.resolve().then(() => (init_dist9(),exports_dist3))).createDecisionMaker({timeoutMs:15000,maxRetries:0})}var DEFAULT_MIN_CONFIDENCE2=0.8,NOUL_YES_THRESHOLD=0.5,DECIDE_EVIDENCE_MAX_CHARS=2000;async function runDecide(options,deps){let started=deps.now(),base2={schemaVersion:1,id:options.id,method:options.method},degraded=(reason,backend=null,confidence=null,evidenceDigest2=null)=>({...base2,value:options.default,backend,confidence,confidenceLevel:confidenceLevel(confidence),degraded:!0,reason,source:"default",evidenceDigest:evidenceDigest2,durationMs:deps.now()-started});if(!deps.enabled)return degraded("disabled");let maker;try{maker=deps.decisionMaker?await deps.decisionMaker():await defaultDecisionMaker()}catch{return degraded("no-backend")}let evidence=[],evidenceDigest=null;if(options.evidence!==void 0&&options.evidence.length>0)try{evidence=await Promise.all(options.evidence.map(async(path8)=>redactAndBound(await deps.readFile(path8),[],DECIDE_EVIDENCE_MAX_CHARS))),evidenceDigest=evidencePayloadDigest(evidence)}catch{return degraded("error")}let state={id:options.id,evidence},minConfidence=options.minConfidence??DEFAULT_MIN_CONFIDENCE2;try{if(options.method==="choice"){let labels=Object.fromEntries((options.choices??[]).map((c3)=>[c3,c3])),answer2=await maker.choice(state,options.question,labels);if(!(answer2.label in labels))return degraded("error",maker.driver,answer2.confidence,evidenceDigest);if(answer2.confidence<minConfidence)return degraded("low-confidence",maker.driver,answer2.confidence,evidenceDigest);return{...base2,value:answer2.label,backend:maker.driver,confidence:answer2.confidence,confidenceLevel:confidenceLevel(answer2.confidence),degraded:!1,reason:"accepted",source:"model",evidenceDigest,durationMs:deps.now()-started}}let confidence=(await maker.noul(state,options.question)).probability;if(confidence<minConfidence)return degraded("low-confidence",maker.driver,confidence,evidenceDigest);return{...base2,value:confidence>=NOUL_YES_THRESHOLD?"yes":"no",backend:maker.driver,confidence,confidenceLevel:confidenceLevel(confidence),degraded:!1,reason:"accepted",source:"model",evidenceDigest,durationMs:deps.now()-started}}catch(error51){return degraded(error51 instanceof DecisionTimeoutError?"timeout":"error",maker.driver,null,evidenceDigest)}}async function readDecisionEvidence(paths,readFile2){return await Promise.all(paths.map(async(path8)=>{let text3;try{text3=await readFile2(path8)}catch{throw Error(`evidence file "${path8}" is unreadable`)}return redactAndBound(text3,[],DECIDE_EVIDENCE_MAX_CHARS)}))}var DECIDE_KIND="decide",InlineDecideOptionsSchema=exports_external.object({id:exports_external.string().min(1),method:exports_external.enum(["choice","noul"]),question:exports_external.string().min(1),choices:exports_external.array(exports_external.string().min(1)).min(2).optional(),evidence:exports_external.array(exports_external.string().min(1)).optional(),default:exports_external.string().min(1),minConfidence:exports_external.number().min(0).max(1).optional(),resultFile:exports_external.string().min(1)}).strict().superRefine((options,ctx)=>{if(options.method==="choice"){if(options.choices===void 0)ctx.addIssue({code:"custom",message:"choices is required for method choice (at least 2 labels)"});else if(!options.choices.includes(options.default))ctx.addIssue({code:"custom",message:`default "${options.default}" is not one of choices [${options.choices.join(", ")}]`});return}if(options.choices!==void 0)ctx.addIssue({code:"custom",message:"choices is only valid for method choice; noul uses the engine yes/no outcomes"});if(options.default!=="yes"&&options.default!=="no")ctx.addIssue({code:"custom",message:'default must be "yes" or "no" for method noul'})}),CatalogDecideOptionsSchema=exports_external.object({id:exports_external.string().min(1),decision:exports_external.string().min(1),params:exports_external.record(exports_external.string(),exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null()])).optional(),evidence:exports_external.array(exports_external.string().min(1)).optional(),instructions:exports_external.string().min(1).optional(),resultFile:exports_external.string().min(1)}).strict().superRefine((options,ctx)=>{if(options.evidence!==void 0&&options.instructions!==void 0)ctx.addIssue({code:"custom",message:"instructions is reserved and cannot be combined with evidence; declare one implicit-input channel"})}),DecideOptionsSchema=exports_external.union([InlineDecideOptionsSchema,CatalogDecideOptionsSchema]);function isCatalogDecideOptions(options){return"decision"in options}class DecideActionRunner{fileSystem;deps;kind=DECIDE_KIND;inlineWarned=new Map;constructor(fileSystem,deps){this.fileSystem=fileSystem;this.deps=deps}async execute(rawOptions,context4){let parsed=DecideOptionsSchema.safeParse(rawOptions);if(!parsed.success)return{ok:!1,error:`${DECIDE_KIND}: invalid options — ${parsed.error.issues.map((i2)=>i2.message).join("; ")}`};let options=parsed.data;return isCatalogDecideOptions(options)?await this.executeCatalog(options,context4):await this.executeInline(options,context4)}decisionCorrelation(context4){return decisionCorrelationFromVars({...context4.vars,__runId:context4.runId,__nodeId:context4.stateOrNodeId})??{runId:context4.runId,nodeId:context4.stateOrNodeId}}async executeInline(options,context4){let runKey=context4.runId??"inline-decide",warned=this.inlineWarned.get(runKey);if(this.deps.warn!==void 0&&!warned?.has(options.id)){if(warned===void 0)warned=new Set,this.inlineWarned.set(runKey,warned);warned.add(options.id),this.deps.warn(`decide ${context4.stateOrNodeId}/${options.id}: inline decide options are deprecated; use { decision: <catalog-id>, params?, evidence?, resultFile }`)}let workdir=context4.workdir??".",result=await runDecide({...options,...options.evidence!==void 0?{evidence:options.evidence.map((path8)=>join9(workdir,path8))}:{},resultFile:join9(workdir,options.resultFile)},{enabled:this.deps.enabled,...this.deps.decisionMaker!==void 0?{decisionMaker:this.deps.decisionMaker}:{},readFile:async(path8)=>await this.fileSystem.readFile(path8),now:Date.now.bind(Date)}),bus=this.deps.observabilityBus;if(this.deps.enabled&&bus!==void 0&&result.reason!=="disabled"){let maker=result.backend??"none",endedAt=Date.now(),log=this.deps.decisionLog!==void 0?{sink:this.deps.decisionLog,startedAt:endedAt-result.durationMs,phases:[{phase:"maker",startedAt:endedAt-result.durationMs,durationMs:result.durationMs}],question:options.question}:void 0,invocation=beginDecisionInvocation(bus,{decisionId:options.id,caller:"workflow",correlation:this.decisionCorrelation(context4)},{type:options.method,maker,makerSource:"inline",catalogLayer:"",inputKeys:[],...result.evidenceDigest!==null?{evidenceDigest:result.evidenceDigest}:{},minConfidence:options.minConfidence??DEFAULT_MIN_CONFIDENCE2},log);if(result.source==="model"&&result.reason==="accepted")invocation.succeed({value:result.value,confidence:result.confidence,maker});else invocation.fail({reason:result.reason,fallbackValue:result.value,confidence:result.confidence,maker});invocation.end({durationMs:result.durationMs,value:result.value,source:result.source,reason:result.reason,maker,confidence:result.confidence})}return await this.fileSystem.writeFile(join9(workdir,options.resultFile),`${JSON.stringify(result,null,2)}
1835
- `),{ok:!0,data:{value:result.value,decision:result}}}async service(){if(this.deps.decisionService===void 0)return;return await this.deps.decisionService()}catalogRow(served,actionId){return{schemaVersion:1,id:actionId,value:served.type==="noul"?served.value?"yes":"no":String(served.value),method:served.type,backend:served.maker,confidence:served.confidence,confidenceLevel:confidenceLevel(served.confidence),degraded:served.source==="default",reason:served.reason,source:served.source,evidenceDigest:null,durationMs:served.durationMs}}degradedCatalogRow(description,actionId,reason){return{schemaVersion:1,id:actionId,value:String(description.fallback),method:description.type,backend:null,confidence:null,confidenceLevel:"LOW",degraded:!0,reason,source:"default",evidenceDigest:null,durationMs:0}}async executeCatalog(options,context4){let workdir=context4.workdir??".",bus=this.deps.observabilityBus,callContext={decisionId:options.decision,caller:"workflow",correlation:this.decisionCorrelation(context4)},writeRow=async(row)=>{return await this.fileSystem.writeFile(join9(workdir,options.resultFile),`${JSON.stringify(row,null,2)}
1836
- `),{ok:!0,data:{value:row.value,decision:row}}};if(!this.deps.enabled){let description2=(await this.service())?.describe(options.decision);if(description2===void 0)return{ok:!1,error:`${DECIDE_KIND}: catalog decision "${options.decision}" cannot run — the decision service is unavailable`};if(!isDecidableType(description2.type))return{ok:!1,error:`${DECIDE_KIND}: decision "${options.decision}" has type "${description2.type}"; workflow decide supports choice and noul`};return await writeRow(this.degradedCatalogRow({fallback:description2.fallback,type:description2.type},options.id,"disabled"))}let decisionService=await this.service();if(decisionService===void 0)return{ok:!1,error:`${DECIDE_KIND}: catalog decision "${options.decision}" cannot run — the decision service is unavailable`};let sink=this.deps.decisionLog,rejectedLog=(prelude)=>sink!==void 0?{sink,startedAt:Date.now(),phases:[],...prelude!==void 0?{prelude}:{}}:void 0,description;try{description=decisionService.describe(options.decision)}catch(error51){return emitDecisionRejected(bus,callContext,error51,void 0,rejectedLog()),{ok:!1,error:`${DECIDE_KIND}: ${error51 instanceof Error?error51.message:String(error51)}`}}if(!isDecidableType(description.type))return{ok:!1,error:`${DECIDE_KIND}: decision "${options.decision}" has type "${description.type}"; workflow decide supports choice and noul`};if(options.params?.instructions!==void 0)return{ok:!1,error:`${DECIDE_KIND}: params.instructions is reserved — pass implicit input through the instructions option or evidence`};let instructionsText,evidencePrelude;if(sink!==void 0)evidencePrelude={startedAt:Date.now(),phases:[]};try{if(options.evidence!==void 0&&options.evidence.length>0)instructionsText=(await readDecisionEvidence(options.evidence.map((path8)=>join9(workdir,path8)),async(path8)=>await this.fileSystem.readFile(path8))).join(`
1851
+ `,"utf8")}catch{}}var TERMINAL_REASONS=["done","paused-operator","failed-check","failed-agent","failed-timeout","failed-guard","cancelled","interrupted","retry-exhausted"];function isTerminalReason(value){return TERMINAL_REASONS.includes(value)}var BOOKKEEPING_WORKFLOWS=["task-lifecycle","feature-lifecycle"];function isBookkeepingWorkflow(workflowName){return BOOKKEEPING_WORKFLOWS.includes(workflowName)}function classifyTerminalReason({status,engineReason,actionKind,errorText}){if(engineReason!==void 0&&engineReason!==null&&isTerminalReason(engineReason))return engineReason;if(status==="interrupted")return"interrupted";if(status==="paused")return"paused-operator";if(status==="done")return"done";if(engineReason==="no-passing-transition"||engineReason==="no-passing-edge")return"failed-guard";if(engineReason==="iteration-bound-exceeded")return"retry-exhausted";if(errorText!==void 0&&errorText!==null&&/outcome[-_ ]?unknown/i.test(errorText))return"interrupted";if(errorText!==void 0&&errorText!==null&&/timeout/i.test(errorText))return"failed-timeout";if(actionKind==="agent.run")return"failed-agent";return"failed-check"}var MAX_FIELD_LENGTH=256,SECRET_PATTERN2=/(?:sk-[a-z0-9_-]{8,}|(?:api[_-]?key|token|secret|password)\s*[:=]\s*\S+|bearer\s+\S+)/gi;function bounded2(value,maxLength=MAX_FIELD_LENGTH){let redacted=value.replace(SECRET_PATTERN2,"[REDACTED]");return redacted.length<=maxLength?redacted:`${redacted.slice(0,maxLength)}…`}function projectShellInvocation(options){let command=typeof options?.command==="string"?options.command:"";if(command.trim()==="")return;return{command:bounded2(sanitizeCommand(command),80),...typeof options?.cwd==="string"&&options.cwd!==""?{cwd:options.cwd}:{},...typeof options?.timeoutMs==="number"&&Number.isFinite(options.timeoutMs)?{timeoutMs:Math.max(0,options.timeoutMs)}:{}}}function sanitizeCommand(cmd){let trimmed=cmd.replace(/\n+/g," ").replace(/\s+/g," ").trim();if(/(?:authorization|bearer|password|secret|token|api_key|private_key)/i.test(trimmed))return"[shell command redacted]";return trimmed}function isRecord4(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function withShellInvocation(result,options){let invocation=projectShellInvocation(options);if(invocation===void 0)return result;return{...result,data:{...isRecord4(result.data)?result.data:{},invocation}}}var UNPERSISTED_PREFIX="trace-unpersisted:";class RunRowNotFoundError extends Error{runId;constructor(runId){super(`run row not found: ${runId}`);this.name="RunRowNotFoundError",this.runId=runId}}class WorkflowActionTraceWriter{inner;recordFailure;db;boundaries=new Map;constructor(inner,recordFailure,db2){this.inner=inner;this.recordFailure=recordFailure;this.db=db2}async saveActionStart(runId,node,kind,options){let outcome=await this.guard("action.start",{runId,node,kind},()=>this.inner.saveActionStart(runId,node,kind,options));if(!outcome.ok){let syntheticId=`${UNPERSISTED_PREFIX}${crypto.randomUUID()}`;return this.boundaries.set(syntheticId,{runId,node,kind}),this.lastStart={runId,node,kind},syntheticId}return this.boundaries.set(outcome.value,{runId,node,kind,options}),this.lastStart={runId,node,kind},outcome.value}lastStart;async saveActionFinalize(actionId,status,durationMs,ok,kind,result,redactor){let boundary2=this.boundaries.get(actionId),origin2=boundary2??this.lastStart,stamped=kind==="shell"&&boundary2!==void 0&&isRecord4(result)?withShellInvocation(result,boundary2.options):result;await this.guard("action.finish",{runId:origin2?.runId??"",node:origin2?.node,kind},()=>this.inner.saveActionFinalize(actionId,status,durationMs,ok,kind,stamped,redactor)),this.boundaries.delete(actionId)}async finalizeRun(runId,status,completedAt,fence,reason){await this.inner.finalizeRun(runId,status,completedAt,fence,reason===void 0?void 0:classifyTerminalReason({status,engineReason:reason,errorText:reason}))}async claimRunOwnership(runId,owner,expectedStatuses){return this.inner.claimRunOwnership(runId,owner,expectedStatuses)}async interruptRun(runId,reason){return this.inner.interruptRun(runId,reason)}async recordAction(boundary2){let start=await this.guard("action.start",{runId:boundary2.runId,node:boundary2.node,kind:boundary2.kind},()=>this.inner.saveActionStart(boundary2.runId,boundary2.node,boundary2.kind));if(!start.ok)return start;let finish=await this.guard("action.finish",{runId:boundary2.runId,node:boundary2.node,kind:boundary2.kind},()=>this.inner.saveActionFinalize(start.value,boundary2.status,boundary2.durationMs,boundary2.ok,boundary2.kind,boundary2.result,boundary2.redactor));if(!finish.ok)return finish;return await this.backdateStart(start.value,boundary2),{ok:!0,actionId:start.value}}async backdateStart(actionId,boundary2){let db2=this.db;if(db2===void 0||boundary2.durationMs<=0)return;await this.guard("action.backdate",{runId:boundary2.runId,node:boundary2.node,kind:boundary2.kind},async()=>{let dao2=new ActionRunDao(db2),completedAt=await dao2.completedAtById(actionId);if(completedAt===null)return;let startedAt=new Date(new Date(completedAt).getTime()-boundary2.durationMs).toISOString();await dao2.setStartedAt(actionId,startedAt)})}async closeRun(runId,status,completedAt,reason){let existing=await this.inner.loadRun(runId);if(existing===void 0)throw new RunRowNotFoundError(runId);if(await this.inner.finalizeRun(runId,status,completedAt??new Date().toISOString(),void 0,reason===void 0?void 0:classifyTerminalReason({status,engineReason:reason,errorText:reason})),this.db===void 0)return{ok:!0,startedAt:existing.started_at};return{ok:!0,actionRows:(await new ActionRunDao(this.db).actionRowsByRunId(runId)).length,startedAt:existing.started_at}}async guard(operation,context4,emit){try{return{ok:!0,value:await emit()}}catch(error51){let failure={operation,runId:context4.runId,...context4.node!==void 0?{node:context4.node}:{},...context4.kind!==void 0?{kind:context4.kind}:{},error:error51 instanceof Error?error51.message:String(error51),at:new Date().toISOString()};try{this.recordFailure?.(failure)}catch{}return{ok:!1,failure}}}createRun(record3){return this.inner.createRun(record3)}savePhase(runId,phase,status){return this.inner.savePhase(runId,phase,status)}saveTransition(runId,from,to,trigger){return this.inner.saveTransition(runId,from,to,trigger)}saveWorkflowState(runId,state,data){return this.inner.saveWorkflowState(runId,state,data)}commitTransition(runId,from,to,trigger,state,data,phase){return this.inner.commitTransition(runId,from,to,trigger,state,data,phase)}loadRun(runId){return this.inner.loadRun(runId)}listRuns(){return this.inner.listRuns()}findRunByKey(workflowName,externalKey){return this.inner.findRunByKey(workflowName,externalKey)}createOrAttachRun(record3){return this.inner.createOrAttachRun(record3)}reseedRun(runId,newState){return this.inner.reseedRun(runId,newState)}loadCurrentState(runId){return this.inner.loadCurrentState(runId)}loadLatestStateSnapshot(runId){return this.inner.loadLatestStateSnapshot(runId)}listPausedRuns(options){return this.inner.listPausedRuns(options)}saveBranchStart(runId,parallelNode,branchId,startNode){return this.inner.saveBranchStart(runId,parallelNode,branchId,startNode)}saveBranchFinalize(runId,branchId,status,durationMs,outputVars,error51){return this.inner.saveBranchFinalize(runId,branchId,status,durationMs,outputVars,error51)}listRunBranches(runId,parallelNode){return this.inner.listRunBranches(runId,parallelNode)}commitJoin(runId,parallelNode,joinNode,mergedVars,phase){return this.inner.commitJoin(runId,parallelNode,joinNode,mergedVars,phase)}}function createWorkflowActionTraceWriter(db2,recordFailure){return new WorkflowActionTraceWriter(new DbWorkflowPersistenceAdapter(db2),recordFailure,db2)}init_zod();import{join as join13}from"node:path";function confidenceLevel(confidence){if(confidence===null||confidence===void 0)return"LOW";if(!Number.isFinite(confidence)||confidence<0||confidence>1)return"LOW";if(confidence>=0.8)return"HIGH";return confidence>=0.5?"MEDIUM":"LOW"}init_dist9();import{createHash as createHash4}from"node:crypto";function evidencePayloadDigest(payload){return`sha256:${createHash4("sha256").update(canonicalJsonStringify(payload),"utf8").digest("hex")}`}async function defaultDecisionMaker(){return(await Promise.resolve().then(() => (init_dist9(),exports_dist3))).createDecisionMaker({timeoutMs:15000,maxRetries:0})}var DEFAULT_MIN_CONFIDENCE2=0.8,NOUL_YES_THRESHOLD=0.5,DECIDE_EVIDENCE_MAX_CHARS=2000;async function runDecide(options,deps){let started=deps.now(),base2={schemaVersion:1,id:options.id,method:options.method},degraded=(reason,backend=null,confidence=null,evidenceDigest2=null)=>({...base2,value:options.default,backend,confidence,confidenceLevel:confidenceLevel(confidence),degraded:!0,reason,source:"default",evidenceDigest:evidenceDigest2,durationMs:deps.now()-started});if(!deps.enabled)return degraded("disabled");let maker;try{maker=deps.decisionMaker?await deps.decisionMaker():await defaultDecisionMaker()}catch{return degraded("no-backend")}let evidence=[],evidenceDigest=null;if(options.evidence!==void 0&&options.evidence.length>0)try{evidence=await Promise.all(options.evidence.map(async(path8)=>redactAndBound(await deps.readFile(path8),[],DECIDE_EVIDENCE_MAX_CHARS))),evidenceDigest=evidencePayloadDigest(evidence)}catch{return degraded("error")}let state={id:options.id,evidence},minConfidence=options.minConfidence??DEFAULT_MIN_CONFIDENCE2;try{if(options.method==="choice"){let labels=Object.fromEntries((options.choices??[]).map((c3)=>[c3,c3])),answer2=await maker.choice(state,options.question,labels);if(!(answer2.label in labels))return degraded("error",maker.driver,answer2.confidence,evidenceDigest);if(answer2.confidence<minConfidence)return degraded("low-confidence",maker.driver,answer2.confidence,evidenceDigest);return{...base2,value:answer2.label,backend:maker.driver,confidence:answer2.confidence,confidenceLevel:confidenceLevel(answer2.confidence),degraded:!1,reason:"accepted",source:"model",evidenceDigest,durationMs:deps.now()-started}}let confidence=(await maker.noul(state,options.question)).probability;if(confidence<minConfidence)return degraded("low-confidence",maker.driver,confidence,evidenceDigest);return{...base2,value:confidence>=NOUL_YES_THRESHOLD?"yes":"no",backend:maker.driver,confidence,confidenceLevel:confidenceLevel(confidence),degraded:!1,reason:"accepted",source:"model",evidenceDigest,durationMs:deps.now()-started}}catch(error51){return degraded(error51 instanceof DecisionTimeoutError?"timeout":"error",maker.driver,null,evidenceDigest)}}async function readDecisionEvidence(paths,readFile5){return await Promise.all(paths.map(async(path8)=>{let text3;try{text3=await readFile5(path8)}catch{throw Error(`evidence file "${path8}" is unreadable`)}return redactAndBound(text3,[],DECIDE_EVIDENCE_MAX_CHARS)}))}var DECIDE_KIND="decide",InlineDecideOptionsSchema=exports_external.object({id:exports_external.string().min(1),method:exports_external.enum(["choice","noul"]),question:exports_external.string().min(1),choices:exports_external.array(exports_external.string().min(1)).min(2).optional(),evidence:exports_external.array(exports_external.string().min(1)).optional(),default:exports_external.string().min(1),minConfidence:exports_external.number().min(0).max(1).optional(),resultFile:exports_external.string().min(1)}).strict().superRefine((options,ctx)=>{if(options.method==="choice"){if(options.choices===void 0)ctx.addIssue({code:"custom",message:"choices is required for method choice (at least 2 labels)"});else if(!options.choices.includes(options.default))ctx.addIssue({code:"custom",message:`default "${options.default}" is not one of choices [${options.choices.join(", ")}]`});return}if(options.choices!==void 0)ctx.addIssue({code:"custom",message:"choices is only valid for method choice; noul uses the engine yes/no outcomes"});if(options.default!=="yes"&&options.default!=="no")ctx.addIssue({code:"custom",message:'default must be "yes" or "no" for method noul'})}),CatalogDecideOptionsSchema=exports_external.object({id:exports_external.string().min(1),decision:exports_external.string().min(1),params:exports_external.record(exports_external.string(),exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null()])).optional(),evidence:exports_external.array(exports_external.string().min(1)).optional(),instructions:exports_external.string().min(1).optional(),resultFile:exports_external.string().min(1)}).strict().superRefine((options,ctx)=>{if(options.evidence!==void 0&&options.instructions!==void 0)ctx.addIssue({code:"custom",message:"instructions is reserved and cannot be combined with evidence; declare one implicit-input channel"})}),DecideOptionsSchema=exports_external.union([InlineDecideOptionsSchema,CatalogDecideOptionsSchema]);function isCatalogDecideOptions(options){return"decision"in options}class DecideActionRunner{fileSystem;deps;kind=DECIDE_KIND;inlineWarned=new Map;constructor(fileSystem,deps){this.fileSystem=fileSystem;this.deps=deps}async execute(rawOptions,context4){let parsed=DecideOptionsSchema.safeParse(rawOptions);if(!parsed.success)return{ok:!1,error:`${DECIDE_KIND}: invalid options — ${parsed.error.issues.map((i2)=>i2.message).join("; ")}`};let options=parsed.data;return isCatalogDecideOptions(options)?await this.executeCatalog(options,context4):await this.executeInline(options,context4)}decisionCorrelation(context4){return decisionCorrelationFromVars({...context4.vars,__runId:context4.runId,__nodeId:context4.stateOrNodeId})??{runId:context4.runId,nodeId:context4.stateOrNodeId}}async executeInline(options,context4){let runKey=context4.runId??"inline-decide",warned=this.inlineWarned.get(runKey);if(this.deps.warn!==void 0&&!warned?.has(options.id)){if(warned===void 0)warned=new Set,this.inlineWarned.set(runKey,warned);warned.add(options.id),this.deps.warn(`decide ${context4.stateOrNodeId}/${options.id}: inline decide options are deprecated; use { decision: <catalog-id>, params?, evidence?, resultFile }`)}let workdir=context4.workdir??".",result=await runDecide({...options,...options.evidence!==void 0?{evidence:options.evidence.map((path8)=>join13(workdir,path8))}:{},resultFile:join13(workdir,options.resultFile)},{enabled:this.deps.enabled,...this.deps.decisionMaker!==void 0?{decisionMaker:this.deps.decisionMaker}:{},readFile:async(path8)=>await this.fileSystem.readFile(path8),now:Date.now.bind(Date)}),bus=this.deps.observabilityBus;if(this.deps.enabled&&bus!==void 0&&result.reason!=="disabled"){let maker=result.backend??"none",endedAt=Date.now(),log=this.deps.decisionLog!==void 0?{sink:this.deps.decisionLog,startedAt:endedAt-result.durationMs,phases:[{phase:"maker",startedAt:endedAt-result.durationMs,durationMs:result.durationMs}],question:options.question}:void 0,invocation=beginDecisionInvocation(bus,{decisionId:options.id,caller:"workflow",correlation:this.decisionCorrelation(context4)},{type:options.method,maker,makerSource:"inline",catalogLayer:"",inputKeys:[],...result.evidenceDigest!==null?{evidenceDigest:result.evidenceDigest}:{},minConfidence:options.minConfidence??DEFAULT_MIN_CONFIDENCE2},log);if(result.source==="model"&&result.reason==="accepted")invocation.succeed({value:result.value,confidence:result.confidence,maker});else invocation.fail({reason:result.reason,fallbackValue:result.value,confidence:result.confidence,maker});invocation.end({durationMs:result.durationMs,value:result.value,source:result.source,reason:result.reason,maker,confidence:result.confidence})}return await this.fileSystem.writeFile(join13(workdir,options.resultFile),`${JSON.stringify(result,null,2)}
1852
+ `),{ok:!0,data:{value:result.value,decision:result}}}async service(){if(this.deps.decisionService===void 0)return;return await this.deps.decisionService()}catalogRow(served,actionId){return{schemaVersion:1,id:actionId,value:served.type==="noul"?served.value?"yes":"no":String(served.value),method:served.type,backend:served.maker,confidence:served.confidence,confidenceLevel:confidenceLevel(served.confidence),degraded:served.source==="default",reason:served.reason,source:served.source,evidenceDigest:null,durationMs:served.durationMs}}degradedCatalogRow(description,actionId,reason){return{schemaVersion:1,id:actionId,value:String(description.fallback),method:description.type,backend:null,confidence:null,confidenceLevel:"LOW",degraded:!0,reason,source:"default",evidenceDigest:null,durationMs:0}}async executeCatalog(options,context4){let workdir=context4.workdir??".",bus=this.deps.observabilityBus,callContext={decisionId:options.decision,caller:"workflow",correlation:this.decisionCorrelation(context4)},writeRow=async(row)=>{return await this.fileSystem.writeFile(join13(workdir,options.resultFile),`${JSON.stringify(row,null,2)}
1853
+ `),{ok:!0,data:{value:row.value,decision:row}}};if(!this.deps.enabled){let description2=(await this.service())?.describe(options.decision);if(description2===void 0)return{ok:!1,error:`${DECIDE_KIND}: catalog decision "${options.decision}" cannot run — the decision service is unavailable`};if(!isDecidableType(description2.type))return{ok:!1,error:`${DECIDE_KIND}: decision "${options.decision}" has type "${description2.type}"; workflow decide supports choice and noul`};return await writeRow(this.degradedCatalogRow({fallback:description2.fallback,type:description2.type},options.id,"disabled"))}let decisionService=await this.service();if(decisionService===void 0)return{ok:!1,error:`${DECIDE_KIND}: catalog decision "${options.decision}" cannot run — the decision service is unavailable`};let sink=this.deps.decisionLog,rejectedLog=(prelude)=>sink!==void 0?{sink,startedAt:Date.now(),phases:[],...prelude!==void 0?{prelude}:{}}:void 0,description;try{description=decisionService.describe(options.decision)}catch(error51){return emitDecisionRejected(bus,callContext,error51,void 0,rejectedLog()),{ok:!1,error:`${DECIDE_KIND}: ${error51 instanceof Error?error51.message:String(error51)}`}}if(!isDecidableType(description.type))return{ok:!1,error:`${DECIDE_KIND}: decision "${options.decision}" has type "${description.type}"; workflow decide supports choice and noul`};if(options.params?.instructions!==void 0)return{ok:!1,error:`${DECIDE_KIND}: params.instructions is reserved — pass implicit input through the instructions option or evidence`};let instructionsText,evidencePrelude;if(sink!==void 0)evidencePrelude={startedAt:Date.now(),phases:[]};try{if(options.evidence!==void 0&&options.evidence.length>0)instructionsText=(await readDecisionEvidence(options.evidence.map((path8)=>join13(workdir,path8)),async(path8)=>await this.fileSystem.readFile(path8))).join(`
1837
1854
 
1838
- `);else if(options.instructions!==void 0)instructionsText=options.instructions;if(evidencePrelude!==void 0)evidencePrelude.phases.push({phase:"evidence",startedAt:evidencePrelude.startedAt,durationMs:Date.now()-evidencePrelude.startedAt})}catch(error51){return emitDecisionRejected(bus,callContext,error51,void 0,rejectedLog(evidencePrelude)),await writeRow(this.degradedCatalogRow({fallback:description.fallback,type:description.type},options.id,"error"))}let input={...options.params,...instructionsText!==void 0?{instructions:instructionsText}:{}},served=await decisionService.decide(options.decision,input,{context:{caller:"workflow",correlation:callContext.correlation},...bus!==void 0?{bus}:{},...sink!==void 0&&evidencePrelude!==void 0?{decisionLog:{sink,prelude:evidencePrelude}}:{}});if(served.type!=="choice"&&served.type!=="noul")return{ok:!1,error:`${DECIDE_KIND}: decision "${options.decision}" has type "${served.type}"; workflow decide supports choice and noul`};return await writeRow(this.catalogRow({...served,type:served.type},options.id))}}function isDecidableType(type){return type==="choice"||type==="noul"}import{basename as basename4,isAbsolute as isAbsolute2,join as join10,resolve as resolve6}from"node:path";init_dist6();init_dist2();var EMBEDDED_SCHEMA_PREFIX="\x00embedded-spur",SPUR_SCHEMA_MANIFEST="@gobing-ai/spur/package.json";function normalizeLayerPath(cwd,path8){return resolve6(cwd,path8)}function workflowLayers(opts){let sharedRoot=opts.sharedRoot!==void 0?opts.sharedRoot:bundledConfigRoot(),sharedPath=sharedRoot!==null?normalizeLayerPath(opts.cwd,join10(sharedRoot,"workflows")):null,layers=[],seen=new Set,add=(id,path8)=>{if(seen.has(path8))return;seen.add(path8),layers.push({id,path:path8})};add("project",normalizeLayerPath(opts.cwd,join10(opts.cwd,".spur","workflows")));for(let entry of opts.registered){if(sharedPath!==null&&normalizeLayerPath(opts.cwd,entry)===sharedPath)continue;add("registered",normalizeLayerPath(opts.cwd,entry))}if(sharedPath!==null)add("shared",sharedPath);return layers}function createEmbeddedSchemaOptions(embedded){if(embedded===void 0||embedded.size===0)return;let nodeFs=createNodeFileSystem2();return{resolve:(specifier)=>specifier===SPUR_SCHEMA_MANIFEST?`${EMBEDDED_SCHEMA_PREFIX}/package.json`:specifier,fileSystem:{readFile:async(path8)=>{if(!path8.startsWith(EMBEDDED_SCHEMA_PREFIX))return nodeFs.readFile(path8);let subpath=path8.slice(EMBEDDED_SCHEMA_PREFIX.length+1),text3=embedded.get(subpath);if(text3===void 0)throw Error(`No embedded schema registered for "${subpath}".`);return text3}}}}async function readWorkflowNameFast(fs2,filePath){try{let text3=await fs2.readFile(filePath),parsed=$parse(text3);return typeof parsed?.name==="string"?parsed.name:null}catch{return null}}async function scanWorkflowByName(cwd,name,registered){let fs2=createNodeFileSystem2();for(let layer of workflowLayers({cwd,registered}))try{let files=(await fs2.readDir(layer.path)).filter((f)=>f.endsWith(".yaml")||f.endsWith(".yml"));for(let f of files){let abs=join10(layer.path,f);if(await readWorkflowNameFast(fs2,abs)===name)return{path:abs,source:layer.id}}}catch{}return null}function resolveWorkflowFile(cwd,file2){let fs2=createNodeFileSystem2(),projectPath=resolve6(cwd,file2);if(fs2.exists(projectPath))return{path:projectPath,source:"project"};let isYaml=file2.endsWith(".yaml")||file2.endsWith(".yml"),base2=basename4(file2);if(!isAbsolute2(file2)){let withYaml=isYaml?file2:`${file2}.yaml`,projectSpur=resolve6(cwd,".spur","workflows",withYaml);if(fs2.exists(projectSpur))return{path:projectSpur,source:"project"};if(!isYaml){let projectDirect=resolve6(cwd,`${file2}.yaml`);if(fs2.exists(projectDirect))return{path:projectDirect,source:"project"};let projectSpurPipeline=resolve6(cwd,".spur","workflows",`${file2}-pipeline.yaml`);if(fs2.exists(projectSpurPipeline))return{path:projectSpurPipeline,source:"project"};let projectDirectPipeline=resolve6(cwd,`${file2}-pipeline.yaml`);if(fs2.exists(projectDirectPipeline))return{path:projectDirectPipeline,source:"project"}}}let bundledRoot=bundledConfigRoot();if(bundledRoot!==null){let sharedName=isYaml?base2:`${base2}.yaml`,sharedPath=join10(bundledRoot,"workflows",sharedName);if(fs2.exists(sharedPath))return{path:sharedPath,source:"shared"};if(!isYaml){let sharedPipeline=join10(bundledRoot,"workflows",`${base2}-pipeline.yaml`);if(fs2.exists(sharedPipeline))return{path:sharedPipeline,source:"shared"};let sharedLiteral=join10(bundledRoot,"workflows",base2);if(fs2.exists(sharedLiteral))return{path:sharedLiteral,source:"shared"}}return{path:null,probed:[projectPath,sharedPath]}}return{path:null,probed:[projectPath,null]}}async function resolveWorkflowDefinition(cwd,fileOrName,options={}){let registered=options.registered??[],resolved=(basename4(fileOrName)===fileOrName&&!/\.ya?ml$/.test(fileOrName)&&!createNodeFileSystem2().exists(resolve6(cwd,fileOrName))?await scanWorkflowByName(cwd,fileOrName,registered):null)??resolveWorkflowFile(cwd,fileOrName);if(resolved.path===null){let scanned=await scanWorkflowByName(cwd,fileOrName,registered);if(scanned!==null)resolved=scanned;else{let[probedProject,probedShared]=resolved.probed;throw Error(`Workflow not found: ${probedProject}${probedShared!==null?` (shared: ${probedShared})`:""}`)}}let embedded=createEmbeddedSchemaOptions(options.embeddedSchemas),workflow=await loadWorkflowDef(resolved.path,{validateSchema:options.validateSchema!==!1,...embedded!==void 0?embedded:{}});if(workflow.version==="")throw Error(`Invalid workflow definition ${resolved.path}: root "version" is an empty string. Omit the field for an unversioned definition, or give it a non-empty literal.`);let digest=computeDefinitionDigest(workflow);return{path:resolved.path,workflow,digest,layer:resolved.source}}var REQUIRED_REFERENCE_CODES=new Set([FINDING_CODES.L4_FEATURE_NOT_FOUND,FINDING_CODES.L4_PARENT_NOT_FOUND,FINDING_CODES.L4_DEPENDENCY_NOT_FOUND,FINDING_CODES.L4_LINKED_TASK_PARSE_FAILED]),COMPLETION_FINDING_CODES=new Set([FINDING_CODES.L4_ORPHAN_SCENARIOS,FINDING_CODES.L4_UNCOVERED_FEATURE_SCENARIO,FINDING_CODES.L4_SCENARIO_UNVERIFIED,FINDING_CODES.L4_VERIFYING_INCOMPLETE_TASKS,FINDING_CODES.L4_VERDICT_ROWS_MATCH_NO_SCENARIO,FINDING_CODES.L4_MALFORMED_VERDICT_ARTIFACT,FINDING_CODES.L4_EVIDENCE_NOT_RECOVERABLE,FINDING_CODES.L4_DOGFOOD_MISSING,FINDING_CODES.L4_TESTING_VERDICT_STUB,FINDING_CODES.L4_UNCOVERED_TASK_SCENARIO,FINDING_CODES.L4_FEATURE_RECEIPT_MISSING,FINDING_CODES.L4_FEATURE_RECEIPT_MALFORMED,FINDING_CODES.L4_FEATURE_RECEIPT_CROSS_FEATURE,FINDING_CODES.L4_FEATURE_RECEIPT_DIVERGENT,FINDING_CODES.L4_FEATURE_RECEIPT_FAILED,FINDING_CODES.L4_FEATURE_RECEIPT_RUN,FINDING_CODES.L4_FEATURE_RECEIPT_STALE,FINDING_CODES.L4_FEATURE_RECEIPT_CONTRACT,FINDING_CODES.L3_REVIEW_TESTING_CONTRADICTION,FINDING_CODES.L4_ROLLUP_SUBTASKS_OPEN,FINDING_CODES.L4_ROLLUP_MISSING_ROSTER,FINDING_CODES.L4_ROLLUP_ROSTER_NOT_DECLARED_DEPENDENCY]),REQUIRED_FINDING_CODES=new Set([FINDING_CODES.L1_MARKDOWN_PARSE,FINDING_CODES.L1_SCHEMA_VALIDATION,FINDING_CODES.L2_MISSING_REQUIRED_SECTION,FINDING_CODES.L2_UNCLOSED_CODE_FENCE,FINDING_CODES.L3_AC_BDD_ERROR,FINDING_CODES.L3_AC_BDD_INVALID,FINDING_CODES.L3_REQUIREMENTS_EMPTY,FINDING_CODES.L3_AC_EMPTY,FINDING_CODES.L3_REQUIRED_SECTION_PLACEHOLDER,...REQUIRED_REFERENCE_CODES,FINDING_CODES.L4_PREREQUISITE_CYCLE,...COMPLETION_FINDING_CODES,FINDING_CODES.PRECHECK_SIZE,FINDING_CODES.PRECHECK_EVIDENCE,FINDING_CODES.INVENTORY_COVERAGE]);var SOLUTION_EXCLUDED_LOCKFILES=new Set(["bun.lock","bun.lockb","package-lock.json","yarn.lock","pnpm-lock.yaml"]),SOLUTION_EXCLUDED_PATHSPECS=[".spur/**",...SOLUTION_EXCLUDED_LOCKFILES],SOLUTION_EXCLUDE_PATHSPECS=SOLUTION_EXCLUDED_PATHSPECS.map((p)=>`:(exclude)${p}`);var TASK_LIFECYCLE_PROFILE={linkKind:"lifecycle",workflowName:"task-lifecycle",entityPrefix:"task",varKey:"wbs"};async function reconcileExistingLifecycleRow(getDb,profile,entityId,toStatus){if(toStatus!=="done"&&toStatus!=="cancelled")return!1;let persistence=new DbWorkflowPersistenceAdapter(await getDb()),run=await persistence.findRunByKey(profile.workflowName,`${profile.entityPrefix}:${entityId}`);if(run===void 0)return!1;let engineStatus=toStatus==="cancelled"?"failed":"done";if(run.status===engineStatus&&run.terminal_reason===toStatus)return!1;return await persistence.finalizeRun(run.id,engineStatus,new Date().toISOString(),void 0,toStatus),!0}function readProvenance(resultJson){if(resultJson===null)return{provenance:"unknown",estimated:!1};try{let parsed=JSON.parse(resultJson);if(parsed?.provenance!=="host-reported")return{provenance:"unknown",estimated:!1};return{provenance:"host-reported",estimated:parsed.estimated===!0}}catch{return{provenance:"unknown",estimated:!1}}}function deriveInlineStateVisits(defStates,rows){let declaredStateIds=new Set(defStates.map((state)=>state.id)),visits=[],visitCounts={};for(let row of rows){if(!declaredStateIds.has(row.node))continue;let open2=visits[visits.length-1];if(open2&&open2.state===row.node){open2.rows.push(row);continue}let visit2=(visitCounts[row.node]??0)+1;visitCounts[row.node]=visit2,visits.push({state:row.node,visit:visit2,rows:[row]})}return visits}async function projectWorkflowProgress(runId,options){let projectRoot=options.projectRoot??process.cwd(),projectedAt=new Date().toISOString(),diagnostics=[],runDao=new RunDao(options.db),actionRunDao=new ActionRunDao(options.db),transitionRunDao=new TransitionRunDao(options.db),artifactDao=new ArtifactDao(options.db),runRow=await runDao.traceRowById(runId);if(!runRow)return diagnostics.push({code:"orphan-row",message:`No workflow run found with id "${runId}"`}),{schemaVersion:1,runId,workflow:"unknown",status:"unknown",definitionDigest:null,currentState:null,states:[],transitions:[],artifacts:[],nextTransitions:[],diagnostics,projectedAt};let rawMeta={};try{if(runRow.metadata_json)rawMeta=JSON.parse(runRow.metadata_json)}catch{}let recordedDigest=typeof rawMeta.definitionDigest==="string"?rawMeta.definitionDigest:null,recordedVersion="workflowVersion"in rawMeta&&(typeof rawMeta.workflowVersion==="string"||rawMeta.workflowVersion===null)?rawMeta.workflowVersion:void 0,normalizedStatus="unknown",statusLower=(runRow.status??"").toLowerCase();if(statusLower==="done"||statusLower==="completed")normalizedStatus="completed";else if(statusLower==="running")normalizedStatus="running";else if(statusLower==="pending")normalizedStatus="pending";else if(statusLower==="failed")normalizedStatus="failed";else if(statusLower==="cancelled")normalizedStatus="cancelled";let transitionRows=await transitionRunDao.transitionRowsByRunId(runId),actionRows=await actionRunDao.actionRowsByRunId(runId),artifactRows=await artifactDao.artifactsByRunId(runId),transitions=transitionRows.map((t)=>({from:t.from_state,to:t.to_state,trigger:t.trigger??null,at:new Date(t.created_at).toISOString()})),currentState=null;if(transitions.length>0)currentState=transitions[transitions.length-1]?.to??null;let workflowDef=options.workflowDef,workflowName=runRow.workflow_name||"unknown";if(!workflowDef&&workflowName!=="unknown")try{workflowDef=(await resolveWorkflowDefinition(projectRoot,workflowName,{validateSchema:!0})).workflow}catch{}if(!workflowDef){if(diagnostics.push({code:"definition-unavailable",message:`Definition unavailable for workflow "${workflowName}"`}),recordedDigest===null)diagnostics.push({code:"definition-digest-missing",message:`Run ${runId} metadata has no recorded definitionDigest`});return{schemaVersion:1,runId,workflow:workflowName,status:normalizedStatus,definitionDigest:recordedDigest,...recordedVersion!==void 0?{version:recordedVersion}:{},currentState,states:[],transitions,artifacts:artifactRows.map((a2)=>({kind:a2.kind,path:a2.path})),nextTransitions:[],diagnostics,projectedAt}}let currentComputedDigest=computeDefinitionDigest(workflowDef);if(recordedDigest===null)diagnostics.push({code:"definition-digest-missing",message:`Run ${runId} metadata has no recorded definitionDigest`});else if(recordedDigest!==currentComputedDigest)diagnostics.push({code:"definition-drift",message:`Recorded definition digest ${recordedDigest} differs from current definition digest ${currentComputedDigest}`});let smDef=workflowDef,defStates=Array.isArray(smDef.states)?smDef.states:[],initialState=smDef.initialState??(defStates[0]?.id||"start"),inlineVisits=transitions.length===0?deriveInlineStateVisits(defStates,actionRows):[];if(!currentState){if(normalizedStatus==="pending"||normalizedStatus==="running")currentState=inlineVisits[inlineVisits.length-1]?.state??initialState;else if(normalizedStatus==="failed"&&inlineVisits.length>0)currentState=inlineVisits[inlineVisits.length-1]?.state??null}let stateVisits=[],visitCounter={},recordVisit=(stateId)=>{let count3=(visitCounter[stateId]??0)+1;return visitCounter[stateId]=count3,stateVisits.push({state:stateId,visit:count3}),count3};if(transitions.length===0)if(inlineVisits.length===0){if(initialState)recordVisit(initialState)}else for(let derived of inlineVisits)stateVisits.push(derived);else{let firstFrom=transitions[0]?.from;if(firstFrom)recordVisit(firstFrom);for(let tr of transitions)recordVisit(tr.to)}let visitedStateIds=new Set(stateVisits.map((v)=>v.state));for(let defState of defStates)if(!visitedStateIds.has(defState.id))stateVisits.push({state:defState.id,visit:1});let statesProgress=[],actionsByNode={};for(let row of actionRows){let group=actionsByNode[row.node]??[];group.push(row),actionsByNode[row.node]=group}let matchedActionRowIds=new Set,lastVisitByState=new Map;for(let entry of stateVisits)lastVisitByState.set(entry.state,Math.max(lastVisitByState.get(entry.state)??0,entry.visit));for(let{state:stateId,visit:visit2,rows:visitRows}of stateVisits){let defState=defStates.find((s2)=>s2.id===stateId),onEnterActions=Array.isArray(defState?.onEnter)?defState.onEnter:[],onExitActions=Array.isArray(defState?.onExit)?defState.onExit:[],defActionList=[...onEnterActions.map((a2,i2)=>({action:a2,type:"onEnter",idx:i2})),...onExitActions.map((a2,i2)=>({action:a2,type:"onExit",idx:i2}))],isVisited=visitedStateIds.has(stateId),isCurrent=currentState===stateId&&visit2===lastVisitByState.get(stateId),stateStatus="pending";if(isVisited)if(isCurrent)if(normalizedStatus==="running"||normalizedStatus==="pending")stateStatus="running";else if(normalizedStatus==="completed")stateStatus="passed";else if(normalizedStatus==="failed")stateStatus="failed";else stateStatus="passed";else stateStatus="passed";let stateActionRows=visitRows??actionsByNode[stateId]??[],actionsProgress=[],usedActionRowIds=new Set;for(let item of defActionList){let actionKey=`${stateId}:${item.type}:${item.idx}`,kind=item.action.kind,stateEffect="may-write",evidenceEffect="none",candidateRows=stateActionRows.filter((r)=>r.kind===kind&&!usedActionRowIds.has(r.id));if(isVisited)for(let r of candidateRows)matchedActionRowIds.add(r.id);let actionStatus="pending",attempts=[];if(!isVisited)actionStatus="pending";else if(candidateRows.length===0)actionStatus=stateStatus==="passed"?"skipped":"pending";else{let sameKindDefCount=defActionList.filter((a2)=>a2.action.kind===kind).length;if(sameKindDefCount>1&&candidateRows.length>1&&candidateRows.length!==sameKindDefCount)diagnostics.push({code:"ambiguous-action",message:`Ambiguous mapping for action ${actionKey} (kind ${kind}) in state ${stateId}`}),actionStatus="ambiguous";else{let matchingRow=candidateRows[0];if(matchingRow){let rowsToMap=sameKindDefCount===1?candidateRows:[matchingRow];for(let row of rowsToMap)usedActionRowIds.add(row.id),attempts.push({actionRunId:row.id,status:row.status,ok:row.ok!==null?row.ok===1:null,startedAt:row.started_at,completedAt:row.completed_at,durationMs:row.duration_ms,...readProvenance(row.result_json)});if(matchingRow.status==="running")actionStatus="running";else if(matchingRow.status==="passed")actionStatus="passed";else if(matchingRow.status==="failed")actionStatus="failed";else if(matchingRow.status==="skipped")actionStatus="skipped";else actionStatus="passed"}}}actionsProgress.push({actionKey,kind,stateEffect:"may-write",evidenceEffect:"none",status:actionStatus,attempts})}statesProgress.push({state:stateId,visit:visit2,status:stateStatus,actions:actionsProgress})}let nextTransitions=[];if(currentState&&Array.isArray(smDef.transitions)){let outgoing=smDef.transitions.filter((t)=>t.from===currentState);for(let tr of outgoing){let eligibility="unknown";if(normalizedStatus==="running")eligibility="blocked";else if(normalizedStatus==="completed")eligibility="eligible";else eligibility="unknown";nextTransitions.push({from:tr.from,to:tr.to,trigger:tr.description??null,eligibility})}}let declaredStateIds=new Set(defStates.map((state)=>state.id));for(let row of actionRows){if(matchedActionRowIds.has(row.id))continue;if(declaredStateIds.has(row.node)&&!visitedStateIds.has(row.node)){diagnostics.push({code:"unvisited-state-row",message:`Action row ${row.id} (node ${row.node}, kind ${row.kind}) belongs to state ${row.node}, which run ${runId} did not visit`});continue}diagnostics.push({code:"orphan-action-row",message:`Action row ${row.id} (node ${row.node}, kind ${row.kind}) matches no declared state action`})}return{schemaVersion:1,runId,workflow:smDef.name||workflowName,status:normalizedStatus,definitionDigest:recordedDigest,...recordedVersion!==void 0?{version:recordedVersion}:{},currentState,states:statesProgress,transitions,artifacts:artifactRows.map((a2)=>({kind:a2.kind,path:a2.path})),nextTransitions,diagnostics,projectedAt}}var SAFE_RUN_ID_RE=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,RUN_CITATION_RE=/(?<![\w~:-]|[\w~:-]\/)\.spur\/run\/([A-Za-z0-9][A-Za-z0-9._*?<>{}|,\u2026-]*)(\/[^\s`]*)?/g;function asLiteralRunFileName(citation){let name=citation.replace(/[.,]+$/,"");if(!SAFE_RUN_ID_RE.test(name)||name.includes(".."))return;return name}var SHELL_METACHARACTERS=/[;&|<>$`(){}[\]!*?~#\n\r"']/;function splitLaunchCommand(value,label){if(SHELL_METACHARACTERS.test(value))return{error:`${label} must not contain shell metacharacters (got ${value})`};let tokens=value.trim().split(/\s+/).filter((t)=>t.length>0),command=tokens[0];if(command===void 0)return{error:`Action option ${label.slice(label.indexOf('"'))} must be a non-empty string`};return{command,leadingArgs:tokens.slice(1)}}function parseWorkflowInventory(json3){if(typeof json3!=="object"||json3===null)return{ok:!1,error:"workflow inventory: projection is not an object"};let obj=json3,name=typeof obj.name==="string"?obj.name:"",kind=typeof obj.kind==="string"?obj.kind:"",format2=typeof obj.format==="string"?obj.format:"",version3=typeof obj.version==="string"||typeof obj.version==="number"?String(obj.version):"",definitionDigest=typeof obj.definitionDigest==="string"?obj.definitionDigest:"",source;if(obj.source!==void 0){if(typeof obj.source!=="object"||obj.source===null)return{ok:!1,error:"workflow inventory: invalid definition source"};let value=obj.source;if(typeof value.path!=="string"||value.path===""||typeof value.layer!=="string"||!["project","registered","shared"].includes(value.layer))return{ok:!1,error:"workflow inventory: invalid definition source path/layer"};source={path:value.path,layer:value.layer}}if(name==="")return{ok:!1,error:"workflow inventory: missing name"};if(kind==="")return{ok:!1,error:"workflow inventory: missing kind"};if(definitionDigest==="")return{ok:!1,error:"workflow inventory: missing definitionDigest"};if(!Array.isArray(obj.steps)||obj.steps.length===0)return{ok:!1,error:"workflow inventory: no declared steps"};let steps=[];for(let raw of obj.steps){if(typeof raw!=="object"||raw===null)return{ok:!1,error:"workflow inventory: a step is not an object"};let s2=raw;if(typeof s2.id!=="string"||s2.id==="")return{ok:!1,error:"workflow inventory: a step is missing its id"};steps.push({id:s2.id,initial:s2.initial===!0,terminal:s2.terminal===!0,failure:s2.failure===!0,pause:s2.pause===!0,loopBack:s2.loopBack===!0,conditional:s2.conditional===!0,...typeof s2.nodeType==="string"?{nodeType:s2.nodeType}:{},...typeof s2.description==="string"?{description:s2.description}:{}})}return{ok:!0,inventory:{name,kind,format:format2,version:version3,definitionDigest,steps,...source?{source}:{}}}}function assertInventoryIdentity(inventory,expectedDigest){if(expectedDigest==="")return{ok:!1,error:"workflow inventory: no expected definition digest to bind against"};if(inventory.definitionDigest!==expectedDigest)return{ok:!1,error:`workflow inventory: identity drift — projected ${inventory.definitionDigest} ≠ execution ${expectedDigest}`};return{ok:!0}}init_zod();var quotaAttributionSchema=exports_external.object({projectId:exports_external.string().min(1).optional(),executor:exports_external.string().min(1).optional(),agent:exports_external.string().min(1).optional(),model:exports_external.string().min(1).optional()}).strict(),agentRunCorrelationSchema=exports_external.object({runId:exports_external.string().min(1).optional(),executionId:exports_external.string().min(1).optional(),actionId:exports_external.string().min(1).optional()}).strict(),agentQuotaObservationSchema=exports_external.object({observationId:exports_external.string().min(1),observedAt:exports_external.string().min(1),evidenceSource:exports_external.enum(["buffered-error","streaming-error","health-probe"]),reason:exports_external.enum(["insufficient_quota","insufficient_credit_balance","quota_exceeded","usage_limit_reached","credits_exhausted","billing_hard_limit_reached","provider_quota_exhausted"]),detail:exports_external.string().optional(),attribution:quotaAttributionSchema.optional(),correlation:agentRunCorrelationSchema.optional()}).strict(),agentQuotaRecoverySchema=exports_external.object({observationId:exports_external.string().min(1),recoveredAt:exports_external.string().min(1),attribution:quotaAttributionSchema.optional(),correlation:agentRunCorrelationSchema.optional()}).strict();function resolveQuotaExecutorBinding(executors,name){return executors?.find((candidate)=>candidate.name===name)}function normalizeQuotaTimestamp(value){let parsed=new Date(value);if(Number.isNaN(parsed.getTime()))return;return parsed.toISOString()}var MAX_QUOTA_DRAIN_ATTEMPTS_PER_ACTIVATION=3;function normalizeRootPath(root){return root.replace(/[\\/]+$/,"")}async function recordAgentQuotaEvent(context4,event,desiredDisabled){let parsed=desiredDisabled?agentQuotaObservationSchema.safeParse(event):agentQuotaRecoverySchema.safeParse(event);if(!parsed.success)return{rejected:`malformed ${desiredDisabled?"exhaustion":"recovery"} payload`};let payload=parsed.data,attribution2=payload.attribution;if(attribution2?.projectId===void 0||attribution2.executor===void 0)return{rejected:"missing project/executor attribution — observable only, not recorded"};if(normalizeRootPath(attribution2.projectId)!==normalizeRootPath(context4.projectRoot))return{rejected:`foreign project attribution "${attribution2.projectId}"`};let observedAt=normalizeQuotaTimestamp("observedAt"in payload?payload.observedAt:payload.recoveredAt);if(observedAt===void 0)return{rejected:`unparsable timestamp on observation ${payload.observationId}`};let entry;try{let config4=await context4.loadAgentConfig(context4.projectRoot);if(config4===null)throw Error("config load failed");entry=config4.agent?.executors}catch(error51){return{rejected:`effective agent config unavailable: ${errorText(error51)}`}}let profile=resolveQuotaExecutorBinding(entry,attribution2.executor);if(profile===void 0)return{rejected:`unknown executor "${attribution2.executor}" for this project`};if(attribution2.agent!==void 0&&attribution2.agent!==profile.agent)return{rejected:`profile binding replaced: executor "${attribution2.executor}" now serves agent "${profile.agent}", event claimed "${attribution2.agent}"`};if(attribution2.model!==void 0&&profile.model!==void 0&&attribution2.model!==profile.model)return{rejected:`model binding replaced: executor "${attribution2.executor}" now pins "${profile.model}", event claimed "${attribution2.model}"`};let db2=await context4.getDb();return new AgentExecutorUpdateDao(db2).recordObservation({project_id:normalizeRootPath(context4.projectRoot),executor_name:attribution2.executor,observation_id:payload.observationId,observed_at:observedAt,agent:attribution2.agent??null,model:attribution2.model??null,disabled:desiredDisabled,owner:"quota",layer:"project"})}async function drainPendingAgentQuotaUpdates(context4,options={}){let summary={applied:0,skippedBindingReplaced:0,skippedUnknownExecutor:0,skippedOperatorOwned:0,failed:0,deferred:0},db2=await context4.getDb(),dao2=new AgentExecutorUpdateDao(db2),projectId=normalizeRootPath(context4.projectRoot),rows=await dao2.pendingUpdates(projectId);if(rows.length===0)return summary;for(let row of rows){let config4,lastError;for(let attempt=0;attempt<MAX_QUOTA_DRAIN_ATTEMPTS_PER_ACTIVATION;attempt+=1){let effectiveConfig;try{effectiveConfig=config4??await requireAgentConfig(context4)}catch(error51){lastError=`effective agent config unavailable: ${errorText(error51)}`,await recordDrainFailure(dao2,row,lastError);continue}config4=effectiveConfig;let profile=resolveQuotaExecutorBinding(effectiveConfig.agent?.executors,row.executor_name);if(profile===void 0){await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.skippedUnknownExecutor+=1,context4.warn(`quota update for unknown executor "${row.executor_name}" acknowledged as a no-op (entry no longer configured)`),lastError=void 0;break}if(row.agent!==null&&row.agent!==profile.agent){await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.skippedBindingReplaced+=1,context4.warn(`quota update for "${row.executor_name}" acknowledged as a no-op: profile now serves agent "${profile.agent}", observation recorded "${row.agent}"`),lastError=void 0;break}if(row.model!==null&&profile.model!==void 0&&row.model!==profile.model){await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.skippedBindingReplaced+=1,context4.warn(`quota update for "${row.executor_name}" acknowledged as a no-op: profile now pins model "${profile.model}", observation recorded "${row.model}"`),lastError=void 0;break}let executorEntry=effectiveConfig.agent?.executors?.find((entry)=>entry.name===row.executor_name),availability=normalizeExecutorAvailability(executorEntry?.disabled??!1);if(availability.disabled&&availability.owner==="operator"){await dao2.ackSkipped(projectId,row.executor_name,row.observation_id,"operator-owned",appliedAtNow(options)),summary.skippedOperatorOwned+=1,context4.warn(`quota update for "${row.executor_name}" acknowledged as a classified no-op: availability is operator-owned${availability.since!==void 0?` since ${availability.since}`:""}`),lastError=void 0;break}try{let rowOwner=row.owner==="probe"?"probe":"quota",eventName=row.disabled===1?"agent.quota.exhausted":"agent.quota.recovered",desired=row.disabled===1?{owner:rowOwner,since:row.observed_at,reason:`${eventName} ${row.executor_name}`}:!1;await setExecutorAvailability({layer:"global",projectRoot:context4.projectRoot,executor:row.executor_name,disabled:desired}),await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.applied+=1,lastError=void 0;break}catch(error51){lastError=errorText(error51),await recordDrainFailure(dao2,row,lastError)}}if(lastError!==void 0&&await attemptBoundReached(dao2,row,context4))summary.failed+=1,summary.deferred+=1;else if(lastError!==void 0)summary.failed+=1}return summary}async function requireAgentConfig(context4){let config4=await context4.loadAgentConfig(context4.projectRoot);if(config4===null)throw Error("config unavailable");return config4}async function recordDrainFailure(dao2,row,error51){try{await dao2.recordFailure(row.project_id,row.executor_name,row.observation_id,error51.slice(0,500),null)}catch{}}async function attemptBoundReached(dao2,row,context4){try{return((await dao2.getUpdate(row.project_id,row.executor_name))?.attempts??0)>=MAX_QUOTA_DRAIN_ATTEMPTS_PER_ACTIVATION}catch(error51){return context4.warn(`agent quota update retry state unreadable: ${errorText(error51)}`),!1}}function appliedAtNow(options){return options.appliedAt?.()??new Date().toISOString()}function errorText(error51){return error51 instanceof Error?error51.message:String(error51)}var SYSTEM_EVENT_ENVELOPE_SCHEMA_VERSION=2,MAX_STRING_LENGTH=256,MAX_DEPTH=4,MAX_ARRAY_ITEMS=16,MAX_OBJECT_FIELDS=32,MAX_TOTAL_NODES=128,MAX_FIELD_KEY_LENGTH=64,CORE_METADATA_PATHS=["schemaVersion","eventId","event","at","timestamp","actor","runId","executionId","actionId","commandId","sequence","correlation.runId","correlation.executionId","correlation.actionId","entity.kind","entity.id","entityKind","entityId","jobId","kind","status","outcome","severity","reason","durationMs","usage","metadata.correlationId"],OMITTED_KEY=/^(?:args?|argv|body|command|commandline|content|details|env|environment|message|output|payload|prompt|query|response|stderr|stdin|stdout)$/,SECRET_KEY=/(?:api[-_]?key|authorization|cookie|credential|password|secret|token)/i,PRODUCER_PACKAGES=new Set(["spur","@gobing-ai/ts-infra","@gobing-ai/ts-runtime","@gobing-ai/ts-ai-runner","@gobing-ai/ts-rule-engine","@gobing-ai/ts-dual-workflow-engine"]);var SAFE_IDENTIFIER=/^[A-Za-z0-9._:-]+$/;function systemEventProjectContext(root,name){let safeRoot=typeof root==="string"?root:"",inferredName=safeRoot.replace(/[\\/]+$/,"").split(/[\\/]/).at(-1)||"unknown";return{name:name&&name.length>0?name:inferredName,root:safeRoot}}function buildSystemEventEnvelope(entry,eventPayload,project,secretValues=[],actor){try{let data=projectSystemEventData(entry,eventPayload,secretValues),correlation=extractEnvelopeCorrelation(eventPayload,secretValues),severity=extractSeverity(eventPayload)??entry?.severity??"warning",presentation=buildPresentation(entry,data,correlation,severity,actor);return{schemaVersion:SYSTEM_EVENT_ENVELOPE_SCHEMA_VERSION,data,context:{project:boundedProjectContext(project,secretValues),producer:{package:entry?.producerPackage??"spur",subsystem:entry?.subsystem??"unknown"},correlation},presentation}}catch{return genericEnvelope(project,secretValues)}}function projectSystemEventData(entry,eventPayload,secretValues=[]){if(eventPayload===null||eventPayload===void 0)return null;let state={nodes:0,seen:new WeakSet,secretValues};if(!isRecord4(eventPayload)){let value=projectValue(eventPayload,state,0);return value===void 0?null:{value}}if(!entry)return null;if(entry.payloadPolicy!=="raw-safe")return projectAllowedMetadata(entry,eventPayload,state);let result={};for(let[key,value]of safeEntries(eventPayload).slice(0,MAX_OBJECT_FIELDS)){let projected=projectKeyValue(key,value,state,0);if(projected!==void 0)result[boundedKey(key)]=projected}return result}function projectAllowedMetadata(entry,eventPayload,state){let result={},paths=new Set([...CORE_METADATA_PATHS,...entry.metadataFields.map((field)=>field.path)]);for(let path8 of paths){let value=getPath(eventPayload,path8);if(value===void 0)continue;let key=path8.split(".").at(-1)??path8,projected=projectKeyValue(key,value,state,path8.split(".").length-1);if(projected!==void 0)setPath(result,path8,projected)}return result}function projectKeyValue(key,value,state,depth){if(isOmittedKey(key))return;if((key==="findings"||key==="finding")&&typeof value==="object")return;if(SECRET_KEY.test(key))return"[REDACTED]";return projectValue(value,state,depth)}function projectValue(value,state,depth){if(state.nodes>=MAX_TOTAL_NODES||depth>MAX_DEPTH)return"[truncated]";if(state.nodes+=1,value===null||typeof value==="boolean")return value;if(typeof value==="number")return Number.isFinite(value)?value:void 0;if(typeof value==="string")return redactAndBound(value,state.secretValues,MAX_STRING_LENGTH);if(typeof value==="bigint")return redactAndBound(String(value),state.secretValues,MAX_STRING_LENGTH);if(typeof value!=="object")return;if(state.seen.has(value))return"[circular]";if(state.seen.add(value),Array.isArray(value)){let result2=[];for(let item of value.slice(0,MAX_ARRAY_ITEMS)){let projected=projectValue(item,state,depth+1);if(projected!==void 0)result2.push(projected)}if(value.length>MAX_ARRAY_ITEMS)result2.push("[truncated]");return result2}let result={};for(let[key,item]of safeEntries(value).slice(0,MAX_OBJECT_FIELDS)){let projected=projectKeyValue(key,item,state,depth+1);if(projected!==void 0)result[boundedKey(key)]=projected}return result}function extractEnvelopeCorrelation(eventPayload,secretValues){if(!isRecord4(eventPayload))return{};let nested=isRecord4(eventPayload.correlation)?eventPayload.correlation:{},entity2=isRecord4(eventPayload.entity)?eventPayload.entity:{},result={};assignString(result,"runId",eventPayload.runId??eventPayload.run_id??nested.runId,secretValues),assignString(result,"executionId",eventPayload.executionId??nested.executionId,secretValues),assignString(result,"actionId",eventPayload.actionId??nested.actionId,secretValues),assignString(result,"entityKind",eventPayload.entityKind??entity2.kind,secretValues),assignString(result,"entityId",eventPayload.entityId??entity2.id,secretValues),assignString(result,"jobId",eventPayload.jobId,secretValues);let sequence=eventPayload.sequence;if(typeof sequence==="number"&&Number.isFinite(sequence))result.sequence=sequence;return result}function assignString(target,key,value,secretValues){if(typeof value!=="string"||value.length===0)return;target[key]=redactAndBound(value,secretValues,128)}function projectTablePresentation(input){let{entry,data,correlation,presentation,actor}=input,name=entry?.name??"",isPureEngineRow=name==="workflow.node.enter"||name==="workflow.transition"||name==="workflow.node.transition"||name==="workflow.transition.requested"||name==="workflow.transition.denied"||name==="workflow.run.started"||name==="workflow.run.done"||name==="workflow.run.failed"||name==="workflow.run.finalized"||name==="workflow.run.paused"||name==="workflow.run.resumed"||name==="workflow.run.reseeded",agent;if(!isPureEngineRow&&data!==null){let executor=getPath(data,"routing.executor"),agentField=getPath(data,"agent"),metadataAgent=getPath(data,"metadata.agent");if(typeof executor==="string"&&executor.length>0&&!looksLikeOpaqueId(executor))agent=executor;else if(typeof agentField==="string"&&agentField.length>0&&!looksLikeOpaqueId(agentField))agent=agentField;else if(typeof metadataAgent==="string"&&metadataAgent.length>0&&!looksLikeOpaqueId(metadataAgent))agent=metadataAgent}if(!isPureEngineRow&&agent===void 0&&typeof actor==="string"&&actor.length>0){if(/^[A-Za-z][A-Za-z0-9._:-]*$/.test(actor)&&!PRODUCER_PACKAGES.has(actor)&&!looksLikeOpaqueId(actor))agent=actor}let corrParts=[];if(data!==null){let wfName=getPath(data,"workflowName");if(typeof wfName==="string"&&wfName.length>0&&!looksLikeOpaqueId(wfName))corrParts.push(wfName);let nodeLabel=getPath(data,"nodeLabel");if(typeof nodeLabel==="string"&&nodeLabel.length>0&&!looksLikeOpaqueId(nodeLabel))corrParts.push(nodeLabel);let kind=getPath(data,"kind");if(typeof kind==="string"&&kind.length>0&&!looksLikeOpaqueId(kind)&&kind!==wfName&&kind!==nodeLabel)corrParts.push(kind);let entityKind2=getPath(data,"entity.kind")??getPath(data,"entityKind")??correlation.entityKind,entityId=getPath(data,"entity.id")??getPath(data,"entityId")??correlation.entityId;if(typeof entityId==="string"&&entityId.length>0&&!looksLikeOpaqueId(entityId))if(typeof entityKind2==="string"&&entityKind2.length>0&&!looksLikeOpaqueId(entityKind2))corrParts.push(`${entityKind2}:${entityId}`);else corrParts.push(entityId)}else{let{entityKind:entityKind2,entityId}=correlation;if(typeof entityId==="string"&&entityId.length>0&&!looksLikeOpaqueId(entityId))if(typeof entityKind2==="string"&&entityKind2.length>0&&!looksLikeOpaqueId(entityKind2))corrParts.push(`${entityKind2}:${entityId}`);else corrParts.push(entityId)}if(typeof correlation.sequence==="number"&&Number.isFinite(correlation.sequence))corrParts.push(`#${correlation.sequence}`);let correlators=corrParts.length>0?corrParts.join(" · "):void 0,actionLabel;if(data!==null){let kind=getPath(data,"kind"),op=getPath(data,"operation")??getPath(data,"action");if(typeof kind==="string"&&kind.length>0&&!looksLikeOpaqueId(kind))actionLabel=kind;else if(typeof op==="string"&&op.length>0&&!looksLikeOpaqueId(op))actionLabel=op}if(actionLabel===void 0&&presentation.action?.kind==="filter"&&presentation.action.label)actionLabel=presentation.action.label;return{...correlators!==void 0?{correlators:boundPresentationString(correlators,512)}:{},...actionLabel!==void 0?{actionLabel:boundPresentationString(actionLabel,128)}:{},...agent!==void 0?{agent:boundPresentationString(agent,128)}:{}}}function buildPresentation(entry,data,correlation,severity,actor){let presenter=entry===void 0?void 0:SYSTEM_EVENT_PRESENTERS[entry.name];if(entry===void 0||presenter===void 0)return genericPresentation(severity);let input={data,correlation},summary,description,outcome,fields;try{if(summary=presenter.summary(input),description=presenter.description,fields=buildPresenterFields(presenter,data),presenter.outcome.support==="derived")outcome=presenter.outcome.derive(input)}catch{return genericPresentation(severity)}let basePresentation={severity,summary:boundPresentationString(summary,512)??"System event",description:boundPresentationString(description,512)??"System event.",fields,...outcome!==void 0?{outcome:boundPresentationString(outcome,128)}:{},...buildAction(entry,correlation)},tablePresentation=projectTablePresentation({entry,data,correlation,presentation:basePresentation,actor});return{...basePresentation,...tablePresentation}}function buildPresenterFields(presenter,data){if(!data)return[];let fields=[];for(let field of presenter.fields.slice(0,8)){let value=getPath(data,field.path),rendered=renderFieldValue(value);if(rendered!==void 0)fields.push({label:field.label,value:rendered})}return fields}function boundPresentationString(value,maxLength){if(typeof value!=="string"||value.length===0)return;return value.length<=maxLength?value:`${value.slice(0,maxLength-1)}…`}function genericPresentation(severity){return{severity,summary:"Unknown system event",description:"Unknown system event with bounded metadata.",fields:[]}}function buildAction(entry,correlation){if(!entry)return{};if(entry.remediationKind==="workflow-trace"&&isSafeIdentifier(correlation.runId))return{action:{label:"Trace workflow run",kind:"command",value:`spur workflow trace ${correlation.runId}`}};if(entry.remediationKind==="rule-trace"&&isSafeIdentifier(correlation.runId))return{action:{label:"Trace rule run",kind:"command",value:`spur rule trace ${correlation.runId}`}};if(entry.remediationKind==="prefix-filter")return{action:{label:`Filter ${entry.prefix} events`,kind:"filter",value:`prefix=${entry.prefix}`}};return{}}function extractSeverity(eventPayload){if(!isRecord4(eventPayload))return;return eventPayload.severity==="info"||eventPayload.severity==="warning"||eventPayload.severity==="error"?eventPayload.severity:void 0}function boundedProjectContext(project,secretValues){return{name:redactAndBound(project.name||"unknown",secretValues,128),root:redactAndBound(project.root||"",secretValues,MAX_STRING_LENGTH)}}function genericEnvelope(project,secretValues){return{schemaVersion:SYSTEM_EVENT_ENVELOPE_SCHEMA_VERSION,data:null,context:{project:boundedProjectContext(project,secretValues),producer:{package:"spur",subsystem:"unknown"},correlation:{}},presentation:{severity:"warning",summary:"Unknown system event",description:"Unknown system event with bounded metadata.",fields:[]}}}function getPath(value,path8){let current=value;for(let segment of path8.split(".")){if(!isRecord4(current))return;current=current[segment]}return current}function renderFieldValue(value){if(typeof value==="string")return value;if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="boolean")return String(value);return}function isSafeIdentifier(value){return typeof value==="string"&&SAFE_IDENTIFIER.test(value)}function isOmittedKey(key){let normalized=key.replaceAll(/[^A-Za-z0-9]/g,"").toLowerCase();return OMITTED_KEY.test(normalized)}function setPath(target,path8,value){let segments=path8.split("."),current=target;for(let segment of segments.slice(0,-1)){let existing=current[segment];if(isRecord4(existing)){current=existing;continue}let nested={};current[segment]=nested,current=nested}let finalSegment=segments.at(-1);if(finalSegment)current[finalSegment]=value}function boundedKey(key){return key.length<=MAX_FIELD_KEY_LENGTH?key:`${key.slice(0,MAX_FIELD_KEY_LENGTH-1)}…`}function isRecord4(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function safeEntries(value){try{return Object.entries(value)}catch{return[]}}var field=(path8,label)=>({path:path8,label}),SOURCE_PROFILES={planning:{producerPackage:"spur",subsystem:"planning",remediationKind:"prefix-filter"},queue:{producerPackage:"@gobing-ai/ts-infra",subsystem:"job-queue",remediationKind:"prefix-filter"},scheduler:{producerPackage:"@gobing-ai/ts-infra",subsystem:"scheduler",remediationKind:"prefix-filter"},message:{producerPackage:"spur",subsystem:"coordination-messaging",remediationKind:"prefix-filter"},process:{producerPackage:"@gobing-ai/ts-runtime",subsystem:"process-executor",remediationKind:"prefix-filter"},workflow:{producerPackage:"@gobing-ai/ts-dual-workflow-engine",subsystem:"workflow",remediationKind:"workflow-trace"},rule:{producerPackage:"@gobing-ai/ts-rule-engine",subsystem:"rule-engine",remediationKind:"rule-trace"},agent:{producerPackage:"@gobing-ai/ts-ai-runner",subsystem:"agent-runner",remediationKind:"prefix-filter"},history:{producerPackage:"spur",subsystem:"history",remediationKind:"prefix-filter"},bus:{producerPackage:"@gobing-ai/ts-infra",subsystem:"event-bus",remediationKind:"prefix-filter"},api:{producerPackage:"spur",subsystem:"http-api",remediationKind:"prefix-filter"},decision:{producerPackage:"spur",subsystem:"decision",remediationKind:"prefix-filter"}};function at(data,path8){if(data===null)return;let current=data;for(let segment of path8.split(".")){if(current===null||typeof current!=="object"||Array.isArray(current))return;current=current[segment]}return current}function s2(data,...paths){for(let path8 of paths){let value=at(data,path8);if(typeof value==="string"&&value.length>0)return value}return}function n2(data,...paths){for(let path8 of paths){let value=at(data,path8);if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="boolean")return String(value)}return}function entityId(input){return s2(input.data,"entity.id")??input.correlation.entityId??""}function looksLikeOpaqueId(value){if(typeof value!=="string")return!1;let v=value.trim();if(v==="")return!1;if(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(v))return!0;if(/^live[-_][a-z0-9._-]+$/i.test(v))return!0;if(/^(?:eventId|rowId|runId|executionId|actionId)$/i.test(v))return!0;return!1}function humanWorkflowTitle(input){let raw=s2(input.data,"workflowName")??s2(input.data,"workflow");if(raw!==void 0&&!looksLikeOpaqueId(raw))return(raw.split("/").pop()?.replace(/\.(?:ya?ml|json)$/i,"")??raw).replace(/[._-]+$/,"");return""}function humanStepLabel(data){let label=s2(data,"nodeLabel")??s2(data,"stepName")??s2(data,"step");if(label!==void 0&&!looksLikeOpaqueId(label))return label;let node=s2(data,"node");if(node!==void 0&&!looksLikeOpaqueId(node))return node;return}function derivedFrom(...paths){return{support:"derived",derive:({data})=>s2(data,...paths)}}function derivedFromValue(...paths){return{support:"derived",derive:({data})=>n2(data,...paths)??s2(data,...paths)}}var unsupported={support:"unsupported"};function baseEvent(name,source,renderer,payloadPolicy="metadata-only",tier="default",producer){return{name,source,tier,payloadPolicy,renderer,...producer!==void 0?{producer}:{}}}var BASE_CATALOG=[baseEvent("task.created","planning","planning"),baseEvent("task.updated","planning","planning"),baseEvent("task.transitioned","planning","planning"),baseEvent("feature.created","planning","planning"),baseEvent("feature.updated","planning","planning"),baseEvent("feature.transitioned","planning","planning"),baseEvent("queue.consumer.started","queue","queue"),baseEvent("queue.consumer.stopped","queue","queue"),baseEvent("queue.job.enqueued","queue","queue"),baseEvent("queue.job.started","queue","queue"),baseEvent("queue.job.completed","queue","queue"),baseEvent("queue.job.failed","queue","queue"),baseEvent("queue.job.retrying","queue","queue"),baseEvent("queue.stats","queue","queue"),baseEvent("scheduler.job.executed","scheduler","scheduler"),baseEvent("message.sent","message","message"),baseEvent("message.replied","message","message"),baseEvent("process.spawned","process","process"),baseEvent("process.exited","process","process"),baseEvent("process.stopped","process","process"),baseEvent("process.started","process","process"),baseEvent("agent.invoke.start","agent","agent"),baseEvent("agent.invoke.exit","agent","agent"),baseEvent("agent.invoke.escalated","agent","agent","metadata-only","default",{package:"spur",subsystem:"agent-runner"}),baseEvent("agent.invoke.exhausted","agent","agent","metadata-only","default",{package:"spur",subsystem:"agent-runner"}),baseEvent("agent.started","agent","agent"),baseEvent("agent.stopped","agent","agent"),baseEvent("agent.message.sent","agent","agent"),baseEvent("agent.lifecycle.changed","agent","agent"),baseEvent("strategy.changed","agent","agent","metadata-only","default",{package:"spur",subsystem:"fleet-strategy"}),baseEvent("fleet.capacity.changed","agent","agent","metadata-only","default",{package:"spur",subsystem:"write-slot"}),baseEvent("task.assigned","planning","planning"),baseEvent("history.import.completed","history","history-import"),baseEvent("history.analyze.completed","history","history-analyze"),baseEvent("history.daily.failed","history","history-daily"),baseEvent("history.refresh.enqueued","history","history-refresh"),baseEvent("rule.run.start","rule","rule"),baseEvent("rule.eval.start","rule","rule"),baseEvent("rule.eval.done","rule","rule"),baseEvent("rule.eval.error","rule","rule"),baseEvent("rule.run.done","rule","rule"),baseEvent("workflow.run.started","workflow","workflow-run"),baseEvent("workflow.run.done","workflow","workflow-run"),baseEvent("workflow.run.failed","workflow","workflow-run"),baseEvent("workflow.run.finalized","workflow","workflow-run"),baseEvent("workflow.escalation.created","workflow","workflow-run","redacted"),baseEvent("workflow.escalation.projection_failed","workflow","workflow-run","metadata-only"),baseEvent("workflow.run.paused","workflow","workflow-run"),baseEvent("workflow.run.resumed","workflow","workflow-run"),baseEvent("workflow.run.reseeded","workflow","workflow-run"),baseEvent("workflow.node.enter","workflow","workflow-phase"),baseEvent("workflow.phase","workflow","workflow-phase"),baseEvent("workflow.node.transition","workflow","workflow-transition"),baseEvent("workflow.transition","workflow","workflow-transition"),baseEvent("workflow.transition.requested","workflow","workflow-transition","metadata-only","diagnostic"),baseEvent("workflow.transition.denied","workflow","workflow-transition","metadata-only","diagnostic"),baseEvent("workflow.action.started","workflow","workflow-action"),baseEvent("workflow.action.finished","workflow","workflow-action"),baseEvent("workflow.action.failed_continue","workflow","workflow-action"),baseEvent("workflow.guard.evaluated","workflow","workflow-guard","metadata-only","diagnostic"),baseEvent("workflow.hitl.ask","workflow","workflow-hitl","redacted"),baseEvent("workflow.hitl.response","workflow","workflow-hitl","redacted"),baseEvent("workflow.hitl.note","workflow","workflow-hitl","redacted"),baseEvent("workflow.custom","workflow","workflow-custom"),baseEvent("workflow.agent","workflow","workflow-agent","redacted","diagnostic"),baseEvent("workflow.steering","workflow","workflow-steering","redacted"),baseEvent("api.request.error","api","api"),baseEvent("bus.emit.done","bus","bus","metadata-only","diagnostic"),baseEvent("bus.emit.noop","bus","bus","metadata-only","diagnostic"),baseEvent("bus.handler.error","bus","bus","metadata-only","diagnostic"),baseEvent("bus.handler.async.enqueued","bus","bus","metadata-only","diagnostic"),baseEvent("decision.start","decision","decision"),baseEvent("decision.success","decision","decision"),baseEvent("decision.failure","decision","decision"),baseEvent("decision.end","decision","decision"),baseEvent("decision.rejected","decision","decision")],SYSTEM_EVENT_PRESENTERS={"task.created":{description:"A task file was created with a new WBS id.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity")],summary:({data,correlation})=>`[task] ${entityId({data,correlation})} created`,outcome:unsupported},"task.updated":{description:"An existing task file was updated in place, naming the section that changed.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("field","Field"),field("data.mutation.name","Section"),field("data.after","After"),field("data.diff","Diff")],summary:({data,correlation})=>{let section=s2(data,"data.mutation.name"),id=entityId({data,correlation});return section!==void 0?`[task] ${section}`:`[task] ${id||"updated"}`},outcome:unsupported},"task.transitioned":{description:"A task moved between lifecycle states, naming both the previous and new status.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("from","From"),field("to","To")],summary:({data,correlation})=>{let id=entityId({data,correlation}),from=s2(data,"from"),to=s2(data,"to");return from!==void 0&&to!==void 0?`[task] ${id} : ${from} -> ${to}`:`[task] ${id} transitioned`},outcome:{support:"derived",derive:({data})=>s2(data,"to")}},"feature.created":{description:"A feature file was created with a new feature id.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity")],summary:({data,correlation})=>`[feature] ${entityId({data,correlation})} created`,outcome:unsupported},"feature.updated":{description:"An existing feature file was updated in place, naming the section that changed.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("field","Field"),field("data.mutation.name","Section"),field("data.after","After"),field("data.diff","Diff")],summary:({data,correlation})=>{let section=s2(data,"data.mutation.name"),id=entityId({data,correlation});return section!==void 0?`[feature] ${section}`:`[feature] ${id||"updated"}`},outcome:unsupported},"feature.transitioned":{description:"A feature moved between lifecycle states, naming both the previous and new status.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("from","From"),field("to","To")],summary:({data,correlation})=>{let id=entityId({data,correlation}),from=s2(data,"from"),to=s2(data,"to");return from!==void 0&&to!==void 0?`[feature] ${id} : ${from} -> ${to}`:`[feature] ${id} transitioned`},outcome:{support:"derived",derive:({data})=>s2(data,"to")}},"queue.consumer.started":{description:"The configured queue consumer began polling its named queue.",fields:[field("queueName","Queue"),field("startedAt","Started"),field("pollInterval","Poll interval"),field("batchSize","Batch size"),field("maxConcurrency","Max concurrency"),field("visibilityTimeout","Visibility timeout")],summary:({data})=>{let name=s2(data,"queueName");return name!==void 0?`[queue] ${name} : consumer started`:"[queue] consumer started"},outcome:{support:"derived",derive:({data})=>at(data,"startedAt")!==void 0?"running":void 0}},"queue.consumer.stopped":{description:"The queue consumer stopped, reporting whether it drained in-flight work.",fields:[field("queueName","Queue"),field("stoppedAt","Stopped"),field("drainTimeoutMs","Drain timeout"),field("inFlightAtStop","In flight"),field("drained","Drained")],summary:({data})=>{let name=s2(data,"queueName");return name!==void 0?`[queue] ${name} : consumer stopped`:"[queue] consumer stopped"},outcome:{support:"derived",derive:({data})=>{let drained=at(data,"drained");if(drained===!0)return"drained";if(drained===!1)return"timeout";return}}},"queue.job.enqueued":{description:"A job was enqueued onto the job queue for later processing.",fields:[field("jobId","Job"),field("type","Type"),field("nextRetryAt","Next retry")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} enqueued`:"[queue] job enqueued"},outcome:unsupported},"queue.job.started":{description:"A queued job handler began executing (job identity and phase anchor).",fields:[field("jobId","Job"),field("type","Type"),field("name","Name")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} started`:"[queue] job started"},outcome:unsupported},"queue.job.completed":{description:"A queued job finished successfully with its attempt and duration.",fields:[field("jobId","Job"),field("type","Type"),field("attempt","Attempt"),field("durationMs","Duration (ms)")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} completed`:"[queue] job completed"},outcome:unsupported},"queue.job.failed":{description:"A queued job exhausted its attempts and failed with an error.",fields:[field("jobId","Job"),field("type","Type"),field("attempt","Attempt"),field("maxRetries","Max retries"),field("durationMs","Duration (ms)"),field("error","Error")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} failed`:"[queue] job failed"},outcome:derivedFrom("error")},"queue.job.retrying":{description:"A queued job failed once and is scheduled for another attempt.",fields:[field("jobId","Job"),field("type","Type"),field("attempt","Attempt"),field("maxRetries","Max retries"),field("nextRetryAt","Next retry"),field("error","Error")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} retrying`:"[queue] job retrying"},outcome:{support:"derived",derive:({data})=>{let attempt=at(data,"attempt"),max=at(data,"maxRetries");if(typeof attempt==="number"&&typeof max==="number"&&Number.isFinite(attempt)&&Number.isFinite(max))return`retrying ${attempt}/${max}`;return s2(data,"error")}}},"queue.stats":{description:"Periodic job-queue statistics across ready, running, completed, and failed counts.",fields:[field("ready","Ready"),field("running","Running"),field("completed","Completed"),field("failed","Failed")],summary:()=>"[queue] stats",outcome:unsupported},"scheduler.job.executed":{description:"A scheduler job ran to completion or failed, with its duration.",fields:[field("name","Job"),field("action","Action"),field("durationMs","Duration (ms)"),field("error","Error")],summary:({data})=>{let name=s2(data,"name");return name!==void 0?`[scheduler] ${name}`:"[scheduler] job executed"},outcome:{support:"derived",derive:({data})=>s2(data,"error")??(at(data,"error")===null?"completed":void 0)}},"message.sent":{description:"A team message was sent from one member to another.",fields:[field("msgId","Message"),field("fromId","From"),field("toId","To"),field("threadId","Thread")],summary:({data})=>{let from=s2(data,"fromId"),to=s2(data,"toId");return from!==void 0&&to!==void 0?`[message] ${from} -> ${to}`:"[message] sent"},outcome:unsupported},"message.replied":{description:"A member replied to an existing message thread.",fields:[field("msgId","Message"),field("fromId","From"),field("toId","To"),field("threadId","Thread")],summary:({data})=>{let from=s2(data,"fromId"),thread=s2(data,"threadId");return from!==void 0&&thread!==void 0?`[message] ${from} replied in ${thread}`:"[message] replied"},outcome:unsupported},"process.spawned":{description:"A supervised process was spawned with a new pid.",fields:[field("label","Label"),field("pid","PID"),field("agentId","Agent")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} spawned`:"[process] spawned"},outcome:unsupported},"process.exited":{description:"A supervised process exited, carrying its exit code, signal, or failure reason.",fields:[field("label","Label"),field("pid","PID"),field("exitCode","Exit code"),field("signal","Signal"),field("durationMs","Duration (ms)"),field("reason","Reason")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} exited`:"[process] exited"},outcome:{support:"derived",derive:({data})=>{let reason=s2(data,"reason");if(reason!==void 0)return reason;let signal=s2(data,"signal");if(signal!==void 0)return`signal ${signal}`;let code=at(data,"exitCode");if(typeof code==="number"&&Number.isFinite(code))return code===0?"ok":`exit ${code}`;return}}},"process.stopped":{description:"A supervised process was stopped, naming the stopping reason.",fields:[field("label","Label"),field("pid","PID"),field("signal","Signal"),field("reason","Reason")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} stopped`:"[process] stopped"},outcome:derivedFrom("reason")},"process.started":{description:"A process executor started a process with a new pid.",fields:[field("label","Label"),field("pid","PID")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} started`:"[process] started"},outcome:unsupported},"agent.invoke.start":{description:"An agent invocation began, naming the agent and its operation.",fields:[field("agent","Agent"),field("operation","Operation"),field("routing.role","Role"),field("routing.tier","Tier"),field("routing.executor","Executor"),field("routing.source","Selection source")],summary:({data})=>{let agent=s2(data,"agent"),operation=s2(data,"operation");return agent!==void 0&&operation!==void 0?`[agent] ${agent} · ${operation}`:"[agent] invocation started"},outcome:unsupported},"agent.invoke.exit":{description:"An agent invocation exited, reporting its exit code or signal.",fields:[field("agent","Agent"),field("operation","Operation"),field("exitCode","Exit code"),field("signal","Signal"),field("routing.role","Role"),field("routing.tier","Tier"),field("routing.executor","Executor"),field("routing.source","Selection source")],summary:({data})=>{let agent=s2(data,"agent"),operation=s2(data,"operation");return agent!==void 0&&operation!==void 0?`[agent] ${agent} · ${operation} exited`:"[agent] invocation exited"},outcome:{support:"derived",derive:({data})=>{let signal=s2(data,"signal");if(signal!==void 0)return`signal ${signal}`;let code=at(data,"exitCode");if(typeof code==="number"&&Number.isFinite(code))return code===0?"ok":`exit ${code}`;return}}},"agent.invoke.escalated":{description:"An agent invocation escalated from one executor tier to another.",fields:[field("fromExecutor","From executor"),field("fromTier","From tier"),field("toExecutor","To executor"),field("toTier","To tier"),field("trigger","Trigger")],summary:({data})=>{let from=s2(data,"fromExecutor"),to=s2(data,"toExecutor");return from!==void 0&&to!==void 0?`[agent] ${from} -> ${to}`:"[agent] escalation"},outcome:{support:"derived",derive:({data})=>s2(data,"toTier")??s2(data,"trigger")}},"agent.invoke.exhausted":{description:"An agent invocation exhausted every eligible executor tier without success.",fields:[field("stage","Stage"),field("attempts","Attempts"),field("fromTier","From tier"),field("toTier","To tier"),field("fromExecutor","From executor"),field("toExecutor","To executor")],summary:({data})=>{let stage=s2(data,"stage");return stage!==void 0?`[agent] ${stage} escalation exhausted`:"[agent] escalation exhausted"},outcome:derivedFromValue("attempts")},"agent.started":{description:"An agent started, carrying its id and type.",fields:[field("agentId","Agent"),field("agentType","Agent type"),field("pid","PID")],summary:({data})=>{let id=s2(data,"agentId");return id!==void 0?`[agent] ${id} started`:"[agent] started"},outcome:unsupported},"agent.stopped":{description:"An agent stopped, reporting its exit code.",fields:[field("agentId","Agent"),field("exitCode","Exit code")],summary:({data})=>{let id=s2(data,"agentId");return id!==void 0?`[agent] ${id} stopped`:"[agent] stopped"},outcome:derivedFromValue("exitCode")},"strategy.changed":{description:"A project strategy changed (0838), minting a new strategy version for dispatch fencing.",fields:[field("data.projectPath","Project"),field("data.strategy","Strategy"),field("data.version","Version")],summary:({data})=>{let strategy=s2(data,"data.strategy"),version3=s2(data,"data.version");return strategy!==void 0?`[strategy] ${strategy}${version3!==void 0?` (v${version3})`:""}`:"[strategy] changed"},outcome:unsupported},"fleet.capacity.changed":{description:"The project write slot was claimed or released (0837), changing dispatch capacity.",fields:[field("data.projectPath","Project"),field("data.change","Change"),field("data.holderId","Holder")],summary:({data})=>{let change=s2(data,"data.change"),holder=s2(data,"data.holderId");return`[fleet] write slot ${change??"changed"}${holder!==void 0?` — ${holder}`:""}`},outcome:unsupported},"agent.lifecycle.changed":{description:"A fleet member reported its lifecycle state through a host hook (G73): working, idle, or blocked on a human (a permission prompt).",fields:[field("member","Member"),field("state","State"),field("seq","Sequence")],summary:({data})=>{let member=s2(data,"member"),state=s2(data,"state");return member!==void 0?`[agent] ${member} · ${state??"state"}`:"[agent] lifecycle changed"},outcome:{support:"derived",derive:({data})=>s2(data,"state")}},"agent.message.sent":{description:"A message was sent to an agent, reporting delivery success.",fields:[field("agentId","Agent"),field("ok","Delivered")],summary:({data})=>{let id=s2(data,"agentId");return id!==void 0?`[agent] message -> ${id}`:"[agent] message sent"},outcome:derivedFromValue("ok")},"task.assigned":{description:"A task was assigned to an agent, naming the agent when resolved.",fields:[field("memberId","Member"),field("agentType","Agent type"),field("taskId","Task"),field("outcome","Outcome")],summary:({data})=>{let member=s2(data,"memberId"),task=s2(data,"taskId");return task!==void 0&&member!==void 0?`[task] ${task} assigned to ${member}`:"[task] assignment recorded"},outcome:derivedFrom("outcome")},"history.import.completed":{description:"A history import finished, reporting files, messages, and exit code.",fields:[field("source","Source"),field("sources","Sources"),field("files","Files"),field("messages","Messages"),field("durationMs","Duration (ms)"),field("exitCode","Exit code"),field("artifactPath","Artifact"),field("cwd","Project root")],retain:[field("trigger","Refresh trigger"),field("windowStart","Refresh window start"),field("windowEnd","Refresh window end"),field("importMode","Import mode"),field("coverage","Refresh coverage")],summary:({data})=>{let source=s2(data,"source")??s2(data,"sources");return source!==void 0?`[history] import · ${source}`:"[history] import completed"},outcome:derivedFromValue("exitCode")},"history.analyze.completed":{description:"A history analyze pass finished, reporting sources, duration, and exit code.",fields:[field("source","Source"),field("sources","Sources"),field("durationMs","Duration (ms)"),field("exitCode","Exit code"),field("artifactPath","Artifact")],retain:[field("trigger","Refresh trigger"),field("windowStart","Refresh window start"),field("windowEnd","Refresh window end"),field("importMode","Import mode")],summary:({data})=>{let source=s2(data,"source")??s2(data,"sources");return source!==void 0?`[history] analyze · ${source}`:"[history] analyze completed"},outcome:derivedFromValue("exitCode")},"history.daily.failed":{description:"The daily history refresh failed, carrying the detail, reason, and exit code.",fields:[field("source","Source"),field("sources","Sources"),field("detail","Detail"),field("reason","Reason"),field("exitCode","Exit code")],retain:[field("trigger","Refresh trigger"),field("windowStart","Refresh window start"),field("windowEnd","Refresh window end"),field("importMode","Import mode")],summary:()=>"[history] daily failed",outcome:{support:"derived",derive:({data})=>s2(data,"reason")??s2(data,"detail")??n2(data,"exitCode")}},"history.refresh.enqueued":{description:"A completion-triggered history refresh was enqueued, naming its window.",fields:[field("trigger","Trigger"),field("triggerId","Trigger id"),field("jobId","Queue job"),field("windowStart","Window start"),field("windowEnd","Window end"),field("coalesced","Coalesced"),field("outcome","Outcome")],summary:({data})=>{let start=s2(data,"windowStart"),end=s2(data,"windowEnd");return start!==void 0&&end!==void 0?`[history] refresh · ${start} -> ${end}`:"[history] refresh enqueued"},outcome:{support:"derived",derive:({data})=>{let status=s2(data,"outcome");return status!==void 0&&status!=="enqueued"?status:void 0}}},"rule.run.start":{description:"A rule run began with the rule count it will evaluate.",fields:[field("runId","Run"),field("ruleCount","Rules"),field("evaluator","Evaluator")],summary:({data,correlation})=>{let run=s2(data,"runId")??correlation.runId;return run!==void 0?`[rule] run ${run} started`:"[rule] run started"},outcome:unsupported},"rule.eval.start":{description:"A single rule began evaluating.",fields:[field("runId","Run"),field("ruleId","Rule"),field("evaluator","Evaluator"),field("index","Index"),field("total","Total")],summary:({data})=>{let id=s2(data,"ruleId");return id!==void 0?`[rule] ${id} evaluating`:"[rule] evaluating"},outcome:unsupported},"rule.eval.done":{description:"A rule finished evaluating, reporting its findings count and severity.",fields:[field("runId","Run"),field("ruleId","Rule"),field("evaluator","Evaluator"),field("findings","Findings"),field("durationMs","Duration (ms)"),field("severity","Severity")],summary:({data})=>{let id=s2(data,"ruleId");return id!==void 0?`[rule] ${id} evaluated`:"[rule] evaluated"},outcome:derivedFromValue("findings")},"rule.eval.error":{description:"A rule evaluation failed with an error.",fields:[field("runId","Run"),field("ruleId","Rule"),field("evaluator","Evaluator"),field("error","Error")],summary:({data})=>{let id=s2(data,"ruleId");return id!==void 0?`[rule] ${id} error`:"[rule] error"},outcome:derivedFrom("error")},"rule.run.done":{description:"A rule run finished, reporting findings and whether it stopped early.",fields:[field("runId","Run"),field("findings","Findings"),field("durationMs","Duration (ms)"),field("stoppedEarly","Stopped early"),field("severity","Severity")],summary:({data,correlation})=>{let run=s2(data,"runId")??correlation.runId;return run!==void 0?`[rule] run ${run} done`:"[rule] run done"},outcome:{support:"derived",derive:({data})=>n2(data,"findings")??s2(data,"stoppedEarly")}},"workflow.run.started":{description:"A workflow run started, naming the workflow definition.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("mode","Mode"),field("dryRun","Dry run")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} started`:"[workflow] started"},outcome:unsupported},"workflow.run.done":{description:"A workflow run reached a done terminal state.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("finalState","Final state"),field("transitionsTaken","Transitions")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} done`:"[workflow] done"},outcome:derivedFrom("finalState")},"workflow.run.failed":{description:"A workflow run failed with a terminal failure reason.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("finalState","Final state"),field("reason","Reason")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} failed`:"[workflow] failed"},outcome:derivedFrom("reason")},"workflow.run.finalized":{description:"A workflow run settled on a terminal status.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("status","Status")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} finalized`:"[workflow] finalized"},outcome:derivedFrom("status")},"workflow.escalation.created":{description:"A canonical escalation packet was projected from existing run evidence.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("fingerprint","Fingerprint"),field("artifactPath","Artifact"),field("decision","Decision")],summary:(input)=>{let name=humanWorkflowTitle(input),decision=typeof at(input.data,"decision")==="string"?` — ${String(at(input.data,"decision"))}`:"";return name!==""?`[workflow] escalation packet created (${name}${decision})`:`[workflow] escalation packet created${decision}`},outcome:derivedFrom("decision")},"workflow.escalation.projection_failed":{description:"Escalation packet projection failed; the original failure is preserved untouched.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("error","Error")],summary:()=>"[workflow] escalation packet projection failed",outcome:derivedFrom("error")},"workflow.run.paused":{description:"A workflow run paused at a step, naming the step when available.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("transitionsTaken","Transitions")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} paused`:"[workflow] paused"},outcome:unsupported},"workflow.run.resumed":{description:"A paused workflow run resumed at a step, naming the step when available.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} resumed`:"[workflow] resumed"},outcome:unsupported},"workflow.run.reseeded":{description:"A workflow run was reseeded to a new state, naming the transition.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("fromState","From"),field("toState","To")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"fromState"),to=s2(input.data,"toState");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} : ${from} -> ${to}`:`[workflow] : ${from} -> ${to}`;return name!==""?`[workflow] ${name} reseeded`:"[workflow] reseeded"},outcome:derivedFrom("toState")},"workflow.node.enter":{description:"The engine entered a workflow node, naming the step when available.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("transitionsTaken","Transitions")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] node entered"},outcome:unsupported},"workflow.phase":{description:"A workflow phase changed status, naming the phase.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("phase","Phase"),field("status","Status")],summary:(input)=>{let name=humanWorkflowTitle(input),phase=s2(input.data,"phase"),parts=[name,phase].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] phase"},outcome:derivedFrom("status")},"workflow.node.transition":{description:"A workflow transitioned between nodes, naming the from and to states.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("trigger","Trigger")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} : ${from} -> ${to}`:`[workflow] : ${from} -> ${to}`;return name!==""?`[workflow] ${name} transitioned`:"[workflow] transitioned"},outcome:derivedFrom("to")},"workflow.transition":{description:"A workflow state transition was committed.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("trigger","Trigger")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} : ${from} -> ${to}`:`[workflow] : ${from} -> ${to}`;return name!==""?`[workflow] ${name} transitioned`:"[workflow] transitioned"},outcome:derivedFrom("to")},"workflow.transition.requested":{description:"A workflow transition was requested and accepted for evaluation.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("trigger","Trigger")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} requested ${from} -> ${to}`:`[workflow] requested ${from} -> ${to}`;return name!==""?`[workflow] ${name} transition requested`:"[workflow] transition requested"},outcome:unsupported},"workflow.transition.denied":{description:"A workflow transition was denied with a reason.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("reason","Reason")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} denied ${from} -> ${to}`:`[workflow] denied ${from} -> ${to}`;return name!==""?`[workflow] ${name} transition denied`:"[workflow] transition denied"},outcome:derivedFrom("reason")},"workflow.action.started":{description:"A workflow action began executing, naming the step and kind.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("actionId","Action"),field("kind","Kind")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} started`:"[workflow] action started"},outcome:unsupported},"workflow.action.finished":{description:"A workflow action finished, reporting its status and success.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("actionId","Action"),field("kind","Kind"),field("durationMs","Duration (ms)"),field("status","Status")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} finished`:"[workflow] action finished"},outcome:{support:"derived",derive:({data})=>s2(data,"status")??n2(data,"ok")}},"workflow.action.failed_continue":{description:"A workflow action failed but the workflow continued, carrying the error.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("transitionsTaken","Transitions"),field("error","Error")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} failed; continuing`:"[workflow] action failed; continuing"},outcome:derivedFrom("error")},"workflow.guard.evaluated":{description:"A workflow guard was evaluated for a transition, reporting whether it passed.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("kind","Kind"),field("passed","Passed")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} guard ${from} -> ${to}`:`[workflow] guard ${from} -> ${to}`;return name!==""?`[workflow] ${name} guard evaluated`:"[workflow] guard evaluated"},outcome:derivedFromValue("passed")},"workflow.hitl.ask":{description:"A workflow paused for human input, naming the step and kind.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("kind","Kind")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} awaiting input`:"[workflow] awaiting input"},outcome:unsupported},"workflow.hitl.response":{description:"Human input was received for a paused workflow step.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("ok","Accepted")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} input received`:"[workflow] input received"},outcome:derivedFromValue("ok")},"workflow.hitl.note":{description:"A note was recorded on a paused workflow step.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} note`:"[workflow] note"},outcome:unsupported},"workflow.custom":{description:"A custom workflow event was emitted, naming the custom event.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("name","Event")],summary:(input)=>{let name=humanWorkflowTitle(input),custom3=s2(input.data,"name"),parts=[name,custom3].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] custom"},outcome:unsupported},"workflow.agent":{description:"A workflow-dispatched agent execution lifecycle event, discriminated by kind.",fields:[field("runId","Run"),field("executionId","Execution"),field("actionId","Action"),field("kind","Kind"),field("agent","Agent"),field("model","Model")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),kind=s2(input.data,"kind"),parts=[name,kind!==void 0?`agent ${kind}`:"agent"].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] agent"},outcome:{support:"derived",derive:({data})=>s2(data,"kind")==="finished"?s2(data,"outcome"):void 0}},"workflow.steering":{description:"A steering command was acknowledged for a workflow action boundary.",fields:[field("runId","Run"),field("actionId","Action"),field("operation","Operation"),field("actor","Actor"),field("accepted","Accepted"),field("state","State"),field("reason","Reason")],summary:(input)=>{let name=humanWorkflowTitle(input),operation=s2(input.data,"operation"),parts=[name,operation!==void 0?`steering ${operation}`:"steering"].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] steering"},outcome:{support:"derived",derive:({data})=>{let reason=s2(data,"reason");if(reason!==void 0)return reason;let accepted=at(data,"accepted");if(accepted===!0)return"accepted";if(accepted===!1)return"rejected";return s2(data,"state")}}},"api.request.error":{description:"An API request failed, naming the method, path, and status or error code.",fields:[field("method","Method"),field("path","Path"),field("status","Status"),field("code","Code"),field("requestId","Request"),field("error","Error")],summary:({data})=>{let method=s2(data,"method"),path8=s2(data,"path");return method!==void 0&&path8!==void 0?`[api] ${method} ${path8}`:"[api] request error"},outcome:{support:"derived",derive:({data})=>s2(data,"error")??s2(data,"code")??n2(data,"status")}},"bus.emit.done":{description:"An event was emitted to its handlers on the event bus.",fields:[field("event","Event"),field("handlers","Handlers"),field("durationMs","Duration (ms)")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} emitted`:"[bus] event emitted"},outcome:derivedFromValue("handlers")},"bus.emit.noop":{description:"An event was emitted but had no registered handlers.",fields:[field("event","Event"),field("handlers","Handlers"),field("durationMs","Duration (ms)")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} had no handlers`:"[bus] event had no handlers"},outcome:derivedFromValue("handlers")},"bus.handler.error":{description:"An event-bus handler threw an error while processing an event.",fields:[field("event","Event"),field("handlers","Handlers"),field("durationMs","Duration (ms)"),field("error","Error")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} handler error`:"[bus] handler error"},outcome:derivedFrom("error")},"bus.handler.async.enqueued":{description:"An event-bus handler was enqueued for asynchronous processing.",fields:[field("event","Event"),field("handlers","Handlers")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} handlers enqueued`:"[bus] handlers enqueued"},outcome:derivedFromValue("handlers")},"decision.start":{description:"A decision invocation began — a maker is about to be asked.",fields:[field("decisionId","Decision"),field("type","Type"),field("maker","Maker"),field("makerSource","Maker source"),field("catalogLayer","Catalog layer"),field("minConfidence","Min confidence")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("inputKeys","Input keys"),field("evidenceDigest","Evidence digest"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id=s2(data,"decisionId"),maker=s2(data,"maker");return maker!==void 0?`[decision] ${id??"decision"} asking ${maker}`:`[decision] ${id??"decision"} asking maker`},outcome:unsupported},"decision.success":{description:"A decision invocation returned an accepted model answer (no fallback).",fields:[field("decisionId","Decision"),field("value","Answer"),field("confidence","Confidence"),field("maker","Maker")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id=s2(data,"decisionId"),value=s2(data,"value");return value!==void 0?`[decision] ${id??"decision"} answered ${value}`:`[decision] ${id??"decision"} answered`},outcome:derivedFromValue("value")},"decision.failure":{description:"A decision invocation served the declared fallback instead of a model answer.",fields:[field("decisionId","Decision"),field("reason","Reason"),field("fallbackValue","Fallback"),field("confidence","Confidence"),field("maker","Maker"),field("error","Error")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id=s2(data,"decisionId"),reason=s2(data,"reason");return reason!==void 0?`[decision] ${id??"decision"} fell back (${reason})`:`[decision] ${id??"decision"} fell back`},outcome:derivedFromValue("reason")},"decision.end":{description:"A decision invocation finished, with the outcome source and wall-clock duration.",fields:[field("decisionId","Decision"),field("durationMs","Duration ms"),field("value","Answer"),field("source","Source"),field("reason","Reason"),field("maker","Maker"),field("confidence","Confidence")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id=s2(data,"decisionId"),source=s2(data,"source");return source!==void 0?`[decision] ${id??"decision"} finished via ${source}`:`[decision] ${id??"decision"} finished`},outcome:derivedFromValue("reason")},"decision.rejected":{description:"A caller mistake refused a decision before any maker call (unknown id, maker, or parse).",fields:[field("decisionId","Decision"),field("errorKind","Error kind"),field("message","Message"),field("maker","Maker")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id=s2(data,"decisionId"),kind=s2(data,"errorKind");return kind!==void 0?`[decision] ${id??"decision"} rejected (${kind})`:`[decision] ${id??"decision"} rejected`},outcome:derivedFromValue("errorKind")}};function inferSeverity(name){if(/(?:failed|error|denied)$/.test(name))return"error";if(/(?:retrying|paused|dropped)$/.test(name))return"warning";return"info"}function resolveCatalogEntry(base2){let profile=SOURCE_PROFILES[base2.source],presenter=SYSTEM_EVENT_PRESENTERS[base2.name];return{name:base2.name,prefix:base2.name.split(".")[0]??base2.name,source:base2.source,tier:base2.tier,persisted:!0,streamed:!0,payloadPolicy:base2.payloadPolicy,renderer:base2.renderer,...profile,...base2.producer!==void 0?{producerPackage:base2.producer.package,subsystem:base2.producer.subsystem}:{},severity:inferSeverity(base2.name),description:presenter.description,metadataFields:presenter.retain?[...presenter.fields,...presenter.retain.filter((r)=>!presenter.fields.some((f)=>f.path===r.path))]:presenter.fields,remediationKind:profile.remediationKind}}var SYSTEM_EVENT_CATALOG=BASE_CATALOG.map(resolveCatalogEntry),SYSTEM_EVENT_NAMES=SYSTEM_EVENT_CATALOG.map((entry)=>entry.name),SYSTEM_EVENT_PERSISTED_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="default").map((entry)=>entry.name),SYSTEM_EVENT_STREAMED_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="default").map((entry)=>entry.name),SYSTEM_EVENT_PREFIXES=Array.from(new Set(SYSTEM_EVENT_CATALOG.map((entry)=>entry.prefix))),SYSTEM_EVENT_DEFAULT_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="default").map((entry)=>entry.name),SYSTEM_EVENT_DIAGNOSTIC_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="diagnostic").map((entry)=>entry.name);var SYSTEM_EVENT_CATALOG_METADATA=SYSTEM_EVENT_CATALOG.map(({name,prefix,source,tier,renderer,producerPackage,subsystem,severity,description,metadataFields,remediationKind})=>({name,prefix,source,tier,renderer,producerPackage,subsystem,severity,description,metadataFields,remediationKind}));var DEFAULT_SYSTEM_EVENT_RETENTION_QUOTA=1e4;function resolveRetentionQuotas(config4={},prefixes=SYSTEM_EVENT_PREFIXES){let defaultQuota=config4.default??DEFAULT_SYSTEM_EVENT_RETENTION_QUOTA,overrides=config4.prefixes??{};return prefixes.map((prefix)=>({prefix,quota:overrides[prefix]??defaultQuota}))}function registerSystemEventTap(bus,dao2,logger3,options={}){let handlers=new Map,inFlight=new Set,diagnosticEnabled=options.diagnosticEnabled===!0,quotas=resolveRetentionQuotas(options.retention);for(let entry of SYSTEM_EVENT_CATALOG){if(entry.tier==="diagnostic"&&!diagnosticEnabled)continue;let handler=(event)=>{let actor=extractSystemEventActor(event),p=persist(dao2,entry.prefix,{id:createId("sev"),event_name:entry.name,occurred_at:new Date().toISOString(),actor,payload_json:safeStringify(buildSystemEventEnvelope(entry,event,options.projectContext??systemEventProjectContext(""),options.secretValues,actor)),...extractSystemEventCorrelation(event)},quotas,logger3);inFlight.add(p),p.finally(()=>inFlight.delete(p))};handlers.set(entry.name,handler),bus.on(entry.name,handler)}return{unsubscribe:()=>{for(let[name,handler]of handlers)bus.off(name,handler);handlers.clear()},flush:async()=>{while(inFlight.size>0)await Promise.allSettled(inFlight)}}}async function persist(dao2,prefix,input,quotas,logger3){try{await dao2.insert(input),await dao2.pruneQuotas(quotas,prefix)}catch(error51){logger3.warn("system_events tap: persist failed",{name:input.event_name,error:stringifyError(error51)})}}function safeStringify(event){try{return JSON.stringify(event??null)}catch{return null}}function extractSystemEventActor(event){if(event&&typeof event==="object"){let obj=event;if(typeof obj.actor==="string"&&obj.actor.length>0)return obj.actor;if(typeof obj.agentId==="string"&&obj.agentId.length>0)return obj.agentId;if(typeof obj.memberId==="string"&&obj.memberId.length>0)return obj.memberId}return null}function extractSystemEventCorrelation(event){let correlation={run_id:null,entity_kind:null,entity_id:null,sequence:null};if(!event||typeof event!=="object")return correlation;let obj=event,nested=obj.correlation&&typeof obj.correlation==="object"?obj.correlation:{},runId=obj.runId??obj.run_id??nested.runId;if(typeof runId==="string"&&runId.length>0)correlation.run_id=runId;if(typeof obj.sequence==="number"&&Number.isFinite(obj.sequence))correlation.sequence=obj.sequence;let entity2=obj.entity;if(entity2&&typeof entity2==="object"){let{kind,id}=entity2;if(typeof kind==="string"&&kind.length>0)correlation.entity_kind=kind;if(typeof id==="string"&&id.length>0)correlation.entity_id=id}if(typeof obj.entityKind==="string"&&obj.entityKind.length>0)correlation.entity_kind=obj.entityKind;if(typeof obj.entityId==="string"&&obj.entityId.length>0)correlation.entity_id=obj.entityId;return correlation}function stringifyError(error51){if(error51 instanceof Error)return`${error51.name}: ${error51.message}`;return String(error51)}var TRIPWIRE_CATALOG=Object.freeze({"retry-exhausted":{id:"retry-exhausted",version:1,response:"fail",nextDecision:"Retries are exhausted; an operator must decide to escalate, extend the retry policy, or fail the stage. No further automatic retry is permitted."},"hard-budget":{id:"hard-budget",version:1,response:"fail",nextDecision:"An operator must raise the declared budget or trim the stage scope, then re-run the action; the run stays failed until then."},"capability-denied":{id:"capability-denied",version:1,response:"fail",nextDecision:"An operator must attest the executor capabilities in agent config or lower the stage requiresCapabilities, then re-run the action."},"proof-invalidated":{id:"proof-invalidated",version:1,response:"fail",nextDecision:"An operator must restore the proof inputs or re-establish the verdict (re-verify) before record; recording against a changed tree is blocked."},"output-drop":{id:"output-drop",version:1,response:"continue",nextDecision:"The dispatch completed but its captured evidence is incomplete (bounded relay dropped chunks). Inspect the session/trace for full output if the result is contested."}});var{copyFile,link,mkdir,readFile:readFile2,unlink:unlink2,writeFile:writeFile2}=await import("node:fs/promises");function workflowVersionLiteral(workflow){return typeof workflow.version==="string"&&workflow.version!==""?workflow.version:null}var{appendFileSync:appendFileSync4,closeSync,existsSync:existsSync5,lstatSync:lstatSync2,mkdirSync:mkdirSync3,openSync,readdirSync:readdirSync4,readFileSync:readFileSync5,renameSync:renameSync3,unlinkSync:unlinkSync2,writeFileSync:writeFileSync4,writeSync}=await import("node:fs"),{lstat:lstat2,mkdir:mkdir2,readdir,readFile:readFile3}=await import("node:fs/promises");function parseIdentityMetadata(raw){if(raw.trim()==="")return{};try{let parsed=JSON.parse(raw);if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))return null;return parsed}catch{return null}}async function openInlineRunProjectDb(workdir){let url2=join11(resolve7(workdir),".spur","spur.db");mkdirSync3(join11(url2,".."),{recursive:!0});let adapter=await createMigratedDb({url:url2});return{adapter,close:()=>adapter.close()}}async function readInstalledInventory(input){let launch=input.spurBin?splitLaunchCommand(input.spurBin,'inline-run-setup "spurBin"'):existsSync5(input.localCli)?{command:"bun",leadingArgs:[input.localCli]}:{command:"spur",leadingArgs:[]};if("error"in launch)throw Error(launch.error);let res=await new NodeProcessExecutor2().run({command:launch.command,args:[...launch.leadingArgs,"workflow","show",input.file,"--format","todo","--json"],cwd:input.workdir??process.cwd(),forceBuffered:!0,rejectOnError:!1,timeout:30000});if(res.exitCode!==0){let detail=res.stderr.trim()!==""?res.stderr.trim():`exit ${res.exitCode??-1}`;throw Error(`could not resolve the workflow definition with the installed CLI: ${detail}`)}let value=JSON.parse(res.stdout);if(value&&typeof value==="object"&&"ok"in value&&"data"in value&&value.ok===!0)return value.data;return value}var MAX_CITED_RUN_FILES=64;async function readExistingRunFile(path8){let stat2=await lstat2(path8).catch((error51)=>{if(error51.code==="ENOENT")return;throw error51});if(stat2===void 0)return;if(!stat2.isFile())throw Error(`persist-out: destination ${path8} is not a regular file — refusing to follow it`);return readFile3(path8)}async function persistWorktreeRuns(input){let fromDir=resolve7(input.fromWorkdir),toDir=resolve7(input.toWorkdir),fromRunDir=join11(fromDir,".spur","run"),toRunDir=join11(toDir,".spur","run"),fromRecordsDir=runStoragePaths(fromDir).recordsDir,toRecordsDir=runStoragePaths(toDir).recordsDir,fs2=createNodeFileSystem2(),fromEvidence=runStoragePaths(fromDir).evidenceDir,toEvidence=runStoragePaths(toDir).evidenceDir,evidenceCopies=[],evidenceSkipped=[],forwardedWbs=new Set;for(let taskFile of input.taskFiles??[]){let wbs=/^(\d{4})_/.exec(basename5(taskFile))?.[1];if(wbs!==void 0)forwardedWbs.add(wbs)}let hasTaskFilter=input.taskFiles!==void 0,worktreeRunIds=new Set,ownerDb=await openInlineRunProjectDb(fromDir);try{for(let row of await listRunIdRows(ownerDb.adapter)){if(!SAFE_RUN_ID_RE.test(row.id))throw new InvalidWorkflowRunIdError(row.id);worktreeRunIds.add(row.id)}}finally{ownerDb.close()}await resolveDurableArtifactPath(fs2,fromDir,join11(fromEvidence,"probe.json"),"evidence");let evidenceNames=await readdir(fromEvidence).catch((error51)=>{if(error51.code==="ENOENT")return[];throw error51});for(let name of evidenceNames.sort()){let source2=await resolveDurableArtifactPath(fs2,fromDir,join11(fromEvidence,name),"evidence"),target=await resolveDurableArtifactPath(fs2,toDir,join11(toEvidence,name),"evidence"),stat2=await lstat2(source2);if(!stat2.isFile())throw Error(`persist-out: durable evidence is not a regular file: ${name}`);let bytes=await readFile3(source2),verdictWbs=/^(\d{4})-verdict\.json$/.exec(name)?.[1],isOwned=!1;if(verdictWbs!==void 0){let parsed=parseVerifyVerdict(bytes.toString(),verdictWbs),raw=JSON.parse(bytes.toString());if(!parsed||parsed.wbs!==verdictWbs||raw.wbs!==void 0&&raw.wbs!==verdictWbs)throw Error(`persist-out: malformed durable verdict identity: ${name}`);isOwned=hasTaskFilter?forwardedWbs.has(verdictWbs):!0}else if(name.endsWith("-feature-verification.json")){let receipt=parseFeatureVerificationReceipt(bytes.toString()),owner=name.slice(0,-26);if(owner!==receipt.runId&&owner!==receipt.featureId)throw Error(`persist-out: malformed durable receipt identity: ${name}`);isOwned=worktreeRunIds.has(receipt.runId)}else throw Error(`persist-out: unclassified durable evidence: ${name}`);let existing=await readExistingRunFile(target);if(existing!==void 0&&!existing.equals(bytes)){if(isOwned)throw Error(`persist-out: durable evidence conflicts: ${name}`);let newer=(await lstat2(target)).mtimeMs>=stat2.mtimeMs?"invoking":"worktree";evidenceSkipped.push({name,reason:"foreign-divergent",newer});continue}evidenceCopies.push({source:source2,target,bytes})}let citedNames=new Set,citedDirSkips=new Set;for(let taskFile of input.taskFiles??[]){let content;try{content=await readFile3(resolve7(toDir,taskFile),"utf8")}catch(error51){throw Error(`persist-out: merged task file ${taskFile} is unreadable: ${String(error51)}`)}for(let match of content.matchAll(RUN_CITATION_RE)){let name=asLiteralRunFileName(match[1]??"");if(name===void 0)continue;if(match[2]!==void 0){citedDirSkips.add(name);continue}if(citedNames.has(name))continue;if(citedNames.size>=MAX_CITED_RUN_FILES)throw Error(`persist-out: merged task files cite more than ${MAX_CITED_RUN_FILES} distinct `+".spur/run/ files — over the fixed citation cap (0984 R3); split the batch or prune the citations");citedNames.add(name)}}if((input.taskFiles??[]).length>0){let prefixes=[...forwardedWbs].map((wbs)=>`${wbs}-`),recordNames=new Set;for(let runId of worktreeRunIds)prefixes.push(`${runId}-`),recordNames.add(`${runId}.md`).add(`${runId}.state.json`);let entries=await readdir(fromRunDir).catch((error51)=>{if(error51.code==="ENOENT")return[];throw error51}),ownedCounts=new Map;for(let name of entries.sort()){if(recordNames.has(name))continue;let owner=prefixes.find((prefix)=>name.startsWith(prefix));if(owner===void 0)continue;let count3=(ownedCounts.get(owner)??0)+1;if(count3>MAX_CITED_RUN_FILES)throw Error(`persist-out: owner ${owner} owns more than ${MAX_CITED_RUN_FILES} .spur/run/ files `+"— over the per-owner evidence cap (1012 R1, 1034 R1); split the batch or prune the evidence");ownedCounts.set(owner,count3),citedNames.add(name)}}let citedCopies=[],citedSkips=[];for(let name of citedDirSkips)citedSkips.push({id:name,reason:`cited-directory:${name}`});for(let name of citedNames){let scratchPath=join11(fromRunDir,name),durablePath=join11(fromRecordsDir,name),scratchStat=await lstat2(scratchPath).catch(()=>{return}),sourceIsDurable=scratchStat===void 0,sourcePath=sourceIsDurable?durablePath:scratchPath,targetPath=sourceIsDurable?join11(toRecordsDir,name):join11(toRunDir,name),sourceStat=sourceIsDurable?await lstat2(durablePath).catch(()=>{return}):scratchStat,targetBytes=await readExistingRunFile(targetPath);if(sourceStat===void 0){let otherTarget=sourceIsDurable?join11(toRunDir,name):join11(toRecordsDir,name);if(targetBytes===void 0&&await readExistingRunFile(otherTarget)===void 0)throw Error(`persist-out: cited run evidence .spur/run/${name} is missing in both the worktree and `+"the invoking tree — resolve or drop the citation before teardown (0984 R1)");continue}if(!sourceStat.isFile()){let kind=sourceStat.isDirectory()?"directory":sourceStat.isSymbolicLink()?"symlink":"non-file";citedSkips.push({id:name,reason:`cited-${kind}:${name}`});continue}if(targetBytes!==void 0){let sourceBytes=await readFile3(sourcePath);if(!targetBytes.equals(sourceBytes))throw Error(`persist-out: cited run evidence .spur/run/${name} diverges from the invoking tree's `+"existing file — refusing to overwrite; reconcile the two copies by hand (0984 R4)");continue}citedCopies.push({name,sourcePath,targetPath})}let source=await openInlineRunProjectDb(fromDir);try{let runRows=await listRunIdRows(source.adapter);for(let row of runRows)if(!SAFE_RUN_ID_RE.test(row.id))throw new InvalidWorkflowRunIdError(row.id);let recordBytes=new Map;for(let row of runRows){let bookkeeping=row.workflowName!==null&&row.workflowName!==void 0&&isBookkeepingWorkflow(row.workflowName);for(let fileName of[`${row.id}.md`,`${row.id}.state.json`])try{recordBytes.set(fileName,await readFile3(join11(fromRecordsDir,fileName)))}catch(error51){if(error51.code==="ENOENT"){if(bookkeeping)continue;throw Error(`persist-out: ${row.workflowName??"unknown"} run ${row.id} is missing its run record \`${fileName}\` in the worktree — failing closed before any row transfer `+"(green-run evidence guarantee, 0984 R5 / 1043 R1)")}throw error51}}let target=await openInlineRunProjectDb(toDir);try{let{persistedIds,skipped}=await transferRunTables(source.adapter,target.adapter),recordIds=[...persistedIds,...skipped.filter((s3)=>s3.reason==="id-exists").map((s3)=>s3.id)],recordSkips=[],referenceMoves=[];if(evidenceCopies.length>0){ensureDurablePlaneIgnored(toDir);for(let copy of evidenceCopies){await mkdir2(join11(copy.target,".."),{recursive:!0});let existing=await readExistingRunFile(copy.target);if(existing!==void 0&&!existing.equals(copy.bytes))throw Error(`persist-out: durable evidence conflicts: ${copy.target}`);if(existing===void 0)writeFileSync4(copy.target,copy.bytes,{flag:"wx"});referenceMoves.push({source:copy.source,target:fs2.realPath?.(copy.target)??copy.target})}}if(recordIds.length>0||citedCopies.length>0){mkdirSync3(toRunDir,{recursive:!0}),mkdirSync3(toRecordsDir,{recursive:!0}),ensureDurablePlaneIgnored(toDir);for(let id of recordIds)for(let fileName of[`${id}.md`,`${id}.state.json`]){let sourceBytes=recordBytes.get(fileName);if(sourceBytes===void 0){recordSkips.push({id,reason:`record-missing:${fileName}`});continue}let targetPath=join11(toRecordsDir,fileName),existing=await readExistingRunFile(targetPath);if(existing!==void 0){if(existing.equals(sourceBytes))continue;recordSkips.push({id,reason:`record-conflict:${fileName}`});continue}writeFileSync4(targetPath,sourceBytes,{flag:"wx"})}for(let cited of citedCopies){let sourceBytes=await readFile3(cited.sourcePath),existing=await readExistingRunFile(cited.targetPath);if(existing!==void 0){if(!existing.equals(sourceBytes))throw Error(`persist-out: cited run evidence .spur/run/${cited.name} diverges from the invoking `+"tree's existing file — refusing to overwrite; reconcile the two copies by hand (0984 R4)");continue}writeFileSync4(cited.targetPath,sourceBytes,{flag:"wx"})}for(let id of recordIds)await carryRunRecordDir(fromRecordsDir,toRecordsDir,"",id,recordSkips,referenceMoves)}return await redirectRunStorageReferences(target.adapter,referenceMoves),{ok:!0,persisted:persistedIds.length,skipped:[...skipped,...recordSkips,...citedSkips],...evidenceSkipped.length>0?{evidenceSkipped}:{}}}finally{target.close()}}finally{source.close()}}async function createOrAttachInlineRun(input){let runId=input.runId.trim();if(runId==="")return{ok:!1,error:"inline run setup requires a non-empty runId (driver Run setup step 2)"};let workdir=resolve7(input.workdir),resolved;try{let projection=input.inventory===void 0?void 0:parseWorkflowInventory(input.inventory);if(projection&&!projection.ok)return projection;let inventory=projection?.ok?projection.inventory:void 0;if(inventory&&(!inventory.source||inventory.kind!=="state-machine"))return{ok:!1,error:"inline run setup requires a state-machine inventory with definition source"};if(resolved=await resolveWorkflowDefinition(workdir,inventory?.source?.path??input.file,{validateSchema:!0,...input.embeddedSchemas!==void 0?{embeddedSchemas:input.embeddedSchemas}:{},...!inventory?{registered:input.registered}:{}}),(resolved.workflow.kind??"state-machine")!=="state-machine")return{ok:!1,error:"inline run setup requires a state-machine definition"};if(inventory?.source){let identity5=assertInventoryIdentity(inventory,resolved.digest);if(!identity5.ok)return identity5;if(inventory.name!==resolved.workflow.name)return{ok:!1,error:"inline run setup: inventory workflow name does not match its definition"};resolved={...resolved,layer:inventory.source.layer}}}catch(error51){return{ok:!1,error:`inline run setup could not resolve the workflow definition: ${error51.message}`}}let digest=resolved.digest,version3=workflowVersionLiteral(resolved.workflow),source={path:resolved.path,layer:resolved.layer,workdir},db2=await input.getDb(),existing=await new RunDao(db2).traceRowById(runId);if(existing!==void 0){let metadata=parseIdentityMetadata(existing.metadata_json);if(metadata===null)return{ok:!1,error:`inline run setup refuses run ${runId}: its existing row has malformed metadata_json, `+"so its identity cannot be verified — delete the stale run row or allocate a new run id"};let resumeDigest=typeof metadata.resumeDefinitionDigest==="string"?metadata.resumeDefinitionDigest:void 0,launchDigest=typeof metadata.definitionDigest==="string"?metadata.definitionDigest:void 0,effectiveDigest=resumeDigest??launchDigest;if(effectiveDigest===void 0)return{ok:!1,error:`inline run setup refuses run ${runId}: its existing row carries no definition digest `+"(pre-identity legacy row) — allocate a new run id instead of attaching an unverifiable identity"};if(effectiveDigest!==digest)return{ok:!1,error:`inline run setup refuses run ${runId}: the resolved definition digest (${digest}) does not match the run's recorded ${resumeDigest!==void 0?"resume":""} digest (${effectiveDigest}) — `+"a changed definition must resume through the explicit resume rules, not silently re-attach"};if(existing.workflow_name!==resolved.workflow.name)return{ok:!1,error:`inline run setup refuses run ${runId}: the run row records workflow "${existing.workflow_name}" but the resolved definition is "${resolved.workflow.name}" — conflicting run identity`};if(typeof metadata.definitionSource!=="object"||metadata.definitionSource===null||Array.isArray(metadata.definitionSource))return{ok:!1,error:`inline run setup refuses run ${runId}: its existing row carries no definition source `+"(path/layer/workdir) — allocate a new run id instead of attaching an unverifiable launch source"};let existingSource=metadata.definitionSource;if(!(typeof existingSource.path==="string"&&resolve7(existingSource.path)===resolved.path&&normalizePersistedWorkflowLayer(existingSource.layer)===resolved.layer&&typeof existingSource.workdir==="string"&&resolve7(existingSource.workdir)===workdir))return{ok:!1,error:`inline run setup refuses run ${runId}: the recorded definition source (${JSON.stringify(existingSource)}) does not match the resolved launch source (${JSON.stringify(source)}) — conflicting project/workdir identity`};return{ok:!0,attached:!0,runId,workflowName:resolved.workflow.name,definitionDigest:digest,workflowVersion:version3,resolvedPath:resolved.path,layer:resolved.layer,workdir,status:existing.status}}return await new WorkflowService(createDefaultWorkflowEngineHost(),new DbWorkflowPersistenceAdapter(db2)).createOrAttachRun({id:runId,workflow_name:resolved.workflow.name,mode:"state-machine",status:"running",started_at:new Date().toISOString(),completed_at:null,metadata_json:JSON.stringify({definitionDigest:digest,workflowVersion:version3,definitionSource:source})}),{ok:!0,attached:!1,runId,workflowName:resolved.workflow.name,definitionDigest:digest,workflowVersion:version3,resolvedPath:resolved.path,layer:resolved.layer,workdir,status:"running"}}async function runDecideForInlineRun(input){let optionsFile=join11(resolve7(input.workdir),input.optionsFile),raw;try{raw=JSON.parse(await readFile3(optionsFile,"utf8"))}catch(error51){return{ok:!1,error:`decide: unreadable options file ${input.optionsFile}: ${String(error51)}`}}let parsed=DecideOptionsSchema.safeParse(raw);if(!parsed.success)return{ok:!1,error:`decide: invalid options — ${parsed.error.issues.map((i2)=>i2.message).join("; ")}`};let spurConfig=input.spurConfig,result=await new DecideActionRunner(createNodeFileSystem2(),{enabled:input.enabled,...spurConfig!==void 0?{decisionService:()=>getDecisionService(spurConfig,resolve7(input.workdir))}:{},...input.observabilityBus!==void 0?{observabilityBus:input.observabilityBus}:{},...input.decisionLog!==void 0?{decisionLog:input.decisionLog}:{}}).execute(raw,{runId:input.runId??"inline-decide",stateOrNodeId:input.node??"decide",workdir:resolve7(input.workdir),vars:input.correlationVars??{},env:{}});if(!result.ok||result.data===void 0)return{ok:!1,error:result.error??"decide: action failed without an error message"};let decision=result.data.decision;return{ok:!0,value:decision.value,degraded:decision.degraded,reason:decision.reason,source:decision.source,backend:decision.backend,confidence:decision.confidence,resultFile:join11(resolve7(input.workdir),parsed.data.resultFile),durationMs:decision.durationMs}}async function carryRunRecordDir(srcRoot,destRoot,rel,runId,skips,moves){let fs2=createNodeFileSystem2();await resolveDurableArtifactPath(fs2,resolve7(srcRoot,"../../.."),join11(srcRoot,rel,"probe"),"runs"),await resolveDurableArtifactPath(fs2,resolve7(destRoot,"../../.."),join11(destRoot,rel,"probe"),"runs");let entries;try{entries=await readdir(join11(srcRoot,rel),{withFileTypes:!0})}catch(error51){if(error51.code==="ENOENT"){if(rel==="")skips.push({id:runId,reason:"source-missing"});return}throw error51}for(let entry of entries){if(rel===""&&![runId,`${runId}.md`,`${runId}.state.json`,`${runId}.log`].includes(entry.name))continue;let relNext=rel===""?entry.name:`${rel}/${entry.name}`;if(entry.isDirectory()){await carryRunRecordDir(srcRoot,destRoot,relNext,runId,skips,moves);let target=join11(destRoot,relNext);if(existsSync5(target))moves.push({source:join11(srcRoot,relNext),target:fs2.realPath?.(target)??target});continue}let source=await resolveDurableArtifactPath(fs2,resolve7(srcRoot,"../../.."),join11(srcRoot,relNext),"runs"),dest=await resolveDurableArtifactPath(fs2,resolve7(destRoot,"../../.."),join11(destRoot,relNext),"runs");if(!(await lstat2(source)).isFile())throw Error(`persist-out: retained item is not a regular file: ${source}`);let sourceBytes=await readFile3(source),existing=await readExistingRunFile(dest);if(existing!==void 0){if(!existing.equals(sourceBytes)){if(rel!=="")throw Error(`persist-out: retained data conflicts: ${relNext}`);skips.push({id:`${runId}/${relNext}`,reason:`record-conflict:${relNext}`});continue}}else await mkdir2(join11(dest,".."),{recursive:!0}),writeFileSync4(dest,sourceBytes,{flag:"wx"});if(moves.push({source,target:fs2.realPath?.(dest)??dest}),moves.push({source:join11(srcRoot,relNext),target:fs2.realPath?.(dest)??dest}),rel!=="")moves.push({source:join11(srcRoot,rel),target:fs2.realPath?.(join11(destRoot,rel))??join11(destRoot,rel)})}}function writeInlineRunOutcome(runId,outcome){let runDir=runStoragePaths(process.cwd()).recordsDir;if(!existsSync5(runDir))mkdirSync3(runDir,{recursive:!0});let statePath=join11(runDir,`${runId}.state.json`),markdownPath=join11(runDir,`${runId}.md`),prior={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))prior=parsed}catch{}let at2=new Date().toISOString(),state={schemaVersion:1,runId,...outcome.workflowName!==void 0?{workflowName:outcome.workflowName}:{},...outcome.status!==void 0?{status:outcome.status}:{},startedAt:typeof prior.startedAt==="string"?prior.startedAt:at2,updatedAt:at2,...outcome.attached!==void 0?{attached:outcome.attached}:{},...outcome.definitionDigest!==void 0?{definitionDigest:outcome.definitionDigest}:{},...outcome.workflowVersion!==void 0?{workflowVersion:outcome.workflowVersion}:{},...outcome.resolvedPath!==void 0?{resolvedPath:outcome.resolvedPath}:{},...outcome.layer!==void 0?{layer:outcome.layer}:{},...outcome.workdir!==void 0?{workdir:outcome.workdir}:{},ok:outcome.ok,...outcome.ok===!1&&outcome.error!==void 0?{error:outcome.error}:{}},temp=`${statePath}.tmp`;try{writeFileSync4(temp,`${JSON.stringify(state,null,4)}
1855
+ `);else if(options.instructions!==void 0)instructionsText=options.instructions;if(evidencePrelude!==void 0)evidencePrelude.phases.push({phase:"evidence",startedAt:evidencePrelude.startedAt,durationMs:Date.now()-evidencePrelude.startedAt})}catch(error51){return emitDecisionRejected(bus,callContext,error51,void 0,rejectedLog(evidencePrelude)),await writeRow(this.degradedCatalogRow({fallback:description.fallback,type:description.type},options.id,"error"))}let input={...options.params,...instructionsText!==void 0?{instructions:instructionsText}:{}},served=await decisionService.decide(options.decision,input,{context:{caller:"workflow",correlation:callContext.correlation},...bus!==void 0?{bus}:{},...sink!==void 0&&evidencePrelude!==void 0?{decisionLog:{sink,prelude:evidencePrelude}}:{}});if(served.type!=="choice"&&served.type!=="noul")return{ok:!1,error:`${DECIDE_KIND}: decision "${options.decision}" has type "${served.type}"; workflow decide supports choice and noul`};return await writeRow(this.catalogRow({...served,type:served.type},options.id))}}function isDecidableType(type){return type==="choice"||type==="noul"}import{basename as basename4,isAbsolute as isAbsolute3,join as join14,resolve as resolve7}from"node:path";init_dist6();init_dist2();var EMBEDDED_SCHEMA_PREFIX="\x00embedded-spur",SPUR_SCHEMA_MANIFEST="@gobing-ai/spur/package.json";function normalizeLayerPath(cwd,path8){return resolve7(cwd,path8)}function workflowLayers(opts){let sharedRoot=opts.sharedRoot!==void 0?opts.sharedRoot:bundledConfigRoot(),sharedPath=sharedRoot!==null?normalizeLayerPath(opts.cwd,join14(sharedRoot,"workflows")):null,layers=[],seen=new Set,add=(id2,path8)=>{if(seen.has(path8))return;seen.add(path8),layers.push({id:id2,path:path8})};add("project",normalizeLayerPath(opts.cwd,join14(opts.cwd,".spur","workflows")));for(let entry of opts.registered){if(sharedPath!==null&&normalizeLayerPath(opts.cwd,entry)===sharedPath)continue;add("registered",normalizeLayerPath(opts.cwd,entry))}if(sharedPath!==null)add("shared",sharedPath);return layers}function createEmbeddedSchemaOptions(embedded){if(embedded===void 0||embedded.size===0)return;let nodeFs=createNodeFileSystem2();return{resolve:(specifier)=>specifier===SPUR_SCHEMA_MANIFEST?`${EMBEDDED_SCHEMA_PREFIX}/package.json`:specifier,fileSystem:{readFile:async(path8)=>{if(!path8.startsWith(EMBEDDED_SCHEMA_PREFIX))return nodeFs.readFile(path8);let subpath=path8.slice(EMBEDDED_SCHEMA_PREFIX.length+1),text3=embedded.get(subpath);if(text3===void 0)throw Error(`No embedded schema registered for "${subpath}".`);return text3}}}}async function readWorkflowNameFast(fs3,filePath){try{let text3=await fs3.readFile(filePath),parsed=$parse(text3);return typeof parsed?.name==="string"?parsed.name:null}catch{return null}}async function scanWorkflowByName(cwd,name,registered){let fs3=createNodeFileSystem2();for(let layer of workflowLayers({cwd,registered}))try{let files=(await fs3.readDir(layer.path)).filter((f)=>f.endsWith(".yaml")||f.endsWith(".yml"));for(let f of files){let abs=join14(layer.path,f);if(await readWorkflowNameFast(fs3,abs)===name)return{path:abs,source:layer.id}}}catch{}return null}function resolveWorkflowFile(cwd,file2){let fs3=createNodeFileSystem2(),projectPath=resolve7(cwd,file2);if(fs3.exists(projectPath))return{path:projectPath,source:"project"};let isYaml=file2.endsWith(".yaml")||file2.endsWith(".yml"),base2=basename4(file2);if(!isAbsolute3(file2)){let withYaml=isYaml?file2:`${file2}.yaml`,projectSpur=resolve7(cwd,".spur","workflows",withYaml);if(fs3.exists(projectSpur))return{path:projectSpur,source:"project"};if(!isYaml){let projectDirect=resolve7(cwd,`${file2}.yaml`);if(fs3.exists(projectDirect))return{path:projectDirect,source:"project"};let projectSpurPipeline=resolve7(cwd,".spur","workflows",`${file2}-pipeline.yaml`);if(fs3.exists(projectSpurPipeline))return{path:projectSpurPipeline,source:"project"};let projectDirectPipeline=resolve7(cwd,`${file2}-pipeline.yaml`);if(fs3.exists(projectDirectPipeline))return{path:projectDirectPipeline,source:"project"}}}let bundledRoot=bundledConfigRoot();if(bundledRoot!==null){let sharedName=isYaml?base2:`${base2}.yaml`,sharedPath=join14(bundledRoot,"workflows",sharedName);if(fs3.exists(sharedPath))return{path:sharedPath,source:"shared"};if(!isYaml){let sharedPipeline=join14(bundledRoot,"workflows",`${base2}-pipeline.yaml`);if(fs3.exists(sharedPipeline))return{path:sharedPipeline,source:"shared"};let sharedLiteral=join14(bundledRoot,"workflows",base2);if(fs3.exists(sharedLiteral))return{path:sharedLiteral,source:"shared"}}return{path:null,probed:[projectPath,sharedPath]}}return{path:null,probed:[projectPath,null]}}async function resolveWorkflowDefinition(cwd,fileOrName,options={}){let registered=options.registered??[],resolved=(basename4(fileOrName)===fileOrName&&!/\.ya?ml$/.test(fileOrName)&&!createNodeFileSystem2().exists(resolve7(cwd,fileOrName))?await scanWorkflowByName(cwd,fileOrName,registered):null)??resolveWorkflowFile(cwd,fileOrName);if(resolved.path===null){let scanned=await scanWorkflowByName(cwd,fileOrName,registered);if(scanned!==null)resolved=scanned;else{let[probedProject,probedShared]=resolved.probed;throw Error(`Workflow not found: ${probedProject}${probedShared!==null?` (shared: ${probedShared})`:""}`)}}let embedded=createEmbeddedSchemaOptions(options.embeddedSchemas),workflow=await loadWorkflowDef(resolved.path,{validateSchema:options.validateSchema!==!1,...embedded!==void 0?embedded:{}});if(workflow.version==="")throw Error(`Invalid workflow definition ${resolved.path}: root "version" is an empty string. Omit the field for an unversioned definition, or give it a non-empty literal.`);let digest=computeDefinitionDigest(workflow);return{path:resolved.path,workflow,digest,layer:resolved.source}}init_src();var REQUIRED_REFERENCE_CODES=new Set([FINDING_CODES.L4_FEATURE_NOT_FOUND,FINDING_CODES.L4_PARENT_NOT_FOUND,FINDING_CODES.L4_DEPENDENCY_NOT_FOUND,FINDING_CODES.L4_LINKED_TASK_PARSE_FAILED]),COMPLETION_FINDING_CODES=new Set([FINDING_CODES.L4_ORPHAN_SCENARIOS,FINDING_CODES.L4_UNCOVERED_FEATURE_SCENARIO,FINDING_CODES.L4_SCENARIO_UNVERIFIED,FINDING_CODES.L4_VERIFYING_INCOMPLETE_TASKS,FINDING_CODES.L4_VERDICT_ROWS_MATCH_NO_SCENARIO,FINDING_CODES.L4_MALFORMED_VERDICT_ARTIFACT,FINDING_CODES.L4_EVIDENCE_NOT_RECOVERABLE,FINDING_CODES.L4_DOGFOOD_MISSING,FINDING_CODES.L4_TESTING_VERDICT_STUB,FINDING_CODES.L4_UNCOVERED_TASK_SCENARIO,FINDING_CODES.L4_FEATURE_RECEIPT_MISSING,FINDING_CODES.L4_FEATURE_RECEIPT_MALFORMED,FINDING_CODES.L4_FEATURE_RECEIPT_CROSS_FEATURE,FINDING_CODES.L4_FEATURE_RECEIPT_DIVERGENT,FINDING_CODES.L4_FEATURE_RECEIPT_FAILED,FINDING_CODES.L4_FEATURE_RECEIPT_RUN,FINDING_CODES.L4_FEATURE_RECEIPT_STALE,FINDING_CODES.L4_FEATURE_RECEIPT_CONTRACT,FINDING_CODES.L3_REVIEW_TESTING_CONTRADICTION,FINDING_CODES.L4_ROLLUP_SUBTASKS_OPEN,FINDING_CODES.L4_ROLLUP_MISSING_ROSTER,FINDING_CODES.L4_ROLLUP_ROSTER_NOT_DECLARED_DEPENDENCY]),REQUIRED_FINDING_CODES=new Set([FINDING_CODES.L1_MARKDOWN_PARSE,FINDING_CODES.L1_SCHEMA_VALIDATION,FINDING_CODES.L2_MISSING_REQUIRED_SECTION,FINDING_CODES.L2_UNCLOSED_CODE_FENCE,FINDING_CODES.L3_AC_BDD_ERROR,FINDING_CODES.L3_AC_BDD_INVALID,FINDING_CODES.L3_REQUIREMENTS_EMPTY,FINDING_CODES.L3_AC_EMPTY,FINDING_CODES.L3_REQUIRED_SECTION_PLACEHOLDER,...REQUIRED_REFERENCE_CODES,FINDING_CODES.L4_PREREQUISITE_CYCLE,...COMPLETION_FINDING_CODES,FINDING_CODES.PRECHECK_SIZE,FINDING_CODES.PRECHECK_EVIDENCE,FINDING_CODES.INVENTORY_COVERAGE]);var SOLUTION_EXCLUDED_LOCKFILES=new Set(["bun.lock","bun.lockb","package-lock.json","yarn.lock","pnpm-lock.yaml"]),SOLUTION_EXCLUDED_PATHSPECS=[".spur/**",...SOLUTION_EXCLUDED_LOCKFILES],SOLUTION_EXCLUDE_PATHSPECS=SOLUTION_EXCLUDED_PATHSPECS.map((p)=>`:(exclude)${p}`);init_src();init_src();var TASK_LIFECYCLE_PROFILE={linkKind:"lifecycle",workflowName:"task-lifecycle",entityPrefix:"task",varKey:"wbs"};async function reconcileExistingLifecycleRow(getDb,profile,entityId,toStatus){if(toStatus!=="done"&&toStatus!=="cancelled")return!1;let persistence=new DbWorkflowPersistenceAdapter(await getDb()),run=await persistence.findRunByKey(profile.workflowName,`${profile.entityPrefix}:${entityId}`);if(run===void 0)return!1;let engineStatus=toStatus==="cancelled"?"failed":"done";if(run.status===engineStatus&&run.terminal_reason===toStatus)return!1;return await persistence.finalizeRun(run.id,engineStatus,new Date().toISOString(),void 0,toStatus),!0}function readProvenance(resultJson){if(resultJson===null)return{provenance:"unknown",estimated:!1};try{let parsed=JSON.parse(resultJson);if(parsed?.provenance!=="host-reported")return{provenance:"unknown",estimated:!1};return{provenance:"host-reported",estimated:parsed.estimated===!0}}catch{return{provenance:"unknown",estimated:!1}}}function deriveInlineStateVisits(defStates,rows){let declaredStateIds=new Set(defStates.map((state)=>state.id)),visits=[],visitCounts={};for(let row of rows){if(!declaredStateIds.has(row.node))continue;let open3=visits[visits.length-1];if(open3&&open3.state===row.node){open3.rows.push(row);continue}let visit2=(visitCounts[row.node]??0)+1;visitCounts[row.node]=visit2,visits.push({state:row.node,visit:visit2,rows:[row]})}return visits}async function projectWorkflowProgress(runId,options){let projectRoot=options.projectRoot??process.cwd(),projectedAt=new Date().toISOString(),diagnostics=[],runDao=new RunDao(options.db),actionRunDao=new ActionRunDao(options.db),transitionRunDao=new TransitionRunDao(options.db),artifactDao=new ArtifactDao(options.db),runRow=await runDao.traceRowById(runId);if(!runRow)return diagnostics.push({code:"orphan-row",message:`No workflow run found with id "${runId}"`}),{schemaVersion:1,runId,workflow:"unknown",status:"unknown",definitionDigest:null,currentState:null,states:[],transitions:[],artifacts:[],nextTransitions:[],diagnostics,projectedAt};let rawMeta={};try{if(runRow.metadata_json)rawMeta=JSON.parse(runRow.metadata_json)}catch{}let recordedDigest=typeof rawMeta.definitionDigest==="string"?rawMeta.definitionDigest:null,recordedVersion="workflowVersion"in rawMeta&&(typeof rawMeta.workflowVersion==="string"||rawMeta.workflowVersion===null)?rawMeta.workflowVersion:void 0,normalizedStatus="unknown",statusLower=(runRow.status??"").toLowerCase();if(statusLower==="done"||statusLower==="completed")normalizedStatus="completed";else if(statusLower==="running")normalizedStatus="running";else if(statusLower==="pending")normalizedStatus="pending";else if(statusLower==="failed")normalizedStatus="failed";else if(statusLower==="cancelled")normalizedStatus="cancelled";let transitionRows=await transitionRunDao.transitionRowsByRunId(runId),actionRows=await actionRunDao.actionRowsByRunId(runId),artifactRows=await artifactDao.artifactsByRunId(runId),transitions=transitionRows.map((t)=>({from:t.from_state,to:t.to_state,trigger:t.trigger??null,at:new Date(t.created_at).toISOString()})),currentState=null;if(transitions.length>0)currentState=transitions[transitions.length-1]?.to??null;let workflowDef=options.workflowDef,workflowName=runRow.workflow_name||"unknown";if(!workflowDef&&workflowName!=="unknown")try{workflowDef=(await resolveWorkflowDefinition(projectRoot,workflowName,{validateSchema:!0})).workflow}catch{}if(!workflowDef){if(diagnostics.push({code:"definition-unavailable",message:`Definition unavailable for workflow "${workflowName}"`}),recordedDigest===null)diagnostics.push({code:"definition-digest-missing",message:`Run ${runId} metadata has no recorded definitionDigest`});return{schemaVersion:1,runId,workflow:workflowName,status:normalizedStatus,definitionDigest:recordedDigest,...recordedVersion!==void 0?{version:recordedVersion}:{},currentState,states:[],transitions,artifacts:artifactRows.map((a2)=>({kind:a2.kind,path:a2.path})),nextTransitions:[],diagnostics,projectedAt}}let currentComputedDigest=computeDefinitionDigest(workflowDef);if(recordedDigest===null)diagnostics.push({code:"definition-digest-missing",message:`Run ${runId} metadata has no recorded definitionDigest`});else if(recordedDigest!==currentComputedDigest)diagnostics.push({code:"definition-drift",message:`Recorded definition digest ${recordedDigest} differs from current definition digest ${currentComputedDigest}`});let smDef=workflowDef,defStates=Array.isArray(smDef.states)?smDef.states:[],initialState=smDef.initialState??(defStates[0]?.id||"start"),inlineVisits=transitions.length===0?deriveInlineStateVisits(defStates,actionRows):[];if(!currentState){if(normalizedStatus==="pending"||normalizedStatus==="running")currentState=inlineVisits[inlineVisits.length-1]?.state??initialState;else if(normalizedStatus==="failed"&&inlineVisits.length>0)currentState=inlineVisits[inlineVisits.length-1]?.state??null}let stateVisits=[],visitCounter={},recordVisit=(stateId)=>{let count3=(visitCounter[stateId]??0)+1;return visitCounter[stateId]=count3,stateVisits.push({state:stateId,visit:count3}),count3};if(transitions.length===0)if(inlineVisits.length===0){if(initialState)recordVisit(initialState)}else for(let derived of inlineVisits)stateVisits.push(derived);else{let firstFrom=transitions[0]?.from;if(firstFrom)recordVisit(firstFrom);for(let tr of transitions)recordVisit(tr.to)}let visitedStateIds=new Set(stateVisits.map((v)=>v.state));for(let defState of defStates)if(!visitedStateIds.has(defState.id))stateVisits.push({state:defState.id,visit:1});let statesProgress=[],actionsByNode={};for(let row of actionRows){let group=actionsByNode[row.node]??[];group.push(row),actionsByNode[row.node]=group}let matchedActionRowIds=new Set,lastVisitByState=new Map;for(let entry of stateVisits)lastVisitByState.set(entry.state,Math.max(lastVisitByState.get(entry.state)??0,entry.visit));for(let{state:stateId,visit:visit2,rows:visitRows}of stateVisits){let defState=defStates.find((s2)=>s2.id===stateId),onEnterActions=Array.isArray(defState?.onEnter)?defState.onEnter:[],onExitActions=Array.isArray(defState?.onExit)?defState.onExit:[],defActionList=[...onEnterActions.map((a2,i2)=>({action:a2,type:"onEnter",idx:i2})),...onExitActions.map((a2,i2)=>({action:a2,type:"onExit",idx:i2}))],isVisited=visitedStateIds.has(stateId),isCurrent=currentState===stateId&&visit2===lastVisitByState.get(stateId),stateStatus="pending";if(isVisited)if(isCurrent)if(normalizedStatus==="running"||normalizedStatus==="pending")stateStatus="running";else if(normalizedStatus==="completed")stateStatus="passed";else if(normalizedStatus==="failed")stateStatus="failed";else stateStatus="passed";else stateStatus="passed";let stateActionRows=visitRows??actionsByNode[stateId]??[],actionsProgress=[],usedActionRowIds=new Set;for(let item of defActionList){let actionKey=`${stateId}:${item.type}:${item.idx}`,kind=item.action.kind,stateEffect="may-write",evidenceEffect="none",candidateRows=stateActionRows.filter((r)=>r.kind===kind&&!usedActionRowIds.has(r.id));if(isVisited)for(let r of candidateRows)matchedActionRowIds.add(r.id);let actionStatus="pending",attempts=[];if(!isVisited)actionStatus="pending";else if(candidateRows.length===0)actionStatus=stateStatus==="passed"?"skipped":"pending";else{let sameKindDefCount=defActionList.filter((a2)=>a2.action.kind===kind).length;if(sameKindDefCount>1&&candidateRows.length>1&&candidateRows.length!==sameKindDefCount)diagnostics.push({code:"ambiguous-action",message:`Ambiguous mapping for action ${actionKey} (kind ${kind}) in state ${stateId}`}),actionStatus="ambiguous";else{let matchingRow=candidateRows[0];if(matchingRow){let rowsToMap=sameKindDefCount===1?candidateRows:[matchingRow];for(let row of rowsToMap)usedActionRowIds.add(row.id),attempts.push({actionRunId:row.id,status:row.status,ok:row.ok!==null?row.ok===1:null,startedAt:row.started_at,completedAt:row.completed_at,durationMs:row.duration_ms,...readProvenance(row.result_json)});if(matchingRow.status==="running")actionStatus="running";else if(matchingRow.status==="passed")actionStatus="passed";else if(matchingRow.status==="failed")actionStatus="failed";else if(matchingRow.status==="skipped")actionStatus="skipped";else actionStatus="passed"}}}actionsProgress.push({actionKey,kind,stateEffect:"may-write",evidenceEffect:"none",status:actionStatus,attempts})}statesProgress.push({state:stateId,visit:visit2,status:stateStatus,actions:actionsProgress})}let nextTransitions=[];if(currentState&&Array.isArray(smDef.transitions)){let outgoing=smDef.transitions.filter((t)=>t.from===currentState);for(let tr of outgoing){let eligibility="unknown";if(normalizedStatus==="running")eligibility="blocked";else if(normalizedStatus==="completed")eligibility="eligible";else eligibility="unknown";nextTransitions.push({from:tr.from,to:tr.to,trigger:tr.description??null,eligibility})}}let declaredStateIds=new Set(defStates.map((state)=>state.id));for(let row of actionRows){if(matchedActionRowIds.has(row.id))continue;if(declaredStateIds.has(row.node)&&!visitedStateIds.has(row.node)){diagnostics.push({code:"unvisited-state-row",message:`Action row ${row.id} (node ${row.node}, kind ${row.kind}) belongs to state ${row.node}, which run ${runId} did not visit`});continue}diagnostics.push({code:"orphan-action-row",message:`Action row ${row.id} (node ${row.node}, kind ${row.kind}) matches no declared state action`})}return{schemaVersion:1,runId,workflow:smDef.name||workflowName,status:normalizedStatus,definitionDigest:recordedDigest,...recordedVersion!==void 0?{version:recordedVersion}:{},currentState,states:statesProgress,transitions,artifacts:artifactRows.map((a2)=>({kind:a2.kind,path:a2.path})),nextTransitions,diagnostics,projectedAt}}var SAFE_RUN_ID_RE=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,RUN_CITATION_RE=/(?<![\w~:-]|[\w~:-]\/)\.spur\/run\/([A-Za-z0-9][A-Za-z0-9._*?<>{}|,\u2026-]*)(\/[^\s`]*)?/g;function asLiteralRunFileName(citation){let name=citation.replace(/[.,]+$/,"");if(!SAFE_RUN_ID_RE.test(name)||name.includes(".."))return;return name}var SHELL_METACHARACTERS=/[;&|<>$`(){}[\]!*?~#\n\r"']/;function splitLaunchCommand(value,label){if(SHELL_METACHARACTERS.test(value))return{error:`${label} must not contain shell metacharacters (got ${value})`};let tokens=value.trim().split(/\s+/).filter((t)=>t.length>0),command=tokens[0];if(command===void 0)return{error:`Action option ${label.slice(label.indexOf('"'))} must be a non-empty string`};return{command,leadingArgs:tokens.slice(1)}}function parseWorkflowInventory(json3){if(typeof json3!=="object"||json3===null)return{ok:!1,error:"workflow inventory: projection is not an object"};let obj=json3,name=typeof obj.name==="string"?obj.name:"",kind=typeof obj.kind==="string"?obj.kind:"",format2=typeof obj.format==="string"?obj.format:"",version3=typeof obj.version==="string"||typeof obj.version==="number"?String(obj.version):"",definitionDigest=typeof obj.definitionDigest==="string"?obj.definitionDigest:"",source;if(obj.source!==void 0){if(typeof obj.source!=="object"||obj.source===null)return{ok:!1,error:"workflow inventory: invalid definition source"};let value=obj.source;if(typeof value.path!=="string"||value.path===""||typeof value.layer!=="string"||!["project","registered","shared"].includes(value.layer))return{ok:!1,error:"workflow inventory: invalid definition source path/layer"};source={path:value.path,layer:value.layer}}if(name==="")return{ok:!1,error:"workflow inventory: missing name"};if(kind==="")return{ok:!1,error:"workflow inventory: missing kind"};if(definitionDigest==="")return{ok:!1,error:"workflow inventory: missing definitionDigest"};if(!Array.isArray(obj.steps)||obj.steps.length===0)return{ok:!1,error:"workflow inventory: no declared steps"};let steps=[];for(let raw of obj.steps){if(typeof raw!=="object"||raw===null)return{ok:!1,error:"workflow inventory: a step is not an object"};let s2=raw;if(typeof s2.id!=="string"||s2.id==="")return{ok:!1,error:"workflow inventory: a step is missing its id"};steps.push({id:s2.id,initial:s2.initial===!0,terminal:s2.terminal===!0,failure:s2.failure===!0,pause:s2.pause===!0,loopBack:s2.loopBack===!0,conditional:s2.conditional===!0,...typeof s2.nodeType==="string"?{nodeType:s2.nodeType}:{},...typeof s2.description==="string"?{description:s2.description}:{}})}return{ok:!0,inventory:{name,kind,format:format2,version:version3,definitionDigest,steps,...source?{source}:{}}}}function assertInventoryIdentity(inventory,expectedDigest){if(expectedDigest==="")return{ok:!1,error:"workflow inventory: no expected definition digest to bind against"};if(inventory.definitionDigest!==expectedDigest)return{ok:!1,error:`workflow inventory: identity drift — projected ${inventory.definitionDigest} ≠ execution ${expectedDigest}`};return{ok:!0}}init_src();init_zod();var quotaAttributionSchema=exports_external.object({projectId:exports_external.string().min(1).optional(),executor:exports_external.string().min(1).optional(),agent:exports_external.string().min(1).optional(),model:exports_external.string().min(1).optional()}).strict(),agentRunCorrelationSchema=exports_external.object({runId:exports_external.string().min(1).optional(),executionId:exports_external.string().min(1).optional(),actionId:exports_external.string().min(1).optional()}).strict(),agentQuotaObservationSchema=exports_external.object({observationId:exports_external.string().min(1),observedAt:exports_external.string().min(1),evidenceSource:exports_external.enum(["buffered-error","streaming-error","health-probe"]),reason:exports_external.enum(["insufficient_quota","insufficient_credit_balance","quota_exceeded","usage_limit_reached","credits_exhausted","billing_hard_limit_reached","provider_quota_exhausted"]),detail:exports_external.string().optional(),attribution:quotaAttributionSchema.optional(),correlation:agentRunCorrelationSchema.optional()}).strict(),agentQuotaRecoverySchema=exports_external.object({observationId:exports_external.string().min(1),recoveredAt:exports_external.string().min(1),attribution:quotaAttributionSchema.optional(),correlation:agentRunCorrelationSchema.optional()}).strict();function resolveQuotaExecutorBinding(executors,name){return executors?.find((candidate)=>candidate.name===name)}function normalizeQuotaTimestamp(value){let parsed=new Date(value);if(Number.isNaN(parsed.getTime()))return;return parsed.toISOString()}var MAX_QUOTA_DRAIN_ATTEMPTS_PER_ACTIVATION=3;function normalizeRootPath(root){return root.replace(/[\\/]+$/,"")}async function recordAgentQuotaEvent(context4,event,desiredDisabled){let parsed=desiredDisabled?agentQuotaObservationSchema.safeParse(event):agentQuotaRecoverySchema.safeParse(event);if(!parsed.success)return{rejected:`malformed ${desiredDisabled?"exhaustion":"recovery"} payload`};let payload=parsed.data,attribution2=payload.attribution;if(attribution2?.projectId===void 0||attribution2.executor===void 0)return{rejected:"missing project/executor attribution — observable only, not recorded"};if(normalizeRootPath(attribution2.projectId)!==normalizeRootPath(context4.projectRoot))return{rejected:`foreign project attribution "${attribution2.projectId}"`};let observedAt=normalizeQuotaTimestamp("observedAt"in payload?payload.observedAt:payload.recoveredAt);if(observedAt===void 0)return{rejected:`unparsable timestamp on observation ${payload.observationId}`};let entry;try{let config4=await context4.loadAgentConfig(context4.projectRoot);if(config4===null)throw Error("config load failed");entry=config4.agent?.executors}catch(error51){return{rejected:`effective agent config unavailable: ${errorText(error51)}`}}let profile=resolveQuotaExecutorBinding(entry,attribution2.executor);if(profile===void 0)return{rejected:`unknown executor "${attribution2.executor}" for this project`};if(attribution2.agent!==void 0&&attribution2.agent!==profile.agent)return{rejected:`profile binding replaced: executor "${attribution2.executor}" now serves agent "${profile.agent}", event claimed "${attribution2.agent}"`};if(attribution2.model!==void 0&&profile.model!==void 0&&attribution2.model!==profile.model)return{rejected:`model binding replaced: executor "${attribution2.executor}" now pins "${profile.model}", event claimed "${attribution2.model}"`};let db2=await context4.getDb();return new AgentExecutorUpdateDao(db2).recordObservation({project_id:normalizeRootPath(context4.projectRoot),executor_name:attribution2.executor,observation_id:payload.observationId,observed_at:observedAt,agent:attribution2.agent??null,model:attribution2.model??null,disabled:desiredDisabled,owner:"quota",layer:"project"})}async function drainPendingAgentQuotaUpdates(context4,options={}){let summary={applied:0,skippedBindingReplaced:0,skippedUnknownExecutor:0,skippedOperatorOwned:0,failed:0,deferred:0},db2=await context4.getDb(),dao2=new AgentExecutorUpdateDao(db2),projectId=normalizeRootPath(context4.projectRoot),rows=await dao2.pendingUpdates(projectId);if(rows.length===0)return summary;for(let row of rows){let config4,lastError2;for(let attempt=0;attempt<MAX_QUOTA_DRAIN_ATTEMPTS_PER_ACTIVATION;attempt+=1){let effectiveConfig;try{effectiveConfig=config4??await requireAgentConfig(context4)}catch(error51){lastError2=`effective agent config unavailable: ${errorText(error51)}`,await recordDrainFailure(dao2,row,lastError2);continue}config4=effectiveConfig;let profile=resolveQuotaExecutorBinding(effectiveConfig.agent?.executors,row.executor_name);if(profile===void 0){await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.skippedUnknownExecutor+=1,context4.warn(`quota update for unknown executor "${row.executor_name}" acknowledged as a no-op (entry no longer configured)`),lastError2=void 0;break}if(row.agent!==null&&row.agent!==profile.agent){await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.skippedBindingReplaced+=1,context4.warn(`quota update for "${row.executor_name}" acknowledged as a no-op: profile now serves agent "${profile.agent}", observation recorded "${row.agent}"`),lastError2=void 0;break}if(row.model!==null&&profile.model!==void 0&&row.model!==profile.model){await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.skippedBindingReplaced+=1,context4.warn(`quota update for "${row.executor_name}" acknowledged as a no-op: profile now pins model "${profile.model}", observation recorded "${row.model}"`),lastError2=void 0;break}let executorEntry=effectiveConfig.agent?.executors?.find((entry)=>entry.name===row.executor_name),availability=normalizeExecutorAvailability(executorEntry?.disabled??!1);if(availability.disabled&&availability.owner==="operator"){await dao2.ackSkipped(projectId,row.executor_name,row.observation_id,"operator-owned",appliedAtNow(options)),summary.skippedOperatorOwned+=1,context4.warn(`quota update for "${row.executor_name}" acknowledged as a classified no-op: availability is operator-owned${availability.since!==void 0?` since ${availability.since}`:""}`),lastError2=void 0;break}try{let rowOwner=row.owner==="probe"?"probe":"quota",eventName=row.disabled===1?"agent.quota.exhausted":"agent.quota.recovered",desired=row.disabled===1?{owner:rowOwner,since:row.observed_at,reason:`${eventName} ${row.executor_name}`}:!1;await setExecutorAvailability({layer:"global",projectRoot:context4.projectRoot,executor:row.executor_name,disabled:desired}),await dao2.ackApplied(projectId,row.executor_name,row.observation_id,appliedAtNow(options)),summary.applied+=1,lastError2=void 0;break}catch(error51){lastError2=errorText(error51),await recordDrainFailure(dao2,row,lastError2)}}if(lastError2!==void 0&&await attemptBoundReached(dao2,row,context4))summary.failed+=1,summary.deferred+=1;else if(lastError2!==void 0)summary.failed+=1}return summary}async function requireAgentConfig(context4){let config4=await context4.loadAgentConfig(context4.projectRoot);if(config4===null)throw Error("config unavailable");return config4}async function recordDrainFailure(dao2,row,error51){try{await dao2.recordFailure(row.project_id,row.executor_name,row.observation_id,error51.slice(0,500),null)}catch{}}async function attemptBoundReached(dao2,row,context4){try{return((await dao2.getUpdate(row.project_id,row.executor_name))?.attempts??0)>=MAX_QUOTA_DRAIN_ATTEMPTS_PER_ACTIVATION}catch(error51){return context4.warn(`agent quota update retry state unreadable: ${errorText(error51)}`),!1}}function appliedAtNow(options){return options.appliedAt?.()??new Date().toISOString()}function errorText(error51){return error51 instanceof Error?error51.message:String(error51)}var SYSTEM_EVENT_ENVELOPE_SCHEMA_VERSION=2,MAX_STRING_LENGTH=256,MAX_DEPTH=4,MAX_ARRAY_ITEMS=16,MAX_OBJECT_FIELDS=32,MAX_TOTAL_NODES=128,MAX_FIELD_KEY_LENGTH=64,CORE_METADATA_PATHS=["schemaVersion","eventId","event","at","timestamp","actor","runId","executionId","actionId","commandId","sequence","correlation.runId","correlation.executionId","correlation.actionId","entity.kind","entity.id","entityKind","entityId","jobId","kind","status","outcome","severity","reason","durationMs","usage","metadata.correlationId"],OMITTED_KEY=/^(?:args?|argv|body|command|commandline|content|details|env|environment|message|output|payload|prompt|query|response|stderr|stdin|stdout)$/,SECRET_KEY=/(?:api[-_]?key|authorization|cookie|credential|password|secret|token)/i,PRODUCER_PACKAGES=new Set(["spur","@gobing-ai/ts-infra","@gobing-ai/ts-runtime","@gobing-ai/ts-ai-runner","@gobing-ai/ts-rule-engine","@gobing-ai/ts-dual-workflow-engine"]);var SAFE_IDENTIFIER=/^[A-Za-z0-9._:-]+$/;function systemEventProjectContext(root,name){let safeRoot=typeof root==="string"?root:"",inferredName=safeRoot.replace(/[\\/]+$/,"").split(/[\\/]/).at(-1)||"unknown";return{name:name&&name.length>0?name:inferredName,root:safeRoot}}function buildSystemEventEnvelope(entry,eventPayload,project,secretValues=[],actor){try{let data=projectSystemEventData(entry,eventPayload,secretValues),correlation=extractEnvelopeCorrelation(eventPayload,secretValues),severity=extractSeverity(eventPayload)??entry?.severity??"warning",presentation=buildPresentation(entry,data,correlation,severity,actor);return{schemaVersion:SYSTEM_EVENT_ENVELOPE_SCHEMA_VERSION,data,context:{project:boundedProjectContext(project,secretValues),producer:{package:entry?.producerPackage??"spur",subsystem:entry?.subsystem??"unknown"},correlation},presentation}}catch{return genericEnvelope(project,secretValues)}}function projectSystemEventData(entry,eventPayload,secretValues=[]){if(eventPayload===null||eventPayload===void 0)return null;let state={nodes:0,seen:new WeakSet,secretValues};if(!isRecord5(eventPayload)){let value=projectValue(eventPayload,state,0);return value===void 0?null:{value}}if(!entry)return null;if(entry.payloadPolicy!=="raw-safe")return projectAllowedMetadata(entry,eventPayload,state);let result={};for(let[key,value]of safeEntries(eventPayload).slice(0,MAX_OBJECT_FIELDS)){let projected=projectKeyValue(key,value,state,0);if(projected!==void 0)result[boundedKey(key)]=projected}return result}function projectAllowedMetadata(entry,eventPayload,state){let result={},paths=new Set([...CORE_METADATA_PATHS,...entry.metadataFields.map((field)=>field.path)]);for(let path8 of paths){let value=getPath(eventPayload,path8);if(value===void 0)continue;let key=path8.split(".").at(-1)??path8,projected=projectKeyValue(key,value,state,path8.split(".").length-1);if(projected!==void 0)setPath(result,path8,projected)}return result}function projectKeyValue(key,value,state,depth){if(isOmittedKey(key))return;if((key==="findings"||key==="finding")&&typeof value==="object")return;if(SECRET_KEY.test(key))return"[REDACTED]";return projectValue(value,state,depth)}function projectValue(value,state,depth){if(state.nodes>=MAX_TOTAL_NODES||depth>MAX_DEPTH)return"[truncated]";if(state.nodes+=1,value===null||typeof value==="boolean")return value;if(typeof value==="number")return Number.isFinite(value)?value:void 0;if(typeof value==="string")return redactAndBound(value,state.secretValues,MAX_STRING_LENGTH);if(typeof value==="bigint")return redactAndBound(String(value),state.secretValues,MAX_STRING_LENGTH);if(typeof value!=="object")return;if(state.seen.has(value))return"[circular]";if(state.seen.add(value),Array.isArray(value)){let result2=[];for(let item of value.slice(0,MAX_ARRAY_ITEMS)){let projected=projectValue(item,state,depth+1);if(projected!==void 0)result2.push(projected)}if(value.length>MAX_ARRAY_ITEMS)result2.push("[truncated]");return result2}let result={};for(let[key,item]of safeEntries(value).slice(0,MAX_OBJECT_FIELDS)){let projected=projectKeyValue(key,item,state,depth+1);if(projected!==void 0)result[boundedKey(key)]=projected}return result}function extractEnvelopeCorrelation(eventPayload,secretValues){if(!isRecord5(eventPayload))return{};let nested=isRecord5(eventPayload.correlation)?eventPayload.correlation:{},entity2=isRecord5(eventPayload.entity)?eventPayload.entity:{},result={};assignString(result,"runId",eventPayload.runId??eventPayload.run_id??nested.runId,secretValues),assignString(result,"executionId",eventPayload.executionId??nested.executionId,secretValues),assignString(result,"actionId",eventPayload.actionId??nested.actionId,secretValues),assignString(result,"entityKind",eventPayload.entityKind??entity2.kind,secretValues),assignString(result,"entityId",eventPayload.entityId??entity2.id,secretValues),assignString(result,"jobId",eventPayload.jobId,secretValues);let sequence=eventPayload.sequence;if(typeof sequence==="number"&&Number.isFinite(sequence))result.sequence=sequence;return result}function assignString(target,key,value,secretValues){if(typeof value!=="string"||value.length===0)return;target[key]=redactAndBound(value,secretValues,128)}function projectTablePresentation(input){let{entry,data,correlation,presentation,actor}=input,name=entry?.name??"",isPureEngineRow=name==="workflow.node.enter"||name==="workflow.transition"||name==="workflow.node.transition"||name==="workflow.transition.requested"||name==="workflow.transition.denied"||name==="workflow.run.started"||name==="workflow.run.done"||name==="workflow.run.failed"||name==="workflow.run.finalized"||name==="workflow.run.paused"||name==="workflow.run.resumed"||name==="workflow.run.reseeded",agent;if(!isPureEngineRow&&data!==null){let executor=getPath(data,"routing.executor"),agentField=getPath(data,"agent"),metadataAgent=getPath(data,"metadata.agent");if(typeof executor==="string"&&executor.length>0&&!looksLikeOpaqueId(executor))agent=executor;else if(typeof agentField==="string"&&agentField.length>0&&!looksLikeOpaqueId(agentField))agent=agentField;else if(typeof metadataAgent==="string"&&metadataAgent.length>0&&!looksLikeOpaqueId(metadataAgent))agent=metadataAgent}if(!isPureEngineRow&&agent===void 0&&typeof actor==="string"&&actor.length>0){if(/^[A-Za-z][A-Za-z0-9._:-]*$/.test(actor)&&!PRODUCER_PACKAGES.has(actor)&&!looksLikeOpaqueId(actor))agent=actor}let corrParts=[];if(data!==null){let wfName=getPath(data,"workflowName");if(typeof wfName==="string"&&wfName.length>0&&!looksLikeOpaqueId(wfName))corrParts.push(wfName);let nodeLabel=getPath(data,"nodeLabel");if(typeof nodeLabel==="string"&&nodeLabel.length>0&&!looksLikeOpaqueId(nodeLabel))corrParts.push(nodeLabel);let kind=getPath(data,"kind");if(typeof kind==="string"&&kind.length>0&&!looksLikeOpaqueId(kind)&&kind!==wfName&&kind!==nodeLabel)corrParts.push(kind);let entityKind2=getPath(data,"entity.kind")??getPath(data,"entityKind")??correlation.entityKind,entityId=getPath(data,"entity.id")??getPath(data,"entityId")??correlation.entityId;if(typeof entityId==="string"&&entityId.length>0&&!looksLikeOpaqueId(entityId))if(typeof entityKind2==="string"&&entityKind2.length>0&&!looksLikeOpaqueId(entityKind2))corrParts.push(`${entityKind2}:${entityId}`);else corrParts.push(entityId)}else{let{entityKind:entityKind2,entityId}=correlation;if(typeof entityId==="string"&&entityId.length>0&&!looksLikeOpaqueId(entityId))if(typeof entityKind2==="string"&&entityKind2.length>0&&!looksLikeOpaqueId(entityKind2))corrParts.push(`${entityKind2}:${entityId}`);else corrParts.push(entityId)}if(typeof correlation.sequence==="number"&&Number.isFinite(correlation.sequence))corrParts.push(`#${correlation.sequence}`);let correlators=corrParts.length>0?corrParts.join(" · "):void 0,actionLabel;if(data!==null){let kind=getPath(data,"kind"),op=getPath(data,"operation")??getPath(data,"action");if(typeof kind==="string"&&kind.length>0&&!looksLikeOpaqueId(kind))actionLabel=kind;else if(typeof op==="string"&&op.length>0&&!looksLikeOpaqueId(op))actionLabel=op}if(actionLabel===void 0&&presentation.action?.kind==="filter"&&presentation.action.label)actionLabel=presentation.action.label;return{...correlators!==void 0?{correlators:boundPresentationString(correlators,512)}:{},...actionLabel!==void 0?{actionLabel:boundPresentationString(actionLabel,128)}:{},...agent!==void 0?{agent:boundPresentationString(agent,128)}:{}}}function buildPresentation(entry,data,correlation,severity,actor){let presenter=entry===void 0?void 0:SYSTEM_EVENT_PRESENTERS[entry.name];if(entry===void 0||presenter===void 0)return genericPresentation(severity);let input={data,correlation},summary,description,outcome,fields;try{if(summary=presenter.summary(input),description=presenter.description,fields=buildPresenterFields(presenter,data),presenter.outcome.support==="derived")outcome=presenter.outcome.derive(input)}catch{return genericPresentation(severity)}let basePresentation={severity,summary:boundPresentationString(summary,512)??"System event",description:boundPresentationString(description,512)??"System event.",fields,...outcome!==void 0?{outcome:boundPresentationString(outcome,128)}:{},...buildAction(entry,correlation)},tablePresentation=projectTablePresentation({entry,data,correlation,presentation:basePresentation,actor});return{...basePresentation,...tablePresentation}}function buildPresenterFields(presenter,data){if(!data)return[];let fields=[];for(let field of presenter.fields.slice(0,8)){let value=getPath(data,field.path),rendered=renderFieldValue(value);if(rendered!==void 0)fields.push({label:field.label,value:rendered})}return fields}function boundPresentationString(value,maxLength){if(typeof value!=="string"||value.length===0)return;return value.length<=maxLength?value:`${value.slice(0,maxLength-1)}…`}function genericPresentation(severity){return{severity,summary:"Unknown system event",description:"Unknown system event with bounded metadata.",fields:[]}}function buildAction(entry,correlation){if(!entry)return{};if(entry.remediationKind==="workflow-trace"&&isSafeIdentifier(correlation.runId))return{action:{label:"Trace workflow run",kind:"command",value:`spur workflow trace ${correlation.runId}`}};if(entry.remediationKind==="rule-trace"&&isSafeIdentifier(correlation.runId))return{action:{label:"Trace rule run",kind:"command",value:`spur rule trace ${correlation.runId}`}};if(entry.remediationKind==="prefix-filter")return{action:{label:`Filter ${entry.prefix} events`,kind:"filter",value:`prefix=${entry.prefix}`}};return{}}function extractSeverity(eventPayload){if(!isRecord5(eventPayload))return;return eventPayload.severity==="info"||eventPayload.severity==="warning"||eventPayload.severity==="error"?eventPayload.severity:void 0}function boundedProjectContext(project,secretValues){return{name:redactAndBound(project.name||"unknown",secretValues,128),root:redactAndBound(project.root||"",secretValues,MAX_STRING_LENGTH)}}function genericEnvelope(project,secretValues){return{schemaVersion:SYSTEM_EVENT_ENVELOPE_SCHEMA_VERSION,data:null,context:{project:boundedProjectContext(project,secretValues),producer:{package:"spur",subsystem:"unknown"},correlation:{}},presentation:{severity:"warning",summary:"Unknown system event",description:"Unknown system event with bounded metadata.",fields:[]}}}function getPath(value,path8){let current=value;for(let segment of path8.split(".")){if(!isRecord5(current))return;current=current[segment]}return current}function renderFieldValue(value){if(typeof value==="string")return value;if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="boolean")return String(value);return}function isSafeIdentifier(value){return typeof value==="string"&&SAFE_IDENTIFIER.test(value)}function isOmittedKey(key){let normalized=key.replaceAll(/[^A-Za-z0-9]/g,"").toLowerCase();return OMITTED_KEY.test(normalized)}function setPath(target,path8,value){let segments=path8.split("."),current=target;for(let segment of segments.slice(0,-1)){let existing=current[segment];if(isRecord5(existing)){current=existing;continue}let nested={};current[segment]=nested,current=nested}let finalSegment=segments.at(-1);if(finalSegment)current[finalSegment]=value}function boundedKey(key){return key.length<=MAX_FIELD_KEY_LENGTH?key:`${key.slice(0,MAX_FIELD_KEY_LENGTH-1)}…`}function isRecord5(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function safeEntries(value){try{return Object.entries(value)}catch{return[]}}var field=(path8,label)=>({path:path8,label}),SOURCE_PROFILES={planning:{producerPackage:"spur",subsystem:"planning",remediationKind:"prefix-filter"},queue:{producerPackage:"@gobing-ai/ts-infra",subsystem:"job-queue",remediationKind:"prefix-filter"},scheduler:{producerPackage:"@gobing-ai/ts-infra",subsystem:"scheduler",remediationKind:"prefix-filter"},message:{producerPackage:"spur",subsystem:"coordination-messaging",remediationKind:"prefix-filter"},process:{producerPackage:"@gobing-ai/ts-runtime",subsystem:"process-executor",remediationKind:"prefix-filter"},workflow:{producerPackage:"@gobing-ai/ts-dual-workflow-engine",subsystem:"workflow",remediationKind:"workflow-trace"},rule:{producerPackage:"@gobing-ai/ts-rule-engine",subsystem:"rule-engine",remediationKind:"rule-trace"},agent:{producerPackage:"@gobing-ai/ts-ai-runner",subsystem:"agent-runner",remediationKind:"prefix-filter"},history:{producerPackage:"spur",subsystem:"history",remediationKind:"prefix-filter"},bus:{producerPackage:"@gobing-ai/ts-infra",subsystem:"event-bus",remediationKind:"prefix-filter"},api:{producerPackage:"spur",subsystem:"http-api",remediationKind:"prefix-filter"},decision:{producerPackage:"spur",subsystem:"decision",remediationKind:"prefix-filter"}};function at(data,path8){if(data===null)return;let current=data;for(let segment of path8.split(".")){if(current===null||typeof current!=="object"||Array.isArray(current))return;current=current[segment]}return current}function s2(data,...paths){for(let path8 of paths){let value=at(data,path8);if(typeof value==="string"&&value.length>0)return value}return}function n2(data,...paths){for(let path8 of paths){let value=at(data,path8);if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="boolean")return String(value)}return}function entityId(input){return s2(input.data,"entity.id")??input.correlation.entityId??""}function looksLikeOpaqueId(value){if(typeof value!=="string")return!1;let v=value.trim();if(v==="")return!1;if(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(v))return!0;if(/^live[-_][a-z0-9._-]+$/i.test(v))return!0;if(/^(?:eventId|rowId|runId|executionId|actionId)$/i.test(v))return!0;return!1}function humanWorkflowTitle(input){let raw=s2(input.data,"workflowName")??s2(input.data,"workflow");if(raw!==void 0&&!looksLikeOpaqueId(raw))return(raw.split("/").pop()?.replace(/\.(?:ya?ml|json)$/i,"")??raw).replace(/[._-]+$/,"");return""}function humanStepLabel(data){let label=s2(data,"nodeLabel")??s2(data,"stepName")??s2(data,"step");if(label!==void 0&&!looksLikeOpaqueId(label))return label;let node=s2(data,"node");if(node!==void 0&&!looksLikeOpaqueId(node))return node;return}function derivedFrom(...paths){return{support:"derived",derive:({data})=>s2(data,...paths)}}function derivedFromValue(...paths){return{support:"derived",derive:({data})=>n2(data,...paths)??s2(data,...paths)}}var unsupported={support:"unsupported"};function baseEvent(name,source,renderer,payloadPolicy="metadata-only",tier="default",producer){return{name,source,tier,payloadPolicy,renderer,...producer!==void 0?{producer}:{}}}var BASE_CATALOG=[baseEvent("task.created","planning","planning"),baseEvent("task.updated","planning","planning"),baseEvent("task.transitioned","planning","planning"),baseEvent("feature.created","planning","planning"),baseEvent("feature.updated","planning","planning"),baseEvent("feature.transitioned","planning","planning"),baseEvent("queue.consumer.started","queue","queue"),baseEvent("queue.consumer.stopped","queue","queue"),baseEvent("queue.job.enqueued","queue","queue"),baseEvent("queue.job.started","queue","queue"),baseEvent("queue.job.completed","queue","queue"),baseEvent("queue.job.failed","queue","queue"),baseEvent("queue.job.retrying","queue","queue"),baseEvent("queue.stats","queue","queue"),baseEvent("scheduler.job.executed","scheduler","scheduler"),baseEvent("message.sent","message","message"),baseEvent("message.replied","message","message"),baseEvent("message.read","message","message"),baseEvent("process.spawned","process","process"),baseEvent("process.exited","process","process"),baseEvent("process.stopped","process","process"),baseEvent("process.started","process","process"),baseEvent("agent.invoke.start","agent","agent"),baseEvent("agent.invoke.exit","agent","agent"),baseEvent("agent.invoke.escalated","agent","agent","metadata-only","default",{package:"spur",subsystem:"agent-runner"}),baseEvent("agent.invoke.exhausted","agent","agent","metadata-only","default",{package:"spur",subsystem:"agent-runner"}),baseEvent("agent.started","agent","agent"),baseEvent("agent.stopped","agent","agent"),baseEvent("agent.message.sent","agent","agent"),baseEvent("agent.lifecycle.changed","agent","agent"),baseEvent("strategy.changed","agent","agent","metadata-only","default",{package:"spur",subsystem:"fleet-strategy"}),baseEvent("fleet.capacity.changed","agent","agent","metadata-only","default",{package:"spur",subsystem:"write-slot"}),baseEvent("task.assigned","planning","planning"),baseEvent("history.import.completed","history","history-import"),baseEvent("history.analyze.completed","history","history-analyze"),baseEvent("history.daily.failed","history","history-daily"),baseEvent("history.refresh.enqueued","history","history-refresh"),baseEvent("rule.run.start","rule","rule"),baseEvent("rule.eval.start","rule","rule"),baseEvent("rule.eval.done","rule","rule"),baseEvent("rule.eval.error","rule","rule"),baseEvent("rule.run.done","rule","rule"),baseEvent("workflow.run.started","workflow","workflow-run"),baseEvent("workflow.run.done","workflow","workflow-run"),baseEvent("workflow.run.failed","workflow","workflow-run"),baseEvent("workflow.run.finalized","workflow","workflow-run"),baseEvent("workflow.escalation.created","workflow","workflow-run","redacted"),baseEvent("workflow.escalation.projection_failed","workflow","workflow-run","metadata-only"),baseEvent("workflow.run.paused","workflow","workflow-run"),baseEvent("workflow.run.resumed","workflow","workflow-run"),baseEvent("workflow.run.reseeded","workflow","workflow-run"),baseEvent("workflow.node.enter","workflow","workflow-phase"),baseEvent("workflow.phase","workflow","workflow-phase"),baseEvent("workflow.node.transition","workflow","workflow-transition"),baseEvent("workflow.transition","workflow","workflow-transition"),baseEvent("workflow.transition.requested","workflow","workflow-transition","metadata-only","diagnostic"),baseEvent("workflow.transition.denied","workflow","workflow-transition","metadata-only","diagnostic"),baseEvent("workflow.action.started","workflow","workflow-action"),baseEvent("workflow.action.finished","workflow","workflow-action"),baseEvent("workflow.action.failed_continue","workflow","workflow-action"),baseEvent("workflow.guard.evaluated","workflow","workflow-guard","metadata-only","diagnostic"),baseEvent("workflow.hitl.ask","workflow","workflow-hitl","redacted"),baseEvent("workflow.hitl.response","workflow","workflow-hitl","redacted"),baseEvent("workflow.hitl.note","workflow","workflow-hitl","redacted"),baseEvent("workflow.custom","workflow","workflow-custom"),baseEvent("workflow.agent","workflow","workflow-agent","redacted","diagnostic"),baseEvent("workflow.steering","workflow","workflow-steering","redacted"),baseEvent("api.request.error","api","api"),baseEvent("bus.emit.done","bus","bus","metadata-only","diagnostic"),baseEvent("bus.emit.noop","bus","bus","metadata-only","diagnostic"),baseEvent("bus.handler.error","bus","bus","metadata-only","diagnostic"),baseEvent("bus.handler.async.enqueued","bus","bus","metadata-only","diagnostic"),baseEvent("decision.start","decision","decision"),baseEvent("decision.success","decision","decision"),baseEvent("decision.failure","decision","decision"),baseEvent("decision.end","decision","decision"),baseEvent("decision.rejected","decision","decision")],SYSTEM_EVENT_PRESENTERS={"task.created":{description:"A task file was created with a new WBS id.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity")],summary:({data,correlation})=>`[task] ${entityId({data,correlation})} created`,outcome:unsupported},"task.updated":{description:"An existing task file was updated in place, naming the section that changed.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("field","Field"),field("data.mutation.name","Section"),field("data.after","After"),field("data.diff","Diff")],summary:({data,correlation})=>{let section=s2(data,"data.mutation.name"),id2=entityId({data,correlation});return section!==void 0?`[task] ${section}`:`[task] ${id2||"updated"}`},outcome:unsupported},"task.transitioned":{description:"A task moved between lifecycle states, naming both the previous and new status.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("from","From"),field("to","To")],summary:({data,correlation})=>{let id2=entityId({data,correlation}),from=s2(data,"from"),to=s2(data,"to");return from!==void 0&&to!==void 0?`[task] ${id2} : ${from} -> ${to}`:`[task] ${id2} transitioned`},outcome:{support:"derived",derive:({data})=>s2(data,"to")}},"feature.created":{description:"A feature file was created with a new feature id.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity")],summary:({data,correlation})=>`[feature] ${entityId({data,correlation})} created`,outcome:unsupported},"feature.updated":{description:"An existing feature file was updated in place, naming the section that changed.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("field","Field"),field("data.mutation.name","Section"),field("data.after","After"),field("data.diff","Diff")],summary:({data,correlation})=>{let section=s2(data,"data.mutation.name"),id2=entityId({data,correlation});return section!==void 0?`[feature] ${section}`:`[feature] ${id2||"updated"}`},outcome:unsupported},"feature.transitioned":{description:"A feature moved between lifecycle states, naming both the previous and new status.",fields:[field("entity.kind","Entity kind"),field("entity.id","Entity"),field("from","From"),field("to","To")],summary:({data,correlation})=>{let id2=entityId({data,correlation}),from=s2(data,"from"),to=s2(data,"to");return from!==void 0&&to!==void 0?`[feature] ${id2} : ${from} -> ${to}`:`[feature] ${id2} transitioned`},outcome:{support:"derived",derive:({data})=>s2(data,"to")}},"queue.consumer.started":{description:"The configured queue consumer began polling its named queue.",fields:[field("queueName","Queue"),field("startedAt","Started"),field("pollInterval","Poll interval"),field("batchSize","Batch size"),field("maxConcurrency","Max concurrency"),field("visibilityTimeout","Visibility timeout")],summary:({data})=>{let name=s2(data,"queueName");return name!==void 0?`[queue] ${name} : consumer started`:"[queue] consumer started"},outcome:{support:"derived",derive:({data})=>at(data,"startedAt")!==void 0?"running":void 0}},"queue.consumer.stopped":{description:"The queue consumer stopped, reporting whether it drained in-flight work.",fields:[field("queueName","Queue"),field("stoppedAt","Stopped"),field("drainTimeoutMs","Drain timeout"),field("inFlightAtStop","In flight"),field("drained","Drained")],summary:({data})=>{let name=s2(data,"queueName");return name!==void 0?`[queue] ${name} : consumer stopped`:"[queue] consumer stopped"},outcome:{support:"derived",derive:({data})=>{let drained=at(data,"drained");if(drained===!0)return"drained";if(drained===!1)return"timeout";return}}},"queue.job.enqueued":{description:"A job was enqueued onto the job queue for later processing.",fields:[field("jobId","Job"),field("type","Type"),field("nextRetryAt","Next retry")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} enqueued`:"[queue] job enqueued"},outcome:unsupported},"queue.job.started":{description:"A queued job handler began executing (job identity and phase anchor).",fields:[field("jobId","Job"),field("type","Type"),field("name","Name")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} started`:"[queue] job started"},outcome:unsupported},"queue.job.completed":{description:"A queued job finished successfully with its attempt and duration.",fields:[field("jobId","Job"),field("type","Type"),field("attempt","Attempt"),field("durationMs","Duration (ms)")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} completed`:"[queue] job completed"},outcome:unsupported},"queue.job.failed":{description:"A queued job exhausted its attempts and failed with an error.",fields:[field("jobId","Job"),field("type","Type"),field("attempt","Attempt"),field("maxRetries","Max retries"),field("durationMs","Duration (ms)"),field("error","Error")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} failed`:"[queue] job failed"},outcome:derivedFrom("error")},"queue.job.retrying":{description:"A queued job failed once and is scheduled for another attempt.",fields:[field("jobId","Job"),field("type","Type"),field("attempt","Attempt"),field("maxRetries","Max retries"),field("nextRetryAt","Next retry"),field("error","Error")],summary:({data})=>{let type=s2(data,"type"),jobId=s2(data,"jobId");return type!==void 0&&jobId!==void 0?`[queue] ${type} · job ${jobId} retrying`:"[queue] job retrying"},outcome:{support:"derived",derive:({data})=>{let attempt=at(data,"attempt"),max=at(data,"maxRetries");if(typeof attempt==="number"&&typeof max==="number"&&Number.isFinite(attempt)&&Number.isFinite(max))return`retrying ${attempt}/${max}`;return s2(data,"error")}}},"queue.stats":{description:"Periodic job-queue statistics across ready, running, completed, and failed counts.",fields:[field("ready","Ready"),field("running","Running"),field("completed","Completed"),field("failed","Failed")],summary:()=>"[queue] stats",outcome:unsupported},"scheduler.job.executed":{description:"A scheduler job ran to completion or failed, with its duration.",fields:[field("name","Job"),field("action","Action"),field("durationMs","Duration (ms)"),field("error","Error")],summary:({data})=>{let name=s2(data,"name");return name!==void 0?`[scheduler] ${name}`:"[scheduler] job executed"},outcome:{support:"derived",derive:({data})=>s2(data,"error")??(at(data,"error")===null?"completed":void 0)}},"message.sent":{description:"A team message was sent from one member to another.",fields:[field("msgId","Message"),field("fromId","From"),field("toId","To"),field("threadId","Thread")],summary:({data})=>{let from=s2(data,"fromId"),to=s2(data,"toId");return from!==void 0&&to!==void 0?`[message] ${from} -> ${to}`:"[message] sent"},outcome:unsupported},"message.replied":{description:"A member replied to an existing message thread.",fields:[field("msgId","Message"),field("fromId","From"),field("toId","To"),field("threadId","Thread")],summary:({data})=>{let from=s2(data,"fromId"),thread=s2(data,"threadId");return from!==void 0&&thread!==void 0?`[message] ${from} replied in ${thread}`:"[message] replied"},outcome:unsupported},"message.read":{description:"The recipient marked a message read (first read only).",fields:[field("msgId","Message"),field("fromId","From"),field("toId","Reader"),field("threadId","Thread")],summary:({data})=>{let reader=s2(data,"toId"),msg=s2(data,"msgId");return reader!==void 0&&msg!==void 0?`[message] ${reader} read ${msg}`:"[message] read"},outcome:unsupported},"process.spawned":{description:"A supervised process was spawned with a new pid.",fields:[field("label","Label"),field("pid","PID"),field("agentId","Agent")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} spawned`:"[process] spawned"},outcome:unsupported},"process.exited":{description:"A supervised process exited, carrying its exit code, signal, or failure reason.",fields:[field("label","Label"),field("pid","PID"),field("exitCode","Exit code"),field("signal","Signal"),field("durationMs","Duration (ms)"),field("reason","Reason")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} exited`:"[process] exited"},outcome:{support:"derived",derive:({data})=>{let reason=s2(data,"reason");if(reason!==void 0)return reason;let signal=s2(data,"signal");if(signal!==void 0)return`signal ${signal}`;let code=at(data,"exitCode");if(typeof code==="number"&&Number.isFinite(code))return code===0?"ok":`exit ${code}`;return}}},"process.stopped":{description:"A supervised process was stopped, naming the stopping reason.",fields:[field("label","Label"),field("pid","PID"),field("signal","Signal"),field("reason","Reason")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} stopped`:"[process] stopped"},outcome:derivedFrom("reason")},"process.started":{description:"A process executor started a process with a new pid.",fields:[field("label","Label"),field("pid","PID")],summary:({data})=>{let label=s2(data,"label")??n2(data,"pid");return label!==void 0?`[process] ${label} started`:"[process] started"},outcome:unsupported},"agent.invoke.start":{description:"An agent invocation began, naming the agent and its operation.",fields:[field("agent","Agent"),field("operation","Operation"),field("routing.role","Role"),field("routing.tier","Tier"),field("routing.executor","Executor"),field("routing.source","Selection source")],summary:({data})=>{let agent=s2(data,"agent"),operation=s2(data,"operation");return agent!==void 0&&operation!==void 0?`[agent] ${agent} · ${operation}`:"[agent] invocation started"},outcome:unsupported},"agent.invoke.exit":{description:"An agent invocation exited, reporting its exit code or signal.",fields:[field("agent","Agent"),field("operation","Operation"),field("exitCode","Exit code"),field("signal","Signal"),field("routing.role","Role"),field("routing.tier","Tier"),field("routing.executor","Executor"),field("routing.source","Selection source")],summary:({data})=>{let agent=s2(data,"agent"),operation=s2(data,"operation");return agent!==void 0&&operation!==void 0?`[agent] ${agent} · ${operation} exited`:"[agent] invocation exited"},outcome:{support:"derived",derive:({data})=>{let signal=s2(data,"signal");if(signal!==void 0)return`signal ${signal}`;let code=at(data,"exitCode");if(typeof code==="number"&&Number.isFinite(code))return code===0?"ok":`exit ${code}`;return}}},"agent.invoke.escalated":{description:"An agent invocation escalated from one executor tier to another.",fields:[field("fromExecutor","From executor"),field("fromTier","From tier"),field("toExecutor","To executor"),field("toTier","To tier"),field("trigger","Trigger")],summary:({data})=>{let from=s2(data,"fromExecutor"),to=s2(data,"toExecutor");return from!==void 0&&to!==void 0?`[agent] ${from} -> ${to}`:"[agent] escalation"},outcome:{support:"derived",derive:({data})=>s2(data,"toTier")??s2(data,"trigger")}},"agent.invoke.exhausted":{description:"An agent invocation exhausted every eligible executor tier without success.",fields:[field("stage","Stage"),field("attempts","Attempts"),field("fromTier","From tier"),field("toTier","To tier"),field("fromExecutor","From executor"),field("toExecutor","To executor")],summary:({data})=>{let stage=s2(data,"stage");return stage!==void 0?`[agent] ${stage} escalation exhausted`:"[agent] escalation exhausted"},outcome:derivedFromValue("attempts")},"agent.started":{description:"An agent started, carrying its id and type.",fields:[field("agentId","Agent"),field("agentType","Agent type"),field("pid","PID")],summary:({data})=>{let id2=s2(data,"agentId");return id2!==void 0?`[agent] ${id2} started`:"[agent] started"},outcome:unsupported},"agent.stopped":{description:"An agent stopped, reporting its exit code.",fields:[field("agentId","Agent"),field("exitCode","Exit code")],summary:({data})=>{let id2=s2(data,"agentId");return id2!==void 0?`[agent] ${id2} stopped`:"[agent] stopped"},outcome:derivedFromValue("exitCode")},"strategy.changed":{description:"A project strategy changed (0838), minting a new strategy version for dispatch fencing.",fields:[field("data.projectPath","Project"),field("data.strategy","Strategy"),field("data.version","Version")],summary:({data})=>{let strategy=s2(data,"data.strategy"),version3=s2(data,"data.version");return strategy!==void 0?`[strategy] ${strategy}${version3!==void 0?` (v${version3})`:""}`:"[strategy] changed"},outcome:unsupported},"fleet.capacity.changed":{description:"The project write slot was claimed or released (0837), changing dispatch capacity.",fields:[field("data.projectPath","Project"),field("data.change","Change"),field("data.holderId","Holder")],summary:({data})=>{let change=s2(data,"data.change"),holder=s2(data,"data.holderId");return`[fleet] write slot ${change??"changed"}${holder!==void 0?` — ${holder}`:""}`},outcome:unsupported},"agent.lifecycle.changed":{description:"A fleet member reported its lifecycle state through a host hook (G73): working, idle, or blocked on a human (a permission prompt).",fields:[field("member","Member"),field("state","State"),field("seq","Sequence")],summary:({data})=>{let member=s2(data,"member"),state=s2(data,"state");return member!==void 0?`[agent] ${member} · ${state??"state"}`:"[agent] lifecycle changed"},outcome:{support:"derived",derive:({data})=>s2(data,"state")}},"agent.message.sent":{description:"A message was sent to an agent, reporting delivery success.",fields:[field("agentId","Agent"),field("ok","Delivered")],summary:({data})=>{let id2=s2(data,"agentId");return id2!==void 0?`[agent] message -> ${id2}`:"[agent] message sent"},outcome:derivedFromValue("ok")},"task.assigned":{description:"A task was assigned to an agent, naming the agent when resolved.",fields:[field("memberId","Member"),field("agentType","Agent type"),field("taskId","Task"),field("outcome","Outcome")],summary:({data})=>{let member=s2(data,"memberId"),task=s2(data,"taskId");return task!==void 0&&member!==void 0?`[task] ${task} assigned to ${member}`:"[task] assignment recorded"},outcome:derivedFrom("outcome")},"history.import.completed":{description:"A history import finished, reporting files, messages, and exit code.",fields:[field("source","Source"),field("sources","Sources"),field("files","Files"),field("messages","Messages"),field("durationMs","Duration (ms)"),field("exitCode","Exit code"),field("artifactPath","Artifact"),field("cwd","Project root")],retain:[field("trigger","Refresh trigger"),field("windowStart","Refresh window start"),field("windowEnd","Refresh window end"),field("importMode","Import mode"),field("coverage","Refresh coverage")],summary:({data})=>{let source=s2(data,"source")??s2(data,"sources");return source!==void 0?`[history] import · ${source}`:"[history] import completed"},outcome:derivedFromValue("exitCode")},"history.analyze.completed":{description:"A history analyze pass finished, reporting sources, duration, and exit code.",fields:[field("source","Source"),field("sources","Sources"),field("durationMs","Duration (ms)"),field("exitCode","Exit code"),field("artifactPath","Artifact")],retain:[field("trigger","Refresh trigger"),field("windowStart","Refresh window start"),field("windowEnd","Refresh window end"),field("importMode","Import mode")],summary:({data})=>{let source=s2(data,"source")??s2(data,"sources");return source!==void 0?`[history] analyze · ${source}`:"[history] analyze completed"},outcome:derivedFromValue("exitCode")},"history.daily.failed":{description:"The daily history refresh failed, carrying the detail, reason, and exit code.",fields:[field("source","Source"),field("sources","Sources"),field("detail","Detail"),field("reason","Reason"),field("exitCode","Exit code")],retain:[field("trigger","Refresh trigger"),field("windowStart","Refresh window start"),field("windowEnd","Refresh window end"),field("importMode","Import mode")],summary:()=>"[history] daily failed",outcome:{support:"derived",derive:({data})=>s2(data,"reason")??s2(data,"detail")??n2(data,"exitCode")}},"history.refresh.enqueued":{description:"A completion-triggered history refresh was enqueued, naming its window.",fields:[field("trigger","Trigger"),field("triggerId","Trigger id"),field("jobId","Queue job"),field("windowStart","Window start"),field("windowEnd","Window end"),field("coalesced","Coalesced"),field("outcome","Outcome")],summary:({data})=>{let start=s2(data,"windowStart"),end=s2(data,"windowEnd");return start!==void 0&&end!==void 0?`[history] refresh · ${start} -> ${end}`:"[history] refresh enqueued"},outcome:{support:"derived",derive:({data})=>{let status=s2(data,"outcome");return status!==void 0&&status!=="enqueued"?status:void 0}}},"rule.run.start":{description:"A rule run began with the rule count it will evaluate.",fields:[field("runId","Run"),field("ruleCount","Rules"),field("evaluator","Evaluator")],summary:({data,correlation})=>{let run=s2(data,"runId")??correlation.runId;return run!==void 0?`[rule] run ${run} started`:"[rule] run started"},outcome:unsupported},"rule.eval.start":{description:"A single rule began evaluating.",fields:[field("runId","Run"),field("ruleId","Rule"),field("evaluator","Evaluator"),field("index","Index"),field("total","Total")],summary:({data})=>{let id2=s2(data,"ruleId");return id2!==void 0?`[rule] ${id2} evaluating`:"[rule] evaluating"},outcome:unsupported},"rule.eval.done":{description:"A rule finished evaluating, reporting its findings count and severity.",fields:[field("runId","Run"),field("ruleId","Rule"),field("evaluator","Evaluator"),field("findings","Findings"),field("durationMs","Duration (ms)"),field("severity","Severity")],summary:({data})=>{let id2=s2(data,"ruleId");return id2!==void 0?`[rule] ${id2} evaluated`:"[rule] evaluated"},outcome:derivedFromValue("findings")},"rule.eval.error":{description:"A rule evaluation failed with an error.",fields:[field("runId","Run"),field("ruleId","Rule"),field("evaluator","Evaluator"),field("error","Error")],summary:({data})=>{let id2=s2(data,"ruleId");return id2!==void 0?`[rule] ${id2} error`:"[rule] error"},outcome:derivedFrom("error")},"rule.run.done":{description:"A rule run finished, reporting findings and whether it stopped early.",fields:[field("runId","Run"),field("findings","Findings"),field("durationMs","Duration (ms)"),field("stoppedEarly","Stopped early"),field("severity","Severity")],summary:({data,correlation})=>{let run=s2(data,"runId")??correlation.runId;return run!==void 0?`[rule] run ${run} done`:"[rule] run done"},outcome:{support:"derived",derive:({data})=>n2(data,"findings")??s2(data,"stoppedEarly")}},"workflow.run.started":{description:"A workflow run started, naming the workflow definition.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("mode","Mode"),field("dryRun","Dry run")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} started`:"[workflow] started"},outcome:unsupported},"workflow.run.done":{description:"A workflow run reached a done terminal state.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("finalState","Final state"),field("transitionsTaken","Transitions")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} done`:"[workflow] done"},outcome:derivedFrom("finalState")},"workflow.run.failed":{description:"A workflow run failed with a terminal failure reason.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("finalState","Final state"),field("reason","Reason")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} failed`:"[workflow] failed"},outcome:derivedFrom("reason")},"workflow.run.finalized":{description:"A workflow run settled on a terminal status.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("status","Status")],summary:(input)=>{let name=humanWorkflowTitle(input);return name!==""?`[workflow] ${name} finalized`:"[workflow] finalized"},outcome:derivedFrom("status")},"workflow.escalation.created":{description:"A canonical escalation packet was projected from existing run evidence.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("fingerprint","Fingerprint"),field("artifactPath","Artifact"),field("decision","Decision")],summary:(input)=>{let name=humanWorkflowTitle(input),decision=typeof at(input.data,"decision")==="string"?` — ${String(at(input.data,"decision"))}`:"";return name!==""?`[workflow] escalation packet created (${name}${decision})`:`[workflow] escalation packet created${decision}`},outcome:derivedFrom("decision")},"workflow.escalation.projection_failed":{description:"Escalation packet projection failed; the original failure is preserved untouched.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("error","Error")],summary:()=>"[workflow] escalation packet projection failed",outcome:derivedFrom("error")},"workflow.run.paused":{description:"A workflow run paused at a step, naming the step when available.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("transitionsTaken","Transitions")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} paused`:"[workflow] paused"},outcome:unsupported},"workflow.run.resumed":{description:"A paused workflow run resumed at a step, naming the step when available.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} resumed`:"[workflow] resumed"},outcome:unsupported},"workflow.run.reseeded":{description:"A workflow run was reseeded to a new state, naming the transition.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("fromState","From"),field("toState","To")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"fromState"),to=s2(input.data,"toState");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} : ${from} -> ${to}`:`[workflow] : ${from} -> ${to}`;return name!==""?`[workflow] ${name} reseeded`:"[workflow] reseeded"},outcome:derivedFrom("toState")},"workflow.node.enter":{description:"The engine entered a workflow node, naming the step when available.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("transitionsTaken","Transitions")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] node entered"},outcome:unsupported},"workflow.phase":{description:"A workflow phase changed status, naming the phase.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("phase","Phase"),field("status","Status")],summary:(input)=>{let name=humanWorkflowTitle(input),phase=s2(input.data,"phase"),parts=[name,phase].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] phase"},outcome:derivedFrom("status")},"workflow.node.transition":{description:"A workflow transitioned between nodes, naming the from and to states.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("trigger","Trigger")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} : ${from} -> ${to}`:`[workflow] : ${from} -> ${to}`;return name!==""?`[workflow] ${name} transitioned`:"[workflow] transitioned"},outcome:derivedFrom("to")},"workflow.transition":{description:"A workflow state transition was committed.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("trigger","Trigger")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} : ${from} -> ${to}`:`[workflow] : ${from} -> ${to}`;return name!==""?`[workflow] ${name} transitioned`:"[workflow] transitioned"},outcome:derivedFrom("to")},"workflow.transition.requested":{description:"A workflow transition was requested and accepted for evaluation.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("trigger","Trigger")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} requested ${from} -> ${to}`:`[workflow] requested ${from} -> ${to}`;return name!==""?`[workflow] ${name} transition requested`:"[workflow] transition requested"},outcome:unsupported},"workflow.transition.denied":{description:"A workflow transition was denied with a reason.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("reason","Reason")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} denied ${from} -> ${to}`:`[workflow] denied ${from} -> ${to}`;return name!==""?`[workflow] ${name} transition denied`:"[workflow] transition denied"},outcome:derivedFrom("reason")},"workflow.action.started":{description:"A workflow action began executing, naming the step and kind.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("actionId","Action"),field("kind","Kind")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} started`:"[workflow] action started"},outcome:unsupported},"workflow.action.finished":{description:"A workflow action finished, reporting its status and success.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("actionId","Action"),field("kind","Kind"),field("durationMs","Duration (ms)"),field("status","Status")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} finished`:"[workflow] action finished"},outcome:{support:"derived",derive:({data})=>s2(data,"status")??n2(data,"ok")}},"workflow.action.failed_continue":{description:"A workflow action failed but the workflow continued, carrying the error.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("transitionsTaken","Transitions"),field("error","Error")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} failed; continuing`:"[workflow] action failed; continuing"},outcome:derivedFrom("error")},"workflow.guard.evaluated":{description:"A workflow guard was evaluated for a transition, reporting whether it passed.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("from","From"),field("to","To"),field("kind","Kind"),field("passed","Passed")],summary:(input)=>{let name=humanWorkflowTitle(input),from=s2(input.data,"from"),to=s2(input.data,"to");if(from!==void 0&&to!==void 0)return name!==""?`[workflow] ${name} guard ${from} -> ${to}`:`[workflow] guard ${from} -> ${to}`;return name!==""?`[workflow] ${name} guard evaluated`:"[workflow] guard evaluated"},outcome:derivedFromValue("passed")},"workflow.hitl.ask":{description:"A workflow paused for human input, naming the step and kind.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("kind","Kind")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} awaiting input`:"[workflow] awaiting input"},outcome:unsupported},"workflow.hitl.response":{description:"Human input was received for a paused workflow step.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node"),field("ok","Accepted")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} input received`:"[workflow] input received"},outcome:derivedFromValue("ok")},"workflow.hitl.note":{description:"A note was recorded on a paused workflow step.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("nodeLabel","Step"),field("node","Node")],summary:(input)=>{let name=humanWorkflowTitle(input),step=humanStepLabel(input.data),parts=[name,step].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")} note`:"[workflow] note"},outcome:unsupported},"workflow.custom":{description:"A custom workflow event was emitted, naming the custom event.",fields:[field("runId","Run"),field("workflowName","Workflow"),field("name","Event")],summary:(input)=>{let name=humanWorkflowTitle(input),custom3=s2(input.data,"name"),parts=[name,custom3].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] custom"},outcome:unsupported},"workflow.agent":{description:"A workflow-dispatched agent execution lifecycle event, discriminated by kind.",fields:[field("runId","Run"),field("executionId","Execution"),field("actionId","Action"),field("kind","Kind"),field("agent","Agent"),field("model","Model")],retain:[field("metadata.agent","Agent"),field("metadata.role","Role"),field("routing.executor","Executor")],summary:(input)=>{let name=humanWorkflowTitle(input),kind=s2(input.data,"kind"),parts=[name,kind!==void 0?`agent ${kind}`:"agent"].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] agent"},outcome:{support:"derived",derive:({data})=>s2(data,"kind")==="finished"?s2(data,"outcome"):void 0}},"workflow.steering":{description:"A steering command was acknowledged for a workflow action boundary.",fields:[field("runId","Run"),field("actionId","Action"),field("operation","Operation"),field("actor","Actor"),field("accepted","Accepted"),field("state","State"),field("reason","Reason")],summary:(input)=>{let name=humanWorkflowTitle(input),operation=s2(input.data,"operation"),parts=[name,operation!==void 0?`steering ${operation}`:"steering"].filter((part)=>typeof part==="string"&&part!=="");return parts.length>0?`[workflow] ${parts.join(" · ")}`:"[workflow] steering"},outcome:{support:"derived",derive:({data})=>{let reason=s2(data,"reason");if(reason!==void 0)return reason;let accepted=at(data,"accepted");if(accepted===!0)return"accepted";if(accepted===!1)return"rejected";return s2(data,"state")}}},"api.request.error":{description:"An API request failed, naming the method, path, and status or error code.",fields:[field("method","Method"),field("path","Path"),field("status","Status"),field("code","Code"),field("requestId","Request"),field("error","Error")],summary:({data})=>{let method=s2(data,"method"),path8=s2(data,"path");return method!==void 0&&path8!==void 0?`[api] ${method} ${path8}`:"[api] request error"},outcome:{support:"derived",derive:({data})=>s2(data,"error")??s2(data,"code")??n2(data,"status")}},"bus.emit.done":{description:"An event was emitted to its handlers on the event bus.",fields:[field("event","Event"),field("handlers","Handlers"),field("durationMs","Duration (ms)")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} emitted`:"[bus] event emitted"},outcome:derivedFromValue("handlers")},"bus.emit.noop":{description:"An event was emitted but had no registered handlers.",fields:[field("event","Event"),field("handlers","Handlers"),field("durationMs","Duration (ms)")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} had no handlers`:"[bus] event had no handlers"},outcome:derivedFromValue("handlers")},"bus.handler.error":{description:"An event-bus handler threw an error while processing an event.",fields:[field("event","Event"),field("handlers","Handlers"),field("durationMs","Duration (ms)"),field("error","Error")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} handler error`:"[bus] handler error"},outcome:derivedFrom("error")},"bus.handler.async.enqueued":{description:"An event-bus handler was enqueued for asynchronous processing.",fields:[field("event","Event"),field("handlers","Handlers")],summary:({data})=>{let event=s2(data,"event");return event!==void 0?`[bus] ${event} handlers enqueued`:"[bus] handlers enqueued"},outcome:derivedFromValue("handlers")},"decision.start":{description:"A decision invocation began — a maker is about to be asked.",fields:[field("decisionId","Decision"),field("type","Type"),field("maker","Maker"),field("makerSource","Maker source"),field("catalogLayer","Catalog layer"),field("minConfidence","Min confidence")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("inputKeys","Input keys"),field("evidenceDigest","Evidence digest"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id2=s2(data,"decisionId"),maker=s2(data,"maker");return maker!==void 0?`[decision] ${id2??"decision"} asking ${maker}`:`[decision] ${id2??"decision"} asking maker`},outcome:unsupported},"decision.success":{description:"A decision invocation returned an accepted model answer (no fallback).",fields:[field("decisionId","Decision"),field("value","Answer"),field("confidence","Confidence"),field("maker","Maker")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id2=s2(data,"decisionId"),value=s2(data,"value");return value!==void 0?`[decision] ${id2??"decision"} answered ${value}`:`[decision] ${id2??"decision"} answered`},outcome:derivedFromValue("value")},"decision.failure":{description:"A decision invocation served the declared fallback instead of a model answer.",fields:[field("decisionId","Decision"),field("reason","Reason"),field("fallbackValue","Fallback"),field("confidence","Confidence"),field("maker","Maker"),field("error","Error")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id2=s2(data,"decisionId"),reason=s2(data,"reason");return reason!==void 0?`[decision] ${id2??"decision"} fell back (${reason})`:`[decision] ${id2??"decision"} fell back`},outcome:derivedFromValue("reason")},"decision.end":{description:"A decision invocation finished, with the outcome source and wall-clock duration.",fields:[field("decisionId","Decision"),field("durationMs","Duration ms"),field("value","Answer"),field("source","Source"),field("reason","Reason"),field("maker","Maker"),field("confidence","Confidence")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id2=s2(data,"decisionId"),source=s2(data,"source");return source!==void 0?`[decision] ${id2??"decision"} finished via ${source}`:`[decision] ${id2??"decision"} finished`},outcome:derivedFromValue("reason")},"decision.rejected":{description:"A caller mistake refused a decision before any maker call (unknown id, maker, or parse).",fields:[field("decisionId","Decision"),field("errorKind","Error kind"),field("message","Message"),field("maker","Maker")],retain:[field("invocationId","Invocation"),field("caller","Caller"),field("correlation.runId","Run"),field("correlation.workflowName","Workflow"),field("correlation.nodeId","Node"),field("correlation.wbs","WBS")],summary:({data})=>{let id2=s2(data,"decisionId"),kind=s2(data,"errorKind");return kind!==void 0?`[decision] ${id2??"decision"} rejected (${kind})`:`[decision] ${id2??"decision"} rejected`},outcome:derivedFromValue("errorKind")}};function inferSeverity(name){if(/(?:failed|error|denied)$/.test(name))return"error";if(/(?:retrying|paused|dropped)$/.test(name))return"warning";return"info"}function resolveCatalogEntry(base2){let profile=SOURCE_PROFILES[base2.source],presenter=SYSTEM_EVENT_PRESENTERS[base2.name];return{name:base2.name,prefix:base2.name.split(".")[0]??base2.name,source:base2.source,tier:base2.tier,persisted:!0,streamed:!0,payloadPolicy:base2.payloadPolicy,renderer:base2.renderer,...profile,...base2.producer!==void 0?{producerPackage:base2.producer.package,subsystem:base2.producer.subsystem}:{},severity:inferSeverity(base2.name),description:presenter.description,metadataFields:presenter.retain?[...presenter.fields,...presenter.retain.filter((r)=>!presenter.fields.some((f)=>f.path===r.path))]:presenter.fields,remediationKind:profile.remediationKind}}var SYSTEM_EVENT_CATALOG=BASE_CATALOG.map(resolveCatalogEntry),SYSTEM_EVENT_NAMES=SYSTEM_EVENT_CATALOG.map((entry)=>entry.name),SYSTEM_EVENT_PERSISTED_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="default").map((entry)=>entry.name),SYSTEM_EVENT_STREAMED_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="default").map((entry)=>entry.name),SYSTEM_EVENT_PREFIXES=Array.from(new Set(SYSTEM_EVENT_CATALOG.map((entry)=>entry.prefix))),SYSTEM_EVENT_DEFAULT_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="default").map((entry)=>entry.name),SYSTEM_EVENT_DIAGNOSTIC_NAMES=SYSTEM_EVENT_CATALOG.filter((entry)=>entry.tier==="diagnostic").map((entry)=>entry.name);var SYSTEM_EVENT_CATALOG_METADATA=SYSTEM_EVENT_CATALOG.map(({name,prefix,source,tier,renderer,producerPackage,subsystem,severity,description,metadataFields,remediationKind})=>({name,prefix,source,tier,renderer,producerPackage,subsystem,severity,description,metadataFields,remediationKind}));var DEFAULT_SYSTEM_EVENT_RETENTION_QUOTA=1e4;function resolveRetentionQuotas(config4={},prefixes=SYSTEM_EVENT_PREFIXES){let defaultQuota=config4.default??DEFAULT_SYSTEM_EVENT_RETENTION_QUOTA,overrides=config4.prefixes??{};return prefixes.map((prefix)=>({prefix,quota:overrides[prefix]??defaultQuota}))}function registerSystemEventTap(bus,dao2,logger3,options={}){let handlers=new Map,inFlight=new Set,diagnosticEnabled=options.diagnosticEnabled===!0,quotas=resolveRetentionQuotas(options.retention);for(let entry of SYSTEM_EVENT_CATALOG){if(entry.tier==="diagnostic"&&!diagnosticEnabled)continue;let handler=(event)=>{let actor=extractSystemEventActor(event),p=persist(dao2,entry.prefix,{id:createId("sev"),event_name:entry.name,occurred_at:new Date().toISOString(),actor,payload_json:safeStringify(buildSystemEventEnvelope(entry,event,options.projectContext??systemEventProjectContext(""),options.secretValues,actor)),...extractSystemEventCorrelation(event)},quotas,logger3);inFlight.add(p),p.finally(()=>inFlight.delete(p))};handlers.set(entry.name,handler),bus.on(entry.name,handler)}return{unsubscribe:()=>{for(let[name,handler]of handlers)bus.off(name,handler);handlers.clear()},flush:async()=>{while(inFlight.size>0)await Promise.allSettled(inFlight)}}}async function persist(dao2,prefix,input,quotas,logger3){try{await dao2.insert(input),await dao2.pruneQuotas(quotas,prefix)}catch(error51){logger3.warn("system_events tap: persist failed",{name:input.event_name,error:stringifyError(error51)})}}function safeStringify(event){try{return JSON.stringify(event??null)}catch{return null}}function extractSystemEventActor(event){if(event&&typeof event==="object"){let obj=event;if(typeof obj.actor==="string"&&obj.actor.length>0)return obj.actor;if(typeof obj.agentId==="string"&&obj.agentId.length>0)return obj.agentId;if(typeof obj.memberId==="string"&&obj.memberId.length>0)return obj.memberId}return null}function extractSystemEventCorrelation(event){let correlation={run_id:null,entity_kind:null,entity_id:null,sequence:null};if(!event||typeof event!=="object")return correlation;let obj=event,nested=obj.correlation&&typeof obj.correlation==="object"?obj.correlation:{},runId=obj.runId??obj.run_id??nested.runId;if(typeof runId==="string"&&runId.length>0)correlation.run_id=runId;if(typeof obj.sequence==="number"&&Number.isFinite(obj.sequence))correlation.sequence=obj.sequence;let entity2=obj.entity;if(entity2&&typeof entity2==="object"){let{kind,id:id2}=entity2;if(typeof kind==="string"&&kind.length>0)correlation.entity_kind=kind;if(typeof id2==="string"&&id2.length>0)correlation.entity_id=id2}if(typeof obj.entityKind==="string"&&obj.entityKind.length>0)correlation.entity_kind=obj.entityKind;if(typeof obj.entityId==="string"&&obj.entityId.length>0)correlation.entity_id=obj.entityId;return correlation}function stringifyError(error51){if(error51 instanceof Error)return`${error51.name}: ${error51.message}`;return String(error51)}init_src();init_src();init_src();var TRIPWIRE_CATALOG=Object.freeze({"retry-exhausted":{id:"retry-exhausted",version:1,response:"fail",nextDecision:"Retries are exhausted; an operator must decide to escalate, extend the retry policy, or fail the stage. No further automatic retry is permitted."},"hard-budget":{id:"hard-budget",version:1,response:"fail",nextDecision:"An operator must raise the declared budget or trim the stage scope, then re-run the action; the run stays failed until then."},"capability-denied":{id:"capability-denied",version:1,response:"fail",nextDecision:"An operator must attest the executor capabilities in agent config or lower the stage requiresCapabilities, then re-run the action."},"proof-invalidated":{id:"proof-invalidated",version:1,response:"fail",nextDecision:"An operator must restore the proof inputs or re-establish the verdict (re-verify) before record; recording against a changed tree is blocked."},"output-drop":{id:"output-drop",version:1,response:"continue",nextDecision:"The dispatch completed but its captured evidence is incomplete (bounded relay dropped chunks). Inspect the session/trace for full output if the result is contested."}});var{copyFile:copyFile2,link,mkdir:mkdir2,readFile:readFile5,unlink:unlink2,writeFile:writeFile3}=await import("node:fs/promises");init_src();init_src();init_src();init_src();init_project_registry();function workflowVersionLiteral(workflow){return typeof workflow.version==="string"&&workflow.version!==""?workflow.version:null}var{appendFileSync:appendFileSync4,closeSync,existsSync:existsSync7,lstatSync:lstatSync2,mkdirSync:mkdirSync3,openSync,readdirSync:readdirSync4,readFileSync:readFileSync5,renameSync:renameSync3,unlinkSync:unlinkSync2,writeFileSync:writeFileSync4,writeSync}=await import("node:fs"),{lstat:lstat2,mkdir:mkdir3,readdir:readdir2,readFile:readFile6}=await import("node:fs/promises");function parseIdentityMetadata(raw){if(raw.trim()==="")return{};try{let parsed=JSON.parse(raw);if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))return null;return parsed}catch{return null}}async function openInlineRunProjectDb(workdir){let url2=join15(resolve8(workdir),".spur","spur.db");mkdirSync3(join15(url2,".."),{recursive:!0});let adapter=await createMigratedDb({url:url2});return{adapter,close:()=>adapter.close()}}async function readInstalledInventory(input){let launch=input.spurBin?splitLaunchCommand(input.spurBin,'inline-run-setup "spurBin"'):existsSync7(input.localCli)?{command:"bun",leadingArgs:[input.localCli]}:{command:"spur",leadingArgs:[]};if("error"in launch)throw Error(launch.error);let res=await new NodeProcessExecutor2().run({command:launch.command,args:[...launch.leadingArgs,"workflow","show",input.file,"--format","todo","--json"],cwd:input.workdir??process.cwd(),forceBuffered:!0,rejectOnError:!1,timeout:30000});if(res.exitCode!==0){let detail=res.stderr.trim()!==""?res.stderr.trim():`exit ${res.exitCode??-1}`;throw Error(`could not resolve the workflow definition with the installed CLI: ${detail}`)}let value=JSON.parse(res.stdout);if(value&&typeof value==="object"&&"ok"in value&&"data"in value&&value.ok===!0)return value.data;return value}var MAX_CITED_RUN_FILES=64;async function readExistingRunFile(path8){let stat3=await lstat2(path8).catch((error51)=>{if(error51.code==="ENOENT")return;throw error51});if(stat3===void 0)return;if(!stat3.isFile())throw Error(`persist-out: destination ${path8} is not a regular file — refusing to follow it`);return readFile6(path8)}async function persistWorktreeRuns(input){let fromDir=resolve8(input.fromWorkdir),toDir=resolve8(input.toWorkdir),fromRunDir=join15(fromDir,".spur","run"),toRunDir=join15(toDir,".spur","run"),fromRecordsDir=runStoragePaths(fromDir).recordsDir,toRecordsDir=runStoragePaths(toDir).recordsDir,fs3=createNodeFileSystem2(),fromEvidence=runStoragePaths(fromDir).evidenceDir,toEvidence=runStoragePaths(toDir).evidenceDir,evidenceCopies=[],evidenceSkipped=[],forwardedWbs=new Set;for(let taskFile of input.taskFiles??[]){let wbs=/^(\d{4})_/.exec(basename5(taskFile))?.[1];if(wbs!==void 0)forwardedWbs.add(wbs)}let hasTaskFilter=input.taskFiles!==void 0,worktreeRunIds=new Set,ownerDb=await openInlineRunProjectDb(fromDir);try{for(let row of await listRunIdRows(ownerDb.adapter)){if(!SAFE_RUN_ID_RE.test(row.id))throw new InvalidWorkflowRunIdError(row.id);worktreeRunIds.add(row.id)}}finally{ownerDb.close()}await resolveDurableArtifactPath(fs3,fromDir,join15(fromEvidence,"probe.json"),"evidence");let evidenceNames=await readdir2(fromEvidence).catch((error51)=>{if(error51.code==="ENOENT")return[];throw error51});for(let name of evidenceNames.sort()){let source2=await resolveDurableArtifactPath(fs3,fromDir,join15(fromEvidence,name),"evidence"),target=await resolveDurableArtifactPath(fs3,toDir,join15(toEvidence,name),"evidence"),stat3=await lstat2(source2);if(!stat3.isFile())throw Error(`persist-out: durable evidence is not a regular file: ${name}`);let bytes=await readFile6(source2),verdictWbs=/^(\d{4})-verdict\.json$/.exec(name)?.[1],isOwned=!1;if(verdictWbs!==void 0){let parsed=parseVerifyVerdict(bytes.toString(),verdictWbs),raw=JSON.parse(bytes.toString());if(!parsed||parsed.wbs!==verdictWbs||raw.wbs!==void 0&&raw.wbs!==verdictWbs)throw Error(`persist-out: malformed durable verdict identity: ${name}`);isOwned=hasTaskFilter?forwardedWbs.has(verdictWbs):!0}else if(name.endsWith("-feature-verification.json")){let receipt=parseFeatureVerificationReceipt(bytes.toString()),owner=name.slice(0,-26);if(owner!==receipt.runId&&owner!==receipt.featureId)throw Error(`persist-out: malformed durable receipt identity: ${name}`);isOwned=worktreeRunIds.has(receipt.runId)}else throw Error(`persist-out: unclassified durable evidence: ${name}`);let existing=await readExistingRunFile(target);if(existing!==void 0&&!existing.equals(bytes)){if(isOwned)throw Error(`persist-out: durable evidence conflicts: ${name}`);let newer=(await lstat2(target)).mtimeMs>=stat3.mtimeMs?"invoking":"worktree";evidenceSkipped.push({name,reason:"foreign-divergent",newer});continue}evidenceCopies.push({source:source2,target,bytes})}let citedNames=new Set,citedDirSkips=new Set;for(let taskFile of input.taskFiles??[]){let content;try{content=await readFile6(resolve8(toDir,taskFile),"utf8")}catch(error51){throw Error(`persist-out: merged task file ${taskFile} is unreadable: ${String(error51)}`)}for(let match of content.matchAll(RUN_CITATION_RE)){let name=asLiteralRunFileName(match[1]??"");if(name===void 0)continue;if(match[2]!==void 0){citedDirSkips.add(name);continue}if(citedNames.has(name))continue;if(citedNames.size>=MAX_CITED_RUN_FILES)throw Error(`persist-out: merged task files cite more than ${MAX_CITED_RUN_FILES} distinct `+".spur/run/ files — over the fixed citation cap (0984 R3); split the batch or prune the citations");citedNames.add(name)}}if((input.taskFiles??[]).length>0){let prefixes=[...forwardedWbs].map((wbs)=>`${wbs}-`),recordNames=new Set;for(let runId of worktreeRunIds)prefixes.push(`${runId}-`),recordNames.add(`${runId}.md`).add(`${runId}.state.json`);let entries=await readdir2(fromRunDir).catch((error51)=>{if(error51.code==="ENOENT")return[];throw error51}),ownedCounts=new Map;for(let name of entries.sort()){if(recordNames.has(name))continue;let owner=prefixes.find((prefix)=>name.startsWith(prefix));if(owner===void 0)continue;let count3=(ownedCounts.get(owner)??0)+1;if(count3>MAX_CITED_RUN_FILES)throw Error(`persist-out: owner ${owner} owns more than ${MAX_CITED_RUN_FILES} .spur/run/ files `+"— over the per-owner evidence cap (1012 R1, 1034 R1); split the batch or prune the evidence");ownedCounts.set(owner,count3),citedNames.add(name)}}let citedCopies=[],citedSkips=[];for(let name of citedDirSkips)citedSkips.push({id:name,reason:`cited-directory:${name}`});for(let name of citedNames){let scratchPath=join15(fromRunDir,name),durablePath=join15(fromRecordsDir,name),scratchStat=await lstat2(scratchPath).catch(()=>{return}),sourceIsDurable=scratchStat===void 0,sourcePath=sourceIsDurable?durablePath:scratchPath,targetPath=sourceIsDurable?join15(toRecordsDir,name):join15(toRunDir,name),sourceStat=sourceIsDurable?await lstat2(durablePath).catch(()=>{return}):scratchStat,targetBytes=await readExistingRunFile(targetPath);if(sourceStat===void 0){let otherTarget=sourceIsDurable?join15(toRunDir,name):join15(toRecordsDir,name);if(targetBytes===void 0&&await readExistingRunFile(otherTarget)===void 0)throw Error(`persist-out: cited run evidence .spur/run/${name} is missing in both the worktree and `+"the invoking tree — resolve or drop the citation before teardown (0984 R1)");continue}if(!sourceStat.isFile()){let kind=sourceStat.isDirectory()?"directory":sourceStat.isSymbolicLink()?"symlink":"non-file";citedSkips.push({id:name,reason:`cited-${kind}:${name}`});continue}if(targetBytes!==void 0){let sourceBytes=await readFile6(sourcePath);if(!targetBytes.equals(sourceBytes))throw Error(`persist-out: cited run evidence .spur/run/${name} diverges from the invoking tree's `+"existing file — refusing to overwrite; reconcile the two copies by hand (0984 R4)");continue}citedCopies.push({name,sourcePath,targetPath})}let source=await openInlineRunProjectDb(fromDir);try{let runRows=await listRunIdRows(source.adapter);for(let row of runRows)if(!SAFE_RUN_ID_RE.test(row.id))throw new InvalidWorkflowRunIdError(row.id);let recordBytes=new Map;for(let row of runRows){let bookkeeping=row.workflowName!==null&&row.workflowName!==void 0&&isBookkeepingWorkflow(row.workflowName);for(let fileName of[`${row.id}.md`,`${row.id}.state.json`])try{recordBytes.set(fileName,await readFile6(join15(fromRecordsDir,fileName)))}catch(error51){if(error51.code==="ENOENT"){if(bookkeeping)continue;throw Error(`persist-out: ${row.workflowName??"unknown"} run ${row.id} is missing its run record \`${fileName}\` in the worktree — failing closed before any row transfer `+"(green-run evidence guarantee, 0984 R5 / 1043 R1)")}throw error51}}let target=await openInlineRunProjectDb(toDir);try{let{persistedIds,skipped}=await transferRunTables(source.adapter,target.adapter),recordIds=[...persistedIds,...skipped.filter((s3)=>s3.reason==="id-exists").map((s3)=>s3.id)],recordSkips=[],referenceMoves=[];if(evidenceCopies.length>0){ensureDurablePlaneIgnored(toDir);for(let copy of evidenceCopies){await mkdir3(join15(copy.target,".."),{recursive:!0});let existing=await readExistingRunFile(copy.target);if(existing!==void 0&&!existing.equals(copy.bytes))throw Error(`persist-out: durable evidence conflicts: ${copy.target}`);if(existing===void 0)writeFileSync4(copy.target,copy.bytes,{flag:"wx"});referenceMoves.push({source:copy.source,target:fs3.realPath?.(copy.target)??copy.target})}}if(recordIds.length>0||citedCopies.length>0){mkdirSync3(toRunDir,{recursive:!0}),mkdirSync3(toRecordsDir,{recursive:!0}),ensureDurablePlaneIgnored(toDir);for(let id2 of recordIds)for(let fileName of[`${id2}.md`,`${id2}.state.json`]){let sourceBytes=recordBytes.get(fileName);if(sourceBytes===void 0){recordSkips.push({id:id2,reason:`record-missing:${fileName}`});continue}let targetPath=join15(toRecordsDir,fileName),existing=await readExistingRunFile(targetPath);if(existing!==void 0){if(existing.equals(sourceBytes))continue;recordSkips.push({id:id2,reason:`record-conflict:${fileName}`});continue}writeFileSync4(targetPath,sourceBytes,{flag:"wx"})}for(let cited of citedCopies){let sourceBytes=await readFile6(cited.sourcePath),existing=await readExistingRunFile(cited.targetPath);if(existing!==void 0){if(!existing.equals(sourceBytes))throw Error(`persist-out: cited run evidence .spur/run/${cited.name} diverges from the invoking `+"tree's existing file — refusing to overwrite; reconcile the two copies by hand (0984 R4)");continue}writeFileSync4(cited.targetPath,sourceBytes,{flag:"wx"})}for(let id2 of recordIds)await carryRunRecordDir(fromRecordsDir,toRecordsDir,"",id2,recordSkips,referenceMoves)}return await redirectRunStorageReferences(target.adapter,referenceMoves),{ok:!0,persisted:persistedIds.length,skipped:[...skipped,...recordSkips,...citedSkips],...evidenceSkipped.length>0?{evidenceSkipped}:{}}}finally{target.close()}}finally{source.close()}}async function createOrAttachInlineRun(input){let runId=input.runId.trim();if(runId==="")return{ok:!1,error:"inline run setup requires a non-empty runId (driver Run setup step 2)"};let workdir=resolve8(input.workdir),resolved;try{let projection=input.inventory===void 0?void 0:parseWorkflowInventory(input.inventory);if(projection&&!projection.ok)return projection;let inventory=projection?.ok?projection.inventory:void 0;if(inventory&&(!inventory.source||inventory.kind!=="state-machine"))return{ok:!1,error:"inline run setup requires a state-machine inventory with definition source"};if(resolved=await resolveWorkflowDefinition(workdir,inventory?.source?.path??input.file,{validateSchema:!0,...input.embeddedSchemas!==void 0?{embeddedSchemas:input.embeddedSchemas}:{},...!inventory?{registered:input.registered}:{}}),(resolved.workflow.kind??"state-machine")!=="state-machine")return{ok:!1,error:"inline run setup requires a state-machine definition"};if(inventory?.source){let identity5=assertInventoryIdentity(inventory,resolved.digest);if(!identity5.ok)return identity5;if(inventory.name!==resolved.workflow.name)return{ok:!1,error:"inline run setup: inventory workflow name does not match its definition"};resolved={...resolved,layer:inventory.source.layer}}}catch(error51){return{ok:!1,error:`inline run setup could not resolve the workflow definition: ${error51.message}`}}let digest=resolved.digest,version3=workflowVersionLiteral(resolved.workflow),source={path:resolved.path,layer:resolved.layer,workdir},db2=await input.getDb(),existing=await new RunDao(db2).traceRowById(runId);if(existing!==void 0){let metadata=parseIdentityMetadata(existing.metadata_json);if(metadata===null)return{ok:!1,error:`inline run setup refuses run ${runId}: its existing row has malformed metadata_json, `+"so its identity cannot be verified — delete the stale run row or allocate a new run id"};let resumeDigest=typeof metadata.resumeDefinitionDigest==="string"?metadata.resumeDefinitionDigest:void 0,launchDigest=typeof metadata.definitionDigest==="string"?metadata.definitionDigest:void 0,effectiveDigest=resumeDigest??launchDigest;if(effectiveDigest===void 0)return{ok:!1,error:`inline run setup refuses run ${runId}: its existing row carries no definition digest `+"(pre-identity legacy row) — allocate a new run id instead of attaching an unverifiable identity"};if(effectiveDigest!==digest)return{ok:!1,error:`inline run setup refuses run ${runId}: the resolved definition digest (${digest}) does not match the run's recorded ${resumeDigest!==void 0?"resume":""} digest (${effectiveDigest}) — `+"a changed definition must resume through the explicit resume rules, not silently re-attach"};if(existing.workflow_name!==resolved.workflow.name)return{ok:!1,error:`inline run setup refuses run ${runId}: the run row records workflow "${existing.workflow_name}" but the resolved definition is "${resolved.workflow.name}" — conflicting run identity`};if(typeof metadata.definitionSource!=="object"||metadata.definitionSource===null||Array.isArray(metadata.definitionSource))return{ok:!1,error:`inline run setup refuses run ${runId}: its existing row carries no definition source `+"(path/layer/workdir) — allocate a new run id instead of attaching an unverifiable launch source"};let existingSource=metadata.definitionSource;if(!(typeof existingSource.path==="string"&&resolve8(existingSource.path)===resolved.path&&normalizePersistedWorkflowLayer(existingSource.layer)===resolved.layer&&typeof existingSource.workdir==="string"&&resolve8(existingSource.workdir)===workdir))return{ok:!1,error:`inline run setup refuses run ${runId}: the recorded definition source (${JSON.stringify(existingSource)}) does not match the resolved launch source (${JSON.stringify(source)}) — conflicting project/workdir identity`};return{ok:!0,attached:!0,runId,workflowName:resolved.workflow.name,definitionDigest:digest,workflowVersion:version3,resolvedPath:resolved.path,layer:resolved.layer,workdir,status:existing.status}}return await new WorkflowService(createDefaultWorkflowEngineHost(),new DbWorkflowPersistenceAdapter(db2)).createOrAttachRun({id:runId,workflow_name:resolved.workflow.name,mode:"state-machine",status:"running",started_at:new Date().toISOString(),completed_at:null,metadata_json:JSON.stringify({definitionDigest:digest,workflowVersion:version3,definitionSource:source})}),{ok:!0,attached:!1,runId,workflowName:resolved.workflow.name,definitionDigest:digest,workflowVersion:version3,resolvedPath:resolved.path,layer:resolved.layer,workdir,status:"running"}}async function runDecideForInlineRun(input){let optionsFile=join15(resolve8(input.workdir),input.optionsFile),raw;try{raw=JSON.parse(await readFile6(optionsFile,"utf8"))}catch(error51){return{ok:!1,error:`decide: unreadable options file ${input.optionsFile}: ${String(error51)}`}}let parsed=DecideOptionsSchema.safeParse(raw);if(!parsed.success)return{ok:!1,error:`decide: invalid options — ${parsed.error.issues.map((i2)=>i2.message).join("; ")}`};let spurConfig=input.spurConfig,result=await new DecideActionRunner(createNodeFileSystem2(),{enabled:input.enabled,...spurConfig!==void 0?{decisionService:()=>getDecisionService(spurConfig,resolve8(input.workdir))}:{},...input.observabilityBus!==void 0?{observabilityBus:input.observabilityBus}:{},...input.decisionLog!==void 0?{decisionLog:input.decisionLog}:{}}).execute(raw,{runId:input.runId??"inline-decide",stateOrNodeId:input.node??"decide",workdir:resolve8(input.workdir),vars:input.correlationVars??{},env:{}});if(!result.ok||result.data===void 0)return{ok:!1,error:result.error??"decide: action failed without an error message"};let decision=result.data.decision;return{ok:!0,value:decision.value,degraded:decision.degraded,reason:decision.reason,source:decision.source,backend:decision.backend,confidence:decision.confidence,resultFile:join15(resolve8(input.workdir),parsed.data.resultFile),durationMs:decision.durationMs}}async function carryRunRecordDir(srcRoot,destRoot,rel,runId,skips,moves){let fs3=createNodeFileSystem2();await resolveDurableArtifactPath(fs3,resolve8(srcRoot,"../../.."),join15(srcRoot,rel,"probe"),"runs"),await resolveDurableArtifactPath(fs3,resolve8(destRoot,"../../.."),join15(destRoot,rel,"probe"),"runs");let entries;try{entries=await readdir2(join15(srcRoot,rel),{withFileTypes:!0})}catch(error51){if(error51.code==="ENOENT"){if(rel==="")skips.push({id:runId,reason:"source-missing"});return}throw error51}for(let entry of entries){if(rel===""&&![runId,`${runId}.md`,`${runId}.state.json`,`${runId}.log`].includes(entry.name))continue;let relNext=rel===""?entry.name:`${rel}/${entry.name}`;if(entry.isDirectory()){await carryRunRecordDir(srcRoot,destRoot,relNext,runId,skips,moves);let target=join15(destRoot,relNext);if(existsSync7(target))moves.push({source:join15(srcRoot,relNext),target:fs3.realPath?.(target)??target});continue}let source=await resolveDurableArtifactPath(fs3,resolve8(srcRoot,"../../.."),join15(srcRoot,relNext),"runs"),dest=await resolveDurableArtifactPath(fs3,resolve8(destRoot,"../../.."),join15(destRoot,relNext),"runs");if(!(await lstat2(source)).isFile())throw Error(`persist-out: retained item is not a regular file: ${source}`);let sourceBytes=await readFile6(source),existing=await readExistingRunFile(dest);if(existing!==void 0){if(!existing.equals(sourceBytes)){if(rel!=="")throw Error(`persist-out: retained data conflicts: ${relNext}`);skips.push({id:`${runId}/${relNext}`,reason:`record-conflict:${relNext}`});continue}}else await mkdir3(join15(dest,".."),{recursive:!0}),writeFileSync4(dest,sourceBytes,{flag:"wx"});if(moves.push({source,target:fs3.realPath?.(dest)??dest}),moves.push({source:join15(srcRoot,relNext),target:fs3.realPath?.(dest)??dest}),rel!=="")moves.push({source:join15(srcRoot,rel),target:fs3.realPath?.(join15(destRoot,rel))??join15(destRoot,rel)})}}function writeInlineRunOutcome(runId,outcome){let runDir=runStoragePaths(process.cwd()).recordsDir;if(!existsSync7(runDir))mkdirSync3(runDir,{recursive:!0});let statePath=join15(runDir,`${runId}.state.json`),markdownPath=join15(runDir,`${runId}.md`),prior={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))prior=parsed}catch{}let at2=new Date().toISOString(),state={schemaVersion:1,runId,...outcome.workflowName!==void 0?{workflowName:outcome.workflowName}:{},...outcome.status!==void 0?{status:outcome.status}:{},startedAt:typeof prior.startedAt==="string"?prior.startedAt:at2,updatedAt:at2,...outcome.attached!==void 0?{attached:outcome.attached}:{},...outcome.definitionDigest!==void 0?{definitionDigest:outcome.definitionDigest}:{},...outcome.workflowVersion!==void 0?{workflowVersion:outcome.workflowVersion}:{},...outcome.resolvedPath!==void 0?{resolvedPath:outcome.resolvedPath}:{},...outcome.layer!==void 0?{layer:outcome.layer}:{},...outcome.workdir!==void 0?{workdir:outcome.workdir}:{},ok:outcome.ok,...outcome.ok===!1&&outcome.error!==void 0?{error:outcome.error}:{}},temp=`${statePath}.tmp`;try{writeFileSync4(temp,`${JSON.stringify(state,null,4)}
1839
1856
  `),renameSync3(temp,statePath)}catch{try{unlinkSync2(temp)}catch{}}let headerFd;try{headerFd=openSync(markdownPath,"wx"),writeSync(headerFd,`# spur inline run ${runId} — ${outcome.workflowName??"unknown workflow"} — setup ${at2}
1840
- `)}catch{}finally{if(headerFd!==void 0)closeSync(headerFd)}}function projectInlineRunClose(runId,status,context4){try{let runDir=runStoragePaths(context4?.workdir??process.cwd()).recordsDir;if(!existsSync5(runDir))mkdirSync3(runDir,{recursive:!0});let statePath=join11(runDir,`${runId}.state.json`),prior={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))prior=parsed}catch{}let at2=new Date().toISOString(),state={schemaVersion:1,...prior,runId,status,ok:!0,startedAt:typeof prior.startedAt==="string"?prior.startedAt:context4?.startedAt??at2,updatedAt:at2};delete state.error;let temp=`${statePath}.tmp`;try{writeFileSync4(temp,`${JSON.stringify(state,null,4)}
1841
- `),renameSync3(temp,statePath)}catch(error51){try{unlinkSync2(temp)}catch{}throw error51}return}catch(error51){let detail=error51 instanceof Error?error51.message:String(error51);return`failed to project the committed ${status} status into the run-record state file for run ${runId}: ${detail} (the run row is committed; replay the same close to repair)`}}var CLOSE_STATUSES=new Set(["done","failed","paused"]);function isInlineRunCloseStatus(status){return CLOSE_STATUSES.has(status)}var ACTION_STATUSES=new Set(["done","failed"]);function isInlineRunActionStatus(status){return ACTION_STATUSES.has(status)}async function runInlineRunTraceMode(input){if(input.estimated&&input.mode!=="action")return 2;if(input.noSummary===!0&&input.mode!=="close")return 2;let projectRoot=input.projectRoot.trim()===""?{}:{projectRoot:input.projectRoot};if(input.mode==="node-enter"){if(input.node.trim()===""||input.status!==""||input.kind!=="")return 2;if(input.ok!==""||input.durationMs!=="")return 2;return runInlineRunNodeEnter({runId:input.runId,node:input.node,...projectRoot})}if(input.mode==="actions-file"){if(input.status!==""||input.node!==""||input.kind!=="")return 2;if(input.ok!==""||input.durationMs!==""||input.actionsFile.trim()==="")return 2;return runInlineRunTraceBatch({runId:input.runId,actionsFile:input.actionsFile,...projectRoot})}if(input.status.trim()==="")return 2;if(input.mode==="close"){if(!isInlineRunCloseStatus(input.status))return 2;if(input.reason.trim()===""?input.status==="failed":!isTerminalReason(input.reason))return 2;return runInlineRunTrace({runId:input.runId,close:!0,node:"",kind:"",status:input.status,ok:!0,durationMs:0,...input.reason.trim()===""?{}:{reason:input.reason},...input.noSummary===!0?{}:input.summarize===void 0?{}:{summarize:input.summarize},...projectRoot})}if(input.node.trim()===""||input.kind.trim()==="")return 2;if(!isInlineRunActionStatus(input.status))return 2;if(input.ok!=="true"&&input.ok!=="false")return 2;let durationMs;if(input.durationMs.trim()!==""){let parsed=Number(input.durationMs);if(!Number.isFinite(parsed)||parsed<0)return 2;durationMs=parsed}return runInlineRunTrace({runId:input.runId,close:!1,node:input.node,kind:input.kind,status:input.status,ok:input.ok==="true",...durationMs===void 0?{}:{durationMs},...input.estimated?{estimated:!0}:{},...projectRoot})}function inlineRunRecordLogPath(runDir,runId){let markdownPath=join11(runDir,`${runId}.md`),legacyLogPath=join11(runDir,`${runId}.log`);if(existsSync5(legacyLogPath)&&!existsSync5(markdownPath))return legacyLogPath;return markdownPath}function appendInlineRunLogLine(runId,detail,workdir){try{let runDir=runStoragePaths(workdir??process.cwd()).recordsDir;if(!existsSync5(runDir))mkdirSync3(runDir,{recursive:!0});let safeRunId=runId.replace(/[^A-Za-z0-9._-]/g,"_"),stamp=new Date().toISOString().replace(/\.\d{3}Z$/,"Z");appendFileSync4(inlineRunRecordLogPath(runDir,safeRunId),`[${stamp}] ${detail}
1842
- `)}catch{}}async function runInlineRunNodeEnter(input){let workdir=input.projectRoot!==void 0&&input.projectRoot.trim()!==""?resolve7(input.projectRoot):process.cwd(),projectDb;try{if(projectDb=await openInlineRunProjectDb(workdir),await new DbWorkflowPersistenceAdapter(projectDb.adapter).loadRun(input.runId)===void 0)throw new RunRowNotFoundError(input.runId);let runDir=runStoragePaths(workdir).recordsDir;if(!existsSync5(runDir))mkdirSync3(runDir,{recursive:!0});let statePath=join11(runDir,`${input.runId}.state.json`),prior={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))prior=parsed}catch{}let enteredAt=new Date().toISOString(),nodeEnters=prior.nodeEnters!==null&&typeof prior.nodeEnters==="object"&&!Array.isArray(prior.nodeEnters)?{...prior.nodeEnters}:{};nodeEnters[input.node]=enteredAt;let visitedNodes=Array.isArray(prior.visitedNodes)?[...prior.visitedNodes]:[];if(!visitedNodes.includes(input.node))visitedNodes.push(input.node);let state={schemaVersion:1,...prior,runId:input.runId,nodeEnters,visitedNodes,activeNode:input.node,enteredAt,updatedAt:enteredAt},temp=`${statePath}.tmp`;try{writeFileSync4(temp,`${JSON.stringify(state,null,4)}
1857
+ `)}catch{}finally{if(headerFd!==void 0)closeSync(headerFd)}}function projectInlineRunClose(runId,status,context4){try{let runDir=runStoragePaths(context4?.workdir??process.cwd()).recordsDir;if(!existsSync7(runDir))mkdirSync3(runDir,{recursive:!0});let statePath=join15(runDir,`${runId}.state.json`),prior={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))prior=parsed}catch{}let at2=new Date().toISOString(),state={schemaVersion:1,...prior,runId,status,ok:!0,startedAt:typeof prior.startedAt==="string"?prior.startedAt:context4?.startedAt??at2,updatedAt:at2};delete state.error;let temp=`${statePath}.tmp`;try{writeFileSync4(temp,`${JSON.stringify(state,null,4)}
1858
+ `),renameSync3(temp,statePath)}catch(error51){try{unlinkSync2(temp)}catch{}throw error51}return}catch(error51){let detail=error51 instanceof Error?error51.message:String(error51);return`failed to project the committed ${status} status into the run-record state file for run ${runId}: ${detail} (the run row is committed; replay the same close to repair)`}}var CLOSE_STATUSES=new Set(["done","failed","paused"]);function isInlineRunCloseStatus(status){return CLOSE_STATUSES.has(status)}var ACTION_STATUSES=new Set(["done","failed"]);function isInlineRunActionStatus(status){return ACTION_STATUSES.has(status)}async function runInlineRunTraceMode(input){if(input.estimated&&input.mode!=="action")return 2;if(input.noSummary===!0&&input.mode!=="close")return 2;let projectRoot=input.projectRoot.trim()===""?{}:{projectRoot:input.projectRoot};if(input.mode==="node-enter"){if(input.node.trim()===""||input.status!==""||input.kind!=="")return 2;if(input.ok!==""||input.durationMs!=="")return 2;return runInlineRunNodeEnter({runId:input.runId,node:input.node,...projectRoot})}if(input.mode==="actions-file"){if(input.status!==""||input.node!==""||input.kind!=="")return 2;if(input.ok!==""||input.durationMs!==""||input.actionsFile.trim()==="")return 2;return runInlineRunTraceBatch({runId:input.runId,actionsFile:input.actionsFile,...projectRoot})}if(input.status.trim()==="")return 2;if(input.mode==="close"){if(!isInlineRunCloseStatus(input.status))return 2;if(input.reason.trim()===""?input.status==="failed":!isTerminalReason(input.reason))return 2;return runInlineRunTrace({runId:input.runId,close:!0,node:"",kind:"",status:input.status,ok:!0,durationMs:0,...input.reason.trim()===""?{}:{reason:input.reason},...input.noSummary===!0?{}:input.summarize===void 0?{}:{summarize:input.summarize},...projectRoot})}if(input.node.trim()===""||input.kind.trim()==="")return 2;if(!isInlineRunActionStatus(input.status))return 2;if(input.ok!=="true"&&input.ok!=="false")return 2;let durationMs;if(input.durationMs.trim()!==""){let parsed=Number(input.durationMs);if(!Number.isFinite(parsed)||parsed<0)return 2;durationMs=parsed}return runInlineRunTrace({runId:input.runId,close:!1,node:input.node,kind:input.kind,status:input.status,ok:input.ok==="true",...durationMs===void 0?{}:{durationMs},...input.estimated?{estimated:!0}:{},...projectRoot})}function inlineRunRecordLogPath(runDir,runId){let markdownPath=join15(runDir,`${runId}.md`),legacyLogPath=join15(runDir,`${runId}.log`);if(existsSync7(legacyLogPath)&&!existsSync7(markdownPath))return legacyLogPath;return markdownPath}function appendInlineRunLogLine(runId,detail,workdir){try{let runDir=runStoragePaths(workdir??process.cwd()).recordsDir;if(!existsSync7(runDir))mkdirSync3(runDir,{recursive:!0});let safeRunId=runId.replace(/[^A-Za-z0-9._-]/g,"_"),stamp=new Date().toISOString().replace(/\.\d{3}Z$/,"Z");appendFileSync4(inlineRunRecordLogPath(runDir,safeRunId),`[${stamp}] ${detail}
1859
+ `)}catch{}}async function runInlineRunNodeEnter(input){let workdir=input.projectRoot!==void 0&&input.projectRoot.trim()!==""?resolve8(input.projectRoot):process.cwd(),projectDb;try{if(projectDb=await openInlineRunProjectDb(workdir),await new DbWorkflowPersistenceAdapter(projectDb.adapter).loadRun(input.runId)===void 0)throw new RunRowNotFoundError(input.runId);let runDir=runStoragePaths(workdir).recordsDir;if(!existsSync7(runDir))mkdirSync3(runDir,{recursive:!0});let statePath=join15(runDir,`${input.runId}.state.json`),prior={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))prior=parsed}catch{}let enteredAt=new Date().toISOString(),nodeEnters=prior.nodeEnters!==null&&typeof prior.nodeEnters==="object"&&!Array.isArray(prior.nodeEnters)?{...prior.nodeEnters}:{};nodeEnters[input.node]=enteredAt;let visitedNodes=Array.isArray(prior.visitedNodes)?[...prior.visitedNodes]:[];if(!visitedNodes.includes(input.node))visitedNodes.push(input.node);let state={schemaVersion:1,...prior,runId:input.runId,nodeEnters,visitedNodes,activeNode:input.node,enteredAt,updatedAt:enteredAt},temp=`${statePath}.tmp`;try{writeFileSync4(temp,`${JSON.stringify(state,null,4)}
1843
1860
  `),renameSync3(temp,statePath)}catch(error51){try{unlinkSync2(temp)}catch{}throw error51}return appendInlineRunLogLine(input.runId,`node-entered run=${input.runId} node=${input.node} at=${enteredAt}`,workdir),process.stdout.write(`${JSON.stringify({ok:!0,runId:input.runId,node:input.node,enteredAt})}
1844
1861
  `),0}catch(error51){if(error51.name==="RunRowNotFoundError"){let message2=error51 instanceof Error?error51.message:String(error51);return appendInlineRunLogLine(input.runId,`node-enter-failed run=${input.runId}: ${message2}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:message2,code:"RUN_NOT_FOUND"})}
1845
1862
  `),1}let message=error51 instanceof Error?error51.message:String(error51);return appendInlineRunLogLine(input.runId,`node-enter-failed run=${input.runId}: ${message}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:message})}
1846
- `),1}finally{projectDb?.close()}}function detectMarkerlessWorktree(workdir,runId){try{let gitPath=join11(workdir,".git");if(!existsSync5(gitPath)||!lstatSync2(gitPath).isFile())return{required:!1};let gitContent=readFileSync5(gitPath,"utf8").trim(),gitDirMatch=/^gitdir:\s*(.+)$/m.exec(gitContent);if(!gitDirMatch?.[1])return{required:!1};let gitDir=resolve7(workdir,gitDirMatch[1]),commonDirFile=join11(gitDir,"commondir"),commonDir=existsSync5(commonDirFile)?resolve7(gitDir,readFileSync5(commonDirFile,"utf8").trim()):resolve7(gitDir,"../.."),owningTree=dirname9(commonDir),markerDirs=[join11(workdir,".spur","run"),join11(owningTree,".spur","run")];for(let dir of markerDirs)if(existsSync5(dir))try{for(let name of readdirSync4(dir))if(name.startsWith("worktree-")&&name.endsWith(".json")){if(readFileSync5(join11(dir,name),"utf8").includes(runId))return{required:!1}}}catch{}let branch="HEAD",headFile=join11(gitDir,"HEAD");if(existsSync5(headFile)){let headContent=readFileSync5(headFile,"utf8").trim(),refMatch=/^ref:\s*refs\/heads\/(.+)$/.exec(headContent);if(refMatch?.[1])branch=refMatch[1]}return{required:!0,branch,path:resolve7(workdir),base:"main",owningTree}}catch{return{required:!1}}}async function runInlineRunTrace(input){let operation=input.close?"run.close":"action.finish";if(input.close){let invalidReason=(error51)=>{return process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51,code:"INVALID_CLOSE_REASON"})}
1847
- `),1};if(input.reason!==void 0&&!isTerminalReason(input.reason))return invalidReason(`close reason "${input.reason}" is not a terminal-reason enum value; pass one of: ${TERMINAL_REASONS.join(", ")}`);if(input.status==="failed"&&input.reason===void 0)return invalidReason(`close status failed requires an explicit reason from the terminal-reason enum (0937 R2); pass one of: ${TERMINAL_REASONS.join(", ")}`)}let workdir=input.projectRoot!==void 0&&input.projectRoot.trim()!==""?resolve7(input.projectRoot):process.cwd(),closeReason=input.close?input.reason??(input.status==="paused"?"paused-operator":"done"):void 0,fail=(error51)=>{return appendInlineRunLogLine(input.runId,`trace-emission-failed operation=${operation} run=${input.runId}${input.node===""?"":` node=${input.node}`}${input.kind===""?"":` kind=${input.kind}`}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51})}
1848
- `),input.close?1:0},projectDb;try{projectDb=await openInlineRunProjectDb(workdir);let existingRun=await new DbWorkflowPersistenceAdapter(projectDb.adapter).loadRun(input.runId);if(input.requireRunRow!==!1&&existingRun===void 0)throw new RunRowNotFoundError(input.runId);let runDir=runStoragePaths(workdir).recordsDir,statePath=join11(runDir,`${input.runId}.state.json`),stateJson={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))stateJson=parsed}catch{}let durationMs,provenance,computedStart;if(!input.close){if(input.durationMs!==void 0)durationMs=input.durationMs,provenance="host-reported",computedStart=Date.now()-durationMs;else{let enteredAtStr=(stateJson.nodeEnters!==null&&typeof stateJson.nodeEnters==="object"&&!Array.isArray(stateJson.nodeEnters)?stateJson.nodeEnters:{})[input.node];if(typeof enteredAtStr!=="string"){let error51=`no enter timestamp recorded for node "${input.node}"; call --node-enter first or pass --duration-ms`;return appendInlineRunLogLine(input.runId,`trace-emission-failed run=${input.runId} node=${input.node}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51,code:"ACTION_DURATION_UNAVAILABLE"})}
1863
+ `),1}finally{projectDb?.close()}}function detectMarkerlessWorktree(workdir,runId){try{let gitPath=join15(workdir,".git");if(!existsSync7(gitPath)||!lstatSync2(gitPath).isFile())return{required:!1};let gitContent=readFileSync5(gitPath,"utf8").trim(),gitDirMatch=/^gitdir:\s*(.+)$/m.exec(gitContent);if(!gitDirMatch?.[1])return{required:!1};let gitDir=resolve8(workdir,gitDirMatch[1]),commonDirFile=join15(gitDir,"commondir"),commonDir=existsSync7(commonDirFile)?resolve8(gitDir,readFileSync5(commonDirFile,"utf8").trim()):resolve8(gitDir,"../.."),owningTree=dirname11(commonDir),markerDirs=[join15(workdir,".spur","run"),join15(owningTree,".spur","run")];for(let dir of markerDirs)if(existsSync7(dir))try{for(let name of readdirSync4(dir))if(name.startsWith("worktree-")&&name.endsWith(".json")){if(readFileSync5(join15(dir,name),"utf8").includes(runId))return{required:!1}}}catch{}let branch="HEAD",headFile=join15(gitDir,"HEAD");if(existsSync7(headFile)){let headContent=readFileSync5(headFile,"utf8").trim(),refMatch=/^ref:\s*refs\/heads\/(.+)$/.exec(headContent);if(refMatch?.[1])branch=refMatch[1]}return{required:!0,branch,path:resolve8(workdir),base:"main",owningTree}}catch{return{required:!1}}}async function runInlineRunTrace(input){let operation=input.close?"run.close":"action.finish";if(input.close){let invalidReason=(error51)=>{return process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51,code:"INVALID_CLOSE_REASON"})}
1864
+ `),1};if(input.reason!==void 0&&!isTerminalReason(input.reason))return invalidReason(`close reason "${input.reason}" is not a terminal-reason enum value; pass one of: ${TERMINAL_REASONS.join(", ")}`);if(input.status==="failed"&&input.reason===void 0)return invalidReason(`close status failed requires an explicit reason from the terminal-reason enum (0937 R2); pass one of: ${TERMINAL_REASONS.join(", ")}`)}let workdir=input.projectRoot!==void 0&&input.projectRoot.trim()!==""?resolve8(input.projectRoot):process.cwd(),closeReason=input.close?input.reason??(input.status==="paused"?"paused-operator":"done"):void 0,fail=(error51)=>{return appendInlineRunLogLine(input.runId,`trace-emission-failed operation=${operation} run=${input.runId}${input.node===""?"":` node=${input.node}`}${input.kind===""?"":` kind=${input.kind}`}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51})}
1865
+ `),input.close?1:0},projectDb;try{projectDb=await openInlineRunProjectDb(workdir);let existingRun=await new DbWorkflowPersistenceAdapter(projectDb.adapter).loadRun(input.runId);if(input.requireRunRow!==!1&&existingRun===void 0)throw new RunRowNotFoundError(input.runId);let runDir=runStoragePaths(workdir).recordsDir,statePath=join15(runDir,`${input.runId}.state.json`),stateJson={};try{let parsed=JSON.parse(readFileSync5(statePath,"utf8"));if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))stateJson=parsed}catch{}let durationMs,provenance,computedStart;if(!input.close){if(input.durationMs!==void 0)durationMs=input.durationMs,provenance="host-reported",computedStart=Date.now()-durationMs;else{let enteredAtStr=(stateJson.nodeEnters!==null&&typeof stateJson.nodeEnters==="object"&&!Array.isArray(stateJson.nodeEnters)?stateJson.nodeEnters:{})[input.node];if(typeof enteredAtStr!=="string"){let error51=`no enter timestamp recorded for node "${input.node}"; call --node-enter first or pass --duration-ms`;return appendInlineRunLogLine(input.runId,`trace-emission-failed run=${input.runId} node=${input.node}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51,code:"ACTION_DURATION_UNAVAILABLE"})}
1849
1866
  `),1}let enteredTime=new Date(enteredAtStr).getTime(),now=Date.now();durationMs=Math.max(0,now-enteredTime),provenance="measured",computedStart=enteredTime}let runStartedAt=existingRun===void 0?0:new Date(existingRun.started_at).getTime();if(computedStart<runStartedAt){let error51=`action start time (${new Date(computedStart).toISOString()}) precedes run started_at (${existingRun?.started_at??""})`;return appendInlineRunLogLine(input.runId,`trace-emission-failed run=${input.runId}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51,code:"ACTION_START_PRECEDES_RUN_START"})}
1850
1867
  `),1}}else durationMs=0,provenance="host-reported",computedStart=Date.now();let writer=createWorkflowActionTraceWriter(projectDb.adapter,(failure)=>{let detail=failure;appendInlineRunLogLine(input.runId,`trace-emission-failed operation=${detail.operation??operation} run=${input.runId}: ${detail.error??"unknown error"}`,workdir)}),result=input.close?await writer.closeRun(input.runId,input.status,void 0,closeReason):await writer.recordAction({runId:input.runId,node:input.node,kind:input.kind,status:input.status,ok:input.ok,durationMs,result:{provenance,estimated:provenance==="measured"?!1:input.estimated===!0}});if(result.ok!==!0&&result.failure!==void 0){let failure=result.failure;return fail(failure.error??"unknown trace emission failure")}let stateError=input.close?projectInlineRunClose(input.runId,input.status,{startedAt:typeof result.startedAt==="string"?result.startedAt:void 0,workdir}):void 0,summaryFile;if(input.close&&input.summarize!==void 0)try{let completedAt=new Date().toISOString(),progress=await projectWorkflowProgress(input.runId,{db:projectDb.adapter,projectRoot:process.cwd()});summaryFile=await input.summarize({runId:input.runId,startedAt:typeof result.startedAt==="string"?result.startedAt:void 0,completedAt,progress})}catch(error51){appendInlineRunLogLine(input.runId,`summary-failed run=${input.runId}: ${error51 instanceof Error?error51.message:String(error51)}`,workdir)}let summaryKey=summaryFile===void 0?{}:{summaryFile};if(input.close&&input.status==="done"&&result.actionRows===0){let error51=`run ${input.runId} closed done with zero action_runs rows; emit --action/--actions-file during the run (no backfill); see inline-pipeline-driver.md#structured-trace-emission-adr-117-task-0868${stateError!==void 0?`; run-record state projection also failed: ${stateError}`:""}`;return appendInlineRunLogLine(input.runId,`trace-close-failed run=${input.runId}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51,code:"NO_ACTION_ROWS",actionRows:0,...summaryKey})}
1851
1868
  `),1}if(input.close&&stateError!==void 0)return appendInlineRunLogLine(input.runId,`trace-close-failed run=${input.runId}: ${stateError}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:stateError,code:"RUN_RECORD_STATE_FAILED",...summaryKey})}
1852
- `),1;let missingNodes;if(input.close){let actionRows=await new ActionRunDao(projectDb.adapter).actionRowsByRunId(input.runId),nodesWithRows=new Set(actionRows.map((r)=>r.node));if(missingNodes=(Array.isArray(stateJson.visitedNodes)?stateJson.visitedNodes:[]).filter((node)=>!nodesWithRows.has(node)),missingNodes.length>0)appendInlineRunLogLine(input.runId,`trace-close-defect run=${input.runId}: missing action rows for visited nodes: ${missingNodes.join(", ")}`,workdir)}if(input.close&&input.status==="done"){let markerless=detectMarkerlessWorktree(workdir,input.runId);if(markerless.required&&markerless.owningTree){let recordsDir=runStoragePaths(markerless.owningTree).recordsDir,recordPath=join11(recordsDir,`${input.runId}.md`),line=`landing: required branch=${markerless.branch} path=${markerless.path} base=${markerless.base}
1853
- `;try{if(mkdirSync3(recordsDir,{recursive:!0}),existsSync5(recordPath)){let content=readFileSync5(recordPath,"utf8");if(!content.includes("landing: required")&&!content.includes("landing: merged")&&!content.includes("landing: retained"))appendFileSync4(recordPath,line)}else writeFileSync4(recordPath,`# run ${input.runId}
1869
+ `),1;let missingNodes;if(input.close){let actionRows=await new ActionRunDao(projectDb.adapter).actionRowsByRunId(input.runId),nodesWithRows=new Set(actionRows.map((r)=>r.node));if(missingNodes=(Array.isArray(stateJson.visitedNodes)?stateJson.visitedNodes:[]).filter((node)=>!nodesWithRows.has(node)),missingNodes.length>0)appendInlineRunLogLine(input.runId,`trace-close-defect run=${input.runId}: missing action rows for visited nodes: ${missingNodes.join(", ")}`,workdir)}if(input.close&&input.status==="done"){let markerless=detectMarkerlessWorktree(workdir,input.runId);if(markerless.required&&markerless.owningTree){let recordsDir=runStoragePaths(markerless.owningTree).recordsDir,recordPath=join15(recordsDir,`${input.runId}.md`),line=`landing: required branch=${markerless.branch} path=${markerless.path} base=${markerless.base}
1870
+ `;try{if(mkdirSync3(recordsDir,{recursive:!0}),existsSync7(recordPath)){let content=readFileSync5(recordPath,"utf8");if(!content.includes("landing: required")&&!content.includes("landing: merged")&&!content.includes("landing: retained"))appendFileSync4(recordPath,line)}else writeFileSync4(recordPath,`# run ${input.runId}
1854
1871
 
1855
1872
  ${line}`)}catch(error51){appendInlineRunLogLine(input.runId,`landing-record-failed run=${input.runId} path=${recordPath}: ${error51 instanceof Error?error51.message:String(error51)}`,workdir)}}}let{startedAt:_threaded,...stdoutResult}=result;return process.stdout.write(`${JSON.stringify({...stdoutResult,runId:input.runId,...missingNodes!==void 0?{missingNodes}:{},...summaryKey})}
1856
1873
  `),0}catch(error51){if(error51.name==="RunRowNotFoundError"){let message=error51 instanceof Error?error51.message:String(error51),tag=input.close?"trace-close-failed":"trace-emission-failed";return appendInlineRunLogLine(input.runId,`${tag} run=${input.runId}: ${message}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:message,code:"RUN_NOT_FOUND"})}
1857
1874
  `),1}return fail(error51 instanceof Error?error51.message:String(error51))}finally{projectDb?.close()}}async function runInlineRunTraceBatch(input){let batchFailed=(error51)=>{return process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51})}
1858
- `),1},rows;try{rows=JSON.parse(readFileSync5(input.actionsFile,"utf8"))}catch(error51){return batchFailed(`cannot read actions file ${input.actionsFile}: ${error51 instanceof Error?error51.message:String(error51)}`)}if(!Array.isArray(rows))return batchFailed("actions file must be a JSON array of {node,kind,status,ok,durationMs,estimated?}");let entries=[],rowError=(index2,error51)=>`actions[${index2}]: ${error51}`;for(let[index2,row]of rows.entries()){if(row===null||typeof row!=="object"||Array.isArray(row))return batchFailed(rowError(index2,"entry must be a JSON object"));let record3=row,{node,kind,status,ok,durationMs,estimated}=record3;if(typeof node!=="string"||node.trim()==="")return batchFailed(rowError(index2,"node must be a non-empty string"));if(typeof kind!=="string"||kind.trim()==="")return batchFailed(rowError(index2,"kind must be a non-empty string"));if(typeof status!=="string"||!isInlineRunActionStatus(status))return batchFailed(rowError(index2,'status must be "done" or "failed"'));if(typeof ok!=="boolean")return batchFailed(rowError(index2,"ok must be a boolean"));if(typeof durationMs!=="number"||!Number.isFinite(durationMs)||durationMs<0)return batchFailed(rowError(index2,"durationMs must be a finite non-negative number"));if(estimated!==void 0&&typeof estimated!=="boolean")return batchFailed(rowError(index2,"estimated must be a boolean"));entries.push({node,kind,status,ok,durationMs,...estimated===!0?{estimated:!0}:{}})}let projectDb,recorded=0,workdir=input.projectRoot!==void 0&&input.projectRoot.trim()!==""?resolve7(input.projectRoot):process.cwd(),reportEmissionFailure=(node,kind,error51)=>{appendInlineRunLogLine(input.runId,`trace-emission-failed operation=action.finish run=${input.runId} node=${node} kind=${kind}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,recorded,error:error51})}
1875
+ `),1},rows;try{rows=JSON.parse(readFileSync5(input.actionsFile,"utf8"))}catch(error51){return batchFailed(`cannot read actions file ${input.actionsFile}: ${error51 instanceof Error?error51.message:String(error51)}`)}if(!Array.isArray(rows))return batchFailed("actions file must be a JSON array of {node,kind,status,ok,durationMs,estimated?}");let entries=[],rowError=(index2,error51)=>`actions[${index2}]: ${error51}`;for(let[index2,row]of rows.entries()){if(row===null||typeof row!=="object"||Array.isArray(row))return batchFailed(rowError(index2,"entry must be a JSON object"));let record3=row,{node,kind,status,ok,durationMs,estimated}=record3;if(typeof node!=="string"||node.trim()==="")return batchFailed(rowError(index2,"node must be a non-empty string"));if(typeof kind!=="string"||kind.trim()==="")return batchFailed(rowError(index2,"kind must be a non-empty string"));if(typeof status!=="string"||!isInlineRunActionStatus(status))return batchFailed(rowError(index2,'status must be "done" or "failed"'));if(typeof ok!=="boolean")return batchFailed(rowError(index2,"ok must be a boolean"));if(typeof durationMs!=="number"||!Number.isFinite(durationMs)||durationMs<0)return batchFailed(rowError(index2,"durationMs must be a finite non-negative number"));if(estimated!==void 0&&typeof estimated!=="boolean")return batchFailed(rowError(index2,"estimated must be a boolean"));entries.push({node,kind,status,ok,durationMs,...estimated===!0?{estimated:!0}:{}})}let projectDb,recorded=0,workdir=input.projectRoot!==void 0&&input.projectRoot.trim()!==""?resolve8(input.projectRoot):process.cwd(),reportEmissionFailure=(node,kind,error51)=>{appendInlineRunLogLine(input.runId,`trace-emission-failed operation=action.finish run=${input.runId} node=${node} kind=${kind}: ${error51}`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,recorded,error:error51})}
1859
1876
  `)};try{if(projectDb=await openInlineRunProjectDb(workdir),await new DbWorkflowPersistenceAdapter(projectDb.adapter).loadRun(input.runId)===void 0)return appendInlineRunLogLine(input.runId,`trace-emission-failed run=${input.runId}: run row not found`,workdir),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:`run row not found: ${input.runId}`,code:"RUN_NOT_FOUND"})}
1860
1877
  `),1;let writer=createWorkflowActionTraceWriter(projectDb.adapter,(failure)=>{let detail=failure;appendInlineRunLogLine(input.runId,`trace-emission-failed operation=${detail.operation??"action.finish"} run=${input.runId}: ${detail.error??"unknown error"}`)});for(let entry of entries){let result=await writer.recordAction({runId:input.runId,node:entry.node,kind:entry.kind,status:entry.status,ok:entry.ok,durationMs:entry.durationMs,result:{provenance:"host-reported",estimated:entry.estimated===!0}});if(result.ok===!0){recorded+=1;continue}let failure=result.failure;return reportEmissionFailure(entry.node,entry.kind,failure?.error??"unknown trace emission failure"),0}return process.stdout.write(`${JSON.stringify({ok:!0,runId:input.runId,recorded})}
1861
1878
  `),0}catch(error51){let message=error51 instanceof Error?error51.message:String(error51);return appendInlineRunLogLine(input.runId,`trace-emission-failed run=${input.runId}: ${message}`),process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,recorded,error:message})}
@@ -1863,11 +1880,11 @@ ${line}`)}catch(error51){appendInlineRunLogLine(input.runId,`landing-record-fail
1863
1880
  `),0}async function runInlineRunDecide(input){let decideFailed=(error51)=>{return process.stdout.write(`${JSON.stringify({ok:!1,runId:input.runId,error:error51})}
1864
1881
  `),1},projectDb,tap;try{projectDb=await openInlineRunProjectDb(process.cwd());let bus=new EventBus,decisionLog=decisionLogSink(projectDb.adapter,input.spurConfig??null,getEnvVars());tap=registerSystemEventTap(bus,new SystemEventDao(projectDb.adapter),{warn:(msg,data)=>{appendInlineRunLogLine(input.runId,`decision-event-persist-failed run=${input.runId}: ${msg}${data===void 0?"":` ${JSON.stringify(data)}`}`)},debug:()=>{}});let outcome;try{outcome=await runDecideForInlineRun({workdir:process.cwd(),optionsFile:input.optionsFile,enabled:input.enabled,...input.spurConfig!==void 0?{spurConfig:input.spurConfig}:{},runId:input.runId,node:input.node,observabilityBus:bus,...decisionLog!==void 0?{decisionLog}:{},correlationVars:{...await loadRunCorrelation(new DbWorkflowPersistenceAdapter(projectDb.adapter),input.runId)}})}catch(error51){return decideFailed(error51 instanceof Error?error51.message:String(error51))}if(!outcome.ok)return decideFailed(outcome.error??"decide failed without an error message");return await tap.flush(),process.stdout.write(`${JSON.stringify({runId:input.runId,node:input.node,...outcome,ok:!0})}
1865
1882
  `),appendInlineRunLogLine(input.runId,`decide node=${input.node} value=${outcome.value??""} source=${outcome.source??"default"} reason=${outcome.reason??""}`),runInlineRunTrace({runId:input.runId,close:!1,node:input.node,kind:"decide",status:"done",ok:!0,durationMs:outcome.durationMs??0,requireRunRow:!1})}finally{tap?.unsubscribe(),projectDb?.close()}}async function runInlineRunPersistOut(input){try{let result=await persistWorktreeRuns({fromWorkdir:input.from,toWorkdir:process.cwd(),...input.taskFiles.length>0?{taskFiles:input.taskFiles}:{}}),keyConflicts=result.skipped.filter((skip)=>skip.reason==="external-key-conflict");if(keyConflicts.length>0||result.skipped.some((skip)=>skip.reason.startsWith("record-conflict:"))){let landed=`already persisted before this refusal: ${result.persisted} run row(s)${result.skipped.length>0?`, ${result.skipped.length} skipped`:""}; the durable evidence plane and every cited/owned .spur/run file were copied by the same pass`,error51=keyConflicts.length>0?`persist-out: external-key conflict for source runs ${keyConflicts.map((skip)=>skip.id).join(", ")}; ${landed}. retain the source worktree and reconcile provenance before teardown`:`persist-out: unresolved retained record conflicts; ${landed}. retain the worktree and reconcile copies before teardown`;return process.stdout.write(`${JSON.stringify({...result,ok:!1,error:error51})}
1866
- `),1}let resultPayload={ok:!0,persisted:result.persisted,skipped:result.skipped,...result.evidenceSkipped?{evidenceSkipped:result.evidenceSkipped}:{}};try{let toRunDir=join11(process.cwd(),".spur","run");mkdirSync3(toRunDir,{recursive:!0}),writeFileSync4(join11(toRunDir,"persist-out.json"),JSON.stringify(resultPayload,null,2))}catch{}if(input.taskFiles.length>0)try{let targetDb=await openInlineRunProjectDb(process.cwd());try{for(let taskFile of input.taskFiles){let wbs=/^(\d{4})_/.exec(basename5(taskFile))?.[1];if(!wbs)continue;try{let raw=readFileSync5(resolve7(process.cwd(),taskFile),"utf8"),status=MarkdownDocument.parse(raw,"task").frontmatterData?.status;if(typeof status==="string"&&(status==="done"||status==="cancelled"))await reconcileExistingLifecycleRow(async()=>targetDb.adapter,TASK_LIFECYCLE_PROFILE,wbs,status)}catch(error51){process.stderr.write(`persist-out: reconcile skipped for ${wbs}: ${error51 instanceof Error?error51.message:String(error51)}
1883
+ `),1}let resultPayload={ok:!0,persisted:result.persisted,skipped:result.skipped,...result.evidenceSkipped?{evidenceSkipped:result.evidenceSkipped}:{}};try{let toRunDir=join15(process.cwd(),".spur","run");mkdirSync3(toRunDir,{recursive:!0}),writeFileSync4(join15(toRunDir,"persist-out.json"),JSON.stringify(resultPayload,null,2))}catch{}if(input.taskFiles.length>0)try{let targetDb=await openInlineRunProjectDb(process.cwd());try{for(let taskFile of input.taskFiles){let wbs=/^(\d{4})_/.exec(basename5(taskFile))?.[1];if(!wbs)continue;try{let raw=readFileSync5(resolve8(process.cwd(),taskFile),"utf8"),status=MarkdownDocument.parse(raw,"task").frontmatterData?.status;if(typeof status==="string"&&(status==="done"||status==="cancelled"))await reconcileExistingLifecycleRow(async()=>targetDb.adapter,TASK_LIFECYCLE_PROFILE,wbs,status)}catch(error51){process.stderr.write(`persist-out: reconcile skipped for ${wbs}: ${error51 instanceof Error?error51.message:String(error51)}
1867
1884
  `)}}}finally{targetDb.close()}}catch(error51){process.stderr.write(`persist-out: lifecycle reconcile unavailable: ${error51 instanceof Error?error51.message:String(error51)}
1868
1885
  `)}return process.stdout.write(`${JSON.stringify(resultPayload)}
1869
1886
  `),0}catch(error51){let message=error51 instanceof Error?error51.message:String(error51);return process.stdout.write(`${JSON.stringify({ok:!1,error:message})}
1870
- `),1}}async function runInlineRunSetup(input){let workdir=process.cwd(),projectDb=await openInlineRunProjectDb(workdir),exitCode=0;try{let result=await createOrAttachInlineRun({workdir,getDb:async()=>projectDb.adapter,file:input.file,runId:input.runId,inventory:input.inventory,...input.embeddedSchemas!==void 0?{embeddedSchemas:input.embeddedSchemas}:{}});if(writeInlineRunOutcome(input.runId,result),!result.ok)console.error(`inline-run-setup: FAIL for run ${input.runId}`),console.error(` ${result.error}`),exitCode=1;else console.error(`inline-run-setup: ${result.attached?"attached":"created"} run ${input.runId} (${result.workflowName}, layer ${result.layer}, digest ${result.definitionDigest}, status ${result.status})`)}finally{projectDb.close()}return exitCode}var RESET_AT_PATTERN=/(\d{4}-\d{2}-\d{2})[ T](\d{2}:\d{2}(?::\d{2})?)/g;function extractResetAt(record3){RESET_AT_PATTERN.lastIndex=0;let resolved,match=RESET_AT_PATTERN.exec(record3);while(match!==null){let clock=match[2]??"",iso=`${match[1]??""}T${clock.length===5?`${clock}:00`:clock}Z`,parsed=Date.parse(iso);if(!Number.isNaN(parsed))resolved=new Date(parsed).toISOString();match=RESET_AT_PATTERN.exec(record3)}return resolved}function classifyDispatchFailure(text3){let classification=classifyQuotaErrorRecord(text3);if(!classification.quota)return{class:"capability"};let resetAt=extractResetAt(text3);return{class:"capacity",reason:classification.reason,...resetAt===void 0?{}:{resetAt}}}function inlineRunAttributionPath(projectRoot,runId){return join11(runStoragePaths(projectRoot).scratchDir,`${runId}-attribution.jsonl`)}function recordInlineRunAttribution(projectRoot,runId,attribution2){let path8=inlineRunAttributionPath(projectRoot,runId);mkdirSync3(runStoragePaths(projectRoot).scratchDir,{recursive:!0}),appendFileSync4(path8,`${JSON.stringify(attribution2)}
1871
- `)}function inlineRunDispatchFallbackPath(projectRoot,runId){return join11(runStoragePaths(projectRoot).scratchDir,`${runId}-dispatch-fallback.json`)}async function runInlineRunDispatchFailure(input){let workdir=input.workdir??process.cwd(),record3=readDispatchFailureText(input),classification=classifyDispatchFailure(record3.text),observedAt=new Date().toISOString(),executor=input.executor??null,agent=input.agent??null,outcome={stage:input.stage,class:classification.class,...classification.reason===void 0?{}:{reason:classification.reason},...classification.resetAt===void 0?{}:{resetAt:classification.resetAt},decision:input.decision,executor,attribution:executor===null?"no-attribution":"recorded",observedAt},durable=classification.class==="capacity"&&executor!==null&&classification.reason!==void 0?await recordCapacityExhaustion({workdir,runId:input.runId,observedAt,executor,agent,...input.model===void 0?{}:{model:input.model},reason:classification.reason,spurConfig:input.spurConfig??null}):void 0,artifact={...outcome,...durable?.observationId===void 0?{}:{observationId:durable.observationId},...durable?.recorded===void 0?{}:{recorded:durable.recorded},...durable?.applied===void 0?{}:{applied:durable.applied}};return writeJsonArtifact(inlineRunDispatchFallbackPath(workdir,input.runId),artifact),process.stdout.write(`${JSON.stringify({ok:!0,runId:input.runId,...artifact})}
1872
- `),0}function readDispatchFailureText(input){if(input.text===void 0===(input.textFile===void 0))throw Error("exactly one of text/textFile is required");if(input.text!==void 0)return{text:input.text};let raw=readFileSync5(input.textFile,"utf8");return{text:raw.length>MAX_QUOTA_EVIDENCE_BYTES?raw.slice(-MAX_QUOTA_EVIDENCE_BYTES):raw}}async function recordCapacityExhaustion(args){let observation=buildQuotaObservation({source:"buffered-error",reason:args.reason,observedAt:new Date(args.observedAt),attribution:{projectId:args.workdir,executor:args.executor,...args.agent===null?{}:{agent:args.agent},...args.model===void 0?{}:{model:args.model}}}),projectDb=await openInlineRunProjectDb(args.workdir);try{let context4={getDb:async()=>projectDb.adapter,projectRoot:args.workdir,loadAgentConfig:async()=>args.spurConfig,warn:(message)=>appendInlineRunLogLine(args.runId,`dispatch-failure: ${message}`)},outcome=await recordAgentQuotaEvent(context4,observation,!0),recorded=typeof outcome==="object"&&"rejected"in outcome?`rejected: ${outcome.rejected}`:outcome,drain=await drainPendingAgentQuotaUpdates(context4);return{observationId:observation.observationId,recorded,...drain.applied>0?{applied:drain.applied}:{}}}catch(error51){return{observationId:observation.observationId,recorded:`failed: ${errorText2(error51)}`}}finally{projectDb.close()}}function writeJsonArtifact(path8,value){mkdirSync3(dirname9(path8),{recursive:!0});let temp=`${path8}.tmp`;writeFileSync4(temp,`${JSON.stringify(value,null,2)}
1887
+ `),1}}async function runInlineRunSetup(input){let workdir=process.cwd(),projectDb=await openInlineRunProjectDb(workdir),exitCode=0;try{let result=await createOrAttachInlineRun({workdir,getDb:async()=>projectDb.adapter,file:input.file,runId:input.runId,inventory:input.inventory,...input.embeddedSchemas!==void 0?{embeddedSchemas:input.embeddedSchemas}:{}});if(writeInlineRunOutcome(input.runId,result),!result.ok)console.error(`inline-run-setup: FAIL for run ${input.runId}`),console.error(` ${result.error}`),exitCode=1;else console.error(`inline-run-setup: ${result.attached?"attached":"created"} run ${input.runId} (${result.workflowName}, layer ${result.layer}, digest ${result.definitionDigest}, status ${result.status})`)}finally{projectDb.close()}return exitCode}var RESET_AT_PATTERN=/(\d{4}-\d{2}-\d{2})[ T](\d{2}:\d{2}(?::\d{2})?)/g;function extractResetAt(record3){RESET_AT_PATTERN.lastIndex=0;let resolved,match=RESET_AT_PATTERN.exec(record3);while(match!==null){let clock=match[2]??"",iso=`${match[1]??""}T${clock.length===5?`${clock}:00`:clock}Z`,parsed=Date.parse(iso);if(!Number.isNaN(parsed))resolved=new Date(parsed).toISOString();match=RESET_AT_PATTERN.exec(record3)}return resolved}function classifyDispatchFailure(text3){let classification=classifyQuotaErrorRecord(text3);if(!classification.quota)return{class:"capability"};let resetAt=extractResetAt(text3);return{class:"capacity",reason:classification.reason,...resetAt===void 0?{}:{resetAt}}}function inlineRunAttributionPath(projectRoot,runId){return join15(runStoragePaths(projectRoot).scratchDir,`${runId}-attribution.jsonl`)}function recordInlineRunAttribution(projectRoot,runId,attribution2){let path8=inlineRunAttributionPath(projectRoot,runId);mkdirSync3(runStoragePaths(projectRoot).scratchDir,{recursive:!0}),appendFileSync4(path8,`${JSON.stringify(attribution2)}
1888
+ `)}function inlineRunDispatchFallbackPath(projectRoot,runId){return join15(runStoragePaths(projectRoot).scratchDir,`${runId}-dispatch-fallback.json`)}async function runInlineRunDispatchFailure(input){let workdir=input.workdir??process.cwd(),record3=readDispatchFailureText(input),classification=classifyDispatchFailure(record3.text),observedAt=new Date().toISOString(),executor=input.executor??null,agent=input.agent??null,outcome={stage:input.stage,class:classification.class,...classification.reason===void 0?{}:{reason:classification.reason},...classification.resetAt===void 0?{}:{resetAt:classification.resetAt},decision:input.decision,executor,attribution:executor===null?"no-attribution":"recorded",observedAt},durable=classification.class==="capacity"&&executor!==null&&classification.reason!==void 0?await recordCapacityExhaustion({workdir,runId:input.runId,observedAt,executor,agent,...input.model===void 0?{}:{model:input.model},reason:classification.reason,spurConfig:input.spurConfig??null}):void 0,artifact={...outcome,...durable?.observationId===void 0?{}:{observationId:durable.observationId},...durable?.recorded===void 0?{}:{recorded:durable.recorded},...durable?.applied===void 0?{}:{applied:durable.applied}};return writeJsonArtifact(inlineRunDispatchFallbackPath(workdir,input.runId),artifact),process.stdout.write(`${JSON.stringify({ok:!0,runId:input.runId,...artifact})}
1889
+ `),0}function readDispatchFailureText(input){if(input.text===void 0===(input.textFile===void 0))throw Error("exactly one of text/textFile is required");if(input.text!==void 0)return{text:input.text};let raw=readFileSync5(input.textFile,"utf8");return{text:raw.length>MAX_QUOTA_EVIDENCE_BYTES?raw.slice(-MAX_QUOTA_EVIDENCE_BYTES):raw}}async function recordCapacityExhaustion(args){let observation=buildQuotaObservation({source:"buffered-error",reason:args.reason,observedAt:new Date(args.observedAt),attribution:{projectId:args.workdir,executor:args.executor,...args.agent===null?{}:{agent:args.agent},...args.model===void 0?{}:{model:args.model}}}),projectDb=await openInlineRunProjectDb(args.workdir);try{let context4={getDb:async()=>projectDb.adapter,projectRoot:args.workdir,loadAgentConfig:async()=>args.spurConfig,warn:(message)=>appendInlineRunLogLine(args.runId,`dispatch-failure: ${message}`)},outcome=await recordAgentQuotaEvent(context4,observation,!0),recorded=typeof outcome==="object"&&"rejected"in outcome?`rejected: ${outcome.rejected}`:outcome,drain=await drainPendingAgentQuotaUpdates(context4);return{observationId:observation.observationId,recorded,...drain.applied>0?{applied:drain.applied}:{}}}catch(error51){return{observationId:observation.observationId,recorded:`failed: ${errorText2(error51)}`}}finally{projectDb.close()}}function writeJsonArtifact(path8,value){mkdirSync3(dirname11(path8),{recursive:!0});let temp=`${path8}.tmp`;writeFileSync4(temp,`${JSON.stringify(value,null,2)}
1873
1890
  `,"utf8"),renameSync3(temp,path8)}function errorText2(error51){return error51 instanceof Error?error51.message:String(error51)}var section_matrix_schema_default={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://gobing.ai/spur/schemas/section-matrix.schema.json",title:"Section-Status-Matrix Schema",description:"Validates the shipped section-matrix.yaml — which sections are required/optional/forbidden per task status. Design §3.2. Authored for ts-runtime's loadStructuredConfig validator (supports properties/required/additionalProperties + $defs/$ref/enum; NOT patternProperties/uniqueItems).",type:"object",required:["variants"],additionalProperties:!1,properties:{$schema:{type:"string",description:"JSON Schema ref this file validates against (loadStructuredConfig reads it)."},variants:{type:"object",description:"Map of template variant → per-status matrix. Variant names are extensible (user-defined variants allowed); each value is a variant.",additionalProperties:{$ref:"#/$defs/variant"}}},$defs:{section:{enum:["Background","Requirements","Acceptance Criteria","Q&A","Design","Plan","Solution","Root Cause","Testing","Review","References","Notes","History"],description:"Canonical task section vocabulary (DD-08). Any other value is a typo."},sectionList:{type:"array",items:{$ref:"#/$defs/section"}},entry:{type:"object",additionalProperties:!1,properties:{required:{$ref:"#/$defs/sectionList"},optional:{$ref:"#/$defs/sectionList"},forbidden:{$ref:"#/$defs/sectionList"},gate:{type:"boolean"}}},variant:{type:"object",additionalProperties:!1,description:"A variant may declare any subset of the 7 canonical statuses (enumerated below); an unknown status key is rejected.",properties:{backlog:{$ref:"#/$defs/entry"},todo:{$ref:"#/$defs/entry"},wip:{$ref:"#/$defs/entry"},testing:{$ref:"#/$defs/entry"},blocked:{$ref:"#/$defs/entry"},done:{$ref:"#/$defs/entry"},cancelled:{$ref:"#/$defs/entry"}}}}};var spur_config_schema_default={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://github.com/gobing-ai/spur/schemas/spur-config.schema.json",title:"Spur Project Configuration",description:"Schema for .spur/config.yaml — the single project configuration surface consumed by spur and (future) spur-server.",type:"object",properties:{$schema:{type:"string",description:"Reference to this schema for IDE validation. spur resolves this at runtime via loadStructuredConfig."},version:{type:"string",description:"Config schema version (string, not integer). Current recommended: '1.2' (config-1.2 layered global/project merge, ADR-033 executor tiers + planning blocks). '1' remains accepted for backward compatibility."},name:{type:"string",description:"Project name written by spur init."},bootstrap:{type:"object",description:"Portable bootstrap block consumed by @gobing-ai/ts-infra runNodeApplication. Shared across spur and spur-server.",properties:{logging:{type:"object",properties:{enabled:{type:"boolean",description:"Enable structured logging via LogTape."},level:{type:"string",enum:["trace","debug","info","warn","error","fatal"],description:"Minimum log level."},console:{type:"boolean",description:"Emit log records to console (stderr)."},json:{type:"boolean",description:"Format log records as JSON Lines. false = text format."},file:{type:"boolean",description:"Write log records to a file sink. Uses filePath when set, otherwise disabled."},filePath:{type:"string",description:"Path to the log file. Relative to project root. Default: .spur/logs/spur.log."}}},telemetry:{type:"object",properties:{enabled:{type:"boolean",description:"Enable OpenTelemetry tracing/metrics export."},serviceName:{type:"string",description:"Service name reported to OTel collectors."},environment:{type:"string",description:"Deployment environment label."}}},database:{type:"object",properties:{enabled:{type:"boolean",description:"Enable the SQLite database adapter."},driver:{type:"string",enum:["bun-sqlite"],description:"Database driver. Currently only bun-sqlite."},url:{type:"string",description:"Database file path. Supports ${DATABASE_URL} interpolation. Default: .spur/spur.db."}}},scheduler:{type:"object",properties:{enabled:{type:"boolean",description:"Enable the scheduled-task runner. OFF by default for CLI (run-once)."},jobs:{type:"array",description:"Declarative scheduled commands (task 0734). Each entry registers one scheduler tick that enqueues a `scheduler.custom` queue job running `command` through `/bin/sh -c`. Normalized and validated by @gobing-ai/ts-infra runNodeApplication before the server starts.",items:{type:"object",required:["name","command"],properties:{name:{type:"string",minLength:1,description:"Job name, unique across the list after trimming. Reported as the `scheduler.custom:<name>` display name on scheduler.job.executed."},command:{type:"string",minLength:1,description:"Shell command run by `/bin/sh -c` with the project root as cwd. Trusted operator input — never logged."},intervalMinutes:{type:"integer",minimum:1,maximum:35791,description:"Fixed interval in minutes. Mutually exclusive with `cron`. The upper bound is the Node timer ceiling (2147483647 ms)."},cron:{type:"string",minLength:1,description:"Five-field cron expression (minute hour day-of-month month day-of-week) evaluated in local time. Mutually exclusive with `intervalMinutes`."}},oneOf:[{required:["intervalMinutes"],not:{required:["cron"]}},{required:["cron"],not:{required:["intervalMinutes"]}}]}}}}}},agent:{type:"object",properties:{default:{type:"string",description:"Default role for `--agent auto` when nothing is declared (0542 R2). A role id (scribe, coder, reviewer, planner) selects its tier's cheapest eligible executor; a configured executor name still resolves during the transition with a one-time warning; any other value is rejected naming both accepted sets."},executors:{type:"array",description:"Named executor profiles: each pairs a canonical agent with an optional model override. Referenced by name from `agent.default` and stage model_policy (default-by-phase removed 0452).",items:{type:"object",required:["name","agent"],properties:{name:{type:"string",minLength:1,description:"Executor selector name (unique across the list)."},agent:{type:"string",minLength:1,description:"Canonical coding agent (claude, codex, gemini, pi, opencode, antigravity-cli, openclaw, hermes, omp)."},model:{type:"string",minLength:1,description:"Opaque model override passed straight to the agent (e.g. zai//glm-5.2). Applied only when the user passes no explicit --model."},tier:{type:"string",enum:["cheap","standard","capable-1","capable-2","capable-3"],description:"Capability tier for stage-registry adaptive model routing (ADR-033, 0343). Live values: cheap | standard | capable-1 | capable-2 | capable-3 (1=low output quality, 3=high within the capable band). A stage starts on the cheapest eligible executor meeting its model_policy min_tier. Bare legacy `capable` is accepted at runtime (zod preprocess → capable-1) during the deprecation window but is not part of this editor enum."},disabled:{description:"Routing kill-switch (111; ownership widened 0890): a disabled profile never serves a role, team, stage, or explicit selection, and doctor inventories it without probing. Omitted = enabled. Bare `true` is operator-owned (only humans write booleans); automatic writers emit the object form carrying owner (operator|quota|probe), since (RFC 3339) and reason.",anyOf:[{type:"boolean"},{type:"object",additionalProperties:!1,required:["owner","since","reason"],properties:{owner:{enum:["operator","quota","probe"]},since:{type:"string",format:"date-time",minLength:1},reason:{type:"string",minLength:1}}}]}}}},fleet:{type:"object",description:"The project's agent fleet (G65 / 0858): the single declaration of composition, the on/off switch, and the dispatch strategy. PROJECT LAYER ONLY — a global-layer agent.fleet fails the load. Replaces the retired .spur/fleet.json (0835) and agent.team (0857). Mirrors @gobing-ai/spur-config AgentFleetSchema (Zod is SSOT).",properties:{enabled:{type:"boolean",default:!1,description:"The single fleet switch. `spur serve` materializes and autostarts the roster only when true; an absent or disabled fleet starts nothing."},strategy:{type:"string",enum:["rest","gtd"],default:"rest",description:"Dispatch strategy, reconciled into project_strategy at serve start (0859). One name is added by a typed code change, not by config."},orchestrator:{type:"string",minLength:1,description:"memberLocalId of the one planner-role member carrying purpose: orchestrator. Absent = no orchestrator declared (never inferred)."},members:{type:"array",default:[],description:"The roster. Each member declares a role or an executor. `enabled: false` keeps the member's derived <role>-<n> id index but does not materialize it.",items:{type:"object",properties:{id:{type:"string",minLength:1,description:"Explicit stable id; wins over the derived <role>-<n> form."},role:{type:"string",enum:["scribe","coder","reviewer","planner"],description:"Layer-1 role id (closed vocabulary)."},executor:{type:"string",minLength:1,description:"Executor profile name or a raw canonical agent type."},purpose:{type:"string",description:"Free-form member purpose; `orchestrator` is the value the orchestrator pointer binds to."},enabled:{type:"boolean",description:"Default true. False preserves the member's derived id index without materializing it."}},anyOf:[{required:["role"]},{required:["executor"]}]}}}},roles:{type:"object",description:"Per-role tier/stage overrides over DEFAULT_AGENT_ROLES (0572 / ADR-061). Keys are the closed role vocabulary (scribe, coder, reviewer, planner); a present field replaces the default for that role, an omitted field keeps it. Mirrors @gobing-ai/spur-config AgentRoleConfigSchema (Zod is SSOT).",additionalProperties:{type:"object",properties:{tier:{type:"string",enum:["cheap","standard","capable-1","capable-2","capable-3"],description:"Replacement capability tier for the role. Must not sit below the highest min_tier among the role's folded stages (enforced at the CLI boundary)."},stages:{type:"array",minItems:1,items:{type:"string",minLength:1},description:"Replacement folded-stage list for the role. Ids must come from the canonical stage registry (validated at the CLI boundary). Omit the field to keep the default — an empty array is rejected."}}}}}},rules:{type:"object",properties:{paths:{type:"array",items:{type:"string"},description:"Glob paths to rule files."}}},workflows:{type:"object",properties:{paths:{type:"array",items:{type:"string"},description:"Glob paths to workflow directories."}}},decisions:{type:"object",description:"Decision-catalog resolution and DecisionMaker selection (feature P / ADR-134). The whole section is optional.",properties:{paths:{type:"array",items:{type:"string"},description:"Extra catalog folders for the registered decision layer (absolute, project-relative, or 'bundled:<sub>' against the installed package's config root)."},maker:{type:"string",pattern:"^[a-z][a-z0-9-]*$",description:"Default DecisionMaker for every decision point (built-ins: typesafe | fm-local | laya-local). Must be registered; an unknown name is a config error, never a silent fallback."},makers:{type:"object",additionalProperties:{type:"string"},description:"Per-decision-point maker overrides, keyed by decision id; outrank decisions.maker."}}},redaction:{type:"object",properties:{enabled:{type:"boolean",description:"Enable sensitive-data redaction in CLI output."}}},history:{type:"object",description:"History import/analyze configuration (feature E3). Opt-in operation-triggered refresh.",properties:{refresh:{type:"object",properties:{on_completion:{type:"boolean",description:"Enqueue a coalesced history refresh when a task or pipeline run completes. Default false (opt-in; hidden automation is out of contract)."},debounce_ms:{type:"integer",minimum:0,description:"Coalescing window in milliseconds. Completions inside the window join one pending refresh. Default 60000."}}}}},builder:{type:"object",description:"Builder noun configuration. Currently hosts the release plumbing knobs for `spur builder bump-ver` / `drop-tags`; every field defaults to the built-in release convention, so an absent builder section keeps default behavior.",properties:{"bump-ver":{type:"object",description:"Release knobs for bump-ver/drop-tags. Defaults: -v separator, publish.yml workflow, chore(release) commit, gh run list limit 5.",properties:{aggregatePackage:{type:"string",minLength:1,description:'Package whose own release tag is the publish trigger for the aggregate (--all) path, as an unscoped package id (e.g. "spur" for @gobing-ai/spur). Default: the package whose full name equals the workspace root manifest name.'},tagVersionSeparator:{type:"string",minLength:1,description:'Release tag format: <package><separator><version>. Default "-v".'},publishWorkflow:{type:"string",minLength:1,description:'GitHub Actions workflow file the pushed release tag triggers. Default "publish.yml".'},releaseCommitType:{type:"string",minLength:1,description:'Conventional commit type for the release commit. Default "chore".'},releaseCommitScope:{type:"string",minLength:1,description:'Conventional commit scope for the release commit. Default "release".'},ghRunListLimit:{type:"integer",minimum:1,description:"gh run list --limit used to point at the triggered publish run. Default 5."},versionCarriers:{type:"array",description:"Extra version carriers beyond workspace package.json files. Default: none. Types are registered in apps/cli/src/version-carriers.ts (registerCarrierType), which validates instances at release time; registering a new type extends this description in the same commit.",items:{type:"object",description:"One carrier instance. Required field: type (string). Built-ins: plugin-manifest { paths: [..] } — repo-wide manifests synced to the release version (e.g. per-platform plugin.json mirrors); ts-literal { file?, identifier? } — version constant in a package source file (defaults src/config.ts / binaryVersion).",properties:{type:{type:"string",minLength:1}},required:["type"]}}}}}},tasks:{type:"object",description:"Task-folder registration (design §9). Absorbs the legacy docs/.tasks/config.json folders + baseCounter concepts. Mirrors @gobing-ai/spur-config tasksConfigSchema (Zod is SSOT).",properties:{folders:{type:"object",description:"Map of task-folder path → folder config.",additionalProperties:{type:"object",properties:{baseCounter:{type:"integer",minimum:0,description:"WBS base counter for new tasks in this folder. Default 0."},label:{type:"string",description:"Human-readable folder label."}}}},active:{type:"string",description:"Default folder for `spur task create`. Default: docs/tasks."},severity:{type:"object",description:"Rule severity overrides map by code (error | warning | off).",additionalProperties:{type:"string",enum:["error","warning","off"]}}}},features:{type:"object",description:"Feature directory location (design §9). Mirrors @gobing-ai/spur-config featuresConfigSchema (Zod is SSOT).",properties:{dir:{type:"string",description:"Feature files directory. Default: docs/features."}}}}};var state_machine_workflow_schema_default={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://github.com/gobing-ai/spur/schemas/state-machine-workflow.schema.json",title:"@gobing-ai/ts-dual-workflow-engine State-machine Workflow",type:"object",additionalProperties:!1,required:["name","initialState","states","transitions"],properties:{$schema:{type:"string"},kind:{const:"state-machine"},name:{type:"string",minLength:1},version:{type:"string",minLength:1,description:"Optional behavior-neutral identity tag (0756). Absent = unversioned; present = a non-empty opaque literal surfaced as explicit(<literal>). Not parsed, ordered, or compatibility-checked; no registry."},description:{type:"string"},initialState:{type:"string",minLength:1},terminalStates:{type:"array",items:{type:"string",minLength:1}},failureStates:{type:"array",items:{type:"string",minLength:1},description:"Subset of terminalStates whose reach finalizes the run as failed. Absent ⇒ every terminal is a success."},iterationBound:{type:"integer",exclusiveMinimum:0},vars:{type:"object",propertyNames:{pattern:"^[A-Za-z_][A-Za-z0-9_]*$"},additionalProperties:{type:"string"}},env:{type:"object",additionalProperties:!1,properties:{allow:{type:"array",items:{type:"string",pattern:"^[A-Za-z_][A-Za-z0-9_]*$"}}}},extensions:{type:"object",additionalProperties:!1,properties:{actions:{type:"array",items:{$ref:"#/$defs/relativeExtensionPath"}},guards:{type:"array",items:{$ref:"#/$defs/relativeExtensionPath"}}}},states:{type:"array",items:{type:"object",additionalProperties:!1,required:["id"],properties:{id:{type:"string",minLength:1},description:{type:"string"},pause:{type:"boolean",description:"When true, the engine pauses the run at this state for HITL (E3); resume with `spur workflow continue`."},display:{type:"object",additionalProperties:!1,description:"Presentation-only metadata for plan/UI generators; the engine never reads it at run time.",required:["phase"],properties:{phase:{type:"string",minLength:1},phaseTitle:{type:"string",minLength:1},title:{type:"string",minLength:1},show:{enum:["plan","on-entry"]}}},onEnter:{type:"array",items:{$ref:"#/$defs/action"}},onExit:{type:"array",items:{$ref:"#/$defs/action"}}}}},transitions:{type:"array",items:{type:"object",additionalProperties:!1,required:["from","to"],properties:{from:{type:"string",minLength:1},to:{type:"string",minLength:1},terminalReason:{type:"string",description:"Closed terminal-reason enum declared when this edge finalizes the run (0937 R3; required for edges into failureStates)."},description:{type:"string"},trigger:{type:"string"},guard:{$ref:"#/$defs/guard"}}}}},$defs:{action:{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{type:"string",minLength:1},options:{type:"object",additionalProperties:!0},onError:{type:"string",enum:["fail","continue"],description:"Per-action error handling policy: 'fail' halts the run; 'continue' logs the failure and proceeds so transition guards can route the outcome."}}},guard:{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{type:"string",minLength:1},options:{type:"object",additionalProperties:!0}}},relativeExtensionPath:{type:"string",minLength:1,description:"Relative module path; absolute paths and '..' traversal are forbidden.",not:{anyOf:[{pattern:"^[/\\\\]"},{pattern:"^[A-Za-z]:[/\\\\]"},{pattern:"(^|[/\\\\])\\.\\.([/\\\\]|$)"}]}}}};var transition_flow_workflow_schema_default={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://github.com/gobing-ai/spur/schemas/transition-flow-workflow.schema.json",title:"@gobing-ai/ts-dual-workflow-engine Transition-flow Workflow",type:"object",additionalProperties:!1,required:["kind","name","initialNode","nodes","edges"],properties:{$schema:{type:"string"},kind:{const:"transition-flow"},name:{type:"string",minLength:1},version:{type:"string",minLength:1,description:"Optional behavior-neutral identity tag (0756). Absent = unversioned; present = a non-empty opaque literal surfaced as explicit(<literal>). Not parsed, ordered, or compatibility-checked; no registry."},description:{type:"string"},initialNode:{type:"string",minLength:1},terminalNodes:{type:"array",items:{type:"string",minLength:1}},iterationBound:{type:"integer",exclusiveMinimum:0},vars:{type:"object",propertyNames:{pattern:"^[A-Za-z_][A-Za-z0-9_]*$"},additionalProperties:{type:"string"}},env:{type:"object",additionalProperties:!1,properties:{allow:{type:"array",items:{type:"string",pattern:"^[A-Za-z_][A-Za-z0-9_]*$"}}}},extensions:{type:"object",additionalProperties:!1,properties:{actions:{type:"array",items:{$ref:"#/$defs/relativeExtensionPath"}},guards:{type:"array",items:{$ref:"#/$defs/relativeExtensionPath"}}}},nodes:{type:"array",items:{type:"object",additionalProperties:!1,required:["id"],properties:{id:{type:"string",minLength:1},description:{type:"string"},type:{enum:["action","gate","parallel","decision"]},action:{$ref:"#/$defs/action"}}}},edges:{type:"array",items:{type:"object",additionalProperties:!1,required:["from","to"],properties:{from:{type:"string",minLength:1},to:{type:"string",minLength:1},description:{type:"string"},condition:{$ref:"#/$defs/guard"}}}}},$defs:{action:{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{type:"string",minLength:1},options:{type:"object",additionalProperties:!0},onError:{type:"string",enum:["fail","continue"],description:"Per-action error handling policy: 'fail' halts the run; 'continue' logs the failure and proceeds so edge conditions can route the outcome."}}},guard:{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{type:"string",minLength:1},options:{type:"object",additionalProperties:!0}}},relativeExtensionPath:{type:"string",minLength:1,description:"Relative module path; absolute paths and '..' traversal are forbidden.",not:{anyOf:[{pattern:"^[/\\\\]"},{pattern:"^[A-Za-z]:[/\\\\]"},{pattern:"(^|[/\\\\])\\.\\.([/\\\\]|$)"}]}}}};var EMBEDDED_SPUR_SCHEMAS=new Map([["schemas/spur-config.schema.json",JSON.stringify(spur_config_schema_default)],["schemas/section-matrix.schema.json",JSON.stringify(section_matrix_schema_default)],["schemas/state-machine-workflow.schema.json",JSON.stringify(state_machine_workflow_schema_default)],["schemas/transition-flow-workflow.schema.json",JSON.stringify(transition_flow_workflow_schema_default)]]);export{writeInlineRunOutcome,validateFeatureVerificationReceipt,startFeatureVerificationReceipt,splitLaunchCommand,runInlineRunTraceMode,runInlineRunTraceBatch,runInlineRunTrace,runInlineRunSetup,runInlineRunPersistOut,runInlineRunNodeEnter,runInlineRunFingerprint,runInlineRunDispatchFailure,runInlineRunDecide,runDecideForInlineRun,resolveWorkflowDefinition,resolveDecideDecisionMakerEnabled,recordInlineRunAttribution,readProofInputContents,readInstalledInventory,persistWorktreeRuns,openInlineRunProjectDb,loadSpurConfig,isInlineRunCloseStatus,isInlineRunActionStatus,inlineRunRecordLogPath,featureReceiptPaths,createWorkflowActionTraceWriter,createOrAttachInlineRun,computeProofInputFingerprint,completeFeatureVerificationReceipt,captureFeatureReceiptDigest,appendInlineRunLogLine,RunDao,EMBEDDED_SPUR_SCHEMAS,DEFAULT_FEATURE_VERIFICATION_CMD,ArtifactDao};