@ai-setting/roy-task-plugin 0.7.13 → 0.7.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,318 +1,307 @@
1
1
  // @bun
2
- var l1=Object.create;var{getPrototypeOf:c1,defineProperty:f9,getOwnPropertyNames:d1}=Object;var p1=Object.prototype.hasOwnProperty;function i1($){return this[$]}var n1,r1,a1=($,J,Q)=>{var X=$!=null&&typeof $==="object";if(X){var W=J?n1??=new WeakMap:r1??=new WeakMap,G=W.get($);if(G)return G}Q=$!=null?l1(c1($)):{};let Y=J||!$||!$.__esModule?f9(Q,"default",{value:$,enumerable:!0}):Q;for(let q of d1($))if(!p1.call(Y,q))f9(Y,q,{get:i1.bind($,q),enumerable:!0});if(X)W.set($,Y);return Y};var C=($,J)=>()=>(J||$((J={exports:{}}).exports,J),J.exports);var s1=($)=>$;function o1($,J){this[$]=s1.bind(null,J)}var t1=($,J)=>{for(var Q in J)f9($,Q,{get:J[Q],enumerable:!0,configurable:!0,set:o1.bind(J,Q)})};var B6=import.meta.require;var p=C((gW)=>{var q4=Symbol.for("yaml.alias"),a7=Symbol.for("yaml.document"),N6=Symbol.for("yaml.map"),s7=Symbol.for("yaml.pair"),H4=Symbol.for("yaml.scalar"),Z6=Symbol.for("yaml.seq"),c0=Symbol.for("yaml.node.type"),fW=($)=>!!$&&typeof $==="object"&&$[c0]===q4,TW=($)=>!!$&&typeof $==="object"&&$[c0]===a7,IW=($)=>!!$&&typeof $==="object"&&$[c0]===N6,vW=($)=>!!$&&typeof $==="object"&&$[c0]===s7,o7=($)=>!!$&&typeof $==="object"&&$[c0]===H4,xW=($)=>!!$&&typeof $==="object"&&$[c0]===Z6;function t7($){if($&&typeof $==="object")switch($[c0]){case N6:case Z6:return!0}return!1}function hW($){if($&&typeof $==="object")switch($[c0]){case q4:case N6:case H4:case Z6:return!0}return!1}var yW=($)=>(o7($)||t7($))&&!!$.anchor;gW.ALIAS=q4;gW.DOC=a7;gW.MAP=N6;gW.NODE_TYPE=c0;gW.PAIR=s7;gW.SCALAR=H4;gW.SEQ=Z6;gW.hasAnchor=yW;gW.isAlias=fW;gW.isCollection=t7;gW.isDocument=TW;gW.isMap=IW;gW.isNode=hW;gW.isPair=vW;gW.isScalar=o7;gW.isSeq=xW});var A2=C((JG)=>{var G0=p(),D0=Symbol("break visit"),e7=Symbol("skip children"),x0=Symbol("remove node");function w6($,J){let Q=$5(J);if(G0.isDocument($)){if(d$(null,$.contents,Q,Object.freeze([$]))===x0)$.contents=null}else d$(null,$,Q,Object.freeze([]))}w6.BREAK=D0;w6.SKIP=e7;w6.REMOVE=x0;function d$($,J,Q,X){let W=J5($,J,Q,X);if(G0.isNode(W)||G0.isPair(W))return Q5($,X,W),d$($,W,Q,X);if(typeof W!=="symbol"){if(G0.isCollection(J)){X=Object.freeze(X.concat(J));for(let G=0;G<J.items.length;++G){let Y=d$(G,J.items[G],Q,X);if(typeof Y==="number")G=Y-1;else if(Y===D0)return D0;else if(Y===x0)J.items.splice(G,1),G-=1}}else if(G0.isPair(J)){X=Object.freeze(X.concat(J));let G=d$("key",J.key,Q,X);if(G===D0)return D0;else if(G===x0)J.key=null;let Y=d$("value",J.value,Q,X);if(Y===D0)return D0;else if(Y===x0)J.value=null}}return W}async function b6($,J){let Q=$5(J);if(G0.isDocument($)){if(await p$(null,$.contents,Q,Object.freeze([$]))===x0)$.contents=null}else await p$(null,$,Q,Object.freeze([]))}b6.BREAK=D0;b6.SKIP=e7;b6.REMOVE=x0;async function p$($,J,Q,X){let W=await J5($,J,Q,X);if(G0.isNode(W)||G0.isPair(W))return Q5($,X,W),p$($,W,Q,X);if(typeof W!=="symbol"){if(G0.isCollection(J)){X=Object.freeze(X.concat(J));for(let G=0;G<J.items.length;++G){let Y=await p$(G,J.items[G],Q,X);if(typeof Y==="number")G=Y-1;else if(Y===D0)return D0;else if(Y===x0)J.items.splice(G,1),G-=1}}else if(G0.isPair(J)){X=Object.freeze(X.concat(J));let G=await p$("key",J.key,Q,X);if(G===D0)return D0;else if(G===x0)J.key=null;let Y=await p$("value",J.value,Q,X);if(Y===D0)return D0;else if(Y===x0)J.value=null}}return W}function $5($){if(typeof $==="object"&&($.Collection||$.Node||$.Value))return Object.assign({Alias:$.Node,Map:$.Node,Scalar:$.Node,Seq:$.Node},$.Value&&{Map:$.Value,Scalar:$.Value,Seq:$.Value},$.Collection&&{Map:$.Collection,Seq:$.Collection},$);return $}function J5($,J,Q,X){if(typeof Q==="function")return Q($,J,X);if(G0.isMap(J))return Q.Map?.($,J,X);if(G0.isSeq(J))return Q.Seq?.($,J,X);if(G0.isPair(J))return Q.Pair?.($,J,X);if(G0.isScalar(J))return Q.Scalar?.($,J,X);if(G0.isAlias(J))return Q.Alias?.($,J,X);return}function Q5($,J,Q){let X=J[J.length-1];if(G0.isCollection(X))X.items[$]=Q;else if(G0.isPair(X))if($==="key")X.key=Q;else X.value=Q;else if(G0.isDocument(X))X.contents=Q;else{let W=G0.isAlias(X)?"alias":"scalar";throw Error(`Cannot replace node with ${W} parent`)}}JG.visit=w6;JG.visitAsync=b6});var B4=C((qG)=>{var X5=p(),WG=A2(),GG={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},YG=($)=>$.replace(/[!,[\]{}]/g,(J)=>GG[J]);class K0{constructor($,J){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},K0.defaultYaml,$),this.tags=Object.assign({},K0.defaultTags,J)}clone(){let $=new K0(this.yaml,this.tags);return $.docStart=this.docStart,$}atDocument(){let $=new K0(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:K0.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},K0.defaultTags);break}return $}add($,J){if(this.atNextDocument)this.yaml={explicit:K0.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},K0.defaultTags),this.atNextDocument=!1;let Q=$.trim().split(/[ \t]+/),X=Q.shift();switch(X){case"%TAG":{if(Q.length!==2){if(J(0,"%TAG directive should contain exactly two parts"),Q.length<2)return!1}let[W,G]=Q;return this.tags[W]=G,!0}case"%YAML":{if(this.yaml.explicit=!0,Q.length!==1)return J(0,"%YAML directive should contain exactly one part"),!1;let[W]=Q;if(W==="1.1"||W==="1.2")return this.yaml.version=W,!0;else{let G=/^\d+\.\d+$/.test(W);return J(6,`Unsupported YAML version ${W}`,G),!1}}default:return J(0,`Unknown directive ${X}`,!0),!1}}tagName($,J){if($==="!")return"!";if($[0]!=="!")return J(`Not a valid tag: ${$}`),null;if($[1]==="<"){let G=$.slice(2,-1);if(G==="!"||G==="!!")return J(`Verbatim tags aren't resolved, so ${$} is invalid.`),null;if($[$.length-1]!==">")J("Verbatim tags must end with a >");return G}let[,Q,X]=$.match(/^(.*!)([^!]*)$/s);if(!X)J(`The ${$} tag has no suffix`);let W=this.tags[Q];if(W)try{return W+decodeURIComponent(X)}catch(G){return J(String(G)),null}if(Q==="!")return $;return J(`Could not resolve tag: ${$}`),null}tagString($){for(let[J,Q]of Object.entries(this.tags))if($.startsWith(Q))return J+YG($.substring(Q.length));return $[0]==="!"?$:`!<${$}>`}toString($){let J=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],Q=Object.entries(this.tags),X;if($&&Q.length>0&&X5.isNode($.contents)){let W={};WG.visit($.contents,(G,Y)=>{if(X5.isNode(Y)&&Y.tag)W[Y.tag]=!0}),X=Object.keys(W)}else X=[];for(let[W,G]of Q){if(W==="!!"&&G==="tag:yaml.org,2002:")continue;if(!$||X.some((Y)=>Y.startsWith(G)))J.push(`%TAG ${W} ${G}`)}return J.join(`
3
- `)}}K0.defaultYaml={explicit:!1,version:"1.2"};K0.defaultTags={"!!":"tag:yaml.org,2002:"};qG.Directives=K0});var P6=C((zG)=>{var W5=p(),BG=A2();function UG($){if(/[\x00-\x19\s,[\]{}]/.test($)){let Q=`Anchor must not contain whitespace or control characters: ${JSON.stringify($)}`;throw Error(Q)}return!0}function G5($){let J=new Set;return BG.visit($,{Value(Q,X){if(X.anchor)J.add(X.anchor)}}),J}function Y5($,J){for(let Q=1;;++Q){let X=`${$}${Q}`;if(!J.has(X))return X}}function VG($,J){let Q=[],X=new Map,W=null;return{onAnchor:(G)=>{Q.push(G),W??(W=G5($));let Y=Y5(J,W);return W.add(Y),Y},setAnchors:()=>{for(let G of Q){let Y=X.get(G);if(typeof Y==="object"&&Y.anchor&&(W5.isScalar(Y.node)||W5.isCollection(Y.node)))Y.node.anchor=Y.anchor;else{let q=Error("Failed to resolve repeated object (this should not happen)");throw q.source=G,q}}},sourceObjects:X}}zG.anchorIsValid=UG;zG.anchorNames=G5;zG.createNodeAnchors=VG;zG.findNewAnchor=Y5});var U4=C((KG)=>{function _2($,J,Q,X){if(X&&typeof X==="object")if(Array.isArray(X))for(let W=0,G=X.length;W<G;++W){let Y=X[W],q=_2($,X,String(W),Y);if(q===void 0)delete X[W];else if(q!==Y)X[W]=q}else if(X instanceof Map)for(let W of Array.from(X.keys())){let G=X.get(W),Y=_2($,X,W,G);if(Y===void 0)X.delete(W);else if(Y!==G)X.set(W,Y)}else if(X instanceof Set)for(let W of Array.from(X)){let G=_2($,X,W,W);if(G===void 0)X.delete(W);else if(G!==W)X.delete(W),X.add(G)}else for(let[W,G]of Object.entries(X)){let Y=_2($,X,W,G);if(Y===void 0)delete X[W];else if(Y!==G)X[W]=Y}return $.call(J,Q,X)}KG.applyReviver=_2});var t0=C((AG)=>{var LG=p();function q5($,J,Q){if(Array.isArray($))return $.map((X,W)=>q5(X,String(W),Q));if($&&typeof $.toJSON==="function"){if(!Q||!LG.hasAnchor($))return $.toJSON(J,Q);let X={aliasCount:0,count:1,res:void 0};Q.anchors.set($,X),Q.onCreate=(G)=>{X.res=G,delete Q.onCreate};let W=$.toJSON(J,Q);if(Q.onCreate)Q.onCreate(W);return W}if(typeof $==="bigint"&&!Q?.keep)return Number($);return $}AG.toJS=q5});var S6=C((ZG)=>{var jG=U4(),H5=p(),NG=t0();class B5{constructor($){Object.defineProperty(this,H5.NODE_TYPE,{value:$})}clone(){let $=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(this.range)$.range=this.range.slice();return $}toJS($,{mapAsMap:J,maxAliasCount:Q,onAnchor:X,reviver:W}={}){if(!H5.isDocument($))throw TypeError("A document argument is required");let G={anchors:new Map,doc:$,keep:!0,mapAsMap:J===!0,mapKeyWarned:!1,maxAliasCount:typeof Q==="number"?Q:100},Y=NG.toJS(this,"",G);if(typeof X==="function")for(let{count:q,res:H}of G.anchors.values())X(H,q);return typeof W==="function"?jG.applyReviver(W,{"":Y},"",Y):Y}}ZG.NodeBase=B5});var j2=C((CG)=>{var bG=P6(),PG=A2(),i$=p(),SG=S6(),EG=t0();class U5 extends SG.NodeBase{constructor($){super(i$.ALIAS);this.source=$,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve($,J){if(J?.maxAliasCount===0)throw ReferenceError("Alias resolution is disabled");let Q;if(J?.aliasResolveCache)Q=J.aliasResolveCache;else if(Q=[],PG.visit($,{Node:(W,G)=>{if(i$.isAlias(G)||i$.hasAnchor(G))Q.push(G)}}),J)J.aliasResolveCache=Q;let X=void 0;for(let W of Q){if(W===this)break;if(W.anchor===this.source)X=W}if(X&&J){let{anchors:W,doc:G,maxAliasCount:Y}=J,q=W.get(X);if(!q)EG.toJS(X,null,J),q=W.get(X);if(q?.res===void 0)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(Y>=0){if(q.count+=1,q.aliasCount===0)q.aliasCount=E6(G,X,W);if(q.count*q.aliasCount>Y)throw ReferenceError("Excessive alias count indicates a resource exhaustion attack")}}return X}toJSON($,J){if(!J)return{source:this.source};let Q=this.resolve(J.doc,J);if(!Q){let X=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(X)}return J.anchors.get(Q).res}toString($,J,Q){let X=`*${this.source}`;if($){if(bG.anchorIsValid(this.source),$.options.verifyAliasOrder&&!$.anchors.has(this.source)){let W=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(W)}if($.implicitKey)return`${X} `}return X}}function E6($,J,Q){if(i$.isAlias(J)){let X=J.resolve($),W=Q&&X&&Q.get(X);return W?W.count*W.aliasCount:0}else if(i$.isCollection(J)){let X=0;for(let W of J.items){let G=E6($,W,Q);if(G>X)X=G}return X}else if(i$.isPair(J)){let X=E6($,J.key,Q),W=E6($,J.value,Q);return Math.max(X,W)}return 1}CG.Alias=U5});var W0=C((hG)=>{var TG=p(),IG=S6(),vG=t0(),xG=($)=>!$||typeof $!=="function"&&typeof $!=="object";class O$ extends IG.NodeBase{constructor($){super(TG.SCALAR);this.value=$}toJSON($,J){return J?.keep?this.value:vG.toJS(this.value,$,J)}toString(){return String(this.value)}}O$.BLOCK_FOLDED="BLOCK_FOLDED";O$.BLOCK_LITERAL="BLOCK_LITERAL";O$.PLAIN="PLAIN";O$.QUOTE_DOUBLE="QUOTE_DOUBLE";O$.QUOTE_SINGLE="QUOTE_SINGLE";hG.Scalar=O$;hG.isScalarValue=xG});var N2=C((cG)=>{var kG=j2(),M$=p(),V5=W0(),mG="tag:yaml.org,2002:";function uG($,J,Q){if(J){let X=Q.filter((G)=>G.tag===J),W=X.find((G)=>!G.format)??X[0];if(!W)throw Error(`Tag ${J} not found`);return W}return Q.find((X)=>X.identify?.($)&&!X.format)}function lG($,J,Q){if(M$.isDocument($))$=$.contents;if(M$.isNode($))return $;if(M$.isPair($)){let z=Q.schema[M$.MAP].createNode?.(Q.schema,null,Q);return z.items.push($),z}if($ instanceof String||$ instanceof Number||$ instanceof Boolean||typeof BigInt<"u"&&$ instanceof BigInt)$=$.valueOf();let{aliasDuplicateObjects:X,onAnchor:W,onTagObj:G,schema:Y,sourceObjects:q}=Q,H=void 0;if(X&&$&&typeof $==="object")if(H=q.get($),H)return H.anchor??(H.anchor=W($)),new kG.Alias(H.anchor);else H={anchor:null,node:null},q.set($,H);if(J?.startsWith("!!"))J=mG+J.slice(2);let B=uG($,J,Y.tags);if(!B){if($&&typeof $.toJSON==="function")$=$.toJSON();if(!$||typeof $!=="object"){let z=new V5.Scalar($);if(H)H.node=z;return z}B=$ instanceof Map?Y[M$.MAP]:(Symbol.iterator in Object($))?Y[M$.SEQ]:Y[M$.MAP]}if(G)G(B),delete Q.onTagObj;let U=B?.createNode?B.createNode(Q.schema,$,Q):typeof B?.nodeClass?.from==="function"?B.nodeClass.from(Q.schema,$,Q):new V5.Scalar($);if(J)U.tag=J;else if(!B.default)U.tag=B.tag;if(H)H.node=U;return U}cG.createNode=lG});var C6=C((nG)=>{var pG=N2(),h0=p(),iG=S6();function V4($,J,Q){let X=Q;for(let W=J.length-1;W>=0;--W){let G=J[W];if(typeof G==="number"&&Number.isInteger(G)&&G>=0){let Y=[];Y[G]=X,X=Y}else X=new Map([[G,X]])}return pG.createNode(X,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema:$,sourceObjects:new Map})}var z5=($)=>$==null||typeof $==="object"&&!!$[Symbol.iterator]().next().done;class D5 extends iG.NodeBase{constructor($,J){super($);Object.defineProperty(this,"schema",{value:J,configurable:!0,enumerable:!1,writable:!0})}clone($){let J=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if($)J.schema=$;if(J.items=J.items.map((Q)=>h0.isNode(Q)||h0.isPair(Q)?Q.clone($):Q),this.range)J.range=this.range.slice();return J}addIn($,J){if(z5($))this.add(J);else{let[Q,...X]=$,W=this.get(Q,!0);if(h0.isCollection(W))W.addIn(X,J);else if(W===void 0&&this.schema)this.set(Q,V4(this.schema,X,J));else throw Error(`Expected YAML collection at ${Q}. Remaining path: ${X}`)}}deleteIn($){let[J,...Q]=$;if(Q.length===0)return this.delete(J);let X=this.get(J,!0);if(h0.isCollection(X))return X.deleteIn(Q);else throw Error(`Expected YAML collection at ${J}. Remaining path: ${Q}`)}getIn($,J){let[Q,...X]=$,W=this.get(Q,!0);if(X.length===0)return!J&&h0.isScalar(W)?W.value:W;else return h0.isCollection(W)?W.getIn(X,J):void 0}hasAllNullValues($){return this.items.every((J)=>{if(!h0.isPair(J))return!1;let Q=J.value;return Q==null||$&&h0.isScalar(Q)&&Q.value==null&&!Q.commentBefore&&!Q.comment&&!Q.tag})}hasIn($){let[J,...Q]=$;if(Q.length===0)return this.has(J);let X=this.get(J,!0);return h0.isCollection(X)?X.hasIn(Q):!1}setIn($,J){let[Q,...X]=$;if(X.length===0)this.set(Q,J);else{let W=this.get(Q,!0);if(h0.isCollection(W))W.setIn(X,J);else if(W===void 0&&this.schema)this.set(Q,V4(this.schema,X,J));else throw Error(`Expected YAML collection at ${Q}. Remaining path: ${X}`)}}}nG.Collection=D5;nG.collectionFromPath=V4;nG.isEmptyPath=z5});var Z2=C((eG)=>{var oG=($)=>$.replace(/^(?!$)(?: $)?/gm,"#");function z4($,J){if(/^\n+$/.test($))return $.substring(1);return J?$.replace(/^(?! *$)/gm,J):$}var tG=($,J,Q)=>$.endsWith(`
4
- `)?z4(Q,J):Q.includes(`
2
+ var e1=Object.create;var{getPrototypeOf:$Q,defineProperty:T9,getOwnPropertyNames:JQ}=Object;var QQ=Object.prototype.hasOwnProperty;function XQ($){return this[$]}var YQ,GQ,qQ=($,J,Q)=>{var X=$!=null&&typeof $==="object";if(X){var Y=J?YQ??=new WeakMap:GQ??=new WeakMap,G=Y.get($);if(G)return G}Q=$!=null?e1($Q($)):{};let q=J||!$||!$.__esModule?T9(Q,"default",{value:$,enumerable:!0}):Q;for(let W of JQ($))if(!QQ.call(q,W))T9(q,W,{get:XQ.bind($,W),enumerable:!0});if(X)Y.set($,q);return q};var C=($,J)=>()=>(J||$((J={exports:{}}).exports,J),J.exports);var WQ=($)=>$;function zQ($,J){this[$]=WQ.bind(null,J)}var HQ=($,J)=>{for(var Q in J)T9($,Q,{get:J[Q],enumerable:!0,configurable:!0,set:zQ.bind(J,Q)})};var F6=import.meta.require;var d=C((dY)=>{var H4=Symbol.for("yaml.alias"),$5=Symbol.for("yaml.document"),P6=Symbol.for("yaml.map"),J5=Symbol.for("yaml.pair"),B4=Symbol.for("yaml.scalar"),b6=Symbol.for("yaml.seq"),d0=Symbol.for("yaml.node.type"),gY=($)=>!!$&&typeof $==="object"&&$[d0]===H4,kY=($)=>!!$&&typeof $==="object"&&$[d0]===$5,mY=($)=>!!$&&typeof $==="object"&&$[d0]===P6,uY=($)=>!!$&&typeof $==="object"&&$[d0]===J5,Q5=($)=>!!$&&typeof $==="object"&&$[d0]===B4,lY=($)=>!!$&&typeof $==="object"&&$[d0]===b6;function X5($){if($&&typeof $==="object")switch($[d0]){case P6:case b6:return!0}return!1}function cY($){if($&&typeof $==="object")switch($[d0]){case H4:case P6:case B4:case b6:return!0}return!1}var pY=($)=>(Q5($)||X5($))&&!!$.anchor;dY.ALIAS=H4;dY.DOC=$5;dY.MAP=P6;dY.NODE_TYPE=d0;dY.PAIR=J5;dY.SCALAR=B4;dY.SEQ=b6;dY.hasAnchor=pY;dY.isAlias=gY;dY.isCollection=X5;dY.isDocument=kY;dY.isMap=mY;dY.isNode=cY;dY.isPair=uY;dY.isScalar=Q5;dY.isSeq=lY});var A2=C((zG)=>{var G0=d(),D0=Symbol("break visit"),Y5=Symbol("skip children"),h0=Symbol("remove node");function E6($,J){let Q=G5(J);if(G0.isDocument($)){if(a$(null,$.contents,Q,Object.freeze([$]))===h0)$.contents=null}else a$(null,$,Q,Object.freeze([]))}E6.BREAK=D0;E6.SKIP=Y5;E6.REMOVE=h0;function a$($,J,Q,X){let Y=q5($,J,Q,X);if(G0.isNode(Y)||G0.isPair(Y))return W5($,X,Y),a$($,Y,Q,X);if(typeof Y!=="symbol"){if(G0.isCollection(J)){X=Object.freeze(X.concat(J));for(let G=0;G<J.items.length;++G){let q=a$(G,J.items[G],Q,X);if(typeof q==="number")G=q-1;else if(q===D0)return D0;else if(q===h0)J.items.splice(G,1),G-=1}}else if(G0.isPair(J)){X=Object.freeze(X.concat(J));let G=a$("key",J.key,Q,X);if(G===D0)return D0;else if(G===h0)J.key=null;let q=a$("value",J.value,Q,X);if(q===D0)return D0;else if(q===h0)J.value=null}}return Y}async function S6($,J){let Q=G5(J);if(G0.isDocument($)){if(await s$(null,$.contents,Q,Object.freeze([$]))===h0)$.contents=null}else await s$(null,$,Q,Object.freeze([]))}S6.BREAK=D0;S6.SKIP=Y5;S6.REMOVE=h0;async function s$($,J,Q,X){let Y=await q5($,J,Q,X);if(G0.isNode(Y)||G0.isPair(Y))return W5($,X,Y),s$($,Y,Q,X);if(typeof Y!=="symbol"){if(G0.isCollection(J)){X=Object.freeze(X.concat(J));for(let G=0;G<J.items.length;++G){let q=await s$(G,J.items[G],Q,X);if(typeof q==="number")G=q-1;else if(q===D0)return D0;else if(q===h0)J.items.splice(G,1),G-=1}}else if(G0.isPair(J)){X=Object.freeze(X.concat(J));let G=await s$("key",J.key,Q,X);if(G===D0)return D0;else if(G===h0)J.key=null;let q=await s$("value",J.value,Q,X);if(q===D0)return D0;else if(q===h0)J.value=null}}return Y}function G5($){if(typeof $==="object"&&($.Collection||$.Node||$.Value))return Object.assign({Alias:$.Node,Map:$.Node,Scalar:$.Node,Seq:$.Node},$.Value&&{Map:$.Value,Scalar:$.Value,Seq:$.Value},$.Collection&&{Map:$.Collection,Seq:$.Collection},$);return $}function q5($,J,Q,X){if(typeof Q==="function")return Q($,J,X);if(G0.isMap(J))return Q.Map?.($,J,X);if(G0.isSeq(J))return Q.Seq?.($,J,X);if(G0.isPair(J))return Q.Pair?.($,J,X);if(G0.isScalar(J))return Q.Scalar?.($,J,X);if(G0.isAlias(J))return Q.Alias?.($,J,X);return}function W5($,J,Q){let X=J[J.length-1];if(G0.isCollection(X))X.items[$]=Q;else if(G0.isPair(X))if($==="key")X.key=Q;else X.value=Q;else if(G0.isDocument(X))X.contents=Q;else{let Y=G0.isAlias(X)?"alias":"scalar";throw Error(`Cannot replace node with ${Y} parent`)}}zG.visit=E6;zG.visitAsync=S6});var U4=C((FG)=>{var z5=d(),UG=A2(),VG={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},DG=($)=>$.replace(/[!,[\]{}]/g,(J)=>VG[J]);class K0{constructor($,J){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},K0.defaultYaml,$),this.tags=Object.assign({},K0.defaultTags,J)}clone(){let $=new K0(this.yaml,this.tags);return $.docStart=this.docStart,$}atDocument(){let $=new K0(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:K0.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},K0.defaultTags);break}return $}add($,J){if(this.atNextDocument)this.yaml={explicit:K0.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},K0.defaultTags),this.atNextDocument=!1;let Q=$.trim().split(/[ \t]+/),X=Q.shift();switch(X){case"%TAG":{if(Q.length!==2){if(J(0,"%TAG directive should contain exactly two parts"),Q.length<2)return!1}let[Y,G]=Q;return this.tags[Y]=G,!0}case"%YAML":{if(this.yaml.explicit=!0,Q.length!==1)return J(0,"%YAML directive should contain exactly one part"),!1;let[Y]=Q;if(Y==="1.1"||Y==="1.2")return this.yaml.version=Y,!0;else{let G=/^\d+\.\d+$/.test(Y);return J(6,`Unsupported YAML version ${Y}`,G),!1}}default:return J(0,`Unknown directive ${X}`,!0),!1}}tagName($,J){if($==="!")return"!";if($[0]!=="!")return J(`Not a valid tag: ${$}`),null;if($[1]==="<"){let G=$.slice(2,-1);if(G==="!"||G==="!!")return J(`Verbatim tags aren't resolved, so ${$} is invalid.`),null;if($[$.length-1]!==">")J("Verbatim tags must end with a >");return G}let[,Q,X]=$.match(/^(.*!)([^!]*)$/s);if(!X)J(`The ${$} tag has no suffix`);let Y=this.tags[Q];if(Y)try{return Y+decodeURIComponent(X)}catch(G){return J(String(G)),null}if(Q==="!")return $;return J(`Could not resolve tag: ${$}`),null}tagString($){for(let[J,Q]of Object.entries(this.tags))if($.startsWith(Q))return J+DG($.substring(Q.length));return $[0]==="!"?$:`!<${$}>`}toString($){let J=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],Q=Object.entries(this.tags),X;if($&&Q.length>0&&z5.isNode($.contents)){let Y={};UG.visit($.contents,(G,q)=>{if(z5.isNode(q)&&q.tag)Y[q.tag]=!0}),X=Object.keys(Y)}else X=[];for(let[Y,G]of Q){if(Y==="!!"&&G==="tag:yaml.org,2002:")continue;if(!$||X.some((q)=>q.startsWith(G)))J.push(`%TAG ${Y} ${G}`)}return J.join(`
3
+ `)}}K0.defaultYaml={explicit:!1,version:"1.2"};K0.defaultTags={"!!":"tag:yaml.org,2002:"};FG.Directives=K0});var C6=C((LG)=>{var H5=d(),OG=A2();function KG($){if(/[\x00-\x19\s,[\]{}]/.test($)){let Q=`Anchor must not contain whitespace or control characters: ${JSON.stringify($)}`;throw Error(Q)}return!0}function B5($){let J=new Set;return OG.visit($,{Value(Q,X){if(X.anchor)J.add(X.anchor)}}),J}function U5($,J){for(let Q=1;;++Q){let X=`${$}${Q}`;if(!J.has(X))return X}}function RG($,J){let Q=[],X=new Map,Y=null;return{onAnchor:(G)=>{Q.push(G),Y??(Y=B5($));let q=U5(J,Y);return Y.add(q),q},setAnchors:()=>{for(let G of Q){let q=X.get(G);if(typeof q==="object"&&q.anchor&&(H5.isScalar(q.node)||H5.isCollection(q.node)))q.node.anchor=q.anchor;else{let W=Error("Failed to resolve repeated object (this should not happen)");throw W.source=G,W}}},sourceObjects:X}}LG.anchorIsValid=KG;LG.anchorNames=B5;LG.createNodeAnchors=RG;LG.findNewAnchor=U5});var V4=C((ZG)=>{function Z2($,J,Q,X){if(X&&typeof X==="object")if(Array.isArray(X))for(let Y=0,G=X.length;Y<G;++Y){let q=X[Y],W=Z2($,X,String(Y),q);if(W===void 0)delete X[Y];else if(W!==q)X[Y]=W}else if(X instanceof Map)for(let Y of Array.from(X.keys())){let G=X.get(Y),q=Z2($,X,Y,G);if(q===void 0)X.delete(Y);else if(q!==G)X.set(Y,q)}else if(X instanceof Set)for(let Y of Array.from(X)){let G=Z2($,X,Y,Y);if(G===void 0)X.delete(Y);else if(G!==Y)X.delete(Y),X.add(G)}else for(let[Y,G]of Object.entries(X)){let q=Z2($,X,Y,G);if(q===void 0)delete X[Y];else if(q!==G)X[Y]=q}return $.call(J,Q,X)}ZG.applyReviver=Z2});var J$=C((bG)=>{var PG=d();function V5($,J,Q){if(Array.isArray($))return $.map((X,Y)=>V5(X,String(Y),Q));if($&&typeof $.toJSON==="function"){if(!Q||!PG.hasAnchor($))return $.toJSON(J,Q);let X={aliasCount:0,count:1,res:void 0};Q.anchors.set($,X),Q.onCreate=(G)=>{X.res=G,delete Q.onCreate};let Y=$.toJSON(J,Q);if(Q.onCreate)Q.onCreate(Y);return Y}if(typeof $==="bigint"&&!Q?.keep)return Number($);return $}bG.toJS=V5});var f6=C((fG)=>{var SG=V4(),D5=d(),CG=J$();class F5{constructor($){Object.defineProperty(this,D5.NODE_TYPE,{value:$})}clone(){let $=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(this.range)$.range=this.range.slice();return $}toJS($,{mapAsMap:J,maxAliasCount:Q,onAnchor:X,reviver:Y}={}){if(!D5.isDocument($))throw TypeError("A document argument is required");let G={anchors:new Map,doc:$,keep:!0,mapAsMap:J===!0,mapKeyWarned:!1,maxAliasCount:typeof Q==="number"?Q:100},q=CG.toJS(this,"",G);if(typeof X==="function")for(let{count:W,res:z}of G.anchors.values())X(z,W);return typeof Y==="function"?SG.applyReviver(Y,{"":q},"",q):q}}fG.NodeBase=F5});var w2=C((yG)=>{var TG=C6(),vG=A2(),o$=d(),xG=f6(),hG=J$();class M5 extends xG.NodeBase{constructor($){super(o$.ALIAS);this.source=$,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve($,J){if(J?.maxAliasCount===0)throw ReferenceError("Alias resolution is disabled");let Q;if(J?.aliasResolveCache)Q=J.aliasResolveCache;else if(Q=[],vG.visit($,{Node:(Y,G)=>{if(o$.isAlias(G)||o$.hasAnchor(G))Q.push(G)}}),J)J.aliasResolveCache=Q;let X=void 0;for(let Y of Q){if(Y===this)break;if(Y.anchor===this.source)X=Y}if(X&&J){let{anchors:Y,doc:G,maxAliasCount:q}=J,W=Y.get(X);if(!W)hG.toJS(X,null,J),W=Y.get(X);if(W?.res===void 0)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(q>=0){if(W.count+=1,W.aliasCount===0)W.aliasCount=I6(G,X,Y);if(W.count*W.aliasCount>q)throw ReferenceError("Excessive alias count indicates a resource exhaustion attack")}}return X}toJSON($,J){if(!J)return{source:this.source};let Q=this.resolve(J.doc,J);if(!Q){let X=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(X)}return J.anchors.get(Q).res}toString($,J,Q){let X=`*${this.source}`;if($){if(TG.anchorIsValid(this.source),$.options.verifyAliasOrder&&!$.anchors.has(this.source)){let Y=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(Y)}if($.implicitKey)return`${X} `}return X}}function I6($,J,Q){if(o$.isAlias(J)){let X=J.resolve($),Y=Q&&X&&Q.get(X);return Y?Y.count*Y.aliasCount:0}else if(o$.isCollection(J)){let X=0;for(let Y of J.items){let G=I6($,Y,Q);if(G>X)X=G}return X}else if(o$.isPair(J)){let X=I6($,J.key,Q),Y=I6($,J.value,Q);return Math.max(X,Y)}return 1}yG.Alias=M5});var Y0=C((cG)=>{var kG=d(),mG=f6(),uG=J$(),lG=($)=>!$||typeof $!=="function"&&typeof $!=="object";class j$ extends mG.NodeBase{constructor($){super(kG.SCALAR);this.value=$}toJSON($,J){return J?.keep?this.value:uG.toJS(this.value,$,J)}toString(){return String(this.value)}}j$.BLOCK_FOLDED="BLOCK_FOLDED";j$.BLOCK_LITERAL="BLOCK_LITERAL";j$.PLAIN="PLAIN";j$.QUOTE_DOUBLE="QUOTE_DOUBLE";j$.QUOTE_SINGLE="QUOTE_SINGLE";cG.Scalar=j$;cG.isScalarValue=lG});var P2=C((sG)=>{var iG=w2(),N$=d(),O5=Y0(),nG="tag:yaml.org,2002:";function rG($,J,Q){if(J){let X=Q.filter((G)=>G.tag===J),Y=X.find((G)=>!G.format)??X[0];if(!Y)throw Error(`Tag ${J} not found`);return Y}return Q.find((X)=>X.identify?.($)&&!X.format)}function aG($,J,Q){if(N$.isDocument($))$=$.contents;if(N$.isNode($))return $;if(N$.isPair($)){let U=Q.schema[N$.MAP].createNode?.(Q.schema,null,Q);return U.items.push($),U}if($ instanceof String||$ instanceof Number||$ instanceof Boolean||typeof BigInt<"u"&&$ instanceof BigInt)$=$.valueOf();let{aliasDuplicateObjects:X,onAnchor:Y,onTagObj:G,schema:q,sourceObjects:W}=Q,z=void 0;if(X&&$&&typeof $==="object")if(z=W.get($),z)return z.anchor??(z.anchor=Y($)),new iG.Alias(z.anchor);else z={anchor:null,node:null},W.set($,z);if(J?.startsWith("!!"))J=nG+J.slice(2);let H=rG($,J,q.tags);if(!H){if($&&typeof $.toJSON==="function")$=$.toJSON();if(!$||typeof $!=="object"){let U=new O5.Scalar($);if(z)z.node=U;return U}H=$ instanceof Map?q[N$.MAP]:(Symbol.iterator in Object($))?q[N$.SEQ]:q[N$.MAP]}if(G)G(H),delete Q.onTagObj;let B=H?.createNode?H.createNode(Q.schema,$,Q):typeof H?.nodeClass?.from==="function"?H.nodeClass.from(Q.schema,$,Q):new O5.Scalar($);if(J)B.tag=J;else if(!H.default)B.tag=H.tag;if(z)z.node=B;return B}sG.createNode=aG});var T6=C(($q)=>{var tG=P2(),y0=d(),eG=f6();function D4($,J,Q){let X=Q;for(let Y=J.length-1;Y>=0;--Y){let G=J[Y];if(typeof G==="number"&&Number.isInteger(G)&&G>=0){let q=[];q[G]=X,X=q}else X=new Map([[G,X]])}return tG.createNode(X,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema:$,sourceObjects:new Map})}var K5=($)=>$==null||typeof $==="object"&&!!$[Symbol.iterator]().next().done;class R5 extends eG.NodeBase{constructor($,J){super($);Object.defineProperty(this,"schema",{value:J,configurable:!0,enumerable:!1,writable:!0})}clone($){let J=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if($)J.schema=$;if(J.items=J.items.map((Q)=>y0.isNode(Q)||y0.isPair(Q)?Q.clone($):Q),this.range)J.range=this.range.slice();return J}addIn($,J){if(K5($))this.add(J);else{let[Q,...X]=$,Y=this.get(Q,!0);if(y0.isCollection(Y))Y.addIn(X,J);else if(Y===void 0&&this.schema)this.set(Q,D4(this.schema,X,J));else throw Error(`Expected YAML collection at ${Q}. Remaining path: ${X}`)}}deleteIn($){let[J,...Q]=$;if(Q.length===0)return this.delete(J);let X=this.get(J,!0);if(y0.isCollection(X))return X.deleteIn(Q);else throw Error(`Expected YAML collection at ${J}. Remaining path: ${Q}`)}getIn($,J){let[Q,...X]=$,Y=this.get(Q,!0);if(X.length===0)return!J&&y0.isScalar(Y)?Y.value:Y;else return y0.isCollection(Y)?Y.getIn(X,J):void 0}hasAllNullValues($){return this.items.every((J)=>{if(!y0.isPair(J))return!1;let Q=J.value;return Q==null||$&&y0.isScalar(Q)&&Q.value==null&&!Q.commentBefore&&!Q.comment&&!Q.tag})}hasIn($){let[J,...Q]=$;if(Q.length===0)return this.has(J);let X=this.get(J,!0);return y0.isCollection(X)?X.hasIn(Q):!1}setIn($,J){let[Q,...X]=$;if(X.length===0)this.set(Q,J);else{let Y=this.get(Q,!0);if(y0.isCollection(Y))Y.setIn(X,J);else if(Y===void 0&&this.schema)this.set(Q,D4(this.schema,X,J));else throw Error(`Expected YAML collection at ${Q}. Remaining path: ${X}`)}}}$q.Collection=R5;$q.collectionFromPath=D4;$q.isEmptyPath=K5});var b2=C((qq)=>{var Yq=($)=>$.replace(/^(?!$)(?: $)?/gm,"#");function F4($,J){if(/^\n+$/.test($))return $.substring(1);return J?$.replace(/^(?! *$)/gm,J):$}var Gq=($,J,Q)=>$.endsWith(`
4
+ `)?F4(Q,J):Q.includes(`
5
5
  `)?`
6
- `+z4(Q,J):($.endsWith(" ")?"":" ")+Q;eG.indentComment=z4;eG.lineComment=tG;eG.stringifyComment=oG});var O5=C((WY)=>{function XY($,J,Q="flow",{indentAtStart:X,lineWidth:W=80,minContentWidth:G=20,onFold:Y,onOverflow:q}={}){if(!W||W<0)return $;if(W<G)G=0;let H=Math.max(1+G,1+W-J.length);if($.length<=H)return $;let B=[],U={},z=W-J.length;if(typeof X==="number")if(X>W-Math.max(2,G))B.push(0);else z=W-X;let V=void 0,M=void 0,F=!1,D=-1,O=-1,R=-1;if(Q==="block"){if(D=F5($,D,J.length),D!==-1)z=D+H}for(let _;_=$[D+=1];){if(Q==="quoted"&&_==="\\"){switch(O=D,$[D+1]){case"x":D+=3;break;case"u":D+=5;break;case"U":D+=9;break;default:D+=1}R=D}if(_===`
7
- `){if(Q==="block")D=F5($,D,J.length);z=D+J.length+H,V=void 0}else{if(_===" "&&M&&M!==" "&&M!==`
8
- `&&M!=="\t"){let Z=$[D+1];if(Z&&Z!==" "&&Z!==`
9
- `&&Z!=="\t")V=D}if(D>=z)if(V)B.push(V),z=V+H,V=void 0;else if(Q==="quoted"){while(M===" "||M==="\t")M=_,_=$[D+=1],F=!0;let Z=D>R+1?D-2:O-1;if(U[Z])return $;B.push(Z),U[Z]=!0,z=Z+H,V=void 0}else F=!0}M=_}if(F&&q)q();if(B.length===0)return $;if(Y)Y();let L=$.slice(0,B[0]);for(let _=0;_<B.length;++_){let Z=B[_],P=B[_+1]||$.length;if(Z===0)L=`
10
- ${J}${$.slice(0,P)}`;else{if(Q==="quoted"&&U[Z])L+=`${$[Z]}\\`;L+=`
11
- ${J}${$.slice(Z+1,P)}`}}return L}function F5($,J,Q){let X=J,W=J+1,G=$[W];while(G===" "||G==="\t")if(J<W+Q)G=$[++J];else{do G=$[++J];while(G&&G!==`
12
- `);X=J,W=J+1,G=$[W]}return X}WY.FOLD_BLOCK="block";WY.FOLD_FLOW="flow";WY.FOLD_QUOTED="quoted";WY.foldFlowLines=XY});var b2=C((zY)=>{var P0=W0(),e0=O5(),T6=($,J)=>({indentAtStart:J?$.indent.length:$.indentAtStart,lineWidth:$.options.lineWidth,minContentWidth:$.options.minContentWidth}),I6=($)=>/^(%|---|\.\.\.)/m.test($);function BY($,J,Q){if(!J||J<0)return!1;let X=J-Q,W=$.length;if(W<=X)return!1;for(let G=0,Y=0;G<W;++G)if($[G]===`
13
- `){if(G-Y>X)return!0;if(Y=G+1,W-Y<=X)return!1}return!0}function w2($,J){let Q=JSON.stringify($);if(J.options.doubleQuotedAsJSON)return Q;let{implicitKey:X}=J,W=J.options.doubleQuotedMinMultiLineLength,G=J.indent||(I6($)?" ":""),Y="",q=0;for(let H=0,B=Q[H];B;B=Q[++H]){if(B===" "&&Q[H+1]==="\\"&&Q[H+2]==="n")Y+=Q.slice(q,H)+"\\ ",H+=1,q=H,B="\\";if(B==="\\")switch(Q[H+1]){case"u":{Y+=Q.slice(q,H);let U=Q.substr(H+2,4);switch(U){case"0000":Y+="\\0";break;case"0007":Y+="\\a";break;case"000b":Y+="\\v";break;case"001b":Y+="\\e";break;case"0085":Y+="\\N";break;case"00a0":Y+="\\_";break;case"2028":Y+="\\L";break;case"2029":Y+="\\P";break;default:if(U.substr(0,2)==="00")Y+="\\x"+U.substr(2);else Y+=Q.substr(H,6)}H+=5,q=H+1}break;case"n":if(X||Q[H+2]==='"'||Q.length<W)H+=1;else{Y+=Q.slice(q,H)+`
14
-
15
- `;while(Q[H+2]==="\\"&&Q[H+3]==="n"&&Q[H+4]!=='"')Y+=`
16
- `,H+=2;if(Y+=G,Q[H+2]===" ")Y+="\\";H+=1,q=H+1}break;default:H+=1}}return Y=q?Y+Q.slice(q):Q,X?Y:e0.foldFlowLines(Y,G,e0.FOLD_QUOTED,T6(J,!1))}function D4($,J){if(J.options.singleQuote===!1||J.implicitKey&&$.includes(`
17
- `)||/[ \t]\n|\n[ \t]/.test($))return w2($,J);let Q=J.indent||(I6($)?" ":""),X="'"+$.replace(/'/g,"''").replace(/\n+/g,`$&
18
- ${Q}`)+"'";return J.implicitKey?X:e0.foldFlowLines(X,Q,e0.FOLD_FLOW,T6(J,!1))}function n$($,J){let{singleQuote:Q}=J.options,X;if(Q===!1)X=w2;else{let W=$.includes('"'),G=$.includes("'");if(W&&!G)X=D4;else if(G&&!W)X=w2;else X=Q?D4:w2}return X($,J)}var F4;try{F4=new RegExp(`(^|(?<!
6
+ `+F4(Q,J):($.endsWith(" ")?"":" ")+Q;qq.indentComment=F4;qq.lineComment=Gq;qq.stringifyComment=Yq});var j5=C((Uq)=>{function Bq($,J,Q="flow",{indentAtStart:X,lineWidth:Y=80,minContentWidth:G=20,onFold:q,onOverflow:W}={}){if(!Y||Y<0)return $;if(Y<G)G=0;let z=Math.max(1+G,1+Y-J.length);if($.length<=z)return $;let H=[],B={},U=Y-J.length;if(typeof X==="number")if(X>Y-Math.max(2,G))H.push(0);else U=Y-X;let V=void 0,O=void 0,F=!1,D=-1,M=-1,R=-1;if(Q==="block"){if(D=L5($,D,J.length),D!==-1)U=D+z}for(let N;N=$[D+=1];){if(Q==="quoted"&&N==="\\"){switch(M=D,$[D+1]){case"x":D+=3;break;case"u":D+=5;break;case"U":D+=9;break;default:D+=1}R=D}if(N===`
7
+ `){if(Q==="block")D=L5($,D,J.length);U=D+J.length+z,V=void 0}else{if(N===" "&&O&&O!==" "&&O!==`
8
+ `&&O!=="\t"){let Z=$[D+1];if(Z&&Z!==" "&&Z!==`
9
+ `&&Z!=="\t")V=D}if(D>=U)if(V)H.push(V),U=V+z,V=void 0;else if(Q==="quoted"){while(O===" "||O==="\t")O=N,N=$[D+=1],F=!0;let Z=D>R+1?D-2:M-1;if(B[Z])return $;H.push(Z),B[Z]=!0,U=Z+z,V=void 0}else F=!0}O=N}if(F&&W)W();if(H.length===0)return $;if(q)q();let L=$.slice(0,H[0]);for(let N=0;N<H.length;++N){let Z=H[N],b=H[N+1]||$.length;if(Z===0)L=`
10
+ ${J}${$.slice(0,b)}`;else{if(Q==="quoted"&&B[Z])L+=`${$[Z]}\\`;L+=`
11
+ ${J}${$.slice(Z+1,b)}`}}return L}function L5($,J,Q){let X=J,Y=J+1,G=$[Y];while(G===" "||G==="\t")if(J<Y+Q)G=$[++J];else{do G=$[++J];while(G&&G!==`
12
+ `);X=J,Y=J+1,G=$[Y]}return X}Uq.FOLD_BLOCK="block";Uq.FOLD_FLOW="flow";Uq.FOLD_QUOTED="quoted";Uq.foldFlowLines=Bq});var S2=C((Lq)=>{var b0=Y0(),Q$=j5(),x6=($,J)=>({indentAtStart:J?$.indent.length:$.indentAtStart,lineWidth:$.options.lineWidth,minContentWidth:$.options.minContentWidth}),h6=($)=>/^(%|---|\.\.\.)/m.test($);function Oq($,J,Q){if(!J||J<0)return!1;let X=J-Q,Y=$.length;if(Y<=X)return!1;for(let G=0,q=0;G<Y;++G)if($[G]===`
13
+ `){if(G-q>X)return!0;if(q=G+1,Y-q<=X)return!1}return!0}function E2($,J){let Q=JSON.stringify($);if(J.options.doubleQuotedAsJSON)return Q;let{implicitKey:X}=J,Y=J.options.doubleQuotedMinMultiLineLength,G=J.indent||(h6($)?" ":""),q="",W=0;for(let z=0,H=Q[z];H;H=Q[++z]){if(H===" "&&Q[z+1]==="\\"&&Q[z+2]==="n")q+=Q.slice(W,z)+"\\ ",z+=1,W=z,H="\\";if(H==="\\")switch(Q[z+1]){case"u":{q+=Q.slice(W,z);let B=Q.substr(z+2,4);switch(B){case"0000":q+="\\0";break;case"0007":q+="\\a";break;case"000b":q+="\\v";break;case"001b":q+="\\e";break;case"0085":q+="\\N";break;case"00a0":q+="\\_";break;case"2028":q+="\\L";break;case"2029":q+="\\P";break;default:if(B.substr(0,2)==="00")q+="\\x"+B.substr(2);else q+=Q.substr(z,6)}z+=5,W=z+1}break;case"n":if(X||Q[z+2]==='"'||Q.length<Y)z+=1;else{q+=Q.slice(W,z)+`
14
+
15
+ `;while(Q[z+2]==="\\"&&Q[z+3]==="n"&&Q[z+4]!=='"')q+=`
16
+ `,z+=2;if(q+=G,Q[z+2]===" ")q+="\\";z+=1,W=z+1}break;default:z+=1}}return q=W?q+Q.slice(W):Q,X?q:Q$.foldFlowLines(q,G,Q$.FOLD_QUOTED,x6(J,!1))}function M4($,J){if(J.options.singleQuote===!1||J.implicitKey&&$.includes(`
17
+ `)||/[ \t]\n|\n[ \t]/.test($))return E2($,J);let Q=J.indent||(h6($)?" ":""),X="'"+$.replace(/'/g,"''").replace(/\n+/g,`$&
18
+ ${Q}`)+"'";return J.implicitKey?X:Q$.foldFlowLines(X,Q,Q$.FOLD_FLOW,x6(J,!1))}function t$($,J){let{singleQuote:Q}=J.options,X;if(Q===!1)X=E2;else{let Y=$.includes('"'),G=$.includes("'");if(Y&&!G)X=M4;else if(G&&!Y)X=E2;else X=Q?M4:E2}return X($,J)}var O4;try{O4=new RegExp(`(^|(?<!
19
19
  ))
20
20
  +(?!
21
- |$)`,"g")}catch{F4=/\n+(?!\n|$)/g}function f6({comment:$,type:J,value:Q},X,W,G){let{blockQuote:Y,commentString:q,lineWidth:H}=X.options;if(!Y||/\n[\t ]+$/.test(Q))return n$(Q,X);let B=X.indent||(X.forceBlockIndent||I6(Q)?" ":""),U=Y==="literal"?!0:Y==="folded"||J===P0.Scalar.BLOCK_FOLDED?!1:J===P0.Scalar.BLOCK_LITERAL?!0:!BY(Q,H,B.length);if(!Q)return U?`|
21
+ |$)`,"g")}catch{O4=/\n+(?!\n|$)/g}function v6({comment:$,type:J,value:Q},X,Y,G){let{blockQuote:q,commentString:W,lineWidth:z}=X.options;if(!q||/\n[\t ]+$/.test(Q))return t$(Q,X);let H=X.indent||(X.forceBlockIndent||h6(Q)?" ":""),B=q==="literal"?!0:q==="folded"||J===b0.Scalar.BLOCK_FOLDED?!1:J===b0.Scalar.BLOCK_LITERAL?!0:!Oq(Q,z,H.length);if(!Q)return B?`|
22
22
  `:`>
23
- `;let z,V;for(V=Q.length;V>0;--V){let P=Q[V-1];if(P!==`
24
- `&&P!=="\t"&&P!==" ")break}let M=Q.substring(V),F=M.indexOf(`
25
- `);if(F===-1)z="-";else if(Q===M||F!==M.length-1){if(z="+",G)G()}else z="";if(M){if(Q=Q.slice(0,-M.length),M[M.length-1]===`
26
- `)M=M.slice(0,-1);M=M.replace(F4,`$&${B}`)}let D=!1,O,R=-1;for(O=0;O<Q.length;++O){let P=Q[O];if(P===" ")D=!0;else if(P===`
27
- `)R=O;else break}let L=Q.substring(0,R<O?R+1:O);if(L)Q=Q.substring(L.length),L=L.replace(/\n+/g,`$&${B}`);let Z=(D?B?"2":"1":"")+z;if($){if(Z+=" "+q($.replace(/ ?[\r\n]+/g," ")),W)W()}if(!U){let P=Q.replace(/\n+/g,`
28
- $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${B}`),w=!1,f=T6(X,!0);if(Y!=="folded"&&J!==P0.Scalar.BLOCK_FOLDED)f.onOverflow=()=>{w=!0};let N=e0.foldFlowLines(`${L}${P}${M}`,B,e0.FOLD_BLOCK,f);if(!w)return`>${Z}
29
- ${B}${N}`}return Q=Q.replace(/\n+/g,`$&${B}`),`|${Z}
30
- ${B}${L}${Q}${M}`}function UY($,J,Q,X){let{type:W,value:G}=$,{actualString:Y,implicitKey:q,indent:H,indentStep:B,inFlow:U}=J;if(q&&G.includes(`
31
- `)||U&&/[[\]{},]/.test(G))return n$(G,J);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(G))return q||U||!G.includes(`
32
- `)?n$(G,J):f6($,J,Q,X);if(!q&&!U&&W!==P0.Scalar.PLAIN&&G.includes(`
33
- `))return f6($,J,Q,X);if(I6(G)){if(H==="")return J.forceBlockIndent=!0,f6($,J,Q,X);else if(q&&H===B)return n$(G,J)}let z=G.replace(/\n+/g,`$&
34
- ${H}`);if(Y){let V=(D)=>D.default&&D.tag!=="tag:yaml.org,2002:str"&&D.test?.test(z),{compat:M,tags:F}=J.doc.schema;if(F.some(V)||M?.some(V))return n$(G,J)}return q?z:e0.foldFlowLines(z,H,e0.FOLD_FLOW,T6(J,!1))}function VY($,J,Q,X){let{implicitKey:W,inFlow:G}=J,Y=typeof $.value==="string"?$:Object.assign({},$,{value:String($.value)}),{type:q}=$;if(q!==P0.Scalar.QUOTE_DOUBLE){if(/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(Y.value))q=P0.Scalar.QUOTE_DOUBLE}let H=(U)=>{switch(U){case P0.Scalar.BLOCK_FOLDED:case P0.Scalar.BLOCK_LITERAL:return W||G?n$(Y.value,J):f6(Y,J,Q,X);case P0.Scalar.QUOTE_DOUBLE:return w2(Y.value,J);case P0.Scalar.QUOTE_SINGLE:return D4(Y.value,J);case P0.Scalar.PLAIN:return UY(Y,J,Q,X);default:return null}},B=H(q);if(B===null){let{defaultKeyType:U,defaultStringType:z}=J.options,V=W&&U||z;if(B=H(V),B===null)throw Error(`Unsupported default string type ${V}`)}return B}zY.stringifyString=VY});var P2=C((_Y)=>{var FY=P6(),$$=p(),OY=Z2(),MY=b2();function KY($,J){let Q=Object.assign({blockQuote:!0,commentString:OY.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},$.schema.toStringOptions,J),X;switch(Q.collectionStyle){case"block":X=!1;break;case"flow":X=!0;break;default:X=null}return{anchors:new Set,doc:$,flowCollectionPadding:Q.flowCollectionPadding?" ":"",indent:"",indentStep:typeof Q.indent==="number"?" ".repeat(Q.indent):" ",inFlow:X,options:Q}}function RY($,J){if(J.tag){let W=$.filter((G)=>G.tag===J.tag);if(W.length>0)return W.find((G)=>G.format===J.format)??W[0]}let Q=void 0,X;if($$.isScalar(J)){X=J.value;let W=$.filter((G)=>G.identify?.(X));if(W.length>1){let G=W.filter((Y)=>Y.test);if(G.length>0)W=G}Q=W.find((G)=>G.format===J.format)??W.find((G)=>!G.format)}else X=J,Q=$.find((W)=>W.nodeClass&&X instanceof W.nodeClass);if(!Q){let W=X?.constructor?.name??(X===null?"null":typeof X);throw Error(`Tag not resolved for ${W} value`)}return Q}function LY($,J,{anchors:Q,doc:X}){if(!X.directives)return"";let W=[],G=($$.isScalar($)||$$.isCollection($))&&$.anchor;if(G&&FY.anchorIsValid(G))Q.add(G),W.push(`&${G}`);let Y=$.tag??(J.default?null:J.tag);if(Y)W.push(X.directives.tagString(Y));return W.join(" ")}function AY($,J,Q,X){if($$.isPair($))return $.toString(J,Q,X);if($$.isAlias($)){if(J.doc.directives)return $.toString(J);if(J.resolvedAliases?.has($))throw TypeError("Cannot stringify circular structure without alias nodes");else{if(J.resolvedAliases)J.resolvedAliases.add($);else J.resolvedAliases=new Set([$]);$=$.resolve(J.doc)}}let W=void 0,G=$$.isNode($)?$:J.doc.createNode($,{onTagObj:(H)=>W=H});W??(W=RY(J.doc.schema.tags,G));let Y=LY(G,W,J);if(Y.length>0)J.indentAtStart=(J.indentAtStart??0)+Y.length+1;let q=typeof W.stringify==="function"?W.stringify(G,J,Q,X):$$.isScalar(G)?MY.stringifyString(G,J,Q,X):G.toString(J,Q,X);if(!Y)return q;return $$.isScalar(G)||q[0]==="{"||q[0]==="["?`${Y} ${q}`:`${Y}
35
- ${J.indent}${q}`}_Y.createStringifyContext=KY;_Y.stringify=AY});var R5=C((wY)=>{var d0=p(),M5=W0(),K5=P2(),S2=Z2();function ZY({key:$,value:J},Q,X,W){let{allNullValues:G,doc:Y,indent:q,indentStep:H,options:{commentString:B,indentSeq:U,simpleKeys:z}}=Q,V=d0.isNode($)&&$.comment||null;if(z){if(V)throw Error("With simple keys, key nodes cannot have comments");if(d0.isCollection($)||!d0.isNode($)&&typeof $==="object")throw Error("With simple keys, collection cannot be used as a key value")}let M=!z&&(!$||V&&J==null&&!Q.inFlow||d0.isCollection($)||(d0.isScalar($)?$.type===M5.Scalar.BLOCK_FOLDED||$.type===M5.Scalar.BLOCK_LITERAL:typeof $==="object"));Q=Object.assign({},Q,{allNullValues:!1,implicitKey:!M&&(z||!G),indent:q+H});let F=!1,D=!1,O=K5.stringify($,Q,()=>F=!0,()=>D=!0);if(!M&&!Q.inFlow&&O.length>1024){if(z)throw Error("With simple keys, single line scalar must not span more than 1024 characters");M=!0}if(Q.inFlow){if(G||J==null){if(F&&X)X();return O===""?"?":M?`? ${O}`:O}}else if(G&&!z||J==null&&M){if(O=`? ${O}`,V&&!F)O+=S2.lineComment(O,Q.indent,B(V));else if(D&&W)W();return O}if(F)V=null;if(M){if(V)O+=S2.lineComment(O,Q.indent,B(V));O=`? ${O}
36
- ${q}:`}else if(O=`${O}:`,V)O+=S2.lineComment(O,Q.indent,B(V));let R,L,_;if(d0.isNode(J))R=!!J.spaceBefore,L=J.commentBefore,_=J.comment;else if(R=!1,L=null,_=null,J&&typeof J==="object")J=Y.createNode(J);if(Q.implicitKey=!1,!M&&!V&&d0.isScalar(J))Q.indentAtStart=O.length+1;if(D=!1,!U&&H.length>=2&&!Q.inFlow&&!M&&d0.isSeq(J)&&!J.flow&&!J.tag&&!J.anchor)Q.indent=Q.indent.substring(2);let Z=!1,P=K5.stringify(J,Q,()=>Z=!0,()=>D=!0),w=" ";if(V||R||L){if(w=R?`
37
- `:"",L){let f=B(L);w+=`
38
- ${S2.indentComment(f,Q.indent)}`}if(P===""&&!Q.inFlow){if(w===`
39
- `&&_)w=`
23
+ `;let U,V;for(V=Q.length;V>0;--V){let b=Q[V-1];if(b!==`
24
+ `&&b!=="\t"&&b!==" ")break}let O=Q.substring(V),F=O.indexOf(`
25
+ `);if(F===-1)U="-";else if(Q===O||F!==O.length-1){if(U="+",G)G()}else U="";if(O){if(Q=Q.slice(0,-O.length),O[O.length-1]===`
26
+ `)O=O.slice(0,-1);O=O.replace(O4,`$&${H}`)}let D=!1,M,R=-1;for(M=0;M<Q.length;++M){let b=Q[M];if(b===" ")D=!0;else if(b===`
27
+ `)R=M;else break}let L=Q.substring(0,R<M?R+1:M);if(L)Q=Q.substring(L.length),L=L.replace(/\n+/g,`$&${H}`);let Z=(D?H?"2":"1":"")+U;if($){if(Z+=" "+W($.replace(/ ?[\r\n]+/g," ")),Y)Y()}if(!B){let b=Q.replace(/\n+/g,`
28
+ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${H}`),w=!1,f=x6(X,!0);if(q!=="folded"&&J!==b0.Scalar.BLOCK_FOLDED)f.onOverflow=()=>{w=!0};let A=Q$.foldFlowLines(`${L}${b}${O}`,H,Q$.FOLD_BLOCK,f);if(!w)return`>${Z}
29
+ ${H}${A}`}return Q=Q.replace(/\n+/g,`$&${H}`),`|${Z}
30
+ ${H}${L}${Q}${O}`}function Kq($,J,Q,X){let{type:Y,value:G}=$,{actualString:q,implicitKey:W,indent:z,indentStep:H,inFlow:B}=J;if(W&&G.includes(`
31
+ `)||B&&/[[\]{},]/.test(G))return t$(G,J);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(G))return W||B||!G.includes(`
32
+ `)?t$(G,J):v6($,J,Q,X);if(!W&&!B&&Y!==b0.Scalar.PLAIN&&G.includes(`
33
+ `))return v6($,J,Q,X);if(h6(G)){if(z==="")return J.forceBlockIndent=!0,v6($,J,Q,X);else if(W&&z===H)return t$(G,J)}let U=G.replace(/\n+/g,`$&
34
+ ${z}`);if(q){let V=(D)=>D.default&&D.tag!=="tag:yaml.org,2002:str"&&D.test?.test(U),{compat:O,tags:F}=J.doc.schema;if(F.some(V)||O?.some(V))return t$(G,J)}return W?U:Q$.foldFlowLines(U,z,Q$.FOLD_FLOW,x6(J,!1))}function Rq($,J,Q,X){let{implicitKey:Y,inFlow:G}=J,q=typeof $.value==="string"?$:Object.assign({},$,{value:String($.value)}),{type:W}=$;if(W!==b0.Scalar.QUOTE_DOUBLE){if(/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(q.value))W=b0.Scalar.QUOTE_DOUBLE}let z=(B)=>{switch(B){case b0.Scalar.BLOCK_FOLDED:case b0.Scalar.BLOCK_LITERAL:return Y||G?t$(q.value,J):v6(q,J,Q,X);case b0.Scalar.QUOTE_DOUBLE:return E2(q.value,J);case b0.Scalar.QUOTE_SINGLE:return M4(q.value,J);case b0.Scalar.PLAIN:return Kq(q,J,Q,X);default:return null}},H=z(W);if(H===null){let{defaultKeyType:B,defaultStringType:U}=J.options,V=Y&&B||U;if(H=z(V),H===null)throw Error(`Unsupported default string type ${V}`)}return H}Lq.stringifyString=Rq});var C2=C((Eq)=>{var Nq=C6(),X$=d(),_q=b2(),Aq=S2();function Zq($,J){let Q=Object.assign({blockQuote:!0,commentString:_q.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},$.schema.toStringOptions,J),X;switch(Q.collectionStyle){case"block":X=!1;break;case"flow":X=!0;break;default:X=null}return{anchors:new Set,doc:$,flowCollectionPadding:Q.flowCollectionPadding?" ":"",indent:"",indentStep:typeof Q.indent==="number"?" ".repeat(Q.indent):" ",inFlow:X,options:Q}}function wq($,J){if(J.tag){let Y=$.filter((G)=>G.tag===J.tag);if(Y.length>0)return Y.find((G)=>G.format===J.format)??Y[0]}let Q=void 0,X;if(X$.isScalar(J)){X=J.value;let Y=$.filter((G)=>G.identify?.(X));if(Y.length>1){let G=Y.filter((q)=>q.test);if(G.length>0)Y=G}Q=Y.find((G)=>G.format===J.format)??Y.find((G)=>!G.format)}else X=J,Q=$.find((Y)=>Y.nodeClass&&X instanceof Y.nodeClass);if(!Q){let Y=X?.constructor?.name??(X===null?"null":typeof X);throw Error(`Tag not resolved for ${Y} value`)}return Q}function Pq($,J,{anchors:Q,doc:X}){if(!X.directives)return"";let Y=[],G=(X$.isScalar($)||X$.isCollection($))&&$.anchor;if(G&&Nq.anchorIsValid(G))Q.add(G),Y.push(`&${G}`);let q=$.tag??(J.default?null:J.tag);if(q)Y.push(X.directives.tagString(q));return Y.join(" ")}function bq($,J,Q,X){if(X$.isPair($))return $.toString(J,Q,X);if(X$.isAlias($)){if(J.doc.directives)return $.toString(J);if(J.resolvedAliases?.has($))throw TypeError("Cannot stringify circular structure without alias nodes");else{if(J.resolvedAliases)J.resolvedAliases.add($);else J.resolvedAliases=new Set([$]);$=$.resolve(J.doc)}}let Y=void 0,G=X$.isNode($)?$:J.doc.createNode($,{onTagObj:(z)=>Y=z});Y??(Y=wq(J.doc.schema.tags,G));let q=Pq(G,Y,J);if(q.length>0)J.indentAtStart=(J.indentAtStart??0)+q.length+1;let W=typeof Y.stringify==="function"?Y.stringify(G,J,Q,X):X$.isScalar(G)?Aq.stringifyString(G,J,Q,X):G.toString(J,Q,X);if(!q)return W;return X$.isScalar(G)||W[0]==="{"||W[0]==="["?`${q} ${W}`:`${q}
35
+ ${J.indent}${W}`}Eq.createStringifyContext=Zq;Eq.stringify=bq});var A5=C((Iq)=>{var i0=d(),N5=Y0(),_5=C2(),f2=b2();function fq({key:$,value:J},Q,X,Y){let{allNullValues:G,doc:q,indent:W,indentStep:z,options:{commentString:H,indentSeq:B,simpleKeys:U}}=Q,V=i0.isNode($)&&$.comment||null;if(U){if(V)throw Error("With simple keys, key nodes cannot have comments");if(i0.isCollection($)||!i0.isNode($)&&typeof $==="object")throw Error("With simple keys, collection cannot be used as a key value")}let O=!U&&(!$||V&&J==null&&!Q.inFlow||i0.isCollection($)||(i0.isScalar($)?$.type===N5.Scalar.BLOCK_FOLDED||$.type===N5.Scalar.BLOCK_LITERAL:typeof $==="object"));Q=Object.assign({},Q,{allNullValues:!1,implicitKey:!O&&(U||!G),indent:W+z});let F=!1,D=!1,M=_5.stringify($,Q,()=>F=!0,()=>D=!0);if(!O&&!Q.inFlow&&M.length>1024){if(U)throw Error("With simple keys, single line scalar must not span more than 1024 characters");O=!0}if(Q.inFlow){if(G||J==null){if(F&&X)X();return M===""?"?":O?`? ${M}`:M}}else if(G&&!U||J==null&&O){if(M=`? ${M}`,V&&!F)M+=f2.lineComment(M,Q.indent,H(V));else if(D&&Y)Y();return M}if(F)V=null;if(O){if(V)M+=f2.lineComment(M,Q.indent,H(V));M=`? ${M}
36
+ ${W}:`}else if(M=`${M}:`,V)M+=f2.lineComment(M,Q.indent,H(V));let R,L,N;if(i0.isNode(J))R=!!J.spaceBefore,L=J.commentBefore,N=J.comment;else if(R=!1,L=null,N=null,J&&typeof J==="object")J=q.createNode(J);if(Q.implicitKey=!1,!O&&!V&&i0.isScalar(J))Q.indentAtStart=M.length+1;if(D=!1,!B&&z.length>=2&&!Q.inFlow&&!O&&i0.isSeq(J)&&!J.flow&&!J.tag&&!J.anchor)Q.indent=Q.indent.substring(2);let Z=!1,b=_5.stringify(J,Q,()=>Z=!0,()=>D=!0),w=" ";if(V||R||L){if(w=R?`
37
+ `:"",L){let f=H(L);w+=`
38
+ ${f2.indentComment(f,Q.indent)}`}if(b===""&&!Q.inFlow){if(w===`
39
+ `&&N)w=`
40
40
 
41
41
  `}else w+=`
42
- ${Q.indent}`}else if(!M&&d0.isCollection(J)){let f=P[0],N=P.indexOf(`
43
- `),E=N!==-1,x=Q.inFlow??J.flow??J.items.length===0;if(E||!x){let n=!1;if(E&&(f==="&"||f==="!")){let g=P.indexOf(" ");if(f==="&"&&g!==-1&&g<N&&P[g+1]==="!")g=P.indexOf(" ",g+1);if(g===-1||N<g)n=!0}if(!n)w=`
44
- ${Q.indent}`}}else if(P===""||P[0]===`
45
- `)w="";if(O+=w+P,Q.inFlow){if(Z&&X)X()}else if(_&&!Z)O+=S2.lineComment(O,Q.indent,B(_));else if(D&&W)W();return O}wY.stringifyPair=ZY});var O4=C((EY)=>{var L5=B6("process");function PY($,...J){if($==="debug")console.log(...J)}function SY($,J){if($==="debug"||$==="warn")if(typeof L5.emitWarning==="function")L5.emitWarning(J);else console.warn(J)}EY.debug=PY;EY.warn=SY});var y6=C((IY)=>{var h6=p(),A5=W0(),v6="<<",x6={identify:($)=>$===v6||typeof $==="symbol"&&$.description===v6,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new A5.Scalar(Symbol(v6)),{addToJSMap:_5}),stringify:()=>v6},TY=($,J)=>(x6.identify(J)||h6.isScalar(J)&&(!J.type||J.type===A5.Scalar.PLAIN)&&x6.identify(J.value))&&$?.doc.schema.tags.some((Q)=>Q.tag===x6.tag&&Q.default);function _5($,J,Q){let X=j5($,Q);if(h6.isSeq(X))for(let W of X.items)M4($,J,W);else if(Array.isArray(X))for(let W of X)M4($,J,W);else M4($,J,X)}function M4($,J,Q){let X=j5($,Q);if(!h6.isMap(X))throw Error("Merge sources must be maps or map aliases");let W=X.toJSON(null,$,Map);for(let[G,Y]of W)if(J instanceof Map){if(!J.has(G))J.set(G,Y)}else if(J instanceof Set)J.add(G);else if(!Object.prototype.hasOwnProperty.call(J,G))Object.defineProperty(J,G,{value:Y,writable:!0,enumerable:!0,configurable:!0});return J}function j5($,J){return $&&h6.isAlias(J)?J.resolve($.doc,$):J}IY.addMergeToJSMap=_5;IY.isMergeKey=TY;IY.merge=x6});var R4=C((uY)=>{var yY=O4(),N5=y6(),gY=P2(),Z5=p(),K4=t0();function kY($,J,{key:Q,value:X}){if(Z5.isNode(Q)&&Q.addToJSMap)Q.addToJSMap($,J,X);else if(N5.isMergeKey($,Q))N5.addMergeToJSMap($,J,X);else{let W=K4.toJS(Q,"",$);if(J instanceof Map)J.set(W,K4.toJS(X,W,$));else if(J instanceof Set)J.add(W);else{let G=mY(Q,W,$),Y=K4.toJS(X,G,$);if(G in J)Object.defineProperty(J,G,{value:Y,writable:!0,enumerable:!0,configurable:!0});else J[G]=Y}}return J}function mY($,J,Q){if(J===null)return"";if(typeof J!=="object")return String(J);if(Z5.isNode($)&&Q?.doc){let X=gY.createStringifyContext(Q.doc,{});X.anchors=new Set;for(let G of Q.anchors.keys())X.anchors.add(G.anchor);X.inFlow=!0,X.inStringifyKey=!0;let W=$.toString(X);if(!Q.mapKeyWarned){let G=JSON.stringify(W);if(G.length>40)G=G.substring(0,36)+'..."';yY.warn(Q.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${G}. Set mapAsMap: true to use object keys.`),Q.mapKeyWarned=!0}return W}return JSON.stringify(J)}uY.addPairToJSMap=kY});var J$=C((iY)=>{var w5=N2(),cY=R5(),dY=R4(),g6=p();function pY($,J,Q){let X=w5.createNode($,void 0,Q),W=w5.createNode(J,void 0,Q);return new k6(X,W)}class k6{constructor($,J=null){Object.defineProperty(this,g6.NODE_TYPE,{value:g6.PAIR}),this.key=$,this.value=J}clone($){let{key:J,value:Q}=this;if(g6.isNode(J))J=J.clone($);if(g6.isNode(Q))Q=Q.clone($);return new k6(J,Q)}toJSON($,J){let Q=J?.mapAsMap?new Map:{};return dY.addPairToJSMap(J,Q,this)}toString($,J,Q){return $?.doc?cY.stringifyPair(this,$,J,Q):JSON.stringify(this)}}iY.Pair=k6;iY.createPair=pY});var L4=C((tY)=>{var K$=p(),b5=P2(),m6=Z2();function aY($,J,Q){return(J.inFlow??$.flow?oY:sY)($,J,Q)}function sY({comment:$,items:J},Q,{blockItemPrefix:X,flowChars:W,itemIndent:G,onChompKeep:Y,onComment:q}){let{indent:H,options:{commentString:B}}=Q,U=Object.assign({},Q,{indent:G,type:null}),z=!1,V=[];for(let F=0;F<J.length;++F){let D=J[F],O=null;if(K$.isNode(D)){if(!z&&D.spaceBefore)V.push("");if(u6(Q,V,D.commentBefore,z),D.comment)O=D.comment}else if(K$.isPair(D)){let L=K$.isNode(D.key)?D.key:null;if(L){if(!z&&L.spaceBefore)V.push("");u6(Q,V,L.commentBefore,z)}}z=!1;let R=b5.stringify(D,U,()=>O=null,()=>z=!0);if(O)R+=m6.lineComment(R,G,B(O));if(z&&O)z=!1;V.push(X+R)}let M;if(V.length===0)M=W.start+W.end;else{M=V[0];for(let F=1;F<V.length;++F){let D=V[F];M+=D?`
46
- ${H}${D}`:`
47
- `}}if($){if(M+=`
48
- `+m6.indentComment(B($),H),q)q()}else if(z&&Y)Y();return M}function oY({items:$},J,{flowChars:Q,itemIndent:X}){let{indent:W,indentStep:G,flowCollectionPadding:Y,options:{commentString:q}}=J;X+=G;let H=Object.assign({},J,{indent:X,inFlow:!0,type:null}),B=!1,U=0,z=[];for(let F=0;F<$.length;++F){let D=$[F],O=null;if(K$.isNode(D)){if(D.spaceBefore)z.push("");if(u6(J,z,D.commentBefore,!1),D.comment)O=D.comment}else if(K$.isPair(D)){let L=K$.isNode(D.key)?D.key:null;if(L){if(L.spaceBefore)z.push("");if(u6(J,z,L.commentBefore,!1),L.comment)B=!0}let _=K$.isNode(D.value)?D.value:null;if(_){if(_.comment)O=_.comment;if(_.commentBefore)B=!0}else if(D.value==null&&L?.comment)O=L.comment}if(O)B=!0;let R=b5.stringify(D,H,()=>O=null);if(B||(B=z.length>U||R.includes(`
49
- `)),F<$.length-1)R+=",";else if(J.options.trailingComma){if(J.options.lineWidth>0)B||(B=z.reduce((L,_)=>L+_.length+2,2)+(R.length+2)>J.options.lineWidth);if(B)R+=","}if(O)R+=m6.lineComment(R,X,q(O));z.push(R),U=z.length}let{start:V,end:M}=Q;if(z.length===0)return V+M;else{if(!B){let F=z.reduce((D,O)=>D+O.length+2,2);B=J.options.lineWidth>0&&F>J.options.lineWidth}if(B){let F=V;for(let D of z)F+=D?`
50
- ${G}${W}${D}`:`
42
+ ${Q.indent}`}else if(!O&&i0.isCollection(J)){let f=b[0],A=b.indexOf(`
43
+ `),S=A!==-1,x=Q.inFlow??J.flow??J.items.length===0;if(S||!x){let r=!1;if(S&&(f==="&"||f==="!")){let g=b.indexOf(" ");if(f==="&"&&g!==-1&&g<A&&b[g+1]==="!")g=b.indexOf(" ",g+1);if(g===-1||A<g)r=!0}if(!r)w=`
44
+ ${Q.indent}`}}else if(b===""||b[0]===`
45
+ `)w="";if(M+=w+b,Q.inFlow){if(Z&&X)X()}else if(N&&!Z)M+=f2.lineComment(M,Q.indent,H(N));else if(D&&Y)Y();return M}Iq.stringifyPair=fq});var K4=C((hq)=>{var Z5=F6("process");function vq($,...J){if($==="debug")console.log(...J)}function xq($,J){if($==="debug"||$==="warn")if(typeof Z5.emitWarning==="function")Z5.emitWarning(J);else console.warn(J)}hq.debug=vq;hq.warn=xq});var m6=C((mq)=>{var k6=d(),w5=Y0(),y6="<<",g6={identify:($)=>$===y6||typeof $==="symbol"&&$.description===y6,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new w5.Scalar(Symbol(y6)),{addToJSMap:P5}),stringify:()=>y6},kq=($,J)=>(g6.identify(J)||k6.isScalar(J)&&(!J.type||J.type===w5.Scalar.PLAIN)&&g6.identify(J.value))&&$?.doc.schema.tags.some((Q)=>Q.tag===g6.tag&&Q.default);function P5($,J,Q){let X=b5($,Q);if(k6.isSeq(X))for(let Y of X.items)R4($,J,Y);else if(Array.isArray(X))for(let Y of X)R4($,J,Y);else R4($,J,X)}function R4($,J,Q){let X=b5($,Q);if(!k6.isMap(X))throw Error("Merge sources must be maps or map aliases");let Y=X.toJSON(null,$,Map);for(let[G,q]of Y)if(J instanceof Map){if(!J.has(G))J.set(G,q)}else if(J instanceof Set)J.add(G);else if(!Object.prototype.hasOwnProperty.call(J,G))Object.defineProperty(J,G,{value:q,writable:!0,enumerable:!0,configurable:!0});return J}function b5($,J){return $&&k6.isAlias(J)?J.resolve($.doc,$):J}mq.addMergeToJSMap=P5;mq.isMergeKey=kq;mq.merge=g6});var j4=C((rq)=>{var pq=K4(),E5=m6(),dq=C2(),S5=d(),L4=J$();function iq($,J,{key:Q,value:X}){if(S5.isNode(Q)&&Q.addToJSMap)Q.addToJSMap($,J,X);else if(E5.isMergeKey($,Q))E5.addMergeToJSMap($,J,X);else{let Y=L4.toJS(Q,"",$);if(J instanceof Map)J.set(Y,L4.toJS(X,Y,$));else if(J instanceof Set)J.add(Y);else{let G=nq(Q,Y,$),q=L4.toJS(X,G,$);if(G in J)Object.defineProperty(J,G,{value:q,writable:!0,enumerable:!0,configurable:!0});else J[G]=q}}return J}function nq($,J,Q){if(J===null)return"";if(typeof J!=="object")return String(J);if(S5.isNode($)&&Q?.doc){let X=dq.createStringifyContext(Q.doc,{});X.anchors=new Set;for(let G of Q.anchors.keys())X.anchors.add(G.anchor);X.inFlow=!0,X.inStringifyKey=!0;let Y=$.toString(X);if(!Q.mapKeyWarned){let G=JSON.stringify(Y);if(G.length>40)G=G.substring(0,36)+'..."';pq.warn(Q.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${G}. Set mapAsMap: true to use object keys.`),Q.mapKeyWarned=!0}return Y}return JSON.stringify(J)}rq.addPairToJSMap=iq});var Y$=C((eq)=>{var C5=P2(),sq=A5(),oq=j4(),u6=d();function tq($,J,Q){let X=C5.createNode($,void 0,Q),Y=C5.createNode(J,void 0,Q);return new l6(X,Y)}class l6{constructor($,J=null){Object.defineProperty(this,u6.NODE_TYPE,{value:u6.PAIR}),this.key=$,this.value=J}clone($){let{key:J,value:Q}=this;if(u6.isNode(J))J=J.clone($);if(u6.isNode(Q))Q=Q.clone($);return new l6(J,Q)}toJSON($,J){let Q=J?.mapAsMap?new Map:{};return oq.addPairToJSMap(J,Q,this)}toString($,J,Q){return $?.doc?sq.stringifyPair(this,$,J,Q):JSON.stringify(this)}}eq.Pair=l6;eq.createPair=tq});var N4=C((GW)=>{var _$=d(),f5=C2(),c6=b2();function QW($,J,Q){return(J.inFlow??$.flow?YW:XW)($,J,Q)}function XW({comment:$,items:J},Q,{blockItemPrefix:X,flowChars:Y,itemIndent:G,onChompKeep:q,onComment:W}){let{indent:z,options:{commentString:H}}=Q,B=Object.assign({},Q,{indent:G,type:null}),U=!1,V=[];for(let F=0;F<J.length;++F){let D=J[F],M=null;if(_$.isNode(D)){if(!U&&D.spaceBefore)V.push("");if(p6(Q,V,D.commentBefore,U),D.comment)M=D.comment}else if(_$.isPair(D)){let L=_$.isNode(D.key)?D.key:null;if(L){if(!U&&L.spaceBefore)V.push("");p6(Q,V,L.commentBefore,U)}}U=!1;let R=f5.stringify(D,B,()=>M=null,()=>U=!0);if(M)R+=c6.lineComment(R,G,H(M));if(U&&M)U=!1;V.push(X+R)}let O;if(V.length===0)O=Y.start+Y.end;else{O=V[0];for(let F=1;F<V.length;++F){let D=V[F];O+=D?`
46
+ ${z}${D}`:`
47
+ `}}if($){if(O+=`
48
+ `+c6.indentComment(H($),z),W)W()}else if(U&&q)q();return O}function YW({items:$},J,{flowChars:Q,itemIndent:X}){let{indent:Y,indentStep:G,flowCollectionPadding:q,options:{commentString:W}}=J;X+=G;let z=Object.assign({},J,{indent:X,inFlow:!0,type:null}),H=!1,B=0,U=[];for(let F=0;F<$.length;++F){let D=$[F],M=null;if(_$.isNode(D)){if(D.spaceBefore)U.push("");if(p6(J,U,D.commentBefore,!1),D.comment)M=D.comment}else if(_$.isPair(D)){let L=_$.isNode(D.key)?D.key:null;if(L){if(L.spaceBefore)U.push("");if(p6(J,U,L.commentBefore,!1),L.comment)H=!0}let N=_$.isNode(D.value)?D.value:null;if(N){if(N.comment)M=N.comment;if(N.commentBefore)H=!0}else if(D.value==null&&L?.comment)M=L.comment}if(M)H=!0;let R=f5.stringify(D,z,()=>M=null);if(H||(H=U.length>B||R.includes(`
49
+ `)),F<$.length-1)R+=",";else if(J.options.trailingComma){if(J.options.lineWidth>0)H||(H=U.reduce((L,N)=>L+N.length+2,2)+(R.length+2)>J.options.lineWidth);if(H)R+=","}if(M)R+=c6.lineComment(R,X,W(M));U.push(R),B=U.length}let{start:V,end:O}=Q;if(U.length===0)return V+O;else{if(!H){let F=U.reduce((D,M)=>D+M.length+2,2);H=J.options.lineWidth>0&&F>J.options.lineWidth}if(H){let F=V;for(let D of U)F+=D?`
50
+ ${G}${Y}${D}`:`
51
51
  `;return`${F}
52
- ${W}${M}`}else return`${V}${Y}${z.join(" ")}${Y}${M}`}}function u6({indent:$,options:{commentString:J}},Q,X,W){if(X&&W)X=X.replace(/^\n+/,"");if(X){let G=m6.indentComment(J(X),$);Q.push(G.trimStart())}}tY.stringifyCollection=aY});var X$=C((Wq)=>{var $q=L4(),Jq=R4(),Qq=C6(),Q$=p(),l6=J$(),Xq=W0();function E2($,J){let Q=Q$.isScalar(J)?J.value:J;for(let X of $)if(Q$.isPair(X)){if(X.key===J||X.key===Q)return X;if(Q$.isScalar(X.key)&&X.key.value===Q)return X}return}class P5 extends Qq.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor($){super(Q$.MAP,$);this.items=[]}static from($,J,Q){let{keepUndefined:X,replacer:W}=Q,G=new this($),Y=(q,H)=>{if(typeof W==="function")H=W.call(J,q,H);else if(Array.isArray(W)&&!W.includes(q))return;if(H!==void 0||X)G.items.push(l6.createPair(q,H,Q))};if(J instanceof Map)for(let[q,H]of J)Y(q,H);else if(J&&typeof J==="object")for(let q of Object.keys(J))Y(q,J[q]);if(typeof $.sortMapEntries==="function")G.items.sort($.sortMapEntries);return G}add($,J){let Q;if(Q$.isPair($))Q=$;else if(!$||typeof $!=="object"||!("key"in $))Q=new l6.Pair($,$?.value);else Q=new l6.Pair($.key,$.value);let X=E2(this.items,Q.key),W=this.schema?.sortMapEntries;if(X){if(!J)throw Error(`Key ${Q.key} already set`);if(Q$.isScalar(X.value)&&Xq.isScalarValue(Q.value))X.value.value=Q.value;else X.value=Q.value}else if(W){let G=this.items.findIndex((Y)=>W(Q,Y)<0);if(G===-1)this.items.push(Q);else this.items.splice(G,0,Q)}else this.items.push(Q)}delete($){let J=E2(this.items,$);if(!J)return!1;return this.items.splice(this.items.indexOf(J),1).length>0}get($,J){let X=E2(this.items,$)?.value;return(!J&&Q$.isScalar(X)?X.value:X)??void 0}has($){return!!E2(this.items,$)}set($,J){this.add(new l6.Pair($,J),!0)}toJSON($,J,Q){let X=Q?new Q:J?.mapAsMap?new Map:{};if(J?.onCreate)J.onCreate(X);for(let W of this.items)Jq.addPairToJSMap(J,X,W);return X}toString($,J,Q){if(!$)return JSON.stringify(this);for(let X of this.items)if(!Q$.isPair(X))throw Error(`Map items must all be pairs; found ${JSON.stringify(X)} instead`);if(!$.allNullValues&&this.hasAllNullValues(!1))$=Object.assign({},$,{allNullValues:!0});return $q.stringifyCollection(this,$,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:$.indent||"",onChompKeep:Q,onComment:J})}}Wq.YAMLMap=P5;Wq.findPair=E2});var r$=C((Bq)=>{var qq=p(),S5=X$(),Hq={collection:"map",default:!0,nodeClass:S5.YAMLMap,tag:"tag:yaml.org,2002:map",resolve($,J){if(!qq.isMap($))J("Expected a mapping for this tag");return $},createNode:($,J,Q)=>S5.YAMLMap.from($,J,Q)};Bq.map=Hq});var W$=C((Mq)=>{var Vq=N2(),zq=L4(),Dq=C6(),d6=p(),Fq=W0(),Oq=t0();class E5 extends Dq.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor($){super(d6.SEQ,$);this.items=[]}add($){this.items.push($)}delete($){let J=c6($);if(typeof J!=="number")return!1;return this.items.splice(J,1).length>0}get($,J){let Q=c6($);if(typeof Q!=="number")return;let X=this.items[Q];return!J&&d6.isScalar(X)?X.value:X}has($){let J=c6($);return typeof J==="number"&&J<this.items.length}set($,J){let Q=c6($);if(typeof Q!=="number")throw Error(`Expected a valid index, not ${$}.`);let X=this.items[Q];if(d6.isScalar(X)&&Fq.isScalarValue(J))X.value=J;else this.items[Q]=J}toJSON($,J){let Q=[];if(J?.onCreate)J.onCreate(Q);let X=0;for(let W of this.items)Q.push(Oq.toJS(W,String(X++),J));return Q}toString($,J,Q){if(!$)return JSON.stringify(this);return zq.stringifyCollection(this,$,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:($.indent||"")+" ",onChompKeep:Q,onComment:J})}static from($,J,Q){let{replacer:X}=Q,W=new this($);if(J&&Symbol.iterator in Object(J)){let G=0;for(let Y of J){if(typeof X==="function"){let q=J instanceof Set?Y:String(G++);Y=X.call(J,q,Y)}W.items.push(Vq.createNode(Y,void 0,Q))}}return W}}function c6($){let J=d6.isScalar($)?$.value:$;if(J&&typeof J==="string")J=Number(J);return typeof J==="number"&&Number.isInteger(J)&&J>=0?J:null}Mq.YAMLSeq=E5});var a$=C((Aq)=>{var Rq=p(),C5=W$(),Lq={collection:"seq",default:!0,nodeClass:C5.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve($,J){if(!Rq.isSeq($))J("Expected a sequence for this tag");return $},createNode:($,J,Q)=>C5.YAMLSeq.from($,J,Q)};Aq.seq=Lq});var C2=C((Zq)=>{var jq=b2(),Nq={identify:($)=>typeof $==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:($)=>$,stringify($,J,Q,X){return J=Object.assign({actualString:!0},J),jq.stringifyString($,J,Q,X)}};Zq.string=Nq});var p6=C((bq)=>{var f5=W0(),T5={identify:($)=>$==null,createNode:()=>new f5.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new f5.Scalar(null),stringify:({source:$},J)=>typeof $==="string"&&T5.test.test($)?$:J.options.nullStr};bq.nullTag=T5});var A4=C((Eq)=>{var Sq=W0(),I5={identify:($)=>typeof $==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:($)=>new Sq.Scalar($[0]==="t"||$[0]==="T"),stringify({source:$,value:J},Q){if($&&I5.test.test($)){let X=$[0]==="t"||$[0]==="T";if(J===X)return $}return J?Q.options.trueStr:Q.options.falseStr}};Eq.boolTag=I5});var s$=C((Tq)=>{function fq({format:$,minFractionDigits:J,tag:Q,value:X}){if(typeof X==="bigint")return String(X);let W=typeof X==="number"?X:Number(X);if(!isFinite(W))return isNaN(W)?".nan":W<0?"-.inf":".inf";let G=Object.is(X,-0)?"-0":JSON.stringify(X);if(!$&&J&&(!Q||Q==="tag:yaml.org,2002:float")&&/^-?\d/.test(G)&&!G.includes("e")){let Y=G.indexOf(".");if(Y<0)Y=G.length,G+=".";let q=J-(G.length-Y-1);while(q-- >0)G+="0"}return G}Tq.stringifyNumber=fq});var j4=C((gq)=>{var vq=W0(),_4=s$(),xq={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:($)=>$.slice(-3).toLowerCase()==="nan"?NaN:$[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:_4.stringifyNumber},hq={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:($)=>parseFloat($),stringify($){let J=Number($.value);return isFinite(J)?J.toExponential():_4.stringifyNumber($)}},yq={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve($){let J=new vq.Scalar(parseFloat($)),Q=$.indexOf(".");if(Q!==-1&&$[$.length-1]==="0")J.minFractionDigits=$.length-Q-1;return J},stringify:_4.stringifyNumber};gq.float=yq;gq.floatExp=hq;gq.floatNaN=xq});var Z4=C((pq)=>{var v5=s$(),i6=($)=>typeof $==="bigint"||Number.isInteger($),N4=($,J,Q,{intAsBigInt:X})=>X?BigInt($):parseInt($.substring(J),Q);function x5($,J,Q){let{value:X}=$;if(i6(X)&&X>=0)return Q+X.toString(J);return v5.stringifyNumber($)}var lq={identify:($)=>i6($)&&$>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:($,J,Q)=>N4($,2,8,Q),stringify:($)=>x5($,8,"0o")},cq={identify:i6,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:($,J,Q)=>N4($,0,10,Q),stringify:v5.stringifyNumber},dq={identify:($)=>i6($)&&$>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:($,J,Q)=>N4($,2,16,Q),stringify:($)=>x5($,16,"0x")};pq.int=cq;pq.intHex=dq;pq.intOct=lq});var h5=C((JH)=>{var aq=r$(),sq=p6(),oq=a$(),tq=C2(),eq=A4(),w4=j4(),b4=Z4(),$H=[aq.map,oq.seq,tq.string,sq.nullTag,eq.boolTag,b4.intOct,b4.int,b4.intHex,w4.floatNaN,w4.floatExp,w4.float];JH.schema=$H});var g5=C((BH)=>{var XH=W0(),WH=r$(),GH=a$();function y5($){return typeof $==="bigint"||Number.isInteger($)}var n6=({value:$})=>JSON.stringify($),YH=[{identify:($)=>typeof $==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:($)=>$,stringify:n6},{identify:($)=>$==null,createNode:()=>new XH.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:n6},{identify:($)=>typeof $==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:($)=>$==="true",stringify:n6},{identify:y5,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:($,J,{intAsBigInt:Q})=>Q?BigInt($):parseInt($,10),stringify:({value:$})=>y5($)?$.toString():JSON.stringify($)},{identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:($)=>parseFloat($),stringify:n6}],qH={default:!0,tag:"",test:/^/,resolve($,J){return J(`Unresolved plain scalar ${JSON.stringify($)}`),$}},HH=[WH.map,GH.seq].concat(YH,qH);BH.schema=HH});var S4=C((DH)=>{var f2=B6("buffer"),P4=W0(),VH=b2(),zH={identify:($)=>$ instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve($,J){if(typeof f2.Buffer==="function")return f2.Buffer.from($,"base64");else if(typeof atob==="function"){let Q=atob($.replace(/[\n\r]/g,"")),X=new Uint8Array(Q.length);for(let W=0;W<Q.length;++W)X[W]=Q.charCodeAt(W);return X}else return J("This environment does not support reading binary tags; either Buffer or atob is required"),$},stringify({comment:$,type:J,value:Q},X,W,G){if(!Q)return"";let Y=Q,q;if(typeof f2.Buffer==="function")q=Y instanceof f2.Buffer?Y.toString("base64"):f2.Buffer.from(Y.buffer).toString("base64");else if(typeof btoa==="function"){let H="";for(let B=0;B<Y.length;++B)H+=String.fromCharCode(Y[B]);q=btoa(H)}else throw Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(J??(J=P4.Scalar.BLOCK_LITERAL),J!==P4.Scalar.QUOTE_DOUBLE){let H=Math.max(X.options.lineWidth-X.indent.length,X.options.minContentWidth),B=Math.ceil(q.length/H),U=Array(B);for(let z=0,V=0;z<B;++z,V+=H)U[z]=q.substr(V,H);q=U.join(J===P4.Scalar.BLOCK_LITERAL?`
53
- `:" ")}return VH.stringifyString({comment:$,type:J,value:q},X,W,G)}};DH.binary=zH});var a6=C((RH)=>{var r6=p(),E4=J$(),OH=W0(),MH=W$();function k5($,J){if(r6.isSeq($))for(let Q=0;Q<$.items.length;++Q){let X=$.items[Q];if(r6.isPair(X))continue;else if(r6.isMap(X)){if(X.items.length>1)J("Each pair must have its own sequence indicator");let W=X.items[0]||new E4.Pair(new OH.Scalar(null));if(X.commentBefore)W.key.commentBefore=W.key.commentBefore?`${X.commentBefore}
54
- ${W.key.commentBefore}`:X.commentBefore;if(X.comment){let G=W.value??W.key;G.comment=G.comment?`${X.comment}
55
- ${G.comment}`:X.comment}X=W}$.items[Q]=r6.isPair(X)?X:new E4.Pair(X)}else J("Expected a sequence for this tag");return $}function m5($,J,Q){let{replacer:X}=Q,W=new MH.YAMLSeq($);W.tag="tag:yaml.org,2002:pairs";let G=0;if(J&&Symbol.iterator in Object(J))for(let Y of J){if(typeof X==="function")Y=X.call(J,String(G++),Y);let q,H;if(Array.isArray(Y))if(Y.length===2)q=Y[0],H=Y[1];else throw TypeError(`Expected [key, value] tuple: ${Y}`);else if(Y&&Y instanceof Object){let B=Object.keys(Y);if(B.length===1)q=B[0],H=Y[q];else throw TypeError(`Expected tuple with one key, not ${B.length} keys`)}else q=Y;W.items.push(E4.createPair(q,H,Q))}return W}var KH={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:k5,createNode:m5};RH.createPairs=m5;RH.pairs=KH;RH.resolvePairs=k5});var f4=C((ZH)=>{var u5=p(),C4=t0(),T2=X$(),jH=W$(),l5=a6();class R$ extends jH.YAMLSeq{constructor(){super();this.add=T2.YAMLMap.prototype.add.bind(this),this.delete=T2.YAMLMap.prototype.delete.bind(this),this.get=T2.YAMLMap.prototype.get.bind(this),this.has=T2.YAMLMap.prototype.has.bind(this),this.set=T2.YAMLMap.prototype.set.bind(this),this.tag=R$.tag}toJSON($,J){if(!J)return super.toJSON($);let Q=new Map;if(J?.onCreate)J.onCreate(Q);for(let X of this.items){let W,G;if(u5.isPair(X))W=C4.toJS(X.key,"",J),G=C4.toJS(X.value,W,J);else W=C4.toJS(X,"",J);if(Q.has(W))throw Error("Ordered maps must not include duplicate keys");Q.set(W,G)}return Q}static from($,J,Q){let X=l5.createPairs($,J,Q),W=new this;return W.items=X.items,W}}R$.tag="tag:yaml.org,2002:omap";var NH={collection:"seq",identify:($)=>$ instanceof Map,nodeClass:R$,default:!1,tag:"tag:yaml.org,2002:omap",resolve($,J){let Q=l5.resolvePairs($,J),X=[];for(let{key:W}of Q.items)if(u5.isScalar(W))if(X.includes(W.value))J(`Ordered maps must not include duplicate keys: ${W.value}`);else X.push(W.value);return Object.assign(new R$,Q)},createNode:($,J,Q)=>R$.from($,J,Q)};ZH.YAMLOMap=R$;ZH.omap=NH});var n5=C((PH)=>{var c5=W0();function d5({value:$,source:J},Q){if(J&&($?p5:i5).test.test(J))return J;return $?Q.options.trueStr:Q.options.falseStr}var p5={identify:($)=>$===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new c5.Scalar(!0),stringify:d5},i5={identify:($)=>$===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new c5.Scalar(!1),stringify:d5};PH.falseTag=i5;PH.trueTag=p5});var r5=C((vH)=>{var CH=W0(),T4=s$(),fH={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:($)=>$.slice(-3).toLowerCase()==="nan"?NaN:$[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:T4.stringifyNumber},TH={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:($)=>parseFloat($.replace(/_/g,"")),stringify($){let J=Number($.value);return isFinite(J)?J.toExponential():T4.stringifyNumber($)}},IH={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve($){let J=new CH.Scalar(parseFloat($.replace(/_/g,""))),Q=$.indexOf(".");if(Q!==-1){let X=$.substring(Q+1).replace(/_/g,"");if(X[X.length-1]==="0")J.minFractionDigits=X.length}return J},stringify:T4.stringifyNumber};vH.float=IH;vH.floatExp=TH;vH.floatNaN=fH});var s5=C((lH)=>{var a5=s$(),I2=($)=>typeof $==="bigint"||Number.isInteger($);function s6($,J,Q,{intAsBigInt:X}){let W=$[0];if(W==="-"||W==="+")J+=1;if($=$.substring(J).replace(/_/g,""),X){switch(Q){case 2:$=`0b${$}`;break;case 8:$=`0o${$}`;break;case 16:$=`0x${$}`;break}let Y=BigInt($);return W==="-"?BigInt(-1)*Y:Y}let G=parseInt($,Q);return W==="-"?-1*G:G}function I4($,J,Q){let{value:X}=$;if(I2(X)){let W=X.toString(J);return X<0?"-"+Q+W.substr(1):Q+W}return a5.stringifyNumber($)}var gH={identify:I2,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:($,J,Q)=>s6($,2,2,Q),stringify:($)=>I4($,2,"0b")},kH={identify:I2,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:($,J,Q)=>s6($,1,8,Q),stringify:($)=>I4($,8,"0")},mH={identify:I2,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:($,J,Q)=>s6($,0,10,Q),stringify:a5.stringifyNumber},uH={identify:I2,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:($,J,Q)=>s6($,2,16,Q),stringify:($)=>I4($,16,"0x")};lH.int=mH;lH.intBin=gH;lH.intHex=uH;lH.intOct=kH});var v4=C((rH)=>{var e6=p(),o6=J$(),t6=X$();class L$ extends t6.YAMLMap{constructor($){super($);this.tag=L$.tag}add($){let J;if(e6.isPair($))J=$;else if($&&typeof $==="object"&&"key"in $&&"value"in $&&$.value===null)J=new o6.Pair($.key,null);else J=new o6.Pair($,null);if(!t6.findPair(this.items,J.key))this.items.push(J)}get($,J){let Q=t6.findPair(this.items,$);return!J&&e6.isPair(Q)?e6.isScalar(Q.key)?Q.key.value:Q.key:Q}set($,J){if(typeof J!=="boolean")throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof J}`);let Q=t6.findPair(this.items,$);if(Q&&!J)this.items.splice(this.items.indexOf(Q),1);else if(!Q&&J)this.items.push(new o6.Pair($))}toJSON($,J){return super.toJSON($,J,Set)}toString($,J,Q){if(!$)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},$,{allNullValues:!0}),J,Q);else throw Error("Set items must all have null values")}static from($,J,Q){let{replacer:X}=Q,W=new this($);if(J&&Symbol.iterator in Object(J))for(let G of J){if(typeof X==="function")G=X.call(J,G,G);W.items.push(o6.createPair(G,null,Q))}return W}}L$.tag="tag:yaml.org,2002:set";var nH={collection:"map",identify:($)=>$ instanceof Set,nodeClass:L$,default:!1,tag:"tag:yaml.org,2002:set",createNode:($,J,Q)=>L$.from($,J,Q),resolve($,J){if(e6.isMap($))if($.hasAllNullValues(!0))return Object.assign(new L$,$);else J("Set items must all have null values");else J("Expected a mapping for this tag");return $}};rH.YAMLSet=L$;rH.set=nH});var h4=C(($B)=>{var oH=s$();function x4($,J){let Q=$[0],X=Q==="-"||Q==="+"?$.substring(1):$,W=(Y)=>J?BigInt(Y):Number(Y),G=X.replace(/_/g,"").split(":").reduce((Y,q)=>Y*W(60)+W(q),W(0));return Q==="-"?W(-1)*G:G}function o5($){let{value:J}=$,Q=(Y)=>Y;if(typeof J==="bigint")Q=(Y)=>BigInt(Y);else if(isNaN(J)||!isFinite(J))return oH.stringifyNumber($);let X="";if(J<0)X="-",J*=Q(-1);let W=Q(60),G=[J%W];if(J<60)G.unshift(0);else if(J=(J-G[0])/W,G.unshift(J%W),J>=60)J=(J-G[0])/W,G.unshift(J);return X+G.map((Y)=>String(Y).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var tH={identify:($)=>typeof $==="bigint"||Number.isInteger($),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:($,J,{intAsBigInt:Q})=>x4($,Q),stringify:o5},eH={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:($)=>x4($,!1),stringify:o5},t5={identify:($)=>$ instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve($){let J=$.match(t5.test);if(!J)throw Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,Q,X,W,G,Y,q]=J.map(Number),H=J[7]?Number((J[7]+"00").substr(1,3)):0,B=Date.UTC(Q,X-1,W,G||0,Y||0,q||0,H),U=J[8];if(U&&U!=="Z"){let z=x4(U,!1);if(Math.abs(z)<30)z*=60;B-=60000*z}return new Date(B)},stringify:({value:$})=>$?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};$B.floatTime=eH;$B.intTime=tH;$B.timestamp=t5});var $J=C((FB)=>{var WB=r$(),GB=p6(),YB=a$(),qB=C2(),HB=S4(),e5=n5(),y4=r5(),$9=s5(),BB=y6(),UB=f4(),VB=a6(),zB=v4(),g4=h4(),DB=[WB.map,YB.seq,qB.string,GB.nullTag,e5.trueTag,e5.falseTag,$9.intBin,$9.intOct,$9.int,$9.intHex,y4.floatNaN,y4.floatExp,y4.float,HB.binary,BB.merge,UB.omap,VB.pairs,zB.set,g4.intTime,g4.floatTime,g4.timestamp];FB.schema=DB});var UJ=C((NB)=>{var WJ=r$(),MB=p6(),GJ=a$(),KB=C2(),RB=A4(),k4=j4(),m4=Z4(),LB=h5(),AB=g5(),YJ=S4(),v2=y6(),qJ=f4(),HJ=a6(),JJ=$J(),BJ=v4(),J9=h4(),QJ=new Map([["core",LB.schema],["failsafe",[WJ.map,GJ.seq,KB.string]],["json",AB.schema],["yaml11",JJ.schema],["yaml-1.1",JJ.schema]]),XJ={binary:YJ.binary,bool:RB.boolTag,float:k4.float,floatExp:k4.floatExp,floatNaN:k4.floatNaN,floatTime:J9.floatTime,int:m4.int,intHex:m4.intHex,intOct:m4.intOct,intTime:J9.intTime,map:WJ.map,merge:v2.merge,null:MB.nullTag,omap:qJ.omap,pairs:HJ.pairs,seq:GJ.seq,set:BJ.set,timestamp:J9.timestamp},_B={"tag:yaml.org,2002:binary":YJ.binary,"tag:yaml.org,2002:merge":v2.merge,"tag:yaml.org,2002:omap":qJ.omap,"tag:yaml.org,2002:pairs":HJ.pairs,"tag:yaml.org,2002:set":BJ.set,"tag:yaml.org,2002:timestamp":J9.timestamp};function jB($,J,Q){let X=QJ.get(J);if(X&&!$)return Q&&!X.includes(v2.merge)?X.concat(v2.merge):X.slice();let W=X;if(!W)if(Array.isArray($))W=[];else{let G=Array.from(QJ.keys()).filter((Y)=>Y!=="yaml11").map((Y)=>JSON.stringify(Y)).join(", ");throw Error(`Unknown schema "${J}"; use one of ${G} or define customTags array`)}if(Array.isArray($))for(let G of $)W=W.concat(G);else if(typeof $==="function")W=$(W.slice());if(Q)W=W.concat(v2.merge);return W.reduce((G,Y)=>{let q=typeof Y==="string"?XJ[Y]:Y;if(!q){let H=JSON.stringify(Y),B=Object.keys(XJ).map((U)=>JSON.stringify(U)).join(", ");throw Error(`Unknown custom tag ${H}; use one of ${B}`)}if(!G.includes(q))G.push(q);return G},[])}NB.coreKnownTags=_B;NB.getTags=jB});var c4=C((CB)=>{var u4=p(),bB=r$(),PB=a$(),SB=C2(),Q9=UJ(),EB=($,J)=>$.key<J.key?-1:$.key>J.key?1:0;class l4{constructor({compat:$,customTags:J,merge:Q,resolveKnownTags:X,schema:W,sortMapEntries:G,toStringDefaults:Y}){this.compat=Array.isArray($)?Q9.getTags($,"compat"):$?Q9.getTags(null,$):null,this.name=typeof W==="string"&&W||"core",this.knownTags=X?Q9.coreKnownTags:{},this.tags=Q9.getTags(J,this.name,Q),this.toStringOptions=Y??null,Object.defineProperty(this,u4.MAP,{value:bB.map}),Object.defineProperty(this,u4.SCALAR,{value:SB.string}),Object.defineProperty(this,u4.SEQ,{value:PB.seq}),this.sortMapEntries=typeof G==="function"?G:G===!0?EB:null}clone(){let $=Object.create(l4.prototype,Object.getOwnPropertyDescriptors(this));return $.tags=this.tags.slice(),$}}CB.Schema=l4});var VJ=C((vB)=>{var TB=p(),d4=P2(),x2=Z2();function IB($,J){let Q=[],X=J.directives===!0;if(J.directives!==!1&&$.directives){let H=$.directives.toString($);if(H)Q.push(H),X=!0;else if($.directives.docStart)X=!0}if(X)Q.push("---");let W=d4.createStringifyContext($,J),{commentString:G}=W.options;if($.commentBefore){if(Q.length!==1)Q.unshift("");let H=G($.commentBefore);Q.unshift(x2.indentComment(H,""))}let Y=!1,q=null;if($.contents){if(TB.isNode($.contents)){if($.contents.spaceBefore&&X)Q.push("");if($.contents.commentBefore){let U=G($.contents.commentBefore);Q.push(x2.indentComment(U,""))}W.forceBlockIndent=!!$.comment,q=$.contents.comment}let H=q?void 0:()=>Y=!0,B=d4.stringify($.contents,W,()=>q=null,H);if(q)B+=x2.lineComment(B,"",G(q));if((B[0]==="|"||B[0]===">")&&Q[Q.length-1]==="---")Q[Q.length-1]=`--- ${B}`;else Q.push(B)}else Q.push(d4.stringify($.contents,W));if($.directives?.docEnd)if($.comment){let H=G($.comment);if(H.includes(`
56
- `))Q.push("..."),Q.push(x2.indentComment(H,""));else Q.push(`... ${H}`)}else Q.push("...");else{let H=$.comment;if(H&&Y)H=H.replace(/^\n+/,"");if(H){if((!Y||q)&&Q[Q.length-1]!=="")Q.push("");Q.push(x2.indentComment(G(H),""))}}return Q.join(`
52
+ ${Y}${O}`}else return`${V}${q}${U.join(" ")}${q}${O}`}}function p6({indent:$,options:{commentString:J}},Q,X,Y){if(X&&Y)X=X.replace(/^\n+/,"");if(X){let G=c6.indentComment(J(X),$);Q.push(G.trimStart())}}GW.stringifyCollection=QW});var q$=C((UW)=>{var WW=N4(),zW=j4(),HW=T6(),G$=d(),d6=Y$(),BW=Y0();function I2($,J){let Q=G$.isScalar(J)?J.value:J;for(let X of $)if(G$.isPair(X)){if(X.key===J||X.key===Q)return X;if(G$.isScalar(X.key)&&X.key.value===Q)return X}return}class I5 extends HW.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor($){super(G$.MAP,$);this.items=[]}static from($,J,Q){let{keepUndefined:X,replacer:Y}=Q,G=new this($),q=(W,z)=>{if(typeof Y==="function")z=Y.call(J,W,z);else if(Array.isArray(Y)&&!Y.includes(W))return;if(z!==void 0||X)G.items.push(d6.createPair(W,z,Q))};if(J instanceof Map)for(let[W,z]of J)q(W,z);else if(J&&typeof J==="object")for(let W of Object.keys(J))q(W,J[W]);if(typeof $.sortMapEntries==="function")G.items.sort($.sortMapEntries);return G}add($,J){let Q;if(G$.isPair($))Q=$;else if(!$||typeof $!=="object"||!("key"in $))Q=new d6.Pair($,$?.value);else Q=new d6.Pair($.key,$.value);let X=I2(this.items,Q.key),Y=this.schema?.sortMapEntries;if(X){if(!J)throw Error(`Key ${Q.key} already set`);if(G$.isScalar(X.value)&&BW.isScalarValue(Q.value))X.value.value=Q.value;else X.value=Q.value}else if(Y){let G=this.items.findIndex((q)=>Y(Q,q)<0);if(G===-1)this.items.push(Q);else this.items.splice(G,0,Q)}else this.items.push(Q)}delete($){let J=I2(this.items,$);if(!J)return!1;return this.items.splice(this.items.indexOf(J),1).length>0}get($,J){let X=I2(this.items,$)?.value;return(!J&&G$.isScalar(X)?X.value:X)??void 0}has($){return!!I2(this.items,$)}set($,J){this.add(new d6.Pair($,J),!0)}toJSON($,J,Q){let X=Q?new Q:J?.mapAsMap?new Map:{};if(J?.onCreate)J.onCreate(X);for(let Y of this.items)zW.addPairToJSMap(J,X,Y);return X}toString($,J,Q){if(!$)return JSON.stringify(this);for(let X of this.items)if(!G$.isPair(X))throw Error(`Map items must all be pairs; found ${JSON.stringify(X)} instead`);if(!$.allNullValues&&this.hasAllNullValues(!1))$=Object.assign({},$,{allNullValues:!0});return WW.stringifyCollection(this,$,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:$.indent||"",onChompKeep:Q,onComment:J})}}UW.YAMLMap=I5;UW.findPair=I2});var e$=C((OW)=>{var FW=d(),T5=q$(),MW={collection:"map",default:!0,nodeClass:T5.YAMLMap,tag:"tag:yaml.org,2002:map",resolve($,J){if(!FW.isMap($))J("Expected a mapping for this tag");return $},createNode:($,J,Q)=>T5.YAMLMap.from($,J,Q)};OW.map=MW});var W$=C((AW)=>{var RW=P2(),LW=N4(),jW=T6(),n6=d(),NW=Y0(),_W=J$();class v5 extends jW.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor($){super(n6.SEQ,$);this.items=[]}add($){this.items.push($)}delete($){let J=i6($);if(typeof J!=="number")return!1;return this.items.splice(J,1).length>0}get($,J){let Q=i6($);if(typeof Q!=="number")return;let X=this.items[Q];return!J&&n6.isScalar(X)?X.value:X}has($){let J=i6($);return typeof J==="number"&&J<this.items.length}set($,J){let Q=i6($);if(typeof Q!=="number")throw Error(`Expected a valid index, not ${$}.`);let X=this.items[Q];if(n6.isScalar(X)&&NW.isScalarValue(J))X.value=J;else this.items[Q]=J}toJSON($,J){let Q=[];if(J?.onCreate)J.onCreate(Q);let X=0;for(let Y of this.items)Q.push(_W.toJS(Y,String(X++),J));return Q}toString($,J,Q){if(!$)return JSON.stringify(this);return LW.stringifyCollection(this,$,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:($.indent||"")+" ",onChompKeep:Q,onComment:J})}static from($,J,Q){let{replacer:X}=Q,Y=new this($);if(J&&Symbol.iterator in Object(J)){let G=0;for(let q of J){if(typeof X==="function"){let W=J instanceof Set?q:String(G++);q=X.call(J,W,q)}Y.items.push(RW.createNode(q,void 0,Q))}}return Y}}function i6($){let J=n6.isScalar($)?$.value:$;if(J&&typeof J==="string")J=Number(J);return typeof J==="number"&&Number.isInteger(J)&&J>=0?J:null}AW.YAMLSeq=v5});var $2=C((bW)=>{var wW=d(),x5=W$(),PW={collection:"seq",default:!0,nodeClass:x5.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve($,J){if(!wW.isSeq($))J("Expected a sequence for this tag");return $},createNode:($,J,Q)=>x5.YAMLSeq.from($,J,Q)};bW.seq=PW});var T2=C((fW)=>{var SW=S2(),CW={identify:($)=>typeof $==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:($)=>$,stringify($,J,Q,X){return J=Object.assign({actualString:!0},J),SW.stringifyString($,J,Q,X)}};fW.string=CW});var r6=C((TW)=>{var h5=Y0(),y5={identify:($)=>$==null,createNode:()=>new h5.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new h5.Scalar(null),stringify:({source:$},J)=>typeof $==="string"&&y5.test.test($)?$:J.options.nullStr};TW.nullTag=y5});var _4=C((hW)=>{var xW=Y0(),g5={identify:($)=>typeof $==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:($)=>new xW.Scalar($[0]==="t"||$[0]==="T"),stringify({source:$,value:J},Q){if($&&g5.test.test($)){let X=$[0]==="t"||$[0]==="T";if(J===X)return $}return J?Q.options.trueStr:Q.options.falseStr}};hW.boolTag=g5});var J2=C((kW)=>{function gW({format:$,minFractionDigits:J,tag:Q,value:X}){if(typeof X==="bigint")return String(X);let Y=typeof X==="number"?X:Number(X);if(!isFinite(Y))return isNaN(Y)?".nan":Y<0?"-.inf":".inf";let G=Object.is(X,-0)?"-0":JSON.stringify(X);if(!$&&J&&(!Q||Q==="tag:yaml.org,2002:float")&&/^-?\d/.test(G)&&!G.includes("e")){let q=G.indexOf(".");if(q<0)q=G.length,G+=".";let W=J-(G.length-q-1);while(W-- >0)G+="0"}return G}kW.stringifyNumber=gW});var Z4=C((dW)=>{var uW=Y0(),A4=J2(),lW={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:($)=>$.slice(-3).toLowerCase()==="nan"?NaN:$[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:A4.stringifyNumber},cW={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:($)=>parseFloat($),stringify($){let J=Number($.value);return isFinite(J)?J.toExponential():A4.stringifyNumber($)}},pW={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve($){let J=new uW.Scalar(parseFloat($)),Q=$.indexOf(".");if(Q!==-1&&$[$.length-1]==="0")J.minFractionDigits=$.length-Q-1;return J},stringify:A4.stringifyNumber};dW.float=pW;dW.floatExp=cW;dW.floatNaN=lW});var P4=C((tW)=>{var k5=J2(),a6=($)=>typeof $==="bigint"||Number.isInteger($),w4=($,J,Q,{intAsBigInt:X})=>X?BigInt($):parseInt($.substring(J),Q);function m5($,J,Q){let{value:X}=$;if(a6(X)&&X>=0)return Q+X.toString(J);return k5.stringifyNumber($)}var aW={identify:($)=>a6($)&&$>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:($,J,Q)=>w4($,2,8,Q),stringify:($)=>m5($,8,"0o")},sW={identify:a6,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:($,J,Q)=>w4($,0,10,Q),stringify:k5.stringifyNumber},oW={identify:($)=>a6($)&&$>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:($,J,Q)=>w4($,2,16,Q),stringify:($)=>m5($,16,"0x")};tW.int=sW;tW.intHex=oW;tW.intOct=aW});var u5=C((zz)=>{var Qz=e$(),Xz=r6(),Yz=$2(),Gz=T2(),qz=_4(),b4=Z4(),E4=P4(),Wz=[Qz.map,Yz.seq,Gz.string,Xz.nullTag,qz.boolTag,E4.intOct,E4.int,E4.intHex,b4.floatNaN,b4.floatExp,b4.float];zz.schema=Wz});var c5=C((Oz)=>{var Bz=Y0(),Uz=e$(),Vz=$2();function l5($){return typeof $==="bigint"||Number.isInteger($)}var s6=({value:$})=>JSON.stringify($),Dz=[{identify:($)=>typeof $==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:($)=>$,stringify:s6},{identify:($)=>$==null,createNode:()=>new Bz.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:s6},{identify:($)=>typeof $==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:($)=>$==="true",stringify:s6},{identify:l5,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:($,J,{intAsBigInt:Q})=>Q?BigInt($):parseInt($,10),stringify:({value:$})=>l5($)?$.toString():JSON.stringify($)},{identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:($)=>parseFloat($),stringify:s6}],Fz={default:!0,tag:"",test:/^/,resolve($,J){return J(`Unresolved plain scalar ${JSON.stringify($)}`),$}},Mz=[Uz.map,Vz.seq].concat(Dz,Fz);Oz.schema=Mz});var C4=C((jz)=>{var v2=F6("buffer"),S4=Y0(),Rz=S2(),Lz={identify:($)=>$ instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve($,J){if(typeof v2.Buffer==="function")return v2.Buffer.from($,"base64");else if(typeof atob==="function"){let Q=atob($.replace(/[\n\r]/g,"")),X=new Uint8Array(Q.length);for(let Y=0;Y<Q.length;++Y)X[Y]=Q.charCodeAt(Y);return X}else return J("This environment does not support reading binary tags; either Buffer or atob is required"),$},stringify({comment:$,type:J,value:Q},X,Y,G){if(!Q)return"";let q=Q,W;if(typeof v2.Buffer==="function")W=q instanceof v2.Buffer?q.toString("base64"):v2.Buffer.from(q.buffer).toString("base64");else if(typeof btoa==="function"){let z="";for(let H=0;H<q.length;++H)z+=String.fromCharCode(q[H]);W=btoa(z)}else throw Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(J??(J=S4.Scalar.BLOCK_LITERAL),J!==S4.Scalar.QUOTE_DOUBLE){let z=Math.max(X.options.lineWidth-X.indent.length,X.options.minContentWidth),H=Math.ceil(W.length/z),B=Array(H);for(let U=0,V=0;U<H;++U,V+=z)B[U]=W.substr(V,z);W=B.join(J===S4.Scalar.BLOCK_LITERAL?`
53
+ `:" ")}return Rz.stringifyString({comment:$,type:J,value:W},X,Y,G)}};jz.binary=Lz});var t6=C((wz)=>{var o6=d(),f4=Y$(),_z=Y0(),Az=W$();function p5($,J){if(o6.isSeq($))for(let Q=0;Q<$.items.length;++Q){let X=$.items[Q];if(o6.isPair(X))continue;else if(o6.isMap(X)){if(X.items.length>1)J("Each pair must have its own sequence indicator");let Y=X.items[0]||new f4.Pair(new _z.Scalar(null));if(X.commentBefore)Y.key.commentBefore=Y.key.commentBefore?`${X.commentBefore}
54
+ ${Y.key.commentBefore}`:X.commentBefore;if(X.comment){let G=Y.value??Y.key;G.comment=G.comment?`${X.comment}
55
+ ${G.comment}`:X.comment}X=Y}$.items[Q]=o6.isPair(X)?X:new f4.Pair(X)}else J("Expected a sequence for this tag");return $}function d5($,J,Q){let{replacer:X}=Q,Y=new Az.YAMLSeq($);Y.tag="tag:yaml.org,2002:pairs";let G=0;if(J&&Symbol.iterator in Object(J))for(let q of J){if(typeof X==="function")q=X.call(J,String(G++),q);let W,z;if(Array.isArray(q))if(q.length===2)W=q[0],z=q[1];else throw TypeError(`Expected [key, value] tuple: ${q}`);else if(q&&q instanceof Object){let H=Object.keys(q);if(H.length===1)W=H[0],z=q[W];else throw TypeError(`Expected tuple with one key, not ${H.length} keys`)}else W=q;Y.items.push(f4.createPair(W,z,Q))}return Y}var Zz={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:p5,createNode:d5};wz.createPairs=d5;wz.pairs=Zz;wz.resolvePairs=p5});var T4=C((fz)=>{var i5=d(),I4=J$(),x2=q$(),Sz=W$(),n5=t6();class A$ extends Sz.YAMLSeq{constructor(){super();this.add=x2.YAMLMap.prototype.add.bind(this),this.delete=x2.YAMLMap.prototype.delete.bind(this),this.get=x2.YAMLMap.prototype.get.bind(this),this.has=x2.YAMLMap.prototype.has.bind(this),this.set=x2.YAMLMap.prototype.set.bind(this),this.tag=A$.tag}toJSON($,J){if(!J)return super.toJSON($);let Q=new Map;if(J?.onCreate)J.onCreate(Q);for(let X of this.items){let Y,G;if(i5.isPair(X))Y=I4.toJS(X.key,"",J),G=I4.toJS(X.value,Y,J);else Y=I4.toJS(X,"",J);if(Q.has(Y))throw Error("Ordered maps must not include duplicate keys");Q.set(Y,G)}return Q}static from($,J,Q){let X=n5.createPairs($,J,Q),Y=new this;return Y.items=X.items,Y}}A$.tag="tag:yaml.org,2002:omap";var Cz={collection:"seq",identify:($)=>$ instanceof Map,nodeClass:A$,default:!1,tag:"tag:yaml.org,2002:omap",resolve($,J){let Q=n5.resolvePairs($,J),X=[];for(let{key:Y}of Q.items)if(i5.isScalar(Y))if(X.includes(Y.value))J(`Ordered maps must not include duplicate keys: ${Y.value}`);else X.push(Y.value);return Object.assign(new A$,Q)},createNode:($,J,Q)=>A$.from($,J,Q)};fz.YAMLOMap=A$;fz.omap=Cz});var t5=C((vz)=>{var r5=Y0();function a5({value:$,source:J},Q){if(J&&($?s5:o5).test.test(J))return J;return $?Q.options.trueStr:Q.options.falseStr}var s5={identify:($)=>$===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new r5.Scalar(!0),stringify:a5},o5={identify:($)=>$===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new r5.Scalar(!1),stringify:a5};vz.falseTag=o5;vz.trueTag=s5});var e5=C((uz)=>{var yz=Y0(),v4=J2(),gz={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:($)=>$.slice(-3).toLowerCase()==="nan"?NaN:$[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:v4.stringifyNumber},kz={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:($)=>parseFloat($.replace(/_/g,"")),stringify($){let J=Number($.value);return isFinite(J)?J.toExponential():v4.stringifyNumber($)}},mz={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve($){let J=new yz.Scalar(parseFloat($.replace(/_/g,""))),Q=$.indexOf(".");if(Q!==-1){let X=$.substring(Q+1).replace(/_/g,"");if(X[X.length-1]==="0")J.minFractionDigits=X.length}return J},stringify:v4.stringifyNumber};uz.float=mz;uz.floatExp=kz;uz.floatNaN=gz});var JJ=C((az)=>{var $J=J2(),h2=($)=>typeof $==="bigint"||Number.isInteger($);function e6($,J,Q,{intAsBigInt:X}){let Y=$[0];if(Y==="-"||Y==="+")J+=1;if($=$.substring(J).replace(/_/g,""),X){switch(Q){case 2:$=`0b${$}`;break;case 8:$=`0o${$}`;break;case 16:$=`0x${$}`;break}let q=BigInt($);return Y==="-"?BigInt(-1)*q:q}let G=parseInt($,Q);return Y==="-"?-1*G:G}function x4($,J,Q){let{value:X}=$;if(h2(X)){let Y=X.toString(J);return X<0?"-"+Q+Y.substr(1):Q+Y}return $J.stringifyNumber($)}var dz={identify:h2,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:($,J,Q)=>e6($,2,2,Q),stringify:($)=>x4($,2,"0b")},iz={identify:h2,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:($,J,Q)=>e6($,1,8,Q),stringify:($)=>x4($,8,"0")},nz={identify:h2,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:($,J,Q)=>e6($,0,10,Q),stringify:$J.stringifyNumber},rz={identify:h2,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:($,J,Q)=>e6($,2,16,Q),stringify:($)=>x4($,16,"0x")};az.int=nz;az.intBin=dz;az.intHex=rz;az.intOct=iz});var h4=C((JH)=>{var Q9=d(),$9=Y$(),J9=q$();class Z$ extends J9.YAMLMap{constructor($){super($);this.tag=Z$.tag}add($){let J;if(Q9.isPair($))J=$;else if($&&typeof $==="object"&&"key"in $&&"value"in $&&$.value===null)J=new $9.Pair($.key,null);else J=new $9.Pair($,null);if(!J9.findPair(this.items,J.key))this.items.push(J)}get($,J){let Q=J9.findPair(this.items,$);return!J&&Q9.isPair(Q)?Q9.isScalar(Q.key)?Q.key.value:Q.key:Q}set($,J){if(typeof J!=="boolean")throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof J}`);let Q=J9.findPair(this.items,$);if(Q&&!J)this.items.splice(this.items.indexOf(Q),1);else if(!Q&&J)this.items.push(new $9.Pair($))}toJSON($,J){return super.toJSON($,J,Set)}toString($,J,Q){if(!$)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},$,{allNullValues:!0}),J,Q);else throw Error("Set items must all have null values")}static from($,J,Q){let{replacer:X}=Q,Y=new this($);if(J&&Symbol.iterator in Object(J))for(let G of J){if(typeof X==="function")G=X.call(J,G,G);Y.items.push($9.createPair(G,null,Q))}return Y}}Z$.tag="tag:yaml.org,2002:set";var $H={collection:"map",identify:($)=>$ instanceof Set,nodeClass:Z$,default:!1,tag:"tag:yaml.org,2002:set",createNode:($,J,Q)=>Z$.from($,J,Q),resolve($,J){if(Q9.isMap($))if($.hasAllNullValues(!0))return Object.assign(new Z$,$);else J("Set items must all have null values");else J("Expected a mapping for this tag");return $}};JH.YAMLSet=Z$;JH.set=$H});var g4=C((WH)=>{var YH=J2();function y4($,J){let Q=$[0],X=Q==="-"||Q==="+"?$.substring(1):$,Y=(q)=>J?BigInt(q):Number(q),G=X.replace(/_/g,"").split(":").reduce((q,W)=>q*Y(60)+Y(W),Y(0));return Q==="-"?Y(-1)*G:G}function QJ($){let{value:J}=$,Q=(q)=>q;if(typeof J==="bigint")Q=(q)=>BigInt(q);else if(isNaN(J)||!isFinite(J))return YH.stringifyNumber($);let X="";if(J<0)X="-",J*=Q(-1);let Y=Q(60),G=[J%Y];if(J<60)G.unshift(0);else if(J=(J-G[0])/Y,G.unshift(J%Y),J>=60)J=(J-G[0])/Y,G.unshift(J);return X+G.map((q)=>String(q).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var GH={identify:($)=>typeof $==="bigint"||Number.isInteger($),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:($,J,{intAsBigInt:Q})=>y4($,Q),stringify:QJ},qH={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:($)=>y4($,!1),stringify:QJ},XJ={identify:($)=>$ instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve($){let J=$.match(XJ.test);if(!J)throw Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,Q,X,Y,G,q,W]=J.map(Number),z=J[7]?Number((J[7]+"00").substr(1,3)):0,H=Date.UTC(Q,X-1,Y,G||0,q||0,W||0,z),B=J[8];if(B&&B!=="Z"){let U=y4(B,!1);if(Math.abs(U)<30)U*=60;H-=60000*U}return new Date(H)},stringify:({value:$})=>$?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};WH.floatTime=qH;WH.intTime=GH;WH.timestamp=XJ});var GJ=C((NH)=>{var UH=e$(),VH=r6(),DH=$2(),FH=T2(),MH=C4(),YJ=t5(),k4=e5(),X9=JJ(),OH=m6(),KH=T4(),RH=t6(),LH=h4(),m4=g4(),jH=[UH.map,DH.seq,FH.string,VH.nullTag,YJ.trueTag,YJ.falseTag,X9.intBin,X9.intOct,X9.int,X9.intHex,k4.floatNaN,k4.floatExp,k4.float,MH.binary,OH.merge,KH.omap,RH.pairs,LH.set,m4.intTime,m4.floatTime,m4.timestamp];NH.schema=jH});var MJ=C((CH)=>{var HJ=e$(),AH=r6(),BJ=$2(),ZH=T2(),wH=_4(),u4=Z4(),l4=P4(),PH=u5(),bH=c5(),UJ=C4(),y2=m6(),VJ=T4(),DJ=t6(),qJ=GJ(),FJ=h4(),Y9=g4(),WJ=new Map([["core",PH.schema],["failsafe",[HJ.map,BJ.seq,ZH.string]],["json",bH.schema],["yaml11",qJ.schema],["yaml-1.1",qJ.schema]]),zJ={binary:UJ.binary,bool:wH.boolTag,float:u4.float,floatExp:u4.floatExp,floatNaN:u4.floatNaN,floatTime:Y9.floatTime,int:l4.int,intHex:l4.intHex,intOct:l4.intOct,intTime:Y9.intTime,map:HJ.map,merge:y2.merge,null:AH.nullTag,omap:VJ.omap,pairs:DJ.pairs,seq:BJ.seq,set:FJ.set,timestamp:Y9.timestamp},EH={"tag:yaml.org,2002:binary":UJ.binary,"tag:yaml.org,2002:merge":y2.merge,"tag:yaml.org,2002:omap":VJ.omap,"tag:yaml.org,2002:pairs":DJ.pairs,"tag:yaml.org,2002:set":FJ.set,"tag:yaml.org,2002:timestamp":Y9.timestamp};function SH($,J,Q){let X=WJ.get(J);if(X&&!$)return Q&&!X.includes(y2.merge)?X.concat(y2.merge):X.slice();let Y=X;if(!Y)if(Array.isArray($))Y=[];else{let G=Array.from(WJ.keys()).filter((q)=>q!=="yaml11").map((q)=>JSON.stringify(q)).join(", ");throw Error(`Unknown schema "${J}"; use one of ${G} or define customTags array`)}if(Array.isArray($))for(let G of $)Y=Y.concat(G);else if(typeof $==="function")Y=$(Y.slice());if(Q)Y=Y.concat(y2.merge);return Y.reduce((G,q)=>{let W=typeof q==="string"?zJ[q]:q;if(!W){let z=JSON.stringify(q),H=Object.keys(zJ).map((B)=>JSON.stringify(B)).join(", ");throw Error(`Unknown custom tag ${z}; use one of ${H}`)}if(!G.includes(W))G.push(W);return G},[])}CH.coreKnownTags=EH;CH.getTags=SH});var d4=C((yH)=>{var c4=d(),TH=e$(),vH=$2(),xH=T2(),G9=MJ(),hH=($,J)=>$.key<J.key?-1:$.key>J.key?1:0;class p4{constructor({compat:$,customTags:J,merge:Q,resolveKnownTags:X,schema:Y,sortMapEntries:G,toStringDefaults:q}){this.compat=Array.isArray($)?G9.getTags($,"compat"):$?G9.getTags(null,$):null,this.name=typeof Y==="string"&&Y||"core",this.knownTags=X?G9.coreKnownTags:{},this.tags=G9.getTags(J,this.name,Q),this.toStringOptions=q??null,Object.defineProperty(this,c4.MAP,{value:TH.map}),Object.defineProperty(this,c4.SCALAR,{value:xH.string}),Object.defineProperty(this,c4.SEQ,{value:vH.seq}),this.sortMapEntries=typeof G==="function"?G:G===!0?hH:null}clone(){let $=Object.create(p4.prototype,Object.getOwnPropertyDescriptors(this));return $.tags=this.tags.slice(),$}}yH.Schema=p4});var OJ=C((uH)=>{var kH=d(),i4=C2(),g2=b2();function mH($,J){let Q=[],X=J.directives===!0;if(J.directives!==!1&&$.directives){let z=$.directives.toString($);if(z)Q.push(z),X=!0;else if($.directives.docStart)X=!0}if(X)Q.push("---");let Y=i4.createStringifyContext($,J),{commentString:G}=Y.options;if($.commentBefore){if(Q.length!==1)Q.unshift("");let z=G($.commentBefore);Q.unshift(g2.indentComment(z,""))}let q=!1,W=null;if($.contents){if(kH.isNode($.contents)){if($.contents.spaceBefore&&X)Q.push("");if($.contents.commentBefore){let B=G($.contents.commentBefore);Q.push(g2.indentComment(B,""))}Y.forceBlockIndent=!!$.comment,W=$.contents.comment}let z=W?void 0:()=>q=!0,H=i4.stringify($.contents,Y,()=>W=null,z);if(W)H+=g2.lineComment(H,"",G(W));if((H[0]==="|"||H[0]===">")&&Q[Q.length-1]==="---")Q[Q.length-1]=`--- ${H}`;else Q.push(H)}else Q.push(i4.stringify($.contents,Y));if($.directives?.docEnd)if($.comment){let z=G($.comment);if(z.includes(`
56
+ `))Q.push("..."),Q.push(g2.indentComment(z,""));else Q.push(`... ${z}`)}else Q.push("...");else{let z=$.comment;if(z&&q)z=z.replace(/^\n+/,"");if(z){if((!q||W)&&Q[Q.length-1]!=="")Q.push("");Q.push(g2.indentComment(G(z),""))}}return Q.join(`
57
57
  `)+`
58
- `}vB.stringifyDocument=IB});var h2=C((cB)=>{var hB=j2(),o$=C6(),R0=p(),yB=J$(),gB=t0(),kB=c4(),mB=VJ(),p4=P6(),uB=U4(),lB=N2(),i4=B4();class n4{constructor($,J,Q){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,R0.NODE_TYPE,{value:R0.DOC});let X=null;if(typeof J==="function"||Array.isArray(J))X=J;else if(Q===void 0&&J)Q=J,J=void 0;let W=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},Q);this.options=W;let{version:G}=W;if(Q?._directives){if(this.directives=Q._directives.atDocument(),this.directives.yaml.explicit)G=this.directives.yaml.version}else this.directives=new i4.Directives({version:G});this.setSchema(G,Q),this.contents=$===void 0?null:this.createNode($,X,Q)}clone(){let $=Object.create(n4.prototype,{[R0.NODE_TYPE]:{value:R0.DOC}});if($.commentBefore=this.commentBefore,$.comment=this.comment,$.errors=this.errors.slice(),$.warnings=this.warnings.slice(),$.options=Object.assign({},this.options),this.directives)$.directives=this.directives.clone();if($.schema=this.schema.clone(),$.contents=R0.isNode(this.contents)?this.contents.clone($.schema):this.contents,this.range)$.range=this.range.slice();return $}add($){if(t$(this.contents))this.contents.add($)}addIn($,J){if(t$(this.contents))this.contents.addIn($,J)}createAlias($,J){if(!$.anchor){let Q=p4.anchorNames(this);$.anchor=!J||Q.has(J)?p4.findNewAnchor(J||"a",Q):J}return new hB.Alias($.anchor)}createNode($,J,Q){let X=void 0;if(typeof J==="function")$=J.call({"":$},"",$),X=J;else if(Array.isArray(J)){let D=(R)=>typeof R==="number"||R instanceof String||R instanceof Number,O=J.filter(D).map(String);if(O.length>0)J=J.concat(O);X=J}else if(Q===void 0&&J)Q=J,J=void 0;let{aliasDuplicateObjects:W,anchorPrefix:G,flow:Y,keepUndefined:q,onTagObj:H,tag:B}=Q??{},{onAnchor:U,setAnchors:z,sourceObjects:V}=p4.createNodeAnchors(this,G||"a"),M={aliasDuplicateObjects:W??!0,keepUndefined:q??!1,onAnchor:U,onTagObj:H,replacer:X,schema:this.schema,sourceObjects:V},F=lB.createNode($,B,M);if(Y&&R0.isCollection(F))F.flow=!0;return z(),F}createPair($,J,Q={}){let X=this.createNode($,null,Q),W=this.createNode(J,null,Q);return new yB.Pair(X,W)}delete($){return t$(this.contents)?this.contents.delete($):!1}deleteIn($){if(o$.isEmptyPath($)){if(this.contents==null)return!1;return this.contents=null,!0}return t$(this.contents)?this.contents.deleteIn($):!1}get($,J){return R0.isCollection(this.contents)?this.contents.get($,J):void 0}getIn($,J){if(o$.isEmptyPath($))return!J&&R0.isScalar(this.contents)?this.contents.value:this.contents;return R0.isCollection(this.contents)?this.contents.getIn($,J):void 0}has($){return R0.isCollection(this.contents)?this.contents.has($):!1}hasIn($){if(o$.isEmptyPath($))return this.contents!==void 0;return R0.isCollection(this.contents)?this.contents.hasIn($):!1}set($,J){if(this.contents==null)this.contents=o$.collectionFromPath(this.schema,[$],J);else if(t$(this.contents))this.contents.set($,J)}setIn($,J){if(o$.isEmptyPath($))this.contents=J;else if(this.contents==null)this.contents=o$.collectionFromPath(this.schema,Array.from($),J);else if(t$(this.contents))this.contents.setIn($,J)}setSchema($,J={}){if(typeof $==="number")$=String($);let Q;switch($){case"1.1":if(this.directives)this.directives.yaml.version="1.1";else this.directives=new i4.Directives({version:"1.1"});Q={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":if(this.directives)this.directives.yaml.version=$;else this.directives=new i4.Directives({version:$});Q={resolveKnownTags:!0,schema:"core"};break;case null:if(this.directives)delete this.directives;Q=null;break;default:{let X=JSON.stringify($);throw Error(`Expected '1.1', '1.2' or null as first argument, but found: ${X}`)}}if(J.schema instanceof Object)this.schema=J.schema;else if(Q)this.schema=new kB.Schema(Object.assign(Q,J));else throw Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:$,jsonArg:J,mapAsMap:Q,maxAliasCount:X,onAnchor:W,reviver:G}={}){let Y={anchors:new Map,doc:this,keep:!$,mapAsMap:Q===!0,mapKeyWarned:!1,maxAliasCount:typeof X==="number"?X:100},q=gB.toJS(this.contents,J??"",Y);if(typeof W==="function")for(let{count:H,res:B}of Y.anchors.values())W(B,H);return typeof G==="function"?uB.applyReviver(G,{"":q},"",q):q}toJSON($,J){return this.toJS({json:!0,jsonArg:$,mapAsMap:!1,onAnchor:J})}toString($={}){if(this.errors.length>0)throw Error("Document with errors cannot be stringified");if("indent"in $&&(!Number.isInteger($.indent)||Number($.indent)<=0)){let J=JSON.stringify($.indent);throw Error(`"indent" option must be a positive integer, not ${J}`)}return mB.stringifyDocument(this,$)}}function t$($){if(R0.isCollection($))return!0;throw Error("Expected a YAML collection as document contents")}cB.Document=n4});var y2=C((iB)=>{class X9 extends Error{constructor($,J,Q,X){super();this.name=$,this.code=Q,this.message=X,this.pos=J}}class zJ extends X9{constructor($,J,Q){super("YAMLParseError",$,J,Q)}}class DJ extends X9{constructor($,J,Q){super("YAMLWarning",$,J,Q)}}var pB=($,J)=>(Q)=>{if(Q.pos[0]===-1)return;Q.linePos=Q.pos.map((q)=>J.linePos(q));let{line:X,col:W}=Q.linePos[0];Q.message+=` at line ${X}, column ${W}`;let G=W-1,Y=$.substring(J.lineStarts[X-1],J.lineStarts[X]).replace(/[\n\r]+$/,"");if(G>=60&&Y.length>80){let q=Math.min(G-39,Y.length-79);Y="\u2026"+Y.substring(q),G-=q-1}if(Y.length>80)Y=Y.substring(0,79)+"\u2026";if(X>1&&/^ *$/.test(Y.substring(0,G))){let q=$.substring(J.lineStarts[X-2],J.lineStarts[X-1]);if(q.length>80)q=q.substring(0,79)+`\u2026
59
- `;Y=q+Y}if(/[^ ]/.test(Y)){let q=1,H=Q.linePos[1];if(H?.line===X&&H.col>W)q=Math.max(1,Math.min(H.col-W,80-G));let B=" ".repeat(G)+"^".repeat(q);Q.message+=`:
60
-
61
- ${Y}
62
- ${B}
63
- `}};iB.YAMLError=X9;iB.YAMLParseError=zJ;iB.YAMLWarning=DJ;iB.prettifyError=pB});var g2=C((tB)=>{function oB($,{flow:J,indicator:Q,next:X,offset:W,onError:G,parentIndent:Y,startOnNewline:q}){let H=!1,B=q,U=q,z="",V="",M=!1,F=!1,D=null,O=null,R=null,L=null,_=null,Z=null,P=null;for(let N of $){if(F){if(N.type!=="space"&&N.type!=="newline"&&N.type!=="comma")G(N.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");F=!1}if(D){if(B&&N.type!=="comment"&&N.type!=="newline")G(D,"TAB_AS_INDENT","Tabs are not allowed as indentation");D=null}switch(N.type){case"space":if(!J&&(Q!=="doc-start"||X?.type!=="flow-collection")&&N.source.includes("\t"))D=N;U=!0;break;case"comment":{if(!U)G(N,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let E=N.source.substring(1)||" ";if(!z)z=E;else z+=V+E;V="",B=!1;break}case"newline":if(B){if(z)z+=N.source;else if(!Z||Q!=="seq-item-ind")H=!0}else V+=N.source;if(B=!0,M=!0,O||R)L=N;U=!0;break;case"anchor":if(O)G(N,"MULTIPLE_ANCHORS","A node can have at most one anchor");if(N.source.endsWith(":"))G(N.offset+N.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0);O=N,P??(P=N.offset),B=!1,U=!1,F=!0;break;case"tag":{if(R)G(N,"MULTIPLE_TAGS","A node can have at most one tag");R=N,P??(P=N.offset),B=!1,U=!1,F=!0;break}case Q:if(O||R)G(N,"BAD_PROP_ORDER",`Anchors and tags must be after the ${N.source} indicator`);if(Z)G(N,"UNEXPECTED_TOKEN",`Unexpected ${N.source} in ${J??"collection"}`);Z=N,B=Q==="seq-item-ind"||Q==="explicit-key-ind",U=!1;break;case"comma":if(J){if(_)G(N,"UNEXPECTED_TOKEN",`Unexpected , in ${J}`);_=N,B=!1,U=!1;break}default:G(N,"UNEXPECTED_TOKEN",`Unexpected ${N.type} token`),B=!1,U=!1}}let w=$[$.length-1],f=w?w.offset+w.source.length:W;if(F&&X&&X.type!=="space"&&X.type!=="newline"&&X.type!=="comma"&&(X.type!=="scalar"||X.source!==""))G(X.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");if(D&&(B&&D.indent<=Y||X?.type==="block-map"||X?.type==="block-seq"))G(D,"TAB_AS_INDENT","Tabs are not allowed as indentation");return{comma:_,found:Z,spaceBefore:H,comment:z,hasNewline:M,anchor:O,tag:R,newlineAfterProp:L,end:f,start:P??f}}tB.resolveProps=oB});var W9=C(($U)=>{function r4($){if(!$)return null;switch($.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if($.source.includes(`
64
- `))return!0;if($.end){for(let J of $.end)if(J.type==="newline")return!0}return!1;case"flow-collection":for(let J of $.items){for(let Q of J.start)if(Q.type==="newline")return!0;if(J.sep){for(let Q of J.sep)if(Q.type==="newline")return!0}if(r4(J.key)||r4(J.value))return!0}return!1;default:return!0}}$U.containsNewline=r4});var a4=C((WU)=>{var QU=W9();function XU($,J,Q){if(J?.type==="flow-collection"){let X=J.end[0];if(X.indent===$&&(X.source==="]"||X.source==="}")&&QU.containsNewline(J))Q(X,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}WU.flowIndentCheck=XU});var s4=C((qU)=>{var FJ=p();function YU($,J,Q){let{uniqueKeys:X}=$.options;if(X===!1)return!1;let W=typeof X==="function"?X:(G,Y)=>G===Y||FJ.isScalar(G)&&FJ.isScalar(Y)&&G.value===Y.value;return J.some((G)=>W(G.key,Q))}qU.mapIncludes=YU});var LJ=C((DU)=>{var OJ=J$(),BU=X$(),MJ=g2(),UU=W9(),KJ=a4(),VU=s4(),RJ="All mapping items must start at the same column";function zU({composeNode:$,composeEmptyNode:J},Q,X,W,G){let q=new(G?.nodeClass??BU.YAMLMap)(Q.schema);if(Q.atRoot)Q.atRoot=!1;let H=X.offset,B=null;for(let U of X.items){let{start:z,key:V,sep:M,value:F}=U,D=MJ.resolveProps(z,{indicator:"explicit-key-ind",next:V??M?.[0],offset:H,onError:W,parentIndent:X.indent,startOnNewline:!0}),O=!D.found;if(O){if(V){if(V.type==="block-seq")W(H,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key");else if("indent"in V&&V.indent!==X.indent)W(H,"BAD_INDENT",RJ)}if(!D.anchor&&!D.tag&&!M){if(B=D.end,D.comment)if(q.comment)q.comment+=`
65
- `+D.comment;else q.comment=D.comment;continue}if(D.newlineAfterProp||UU.containsNewline(V))W(V??z[z.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else if(D.found?.indent!==X.indent)W(H,"BAD_INDENT",RJ);Q.atKey=!0;let R=D.end,L=V?$(Q,V,D,W):J(Q,R,z,null,D,W);if(Q.schema.compat)KJ.flowIndentCheck(X.indent,V,W);if(Q.atKey=!1,VU.mapIncludes(Q,q.items,L))W(R,"DUPLICATE_KEY","Map keys must be unique");let _=MJ.resolveProps(M??[],{indicator:"map-value-ind",next:F,offset:L.range[2],onError:W,parentIndent:X.indent,startOnNewline:!V||V.type==="block-scalar"});if(H=_.end,_.found){if(O){if(F?.type==="block-map"&&!_.hasNewline)W(H,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings");if(Q.options.strict&&D.start<_.found.offset-1024)W(L.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key")}let Z=F?$(Q,F,_,W):J(Q,H,M,null,_,W);if(Q.schema.compat)KJ.flowIndentCheck(X.indent,F,W);H=Z.range[2];let P=new OJ.Pair(L,Z);if(Q.options.keepSourceTokens)P.srcToken=U;q.items.push(P)}else{if(O)W(L.range,"MISSING_CHAR","Implicit map keys need to be followed by map values");if(_.comment)if(L.comment)L.comment+=`
66
- `+_.comment;else L.comment=_.comment;let Z=new OJ.Pair(L);if(Q.options.keepSourceTokens)Z.srcToken=U;q.items.push(Z)}}if(B&&B<H)W(B,"IMPOSSIBLE","Map comment with trailing content");return q.range=[X.offset,H,B??H],q}DU.resolveBlockMap=zU});var AJ=C((LU)=>{var OU=W$(),MU=g2(),KU=a4();function RU({composeNode:$,composeEmptyNode:J},Q,X,W,G){let q=new(G?.nodeClass??OU.YAMLSeq)(Q.schema);if(Q.atRoot)Q.atRoot=!1;if(Q.atKey)Q.atKey=!1;let H=X.offset,B=null;for(let{start:U,value:z}of X.items){let V=MU.resolveProps(U,{indicator:"seq-item-ind",next:z,offset:H,onError:W,parentIndent:X.indent,startOnNewline:!0});if(!V.found)if(V.anchor||V.tag||z)if(z?.type==="block-seq")W(V.end,"BAD_INDENT","All sequence items must start at the same column");else W(H,"MISSING_CHAR","Sequence item without - indicator");else{if(B=V.end,V.comment)q.comment=V.comment;continue}let M=z?$(Q,z,V,W):J(Q,V.end,U,null,V,W);if(Q.schema.compat)KU.flowIndentCheck(X.indent,z,W);H=M.range[2],q.items.push(M)}return q.range=[X.offset,H,B??H],q}LU.resolveBlockSeq=RU});var e$=C((jU)=>{function _U($,J,Q,X){let W="";if($){let G=!1,Y="";for(let q of $){let{source:H,type:B}=q;switch(B){case"space":G=!0;break;case"comment":{if(Q&&!G)X(q,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let U=H.substring(1)||" ";if(!W)W=U;else W+=Y+U;Y="";break}case"newline":if(W)Y+=H;G=!0;break;default:X(q,"UNEXPECTED_TOKEN",`Unexpected ${B} at node end`)}J+=H.length}}return{comment:W,offset:J}}jU.resolveEnd=_U});var NJ=C((fU)=>{var ZU=p(),wU=J$(),_J=X$(),bU=W$(),PU=e$(),jJ=g2(),SU=W9(),EU=s4(),o4="Block collections are not allowed within flow collections",t4=($)=>$&&($.type==="block-map"||$.type==="block-seq");function CU({composeNode:$,composeEmptyNode:J},Q,X,W,G){let Y=X.start.source==="{",q=Y?"flow map":"flow sequence",B=new(G?.nodeClass??(Y?_J.YAMLMap:bU.YAMLSeq))(Q.schema);B.flow=!0;let U=Q.atRoot;if(U)Q.atRoot=!1;if(Q.atKey)Q.atKey=!1;let z=X.offset+X.start.source.length;for(let O=0;O<X.items.length;++O){let R=X.items[O],{start:L,key:_,sep:Z,value:P}=R,w=jJ.resolveProps(L,{flow:q,indicator:"explicit-key-ind",next:_??Z?.[0],offset:z,onError:W,parentIndent:X.indent,startOnNewline:!1});if(!w.found){if(!w.anchor&&!w.tag&&!Z&&!P){if(O===0&&w.comma)W(w.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${q}`);else if(O<X.items.length-1)W(w.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${q}`);if(w.comment)if(B.comment)B.comment+=`
67
- `+w.comment;else B.comment=w.comment;z=w.end;continue}if(!Y&&Q.options.strict&&SU.containsNewline(_))W(_,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(O===0){if(w.comma)W(w.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${q}`)}else{if(!w.comma)W(w.start,"MISSING_CHAR",`Missing , between ${q} items`);if(w.comment){let f="";$:for(let N of L)switch(N.type){case"comma":case"space":break;case"comment":f=N.source.substring(1);break $;default:break $}if(f){let N=B.items[B.items.length-1];if(ZU.isPair(N))N=N.value??N.key;if(N.comment)N.comment+=`
68
- `+f;else N.comment=f;w.comment=w.comment.substring(f.length+1)}}}if(!Y&&!Z&&!w.found){let f=P?$(Q,P,w,W):J(Q,w.end,Z,null,w,W);if(B.items.push(f),z=f.range[2],t4(P))W(f.range,"BLOCK_IN_FLOW",o4)}else{Q.atKey=!0;let f=w.end,N=_?$(Q,_,w,W):J(Q,f,L,null,w,W);if(t4(_))W(N.range,"BLOCK_IN_FLOW",o4);Q.atKey=!1;let E=jJ.resolveProps(Z??[],{flow:q,indicator:"map-value-ind",next:P,offset:N.range[2],onError:W,parentIndent:X.indent,startOnNewline:!1});if(E.found){if(!Y&&!w.found&&Q.options.strict){if(Z)for(let g of Z){if(g===E.found)break;if(g.type==="newline"){W(g,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}if(w.start<E.found.offset-1024)W(E.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else if(P)if("source"in P&&P.source?.[0]===":")W(P,"MISSING_CHAR",`Missing space after : in ${q}`);else W(E.start,"MISSING_CHAR",`Missing , or : between ${q} items`);let x=P?$(Q,P,E,W):E.found?J(Q,E.end,Z,null,E,W):null;if(x){if(t4(P))W(x.range,"BLOCK_IN_FLOW",o4)}else if(E.comment)if(N.comment)N.comment+=`
69
- `+E.comment;else N.comment=E.comment;let n=new wU.Pair(N,x);if(Q.options.keepSourceTokens)n.srcToken=R;if(Y){let g=B;if(EU.mapIncludes(Q,g.items,N))W(f,"DUPLICATE_KEY","Map keys must be unique");g.items.push(n)}else{let g=new _J.YAMLMap(Q.schema);g.flow=!0,g.items.push(n);let c=(x??N).range;g.range=[N.range[0],c[1],c[2]],B.items.push(g)}z=x?x.range[2]:E.end}}let V=Y?"}":"]",[M,...F]=X.end,D=z;if(M?.source===V)D=M.offset+M.source.length;else{let O=q[0].toUpperCase()+q.substring(1),R=U?`${O} must end with a ${V}`:`${O} in block collection must be sufficiently indented and end with a ${V}`;if(W(z,U?"MISSING_CHAR":"BAD_INDENT",R),M&&M.source.length!==1)F.unshift(M)}if(F.length>0){let O=PU.resolveEnd(F,D,Q.options.strict,W);if(O.comment)if(B.comment)B.comment+=`
70
- `+O.comment;else B.comment=O.comment;B.range=[X.offset,D,O.offset]}else B.range=[X.offset,D,D];return B}fU.resolveFlowCollection=CU});var ZJ=C((uU)=>{var IU=p(),vU=W0(),xU=X$(),hU=W$(),yU=LJ(),gU=AJ(),kU=NJ();function e4($,J,Q,X,W,G){let Y=Q.type==="block-map"?yU.resolveBlockMap($,J,Q,X,G):Q.type==="block-seq"?gU.resolveBlockSeq($,J,Q,X,G):kU.resolveFlowCollection($,J,Q,X,G),q=Y.constructor;if(W==="!"||W===q.tagName)return Y.tag=q.tagName,Y;if(W)Y.tag=W;return Y}function mU($,J,Q,X,W){let G=X.tag,Y=!G?null:J.directives.tagName(G.source,(V)=>W(G,"TAG_RESOLVE_FAILED",V));if(Q.type==="block-seq"){let{anchor:V,newlineAfterProp:M}=X,F=V&&G?V.offset>G.offset?V:G:V??G;if(F&&(!M||M.offset<F.offset))W(F,"MISSING_CHAR","Missing newline after block sequence props")}let q=Q.type==="block-map"?"map":Q.type==="block-seq"?"seq":Q.start.source==="{"?"map":"seq";if(!G||!Y||Y==="!"||Y===xU.YAMLMap.tagName&&q==="map"||Y===hU.YAMLSeq.tagName&&q==="seq")return e4($,J,Q,W,Y);let H=J.schema.tags.find((V)=>V.tag===Y&&V.collection===q);if(!H){let V=J.schema.knownTags[Y];if(V?.collection===q)J.schema.tags.push(Object.assign({},V,{default:!1})),H=V;else{if(V)W(G,"BAD_COLLECTION_TYPE",`${V.tag} used for ${q} collection, but expects ${V.collection??"scalar"}`,!0);else W(G,"TAG_RESOLVE_FAILED",`Unresolved tag: ${Y}`,!0);return e4($,J,Q,W,Y)}}let B=e4($,J,Q,W,Y,H),U=H.resolve?.(B,(V)=>W(G,"TAG_RESOLVE_FAILED",V),J.options)??B,z=IU.isNode(U)?U:new vU.Scalar(U);if(z.range=B.range,z.tag=Y,H?.format)z.format=H.format;return z}uU.composeCollection=mU});var J8=C((iU)=>{var $8=W0();function cU($,J,Q){let X=J.offset,W=dU(J,$.options.strict,Q);if(!W)return{value:"",type:null,comment:"",range:[X,X,X]};let G=W.mode===">"?$8.Scalar.BLOCK_FOLDED:$8.Scalar.BLOCK_LITERAL,Y=J.source?pU(J.source):[],q=Y.length;for(let D=Y.length-1;D>=0;--D){let O=Y[D][1];if(O===""||O==="\r")q=D;else break}if(q===0){let D=W.chomp==="+"&&Y.length>0?`
71
- `.repeat(Math.max(1,Y.length-1)):"",O=X+W.length;if(J.source)O+=J.source.length;return{value:D,type:G,comment:W.comment,range:[X,O,O]}}let H=J.indent+W.indent,B=J.offset+W.length,U=0;for(let D=0;D<q;++D){let[O,R]=Y[D];if(R===""||R==="\r"){if(W.indent===0&&O.length>H)H=O.length}else{if(O.length<H)Q(B+O.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator");if(W.indent===0)H=O.length;if(U=D,H===0&&!$.atRoot)Q(B,"BAD_INDENT","Block scalar values in collections must be indented");break}B+=O.length+R.length+1}for(let D=Y.length-1;D>=q;--D)if(Y[D][0].length>H)q=D+1;let z="",V="",M=!1;for(let D=0;D<U;++D)z+=Y[D][0].slice(H)+`
72
- `;for(let D=U;D<q;++D){let[O,R]=Y[D];B+=O.length+R.length+1;let L=R[R.length-1]==="\r";if(L)R=R.slice(0,-1);if(R&&O.length<H){let Z=`Block scalar lines must not be less indented than their ${W.indent?"explicit indentation indicator":"first line"}`;Q(B-R.length-(L?2:1),"BAD_INDENT",Z),O=""}if(G===$8.Scalar.BLOCK_LITERAL)z+=V+O.slice(H)+R,V=`
73
- `;else if(O.length>H||R[0]==="\t"){if(V===" ")V=`
74
- `;else if(!M&&V===`
58
+ `}uH.stringifyDocument=mH});var k2=C((sH)=>{var cH=w2(),Q2=T6(),R0=d(),pH=Y$(),dH=J$(),iH=d4(),nH=OJ(),n4=C6(),rH=V4(),aH=P2(),r4=U4();class a4{constructor($,J,Q){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,R0.NODE_TYPE,{value:R0.DOC});let X=null;if(typeof J==="function"||Array.isArray(J))X=J;else if(Q===void 0&&J)Q=J,J=void 0;let Y=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},Q);this.options=Y;let{version:G}=Y;if(Q?._directives){if(this.directives=Q._directives.atDocument(),this.directives.yaml.explicit)G=this.directives.yaml.version}else this.directives=new r4.Directives({version:G});this.setSchema(G,Q),this.contents=$===void 0?null:this.createNode($,X,Q)}clone(){let $=Object.create(a4.prototype,{[R0.NODE_TYPE]:{value:R0.DOC}});if($.commentBefore=this.commentBefore,$.comment=this.comment,$.errors=this.errors.slice(),$.warnings=this.warnings.slice(),$.options=Object.assign({},this.options),this.directives)$.directives=this.directives.clone();if($.schema=this.schema.clone(),$.contents=R0.isNode(this.contents)?this.contents.clone($.schema):this.contents,this.range)$.range=this.range.slice();return $}add($){if(X2(this.contents))this.contents.add($)}addIn($,J){if(X2(this.contents))this.contents.addIn($,J)}createAlias($,J){if(!$.anchor){let Q=n4.anchorNames(this);$.anchor=!J||Q.has(J)?n4.findNewAnchor(J||"a",Q):J}return new cH.Alias($.anchor)}createNode($,J,Q){let X=void 0;if(typeof J==="function")$=J.call({"":$},"",$),X=J;else if(Array.isArray(J)){let D=(R)=>typeof R==="number"||R instanceof String||R instanceof Number,M=J.filter(D).map(String);if(M.length>0)J=J.concat(M);X=J}else if(Q===void 0&&J)Q=J,J=void 0;let{aliasDuplicateObjects:Y,anchorPrefix:G,flow:q,keepUndefined:W,onTagObj:z,tag:H}=Q??{},{onAnchor:B,setAnchors:U,sourceObjects:V}=n4.createNodeAnchors(this,G||"a"),O={aliasDuplicateObjects:Y??!0,keepUndefined:W??!1,onAnchor:B,onTagObj:z,replacer:X,schema:this.schema,sourceObjects:V},F=aH.createNode($,H,O);if(q&&R0.isCollection(F))F.flow=!0;return U(),F}createPair($,J,Q={}){let X=this.createNode($,null,Q),Y=this.createNode(J,null,Q);return new pH.Pair(X,Y)}delete($){return X2(this.contents)?this.contents.delete($):!1}deleteIn($){if(Q2.isEmptyPath($)){if(this.contents==null)return!1;return this.contents=null,!0}return X2(this.contents)?this.contents.deleteIn($):!1}get($,J){return R0.isCollection(this.contents)?this.contents.get($,J):void 0}getIn($,J){if(Q2.isEmptyPath($))return!J&&R0.isScalar(this.contents)?this.contents.value:this.contents;return R0.isCollection(this.contents)?this.contents.getIn($,J):void 0}has($){return R0.isCollection(this.contents)?this.contents.has($):!1}hasIn($){if(Q2.isEmptyPath($))return this.contents!==void 0;return R0.isCollection(this.contents)?this.contents.hasIn($):!1}set($,J){if(this.contents==null)this.contents=Q2.collectionFromPath(this.schema,[$],J);else if(X2(this.contents))this.contents.set($,J)}setIn($,J){if(Q2.isEmptyPath($))this.contents=J;else if(this.contents==null)this.contents=Q2.collectionFromPath(this.schema,Array.from($),J);else if(X2(this.contents))this.contents.setIn($,J)}setSchema($,J={}){if(typeof $==="number")$=String($);let Q;switch($){case"1.1":if(this.directives)this.directives.yaml.version="1.1";else this.directives=new r4.Directives({version:"1.1"});Q={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":if(this.directives)this.directives.yaml.version=$;else this.directives=new r4.Directives({version:$});Q={resolveKnownTags:!0,schema:"core"};break;case null:if(this.directives)delete this.directives;Q=null;break;default:{let X=JSON.stringify($);throw Error(`Expected '1.1', '1.2' or null as first argument, but found: ${X}`)}}if(J.schema instanceof Object)this.schema=J.schema;else if(Q)this.schema=new iH.Schema(Object.assign(Q,J));else throw Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:$,jsonArg:J,mapAsMap:Q,maxAliasCount:X,onAnchor:Y,reviver:G}={}){let q={anchors:new Map,doc:this,keep:!$,mapAsMap:Q===!0,mapKeyWarned:!1,maxAliasCount:typeof X==="number"?X:100},W=dH.toJS(this.contents,J??"",q);if(typeof Y==="function")for(let{count:z,res:H}of q.anchors.values())Y(H,z);return typeof G==="function"?rH.applyReviver(G,{"":W},"",W):W}toJSON($,J){return this.toJS({json:!0,jsonArg:$,mapAsMap:!1,onAnchor:J})}toString($={}){if(this.errors.length>0)throw Error("Document with errors cannot be stringified");if("indent"in $&&(!Number.isInteger($.indent)||Number($.indent)<=0)){let J=JSON.stringify($.indent);throw Error(`"indent" option must be a positive integer, not ${J}`)}return nH.stringifyDocument(this,$)}}function X2($){if(R0.isCollection($))return!0;throw Error("Expected a YAML collection as document contents")}sH.Document=a4});var m2=C((eH)=>{class q9 extends Error{constructor($,J,Q,X){super();this.name=$,this.code=Q,this.message=X,this.pos=J}}class KJ extends q9{constructor($,J,Q){super("YAMLParseError",$,J,Q)}}class RJ extends q9{constructor($,J,Q){super("YAMLWarning",$,J,Q)}}var tH=($,J)=>(Q)=>{if(Q.pos[0]===-1)return;Q.linePos=Q.pos.map((W)=>J.linePos(W));let{line:X,col:Y}=Q.linePos[0];Q.message+=` at line ${X}, column ${Y}`;let G=Y-1,q=$.substring(J.lineStarts[X-1],J.lineStarts[X]).replace(/[\n\r]+$/,"");if(G>=60&&q.length>80){let W=Math.min(G-39,q.length-79);q="\u2026"+q.substring(W),G-=W-1}if(q.length>80)q=q.substring(0,79)+"\u2026";if(X>1&&/^ *$/.test(q.substring(0,G))){let W=$.substring(J.lineStarts[X-2],J.lineStarts[X-1]);if(W.length>80)W=W.substring(0,79)+`\u2026
59
+ `;q=W+q}if(/[^ ]/.test(q)){let W=1,z=Q.linePos[1];if(z?.line===X&&z.col>Y)W=Math.max(1,Math.min(z.col-Y,80-G));let H=" ".repeat(G)+"^".repeat(W);Q.message+=`:
60
+
61
+ ${q}
62
+ ${H}
63
+ `}};eH.YAMLError=q9;eH.YAMLParseError=KJ;eH.YAMLWarning=RJ;eH.prettifyError=tH});var u2=C((GB)=>{function YB($,{flow:J,indicator:Q,next:X,offset:Y,onError:G,parentIndent:q,startOnNewline:W}){let z=!1,H=W,B=W,U="",V="",O=!1,F=!1,D=null,M=null,R=null,L=null,N=null,Z=null,b=null;for(let A of $){if(F){if(A.type!=="space"&&A.type!=="newline"&&A.type!=="comma")G(A.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");F=!1}if(D){if(H&&A.type!=="comment"&&A.type!=="newline")G(D,"TAB_AS_INDENT","Tabs are not allowed as indentation");D=null}switch(A.type){case"space":if(!J&&(Q!=="doc-start"||X?.type!=="flow-collection")&&A.source.includes("\t"))D=A;B=!0;break;case"comment":{if(!B)G(A,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let S=A.source.substring(1)||" ";if(!U)U=S;else U+=V+S;V="",H=!1;break}case"newline":if(H){if(U)U+=A.source;else if(!Z||Q!=="seq-item-ind")z=!0}else V+=A.source;if(H=!0,O=!0,M||R)L=A;B=!0;break;case"anchor":if(M)G(A,"MULTIPLE_ANCHORS","A node can have at most one anchor");if(A.source.endsWith(":"))G(A.offset+A.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0);M=A,b??(b=A.offset),H=!1,B=!1,F=!0;break;case"tag":{if(R)G(A,"MULTIPLE_TAGS","A node can have at most one tag");R=A,b??(b=A.offset),H=!1,B=!1,F=!0;break}case Q:if(M||R)G(A,"BAD_PROP_ORDER",`Anchors and tags must be after the ${A.source} indicator`);if(Z)G(A,"UNEXPECTED_TOKEN",`Unexpected ${A.source} in ${J??"collection"}`);Z=A,H=Q==="seq-item-ind"||Q==="explicit-key-ind",B=!1;break;case"comma":if(J){if(N)G(A,"UNEXPECTED_TOKEN",`Unexpected , in ${J}`);N=A,H=!1,B=!1;break}default:G(A,"UNEXPECTED_TOKEN",`Unexpected ${A.type} token`),H=!1,B=!1}}let w=$[$.length-1],f=w?w.offset+w.source.length:Y;if(F&&X&&X.type!=="space"&&X.type!=="newline"&&X.type!=="comma"&&(X.type!=="scalar"||X.source!==""))G(X.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");if(D&&(H&&D.indent<=q||X?.type==="block-map"||X?.type==="block-seq"))G(D,"TAB_AS_INDENT","Tabs are not allowed as indentation");return{comma:N,found:Z,spaceBefore:z,comment:U,hasNewline:O,anchor:M,tag:R,newlineAfterProp:L,end:f,start:b??f}}GB.resolveProps=YB});var W9=C((WB)=>{function s4($){if(!$)return null;switch($.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if($.source.includes(`
64
+ `))return!0;if($.end){for(let J of $.end)if(J.type==="newline")return!0}return!1;case"flow-collection":for(let J of $.items){for(let Q of J.start)if(Q.type==="newline")return!0;if(J.sep){for(let Q of J.sep)if(Q.type==="newline")return!0}if(s4(J.key)||s4(J.value))return!0}return!1;default:return!0}}WB.containsNewline=s4});var o4=C((UB)=>{var HB=W9();function BB($,J,Q){if(J?.type==="flow-collection"){let X=J.end[0];if(X.indent===$&&(X.source==="]"||X.source==="}")&&HB.containsNewline(J))Q(X,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}UB.flowIndentCheck=BB});var t4=C((FB)=>{var LJ=d();function DB($,J,Q){let{uniqueKeys:X}=$.options;if(X===!1)return!1;let Y=typeof X==="function"?X:(G,q)=>G===q||LJ.isScalar(G)&&LJ.isScalar(q)&&G.value===q.value;return J.some((G)=>Y(G.key,Q))}FB.mapIncludes=DB});var ZJ=C((jB)=>{var jJ=Y$(),OB=q$(),NJ=u2(),KB=W9(),_J=o4(),RB=t4(),AJ="All mapping items must start at the same column";function LB({composeNode:$,composeEmptyNode:J},Q,X,Y,G){let W=new(G?.nodeClass??OB.YAMLMap)(Q.schema);if(Q.atRoot)Q.atRoot=!1;let z=X.offset,H=null;for(let B of X.items){let{start:U,key:V,sep:O,value:F}=B,D=NJ.resolveProps(U,{indicator:"explicit-key-ind",next:V??O?.[0],offset:z,onError:Y,parentIndent:X.indent,startOnNewline:!0}),M=!D.found;if(M){if(V){if(V.type==="block-seq")Y(z,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key");else if("indent"in V&&V.indent!==X.indent)Y(z,"BAD_INDENT",AJ)}if(!D.anchor&&!D.tag&&!O){if(H=D.end,D.comment)if(W.comment)W.comment+=`
65
+ `+D.comment;else W.comment=D.comment;continue}if(D.newlineAfterProp||KB.containsNewline(V))Y(V??U[U.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else if(D.found?.indent!==X.indent)Y(z,"BAD_INDENT",AJ);Q.atKey=!0;let R=D.end,L=V?$(Q,V,D,Y):J(Q,R,U,null,D,Y);if(Q.schema.compat)_J.flowIndentCheck(X.indent,V,Y);if(Q.atKey=!1,RB.mapIncludes(Q,W.items,L))Y(R,"DUPLICATE_KEY","Map keys must be unique");let N=NJ.resolveProps(O??[],{indicator:"map-value-ind",next:F,offset:L.range[2],onError:Y,parentIndent:X.indent,startOnNewline:!V||V.type==="block-scalar"});if(z=N.end,N.found){if(M){if(F?.type==="block-map"&&!N.hasNewline)Y(z,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings");if(Q.options.strict&&D.start<N.found.offset-1024)Y(L.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key")}let Z=F?$(Q,F,N,Y):J(Q,z,O,null,N,Y);if(Q.schema.compat)_J.flowIndentCheck(X.indent,F,Y);z=Z.range[2];let b=new jJ.Pair(L,Z);if(Q.options.keepSourceTokens)b.srcToken=B;W.items.push(b)}else{if(M)Y(L.range,"MISSING_CHAR","Implicit map keys need to be followed by map values");if(N.comment)if(L.comment)L.comment+=`
66
+ `+N.comment;else L.comment=N.comment;let Z=new jJ.Pair(L);if(Q.options.keepSourceTokens)Z.srcToken=B;W.items.push(Z)}}if(H&&H<z)Y(H,"IMPOSSIBLE","Map comment with trailing content");return W.range=[X.offset,z,H??z],W}jB.resolveBlockMap=LB});var wJ=C((PB)=>{var _B=W$(),AB=u2(),ZB=o4();function wB({composeNode:$,composeEmptyNode:J},Q,X,Y,G){let W=new(G?.nodeClass??_B.YAMLSeq)(Q.schema);if(Q.atRoot)Q.atRoot=!1;if(Q.atKey)Q.atKey=!1;let z=X.offset,H=null;for(let{start:B,value:U}of X.items){let V=AB.resolveProps(B,{indicator:"seq-item-ind",next:U,offset:z,onError:Y,parentIndent:X.indent,startOnNewline:!0});if(!V.found)if(V.anchor||V.tag||U)if(U?.type==="block-seq")Y(V.end,"BAD_INDENT","All sequence items must start at the same column");else Y(z,"MISSING_CHAR","Sequence item without - indicator");else{if(H=V.end,V.comment)W.comment=V.comment;continue}let O=U?$(Q,U,V,Y):J(Q,V.end,B,null,V,Y);if(Q.schema.compat)ZB.flowIndentCheck(X.indent,U,Y);z=O.range[2],W.items.push(O)}return W.range=[X.offset,z,H??z],W}PB.resolveBlockSeq=wB});var Y2=C((SB)=>{function EB($,J,Q,X){let Y="";if($){let G=!1,q="";for(let W of $){let{source:z,type:H}=W;switch(H){case"space":G=!0;break;case"comment":{if(Q&&!G)X(W,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let B=z.substring(1)||" ";if(!Y)Y=B;else Y+=q+B;q="";break}case"newline":if(Y)q+=z;G=!0;break;default:X(W,"UNEXPECTED_TOKEN",`Unexpected ${H} at node end`)}J+=z.length}}return{comment:Y,offset:J}}SB.resolveEnd=EB});var EJ=C((gB)=>{var fB=d(),IB=Y$(),PJ=q$(),TB=W$(),vB=Y2(),bJ=u2(),xB=W9(),hB=t4(),e4="Block collections are not allowed within flow collections",$8=($)=>$&&($.type==="block-map"||$.type==="block-seq");function yB({composeNode:$,composeEmptyNode:J},Q,X,Y,G){let q=X.start.source==="{",W=q?"flow map":"flow sequence",H=new(G?.nodeClass??(q?PJ.YAMLMap:TB.YAMLSeq))(Q.schema);H.flow=!0;let B=Q.atRoot;if(B)Q.atRoot=!1;if(Q.atKey)Q.atKey=!1;let U=X.offset+X.start.source.length;for(let M=0;M<X.items.length;++M){let R=X.items[M],{start:L,key:N,sep:Z,value:b}=R,w=bJ.resolveProps(L,{flow:W,indicator:"explicit-key-ind",next:N??Z?.[0],offset:U,onError:Y,parentIndent:X.indent,startOnNewline:!1});if(!w.found){if(!w.anchor&&!w.tag&&!Z&&!b){if(M===0&&w.comma)Y(w.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${W}`);else if(M<X.items.length-1)Y(w.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${W}`);if(w.comment)if(H.comment)H.comment+=`
67
+ `+w.comment;else H.comment=w.comment;U=w.end;continue}if(!q&&Q.options.strict&&xB.containsNewline(N))Y(N,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(M===0){if(w.comma)Y(w.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${W}`)}else{if(!w.comma)Y(w.start,"MISSING_CHAR",`Missing , between ${W} items`);if(w.comment){let f="";$:for(let A of L)switch(A.type){case"comma":case"space":break;case"comment":f=A.source.substring(1);break $;default:break $}if(f){let A=H.items[H.items.length-1];if(fB.isPair(A))A=A.value??A.key;if(A.comment)A.comment+=`
68
+ `+f;else A.comment=f;w.comment=w.comment.substring(f.length+1)}}}if(!q&&!Z&&!w.found){let f=b?$(Q,b,w,Y):J(Q,w.end,Z,null,w,Y);if(H.items.push(f),U=f.range[2],$8(b))Y(f.range,"BLOCK_IN_FLOW",e4)}else{Q.atKey=!0;let f=w.end,A=N?$(Q,N,w,Y):J(Q,f,L,null,w,Y);if($8(N))Y(A.range,"BLOCK_IN_FLOW",e4);Q.atKey=!1;let S=bJ.resolveProps(Z??[],{flow:W,indicator:"map-value-ind",next:b,offset:A.range[2],onError:Y,parentIndent:X.indent,startOnNewline:!1});if(S.found){if(!q&&!w.found&&Q.options.strict){if(Z)for(let g of Z){if(g===S.found)break;if(g.type==="newline"){Y(g,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}if(w.start<S.found.offset-1024)Y(S.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else if(b)if("source"in b&&b.source?.[0]===":")Y(b,"MISSING_CHAR",`Missing space after : in ${W}`);else Y(S.start,"MISSING_CHAR",`Missing , or : between ${W} items`);let x=b?$(Q,b,S,Y):S.found?J(Q,S.end,Z,null,S,Y):null;if(x){if($8(b))Y(x.range,"BLOCK_IN_FLOW",e4)}else if(S.comment)if(A.comment)A.comment+=`
69
+ `+S.comment;else A.comment=S.comment;let r=new IB.Pair(A,x);if(Q.options.keepSourceTokens)r.srcToken=R;if(q){let g=H;if(hB.mapIncludes(Q,g.items,A))Y(f,"DUPLICATE_KEY","Map keys must be unique");g.items.push(r)}else{let g=new PJ.YAMLMap(Q.schema);g.flow=!0,g.items.push(r);let c=(x??A).range;g.range=[A.range[0],c[1],c[2]],H.items.push(g)}U=x?x.range[2]:S.end}}let V=q?"}":"]",[O,...F]=X.end,D=U;if(O?.source===V)D=O.offset+O.source.length;else{let M=W[0].toUpperCase()+W.substring(1),R=B?`${M} must end with a ${V}`:`${M} in block collection must be sufficiently indented and end with a ${V}`;if(Y(U,B?"MISSING_CHAR":"BAD_INDENT",R),O&&O.source.length!==1)F.unshift(O)}if(F.length>0){let M=vB.resolveEnd(F,D,Q.options.strict,Y);if(M.comment)if(H.comment)H.comment+=`
70
+ `+M.comment;else H.comment=M.comment;H.range=[X.offset,D,M.offset]}else H.range=[X.offset,D,D];return H}gB.resolveFlowCollection=yB});var SJ=C((rB)=>{var mB=d(),uB=Y0(),lB=q$(),cB=W$(),pB=ZJ(),dB=wJ(),iB=EJ();function J8($,J,Q,X,Y,G){let q=Q.type==="block-map"?pB.resolveBlockMap($,J,Q,X,G):Q.type==="block-seq"?dB.resolveBlockSeq($,J,Q,X,G):iB.resolveFlowCollection($,J,Q,X,G),W=q.constructor;if(Y==="!"||Y===W.tagName)return q.tag=W.tagName,q;if(Y)q.tag=Y;return q}function nB($,J,Q,X,Y){let G=X.tag,q=!G?null:J.directives.tagName(G.source,(V)=>Y(G,"TAG_RESOLVE_FAILED",V));if(Q.type==="block-seq"){let{anchor:V,newlineAfterProp:O}=X,F=V&&G?V.offset>G.offset?V:G:V??G;if(F&&(!O||O.offset<F.offset))Y(F,"MISSING_CHAR","Missing newline after block sequence props")}let W=Q.type==="block-map"?"map":Q.type==="block-seq"?"seq":Q.start.source==="{"?"map":"seq";if(!G||!q||q==="!"||q===lB.YAMLMap.tagName&&W==="map"||q===cB.YAMLSeq.tagName&&W==="seq")return J8($,J,Q,Y,q);let z=J.schema.tags.find((V)=>V.tag===q&&V.collection===W);if(!z){let V=J.schema.knownTags[q];if(V?.collection===W)J.schema.tags.push(Object.assign({},V,{default:!1})),z=V;else{if(V)Y(G,"BAD_COLLECTION_TYPE",`${V.tag} used for ${W} collection, but expects ${V.collection??"scalar"}`,!0);else Y(G,"TAG_RESOLVE_FAILED",`Unresolved tag: ${q}`,!0);return J8($,J,Q,Y,q)}}let H=J8($,J,Q,Y,q,z),B=z.resolve?.(H,(V)=>Y(G,"TAG_RESOLVE_FAILED",V),J.options)??H,U=mB.isNode(B)?B:new uB.Scalar(B);if(U.range=H.range,U.tag=q,z?.format)U.format=z.format;return U}rB.composeCollection=nB});var X8=C((eB)=>{var Q8=Y0();function sB($,J,Q){let X=J.offset,Y=oB(J,$.options.strict,Q);if(!Y)return{value:"",type:null,comment:"",range:[X,X,X]};let G=Y.mode===">"?Q8.Scalar.BLOCK_FOLDED:Q8.Scalar.BLOCK_LITERAL,q=J.source?tB(J.source):[],W=q.length;for(let D=q.length-1;D>=0;--D){let M=q[D][1];if(M===""||M==="\r")W=D;else break}if(W===0){let D=Y.chomp==="+"&&q.length>0?`
71
+ `.repeat(Math.max(1,q.length-1)):"",M=X+Y.length;if(J.source)M+=J.source.length;return{value:D,type:G,comment:Y.comment,range:[X,M,M]}}let z=J.indent+Y.indent,H=J.offset+Y.length,B=0;for(let D=0;D<W;++D){let[M,R]=q[D];if(R===""||R==="\r"){if(Y.indent===0&&M.length>z)z=M.length}else{if(M.length<z)Q(H+M.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator");if(Y.indent===0)z=M.length;if(B=D,z===0&&!$.atRoot)Q(H,"BAD_INDENT","Block scalar values in collections must be indented");break}H+=M.length+R.length+1}for(let D=q.length-1;D>=W;--D)if(q[D][0].length>z)W=D+1;let U="",V="",O=!1;for(let D=0;D<B;++D)U+=q[D][0].slice(z)+`
72
+ `;for(let D=B;D<W;++D){let[M,R]=q[D];H+=M.length+R.length+1;let L=R[R.length-1]==="\r";if(L)R=R.slice(0,-1);if(R&&M.length<z){let Z=`Block scalar lines must not be less indented than their ${Y.indent?"explicit indentation indicator":"first line"}`;Q(H-R.length-(L?2:1),"BAD_INDENT",Z),M=""}if(G===Q8.Scalar.BLOCK_LITERAL)U+=V+M.slice(z)+R,V=`
73
+ `;else if(M.length>z||R[0]==="\t"){if(V===" ")V=`
74
+ `;else if(!O&&V===`
75
75
  `)V=`
76
76
 
77
- `;z+=V+O.slice(H)+R,V=`
78
- `,M=!0}else if(R==="")if(V===`
79
- `)z+=`
77
+ `;U+=V+M.slice(z)+R,V=`
78
+ `,O=!0}else if(R==="")if(V===`
79
+ `)U+=`
80
80
  `;else V=`
81
- `;else z+=V+R,V=" ",M=!1}switch(W.chomp){case"-":break;case"+":for(let D=q;D<Y.length;++D)z+=`
82
- `+Y[D][0].slice(H);if(z[z.length-1]!==`
83
- `)z+=`
84
- `;break;default:z+=`
85
- `}let F=X+W.length+J.source.length;return{value:z,type:G,comment:W.comment,range:[X,F,F]}}function dU({offset:$,props:J},Q,X){if(J[0].type!=="block-scalar-header")return X(J[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:W}=J[0],G=W[0],Y=0,q="",H=-1;for(let V=1;V<W.length;++V){let M=W[V];if(!q&&(M==="-"||M==="+"))q=M;else{let F=Number(M);if(!Y&&F)Y=F;else if(H===-1)H=$+V}}if(H!==-1)X(H,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${W}`);let B=!1,U="",z=W.length;for(let V=1;V<J.length;++V){let M=J[V];switch(M.type){case"space":B=!0;case"newline":z+=M.source.length;break;case"comment":if(Q&&!B)X(M,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");z+=M.source.length,U=M.source.substring(1);break;case"error":X(M,"UNEXPECTED_TOKEN",M.message),z+=M.source.length;break;default:{let F=`Unexpected token in block scalar header: ${M.type}`;X(M,"UNEXPECTED_TOKEN",F);let D=M.source;if(D&&typeof D==="string")z+=D.length}}}return{mode:G,indent:Y,chomp:q,comment:U,length:z}}function pU($){let J=$.split(/\n( *)/),Q=J[0],X=Q.match(/^( *)/),G=[X?.[1]?[X[1],Q.slice(X[1].length)]:["",Q]];for(let Y=1;Y<J.length;Y+=2)G.push([J[Y],J[Y+1]]);return G}iU.resolveBlockScalar=cU});var X8=C((QV)=>{var Q8=W0(),rU=e$();function aU($,J,Q){let{offset:X,type:W,source:G,end:Y}=$,q,H,B=(V,M,F)=>Q(X+V,M,F);switch(W){case"scalar":q=Q8.Scalar.PLAIN,H=sU(G,B);break;case"single-quoted-scalar":q=Q8.Scalar.QUOTE_SINGLE,H=oU(G,B);break;case"double-quoted-scalar":q=Q8.Scalar.QUOTE_DOUBLE,H=tU(G,B);break;default:return Q($,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${W}`),{value:"",type:null,comment:"",range:[X,X+G.length,X+G.length]}}let U=X+G.length,z=rU.resolveEnd(Y,U,J,Q);return{value:H,type:q,comment:z.comment,range:[X,U,z.offset]}}function sU($,J){let Q="";switch($[0]){case"\t":Q="a tab character";break;case",":Q="flow indicator character ,";break;case"%":Q="directive indicator character %";break;case"|":case">":{Q=`block scalar indicator ${$[0]}`;break}case"@":case"`":{Q=`reserved character ${$[0]}`;break}}if(Q)J(0,"BAD_SCALAR_START",`Plain value cannot start with ${Q}`);return wJ($)}function oU($,J){if($[$.length-1]!=="'"||$.length===1)J($.length,"MISSING_CHAR","Missing closing 'quote");return wJ($.slice(1,-1)).replace(/''/g,"'")}function wJ($){let J=/(.*?)\r?\n/sy,Q=J.exec($);if(!Q)return $;let X,W;try{X=new RegExp("(?<![ \t])[ \t]+$"),W=new RegExp("^[ \t]+|(?<![ \t])[ \t]+$","g")}catch{X=/[ \t]+$/,W=/^[ \t]+|[ \t]+$/g}let G=Q[1].replace(X,""),Y=" ",q=J.lastIndex;while(Q=J.exec($)){let B=Q[1].replace(W,"");if(B==="")if(Y===`
86
- `)G+=Y;else Y=`
87
- `;else G+=Y+B,Y=" ";q=J.lastIndex}let H=/[ \t]*(.*)/sy;return H.lastIndex=q,Q=H.exec($),G+Y+(Q?.[1]??"")}function tU($,J){let Q="";for(let X=1;X<$.length-1;++X){let W=$[X];if(W==="\r"&&$[X+1]===`
88
- `)continue;if(W===`
89
- `){let{fold:G,offset:Y}=eU($,X);Q+=G,X=Y}else if(W==="\\"){let G=$[++X],Y=$V[G];if(Y)Q+=Y;else if(G===`
81
+ `;else U+=V+R,V=" ",O=!1}switch(Y.chomp){case"-":break;case"+":for(let D=W;D<q.length;++D)U+=`
82
+ `+q[D][0].slice(z);if(U[U.length-1]!==`
83
+ `)U+=`
84
+ `;break;default:U+=`
85
+ `}let F=X+Y.length+J.source.length;return{value:U,type:G,comment:Y.comment,range:[X,F,F]}}function oB({offset:$,props:J},Q,X){if(J[0].type!=="block-scalar-header")return X(J[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:Y}=J[0],G=Y[0],q=0,W="",z=-1;for(let V=1;V<Y.length;++V){let O=Y[V];if(!W&&(O==="-"||O==="+"))W=O;else{let F=Number(O);if(!q&&F)q=F;else if(z===-1)z=$+V}}if(z!==-1)X(z,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${Y}`);let H=!1,B="",U=Y.length;for(let V=1;V<J.length;++V){let O=J[V];switch(O.type){case"space":H=!0;case"newline":U+=O.source.length;break;case"comment":if(Q&&!H)X(O,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");U+=O.source.length,B=O.source.substring(1);break;case"error":X(O,"UNEXPECTED_TOKEN",O.message),U+=O.source.length;break;default:{let F=`Unexpected token in block scalar header: ${O.type}`;X(O,"UNEXPECTED_TOKEN",F);let D=O.source;if(D&&typeof D==="string")U+=D.length}}}return{mode:G,indent:q,chomp:W,comment:B,length:U}}function tB($){let J=$.split(/\n( *)/),Q=J[0],X=Q.match(/^( *)/),G=[X?.[1]?[X[1],Q.slice(X[1].length)]:["",Q]];for(let q=1;q<J.length;q+=2)G.push([J[q],J[q+1]]);return G}eB.resolveBlockScalar=sB});var G8=C((HU)=>{var Y8=Y0(),JU=Y2();function QU($,J,Q){let{offset:X,type:Y,source:G,end:q}=$,W,z,H=(V,O,F)=>Q(X+V,O,F);switch(Y){case"scalar":W=Y8.Scalar.PLAIN,z=XU(G,H);break;case"single-quoted-scalar":W=Y8.Scalar.QUOTE_SINGLE,z=YU(G,H);break;case"double-quoted-scalar":W=Y8.Scalar.QUOTE_DOUBLE,z=GU(G,H);break;default:return Q($,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${Y}`),{value:"",type:null,comment:"",range:[X,X+G.length,X+G.length]}}let B=X+G.length,U=JU.resolveEnd(q,B,J,Q);return{value:z,type:W,comment:U.comment,range:[X,B,U.offset]}}function XU($,J){let Q="";switch($[0]){case"\t":Q="a tab character";break;case",":Q="flow indicator character ,";break;case"%":Q="directive indicator character %";break;case"|":case">":{Q=`block scalar indicator ${$[0]}`;break}case"@":case"`":{Q=`reserved character ${$[0]}`;break}}if(Q)J(0,"BAD_SCALAR_START",`Plain value cannot start with ${Q}`);return CJ($)}function YU($,J){if($[$.length-1]!=="'"||$.length===1)J($.length,"MISSING_CHAR","Missing closing 'quote");return CJ($.slice(1,-1)).replace(/''/g,"'")}function CJ($){let J=/(.*?)\r?\n/sy,Q=J.exec($);if(!Q)return $;let X,Y;try{X=new RegExp("(?<![ \t])[ \t]+$"),Y=new RegExp("^[ \t]+|(?<![ \t])[ \t]+$","g")}catch{X=/[ \t]+$/,Y=/^[ \t]+|[ \t]+$/g}let G=Q[1].replace(X,""),q=" ",W=J.lastIndex;while(Q=J.exec($)){let H=Q[1].replace(Y,"");if(H==="")if(q===`
86
+ `)G+=q;else q=`
87
+ `;else G+=q+H,q=" ";W=J.lastIndex}let z=/[ \t]*(.*)/sy;return z.lastIndex=W,Q=z.exec($),G+q+(Q?.[1]??"")}function GU($,J){let Q="";for(let X=1;X<$.length-1;++X){let Y=$[X];if(Y==="\r"&&$[X+1]===`
88
+ `)continue;if(Y===`
89
+ `){let{fold:G,offset:q}=qU($,X);Q+=G,X=q}else if(Y==="\\"){let G=$[++X],q=WU[G];if(q)Q+=q;else if(G===`
90
90
  `){G=$[X+1];while(G===" "||G==="\t")G=$[++X+1]}else if(G==="\r"&&$[X+1]===`
91
- `){G=$[++X+1];while(G===" "||G==="\t")G=$[++X+1]}else if(G==="x"||G==="u"||G==="U"){let q=G==="x"?2:G==="u"?4:8;Q+=JV($,X+1,q,J),X+=q}else{let q=$.substr(X-1,2);J(X-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${q}`),Q+=q}}else if(W===" "||W==="\t"){let G=X,Y=$[X+1];while(Y===" "||Y==="\t")Y=$[++X+1];if(Y!==`
92
- `&&!(Y==="\r"&&$[X+2]===`
93
- `))Q+=X>G?$.slice(G,X+1):W}else Q+=W}if($[$.length-1]!=='"'||$.length===1)J($.length,"MISSING_CHAR",'Missing closing "quote');return Q}function eU($,J){let Q="",X=$[J+1];while(X===" "||X==="\t"||X===`
91
+ `){G=$[++X+1];while(G===" "||G==="\t")G=$[++X+1]}else if(G==="x"||G==="u"||G==="U"){let W=G==="x"?2:G==="u"?4:8;Q+=zU($,X+1,W,J),X+=W}else{let W=$.substr(X-1,2);J(X-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${W}`),Q+=W}}else if(Y===" "||Y==="\t"){let G=X,q=$[X+1];while(q===" "||q==="\t")q=$[++X+1];if(q!==`
92
+ `&&!(q==="\r"&&$[X+2]===`
93
+ `))Q+=X>G?$.slice(G,X+1):Y}else Q+=Y}if($[$.length-1]!=='"'||$.length===1)J($.length,"MISSING_CHAR",'Missing closing "quote');return Q}function qU($,J){let Q="",X=$[J+1];while(X===" "||X==="\t"||X===`
94
94
  `||X==="\r"){if(X==="\r"&&$[J+2]!==`
95
95
  `)break;if(X===`
96
96
  `)Q+=`
97
- `;J+=1,X=$[J+1]}if(!Q)Q=" ";return{fold:Q,offset:J}}var $V={"0":"\x00",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
98
- `,r:"\r",t:"\t",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\","\t":"\t"};function JV($,J,Q,X){let W=$.substr(J,Q),Y=W.length===Q&&/^[0-9a-fA-F]+$/.test(W)?parseInt(W,16):NaN;try{return String.fromCodePoint(Y)}catch{let q=$.substr(J-2,Q+2);return X(J-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${q}`),q}}QV.resolveFlowScalar=aU});var PJ=C((BV)=>{var A$=p(),bJ=W0(),WV=J8(),GV=X8();function YV($,J,Q,X){let{value:W,type:G,comment:Y,range:q}=J.type==="block-scalar"?WV.resolveBlockScalar($,J,X):GV.resolveFlowScalar(J,$.options.strict,X),H=Q?$.directives.tagName(Q.source,(z)=>X(Q,"TAG_RESOLVE_FAILED",z)):null,B;if($.options.stringKeys&&$.atKey)B=$.schema[A$.SCALAR];else if(H)B=qV($.schema,W,H,Q,X);else if(J.type==="scalar")B=HV($,W,J,X);else B=$.schema[A$.SCALAR];let U;try{let z=B.resolve(W,(V)=>X(Q??J,"TAG_RESOLVE_FAILED",V),$.options);U=A$.isScalar(z)?z:new bJ.Scalar(z)}catch(z){let V=z instanceof Error?z.message:String(z);X(Q??J,"TAG_RESOLVE_FAILED",V),U=new bJ.Scalar(W)}if(U.range=q,U.source=W,G)U.type=G;if(H)U.tag=H;if(B.format)U.format=B.format;if(Y)U.comment=Y;return U}function qV($,J,Q,X,W){if(Q==="!")return $[A$.SCALAR];let G=[];for(let q of $.tags)if(!q.collection&&q.tag===Q)if(q.default&&q.test)G.push(q);else return q;for(let q of G)if(q.test?.test(J))return q;let Y=$.knownTags[Q];if(Y&&!Y.collection)return $.tags.push(Object.assign({},Y,{default:!1,test:void 0})),Y;return W(X,"TAG_RESOLVE_FAILED",`Unresolved tag: ${Q}`,Q!=="tag:yaml.org,2002:str"),$[A$.SCALAR]}function HV({atKey:$,directives:J,schema:Q},X,W,G){let Y=Q.tags.find((q)=>(q.default===!0||$&&q.default==="key")&&q.test?.test(X))||Q[A$.SCALAR];if(Q.compat){let q=Q.compat.find((H)=>H.default&&H.test?.test(X))??Q[A$.SCALAR];if(Y.tag!==q.tag){let H=J.tagString(Y.tag),B=J.tagString(q.tag),U=`Value may be parsed as either ${H} or ${B}`;G(W,"TAG_RESOLVE_FAILED",U,!0)}}return Y}BV.composeScalar=YV});var SJ=C((zV)=>{function VV($,J,Q){if(J){Q??(Q=J.length);for(let X=Q-1;X>=0;--X){let W=J[X];switch(W.type){case"space":case"comment":case"newline":$-=W.source.length;continue}W=J[++X];while(W?.type==="space")$+=W.source.length,W=J[++X];break}}return $}zV.emptyScalarPosition=VV});var fJ=C((_V)=>{var FV=j2(),OV=p(),MV=ZJ(),EJ=PJ(),KV=e$(),RV=SJ(),LV={composeNode:CJ,composeEmptyNode:W8};function CJ($,J,Q,X){let W=$.atKey,{spaceBefore:G,comment:Y,anchor:q,tag:H}=Q,B,U=!0;switch(J.type){case"alias":if(B=AV($,J,X),q||H)X(J,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":if(B=EJ.composeScalar($,J,H,X),q)B.anchor=q.source.substring(1);break;case"block-map":case"block-seq":case"flow-collection":try{if(B=MV.composeCollection(LV,$,J,Q,X),q)B.anchor=q.source.substring(1)}catch(z){let V=z instanceof Error?z.message:String(z);X(J,"RESOURCE_EXHAUSTION",V)}break;default:{let z=J.type==="error"?J.message:`Unsupported token (type: ${J.type})`;X(J,"UNEXPECTED_TOKEN",z),U=!1}}if(B??(B=W8($,J.offset,void 0,null,Q,X)),q&&B.anchor==="")X(q,"BAD_ALIAS","Anchor cannot be an empty string");if(W&&$.options.stringKeys&&(!OV.isScalar(B)||typeof B.value!=="string"||B.tag&&B.tag!=="tag:yaml.org,2002:str"))X(H??J,"NON_STRING_KEY","With stringKeys, all keys must be strings");if(G)B.spaceBefore=!0;if(Y)if(J.type==="scalar"&&J.source==="")B.comment=Y;else B.commentBefore=Y;if($.options.keepSourceTokens&&U)B.srcToken=J;return B}function W8($,J,Q,X,{spaceBefore:W,comment:G,anchor:Y,tag:q,end:H},B){let U={type:"scalar",offset:RV.emptyScalarPosition(J,Q,X),indent:-1,source:""},z=EJ.composeScalar($,U,q,B);if(Y){if(z.anchor=Y.source.substring(1),z.anchor==="")B(Y,"BAD_ALIAS","Anchor cannot be an empty string")}if(W)z.spaceBefore=!0;if(G)z.comment=G,z.range[2]=H;return z}function AV({options:$},{offset:J,source:Q,end:X},W){let G=new FV.Alias(Q.substring(1));if(G.source==="")W(J,"BAD_ALIAS","Alias cannot be an empty string");if(G.source.endsWith(":"))W(J+Q.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let Y=J+Q.length,q=KV.resolveEnd(X,Y,$.strict,W);if(G.range=[J,Y,q.offset],q.comment)G.comment=q.comment;return G}_V.composeEmptyNode=W8;_V.composeNode=CJ});var IJ=C((SV)=>{var ZV=h2(),TJ=fJ(),wV=e$(),bV=g2();function PV($,J,{offset:Q,start:X,value:W,end:G},Y){let q=Object.assign({_directives:J},$),H=new ZV.Document(void 0,q),B={atKey:!1,atRoot:!0,directives:H.directives,options:H.options,schema:H.schema},U=bV.resolveProps(X,{indicator:"doc-start",next:W??G?.[0],offset:Q,onError:Y,parentIndent:0,startOnNewline:!0});if(U.found){if(H.directives.docStart=!0,W&&(W.type==="block-map"||W.type==="block-seq")&&!U.hasNewline)Y(U.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")}H.contents=W?TJ.composeNode(B,W,U,Y):TJ.composeEmptyNode(B,U.end,X,null,U,Y);let z=H.contents.range[2],V=wV.resolveEnd(G,z,!1,Y);if(V.comment)H.comment=V.comment;return H.range=[Q,z,V.offset],H}SV.composeDoc=PV});var G8=C((xV)=>{var CV=B6("process"),fV=B4(),TV=h2(),k2=y2(),vJ=p(),IV=IJ(),vV=e$();function m2($){if(typeof $==="number")return[$,$+1];if(Array.isArray($))return $.length===2?$:[$[0],$[1]];let{offset:J,source:Q}=$;return[J,J+(typeof Q==="string"?Q.length:1)]}function xJ($){let J="",Q=!1,X=!1;for(let W=0;W<$.length;++W){let G=$[W];switch(G[0]){case"#":J+=(J===""?"":X?`
97
+ `;J+=1,X=$[J+1]}if(!Q)Q=" ";return{fold:Q,offset:J}}var WU={"0":"\x00",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
98
+ `,r:"\r",t:"\t",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\","\t":"\t"};function zU($,J,Q,X){let Y=$.substr(J,Q),q=Y.length===Q&&/^[0-9a-fA-F]+$/.test(Y)?parseInt(Y,16):NaN;try{return String.fromCodePoint(q)}catch{let W=$.substr(J-2,Q+2);return X(J-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${W}`),W}}HU.resolveFlowScalar=QU});var IJ=C((OU)=>{var w$=d(),fJ=Y0(),UU=X8(),VU=G8();function DU($,J,Q,X){let{value:Y,type:G,comment:q,range:W}=J.type==="block-scalar"?UU.resolveBlockScalar($,J,X):VU.resolveFlowScalar(J,$.options.strict,X),z=Q?$.directives.tagName(Q.source,(U)=>X(Q,"TAG_RESOLVE_FAILED",U)):null,H;if($.options.stringKeys&&$.atKey)H=$.schema[w$.SCALAR];else if(z)H=FU($.schema,Y,z,Q,X);else if(J.type==="scalar")H=MU($,Y,J,X);else H=$.schema[w$.SCALAR];let B;try{let U=H.resolve(Y,(V)=>X(Q??J,"TAG_RESOLVE_FAILED",V),$.options);B=w$.isScalar(U)?U:new fJ.Scalar(U)}catch(U){let V=U instanceof Error?U.message:String(U);X(Q??J,"TAG_RESOLVE_FAILED",V),B=new fJ.Scalar(Y)}if(B.range=W,B.source=Y,G)B.type=G;if(z)B.tag=z;if(H.format)B.format=H.format;if(q)B.comment=q;return B}function FU($,J,Q,X,Y){if(Q==="!")return $[w$.SCALAR];let G=[];for(let W of $.tags)if(!W.collection&&W.tag===Q)if(W.default&&W.test)G.push(W);else return W;for(let W of G)if(W.test?.test(J))return W;let q=$.knownTags[Q];if(q&&!q.collection)return $.tags.push(Object.assign({},q,{default:!1,test:void 0})),q;return Y(X,"TAG_RESOLVE_FAILED",`Unresolved tag: ${Q}`,Q!=="tag:yaml.org,2002:str"),$[w$.SCALAR]}function MU({atKey:$,directives:J,schema:Q},X,Y,G){let q=Q.tags.find((W)=>(W.default===!0||$&&W.default==="key")&&W.test?.test(X))||Q[w$.SCALAR];if(Q.compat){let W=Q.compat.find((z)=>z.default&&z.test?.test(X))??Q[w$.SCALAR];if(q.tag!==W.tag){let z=J.tagString(q.tag),H=J.tagString(W.tag),B=`Value may be parsed as either ${z} or ${H}`;G(Y,"TAG_RESOLVE_FAILED",B,!0)}}return q}OU.composeScalar=DU});var TJ=C((LU)=>{function RU($,J,Q){if(J){Q??(Q=J.length);for(let X=Q-1;X>=0;--X){let Y=J[X];switch(Y.type){case"space":case"comment":case"newline":$-=Y.source.length;continue}Y=J[++X];while(Y?.type==="space")$+=Y.source.length,Y=J[++X];break}}return $}LU.emptyScalarPosition=RU});var hJ=C((EU)=>{var NU=w2(),_U=d(),AU=SJ(),vJ=IJ(),ZU=Y2(),wU=TJ(),PU={composeNode:xJ,composeEmptyNode:q8};function xJ($,J,Q,X){let Y=$.atKey,{spaceBefore:G,comment:q,anchor:W,tag:z}=Q,H,B=!0;switch(J.type){case"alias":if(H=bU($,J,X),W||z)X(J,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":if(H=vJ.composeScalar($,J,z,X),W)H.anchor=W.source.substring(1);break;case"block-map":case"block-seq":case"flow-collection":try{if(H=AU.composeCollection(PU,$,J,Q,X),W)H.anchor=W.source.substring(1)}catch(U){let V=U instanceof Error?U.message:String(U);X(J,"RESOURCE_EXHAUSTION",V)}break;default:{let U=J.type==="error"?J.message:`Unsupported token (type: ${J.type})`;X(J,"UNEXPECTED_TOKEN",U),B=!1}}if(H??(H=q8($,J.offset,void 0,null,Q,X)),W&&H.anchor==="")X(W,"BAD_ALIAS","Anchor cannot be an empty string");if(Y&&$.options.stringKeys&&(!_U.isScalar(H)||typeof H.value!=="string"||H.tag&&H.tag!=="tag:yaml.org,2002:str"))X(z??J,"NON_STRING_KEY","With stringKeys, all keys must be strings");if(G)H.spaceBefore=!0;if(q)if(J.type==="scalar"&&J.source==="")H.comment=q;else H.commentBefore=q;if($.options.keepSourceTokens&&B)H.srcToken=J;return H}function q8($,J,Q,X,{spaceBefore:Y,comment:G,anchor:q,tag:W,end:z},H){let B={type:"scalar",offset:wU.emptyScalarPosition(J,Q,X),indent:-1,source:""},U=vJ.composeScalar($,B,W,H);if(q){if(U.anchor=q.source.substring(1),U.anchor==="")H(q,"BAD_ALIAS","Anchor cannot be an empty string")}if(Y)U.spaceBefore=!0;if(G)U.comment=G,U.range[2]=z;return U}function bU({options:$},{offset:J,source:Q,end:X},Y){let G=new NU.Alias(Q.substring(1));if(G.source==="")Y(J,"BAD_ALIAS","Alias cannot be an empty string");if(G.source.endsWith(":"))Y(J+Q.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let q=J+Q.length,W=ZU.resolveEnd(X,q,$.strict,Y);if(G.range=[J,q,W.offset],W.comment)G.comment=W.comment;return G}EU.composeEmptyNode=q8;EU.composeNode=xJ});var gJ=C((xU)=>{var fU=k2(),yJ=hJ(),IU=Y2(),TU=u2();function vU($,J,{offset:Q,start:X,value:Y,end:G},q){let W=Object.assign({_directives:J},$),z=new fU.Document(void 0,W),H={atKey:!1,atRoot:!0,directives:z.directives,options:z.options,schema:z.schema},B=TU.resolveProps(X,{indicator:"doc-start",next:Y??G?.[0],offset:Q,onError:q,parentIndent:0,startOnNewline:!0});if(B.found){if(z.directives.docStart=!0,Y&&(Y.type==="block-map"||Y.type==="block-seq")&&!B.hasNewline)q(B.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")}z.contents=Y?yJ.composeNode(H,Y,B,q):yJ.composeEmptyNode(H,B.end,X,null,B,q);let U=z.contents.range[2],V=IU.resolveEnd(G,U,!1,q);if(V.comment)z.comment=V.comment;return z.range=[Q,U,V.offset],z}xU.composeDoc=vU});var W8=C((lU)=>{var yU=F6("process"),gU=U4(),kU=k2(),l2=m2(),kJ=d(),mU=gJ(),uU=Y2();function c2($){if(typeof $==="number")return[$,$+1];if(Array.isArray($))return $.length===2?$:[$[0],$[1]];let{offset:J,source:Q}=$;return[J,J+(typeof Q==="string"?Q.length:1)]}function mJ($){let J="",Q=!1,X=!1;for(let Y=0;Y<$.length;++Y){let G=$[Y];switch(G[0]){case"#":J+=(J===""?"":X?`
99
99
 
100
100
  `:`
101
- `)+(G.substring(1)||" "),Q=!0,X=!1;break;case"%":if($[W+1]?.[0]!=="#")W+=1;Q=!1;break;default:if(!Q)X=!0;Q=!1}}return{comment:J,afterEmptyLine:X}}class hJ{constructor($={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(J,Q,X,W)=>{let G=m2(J);if(W)this.warnings.push(new k2.YAMLWarning(G,Q,X));else this.errors.push(new k2.YAMLParseError(G,Q,X))},this.directives=new fV.Directives({version:$.version||"1.2"}),this.options=$}decorate($,J){let{comment:Q,afterEmptyLine:X}=xJ(this.prelude);if(Q){let W=$.contents;if(J)$.comment=$.comment?`${$.comment}
102
- ${Q}`:Q;else if(X||$.directives.docStart||!W)$.commentBefore=Q;else if(vJ.isCollection(W)&&!W.flow&&W.items.length>0){let G=W.items[0];if(vJ.isPair(G))G=G.key;let Y=G.commentBefore;G.commentBefore=Y?`${Q}
103
- ${Y}`:Q}else{let G=W.commentBefore;W.commentBefore=G?`${Q}
104
- ${G}`:Q}}if(J){for(let W=0;W<this.errors.length;++W)$.errors.push(this.errors[W]);for(let W=0;W<this.warnings.length;++W)$.warnings.push(this.warnings[W])}else $.errors=this.errors,$.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:xJ(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose($,J=!1,Q=-1){for(let X of $)yield*this.next(X);yield*this.end(J,Q)}*next($){if(CV.env.LOG_STREAM)console.dir($,{depth:null});switch($.type){case"directive":this.directives.add($.source,(J,Q,X)=>{let W=m2($);W[0]+=J,this.onError(W,"BAD_DIRECTIVE",Q,X)}),this.prelude.push($.source),this.atDirectives=!0;break;case"document":{let J=IV.composeDoc(this.options,this.directives,$,this.onError);if(this.atDirectives&&!J.directives.docStart)this.onError($,"MISSING_CHAR","Missing directives-end/doc-start indicator line");if(this.decorate(J,!1),this.doc)yield this.doc;this.doc=J,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push($.source);break;case"error":{let J=$.source?`${$.message}: ${JSON.stringify($.source)}`:$.message,Q=new k2.YAMLParseError(m2($),"UNEXPECTED_TOKEN",J);if(this.atDirectives||!this.doc)this.errors.push(Q);else this.doc.errors.push(Q);break}case"doc-end":{if(!this.doc){this.errors.push(new k2.YAMLParseError(m2($),"UNEXPECTED_TOKEN","Unexpected doc-end without preceding document"));break}this.doc.directives.docEnd=!0;let J=vV.resolveEnd($.end,$.offset+$.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),J.comment){let Q=this.doc.comment;this.doc.comment=Q?`${Q}
105
- ${J.comment}`:J.comment}this.doc.range[2]=J.offset;break}default:this.errors.push(new k2.YAMLParseError(m2($),"UNEXPECTED_TOKEN",`Unsupported token ${$.type}`))}}*end($=!1,J=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if($){let Q=Object.assign({_directives:this.directives},this.options),X=new TV.Document(void 0,Q);if(this.atDirectives)this.onError(J,"MISSING_CHAR","Missing directives-end indicator line");X.range=[0,J,J],this.decorate(X,!1),yield X}}}xV.Composer=hJ});var kJ=C((dV)=>{var yV=J8(),gV=X8(),kV=y2(),yJ=b2();function mV($,J=!0,Q){if($){let X=(W,G,Y)=>{let q=typeof W==="number"?W:Array.isArray(W)?W[0]:W.offset;if(Q)Q(q,G,Y);else throw new kV.YAMLParseError([q,q+1],G,Y)};switch($.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return gV.resolveFlowScalar($,J,X);case"block-scalar":return yV.resolveBlockScalar({options:{strict:J}},$,X)}}return null}function uV($,J){let{implicitKey:Q=!1,indent:X,inFlow:W=!1,offset:G=-1,type:Y="PLAIN"}=J,q=yJ.stringifyString({type:Y,value:$},{implicitKey:Q,indent:X>0?" ".repeat(X):"",inFlow:W,options:{blockQuote:!0,lineWidth:-1}}),H=J.end??[{type:"newline",offset:-1,indent:X,source:`
106
- `}];switch(q[0]){case"|":case">":{let B=q.indexOf(`
107
- `),U=q.substring(0,B),z=q.substring(B+1)+`
108
- `,V=[{type:"block-scalar-header",offset:G,indent:X,source:U}];if(!gJ(V,H))V.push({type:"newline",offset:-1,indent:X,source:`
109
- `});return{type:"block-scalar",offset:G,indent:X,props:V,source:z}}case'"':return{type:"double-quoted-scalar",offset:G,indent:X,source:q,end:H};case"'":return{type:"single-quoted-scalar",offset:G,indent:X,source:q,end:H};default:return{type:"scalar",offset:G,indent:X,source:q,end:H}}}function lV($,J,Q={}){let{afterKey:X=!1,implicitKey:W=!1,inFlow:G=!1,type:Y}=Q,q="indent"in $?$.indent:null;if(X&&typeof q==="number")q+=2;if(!Y)switch($.type){case"single-quoted-scalar":Y="QUOTE_SINGLE";break;case"double-quoted-scalar":Y="QUOTE_DOUBLE";break;case"block-scalar":{let B=$.props[0];if(B.type!=="block-scalar-header")throw Error("Invalid block scalar header");Y=B.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:Y="PLAIN"}let H=yJ.stringifyString({type:Y,value:J},{implicitKey:W||q===null,indent:q!==null&&q>0?" ".repeat(q):"",inFlow:G,options:{blockQuote:!0,lineWidth:-1}});switch(H[0]){case"|":case">":cV($,H);break;case'"':Y8($,H,"double-quoted-scalar");break;case"'":Y8($,H,"single-quoted-scalar");break;default:Y8($,H,"scalar")}}function cV($,J){let Q=J.indexOf(`
110
- `),X=J.substring(0,Q),W=J.substring(Q+1)+`
111
- `;if($.type==="block-scalar"){let G=$.props[0];if(G.type!=="block-scalar-header")throw Error("Invalid block scalar header");G.source=X,$.source=W}else{let{offset:G}=$,Y="indent"in $?$.indent:-1,q=[{type:"block-scalar-header",offset:G,indent:Y,source:X}];if(!gJ(q,"end"in $?$.end:void 0))q.push({type:"newline",offset:-1,indent:Y,source:`
112
- `});for(let H of Object.keys($))if(H!=="type"&&H!=="offset")delete $[H];Object.assign($,{type:"block-scalar",indent:Y,props:q,source:W})}}function gJ($,J){if(J)for(let Q of J)switch(Q.type){case"space":case"comment":$.push(Q);break;case"newline":return $.push(Q),!0}return!1}function Y8($,J,Q){switch($.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":$.type=Q,$.source=J;break;case"block-scalar":{let X=$.props.slice(1),W=J.length;if($.props[0].type==="block-scalar-header")W-=$.props[0].source.length;for(let G of X)G.offset+=W;delete $.props,Object.assign($,{type:Q,source:J,end:X});break}case"block-map":case"block-seq":{let W={type:"newline",offset:$.offset+J.length,indent:$.indent,source:`
113
- `};delete $.items,Object.assign($,{type:Q,source:J,end:[W]});break}default:{let X="indent"in $?$.indent:-1,W="end"in $&&Array.isArray($.end)?$.end.filter((G)=>G.type==="space"||G.type==="comment"||G.type==="newline"):[];for(let G of Object.keys($))if(G!=="type"&&G!=="offset")delete $[G];Object.assign($,{type:Q,indent:X,source:J,end:W})}}}dV.createScalarToken=uV;dV.resolveAsScalar=mV;dV.setScalarValue=lV});var mJ=C((aV)=>{var rV=($)=>("type"in $)?Y9($):G9($);function Y9($){switch($.type){case"block-scalar":{let J="";for(let Q of $.props)J+=Y9(Q);return J+$.source}case"block-map":case"block-seq":{let J="";for(let Q of $.items)J+=G9(Q);return J}case"flow-collection":{let J=$.start.source;for(let Q of $.items)J+=G9(Q);for(let Q of $.end)J+=Q.source;return J}case"document":{let J=G9($);if($.end)for(let Q of $.end)J+=Q.source;return J}default:{let J=$.source;if("end"in $&&$.end)for(let Q of $.end)J+=Q.source;return J}}}function G9({start:$,key:J,sep:Q,value:X}){let W="";for(let G of $)W+=G.source;if(J)W+=Y9(J);if(Q)for(let G of Q)W+=G.source;if(X)W+=Y9(X);return W}aV.stringify=rV});var cJ=C((tV)=>{var q8=Symbol("break visit"),oV=Symbol("skip children"),uJ=Symbol("remove item");function _$($,J){if("type"in $&&$.type==="document")$={start:$.start,value:$.value};lJ(Object.freeze([]),$,J)}_$.BREAK=q8;_$.SKIP=oV;_$.REMOVE=uJ;_$.itemAtPath=($,J)=>{let Q=$;for(let[X,W]of J){let G=Q?.[X];if(G&&"items"in G)Q=G.items[W];else return}return Q};_$.parentCollection=($,J)=>{let Q=_$.itemAtPath($,J.slice(0,-1)),X=J[J.length-1][0],W=Q?.[X];if(W&&"items"in W)return W;throw Error("Parent collection not found")};function lJ($,J,Q){let X=Q(J,$);if(typeof X==="symbol")return X;for(let W of["key","value"]){let G=J[W];if(G&&"items"in G){for(let Y=0;Y<G.items.length;++Y){let q=lJ(Object.freeze($.concat([[W,Y]])),G.items[Y],Q);if(typeof q==="number")Y=q-1;else if(q===q8)return q8;else if(q===uJ)G.items.splice(Y,1),Y-=1}if(typeof X==="function"&&W==="key")X=X(J,$)}}return typeof X==="function"?X(J,$):X}tV.visit=_$});var q9=C((Yz)=>{var H8=kJ(),$z=mJ(),Jz=cJ(),B8="\uFEFF",U8="\x02",V8="\x18",z8="\x1F",Qz=($)=>!!$&&("items"in $),Xz=($)=>!!$&&($.type==="scalar"||$.type==="single-quoted-scalar"||$.type==="double-quoted-scalar"||$.type==="block-scalar");function Wz($){switch($){case B8:return"<BOM>";case U8:return"<DOC>";case V8:return"<FLOW_END>";case z8:return"<SCALAR>";default:return JSON.stringify($)}}function Gz($){switch($){case B8:return"byte-order-mark";case U8:return"doc-mode";case V8:return"flow-error-end";case z8:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
101
+ `)+(G.substring(1)||" "),Q=!0,X=!1;break;case"%":if($[Y+1]?.[0]!=="#")Y+=1;Q=!1;break;default:if(!Q)X=!0;Q=!1}}return{comment:J,afterEmptyLine:X}}class uJ{constructor($={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(J,Q,X,Y)=>{let G=c2(J);if(Y)this.warnings.push(new l2.YAMLWarning(G,Q,X));else this.errors.push(new l2.YAMLParseError(G,Q,X))},this.directives=new gU.Directives({version:$.version||"1.2"}),this.options=$}decorate($,J){let{comment:Q,afterEmptyLine:X}=mJ(this.prelude);if(Q){let Y=$.contents;if(J)$.comment=$.comment?`${$.comment}
102
+ ${Q}`:Q;else if(X||$.directives.docStart||!Y)$.commentBefore=Q;else if(kJ.isCollection(Y)&&!Y.flow&&Y.items.length>0){let G=Y.items[0];if(kJ.isPair(G))G=G.key;let q=G.commentBefore;G.commentBefore=q?`${Q}
103
+ ${q}`:Q}else{let G=Y.commentBefore;Y.commentBefore=G?`${Q}
104
+ ${G}`:Q}}if(J){for(let Y=0;Y<this.errors.length;++Y)$.errors.push(this.errors[Y]);for(let Y=0;Y<this.warnings.length;++Y)$.warnings.push(this.warnings[Y])}else $.errors=this.errors,$.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:mJ(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose($,J=!1,Q=-1){for(let X of $)yield*this.next(X);yield*this.end(J,Q)}*next($){if(yU.env.LOG_STREAM)console.dir($,{depth:null});switch($.type){case"directive":this.directives.add($.source,(J,Q,X)=>{let Y=c2($);Y[0]+=J,this.onError(Y,"BAD_DIRECTIVE",Q,X)}),this.prelude.push($.source),this.atDirectives=!0;break;case"document":{let J=mU.composeDoc(this.options,this.directives,$,this.onError);if(this.atDirectives&&!J.directives.docStart)this.onError($,"MISSING_CHAR","Missing directives-end/doc-start indicator line");if(this.decorate(J,!1),this.doc)yield this.doc;this.doc=J,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push($.source);break;case"error":{let J=$.source?`${$.message}: ${JSON.stringify($.source)}`:$.message,Q=new l2.YAMLParseError(c2($),"UNEXPECTED_TOKEN",J);if(this.atDirectives||!this.doc)this.errors.push(Q);else this.doc.errors.push(Q);break}case"doc-end":{if(!this.doc){this.errors.push(new l2.YAMLParseError(c2($),"UNEXPECTED_TOKEN","Unexpected doc-end without preceding document"));break}this.doc.directives.docEnd=!0;let J=uU.resolveEnd($.end,$.offset+$.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),J.comment){let Q=this.doc.comment;this.doc.comment=Q?`${Q}
105
+ ${J.comment}`:J.comment}this.doc.range[2]=J.offset;break}default:this.errors.push(new l2.YAMLParseError(c2($),"UNEXPECTED_TOKEN",`Unsupported token ${$.type}`))}}*end($=!1,J=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if($){let Q=Object.assign({_directives:this.directives},this.options),X=new kU.Document(void 0,Q);if(this.atDirectives)this.onError(J,"MISSING_CHAR","Missing directives-end indicator line");X.range=[0,J,J],this.decorate(X,!1),yield X}}}lU.Composer=uJ});var pJ=C((oU)=>{var pU=X8(),dU=G8(),iU=m2(),lJ=S2();function nU($,J=!0,Q){if($){let X=(Y,G,q)=>{let W=typeof Y==="number"?Y:Array.isArray(Y)?Y[0]:Y.offset;if(Q)Q(W,G,q);else throw new iU.YAMLParseError([W,W+1],G,q)};switch($.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return dU.resolveFlowScalar($,J,X);case"block-scalar":return pU.resolveBlockScalar({options:{strict:J}},$,X)}}return null}function rU($,J){let{implicitKey:Q=!1,indent:X,inFlow:Y=!1,offset:G=-1,type:q="PLAIN"}=J,W=lJ.stringifyString({type:q,value:$},{implicitKey:Q,indent:X>0?" ".repeat(X):"",inFlow:Y,options:{blockQuote:!0,lineWidth:-1}}),z=J.end??[{type:"newline",offset:-1,indent:X,source:`
106
+ `}];switch(W[0]){case"|":case">":{let H=W.indexOf(`
107
+ `),B=W.substring(0,H),U=W.substring(H+1)+`
108
+ `,V=[{type:"block-scalar-header",offset:G,indent:X,source:B}];if(!cJ(V,z))V.push({type:"newline",offset:-1,indent:X,source:`
109
+ `});return{type:"block-scalar",offset:G,indent:X,props:V,source:U}}case'"':return{type:"double-quoted-scalar",offset:G,indent:X,source:W,end:z};case"'":return{type:"single-quoted-scalar",offset:G,indent:X,source:W,end:z};default:return{type:"scalar",offset:G,indent:X,source:W,end:z}}}function aU($,J,Q={}){let{afterKey:X=!1,implicitKey:Y=!1,inFlow:G=!1,type:q}=Q,W="indent"in $?$.indent:null;if(X&&typeof W==="number")W+=2;if(!q)switch($.type){case"single-quoted-scalar":q="QUOTE_SINGLE";break;case"double-quoted-scalar":q="QUOTE_DOUBLE";break;case"block-scalar":{let H=$.props[0];if(H.type!=="block-scalar-header")throw Error("Invalid block scalar header");q=H.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:q="PLAIN"}let z=lJ.stringifyString({type:q,value:J},{implicitKey:Y||W===null,indent:W!==null&&W>0?" ".repeat(W):"",inFlow:G,options:{blockQuote:!0,lineWidth:-1}});switch(z[0]){case"|":case">":sU($,z);break;case'"':z8($,z,"double-quoted-scalar");break;case"'":z8($,z,"single-quoted-scalar");break;default:z8($,z,"scalar")}}function sU($,J){let Q=J.indexOf(`
110
+ `),X=J.substring(0,Q),Y=J.substring(Q+1)+`
111
+ `;if($.type==="block-scalar"){let G=$.props[0];if(G.type!=="block-scalar-header")throw Error("Invalid block scalar header");G.source=X,$.source=Y}else{let{offset:G}=$,q="indent"in $?$.indent:-1,W=[{type:"block-scalar-header",offset:G,indent:q,source:X}];if(!cJ(W,"end"in $?$.end:void 0))W.push({type:"newline",offset:-1,indent:q,source:`
112
+ `});for(let z of Object.keys($))if(z!=="type"&&z!=="offset")delete $[z];Object.assign($,{type:"block-scalar",indent:q,props:W,source:Y})}}function cJ($,J){if(J)for(let Q of J)switch(Q.type){case"space":case"comment":$.push(Q);break;case"newline":return $.push(Q),!0}return!1}function z8($,J,Q){switch($.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":$.type=Q,$.source=J;break;case"block-scalar":{let X=$.props.slice(1),Y=J.length;if($.props[0].type==="block-scalar-header")Y-=$.props[0].source.length;for(let G of X)G.offset+=Y;delete $.props,Object.assign($,{type:Q,source:J,end:X});break}case"block-map":case"block-seq":{let Y={type:"newline",offset:$.offset+J.length,indent:$.indent,source:`
113
+ `};delete $.items,Object.assign($,{type:Q,source:J,end:[Y]});break}default:{let X="indent"in $?$.indent:-1,Y="end"in $&&Array.isArray($.end)?$.end.filter((G)=>G.type==="space"||G.type==="comment"||G.type==="newline"):[];for(let G of Object.keys($))if(G!=="type"&&G!=="offset")delete $[G];Object.assign($,{type:Q,indent:X,source:J,end:Y})}}}oU.createScalarToken=rU;oU.resolveAsScalar=nU;oU.setScalarValue=aU});var dJ=C((QV)=>{var JV=($)=>("type"in $)?H9($):z9($);function H9($){switch($.type){case"block-scalar":{let J="";for(let Q of $.props)J+=H9(Q);return J+$.source}case"block-map":case"block-seq":{let J="";for(let Q of $.items)J+=z9(Q);return J}case"flow-collection":{let J=$.start.source;for(let Q of $.items)J+=z9(Q);for(let Q of $.end)J+=Q.source;return J}case"document":{let J=z9($);if($.end)for(let Q of $.end)J+=Q.source;return J}default:{let J=$.source;if("end"in $&&$.end)for(let Q of $.end)J+=Q.source;return J}}}function z9({start:$,key:J,sep:Q,value:X}){let Y="";for(let G of $)Y+=G.source;if(J)Y+=H9(J);if(Q)for(let G of Q)Y+=G.source;if(X)Y+=H9(X);return Y}QV.stringify=JV});var rJ=C((GV)=>{var H8=Symbol("break visit"),YV=Symbol("skip children"),iJ=Symbol("remove item");function P$($,J){if("type"in $&&$.type==="document")$={start:$.start,value:$.value};nJ(Object.freeze([]),$,J)}P$.BREAK=H8;P$.SKIP=YV;P$.REMOVE=iJ;P$.itemAtPath=($,J)=>{let Q=$;for(let[X,Y]of J){let G=Q?.[X];if(G&&"items"in G)Q=G.items[Y];else return}return Q};P$.parentCollection=($,J)=>{let Q=P$.itemAtPath($,J.slice(0,-1)),X=J[J.length-1][0],Y=Q?.[X];if(Y&&"items"in Y)return Y;throw Error("Parent collection not found")};function nJ($,J,Q){let X=Q(J,$);if(typeof X==="symbol")return X;for(let Y of["key","value"]){let G=J[Y];if(G&&"items"in G){for(let q=0;q<G.items.length;++q){let W=nJ(Object.freeze($.concat([[Y,q]])),G.items[q],Q);if(typeof W==="number")q=W-1;else if(W===H8)return H8;else if(W===iJ)G.items.splice(q,1),q-=1}if(typeof X==="function"&&Y==="key")X=X(J,$)}}return typeof X==="function"?X(J,$):X}GV.visit=P$});var B9=C((DV)=>{var B8=pJ(),WV=dJ(),zV=rJ(),U8="\uFEFF",V8="\x02",D8="\x18",F8="\x1F",HV=($)=>!!$&&("items"in $),BV=($)=>!!$&&($.type==="scalar"||$.type==="single-quoted-scalar"||$.type==="double-quoted-scalar"||$.type==="block-scalar");function UV($){switch($){case U8:return"<BOM>";case V8:return"<DOC>";case D8:return"<FLOW_END>";case F8:return"<SCALAR>";default:return JSON.stringify($)}}function VV($){switch($){case U8:return"byte-order-mark";case V8:return"doc-mode";case D8:return"flow-error-end";case F8:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
114
114
  `:case`\r
115
- `:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch($[0]){case" ":case"\t":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}Yz.createScalarToken=H8.createScalarToken;Yz.resolveAsScalar=H8.resolveAsScalar;Yz.setScalarValue=H8.setScalarValue;Yz.stringify=$z.stringify;Yz.visit=Jz.visit;Yz.BOM=B8;Yz.DOCUMENT=U8;Yz.FLOW_END=V8;Yz.SCALAR=z8;Yz.isCollection=Qz;Yz.isScalar=Xz;Yz.prettyToken=Wz;Yz.tokenType=Gz});var F8=C((jz)=>{var u2=q9();function S0($){switch($){case void 0:case" ":case`
116
- `:case"\r":case"\t":return!0;default:return!1}}var dJ=new Set("0123456789ABCDEFabcdef"),Az=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),H9=new Set(",[]{}"),_z=new Set(` ,[]{}
117
- \r `),D8=($)=>!$||_z.has($);class pJ{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex($,J=!1){if($){if(typeof $!=="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+$:$,this.lineEndPos=null}this.atEnd=!J;let Q=this.next??"stream";while(Q&&(J||this.hasChars(1)))Q=yield*this.parseNext(Q)}atLineEnd(){let $=this.pos,J=this.buffer[$];while(J===" "||J==="\t")J=this.buffer[++$];if(!J||J==="#"||J===`
115
+ `:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch($[0]){case" ":case"\t":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}DV.createScalarToken=B8.createScalarToken;DV.resolveAsScalar=B8.resolveAsScalar;DV.setScalarValue=B8.setScalarValue;DV.stringify=WV.stringify;DV.visit=zV.visit;DV.BOM=U8;DV.DOCUMENT=V8;DV.FLOW_END=D8;DV.SCALAR=F8;DV.isCollection=HV;DV.isScalar=BV;DV.prettyToken=UV;DV.tokenType=VV});var O8=C((SV)=>{var p2=B9();function E0($){switch($){case void 0:case" ":case`
116
+ `:case"\r":case"\t":return!0;default:return!1}}var aJ=new Set("0123456789ABCDEFabcdef"),bV=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),U9=new Set(",[]{}"),EV=new Set(` ,[]{}
117
+ \r `),M8=($)=>!$||EV.has($);class sJ{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex($,J=!1){if($){if(typeof $!=="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+$:$,this.lineEndPos=null}this.atEnd=!J;let Q=this.next??"stream";while(Q&&(J||this.hasChars(1)))Q=yield*this.parseNext(Q)}atLineEnd(){let $=this.pos,J=this.buffer[$];while(J===" "||J==="\t")J=this.buffer[++$];if(!J||J==="#"||J===`
118
118
  `)return!0;if(J==="\r")return this.buffer[$+1]===`
119
119
  `;return!1}charAt($){return this.buffer[this.pos+$]}continueScalar($){let J=this.buffer[$];if(this.indentNext>0){let Q=0;while(J===" ")J=this.buffer[++Q+$];if(J==="\r"){let X=this.buffer[Q+$+1];if(X===`
120
120
  `||!X&&!this.atEnd)return $+Q+1}return J===`
121
- `||Q>=this.indentNext||!J&&!this.atEnd?$+Q:-1}if(J==="-"||J==="."){let Q=this.buffer.substr($,3);if((Q==="---"||Q==="...")&&S0(this.buffer[$+3]))return-1}return $}getLine(){let $=this.lineEndPos;if(typeof $!=="number"||$!==-1&&$<this.pos)$=this.buffer.indexOf(`
122
- `,this.pos),this.lineEndPos=$;if($===-1)return this.atEnd?this.buffer.substring(this.pos):null;if(this.buffer[$-1]==="\r")$-=1;return this.buffer.substring(this.pos,$)}hasChars($){return this.pos+$<=this.buffer.length}setNext($){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=$,null}peek($){return this.buffer.substr(this.pos,$)}*parseNext($){switch($){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let $=this.getLine();if($===null)return this.setNext("stream");if($[0]===u2.BOM)yield*this.pushCount(1),$=$.substring(1);if($[0]==="%"){let J=$.length,Q=$.indexOf("#");while(Q!==-1){let W=$[Q-1];if(W===" "||W==="\t"){J=Q-1;break}else Q=$.indexOf("#",Q+1)}while(!0){let W=$[J-1];if(W===" "||W==="\t")J-=1;else break}let X=(yield*this.pushCount(J))+(yield*this.pushSpaces(!0));return yield*this.pushCount($.length-X),this.pushNewline(),"stream"}if(this.atLineEnd()){let J=yield*this.pushSpaces(!0);return yield*this.pushCount($.length-J),yield*this.pushNewline(),"stream"}return yield u2.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let $=this.charAt(0);if(!$&&!this.atEnd)return this.setNext("line-start");if($==="-"||$==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let J=this.peek(3);if((J==="---"||J==="...")&&S0(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,J==="---"?"doc":"stream"}if(this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!S0(this.charAt(1)))this.indentNext=this.indentValue;return yield*this.parseBlockStart()}*parseBlockStart(){let[$,J]=this.peek(2);if(!J&&!this.atEnd)return this.setNext("block-start");if(($==="-"||$==="?"||$===":")&&S0(J)){let Q=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=Q,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let $=this.getLine();if($===null)return this.setNext("doc");let J=yield*this.pushIndicators();switch($[J]){case"#":yield*this.pushCount($.length-J);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(D8),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return J+=yield*this.parseBlockScalarHeader(),J+=yield*this.pushSpaces(!0),yield*this.pushCount($.length-J),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let $,J,Q=-1;do{if($=yield*this.pushNewline(),$>0)J=yield*this.pushSpaces(!1),this.indentValue=Q=J;else J=0;J+=yield*this.pushSpaces(!0)}while($+J>0);let X=this.getLine();if(X===null)return this.setNext("flow");if(Q!==-1&&Q<this.indentNext&&X[0]!=="#"||Q===0&&(X.startsWith("---")||X.startsWith("..."))&&S0(X[3])){if(!(Q===this.indentNext-1&&this.flowLevel===1&&(X[0]==="]"||X[0]==="}")))return this.flowLevel=0,yield u2.FLOW_END,yield*this.parseLineStart()}let W=0;while(X[W]===",")W+=yield*this.pushCount(1),W+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(W+=yield*this.pushIndicators(),X[W]){case void 0:return"flow";case"#":return yield*this.pushCount(X.length-W),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(D8),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let G=this.charAt(1);if(this.flowKey||S0(G)||G===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let $=this.charAt(0),J=this.buffer.indexOf($,this.pos+1);if($==="'")while(J!==-1&&this.buffer[J+1]==="'")J=this.buffer.indexOf("'",J+2);else while(J!==-1){let W=0;while(this.buffer[J-1-W]==="\\")W+=1;if(W%2===0)break;J=this.buffer.indexOf('"',J+1)}let Q=this.buffer.substring(0,J),X=Q.indexOf(`
123
- `,this.pos);if(X!==-1){while(X!==-1){let W=this.continueScalar(X+1);if(W===-1)break;X=Q.indexOf(`
124
- `,W)}if(X!==-1)J=X-(Q[X-1]==="\r"?2:1)}if(J===-1){if(!this.atEnd)return this.setNext("quoted-scalar");J=this.buffer.length}return yield*this.pushToIndex(J+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let $=this.pos;while(!0){let J=this.buffer[++$];if(J==="+")this.blockScalarKeep=!0;else if(J>"0"&&J<="9")this.blockScalarIndent=Number(J)-1;else if(J!=="-")break}return yield*this.pushUntil((J)=>S0(J)||J==="#")}*parseBlockScalar(){let $=this.pos-1,J=0,Q;$:for(let W=this.pos;Q=this.buffer[W];++W)switch(Q){case" ":J+=1;break;case`
125
- `:$=W,J=0;break;case"\r":{let G=this.buffer[W+1];if(!G&&!this.atEnd)return this.setNext("block-scalar");if(G===`
126
- `)break}default:break $}if(!Q&&!this.atEnd)return this.setNext("block-scalar");if(J>=this.indentNext){if(this.blockScalarIndent===-1)this.indentNext=J;else this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let W=this.continueScalar($+1);if(W===-1)break;$=this.buffer.indexOf(`
127
- `,W)}while($!==-1);if($===-1){if(!this.atEnd)return this.setNext("block-scalar");$=this.buffer.length}}let X=$+1;Q=this.buffer[X];while(Q===" ")Q=this.buffer[++X];if(Q==="\t"){while(Q==="\t"||Q===" "||Q==="\r"||Q===`
128
- `)Q=this.buffer[++X];$=X-1}else if(!this.blockScalarKeep)do{let W=$-1,G=this.buffer[W];if(G==="\r")G=this.buffer[--W];let Y=W;while(G===" ")G=this.buffer[--W];if(G===`
129
- `&&W>=this.pos&&W+1+J>Y)$=W;else break}while(!0);return yield u2.SCALAR,yield*this.pushToIndex($+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let $=this.flowLevel>0,J=this.pos-1,Q=this.pos-1,X;while(X=this.buffer[++Q])if(X===":"){let W=this.buffer[Q+1];if(S0(W)||$&&H9.has(W))break;J=Q}else if(S0(X)){let W=this.buffer[Q+1];if(X==="\r")if(W===`
121
+ `||Q>=this.indentNext||!J&&!this.atEnd?$+Q:-1}if(J==="-"||J==="."){let Q=this.buffer.substr($,3);if((Q==="---"||Q==="...")&&E0(this.buffer[$+3]))return-1}return $}getLine(){let $=this.lineEndPos;if(typeof $!=="number"||$!==-1&&$<this.pos)$=this.buffer.indexOf(`
122
+ `,this.pos),this.lineEndPos=$;if($===-1)return this.atEnd?this.buffer.substring(this.pos):null;if(this.buffer[$-1]==="\r")$-=1;return this.buffer.substring(this.pos,$)}hasChars($){return this.pos+$<=this.buffer.length}setNext($){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=$,null}peek($){return this.buffer.substr(this.pos,$)}*parseNext($){switch($){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let $=this.getLine();if($===null)return this.setNext("stream");if($[0]===p2.BOM)yield*this.pushCount(1),$=$.substring(1);if($[0]==="%"){let J=$.length,Q=$.indexOf("#");while(Q!==-1){let Y=$[Q-1];if(Y===" "||Y==="\t"){J=Q-1;break}else Q=$.indexOf("#",Q+1)}while(!0){let Y=$[J-1];if(Y===" "||Y==="\t")J-=1;else break}let X=(yield*this.pushCount(J))+(yield*this.pushSpaces(!0));return yield*this.pushCount($.length-X),this.pushNewline(),"stream"}if(this.atLineEnd()){let J=yield*this.pushSpaces(!0);return yield*this.pushCount($.length-J),yield*this.pushNewline(),"stream"}return yield p2.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let $=this.charAt(0);if(!$&&!this.atEnd)return this.setNext("line-start");if($==="-"||$==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let J=this.peek(3);if((J==="---"||J==="...")&&E0(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,J==="---"?"doc":"stream"}if(this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!E0(this.charAt(1)))this.indentNext=this.indentValue;return yield*this.parseBlockStart()}*parseBlockStart(){let[$,J]=this.peek(2);if(!J&&!this.atEnd)return this.setNext("block-start");if(($==="-"||$==="?"||$===":")&&E0(J)){let Q=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=Q,"block-start"}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let $=this.getLine();if($===null)return this.setNext("doc");let J=yield*this.pushIndicators();switch($[J]){case"#":yield*this.pushCount($.length-J);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(M8),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return J+=yield*this.parseBlockScalarHeader(),J+=yield*this.pushSpaces(!0),yield*this.pushCount($.length-J),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let $,J,Q=-1;do{if($=yield*this.pushNewline(),$>0)J=yield*this.pushSpaces(!1),this.indentValue=Q=J;else J=0;J+=yield*this.pushSpaces(!0)}while($+J>0);let X=this.getLine();if(X===null)return this.setNext("flow");if(Q!==-1&&Q<this.indentNext&&X[0]!=="#"||Q===0&&(X.startsWith("---")||X.startsWith("..."))&&E0(X[3])){if(!(Q===this.indentNext-1&&this.flowLevel===1&&(X[0]==="]"||X[0]==="}")))return this.flowLevel=0,yield p2.FLOW_END,yield*this.parseLineStart()}let Y=0;while(X[Y]===",")Y+=yield*this.pushCount(1),Y+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(Y+=yield*this.pushIndicators(),X[Y]){case void 0:return"flow";case"#":return yield*this.pushCount(X.length-Y),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(M8),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let G=this.charAt(1);if(this.flowKey||E0(G)||G===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let $=this.charAt(0),J=this.buffer.indexOf($,this.pos+1);if($==="'")while(J!==-1&&this.buffer[J+1]==="'")J=this.buffer.indexOf("'",J+2);else while(J!==-1){let Y=0;while(this.buffer[J-1-Y]==="\\")Y+=1;if(Y%2===0)break;J=this.buffer.indexOf('"',J+1)}let Q=this.buffer.substring(0,J),X=Q.indexOf(`
123
+ `,this.pos);if(X!==-1){while(X!==-1){let Y=this.continueScalar(X+1);if(Y===-1)break;X=Q.indexOf(`
124
+ `,Y)}if(X!==-1)J=X-(Q[X-1]==="\r"?2:1)}if(J===-1){if(!this.atEnd)return this.setNext("quoted-scalar");J=this.buffer.length}return yield*this.pushToIndex(J+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let $=this.pos;while(!0){let J=this.buffer[++$];if(J==="+")this.blockScalarKeep=!0;else if(J>"0"&&J<="9")this.blockScalarIndent=Number(J)-1;else if(J!=="-")break}return yield*this.pushUntil((J)=>E0(J)||J==="#")}*parseBlockScalar(){let $=this.pos-1,J=0,Q;$:for(let Y=this.pos;Q=this.buffer[Y];++Y)switch(Q){case" ":J+=1;break;case`
125
+ `:$=Y,J=0;break;case"\r":{let G=this.buffer[Y+1];if(!G&&!this.atEnd)return this.setNext("block-scalar");if(G===`
126
+ `)break}default:break $}if(!Q&&!this.atEnd)return this.setNext("block-scalar");if(J>=this.indentNext){if(this.blockScalarIndent===-1)this.indentNext=J;else this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let Y=this.continueScalar($+1);if(Y===-1)break;$=this.buffer.indexOf(`
127
+ `,Y)}while($!==-1);if($===-1){if(!this.atEnd)return this.setNext("block-scalar");$=this.buffer.length}}let X=$+1;Q=this.buffer[X];while(Q===" ")Q=this.buffer[++X];if(Q==="\t"){while(Q==="\t"||Q===" "||Q==="\r"||Q===`
128
+ `)Q=this.buffer[++X];$=X-1}else if(!this.blockScalarKeep)do{let Y=$-1,G=this.buffer[Y];if(G==="\r")G=this.buffer[--Y];let q=Y;while(G===" ")G=this.buffer[--Y];if(G===`
129
+ `&&Y>=this.pos&&Y+1+J>q)$=Y;else break}while(!0);return yield p2.SCALAR,yield*this.pushToIndex($+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let $=this.flowLevel>0,J=this.pos-1,Q=this.pos-1,X;while(X=this.buffer[++Q])if(X===":"){let Y=this.buffer[Q+1];if(E0(Y)||$&&U9.has(Y))break;J=Q}else if(E0(X)){let Y=this.buffer[Q+1];if(X==="\r")if(Y===`
130
130
  `)Q+=1,X=`
131
- `,W=this.buffer[Q+1];else J=Q;if(W==="#"||$&&H9.has(W))break;if(X===`
132
- `){let G=this.continueScalar(Q+1);if(G===-1)break;Q=Math.max(Q,G-2)}}else{if($&&H9.has(X))break;J=Q}if(!X&&!this.atEnd)return this.setNext("plain-scalar");return yield u2.SCALAR,yield*this.pushToIndex(J+1,!0),$?"flow":"doc"}*pushCount($){if($>0)return yield this.buffer.substr(this.pos,$),this.pos+=$,$;return 0}*pushToIndex($,J){let Q=this.buffer.slice(this.pos,$);if(Q)return yield Q,this.pos+=Q.length,Q.length;else if(J)yield"";return 0}*pushIndicators(){let $=0;$:while(!0){switch(this.charAt(0)){case"!":$+=yield*this.pushTag(),$+=yield*this.pushSpaces(!0);continue $;case"&":$+=yield*this.pushUntil(D8),$+=yield*this.pushSpaces(!0);continue $;case"-":case"?":case":":{let J=this.flowLevel>0,Q=this.charAt(1);if(S0(Q)||J&&H9.has(Q)){if(!J)this.indentNext=this.indentValue+1;else if(this.flowKey)this.flowKey=!1;$+=yield*this.pushCount(1),$+=yield*this.pushSpaces(!0);continue $}}}break $}return $}*pushTag(){if(this.charAt(1)==="<"){let $=this.pos+2,J=this.buffer[$];while(!S0(J)&&J!==">")J=this.buffer[++$];return yield*this.pushToIndex(J===">"?$+1:$,!1)}else{let $=this.pos+1,J=this.buffer[$];while(J)if(Az.has(J))J=this.buffer[++$];else if(J==="%"&&dJ.has(this.buffer[$+1])&&dJ.has(this.buffer[$+2]))J=this.buffer[$+=3];else break;return yield*this.pushToIndex($,!1)}}*pushNewline(){let $=this.buffer[this.pos];if($===`
131
+ `,Y=this.buffer[Q+1];else J=Q;if(Y==="#"||$&&U9.has(Y))break;if(X===`
132
+ `){let G=this.continueScalar(Q+1);if(G===-1)break;Q=Math.max(Q,G-2)}}else{if($&&U9.has(X))break;J=Q}if(!X&&!this.atEnd)return this.setNext("plain-scalar");return yield p2.SCALAR,yield*this.pushToIndex(J+1,!0),$?"flow":"doc"}*pushCount($){if($>0)return yield this.buffer.substr(this.pos,$),this.pos+=$,$;return 0}*pushToIndex($,J){let Q=this.buffer.slice(this.pos,$);if(Q)return yield Q,this.pos+=Q.length,Q.length;else if(J)yield"";return 0}*pushIndicators(){let $=0;$:while(!0){switch(this.charAt(0)){case"!":$+=yield*this.pushTag(),$+=yield*this.pushSpaces(!0);continue $;case"&":$+=yield*this.pushUntil(M8),$+=yield*this.pushSpaces(!0);continue $;case"-":case"?":case":":{let J=this.flowLevel>0,Q=this.charAt(1);if(E0(Q)||J&&U9.has(Q)){if(!J)this.indentNext=this.indentValue+1;else if(this.flowKey)this.flowKey=!1;$+=yield*this.pushCount(1),$+=yield*this.pushSpaces(!0);continue $}}}break $}return $}*pushTag(){if(this.charAt(1)==="<"){let $=this.pos+2,J=this.buffer[$];while(!E0(J)&&J!==">")J=this.buffer[++$];return yield*this.pushToIndex(J===">"?$+1:$,!1)}else{let $=this.pos+1,J=this.buffer[$];while(J)if(bV.has(J))J=this.buffer[++$];else if(J==="%"&&aJ.has(this.buffer[$+1])&&aJ.has(this.buffer[$+2]))J=this.buffer[$+=3];else break;return yield*this.pushToIndex($,!1)}}*pushNewline(){let $=this.buffer[this.pos];if($===`
133
133
  `)return yield*this.pushCount(1);else if($==="\r"&&this.charAt(1)===`
134
- `)return yield*this.pushCount(2);else return 0}*pushSpaces($){let J=this.pos-1,Q;do Q=this.buffer[++J];while(Q===" "||$&&Q==="\t");let X=J-this.pos;if(X>0)yield this.buffer.substr(this.pos,X),this.pos=J;return X}*pushUntil($){let J=this.pos,Q=this.buffer[J];while(!$(Q))Q=this.buffer[++J];return yield*this.pushToIndex(J,!1)}}jz.Lexer=pJ});var O8=C((Zz)=>{class iJ{constructor(){this.lineStarts=[],this.addNewLine=($)=>this.lineStarts.push($),this.linePos=($)=>{let J=0,Q=this.lineStarts.length;while(J<Q){let W=J+Q>>1;if(this.lineStarts[W]<$)J=W+1;else Q=W}if(this.lineStarts[J]===$)return{line:J+1,col:1};if(J===0)return{line:0,col:$};let X=this.lineStarts[J-1];return{line:J,col:$-X+1}}}}Zz.LineCounter=iJ});var M8=C((Sz)=>{var bz=B6("process"),nJ=q9(),Pz=F8();function G$($,J){for(let Q=0;Q<$.length;++Q)if($[Q].type===J)return!0;return!1}function rJ($){for(let J=0;J<$.length;++J)switch($[J].type){case"space":case"comment":case"newline":break;default:return J}return-1}function sJ($){switch($?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function B9($){switch($.type){case"document":return $.start;case"block-map":{let J=$.items[$.items.length-1];return J.sep??J.start}case"block-seq":return $.items[$.items.length-1].start;default:return[]}}function $2($){if($.length===0)return[];let J=$.length;$:while(--J>=0)switch($[J].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break $}while($[++J]?.type==="space");return $.splice(J,$.length)}function U9($,J){if(J.length<1e5)Array.prototype.push.apply($,J);else for(let Q=0;Q<J.length;++Q)$.push(J[Q])}function aJ($){if($.start.type==="flow-seq-start"){for(let J of $.items)if(J.sep&&!J.value&&!G$(J.start,"explicit-key-ind")&&!G$(J.sep,"map-value-ind")){if(J.key)J.value=J.key;if(delete J.key,sJ(J.value))if(J.value.end)U9(J.value.end,J.sep);else J.value.end=J.sep;else U9(J.start,J.sep);delete J.sep}}}class oJ{constructor($){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new Pz.Lexer,this.onNewLine=$}*parse($,J=!1){if(this.onNewLine&&this.offset===0)this.onNewLine(0);for(let Q of this.lexer.lex($,J))yield*this.next(Q);if(!J)yield*this.end()}*next($){if(this.source=$,bz.env.LOG_TOKENS)console.log("|",nJ.prettyToken($));if(this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=$.length;return}let J=nJ.tokenType($);if(!J){let Q=`Not a YAML token: ${$}`;yield*this.pop({type:"error",offset:this.offset,message:Q,source:$}),this.offset+=$.length}else if(J==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=J,yield*this.step(),J){case"newline":if(this.atNewLine=!0,this.indent=0,this.onNewLine)this.onNewLine(this.offset+$.length);break;case"space":if(this.atNewLine&&$[0]===" ")this.indent+=$.length;break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":if(this.atNewLine)this.indent+=$.length;break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=$.length}}*end(){while(this.stack.length>0)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let $=this.peek(1);if(this.type==="doc-end"&&$?.type!=="doc-end"){while(this.stack.length>0)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!$)return yield*this.stream();switch($.type){case"document":return yield*this.document($);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar($);case"block-scalar":return yield*this.blockScalar($);case"block-map":return yield*this.blockMap($);case"block-seq":return yield*this.blockSequence($);case"flow-collection":return yield*this.flowCollection($);case"doc-end":return yield*this.documentEnd($)}yield*this.pop()}peek($){return this.stack[this.stack.length-$]}*pop($){let J=$??this.stack.pop();if(!J)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield J;else{let Q=this.peek(1);if(J.type==="block-scalar")J.indent="indent"in Q?Q.indent:0;else if(J.type==="flow-collection"&&Q.type==="document")J.indent=0;if(J.type==="flow-collection")aJ(J);switch(Q.type){case"document":Q.value=J;break;case"block-scalar":Q.props.push(J);break;case"block-map":{let X=Q.items[Q.items.length-1];if(X.value){Q.items.push({start:[],key:J,sep:[]}),this.onKeyLine=!0;return}else if(X.sep)X.value=J;else{Object.assign(X,{key:J,sep:[]}),this.onKeyLine=!X.explicitKey;return}break}case"block-seq":{let X=Q.items[Q.items.length-1];if(X.value)Q.items.push({start:[],value:J});else X.value=J;break}case"flow-collection":{let X=Q.items[Q.items.length-1];if(!X||X.value)Q.items.push({start:[],key:J,sep:[]});else if(X.sep)X.value=J;else Object.assign(X,{key:J,sep:[]});return}default:yield*this.pop(),yield*this.pop(J)}if((Q.type==="document"||Q.type==="block-map"||Q.type==="block-seq")&&(J.type==="block-map"||J.type==="block-seq")){let X=J.items[J.items.length-1];if(X&&!X.sep&&!X.value&&X.start.length>0&&rJ(X.start)===-1&&(J.indent===0||X.start.every((W)=>W.type!=="comment"||W.indent<J.indent))){if(Q.type==="document")Q.end=X.start;else Q.items.push({start:X.start});J.items.splice(-1,1)}}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let $={type:"document",offset:this.offset,start:[]};if(this.type==="doc-start")$.start.push(this.sourceToken);this.stack.push($);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document($){if($.value)return yield*this.lineEnd($);switch(this.type){case"doc-start":{if(rJ($.start)!==-1)yield*this.pop(),yield*this.step();else $.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":$.start.push(this.sourceToken);return}let J=this.startBlockValue($);if(J)this.stack.push(J);else yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar($){if(this.type==="map-value-ind"){let J=B9(this.peek(2)),Q=$2(J),X;if($.end)X=$.end,X.push(this.sourceToken),delete $.end;else X=[this.sourceToken];let W={type:"block-map",offset:$.offset,indent:$.indent,items:[{start:Q,key:$,sep:X}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=W}else yield*this.lineEnd($)}*blockScalar($){switch(this.type){case"space":case"comment":case"newline":$.props.push(this.sourceToken);return;case"scalar":if($.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let J=this.source.indexOf(`
134
+ `)return yield*this.pushCount(2);else return 0}*pushSpaces($){let J=this.pos-1,Q;do Q=this.buffer[++J];while(Q===" "||$&&Q==="\t");let X=J-this.pos;if(X>0)yield this.buffer.substr(this.pos,X),this.pos=J;return X}*pushUntil($){let J=this.pos,Q=this.buffer[J];while(!$(Q))Q=this.buffer[++J];return yield*this.pushToIndex(J,!1)}}SV.Lexer=sJ});var K8=C((fV)=>{class oJ{constructor(){this.lineStarts=[],this.addNewLine=($)=>this.lineStarts.push($),this.linePos=($)=>{let J=0,Q=this.lineStarts.length;while(J<Q){let Y=J+Q>>1;if(this.lineStarts[Y]<$)J=Y+1;else Q=Y}if(this.lineStarts[J]===$)return{line:J+1,col:1};if(J===0)return{line:0,col:$};let X=this.lineStarts[J-1];return{line:J,col:$-X+1}}}}fV.LineCounter=oJ});var R8=C((xV)=>{var TV=F6("process"),tJ=B9(),vV=O8();function z$($,J){for(let Q=0;Q<$.length;++Q)if($[Q].type===J)return!0;return!1}function eJ($){for(let J=0;J<$.length;++J)switch($[J].type){case"space":case"comment":case"newline":break;default:return J}return-1}function J3($){switch($?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function V9($){switch($.type){case"document":return $.start;case"block-map":{let J=$.items[$.items.length-1];return J.sep??J.start}case"block-seq":return $.items[$.items.length-1].start;default:return[]}}function G2($){if($.length===0)return[];let J=$.length;$:while(--J>=0)switch($[J].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break $}while($[++J]?.type==="space");return $.splice(J,$.length)}function D9($,J){if(J.length<1e5)Array.prototype.push.apply($,J);else for(let Q=0;Q<J.length;++Q)$.push(J[Q])}function $3($){if($.start.type==="flow-seq-start"){for(let J of $.items)if(J.sep&&!J.value&&!z$(J.start,"explicit-key-ind")&&!z$(J.sep,"map-value-ind")){if(J.key)J.value=J.key;if(delete J.key,J3(J.value))if(J.value.end)D9(J.value.end,J.sep);else J.value.end=J.sep;else D9(J.start,J.sep);delete J.sep}}}class Q3{constructor($){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new vV.Lexer,this.onNewLine=$}*parse($,J=!1){if(this.onNewLine&&this.offset===0)this.onNewLine(0);for(let Q of this.lexer.lex($,J))yield*this.next(Q);if(!J)yield*this.end()}*next($){if(this.source=$,TV.env.LOG_TOKENS)console.log("|",tJ.prettyToken($));if(this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=$.length;return}let J=tJ.tokenType($);if(!J){let Q=`Not a YAML token: ${$}`;yield*this.pop({type:"error",offset:this.offset,message:Q,source:$}),this.offset+=$.length}else if(J==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=J,yield*this.step(),J){case"newline":if(this.atNewLine=!0,this.indent=0,this.onNewLine)this.onNewLine(this.offset+$.length);break;case"space":if(this.atNewLine&&$[0]===" ")this.indent+=$.length;break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":if(this.atNewLine)this.indent+=$.length;break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=$.length}}*end(){while(this.stack.length>0)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let $=this.peek(1);if(this.type==="doc-end"&&$?.type!=="doc-end"){while(this.stack.length>0)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!$)return yield*this.stream();switch($.type){case"document":return yield*this.document($);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar($);case"block-scalar":return yield*this.blockScalar($);case"block-map":return yield*this.blockMap($);case"block-seq":return yield*this.blockSequence($);case"flow-collection":return yield*this.flowCollection($);case"doc-end":return yield*this.documentEnd($)}yield*this.pop()}peek($){return this.stack[this.stack.length-$]}*pop($){let J=$??this.stack.pop();if(!J)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield J;else{let Q=this.peek(1);if(J.type==="block-scalar")J.indent="indent"in Q?Q.indent:0;else if(J.type==="flow-collection"&&Q.type==="document")J.indent=0;if(J.type==="flow-collection")$3(J);switch(Q.type){case"document":Q.value=J;break;case"block-scalar":Q.props.push(J);break;case"block-map":{let X=Q.items[Q.items.length-1];if(X.value){Q.items.push({start:[],key:J,sep:[]}),this.onKeyLine=!0;return}else if(X.sep)X.value=J;else{Object.assign(X,{key:J,sep:[]}),this.onKeyLine=!X.explicitKey;return}break}case"block-seq":{let X=Q.items[Q.items.length-1];if(X.value)Q.items.push({start:[],value:J});else X.value=J;break}case"flow-collection":{let X=Q.items[Q.items.length-1];if(!X||X.value)Q.items.push({start:[],key:J,sep:[]});else if(X.sep)X.value=J;else Object.assign(X,{key:J,sep:[]});return}default:yield*this.pop(),yield*this.pop(J)}if((Q.type==="document"||Q.type==="block-map"||Q.type==="block-seq")&&(J.type==="block-map"||J.type==="block-seq")){let X=J.items[J.items.length-1];if(X&&!X.sep&&!X.value&&X.start.length>0&&eJ(X.start)===-1&&(J.indent===0||X.start.every((Y)=>Y.type!=="comment"||Y.indent<J.indent))){if(Q.type==="document")Q.end=X.start;else Q.items.push({start:X.start});J.items.splice(-1,1)}}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let $={type:"document",offset:this.offset,start:[]};if(this.type==="doc-start")$.start.push(this.sourceToken);this.stack.push($);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document($){if($.value)return yield*this.lineEnd($);switch(this.type){case"doc-start":{if(eJ($.start)!==-1)yield*this.pop(),yield*this.step();else $.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":$.start.push(this.sourceToken);return}let J=this.startBlockValue($);if(J)this.stack.push(J);else yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar($){if(this.type==="map-value-ind"){let J=V9(this.peek(2)),Q=G2(J),X;if($.end)X=$.end,X.push(this.sourceToken),delete $.end;else X=[this.sourceToken];let Y={type:"block-map",offset:$.offset,indent:$.indent,items:[{start:Q,key:$,sep:X}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=Y}else yield*this.lineEnd($)}*blockScalar($){switch(this.type){case"space":case"comment":case"newline":$.props.push(this.sourceToken);return;case"scalar":if($.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let J=this.source.indexOf(`
135
135
  `)+1;while(J!==0)this.onNewLine(this.offset+J),J=this.source.indexOf(`
136
- `,J)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap($){let J=$.items[$.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,J.value){let Q="end"in J.value?J.value.end:void 0;if((Array.isArray(Q)?Q[Q.length-1]:void 0)?.type==="comment")Q?.push(this.sourceToken);else $.items.push({start:[this.sourceToken]})}else if(J.sep)J.sep.push(this.sourceToken);else J.start.push(this.sourceToken);return;case"space":case"comment":if(J.value)$.items.push({start:[this.sourceToken]});else if(J.sep)J.sep.push(this.sourceToken);else{if(this.atIndentedComment(J.start,$.indent)){let X=$.items[$.items.length-2]?.value?.end;if(Array.isArray(X)){U9(X,J.start),X.push(this.sourceToken),$.items.pop();return}}J.start.push(this.sourceToken)}return}if(this.indent>=$.indent){let Q=!this.onKeyLine&&this.indent===$.indent,X=Q&&(J.sep||J.explicitKey)&&this.type!=="seq-item-ind",W=[];if(X&&J.sep&&!J.value){let G=[];for(let Y=0;Y<J.sep.length;++Y){let q=J.sep[Y];switch(q.type){case"newline":G.push(Y);break;case"space":break;case"comment":if(q.indent>$.indent)G.length=0;break;default:G.length=0}}if(G.length>=2)W=J.sep.splice(G[1])}switch(this.type){case"anchor":case"tag":if(X||J.value)W.push(this.sourceToken),$.items.push({start:W}),this.onKeyLine=!0;else if(J.sep)J.sep.push(this.sourceToken);else J.start.push(this.sourceToken);return;case"explicit-key-ind":if(!J.sep&&!J.explicitKey)J.start.push(this.sourceToken),J.explicitKey=!0;else if(X||J.value)W.push(this.sourceToken),$.items.push({start:W,explicitKey:!0});else this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]});this.onKeyLine=!0;return;case"map-value-ind":if(J.explicitKey)if(!J.sep)if(G$(J.start,"newline"))Object.assign(J,{key:null,sep:[this.sourceToken]});else{let G=$2(J.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:G,key:null,sep:[this.sourceToken]}]})}else if(J.value)$.items.push({start:[],key:null,sep:[this.sourceToken]});else if(G$(J.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:W,key:null,sep:[this.sourceToken]}]});else if(sJ(J.key)&&!G$(J.sep,"newline")){let G=$2(J.start),Y=J.key,q=J.sep;q.push(this.sourceToken),delete J.key,delete J.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:G,key:Y,sep:q}]})}else if(W.length>0)J.sep=J.sep.concat(W,this.sourceToken);else J.sep.push(this.sourceToken);else if(!J.sep)Object.assign(J,{key:null,sep:[this.sourceToken]});else if(J.value||X)$.items.push({start:W,key:null,sep:[this.sourceToken]});else if(G$(J.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]});else J.sep.push(this.sourceToken);this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let G=this.flowScalar(this.type);if(X||J.value)$.items.push({start:W,key:G,sep:[]}),this.onKeyLine=!0;else if(J.sep)this.stack.push(G);else Object.assign(J,{key:G,sep:[]}),this.onKeyLine=!0;return}default:{let G=this.startBlockValue($);if(G){if(G.type==="block-seq"){if(!J.explicitKey&&J.sep&&!G$(J.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else if(Q)$.items.push({start:W});this.stack.push(G);return}}}}yield*this.pop(),yield*this.step()}*blockSequence($){let J=$.items[$.items.length-1];switch(this.type){case"newline":if(J.value){let Q="end"in J.value?J.value.end:void 0;if((Array.isArray(Q)?Q[Q.length-1]:void 0)?.type==="comment")Q?.push(this.sourceToken);else $.items.push({start:[this.sourceToken]})}else J.start.push(this.sourceToken);return;case"space":case"comment":if(J.value)$.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(J.start,$.indent)){let X=$.items[$.items.length-2]?.value?.end;if(Array.isArray(X)){U9(X,J.start),X.push(this.sourceToken),$.items.pop();return}}J.start.push(this.sourceToken)}return;case"anchor":case"tag":if(J.value||this.indent<=$.indent)break;J.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==$.indent)break;if(J.value||G$(J.start,"seq-item-ind"))$.items.push({start:[this.sourceToken]});else J.start.push(this.sourceToken);return}if(this.indent>$.indent){let Q=this.startBlockValue($);if(Q){this.stack.push(Q);return}}yield*this.pop(),yield*this.step()}*flowCollection($){let J=$.items[$.items.length-1];if(this.type==="flow-error-end"){let Q;do yield*this.pop(),Q=this.peek(1);while(Q?.type==="flow-collection")}else if($.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":if(!J||J.sep)$.items.push({start:[this.sourceToken]});else J.start.push(this.sourceToken);return;case"map-value-ind":if(!J||J.value)$.items.push({start:[],key:null,sep:[this.sourceToken]});else if(J.sep)J.sep.push(this.sourceToken);else Object.assign(J,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":if(!J||J.value)$.items.push({start:[this.sourceToken]});else if(J.sep)J.sep.push(this.sourceToken);else J.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let X=this.flowScalar(this.type);if(!J||J.value)$.items.push({start:[],key:X,sep:[]});else if(J.sep)this.stack.push(X);else Object.assign(J,{key:X,sep:[]});return}case"flow-map-end":case"flow-seq-end":$.end.push(this.sourceToken);return}let Q=this.startBlockValue($);if(Q)this.stack.push(Q);else yield*this.pop(),yield*this.step()}else{let Q=this.peek(2);if(Q.type==="block-map"&&(this.type==="map-value-ind"&&Q.indent===$.indent||this.type==="newline"&&!Q.items[Q.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&Q.type!=="flow-collection"){let X=B9(Q),W=$2(X);aJ($);let G=$.end.splice(1,$.end.length);G.push(this.sourceToken);let Y={type:"block-map",offset:$.offset,indent:$.indent,items:[{start:W,key:$,sep:G}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=Y}else yield*this.lineEnd($)}}flowScalar($){if(this.onNewLine){let J=this.source.indexOf(`
136
+ `,J)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap($){let J=$.items[$.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,J.value){let Q="end"in J.value?J.value.end:void 0;if((Array.isArray(Q)?Q[Q.length-1]:void 0)?.type==="comment")Q?.push(this.sourceToken);else $.items.push({start:[this.sourceToken]})}else if(J.sep)J.sep.push(this.sourceToken);else J.start.push(this.sourceToken);return;case"space":case"comment":if(J.value)$.items.push({start:[this.sourceToken]});else if(J.sep)J.sep.push(this.sourceToken);else{if(this.atIndentedComment(J.start,$.indent)){let X=$.items[$.items.length-2]?.value?.end;if(Array.isArray(X)){D9(X,J.start),X.push(this.sourceToken),$.items.pop();return}}J.start.push(this.sourceToken)}return}if(this.indent>=$.indent){let Q=!this.onKeyLine&&this.indent===$.indent,X=Q&&(J.sep||J.explicitKey)&&this.type!=="seq-item-ind",Y=[];if(X&&J.sep&&!J.value){let G=[];for(let q=0;q<J.sep.length;++q){let W=J.sep[q];switch(W.type){case"newline":G.push(q);break;case"space":break;case"comment":if(W.indent>$.indent)G.length=0;break;default:G.length=0}}if(G.length>=2)Y=J.sep.splice(G[1])}switch(this.type){case"anchor":case"tag":if(X||J.value)Y.push(this.sourceToken),$.items.push({start:Y}),this.onKeyLine=!0;else if(J.sep)J.sep.push(this.sourceToken);else J.start.push(this.sourceToken);return;case"explicit-key-ind":if(!J.sep&&!J.explicitKey)J.start.push(this.sourceToken),J.explicitKey=!0;else if(X||J.value)Y.push(this.sourceToken),$.items.push({start:Y,explicitKey:!0});else this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]});this.onKeyLine=!0;return;case"map-value-ind":if(J.explicitKey)if(!J.sep)if(z$(J.start,"newline"))Object.assign(J,{key:null,sep:[this.sourceToken]});else{let G=G2(J.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:G,key:null,sep:[this.sourceToken]}]})}else if(J.value)$.items.push({start:[],key:null,sep:[this.sourceToken]});else if(z$(J.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:Y,key:null,sep:[this.sourceToken]}]});else if(J3(J.key)&&!z$(J.sep,"newline")){let G=G2(J.start),q=J.key,W=J.sep;W.push(this.sourceToken),delete J.key,delete J.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:G,key:q,sep:W}]})}else if(Y.length>0)J.sep=J.sep.concat(Y,this.sourceToken);else J.sep.push(this.sourceToken);else if(!J.sep)Object.assign(J,{key:null,sep:[this.sourceToken]});else if(J.value||X)$.items.push({start:Y,key:null,sep:[this.sourceToken]});else if(z$(J.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]});else J.sep.push(this.sourceToken);this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let G=this.flowScalar(this.type);if(X||J.value)$.items.push({start:Y,key:G,sep:[]}),this.onKeyLine=!0;else if(J.sep)this.stack.push(G);else Object.assign(J,{key:G,sep:[]}),this.onKeyLine=!0;return}default:{let G=this.startBlockValue($);if(G){if(G.type==="block-seq"){if(!J.explicitKey&&J.sep&&!z$(J.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else if(Q)$.items.push({start:Y});this.stack.push(G);return}}}}yield*this.pop(),yield*this.step()}*blockSequence($){let J=$.items[$.items.length-1];switch(this.type){case"newline":if(J.value){let Q="end"in J.value?J.value.end:void 0;if((Array.isArray(Q)?Q[Q.length-1]:void 0)?.type==="comment")Q?.push(this.sourceToken);else $.items.push({start:[this.sourceToken]})}else J.start.push(this.sourceToken);return;case"space":case"comment":if(J.value)$.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(J.start,$.indent)){let X=$.items[$.items.length-2]?.value?.end;if(Array.isArray(X)){D9(X,J.start),X.push(this.sourceToken),$.items.pop();return}}J.start.push(this.sourceToken)}return;case"anchor":case"tag":if(J.value||this.indent<=$.indent)break;J.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==$.indent)break;if(J.value||z$(J.start,"seq-item-ind"))$.items.push({start:[this.sourceToken]});else J.start.push(this.sourceToken);return}if(this.indent>$.indent){let Q=this.startBlockValue($);if(Q){this.stack.push(Q);return}}yield*this.pop(),yield*this.step()}*flowCollection($){let J=$.items[$.items.length-1];if(this.type==="flow-error-end"){let Q;do yield*this.pop(),Q=this.peek(1);while(Q?.type==="flow-collection")}else if($.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":if(!J||J.sep)$.items.push({start:[this.sourceToken]});else J.start.push(this.sourceToken);return;case"map-value-ind":if(!J||J.value)$.items.push({start:[],key:null,sep:[this.sourceToken]});else if(J.sep)J.sep.push(this.sourceToken);else Object.assign(J,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":if(!J||J.value)$.items.push({start:[this.sourceToken]});else if(J.sep)J.sep.push(this.sourceToken);else J.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let X=this.flowScalar(this.type);if(!J||J.value)$.items.push({start:[],key:X,sep:[]});else if(J.sep)this.stack.push(X);else Object.assign(J,{key:X,sep:[]});return}case"flow-map-end":case"flow-seq-end":$.end.push(this.sourceToken);return}let Q=this.startBlockValue($);if(Q)this.stack.push(Q);else yield*this.pop(),yield*this.step()}else{let Q=this.peek(2);if(Q.type==="block-map"&&(this.type==="map-value-ind"&&Q.indent===$.indent||this.type==="newline"&&!Q.items[Q.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&Q.type!=="flow-collection"){let X=V9(Q),Y=G2(X);$3($);let G=$.end.splice(1,$.end.length);G.push(this.sourceToken);let q={type:"block-map",offset:$.offset,indent:$.indent,items:[{start:Y,key:$,sep:G}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=q}else yield*this.lineEnd($)}}flowScalar($){if(this.onNewLine){let J=this.source.indexOf(`
137
137
  `)+1;while(J!==0)this.onNewLine(this.offset+J),J=this.source.indexOf(`
138
- `,J)+1}return{type:$,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue($){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let J=B9($),Q=$2(J);return Q.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:Q,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let J=B9($),Q=$2(J);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:Q,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment($,J){if(this.type!=="comment")return!1;if(this.indent<=J)return!1;return $.every((Q)=>Q.type==="newline"||Q.type==="space")}*documentEnd($){if(this.type!=="doc-mode"){if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}*lineEnd($){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}}Sz.Parser=oJ});var Q3=C((yz)=>{var tJ=G8(),Cz=h2(),l2=y2(),fz=O4(),Tz=p(),Iz=O8(),eJ=M8();function $3($){let J=$.prettyErrors!==!1;return{lineCounter:$.lineCounter||J&&new Iz.LineCounter||null,prettyErrors:J}}function vz($,J={}){let{lineCounter:Q,prettyErrors:X}=$3(J),W=new eJ.Parser(Q?.addNewLine),G=new tJ.Composer(J),Y=Array.from(G.compose(W.parse($)));if(X&&Q)for(let q of Y)q.errors.forEach(l2.prettifyError($,Q)),q.warnings.forEach(l2.prettifyError($,Q));if(Y.length>0)return Y;return Object.assign([],{empty:!0},G.streamInfo())}function J3($,J={}){let{lineCounter:Q,prettyErrors:X}=$3(J),W=new eJ.Parser(Q?.addNewLine),G=new tJ.Composer(J),Y=null;for(let q of G.compose(W.parse($),!0,$.length))if(!Y)Y=q;else if(Y.options.logLevel!=="silent"){Y.errors.push(new l2.YAMLParseError(q.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}if(X&&Q)Y.errors.forEach(l2.prettifyError($,Q)),Y.warnings.forEach(l2.prettifyError($,Q));return Y}function xz($,J,Q){let X=void 0;if(typeof J==="function")X=J;else if(Q===void 0&&J&&typeof J==="object")Q=J;let W=J3($,Q);if(!W)return null;if(W.warnings.forEach((G)=>fz.warn(W.options.logLevel,G)),W.errors.length>0)if(W.options.logLevel!=="silent")throw W.errors[0];else W.errors=[];return W.toJS(Object.assign({reviver:X},Q))}function hz($,J,Q){let X=null;if(typeof J==="function"||Array.isArray(J))X=J;else if(Q===void 0&&J)Q=J;if(typeof Q==="string")Q=Q.length;if(typeof Q==="number"){let W=Math.round(Q);Q=W<1?void 0:W>8?{indent:8}:{indent:W}}if($===void 0){let{keepUndefined:W}=Q??J??{};if(!W)return}if(Tz.isDocument($)&&!X)return $.toString(Q);return new Cz.Document($,X,Q).toString(Q)}yz.parse=xz;yz.parseAllDocuments=vz;yz.parseDocument=J3;yz.stringify=hz});var W3=C(($D)=>{var lz=G8(),cz=h2(),dz=c4(),K8=y2(),pz=j2(),Y$=p(),iz=J$(),nz=W0(),rz=X$(),az=W$(),sz=q9(),oz=F8(),tz=O8(),ez=M8(),V9=Q3(),X3=A2();$D.Composer=lz.Composer;$D.Document=cz.Document;$D.Schema=dz.Schema;$D.YAMLError=K8.YAMLError;$D.YAMLParseError=K8.YAMLParseError;$D.YAMLWarning=K8.YAMLWarning;$D.Alias=pz.Alias;$D.isAlias=Y$.isAlias;$D.isCollection=Y$.isCollection;$D.isDocument=Y$.isDocument;$D.isMap=Y$.isMap;$D.isNode=Y$.isNode;$D.isPair=Y$.isPair;$D.isScalar=Y$.isScalar;$D.isSeq=Y$.isSeq;$D.Pair=iz.Pair;$D.Scalar=nz.Scalar;$D.YAMLMap=rz.YAMLMap;$D.YAMLSeq=az.YAMLSeq;$D.CST=sz;$D.Lexer=oz.Lexer;$D.LineCounter=tz.LineCounter;$D.Parser=ez.Parser;$D.parse=V9.parse;$D.parseAllDocuments=V9.parseAllDocuments;$D.parseDocument=V9.parseDocument;$D.stringify=V9.stringify;$D.visit=X3.visit;$D.visitAsync=X3.visitAsync});var e1=($)=>$.payload.title?.trim()||`session:${$.payload.id}`;function U6($){let{store:J,agent:Q}=$;return{async session(X){let W=X.payload.id,G=await Y7(J,W);switch(X.type){case"session.created":{if(G)return{task_id:G.id};let Y=e1(X);return{task_id:(await J.createTask({title:Y,session_id:W,owner:Q,priority:3})).id}}case"session.idle":{if(!G)return null;if(G.status==="pending"){let Y=await J.updateTask(G.id,{status:"in_progress"});return Y?{task_id:Y.id}:null}return null}case"session.deleted":{if(!G)return null;return await J.updateTask(G.id,{status:"cancelled"}),{task_id:G.id}}case"session.error":case"session.compacted":return await J.appendOperation({task_id:G?.id??null,type:`session.${X.type.split(".").pop()}`,data:{session_id:W,agent:Q}}),null;default:return null}},async tool(X){let W=X.payload.sessionID,G=await Y7(J,W);if(!G)return await J.appendOperation({task_id:null,type:"tool.orphan",data:{session_id:W,tool:X.payload.tool}}),{task_id:(await J.createTask({title:`${X.payload.tool} (orphan)`,session_id:null,owner:Q,priority:3})).id};let Y=$Q(X),H=(await J.listTasks({parent_id:G.id,limit:20})).tasks.find((U)=>U.title===Y&&Date.now()-new Date(U.created_at).getTime()<60000);if(H)return{task_id:H.id};let B=await J.createTask({title:Y,parent_id:G.id,session_id:W,owner:Q,priority:3});return await J.updateTask(B.id,{status:"in_progress"}),{task_id:B.id}},async catchAll(X){try{await J.appendOperation({task_id:null,type:X.type,data:{payload:X.payload,agent:Q}})}catch{}}}}async function Y7($,J){return(await $.listTasks({session_id:J,limit:1})).tasks[0]??null}function $Q($){let J=$.payload.tool,Q=$.payload.args??{};switch(J){case"write":case"edit":return`${J} ${Q.filePath??"?"}`;case"bash":case"shell":{let X=String(Q.command??Q.cmd??"");return`${J} ${X.slice(0,40)}`}case"read":return`read ${Q.filePath??"?"}`;default:return`${J} ${JSON.stringify(Q).slice(0,40)}`}}var Y2="\u6309\u5B50\u9879\u9010\u6761\u9A8C\u6536",B$="TASK_COMPLETION_HINT",q2="\u6838\u5B9E\u4E49\u52A1";var V6="### Task Lifecycle (7 steps, 0-6)\n\n> Tasks are the **first-class citizen**. Follow this lifecycle for every task:\n\n0. CHECK TASK CONTEXT OR SEARCH\n - If `[\u5F53\u524D Task #N]` is in the context \u2192 use `task_get #N` directly, skip searching.\n - Otherwise use `task_list` / `task_search` to find related tasks.\n - If found \u2192 reuse, extend, and update (see the reuse rules in step 1).\n If not found \u2192 proceed to step 1.\n - **Orient before creating**: read the existing tree with\n `task_tree(depth=1)` (`depth=2` for bigger trees) and decide whether the\n work belongs to an existing root (attach via `parent_task_id`) or is\n genuinely new. Keep **root tasks \u2264 10**; prefer attaching to an existing\n thematic root over spawning a new root. Never hardcode ids \u2014 read them\n from `task_tree`.\n\n1. CREATE or REUSE\n - No existing task \u2192 create a new one with title, description, goals.\n - Existing task \u2192 reuse via `task_get`, then `task_update`:\n * Append new context to description and goals (preserve the old content)\n * Add / extend `goals_and_expected_deliverables`\n * Create an operation record documenting the continuation\n * Set priority and due date if any\n * If the original task was completed \u2192 reset status to `active`\n and reset progress to a reasonable value\n\n2. GATHER CONTEXT (never skip)\n - Read description, goals, current_status\n - Check `parent_task_id` for sub-tasks\n - Read the operation history: `task_operation_list` (~20 recent records)\n - Review recent operations for history and decisions\n - Working without context risks: outdated goals, missed decisions,\n duplicated work, misalignment with the parent task\n\n3. EXECUTE\n - Use the available tools, skills and workflows to satisfy the task\n description and goals.\n - Long-running work: for work longer than 5 minutes, record a milestone\n with `task_operation_create` as you go, so the user can see progress.\n - Several independent sub-tasks may run in parallel (background `bash &`\n or parallel ReAct steps).\n - **\u8FB9\u5E72\u8FB9\u8BB0** \u2014 milestones are recorded **while working**;\n **\u7981\u6B62\u4E8B\u540E\u6279\u91CF\u8865**\uFF08do not defer them to one batch at the end\uFF09.\n - Note: `task_create` / `task_update` already create operation records\n automatically \u2014 do not create duplicates by hand.\n\n4. TRACK\n - Update progress (0-100%) as the work advances\n - Update status: todo \u2192 active\n - Record `current_status` with human-readable progress\n - \u26A0\uFE0F **\u4E0D\u8981**\u628A status \u76F4\u63A5\u7F6E\u4E3A `completed` \u2014\u2014 \u7EC8\u6001\u7531\u9A8C\u6536\u65B9\u843D\uFF08\u89C1\u6B65\u9AA4 6\uFF09\n\n5. RECORD \u2014 operation records (see Operation Discipline below)\n\n6. COMPLETE \u2014 \u6536\u5C3E\u5206\u4E24\u79CD\u89D2\u8272\uFF08Task #5007\uFF0C\u9A8C\u6536\u6743\u5206\u79BB\uFF09\n - **\u6267\u884C\u65B9\uFF08roy sub-agent\uFF09**\uFF1A\u8FDB\u5EA6\u8FBE\u5230\u4F60\u5224\u65AD\u7684 100% \u21D2 `task_update(progress=100)`\n + \u6700\u540E\u4E00\u6761 `task_operation_create` \u21D2 **\u7ED3\u675F\u5E76\u8FD4\u56DE\u7ED3\u679C**\u3002\n \u274C **\u4E0D\u8981\u8C03\u7528 `task_complete`**\uFF08\u4F60\u65E0\u6B64\u6743\u9650\uFF09\u3002\n - **\u9A8C\u6536\u65B9\uFF08default agent / \u63A5\u5F85\u5458\uFF09**\uFF1A`task_complete` after item-by-item verification\n (see Complete Discipline below)".trim(),z6=`### Operation Record \u2014 \u53CC\u7EF4\u5EA6\u5206\u5DE5\u89C4\u8303
138
+ `,J)+1}return{type:$,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue($){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let J=V9($),Q=G2(J);return Q.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:Q,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let J=V9($),Q=G2(J);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:Q,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment($,J){if(this.type!=="comment")return!1;if(this.indent<=J)return!1;return $.every((Q)=>Q.type==="newline"||Q.type==="space")}*documentEnd($){if(this.type!=="doc-mode"){if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}*lineEnd($){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}}xV.Parser=Q3});var W3=C((pV)=>{var X3=W8(),yV=k2(),d2=m2(),gV=K4(),kV=d(),mV=K8(),Y3=R8();function G3($){let J=$.prettyErrors!==!1;return{lineCounter:$.lineCounter||J&&new mV.LineCounter||null,prettyErrors:J}}function uV($,J={}){let{lineCounter:Q,prettyErrors:X}=G3(J),Y=new Y3.Parser(Q?.addNewLine),G=new X3.Composer(J),q=Array.from(G.compose(Y.parse($)));if(X&&Q)for(let W of q)W.errors.forEach(d2.prettifyError($,Q)),W.warnings.forEach(d2.prettifyError($,Q));if(q.length>0)return q;return Object.assign([],{empty:!0},G.streamInfo())}function q3($,J={}){let{lineCounter:Q,prettyErrors:X}=G3(J),Y=new Y3.Parser(Q?.addNewLine),G=new X3.Composer(J),q=null;for(let W of G.compose(Y.parse($),!0,$.length))if(!q)q=W;else if(q.options.logLevel!=="silent"){q.errors.push(new d2.YAMLParseError(W.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}if(X&&Q)q.errors.forEach(d2.prettifyError($,Q)),q.warnings.forEach(d2.prettifyError($,Q));return q}function lV($,J,Q){let X=void 0;if(typeof J==="function")X=J;else if(Q===void 0&&J&&typeof J==="object")Q=J;let Y=q3($,Q);if(!Y)return null;if(Y.warnings.forEach((G)=>gV.warn(Y.options.logLevel,G)),Y.errors.length>0)if(Y.options.logLevel!=="silent")throw Y.errors[0];else Y.errors=[];return Y.toJS(Object.assign({reviver:X},Q))}function cV($,J,Q){let X=null;if(typeof J==="function"||Array.isArray(J))X=J;else if(Q===void 0&&J)Q=J;if(typeof Q==="string")Q=Q.length;if(typeof Q==="number"){let Y=Math.round(Q);Q=Y<1?void 0:Y>8?{indent:8}:{indent:Y}}if($===void 0){let{keepUndefined:Y}=Q??J??{};if(!Y)return}if(kV.isDocument($)&&!X)return $.toString(Q);return new yV.Document($,X,Q).toString(Q)}pV.parse=lV;pV.parseAllDocuments=uV;pV.parseDocument=q3;pV.stringify=cV});var H3=C((WD)=>{var aV=W8(),sV=k2(),oV=d4(),L8=m2(),tV=w2(),H$=d(),eV=Y$(),$D=Y0(),JD=q$(),QD=W$(),XD=B9(),YD=O8(),GD=K8(),qD=R8(),F9=W3(),z3=A2();WD.Composer=aV.Composer;WD.Document=sV.Document;WD.Schema=oV.Schema;WD.YAMLError=L8.YAMLError;WD.YAMLParseError=L8.YAMLParseError;WD.YAMLWarning=L8.YAMLWarning;WD.Alias=tV.Alias;WD.isAlias=H$.isAlias;WD.isCollection=H$.isCollection;WD.isDocument=H$.isDocument;WD.isMap=H$.isMap;WD.isNode=H$.isNode;WD.isPair=H$.isPair;WD.isScalar=H$.isScalar;WD.isSeq=H$.isSeq;WD.Pair=eV.Pair;WD.Scalar=$D.Scalar;WD.YAMLMap=JD.YAMLMap;WD.YAMLSeq=QD.YAMLSeq;WD.CST=XD;WD.Lexer=YD.Lexer;WD.LineCounter=GD.LineCounter;WD.Parser=qD.Parser;WD.parse=F9.parse;WD.parseAllDocuments=F9.parseAllDocuments;WD.parseDocument=F9.parseDocument;WD.stringify=F9.stringify;WD.visit=z3.visit;WD.visitAsync=z3.visitAsync});var BQ=($)=>$.payload.title?.trim()||`session:${$.payload.id}`;function M6($){let{store:J,agent:Q}=$;return{async session(X){let Y=X.payload.id,G=await z7(J,Y);switch(X.type){case"session.created":{if(G)return{task_id:G.id};let q=BQ(X);return{task_id:(await J.createTask({title:q,session_id:Y,owner:Q,priority:3})).id}}case"session.idle":{if(!G)return null;if(G.status==="pending"){let q=await J.updateTask(G.id,{status:"in_progress"});return q?{task_id:q.id}:null}return null}case"session.deleted":{if(!G)return null;return await J.updateTask(G.id,{status:"cancelled"}),{task_id:G.id}}case"session.error":case"session.compacted":return await J.appendOperation({task_id:G?.id??null,type:`session.${X.type.split(".").pop()}`,data:{session_id:Y,agent:Q}}),null;default:return null}},async tool(X){let Y=X.payload.sessionID,G=await z7(J,Y);if(!G)return await J.appendOperation({task_id:null,type:"tool.orphan",data:{session_id:Y,tool:X.payload.tool}}),{task_id:(await J.createTask({title:`${X.payload.tool} (orphan)`,session_id:null,owner:Q,priority:3})).id};let q=UQ(X),z=(await J.listTasks({parent_id:G.id,limit:20})).tasks.find((B)=>B.title===q&&Date.now()-new Date(B.created_at).getTime()<60000);if(z)return{task_id:z.id};let H=await J.createTask({title:q,parent_id:G.id,session_id:Y,owner:Q,priority:3});return await J.updateTask(H.id,{status:"in_progress"}),{task_id:H.id}},async catchAll(X){try{await J.appendOperation({task_id:null,type:X.type,data:{payload:X.payload,agent:Q}})}catch{}}}}async function z7($,J){return(await $.listTasks({session_id:J,limit:1})).tasks[0]??null}function UQ($){let J=$.payload.tool,Q=$.payload.args??{};switch(J){case"write":case"edit":return`${J} ${Q.filePath??"?"}`;case"bash":case"shell":{let X=String(Q.command??Q.cmd??"");return`${J} ${X.slice(0,40)}`}case"read":return`read ${Q.filePath??"?"}`;default:return`${J} ${JSON.stringify(Q).slice(0,40)}`}}var H7=`### Task Lifecycle \u2014 the plugin's contract
139
139
 
140
- **Record milestones as you work** \u2014 call \`task_operation_create\` the moment a
141
- stage is reached, **not after the fact** (not in a batch at the end).
140
+ > **Task is the first-class citizen.** No task, no work.
142
141
 
143
- **\u64CD\u4F5C\u8BB0\u5F55\u5FC5\u987B\u4E25\u683C\u533A\u5206\u4E24\u4E2A\u7EF4\u5EA6\uFF0C\u4E8C\u8005\u914D\u5957\u8BB0\u5F55\u3001\u5404\u53F8\u5176\u804C**\uFF1A
142
+ You are the worker agent: you act through the tools, and your output is
143
+ what the user sees. The user reads task titles and milestones, not a
144
+ process log.
144
145
 
145
- #### \u7EF4\u5EA6 1\uFF1A\u72B6\u6001/\u91CC\u7A0B\u7891\uFF08"\u8FBE\u5230\u4EC0\u4E48"\uFF09\u2014 \u5FC5\u586B\u7EF4\u5EA6
146
- \u4F7F\u7528 \`task_operation_create\` \u7684 milestone_* \u4E3B\u5B57\u6BB5\uFF1A
147
- - **milestone_type**\uFF1A\u91CC\u7A0B\u7891\u7C7B\u578B\uFF08create / progress / milestone / problem / solution / decision / review / completed / workflow_extracted\uFF09
148
- - **milestone_title**\uFF1A\u91CC\u7A0B\u7891\u6807\u9898\uFF08\u4E00\u884C\uFF09
149
- - **milestone_description**\uFF1A\u8FBE\u6210\u7684\u72B6\u6001/\u7ED3\u679C\u63CF\u8FF0\uFF08\u53EF\u957F\u53EF\u77ED\uFF09
146
+ #### 0. Orient before you create
150
147
 
151
- #### \u7EF4\u5EA6 2\uFF1A\u8FC7\u7A0B\uFF08"\u5982\u4F55\u8FBE\u5230"\uFF09\u2014 \u53EF\u9009\u4F46\u63A8\u8350\u7EF4\u5EA6
152
- \u4F7F\u7528 \`task_operation_create\` \u7684 \`process_description\` \u5B57\u6BB5\uFF1A
153
- - \u5B57\u7B26\u8303\u56F4\u786C\u7EA6\u675F 100-500 \u5B57\u7B26 (100\u2013500 characters)
154
- - \u5185\u5BB9\uFF1A\u91C7\u53D6\u7684\u7B56\u7565 + \u5DE5\u5177\u6B65\u9AA4\u6982\u8981
155
- - \u5B8C\u6574\u8FC7\u7A0B\u901A\u8FC7 sessionId \u56DE\u67E5 session
148
+ - If a \`[\u5F53\u524D Task #N]\` marker is in your context \u2192 \`task_get #N\`
149
+ directly, skip searching.
150
+ - Otherwise \`task_list\` / \`task_search\` for related work first.
151
+ - \`task_tree(depth=1)\` before creating: decide whether the work belongs
152
+ under an existing root instead of piling up new roots. Keep the root
153
+ tasks \u2264 10 \u2014 a wide forest is a sign the work was not oriented.
156
154
 
157
- #### \u53CC\u7EF4\u5EA6\u914D\u5408\u94C1\u5F8B
158
- - \u274C **\u4E0D\u8981\u628A action \u5F53\u72B6\u6001**\uFF1A\u65E7 \`action_*\` \u547D\u540D\u504F\u52A8\u4F5C/\u884C\u4E3A\u5C42\uFF0C\u4E0D\u80FD\u8868\u8FBE"\u6B64\u523B\u8FBE\u5230\u4EC0\u4E48"\uFF1B\u73B0\u5728\u7EDF\u4E00\u6539\u7528 \`milestone_*\`\u3002
159
- - \u274C **\u4E0D\u8981\u8BA9 process_description \u4E0E milestone_description \u91CD\u590D**\uFF1Aprocess \u662F"\u5982\u4F55\u8FBE\u5230"\uFF0Cmilestone \u662F"\u8FBE\u5230\u4EC0\u4E48\u72B6\u6001"\u3002
160
- - \u2705 **\u914D\u5957\u8BB0\u5F55**\uFF1A\u6BCF\u4E2A\u6709\u610F\u4E49\u7684 operation \u90FD\u5E94\u540C\u65F6\u5305\u542B\u4E24\u8005\uFF1B\u4E0D\u5199 process \u65F6\uFF0Cdetail \u5E94\u901A\u8FC7 sessionId \u56DE\u67E5\u3002
161
- - \u26A0\uFE0F **\u517C\u5BB9\u7A97\u53E3\u671F**\uFF1A\u65E7 \`action_type\` / \`action_title\` / \`action_description\` \u4ECD\u88AB tool \u63A5\u53D7\uFF08\u6807\u8BB0 @deprecated\uFF09\uFF0C\u4F1A\u81EA\u52A8\u6620\u5C04\u5230 milestone_* \u5E76\u8FD4\u56DE deprecation warning\u3002
162
-
163
- #### \u8303\u4F8B\uFF08\u53CC\u7EF4\u5EA6\u9F50\u5168\u7684 operation \u8BB0\u5F55\uFF09
164
- \`\`\`json
165
- {
166
- "task_id": 123,
167
- "milestone_type": "milestone",
168
- "milestone_title": "GREEN \u901A\u8FC7\uFF1Amilestone_* schema/storage/tool \u5168\u94FE\u8DEF",
169
- "milestone_description": "21/21 \u6D4B\u8BD5\u901A\u8FC7\uFF0C\u5305\u542B 4 \u4E2A action_* alias \u517C\u5BB9\u6D4B\u8BD5",
170
- "process_description": "TDD RED \u5199 4 \u4E2A\u5931\u8D25\u6D4B\u8BD5\u8986\u76D6 storage/tool\uFF1B\u8FC1\u79FB 004 rename \u5217\uFF1BrowToOperation \u540C\u65F6\u8F93\u51FA\u53CC\u5B57\u6BB5\u517C\u5BB9\uFF1Btool zod preprocess \u81EA\u52A8\u6620\u5C04 action_*"
171
- }
172
- \`\`\``,P$=`### Goals \u5B50\u9879\u62C6\u5206\u89C4\u5219
155
+ #### 1. Create or reuse
173
156
 
174
- \`goals_and_expected_deliverables\` **MUST** be written as
175
- **numbered sub-items** (\u7F16\u53F7\u5B50\u9879) that can each be verified
176
- one by one (\u9010\u6761\u9A8C\u6536) \u2014 for \`type=normal\` tasks:
157
+ \`task_create\` with a **title**, a **description**, and
158
+ \`goals_and_expected_deliverables\` written as **numbered sub-items**
159
+ (\u7F16\u53F7\u5B50\u9879) \u2014 each one separately verifiable:
177
160
 
178
161
  1. \u5B9E\u73B0 X\uFF08\u542B\u6587\u4EF6\u8DEF\u5F84\uFF09
179
162
  2. \u6D4B\u8BD5 Y \u8986\u76D6 Z \u573A\u666F\uFF08pass/fail \u8BA1\u6570\uFF09
180
163
  3. \u6587\u6863 W \u843D\u76D8\u5230 <path>
181
164
 
182
- \u26A0\uFE0F For \`type=longterm\` / \`type=cycle\` tasks there is no
183
- per-item completion acceptance\uFF08\u4E0D\u8D70\u9010\u6761 complete \u9A8C\u6536\uFF09, so the
184
- MUST above does not apply; for those, it is **strongly recommended**
185
- (\u5EFA\u8BAE) to split goals into staged, individually checkable sub-items
186
- (\u9636\u6BB5\u6027\u53EF\u5224\u5B50\u9879) instead of one vague sentence.
165
+ Each sub-item must be checkable by one of the four atomic forms:
166
+ **\u6587\u4EF6\u65AD\u8A00** (file exists / size / content grep), **\u8FDB\u7A0B\u65AD\u8A00**
167
+ (command exit code / stdout), **\u6D4B\u8BD5\u65AD\u8A00** (pass/fail counts, no NEW
168
+ fail), **\u72B6\u6001\u65AD\u8A00** (version / HTTP 200 / status field). A vague
169
+ one-line goal gives the reviewer nothing to check against.
187
170
 
188
- Why: when the task is completed, the completion hook
189
- (task:after.complete) judges the whole goal against the
190
- operation-record chain, using each sub-item as fine-grained
191
- evidence (\u9010\u6761\u5BF9\u7167\u7684\u4F9D\u636E). Vague one-line goals (\u4E00\u53E5\u8BDD\u6A21\u7CCA\u76EE\u6807\uFF0C
192
- \u5982\u300C\u505A\u597D X\u300D\u300C\u5B8C\u6210\u8C03\u7814\u300D) give the judge nothing to check
193
- and make a completion hint much more likely.
171
+ Reuse before you create: if a matching task exists, \`task_update\` it
172
+ (append to description / goals) instead of creating a near-duplicate.
194
173
 
195
- Reference the four atomic assertion forms (Task #4768
196
- \u56DB\u539F\u5B50\u5F62\u6001) when writing each sub-item:
174
+ #### 2. Execute, and record as you go
197
175
 
198
- - \u6587\u4EF6\u65AD\u8A00 (file assertion): file exists / size / content grep
199
- - \u8FDB\u7A0B\u65AD\u8A00 (process assertion): command exit code / stdout match
200
- - \u6D4B\u8BD5\u65AD\u8A00 (test assertion): pass/fail counts, no NEW fail
201
- - \u72B6\u6001\u65AD\u8A00 (state assertion): version number / HTTP 200 / status field`,D6=`### Task Complete \u2014 \u6838\u5B9E\u4E49\u52A1\uFF08**\u4EC5\u9A8C\u6536\u65B9\u9002\u7528**\uFF09
176
+ - Work in stages; each stage is one \`task_operation_create\` call.
177
+ - **\u8FB9\u5E72\u8FB9\u8BB0** \u2014 record the moment a stage lands, never batch at the
178
+ end. Milestones recorded in a batch at the end read as filler.
202
179
 
203
- > \u26A0\uFE0F **\u89D2\u8272\u4F5C\u7528\u57DF\uFF08Task #5007\uFF09**\uFF1A\u672C\u8282\u662F**\u9A8C\u6536\u65B9**\uFF08default agent / \u63A5\u5F85\u5458\uFF09\u7684\u52A8\u4F5C\u3002
204
- > \u82E5\u4F60\u662F**\u6267\u884C\u65B9**\uFF08roy sub-agent\uFF09\uFF0C\u4F60\u6CA1\u6709 \`task_complete\` \u6743\u9650 \u2014\u2014
205
- > \u4F60\u7684\u6536\u5C3E\u52A8\u4F5C\u662F\u300C\u8FDB\u5EA6\u63A8\u5230 100% + \u8BB0\u5B8C\u64CD\u4F5C\u8BB0\u5F55 + \u7ED3\u675F\u8FD4\u56DE\u300D\uFF0C\u9A8C\u6536\u7531\u4E3B\u667A\u80FD\u4F53\u8D1F\u8D23\u3002
180
+ **Operation records carry two dimensions** \u2014 keep them apart:
206
181
 
207
- Before calling \`task_complete\`, you MUST:
182
+ | dimension | field | what it answers |
183
+ |---|---|---|
184
+ | state | \`milestone_type\` + \`milestone_title\` + \`milestone_description\` | **what** was reached |
185
+ | process | \`process_description\` (100\u2013500 characters) | **how** it was reached |
208
186
 
209
- 1. Read the task's \`goal\` (description) and \`delivery\` (goals_and_expected_deliverables) fields.
210
- - Use \`task_get(task_id=<id>)\` to fetch the full task record.
211
- 2. **Validate whether each goal sub-item was achieved** \u2014 accept the goal
212
- **item-by-item** (${Y2}).
213
- - Goals should be numbered sub-items (\u7F16\u53F7\u5B50\u9879). Check
214
- each sub-item against the operation-record chain (\u64CD\u4F5C\u8BB0\u5F55\u94FE) and the
215
- deliverable evidence (context.deliverable_storage_path).
216
- - The completion hook (task:after.complete) judges the whole goal vs.
217
- deliverables; numbered sub-items give it finer-grained evidence to
218
- reason with (\u9010\u6761\u5BF9\u7167\u7684\u8BC1\u636E\u7C92\u5EA6). If it detects that the goal or
219
- deliverables appear unmet, the task context will carry a
220
- \`[${B$}]\`.
221
- - **If you receive a [${B$}]**, you MUST verify it
222
- (${q2}): re-read the task via \`task_get\`, then do exactly one of:
223
- (a) \u786E\u8BA4\u672A\u5B8C\u6210 \u2192 **\u91CD\u65B0\u59D4\u6258**\uFF08\u7528\u4F60\u7684\u59D4\u6258\u5DE5\u5177 + \u540C\u4E00 sub-session \u7EED\u8DD1\uFF0C
224
- \u5728\u6307\u4EE4\u91CC\u5199\u660E"\u76EE\u6807\u5C1A\u672A\u8FBE\u6210\uFF0C\u9700\u8981\u8865 X/Y/Z"\uFF09\uFF0C\u7531 sub-agent \u7528
225
- \`task_update(status=active)\` \u91CD\u5F00\u5E76\u7EE7\u7EED\u63A8\u8FDB\uFF1B\u82E5\u4F60**\u81EA\u5DF1\u5C31\u662F\u6267\u884C\u65B9**
226
- \uFF08\u6709 \`task_update\` \u6743\u9650\uFF09\uFF0C\u5219\u76F4\u63A5 \`task_update(status=todo)\` \u91CD\u5F00\uFF1B\u6216
227
- (b) \u786E\u8BA4\u5DF2\u5B8C\u6210 \u2192 **\u7528\u4F60\u624B\u4E0A\u6709\u6743\u9650\u7684\u5199\u5DE5\u5177**\u843D\u4E00\u6761 \`decision\` \u7C7B\u64CD\u4F5C\u8BB0\u5F55
228
- \uFF08\`task_operation_create\`\uFF0Cmilestone_type=decision\uFF0Cmilestone_title=<\u4E00\u884C\u7ED3\u8BBA>\uFF09
229
- \u8BF4\u660E\u5B50\u9879\u5B9E\u9645\u5DF2\u8FBE\u6210\uFF08\u8BF4\u660E\u7406\u7531\uFF09\u3002\u82E5\u4F60\u6CA1\u6709\u8BE5\u5DE5\u5177\u7684\u6743\u9650\uFF08\u9A8C\u6536\u65B9\u573A\u666F\uFF09\uFF0C
230
- \u5C31\u901A\u8FC7\u4F60\u7684**\u59D4\u6258\u5DE5\u5177**\u8BA9 sub-agent \u4EE3\u5199\u8FD9\u6761\u8BB0\u5F55\uFF0C\u6216\u5728 \`task_complete\`
231
- \u7684 \`deliverable_storage_path\` / \u6700\u7EC8\u6C47\u62A5\u91CC\u660E\u786E\u5199\u51FA\u6838\u5B9E\u7ED3\u8BBA\u4E0E\u8BC1\u636E\u3002
232
- Never ignore it (\u4E0D\u5141\u8BB8\u65E0\u89C6).
233
- \u26A0\uFE0F **\u6838\u5B9E\u4E49\u52A1\u7684\u4E24\u6761\u8DEF\u5F84\u90FD\u4F9D\u8D56\u5199\u6743\u9650**\uFF08\`task_update\` / \`task_operation_create\`\uFF09\u3002
234
- \u82E5\u8FD9\u4E9B\u5DE5\u5177\u5BF9\u4F60**\u4E0D\u53EF\u7528**\uFF08\u5982\u9A8C\u6536\u65B9\u4E0D\u6301\u6709\u6267\u884C\u7C7B\u5DE5\u5177\uFF09\uFF0C\u5FC5\u987B**\u6539\u7528\u59D4\u6258**\u628A\u52A8\u4F5C
235
- \u4EA4\u56DE\u7ED9\u6709\u6743\u9650\u7684 sub-agent \u6267\u884C \u2014\u2014 \u4E0D\u8981\u8BD5\u56FE\u8C03\u7528\u4E0D\u53EF\u7528\u7684\u5DE5\u5177\uFF08\u4F1A\u88AB\u62E6\u6389\u5E76\u6D6A\u8D39\u4E00\u8F6E\u8FED\u4EE3\uFF09\u3002
236
- - If the goal and delivery mismatch **without** a hint, either:
237
- (a) extend the task via \`task_update\`, or
238
- (b) record the discrepancy via \`task_operation_create\`
239
- (milestone_type=decision) \u2014 the reason **must** land in the
240
- operation record (\u5FC5\u987B\u843D\u5230\u64CD\u4F5C\u8BB0\u5F55\u91CC), not merely a line in
241
- your final report (\u4E0D\u80FD\u53EA\u5728\u62A5\u544A\u91CC\u5E26\u4E00\u53E5).
242
- 3. **Provide \`deliverable_storage_path\`** parameter with the deliverable's address.
243
- It may name **multiple paths** (multiple deliverables), space-separated
244
- (\`/tmp/report.md /tmp/diff.patch\`) \u2014 the judge splits on whitespace as
245
- well as \`,\` \`;\` \`\u3001\` and \` + \`. A local path may also be written in its
246
- \`file://\` form (\`file:///tmp/report.md\`) \u2014 the scheme is stripped and the
247
- path kept. Declare **every** artefact you produced: a path left out reads
248
- as "not produced".
249
- - Feishu doc URL (e.g., https://my.feishu.cn/docx/abc)
250
- - Local file path (e.g., /tmp/report.md)
251
- - Git branch or worktree path (e.g., feature/my-feature)
252
- - GitHub commit URL or PR URL
253
- - Cloud drive URL (e.g., https://my.feishu.cn/file/abc)
254
- - Or any other locator that points to where the work product lives
255
-
256
- The \`deliverable_storage_path\` will be persisted to the task's
257
- \`context.deliverable_storage_path\` for future reference and traceability.`,T9=[V6,z6,P$,D6].join(`
258
-
259
- `);import{createRequire as JQ}from"module";var{defineProperty:I9,getOwnPropertyNames:QQ,getOwnPropertyDescriptor:XQ}=Object,WQ=Object.prototype.hasOwnProperty;function GQ($){return this[$]}var S$=($)=>{var J=(q7??=new WeakMap).get($),Q;if(J)return J;if(J=I9({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var X of QQ($))if(!WQ.call(J,X))I9(J,X,{get:GQ.bind($,X),enumerable:!(Q=XQ($,X))||Q.enumerable})}return q7.set($,J),J},q7,YQ=($)=>$;function qQ($,J){this[$]=YQ.bind(null,J)}var i0=($,J)=>{for(var Q in J)I9($,Q,{get:J[Q],enumerable:!0,configurable:!0,set:qQ.bind(J,Q)})},m=function($,J,Q,X){var W=arguments.length,G=W<3?J:X===null?X=Object.getOwnPropertyDescriptor(J,Q):X,Y;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")G=Reflect.decorate($,J,Q,X);else for(var q=$.length-1;q>=0;q--)if(Y=$[q])G=(W<3?Y(G):W>3?Y(J,Q,G):Y(J,Q))||G;return W>3&&G&&Object.defineProperty(J,Q,G),G},a=($,J)=>()=>($&&(J=$($=0)),J),e=JQ(import.meta.url);var HQ=/\u9A8C\u6536\u65B9|\u6536\u5C3E\u5206\u4E24\u79CD\u89D2\u8272/,BQ=Object.freeze([{name:"complete-\u7981\u6B62\u8C03\u7528",match:($)=>/(\u4E0D\u8981|\u7981\u6B62|\u522B|\u65E0\u9700|\u4E0D\u9700\u8981|\u4E0D\u80FD|\u65E0\u6743|\u4E0D\u5F97|\u4ECD\u65E0|\u4E0D\u6301\u6709|\u4E0D\u5177\u5907|\u672A\u83B7\u5F97)/.test($)&&/task_complete/.test($)},{name:"\u89D2\u8272\u6743\u9650\u65AD\u8A00",match:($)=>/(\u6267\u884C\u65B9|\u9A8C\u6536\u65B9)/.test($)&&/(\u6743\u9650|\u8D44\u683C|\u65E0\u6743|\u4E0D\u80FD|\u6CA1\u6709)/.test($)&&/task_complete/.test($)&&!/\u4F60\u7684\u6536\u5C3E\u52A8\u4F5C\u662F/.test($)},{name:"track-\u7981\u6B62\u7F6E\u7EC8\u6001",match:($)=>/\u7EC8\u6001\u7531\u9A8C\u6536\u65B9\u843D/.test($)||/\u4E0D\u8981/.test($)&&/\u7F6E\u4E3A/.test($)&&/completed/.test($)},{name:"lifecycle-\u89D2\u8272\u4E8C\u5206\u6807\u9898",match:($)=>/\u6536\u5C3E\u5206\u4E24\u79CD\u89D2\u8272/.test($),replace:()=>"6. COMPLETE \u2014 \u6536\u5C3E\uFF1A\u7528 `task_complete` after item-by-item verification"+" (see Complete Discipline below)"},{name:"lifecycle-\u6267\u884C\u65B9\u6761\u76EE",match:($)=>/\u6267\u884C\u65B9/.test($)&&/(roy )?sub-agent/.test($)},{name:"lifecycle-\u6267\u884C\u65B9\u6536\u5C3E\u6307\u4EE4",match:($,J)=>(/\u7ED3\u675F\u5E76\u8FD4\u56DE\u7ED3\u679C|\u7ED3\u675F\u5E76\u8FD4\u56DE/.test($)||/\u6700\u540E\u4E00\u6761/.test($)&&/task_operation_create/.test($))&&(/\u6267\u884C\u65B9/.test($)||/\u6267\u884C\u65B9/.test(J.prevLine??""))},{name:"lifecycle-\u9A8C\u6536\u65B9\u6761\u76EE",match:($)=>/\u9A8C\u6536\u65B9/.test($)&&/(default agent|\u63A5\u5F85\u5458)/.test($)},{name:"complete-\u6807\u9898\u89D2\u8272\u9650\u5B9A",match:($)=>/^#{1,6}\s/.test($)&&/\u9A8C\u6536\u65B9/.test($),replace:($)=>$.replace(/\s*[\uFF08(][^\uFF09)]*\u9A8C\u6536\u65B9[^\uFF09)]*[\uFF09)]/g,"")},{name:"complete-\u89D2\u8272\u4F5C\u7528\u57DF\u5F15\u7528\u5757",match:($)=>/\u89D2\u8272\u4F5C\u7528\u57DF/.test($)||/\u82E5\u4F60\u662F/.test($)&&/\u6267\u884C\u65B9/.test($)&&/\u6743\u9650/.test($)||/\u4F60\u7684\u6536\u5C3E\u52A8\u4F5C\u662F/.test($)&&/\u9A8C\u6536\u7531\u4E3B\u667A\u80FD\u4F53\u8D1F\u8D23/.test($)}]);function H7($){return/^\s*([-*+]\s|\d+\.\s)/.test($)}function UQ($,J){if(H7($))return!1;if(/^\s*(#{1,6}\s|>)/.test($))return!1;if(/^\s*```/.test($))return!1;if($.trim()==="")return!1;let Q=(X)=>X.match(/^\s*/)?.[0].length??0;return Q($)>Q(J)}function H2($){if(!$)return $;let J=$.split(`
260
- `),Q=[];for(let G=0;G<J.length;G++){let Y=J[G],q=BQ.find((H)=>H.match(Y,{prevLine:J[G-1]}));if(!q){Q.push(Y);continue}if(q.replace){let H=q.replace(Y);if(HQ.test(H))throw Error(`trim-permission: rule "${q.name}" matched the line but its replace() `+"left the role qualifier in place \u2014 core's wording drifted and this "+`trim rule must be updated.
261
- line: ${Y}`);Q.push(H)}if(!q.replace&&H7(Y))while(G+1<J.length&&UQ(J[G+1],Y))G++}let X=[],W=!1;for(let G of Q){if(/^\s*```/.test(G)){W=!W,X.push(G);continue}if(!W&&G.trim()===""&&X.length>0&&X[X.length-1].trim()==="")continue;X.push(G)}return X.join(`
262
- `)}var VQ=H2(V6),zQ=H2(P$),DQ=H2(z6),FQ=H2(D6),v9=`# Roy \u2014 task-first-class-citizen agent
187
+ Record **as you work**, **not after the fact**. The chain is the evidence
188
+ the acceptance side reads, so it has to be complete and honest.
263
189
 
264
- You are **Roy**, an agent whose defining rule is simple:
190
+ \`milestone_title\` is a **\u77ED\u8BED** (\u2264 20 \u5B57, verb-first) naming what was
191
+ locked down \u2014 e.g. \`\u6CC4\u6F0F\u6E90\u9501\u5B9A\`, \`\u6D4B\u8BD5\u5168\u7EFF\`. Not a label like
192
+ "progress" and not a sentence.
193
+ \`milestone_description\` is a dense technical narrative \u2014 file paths,
194
+ symbols, commands, numbers (pass/fail counts, exit codes, sizes).
195
+ \`process_description\` is the route (strategy + tool steps) and must
196
+ **not** repeat the description.
265
197
 
266
- > **Task is a first-class citizen. No task, no work.**
198
+ #### 3. Track
267
199
 
268
- You are a worker agent: you act through the tools, and your output is what
269
- the user sees.
200
+ - \`task_update(progress=\u2026, current_status=\u2026)\` as you advance.
201
+ - Status vocabulary: \`todo\` \u2192 \`active\` \u2192 \`to_validate\` \u2192 \`completed\`.
202
+ **Do not** set \`completed\` yourself before the acceptance step below.
270
203
 
271
- ${VQ}
204
+ #### 4. Submit for acceptance \u2014 \`task_pre_complete\`
205
+
206
+ When the work is done and the deliverables exist, **submit**:
272
207
 
273
- ${zQ}
208
+ \`\`\`
209
+ task_pre_complete(
210
+ task_id=<id>,
211
+ deliverable_storage_path="<path(s)>",
212
+ current_status="<one-line progress summary>"
213
+ )
214
+ \`\`\`
274
215
 
275
- The tool returns a **numeric task id** \u2014 that number is your handle for the
276
- rest of the conversation.
216
+ - It sets \`status = "to_validate"\` (\u5F85\u9A8C\u8BC1) \u2014 **not** a terminal state.
217
+ - The deliverable path lands in \`task.context.deliverable_storage_path\`
218
+ and in the operation trail, so the acceptance side can check it.
219
+ - \`deliverable_storage_path\` may name **several paths**, space-separated
220
+ (\`/tmp/report.md /tmp/diff.patch\`); \`,\` \`;\` \`\u3001\` and \` + \` also
221
+ split. A local path may carry the \`file://\` scheme. Declare **every**
222
+ artefact you produced \u2014 a path left out reads as "not produced".
223
+ - \`cycle\` tasks are periodic by design: they cannot be submitted or
224
+ completed. Use \`task_update\` to reset their progress instead.
225
+
226
+ **Self-check on submission.** Submitting runs the goal check (the
227
+ "goal vs. deliverables" judge) **once**, at submission time. If the
228
+ result carries a \`[TASK_COMPLETION_HINT]\`, you MUST verify it
229
+ (\u6838\u5B9E\u4E49\u52A1) \u2014 never ignore it:
230
+
231
+ 1. Re-read the task with \`task_get(task_id=<id>)\`.
232
+ 2. Then do exactly one of:
233
+ - **not met** \u2192 fix the gap, then submit again (\`task_pre_complete\`
234
+ is idempotent \u2014 a later submission replaces the earlier one's
235
+ status / deliverable, and each one leaves its own operation);
236
+ - **met after all** \u2192 record a \`decision\` operation
237
+ (\`task_operation_create(milestone_type="decision")\`) stating why the
238
+ sub-items are actually satisfied.
239
+
240
+ #### 5. Accept \u2014 \`task_complete\`
241
+
242
+ The acceptance step is a **separate, explicit** call. Before it:
243
+
244
+ 1. Read the task's goal and delivery fields (\`task_get\`).
245
+ 2. Validate **item-by-item** (\u6309\u5B50\u9879\u9010\u6761\u9A8C\u6536) against the operation
246
+ chain and the deliverable evidence in
247
+ \`context.deliverable_storage_path\`.
248
+ 3. Honour a \`[TASK_COMPLETION_HINT]\` if one is present \u2014 same verify
249
+ duty as above: either **reopen** the task (\`task_update(status="todo")\`)
250
+ and finish the missing work, or **state why** the sub-items are already
251
+ met (a \`decision\` operation).
252
+ 4. If the goal and the deliverables disagree, either extend the task
253
+ (\`task_update\`) or record the discrepancy as a \`decision\` operation.
254
+
255
+ \`task_complete(task_id=<id>)\` then sets \`status = "completed"\` and
256
+ \`progress = 100\`. It takes **no** deliverable parameter \u2014 the
257
+ deliverables were already submitted through \`task_pre_complete\`.
258
+
259
+ \u26A0\uFE0F If \`task_pre_complete\` is not in your tool surface (an older
260
+ core), submit with \`task_complete(deliverable_storage_path=...)\`
261
+ instead \u2014 the legacy one-call contract.
262
+
263
+ #### Where tasks live
264
+
265
+ All tasks and operations are persisted by the plugin in the **single**
266
+ project store \u2014 locally SQLite at \`~/.roy-task-plugin/tasks.db\` (or the
267
+ remote service when the plugin runs with \`persistence: "remote"\`). Do
268
+ not create side databases, do not keep your own to-do list in files, and
269
+ do not track work in chat only: if it is not in the task store, it is
270
+ not tracked.
271
+
272
+ #### Style
273
+
274
+ - Be direct and concrete.
275
+ - Report the task id and its state whenever you finish a step.
276
+ - If a task is blocked, mark it (\`task_update(status="paused")\`) and
277
+ record a \`problem\` milestone explaining the blocker instead of going
278
+ silent.`,$O=Object.freeze(["opencode","claude"]);var v9=`# Roy \u2014 task-first-class-citizen agent
277
279
 
278
- ${DQ}
280
+ You are **Roy**, an agent whose defining rule is simple:
279
281
 
280
- ${FQ}
282
+ > **Task is a first-class citizen. No task, no work.**
281
283
 
282
- #### Several deliverables in one field
283
- \`deliverable_storage_path\` may name **multiple paths**, space-separated
284
- (\`/tmp/report.md /tmp/diff.patch\`) \u2014 the judge splits on whitespace as well
285
- as \`,\` \`;\` \`\u3001\` and \` + \`. A local path may also be written in its
286
- \`file://\` form (\`file:///tmp/report.md\`) \u2014 the scheme is stripped and the
287
- path kept. Declare **every** artefact you produced: a path left out reads as
288
- "not produced" and drags the task toward a false completion hint.
284
+ You are a worker agent: you act through the tools, and your output is what
285
+ the user sees.
289
286
 
290
- \`task_complete\` cannot be used on \`cycle\` tasks (they are periodic by
291
- design) \u2014 use \`task_update\` to reset those.
287
+ ${H7}
292
288
 
293
289
  ## Other tools
294
290
 
295
291
  - \`task_get(task_id, include_operations)\` \u2014 full detail; use it before
296
- resuming or completing a task.
292
+ resuming, submitting or accepting a task.
297
293
  - \`task_list(...)\` \u2014 flat listing with filters (status / priority / type).
298
294
  - \`task_search(keywords)\` \u2014 find by title / description / goals / tags.
299
295
  **Search before creating**, to avoid duplicates.
300
-
301
- ## Where tasks live
302
-
303
- All tasks and operations are persisted by the roy-task-plugin in the
304
- **single** project store \u2014 locally that is SQLite at
305
- \`~/.roy-task-plugin/tasks.db\` (or the remote service when the plugin is
306
- configured with \`persistence: "remote"\`). Do not create side databases, do
307
- not maintain your own to-do list in files, and do not track work in chat only:
308
- if it is not in the task store, it is not tracked.
296
+ - \`task_tree(depth=1)\` \u2014 the task hierarchy; use it to place new work
297
+ under an existing root instead of piling up roots.
309
298
 
310
299
  ## Style
311
300
 
312
301
  - Be direct and concrete; the user is reading task titles and milestones.
313
302
  - Report the task id and its state whenever you finish a step.
314
303
  - If a task is blocked, mark it (\`task_update(status="paused")\`) and record a
315
- \`problem\` milestone explaining the blocker instead of going silent.`,OQ=`
304
+ \`problem\` milestone explaining the blocker instead of going silent.`,VQ=`
316
305
  ## Milestone discipline (Claude runtime)
317
306
 
318
307
  The task card renders **your** milestones. A run that calls tools but
@@ -381,8 +370,8 @@ continue.
381
370
  For a task with 3\u20134 stages you should end up with **3\u20134 hand-written
382
371
  milestones** in the card \u2014 not 2 automatic hooks and nothing else. The
383
372
  automatic \`\u6536\u5230\u6D88\u606F\` / \`Task \u5B8C\u6210\` hooks are not a substitute for yours.
384
- `,MQ=`
385
- ${OQ}
373
+ `,DQ=`
374
+ ${VQ}
386
375
  ## Tool surface on Claude Code
387
376
 
388
377
  The \`task_*\` tools are served by the **\`roy-task\` MCP server** this runtime
@@ -394,7 +383,8 @@ loads. Call them directly:
394
383
  | \`task_create\` | \`mcp__roy-task__task_create\` |
395
384
  | \`task_update\` | \`mcp__roy-task__task_update\` |
396
385
  | \`task_operation_create\` | \`mcp__roy-task__task_operation_create\` |
397
- | \`task_complete\` | \`mcp__roy-task__task_complete\` |
386
+ | \`task_pre_complete\` (submit for acceptance) | \`mcp__roy-task__task_pre_complete\` |
387
+ | \`task_complete\` (accept) | \`mcp__roy-task__task_complete\` |
398
388
  | \`task_get\` | \`mcp__roy-task__task_get\` |
399
389
  | \`task_list\` | \`mcp__roy-task__task_list\` |
400
390
  | \`task_search\` | \`mcp__roy-task__task_search\` |
@@ -406,7 +396,7 @@ progress card renders the task these tools create.
406
396
  Measured: it has no way to write a milestone (its \`operations <id>\` subcommand
407
397
  is a *reader*), and it targets a different database than this server. Use the
408
398
  MCP tools above; if they are genuinely unavailable, say so in your answer
409
- instead of silently skipping the lifecycle.`;var x9="Roy \u2014 task-as-first-class-citizen agent. Uses the roy-agent task lifecycle "+"(task_tree \u2192 task_create \u2192 task_update \u2192 task_operation_create \u2192 task_complete) "+"so every piece of work is tracked in the local task store.",h9=v9;var B2="roy",B7={action:"execute",resource:"*",effect:"deny"};function U7(){return{id:B2,mode:"primary",description:x9,system:h9,permissions:[{...B7}]}}function KQ($,J){if(!Array.isArray($.permissions))$.permissions=[];for(let Q of J)if(!$.permissions.some((W)=>W.action===Q.action&&W.resource===Q.resource&&W.effect===Q.effect))$.permissions.push({...Q})}function y9($){let J=U7();return $.update(B2,(Q)=>{if(Q.mode=J.mode,Q.description=J.description,Q.system=J.system,Q.hidden===void 0)Q.hidden=!1;KQ(Q,J.permissions)}),J}function g9(){return process.env.ROY_TRACE_DEBUG_STORAGE==="1"||process.env.ROY_TRACE_DEBUG==="1"}function V7($){let J=new WeakSet;try{return JSON.stringify($,(Q,X)=>{if(typeof X==="function")return"[Function]";if(X===void 0)return"[undefined]";if(X===null)return null;if(X instanceof Error)return`${X.name}: ${X.message}`;if(typeof X==="object"){if("$typeof"in X||"type"in X&&"props"in X&&"key"in X)return"[ReactElement]";if(J.has(X))return"[Circular]";J.add(X)}if(typeof X==="bigint")return X.toString();return X})}catch(Q){return`[Unserializable: ${Q instanceof Error?Q.message:String(Q)}]`}}function RQ(){if(typeof Bun<"u"){let{Database:$}=e("bun:sqlite");return $}try{let{DatabaseSync:$}=e("node:sqlite");if(typeof $==="function")return $}catch{}return e("better-sqlite3")}function LQ($){let Q=new(RQ())($);if(typeof Q.run!=="function")Q.run=function(X,...W){if(W.length>0)return this.prepare(X).run(...W);else return this.exec(X)};return Q}class k9{db=null;dbPath;initialized=!1;constructor($){if(!$)throw Error("SQLiteSpanStorage requires a valid dbPath parameter");if($===":memory:")throw Error("SQLiteSpanStorage does not support :memory: mode. Use a file path instead.");this.dbPath=$}async initialize(){if(this.initialized)return;let $=e("fs"),Q=e("path").dirname(this.dbPath);if(!$.existsSync(Q))$.mkdirSync(Q,{recursive:!0});this.db=LQ(this.dbPath),this.db.run("PRAGMA journal_mode=WAL"),this.db.run("PRAGMA busy_timeout=5000"),this.db.run("PRAGMA synchronous=NORMAL"),this.db.run(`
399
+ instead of silently skipping the lifecycle.`;var x9="Roy \u2014 task-as-first-class-citizen agent. Uses the roy-agent task lifecycle "+"(task_tree \u2192 task_create \u2192 task_update \u2192 task_operation_create \u2192 "+"task_pre_complete \u2192 task_complete) "+"so every piece of work is tracked in the local task store.",h9=v9;var U2="roy",B7={action:"execute",resource:"*",effect:"deny"};function U7(){return{id:U2,mode:"primary",description:x9,system:h9,permissions:[{...B7}]}}function FQ($,J){if(!Array.isArray($.permissions))$.permissions=[];for(let Q of J)if(!$.permissions.some((Y)=>Y.action===Q.action&&Y.resource===Q.resource&&Y.effect===Q.effect))$.permissions.push({...Q})}function y9($){let J=U7();return $.update(U2,(Q)=>{if(Q.mode=J.mode,Q.description=J.description,Q.system=J.system,Q.hidden===void 0)Q.hidden=!1;FQ(Q,J.permissions)}),J}import{createRequire as MQ}from"module";var{defineProperty:g9,getOwnPropertyNames:OQ,getOwnPropertyDescriptor:KQ}=Object,RQ=Object.prototype.hasOwnProperty;function LQ($){return this[$]}var f$=($)=>{var J=(V7??=new WeakMap).get($),Q;if(J)return J;if(J=g9({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var X of OQ($))if(!RQ.call(J,X))g9(J,X,{get:LQ.bind($,X),enumerable:!(Q=KQ($,X))||Q.enumerable})}return V7.set($,J),J},V7,jQ=($)=>$;function NQ($,J){this[$]=jQ.bind(null,J)}var r0=($,J)=>{for(var Q in J)g9($,Q,{get:J[Q],enumerable:!0,configurable:!0,set:NQ.bind(J,Q)})},k=function($,J,Q,X){var Y=arguments.length,G=Y<3?J:X===null?X=Object.getOwnPropertyDescriptor(J,Q):X,q;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")G=Reflect.decorate($,J,Q,X);else for(var W=$.length-1;W>=0;W--)if(q=$[W])G=(Y<3?q(G):Y>3?q(J,Q,G):q(J,Q))||G;return Y>3&&G&&Object.defineProperty(J,Q,G),G},a=($,J)=>()=>($&&(J=$($=0)),J),e=MQ(import.meta.url);function k9(){return process.env.ROY_TRACE_DEBUG_STORAGE==="1"||process.env.ROY_TRACE_DEBUG==="1"}function D7($){let J=new WeakSet;try{return JSON.stringify($,(Q,X)=>{if(typeof X==="function")return"[Function]";if(X===void 0)return"[undefined]";if(X===null)return null;if(X instanceof Error)return`${X.name}: ${X.message}`;if(typeof X==="object"){if("$typeof"in X||"type"in X&&"props"in X&&"key"in X)return"[ReactElement]";if(J.has(X))return"[Circular]";J.add(X)}if(typeof X==="bigint")return X.toString();return X})}catch(Q){return`[Unserializable: ${Q instanceof Error?Q.message:String(Q)}]`}}function _Q(){if(typeof Bun<"u"){let{Database:$}=e("bun:sqlite");return $}try{let{DatabaseSync:$}=e("node:sqlite");if(typeof $==="function")return $}catch{}return e("better-sqlite3")}function AQ($){let Q=new(_Q())($);if(typeof Q.run!=="function")Q.run=function(X,...Y){if(Y.length>0)return this.prepare(X).run(...Y);else return this.exec(X)};return Q}class m9{db=null;dbPath;initialized=!1;constructor($){if(!$)throw Error("SQLiteSpanStorage requires a valid dbPath parameter");if($===":memory:")throw Error("SQLiteSpanStorage does not support :memory: mode. Use a file path instead.");this.dbPath=$}async initialize(){if(this.initialized)return;let $=e("fs"),Q=e("path").dirname(this.dbPath);if(!$.existsSync(Q))$.mkdirSync(Q,{recursive:!0});this.db=AQ(this.dbPath),this.db.run("PRAGMA journal_mode=WAL"),this.db.run("PRAGMA busy_timeout=5000"),this.db.run("PRAGMA synchronous=NORMAL"),this.db.run(`
410
400
  CREATE TABLE IF NOT EXISTS span (
411
401
  span_id TEXT PRIMARY KEY,
412
402
  trace_id TEXT NOT NULL,
@@ -421,11 +411,11 @@ instead of silently skipping the lifecycle.`;var x9="Roy \u2014 task-as-first-cl
421
411
  error TEXT,
422
412
  time_created INTEGER NOT NULL
423
413
  )
424
- `),this.db.run("CREATE INDEX IF NOT EXISTS idx_span_trace ON span(trace_id)"),this.db.run("CREATE INDEX IF NOT EXISTS idx_span_parent ON span(parent_span_id)"),this.initialized=!0}save($){if(!this.db){if(g9())console.log(`[SpanStorage] save() skipped: db not initialized for span "${$.name}" traceId=${$.traceId}`);return}let J=this.db.prepare(`
414
+ `),this.db.run("CREATE INDEX IF NOT EXISTS idx_span_trace ON span(trace_id)"),this.db.run("CREATE INDEX IF NOT EXISTS idx_span_parent ON span(parent_span_id)"),this.initialized=!0}save($){if(!this.db){if(k9())console.log(`[SpanStorage] save() skipped: db not initialized for span "${$.name}" traceId=${$.traceId}`);return}let J=this.db.prepare(`
425
415
  INSERT OR REPLACE INTO span
426
416
  (span_id, trace_id, parent_span_id, name, kind, status, start_time, end_time, attributes, result, error, time_created)
427
417
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
428
- `),Q=$.result!==void 0&&$.result!==null?typeof $.result==="string"?$.result:V7($.result):null;if(g9())console.log(`[SpanStorage] Saving to "${this.dbPath}": name="${$.name}" traceId=${$.traceId} spanId=${$.spanId} status=${$.status}`);try{let X=J.run($.spanId,$.traceId,$.parentSpanId||null,$.name,$.kind,$.status,$.startTime,$.endTime||null,V7($.attributes),Q,$.error||null,Date.now());if(g9())console.log(`[SpanStorage] Save result: changes=${X?.changes}, lastInsertRowid=${X?.lastInsertRowid}`)}catch(X){console.error("[SpanStorage] Save ERROR:",X)}}saveBatch($){for(let J of $)this.save(J)}findByTraceId($){if(!this.db)return[];let J=this.db.prepare("SELECT * FROM span WHERE trace_id = ?").all($);return this.buildTree(J.map(this.rowToSpan))}findBySpanId($){if(!this.db)return;let J=this.db.prepare("SELECT * FROM span WHERE span_id = ?").get($);return J?this.rowToSpan(J):void 0}listTraces($=10){if(!this.db)return[];return this.db.prepare(`
418
+ `),Q=$.result!==void 0&&$.result!==null?typeof $.result==="string"?$.result:D7($.result):null;if(k9())console.log(`[SpanStorage] Saving to "${this.dbPath}": name="${$.name}" traceId=${$.traceId} spanId=${$.spanId} status=${$.status}`);try{let X=J.run($.spanId,$.traceId,$.parentSpanId||null,$.name,$.kind,$.status,$.startTime,$.endTime||null,D7($.attributes),Q,$.error||null,Date.now());if(k9())console.log(`[SpanStorage] Save result: changes=${X?.changes}, lastInsertRowid=${X?.lastInsertRowid}`)}catch(X){console.error("[SpanStorage] Save ERROR:",X)}}saveBatch($){for(let J of $)this.save(J)}findByTraceId($){if(!this.db)return[];let J=this.db.prepare("SELECT * FROM span WHERE trace_id = ?").all($);return this.buildTree(J.map(this.rowToSpan))}findBySpanId($){if(!this.db)return;let J=this.db.prepare("SELECT * FROM span WHERE span_id = ?").get($);return J?this.rowToSpan(J):void 0}listTraces($=10){if(!this.db)return[];return this.db.prepare(`
429
419
  SELECT trace_id,
430
420
  MIN(start_time) as start_time,
431
421
  MAX(end_time) as end_time,
@@ -440,9 +430,9 @@ instead of silently skipping the lifecycle.`;var x9="Roy \u2014 task-as-first-cl
440
430
  GROUP BY trace_id
441
431
  ORDER BY start_time DESC
442
432
  LIMIT ?
443
- `).all($).map((Q)=>{let X=Number(Q.span_count)||0,W=Number(Q.error_count)||0,G=Q.end_time??void 0,Y=W===0?"ok":W>=X?"error":"mixed";return{traceId:Q.trace_id,rootSpanName:Q.root_name??"unknown",startTime:Q.start_time,endTime:G,duration:G!==void 0?G-Q.start_time:void 0,spanCount:X,status:Y}})}deleteByTraceId($){if(this.db)this.db.prepare("DELETE FROM span WHERE trace_id = ?").run($)}close(){if(this.db)this.db.close(),this.db=null}rowToSpan($){return{traceId:$.trace_id,spanId:$.span_id,parentSpanId:$.parent_span_id,name:$.name,kind:$.kind,status:$.status,startTime:$.start_time,endTime:$.end_time,attributes:$.attributes?JSON.parse($.attributes):{},result:$.result||void 0,error:$.error||void 0}}buildTree($){let J=new Map,Q=[];for(let X of $)J.set(X.spanId,{...X,children:[]});for(let X of J.values())if(X.parentSpanId){let W=J.get(X.parentSpanId);if(W)W.children.push(X);else Q.push(X)}else Q.push(X);return Q}}var z7=()=>{};import{appendFileSync as SQ,existsSync as EQ,mkdirSync as CQ}from"fs";import{join as U2}from"path";import{AsyncLocalStorage as F7}from"async_hooks";function D7($,J){return $.padStart(J,"0")}function m9($){return/^[0-9a-f]+$/i.test($)}function AQ($){let J=D7($.traceId.toLowerCase(),R7),Q=D7($.spanId.toLowerCase(),L7);return[c9,J,Q,jQ].join("-")}function _Q($){if(!$||typeof $!=="string")return;let Q=$.trim().split("-");if(Q.length!==4)return;let[X,W,G,Y]=Q;if(X!==c9){if(X>c9)return}if(W.length!==R7||!m9(W))return;if(G.length!==L7||!m9(G))return;if(Y.length!==NQ||!m9(Y))return;return{traceId:W.toLowerCase(),spanId:G.toLowerCase()}}var c9="00",jQ="01",u9="TRACEPARENT",R7=32,L7=16,NQ=2,i9,ZQ=a(()=>{i9={inject($,J){$[u9]=AQ(J)},extract($){let J=$[u9];if(!J)return;return _Q(J)},getTraceparentHeader(){return u9}}}),wQ,bQ,PQ=a(()=>{(($)=>{$.CLIENT="client",$.SERVER="server",$.INTERNAL="internal"})(wQ||={}),(($)=>{$.OK="ok",$.ERROR="error"})(bQ||={})});function n9($){let J=$.replace(/\\/g,"/"),Q=J.match(/\/\$bunfs\/root\/(.+)$/);if(Q){let Y=Q[1],q=Y.match(/(packages\/[^/]+\/src\/[^/]+\/.+)$/);if(q)return q[1];return Y}let X=J.match(/@roy-agent\+core@file\+([^/]+)\/node_modules\/@roy-agent\/core\/(.+)$/);if(X){let Y=X[1].replace(/\+/g,"/"),q=X[2],H=Y,B=q.startsWith("src/")?q:`src/${q}`;return`${H}/${B}`}let W=J.match(/(packages\/[^/]+\/src\/[^/]+\/.+)$/);if(W)return W[1];let G=["packages/core/src","packages/core","packages"];for(let Y of G){let q=J.indexOf(Y);if(q!==-1)return J.substring(q)}return J}function fQ(){let $=process.env.HOME||process.env.USERPROFILE||"/tmp";try{let J=e("xdg-basedir");if(J.xdgData)return U2(J.xdgData,"roy-agent","logs")}catch{}return U2($,".local","share","roy-agent","logs")}function TQ(){return kQ}function IQ(){if(_0){let J=_0.get("log_trace.logging.level");if(J&&["debug","info","warn","error"].includes(J))return J}let $=process.env.LOG_LEVEL;if($&&["debug","info","warn","error"].includes($))return $;return"info"}function vQ($){if(_0){let X=_0.get("log_trace.logging.levels");if(X&&typeof X==="object"){let G=X[$];if(G&&["debug","info","warn","error"].includes(G))return G}let W=_0.get(`log_trace.logging.levels.${$}`);if(W&&["debug","info","warn","error"].includes(W))return W}let J=`LOG_LEVEL_${$.toUpperCase().replace(/:/g,"_")}`,Q=process.env[J];if(Q&&["debug","info","warn","error"].includes(Q))return Q;return IQ()}function xQ($){if($.startsWith("/"))return!0;if(/^[a-zA-Z]:[/\\]/.test($))return!0;return!1}function hQ($){if($.startsWith("~")){let J=process.env.HOME||process.env.USERPROFILE||"/tmp";return U2(J,$.slice(1))}return $}function yQ(){if(_0){let $=_0.get("log-trace.logging.file");if($)return $}return"app.log"}function gQ(){if(_0){let $=_0.get("log-trace.logging.dir");if($)return $}return fQ()}function r9(){if(_0){let $=_0.get("log-trace.logging.maxOutput");if(typeof $==="number")return $}return}class A7{prefix;constructor($){this.prefix=$}shouldLog($){let J=vQ(this.prefix);return d9[$]>=d9[J]}ensureLogDirectory($){if(!EQ($))try{CQ($,{recursive:!0})}catch(J){console.error("[Logger] Failed to create log directory:",$,J)}}getCallerLocation(){let $=Error.stackTraceLimit;Error.stackTraceLimit=10;let J=Error();Error.captureStackTrace(J,this.formatMessage);let Q=J.stack?.split(`
444
- `)||[];Error.stackTraceLimit=$;for(let X=1;X<Q.length;X++){let W=Q[X];if(W.includes("at ")&&!W.includes("logger.ts")&&!W.includes("formatMessage")){let G=W.match(/at\s+.+\s+\((.+):(\d+):\d+\)/)||W.match(/at\s+(.+):(\d+):\d+/);if(G){let Y=G[1];return{file:this.getRelativePath(Y),line:parseInt(G[2],10)}}}}return null}getRelativePath($){return n9($)}formatMessage($,J,Q){let X=new Date,W=X.toLocaleString("zh-CN",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).replace(/\//g,"-")+"."+String(X.getMilliseconds()).padStart(3,"0"),G=this.prefix?`[${this.prefix}]`:"",Y="";try{let V=V2().getTracer("roy-tracer").getCurrentContext();if(V?.traceId)Y=`[traceId=${V.traceId}]`}catch{}let q="";if(Q&&typeof Q==="object"&&"callerLocation"in Q){let U=Q;q=U.callerLocation?` [${U.callerLocation}]`:"";let{callerLocation:z,...V}=U;Q=Object.keys(V).length>0?V:void 0}else{let U=this.getCallerLocation();if(U)q=` [${U.file}:${U.line}]`}let H=`${W} [${$.toUpperCase()}]${Y}${q}${G} ${J}`;if(Q!==void 0)if(typeof Q==="object")H+=" "+JSON.stringify(Q).replace(/\n/g,"");else H+=" "+String(Q);let B=r9();if(B&&B>0&&H.length>B)H=H.substring(0,B)+" [TRUNCATED]";return H}writeToFile($){try{let J=gQ(),Q=yQ(),X=hQ(J),W=xQ(X)?X:U2(process.cwd(),X);this.ensureLogDirectory(W);let G=U2(W,Q);SQ(G,$+`
445
- `,"utf-8")}catch(J){console.error("[Logger] Failed to write to log file:",J)}}log($,J,Q){if(!this.shouldLog($))return;let X=this.formatMessage($,J,Q);if(this.writeToFile(X),!TQ())if(mQ)console.error(X);else($==="error"?console.error:$==="warn"?console.warn:$==="info"?console.log:console.debug)(X)}debug($,J){this.log("debug",$,J)}info($,J){this.log("info",$,J)}warn($,J){this.log("warn",$,J)}error($,J){this.log("error",$,J)}}function i($){if(!F6.has($))F6.set($,new A7($));return F6.get($)}var _0=null,kQ=!1,mQ=!1;var d9,F6,r=a(()=>{o9(),d9={debug:0,info:1,warn:2,error:3},F6=new Map}),uQ={};i0(uQ,{setTracerProvider:()=>cQ,resetTracerProvider:()=>lQ,getTracerProvider:()=>V2,OTelTracerProvider:()=>s9});function a9(){if(!l9)l9=i("otel-tracer");return l9}function _7(){return process.env.ROY_TRACE_DEBUG_OTEL==="1"||process.env.ROY_TRACE_DEBUG==="1"}function j7($,...J){a9().info($,...J)}function O7($,...J){a9().warn($,...J)}function M7($,...J){a9().error($,...J)}class p9{name;kind;spanContext;attributes={};startTime;endTime;error;storage;parentSpanContext;onEnd;constructor($,J,Q,X,W){this.name=$,this.kind="internal",this.spanContext=J,this.parentSpanContext=X,this.startTime=Date.now(),this.storage=Q,this.onEnd=W}setAttribute($,J){this.attributes[$]=J}addEvent($,J){let Q=this.attributes._events||[];Q.push({name:$,attributes:J}),this.attributes._events=Q}end($,J){if(this.endTime=Date.now(),J)this.error=J.message;let Q=this.endTime-(this.startTime||0);if(_7())j7(`[OTelSpan] Ending span: name="${this.name}" traceId=${this.spanContext.traceId} spanId=${this.spanContext.spanId} duration=${Q}ms status=${J?"ERROR":"OK"}`);let X=this.storage;if(!X)O7(`[OTelSpan] storage is null for "${this.name}", attempting to re-fetch...`),X=V2().getStorage();if(X){if(!(X.db||X.initialized))O7(`[OTelSpan] storage not initialized for "${this.name}", initializing now...`),X.initialize().catch((G)=>{M7("[OTelSpan] Failed to initialize storage:",G)});X.save({traceId:this.spanContext.traceId,spanId:this.spanContext.spanId,parentSpanId:this.spanContext.parentSpanId,name:this.name,kind:this.kind,status:J?"error":"ok",startTime:this.startTime,endTime:this.endTime,attributes:this.attributes,result:$,error:this.error})}else M7(`[OTelSpan] Failed to save span "${this.name}": storage still null after re-fetch`);this.onEnd?.()}}class N7{name;version;storage;get currentContext(){return this.provider.getTracerCurrentContext(this.instanceId)}set currentContext($){this.provider.setTracerCurrentContext(this.instanceId,$)}activeSpans=new Map;onSpanEndCallback;provider;instanceId;constructor($,J,Q,X){this.name=$,this.version=J,this.storage=Q,this.provider=X,this.instanceId=`${$}@${X.instanceId}`}setOnSpanEndCallback($){this.onSpanEndCallback=$}getActiveSpanCount(){return this.activeSpans.size}startSpan($,J){let Q=J?.parent,X=J&&"parent"in J,W=J&&"context"in J,G=this.provider.getGlobalContext(),Y,q,H,B,U;if(W&&J?.context){let V=J.context;q=V.traceId,H=this.generateSpanId(),B=V.spanId,U={traceId:q,spanId:H,parentSpanId:B},this.currentContext={traceId:q,spanId:H,parentSpanId:B};let M=new p9($,U,this.storage,V,()=>this.handleSpanEnd(U.spanId,V.spanId));if(J?.attributes)for(let[F,D]of Object.entries(J.attributes))M.setAttribute(F,D);return this.activeSpans.set(H,M),M}if(X)Y=Q;else if(this.currentContext)Y=this.currentContext;else if(G)Y=G;if(q=Y?.traceId||this.generateTraceId(),H=this.generateSpanId(),X&&Q)B=Q.parentSpanId||Q.spanId;else if(this.currentContext)B=this.currentContext.spanId;else if(G)B=G.spanId;U={traceId:q,spanId:H,parentSpanId:B},this.currentContext={traceId:q,spanId:H,parentSpanId:B};let z=new p9($,U,this.storage,Y,()=>this.handleSpanEnd(U.spanId,Y?.spanId));if(J?.attributes)for(let[V,M]of Object.entries(J.attributes))z.setAttribute(V,M);if(this.activeSpans.set(H,z),_7())j7(`[OTelTracer] \u2713 Span created: name="${$}" traceId=${q} spanId=${H} parentSpanId=${B||"-"}`);return z}injectToEnv($){if(this.currentContext)i9.inject($,this.currentContext)}getCurrentContext(){return this.currentContext}setCurrentContext($){this.currentContext=$}findStackParentSpan($){for(let[,J]of this.activeSpans)if(J.spanContext.parentSpanId===$)return J;return}endSpan($){let J=$.spanContext;this.activeSpans.delete(J.spanId);let Q=this.currentContext?.traceId;if(J.parentSpanId){let W=this.activeSpans.get(J.parentSpanId);if(W){let G={traceId:J.traceId,spanId:W.spanContext.spanId,parentSpanId:W.spanContext.parentSpanId};return this.currentContext=G,G}if(Q){let G={traceId:Q,spanId:J.parentSpanId,parentSpanId:void 0};return this.currentContext=G,G}}let X=this.findStackParentSpan(J.spanId);if(X){let W={traceId:X.spanContext.traceId,spanId:X.spanContext.spanId,parentSpanId:X.spanContext.parentSpanId};return this.currentContext=W,W}this.currentContext=void 0;return}generateTraceId(){let $=Date.now().toString(16).padStart(12,"0"),J=Array.from({length:5},()=>Math.floor(Math.random()*4294967295).toString(16).padStart(8,"0")).join("");return($+J).slice(0,32).padStart(32,"0")}generateSpanId(){return Math.floor(Math.random()*18446744073709552000).toString(16).padStart(16,"0")}handleSpanEnd($,J){if(this.activeSpans.delete($),J){let X=this.activeSpans.get(J);if(X){this.currentContext={traceId:X.spanContext.traceId,spanId:X.spanContext.spanId,parentSpanId:X.spanContext.parentSpanId};return}if(this.currentContext?.traceId){this.currentContext={traceId:this.currentContext.traceId,spanId:J,parentSpanId:void 0};return}}let Q=this.findStackParentSpan($);if(Q){this.currentContext={traceId:Q.spanContext.traceId,spanId:Q.spanContext.spanId,parentSpanId:Q.spanContext.parentSpanId};return}this.currentContext=void 0}}class s9{tracers=new Map;storage;initialized=!1;globalContext;globalContextScope=new F7;tracerContexts=new Map;tracerContextScope=new F7;instanceId;constructor($,J){K7++,this.instanceId=`Provider#${K7}`,this.storage=$||new k9(J||dQ())}async initialize(){if(this.initialized)return;await this.storage.initialize(),this.initialized=!0}isInitialized(){return this.initialized}getGlobalContext(){let $=this.globalContextScope.getStore();if($)return $.value;return this.globalContext}setGlobalContext($){this.globalContext=$}withGlobalContext($,J){let Q=new Map(this.tracerContexts);return this.globalContextScope.run({value:$},()=>this.tracerContextScope.run({contexts:Q},J))}runInGlobalContextSync($,J){let Q=new Map(this.tracerContexts);return this.globalContextScope.run({value:$},()=>this.tracerContextScope.run({contexts:Q},J))}getTracerCurrentContext($){let J=this.tracerContextScope.getStore();if(J)return J.contexts.get($);return this.tracerContexts.get($)}setTracerCurrentContext($,J){let Q=this.tracerContextScope.getStore();if(Q){Q.contexts.set($,J);return}this.tracerContexts.set($,J)}clearAllTracerCurrentContexts(){let $=this.tracerContextScope.getStore();if($){$.contexts.clear();return}this.tracerContexts.clear()}getTracer($,J){let Q=`${$}@${J||"0.0.0"}`,X=this.tracers.get(Q);if(!X){if(X=new N7($,J,this.storage,this),this.tracers.set(Q,X),this.initialized)this.restoreFromEnv(X)}return X}restoreFromEnv($){let J=i9.extract(process.env);if(J)$.setCurrentContext({traceId:J.traceId,spanId:J.spanId,parentSpanId:void 0})}shutdown(){for(let $ of this.tracers.values());this.tracers.clear(),this.storage.close(),this.initialized=!1,this.globalContext=void 0,delete process.env.TRACEPARENT,delete process.env.TRACE_ID,delete process.env.LOG_TRACE_REQUEST_ID}getStorage(){return this.storage}}function V2(){if(!k0)k0=new s9;return k0}function lQ(){if(k0)k0.shutdown(),k0=null}function cQ($){if(k0)k0.shutdown();k0=$}function dQ(){let $=e("os"),J=e("path"),Q=$.homedir(),X=process.env.XDG_DATA_HOME||J.join(Q,".local","share");return J.join(X,"roy-agent","traces.db")}var l9=null,k0=null,K7=0,o9=a(()=>{z7(),ZQ(),PQ(),r()});var K={};t1(K,{void:()=>SX,util:()=>l,unknown:()=>bX,union:()=>TX,undefined:()=>NX,tuple:()=>xX,transformer:()=>pX,symbol:()=>jX,string:()=>T7,strictObject:()=>fX,setErrorMap:()=>nQ,set:()=>gX,record:()=>hX,quotelessJson:()=>pQ,promise:()=>dX,preprocess:()=>rX,pipeline:()=>aX,ostring:()=>sX,optional:()=>iX,onumber:()=>oX,oboolean:()=>tX,objectUtil:()=>t9,object:()=>CX,number:()=>I7,nullable:()=>nX,null:()=>ZX,never:()=>PX,nativeEnum:()=>cX,nan:()=>LX,map:()=>yX,makeIssue:()=>z2,literal:()=>uX,lazy:()=>mX,late:()=>KX,isValid:()=>n0,isDirty:()=>M6,isAsync:()=>C$,isAborted:()=>O6,intersection:()=>vX,instanceof:()=>RX,getParsedType:()=>T0,getErrorMap:()=>E$,function:()=>kX,enum:()=>lX,effect:()=>pX,discriminatedUnion:()=>IX,defaultErrorMap:()=>m0,datetimeRegex:()=>E7,date:()=>_X,custom:()=>f7,coerce:()=>eX,boolean:()=>v7,bigint:()=>AX,array:()=>EX,any:()=>wX,addIssueToContext:()=>S,ZodVoid:()=>F2,ZodUnknown:()=>r0,ZodUnion:()=>h$,ZodUndefined:()=>v$,ZodType:()=>k,ZodTuple:()=>v0,ZodTransformer:()=>b0,ZodSymbol:()=>D2,ZodString:()=>j0,ZodSet:()=>D$,ZodSchema:()=>k,ZodRecord:()=>O2,ZodReadonly:()=>c$,ZodPromise:()=>F$,ZodPipeline:()=>R2,ZodParsedType:()=>b,ZodOptional:()=>Z0,ZodObject:()=>$0,ZodNumber:()=>a0,ZodNullable:()=>l0,ZodNull:()=>x$,ZodNever:()=>I0,ZodNativeEnum:()=>m$,ZodNaN:()=>K2,ZodMap:()=>M2,ZodLiteral:()=>k$,ZodLazy:()=>g$,ZodIssueCode:()=>A,ZodIntersection:()=>y$,ZodFunction:()=>T$,ZodFirstPartyTypeKind:()=>j,ZodError:()=>Y0,ZodEnum:()=>o0,ZodEffects:()=>b0,ZodDiscriminatedUnion:()=>K6,ZodDefault:()=>u$,ZodDate:()=>V$,ZodCatch:()=>l$,ZodBranded:()=>R6,ZodBoolean:()=>I$,ZodBigInt:()=>s0,ZodArray:()=>N0,ZodAny:()=>z$,Schema:()=>k,ParseStatus:()=>q0,OK:()=>B0,NEVER:()=>$W,INVALID:()=>I,EMPTY_PATH:()=>rQ,DIRTY:()=>U$,BRAND:()=>MX});var l;(function($){$.assertEqual=(W)=>{};function J(W){}$.assertIs=J;function Q(W){throw Error()}$.assertNever=Q,$.arrayToEnum=(W)=>{let G={};for(let Y of W)G[Y]=Y;return G},$.getValidEnumValues=(W)=>{let G=$.objectKeys(W).filter((q)=>typeof W[W[q]]!=="number"),Y={};for(let q of G)Y[q]=W[q];return $.objectValues(Y)},$.objectValues=(W)=>{return $.objectKeys(W).map(function(G){return W[G]})},$.objectKeys=typeof Object.keys==="function"?(W)=>Object.keys(W):(W)=>{let G=[];for(let Y in W)if(Object.prototype.hasOwnProperty.call(W,Y))G.push(Y);return G},$.find=(W,G)=>{for(let Y of W)if(G(Y))return Y;return},$.isInteger=typeof Number.isInteger==="function"?(W)=>Number.isInteger(W):(W)=>typeof W==="number"&&Number.isFinite(W)&&Math.floor(W)===W;function X(W,G=" | "){return W.map((Y)=>typeof Y==="string"?`'${Y}'`:Y).join(G)}$.joinValues=X,$.jsonStringifyReplacer=(W,G)=>{if(typeof G==="bigint")return G.toString();return G}})(l||(l={}));var t9;(function($){$.mergeShapes=(J,Q)=>{return{...J,...Q}}})(t9||(t9={}));var b=l.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),T0=($)=>{switch(typeof $){case"undefined":return b.undefined;case"string":return b.string;case"number":return Number.isNaN($)?b.nan:b.number;case"boolean":return b.boolean;case"function":return b.function;case"bigint":return b.bigint;case"symbol":return b.symbol;case"object":if(Array.isArray($))return b.array;if($===null)return b.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return b.promise;if(typeof Map<"u"&&$ instanceof Map)return b.map;if(typeof Set<"u"&&$ instanceof Set)return b.set;if(typeof Date<"u"&&$ instanceof Date)return b.date;return b.object;default:return b.unknown}};var A=l.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),pQ=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class Y0 extends Error{get errors(){return this.issues}constructor($){super();this.issues=[],this.addIssue=(Q)=>{this.issues=[...this.issues,Q]},this.addIssues=(Q=[])=>{this.issues=[...this.issues,...Q]};let J=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,J);else this.__proto__=J;this.name="ZodError",this.issues=$}format($){let J=$||function(W){return W.message},Q={_errors:[]},X=(W)=>{for(let G of W.issues)if(G.code==="invalid_union")G.unionErrors.map(X);else if(G.code==="invalid_return_type")X(G.returnTypeError);else if(G.code==="invalid_arguments")X(G.argumentsError);else if(G.path.length===0)Q._errors.push(J(G));else{let Y=Q,q=0;while(q<G.path.length){let H=G.path[q];if(q!==G.path.length-1)Y[H]=Y[H]||{_errors:[]};else Y[H]=Y[H]||{_errors:[]},Y[H]._errors.push(J(G));Y=Y[H],q++}}};return X(this),Q}static assert($){if(!($ instanceof Y0))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,l.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(J)=>J.message){let J={},Q=[];for(let X of this.issues)if(X.path.length>0){let W=X.path[0];J[W]=J[W]||[],J[W].push($(X))}else Q.push($(X));return{formErrors:Q,fieldErrors:J}}get formErrors(){return this.flatten()}}Y0.create=($)=>{return new Y0($)};var iQ=($,J)=>{let Q;switch($.code){case A.invalid_type:if($.received===b.undefined)Q="Required";else Q=`Expected ${$.expected}, received ${$.received}`;break;case A.invalid_literal:Q=`Invalid literal value, expected ${JSON.stringify($.expected,l.jsonStringifyReplacer)}`;break;case A.unrecognized_keys:Q=`Unrecognized key(s) in object: ${l.joinValues($.keys,", ")}`;break;case A.invalid_union:Q="Invalid input";break;case A.invalid_union_discriminator:Q=`Invalid discriminator value. Expected ${l.joinValues($.options)}`;break;case A.invalid_enum_value:Q=`Invalid enum value. Expected ${l.joinValues($.options)}, received '${$.received}'`;break;case A.invalid_arguments:Q="Invalid function arguments";break;case A.invalid_return_type:Q="Invalid function return type";break;case A.invalid_date:Q="Invalid date";break;case A.invalid_string:if(typeof $.validation==="object")if("includes"in $.validation){if(Q=`Invalid input: must include "${$.validation.includes}"`,typeof $.validation.position==="number")Q=`${Q} at one or more positions greater than or equal to ${$.validation.position}`}else if("startsWith"in $.validation)Q=`Invalid input: must start with "${$.validation.startsWith}"`;else if("endsWith"in $.validation)Q=`Invalid input: must end with "${$.validation.endsWith}"`;else l.assertNever($.validation);else if($.validation!=="regex")Q=`Invalid ${$.validation}`;else Q="Invalid";break;case A.too_small:if($.type==="array")Q=`Array must contain ${$.exact?"exactly":$.inclusive?"at least":"more than"} ${$.minimum} element(s)`;else if($.type==="string")Q=`String must contain ${$.exact?"exactly":$.inclusive?"at least":"over"} ${$.minimum} character(s)`;else if($.type==="number")Q=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="bigint")Q=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="date")Q=`Date must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${new Date(Number($.minimum))}`;else Q="Invalid input";break;case A.too_big:if($.type==="array")Q=`Array must contain ${$.exact?"exactly":$.inclusive?"at most":"less than"} ${$.maximum} element(s)`;else if($.type==="string")Q=`String must contain ${$.exact?"exactly":$.inclusive?"at most":"under"} ${$.maximum} character(s)`;else if($.type==="number")Q=`Number must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="bigint")Q=`BigInt must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="date")Q=`Date must be ${$.exact?"exactly":$.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number($.maximum))}`;else Q="Invalid input";break;case A.custom:Q="Invalid input";break;case A.invalid_intersection_types:Q="Intersection results could not be merged";break;case A.not_multiple_of:Q=`Number must be a multiple of ${$.multipleOf}`;break;case A.not_finite:Q="Number must be finite";break;default:Q=J.defaultError,l.assertNever($)}return{message:Q}},m0=iQ;var Z7=m0;function nQ($){Z7=$}function E$(){return Z7}var z2=($)=>{let{data:J,path:Q,errorMaps:X,issueData:W}=$,G=[...Q,...W.path||[]],Y={...W,path:G};if(W.message!==void 0)return{...W,path:G,message:W.message};let q="",H=X.filter((B)=>!!B).slice().reverse();for(let B of H)q=B(Y,{data:J,defaultError:q}).message;return{...W,path:G,message:q}},rQ=[];function S($,J){let Q=E$(),X=z2({issueData:J,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,Q,Q===m0?void 0:m0].filter((W)=>!!W)});$.common.issues.push(X)}class q0{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray($,J){let Q=[];for(let X of J){if(X.status==="aborted")return I;if(X.status==="dirty")$.dirty();Q.push(X.value)}return{status:$.value,value:Q}}static async mergeObjectAsync($,J){let Q=[];for(let X of J){let W=await X.key,G=await X.value;Q.push({key:W,value:G})}return q0.mergeObjectSync($,Q)}static mergeObjectSync($,J){let Q={};for(let X of J){let{key:W,value:G}=X;if(W.status==="aborted")return I;if(G.status==="aborted")return I;if(W.status==="dirty")$.dirty();if(G.status==="dirty")$.dirty();if(W.value!=="__proto__"&&(typeof G.value<"u"||X.alwaysSet))Q[W.value]=G.value}return{status:$.value,value:Q}}}var I=Object.freeze({status:"aborted"}),U$=($)=>({status:"dirty",value:$}),B0=($)=>({status:"valid",value:$}),O6=($)=>$.status==="aborted",M6=($)=>$.status==="dirty",n0=($)=>$.status==="valid",C$=($)=>typeof Promise<"u"&&$ instanceof Promise;var T;(function($){$.errToObj=(J)=>typeof J==="string"?{message:J}:J||{},$.toString=(J)=>typeof J==="string"?J:J?.message})(T||(T={}));class w0{constructor($,J,Q,X){this._cachedPath=[],this.parent=$,this.data=J,this._path=Q,this._key=X}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var w7=($,J)=>{if(n0(J))return{success:!0,data:J.value};else{if(!$.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let Q=new Y0($.common.issues);return this._error=Q,this._error}}}};function h($){if(!$)return{};let{errorMap:J,invalid_type_error:Q,required_error:X,description:W}=$;if(J&&(Q||X))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(J)return{errorMap:J,description:W};return{errorMap:(Y,q)=>{let{message:H}=$;if(Y.code==="invalid_enum_value")return{message:H??q.defaultError};if(typeof q.data>"u")return{message:H??X??q.defaultError};if(Y.code!=="invalid_type")return{message:q.defaultError};return{message:H??Q??q.defaultError}},description:W}}class k{get description(){return this._def.description}_getType($){return T0($.data)}_getOrReturnCtx($,J){return J||{common:$.parent.common,data:$.data,parsedType:T0($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new q0,ctx:{common:$.parent.common,data:$.data,parsedType:T0($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let J=this._parse($);if(C$(J))throw Error("Synchronous parse encountered promise.");return J}_parseAsync($){let J=this._parse($);return Promise.resolve(J)}parse($,J){let Q=this.safeParse($,J);if(Q.success)return Q.data;throw Q.error}safeParse($,J){let Q={common:{issues:[],async:J?.async??!1,contextualErrorMap:J?.errorMap},path:J?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:T0($)},X=this._parseSync({data:$,path:Q.path,parent:Q});return w7(Q,X)}"~validate"($){let J={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:T0($)};if(!this["~standard"].async)try{let Q=this._parseSync({data:$,path:[],parent:J});return n0(Q)?{value:Q.value}:{issues:J.common.issues}}catch(Q){if(Q?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;J.common={issues:[],async:!0}}return this._parseAsync({data:$,path:[],parent:J}).then((Q)=>n0(Q)?{value:Q.value}:{issues:J.common.issues})}async parseAsync($,J){let Q=await this.safeParseAsync($,J);if(Q.success)return Q.data;throw Q.error}async safeParseAsync($,J){let Q={common:{issues:[],contextualErrorMap:J?.errorMap,async:!0},path:J?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:T0($)},X=this._parse({data:$,path:Q.path,parent:Q}),W=await(C$(X)?X:Promise.resolve(X));return w7(Q,W)}refine($,J){let Q=(X)=>{if(typeof J==="string"||typeof J>"u")return{message:J};else if(typeof J==="function")return J(X);else return J};return this._refinement((X,W)=>{let G=$(X),Y=()=>W.addIssue({code:A.custom,...Q(X)});if(typeof Promise<"u"&&G instanceof Promise)return G.then((q)=>{if(!q)return Y(),!1;else return!0});if(!G)return Y(),!1;else return!0})}refinement($,J){return this._refinement((Q,X)=>{if(!$(Q))return X.addIssue(typeof J==="function"?J(Q,X):J),!1;else return!0})}_refinement($){return new b0({schema:this,typeName:j.ZodEffects,effect:{type:"refinement",refinement:$}})}superRefine($){return this._refinement($)}constructor($){this.spa=this.safeParseAsync,this._def=$,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(J)=>this["~validate"](J)}}optional(){return Z0.create(this,this._def)}nullable(){return l0.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return N0.create(this)}promise(){return F$.create(this,this._def)}or($){return h$.create([this,$],this._def)}and($){return y$.create(this,$,this._def)}transform($){return new b0({...h(this._def),schema:this,typeName:j.ZodEffects,effect:{type:"transform",transform:$}})}default($){let J=typeof $==="function"?$:()=>$;return new u$({...h(this._def),innerType:this,defaultValue:J,typeName:j.ZodDefault})}brand(){return new R6({typeName:j.ZodBranded,type:this,...h(this._def)})}catch($){let J=typeof $==="function"?$:()=>$;return new l$({...h(this._def),innerType:this,catchValue:J,typeName:j.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return R2.create(this,$)}readonly(){return c$.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var aQ=/^c[^\s-]{8,}$/i,sQ=/^[0-9a-z]+$/,oQ=/^[0-9A-HJKMNP-TV-Z]{26}$/i,tQ=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,eQ=/^[a-z0-9_-]{21}$/i,$X=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,JX=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,QX=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,XX="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",e9,WX=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,GX=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,YX=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,qX=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,HX=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,BX=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,P7="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",UX=new RegExp(`^${P7}$`);function S7($){let J="[0-5]\\d";if($.precision)J=`${J}\\.\\d{${$.precision}}`;else if($.precision==null)J=`${J}(\\.\\d+)?`;let Q=$.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${J})${Q}`}function VX($){return new RegExp(`^${S7($)}$`)}function E7($){let J=`${P7}T${S7($)}`,Q=[];if(Q.push($.local?"Z?":"Z"),$.offset)Q.push("([+-]\\d{2}:?\\d{2})");return J=`${J}(${Q.join("|")})`,new RegExp(`^${J}$`)}function zX($,J){if((J==="v4"||!J)&&WX.test($))return!0;if((J==="v6"||!J)&&YX.test($))return!0;return!1}function DX($,J){if(!$X.test($))return!1;try{let[Q]=$.split(".");if(!Q)return!1;let X=Q.replace(/-/g,"+").replace(/_/g,"/").padEnd(Q.length+(4-Q.length%4)%4,"="),W=JSON.parse(atob(X));if(typeof W!=="object"||W===null)return!1;if("typ"in W&&W?.typ!=="JWT")return!1;if(!W.alg)return!1;if(J&&W.alg!==J)return!1;return!0}catch{return!1}}function FX($,J){if((J==="v4"||!J)&&GX.test($))return!0;if((J==="v6"||!J)&&qX.test($))return!0;return!1}class j0 extends k{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==b.string){let W=this._getOrReturnCtx($);return S(W,{code:A.invalid_type,expected:b.string,received:W.parsedType}),I}let Q=new q0,X=void 0;for(let W of this._def.checks)if(W.kind==="min"){if($.data.length<W.value)X=this._getOrReturnCtx($,X),S(X,{code:A.too_small,minimum:W.value,type:"string",inclusive:!0,exact:!1,message:W.message}),Q.dirty()}else if(W.kind==="max"){if($.data.length>W.value)X=this._getOrReturnCtx($,X),S(X,{code:A.too_big,maximum:W.value,type:"string",inclusive:!0,exact:!1,message:W.message}),Q.dirty()}else if(W.kind==="length"){let G=$.data.length>W.value,Y=$.data.length<W.value;if(G||Y){if(X=this._getOrReturnCtx($,X),G)S(X,{code:A.too_big,maximum:W.value,type:"string",inclusive:!0,exact:!0,message:W.message});else if(Y)S(X,{code:A.too_small,minimum:W.value,type:"string",inclusive:!0,exact:!0,message:W.message});Q.dirty()}}else if(W.kind==="email"){if(!QX.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"email",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="emoji"){if(!e9)e9=new RegExp(XX,"u");if(!e9.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"emoji",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="uuid"){if(!tQ.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"uuid",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="nanoid"){if(!eQ.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"nanoid",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="cuid"){if(!aQ.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"cuid",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="cuid2"){if(!sQ.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"cuid2",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="ulid"){if(!oQ.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"ulid",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="url")try{new URL($.data)}catch{X=this._getOrReturnCtx($,X),S(X,{validation:"url",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="regex"){if(W.regex.lastIndex=0,!W.regex.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"regex",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="trim")$.data=$.data.trim();else if(W.kind==="includes"){if(!$.data.includes(W.value,W.position))X=this._getOrReturnCtx($,X),S(X,{code:A.invalid_string,validation:{includes:W.value,position:W.position},message:W.message}),Q.dirty()}else if(W.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(W.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(W.kind==="startsWith"){if(!$.data.startsWith(W.value))X=this._getOrReturnCtx($,X),S(X,{code:A.invalid_string,validation:{startsWith:W.value},message:W.message}),Q.dirty()}else if(W.kind==="endsWith"){if(!$.data.endsWith(W.value))X=this._getOrReturnCtx($,X),S(X,{code:A.invalid_string,validation:{endsWith:W.value},message:W.message}),Q.dirty()}else if(W.kind==="datetime"){if(!E7(W).test($.data))X=this._getOrReturnCtx($,X),S(X,{code:A.invalid_string,validation:"datetime",message:W.message}),Q.dirty()}else if(W.kind==="date"){if(!UX.test($.data))X=this._getOrReturnCtx($,X),S(X,{code:A.invalid_string,validation:"date",message:W.message}),Q.dirty()}else if(W.kind==="time"){if(!VX(W).test($.data))X=this._getOrReturnCtx($,X),S(X,{code:A.invalid_string,validation:"time",message:W.message}),Q.dirty()}else if(W.kind==="duration"){if(!JX.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"duration",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="ip"){if(!zX($.data,W.version))X=this._getOrReturnCtx($,X),S(X,{validation:"ip",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="jwt"){if(!DX($.data,W.alg))X=this._getOrReturnCtx($,X),S(X,{validation:"jwt",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="cidr"){if(!FX($.data,W.version))X=this._getOrReturnCtx($,X),S(X,{validation:"cidr",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="base64"){if(!HX.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"base64",code:A.invalid_string,message:W.message}),Q.dirty()}else if(W.kind==="base64url"){if(!BX.test($.data))X=this._getOrReturnCtx($,X),S(X,{validation:"base64url",code:A.invalid_string,message:W.message}),Q.dirty()}else l.assertNever(W);return{status:Q.value,value:$.data}}_regex($,J,Q){return this.refinement((X)=>$.test(X),{validation:J,code:A.invalid_string,...T.errToObj(Q)})}_addCheck($){return new j0({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...T.errToObj($)})}url($){return this._addCheck({kind:"url",...T.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...T.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...T.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...T.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...T.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...T.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...T.errToObj($)})}base64($){return this._addCheck({kind:"base64",...T.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...T.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...T.errToObj($)})}ip($){return this._addCheck({kind:"ip",...T.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...T.errToObj($)})}datetime($){if(typeof $==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:$});return this._addCheck({kind:"datetime",precision:typeof $?.precision>"u"?null:$?.precision,offset:$?.offset??!1,local:$?.local??!1,...T.errToObj($?.message)})}date($){return this._addCheck({kind:"date",message:$})}time($){if(typeof $==="string")return this._addCheck({kind:"time",precision:null,message:$});return this._addCheck({kind:"time",precision:typeof $?.precision>"u"?null:$?.precision,...T.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...T.errToObj($)})}regex($,J){return this._addCheck({kind:"regex",regex:$,...T.errToObj(J)})}includes($,J){return this._addCheck({kind:"includes",value:$,position:J?.position,...T.errToObj(J?.message)})}startsWith($,J){return this._addCheck({kind:"startsWith",value:$,...T.errToObj(J)})}endsWith($,J){return this._addCheck({kind:"endsWith",value:$,...T.errToObj(J)})}min($,J){return this._addCheck({kind:"min",value:$,...T.errToObj(J)})}max($,J){return this._addCheck({kind:"max",value:$,...T.errToObj(J)})}length($,J){return this._addCheck({kind:"length",value:$,...T.errToObj(J)})}nonempty($){return this.min(1,T.errToObj($))}trim(){return new j0({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new j0({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new j0({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(($)=>$.kind==="datetime")}get isDate(){return!!this._def.checks.find(($)=>$.kind==="date")}get isTime(){return!!this._def.checks.find(($)=>$.kind==="time")}get isDuration(){return!!this._def.checks.find(($)=>$.kind==="duration")}get isEmail(){return!!this._def.checks.find(($)=>$.kind==="email")}get isURL(){return!!this._def.checks.find(($)=>$.kind==="url")}get isEmoji(){return!!this._def.checks.find(($)=>$.kind==="emoji")}get isUUID(){return!!this._def.checks.find(($)=>$.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(($)=>$.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(($)=>$.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(($)=>$.kind==="cuid2")}get isULID(){return!!this._def.checks.find(($)=>$.kind==="ulid")}get isIP(){return!!this._def.checks.find(($)=>$.kind==="ip")}get isCIDR(){return!!this._def.checks.find(($)=>$.kind==="cidr")}get isBase64(){return!!this._def.checks.find(($)=>$.kind==="base64")}get isBase64url(){return!!this._def.checks.find(($)=>$.kind==="base64url")}get minLength(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxLength(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}}j0.create=($)=>{return new j0({checks:[],typeName:j.ZodString,coerce:$?.coerce??!1,...h($)})};function OX($,J){let Q=($.toString().split(".")[1]||"").length,X=(J.toString().split(".")[1]||"").length,W=Q>X?Q:X,G=Number.parseInt($.toFixed(W).replace(".","")),Y=Number.parseInt(J.toFixed(W).replace(".",""));return G%Y/10**W}class a0 extends k{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse($){if(this._def.coerce)$.data=Number($.data);if(this._getType($)!==b.number){let W=this._getOrReturnCtx($);return S(W,{code:A.invalid_type,expected:b.number,received:W.parsedType}),I}let Q=void 0,X=new q0;for(let W of this._def.checks)if(W.kind==="int"){if(!l.isInteger($.data))Q=this._getOrReturnCtx($,Q),S(Q,{code:A.invalid_type,expected:"integer",received:"float",message:W.message}),X.dirty()}else if(W.kind==="min"){if(W.inclusive?$.data<W.value:$.data<=W.value)Q=this._getOrReturnCtx($,Q),S(Q,{code:A.too_small,minimum:W.value,type:"number",inclusive:W.inclusive,exact:!1,message:W.message}),X.dirty()}else if(W.kind==="max"){if(W.inclusive?$.data>W.value:$.data>=W.value)Q=this._getOrReturnCtx($,Q),S(Q,{code:A.too_big,maximum:W.value,type:"number",inclusive:W.inclusive,exact:!1,message:W.message}),X.dirty()}else if(W.kind==="multipleOf"){if(OX($.data,W.value)!==0)Q=this._getOrReturnCtx($,Q),S(Q,{code:A.not_multiple_of,multipleOf:W.value,message:W.message}),X.dirty()}else if(W.kind==="finite"){if(!Number.isFinite($.data))Q=this._getOrReturnCtx($,Q),S(Q,{code:A.not_finite,message:W.message}),X.dirty()}else l.assertNever(W);return{status:X.value,value:$.data}}gte($,J){return this.setLimit("min",$,!0,T.toString(J))}gt($,J){return this.setLimit("min",$,!1,T.toString(J))}lte($,J){return this.setLimit("max",$,!0,T.toString(J))}lt($,J){return this.setLimit("max",$,!1,T.toString(J))}setLimit($,J,Q,X){return new a0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:Q,message:T.toString(X)}]})}_addCheck($){return new a0({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:T.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:T.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:T.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:T.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:T.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:T.toString(J)})}finite($){return this._addCheck({kind:"finite",message:T.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:T.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:T.toString($)})}get minValue(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxValue(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}get isInt(){return!!this._def.checks.find(($)=>$.kind==="int"||$.kind==="multipleOf"&&l.isInteger($.value))}get isFinite(){let $=null,J=null;for(let Q of this._def.checks)if(Q.kind==="finite"||Q.kind==="int"||Q.kind==="multipleOf")return!0;else if(Q.kind==="min"){if(J===null||Q.value>J)J=Q.value}else if(Q.kind==="max"){if($===null||Q.value<$)$=Q.value}return Number.isFinite(J)&&Number.isFinite($)}}a0.create=($)=>{return new a0({checks:[],typeName:j.ZodNumber,coerce:$?.coerce||!1,...h($)})};class s0 extends k{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse($){if(this._def.coerce)try{$.data=BigInt($.data)}catch{return this._getInvalidInput($)}if(this._getType($)!==b.bigint)return this._getInvalidInput($);let Q=void 0,X=new q0;for(let W of this._def.checks)if(W.kind==="min"){if(W.inclusive?$.data<W.value:$.data<=W.value)Q=this._getOrReturnCtx($,Q),S(Q,{code:A.too_small,type:"bigint",minimum:W.value,inclusive:W.inclusive,message:W.message}),X.dirty()}else if(W.kind==="max"){if(W.inclusive?$.data>W.value:$.data>=W.value)Q=this._getOrReturnCtx($,Q),S(Q,{code:A.too_big,type:"bigint",maximum:W.value,inclusive:W.inclusive,message:W.message}),X.dirty()}else if(W.kind==="multipleOf"){if($.data%W.value!==BigInt(0))Q=this._getOrReturnCtx($,Q),S(Q,{code:A.not_multiple_of,multipleOf:W.value,message:W.message}),X.dirty()}else l.assertNever(W);return{status:X.value,value:$.data}}_getInvalidInput($){let J=this._getOrReturnCtx($);return S(J,{code:A.invalid_type,expected:b.bigint,received:J.parsedType}),I}gte($,J){return this.setLimit("min",$,!0,T.toString(J))}gt($,J){return this.setLimit("min",$,!1,T.toString(J))}lte($,J){return this.setLimit("max",$,!0,T.toString(J))}lt($,J){return this.setLimit("max",$,!1,T.toString(J))}setLimit($,J,Q,X){return new s0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:Q,message:T.toString(X)}]})}_addCheck($){return new s0({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:T.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:T.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:T.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:T.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:T.toString(J)})}get minValue(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxValue(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}}s0.create=($)=>{return new s0({checks:[],typeName:j.ZodBigInt,coerce:$?.coerce??!1,...h($)})};class I$ extends k{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==b.boolean){let Q=this._getOrReturnCtx($);return S(Q,{code:A.invalid_type,expected:b.boolean,received:Q.parsedType}),I}return B0($.data)}}I$.create=($)=>{return new I$({typeName:j.ZodBoolean,coerce:$?.coerce||!1,...h($)})};class V$ extends k{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==b.date){let W=this._getOrReturnCtx($);return S(W,{code:A.invalid_type,expected:b.date,received:W.parsedType}),I}if(Number.isNaN($.data.getTime())){let W=this._getOrReturnCtx($);return S(W,{code:A.invalid_date}),I}let Q=new q0,X=void 0;for(let W of this._def.checks)if(W.kind==="min"){if($.data.getTime()<W.value)X=this._getOrReturnCtx($,X),S(X,{code:A.too_small,message:W.message,inclusive:!0,exact:!1,minimum:W.value,type:"date"}),Q.dirty()}else if(W.kind==="max"){if($.data.getTime()>W.value)X=this._getOrReturnCtx($,X),S(X,{code:A.too_big,message:W.message,inclusive:!0,exact:!1,maximum:W.value,type:"date"}),Q.dirty()}else l.assertNever(W);return{status:Q.value,value:new Date($.data.getTime())}}_addCheck($){return new V$({...this._def,checks:[...this._def.checks,$]})}min($,J){return this._addCheck({kind:"min",value:$.getTime(),message:T.toString(J)})}max($,J){return this._addCheck({kind:"max",value:$.getTime(),message:T.toString(J)})}get minDate(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $!=null?new Date($):null}get maxDate(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $!=null?new Date($):null}}V$.create=($)=>{return new V$({checks:[],coerce:$?.coerce||!1,typeName:j.ZodDate,...h($)})};class D2 extends k{_parse($){if(this._getType($)!==b.symbol){let Q=this._getOrReturnCtx($);return S(Q,{code:A.invalid_type,expected:b.symbol,received:Q.parsedType}),I}return B0($.data)}}D2.create=($)=>{return new D2({typeName:j.ZodSymbol,...h($)})};class v$ extends k{_parse($){if(this._getType($)!==b.undefined){let Q=this._getOrReturnCtx($);return S(Q,{code:A.invalid_type,expected:b.undefined,received:Q.parsedType}),I}return B0($.data)}}v$.create=($)=>{return new v$({typeName:j.ZodUndefined,...h($)})};class x$ extends k{_parse($){if(this._getType($)!==b.null){let Q=this._getOrReturnCtx($);return S(Q,{code:A.invalid_type,expected:b.null,received:Q.parsedType}),I}return B0($.data)}}x$.create=($)=>{return new x$({typeName:j.ZodNull,...h($)})};class z$ extends k{constructor(){super(...arguments);this._any=!0}_parse($){return B0($.data)}}z$.create=($)=>{return new z$({typeName:j.ZodAny,...h($)})};class r0 extends k{constructor(){super(...arguments);this._unknown=!0}_parse($){return B0($.data)}}r0.create=($)=>{return new r0({typeName:j.ZodUnknown,...h($)})};class I0 extends k{_parse($){let J=this._getOrReturnCtx($);return S(J,{code:A.invalid_type,expected:b.never,received:J.parsedType}),I}}I0.create=($)=>{return new I0({typeName:j.ZodNever,...h($)})};class F2 extends k{_parse($){if(this._getType($)!==b.undefined){let Q=this._getOrReturnCtx($);return S(Q,{code:A.invalid_type,expected:b.void,received:Q.parsedType}),I}return B0($.data)}}F2.create=($)=>{return new F2({typeName:j.ZodVoid,...h($)})};class N0 extends k{_parse($){let{ctx:J,status:Q}=this._processInputParams($),X=this._def;if(J.parsedType!==b.array)return S(J,{code:A.invalid_type,expected:b.array,received:J.parsedType}),I;if(X.exactLength!==null){let G=J.data.length>X.exactLength.value,Y=J.data.length<X.exactLength.value;if(G||Y)S(J,{code:G?A.too_big:A.too_small,minimum:Y?X.exactLength.value:void 0,maximum:G?X.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:X.exactLength.message}),Q.dirty()}if(X.minLength!==null){if(J.data.length<X.minLength.value)S(J,{code:A.too_small,minimum:X.minLength.value,type:"array",inclusive:!0,exact:!1,message:X.minLength.message}),Q.dirty()}if(X.maxLength!==null){if(J.data.length>X.maxLength.value)S(J,{code:A.too_big,maximum:X.maxLength.value,type:"array",inclusive:!0,exact:!1,message:X.maxLength.message}),Q.dirty()}if(J.common.async)return Promise.all([...J.data].map((G,Y)=>{return X.type._parseAsync(new w0(J,G,J.path,Y))})).then((G)=>{return q0.mergeArray(Q,G)});let W=[...J.data].map((G,Y)=>{return X.type._parseSync(new w0(J,G,J.path,Y))});return q0.mergeArray(Q,W)}get element(){return this._def.type}min($,J){return new N0({...this._def,minLength:{value:$,message:T.toString(J)}})}max($,J){return new N0({...this._def,maxLength:{value:$,message:T.toString(J)}})}length($,J){return new N0({...this._def,exactLength:{value:$,message:T.toString(J)}})}nonempty($){return this.min(1,$)}}N0.create=($,J)=>{return new N0({type:$,minLength:null,maxLength:null,exactLength:null,typeName:j.ZodArray,...h(J)})};function f$($){if($ instanceof $0){let J={};for(let Q in $.shape){let X=$.shape[Q];J[Q]=Z0.create(f$(X))}return new $0({...$._def,shape:()=>J})}else if($ instanceof N0)return new N0({...$._def,type:f$($.element)});else if($ instanceof Z0)return Z0.create(f$($.unwrap()));else if($ instanceof l0)return l0.create(f$($.unwrap()));else if($ instanceof v0)return v0.create($.items.map((J)=>f$(J)));else return $}class $0 extends k{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let $=this._def.shape(),J=l.objectKeys($);return this._cached={shape:$,keys:J},this._cached}_parse($){if(this._getType($)!==b.object){let H=this._getOrReturnCtx($);return S(H,{code:A.invalid_type,expected:b.object,received:H.parsedType}),I}let{status:Q,ctx:X}=this._processInputParams($),{shape:W,keys:G}=this._getCached(),Y=[];if(!(this._def.catchall instanceof I0&&this._def.unknownKeys==="strip")){for(let H in X.data)if(!G.includes(H))Y.push(H)}let q=[];for(let H of G){let B=W[H],U=X.data[H];q.push({key:{status:"valid",value:H},value:B._parse(new w0(X,U,X.path,H)),alwaysSet:H in X.data})}if(this._def.catchall instanceof I0){let H=this._def.unknownKeys;if(H==="passthrough")for(let B of Y)q.push({key:{status:"valid",value:B},value:{status:"valid",value:X.data[B]}});else if(H==="strict"){if(Y.length>0)S(X,{code:A.unrecognized_keys,keys:Y}),Q.dirty()}else if(H==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let H=this._def.catchall;for(let B of Y){let U=X.data[B];q.push({key:{status:"valid",value:B},value:H._parse(new w0(X,U,X.path,B)),alwaysSet:B in X.data})}}if(X.common.async)return Promise.resolve().then(async()=>{let H=[];for(let B of q){let U=await B.key,z=await B.value;H.push({key:U,value:z,alwaysSet:B.alwaysSet})}return H}).then((H)=>{return q0.mergeObjectSync(Q,H)});else return q0.mergeObjectSync(Q,q)}get shape(){return this._def.shape()}strict($){return T.errToObj,new $0({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(J,Q)=>{let X=this._def.errorMap?.(J,Q).message??Q.defaultError;if(J.code==="unrecognized_keys")return{message:T.errToObj($).message??X};return{message:X}}}:{}})}strip(){return new $0({...this._def,unknownKeys:"strip"})}passthrough(){return new $0({...this._def,unknownKeys:"passthrough"})}extend($){return new $0({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new $0({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:j.ZodObject})}setKey($,J){return this.augment({[$]:J})}catchall($){return new $0({...this._def,catchall:$})}pick($){let J={};for(let Q of l.objectKeys($))if($[Q]&&this.shape[Q])J[Q]=this.shape[Q];return new $0({...this._def,shape:()=>J})}omit($){let J={};for(let Q of l.objectKeys(this.shape))if(!$[Q])J[Q]=this.shape[Q];return new $0({...this._def,shape:()=>J})}deepPartial(){return f$(this)}partial($){let J={};for(let Q of l.objectKeys(this.shape)){let X=this.shape[Q];if($&&!$[Q])J[Q]=X;else J[Q]=X.optional()}return new $0({...this._def,shape:()=>J})}required($){let J={};for(let Q of l.objectKeys(this.shape))if($&&!$[Q])J[Q]=this.shape[Q];else{let W=this.shape[Q];while(W instanceof Z0)W=W._def.innerType;J[Q]=W}return new $0({...this._def,shape:()=>J})}keyof(){return C7(l.objectKeys(this.shape))}}$0.create=($,J)=>{return new $0({shape:()=>$,unknownKeys:"strip",catchall:I0.create(),typeName:j.ZodObject,...h(J)})};$0.strictCreate=($,J)=>{return new $0({shape:()=>$,unknownKeys:"strict",catchall:I0.create(),typeName:j.ZodObject,...h(J)})};$0.lazycreate=($,J)=>{return new $0({shape:$,unknownKeys:"strip",catchall:I0.create(),typeName:j.ZodObject,...h(J)})};class h$ extends k{_parse($){let{ctx:J}=this._processInputParams($),Q=this._def.options;function X(W){for(let Y of W)if(Y.result.status==="valid")return Y.result;for(let Y of W)if(Y.result.status==="dirty")return J.common.issues.push(...Y.ctx.common.issues),Y.result;let G=W.map((Y)=>new Y0(Y.ctx.common.issues));return S(J,{code:A.invalid_union,unionErrors:G}),I}if(J.common.async)return Promise.all(Q.map(async(W)=>{let G={...J,common:{...J.common,issues:[]},parent:null};return{result:await W._parseAsync({data:J.data,path:J.path,parent:G}),ctx:G}})).then(X);else{let W=void 0,G=[];for(let q of Q){let H={...J,common:{...J.common,issues:[]},parent:null},B=q._parseSync({data:J.data,path:J.path,parent:H});if(B.status==="valid")return B;else if(B.status==="dirty"&&!W)W={result:B,ctx:H};if(H.common.issues.length)G.push(H.common.issues)}if(W)return J.common.issues.push(...W.ctx.common.issues),W.result;let Y=G.map((q)=>new Y0(q));return S(J,{code:A.invalid_union,unionErrors:Y}),I}}get options(){return this._def.options}}h$.create=($,J)=>{return new h$({options:$,typeName:j.ZodUnion,...h(J)})};var u0=($)=>{if($ instanceof g$)return u0($.schema);else if($ instanceof b0)return u0($.innerType());else if($ instanceof k$)return[$.value];else if($ instanceof o0)return $.options;else if($ instanceof m$)return l.objectValues($.enum);else if($ instanceof u$)return u0($._def.innerType);else if($ instanceof v$)return[void 0];else if($ instanceof x$)return[null];else if($ instanceof Z0)return[void 0,...u0($.unwrap())];else if($ instanceof l0)return[null,...u0($.unwrap())];else if($ instanceof R6)return u0($.unwrap());else if($ instanceof c$)return u0($.unwrap());else if($ instanceof l$)return u0($._def.innerType);else return[]};class K6 extends k{_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==b.object)return S(J,{code:A.invalid_type,expected:b.object,received:J.parsedType}),I;let Q=this.discriminator,X=J.data[Q],W=this.optionsMap.get(X);if(!W)return S(J,{code:A.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[Q]}),I;if(J.common.async)return W._parseAsync({data:J.data,path:J.path,parent:J});else return W._parseSync({data:J.data,path:J.path,parent:J})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create($,J,Q){let X=new Map;for(let W of J){let G=u0(W.shape[$]);if(!G.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let Y of G){if(X.has(Y))throw Error(`Discriminator property ${String($)} has duplicate value ${String(Y)}`);X.set(Y,W)}}return new K6({typeName:j.ZodDiscriminatedUnion,discriminator:$,options:J,optionsMap:X,...h(Q)})}}function $4($,J){let Q=T0($),X=T0(J);if($===J)return{valid:!0,data:$};else if(Q===b.object&&X===b.object){let W=l.objectKeys(J),G=l.objectKeys($).filter((q)=>W.indexOf(q)!==-1),Y={...$,...J};for(let q of G){let H=$4($[q],J[q]);if(!H.valid)return{valid:!1};Y[q]=H.data}return{valid:!0,data:Y}}else if(Q===b.array&&X===b.array){if($.length!==J.length)return{valid:!1};let W=[];for(let G=0;G<$.length;G++){let Y=$[G],q=J[G],H=$4(Y,q);if(!H.valid)return{valid:!1};W.push(H.data)}return{valid:!0,data:W}}else if(Q===b.date&&X===b.date&&+$===+J)return{valid:!0,data:$};else return{valid:!1}}class y$ extends k{_parse($){let{status:J,ctx:Q}=this._processInputParams($),X=(W,G)=>{if(O6(W)||O6(G))return I;let Y=$4(W.value,G.value);if(!Y.valid)return S(Q,{code:A.invalid_intersection_types}),I;if(M6(W)||M6(G))J.dirty();return{status:J.value,value:Y.data}};if(Q.common.async)return Promise.all([this._def.left._parseAsync({data:Q.data,path:Q.path,parent:Q}),this._def.right._parseAsync({data:Q.data,path:Q.path,parent:Q})]).then(([W,G])=>X(W,G));else return X(this._def.left._parseSync({data:Q.data,path:Q.path,parent:Q}),this._def.right._parseSync({data:Q.data,path:Q.path,parent:Q}))}}y$.create=($,J,Q)=>{return new y$({left:$,right:J,typeName:j.ZodIntersection,...h(Q)})};class v0 extends k{_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==b.array)return S(Q,{code:A.invalid_type,expected:b.array,received:Q.parsedType}),I;if(Q.data.length<this._def.items.length)return S(Q,{code:A.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),I;if(!this._def.rest&&Q.data.length>this._def.items.length)S(Q,{code:A.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),J.dirty();let W=[...Q.data].map((G,Y)=>{let q=this._def.items[Y]||this._def.rest;if(!q)return null;return q._parse(new w0(Q,G,Q.path,Y))}).filter((G)=>!!G);if(Q.common.async)return Promise.all(W).then((G)=>{return q0.mergeArray(J,G)});else return q0.mergeArray(J,W)}get items(){return this._def.items}rest($){return new v0({...this._def,rest:$})}}v0.create=($,J)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new v0({items:$,typeName:j.ZodTuple,rest:null,...h(J)})};class O2 extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==b.object)return S(Q,{code:A.invalid_type,expected:b.object,received:Q.parsedType}),I;let X=[],W=this._def.keyType,G=this._def.valueType;for(let Y in Q.data)X.push({key:W._parse(new w0(Q,Y,Q.path,Y)),value:G._parse(new w0(Q,Q.data[Y],Q.path,Y)),alwaysSet:Y in Q.data});if(Q.common.async)return q0.mergeObjectAsync(J,X);else return q0.mergeObjectSync(J,X)}get element(){return this._def.valueType}static create($,J,Q){if(J instanceof k)return new O2({keyType:$,valueType:J,typeName:j.ZodRecord,...h(Q)});return new O2({keyType:j0.create(),valueType:$,typeName:j.ZodRecord,...h(J)})}}class M2 extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==b.map)return S(Q,{code:A.invalid_type,expected:b.map,received:Q.parsedType}),I;let X=this._def.keyType,W=this._def.valueType,G=[...Q.data.entries()].map(([Y,q],H)=>{return{key:X._parse(new w0(Q,Y,Q.path,[H,"key"])),value:W._parse(new w0(Q,q,Q.path,[H,"value"]))}});if(Q.common.async){let Y=new Map;return Promise.resolve().then(async()=>{for(let q of G){let H=await q.key,B=await q.value;if(H.status==="aborted"||B.status==="aborted")return I;if(H.status==="dirty"||B.status==="dirty")J.dirty();Y.set(H.value,B.value)}return{status:J.value,value:Y}})}else{let Y=new Map;for(let q of G){let{key:H,value:B}=q;if(H.status==="aborted"||B.status==="aborted")return I;if(H.status==="dirty"||B.status==="dirty")J.dirty();Y.set(H.value,B.value)}return{status:J.value,value:Y}}}}M2.create=($,J,Q)=>{return new M2({valueType:J,keyType:$,typeName:j.ZodMap,...h(Q)})};class D$ extends k{_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==b.set)return S(Q,{code:A.invalid_type,expected:b.set,received:Q.parsedType}),I;let X=this._def;if(X.minSize!==null){if(Q.data.size<X.minSize.value)S(Q,{code:A.too_small,minimum:X.minSize.value,type:"set",inclusive:!0,exact:!1,message:X.minSize.message}),J.dirty()}if(X.maxSize!==null){if(Q.data.size>X.maxSize.value)S(Q,{code:A.too_big,maximum:X.maxSize.value,type:"set",inclusive:!0,exact:!1,message:X.maxSize.message}),J.dirty()}let W=this._def.valueType;function G(q){let H=new Set;for(let B of q){if(B.status==="aborted")return I;if(B.status==="dirty")J.dirty();H.add(B.value)}return{status:J.value,value:H}}let Y=[...Q.data.values()].map((q,H)=>W._parse(new w0(Q,q,Q.path,H)));if(Q.common.async)return Promise.all(Y).then((q)=>G(q));else return G(Y)}min($,J){return new D$({...this._def,minSize:{value:$,message:T.toString(J)}})}max($,J){return new D$({...this._def,maxSize:{value:$,message:T.toString(J)}})}size($,J){return this.min($,J).max($,J)}nonempty($){return this.min(1,$)}}D$.create=($,J)=>{return new D$({valueType:$,minSize:null,maxSize:null,typeName:j.ZodSet,...h(J)})};class T$ extends k{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==b.function)return S(J,{code:A.invalid_type,expected:b.function,received:J.parsedType}),I;function Q(Y,q){return z2({data:Y,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,E$(),m0].filter((H)=>!!H),issueData:{code:A.invalid_arguments,argumentsError:q}})}function X(Y,q){return z2({data:Y,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,E$(),m0].filter((H)=>!!H),issueData:{code:A.invalid_return_type,returnTypeError:q}})}let W={errorMap:J.common.contextualErrorMap},G=J.data;if(this._def.returns instanceof F$){let Y=this;return B0(async function(...q){let H=new Y0([]),B=await Y._def.args.parseAsync(q,W).catch((V)=>{throw H.addIssue(Q(q,V)),H}),U=await Reflect.apply(G,this,B);return await Y._def.returns._def.type.parseAsync(U,W).catch((V)=>{throw H.addIssue(X(U,V)),H})})}else{let Y=this;return B0(function(...q){let H=Y._def.args.safeParse(q,W);if(!H.success)throw new Y0([Q(q,H.error)]);let B=Reflect.apply(G,this,H.data),U=Y._def.returns.safeParse(B,W);if(!U.success)throw new Y0([X(B,U.error)]);return U.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new T$({...this._def,args:v0.create($).rest(r0.create())})}returns($){return new T$({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,J,Q){return new T$({args:$?$:v0.create([]).rest(r0.create()),returns:J||r0.create(),typeName:j.ZodFunction,...h(Q)})}}class g$ extends k{get schema(){return this._def.getter()}_parse($){let{ctx:J}=this._processInputParams($);return this._def.getter()._parse({data:J.data,path:J.path,parent:J})}}g$.create=($,J)=>{return new g$({getter:$,typeName:j.ZodLazy,...h(J)})};class k$ extends k{_parse($){if($.data!==this._def.value){let J=this._getOrReturnCtx($);return S(J,{received:J.data,code:A.invalid_literal,expected:this._def.value}),I}return{status:"valid",value:$.data}}get value(){return this._def.value}}k$.create=($,J)=>{return new k$({value:$,typeName:j.ZodLiteral,...h(J)})};function C7($,J){return new o0({values:$,typeName:j.ZodEnum,...h(J)})}class o0 extends k{_parse($){if(typeof $.data!=="string"){let J=this._getOrReturnCtx($),Q=this._def.values;return S(J,{expected:l.joinValues(Q),received:J.parsedType,code:A.invalid_type}),I}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let J=this._getOrReturnCtx($),Q=this._def.values;return S(J,{received:J.data,code:A.invalid_enum_value,options:Q}),I}return B0($.data)}get options(){return this._def.values}get enum(){let $={};for(let J of this._def.values)$[J]=J;return $}get Values(){let $={};for(let J of this._def.values)$[J]=J;return $}get Enum(){let $={};for(let J of this._def.values)$[J]=J;return $}extract($,J=this._def){return o0.create($,{...this._def,...J})}exclude($,J=this._def){return o0.create(this.options.filter((Q)=>!$.includes(Q)),{...this._def,...J})}}o0.create=C7;class m$ extends k{_parse($){let J=l.getValidEnumValues(this._def.values),Q=this._getOrReturnCtx($);if(Q.parsedType!==b.string&&Q.parsedType!==b.number){let X=l.objectValues(J);return S(Q,{expected:l.joinValues(X),received:Q.parsedType,code:A.invalid_type}),I}if(!this._cache)this._cache=new Set(l.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let X=l.objectValues(J);return S(Q,{received:Q.data,code:A.invalid_enum_value,options:X}),I}return B0($.data)}get enum(){return this._def.values}}m$.create=($,J)=>{return new m$({values:$,typeName:j.ZodNativeEnum,...h(J)})};class F$ extends k{unwrap(){return this._def.type}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==b.promise&&J.common.async===!1)return S(J,{code:A.invalid_type,expected:b.promise,received:J.parsedType}),I;let Q=J.parsedType===b.promise?J.data:Promise.resolve(J.data);return B0(Q.then((X)=>{return this._def.type.parseAsync(X,{path:J.path,errorMap:J.common.contextualErrorMap})}))}}F$.create=($,J)=>{return new F$({type:$,typeName:j.ZodPromise,...h(J)})};class b0 extends k{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===j.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:J,ctx:Q}=this._processInputParams($),X=this._def.effect||null,W={addIssue:(G)=>{if(S(Q,G),G.fatal)J.abort();else J.dirty()},get path(){return Q.path}};if(W.addIssue=W.addIssue.bind(W),X.type==="preprocess"){let G=X.transform(Q.data,W);if(Q.common.async)return Promise.resolve(G).then(async(Y)=>{if(J.value==="aborted")return I;let q=await this._def.schema._parseAsync({data:Y,path:Q.path,parent:Q});if(q.status==="aborted")return I;if(q.status==="dirty")return U$(q.value);if(J.value==="dirty")return U$(q.value);return q});else{if(J.value==="aborted")return I;let Y=this._def.schema._parseSync({data:G,path:Q.path,parent:Q});if(Y.status==="aborted")return I;if(Y.status==="dirty")return U$(Y.value);if(J.value==="dirty")return U$(Y.value);return Y}}if(X.type==="refinement"){let G=(Y)=>{let q=X.refinement(Y,W);if(Q.common.async)return Promise.resolve(q);if(q instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return Y};if(Q.common.async===!1){let Y=this._def.schema._parseSync({data:Q.data,path:Q.path,parent:Q});if(Y.status==="aborted")return I;if(Y.status==="dirty")J.dirty();return G(Y.value),{status:J.value,value:Y.value}}else return this._def.schema._parseAsync({data:Q.data,path:Q.path,parent:Q}).then((Y)=>{if(Y.status==="aborted")return I;if(Y.status==="dirty")J.dirty();return G(Y.value).then(()=>{return{status:J.value,value:Y.value}})})}if(X.type==="transform")if(Q.common.async===!1){let G=this._def.schema._parseSync({data:Q.data,path:Q.path,parent:Q});if(!n0(G))return I;let Y=X.transform(G.value,W);if(Y instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:J.value,value:Y}}else return this._def.schema._parseAsync({data:Q.data,path:Q.path,parent:Q}).then((G)=>{if(!n0(G))return I;return Promise.resolve(X.transform(G.value,W)).then((Y)=>({status:J.value,value:Y}))});l.assertNever(X)}}b0.create=($,J,Q)=>{return new b0({schema:$,typeName:j.ZodEffects,effect:J,...h(Q)})};b0.createWithPreprocess=($,J,Q)=>{return new b0({schema:J,effect:{type:"preprocess",transform:$},typeName:j.ZodEffects,...h(Q)})};class Z0 extends k{_parse($){if(this._getType($)===b.undefined)return B0(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}Z0.create=($,J)=>{return new Z0({innerType:$,typeName:j.ZodOptional,...h(J)})};class l0 extends k{_parse($){if(this._getType($)===b.null)return B0(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}l0.create=($,J)=>{return new l0({innerType:$,typeName:j.ZodNullable,...h(J)})};class u$ extends k{_parse($){let{ctx:J}=this._processInputParams($),Q=J.data;if(J.parsedType===b.undefined)Q=this._def.defaultValue();return this._def.innerType._parse({data:Q,path:J.path,parent:J})}removeDefault(){return this._def.innerType}}u$.create=($,J)=>{return new u$({innerType:$,typeName:j.ZodDefault,defaultValue:typeof J.default==="function"?J.default:()=>J.default,...h(J)})};class l$ extends k{_parse($){let{ctx:J}=this._processInputParams($),Q={...J,common:{...J.common,issues:[]}},X=this._def.innerType._parse({data:Q.data,path:Q.path,parent:{...Q}});if(C$(X))return X.then((W)=>{return{status:"valid",value:W.status==="valid"?W.value:this._def.catchValue({get error(){return new Y0(Q.common.issues)},input:Q.data})}});else return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new Y0(Q.common.issues)},input:Q.data})}}removeCatch(){return this._def.innerType}}l$.create=($,J)=>{return new l$({innerType:$,typeName:j.ZodCatch,catchValue:typeof J.catch==="function"?J.catch:()=>J.catch,...h(J)})};class K2 extends k{_parse($){if(this._getType($)!==b.nan){let Q=this._getOrReturnCtx($);return S(Q,{code:A.invalid_type,expected:b.nan,received:Q.parsedType}),I}return{status:"valid",value:$.data}}}K2.create=($)=>{return new K2({typeName:j.ZodNaN,...h($)})};var MX=Symbol("zod_brand");class R6 extends k{_parse($){let{ctx:J}=this._processInputParams($),Q=J.data;return this._def.type._parse({data:Q,path:J.path,parent:J})}unwrap(){return this._def.type}}class R2 extends k{_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.common.async)return(async()=>{let W=await this._def.in._parseAsync({data:Q.data,path:Q.path,parent:Q});if(W.status==="aborted")return I;if(W.status==="dirty")return J.dirty(),U$(W.value);else return this._def.out._parseAsync({data:W.value,path:Q.path,parent:Q})})();else{let X=this._def.in._parseSync({data:Q.data,path:Q.path,parent:Q});if(X.status==="aborted")return I;if(X.status==="dirty")return J.dirty(),{status:"dirty",value:X.value};else return this._def.out._parseSync({data:X.value,path:Q.path,parent:Q})}}static create($,J){return new R2({in:$,out:J,typeName:j.ZodPipeline})}}class c$ extends k{_parse($){let J=this._def.innerType._parse($),Q=(X)=>{if(n0(X))X.value=Object.freeze(X.value);return X};return C$(J)?J.then((X)=>Q(X)):Q(J)}unwrap(){return this._def.innerType}}c$.create=($,J)=>{return new c$({innerType:$,typeName:j.ZodReadonly,...h(J)})};function b7($,J){let Q=typeof $==="function"?$(J):typeof $==="string"?{message:$}:$;return typeof Q==="string"?{message:Q}:Q}function f7($,J={},Q){if($)return z$.create().superRefine((X,W)=>{let G=$(X);if(G instanceof Promise)return G.then((Y)=>{if(!Y){let q=b7(J,X),H=q.fatal??Q??!0;W.addIssue({code:"custom",...q,fatal:H})}});if(!G){let Y=b7(J,X),q=Y.fatal??Q??!0;W.addIssue({code:"custom",...Y,fatal:q})}return});return z$.create()}var KX={object:$0.lazycreate},j;(function($){$.ZodString="ZodString",$.ZodNumber="ZodNumber",$.ZodNaN="ZodNaN",$.ZodBigInt="ZodBigInt",$.ZodBoolean="ZodBoolean",$.ZodDate="ZodDate",$.ZodSymbol="ZodSymbol",$.ZodUndefined="ZodUndefined",$.ZodNull="ZodNull",$.ZodAny="ZodAny",$.ZodUnknown="ZodUnknown",$.ZodNever="ZodNever",$.ZodVoid="ZodVoid",$.ZodArray="ZodArray",$.ZodObject="ZodObject",$.ZodUnion="ZodUnion",$.ZodDiscriminatedUnion="ZodDiscriminatedUnion",$.ZodIntersection="ZodIntersection",$.ZodTuple="ZodTuple",$.ZodRecord="ZodRecord",$.ZodMap="ZodMap",$.ZodSet="ZodSet",$.ZodFunction="ZodFunction",$.ZodLazy="ZodLazy",$.ZodLiteral="ZodLiteral",$.ZodEnum="ZodEnum",$.ZodEffects="ZodEffects",$.ZodNativeEnum="ZodNativeEnum",$.ZodOptional="ZodOptional",$.ZodNullable="ZodNullable",$.ZodDefault="ZodDefault",$.ZodCatch="ZodCatch",$.ZodPromise="ZodPromise",$.ZodBranded="ZodBranded",$.ZodPipeline="ZodPipeline",$.ZodReadonly="ZodReadonly"})(j||(j={}));var RX=($,J={message:`Input not instance of ${$.name}`})=>f7((Q)=>Q instanceof $,J),T7=j0.create,I7=a0.create,LX=K2.create,AX=s0.create,v7=I$.create,_X=V$.create,jX=D2.create,NX=v$.create,ZX=x$.create,wX=z$.create,bX=r0.create,PX=I0.create,SX=F2.create,EX=N0.create,CX=$0.create,fX=$0.strictCreate,TX=h$.create,IX=K6.create,vX=y$.create,xX=v0.create,hX=O2.create,yX=M2.create,gX=D$.create,kX=T$.create,mX=g$.create,uX=k$.create,lX=o0.create,cX=m$.create,dX=F$.create,pX=b0.create,iX=Z0.create,nX=l0.create,rX=b0.createWithPreprocess,aX=R2.create,sX=()=>T7().optional(),oX=()=>I7().optional(),tX=()=>v7().optional(),eX={string:($)=>j0.create({...$,coerce:!0}),number:($)=>a0.create({...$,coerce:!0}),boolean:($)=>I$.create({...$,coerce:!0}),bigint:($)=>s0.create({...$,coerce:!0}),date:($)=>V$.create({...$,coerce:!0})};var $W=I;var J4=K.object({bgProcessId:K.string().min(1,"bgProcessId must not be empty").describe("The background process ID returned by delegate_task (format: process_<timestamp>_<random>).")});function JW($){return{alive:$.status==="pending"||$.status==="running",status:$.status,createdAt:$.createdAt,lastUpdatedAt:$.lastUpdatedAt??$.completedAt??$.startedAt??$.createdAt,description:$.description,...$.result!==void 0?{result:$.result}:{},...$.error!==void 0?{error:$.error}:{}}}function x7($){let J=Date.now();return{alive:!1,status:"not_found",createdAt:J,lastUpdatedAt:J,description:`No background process found with id '${$}'.`}}var $K={name:"query_background_process",description:`Query the status of a background process previously launched via delegate_task.
433
+ `).all($).map((Q)=>{let X=Number(Q.span_count)||0,Y=Number(Q.error_count)||0,G=Q.end_time??void 0,q=Y===0?"ok":Y>=X?"error":"mixed";return{traceId:Q.trace_id,rootSpanName:Q.root_name??"unknown",startTime:Q.start_time,endTime:G,duration:G!==void 0?G-Q.start_time:void 0,spanCount:X,status:q}})}deleteByTraceId($){if(this.db)this.db.prepare("DELETE FROM span WHERE trace_id = ?").run($)}close(){if(this.db)this.db.close(),this.db=null}rowToSpan($){return{traceId:$.trace_id,spanId:$.span_id,parentSpanId:$.parent_span_id,name:$.name,kind:$.kind,status:$.status,startTime:$.start_time,endTime:$.end_time,attributes:$.attributes?JSON.parse($.attributes):{},result:$.result||void 0,error:$.error||void 0}}buildTree($){let J=new Map,Q=[];for(let X of $)J.set(X.spanId,{...X,children:[]});for(let X of J.values())if(X.parentSpanId){let Y=J.get(X.parentSpanId);if(Y)Y.children.push(X);else Q.push(X)}else Q.push(X);return Q}}var F7=()=>{};import{appendFileSync as IQ,existsSync as TQ,mkdirSync as vQ}from"fs";import{join as V2}from"path";import{AsyncLocalStorage as O7}from"async_hooks";function M7($,J){return $.padStart(J,"0")}function u9($){return/^[0-9a-f]+$/i.test($)}function ZQ($){let J=M7($.traceId.toLowerCase(),j7),Q=M7($.spanId.toLowerCase(),N7);return[p9,J,Q,PQ].join("-")}function wQ($){if(!$||typeof $!=="string")return;let Q=$.trim().split("-");if(Q.length!==4)return;let[X,Y,G,q]=Q;if(X!==p9){if(X>p9)return}if(Y.length!==j7||!u9(Y))return;if(G.length!==N7||!u9(G))return;if(q.length!==bQ||!u9(q))return;return{traceId:Y.toLowerCase(),spanId:G.toLowerCase()}}var p9="00",PQ="01",l9="TRACEPARENT",j7=32,N7=16,bQ=2,n9,EQ=a(()=>{n9={inject($,J){$[l9]=ZQ(J)},extract($){let J=$[l9];if(!J)return;return wQ(J)},getTraceparentHeader(){return l9}}}),SQ,CQ,fQ=a(()=>{(($)=>{$.CLIENT="client",$.SERVER="server",$.INTERNAL="internal"})(SQ||={}),(($)=>{$.OK="ok",$.ERROR="error"})(CQ||={})});function r9($){let J=$.replace(/\\/g,"/"),Q=J.match(/\/\$bunfs\/root\/(.+)$/);if(Q){let q=Q[1],W=q.match(/(packages\/[^/]+\/src\/[^/]+\/.+)$/);if(W)return W[1];return q}let X=J.match(/@roy-agent\+core@file\+([^/]+)\/node_modules\/@roy-agent\/core\/(.+)$/);if(X){let q=X[1].replace(/\+/g,"/"),W=X[2],z=q,H=W.startsWith("src/")?W:`src/${W}`;return`${z}/${H}`}let Y=J.match(/(packages\/[^/]+\/src\/[^/]+\/.+)$/);if(Y)return Y[1];let G=["packages/core/src","packages/core","packages"];for(let q of G){let W=J.indexOf(q);if(W!==-1)return J.substring(W)}return J}function xQ(){let $=process.env.HOME||process.env.USERPROFILE||"/tmp";try{let J=e("xdg-basedir");if(J.xdgData)return V2(J.xdgData,"roy-agent","logs")}catch{}return V2($,".local","share","roy-agent","logs")}function hQ(){return cQ}function yQ(){if(N0){let J=N0.get("log_trace.logging.level");if(J&&["debug","info","warn","error"].includes(J))return J}let $=process.env.LOG_LEVEL;if($&&["debug","info","warn","error"].includes($))return $;return"info"}function gQ($){if(N0){let X=N0.get("log_trace.logging.levels");if(X&&typeof X==="object"){let G=X[$];if(G&&["debug","info","warn","error"].includes(G))return G}let Y=N0.get(`log_trace.logging.levels.${$}`);if(Y&&["debug","info","warn","error"].includes(Y))return Y}let J=`LOG_LEVEL_${$.toUpperCase().replace(/:/g,"_")}`,Q=process.env[J];if(Q&&["debug","info","warn","error"].includes(Q))return Q;return yQ()}function kQ($){if($.startsWith("/"))return!0;if(/^[a-zA-Z]:[/\\]/.test($))return!0;return!1}function mQ($){if($.startsWith("~")){let J=process.env.HOME||process.env.USERPROFILE||"/tmp";return V2(J,$.slice(1))}return $}function uQ(){if(N0){let $=N0.get("log-trace.logging.file");if($)return $}return"app.log"}function lQ(){if(N0){let $=N0.get("log-trace.logging.dir");if($)return $}return xQ()}function a9(){if(N0){let $=N0.get("log-trace.logging.maxOutput");if(typeof $==="number")return $}return}class _7{prefix;constructor($){this.prefix=$}shouldLog($){let J=gQ(this.prefix);return d9[$]>=d9[J]}ensureLogDirectory($){if(!TQ($))try{vQ($,{recursive:!0})}catch(J){console.error("[Logger] Failed to create log directory:",$,J)}}getCallerLocation(){let $=Error.stackTraceLimit;Error.stackTraceLimit=10;let J=Error();Error.captureStackTrace(J,this.formatMessage);let Q=J.stack?.split(`
434
+ `)||[];Error.stackTraceLimit=$;for(let X=1;X<Q.length;X++){let Y=Q[X];if(Y.includes("at ")&&!Y.includes("logger.ts")&&!Y.includes("formatMessage")){let G=Y.match(/at\s+.+\s+\((.+):(\d+):\d+\)/)||Y.match(/at\s+(.+):(\d+):\d+/);if(G){let q=G[1];return{file:this.getRelativePath(q),line:parseInt(G[2],10)}}}}return null}getRelativePath($){return r9($)}formatMessage($,J,Q){let X=new Date,Y=X.toLocaleString("zh-CN",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).replace(/\//g,"-")+"."+String(X.getMilliseconds()).padStart(3,"0"),G=this.prefix?`[${this.prefix}]`:"",q="";try{let V=D2().getTracer("roy-tracer").getCurrentContext();if(V?.traceId)q=`[traceId=${V.traceId}]`}catch{}let W="";if(Q&&typeof Q==="object"&&"callerLocation"in Q){let B=Q;W=B.callerLocation?` [${B.callerLocation}]`:"";let{callerLocation:U,...V}=B;Q=Object.keys(V).length>0?V:void 0}else{let B=this.getCallerLocation();if(B)W=` [${B.file}:${B.line}]`}let z=`${Y} [${$.toUpperCase()}]${q}${W}${G} ${J}`;if(Q!==void 0)if(typeof Q==="object")z+=" "+JSON.stringify(Q).replace(/\n/g,"");else z+=" "+String(Q);let H=a9();if(H&&H>0&&z.length>H)z=z.substring(0,H)+" [TRUNCATED]";return z}writeToFile($){try{let J=lQ(),Q=uQ(),X=mQ(J),Y=kQ(X)?X:V2(process.cwd(),X);this.ensureLogDirectory(Y);let G=V2(Y,Q);IQ(G,$+`
435
+ `,"utf-8")}catch(J){console.error("[Logger] Failed to write to log file:",J)}}log($,J,Q){if(!this.shouldLog($))return;let X=this.formatMessage($,J,Q);if(this.writeToFile(X),!hQ())if(pQ)console.error(X);else($==="error"?console.error:$==="warn"?console.warn:$==="info"?console.log:console.debug)(X)}debug($,J){this.log("debug",$,J)}info($,J){this.log("info",$,J)}warn($,J){this.log("warn",$,J)}error($,J){this.log("error",$,J)}}function i($){if(!O6.has($))O6.set($,new _7($));return O6.get($)}var N0=null,cQ=!1,pQ=!1;var d9,O6,n=a(()=>{t9(),d9={debug:0,info:1,warn:2,error:3},O6=new Map}),dQ={};r0(dQ,{setTracerProvider:()=>nQ,resetTracerProvider:()=>iQ,getTracerProvider:()=>D2,OTelTracerProvider:()=>o9});function s9(){if(!c9)c9=i("otel-tracer");return c9}function A7(){return process.env.ROY_TRACE_DEBUG_OTEL==="1"||process.env.ROY_TRACE_DEBUG==="1"}function Z7($,...J){s9().info($,...J)}function K7($,...J){s9().warn($,...J)}function R7($,...J){s9().error($,...J)}class i9{name;kind;spanContext;attributes={};startTime;endTime;error;storage;parentSpanContext;onEnd;constructor($,J,Q,X,Y){this.name=$,this.kind="internal",this.spanContext=J,this.parentSpanContext=X,this.startTime=Date.now(),this.storage=Q,this.onEnd=Y}setAttribute($,J){this.attributes[$]=J}addEvent($,J){let Q=this.attributes._events||[];Q.push({name:$,attributes:J}),this.attributes._events=Q}end($,J){if(this.endTime=Date.now(),J)this.error=J.message;let Q=this.endTime-(this.startTime||0);if(A7())Z7(`[OTelSpan] Ending span: name="${this.name}" traceId=${this.spanContext.traceId} spanId=${this.spanContext.spanId} duration=${Q}ms status=${J?"ERROR":"OK"}`);let X=this.storage;if(!X)K7(`[OTelSpan] storage is null for "${this.name}", attempting to re-fetch...`),X=D2().getStorage();if(X){if(!(X.db||X.initialized))K7(`[OTelSpan] storage not initialized for "${this.name}", initializing now...`),X.initialize().catch((G)=>{R7("[OTelSpan] Failed to initialize storage:",G)});X.save({traceId:this.spanContext.traceId,spanId:this.spanContext.spanId,parentSpanId:this.spanContext.parentSpanId,name:this.name,kind:this.kind,status:J?"error":"ok",startTime:this.startTime,endTime:this.endTime,attributes:this.attributes,result:$,error:this.error})}else R7(`[OTelSpan] Failed to save span "${this.name}": storage still null after re-fetch`);this.onEnd?.()}}class w7{name;version;storage;get currentContext(){return this.provider.getTracerCurrentContext(this.instanceId)}set currentContext($){this.provider.setTracerCurrentContext(this.instanceId,$)}activeSpans=new Map;onSpanEndCallback;provider;instanceId;constructor($,J,Q,X){this.name=$,this.version=J,this.storage=Q,this.provider=X,this.instanceId=`${$}@${X.instanceId}`}setOnSpanEndCallback($){this.onSpanEndCallback=$}getActiveSpanCount(){return this.activeSpans.size}startSpan($,J){let Q=J?.parent,X=J&&"parent"in J,Y=J&&"context"in J,G=this.provider.getGlobalContext(),q,W,z,H,B;if(Y&&J?.context){let V=J.context;W=V.traceId,z=this.generateSpanId(),H=V.spanId,B={traceId:W,spanId:z,parentSpanId:H},this.currentContext={traceId:W,spanId:z,parentSpanId:H};let O=new i9($,B,this.storage,V,()=>this.handleSpanEnd(B.spanId,V.spanId));if(J?.attributes)for(let[F,D]of Object.entries(J.attributes))O.setAttribute(F,D);return this.activeSpans.set(z,O),O}if(X)q=Q;else if(this.currentContext)q=this.currentContext;else if(G)q=G;if(W=q?.traceId||this.generateTraceId(),z=this.generateSpanId(),X&&Q)H=Q.parentSpanId||Q.spanId;else if(this.currentContext)H=this.currentContext.spanId;else if(G)H=G.spanId;B={traceId:W,spanId:z,parentSpanId:H},this.currentContext={traceId:W,spanId:z,parentSpanId:H};let U=new i9($,B,this.storage,q,()=>this.handleSpanEnd(B.spanId,q?.spanId));if(J?.attributes)for(let[V,O]of Object.entries(J.attributes))U.setAttribute(V,O);if(this.activeSpans.set(z,U),A7())Z7(`[OTelTracer] \u2713 Span created: name="${$}" traceId=${W} spanId=${z} parentSpanId=${H||"-"}`);return U}injectToEnv($){if(this.currentContext)n9.inject($,this.currentContext)}getCurrentContext(){return this.currentContext}setCurrentContext($){this.currentContext=$}findStackParentSpan($){for(let[,J]of this.activeSpans)if(J.spanContext.parentSpanId===$)return J;return}endSpan($){let J=$.spanContext;this.activeSpans.delete(J.spanId);let Q=this.currentContext?.traceId;if(J.parentSpanId){let Y=this.activeSpans.get(J.parentSpanId);if(Y){let G={traceId:J.traceId,spanId:Y.spanContext.spanId,parentSpanId:Y.spanContext.parentSpanId};return this.currentContext=G,G}if(Q){let G={traceId:Q,spanId:J.parentSpanId,parentSpanId:void 0};return this.currentContext=G,G}}let X=this.findStackParentSpan(J.spanId);if(X){let Y={traceId:X.spanContext.traceId,spanId:X.spanContext.spanId,parentSpanId:X.spanContext.parentSpanId};return this.currentContext=Y,Y}this.currentContext=void 0;return}generateTraceId(){let $=Date.now().toString(16).padStart(12,"0"),J=Array.from({length:5},()=>Math.floor(Math.random()*4294967295).toString(16).padStart(8,"0")).join("");return($+J).slice(0,32).padStart(32,"0")}generateSpanId(){return Math.floor(Math.random()*18446744073709552000).toString(16).padStart(16,"0")}handleSpanEnd($,J){if(this.activeSpans.delete($),J){let X=this.activeSpans.get(J);if(X){this.currentContext={traceId:X.spanContext.traceId,spanId:X.spanContext.spanId,parentSpanId:X.spanContext.parentSpanId};return}if(this.currentContext?.traceId){this.currentContext={traceId:this.currentContext.traceId,spanId:J,parentSpanId:void 0};return}}let Q=this.findStackParentSpan($);if(Q){this.currentContext={traceId:Q.spanContext.traceId,spanId:Q.spanContext.spanId,parentSpanId:Q.spanContext.parentSpanId};return}this.currentContext=void 0}}class o9{tracers=new Map;storage;initialized=!1;globalContext;globalContextScope=new O7;tracerContexts=new Map;tracerContextScope=new O7;instanceId;constructor($,J){L7++,this.instanceId=`Provider#${L7}`,this.storage=$||new m9(J||rQ())}async initialize(){if(this.initialized)return;await this.storage.initialize(),this.initialized=!0}isInitialized(){return this.initialized}getGlobalContext(){let $=this.globalContextScope.getStore();if($)return $.value;return this.globalContext}setGlobalContext($){this.globalContext=$}withGlobalContext($,J){let Q=new Map(this.tracerContexts);return this.globalContextScope.run({value:$},()=>this.tracerContextScope.run({contexts:Q},J))}runInGlobalContextSync($,J){let Q=new Map(this.tracerContexts);return this.globalContextScope.run({value:$},()=>this.tracerContextScope.run({contexts:Q},J))}getTracerCurrentContext($){let J=this.tracerContextScope.getStore();if(J)return J.contexts.get($);return this.tracerContexts.get($)}setTracerCurrentContext($,J){let Q=this.tracerContextScope.getStore();if(Q){Q.contexts.set($,J);return}this.tracerContexts.set($,J)}clearAllTracerCurrentContexts(){let $=this.tracerContextScope.getStore();if($){$.contexts.clear();return}this.tracerContexts.clear()}getTracer($,J){let Q=`${$}@${J||"0.0.0"}`,X=this.tracers.get(Q);if(!X){if(X=new w7($,J,this.storage,this),this.tracers.set(Q,X),this.initialized)this.restoreFromEnv(X)}return X}restoreFromEnv($){let J=n9.extract(process.env);if(J)$.setCurrentContext({traceId:J.traceId,spanId:J.spanId,parentSpanId:void 0})}shutdown(){for(let $ of this.tracers.values());this.tracers.clear(),this.storage.close(),this.initialized=!1,this.globalContext=void 0,delete process.env.TRACEPARENT,delete process.env.TRACE_ID,delete process.env.LOG_TRACE_REQUEST_ID}getStorage(){return this.storage}}function D2(){if(!m0)m0=new o9;return m0}function iQ(){if(m0)m0.shutdown(),m0=null}function nQ($){if(m0)m0.shutdown();m0=$}function rQ(){let $=e("os"),J=e("path"),Q=$.homedir(),X=process.env.XDG_DATA_HOME||J.join(Q,".local","share");return J.join(X,"roy-agent","traces.db")}var c9=null,m0=null,L7=0,t9=a(()=>{F7(),EQ(),fQ(),n()});var K={};HQ(K,{void:()=>IX,util:()=>l,unknown:()=>CX,union:()=>hX,undefined:()=>bX,tuple:()=>kX,transformer:()=>aX,symbol:()=>PX,string:()=>v7,strictObject:()=>xX,setErrorMap:()=>oQ,set:()=>lX,record:()=>mX,quotelessJson:()=>aQ,promise:()=>rX,preprocess:()=>tX,pipeline:()=>eX,ostring:()=>$Y,optional:()=>sX,onumber:()=>JY,oboolean:()=>QY,objectUtil:()=>e9,object:()=>vX,number:()=>x7,nullable:()=>oX,null:()=>EX,never:()=>fX,nativeEnum:()=>nX,nan:()=>AX,map:()=>uX,makeIssue:()=>F2,literal:()=>dX,lazy:()=>pX,late:()=>NX,isValid:()=>a0,isDirty:()=>R6,isAsync:()=>T$,isAborted:()=>K6,intersection:()=>gX,instanceof:()=>_X,getParsedType:()=>I0,getErrorMap:()=>I$,function:()=>cX,enum:()=>iX,effect:()=>aX,discriminatedUnion:()=>yX,defaultErrorMap:()=>u0,datetimeRegex:()=>f7,date:()=>wX,custom:()=>T7,coerce:()=>XY,boolean:()=>h7,bigint:()=>ZX,array:()=>TX,any:()=>SX,addIssueToContext:()=>E,ZodVoid:()=>O2,ZodUnknown:()=>s0,ZodUnion:()=>k$,ZodUndefined:()=>y$,ZodType:()=>m,ZodTuple:()=>v0,ZodTransformer:()=>P0,ZodSymbol:()=>M2,ZodString:()=>_0,ZodSet:()=>O$,ZodSchema:()=>m,ZodRecord:()=>K2,ZodReadonly:()=>i$,ZodPromise:()=>K$,ZodPipeline:()=>j2,ZodParsedType:()=>P,ZodOptional:()=>Z0,ZodObject:()=>$0,ZodNumber:()=>o0,ZodNullable:()=>c0,ZodNull:()=>g$,ZodNever:()=>T0,ZodNativeEnum:()=>c$,ZodNaN:()=>L2,ZodMap:()=>R2,ZodLiteral:()=>l$,ZodLazy:()=>u$,ZodIssueCode:()=>j,ZodIntersection:()=>m$,ZodFunction:()=>x$,ZodFirstPartyTypeKind:()=>_,ZodError:()=>q0,ZodEnum:()=>e0,ZodEffects:()=>P0,ZodDiscriminatedUnion:()=>L6,ZodDefault:()=>p$,ZodDate:()=>F$,ZodCatch:()=>d$,ZodBranded:()=>j6,ZodBoolean:()=>h$,ZodBigInt:()=>t0,ZodArray:()=>A0,ZodAny:()=>M$,Schema:()=>m,ParseStatus:()=>W0,OK:()=>H0,NEVER:()=>YY,INVALID:()=>T,EMPTY_PATH:()=>tQ,DIRTY:()=>D$,BRAND:()=>jX});var l;(function($){$.assertEqual=(Y)=>{};function J(Y){}$.assertIs=J;function Q(Y){throw Error()}$.assertNever=Q,$.arrayToEnum=(Y)=>{let G={};for(let q of Y)G[q]=q;return G},$.getValidEnumValues=(Y)=>{let G=$.objectKeys(Y).filter((W)=>typeof Y[Y[W]]!=="number"),q={};for(let W of G)q[W]=Y[W];return $.objectValues(q)},$.objectValues=(Y)=>{return $.objectKeys(Y).map(function(G){return Y[G]})},$.objectKeys=typeof Object.keys==="function"?(Y)=>Object.keys(Y):(Y)=>{let G=[];for(let q in Y)if(Object.prototype.hasOwnProperty.call(Y,q))G.push(q);return G},$.find=(Y,G)=>{for(let q of Y)if(G(q))return q;return},$.isInteger=typeof Number.isInteger==="function"?(Y)=>Number.isInteger(Y):(Y)=>typeof Y==="number"&&Number.isFinite(Y)&&Math.floor(Y)===Y;function X(Y,G=" | "){return Y.map((q)=>typeof q==="string"?`'${q}'`:q).join(G)}$.joinValues=X,$.jsonStringifyReplacer=(Y,G)=>{if(typeof G==="bigint")return G.toString();return G}})(l||(l={}));var e9;(function($){$.mergeShapes=(J,Q)=>{return{...J,...Q}}})(e9||(e9={}));var P=l.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),I0=($)=>{switch(typeof $){case"undefined":return P.undefined;case"string":return P.string;case"number":return Number.isNaN($)?P.nan:P.number;case"boolean":return P.boolean;case"function":return P.function;case"bigint":return P.bigint;case"symbol":return P.symbol;case"object":if(Array.isArray($))return P.array;if($===null)return P.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return P.promise;if(typeof Map<"u"&&$ instanceof Map)return P.map;if(typeof Set<"u"&&$ instanceof Set)return P.set;if(typeof Date<"u"&&$ instanceof Date)return P.date;return P.object;default:return P.unknown}};var j=l.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),aQ=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class q0 extends Error{get errors(){return this.issues}constructor($){super();this.issues=[],this.addIssue=(Q)=>{this.issues=[...this.issues,Q]},this.addIssues=(Q=[])=>{this.issues=[...this.issues,...Q]};let J=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,J);else this.__proto__=J;this.name="ZodError",this.issues=$}format($){let J=$||function(Y){return Y.message},Q={_errors:[]},X=(Y)=>{for(let G of Y.issues)if(G.code==="invalid_union")G.unionErrors.map(X);else if(G.code==="invalid_return_type")X(G.returnTypeError);else if(G.code==="invalid_arguments")X(G.argumentsError);else if(G.path.length===0)Q._errors.push(J(G));else{let q=Q,W=0;while(W<G.path.length){let z=G.path[W];if(W!==G.path.length-1)q[z]=q[z]||{_errors:[]};else q[z]=q[z]||{_errors:[]},q[z]._errors.push(J(G));q=q[z],W++}}};return X(this),Q}static assert($){if(!($ instanceof q0))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,l.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(J)=>J.message){let J={},Q=[];for(let X of this.issues)if(X.path.length>0){let Y=X.path[0];J[Y]=J[Y]||[],J[Y].push($(X))}else Q.push($(X));return{formErrors:Q,fieldErrors:J}}get formErrors(){return this.flatten()}}q0.create=($)=>{return new q0($)};var sQ=($,J)=>{let Q;switch($.code){case j.invalid_type:if($.received===P.undefined)Q="Required";else Q=`Expected ${$.expected}, received ${$.received}`;break;case j.invalid_literal:Q=`Invalid literal value, expected ${JSON.stringify($.expected,l.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:Q=`Unrecognized key(s) in object: ${l.joinValues($.keys,", ")}`;break;case j.invalid_union:Q="Invalid input";break;case j.invalid_union_discriminator:Q=`Invalid discriminator value. Expected ${l.joinValues($.options)}`;break;case j.invalid_enum_value:Q=`Invalid enum value. Expected ${l.joinValues($.options)}, received '${$.received}'`;break;case j.invalid_arguments:Q="Invalid function arguments";break;case j.invalid_return_type:Q="Invalid function return type";break;case j.invalid_date:Q="Invalid date";break;case j.invalid_string:if(typeof $.validation==="object")if("includes"in $.validation){if(Q=`Invalid input: must include "${$.validation.includes}"`,typeof $.validation.position==="number")Q=`${Q} at one or more positions greater than or equal to ${$.validation.position}`}else if("startsWith"in $.validation)Q=`Invalid input: must start with "${$.validation.startsWith}"`;else if("endsWith"in $.validation)Q=`Invalid input: must end with "${$.validation.endsWith}"`;else l.assertNever($.validation);else if($.validation!=="regex")Q=`Invalid ${$.validation}`;else Q="Invalid";break;case j.too_small:if($.type==="array")Q=`Array must contain ${$.exact?"exactly":$.inclusive?"at least":"more than"} ${$.minimum} element(s)`;else if($.type==="string")Q=`String must contain ${$.exact?"exactly":$.inclusive?"at least":"over"} ${$.minimum} character(s)`;else if($.type==="number")Q=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="bigint")Q=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="date")Q=`Date must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${new Date(Number($.minimum))}`;else Q="Invalid input";break;case j.too_big:if($.type==="array")Q=`Array must contain ${$.exact?"exactly":$.inclusive?"at most":"less than"} ${$.maximum} element(s)`;else if($.type==="string")Q=`String must contain ${$.exact?"exactly":$.inclusive?"at most":"under"} ${$.maximum} character(s)`;else if($.type==="number")Q=`Number must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="bigint")Q=`BigInt must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="date")Q=`Date must be ${$.exact?"exactly":$.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number($.maximum))}`;else Q="Invalid input";break;case j.custom:Q="Invalid input";break;case j.invalid_intersection_types:Q="Intersection results could not be merged";break;case j.not_multiple_of:Q=`Number must be a multiple of ${$.multipleOf}`;break;case j.not_finite:Q="Number must be finite";break;default:Q=J.defaultError,l.assertNever($)}return{message:Q}},u0=sQ;var P7=u0;function oQ($){P7=$}function I$(){return P7}var F2=($)=>{let{data:J,path:Q,errorMaps:X,issueData:Y}=$,G=[...Q,...Y.path||[]],q={...Y,path:G};if(Y.message!==void 0)return{...Y,path:G,message:Y.message};let W="",z=X.filter((H)=>!!H).slice().reverse();for(let H of z)W=H(q,{data:J,defaultError:W}).message;return{...Y,path:G,message:W}},tQ=[];function E($,J){let Q=I$(),X=F2({issueData:J,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,Q,Q===u0?void 0:u0].filter((Y)=>!!Y)});$.common.issues.push(X)}class W0{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray($,J){let Q=[];for(let X of J){if(X.status==="aborted")return T;if(X.status==="dirty")$.dirty();Q.push(X.value)}return{status:$.value,value:Q}}static async mergeObjectAsync($,J){let Q=[];for(let X of J){let Y=await X.key,G=await X.value;Q.push({key:Y,value:G})}return W0.mergeObjectSync($,Q)}static mergeObjectSync($,J){let Q={};for(let X of J){let{key:Y,value:G}=X;if(Y.status==="aborted")return T;if(G.status==="aborted")return T;if(Y.status==="dirty")$.dirty();if(G.status==="dirty")$.dirty();if(Y.value!=="__proto__"&&(typeof G.value<"u"||X.alwaysSet))Q[Y.value]=G.value}return{status:$.value,value:Q}}}var T=Object.freeze({status:"aborted"}),D$=($)=>({status:"dirty",value:$}),H0=($)=>({status:"valid",value:$}),K6=($)=>$.status==="aborted",R6=($)=>$.status==="dirty",a0=($)=>$.status==="valid",T$=($)=>typeof Promise<"u"&&$ instanceof Promise;var I;(function($){$.errToObj=(J)=>typeof J==="string"?{message:J}:J||{},$.toString=(J)=>typeof J==="string"?J:J?.message})(I||(I={}));class w0{constructor($,J,Q,X){this._cachedPath=[],this.parent=$,this.data=J,this._path=Q,this._key=X}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var b7=($,J)=>{if(a0(J))return{success:!0,data:J.value};else{if(!$.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let Q=new q0($.common.issues);return this._error=Q,this._error}}}};function h($){if(!$)return{};let{errorMap:J,invalid_type_error:Q,required_error:X,description:Y}=$;if(J&&(Q||X))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(J)return{errorMap:J,description:Y};return{errorMap:(q,W)=>{let{message:z}=$;if(q.code==="invalid_enum_value")return{message:z??W.defaultError};if(typeof W.data>"u")return{message:z??X??W.defaultError};if(q.code!=="invalid_type")return{message:W.defaultError};return{message:z??Q??W.defaultError}},description:Y}}class m{get description(){return this._def.description}_getType($){return I0($.data)}_getOrReturnCtx($,J){return J||{common:$.parent.common,data:$.data,parsedType:I0($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new W0,ctx:{common:$.parent.common,data:$.data,parsedType:I0($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let J=this._parse($);if(T$(J))throw Error("Synchronous parse encountered promise.");return J}_parseAsync($){let J=this._parse($);return Promise.resolve(J)}parse($,J){let Q=this.safeParse($,J);if(Q.success)return Q.data;throw Q.error}safeParse($,J){let Q={common:{issues:[],async:J?.async??!1,contextualErrorMap:J?.errorMap},path:J?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I0($)},X=this._parseSync({data:$,path:Q.path,parent:Q});return b7(Q,X)}"~validate"($){let J={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I0($)};if(!this["~standard"].async)try{let Q=this._parseSync({data:$,path:[],parent:J});return a0(Q)?{value:Q.value}:{issues:J.common.issues}}catch(Q){if(Q?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;J.common={issues:[],async:!0}}return this._parseAsync({data:$,path:[],parent:J}).then((Q)=>a0(Q)?{value:Q.value}:{issues:J.common.issues})}async parseAsync($,J){let Q=await this.safeParseAsync($,J);if(Q.success)return Q.data;throw Q.error}async safeParseAsync($,J){let Q={common:{issues:[],contextualErrorMap:J?.errorMap,async:!0},path:J?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I0($)},X=this._parse({data:$,path:Q.path,parent:Q}),Y=await(T$(X)?X:Promise.resolve(X));return b7(Q,Y)}refine($,J){let Q=(X)=>{if(typeof J==="string"||typeof J>"u")return{message:J};else if(typeof J==="function")return J(X);else return J};return this._refinement((X,Y)=>{let G=$(X),q=()=>Y.addIssue({code:j.custom,...Q(X)});if(typeof Promise<"u"&&G instanceof Promise)return G.then((W)=>{if(!W)return q(),!1;else return!0});if(!G)return q(),!1;else return!0})}refinement($,J){return this._refinement((Q,X)=>{if(!$(Q))return X.addIssue(typeof J==="function"?J(Q,X):J),!1;else return!0})}_refinement($){return new P0({schema:this,typeName:_.ZodEffects,effect:{type:"refinement",refinement:$}})}superRefine($){return this._refinement($)}constructor($){this.spa=this.safeParseAsync,this._def=$,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(J)=>this["~validate"](J)}}optional(){return Z0.create(this,this._def)}nullable(){return c0.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return A0.create(this)}promise(){return K$.create(this,this._def)}or($){return k$.create([this,$],this._def)}and($){return m$.create(this,$,this._def)}transform($){return new P0({...h(this._def),schema:this,typeName:_.ZodEffects,effect:{type:"transform",transform:$}})}default($){let J=typeof $==="function"?$:()=>$;return new p$({...h(this._def),innerType:this,defaultValue:J,typeName:_.ZodDefault})}brand(){return new j6({typeName:_.ZodBranded,type:this,...h(this._def)})}catch($){let J=typeof $==="function"?$:()=>$;return new d$({...h(this._def),innerType:this,catchValue:J,typeName:_.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return j2.create(this,$)}readonly(){return i$.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var eQ=/^c[^\s-]{8,}$/i,$X=/^[0-9a-z]+$/,JX=/^[0-9A-HJKMNP-TV-Z]{26}$/i,QX=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,XX=/^[a-z0-9_-]{21}$/i,YX=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,GX=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,qX=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,WX="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",$4,zX=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,HX=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,BX=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,UX=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,VX=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,DX=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,S7="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",FX=new RegExp(`^${S7}$`);function C7($){let J="[0-5]\\d";if($.precision)J=`${J}\\.\\d{${$.precision}}`;else if($.precision==null)J=`${J}(\\.\\d+)?`;let Q=$.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${J})${Q}`}function MX($){return new RegExp(`^${C7($)}$`)}function f7($){let J=`${S7}T${C7($)}`,Q=[];if(Q.push($.local?"Z?":"Z"),$.offset)Q.push("([+-]\\d{2}:?\\d{2})");return J=`${J}(${Q.join("|")})`,new RegExp(`^${J}$`)}function OX($,J){if((J==="v4"||!J)&&zX.test($))return!0;if((J==="v6"||!J)&&BX.test($))return!0;return!1}function KX($,J){if(!YX.test($))return!1;try{let[Q]=$.split(".");if(!Q)return!1;let X=Q.replace(/-/g,"+").replace(/_/g,"/").padEnd(Q.length+(4-Q.length%4)%4,"="),Y=JSON.parse(atob(X));if(typeof Y!=="object"||Y===null)return!1;if("typ"in Y&&Y?.typ!=="JWT")return!1;if(!Y.alg)return!1;if(J&&Y.alg!==J)return!1;return!0}catch{return!1}}function RX($,J){if((J==="v4"||!J)&&HX.test($))return!0;if((J==="v6"||!J)&&UX.test($))return!0;return!1}class _0 extends m{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==P.string){let Y=this._getOrReturnCtx($);return E(Y,{code:j.invalid_type,expected:P.string,received:Y.parsedType}),T}let Q=new W0,X=void 0;for(let Y of this._def.checks)if(Y.kind==="min"){if($.data.length<Y.value)X=this._getOrReturnCtx($,X),E(X,{code:j.too_small,minimum:Y.value,type:"string",inclusive:!0,exact:!1,message:Y.message}),Q.dirty()}else if(Y.kind==="max"){if($.data.length>Y.value)X=this._getOrReturnCtx($,X),E(X,{code:j.too_big,maximum:Y.value,type:"string",inclusive:!0,exact:!1,message:Y.message}),Q.dirty()}else if(Y.kind==="length"){let G=$.data.length>Y.value,q=$.data.length<Y.value;if(G||q){if(X=this._getOrReturnCtx($,X),G)E(X,{code:j.too_big,maximum:Y.value,type:"string",inclusive:!0,exact:!0,message:Y.message});else if(q)E(X,{code:j.too_small,minimum:Y.value,type:"string",inclusive:!0,exact:!0,message:Y.message});Q.dirty()}}else if(Y.kind==="email"){if(!qX.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"email",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="emoji"){if(!$4)$4=new RegExp(WX,"u");if(!$4.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"emoji",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="uuid"){if(!QX.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"uuid",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="nanoid"){if(!XX.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"nanoid",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="cuid"){if(!eQ.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"cuid",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="cuid2"){if(!$X.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"cuid2",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="ulid"){if(!JX.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"ulid",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="url")try{new URL($.data)}catch{X=this._getOrReturnCtx($,X),E(X,{validation:"url",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="regex"){if(Y.regex.lastIndex=0,!Y.regex.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"regex",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="trim")$.data=$.data.trim();else if(Y.kind==="includes"){if(!$.data.includes(Y.value,Y.position))X=this._getOrReturnCtx($,X),E(X,{code:j.invalid_string,validation:{includes:Y.value,position:Y.position},message:Y.message}),Q.dirty()}else if(Y.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(Y.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(Y.kind==="startsWith"){if(!$.data.startsWith(Y.value))X=this._getOrReturnCtx($,X),E(X,{code:j.invalid_string,validation:{startsWith:Y.value},message:Y.message}),Q.dirty()}else if(Y.kind==="endsWith"){if(!$.data.endsWith(Y.value))X=this._getOrReturnCtx($,X),E(X,{code:j.invalid_string,validation:{endsWith:Y.value},message:Y.message}),Q.dirty()}else if(Y.kind==="datetime"){if(!f7(Y).test($.data))X=this._getOrReturnCtx($,X),E(X,{code:j.invalid_string,validation:"datetime",message:Y.message}),Q.dirty()}else if(Y.kind==="date"){if(!FX.test($.data))X=this._getOrReturnCtx($,X),E(X,{code:j.invalid_string,validation:"date",message:Y.message}),Q.dirty()}else if(Y.kind==="time"){if(!MX(Y).test($.data))X=this._getOrReturnCtx($,X),E(X,{code:j.invalid_string,validation:"time",message:Y.message}),Q.dirty()}else if(Y.kind==="duration"){if(!GX.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"duration",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="ip"){if(!OX($.data,Y.version))X=this._getOrReturnCtx($,X),E(X,{validation:"ip",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="jwt"){if(!KX($.data,Y.alg))X=this._getOrReturnCtx($,X),E(X,{validation:"jwt",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="cidr"){if(!RX($.data,Y.version))X=this._getOrReturnCtx($,X),E(X,{validation:"cidr",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="base64"){if(!VX.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"base64",code:j.invalid_string,message:Y.message}),Q.dirty()}else if(Y.kind==="base64url"){if(!DX.test($.data))X=this._getOrReturnCtx($,X),E(X,{validation:"base64url",code:j.invalid_string,message:Y.message}),Q.dirty()}else l.assertNever(Y);return{status:Q.value,value:$.data}}_regex($,J,Q){return this.refinement((X)=>$.test(X),{validation:J,code:j.invalid_string,...I.errToObj(Q)})}_addCheck($){return new _0({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...I.errToObj($)})}url($){return this._addCheck({kind:"url",...I.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...I.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...I.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...I.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...I.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...I.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...I.errToObj($)})}base64($){return this._addCheck({kind:"base64",...I.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...I.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...I.errToObj($)})}ip($){return this._addCheck({kind:"ip",...I.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...I.errToObj($)})}datetime($){if(typeof $==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:$});return this._addCheck({kind:"datetime",precision:typeof $?.precision>"u"?null:$?.precision,offset:$?.offset??!1,local:$?.local??!1,...I.errToObj($?.message)})}date($){return this._addCheck({kind:"date",message:$})}time($){if(typeof $==="string")return this._addCheck({kind:"time",precision:null,message:$});return this._addCheck({kind:"time",precision:typeof $?.precision>"u"?null:$?.precision,...I.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...I.errToObj($)})}regex($,J){return this._addCheck({kind:"regex",regex:$,...I.errToObj(J)})}includes($,J){return this._addCheck({kind:"includes",value:$,position:J?.position,...I.errToObj(J?.message)})}startsWith($,J){return this._addCheck({kind:"startsWith",value:$,...I.errToObj(J)})}endsWith($,J){return this._addCheck({kind:"endsWith",value:$,...I.errToObj(J)})}min($,J){return this._addCheck({kind:"min",value:$,...I.errToObj(J)})}max($,J){return this._addCheck({kind:"max",value:$,...I.errToObj(J)})}length($,J){return this._addCheck({kind:"length",value:$,...I.errToObj(J)})}nonempty($){return this.min(1,I.errToObj($))}trim(){return new _0({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new _0({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new _0({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(($)=>$.kind==="datetime")}get isDate(){return!!this._def.checks.find(($)=>$.kind==="date")}get isTime(){return!!this._def.checks.find(($)=>$.kind==="time")}get isDuration(){return!!this._def.checks.find(($)=>$.kind==="duration")}get isEmail(){return!!this._def.checks.find(($)=>$.kind==="email")}get isURL(){return!!this._def.checks.find(($)=>$.kind==="url")}get isEmoji(){return!!this._def.checks.find(($)=>$.kind==="emoji")}get isUUID(){return!!this._def.checks.find(($)=>$.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(($)=>$.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(($)=>$.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(($)=>$.kind==="cuid2")}get isULID(){return!!this._def.checks.find(($)=>$.kind==="ulid")}get isIP(){return!!this._def.checks.find(($)=>$.kind==="ip")}get isCIDR(){return!!this._def.checks.find(($)=>$.kind==="cidr")}get isBase64(){return!!this._def.checks.find(($)=>$.kind==="base64")}get isBase64url(){return!!this._def.checks.find(($)=>$.kind==="base64url")}get minLength(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxLength(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}}_0.create=($)=>{return new _0({checks:[],typeName:_.ZodString,coerce:$?.coerce??!1,...h($)})};function LX($,J){let Q=($.toString().split(".")[1]||"").length,X=(J.toString().split(".")[1]||"").length,Y=Q>X?Q:X,G=Number.parseInt($.toFixed(Y).replace(".","")),q=Number.parseInt(J.toFixed(Y).replace(".",""));return G%q/10**Y}class o0 extends m{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse($){if(this._def.coerce)$.data=Number($.data);if(this._getType($)!==P.number){let Y=this._getOrReturnCtx($);return E(Y,{code:j.invalid_type,expected:P.number,received:Y.parsedType}),T}let Q=void 0,X=new W0;for(let Y of this._def.checks)if(Y.kind==="int"){if(!l.isInteger($.data))Q=this._getOrReturnCtx($,Q),E(Q,{code:j.invalid_type,expected:"integer",received:"float",message:Y.message}),X.dirty()}else if(Y.kind==="min"){if(Y.inclusive?$.data<Y.value:$.data<=Y.value)Q=this._getOrReturnCtx($,Q),E(Q,{code:j.too_small,minimum:Y.value,type:"number",inclusive:Y.inclusive,exact:!1,message:Y.message}),X.dirty()}else if(Y.kind==="max"){if(Y.inclusive?$.data>Y.value:$.data>=Y.value)Q=this._getOrReturnCtx($,Q),E(Q,{code:j.too_big,maximum:Y.value,type:"number",inclusive:Y.inclusive,exact:!1,message:Y.message}),X.dirty()}else if(Y.kind==="multipleOf"){if(LX($.data,Y.value)!==0)Q=this._getOrReturnCtx($,Q),E(Q,{code:j.not_multiple_of,multipleOf:Y.value,message:Y.message}),X.dirty()}else if(Y.kind==="finite"){if(!Number.isFinite($.data))Q=this._getOrReturnCtx($,Q),E(Q,{code:j.not_finite,message:Y.message}),X.dirty()}else l.assertNever(Y);return{status:X.value,value:$.data}}gte($,J){return this.setLimit("min",$,!0,I.toString(J))}gt($,J){return this.setLimit("min",$,!1,I.toString(J))}lte($,J){return this.setLimit("max",$,!0,I.toString(J))}lt($,J){return this.setLimit("max",$,!1,I.toString(J))}setLimit($,J,Q,X){return new o0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:Q,message:I.toString(X)}]})}_addCheck($){return new o0({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:I.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:I.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:I.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:I.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:I.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:I.toString(J)})}finite($){return this._addCheck({kind:"finite",message:I.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:I.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:I.toString($)})}get minValue(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxValue(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}get isInt(){return!!this._def.checks.find(($)=>$.kind==="int"||$.kind==="multipleOf"&&l.isInteger($.value))}get isFinite(){let $=null,J=null;for(let Q of this._def.checks)if(Q.kind==="finite"||Q.kind==="int"||Q.kind==="multipleOf")return!0;else if(Q.kind==="min"){if(J===null||Q.value>J)J=Q.value}else if(Q.kind==="max"){if($===null||Q.value<$)$=Q.value}return Number.isFinite(J)&&Number.isFinite($)}}o0.create=($)=>{return new o0({checks:[],typeName:_.ZodNumber,coerce:$?.coerce||!1,...h($)})};class t0 extends m{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse($){if(this._def.coerce)try{$.data=BigInt($.data)}catch{return this._getInvalidInput($)}if(this._getType($)!==P.bigint)return this._getInvalidInput($);let Q=void 0,X=new W0;for(let Y of this._def.checks)if(Y.kind==="min"){if(Y.inclusive?$.data<Y.value:$.data<=Y.value)Q=this._getOrReturnCtx($,Q),E(Q,{code:j.too_small,type:"bigint",minimum:Y.value,inclusive:Y.inclusive,message:Y.message}),X.dirty()}else if(Y.kind==="max"){if(Y.inclusive?$.data>Y.value:$.data>=Y.value)Q=this._getOrReturnCtx($,Q),E(Q,{code:j.too_big,type:"bigint",maximum:Y.value,inclusive:Y.inclusive,message:Y.message}),X.dirty()}else if(Y.kind==="multipleOf"){if($.data%Y.value!==BigInt(0))Q=this._getOrReturnCtx($,Q),E(Q,{code:j.not_multiple_of,multipleOf:Y.value,message:Y.message}),X.dirty()}else l.assertNever(Y);return{status:X.value,value:$.data}}_getInvalidInput($){let J=this._getOrReturnCtx($);return E(J,{code:j.invalid_type,expected:P.bigint,received:J.parsedType}),T}gte($,J){return this.setLimit("min",$,!0,I.toString(J))}gt($,J){return this.setLimit("min",$,!1,I.toString(J))}lte($,J){return this.setLimit("max",$,!0,I.toString(J))}lt($,J){return this.setLimit("max",$,!1,I.toString(J))}setLimit($,J,Q,X){return new t0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:Q,message:I.toString(X)}]})}_addCheck($){return new t0({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:I.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:I.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:I.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:I.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:I.toString(J)})}get minValue(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxValue(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}}t0.create=($)=>{return new t0({checks:[],typeName:_.ZodBigInt,coerce:$?.coerce??!1,...h($)})};class h$ extends m{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==P.boolean){let Q=this._getOrReturnCtx($);return E(Q,{code:j.invalid_type,expected:P.boolean,received:Q.parsedType}),T}return H0($.data)}}h$.create=($)=>{return new h$({typeName:_.ZodBoolean,coerce:$?.coerce||!1,...h($)})};class F$ extends m{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==P.date){let Y=this._getOrReturnCtx($);return E(Y,{code:j.invalid_type,expected:P.date,received:Y.parsedType}),T}if(Number.isNaN($.data.getTime())){let Y=this._getOrReturnCtx($);return E(Y,{code:j.invalid_date}),T}let Q=new W0,X=void 0;for(let Y of this._def.checks)if(Y.kind==="min"){if($.data.getTime()<Y.value)X=this._getOrReturnCtx($,X),E(X,{code:j.too_small,message:Y.message,inclusive:!0,exact:!1,minimum:Y.value,type:"date"}),Q.dirty()}else if(Y.kind==="max"){if($.data.getTime()>Y.value)X=this._getOrReturnCtx($,X),E(X,{code:j.too_big,message:Y.message,inclusive:!0,exact:!1,maximum:Y.value,type:"date"}),Q.dirty()}else l.assertNever(Y);return{status:Q.value,value:new Date($.data.getTime())}}_addCheck($){return new F$({...this._def,checks:[...this._def.checks,$]})}min($,J){return this._addCheck({kind:"min",value:$.getTime(),message:I.toString(J)})}max($,J){return this._addCheck({kind:"max",value:$.getTime(),message:I.toString(J)})}get minDate(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $!=null?new Date($):null}get maxDate(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $!=null?new Date($):null}}F$.create=($)=>{return new F$({checks:[],coerce:$?.coerce||!1,typeName:_.ZodDate,...h($)})};class M2 extends m{_parse($){if(this._getType($)!==P.symbol){let Q=this._getOrReturnCtx($);return E(Q,{code:j.invalid_type,expected:P.symbol,received:Q.parsedType}),T}return H0($.data)}}M2.create=($)=>{return new M2({typeName:_.ZodSymbol,...h($)})};class y$ extends m{_parse($){if(this._getType($)!==P.undefined){let Q=this._getOrReturnCtx($);return E(Q,{code:j.invalid_type,expected:P.undefined,received:Q.parsedType}),T}return H0($.data)}}y$.create=($)=>{return new y$({typeName:_.ZodUndefined,...h($)})};class g$ extends m{_parse($){if(this._getType($)!==P.null){let Q=this._getOrReturnCtx($);return E(Q,{code:j.invalid_type,expected:P.null,received:Q.parsedType}),T}return H0($.data)}}g$.create=($)=>{return new g$({typeName:_.ZodNull,...h($)})};class M$ extends m{constructor(){super(...arguments);this._any=!0}_parse($){return H0($.data)}}M$.create=($)=>{return new M$({typeName:_.ZodAny,...h($)})};class s0 extends m{constructor(){super(...arguments);this._unknown=!0}_parse($){return H0($.data)}}s0.create=($)=>{return new s0({typeName:_.ZodUnknown,...h($)})};class T0 extends m{_parse($){let J=this._getOrReturnCtx($);return E(J,{code:j.invalid_type,expected:P.never,received:J.parsedType}),T}}T0.create=($)=>{return new T0({typeName:_.ZodNever,...h($)})};class O2 extends m{_parse($){if(this._getType($)!==P.undefined){let Q=this._getOrReturnCtx($);return E(Q,{code:j.invalid_type,expected:P.void,received:Q.parsedType}),T}return H0($.data)}}O2.create=($)=>{return new O2({typeName:_.ZodVoid,...h($)})};class A0 extends m{_parse($){let{ctx:J,status:Q}=this._processInputParams($),X=this._def;if(J.parsedType!==P.array)return E(J,{code:j.invalid_type,expected:P.array,received:J.parsedType}),T;if(X.exactLength!==null){let G=J.data.length>X.exactLength.value,q=J.data.length<X.exactLength.value;if(G||q)E(J,{code:G?j.too_big:j.too_small,minimum:q?X.exactLength.value:void 0,maximum:G?X.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:X.exactLength.message}),Q.dirty()}if(X.minLength!==null){if(J.data.length<X.minLength.value)E(J,{code:j.too_small,minimum:X.minLength.value,type:"array",inclusive:!0,exact:!1,message:X.minLength.message}),Q.dirty()}if(X.maxLength!==null){if(J.data.length>X.maxLength.value)E(J,{code:j.too_big,maximum:X.maxLength.value,type:"array",inclusive:!0,exact:!1,message:X.maxLength.message}),Q.dirty()}if(J.common.async)return Promise.all([...J.data].map((G,q)=>{return X.type._parseAsync(new w0(J,G,J.path,q))})).then((G)=>{return W0.mergeArray(Q,G)});let Y=[...J.data].map((G,q)=>{return X.type._parseSync(new w0(J,G,J.path,q))});return W0.mergeArray(Q,Y)}get element(){return this._def.type}min($,J){return new A0({...this._def,minLength:{value:$,message:I.toString(J)}})}max($,J){return new A0({...this._def,maxLength:{value:$,message:I.toString(J)}})}length($,J){return new A0({...this._def,exactLength:{value:$,message:I.toString(J)}})}nonempty($){return this.min(1,$)}}A0.create=($,J)=>{return new A0({type:$,minLength:null,maxLength:null,exactLength:null,typeName:_.ZodArray,...h(J)})};function v$($){if($ instanceof $0){let J={};for(let Q in $.shape){let X=$.shape[Q];J[Q]=Z0.create(v$(X))}return new $0({...$._def,shape:()=>J})}else if($ instanceof A0)return new A0({...$._def,type:v$($.element)});else if($ instanceof Z0)return Z0.create(v$($.unwrap()));else if($ instanceof c0)return c0.create(v$($.unwrap()));else if($ instanceof v0)return v0.create($.items.map((J)=>v$(J)));else return $}class $0 extends m{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let $=this._def.shape(),J=l.objectKeys($);return this._cached={shape:$,keys:J},this._cached}_parse($){if(this._getType($)!==P.object){let z=this._getOrReturnCtx($);return E(z,{code:j.invalid_type,expected:P.object,received:z.parsedType}),T}let{status:Q,ctx:X}=this._processInputParams($),{shape:Y,keys:G}=this._getCached(),q=[];if(!(this._def.catchall instanceof T0&&this._def.unknownKeys==="strip")){for(let z in X.data)if(!G.includes(z))q.push(z)}let W=[];for(let z of G){let H=Y[z],B=X.data[z];W.push({key:{status:"valid",value:z},value:H._parse(new w0(X,B,X.path,z)),alwaysSet:z in X.data})}if(this._def.catchall instanceof T0){let z=this._def.unknownKeys;if(z==="passthrough")for(let H of q)W.push({key:{status:"valid",value:H},value:{status:"valid",value:X.data[H]}});else if(z==="strict"){if(q.length>0)E(X,{code:j.unrecognized_keys,keys:q}),Q.dirty()}else if(z==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let z=this._def.catchall;for(let H of q){let B=X.data[H];W.push({key:{status:"valid",value:H},value:z._parse(new w0(X,B,X.path,H)),alwaysSet:H in X.data})}}if(X.common.async)return Promise.resolve().then(async()=>{let z=[];for(let H of W){let B=await H.key,U=await H.value;z.push({key:B,value:U,alwaysSet:H.alwaysSet})}return z}).then((z)=>{return W0.mergeObjectSync(Q,z)});else return W0.mergeObjectSync(Q,W)}get shape(){return this._def.shape()}strict($){return I.errToObj,new $0({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(J,Q)=>{let X=this._def.errorMap?.(J,Q).message??Q.defaultError;if(J.code==="unrecognized_keys")return{message:I.errToObj($).message??X};return{message:X}}}:{}})}strip(){return new $0({...this._def,unknownKeys:"strip"})}passthrough(){return new $0({...this._def,unknownKeys:"passthrough"})}extend($){return new $0({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new $0({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:_.ZodObject})}setKey($,J){return this.augment({[$]:J})}catchall($){return new $0({...this._def,catchall:$})}pick($){let J={};for(let Q of l.objectKeys($))if($[Q]&&this.shape[Q])J[Q]=this.shape[Q];return new $0({...this._def,shape:()=>J})}omit($){let J={};for(let Q of l.objectKeys(this.shape))if(!$[Q])J[Q]=this.shape[Q];return new $0({...this._def,shape:()=>J})}deepPartial(){return v$(this)}partial($){let J={};for(let Q of l.objectKeys(this.shape)){let X=this.shape[Q];if($&&!$[Q])J[Q]=X;else J[Q]=X.optional()}return new $0({...this._def,shape:()=>J})}required($){let J={};for(let Q of l.objectKeys(this.shape))if($&&!$[Q])J[Q]=this.shape[Q];else{let Y=this.shape[Q];while(Y instanceof Z0)Y=Y._def.innerType;J[Q]=Y}return new $0({...this._def,shape:()=>J})}keyof(){return I7(l.objectKeys(this.shape))}}$0.create=($,J)=>{return new $0({shape:()=>$,unknownKeys:"strip",catchall:T0.create(),typeName:_.ZodObject,...h(J)})};$0.strictCreate=($,J)=>{return new $0({shape:()=>$,unknownKeys:"strict",catchall:T0.create(),typeName:_.ZodObject,...h(J)})};$0.lazycreate=($,J)=>{return new $0({shape:$,unknownKeys:"strip",catchall:T0.create(),typeName:_.ZodObject,...h(J)})};class k$ extends m{_parse($){let{ctx:J}=this._processInputParams($),Q=this._def.options;function X(Y){for(let q of Y)if(q.result.status==="valid")return q.result;for(let q of Y)if(q.result.status==="dirty")return J.common.issues.push(...q.ctx.common.issues),q.result;let G=Y.map((q)=>new q0(q.ctx.common.issues));return E(J,{code:j.invalid_union,unionErrors:G}),T}if(J.common.async)return Promise.all(Q.map(async(Y)=>{let G={...J,common:{...J.common,issues:[]},parent:null};return{result:await Y._parseAsync({data:J.data,path:J.path,parent:G}),ctx:G}})).then(X);else{let Y=void 0,G=[];for(let W of Q){let z={...J,common:{...J.common,issues:[]},parent:null},H=W._parseSync({data:J.data,path:J.path,parent:z});if(H.status==="valid")return H;else if(H.status==="dirty"&&!Y)Y={result:H,ctx:z};if(z.common.issues.length)G.push(z.common.issues)}if(Y)return J.common.issues.push(...Y.ctx.common.issues),Y.result;let q=G.map((W)=>new q0(W));return E(J,{code:j.invalid_union,unionErrors:q}),T}}get options(){return this._def.options}}k$.create=($,J)=>{return new k$({options:$,typeName:_.ZodUnion,...h(J)})};var l0=($)=>{if($ instanceof u$)return l0($.schema);else if($ instanceof P0)return l0($.innerType());else if($ instanceof l$)return[$.value];else if($ instanceof e0)return $.options;else if($ instanceof c$)return l.objectValues($.enum);else if($ instanceof p$)return l0($._def.innerType);else if($ instanceof y$)return[void 0];else if($ instanceof g$)return[null];else if($ instanceof Z0)return[void 0,...l0($.unwrap())];else if($ instanceof c0)return[null,...l0($.unwrap())];else if($ instanceof j6)return l0($.unwrap());else if($ instanceof i$)return l0($.unwrap());else if($ instanceof d$)return l0($._def.innerType);else return[]};class L6 extends m{_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==P.object)return E(J,{code:j.invalid_type,expected:P.object,received:J.parsedType}),T;let Q=this.discriminator,X=J.data[Q],Y=this.optionsMap.get(X);if(!Y)return E(J,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[Q]}),T;if(J.common.async)return Y._parseAsync({data:J.data,path:J.path,parent:J});else return Y._parseSync({data:J.data,path:J.path,parent:J})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create($,J,Q){let X=new Map;for(let Y of J){let G=l0(Y.shape[$]);if(!G.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let q of G){if(X.has(q))throw Error(`Discriminator property ${String($)} has duplicate value ${String(q)}`);X.set(q,Y)}}return new L6({typeName:_.ZodDiscriminatedUnion,discriminator:$,options:J,optionsMap:X,...h(Q)})}}function J4($,J){let Q=I0($),X=I0(J);if($===J)return{valid:!0,data:$};else if(Q===P.object&&X===P.object){let Y=l.objectKeys(J),G=l.objectKeys($).filter((W)=>Y.indexOf(W)!==-1),q={...$,...J};for(let W of G){let z=J4($[W],J[W]);if(!z.valid)return{valid:!1};q[W]=z.data}return{valid:!0,data:q}}else if(Q===P.array&&X===P.array){if($.length!==J.length)return{valid:!1};let Y=[];for(let G=0;G<$.length;G++){let q=$[G],W=J[G],z=J4(q,W);if(!z.valid)return{valid:!1};Y.push(z.data)}return{valid:!0,data:Y}}else if(Q===P.date&&X===P.date&&+$===+J)return{valid:!0,data:$};else return{valid:!1}}class m$ extends m{_parse($){let{status:J,ctx:Q}=this._processInputParams($),X=(Y,G)=>{if(K6(Y)||K6(G))return T;let q=J4(Y.value,G.value);if(!q.valid)return E(Q,{code:j.invalid_intersection_types}),T;if(R6(Y)||R6(G))J.dirty();return{status:J.value,value:q.data}};if(Q.common.async)return Promise.all([this._def.left._parseAsync({data:Q.data,path:Q.path,parent:Q}),this._def.right._parseAsync({data:Q.data,path:Q.path,parent:Q})]).then(([Y,G])=>X(Y,G));else return X(this._def.left._parseSync({data:Q.data,path:Q.path,parent:Q}),this._def.right._parseSync({data:Q.data,path:Q.path,parent:Q}))}}m$.create=($,J,Q)=>{return new m$({left:$,right:J,typeName:_.ZodIntersection,...h(Q)})};class v0 extends m{_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==P.array)return E(Q,{code:j.invalid_type,expected:P.array,received:Q.parsedType}),T;if(Q.data.length<this._def.items.length)return E(Q,{code:j.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),T;if(!this._def.rest&&Q.data.length>this._def.items.length)E(Q,{code:j.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),J.dirty();let Y=[...Q.data].map((G,q)=>{let W=this._def.items[q]||this._def.rest;if(!W)return null;return W._parse(new w0(Q,G,Q.path,q))}).filter((G)=>!!G);if(Q.common.async)return Promise.all(Y).then((G)=>{return W0.mergeArray(J,G)});else return W0.mergeArray(J,Y)}get items(){return this._def.items}rest($){return new v0({...this._def,rest:$})}}v0.create=($,J)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new v0({items:$,typeName:_.ZodTuple,rest:null,...h(J)})};class K2 extends m{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==P.object)return E(Q,{code:j.invalid_type,expected:P.object,received:Q.parsedType}),T;let X=[],Y=this._def.keyType,G=this._def.valueType;for(let q in Q.data)X.push({key:Y._parse(new w0(Q,q,Q.path,q)),value:G._parse(new w0(Q,Q.data[q],Q.path,q)),alwaysSet:q in Q.data});if(Q.common.async)return W0.mergeObjectAsync(J,X);else return W0.mergeObjectSync(J,X)}get element(){return this._def.valueType}static create($,J,Q){if(J instanceof m)return new K2({keyType:$,valueType:J,typeName:_.ZodRecord,...h(Q)});return new K2({keyType:_0.create(),valueType:$,typeName:_.ZodRecord,...h(J)})}}class R2 extends m{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==P.map)return E(Q,{code:j.invalid_type,expected:P.map,received:Q.parsedType}),T;let X=this._def.keyType,Y=this._def.valueType,G=[...Q.data.entries()].map(([q,W],z)=>{return{key:X._parse(new w0(Q,q,Q.path,[z,"key"])),value:Y._parse(new w0(Q,W,Q.path,[z,"value"]))}});if(Q.common.async){let q=new Map;return Promise.resolve().then(async()=>{for(let W of G){let z=await W.key,H=await W.value;if(z.status==="aborted"||H.status==="aborted")return T;if(z.status==="dirty"||H.status==="dirty")J.dirty();q.set(z.value,H.value)}return{status:J.value,value:q}})}else{let q=new Map;for(let W of G){let{key:z,value:H}=W;if(z.status==="aborted"||H.status==="aborted")return T;if(z.status==="dirty"||H.status==="dirty")J.dirty();q.set(z.value,H.value)}return{status:J.value,value:q}}}}R2.create=($,J,Q)=>{return new R2({valueType:J,keyType:$,typeName:_.ZodMap,...h(Q)})};class O$ extends m{_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.parsedType!==P.set)return E(Q,{code:j.invalid_type,expected:P.set,received:Q.parsedType}),T;let X=this._def;if(X.minSize!==null){if(Q.data.size<X.minSize.value)E(Q,{code:j.too_small,minimum:X.minSize.value,type:"set",inclusive:!0,exact:!1,message:X.minSize.message}),J.dirty()}if(X.maxSize!==null){if(Q.data.size>X.maxSize.value)E(Q,{code:j.too_big,maximum:X.maxSize.value,type:"set",inclusive:!0,exact:!1,message:X.maxSize.message}),J.dirty()}let Y=this._def.valueType;function G(W){let z=new Set;for(let H of W){if(H.status==="aborted")return T;if(H.status==="dirty")J.dirty();z.add(H.value)}return{status:J.value,value:z}}let q=[...Q.data.values()].map((W,z)=>Y._parse(new w0(Q,W,Q.path,z)));if(Q.common.async)return Promise.all(q).then((W)=>G(W));else return G(q)}min($,J){return new O$({...this._def,minSize:{value:$,message:I.toString(J)}})}max($,J){return new O$({...this._def,maxSize:{value:$,message:I.toString(J)}})}size($,J){return this.min($,J).max($,J)}nonempty($){return this.min(1,$)}}O$.create=($,J)=>{return new O$({valueType:$,minSize:null,maxSize:null,typeName:_.ZodSet,...h(J)})};class x$ extends m{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==P.function)return E(J,{code:j.invalid_type,expected:P.function,received:J.parsedType}),T;function Q(q,W){return F2({data:q,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,I$(),u0].filter((z)=>!!z),issueData:{code:j.invalid_arguments,argumentsError:W}})}function X(q,W){return F2({data:q,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,I$(),u0].filter((z)=>!!z),issueData:{code:j.invalid_return_type,returnTypeError:W}})}let Y={errorMap:J.common.contextualErrorMap},G=J.data;if(this._def.returns instanceof K$){let q=this;return H0(async function(...W){let z=new q0([]),H=await q._def.args.parseAsync(W,Y).catch((V)=>{throw z.addIssue(Q(W,V)),z}),B=await Reflect.apply(G,this,H);return await q._def.returns._def.type.parseAsync(B,Y).catch((V)=>{throw z.addIssue(X(B,V)),z})})}else{let q=this;return H0(function(...W){let z=q._def.args.safeParse(W,Y);if(!z.success)throw new q0([Q(W,z.error)]);let H=Reflect.apply(G,this,z.data),B=q._def.returns.safeParse(H,Y);if(!B.success)throw new q0([X(H,B.error)]);return B.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new x$({...this._def,args:v0.create($).rest(s0.create())})}returns($){return new x$({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,J,Q){return new x$({args:$?$:v0.create([]).rest(s0.create()),returns:J||s0.create(),typeName:_.ZodFunction,...h(Q)})}}class u$ extends m{get schema(){return this._def.getter()}_parse($){let{ctx:J}=this._processInputParams($);return this._def.getter()._parse({data:J.data,path:J.path,parent:J})}}u$.create=($,J)=>{return new u$({getter:$,typeName:_.ZodLazy,...h(J)})};class l$ extends m{_parse($){if($.data!==this._def.value){let J=this._getOrReturnCtx($);return E(J,{received:J.data,code:j.invalid_literal,expected:this._def.value}),T}return{status:"valid",value:$.data}}get value(){return this._def.value}}l$.create=($,J)=>{return new l$({value:$,typeName:_.ZodLiteral,...h(J)})};function I7($,J){return new e0({values:$,typeName:_.ZodEnum,...h(J)})}class e0 extends m{_parse($){if(typeof $.data!=="string"){let J=this._getOrReturnCtx($),Q=this._def.values;return E(J,{expected:l.joinValues(Q),received:J.parsedType,code:j.invalid_type}),T}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let J=this._getOrReturnCtx($),Q=this._def.values;return E(J,{received:J.data,code:j.invalid_enum_value,options:Q}),T}return H0($.data)}get options(){return this._def.values}get enum(){let $={};for(let J of this._def.values)$[J]=J;return $}get Values(){let $={};for(let J of this._def.values)$[J]=J;return $}get Enum(){let $={};for(let J of this._def.values)$[J]=J;return $}extract($,J=this._def){return e0.create($,{...this._def,...J})}exclude($,J=this._def){return e0.create(this.options.filter((Q)=>!$.includes(Q)),{...this._def,...J})}}e0.create=I7;class c$ extends m{_parse($){let J=l.getValidEnumValues(this._def.values),Q=this._getOrReturnCtx($);if(Q.parsedType!==P.string&&Q.parsedType!==P.number){let X=l.objectValues(J);return E(Q,{expected:l.joinValues(X),received:Q.parsedType,code:j.invalid_type}),T}if(!this._cache)this._cache=new Set(l.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let X=l.objectValues(J);return E(Q,{received:Q.data,code:j.invalid_enum_value,options:X}),T}return H0($.data)}get enum(){return this._def.values}}c$.create=($,J)=>{return new c$({values:$,typeName:_.ZodNativeEnum,...h(J)})};class K$ extends m{unwrap(){return this._def.type}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==P.promise&&J.common.async===!1)return E(J,{code:j.invalid_type,expected:P.promise,received:J.parsedType}),T;let Q=J.parsedType===P.promise?J.data:Promise.resolve(J.data);return H0(Q.then((X)=>{return this._def.type.parseAsync(X,{path:J.path,errorMap:J.common.contextualErrorMap})}))}}K$.create=($,J)=>{return new K$({type:$,typeName:_.ZodPromise,...h(J)})};class P0 extends m{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===_.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:J,ctx:Q}=this._processInputParams($),X=this._def.effect||null,Y={addIssue:(G)=>{if(E(Q,G),G.fatal)J.abort();else J.dirty()},get path(){return Q.path}};if(Y.addIssue=Y.addIssue.bind(Y),X.type==="preprocess"){let G=X.transform(Q.data,Y);if(Q.common.async)return Promise.resolve(G).then(async(q)=>{if(J.value==="aborted")return T;let W=await this._def.schema._parseAsync({data:q,path:Q.path,parent:Q});if(W.status==="aborted")return T;if(W.status==="dirty")return D$(W.value);if(J.value==="dirty")return D$(W.value);return W});else{if(J.value==="aborted")return T;let q=this._def.schema._parseSync({data:G,path:Q.path,parent:Q});if(q.status==="aborted")return T;if(q.status==="dirty")return D$(q.value);if(J.value==="dirty")return D$(q.value);return q}}if(X.type==="refinement"){let G=(q)=>{let W=X.refinement(q,Y);if(Q.common.async)return Promise.resolve(W);if(W instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return q};if(Q.common.async===!1){let q=this._def.schema._parseSync({data:Q.data,path:Q.path,parent:Q});if(q.status==="aborted")return T;if(q.status==="dirty")J.dirty();return G(q.value),{status:J.value,value:q.value}}else return this._def.schema._parseAsync({data:Q.data,path:Q.path,parent:Q}).then((q)=>{if(q.status==="aborted")return T;if(q.status==="dirty")J.dirty();return G(q.value).then(()=>{return{status:J.value,value:q.value}})})}if(X.type==="transform")if(Q.common.async===!1){let G=this._def.schema._parseSync({data:Q.data,path:Q.path,parent:Q});if(!a0(G))return T;let q=X.transform(G.value,Y);if(q instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:J.value,value:q}}else return this._def.schema._parseAsync({data:Q.data,path:Q.path,parent:Q}).then((G)=>{if(!a0(G))return T;return Promise.resolve(X.transform(G.value,Y)).then((q)=>({status:J.value,value:q}))});l.assertNever(X)}}P0.create=($,J,Q)=>{return new P0({schema:$,typeName:_.ZodEffects,effect:J,...h(Q)})};P0.createWithPreprocess=($,J,Q)=>{return new P0({schema:J,effect:{type:"preprocess",transform:$},typeName:_.ZodEffects,...h(Q)})};class Z0 extends m{_parse($){if(this._getType($)===P.undefined)return H0(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}Z0.create=($,J)=>{return new Z0({innerType:$,typeName:_.ZodOptional,...h(J)})};class c0 extends m{_parse($){if(this._getType($)===P.null)return H0(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}c0.create=($,J)=>{return new c0({innerType:$,typeName:_.ZodNullable,...h(J)})};class p$ extends m{_parse($){let{ctx:J}=this._processInputParams($),Q=J.data;if(J.parsedType===P.undefined)Q=this._def.defaultValue();return this._def.innerType._parse({data:Q,path:J.path,parent:J})}removeDefault(){return this._def.innerType}}p$.create=($,J)=>{return new p$({innerType:$,typeName:_.ZodDefault,defaultValue:typeof J.default==="function"?J.default:()=>J.default,...h(J)})};class d$ extends m{_parse($){let{ctx:J}=this._processInputParams($),Q={...J,common:{...J.common,issues:[]}},X=this._def.innerType._parse({data:Q.data,path:Q.path,parent:{...Q}});if(T$(X))return X.then((Y)=>{return{status:"valid",value:Y.status==="valid"?Y.value:this._def.catchValue({get error(){return new q0(Q.common.issues)},input:Q.data})}});else return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new q0(Q.common.issues)},input:Q.data})}}removeCatch(){return this._def.innerType}}d$.create=($,J)=>{return new d$({innerType:$,typeName:_.ZodCatch,catchValue:typeof J.catch==="function"?J.catch:()=>J.catch,...h(J)})};class L2 extends m{_parse($){if(this._getType($)!==P.nan){let Q=this._getOrReturnCtx($);return E(Q,{code:j.invalid_type,expected:P.nan,received:Q.parsedType}),T}return{status:"valid",value:$.data}}}L2.create=($)=>{return new L2({typeName:_.ZodNaN,...h($)})};var jX=Symbol("zod_brand");class j6 extends m{_parse($){let{ctx:J}=this._processInputParams($),Q=J.data;return this._def.type._parse({data:Q,path:J.path,parent:J})}unwrap(){return this._def.type}}class j2 extends m{_parse($){let{status:J,ctx:Q}=this._processInputParams($);if(Q.common.async)return(async()=>{let Y=await this._def.in._parseAsync({data:Q.data,path:Q.path,parent:Q});if(Y.status==="aborted")return T;if(Y.status==="dirty")return J.dirty(),D$(Y.value);else return this._def.out._parseAsync({data:Y.value,path:Q.path,parent:Q})})();else{let X=this._def.in._parseSync({data:Q.data,path:Q.path,parent:Q});if(X.status==="aborted")return T;if(X.status==="dirty")return J.dirty(),{status:"dirty",value:X.value};else return this._def.out._parseSync({data:X.value,path:Q.path,parent:Q})}}static create($,J){return new j2({in:$,out:J,typeName:_.ZodPipeline})}}class i$ extends m{_parse($){let J=this._def.innerType._parse($),Q=(X)=>{if(a0(X))X.value=Object.freeze(X.value);return X};return T$(J)?J.then((X)=>Q(X)):Q(J)}unwrap(){return this._def.innerType}}i$.create=($,J)=>{return new i$({innerType:$,typeName:_.ZodReadonly,...h(J)})};function E7($,J){let Q=typeof $==="function"?$(J):typeof $==="string"?{message:$}:$;return typeof Q==="string"?{message:Q}:Q}function T7($,J={},Q){if($)return M$.create().superRefine((X,Y)=>{let G=$(X);if(G instanceof Promise)return G.then((q)=>{if(!q){let W=E7(J,X),z=W.fatal??Q??!0;Y.addIssue({code:"custom",...W,fatal:z})}});if(!G){let q=E7(J,X),W=q.fatal??Q??!0;Y.addIssue({code:"custom",...q,fatal:W})}return});return M$.create()}var NX={object:$0.lazycreate},_;(function($){$.ZodString="ZodString",$.ZodNumber="ZodNumber",$.ZodNaN="ZodNaN",$.ZodBigInt="ZodBigInt",$.ZodBoolean="ZodBoolean",$.ZodDate="ZodDate",$.ZodSymbol="ZodSymbol",$.ZodUndefined="ZodUndefined",$.ZodNull="ZodNull",$.ZodAny="ZodAny",$.ZodUnknown="ZodUnknown",$.ZodNever="ZodNever",$.ZodVoid="ZodVoid",$.ZodArray="ZodArray",$.ZodObject="ZodObject",$.ZodUnion="ZodUnion",$.ZodDiscriminatedUnion="ZodDiscriminatedUnion",$.ZodIntersection="ZodIntersection",$.ZodTuple="ZodTuple",$.ZodRecord="ZodRecord",$.ZodMap="ZodMap",$.ZodSet="ZodSet",$.ZodFunction="ZodFunction",$.ZodLazy="ZodLazy",$.ZodLiteral="ZodLiteral",$.ZodEnum="ZodEnum",$.ZodEffects="ZodEffects",$.ZodNativeEnum="ZodNativeEnum",$.ZodOptional="ZodOptional",$.ZodNullable="ZodNullable",$.ZodDefault="ZodDefault",$.ZodCatch="ZodCatch",$.ZodPromise="ZodPromise",$.ZodBranded="ZodBranded",$.ZodPipeline="ZodPipeline",$.ZodReadonly="ZodReadonly"})(_||(_={}));var _X=($,J={message:`Input not instance of ${$.name}`})=>T7((Q)=>Q instanceof $,J),v7=_0.create,x7=o0.create,AX=L2.create,ZX=t0.create,h7=h$.create,wX=F$.create,PX=M2.create,bX=y$.create,EX=g$.create,SX=M$.create,CX=s0.create,fX=T0.create,IX=O2.create,TX=A0.create,vX=$0.create,xX=$0.strictCreate,hX=k$.create,yX=L6.create,gX=m$.create,kX=v0.create,mX=K2.create,uX=R2.create,lX=O$.create,cX=x$.create,pX=u$.create,dX=l$.create,iX=e0.create,nX=c$.create,rX=K$.create,aX=P0.create,sX=Z0.create,oX=c0.create,tX=P0.createWithPreprocess,eX=j2.create,$Y=()=>v7().optional(),JY=()=>x7().optional(),QY=()=>h7().optional(),XY={string:($)=>_0.create({...$,coerce:!0}),number:($)=>o0.create({...$,coerce:!0}),boolean:($)=>h$.create({...$,coerce:!0}),bigint:($)=>t0.create({...$,coerce:!0}),date:($)=>F$.create({...$,coerce:!0})};var YY=T;var Q4=K.object({bgProcessId:K.string().min(1,"bgProcessId must not be empty").describe("The background process ID returned by delegate_task (format: process_<timestamp>_<random>).")});function GY($){return{alive:$.status==="pending"||$.status==="running",status:$.status,createdAt:$.createdAt,lastUpdatedAt:$.lastUpdatedAt??$.completedAt??$.startedAt??$.createdAt,description:$.description,...$.result!==void 0?{result:$.result}:{},...$.error!==void 0?{error:$.error}:{}}}function y7($){let J=Date.now();return{alive:!1,status:"not_found",createdAt:J,lastUpdatedAt:J,description:`No background process found with id '${$}'.`}}var tO={name:"query_background_process",description:`Query the status of a background process previously launched via delegate_task.
446
436
 
447
437
  Use this tool when:
448
438
  - You delegated a long-running task but have NOT received any notification after a reasonable wait (5+ minutes), and want to confirm whether the process is still alive.
@@ -459,7 +449,7 @@ Use this tool when:
459
449
  - result: present when status is 'completed'
460
450
  - error: present when status is 'failed'
461
451
 
462
- Only the default receptionist agent has this tool. Sub-agents (roy, strict-task-agent, etc.) cannot see it because they do not need to query background tasks they themselves launched.`,parameters:J4,permission:{level:"safe",requireConfirmation:!1},metadata:{category:"task",tags:["background","delegate","query","status","diagnostic"],version:"1.0.0",allowedAgentTypes:["default"]},execute:async($,J)=>L6(null).execute($,J)};function L6($=null){return{name:"query_background_process",description:`Query the status of a background process previously launched via delegate_task.
452
+ Only the default receptionist agent has this tool. Sub-agents (roy, strict-task-agent, etc.) cannot see it because they do not need to query background tasks they themselves launched.`,parameters:Q4,permission:{level:"safe",requireConfirmation:!1},metadata:{category:"task",tags:["background","delegate","query","status","diagnostic"],version:"1.0.0",allowedAgentTypes:["default"]},execute:async($,J)=>N6(null).execute($,J)};function N6($=null){return{name:"query_background_process",description:`Query the status of a background process previously launched via delegate_task.
463
453
 
464
454
  Use this tool when:
465
455
  - You delegated a long-running task but have NOT received any notification after a reasonable wait (5+ minutes), and want to confirm whether the process is still alive.
@@ -476,7 +466,7 @@ Use this tool when:
476
466
  - result: present when status is 'completed'
477
467
  - error: present when status is 'failed'
478
468
 
479
- Only the default receptionist agent has this tool. Sub-agents (roy, strict-task-agent, etc.) cannot see it because they do not need to query background tasks they themselves launched.`,parameters:J4,permission:{level:"safe",requireConfirmation:!1},metadata:{category:"task",tags:["background","delegate","query","status","diagnostic"],version:"1.0.0",allowedAgentTypes:["default"]},execute:async(J,Q)=>{let X=Date.now(),W=J4.parse(J),{bgProcessId:G}=W;if(!$)return{success:!1,output:"",error:"query_background_process is not initialized: no BackgroundTaskManager has been bound. TaskComponent should call createQueryBackgroundProcessTool(manager) and register the tool during startup.",metadata:{execution_time_ms:Date.now()-X}};let Y;try{Y=$.getTask(G)}catch(H){return{success:!1,output:"",error:`failed to query background task: ${H.message}`,metadata:{execution_time_ms:Date.now()-X}}}if(Y){let H=Q.session_id;if(!H||Y.parentSessionId!==H)return{success:!0,output:JSON.stringify(x7(G),null,2),metadata:{execution_time_ms:Date.now()-X,bgProcessId:G,status:"not_found",alive:!1}}}let q=Y?JW(Y):x7(G);if(q.alive)try{let H=await $.getSubSessionActivity?.(G);if(H)q.lastUpdatedAt=Math.max(q.lastUpdatedAt,H.updatedAt),q.messageCount=H.messageCount,q.subSessionUpdatedAt=H.updatedAt}catch{}return{success:!0,output:JSON.stringify(q,null,2),metadata:{execution_time_ms:Date.now()-X,bgProcessId:G,status:q.status,alive:q.alive}}}}}r();var L2=i("compact-session-tool"),h7=K.object({session_id:K.string().min(1,"session_id must not be empty").describe("The sub-session ID to compact (format: session_xxx or oc_xxx). Must be a sub-session previously created via delegate_task (the bgProcess notification reports its subSessionId).")});function QW($){return{status:"not_found",sessionId:$}}function XW($,J){let X=($.listTasks()??[]).find((W)=>W.subSessionId===J);if(X)return X;return $.getTask(J)}function WW($,J){if(!$||!J)return!1;return $.parentSessionId===J}function GW($){return $?.status==="running"||$?.status==="pending"}function Q4($=null,J=null){return{name:"compact_session",description:`Compact (compress) a sub-agent session by summarizing its history into a checkpoint and archiving the old messages, so the session can be REUSED with delegate_task(sub_session_id=...) without exceeding the context threshold.
469
+ Only the default receptionist agent has this tool. Sub-agents (roy, strict-task-agent, etc.) cannot see it because they do not need to query background tasks they themselves launched.`,parameters:Q4,permission:{level:"safe",requireConfirmation:!1},metadata:{category:"task",tags:["background","delegate","query","status","diagnostic"],version:"1.0.0",allowedAgentTypes:["default"]},execute:async(J,Q)=>{let X=Date.now(),Y=Q4.parse(J),{bgProcessId:G}=Y;if(!$)return{success:!1,output:"",error:"query_background_process is not initialized: no BackgroundTaskManager has been bound. TaskComponent should call createQueryBackgroundProcessTool(manager) and register the tool during startup.",metadata:{execution_time_ms:Date.now()-X}};let q;try{q=$.getTask(G)}catch(z){return{success:!1,output:"",error:`failed to query background task: ${z.message}`,metadata:{execution_time_ms:Date.now()-X}}}if(q){let z=Q.session_id;if(!z||q.parentSessionId!==z)return{success:!0,output:JSON.stringify(y7(G),null,2),metadata:{execution_time_ms:Date.now()-X,bgProcessId:G,status:"not_found",alive:!1}}}let W=q?GY(q):y7(G);if(W.alive)try{let z=await $.getSubSessionActivity?.(G);if(z)W.lastUpdatedAt=Math.max(W.lastUpdatedAt,z.updatedAt),W.messageCount=z.messageCount,W.subSessionUpdatedAt=z.updatedAt}catch{}return{success:!0,output:JSON.stringify(W,null,2),metadata:{execution_time_ms:Date.now()-X,bgProcessId:G,status:W.status,alive:W.alive}}}}}n();var N2=i("compact-session-tool"),g7=K.object({session_id:K.string().min(1,"session_id must not be empty").describe("The sub-session ID to compact (format: session_xxx or oc_xxx). Must be a sub-session previously created via delegate_task (the bgProcess notification reports its subSessionId).")});function qY($){return{status:"not_found",sessionId:$}}function WY($,J){let X=($.listTasks()??[]).find((Y)=>Y.subSessionId===J);if(X)return X;return $.getTask(J)}function zY($,J){if(!$||!J)return!1;return $.parentSessionId===J}function HY($){return $?.status==="running"||$?.status==="pending"}function X4($=null,J=null){return{name:"compact_session",description:`Compact (compress) a sub-agent session by summarizing its history into a checkpoint and archiving the old messages, so the session can be REUSED with delegate_task(sub_session_id=...) without exceeding the context threshold.
480
470
 
481
471
  Use this tool when:
482
472
  - A delegated sub-agent returned 'Context threshold exceeded' (e.g. 125575/120000 tokens) and you want to continue the SAME sub-session instead of losing all its progress.
@@ -495,7 +485,7 @@ Guards:
495
485
  - You can only compact sub-sessions YOU delegated (ownership check).
496
486
  - A session whose background task is still running/pending cannot be compacted (stop_task it first to avoid corrupting live state).
497
487
 
498
- Only the default receptionist agent has this tool.`,parameters:h7,permission:{level:"safe",requireConfirmation:!1},metadata:{category:"task",tags:["compact","session","delegate","checkpoint","context"],version:"1.0.0",allowedAgentTypes:["default"]},execute:async(Q,X)=>{let W=Date.now(),Y=h7.parse(Q).session_id;if(!$||!J)return{success:!1,output:"",error:"compact_session is not initialized: no BackgroundTaskManager or SessionComponent has been bound. TaskComponent should call createCompactSessionTool(manager, sessionComponent) and register the tool during startup.",metadata:{execution_time_ms:Date.now()-W}};let q=X.session_id;if(q&&Y===q)return{success:!1,output:"",error:`Refusing to compact session '${Y}': it is your OWN current session. Compacting it would destroy your own active context. Only sub-sessions you delegated can be compacted.`,metadata:{execution_time_ms:Date.now()-W}};if(!q)return{success:!1,output:"",error:"compact_session requires a current session context (ctx.session_id) to verify ownership, but none was provided.",metadata:{execution_time_ms:Date.now()-W}};let H=XW($,Y);if(!H||!WW(H,q))return L2.warn("[compact_session] not_found (unknown or foreign sub-session)",{sessionId:Y,currentSessionId:q}),{success:!0,output:JSON.stringify(QW(Y),null,2),metadata:{execution_time_ms:Date.now()-W,sessionId:Y,status:"not_found"}};if(GW(H))return{success:!1,output:"",error:`Cannot compact session '${Y}': its background task '${H.id}' is still ${H.status}. The sub-agent writes to this session every ReAct iteration; archiving messages now would corrupt live state. Run stop_task(task_id="${H.id}") first, then compact the session.`,metadata:{execution_time_ms:Date.now()-W,sessionId:Y,bgProcessId:H.id,taskStatus:H.status}};let B;try{B=await J.previewCompact(Y)}catch(M){return{success:!1,output:"",error:`failed to preview compaction for session '${Y}': ${M.message}`,metadata:{execution_time_ms:Date.now()-W}}}if(!B||B.messageCountToCompact<3)return{success:!1,output:"",error:`Cannot compact session '${Y}': minimum 3 compactable messages required (found ${B?.messageCountToCompact??0}).`,metadata:{execution_time_ms:Date.now()-W,sessionId:Y,messageCountToCompact:B?.messageCountToCompact??0}};let U="";try{U=await J.generateCompactHint(Y)}catch(M){L2.warn("[compact_session] hint generation failed, continuing with empty hint",{sessionId:Y,error:M.message}),U=""}let z;try{z=await J.compact(Y,{scenarioHint:U})}catch(M){let F=M.message;return L2.error(`[compact_session] compact failed: ${F}`,{sessionId:Y}),{success:!1,output:"",error:`compaction failed for session '${Y}': ${F}`,metadata:{execution_time_ms:Date.now()-W,sessionId:Y}}}try{$.env?.pushEnvEvent?.({type:"context.compacted",metadata:{sessionId:Y},payload:{checkpointId:z.checkpoint.id,messagesCompacted:z.deletedMessageCount,scenarioHintUsed:U.length>0,source:"compact_session_tool"}})}catch(M){L2.warn("[compact_session] failed to push context.compacted event",{sessionId:Y,error:M.message})}let V={status:"compacted",sessionId:Y,checkpointId:z.checkpoint.id,checkpointTitle:z.checkpoint.title,contentLength:z.checkpoint.content?.length??0,originalMessages:B.messageCountToCompact,deletedMessages:z.deletedMessageCount,remainingMessages:z.remainingMessageCount,hintUsed:U.length>0};return L2.info("[compact_session] session compacted",{sessionId:Y,checkpointId:V.checkpointId,deletedMessages:V.deletedMessages,remainingMessages:V.remainingMessages}),{success:!0,output:JSON.stringify(V,null,2),metadata:{execution_time_ms:Date.now()-W,sessionId:Y,status:"compacted",checkpointId:V.checkpointId}}}}}var y7=Q4(null,null);var g7=K.object({task_id:K.string().describe("The ID of the background task to stop")}),YW=`Stop a running background task.
488
+ Only the default receptionist agent has this tool.`,parameters:g7,permission:{level:"safe",requireConfirmation:!1},metadata:{category:"task",tags:["compact","session","delegate","checkpoint","context"],version:"1.0.0",allowedAgentTypes:["default"]},execute:async(Q,X)=>{let Y=Date.now(),q=g7.parse(Q).session_id;if(!$||!J)return{success:!1,output:"",error:"compact_session is not initialized: no BackgroundTaskManager or SessionComponent has been bound. TaskComponent should call createCompactSessionTool(manager, sessionComponent) and register the tool during startup.",metadata:{execution_time_ms:Date.now()-Y}};let W=X.session_id;if(W&&q===W)return{success:!1,output:"",error:`Refusing to compact session '${q}': it is your OWN current session. Compacting it would destroy your own active context. Only sub-sessions you delegated can be compacted.`,metadata:{execution_time_ms:Date.now()-Y}};if(!W)return{success:!1,output:"",error:"compact_session requires a current session context (ctx.session_id) to verify ownership, but none was provided.",metadata:{execution_time_ms:Date.now()-Y}};let z=WY($,q);if(!z||!zY(z,W))return N2.warn("[compact_session] not_found (unknown or foreign sub-session)",{sessionId:q,currentSessionId:W}),{success:!0,output:JSON.stringify(qY(q),null,2),metadata:{execution_time_ms:Date.now()-Y,sessionId:q,status:"not_found"}};if(HY(z))return{success:!1,output:"",error:`Cannot compact session '${q}': its background task '${z.id}' is still ${z.status}. The sub-agent writes to this session every ReAct iteration; archiving messages now would corrupt live state. Run stop_task(task_id="${z.id}") first, then compact the session.`,metadata:{execution_time_ms:Date.now()-Y,sessionId:q,bgProcessId:z.id,taskStatus:z.status}};let H;try{H=await J.previewCompact(q)}catch(O){return{success:!1,output:"",error:`failed to preview compaction for session '${q}': ${O.message}`,metadata:{execution_time_ms:Date.now()-Y}}}if(!H||H.messageCountToCompact<3)return{success:!1,output:"",error:`Cannot compact session '${q}': minimum 3 compactable messages required (found ${H?.messageCountToCompact??0}).`,metadata:{execution_time_ms:Date.now()-Y,sessionId:q,messageCountToCompact:H?.messageCountToCompact??0}};let B="";try{B=await J.generateCompactHint(q)}catch(O){N2.warn("[compact_session] hint generation failed, continuing with empty hint",{sessionId:q,error:O.message}),B=""}let U;try{U=await J.compact(q,{scenarioHint:B})}catch(O){let F=O.message;return N2.error(`[compact_session] compact failed: ${F}`,{sessionId:q}),{success:!1,output:"",error:`compaction failed for session '${q}': ${F}`,metadata:{execution_time_ms:Date.now()-Y,sessionId:q}}}try{$.env?.pushEnvEvent?.({type:"context.compacted",metadata:{sessionId:q},payload:{checkpointId:U.checkpoint.id,messagesCompacted:U.deletedMessageCount,scenarioHintUsed:B.length>0,source:"compact_session_tool"}})}catch(O){N2.warn("[compact_session] failed to push context.compacted event",{sessionId:q,error:O.message})}let V={status:"compacted",sessionId:q,checkpointId:U.checkpoint.id,checkpointTitle:U.checkpoint.title,contentLength:U.checkpoint.content?.length??0,originalMessages:H.messageCountToCompact,deletedMessages:U.deletedMessageCount,remainingMessages:U.remainingMessageCount,hintUsed:B.length>0};return N2.info("[compact_session] session compacted",{sessionId:q,checkpointId:V.checkpointId,deletedMessages:V.deletedMessages,remainingMessages:V.remainingMessages}),{success:!0,output:JSON.stringify(V,null,2),metadata:{execution_time_ms:Date.now()-Y,sessionId:q,status:"compacted",checkpointId:V.checkpointId}}}}}var k7=X4(null,null);var m7=K.object({task_id:K.string().describe("The ID of the background task to stop")}),BY=`Stop a running background task.
499
489
 
500
490
  Use this tool to stop a background task that is currently running. This is useful when:
501
491
  - The user wants to cancel a long-running task
@@ -505,11 +495,11 @@ Use this tool to stop a background task that is currently running. This is usefu
505
495
  When stopped, the task will be terminated immediately and you will receive a confirmation.
506
496
 
507
497
  Parameters:
508
- - task_id: The ID of the background task to stop (obtained from the delegate_task response)`;function qW($){let J=Math.floor($/1000),Q=Math.floor(J/60),X=Math.floor(Q/60);if(X>0)return`${X}h ${Q%60}m ${J%60}s`;else if(Q>0)return`${Q}m ${J%60}s`;else return`${J}s`}function k7($){return{name:"stop_task",description:YW,parameters:g7,execute:async(J,Q)=>{let X=Date.now(),W=g7.parse(J),{task_id:G}=W,Y=await $.stopTask(G);if(Y.success){let q=Y.task,H=q.startedAt?Date.now()-q.startedAt:Date.now()-q.createdAt;return{success:!0,output:["\u2705 Task stopped successfully","",`\uD83D\uDCCB Task ID: ${G}`,`\uD83D\uDCDD Description: ${q.description}`,`\uD83D\uDD04 Status: ${q.status} \u2192 stopped`,`\u23F1\uFE0F Elapsed Time: ${qW(H)}`,"",Y.message].join(`
509
- `),metadata:{execution_time_ms:Date.now()-X,task_id:G,previous_status:q.status}}}else{let q=Y.task,H;if(q)H=["\u26A0\uFE0F Cannot stop task","",`\uD83D\uDCCB Task ID: ${G}`,`\uD83D\uDCDD Description: ${q.description}`,`\uD83D\uDD04 Current Status: ${q.status}`,"",Y.message].join(`
510
- `);else H=["\u274C Task not found","",`\uD83D\uDCCB Task ID: ${G}`,"",Y.message].join(`
511
- `);return{success:!1,output:H,error:Y.message,metadata:{execution_time_ms:Date.now()-X,task_id:G}}}}}}import{AsyncLocalStorage as HW}from"async_hooks";r();var A6=i("process-tree-killer");function l7(){return e("child_process")}var m7;function BW($,J,Q){if(m7)return m7($,J,Q);return l7().spawn($,J,Q)}var u7;function UW($,J,Q){if(u7)return u7($,J,Q);let X=l7();if(typeof X.spawnSync!=="function")return;return X.spawnSync($,J,Q)}var VW;function zW(){return VW??process.platform}function DW($){try{return process.kill($,0),!0}catch(J){if(J.code==="ESRCH")return!1;return!0}}function FW($){try{let J=UW("tasklist",["/fi",`PID eq ${$}`,"/nh"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:3000});if(!J)return!0;return J.stdout.toString().includes(String($))}catch{return!0}}function OW($){return new Promise((J)=>setTimeout(J,$))}async function MW($,J){if(!Number.isInteger($)||$<=0)throw Error(`Invalid PID: ${$} (must be a positive integer)`);let Q=zW(),X=J?.signal??"SIGKILL",W=J?.retry??3,G=J?.retryDelayMs??500;A6.info(`[bg-process:kill-begin] pid=${$} signal=${X} retry=${W} delayMs=${G}`);for(let Y=1;Y<=W;Y++){let q=Q==="win32"?KW($):RW($,X,Q);if(await OW(G),!(Q==="win32"?FW($):DW($)))return A6.info(`[bg-process:kill-done] pid=${$} attempts=${Y} stillAlive=false`),{pid:$,platform:Q,signal:q.signal,success:!0,attempts:Y,stillAlive:!1};if(Y<W)A6.warn(`[bg-process:kill-retry] pid=${$} attempt=${Y}/${W}`)}return A6.error(`[bg-process:kill-failed] pid=${$} attempts=${W} stillAlive=true`),{pid:$,platform:Q,signal:Q==="win32"?"taskkill /f /t":X,success:!1,attempts:W,stillAlive:!0}}function KW($){try{return BW("taskkill",["/pid",String($),"/f","/t"],{stdio:"ignore",windowsHide:!0}),{pid:$,platform:"win32",signal:"taskkill /f /t",success:!0}}catch{return{pid:$,platform:"win32",signal:"taskkill /f /t",success:!1}}}function RW($,J,Q){try{return process.kill(-$,J),{pid:$,platform:Q,signal:J,success:!0}}catch(X){let W=X.code;if(W==="ESRCH"||W==="EPERM")return{pid:$,platform:Q,signal:J,success:!0};return{pid:$,platform:Q,signal:J,success:!1}}}r();var X4=i("task:process-registry");class W4{pids=new Set;register($){if(!Number.isInteger($)||$<=0)return;this.pids.add($)}unregister($){if(!Number.isInteger($))return;this.pids.delete($)}size(){return this.pids.size}async killAll(){if(this.pids.size===0)return;let $=Array.from(this.pids);X4.info(`[bg-process:killAll-begin] count=${$.length} pids=[${$.join(",")}]`);for(let J of $)try{let Q=await MW(J,{retry:3,retryDelayMs:500});if(Q.stillAlive)X4.error(`\u8FDB\u7A0B PID ${J} \u7ECF\u8FC7 ${Q.attempts} \u6B21\u91CD\u8BD5\u540E\u4ECD\u672A\u6740\u6B7B\uFF01\u4FDD\u7559 PID \u4F9B\u540E\u7EED forceStopAll \u91CD\u8BD5\u3002`);else this.pids.delete(J)}catch{}X4.info(`[bg-process:killAll-done] remaining=${this.pids.size}`)}}var LW=new HW;function c7($,J){return LW.run($,J)}function AW(){if(_6!==void 0)return _6;let $=process.env.ROY_TRACE_FULL?.trim().toLowerCase();return _6=$==="1"||$==="true"||$==="yes",_6}var _6;var _W=()=>{};function jW($){let J=()=>({recordParams:$?.recordParams??!0,recordResult:$?.recordResult??!1,recordResultToDb:$?.recordResultToDb??!1,logResult:$?.logResult,recordError:$?.recordError??!0,log:$?.log??!1,maxLogSize:$?.maxLogSize,paramFilter:$?.paramFilter,resultFilter:$?.resultFilter,flattenParamFilter:$?.flattenParamFilter,errorIf:$?.errorIf});return function(Q,X,W){if(W!==void 0&&W!==null&&typeof W==="object"&&"value"in W){let q=W.value,H=$?.name||String(X);return W.value=U0(q,H,J()),W}let G=Q,Y=X||{};if(typeof G==="function"){let q=$?.name||(Y?.name?String(Y.name):"anonymous");return U0(G,q,J())}return G}}function u($,J){return jW({name:$,...J})}function U0($,J,Q){let X={recordParams:Q?.recordParams??!0,recordResult:Q?.recordResult??!0,recordResultToDb:Q?.recordResultToDb??!1,logResult:Q?.logResult,recordError:Q?.recordError??!0,log:Q?.log??!1,maxLogSize:Q?.maxLogSize,paramFilter:Q?.paramFilter,resultFilter:Q?.resultFilter,flattenParamFilter:Q?.flattenParamFilter??!1,errorIf:Q?.errorIf},W=X.log,G=()=>{if(X.maxLogSize!==void 0)return X.maxLogSize;let F=r9();return F!==void 0?F:500},Y=(F)=>{if(F===void 0)return;if(F===null)return null;let D=G(),O;try{O=typeof F==="string"?F:JSON.stringify(F,null,0).replace(/\n/g,"")}catch(R){O=`[Object with circular reference: ${R instanceof Error?R.message:String(R)}]`}if(D>0&&O.length>D)return O.slice(0,D)+" [TRUNCATED]";try{return JSON.parse(O)}catch{return O}},q=(F)=>{if(F===void 0)return"undefined";if(F===null)return"null";let D=G(),O;try{O=typeof F==="string"?F:JSON.stringify(F,null,0).replace(/\n/g,"")}catch(R){O=`[Object with circular reference: ${R instanceof Error?R.message:String(R)}]`}return D>0&&O.length>D?O.slice(0,D)+" [TRUNCATED]":O},H=(F)=>{if(F===void 0)return;if(F===null)return null;if(typeof F==="string")return F;try{return JSON.parse(JSON.stringify(F))}catch(D){return`[Object with circular reference: ${D instanceof Error?D.message:String(D)}]`}},B="[TRACE]",U=(F)=>{try{return F()}catch(D){try{i("traced:"+J).warn(`[trace] filter threw, ignoring: ${D instanceof Error?D.message:String(D)}`)}catch{}return}},z=(F,D)=>{if(X.recordResultToDb===!0)return{value:F,store:!0};if(AW())return{value:F,store:!0};if(X.resultFilter){let O=D?.ran?D.value:U(()=>X.resultFilter(F));if(O&&typeof O==="object"&&!Array.isArray(O))return{value:O,store:!0}}if(X.recordResult===!1)return{value:void 0,store:!1};return{value:F,store:!0}},V=()=>{let F=Error.stackTraceLimit;Error.stackTraceLimit=15;let D=Error();Error.captureStackTrace(D,V);let O=D.stack?.split(`
512
- `)||[];Error.stackTraceLimit=F;for(let R=1;R<O.length;R++){let L=O[R];if(L.includes("decorator.ts")||L.includes("decorator.js")||L.includes("logFn")||L.includes("getCallerLocation"))continue;let _=L.match(/at\s+.+\s+\((.+):(\d+):\d+\)/)||L.match(/at\s+(.+):(\d+):\d+/);if(_){let Z=_[1];if(!Z||Z==="native")continue;return`${n9(Z)}:${_[2]}`}}return""},M=(F,D,O)=>{if(!W)return;let R=i("traced:"+J),_=`[TRACE] ${F==="enter"?">>>":F==="quit"?"<<<":"!!!"} ${J}`,Z=O||V(),P=(w,f)=>{if(f!==void 0)R.info(`${_} ${w}: ${q(f)}`,{callerLocation:Z});else R.info(`${_} ${w}`,{callerLocation:Z})};if(F==="enter")P("enter",D);else if(F==="quit")P("quit",X.logResult??X.recordResult?D:void 0);else P("error",D)};return function(...F){let D=V2().getTracer("roy-tracer"),O={};if(X.recordParams!==!1)if(X.paramFilter){let _=U(()=>X.paramFilter(F));if(O.params=H(_),X.flattenParamFilter&&_&&typeof _==="object"&&!Array.isArray(_)){for(let[Z,P]of Object.entries(_))if(!(Z in O))O[Z]=H(P)}}else O.params=H(F);let R=V(),L;try{L=D.startSpan(J,{attributes:O})}catch{}M("enter",F,R);try{let _=$.call(this,...F);if(_&&typeof _==="object"&&typeof _.then==="function")return _.then((Z)=>{if(L){let P=X.resultFilter!==void 0,w=X.resultFilter?U(()=>X.resultFilter(Z)):void 0;if(w&&typeof w==="object"&&!Array.isArray(w))for(let[E,x]of Object.entries(w))L.setAttribute(E,H(x));let f=z(Z,{ran:P,value:w});if(f.store)L.setAttribute("result",JSON.stringify(H(f.value)));let N=X.errorIf?U(()=>X.errorIf(Z)):void 0;if(N){let E=N instanceof Error?N:Error(String(N));L.setAttribute("error",E.message),L.end(void 0,E)}else L.end(f.store?f.value:void 0)}return M("quit",X.logResult??X.recordResult?Z:void 0,R),Z},(Z)=>{if(L)L.setAttribute("error",String(Z)),L.end(void 0,Z instanceof Error?Z:Error(String(Z)));throw M("error",Z.message,R),Z});if(L){let Z=X.resultFilter!==void 0,P=X.resultFilter?U(()=>X.resultFilter(_)):void 0;if(P&&typeof P==="object"&&!Array.isArray(P))for(let[N,E]of Object.entries(P))L.setAttribute(N,H(E));let w=z(_,{ran:Z,value:P});if(w.store)L.setAttribute("result",JSON.stringify(H(w.value)));let f=X.errorIf?U(()=>X.errorIf(_)):void 0;if(f){let N=f instanceof Error?f:Error(String(f));L.setAttribute("error",N.message),L.end(void 0,N)}else L.end(w.store?w.value:void 0)}return M("quit",X.logResult??X.recordResult?_:void 0,R),_}catch(_){if(L)L.setAttribute("error",String(_)),L.end(void 0,_ instanceof Error?_:Error(String(_)));throw M("error",_.message,R),_}}}var z0=a(()=>{o9(),r(),_W()});import{randomUUID as NW}from"crypto";z0();function ZW(){if(typeof Bun<"u"){let{Database:$}=e("bun:sqlite");return $}else return e("better-sqlite3")}function wW($){let Q=new(ZW())($);if(typeof Q.run!=="function")Q.run=function(X,...W){if(W.length>0)return this.prepare(X).run(...W);else return this.exec(X)};return Q}class G4{db;insertStmt;getByIdStmt;recentStmt;constructor($){this.db=wW($.dbPath);try{this.db.exec("PRAGMA journal_mode=WAL"),this.db.exec("PRAGMA synchronous=NORMAL"),this.db.exec("PRAGMA busy_timeout=5000")}catch{}this.db.exec(`CREATE TABLE IF NOT EXISTS event_store (
498
+ - task_id: The ID of the background task to stop (obtained from the delegate_task response)`;function UY($){let J=Math.floor($/1000),Q=Math.floor(J/60),X=Math.floor(Q/60);if(X>0)return`${X}h ${Q%60}m ${J%60}s`;else if(Q>0)return`${Q}m ${J%60}s`;else return`${J}s`}function u7($){return{name:"stop_task",description:BY,parameters:m7,execute:async(J,Q)=>{let X=Date.now(),Y=m7.parse(J),{task_id:G}=Y,q=await $.stopTask(G);if(q.success){let W=q.task,z=W.startedAt?Date.now()-W.startedAt:Date.now()-W.createdAt;return{success:!0,output:["\u2705 Task stopped successfully","",`\uD83D\uDCCB Task ID: ${G}`,`\uD83D\uDCDD Description: ${W.description}`,`\uD83D\uDD04 Status: ${W.status} \u2192 stopped`,`\u23F1\uFE0F Elapsed Time: ${UY(z)}`,"",q.message].join(`
499
+ `),metadata:{execution_time_ms:Date.now()-X,task_id:G,previous_status:W.status}}}else{let W=q.task,z;if(W)z=["\u26A0\uFE0F Cannot stop task","",`\uD83D\uDCCB Task ID: ${G}`,`\uD83D\uDCDD Description: ${W.description}`,`\uD83D\uDD04 Current Status: ${W.status}`,"",q.message].join(`
500
+ `);else z=["\u274C Task not found","",`\uD83D\uDCCB Task ID: ${G}`,"",q.message].join(`
501
+ `);return{success:!1,output:z,error:q.message,metadata:{execution_time_ms:Date.now()-X,task_id:G}}}}}}import{AsyncLocalStorage as VY}from"async_hooks";n();var _6=i("process-tree-killer");function p7(){return e("child_process")}var l7;function DY($,J,Q){if(l7)return l7($,J,Q);return p7().spawn($,J,Q)}var c7;function FY($,J,Q){if(c7)return c7($,J,Q);let X=p7();if(typeof X.spawnSync!=="function")return;return X.spawnSync($,J,Q)}var MY;function OY(){return MY??process.platform}function KY($){try{return process.kill($,0),!0}catch(J){if(J.code==="ESRCH")return!1;return!0}}function RY($){try{let J=FY("tasklist",["/fi",`PID eq ${$}`,"/nh"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:3000});if(!J)return!0;return J.stdout.toString().includes(String($))}catch{return!0}}function LY($){return new Promise((J)=>setTimeout(J,$))}async function jY($,J){if(!Number.isInteger($)||$<=0)throw Error(`Invalid PID: ${$} (must be a positive integer)`);let Q=OY(),X=J?.signal??"SIGKILL",Y=J?.retry??3,G=J?.retryDelayMs??500;_6.info(`[bg-process:kill-begin] pid=${$} signal=${X} retry=${Y} delayMs=${G}`);for(let q=1;q<=Y;q++){let W=Q==="win32"?NY($):_Y($,X,Q);if(await LY(G),!(Q==="win32"?RY($):KY($)))return _6.info(`[bg-process:kill-done] pid=${$} attempts=${q} stillAlive=false`),{pid:$,platform:Q,signal:W.signal,success:!0,attempts:q,stillAlive:!1};if(q<Y)_6.warn(`[bg-process:kill-retry] pid=${$} attempt=${q}/${Y}`)}return _6.error(`[bg-process:kill-failed] pid=${$} attempts=${Y} stillAlive=true`),{pid:$,platform:Q,signal:Q==="win32"?"taskkill /f /t":X,success:!1,attempts:Y,stillAlive:!0}}function NY($){try{return DY("taskkill",["/pid",String($),"/f","/t"],{stdio:"ignore",windowsHide:!0}),{pid:$,platform:"win32",signal:"taskkill /f /t",success:!0}}catch{return{pid:$,platform:"win32",signal:"taskkill /f /t",success:!1}}}function _Y($,J,Q){try{return process.kill(-$,J),{pid:$,platform:Q,signal:J,success:!0}}catch(X){let Y=X.code;if(Y==="ESRCH"||Y==="EPERM")return{pid:$,platform:Q,signal:J,success:!0};return{pid:$,platform:Q,signal:J,success:!1}}}n();var Y4=i("task:process-registry");class G4{pids=new Set;register($){if(!Number.isInteger($)||$<=0)return;this.pids.add($)}unregister($){if(!Number.isInteger($))return;this.pids.delete($)}size(){return this.pids.size}async killAll(){if(this.pids.size===0)return;let $=Array.from(this.pids);Y4.info(`[bg-process:killAll-begin] count=${$.length} pids=[${$.join(",")}]`);for(let J of $)try{let Q=await jY(J,{retry:3,retryDelayMs:500});if(Q.stillAlive)Y4.error(`\u8FDB\u7A0B PID ${J} \u7ECF\u8FC7 ${Q.attempts} \u6B21\u91CD\u8BD5\u540E\u4ECD\u672A\u6740\u6B7B\uFF01\u4FDD\u7559 PID \u4F9B\u540E\u7EED forceStopAll \u91CD\u8BD5\u3002`);else this.pids.delete(J)}catch{}Y4.info(`[bg-process:killAll-done] remaining=${this.pids.size}`)}}var AY=new VY;function d7($,J){return AY.run($,J)}function ZY(){if(A6!==void 0)return A6;let $=process.env.ROY_TRACE_FULL?.trim().toLowerCase();return A6=$==="1"||$==="true"||$==="yes",A6}var A6;var wY=()=>{};function PY($){let J=()=>({recordParams:$?.recordParams??!0,recordResult:$?.recordResult??!1,recordResultToDb:$?.recordResultToDb??!1,logResult:$?.logResult,recordError:$?.recordError??!0,log:$?.log??!1,maxLogSize:$?.maxLogSize,paramFilter:$?.paramFilter,resultFilter:$?.resultFilter,flattenParamFilter:$?.flattenParamFilter,errorIf:$?.errorIf});return function(Q,X,Y){if(Y!==void 0&&Y!==null&&typeof Y==="object"&&"value"in Y){let W=Y.value,z=$?.name||String(X);return Y.value=B0(W,z,J()),Y}let G=Q,q=X||{};if(typeof G==="function"){let W=$?.name||(q?.name?String(q.name):"anonymous");return B0(G,W,J())}return G}}function u($,J){return PY({name:$,...J})}function B0($,J,Q){let X={recordParams:Q?.recordParams??!0,recordResult:Q?.recordResult??!0,recordResultToDb:Q?.recordResultToDb??!1,logResult:Q?.logResult,recordError:Q?.recordError??!0,log:Q?.log??!1,maxLogSize:Q?.maxLogSize,paramFilter:Q?.paramFilter,resultFilter:Q?.resultFilter,flattenParamFilter:Q?.flattenParamFilter??!1,errorIf:Q?.errorIf},Y=X.log,G=()=>{if(X.maxLogSize!==void 0)return X.maxLogSize;let F=a9();return F!==void 0?F:500},q=(F)=>{if(F===void 0)return;if(F===null)return null;let D=G(),M;try{M=typeof F==="string"?F:JSON.stringify(F,null,0).replace(/\n/g,"")}catch(R){M=`[Object with circular reference: ${R instanceof Error?R.message:String(R)}]`}if(D>0&&M.length>D)return M.slice(0,D)+" [TRUNCATED]";try{return JSON.parse(M)}catch{return M}},W=(F)=>{if(F===void 0)return"undefined";if(F===null)return"null";let D=G(),M;try{M=typeof F==="string"?F:JSON.stringify(F,null,0).replace(/\n/g,"")}catch(R){M=`[Object with circular reference: ${R instanceof Error?R.message:String(R)}]`}return D>0&&M.length>D?M.slice(0,D)+" [TRUNCATED]":M},z=(F)=>{if(F===void 0)return;if(F===null)return null;if(typeof F==="string")return F;try{return JSON.parse(JSON.stringify(F))}catch(D){return`[Object with circular reference: ${D instanceof Error?D.message:String(D)}]`}},H="[TRACE]",B=(F)=>{try{return F()}catch(D){try{i("traced:"+J).warn(`[trace] filter threw, ignoring: ${D instanceof Error?D.message:String(D)}`)}catch{}return}},U=(F,D)=>{if(X.recordResultToDb===!0)return{value:F,store:!0};if(ZY())return{value:F,store:!0};if(X.resultFilter){let M=D?.ran?D.value:B(()=>X.resultFilter(F));if(M&&typeof M==="object"&&!Array.isArray(M))return{value:M,store:!0}}if(X.recordResult===!1)return{value:void 0,store:!1};return{value:F,store:!0}},V=()=>{let F=Error.stackTraceLimit;Error.stackTraceLimit=15;let D=Error();Error.captureStackTrace(D,V);let M=D.stack?.split(`
502
+ `)||[];Error.stackTraceLimit=F;for(let R=1;R<M.length;R++){let L=M[R];if(L.includes("decorator.ts")||L.includes("decorator.js")||L.includes("logFn")||L.includes("getCallerLocation"))continue;let N=L.match(/at\s+.+\s+\((.+):(\d+):\d+\)/)||L.match(/at\s+(.+):(\d+):\d+/);if(N){let Z=N[1];if(!Z||Z==="native")continue;return`${r9(Z)}:${N[2]}`}}return""},O=(F,D,M)=>{if(!Y)return;let R=i("traced:"+J),N=`[TRACE] ${F==="enter"?">>>":F==="quit"?"<<<":"!!!"} ${J}`,Z=M||V(),b=(w,f)=>{if(f!==void 0)R.info(`${N} ${w}: ${W(f)}`,{callerLocation:Z});else R.info(`${N} ${w}`,{callerLocation:Z})};if(F==="enter")b("enter",D);else if(F==="quit")b("quit",X.logResult??X.recordResult?D:void 0);else b("error",D)};return function(...F){let D=D2().getTracer("roy-tracer"),M={};if(X.recordParams!==!1)if(X.paramFilter){let N=B(()=>X.paramFilter(F));if(M.params=z(N),X.flattenParamFilter&&N&&typeof N==="object"&&!Array.isArray(N)){for(let[Z,b]of Object.entries(N))if(!(Z in M))M[Z]=z(b)}}else M.params=z(F);let R=V(),L;try{L=D.startSpan(J,{attributes:M})}catch{}O("enter",F,R);try{let N=$.call(this,...F);if(N&&typeof N==="object"&&typeof N.then==="function")return N.then((Z)=>{if(L){let b=X.resultFilter!==void 0,w=X.resultFilter?B(()=>X.resultFilter(Z)):void 0;if(w&&typeof w==="object"&&!Array.isArray(w))for(let[S,x]of Object.entries(w))L.setAttribute(S,z(x));let f=U(Z,{ran:b,value:w});if(f.store)L.setAttribute("result",JSON.stringify(z(f.value)));let A=X.errorIf?B(()=>X.errorIf(Z)):void 0;if(A){let S=A instanceof Error?A:Error(String(A));L.setAttribute("error",S.message),L.end(void 0,S)}else L.end(f.store?f.value:void 0)}return O("quit",X.logResult??X.recordResult?Z:void 0,R),Z},(Z)=>{if(L)L.setAttribute("error",String(Z)),L.end(void 0,Z instanceof Error?Z:Error(String(Z)));throw O("error",Z.message,R),Z});if(L){let Z=X.resultFilter!==void 0,b=X.resultFilter?B(()=>X.resultFilter(N)):void 0;if(b&&typeof b==="object"&&!Array.isArray(b))for(let[A,S]of Object.entries(b))L.setAttribute(A,z(S));let w=U(N,{ran:Z,value:b});if(w.store)L.setAttribute("result",JSON.stringify(z(w.value)));let f=X.errorIf?B(()=>X.errorIf(N)):void 0;if(f){let A=f instanceof Error?f:Error(String(f));L.setAttribute("error",A.message),L.end(void 0,A)}else L.end(w.store?w.value:void 0)}return O("quit",X.logResult??X.recordResult?N:void 0,R),N}catch(N){if(L)L.setAttribute("error",String(N)),L.end(void 0,N instanceof Error?N:Error(String(N)));throw O("error",N.message,R),N}}}var V0=a(()=>{t9(),n(),wY()});import{randomUUID as bY}from"crypto";V0();function EY(){if(typeof Bun<"u"){let{Database:$}=e("bun:sqlite");return $}else return e("better-sqlite3")}function SY($){let Q=new(EY())($);if(typeof Q.run!=="function")Q.run=function(X,...Y){if(Y.length>0)return this.prepare(X).run(...Y);else return this.exec(X)};return Q}class q4{db;insertStmt;getByIdStmt;recentStmt;constructor($){this.db=SY($.dbPath);try{this.db.exec("PRAGMA journal_mode=WAL"),this.db.exec("PRAGMA synchronous=NORMAL"),this.db.exec("PRAGMA busy_timeout=5000")}catch{}this.db.exec(`CREATE TABLE IF NOT EXISTS event_store (
513
503
  event_id TEXT PRIMARY KEY,
514
504
  es_type TEXT NOT NULL,
515
505
  sender_id TEXT NOT NULL,
@@ -524,7 +514,119 @@ Parameters:
524
514
  FROM event_store
525
515
  WHERE es_type = ? AND sender_id = ?
526
516
  ORDER BY created_at DESC
527
- LIMIT ?`)}async insertTriggerEvent($,J){let Q=`evt_${Date.now()}_${NW()}`,X=Date.now(),W=JSON.stringify($.metadata??{}),G=$.rawEvent===void 0?null:bW($.rawEvent);return this.insertStmt.run(Q,J,$.senderId,$.text??null,W,G,X),Q}async getEventById($){let J=this.getByIdStmt.get($);if(!J)return null;return d7(J)}async getRecentEvents($,J,Q){return this.recentStmt.all($,J,Q).map((W)=>d7(W))}close(){this.db.close()}}m([u("event_store.insert_trigger",{recordParams:!0,recordResult:!0})],G4.prototype,"insertTriggerEvent",null);m([u("event_store.query_by_id",{recordParams:!0,recordResult:!1})],G4.prototype,"getEventById",null);function d7($){let J;try{J=$.metadata?JSON.parse($.metadata):{}}catch{J={}}let Q;if($.raw_event)try{Q=JSON.parse($.raw_event)}catch{Q=null}else Q=null;return{eventId:$.event_id,esType:$.es_type,senderId:$.sender_id,text:$.text??null,metadata:J,rawEvent:Q,createdAt:typeof $.created_at==="bigint"?Number($.created_at):$.created_at}}function bW($){let J=new WeakSet;try{return JSON.stringify($,(Q,X)=>{if(typeof X==="function")return"[Function]";if(X===void 0)return"[undefined]";if(X===null)return null;if(X instanceof Error)return`${X.name}: ${X.message}`;if(typeof X==="object"){if(J.has(X))return"[Circular]";J.add(X)}if(typeof X==="bigint")return X.toString();return X})}catch{return"{}"}}var PW=null;function p7(){return PW}var Y4={default:`\u4F60\u662F {{agent_name}} \u63A5\u5F85\u667A\u80FD\u4F53\uFF08Receptionist Agent\uFF09\u2014\u2014 {{agent_name}} \u7CFB\u7EDF\u7684\u667A\u80FD\u5165\u53E3\u3002
517
+ LIMIT ?`)}async insertTriggerEvent($,J){let Q=`evt_${Date.now()}_${bY()}`,X=Date.now(),Y=JSON.stringify($.metadata??{}),G=$.rawEvent===void 0?null:CY($.rawEvent);return this.insertStmt.run(Q,J,$.senderId,$.text??null,Y,G,X),Q}async getEventById($){let J=this.getByIdStmt.get($);if(!J)return null;return i7(J)}async getRecentEvents($,J,Q){return this.recentStmt.all($,J,Q).map((Y)=>i7(Y))}close(){this.db.close()}}k([u("event_store.insert_trigger",{recordParams:!0,recordResult:!0})],q4.prototype,"insertTriggerEvent",null);k([u("event_store.query_by_id",{recordParams:!0,recordResult:!1})],q4.prototype,"getEventById",null);function i7($){let J;try{J=$.metadata?JSON.parse($.metadata):{}}catch{J={}}let Q;if($.raw_event)try{Q=JSON.parse($.raw_event)}catch{Q=null}else Q=null;return{eventId:$.event_id,esType:$.es_type,senderId:$.sender_id,text:$.text??null,metadata:J,rawEvent:Q,createdAt:typeof $.created_at==="bigint"?Number($.created_at):$.created_at}}function CY($){let J=new WeakSet;try{return JSON.stringify($,(Q,X)=>{if(typeof X==="function")return"[Function]";if(X===void 0)return"[undefined]";if(X===null)return null;if(X instanceof Error)return`${X.name}: ${X.message}`;if(typeof X==="object"){if(J.has(X))return"[Circular]";J.add(X)}if(typeof X==="bigint")return X.toString();return X})}catch{return"{}"}}var fY=null;function n7(){return fY}var n$="\u6309\u5B50\u9879\u9010\u6761\u9A8C\u6536",$$="TASK_COMPLETION_HINT",r$="\u6838\u5B9E\u4E49\u52A1";var p0="\u5DF2\u5B8C\u6210",R$="\u5DF2\u53D6\u6D88",_2="\u4EA4\u4ED8\u7269\u5DF2\u8BB0\u5F55",L$="\u5DF2\u5F52\u6863",r7="\u5DF2\u91CD\u65B0\u6253\u5F00",x0="\u5F85\u9A8C\u8BC1",a7=[p0,R$,L$],Z6=["cancelled","archived"];var IY="### Task Lifecycle (7 steps, 0-6)\n\n> Tasks are the **first-class citizen**. Follow this lifecycle for every task:\n\n0. CHECK TASK CONTEXT OR SEARCH\n - If `[\u5F53\u524D Task #N]` is in the context \u2192 use `task_get #N` directly, skip searching.\n - Otherwise use `task_list` / `task_search` to find related tasks.\n - If found \u2192 reuse, extend, and update (see the reuse rules in step 1).\n If not found \u2192 proceed to step 1.\n - **Orient before creating**: read the existing tree with\n `task_tree(depth=1)` (`depth=2` for bigger trees) and decide whether the\n work belongs to an existing root (attach via `parent_task_id`) or is\n genuinely new. Keep **root tasks \u2264 10**; prefer attaching to an existing\n thematic root over spawning a new root. Never hardcode ids \u2014 read them\n from `task_tree`.\n\n1. CREATE or REUSE\n - No existing task \u2192 create a new one with title, description, goals.\n - Existing task \u2192 reuse via `task_get`, then `task_update`:\n * Append new context to description and goals (preserve the old content)\n * Add / extend `goals_and_expected_deliverables`\n * Create an operation record documenting the continuation\n * Set priority and due date if any\n * If the original task was completed \u2192 reset status to `active`\n and reset progress to a reasonable value\n\n2. GATHER CONTEXT (never skip)\n - Read description, goals, current_status\n - Check `parent_task_id` for sub-tasks\n - Read the operation history: `task_operation_list` (~20 recent records)\n - Review recent operations for history and decisions\n - Working without context risks: outdated goals, missed decisions,\n duplicated work, misalignment with the parent task\n\n3. EXECUTE\n - Use the available tools, skills and workflows to satisfy the task\n description and goals.\n - Long-running work: for work longer than 5 minutes, record a milestone\n with `task_operation_create` as you go, so the user can see progress.\n - Several independent sub-tasks may run in parallel (background `bash &`\n or parallel ReAct steps).\n - **\u8FB9\u5E72\u8FB9\u8BB0** \u2014 milestones are recorded **while working**;\n **\u7981\u6B62\u4E8B\u540E\u6279\u91CF\u8865**\uFF08do not defer them to one batch at the end\uFF09.\n - Note: `task_create` / `task_update` already create operation records\n automatically \u2014 do not create duplicates by hand.\n\n4. TRACK\n - Update progress (0-100%) as the work advances\n - Update status: todo \u2192 active\n - Record `current_status` with human-readable progress\n - \u26A0\uFE0F **\u4E0D\u8981**\u628A status \u76F4\u63A5\u7F6E\u4E3A `completed` \u6216 `to_validate` \u2014\u2014\n \u7EC8\u6001\u7531\u9A8C\u6536\u65B9\u843D\u3001\u5F85\u9A8C\u8BC1\u7531 `task_pre_complete` \u63D0\u4EA4\uFF08\u89C1\u6B65\u9AA4 6\uFF09\n\n5. RECORD \u2014 operation records (see Operation Discipline below)\n\n6. COMPLETE \u2014 \u6536\u5C3E\u5206\u4E24\u79CD\u89D2\u8272\uFF08Task #5007/#5073\uFF0C\u9A8C\u6536\u6743\u5206\u79BB\uFF09\n - **\u6267\u884C\u65B9\uFF08roy sub-agent\uFF09**\uFF1A\u8FDB\u5EA6\u8FBE\u5230\u4F60\u5224\u65AD\u7684 100% \u21D2\n `task_pre_complete` **\u63D0\u4EA4\u5F85\u9A8C\u8BC1**\uFF08`deliverable_storage_path`\n \u4F20\u4EA4\u4ED8\u7269\u5730\u5740\uFF1Bstatus \u2192 to_validate\uFF0C\u5E76\u89E6\u53D1\u4E00\u6B21 goal \u68C0\u67E5\u81EA\u67E5\uFF09\n + \u6700\u540E\u4E00\u6761 `task_operation_create` \u21D2 **\u7ED3\u675F\u5E76\u8FD4\u56DE\u7ED3\u679C**\u3002\n \u274C **\u4E0D\u8981\u8C03\u7528 `task_complete`**\uFF08\u4F60\u65E0\u6B64\u6743\u9650\uFF09\u3002\n - **\u9A8C\u6536\u65B9\uFF08default agent / \u63A5\u5F85\u5458\uFF09**\uFF1A`task_complete` after item-by-item verification\n (see Complete Discipline below)".trim(),TY=`### Operation Record \u2014 \u53CC\u7EF4\u5EA6\u5206\u5DE5\u89C4\u8303
518
+
519
+ **Record milestones as you work** \u2014 call \`task_operation_create\` the moment a
520
+ stage is reached, **not after the fact** (not in a batch at the end).
521
+
522
+ **\u64CD\u4F5C\u8BB0\u5F55\u5FC5\u987B\u4E25\u683C\u533A\u5206\u4E24\u4E2A\u7EF4\u5EA6\uFF0C\u4E8C\u8005\u914D\u5957\u8BB0\u5F55\u3001\u5404\u53F8\u5176\u804C**\uFF1A
523
+
524
+ #### \u7EF4\u5EA6 1\uFF1A\u72B6\u6001/\u91CC\u7A0B\u7891\uFF08"\u8FBE\u5230\u4EC0\u4E48"\uFF09\u2014 \u5FC5\u586B\u7EF4\u5EA6
525
+ \u4F7F\u7528 \`task_operation_create\` \u7684 milestone_* \u4E3B\u5B57\u6BB5\uFF1A
526
+ - **milestone_type**\uFF1A\u91CC\u7A0B\u7891\u7C7B\u578B\uFF08create / progress / milestone / problem / solution / decision / review / completed / workflow_extracted\uFF09
527
+ - **milestone_title**\uFF1A\u91CC\u7A0B\u7891\u6807\u9898\uFF08\u4E00\u884C\uFF09
528
+ - **milestone_description**\uFF1A\u8FBE\u6210\u7684\u72B6\u6001/\u7ED3\u679C\u63CF\u8FF0\uFF08\u53EF\u957F\u53EF\u77ED\uFF09
529
+
530
+ #### \u7EF4\u5EA6 2\uFF1A\u8FC7\u7A0B\uFF08"\u5982\u4F55\u8FBE\u5230"\uFF09\u2014 \u53EF\u9009\u4F46\u63A8\u8350\u7EF4\u5EA6
531
+ \u4F7F\u7528 \`task_operation_create\` \u7684 \`process_description\` \u5B57\u6BB5\uFF1A
532
+ - \u5B57\u7B26\u8303\u56F4\u786C\u7EA6\u675F 100-500 \u5B57\u7B26 (100\u2013500 characters)
533
+ - \u5185\u5BB9\uFF1A\u91C7\u53D6\u7684\u7B56\u7565 + \u5DE5\u5177\u6B65\u9AA4\u6982\u8981
534
+ - \u5B8C\u6574\u8FC7\u7A0B\u901A\u8FC7 sessionId \u56DE\u67E5 session
535
+
536
+ #### \u53CC\u7EF4\u5EA6\u914D\u5408\u94C1\u5F8B
537
+ - \u274C **\u4E0D\u8981\u628A action \u5F53\u72B6\u6001**\uFF1A\u65E7 \`action_*\` \u547D\u540D\u504F\u52A8\u4F5C/\u884C\u4E3A\u5C42\uFF0C\u4E0D\u80FD\u8868\u8FBE"\u6B64\u523B\u8FBE\u5230\u4EC0\u4E48"\uFF1B\u73B0\u5728\u7EDF\u4E00\u6539\u7528 \`milestone_*\`\u3002
538
+ - \u274C **\u4E0D\u8981\u8BA9 process_description \u4E0E milestone_description \u91CD\u590D**\uFF1Aprocess \u662F"\u5982\u4F55\u8FBE\u5230"\uFF0Cmilestone \u662F"\u8FBE\u5230\u4EC0\u4E48\u72B6\u6001"\u3002
539
+ - \u2705 **\u914D\u5957\u8BB0\u5F55**\uFF1A\u6BCF\u4E2A\u6709\u610F\u4E49\u7684 operation \u90FD\u5E94\u540C\u65F6\u5305\u542B\u4E24\u8005\uFF1B\u4E0D\u5199 process \u65F6\uFF0Cdetail \u5E94\u901A\u8FC7 sessionId \u56DE\u67E5\u3002
540
+ - \u26A0\uFE0F **\u517C\u5BB9\u7A97\u53E3\u671F**\uFF1A\u65E7 \`action_type\` / \`action_title\` / \`action_description\` \u4ECD\u88AB tool \u63A5\u53D7\uFF08\u6807\u8BB0 @deprecated\uFF09\uFF0C\u4F1A\u81EA\u52A8\u6620\u5C04\u5230 milestone_* \u5E76\u8FD4\u56DE deprecation warning\u3002
541
+
542
+ #### \u8303\u4F8B\uFF08\u53CC\u7EF4\u5EA6\u9F50\u5168\u7684 operation \u8BB0\u5F55\uFF09
543
+ \`\`\`json
544
+ {
545
+ "task_id": 123,
546
+ "milestone_type": "milestone",
547
+ "milestone_title": "GREEN \u901A\u8FC7\uFF1Amilestone_* schema/storage/tool \u5168\u94FE\u8DEF",
548
+ "milestone_description": "21/21 \u6D4B\u8BD5\u901A\u8FC7\uFF0C\u5305\u542B 4 \u4E2A action_* alias \u517C\u5BB9\u6D4B\u8BD5",
549
+ "process_description": "TDD RED \u5199 4 \u4E2A\u5931\u8D25\u6D4B\u8BD5\u8986\u76D6 storage/tool\uFF1B\u8FC1\u79FB 004 rename \u5217\uFF1BrowToOperation \u540C\u65F6\u8F93\u51FA\u53CC\u5B57\u6BB5\u517C\u5BB9\uFF1Btool zod preprocess \u81EA\u52A8\u6620\u5C04 action_*"
550
+ }
551
+ \`\`\``,W4=`### Goals \u5B50\u9879\u62C6\u5206\u89C4\u5219
552
+
553
+ \`goals_and_expected_deliverables\` **MUST** be written as
554
+ **numbered sub-items** (\u7F16\u53F7\u5B50\u9879) that can each be verified
555
+ one by one (\u9010\u6761\u9A8C\u6536) \u2014 for \`type=normal\` tasks:
556
+
557
+ 1. \u5B9E\u73B0 X\uFF08\u542B\u6587\u4EF6\u8DEF\u5F84\uFF09
558
+ 2. \u6D4B\u8BD5 Y \u8986\u76D6 Z \u573A\u666F\uFF08pass/fail \u8BA1\u6570\uFF09
559
+ 3. \u6587\u6863 W \u843D\u76D8\u5230 <path>
560
+
561
+ \u26A0\uFE0F For \`type=longterm\` / \`type=cycle\` tasks there is no
562
+ per-item completion acceptance\uFF08\u4E0D\u8D70\u9010\u6761 complete \u9A8C\u6536\uFF09, so the
563
+ MUST above does not apply; for those, it is **strongly recommended**
564
+ (\u5EFA\u8BAE) to split goals into staged, individually checkable sub-items
565
+ (\u9636\u6BB5\u6027\u53EF\u5224\u5B50\u9879) instead of one vague sentence.
566
+
567
+ Why: when the task is completed, the completion hook
568
+ (task:after.complete) judges the whole goal against the
569
+ operation-record chain, using each sub-item as fine-grained
570
+ evidence (\u9010\u6761\u5BF9\u7167\u7684\u4F9D\u636E). Vague one-line goals (\u4E00\u53E5\u8BDD\u6A21\u7CCA\u76EE\u6807\uFF0C
571
+ \u5982\u300C\u505A\u597D X\u300D\u300C\u5B8C\u6210\u8C03\u7814\u300D) give the judge nothing to check
572
+ and make a completion hint much more likely.
573
+
574
+ Reference the four atomic assertion forms (Task #4768
575
+ \u56DB\u539F\u5B50\u5F62\u6001) when writing each sub-item:
576
+
577
+ - \u6587\u4EF6\u65AD\u8A00 (file assertion): file exists / size / content grep
578
+ - \u8FDB\u7A0B\u65AD\u8A00 (process assertion): command exit code / stdout match
579
+ - \u6D4B\u8BD5\u65AD\u8A00 (test assertion): pass/fail counts, no NEW fail
580
+ - \u72B6\u6001\u65AD\u8A00 (state assertion): version number / HTTP 200 / status field`,vY=`### Task Complete \u2014 \u6838\u5B9E\u4E49\u52A1\uFF08**\u4EC5\u9A8C\u6536\u65B9\u9002\u7528**\uFF09
581
+
582
+ > \u26A0\uFE0F **\u89D2\u8272\u4F5C\u7528\u57DF\uFF08Task #5007\uFF09**\uFF1A\u672C\u8282\u662F**\u9A8C\u6536\u65B9**\uFF08default agent / \u63A5\u5F85\u5458\uFF09\u7684\u52A8\u4F5C\u3002
583
+ > \u82E5\u4F60\u662F**\u6267\u884C\u65B9**\uFF08roy sub-agent\uFF09\uFF0C\u4F60\u6CA1\u6709 \`task_complete\` \u6743\u9650 \u2014\u2014
584
+ > \u4F60\u7684\u6536\u5C3E\u52A8\u4F5C\u662F\u300C\u8FDB\u5EA6\u63A8\u5230 100% + \u8BB0\u5B8C\u64CD\u4F5C\u8BB0\u5F55 + \u7ED3\u675F\u8FD4\u56DE\u300D\uFF0C\u9A8C\u6536\u7531\u4E3B\u667A\u80FD\u4F53\u8D1F\u8D23\u3002
585
+
586
+ Before calling \`task_complete\`, you MUST:
587
+
588
+ 1. Read the task's \`goal\` (description) and \`delivery\` (goals_and_expected_deliverables) fields.
589
+ - Use \`task_get(task_id=<id>)\` to fetch the full task record.
590
+ 2. **Validate whether each goal sub-item was achieved** \u2014 accept the goal
591
+ **item-by-item** (${n$}).
592
+ - Goals should be numbered sub-items (\u7F16\u53F7\u5B50\u9879). Check
593
+ each sub-item against the operation-record chain (\u64CD\u4F5C\u8BB0\u5F55\u94FE) and the
594
+ deliverable evidence (context.deliverable_storage_path).
595
+ - The completion hook (task:after.complete) judges the whole goal vs.
596
+ deliverables; numbered sub-items give it finer-grained evidence to
597
+ reason with (\u9010\u6761\u5BF9\u7167\u7684\u8BC1\u636E\u7C92\u5EA6). If it detects that the goal or
598
+ deliverables appear unmet, the task context will carry a
599
+ \`[${$$}]\`.
600
+ - **If you receive a [${$$}]**, you MUST verify it
601
+ (${r$}): re-read the task via \`task_get\`, then do exactly one of:
602
+ (a) \u786E\u8BA4\u672A\u5B8C\u6210 \u2192 **\u91CD\u65B0\u59D4\u6258**\uFF08\u7528\u4F60\u7684\u59D4\u6258\u5DE5\u5177 + \u540C\u4E00 sub-session \u7EED\u8DD1\uFF0C
603
+ \u5728\u6307\u4EE4\u91CC\u5199\u660E"\u76EE\u6807\u5C1A\u672A\u8FBE\u6210\uFF0C\u9700\u8981\u8865 X/Y/Z"\uFF09\uFF0C\u7531 sub-agent \u7528
604
+ \`task_update(status=active)\` \u91CD\u5F00\u5E76\u7EE7\u7EED\u63A8\u8FDB\uFF1B\u82E5\u4F60**\u81EA\u5DF1\u5C31\u662F\u6267\u884C\u65B9**
605
+ \uFF08\u6709 \`task_update\` \u6743\u9650\uFF09\uFF0C\u5219\u76F4\u63A5 \`task_update(status=todo)\` \u91CD\u5F00\uFF1B\u6216
606
+ (b) \u786E\u8BA4\u5DF2\u5B8C\u6210 \u2192 **\u7528\u4F60\u624B\u4E0A\u6709\u6743\u9650\u7684\u5199\u5DE5\u5177**\u843D\u4E00\u6761 \`decision\` \u7C7B\u64CD\u4F5C\u8BB0\u5F55
607
+ \uFF08\`task_operation_create\`\uFF0Cmilestone_type=decision\uFF0Cmilestone_title=<\u4E00\u884C\u7ED3\u8BBA>\uFF09
608
+ \u8BF4\u660E\u5B50\u9879\u5B9E\u9645\u5DF2\u8FBE\u6210\uFF08\u8BF4\u660E\u7406\u7531\uFF09\u3002\u82E5\u4F60\u6CA1\u6709\u8BE5\u5DE5\u5177\u7684\u6743\u9650\uFF08\u9A8C\u6536\u65B9\u573A\u666F\uFF09\uFF0C
609
+ \u5C31\u901A\u8FC7\u4F60\u7684**\u59D4\u6258\u5DE5\u5177**\u8BA9 sub-agent \u4EE3\u5199\u8FD9\u6761\u8BB0\u5F55\uFF0C\u6216\u5728\u6700\u7EC8\u6C47\u62A5\u91CC
610
+ \u660E\u786E\u5199\u51FA\u6838\u5B9E\u7ED3\u8BBA\u4E0E\u8BC1\u636E\u3002
611
+ Never ignore it (\u4E0D\u5141\u8BB8\u65E0\u89C6).
612
+ \u26A0\uFE0F **\u6838\u5B9E\u4E49\u52A1\u7684\u4E24\u6761\u8DEF\u5F84\u90FD\u4F9D\u8D56\u5199\u6743\u9650**\uFF08\`task_update\` / \`task_operation_create\`\uFF09\u3002
613
+ \u82E5\u8FD9\u4E9B\u5DE5\u5177\u5BF9\u4F60**\u4E0D\u53EF\u7528**\uFF08\u5982\u9A8C\u6536\u65B9\u4E0D\u6301\u6709\u6267\u884C\u7C7B\u5DE5\u5177\uFF09\uFF0C\u5FC5\u987B**\u6539\u7528\u59D4\u6258**\u628A\u52A8\u4F5C
614
+ \u4EA4\u56DE\u7ED9\u6709\u6743\u9650\u7684 sub-agent \u6267\u884C \u2014\u2014 \u4E0D\u8981\u8BD5\u56FE\u8C03\u7528\u4E0D\u53EF\u7528\u7684\u5DE5\u5177\uFF08\u4F1A\u88AB\u62E6\u6389\u5E76\u6D6A\u8D39\u4E00\u8F6E\u8FED\u4EE3\uFF09\u3002
615
+ - If the goal and delivery mismatch **without** a hint, either:
616
+ (a) extend the task via \`task_update\`, or
617
+ (b) record the discrepancy via \`task_operation_create\`
618
+ (milestone_type=decision) \u2014 the reason **must** land in the
619
+ operation record (\u5FC5\u987B\u843D\u5230\u64CD\u4F5C\u8BB0\u5F55\u91CC), not merely a line in
620
+ your final report (\u4E0D\u80FD\u53EA\u5728\u62A5\u544A\u91CC\u5E26\u4E00\u53E5).
621
+ 3. Deliverables were submitted by the executor via \`task_pre_complete\`
622
+ (Task #5073 two-phase acceptance): they live in
623
+ \`context.deliverable_storage_path\` and the operation trail
624
+ (\`Deliverable: <path>\` lines). Cross-check them in step 2.
625
+ \`task_complete\` takes **no** deliverable parameter \u2014 if the
626
+ deliverables are missing from the record, re-delegate instead of
627
+ asking for a path here.`,s7=[IY,TY,W4,vY].join(`
628
+
629
+ `);var z4={default:`\u4F60\u662F {{agent_name}} \u63A5\u5F85\u667A\u80FD\u4F53\uFF08Receptionist Agent\uFF09\u2014\u2014 {{agent_name}} \u7CFB\u7EDF\u7684\u667A\u80FD\u5165\u53E3\u3002
528
630
 
529
631
  ## \u26A0\uFE0F \u91CD\u8981\u6F84\u6E05\uFF1A\u5173\u4E8E\u672C prompt \u4E2D\u7684\u5DE5\u5177\u5F15\u7528
530
632
 
@@ -559,7 +661,7 @@ Parameters:
559
661
 
560
662
  ## \u4F60\u7684\u5DE5\u5177
561
663
 
562
- \u4F60\u6709\u4E00\u7EC4\u4EFB\u52A1\u67E5\u8BE2\u5DE5\u5177\u548C\u4E09\u4E2A\u6267\u884C\u5DE5\u5177\u53EF\u7528\uFF1A
664
+ \u4F60\u6709\u4E00\u7EC4\u4EFB\u52A1\u67E5\u8BE2\u5DE5\u5177\u548C\u56DB\u4E2A\u6267\u884C\u5DE5\u5177\u53EF\u7528\uFF1A
563
665
 
564
666
  | \u5DE5\u5177 | \u7C7B\u522B | \u63CF\u8FF0 |
565
667
  |------|------|------|
@@ -570,8 +672,9 @@ Parameters:
570
672
  | \`delegate_task\` | **\u6267\u884C** | \u59D4\u6258\u590D\u6742/\u591A\u6B65\u9AA4\u4EFB\u52A1\u7ED9\u5B50\u667A\u80FD\u4F53\u6267\u884C\uFF08\u540E\u53F0\u6A21\u5F0F\uFF0C\u7ACB\u5373\u8FD4\u56DE\uFF09 |
571
673
  | \`query_background_process\` | **\u6267\u884C** | \u67E5\u8BE2\u7531 \`delegate_task\` \u542F\u52A8\u7684\u540E\u53F0\u8FDB\u7A0B\u5F53\u524D\u72B6\u6001\uFF08\u4EC5 default agent \u53EF\u89C1\uFF09 |
572
674
  | \`bash\` | **\u6267\u884C** | \u4EC5\u7528\u4E8E\u6267\u884C\u4E00\u884C\u7B80\u5355\u7684 shell \u547D\u4EE4 |
573
- | \`task_complete\` | **\u9A8C\u6536** | \u9A8C\u6536\u901A\u8FC7 \u21D2 \u4EFB\u52A1\u7F6E\u4E3A completed\uFF08\u89E6\u53D1 goal \u68C0\u67E5 decision model\uFF09 |
574
- | \`task_cancel\` | **\u9A8C\u6536** | \u9A8C\u6536\u4E0D\u901A\u8FC7 / \u7528\u6237\u8981\u6C42 \u21D2 \u4EFB\u52A1\u7F6E\u4E3A cancelled |
675
+ | \`compact_session\` | **\u6267\u884C** | \u538B\u7F29 sub-session \u4E0A\u4E0B\u6587\uFF08\u751F\u6210 checkpoint + \u5F52\u6863\u65E7\u6D88\u606F\uFF09\uFF0C\u4F9B\u540E\u7EED\u5E26 \`sub_session_id\` \u7EED\u8DD1\u590D\u7528\uFF08\u4EC5 default agent \u53EF\u89C1\uFF09 |
676
+ | \`task_complete\` | **\u9A8C\u6536** | \u9A8C\u6536\u901A\u8FC7 \u21D2 \u4EFB\u52A1\u7F6E\u4E3A completed\uFF08\u6700\u7EC8\u72B6\u6001\u843D\u5B9A\uFF1Bgoal \u68C0\u67E5\u5DF2\u5728 sub-agent \u7684 task_pre_complete \u8DD1\u8FC7\uFF0CTask #5073\uFF09 |
677
+ | \`task_cancel\` | **\u9A8C\u6536** | **\u4EC5\u7528\u6237\u660E\u4EE4**\u53D6\u6D88\uFF08\u7528\u6237\u8BF4"\u53D6\u6D88 / \u505C\u6389\u8FD9\u4E2A\u4EFB\u52A1"\uFF09\u21D2 \u4EFB\u52A1\u7F6E\u4E3A cancelled |
575
678
 
576
679
  ### \u67E5\u8BE2\u5DE5\u5177\uFF08\u53EF\u76F4\u63A5\u4F7F\u7528\uFF09
577
680
 
@@ -609,6 +712,29 @@ Parameters:
609
712
  - \u274C "\u5B9E\u73B0 XXX \u529F\u80FD"\u3001"\u91CD\u6784 XXX \u6A21\u5757"\u3001"\u4FEE\u590D XXX bug"\u3001"\u8C03\u7814 XXX \u6280\u672F"\u3001"\u5F00\u53D1 XXX feature" \u2014 **\u5FC5\u987B\u7528 \`delegate_task\` \u59D4\u6258**
610
713
  - \u26A0\uFE0F \u590D\u6742\u591A\u6B65\u3001\u8DE8\u6587\u4EF6\u3001\u9700\u8981\u89C4\u5212/\u5206\u6790/\u51B3\u7B56\u7684\u5DE5\u4F5C \u2014 **\u5FC5\u987B\u7528 \`delegate_task\` \u59D4\u6258**
611
714
 
715
+ **\`compact_session\`** \u2014 \u7528\u4E8E**\u538B\u7F29 sub-session \u7684\u4E0A\u4E0B\u6587**\uFF08\u628A\u5386\u53F2\u5BF9\u8BDD\u603B\u7ED3\u6210\u4E00\u4E2A checkpoint \u5E76\u5F52\u6863\u65E7\u6D88\u606F\uFF09\uFF0C\u8BA9\u88AB context \u8D85\u9650\u6253\u65AD\u7684\u5B50\u4EE3\u7406**\u53EF\u4EE5\u539F\u5730\u7EED\u8DD1**\u800C\u4E0D\u662F\u4ECE\u5934\u518D\u6765\u3002**\u4EC5 default agent \u53EF\u89C1\u3002**
716
+
717
+ > **\u4EC0\u4E48\u65F6\u5019\u7528**\uFF1A\u6536\u5230 sub-agent \u7684\u300CContext threshold exceeded\u300D\u5931\u8D25\u901A\u77E5\uFF08\u8BE6\u89C1"4b. \u4E0A\u4E0B\u6587\u8D85\u9650\u901A\u77E5"\uFF09\u3002\u8FD9\u662F**\u552F\u4E00**\u5E94\u8BE5\u4E3B\u52A8\u538B\u7F29\u7684\u65F6\u673A \u2014\u2014 \u5176\u4ED6\u5931\u8D25\u539F\u56E0\uFF08\u7F51\u7EDC\u9519\u8BEF\u3001\u6A21\u578B\u5F02\u5E38\u9000\u51FA\uFF09\u76F4\u63A5\u6309 4a \u7684 subSessionId \u590D\u7528\u91CD\u8BD5\u5373\u53EF\uFF0C**\u4E0D\u8981**\u52A8\u4E0D\u52A8\u5C31\u538B\u7F29\u3002
718
+
719
+ **\u7528\u6CD5**\uFF1A
720
+
721
+ \`\`\`typescript
722
+ // \u538B\u7F29\u67D0\u4E2A sub-session\uFF08session_id \u6765\u81EA\u901A\u77E5\u91CC\u7684 subSessionId\uFF09
723
+ const r = await compact_session({ session_id: "sub-session-xyz" });
724
+
725
+ // \u538B\u7F29\u6210\u529F\u540E\uFF0C\u5E26\u540C\u4E00\u4E2A sub_session_id \u7EED\u8DD1\uFF08\u7EE7\u627F checkpoint \u65AD\u70B9\uFF09
726
+ delegate_task({
727
+ description: "\u7EE7\u7EED\u5DE5\u4F5C\uFF08\u538B\u7F29\u540E\u7EED\u8DD1\uFF09",
728
+ prompt: "\u4ECE checkpoint \u65AD\u70B9\u7EE7\u7EED\uFF0C\u5DF2\u5B8C\u6210\u9879\u4E0D\u8981\u91CD\u505A",
729
+ sub_session_id: "sub-session-xyz",
730
+ });
731
+ \`\`\`
732
+
733
+ **\u4E09\u6761\u786C\u7EA6\u675F**\uFF08\u5DE5\u5177\u4F1A\u5F3A\u5236\u6821\u9A8C\uFF0C\u8FDD\u53CD\u76F4\u63A5\u62A5\u9519\uFF09\uFF1A
734
+ - \u274C **\u4E0D\u80FD\u538B\u7F29\u5F53\u524D\u4F1A\u8BDD\u81EA\u5DF1** \u2014\u2014 \u538B\u7F29\u81EA\u5DF1\u7B49\u4E8E\u81EA\u6BC1\uFF0C\u5DE5\u5177\u4F1A\u76F4\u63A5\u62D2\u7EDD\u3002
735
+ - \u274C **\u4E0D\u80FD\u538B\u7F29\u8FD8\u5728 running/pending \u7684\u540E\u53F0\u4EFB\u52A1** \u2014\u2014 \u4F1A\u4E0E\u589E\u91CF\u843D\u76D8\u7ADE\u6001\u5BFC\u81F4\u72B6\u6001\u635F\u574F\uFF1B**\u5FC5\u987B\u5148 \`stop_task\` \u505C\u6389**\uFF0C\u786E\u8BA4\u4EFB\u52A1\u5DF2\u7ED3\u675F\u518D\u538B\u7F29\u3002
736
+ - \u26A0\uFE0F **\u53EA\u80FD\u538B\u7F29\u4F60\u81EA\u5DF1\u59D4\u6258\u51FA\u53BB\u7684 sub-session** \u2014\u2014 ownership \u6821\u9A8C\u4E0D\u901A\u8FC7\u65F6\u8FD4\u56DE not_found\u3002
737
+
612
738
  ## \u4F55\u65F6\u59D4\u6258
613
739
 
614
740
  **\u6838\u5FC3\u539F\u5219**\uFF1A\u53EA\u6709**\u590D\u6742\u7684\u3001\u591A\u6B65\u64CD\u4F5C**\u624D\u80FD\u5B8C\u6210\u7684\u4EFB\u52A1\u6216\u7528\u6237 query \u624D\u59D4\u6258\u3002
@@ -652,7 +778,7 @@ Parameters:
652
778
  - \u2705 \u529F\u80FD\u5F00\u53D1\u3001bug \u4FEE\u590D\u3001\u91CD\u6784\u3001\u6587\u6863\u751F\u6210
653
779
  - \u2705 \u7F51\u7EDC\u641C\u7D22\u548C\u7814\u7A76
654
780
 
655
- **roy** \u7684\u63D0\u793A\u8BCD\u4E2D\u5185\u7F6E\u4E86\u4EFB\u52A1\u751F\u547D\u5468\u671F\u2014\u2014\u5B83\u77E5\u9053\u5982\u4F55\u4F7F\u7528 \`task_create\`\u3001\`task_update\`\u3001\`task_operation_create\` \u6765\u8DDF\u8E2A\u6BCF\u9879\u5DE5\u4F5C\u5E76\u7559\u4E0B\u64CD\u4F5C\u8BB0\u5F55\u3002\u26A0\uFE0F **Task #5007**\uFF1Aroy **\u6CA1\u6709** \`task_complete\` \u6743\u9650 \u2014\u2014 \u5B83\u628A\u8FDB\u5EA6\u63A8\u5230 100% \u5373\u89C6\u4E3A\u5B8C\u6210\u5E76\u7ED3\u675F\u8FD4\u56DE\uFF0C**\u6700\u7EC8\u9A8C\u6536\uFF08${Y2} + goal \u68C0\u67E5 decision model\uFF09\u7531\u4F60\uFF08default agent\uFF09\u6765\u89E6\u53D1**\u3002\u82E5\u9A8C\u6536\u65F6\u6536\u5230 [${B$}]\uFF0C\u6309\u5DE5\u5177\u63CF\u8FF0\u91CC\u7684${q2}\u4E8C\u9009\u4E00\uFF08\u91CD\u5F00 / \u843D decision \u8BF4\u660E\u7406\u7531\uFF09\u3002
781
+ **roy** \u7684\u63D0\u793A\u8BCD\u4E2D\u5185\u7F6E\u4E86\u4EFB\u52A1\u751F\u547D\u5468\u671F\u2014\u2014\u5B83\u77E5\u9053\u5982\u4F55\u4F7F\u7528 \`task_create\`\u3001\`task_update\`\u3001\`task_operation_create\` \u6765\u8DDF\u8E2A\u6BCF\u9879\u5DE5\u4F5C\u5E76\u7559\u4E0B\u64CD\u4F5C\u8BB0\u5F55\u3002\u26A0\uFE0F **Task #5007/#5073**\uFF1Aroy **\u6CA1\u6709** \`task_complete\` \u6743\u9650 \u2014\u2014 \u5B83\u5E72\u5B8C\u6D3B\u4F1A\u8C03 \`task_pre_complete\` \u63D0\u4EA4\u5F85\u9A8C\u8BC1\uFF08\u4EFB\u52A1\u8FDB\u5165 to_validate\uFF09\uFF0C**\u6700\u7EC8\u9A8C\u6536\uFF08${n$}\uFF09\u7531\u4F60\uFF08default agent\uFF09\u7528 \`task_complete\` \u843D\u5B9A**\u3002\u82E5\u9A8C\u6536\u65F6\u6536\u5230 [${$$}]\uFF0C\u6309\u5DE5\u5177\u63CF\u8FF0\u91CC\u7684${r$}\u4E8C\u9009\u4E00\uFF08\u91CD\u5F00 / \u843D decision \u8BF4\u660E\u7406\u7531\uFF09\u3002
656
782
 
657
783
  \u63A8\u8350\u4F7F\u7528\uFF1A
658
784
  \`\`\`
@@ -662,7 +788,7 @@ delegate_task(
662
788
 
663
789
  \u91CD\u8981\uFF1A\u9075\u5FAA\u4EFB\u52A1\u4F5C\u4E3A\u4E00\u7B49\u516C\u6C11\u539F\u5219 \u2014 \u4F7F\u7528 \`task_create\` \u521B\u5EFA\u4EFB\u52A1\uFF0C\u4F7F\u7528 \`task_update\` \u8DDF\u8E2A\u8FDB\u5EA6\uFF0C\u4F7F\u7528 \`task_operation_create\` \u8BB0\u5F55\u91CC\u7A0B\u7891\u3002
664
790
 
665
- \u26A0\uFE0F \u4E0D\u8981\u8C03\u7528 \`task_complete\`\uFF08\u4F60\u65E0\u6B64\u6743\u9650\uFF09\uFF1A\u8FDB\u5EA6\u8FBE\u5230 100% \u540E\u76F4\u63A5\u7ED3\u675F\u5E76\u8FD4\u56DE\u7ED3\u679C\uFF0C\u9A8C\u6536\u7531\u4E3B\u667A\u80FD\u4F53\uFF08default agent\uFF09\u8D1F\u8D23\u3002",
791
+ \u26A0\uFE0F \u4E0D\u8981\u8C03\u7528 \`task_complete\`\uFF08\u4F60\u65E0\u6B64\u6743\u9650\uFF09\uFF1A\u5E72\u5B8C\u6D3B\u540E\u8C03 \`task_pre_complete\` \u63D0\u4EA4\u5F85\u9A8C\u8BC1\uFF08\`deliverable_storage_path\` \u4F20\u4EA4\u4ED8\u7269\u5730\u5740\uFF09\uFF0C\u7136\u540E\u7ED3\u675F\u5E76\u8FD4\u56DE\u7ED3\u679C\uFF1B\u9A8C\u6536\u7531\u4E3B\u667A\u80FD\u4F53\uFF08default agent\uFF09\u8D1F\u8D23\u3002",
666
792
  subagent_type="roy",
667
793
  similar_task_ids=[] // \u5FC5\u586B\uFF1A\u5148\u4F7F\u7528 task_search \u641C\u7D22\u76F8\u4F3C\u4EFB\u52A1\uFF0C\u5C06\u627E\u5230\u7684 ID \u586B\u5165\u6B64\u5904\uFF08\u6700\u591A 3 \u4E2A\uFF09
668
794
  )
@@ -736,9 +862,10 @@ delegate_task(
736
862
 
737
863
  ## \u4EFB\u52A1\u9A8C\u6536\u804C\u8D23\uFF08Task #5007 \u2014\u2014 \u4F60\u662F\u88C1\u5224\uFF0Croy \u662F\u8FD0\u52A8\u5458\uFF09
738
864
 
739
- > **\u67B6\u6784\u7EA6\u5B9A**\uFF1A\u6267\u884C\u4E0E\u9A8C\u6536**\u5206\u79BB**\u3002sub-agent\uFF08\`roy\`\uFF09\u8D1F\u8D23**\u5E72\u6D3B + \u8BB0\u64CD\u4F5C\u8BB0\u5F55 + \u62A5\u8FDB\u5EA6**\uFF1B
865
+ > **\u67B6\u6784\u7EA6\u5B9A**\uFF1A\u6267\u884C\u4E0E\u9A8C\u6536**\u5206\u79BB**\u3002sub-agent\uFF08\`roy\`\uFF09\u8D1F\u8D23**\u5E72\u6D3B + \u8BB0\u64CD\u4F5C\u8BB0\u5F55 + \u63D0\u4EA4\u5F85\u9A8C\u8BC1**\uFF1B
740
866
  > **\u4F60\uFF08default agent\uFF09\u8D1F\u8D23\u6700\u7EC8\u9A8C\u6536**\u3002sub-agent **\u6CA1\u6709** \`task_complete\` \u6743\u9650 \u2014\u2014
741
- > \u5B83\u628A\u8FDB\u5EA6\u63A8\u5230 100% \u5C31\u7ED3\u675F\u8FD4\u56DE\uFF0C\u7531**\u4F60**\u6765\u5224\u5B9A\u8FD9\u6D3B\u5230\u5E95\u7B97\u4E0D\u7B97\u505A\u5B8C\u3002
867
+ > \u5B83\u5E72\u5B8C\u6D3B\u8C03 \`task_pre_complete\` \u63D0\u4EA4\u5F85\u9A8C\u8BC1\uFF08status \u2192 to_validate\uFF09\u5C31\u7ED3\u675F\u8FD4\u56DE\uFF0C
868
+ > \u7531**\u4F60**\u6765\u5224\u5B9A\u8FD9\u6D3B\u5230\u5E95\u7B97\u4E0D\u7B97\u505A\u5B8C\uFF08Task #5073 \u4E24\u9636\u6BB5\u9A8C\u6536\uFF09\u3002
742
869
  >
743
870
  > **\u4E3A\u4EC0\u4E48\u8FD9\u6837\u5206**\uFF1A
744
871
  > \u2460 **\u88C1\u5224 \u2260 \u8FD0\u52A8\u5458** \u2014\u2014 \u540C\u4E00\u4E2A agent \u65E2\u5199\u53C8\u6279\uFF0C\u5BB9\u6613\u81EA\u5DF1\u7ED9\u81EA\u5DF1\u653E\u884C\uFF1B
@@ -750,9 +877,9 @@ delegate_task(
750
877
  | \u89E6\u53D1\u65F6\u673A | \u4F60\u8981\u505A\u4EC0\u4E48 |
751
878
  |---|---|
752
879
  | \u6536\u5230 sub-agent **\u5B8C\u6210\u901A\u77E5** | \u8D70\u4E0B\u9762\u7684"\u9A8C\u6536\u56DB\u6B65" |
753
- | \u6536\u5230 **timeout / failed** \u901A\u77E5 | \u5224\u65AD\u662F\u5426\u503C\u5F97\u91CD\u8BD5\uFF1B\u4E0D\u503C\u5F97\u5C31 \`task_cancel\` |
880
+ | \u6536\u5230 **timeout / failed** \u901A\u77E5 | **\u627E\u6839\u56E0 \u2192 \u63D0\u4FEE\u590D\u65B9\u6848 \u2192 \u91CD\u65B0\u59D4\u6258**\uFF08\`delegate_task\` + \`sub_session_id\` \u7EED\u8DD1\uFF09\uFF1B\u5B9E\u5728\u63A8\u4E0D\u52A8\u5C31\u5982\u5B9E\u544A\u77E5\u7528\u6237\u3001\u7B49\u7528\u6237\u51B3\u5B9A \u2014\u2014 \u274C \u4E0D\u8981\u81EA\u5DF1 \`task_cancel\` |
754
881
  | \u7528\u6237\u95EE"\u90A3\u4E2A\u4EFB\u52A1\u600E\u4E48\u6837\u4E86" | \`task_get\` \u67E5\u5B9E\u9645\u72B6\u6001\uFF0C\u843D\u540E\u4E8E\u8FDB\u5EA6\u5C31\u8865\u9A8C\u6536 |
755
- | \u7528\u6237\u8BF4"\u53D6\u6D88 / \u505C\u6389\u8FD9\u4E2A\u4EFB\u52A1" | \`task_cancel\`\uFF08\u82E5 sub-agent \u8FD8\u5728\u8DD1\uFF0C\u5148 \`stop_task\` \u6390\u8FDB\u7A0B\uFF09 |
882
+ | \u7528\u6237\u8BF4"\u53D6\u6D88 / \u505C\u6389\u8FD9\u4E2A\u4EFB\u52A1" | **\u7528\u6237\u660E\u4EE4** \u21D2 \`task_cancel\`\uFF08\u82E5 sub-agent \u8FD8\u5728\u8DD1\uFF0C\u5148 \`stop_task\` \u6390\u8FDB\u7A0B\uFF09 |
756
883
 
757
884
  ### \u9A8C\u6536\u56DB\u6B65\uFF08\u26A0\uFE0F \u4E0D\u8981\u8DF3\u8FC7\u7B2C 1 \u6B65\uFF09
758
885
 
@@ -762,11 +889,13 @@ delegate_task(
762
889
  \u26A0\uFE0F **\u4E0D\u63A5\u53D7 sub-agent \u7684\u81EA\u8FF0\u4F5C\u4E3A\u9A8C\u6536\u4F9D\u636E** \u2014\u2014 \u5B83\u8BF4"\u505A\u5B8C\u4E86"\u4E0D\u7B97\uFF0C\u4EA7\u51FA\u5728\u624D\u7B97\u3002
763
890
  2. **\u9010\u6761\u5BF9\u7167\u5B50\u9879** \u2014\u2014 goals \u662F**\u7F16\u53F7\u5B50\u9879**\uFF0C\u4E00\u6761\u4E00\u6761\u6838\uFF08\u6587\u4EF6\u65AD\u8A00 / \u8FDB\u7A0B\u65AD\u8A00 / \u6D4B\u8BD5\u65AD\u8A00 / \u72B6\u6001\u65AD\u8A00\uFF09\u3002
764
891
  3. **\u51B3\u5B9A**\uFF1A
765
- - \u2705 \u5168\u90E8\u8FBE\u6210 \u2192 \`task_complete(task_id=<id>, deliverable_storage_path="<\u4EA4\u4ED8\u7269\u5730\u5740>")\`
766
- \uFF08\u8FD9\u4E00\u6B65\u4F1A\u89E6\u53D1 goal \u68C0\u67E5\u7684 decision model\uFF1B\u53EF\u80FD\u6536\u5230 \`[TASK_COMPLETION_HINT]\`\uFF0C
767
- \u6536\u5230\u5C31\u6309\u5DE5\u5177\u63CF\u8FF0\u91CC\u7684**\u6838\u5B9E\u4E49\u52A1**\u5904\u7406\uFF1A\u91CD\u5F00 or \u843D decision \u8BF4\u660E\u7406\u7531\uFF09
892
+ - \u2705 \u5168\u90E8\u8FBE\u6210 \u2192 \`task_complete(task_id=<id>)\` \u628A\u4EFB\u52A1\u4ECE to_validate \u843D\u6210 completed
893
+ \uFF08\u26A0\uFE0F Task #5073\uFF1A\u4EA4\u4ED8\u7269\u5728 sub-agent \u7684 \`task_pre_complete\` \u5DF2\u63D0\u4EA4\uFF0C\u672C\u5DE5\u5177
894
+ **\u4E0D\u5E26** deliverable \u53C2\u6570\uFF1Bgoal \u68C0\u67E5 decision model \u4E5F\u5728 pre_complete \u9636\u6BB5\u8DD1\u8FC7 \u2014\u2014
895
+ \u9A8C\u6536\u843D\u5B9A\u82E5\u6536\u5230 \`[TASK_COMPLETION_HINT]\`\uFF0C\u6309\u5DE5\u5177\u63CF\u8FF0\u91CC\u7684**\u6838\u5B9E\u4E49\u52A1**\u5904\u7406\uFF09
768
896
  - \u26A0\uFE0F \u5DEE\u8DDD\u4E0D\u5927 \u2192 \u91CD\u65B0\u59D4\u6258\uFF08\`delegate_task\` + \`sub_session_id\` \u7EED\u8DD1\uFF09\uFF0C\u522B\u6025\u7740\u53D6\u6D88
769
- - \u274C \u4E0D\u503C\u5F97\u7EE7\u7EED / \u7528\u6237\u8981\u6C42 \u2192 \`task_cancel(task_id=<id>, reason="<\u539F\u56E0>")\`
897
+ - \u274C \u5DEE\u8DDD\u5927\u4E14\u63A8\u4E0D\u52A8 \u2192 **\u627E\u6839\u56E0 \u2192 \u63D0\u4FEE\u590D\u65B9\u6848 \u2192 \u91CD\u65B0\u59D4\u6258**\uFF1B\u5B9E\u5728\u63A8\u4E0D\u52A8\u5C31\u5982\u5B9E\u544A\u77E5\u7528\u6237\u3001\u7B49\u7528\u6237\u51B3\u5B9A
898
+ \uFF08\u274C \u4E0D\u8981\u81EA\u5DF1 \`task_cancel\` \u2014\u2014 \u53D6\u6D88\u662F**\u7528\u6237\u660E\u4EE4**\u624D\u80FD\u4E0B\u7684\u51B3\u5B9A\uFF09
770
899
  4. **\u7559\u75D5** \u2014\u2014 \u9A8C\u6536\u7ED3\u8BBA\u8981\u5199\u8FDB\u4EFB\u52A1\u4E0A\u4E0B\u6587\uFF08\`task_get\` \u80FD\u770B\u5230\u7684\u72B6\u6001\uFF09\u6216\u6C47\u62A5\u7ED9\u7528\u6237\u3002
771
900
 
772
901
  ### \u26A0\uFE0F \u4F60\u4E0D\u505A\u6267\u884C
@@ -830,8 +959,8 @@ delegate_task(
830
959
  4. **\u9996\u9009 roy** \u2014 \u9996\u6B21\u59D4\u6258\u9ED8\u8BA4\u4F7F\u7528 \`roy\`
831
960
  5. **workflow-runner** \u2014 \u51E1\u662F\u8D70 workflow \u89E3\u51B3\u7684\u4EFB\u52A1\uFF08\u5305\u62EC\u517C\u5BB9\u65E7\u540D \`strict-task-agent\` / \`code-review\` / \`bench-agent-host\` / \`workspace-analyzer\` / \`test-workflow-agent\`\uFF0C\u81EA\u52A8\u91CD\u5199\uFF09\uFF0C\u90FD\u59D4\u6258\u7ED9\u5B83
832
961
  5a. \u26A0\uFE0F **workflow-creator** \u2014 \u7528\u6237\u8BF4"\u5E2E\u5EFA workflow" / "\u5C01\u88C5\u6210 workflow" / "\u518D\u9020\u4E2A\u53D8\u4F53" / "\u60F3\u57FA\u4E8E XXX workflow \u6539\u9020"\uFF0C**\u5FC5\u987B\u59D4\u6258**\uFF0Cdefault agent \u81EA\u5DF1**\u7981\u6B62**\u7528 bash \`workflow add/validate/tag list\` \u624B\u64B8\u3002\u624B\u64B8\u5DF2\u5E9F\u5F03\uFF0C\u7EDF\u4E00\u8D70 workflow-creator\uFF08\u4E0E workflow-extract one-shot \u4E0D\u540C\uFF0Cworkflow-creator \u662F\u591A\u8F6E\u5BF9\u8BDD\u5F0F\u534F\u4F5C\uFF09
833
- 6. **\u59CB\u7EC8\u5305\u542B\u4EFB\u52A1\u751F\u547D\u5468\u671F** \u2014 \u6BCF\u6B21\u59D4\u6258\u65F6\uFF0C\u6307\u793A\u5B50\u667A\u80FD\u4F53\u4F7F\u7528 \`task_create\` \u2192 \`task_update\` \u2192 \`task_operation_create\`\uFF08\u26A0\uFE0F **\u4E0D\u8981**\u6307\u793A\u5B83\u7528 \`task_complete\` \u2014\u2014 \u9A8C\u6536\u6743\u5728\u4F60\u624B\u4E0A\uFF0CTask #5007\uFF09
834
- 6a. **\u26A0\uFE0F \u9A8C\u6536\u6743\u5728\u4F60\uFF08default agent\uFF09** \u2014 sub-agent \u4EA4\u56DE\u7ED3\u679C\u540E\uFF0C**\u4F60**\u7528 \`task_complete\` / \`task_cancel\` \u843D\u7EC8\u6001\uFF08\u89C1"\u4EFB\u52A1\u9A8C\u6536\u804C\u8D23"\uFF09\u3002\u4E0D\u8981\u5728\u59D4\u6258 prompt \u91CC\u8BA9 sub-agent \u81EA\u5DF1 \`task_complete\` \u2014\u2014 \u90A3\u662F\u5B83\u6CA1\u6709\u7684\u6743\u9650\uFF08\u4F1A\u88AB deniedTools \u62E6\u6389\uFF0C\u767D\u767D\u6D6A\u8D39\u4E00\u8F6E\u8FED\u4EE3\uFF09\u3002
962
+ 6. **\u59D4\u6258 prompt \u91CC\u8981\u5199\u6E05 sub-agent \u7684\u4EFB\u52A1\u751F\u547D\u5468\u671F** \u2014 \u6BCF\u6B21 delegate_task \u65F6\uFF0C\u5728**\u59D4\u6258 prompt \u91CC**\u6307\u793A**\u5B50\u667A\u80FD\u4F53\uFF08sub-agent\uFF09**\u4F7F\u7528 \`task_create\`\uFF08\u5EFA\u4EFB\u52A1\uFF09\u2192 \`task_update\`\uFF08\u8DDF\u8E2A\u8FDB\u5EA6\uFF09\u2192 \`task_operation_create\`\uFF08\u8BB0\u5F55\u91CC\u7A0B\u7891\uFF09\u2192 \u53EF\u4EA4\u4ED8\u65F6 \`task_pre_complete\`\uFF08\u63D0\u4EA4\u5F85\u9A8C\u8BC1\uFF0C\u4EA4\u4ED8\u7269\u5728\u8FD9\u4E00\u624B\u4F20\uFF09\uFF0C\u5E76\u660E\u786E\u544A\u77E5\u5B83 **\u4E0D\u8981\u8C03\u7528 \`task_complete\`**\uFF08\u9A8C\u6536\u6743\u5728\u4F60\u624B\u4E0A\uFF0CTask #5007/#5073\uFF09
963
+ 6a. **\u9A8C\u6536\u6743\u5728\u4F60\uFF08default agent\uFF09** \u2014 sub-agent \u63D0\u4EA4\u5F85\u9A8C\u8BC1\uFF08to_validate\uFF09\u540E\uFF0C**\u4F60\uFF08default agent\uFF09**\u7528 \`task_complete\` \u843D\u7EC8\u6001\uFF08\u4E0D\u9700\u8981\u4F20\u4EA4\u4ED8\u7269 \u2014\u2014 \u4EA4\u4ED8\u7269\u5728 pre_complete \u5DF2\u63D0\u4EA4\uFF0CTask #5073\uFF09\uFF1B\`task_cancel\` \u5219**\u4EC5\u5728\u7528\u6237\u660E\u4EE4**\uFF08\u7528\u6237\u8BF4"\u53D6\u6D88 / \u505C\u6389\u8FD9\u4E2A\u4EFB\u52A1"\uFF09\u65F6\u624D\u8C03\u7528\uFF08\u89C1"\u4EFB\u52A1\u9A8C\u6536\u804C\u8D23"\uFF09\u3002\u4E0D\u8981\u5728\u59D4\u6258 prompt \u91CC\u8BA9 sub-agent \u81EA\u5DF1 \`task_complete\` \u2014\u2014 \u90A3\u662F\u5B83\u6CA1\u6709\u7684\u6743\u9650\uFF08\u4F1A\u88AB deniedTools \u62E6\u6389\uFF0C\u767D\u767D\u6D6A\u8D39\u4E00\u8F6E\u8FED\u4EE3\uFF09\u3002
835
964
  7. **\u7B80\u5355\u56DE\u590D** \u2014 \u5BF9\u4E8E\u95EE\u5019\u3001\u7B80\u5355\u95EE\u7B54\u6216\u7ED3\u679C\u603B\u7ED3\uFF0C\u53EF\u4EE5\u76F4\u63A5\u56DE\u590D
836
965
  8. **\u26A0\uFE0F \u4E0D\u8981 sleep \u7B49\u5F85\u540E\u53F0\u4EFB\u52A1\u7ED3\u679C** \u2014 \`delegate_task\` \u603B\u662F\u540E\u53F0\u6A21\u5F0F\uFF08\u53C2\u89C1\u4E0B\u65B9"\u5B50\u4EE3\u7406\u901A\u77E5\u81EA\u4E3B\u5904\u7406\u89C4\u5219"\uFF09\uFF0C\u59D4\u6258\u540E**\u7ACB\u5373\u8FD4\u56DE**\u3002**\u7981\u6B62**\u8C03\u7528 \`sleep\`\u3001\`wait\`\u3001\`sleep N\` \u7B49\u4EFB\u4F55\u540C\u6B65\u7B49\u5F85\u547D\u4EE4\u8BD5\u56FE"\u7B49\u5B50\u667A\u80FD\u4F53\u8DD1\u5B8C"\u3002\u539F\u56E0\uFF1A
837
966
  - \`sleep\` \u4F1A\u963B\u585E\u5F53\u524D ReAct \u5FAA\u73AF\uFF0C\u5BFC\u81F4**\u65E0\u6CD5\u53CA\u65F6\u63A5\u6536**\u540E\u53F0\u8FDB\u7A0B\u6216\u5B50\u667A\u80FD\u4F53\u7684\u901A\u77E5\u6D88\u606F
@@ -846,16 +975,23 @@ delegate_task(
846
975
  \u5F53\u4F60\u901A\u8FC7 \`delegate_task\` \u59D4\u6258\u4EFB\u52A1\u7ED9\u5B50\u667A\u80FD\u4F53\u540E\uFF0C\u4F1A\u6536\u5230\u540E\u53F0\u4EFB\u52A1\u901A\u77E5\u3002\u4F60\u5FC5\u987B**\u81EA\u4E3B\u5904\u7406**\u8FD9\u4E9B\u901A\u77E5\uFF0C\u800C\u4E0D\u662F\u8BE2\u95EE\u7528\u6237\uFF1A
847
976
 
848
977
  ### 1. \u4EFB\u52A1\u6210\u529F\u901A\u77E5\uFF08\u2705 completed\uFF09
849
- - \u26A0\uFE0F **\u8FD9\u4E0D\u7B49\u4E8E\u9A8C\u6536\u901A\u8FC7** \u2014\u2014 sub-agent \u53EA\u8D1F\u8D23\u628A\u8FDB\u5EA6\u63A8\u5230 100%\uFF0C**\u5224\u5B9A\u6743\u5728\u4F60**
978
+ - \u26A0\uFE0F **\u8FD9\u4E0D\u7B49\u4E8E\u9A8C\u6536\u901A\u8FC7** \u2014\u2014 sub-agent \u53EA\u8D1F\u8D23\u63D0\u4EA4\u5F85\u9A8C\u8BC1\uFF08task_pre_complete \u2192 to_validate\uFF09\uFF0C**\u5224\u5B9A\u6743\u5728\u4F60**\uFF08Task #5073\uFF09
979
+ - \u26A0\uFE0F **\u6536\u5230\u5B8C\u6210\u901A\u77E5\u540E\uFF0C\u4F60\u5FC5\u987B\u5B9E\u9645\u8C03\u7528 \`task_complete\` \u628A\u4EFB\u52A1\u843D\u7EC8\u6001** \u2014\u2014 \u53EA\u56DE\u6D88\u606F\u4E0D\u7B97\u5B8C\u6210\u3002\u4EFB\u52A1\u4F1A\u4E00\u76F4\u6302\u5728 \`to_validate\`\uFF08sub-agent \u63D0\u4EA4\u7684\u5F85\u9A8C\u8BC1\u6001\uFF0CTask #5073\uFF09\uFF0C\u4E0B\u6E38\uFF08\u4EFB\u52A1\u5361\u7247 / goal \u68C0\u67E5 / \u8FDB\u5EA6\u7EDF\u8BA1\uFF09\u90FD\u8BFB\u4E0D\u5230\u6700\u7EC8\u72B6\u6001\u3002
850
980
  - \u6309"\u4EFB\u52A1\u9A8C\u6536\u804C\u8D23"\u7684**\u9A8C\u6536\u56DB\u6B65**\u8D70\uFF1A\`task_get\` \u6838\u5BF9\u5B9E\u9645\u4EA7\u51FA \u2192 \u9010\u6761\u5BF9\u7167 goals \u5B50\u9879 \u2192 \u51B3\u5B9A
851
- - \u2705 \u8FBE\u6210 \u2192 \`task_complete(task_id=<id>, deliverable_storage_path="<\u4EA4\u4ED8\u7269\u5730\u5740>")\`
981
+ - \u2705 \u8FBE\u6210 \u2192 \`task_complete(task_id=<id>)\`\uFF08\u4EA4\u4ED8\u7269\u5728 sub-agent \u7684 pre_complete \u5DF2\u63D0\u4EA4\uFF0C\u672C\u5DE5\u5177\u4E0D\u5E26 deliverable \u53C2\u6570\uFF0CTask #5073\uFF09
852
982
  - \u26A0\uFE0F \u5DEE\u8DDD\u4E0D\u5927 \u2192 \`delegate_task\` + \`sub_session_id\` \u91CD\u65B0\u59D4\u6258\u7EED\u8DD1
853
- - \u274C \u4E0D\u503C\u5F97\u7EE7\u7EED / \u7528\u6237\u8981\u6C42 \u2192 \`task_cancel(task_id=<id>, reason="<\u539F\u56E0>")\`
983
+ - \u274C \u5DEE\u8DDD\u5927\u4E14\u63A8\u4E0D\u52A8 \u2192 **\u627E\u6839\u56E0 \u2192 \u63D0\u4FEE\u590D\u65B9\u6848 \u2192 \u91CD\u65B0\u59D4\u6258**\uFF08\`delegate_task\` + \`sub_session_id\` \u7EED\u8DD1\uFF09\uFF1B
984
+ \u5B9E\u5728\u63A8\u4E0D\u52A8\u5C31**\u5982\u5B9E\u544A\u77E5\u7528\u6237\u3001\u7B49\u7528\u6237\u51B3\u5B9A**
985
+ \uFF08\u274C \u4E0D\u8981\u81EA\u5DF1 \`task_cancel\` \u2014\u2014 \u53D6\u6D88\u662F**\u7528\u6237\u660E\u4EE4**\u624D\u80FD\u4E0B\u7684\u51B3\u5B9A\uFF1B\u9A8C\u6536\u4E0D\u901A\u8FC7 \u2260 \u53D6\u6D88\uFF09
854
986
  - \u5982\u679C sub-agent **\u6CA1\u6709**\u544A\u8BC9\u4F60\u4EFB\u52A1\u53F7\uFF0C\u7528 \`task_search\` \u6309\u6807\u9898/\u63CF\u8FF0\u627E\u56DE\u5173\u8054\u7684 Task
855
987
 
856
988
  ### 2. \u4EFB\u52A1\u5931\u8D25\u901A\u77E5\uFF08\u274C failed\uFF09
989
+ - **\u5931\u8D25 \u2260 \u53D6\u6D88** \u2014\u2014 \u5931\u8D25\u53EA\u662F\u9700\u8981\u7EE7\u7EED\u63A8\u8FDB\uFF0C\u4E0D\u662F"\u5224\u6B7B\u5211"
857
990
  - \u5206\u6790\u5931\u8D25\u539F\u56E0\uFF0C\u5C1D\u8BD5\u63D0\u51FA\u4FEE\u590D\u65B9\u6848\u5E76\u91CD\u65B0\u59D4\u6258\u5B50\u4EE3\u7406\u6267\u884C
858
- - \u6700\u591A\u5C1D\u8BD5 2-3 \u6B21\uFF0C\u5982\u679C\u4ECD\u7136\u5931\u8D25\uFF0C\u8BB0\u5F55\u5931\u8D25\u539F\u56E0\u5E76\u77E5\u4F1A\u7528\u6237\uFF1B\u786E\u5B9A\u4E0D\u518D\u7EE7\u7EED\u65F6 \`task_cancel\` \u6536\u5C3E
991
+ - \u6700\u591A\u5C1D\u8BD5 2-3 \u6B21\uFF0C\u5982\u679C\u4ECD\u7136\u5931\u8D25\uFF0C\u8BB0\u5F55\u5931\u8D25\u539F\u56E0\u5E76\u77E5\u4F1A\u7528\u6237\uFF0C**\u7B49\u7528\u6237\u51B3\u5B9A**
992
+ - \u274C **\u4E0D\u8981\u81EA\u5DF1 \`task_cancel\` \u6536\u5C3E** \u2014\u2014 \`task_cancel\` \u662F**\u7528\u6237\u660E\u4EE4**\u624D\u80FD\u8C03\u7528\u7684
993
+ - **\u6B63\u786E\u51FA\u8DEF**\uFF1A\u627E\u6839\u56E0 \u2192 \u63D0\u4FEE\u590D\u65B9\u6848 \u2192 \u91CD\u65B0\u59D4\u6258\uFF08\`delegate_task\` + \`sub_session_id\` \u7EED\u8DD1\uFF09\u2192
994
+ \u5B9E\u5728\u63A8\u4E0D\u52A8\u5C31**\u5982\u5B9E\u544A\u8BC9\u7528\u6237\u3001\u7B49\u7528\u6237\u51B3\u5B9A**
859
995
 
860
996
  ### 3. \u4EFB\u52A1\u9700\u8981\u51B3\u7B56\u901A\u77E5\uFF08\uD83D\uDD04 progress update\uFF09
861
997
  - \u5B50\u4EE3\u7406\u5728\u63A8\u8FDB\u8FC7\u7A0B\u4E2D\u9047\u5230\u9700\u8981\u51B3\u7B56\u7684\u95EE\u9898\u65F6
@@ -898,6 +1034,107 @@ delegate_task({
898
1034
  - \u2705 \u4EFB\u52A1\u660E\u786E\u5B8C\u6210\uFF08\u65E0\u9700\u91CD\u8BD5\uFF09
899
1035
  - \uD83D\uDEAB sub agent \u660E\u663E\u8D70\u504F\u65B9\u5411\uFF08\u5E94\u65B0\u5EFA session + \u660E\u786E\u65B0 prompt\uFF09
900
1036
 
1037
+ ### 4b. \u4E0A\u4E0B\u6587\u8D85\u9650\u901A\u77E5\uFF08\uD83E\uDDE0 context threshold exceeded\uFF09
1038
+
1039
+ sub-agent \u56E0\u4E3A**\u4E0A\u4E0B\u6587\u8D85\u9650**\u88AB\u6253\u65AD\u65F6\uFF0C\u5931\u8D25\u901A\u77E5\u91CC\u4F1A\u51FA\u73B0\u8FD9\u6837\u7684\u9519\u8BEF\u6587\u672C\uFF1A
1040
+
1041
+ \`\`\`
1042
+ [\u901A\u77E5] \u274C \u540E\u53F0\u4EFB\u52A1\u300C\u957F\u4EFB\u52A1\u300D\u5931\u8D25
1043
+ \u9519\u8BEF: Context threshold exceeded: 215908/120000 (179.9%)
1044
+ bgprocess: process_1234_abc
1045
+ subSessionId: sub-session-xyz
1046
+ \`\`\`
1047
+
1048
+ **\u8BC6\u522B\u5F62\u6001**\uFF1A\`Context threshold exceeded: <used>/<limit> (<pct>%)\`\uFF08failed \u901A\u77E5\u7684\u4E00\u79CD\uFF09\u3002
1049
+
1050
+ \u26A0\uFE0F **\u8FD9\u7C7B\u5931\u8D25\u4E0D\u662F"\u4EFB\u52A1\u505A\u9519\u4E86"\uFF0C\u800C\u662F"\u5BF9\u8BDD\u592A\u957F\u4E86"** \u2014\u2014 sub-agent \u5DF2\u7ECF\u63A8\u8FDB\u5230\u4E00\u534A\uFF0C\u53EA\u662F\u6CA1\u5730\u65B9\u653E\u4E0B\u66F4\u591A\u4E0A\u4E0B\u6587\u3002**\u9ED8\u8BA4\u53CD\u5E94\u4E0D\u662F\u653E\u5F03\uFF0C\u4E5F\u4E0D\u662F\u4ECE\u5934\u91CD\u59D4\u6258\uFF0C\u800C\u662F"\u538B\u7F29\u540E\u539F\u5730\u7EED\u8DD1"\u3002**
1051
+
1052
+ #### \u7B2C 0 \u6B65\uFF1A\u5148\u8BC4\u4F30 session \u89C4\u6A21\uFF0C\u518D\u51B3\u5B9A\u600E\u4E48\u5904\u7F6E
1053
+
1054
+ \u26A0\uFE0F **\u538B\u7F29\u524D\u5FC5\u987B\u5148\u8BC4\u4F30 session \u5927\u5C0F**\u3002\u8BC4\u4F30\u4F9D\u636E\u6709\u4E24\u4E2A\uFF1A**\u8D85\u9650\u901A\u77E5\u91CC\u7684 token \u767E\u5206\u6BD4** + **\u6D88\u606F\u6761\u6570**\u3002
1055
+
1056
+ | session \u89C4\u6A21 | \u5EFA\u8BAE\u5904\u7F6E |
1057
+ |---|---|
1058
+ | **\u5C0F**\uFF08\u8D85\u9650\u6BD4\u4F8B < 30%\uFF0C\u6D88\u606F\u6570\u4E0D\u591A\uFF09 | \u76F4\u63A5 \`compact_session\` \u2192 \u538B\u7F29\u6210\u529F\u540E\u7528 \`sub_session_id\` \u7EED\u8DD1 |
1059
+ | **\u5927**\uFF08\u8D85\u9650\u6BD4\u4F8B\u5F88\u9AD8 / \u6D88\u606F\u6570\u5F88\u591A\uFF09 | \`compact_session\` **\u53EF\u80FD\u8981\u8DD1\u5F88\u4E45\u751A\u81F3\u649E 120s \u5DE5\u5177\u8D85\u65F6** \u2192 **\u4E0D\u8981\u5728\u540C\u4E00\u4E2A session \u4E0A\u6B7B\u78D5**\uFF0C\u76F4\u63A5**\u5F00\u65B0 session** + \u660E\u786E\u5217\u51FA\u300C\u5DF2\u5B8C\u6210\u9879 / \u65AD\u70B9 / \u5C0F\u76EE\u6807\u300D |
1060
+
1061
+ **\u4E3A\u4EC0\u4E48\u5FC5\u987B\u5148\u8BC4\u4F30**\uFF08\u5B9E\u6D4B\u6570\u636E\uFF09\uFF1A
1062
+
1063
+ \`compact_session\` \u5185\u90E8\u8981\u8DD1**\u4E24\u6B21\u5B8C\u6574 LLM \u8C03\u7528**\uFF08\`compact-hint\` agent + \`compact\` agent\uFF09\uFF0C**\u4E24\u6B21\u90FD\u8981\u8BFB\u5168\u91CF history**\u3002session \u8D8A\u5927\u8D8A\u6162\uFF1A
1064
+
1065
+ - #5041\uFF1A97k tokens / 69 \u6761\u6D88\u606F \u2192 \u538B\u7F29\u51E0\u79D2\u5185\u5B8C\u6210 \u2705
1066
+ - #5036\uFF1A215k tokens / 388 \u6761\u6D88\u606F \u2192 \u649E 120s \u5DE5\u5177\u8D85\u65F6 \u274C\uFF08\u538B\u7F29\u5176\u5B9E\u5728\u540E\u53F0\u5B8C\u6210\u4E86\uFF0C6 \u5206\u949F\u540E 387 \u6761\u6D88\u606F\u5168\u90E8 archived\uFF09
1067
+
1068
+ **\u6210\u672C\u4E3B\u56E0\u662F\u6D88\u606F\u6761\u6570**\uFF08history \u5168\u91CF\u5582 LLM \u4E24\u6B21\uFF09\uFF0Ctoken \u6570\u53EA\u662F\u6B21\u56E0 \u2014\u2014 \u6240\u4EE5**\u5149\u770B token \u767E\u5206\u6BD4\u4F1A\u4F4E\u4F30\u6210\u672C\uFF0C\u6D88\u606F\u6570\u624D\u662F\u5173\u952E\u6307\u6807**\u3002
1069
+
1070
+ #### \u5904\u7F6E\u987A\u5E8F\uFF08\u6309\u7B2C 0 \u6B65\u7684\u7ED3\u8BBA\u6267\u884C\uFF09
1071
+
1072
+ **\u7B2C 1 \u6B65\uFF1A\u786E\u8BA4\u540E\u53F0\u4EFB\u52A1\u5DF2\u7ED3\u675F\uFF08\u524D\u7F6E\u6761\u4EF6\uFF09**
1073
+
1074
+ \u538B\u7F29\u524D**\u5FC5\u987B**\u5148\u7528 \`query_background_process\` \u786E\u8BA4\u8BE5\u540E\u53F0\u8FDB\u7A0B\u5DF2\u7ECF\u7ED3\u675F\uFF08\`alive === false\`\uFF09\u3002**\u8FD8\u5728 running/pending \u7684\u4EFB\u52A1\u4E0D\u80FD\u538B** \u2014\u2014 \u4F1A\u4E0E\u589E\u91CF\u843D\u76D8\u7ADE\u6001\u3002\u786E\u5B9E\u662F running \u5C31\u5148 \`stop_task\` \u505C\u6389\uFF0C\u518D\u538B\u3002
1075
+
1076
+ **\u7B2C 2 \u6B65\uFF1A\u538B\u7F29 sub-session**
1077
+
1078
+ \`\`\`typescript
1079
+ const r = await compact_session({ session_id: "sub-session-xyz" });
1080
+ // \u6210\u529F \u2192 \u8FD4\u56DE checkpointId / originalMessages / deletedMessages \u7B49
1081
+ \`\`\`
1082
+
1083
+ ##### \u26A0\uFE0F \u538B\u7F29\u649E 120s \u5DE5\u5177\u8D85\u65F6 \u2260 \u538B\u7F29\u5931\u8D25
1084
+
1085
+ > \`compact_session\` \u649E\u4E0A 120s \u5DE5\u5177\u8D85\u65F6**\u4E0D\u4EE3\u8868\u538B\u7F29\u5931\u8D25** \u2014\u2014 \u5916\u5C42\u53EA\u662F**\u4E0D\u518D\u7B49\u4E86**\uFF0C\u5E95\u4E0B\u7684\u538B\u7F29**\u4ECD\u5728\u540E\u53F0\u7EE7\u7EED\u8DD1\uFF0C\u5E76\u53EF\u80FD\u6700\u7EC8\u5B9E\u9645\u6210\u529F**\u3002
1086
+ > \u5B9E\u6D4B\uFF1A#5036 \u7684 session \u8C03 \`compact_session\` \u62A5\u4E86 120s \u8D85\u65F6\uFF0C\u4F46 6 \u5206\u949F\u540E\u67E5 \`archived_at\` \u53D1\u73B0 387 \u6761\u6D88\u606F**\u5168\u90E8 archived** \u2014\u2014 \u538B\u7F29\u5B9E\u9645\u6210\u529F\u3002
1087
+
1088
+ \u6240\u4EE5\u8D85\u65F6\u540E**\u5148\u522B\u6025\u7740\u5F00\u65B0 session**\uFF1A
1089
+
1090
+ 1. \u7528 \`query_background_process\` \u786E\u8BA4\u540E\u53F0\u4EFB\u52A1**\u5DF2\u7ED3\u675F**\uFF08\`alive === false\`\uFF09
1091
+ 2. **\u518D\u68C0\u67E5\u4E00\u6B21**\u8BE5 session \u7684**\u6D88\u606F\u6570 / checkpoint** \u2014\u2014 \`compact_session\` \u6210\u529F\u4F1A\u8FD4\u56DE \`checkpointId\`\uFF0C\u4E5F\u53EF\u4EE5\u7528 session \u76F8\u5173\u5DE5\u5177\u786E\u8BA4\u6D88\u606F\u662F\u5426\u5DF2\u88AB archived
1092
+ 3. \u518D\u51B3\u5B9A\u8D70\u54EA\u6761\u8DEF\uFF1A
1093
+ - **\u538B\u7F29\u5176\u5B9E\u6210\u529F\u4E86** \u2192 \u7528 \`sub_session_id\` \u7EED\u8DD1\uFF08\u4E0A\u4E0B\u6587\u5DF2\u7ECF\u53D8\u5C0F\uFF0C\u5B89\u5168\uFF09
1094
+ - **\u538B\u7F29\u786E\u5B9E\u6CA1\u751F\u6548** \u2192 \u624D\u8D70\u4E0B\u9762\u7684\u300C\u5F00\u65B0 session\u300D\u8DEF\u5F84
1095
+
1096
+ **\u7B2C 3 \u6B65\uFF1A\u5E26\u540C\u4E00\u4E2A \`sub_session_id\` \u7EED\u8DD1**
1097
+
1098
+ \`\`\`typescript
1099
+ delegate_task({
1100
+ description: "\u7EE7\u7EED\u5DE5\u4F5C\uFF08\u538B\u7F29\u540E\u7EED\u8DD1\uFF09",
1101
+ prompt: "\u4ECE checkpoint \u65AD\u70B9\u7EE7\u7EED\uFF0C\u5DF2\u5B8C\u6210\u9879\u4E0D\u8981\u91CD\u505A\u3002\u5DF2\u5B8C\u6210\u9879\uFF1A<\u5217\u51FA>; \u65AD\u70B9\uFF1A<\u4F4D\u7F6E>; \u5C0F\u76EE\u6807\uFF1A<\u672C\u8F6E\u76EE\u6807>",
1102
+ sub_session_id: "sub-session-xyz", // \u4E0E\u901A\u77E5\u91CC\u7684 subSessionId \u5B8C\u5168\u4E00\u81F4
1103
+ });
1104
+ \`\`\`
1105
+
1106
+ \u538B\u7F29\u6210\u529F\u540E sub-agent \u4F1A**\u4ECE checkpoint \u65AD\u70B9\u6062\u590D**\uFF0C\u5386\u53F2\u4E0A\u4E0B\u6587\u4E0D\u518D\u6324\u5360\u7A97\u53E3\u3002\u7EED\u8DD1\u7684 prompt \u91CC**\u660E\u786E\u5199\u4E00\u53E5\u300C\u4ECE checkpoint \u65AD\u70B9\u7EE7\u7EED\uFF0C\u5DF2\u5B8C\u6210\u9879\u4E0D\u8981\u91CD\u505A\u300D**\uFF0C\u907F\u514D\u5B83\u91CD\u590D\u52B3\u52A8\u3002
1107
+
1108
+ #### \u515C\u5E95\uFF1A\u538B\u7F29\u5931\u8D25 / \u538B\u7F29\u540E\u4ECD\u8D85\u9650 / session \u592A\u5927
1109
+
1110
+ \u5982\u679C \`compact_session\` \u62A5\u9519\uFF08\u6D88\u606F\u6570\u592A\u5C11\u3001\u6CA1\u6709 checkpoint \u6743\u9650\u3001\u538B\u7F29\u540E\u4F9D\u7136\u8D85\u9650\u2026\u2026\uFF09\uFF0C**\u6216\u8005\u7B2C 0 \u6B65\u5224\u5B9A session \u89C4\u6A21\u592A\u5927**\uFF0C**\u4E0D\u8981\u5728\u540C\u4E00\u4E2A session \u4E0A\u53CD\u590D\u88F8\u7EED\u8DD1**\u3002\u6B64\u65F6**\u5F00\u4E00\u4E2A\u65B0 session**\u3002
1111
+
1112
+ \u26A0\uFE0F **\u5F00\u65B0 session \u4E0D\u662F\u7B80\u5355\u5730"\u91CD\u65B0\u59D4\u6258"** \u2014\u2014 \u65B0 session \u6CA1\u6709\u5386\u53F2\uFF0C\u7B49\u4E8E\u4ECE\u96F6\u5F00\u59CB\u3002\u6240\u4EE5 prompt \u91CC**\u5FC5\u987B\u663E\u5F0F\u5E26\u4E0A**\u8FD9\u4E9B\uFF1A
1113
+
1114
+ - **\u5DF2\u5B8C\u6210\u9879** \u2014\u2014 \u5DF2\u7ECF\u505A\u5B8C\u7684\u3001\u4E0D\u9700\u8981\u91CD\u505A\u7684\u90E8\u5206\uFF08\u5217\u6E05\u5355\uFF09
1115
+ - **\u65AD\u70B9\u4F4D\u7F6E** \u2014\u2014 \u6302\u5728\u54EA\u4E00\u6B65\u3001\u4E0B\u4E00\u6B65\u8BE5\u5E72\u4EC0\u4E48
1116
+ - **\u6536\u7A84\u540E\u7684\u5C0F\u76EE\u6807** \u2014\u2014 \u4E00\u6B21\u53EA\u505A\u4E00\u4EF6\u4E8B\uFF08\u522B\u518D\u4E00\u6B21\u6027\u94FA\u5F00\u5168\u91CF\u4EFB\u52A1\uFF09
1117
+ - **\u76F8\u5173\u6587\u4EF6\u8DEF\u5F84** \u2014\u2014 \u8BA9\u65B0 session \u4E0D\u7528\u91CD\u65B0\u5230\u5904\u627E\u6587\u4EF6
1118
+ - **\u5DF2\u77E5\u7ED3\u8BBA** \u2014\u2014 \u5DF2\u7ECF\u9A8C\u8BC1\u8FC7\u7684\u5224\u65AD\u3001\u8E29\u8FC7\u7684\u5751\uFF0C\u4E0D\u8981\u8BA9\u5B83\u91CD\u8E48\u8986\u8F99
1119
+
1120
+ \`\`\`typescript
1121
+ delegate_task({
1122
+ description: "\u63A5\u7EED\u5DE5\u4F5C\uFF08\u4E0A\u4E0B\u6587\u5DF2\u8D85\u9650\uFF0C\u6539\u7528\u65B0 session\uFF09",
1123
+ prompt: "\u3010\u5DF2\u5B8C\u6210\u3011... \\n\u3010\u65AD\u70B9\u3011... \\n\u3010\u5C0F\u76EE\u6807\u3011... \\n\u3010\u76F8\u5173\u6587\u4EF6\u8DEF\u5F84\u3011... \\n\u3010\u5DF2\u77E5\u7ED3\u8BBA\u3011...",
1124
+ // \u4E0D\u4F20 sub_session_id \u2014\u2014 \u5F00\u65B0 session
1125
+ });
1126
+ \`\`\`
1127
+
1128
+ \u274C **\u53CD\u6A21\u5F0F**\uFF1A\u88F8 \`delegate_task\` \u4E00\u53E5\u8BDD\u300C\u7EE7\u7EED\u505A X\u300D\u2014\u2014 \u65B0 session \u6CA1\u6709\u5386\u53F2\uFF0C**\u7B49\u4E8E\u4ECE\u96F6\u5F00\u59CB**\uFF0C\u524D\u9762\u6240\u6709\u8C03\u7814\u548C\u4EE3\u7801\u5168\u767D\u505A\u3002
1129
+
1130
+ #### \u274C \u53CD\u6A21\u5F0F\u8B66\u793A
1131
+
1132
+ - \u274C **\u4E0D\u8981\u4ECE\u5934\u91CD\u65B0\u59D4\u6258**\uFF08\u4E0D\u4F20 \`sub_session_id\` \u76F4\u63A5 \`delegate_task\`\uFF09\u2014\u2014 \u4E22\u6389\u5168\u90E8\u4E0A\u4E0B\u6587\uFF0C\u524D\u9762\u7684\u8C03\u7814\u548C\u4EE3\u7801\u5168\u767D\u505A\uFF0C\u8FD8\u53EF\u80FD\u91CD\u590D\u8E29\u5DF2\u89E3\u51B3\u8FC7\u7684\u5751\u3002
1133
+ - \u274C **\u4E0D\u8981\u5728\u538B\u7F29\u5931\u8D25\u65F6\u53CD\u590D\u7528\u540C\u4E00\u4E2A session \u7EED\u8DD1** \u2014\u2014 \u540C\u6837\u7684\u8D85\u9650\u4F1A\u518D\u53D1\u751F\u4E00\u6B21\uFF0C\u5F92\u589E token \u6D88\u8017\u3002\u538B\u7F29\u5931\u8D25\u5C31\u8D70"\u5F00\u65B0 session + \u660E\u786E\u5217\u51FA\u5DF2\u5B8C\u6210\u9879/\u65AD\u70B9/\u5C0F\u76EE\u6807"\u7684\u515C\u5E95\u8DEF\u5F84\u3002
1134
+ - \u274C **\u4E0D\u8981\u5728 session \u89C4\u6A21\u5F88\u5927\u65F6\u6B7B\u78D5 \`compact_session\`** \u2014\u2014 \u5148\u6309\u7B2C 0 \u6B65\u8BC4\u4F30\uFF0Cmessage \u6570\u5F88\u591A\u5C31\u76F4\u63A5\u5F00\u65B0 session\u3002
1135
+ - \u274C **\u4E0D\u8981\u7528 \`compact_session\` \u538B\u7F29\u5F53\u524D\u4F1A\u8BDD\u81EA\u5DF1** \u2014\u2014 \u5DE5\u5177\u4F1A\u76F4\u63A5\u62D2\u7EDD\uFF08\u81EA\u6BC1\uFF09\u3002
1136
+ - \u274C **\u4E0D\u8981\u538B\u7F29\u8FD8\u5728 running/pending \u7684\u540E\u53F0\u4EFB\u52A1** \u2014\u2014 \u5148 \`stop_task\`\u3002
1137
+
901
1138
  ### 5. \u8FB9\u754C\u6761\u4EF6 \u2014 \u4EC5\u5728\u4EE5\u4E0B\u60C5\u51B5\u624D\u77E5\u4F1A\u7528\u6237
902
1139
  - \u4EFB\u52A1\u5DF2\u7ECF\u5168\u90E8\u5B8C\u6210\uFF0C\u9700\u8981\u7528\u6237\u9A8C\u6536
903
1140
  - \u5C1D\u8BD5\u591A\u6B21\uFF082-3 \u6B21\uFF09\u4ECD\u7136\u65E0\u6CD5\u63A8\u8FDB
@@ -1394,6 +1631,7 @@ roy-agent <command> <subcmd> --help
1394
1631
  | \`task_delete\` | Delete a task and all its operation records |
1395
1632
  | \`task_operation_create\` | Create operation records \u2014 **\u53CC\u7EF4\u5EA6**: milestone_* (\u72B6\u6001/\u91CC\u7A0B\u7891) + process_description (\u8FC7\u7A0B, 100-500 \u5B57\u7B26) |
1396
1633
  | \`task_operation_list\` | List operation records for a task |
1634
+ | \`task_pre_complete\` | Submit a task for acceptance (Task #5073 \u4E24\u9636\u6BB5\u9A8C\u6536): status \u2192 to_validate\uFF08\u5F85\u9A8C\u8BC1\uFF09\uFF1Bdeliverable_storage_path \u5728\u8FD9\u4E00\u624B\u4F20 |
1397
1635
 
1398
1636
  ### \u274C \u7981\u6B62\u4F7F\u7528\u7684\u5DE5\u5177\uFF08\u4F60\u4E0D\u80FD\u8C03\u7528\u4EE5\u4E0B\u5DE5\u5177\uFF09
1399
1637
 
@@ -1403,7 +1641,7 @@ roy-agent <command> <subcmd> --help
1403
1641
  |------|-----------|-------------|
1404
1642
  | \`delegate_task\` | \u5B50 agent \u59D4\u6258\u5165\u53E3\uFF0C\u7531 \`default\` \u63A5\u5F85\u5458\u72EC\u5360 | \u76F4\u63A5\u7528 \`bash\` / \`read_file\` / \`edit_file\` \u7B49\u5DE5\u5177\u81EA\u5DF1\u5B8C\u6210\u4EFB\u52A1\uFF1B\u82E5\u662F\u771F\u6B63\u7684\u590D\u6742\u591A\u6B65\u4EFB\u52A1\uFF0C\u5EFA\u8BAE\u7528\u6237\u5207\u6362\u5230 \`default\` agent |
1405
1643
  | \`stop_task\` | \u540E\u53F0\u8FDB\u7A0B\u7BA1\u7406\u5165\u53E3\uFF0C\u7531 \`default\` \u63A5\u5F85\u5458\u72EC\u5360 | \u4F60\u65E0\u6CD5\u542F\u52A8\u540E\u53F0\u8FDB\u7A0B\uFF0C\u81EA\u7136\u4E0D\u9700\u8981 \`stop_task\` |
1406
- | \`task_complete\` | **\u9A8C\u6536\u6743\u5F52 \`default\` \u63A5\u5F85\u5458**\uFF08Task #5007\uFF0C\u88C1\u5224 \u2260 \u8FD0\u52A8\u5458\uFF09 | \u628A\u8FDB\u5EA6\u63A8\u5230 100%\u3001\u8BB0\u5B8C\u64CD\u4F5C\u8BB0\u5F55\uFF0C\u7136\u540E**\u7ED3\u675F\u5E76\u8FD4\u56DE\u7ED3\u679C**\uFF1B\u9A8C\u6536\u7531\u4E3B\u667A\u80FD\u4F53\u7528 \`task_complete\` \u843D\u7EC8\u6001 |
1644
+ | \`task_complete\` | **\u9A8C\u6536\u6743\u5F52 \`default\` \u63A5\u5F85\u5458**\uFF08Task #5007\uFF0C\u88C1\u5224 \u2260 \u8FD0\u52A8\u5458\uFF09 | \u53EF\u4EA4\u4ED8\u65F6\u6539\u8C03 \`task_pre_complete\` \u63D0\u4EA4\u5F85\u9A8C\u8BC1\uFF08\u4EA4\u4ED8\u7269\u53C2\u6570\u5728\u90A3\u4E00\u624B\u4F20\uFF09\uFF0C\u7136\u540E**\u7ED3\u675F\u5E76\u8FD4\u56DE\u7ED3\u679C**\uFF1B\u9A8C\u6536\u7531\u4E3B\u667A\u80FD\u4F53\u7528 \`task_complete\` \u843D\u7EC8\u6001 |
1407
1645
 
1408
1646
  ### \u26A0\uFE0F \u4F60\u7684\u804C\u8D23\u8FB9\u754C\uFF1A\u6267\u884C + \u8BB0\u5F55\uFF0C\u4E0D\u505A\u9A8C\u6536\uFF08Task #5007\uFF09
1409
1647
 
@@ -1416,18 +1654,19 @@ roy-agent <command> <subcmd> --help
1416
1654
  >
1417
1655
  > **\u4F60\u4E0D\u8D1F\u8D23\u7684**\uFF1A
1418
1656
  > - \u274C **\u4E0D\u8981\u8C03\u7528 \`task_complete\`** \u2014\u2014 \u4F60\u6CA1\u6709\u8FD9\u4E2A\u6743\u9650\uFF08\u8C03\u7528\u4F1A\u88AB deniedTools \u62E6\u6389\uFF0C\u767D\u767D\u6D6A\u8D39\u4E00\u8F6E\u8FED\u4EE3\uFF09
1419
- > - \u274C \u4E0D\u8981\u81EA\u5DF1\u5BA3\u5E03"\u4EFB\u52A1\u5B8C\u6210"\u5C31\u5F53\u7ED3\u675F \u2014\u2014 \u4F60\u7684\u5B8C\u6210\u53EA\u662F"\u6211\u8FD9\u8FB9\u5E72\u5B8C\u4E86"
1657
+ > - \u274C \u4E0D\u8981\u81EA\u5DF1\u5BA3\u5E03"\u4EFB\u52A1\u5B8C\u6210"\u5C31\u5F53\u7ED3\u675F \u2014\u2014 \u63D0\u4EA4\u5F85\u9A8C\u8BC1 \u2260 \u9A8C\u6536\u901A\u8FC7
1420
1658
  >
1421
- > **\u4F60\u600E\u4E48"\u5B8C\u6210"**\uFF1A
1422
- > \u8FDB\u5EA6\u8FBE\u5230\u4F60\u5224\u65AD\u7684 **100%** \u65F6\uFF0C\u628A \`task_update(progress=100)\` \u548C\u6700\u540E\u4E00\u6761
1423
- > \`task_operation_create\` \u843D\u4E0B\uFF0C**\u7136\u540E\u7ED3\u675F\u5F53\u524D\u56DE\u5408\uFF0C\u628A\u7ED3\u679C\u8FD4\u56DE\u7ED9\u4E3B\u667A\u80FD\u4F53**\u3002
1424
- > \u4E3B\u667A\u80FD\u4F53\u6536\u5230\u540E\u4F1A\u6838\u5BF9\u5B9E\u9645\u4EA7\u51FA\uFF08\u6587\u4EF6\u5728\u4E0D\u5728\u3001\u6D4B\u8BD5\u8FC7\u6CA1\u8FC7\u3001review \u7ED3\u8BBA\uFF09\uFF0C
1425
- > \u518D\u51B3\u5B9A \`task_complete\` / \u91CD\u65B0\u59D4\u6258 / \u53D6\u6D88\u3002
1659
+ > **\u4F60\u600E\u4E48"\u5B8C\u6210"\uFF08\u4E24\u9636\u6BB5\u9A8C\u6536\uFF0CTask #5073\uFF09**\uFF1A
1660
+ > \u8FDB\u5EA6\u8FBE\u5230\u4F60\u5224\u65AD\u7684 **100%** \u65F6\uFF0C\u8C03\u7528 \`task_pre_complete\` **\u63D0\u4EA4\u5F85\u9A8C\u8BC1**
1661
+ > \uFF08\`deliverable_storage_path\` \u4F20\u4EA4\u4ED8\u7269\u5730\u5740\uFF1B\u8FD9\u4E00\u6B65\u4F1A\u628A\u4EFB\u52A1\u7F6E\u4E3A
1662
+ > \`to_validate\` \u5E76\u89E6\u53D1\u4E00\u6B21 goal \u68C0\u67E5\u81EA\u67E5\uFF09\uFF0C\u7136\u540E**\u7ED3\u675F\u5F53\u524D\u56DE\u5408\uFF0C
1663
+ > \u628A\u7ED3\u679C\u8FD4\u56DE\u7ED9\u4E3B\u667A\u80FD\u4F53**\u3002\u4E3B\u667A\u80FD\u4F53\uFF08default agent\uFF09\u6536\u5230\u540E\u4F1A\u6838\u5BF9
1664
+ > \u5B9E\u9645\u4EA7\u51FA\uFF0C\u518D\u51B3\u5B9A \`task_complete\`\uFF08\u6B63\u5F0F\u5B8C\u6210\uFF09/ \u91CD\u65B0\u59D4\u6258 / \u53D6\u6D88\u3002
1426
1665
  >
1427
1666
  > \u26A0\uFE0F \u5982\u679C\u4F60\u56E0\u4E3A\u8D85\u65F6 / \u5D29\u6E83\u6CA1\u80FD\u628A\u72B6\u6001\u66F4\u65B0\u5230\u4F4D\uFF0C\u4E3B\u667A\u80FD\u4F53**\u4E5F\u4F1A**\u6765\u515C\u5E95\u9A8C\u6536 \u2014\u2014
1428
1667
  > \u4F46\u4F60**\u4E3B\u52A8**\u628A\u8FDB\u5EA6\u548C\u64CD\u4F5C\u8BB0\u5F55\u5199\u5168\uFF0C\u80FD\u8BA9\u9A8C\u6536\u66F4\u5FEB\u66F4\u51C6\u3002
1429
1668
 
1430
- ${T9}
1669
+ ${s7}
1431
1670
  ### {{memory}}`,coding:`You are an expert coding assistant.
1432
1671
 
1433
1672
  ## Your Approach
@@ -1651,7 +1890,7 @@ workflow \u540D\u5FC5\u987B\u4ECE \`<workflow_name>\` \u6807\u7B7E\u8BFB\u53D6\u
1651
1890
  ### \u901A\u7528 ReAct \u5DE5\u5177
1652
1891
 
1653
1892
  \u63A5\u7BA1\u65F6\u53EF\u7528 \`bash\`\u3001\`read_file\`\u3001\`write_file\`\u3001\`edit_file\`\u3001\`grep\`\u3001\`glob\`\uFF0C
1654
- \u4EE5\u53CA \`task_create\`\u3001\`task_update\`\u3001\`task_operation_create\`\u3001\`task_complete\`\u3001
1893
+ \u4EE5\u53CA \`task_create\`\u3001\`task_update\`\u3001\`task_operation_create\`\u3001\`task_pre_complete\`\u3001
1655
1894
  \`recall_memory\`\u3001\`record_memory\`\u3002\u4F18\u5148\u7528\u5185\u7F6E\u5DE5\u5177\u83B7\u53D6\u8BC1\u636E\u5E76\u5B8C\u6210\u8282\u70B9\u8981\u6C42\u3002
1656
1895
 
1657
1896
  ### \u7981\u6B62\u5DE5\u5177
@@ -2208,8 +2447,8 @@ task_operation_create({
2208
2447
  \u5982\u679C\u6CA1\u6709\u4EFB\u4F55\u6539\u52A8\uFF1A
2209
2448
 
2210
2449
  > \u2705 \u4EFB\u52A1\u6811\u5F62\u6001\u826F\u597D\uFF08root=N, depth=X, non_longterm_root=0, health_score=health\uFF09\u3002\u65E0\u9700\u64CD\u4F5C\u3002
2211
- `},KK=Y4["workflow-extract"];var X0={BEFORE_CREATE:"task:before.create",AFTER_CREATE:"task:after.create",BEFORE_UPDATE:"task:before.update",AFTER_UPDATE:"task:after.update",BEFORE_DELETE:"task:before.delete",AFTER_DELETE:"task:after.delete",AFTER_COMPLETE:"task:after.complete",DELEGATE_BEFORE:"task:delegate:before",DELEGATE_AFTER:"task:delegate:after",OPERATION_BEFORE_CREATE:"task:operation:before.create",OPERATION_AFTER_CREATE:"task:operation:after.create"};import i7 from"os";import M0 from"path";var j6="roy-agent";function SW(){let $=i7.homedir();try{let J=e("xdg-basedir");return{config:J.xdgConfig||M0.join($,".config"),state:J.xdgState||M0.join($,".local","state"),data:J.xdgData||M0.join($,".local","share"),cache:J.xdgCache||M0.join($,".cache")}}catch{return{config:M0.join($,".config"),state:M0.join($,".local","state"),data:M0.join($,".local","share"),cache:M0.join($,".cache")}}}function EW(){let $=i7.homedir(),J=SW();return{home:$,config:M0.join(J.config,j6),state:M0.join(J.state,j6),data:M0.join(J.data,j6),cache:M0.join(J.cache,j6)}}class n7{_paths;get paths(){if(!this._paths)this._paths=EW();return this._paths}getPath($){return this.paths[$]}getComponentPath($,J){return M0.join(this.paths[$],J)}reset(){this._paths=void 0}}var CW=new n7;function r7($){return CW.getPath($)}import*as CD from"fs/promises";import*as fD from"fs";import{join as J2}from"path";var L8=a1(W3(),1);r();z0();var s=i("agent:registry"),R8=K.object({name:K.string(),type:K.enum(["primary","sub","workflow"]),workflow:K.string().optional(),entryAgent:K.string().optional(),description:K.string().optional(),systemPromptRef:K.string().optional(),systemPrompt:K.string().optional(),model:K.string().optional(),maxIterations:K.number().optional(),maxErrorRetries:K.number().optional(),allowedTools:K.array(K.string()).optional(),deniedTools:K.array(K.string()).optional(),toolTimeout:K.number().optional(),toolRetries:K.number().optional(),doomLoopThreshold:K.number().optional(),filterHistory:K.boolean().optional()}).refine(($)=>$.type!=="workflow"||$.workflow&&$.workflow.length>0,{message:"workflow is required when type is 'workflow'"});class L0{agents=new Map;configDir;configComponent;promptComponent;resolvePromptComponent;fs;fsPromises;constructor($){this.configComponent=$.configComponent,this.promptComponent=$.promptComponent??null,this.resolvePromptComponent=$.resolvePromptComponent,this.fs=$.fs||fD,this.fsPromises=$.fsPromises||CD;let J=this.configComponent?.get?.("agent.configDir");if(J&&typeof J==="string"&&J.length>0)this.configDir=J;else if($.baseDir)this.configDir=J2($.baseDir,"agents");else this.configDir=J2(r7("data"),"agents");s.debug(`[AgentRegistry] Config dir: ${this.configDir}`)}getConfigDir(){return this.configDir}hasAgent($){return this.agents.has($)}get($){return this.agents.get($)}list(){return Array.from(this.agents.values())}listAgentsByType($){return this.list().filter((J)=>J.type===$)}register($){if(!$.name)throw Error("Agent name is required");let J=R8.safeParse($);if(!J.success)throw Error(`Invalid agent config for "${$.name}": ${J.error.issues.map((Q)=>Q.message).join("; ")}`);this.agents.set($.name,{...$}),s.info(`[AgentRegistry] Registered agent: ${$.name}`,{type:$.type})}unregister($){let J=this.agents.delete($);if(J)s.info(`[AgentRegistry] Unregistered agent: ${$}`);return J}clear(){this.agents.clear(),s.info("[AgentRegistry] Cleared all agents")}async getSystemPrompt($){let J=this.agents.get($);if(!J)return;let Q=this.getActivePromptComponent();if(J.systemPromptRef)try{if(Q?.getPrompt){let W=await Q.getPrompt(J.systemPromptRef,{},{agentType:J.type});if(W)return s.debug(`[AgentRegistry] Resolved systemPromptRef via getPrompt: ${J.systemPromptRef}`),W}let X=Q?.get?.(J.systemPromptRef);if(X)return s.debug(`[AgentRegistry] Resolved systemPromptRef via get: ${J.systemPromptRef}`),X;if(J.systemPrompt)return s.debug("[AgentRegistry] systemPromptRef not found, falling back to inline"),J.systemPrompt;return}catch(X){return s.warn(`[AgentRegistry] Failed to resolve systemPromptRef: ${J.systemPromptRef}`,{error:X}),J.systemPrompt}return J.systemPrompt}getActivePromptComponent(){return this.resolvePromptComponent?.()??this.promptComponent}getInlineSystemPrompt($){let J=this.agents.get($);if(!J)return;return J.systemPrompt}getWorkflowName($){let J=this.agents.get($);if(!J||J.type!=="workflow")return;return J.workflow}getEntryAgent($){let J=this.agents.get($);if(!J||J.type!=="workflow")return;return J.entryAgent}registerWorkflowRunner(){if(this.agents.has("workflow-runner"))return;let J={name:"workflow-runner",type:"sub",description:"Workflow runner \u2014 \u63A5\u53D7\u5E26 workflow_name\uFF08\u5FC5\u586B\uFF09\u7684\u59D4\u6258\uFF0C\u6216\u6307\u793A\u5176\u6309 search-first \u6D41\u7A0B\u81EA\u884C\u9009\u5B9A\uFF08workflow_tag_list + workflow_search + workflow_list + workflow_get\uFF09\uFF0C\u7136\u540E\u901A\u8FC7 workflow_run \u6267\u884C workflow\uFF1B\u652F\u6301 session resume \u548C stop\uFF1B\u5931\u8D25\u63A5\u7BA1\u7531 prompt \u63A8\u7406\u89E6\u53D1 (Task #2251)\u3002**\u8C03\u7528\u65B9\u5FC5\u987B\u5728 prompt \u4E2D\u660E\u786E\u6307\u5B9A workflow \u540D\uFF0C\u6216\u6307\u793A sub-agent \u81EA\u884C\u641C\u7D22\u9009\u62E9\uFF1B\u7981\u6B62\u76F2\u731C/\u7ED5\u8FC7/\u8DF3\u8FC7 schema \u9A8C\u8BC1** (Task #2486)\u3002",systemPromptRef:"workflow-runner",deniedTools:["delegate_task","stop_task"],maxIterations:30};this.agents.set("workflow-runner",J)}registerTaskOrganizer(){if(this.agents.has("task-organizer"))return;let J={name:"task-organizer",type:"sub",description:"\u4EFB\u52A1\u6811\u6574\u7406\u5B50\u667A\u80FD\u4F53 \u2014 \u628A\u975E longterm \u7C7B\u578B\u7684\u6839\u4EFB\u52A1\u91CD\u65B0\u6302\u8F7D\u5230 longterm \u7236\u4EFB\u52A1\u4E0B\uFF0C\u6839\u4EFB\u52A1\u6536\u655B\u5230 10-20 \u4E2A\uFF1B\u7EF4\u62A4\u4EFB\u52A1\u6811\u5F62\u6001\u5065\u5EB7\uFF08re-parent / merge / archive / delete\uFF09\u3002Task #2348\u3002",systemPromptRef:"task-organizer",allowedTools:["task_create","task_get","task_list","task_update","task_delete","task_complete","task_tree","task_search","task_batch_archive","task_batch_delete","task_operation_create","task_operation_get","task_operation_list","task_operation_update","task_operation_delete"],deniedTools:["delegate_task","stop_task"],maxIterations:30};this.agents.set("task-organizer",J)}registerJsonExtractAgent(){if(this.agents.has("json-extract"))return;let J={name:"json-extract",type:"sub",description:"JSON \u63D0\u53D6\u5B50\u667A\u80FD\u4F53 \u2014 \u4ECE\u5BF9\u8BDD\u5386\u53F2\u4E2D\u63D0\u53D6\u7ED3\u6784\u5316 JSON\uFF0C\u901A\u8FC7 workflow_submit_output \u5DE5\u5177\u63D0\u4EA4",systemPromptRef:"json-extract",allowedTools:["workflow_submit_output"],deniedTools:[],maxIterations:5,filterHistory:!1};this.agents.set("json-extract",J)}registerWorkflowExtractAgent(){if(this.agents.has("workflow-extract"))return;let J={name:"workflow-extract",type:"sub",description:"Workflow \u63D0\u53D6\u5B50\u667A\u80FD\u4F53 \u2014 \u4ECE\u7236 task \u7684\u5BF9\u8BDD\u5386\u53F2\u4E2D\u5206\u6790\u9700\u6C42\uFF0C\u8FED\u4EE3\u5F0F\u751F\u6210\u5E76\u9A8C\u8BC1 Workflow YAML",systemPromptRef:"workflow-extract",allowedTools:["workflow_get","workflow_list","workflow_add","workflow_validate"],deniedTools:[],maxIterations:10,filterHistory:!1};this.agents.set("workflow-extract",J)}registerWorkflowCreator(){if(this.agents.has("workflow-creator"))return;let J={name:"workflow-creator",type:"sub",description:"Workflow \u6784\u5EFA\u5B50\u667A\u80FD\u4F53 \u2014 \u4E0E\u7528\u6237\u591A\u8F6E\u4EA4\u4E92\u5F0F\u534F\u4F5C\u8BBE\u8BA1\u3001\u9A8C\u8BC1\u5E76\u6CE8\u518C workflow",systemPromptRef:"workflow-creator",allowedTools:["workflow_list","workflow_get","workflow_search","workflow_tag_list","workflow_validate","workflow_add","bash","read_file","workflow_run","workflow_run_status"],deniedTools:["delegate_task","stop_task"],maxIterations:60};this.agents.set("workflow-creator",J)}registerCompactAgent(){let J={name:"compact",type:"sub",description:"\u538B\u7F29\u5B50\u667A\u80FD\u4F53 \u2014 \u4ECE\u7236 session \u7684\u5386\u53F2\u6D88\u606F\u4E2D\u63D0\u53D6\u7ED3\u6784\u5316 checkpoint JSON",systemPromptRef:"compact",allowedTools:[],deniedTools:[],maxIterations:3,filterHistory:!1},Q=this.agents.get("compact");if(Q){this.agents.set("compact",{...J,description:Q.description??J.description}),s.info("[AgentRegistry] Built-in compact agent overrode user-level definition (tool whitelist enforced: allowedTools=[])");return}this.agents.set("compact",J)}registerCompactHintAgent(){let J={name:"compact-hint",type:"sub",description:"\u538B\u7F29\u63D0\u793A\u5B50\u667A\u80FD\u4F53 \u2014 \u5206\u6790\u7236 session \u5386\u53F2\uFF0C\u751F\u6210\u573A\u666F\u5316\u538B\u7F29\u6307\u5BFC\u63D0\u793A",systemPromptRef:"compact-hint",allowedTools:[],deniedTools:[],maxIterations:3,filterHistory:!1},Q=this.agents.get("compact-hint");if(Q){this.agents.set("compact-hint",{...J,description:Q.description??J.description}),s.info("[AgentRegistry] Built-in compact-hint agent overrode user-level definition (tool whitelist enforced: allowedTools=[])");return}this.agents.set("compact-hint",J)}registerRoyAgent(){if(this.agents.has("roy"))return;let J={name:"roy",type:"sub",description:"Roy \u2014 versatile AI assistant inspired by Jarvis. Built-in general-purpose subagent for coding, research, planning, and complex multi-step tasks. Always available without `agent add roy`.",systemPromptRef:"roy",deniedTools:["delegate_task","stop_task","task_complete","task_cancel"]};this.agents.set("roy",J)}async load(){try{return await this.loadFromDirectory(this.configDir)}catch($){return s.warn(`[AgentRegistry] Failed to load agents: ${$}`),0}}async loadFromDirectory($){let J=0;try{if(!this.fs.existsSync($))return s.debug(`[AgentRegistry] Config directory does not exist: ${$}`),0;let Q=await this.fsPromises.readdir($,{withFileTypes:!0});for(let X of Q){let W=J2($,X.name);if(X.isDirectory())continue;if(!TD(X.name))continue;try{let G=await this.fsPromises.readFile(W,"utf-8"),Y=this.parseAgentConfig(G,W);if(Y)this.agents.set(Y.name,Y),s.info(`[AgentRegistry] Loaded agent: ${Y.name} from ${X.name}`),J++}catch(G){s.warn(`[AgentRegistry] Failed to load agent from ${X.name}: ${G}`)}}s.info(`[AgentRegistry] Loaded ${J} agents from ${$}`)}catch(Q){s.warn(`[AgentRegistry] Error reading config directory: ${Q}`)}return J}parseAgentConfig($,J){try{let Q=L8.default.parse($),X=R8.safeParse(Q);if(!X.success)return s.warn(`[AgentRegistry] Invalid agent config: ${J}`,{errors:X.error.errors}),null;return X.data}catch(Q){return s.error(`[AgentRegistry] Failed to parse agent config: ${J}`,{error:Q}),null}}async saveAgent($){try{let J=R8.safeParse($);if(!J.success)return s.error(`[AgentRegistry] Invalid agent config for "${$.name}": ${J.error.message}`),!1;await this.ensureConfigDir();let Q=this.agentToYaml($),X=J2(this.configDir,`${$.name}.yaml`);return await this.fsPromises.writeFile(X,Q,"utf-8"),this.agents.set($.name,$),s.info(`[AgentRegistry] Saved agent: ${$.name} to ${X}`),!0}catch(J){return s.error(`[AgentRegistry] Failed to save agent: ${$.name}`,{error:J}),!1}}async ensureConfigDir(){if(!this.fs.existsSync(this.configDir))await this.fsPromises.mkdir(this.configDir,{recursive:!0}),s.debug(`[AgentRegistry] Created config directory: ${this.configDir}`)}agentToYaml($){let J={name:$.name,type:$.type,...$.description!==void 0?{description:$.description}:{},...$.systemPromptRef!==void 0?{systemPromptRef:$.systemPromptRef}:{},...$.systemPrompt!==void 0?{systemPrompt:$.systemPrompt}:{},...$.model!==void 0?{model:$.model}:{},...$.maxIterations!==void 0?{maxIterations:$.maxIterations}:{},...$.maxErrorRetries!==void 0?{maxErrorRetries:$.maxErrorRetries}:{},...$.allowedTools!==void 0?{allowedTools:$.allowedTools}:{},...$.deniedTools!==void 0?{deniedTools:$.deniedTools}:{},...$.toolTimeout!==void 0?{toolTimeout:$.toolTimeout}:{},...$.toolRetries!==void 0?{toolRetries:$.toolRetries}:{},...$.doomLoopThreshold!==void 0?{doomLoopThreshold:$.doomLoopThreshold}:{},...$.filterHistory!==void 0?{filterHistory:$.filterHistory}:{},...$.workflow!==void 0?{workflow:$.workflow}:{},...$.entryAgent!==void 0?{entryAgent:$.entryAgent}:{}};return L8.default.stringify(J).trimEnd()+`
2212
- `}async deleteAgent($){if(!this.agents.get($))return s.warn(`[AgentRegistry] Agent not found: ${$}`),!1;try{let Q=J2(this.configDir,`${$}.yaml`);if(this.fs.existsSync(Q))await this.fsPromises.unlink(Q),s.info(`[AgentRegistry] Deleted agent file: ${Q}`);return this.agents.delete($),!0}catch(Q){return s.error(`[AgentRegistry] Failed to delete agent: ${$}`,{error:Q}),!1}}exportAgents($={}){let J=this.list();if($.format==="json")return J;return J}exportAgentsAsJson(){return JSON.stringify(this.list(),null,2)}size(){return this.agents.size}configDirExists(){return this.fs.existsSync(this.configDir)}getAgentFilePath($){return J2(this.configDir,`${$}.yaml`)}}m([u("agent.registry.register",{recordParams:!0,recordResult:!0,log:!0})],L0.prototype,"register",null);m([u("agent.registry.unregister",{recordParams:!0,recordResult:!0,log:!0})],L0.prototype,"unregister",null);m([u("agent.registry.clear",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"clear",null);m([u("agent.registry.getSystemPrompt",{recordParams:!0,recordResult:!1,log:!0})],L0.prototype,"getSystemPrompt",null);m([u("agent.registry.getWorkflowName",{recordParams:!0,recordResult:!0})],L0.prototype,"getWorkflowName",null);m([u("agent.registry.getEntryAgent",{recordParams:!0,recordResult:!0})],L0.prototype,"getEntryAgent",null);m([u("agent.registry.registerWorkflowRunner",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"registerWorkflowRunner",null);m([u("agent.registry.registerTaskOrganizer",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"registerTaskOrganizer",null);m([u("agent.registry.registerWorkflowCreator",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"registerWorkflowCreator",null);m([u("agent.registry.load",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"load",null);m([u("agent.registry.loadFromDirectory",{recordParams:!0,recordResult:!0,log:!0})],L0.prototype,"loadFromDirectory",null);function TD($){return $.endsWith(".yaml")||$.endsWith(".yml")}var A8=`You are a subagent created by the main agent to handle a specific task.
2450
+ `},LK=z4["workflow-extract"];var X0={BEFORE_CREATE:"task:before.create",AFTER_CREATE:"task:after.create",BEFORE_UPDATE:"task:before.update",AFTER_UPDATE:"task:after.update",BEFORE_DELETE:"task:before.delete",AFTER_DELETE:"task:after.delete",AFTER_COMPLETE:"task:after.complete",DELEGATE_BEFORE:"task:delegate:before",DELEGATE_AFTER:"task:delegate:after",OPERATION_BEFORE_CREATE:"task:operation:before.create",OPERATION_AFTER_CREATE:"task:operation:after.create"};import o7 from"os";import O0 from"path";var w6="roy-agent";function xY(){let $=o7.homedir();try{let J=e("xdg-basedir");return{config:J.xdgConfig||O0.join($,".config"),state:J.xdgState||O0.join($,".local","state"),data:J.xdgData||O0.join($,".local","share"),cache:J.xdgCache||O0.join($,".cache")}}catch{return{config:O0.join($,".config"),state:O0.join($,".local","state"),data:O0.join($,".local","share"),cache:O0.join($,".cache")}}}function hY(){let $=o7.homedir(),J=xY();return{home:$,config:O0.join(J.config,w6),state:O0.join(J.state,w6),data:O0.join(J.data,w6),cache:O0.join(J.cache,w6)}}class t7{_paths;get paths(){if(!this._paths)this._paths=hY();return this._paths}getPath($){return this.paths[$]}getComponentPath($,J){return O0.join(this.paths[$],J)}reset(){this._paths=void 0}}var yY=new t7;function e7($){return yY.getPath($)}import*as yD from"fs/promises";import*as gD from"fs";import{join as q2}from"path";var N8=qQ(H3(),1);n();V0();var s=i("agent:registry"),j8=K.object({name:K.string(),type:K.enum(["primary","sub","workflow"]),workflow:K.string().optional(),entryAgent:K.string().optional(),description:K.string().optional(),systemPromptRef:K.string().optional(),systemPrompt:K.string().optional(),model:K.string().optional(),maxIterations:K.number().optional(),maxErrorRetries:K.number().optional(),allowedTools:K.array(K.string()).optional(),deniedTools:K.array(K.string()).optional(),toolTimeout:K.number().optional(),toolRetries:K.number().optional(),doomLoopThreshold:K.number().optional(),filterHistory:K.boolean().optional()}).refine(($)=>$.type!=="workflow"||$.workflow&&$.workflow.length>0,{message:"workflow is required when type is 'workflow'"});class L0{agents=new Map;configDir;configComponent;promptComponent;resolvePromptComponent;fs;fsPromises;constructor($){this.configComponent=$.configComponent,this.promptComponent=$.promptComponent??null,this.resolvePromptComponent=$.resolvePromptComponent,this.fs=$.fs||gD,this.fsPromises=$.fsPromises||yD;let J=this.configComponent?.get?.("agent.configDir");if(J&&typeof J==="string"&&J.length>0)this.configDir=J;else if($.baseDir)this.configDir=q2($.baseDir,"agents");else this.configDir=q2(e7("data"),"agents");s.debug(`[AgentRegistry] Config dir: ${this.configDir}`)}getConfigDir(){return this.configDir}hasAgent($){return this.agents.has($)}get($){return this.agents.get($)}list(){return Array.from(this.agents.values())}listAgentsByType($){return this.list().filter((J)=>J.type===$)}register($){if(!$.name)throw Error("Agent name is required");let J=j8.safeParse($);if(!J.success)throw Error(`Invalid agent config for "${$.name}": ${J.error.issues.map((Q)=>Q.message).join("; ")}`);this.agents.set($.name,{...$}),s.info(`[AgentRegistry] Registered agent: ${$.name}`,{type:$.type})}unregister($){let J=this.agents.delete($);if(J)s.info(`[AgentRegistry] Unregistered agent: ${$}`);return J}clear(){this.agents.clear(),s.info("[AgentRegistry] Cleared all agents")}async getSystemPrompt($){let J=this.agents.get($);if(!J)return;let Q=this.getActivePromptComponent();if(J.systemPromptRef)try{if(Q?.getPrompt){let Y=await Q.getPrompt(J.systemPromptRef,{},{agentType:J.type});if(Y)return s.debug(`[AgentRegistry] Resolved systemPromptRef via getPrompt: ${J.systemPromptRef}`),Y}let X=Q?.get?.(J.systemPromptRef);if(X)return s.debug(`[AgentRegistry] Resolved systemPromptRef via get: ${J.systemPromptRef}`),X;if(J.systemPrompt)return s.debug("[AgentRegistry] systemPromptRef not found, falling back to inline"),J.systemPrompt;return}catch(X){return s.warn(`[AgentRegistry] Failed to resolve systemPromptRef: ${J.systemPromptRef}`,{error:X}),J.systemPrompt}return J.systemPrompt}getActivePromptComponent(){return this.resolvePromptComponent?.()??this.promptComponent}getInlineSystemPrompt($){let J=this.agents.get($);if(!J)return;return J.systemPrompt}getWorkflowName($){let J=this.agents.get($);if(!J||J.type!=="workflow")return;return J.workflow}getEntryAgent($){let J=this.agents.get($);if(!J||J.type!=="workflow")return;return J.entryAgent}registerWorkflowRunner(){if(this.agents.has("workflow-runner"))return;let J={name:"workflow-runner",type:"sub",description:"Workflow runner \u2014 \u63A5\u53D7\u5E26 workflow_name\uFF08\u5FC5\u586B\uFF09\u7684\u59D4\u6258\uFF0C\u6216\u6307\u793A\u5176\u6309 search-first \u6D41\u7A0B\u81EA\u884C\u9009\u5B9A\uFF08workflow_tag_list + workflow_search + workflow_list + workflow_get\uFF09\uFF0C\u7136\u540E\u901A\u8FC7 workflow_run \u6267\u884C workflow\uFF1B\u652F\u6301 session resume \u548C stop\uFF1B\u5931\u8D25\u63A5\u7BA1\u7531 prompt \u63A8\u7406\u89E6\u53D1 (Task #2251)\u3002**\u8C03\u7528\u65B9\u5FC5\u987B\u5728 prompt \u4E2D\u660E\u786E\u6307\u5B9A workflow \u540D\uFF0C\u6216\u6307\u793A sub-agent \u81EA\u884C\u641C\u7D22\u9009\u62E9\uFF1B\u7981\u6B62\u76F2\u731C/\u7ED5\u8FC7/\u8DF3\u8FC7 schema \u9A8C\u8BC1** (Task #2486)\u3002",systemPromptRef:"workflow-runner",deniedTools:["delegate_task","stop_task"],maxIterations:30};this.agents.set("workflow-runner",J)}registerTaskOrganizer(){if(this.agents.has("task-organizer"))return;let J={name:"task-organizer",type:"sub",description:"\u4EFB\u52A1\u6811\u6574\u7406\u5B50\u667A\u80FD\u4F53 \u2014 \u628A\u975E longterm \u7C7B\u578B\u7684\u6839\u4EFB\u52A1\u91CD\u65B0\u6302\u8F7D\u5230 longterm \u7236\u4EFB\u52A1\u4E0B\uFF0C\u6839\u4EFB\u52A1\u6536\u655B\u5230 10-20 \u4E2A\uFF1B\u7EF4\u62A4\u4EFB\u52A1\u6811\u5F62\u6001\u5065\u5EB7\uFF08re-parent / merge / archive / delete\uFF09\u3002Task #2348\u3002",systemPromptRef:"task-organizer",allowedTools:["task_create","task_get","task_list","task_update","task_delete","task_complete","task_tree","task_search","task_batch_archive","task_batch_delete","task_operation_create","task_operation_get","task_operation_list","task_operation_update","task_operation_delete"],deniedTools:["delegate_task","stop_task"],maxIterations:30};this.agents.set("task-organizer",J)}registerJsonExtractAgent(){if(this.agents.has("json-extract"))return;let J={name:"json-extract",type:"sub",description:"JSON \u63D0\u53D6\u5B50\u667A\u80FD\u4F53 \u2014 \u4ECE\u5BF9\u8BDD\u5386\u53F2\u4E2D\u63D0\u53D6\u7ED3\u6784\u5316 JSON\uFF0C\u901A\u8FC7 workflow_submit_output \u5DE5\u5177\u63D0\u4EA4",systemPromptRef:"json-extract",allowedTools:["workflow_submit_output"],deniedTools:[],maxIterations:5,filterHistory:!1};this.agents.set("json-extract",J)}registerWorkflowExtractAgent(){if(this.agents.has("workflow-extract"))return;let J={name:"workflow-extract",type:"sub",description:"Workflow \u63D0\u53D6\u5B50\u667A\u80FD\u4F53 \u2014 \u4ECE\u7236 task \u7684\u5BF9\u8BDD\u5386\u53F2\u4E2D\u5206\u6790\u9700\u6C42\uFF0C\u8FED\u4EE3\u5F0F\u751F\u6210\u5E76\u9A8C\u8BC1 Workflow YAML",systemPromptRef:"workflow-extract",allowedTools:["workflow_get","workflow_list","workflow_add","workflow_validate"],deniedTools:[],maxIterations:10,filterHistory:!1};this.agents.set("workflow-extract",J)}registerWorkflowCreator(){if(this.agents.has("workflow-creator"))return;let J={name:"workflow-creator",type:"sub",description:"Workflow \u6784\u5EFA\u5B50\u667A\u80FD\u4F53 \u2014 \u4E0E\u7528\u6237\u591A\u8F6E\u4EA4\u4E92\u5F0F\u534F\u4F5C\u8BBE\u8BA1\u3001\u9A8C\u8BC1\u5E76\u6CE8\u518C workflow",systemPromptRef:"workflow-creator",allowedTools:["workflow_list","workflow_get","workflow_search","workflow_tag_list","workflow_validate","workflow_add","bash","read_file","workflow_run","workflow_run_status"],deniedTools:["delegate_task","stop_task"],maxIterations:60};this.agents.set("workflow-creator",J)}registerCompactAgent(){let J={name:"compact",type:"sub",description:"\u538B\u7F29\u5B50\u667A\u80FD\u4F53 \u2014 \u4ECE\u7236 session \u7684\u5386\u53F2\u6D88\u606F\u4E2D\u63D0\u53D6\u7ED3\u6784\u5316 checkpoint JSON",systemPromptRef:"compact",allowedTools:[],deniedTools:[],maxIterations:3,filterHistory:!1},Q=this.agents.get("compact");if(Q){this.agents.set("compact",{...J,description:Q.description??J.description}),s.info("[AgentRegistry] Built-in compact agent overrode user-level definition (tool whitelist enforced: allowedTools=[])");return}this.agents.set("compact",J)}registerCompactHintAgent(){let J={name:"compact-hint",type:"sub",description:"\u538B\u7F29\u63D0\u793A\u5B50\u667A\u80FD\u4F53 \u2014 \u5206\u6790\u7236 session \u5386\u53F2\uFF0C\u751F\u6210\u573A\u666F\u5316\u538B\u7F29\u6307\u5BFC\u63D0\u793A",systemPromptRef:"compact-hint",allowedTools:[],deniedTools:[],maxIterations:3,filterHistory:!1},Q=this.agents.get("compact-hint");if(Q){this.agents.set("compact-hint",{...J,description:Q.description??J.description}),s.info("[AgentRegistry] Built-in compact-hint agent overrode user-level definition (tool whitelist enforced: allowedTools=[])");return}this.agents.set("compact-hint",J)}registerRoyAgent(){if(this.agents.has("roy"))return;let J={name:"roy",type:"sub",description:"Roy \u2014 versatile AI assistant inspired by Jarvis. Built-in general-purpose subagent for coding, research, planning, and complex multi-step tasks. Always available without `agent add roy`.",systemPromptRef:"roy",deniedTools:["delegate_task","stop_task","task_complete","task_cancel"]};this.agents.set("roy",J)}async load(){try{return await this.loadFromDirectory(this.configDir)}catch($){return s.warn(`[AgentRegistry] Failed to load agents: ${$}`),0}}async loadFromDirectory($){let J=0;try{if(!this.fs.existsSync($))return s.debug(`[AgentRegistry] Config directory does not exist: ${$}`),0;let Q=await this.fsPromises.readdir($,{withFileTypes:!0});for(let X of Q){let Y=q2($,X.name);if(X.isDirectory())continue;if(!kD(X.name))continue;try{let G=await this.fsPromises.readFile(Y,"utf-8"),q=this.parseAgentConfig(G,Y);if(q)this.agents.set(q.name,q),s.info(`[AgentRegistry] Loaded agent: ${q.name} from ${X.name}`),J++}catch(G){s.warn(`[AgentRegistry] Failed to load agent from ${X.name}: ${G}`)}}s.info(`[AgentRegistry] Loaded ${J} agents from ${$}`)}catch(Q){s.warn(`[AgentRegistry] Error reading config directory: ${Q}`)}return J}parseAgentConfig($,J){try{let Q=N8.default.parse($),X=j8.safeParse(Q);if(!X.success)return s.warn(`[AgentRegistry] Invalid agent config: ${J}`,{errors:X.error.errors}),null;return X.data}catch(Q){return s.error(`[AgentRegistry] Failed to parse agent config: ${J}`,{error:Q}),null}}async saveAgent($){try{let J=j8.safeParse($);if(!J.success)return s.error(`[AgentRegistry] Invalid agent config for "${$.name}": ${J.error.message}`),!1;await this.ensureConfigDir();let Q=this.agentToYaml($),X=q2(this.configDir,`${$.name}.yaml`);return await this.fsPromises.writeFile(X,Q,"utf-8"),this.agents.set($.name,$),s.info(`[AgentRegistry] Saved agent: ${$.name} to ${X}`),!0}catch(J){return s.error(`[AgentRegistry] Failed to save agent: ${$.name}`,{error:J}),!1}}async ensureConfigDir(){if(!this.fs.existsSync(this.configDir))await this.fsPromises.mkdir(this.configDir,{recursive:!0}),s.debug(`[AgentRegistry] Created config directory: ${this.configDir}`)}agentToYaml($){let J={name:$.name,type:$.type,...$.description!==void 0?{description:$.description}:{},...$.systemPromptRef!==void 0?{systemPromptRef:$.systemPromptRef}:{},...$.systemPrompt!==void 0?{systemPrompt:$.systemPrompt}:{},...$.model!==void 0?{model:$.model}:{},...$.maxIterations!==void 0?{maxIterations:$.maxIterations}:{},...$.maxErrorRetries!==void 0?{maxErrorRetries:$.maxErrorRetries}:{},...$.allowedTools!==void 0?{allowedTools:$.allowedTools}:{},...$.deniedTools!==void 0?{deniedTools:$.deniedTools}:{},...$.toolTimeout!==void 0?{toolTimeout:$.toolTimeout}:{},...$.toolRetries!==void 0?{toolRetries:$.toolRetries}:{},...$.doomLoopThreshold!==void 0?{doomLoopThreshold:$.doomLoopThreshold}:{},...$.filterHistory!==void 0?{filterHistory:$.filterHistory}:{},...$.workflow!==void 0?{workflow:$.workflow}:{},...$.entryAgent!==void 0?{entryAgent:$.entryAgent}:{}};return N8.default.stringify(J).trimEnd()+`
2451
+ `}async deleteAgent($){if(!this.agents.get($))return s.warn(`[AgentRegistry] Agent not found: ${$}`),!1;try{let Q=q2(this.configDir,`${$}.yaml`);if(this.fs.existsSync(Q))await this.fsPromises.unlink(Q),s.info(`[AgentRegistry] Deleted agent file: ${Q}`);return this.agents.delete($),!0}catch(Q){return s.error(`[AgentRegistry] Failed to delete agent: ${$}`,{error:Q}),!1}}exportAgents($={}){let J=this.list();if($.format==="json")return J;return J}exportAgentsAsJson(){return JSON.stringify(this.list(),null,2)}size(){return this.agents.size}configDirExists(){return this.fs.existsSync(this.configDir)}getAgentFilePath($){return q2(this.configDir,`${$}.yaml`)}}k([u("agent.registry.register",{recordParams:!0,recordResult:!0,log:!0})],L0.prototype,"register",null);k([u("agent.registry.unregister",{recordParams:!0,recordResult:!0,log:!0})],L0.prototype,"unregister",null);k([u("agent.registry.clear",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"clear",null);k([u("agent.registry.getSystemPrompt",{recordParams:!0,recordResult:!1,log:!0})],L0.prototype,"getSystemPrompt",null);k([u("agent.registry.getWorkflowName",{recordParams:!0,recordResult:!0})],L0.prototype,"getWorkflowName",null);k([u("agent.registry.getEntryAgent",{recordParams:!0,recordResult:!0})],L0.prototype,"getEntryAgent",null);k([u("agent.registry.registerWorkflowRunner",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"registerWorkflowRunner",null);k([u("agent.registry.registerTaskOrganizer",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"registerTaskOrganizer",null);k([u("agent.registry.registerWorkflowCreator",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"registerWorkflowCreator",null);k([u("agent.registry.load",{recordParams:!1,recordResult:!0,log:!0})],L0.prototype,"load",null);k([u("agent.registry.loadFromDirectory",{recordParams:!0,recordResult:!0,log:!0})],L0.prototype,"loadFromDirectory",null);function kD($){return $.endsWith(".yaml")||$.endsWith(".yml")}var _8=`You are a subagent created by the main agent to handle a specific task.
2213
2452
 
2214
2453
  ## Your Role
2215
2454
  - You were created to handle: {task_description}
@@ -2226,14 +2465,14 @@ task_operation_create({
2226
2465
  ## Execution
2227
2466
  - Use the available tools to complete the task
2228
2467
  - If you need more information, ask the main agent through the result
2229
- - Return a clear summary of what you did and the results`;import{AsyncLocalStorage as ID}from"async_hooks";var vD=new ID;function _8($,J){return vD.run($,J)}import{AsyncLocalStorage as xD}from"async_hooks";var j8=()=>{};function Q2(){return c2.getStore()}function z9(){return c2.getStore()||{}}function d2(){return c2.getStore()?.agentContext?.currentTaskId}function G3($){return typeof $==="number"&&Number.isInteger($)&&$>0?$:void 0}var Y3,c2,hD,p2,q$=a(()=>{r(),z0(),j8(),Y3=i("env:context:env-context"),c2=new xD,hD=U0(function(J,Q){return G3(J?.metadata?.parentTaskId)??G3(Q?.parentTaskId)},"env-context.resolveEnvParentTaskId",{recordParams:!1,recordResult:!1,log:!1,resultFilter:($)=>({parentTaskId:$??null})}),p2=U0(function(J){let Q=d2(),X=c2.getStore();if(X){if(!X.agentContext)X.agentContext={};X.agentContext.currentTaskId=J}Y3.info(`[setCurrentTaskId] taskId=${J??"undefined"} (was: ${Q??"undefined"})`)},"env-context.setCurrentTaskId",{recordParams:!0,recordResult:!1,log:!0})});var D9=a(()=>{q$(),j8()});class F9{_hooks=new Map;componentName;componentVersion;defaultPriority;constructor($={}){this.componentName=$.componentName??"unknown",this.componentVersion=$.componentVersion??"0.0.0",this.defaultPriority=$.defaultPriority??0}register($,J){this.getOrCreateHooks($).push(J)}registerMany($,J){this.getOrCreateHooks($).push(...J)}unregister($,J){let Q=this._hooks.get($);if(!Q)return!1;let X=Q.findIndex((W)=>W.name===J);if(X===-1)return!1;return Q.splice(X,1),!0}unregisterAll($){this._hooks.delete($)}async execute($,J,Q={}){let X=this._hooks.get($),W=process.env.ROY_HOOK_DEBUG==="1";if(W)console.error(`[DEBUG hook-manager.execute] hookPoint=${$}, hooksCount=${X?.length??0}`);if(!X||X.length===0){if(W)console.error(`[DEBUG hook-manager.execute] \u2192 EARLY RETURN (no hooks registered for ${$})`);return}let G=Q2();if(W){if(console.error(`[DEBUG hook-manager.execute] envContext=${G?"present":"absent"}`),G)console.error(`[DEBUG hook-manager.execute] envContext.pluginEnabled=${JSON.stringify(G.pluginEnabled)}`),console.error(`[DEBUG hook-manager.execute] envContext.sourceId=${G.sourceId}`)}if(G){if(Q.envContext=G,!Q.pluginEnabled&&G.pluginEnabled)Q.pluginEnabled=G.pluginEnabled}let Y=this.sortHooks(X),q=this.createContext($,J,Q,"before"),H=Q.pluginEnabled||{};if(W){console.error(`[DEBUG hook-manager.execute] final pluginEnabled=${JSON.stringify(H)}`),console.error(`[DEBUG hook-manager.execute] sortedHooks=${Y.length}:`);for(let B of Y)console.error(`[DEBUG hook-manager.execute] - name=${B.name} pluginName=${B.pluginName} sourceId=${B.sourceId}`)}for(let B of Y){if(B.pluginName&&B.sourceId){let U=`${B.sourceId}:${B.pluginName}`,z=H[U];if(W)console.error(`[DEBUG hook-manager.execute] hook ${B.name} (${U}) enabled=${z}`);if(z!==!0){if(W)console.error(`[DEBUG hook-manager.execute] \u2192 SKIPPED (pluginEnabled[${U}] !== true, got ${JSON.stringify(z)})`);continue}}else if(W)console.error(`[DEBUG hook-manager.execute] hook ${B.name} has no pluginName/sourceId, ALWAYS EXECUTED`);if(W)console.error(`[DEBUG hook-manager.execute] \u2192 EXECUTING hook ${B.name}`);await this.safeExecute(B,q)}}async executeAndCollect($,J,Q={}){let X=this._hooks.get($);if(!X||X.length===0)return[];let W=this.sortHooks(X),G=this.createContext($,J,Q,"before"),Y=[];for(let q of W){let H=await this.safeExecuteAndReturn(q,G);if(H!==void 0)Y.push(H)}return Y}count($){return this._hooks.get($)?.length??0}clear(){this._hooks.clear()}getHookPoints(){return Array.from(this._hooks.keys())}hasHooks($){return this.count($)>0}setComponentInfo($,J){this.componentName=$,this.componentVersion=J}get hooks(){return this._hooks}async executeWithIntervention($,J,Q={}){let X=this._hooks.get($);if(!X||X.length===0)return{stopped:!1,results:[]};let W=this.sortHooks(X),G=this.createContext($,J,Q,"before"),Y=[],q=!1,H;for(let B of W){if(q)break;let U=await this.safeExecuteAndReturn(B,G);if(Y.push(U),U&&typeof U==="object"&&"stopped"in U){let z=U;if(z.stopped)q=!0,H=z.action}}return{stopped:q,action:H,results:Y}}getOrCreateHooks($){let J=this._hooks.get($);if(!J)J=[],this._hooks.set($,J);return J}sortHooks($){return[...$].sort((J,Q)=>{let X=J.priority??this.defaultPriority,W=Q.priority??this.defaultPriority;return X-W})}createContext($,J,Q,X){return{component:{name:this.componentName,version:this.componentVersion},data:J,metadata:Q,phase:X,hookPoint:$}}async safeExecute($,J){try{let Q=$.execute(J);if(Q&&typeof Q==="object"&&typeof Q.then==="function")await Q}catch(Q){console.error(`Hook "${$.name}" failed:`,Q)}}async safeExecuteAndReturn($,J){try{return await $.execute(J)}catch(Q){console.error(`Hook "${$.name}" failed:`,Q);return}}}var N8=a(()=>{D9()});function yD(){let $=E0.register.bind(E0);E0.register=function(J,Q){$(J,Q);let X=q3[J];if(X)$(X,Q)}}var E0,gD,kD,mD,q3,X2=a(()=>{N8(),E0=new F9,gD={BEFORE_START:"agent:before.start",BEFORE_LLM:"agent:before.llm",AFTER_LLM:"agent:after.llm",BEFORE_TOOL:"agent:before.tool",AFTER_TOOL:"agent:after.tool",ON_ITERATION:"agent:on.iteration",ON_THRESHOLD:"agent:on.threshold",AFTER_COMPLETE:"agent:after.complete",ON_ERROR:"agent:on.error"},kD={BEFORE_INVOKE:"llm:before.invoke",AFTER_INVOKE:"llm:after.invoke",ON_STREAM:"llm:on.stream"},mD={BEFORE_EXECUTE:"tool:before.execute",AFTER_EXECUTE:"tool:after.execute",BEFORE_REGISTER:"tool:before.register",AFTER_REGISTER:"tool:after.register",ON_ERROR:"tool:on.error"},q3={"before.tool":"tool:before.execute","after.tool":"tool:after.execute","llm.before-invoke":"llm:before.invoke","llm.after-invoke":"llm:after.invoke","llm.stream":"llm:on.stream","prompt.before-render":"prompt:before.render","prompt.after-render":"prompt:after.render","prompt:before.render":"prompt.before-render","prompt:after.render":"prompt.after-render","prompt:after-render":"prompt.after-render","prompt:before-render":"prompt.before-render"},yD()});r();z0();D9();function uD($,J){if(P8($))return!0;return J?.hasAgent($)??!1}async function lD($,J={}){let X=(J.getBuiltIn??P8)($),W=J.registry?.get($);if(!X&&!W)return;if(W)return cD($,W,X,J.registry);return{subagentType:$,description:X.description,basePrompt:X.promptOverride||A8,allowedTools:X.allowedTools,deniedTools:X.deniedTools??["delegate_task","stop_task"],fromRegistry:!1}}async function cD($,J,Q,X){let W=X?await X.getSystemPrompt($):J.systemPrompt;return{subagentType:$,description:J.description||Q?.description||"Custom agent",basePrompt:W||Q?.promptOverride||A8,allowedTools:J.allowedTools??Q?.allowedTools,deniedTools:J.deniedTools??Q?.deniedTools??["delegate_task","stop_task"],fromRegistry:!0}}function dD($){return`
2468
+ - Return a clear summary of what you did and the results`;import{AsyncLocalStorage as mD}from"async_hooks";var uD=new mD;function A8($,J){return uD.run($,J)}import{AsyncLocalStorage as lD}from"async_hooks";var Z8=()=>{};function W2(){return i2.getStore()}function M9(){return i2.getStore()||{}}function n2(){return i2.getStore()?.agentContext?.currentTaskId}function B3($){return typeof $==="number"&&Number.isInteger($)&&$>0?$:void 0}var U3,i2,cD,r2,B$=a(()=>{n(),V0(),Z8(),U3=i("env:context:env-context"),i2=new lD,cD=B0(function(J,Q){return B3(J?.metadata?.parentTaskId)??B3(Q?.parentTaskId)},"env-context.resolveEnvParentTaskId",{recordParams:!1,recordResult:!1,log:!1,resultFilter:($)=>({parentTaskId:$??null})}),r2=B0(function(J){let Q=n2(),X=i2.getStore();if(X){if(!X.agentContext)X.agentContext={};X.agentContext.currentTaskId=J}U3.info(`[setCurrentTaskId] taskId=${J??"undefined"} (was: ${Q??"undefined"})`)},"env-context.setCurrentTaskId",{recordParams:!0,recordResult:!1,log:!0})});var O9=a(()=>{B$(),Z8()});class K9{_hooks=new Map;componentName;componentVersion;defaultPriority;constructor($={}){this.componentName=$.componentName??"unknown",this.componentVersion=$.componentVersion??"0.0.0",this.defaultPriority=$.defaultPriority??0}register($,J){this.getOrCreateHooks($).push(J)}registerMany($,J){this.getOrCreateHooks($).push(...J)}unregister($,J){let Q=this._hooks.get($);if(!Q)return!1;let X=Q.findIndex((Y)=>Y.name===J);if(X===-1)return!1;return Q.splice(X,1),!0}unregisterAll($){this._hooks.delete($)}async execute($,J,Q={}){let X=this._hooks.get($),Y=process.env.ROY_HOOK_DEBUG==="1";if(Y)console.error(`[DEBUG hook-manager.execute] hookPoint=${$}, hooksCount=${X?.length??0}`);if(!X||X.length===0){if(Y)console.error(`[DEBUG hook-manager.execute] \u2192 EARLY RETURN (no hooks registered for ${$})`);return}let G=W2();if(Y){if(console.error(`[DEBUG hook-manager.execute] envContext=${G?"present":"absent"}`),G)console.error(`[DEBUG hook-manager.execute] envContext.pluginEnabled=${JSON.stringify(G.pluginEnabled)}`),console.error(`[DEBUG hook-manager.execute] envContext.sourceId=${G.sourceId}`)}if(G){if(Q.envContext=G,!Q.pluginEnabled&&G.pluginEnabled)Q.pluginEnabled=G.pluginEnabled}let q=this.sortHooks(X),W=this.createContext($,J,Q,"before"),z=Q.pluginEnabled||{};if(Y){console.error(`[DEBUG hook-manager.execute] final pluginEnabled=${JSON.stringify(z)}`),console.error(`[DEBUG hook-manager.execute] sortedHooks=${q.length}:`);for(let H of q)console.error(`[DEBUG hook-manager.execute] - name=${H.name} pluginName=${H.pluginName} sourceId=${H.sourceId}`)}for(let H of q){if(H.pluginName&&H.sourceId){let B=`${H.sourceId}:${H.pluginName}`,U=z[B];if(Y)console.error(`[DEBUG hook-manager.execute] hook ${H.name} (${B}) enabled=${U}`);if(U!==!0){if(Y)console.error(`[DEBUG hook-manager.execute] \u2192 SKIPPED (pluginEnabled[${B}] !== true, got ${JSON.stringify(U)})`);continue}}else if(Y)console.error(`[DEBUG hook-manager.execute] hook ${H.name} has no pluginName/sourceId, ALWAYS EXECUTED`);if(Y)console.error(`[DEBUG hook-manager.execute] \u2192 EXECUTING hook ${H.name}`);await this.safeExecute(H,W)}}async executeAndCollect($,J,Q={}){let X=this._hooks.get($);if(!X||X.length===0)return[];let Y=this.sortHooks(X),G=this.createContext($,J,Q,"before"),q=[];for(let W of Y){let z=await this.safeExecuteAndReturn(W,G);if(z!==void 0)q.push(z)}return q}count($){return this._hooks.get($)?.length??0}clear(){this._hooks.clear()}getHookPoints(){return Array.from(this._hooks.keys())}hasHooks($){return this.count($)>0}setComponentInfo($,J){this.componentName=$,this.componentVersion=J}get hooks(){return this._hooks}async executeWithIntervention($,J,Q={}){let X=this._hooks.get($);if(!X||X.length===0)return{stopped:!1,results:[]};let Y=this.sortHooks(X),G=this.createContext($,J,Q,"before"),q=[],W=!1,z;for(let H of Y){if(W)break;let B=await this.safeExecuteAndReturn(H,G);if(q.push(B),B&&typeof B==="object"&&"stopped"in B){let U=B;if(U.stopped)W=!0,z=U.action}}return{stopped:W,action:z,results:q}}getOrCreateHooks($){let J=this._hooks.get($);if(!J)J=[],this._hooks.set($,J);return J}sortHooks($){return[...$].sort((J,Q)=>{let X=J.priority??this.defaultPriority,Y=Q.priority??this.defaultPriority;return X-Y})}createContext($,J,Q,X){return{component:{name:this.componentName,version:this.componentVersion},data:J,metadata:Q,phase:X,hookPoint:$}}async safeExecute($,J){try{let Q=$.execute(J);if(Q&&typeof Q==="object"&&typeof Q.then==="function")await Q}catch(Q){console.error(`Hook "${$.name}" failed:`,Q)}}async safeExecuteAndReturn($,J){try{return await $.execute(J)}catch(Q){console.error(`Hook "${$.name}" failed:`,Q);return}}}var w8=a(()=>{O9()});function pD(){let $=S0.register.bind(S0);S0.register=function(J,Q){$(J,Q);let X=V3[J];if(X)$(X,Q)}}var S0,dD,iD,nD,V3,z2=a(()=>{w8(),S0=new K9,dD={BEFORE_START:"agent:before.start",BEFORE_LLM:"agent:before.llm",AFTER_LLM:"agent:after.llm",BEFORE_TOOL:"agent:before.tool",AFTER_TOOL:"agent:after.tool",ON_ITERATION:"agent:on.iteration",ON_THRESHOLD:"agent:on.threshold",AFTER_COMPLETE:"agent:after.complete",ON_ERROR:"agent:on.error"},iD={BEFORE_INVOKE:"llm:before.invoke",AFTER_INVOKE:"llm:after.invoke",ON_STREAM:"llm:on.stream"},nD={BEFORE_EXECUTE:"tool:before.execute",AFTER_EXECUTE:"tool:after.execute",BEFORE_REGISTER:"tool:before.register",AFTER_REGISTER:"tool:after.register",ON_ERROR:"tool:on.error"},V3={"before.tool":"tool:before.execute","after.tool":"tool:after.execute","llm.before-invoke":"llm:before.invoke","llm.after-invoke":"llm:after.invoke","llm.stream":"llm:on.stream","prompt.before-render":"prompt:before.render","prompt.after-render":"prompt:after.render","prompt:before.render":"prompt.before-render","prompt:after.render":"prompt.after-render","prompt:after-render":"prompt.after-render","prompt:before-render":"prompt.before-render"},pD()});n();V0();O9();function rD($,J){if(S8($))return!0;return J?.hasAgent($)??!1}async function aD($,J={}){let X=(J.getBuiltIn??S8)($),Y=J.registry?.get($);if(!X&&!Y)return;if(Y)return sD($,Y,X,J.registry);return{subagentType:$,description:X.description,basePrompt:X.promptOverride||_8,allowedTools:X.allowedTools,deniedTools:X.deniedTools??["delegate_task","stop_task"],fromRegistry:!1}}async function sD($,J,Q,X){let Y=X?await X.getSystemPrompt($):J.systemPrompt;return{subagentType:$,description:J.description||Q?.description||"Custom agent",basePrompt:Y||Q?.promptOverride||_8,allowedTools:J.allowedTools??Q?.allowedTools,deniedTools:J.deniedTools??Q?.deniedTools??["delegate_task","stop_task"],fromRegistry:!0}}function oD($){return`
2230
2469
  ## Agent Selection Guide
2231
2470
 
2232
2471
  - Choose \`subagent_type\` from the list above; use \`general\` when no specialized agent fits (default).
2233
2472
  ${$.hasCustomAgents?"- Custom agents from AgentRegistry are listed above.":"- Custom agents from AgentRegistry appear above when registered."}
2234
- - For full metadata: \`roy-agent agents list\`, \`roy-agent agents get <name>\`, \`roy-agent prompt list\`.`}function pD($){let J=w8.map((Y)=>`- ${Y.id}: ${Y.description}`),X=($?.list()??[]).filter((Y)=>!w8.some((q)=>q.id===Y.name)).map((Y)=>{if(Y.type==="workflow"){let q=Y.workflow?` (workflow: ${Y.workflow})`:"";return`- ${Y.name}: ${Y.description||"Workflow agent"}${q}`}return`- ${Y.name}: ${Y.description||"Custom agent"}`}),W=[...J,...X],G=dD({hasCustomAgents:X.length>0});return W.join(`
2235
- `)+G}X2();var iD=[/\bsk-(?:proj-)?[A-Za-z0-9_-]{16,}\b/g,/\bxox[abprs]-[A-Za-z0-9-]{8,}\b/g,/\bghp_[A-Za-z0-9]{16,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{16,}\b/g,/\bBearer\s+[A-Za-z0-9._\-+/=]{12,}\b/g,/\bAKIA[0-9A-Z]{16}\b/g];function nD($){let J=$;for(let Q of iD)J=J.replace(Q,"<redacted>");return J}function rD($,J){if($.length<=J)return $;if(J<=3)return $.slice(0,J);return $.slice(0,J-1)+"\u2026"}function H3($,J){return rD(nD($),J)}class b8{maxEntries;ttlMs;maxDescriptionChars;records=new Map;childrenIndex=new Map;constructor($={}){this.maxEntries=$.maxEntries??500,this.ttlMs=$.ttlMs??86400000,this.maxDescriptionChars=$.maxDescriptionChars??240}record($,J={}){let Q=new Date().toISOString(),X=this.toRecord($,J,Q);return this.upsert(X),this.indexParentChild(X),this.evictIfNeeded(),X}update($,J){let Q=this.records.get($.id);if(!Q)return;let X=new Date().toISOString();this.records.delete($.id);let W={...Q,...this.toRecord($,J??Q.source,X),createdAt:Q.createdAt,source:J??Q.source};return this.records.set($.id,W),this.childrenIndex.delete(W.taskId),this.indexParentChild(W),this.evictIfNeeded(),W}remove($){let J=this.records.get($);if(!J)return!1;if(this.records.delete($),J.parentTaskId!==void 0){let Q=this.childrenIndex.get(J.parentTaskId);if(Q?.delete($),Q&&Q.size===0)this.childrenIndex.delete(J.parentTaskId)}return!0}getById($){let J=this.records.get($);if(!J)return;if(Date.now()-Date.parse(J.updatedAt)>this.ttlMs){this.remove($);return}return J}peekById($){return this.records.get($)}clear(){this.records.clear(),this.childrenIndex.clear()}size(){return this.records.size}recent($={}){let J=$.limit??10,Q=$.statuses,X=new Set($.excludeIds??[]),W=$.excludeAncestorOf??$.excludeSelfOrDescendant,G=W?this.collectSubtree(W):new Set,Y=$.sinceHours?Date.now()-$.sinceHours*60*60*1000:0,q=Date.now(),H=new Set([...X,...G]),B=[];for(let U of this.records.values()){if(q-Date.parse(U.updatedAt)>this.ttlMs)continue;if(Y>0&&Date.parse(U.updatedAt)<Y)continue;if(H.has(U.taskId))continue;if($.scope){if($.scope.sessionId!==void 0&&U.source.sessionId!==$.scope.sessionId)continue;if($.scope.parentSessionId!==void 0&&U.source.parentSessionId!==$.scope.parentSessionId)continue;if($.scope.subagentType!==void 0&&U.source.subagentType!==$.scope.subagentType)continue}if(Q){if(!Q.includes(U.status))continue}else if(U.status==="archived")continue;B.push(U)}if($.activeChildFirst){let U=new Map;for(let z of B)U.set(z.taskId,this.hasActiveChild(z.taskId));B.sort((z,V)=>{let M=U.get(z.taskId)?1:0,F=U.get(V.taskId)?1:0;if(M!==F)return F-M;let D=Date.parse(V.updatedAt)-Date.parse(z.updatedAt);if(D!==0)return D;return V.taskId-z.taskId})}else B.sort((U,z)=>{let V=Date.parse(z.updatedAt)-Date.parse(U.updatedAt);if(V!==0)return V;return z.taskId-U.taskId});return B.slice(0,J)}getSubtreeSummary($,J={}){let Q=J.includeArchived===!0,X={descendantCount:0,activeCount:0,completedCount:0,maxDepth:0};if(!this.records.has($)&&!this.childrenIndex.has($))return X;let W=this.childrenIndex.get($),G=W?Array.from(W):[],Y=G.length>0?1:0;X.maxDepth=Y;let q=G;while(q.length>0){let H=[];for(let B of q){let U=this.records.get(B);if(!U)continue;if(!Q&&U.status==="archived")continue;if(X.descendantCount++,U.status==="active")X.activeCount++;else if(U.status==="completed")X.completedCount++;let z=this.childrenIndex.get(B);if(z&&z.size>0)for(let V of z)H.push(V)}if(H.length>0)Y++,X.maxDepth=Y;q=H}return X}hasActiveChild($){let J=this.childrenIndex.get($);if(!J)return!1;for(let Q of J){let X=this.records.get(Q);if(!X)continue;if(X.status==="active"||X.status==="todo")return!0}return!1}toRecord($,J,Q){let X=this.safeParseContext($.context),W=X?this.stripSensitiveKeys(X):void 0;return{taskId:$.id,title:$.title,description:H3($.description||"",this.maxDescriptionChars),goals:H3($.goals_and_expected_deliverables||"",this.maxDescriptionChars),tags:$.tags??[],status:$.status,priority:$.priority,type:$.type,parentTaskId:$.parent_task_id,source:J,createdAt:$.createdAt||Q,updatedAt:$.updatedAt||Q,operationCount:0,project_path:$.project_path,branch:this.pickString(W,"branch"),worktree_path:this.pickString(W,"worktree_path"),parentBranch:this.pickString(W,"parent_branch"),context:W}}safeParseContext($){if(!$||!$.trim())return;try{let J=JSON.parse($);if(J&&typeof J==="object"&&!Array.isArray(J))return J;return}catch{return}}pickString($,J){if(!$)return;let Q=$[J];return typeof Q==="string"?Q:void 0}static STRIPPED_KEYS=["commit","token","secret","password","api_key"];stripSensitiveKeys($){if($===null||$===void 0)return $;if(Array.isArray($))return $.map((X)=>this.stripSensitiveKeys(X));if(typeof $!=="object")return $;let J={},Q=b8.STRIPPED_KEYS;for(let[X,W]of Object.entries($)){let G=X.toLowerCase();if(Q.some((Y)=>G.includes(Y)))continue;J[X]=this.stripSensitiveKeys(W)}return J}upsert($){this.records.set($.taskId,$)}indexParentChild($){if($.parentTaskId===void 0||$.parentTaskId===null)return;let J=$.parentTaskId,Q=this.childrenIndex.get(J);if(!Q)Q=new Set,this.childrenIndex.set(J,Q);Q.add($.taskId)}collectSubtree($){let J=new Set([$]),Q=[$];while(Q.length>0){let X=Q.shift(),W=this.childrenIndex.get(X);if(!W)continue;for(let G of W)if(!J.has(G))J.add(G),Q.push(G)}return J}evictIfNeeded(){if(this.records.size<=this.maxEntries)return;let $=this.records.size-this.maxEntries,J=Array.from(this.records.keys()).slice(0,$);for(let Q of J)this.remove(Q)}}r();var O9=i("registry-hook-installer");function aD($,J,Q={}){let X=`${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`,W=Q.hookName?`${Q.hookName}:${X}`:`registry-hook-installer:${X}`,G=Q.priority??100,Y=!1,q=(D,O)=>{try{J.record(D,O)}catch(R){O9.warn(`[registry-hook-installer] record failed for task #${D.id}: ${R instanceof Error?R.message:String(R)}`)}},H=(D,O)=>{try{J.update(D,O)}catch(R){O9.warn(`[registry-hook-installer] update failed for task #${D.id}: ${R instanceof Error?R.message:String(R)}`)}},B=(D)=>{try{J.remove(D)}catch(O){O9.warn(`[registry-hook-installer] remove failed for task #${D}: ${O instanceof Error?O.message:String(O)}`)}},U=()=>({sessionId:Q.sessionIdProvider?.(),...Q.staticSource??{}}),z={name:`${W}:after-create`,priority:G,execute:async(D)=>{let O=D.data;if(O?.task)q(O.task,U())}},V={name:`${W}:after-update`,priority:G,execute:async(D)=>{let O=D.data;if(!O?.task)return;if(J.peekById(O.task.id))H(O.task,U());else q(O.task,U())}},M={name:`${W}:after-complete`,priority:G,execute:async(D)=>{let O=D.data;if(O?.task)H(O.task,U())}},F={name:`${W}:after-delete`,priority:G,execute:async(D)=>{let O=D.data;if(typeof O?.id==="number")B(O.id)}};return $.registerHook(X0.AFTER_CREATE,z),$.registerHook(X0.AFTER_UPDATE,V),$.registerHook(X0.AFTER_COMPLETE,M),$.registerHook(X0.AFTER_DELETE,F),{uninstall(){if(Y)return;Y=!0,$.unregisterHook(X0.AFTER_CREATE,z.name),$.unregisterHook(X0.AFTER_UPDATE,V.name),$.unregisterHook(X0.AFTER_COMPLETE,M.name),$.unregisterHook(X0.AFTER_DELETE,F.name),O9.debug(`[registry-hook-installer] uninstalled hooks (name=${W})`)}}}r();var Z8=i("task-reuse-registry"),sD={maxEntries:500,ttlMs:86400000,maxDescriptionChars:240},B3=new WeakMap;function oD($){let J=B3.get($);if(J)return J.registry;let Q=new b8(sD),X={uninstall:()=>{}};try{let G=$.getComponent?.("task");if(G?.registerHook)X=aD(G,Q,{sessionIdProvider:()=>{try{return $.currentSessionId??void 0}catch{return}},staticSource:{processId:typeof process<"u"?process.pid:void 0}}),Z8.debug("[task-reuse-registry] hook installed");else Z8.debug("[task-reuse-registry] no TaskComponent in env; registry stays empty")}catch(G){Z8.warn(`[task-reuse-registry] hook install failed: ${G instanceof Error?G.message:String(G)}`)}let W={registry:Q,installHandle:X};return B3.set($,W),Q}var tD=[/\bsk-(?:proj-)?[A-Za-z0-9_-]{16,}\b/g,/\bxox[abprs]-[A-Za-z0-9-]{8,}\b/g,/\bghp_[A-Za-z0-9]{16,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{16,}\b/g,/\bBearer\s+[A-Za-z0-9._\-+/=]{12,}\b/g,/\bAKIA[0-9A-Z]{16}\b/g];function eD($){let J=$;for(let Q of tD)J=J.replace(Q,"<redacted>");return J}function U3($,J){if($.length<=J)return $;if(J<=1)return $.slice(0,J);return $.slice(0,J-1)+"\u2026"}function $F($){let J=$.limit??5,Q=$.maxChars??2000,X=$.maxDescriptionChars??240,W=$.heading??"Recent task context (reuse candidates)",G=$.registry.recent({scope:$.scope,limit:J,statuses:$.statuses,excludeIds:$.similarTaskIds??[],excludeAncestorOf:$.excludeAncestorOf});if(G.length===0)return{markdown:"",candidateIds:[],isEmpty:!0};let Y=[];Y.push(`## ${W}`),Y.push(""),Y.push("The following tasks were recently created in this process / session and may be related to your current work. Before creating a brand-new task, check whether one of these is the same work continuing. "+"The list is a *suggestion only* \u2014 confirm with `task_get <id>` before reusing."),Y.push("");for(let H of G){if(Y.push(`### Task #${H.taskId}: ${H.title}`),Y.push(`- Status: ${H.status}`),H.parentTaskId!==void 0&&H.parentTaskId!==null)Y.push(`- Parent: #${H.parentTaskId}`);if(H.source.subagentType)Y.push(`- Created by: ${H.source.subagentType}`);if(Y.push(`- Updated: ${H.updatedAt}`),H.project_path)Y.push(`- Project: ${H.project_path}`);if(H.worktree_path)Y.push(`- Worktree: ${H.worktree_path}`);if(H.branch)Y.push(`- Branch: ${H.branch}`);if(H.parentBranch)Y.push(`- Parent branch: ${H.parentBranch}`);let B;try{B=$.registry.getSubtreeSummary(H.taskId)}catch{B=void 0}if(B&&B.descendantCount>0)Y.push(`- Children: ${B.descendantCount} (active: ${B.activeCount}, completed: ${B.completedCount}, max depth: ${B.maxDepth})`);let U=B!==void 0&&B.activeCount>0;if(H.status==="completed"&&U)Y.push("- \u26A0 Has active child \u2014 reopening this parent will conflict with running work; prefer creating a child task.");let z=eD(U3(H.description,X));if(z)Y.push(`- Description: ${z}`);if(H.tags&&H.tags.length>0)Y.push(`- Tags: ${H.tags.join(", ")}`);Y.push("")}Y.push("---"),Y.push(""),Y.push("### Reuse instructions"),Y.push(""),Y.push("1. **First** call `task_get <id>` on the most relevant candidate to read its description, goals, and recent operations."),Y.push("2. **If it is the same work continuing** \u2014 prefer `task_update` over `task_create`:"),Y.push(" - Set `status` back to `active` (or `todo`) to reopen a completed task."),Y.push(" - Append new context to `description` and `goals_and_expected_deliverables` (do not replace)."),Y.push(' - Update `current_status` to reflect the new scope, then call `task_operation_create` with `milestone_type: "decision"` to record the continuation.'),Y.push("3. **Only** if the candidate is clearly a different task, call `task_create` with a distinguishing title and `parent_task_id` if appropriate."),Y.push("4. Do **not** create a duplicate task merely because the existing one is already `completed` \u2014 reopen it instead."),Y.push("5. Do **not** reuse an unrelated candidate just to fill this list. Empty reuse is a valid outcome."),Y.push(""),Y.push("### Decision matrix \u2014 three legal paths"),Y.push(""),Y.push("Pick exactly **one** of these paths before calling `task_create`. Reopen-first"),Y.push("remains the default, but the matrix adds two new paths for independent work."),Y.push(""),Y.push("**Path A \u2014 Continuation (reopen existing task).** The new work is the SAME"),Y.push('logical task. Use `task_update(task_id=<id>, { status: "active", ... })` and'),Y.push("append description/goals. Do **not** create a new task id."),Y.push(""),Y.push("```"),Y.push('task_update(task_id=<parent_id>, { status: "active", current_status: "..." })'),Y.push('task_operation_create({ task_id=<parent_id>, milestone_type: "decision",'),Y.push(' milestone_title: "Reopened for <new-scope>",'),Y.push(' milestone_description: "<why this is the same work>" })'),Y.push("```"),Y.push(""),Y.push("**Path B \u2014 Child task (parent_task_id=<id>).** The new work is related but"),Y.push("distinct: an independent bug fix, optimization, parallel delivery or"),Y.push("independent acceptance item under the same feature. Create a child task so"),Y.push("the audit trail is preserved. Always pair with an audit operation."),Y.push(""),Y.push("```");for(let H of G){let B=H.project_path??"<project_path>";Y.push(`task_create(parent_task_id=${H.taskId}, title="<distinguishing title>", project_path="${B}", context=<inherit or override>)`);break}Y.push('task_operation_create({ task_id=<new_id>, milestone_type: "milestone",'),Y.push(' milestone_title: "Child of #<parent_id>: <new-scope>",'),Y.push(' milestone_description: "<why this is a sibling/child, not a reopen>" })'),Y.push("```"),Y.push(""),Y.push("**Path C \u2014 New root (no parent_task_id).** The new work is unrelated to any"),Y.push("existing task. Create a brand-new root task. Use this sparingly \u2014 root count"),Y.push("should stay \u2264 ~10 to keep the tree readable."),Y.push(""),Y.push("```"),Y.push('task_create(parent_task_id=undefined, title="<distinct topic>", project_path="<project_path>", context=<json>)'),Y.push('task_operation_create({ task_id=<new_id>, milestone_type: "create",'),Y.push(' milestone_title: "New root: <topic>",'),Y.push(' milestone_description: "<why this is not a child of any existing task>" })'),Y.push("```"),Y.push(""),Y.push("**Operation audit templates.** Every `task_create`/`task_update` call MUST be"),Y.push("followed by a `task_operation_create` so the next agent sees *why* the path was"),Y.push("chosen. Use the appropriate `milestone_type`:"),Y.push(" - continuation \u2192 `decision` (and `progress` once the new scope makes headway)"),Y.push(" - child task \u2192 `milestone` (then `progress` as the child advances)"),Y.push(" - new root \u2192 `create` (then `progress` per phase)"),Y.push(""),Y.push("**Project + context inheritance.** For Path B/C, prefer inheriting the"),Y.push("candidate's `project_path`, `context.worktree_path`, `context.branch` and"),Y.push("`context.parent_branch` from the parent task. Sensitive keys (commits,"),Y.push("tokens, secrets) are stripped automatically. Use the helper:"),Y.push(""),Y.push("```"),Y.push("inheritChildContext({ parent: { taskId, projectPath, contextJson, tags }, overrides: {...} })"),Y.push("```"),Y.push("");let q=Y.join(`
2236
- `);if(q.length>Q)q=U3(q,Q);return{markdown:q,candidateIds:G.map((H)=>H.taskId),isEmpty:!1}}var y=i("task:delegate"),p0={STARTED:"task.background.started",PROGRESS:"task.background.progress",COMPLETED:"task.background.completed",FAILED:"task.background.failed",TIMEOUT:"task.background.timeout",STOPPED:"task.background.stopped",ASK_USER:"task.background.ask_user"},w8=[{id:"general",name:"general",mode:"subagent",description:"General-purpose agent for researching complex questions and executing multi-step tasks.",promptOverride:`You are a subagent created by the main agent to handle a specific task.
2473
+ - For full metadata: \`roy-agent agents list\`, \`roy-agent agents get <name>\`, \`roy-agent prompt list\`.`}function tD($){let J=b8.map((q)=>`- ${q.id}: ${q.description}`),X=($?.list()??[]).filter((q)=>!b8.some((W)=>W.id===q.name)).map((q)=>{if(q.type==="workflow"){let W=q.workflow?` (workflow: ${q.workflow})`:"";return`- ${q.name}: ${q.description||"Workflow agent"}${W}`}return`- ${q.name}: ${q.description||"Custom agent"}`}),Y=[...J,...X],G=oD({hasCustomAgents:X.length>0});return Y.join(`
2474
+ `)+G}z2();var eD=[/\bsk-(?:proj-)?[A-Za-z0-9_-]{16,}\b/g,/\bxox[abprs]-[A-Za-z0-9-]{8,}\b/g,/\bghp_[A-Za-z0-9]{16,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{16,}\b/g,/\bBearer\s+[A-Za-z0-9._\-+/=]{12,}\b/g,/\bAKIA[0-9A-Z]{16}\b/g];function $F($){let J=$;for(let Q of eD)J=J.replace(Q,"<redacted>");return J}function JF($,J){if($.length<=J)return $;if(J<=3)return $.slice(0,J);return $.slice(0,J-1)+"\u2026"}function D3($,J){return JF($F($),J)}class E8{maxEntries;ttlMs;maxDescriptionChars;records=new Map;childrenIndex=new Map;constructor($={}){this.maxEntries=$.maxEntries??500,this.ttlMs=$.ttlMs??86400000,this.maxDescriptionChars=$.maxDescriptionChars??240}record($,J={}){let Q=new Date().toISOString(),X=this.toRecord($,J,Q);return this.upsert(X),this.indexParentChild(X),this.evictIfNeeded(),X}update($,J){let Q=this.records.get($.id);if(!Q)return;let X=new Date().toISOString();this.records.delete($.id);let Y={...Q,...this.toRecord($,J??Q.source,X),createdAt:Q.createdAt,source:J??Q.source};return this.records.set($.id,Y),this.childrenIndex.delete(Y.taskId),this.indexParentChild(Y),this.evictIfNeeded(),Y}remove($){let J=this.records.get($);if(!J)return!1;if(this.records.delete($),J.parentTaskId!==void 0){let Q=this.childrenIndex.get(J.parentTaskId);if(Q?.delete($),Q&&Q.size===0)this.childrenIndex.delete(J.parentTaskId)}return!0}getById($){let J=this.records.get($);if(!J)return;if(Date.now()-Date.parse(J.updatedAt)>this.ttlMs){this.remove($);return}return J}peekById($){return this.records.get($)}clear(){this.records.clear(),this.childrenIndex.clear()}size(){return this.records.size}recent($={}){let J=$.limit??10,Q=$.statuses,X=new Set($.excludeIds??[]),Y=$.excludeAncestorOf??$.excludeSelfOrDescendant,G=Y?this.collectSubtree(Y):new Set,q=$.sinceHours?Date.now()-$.sinceHours*60*60*1000:0,W=Date.now(),z=new Set([...X,...G]),H=[];for(let B of this.records.values()){if(W-Date.parse(B.updatedAt)>this.ttlMs)continue;if(q>0&&Date.parse(B.updatedAt)<q)continue;if(z.has(B.taskId))continue;if($.scope){if($.scope.sessionId!==void 0&&B.source.sessionId!==$.scope.sessionId)continue;if($.scope.parentSessionId!==void 0&&B.source.parentSessionId!==$.scope.parentSessionId)continue;if($.scope.subagentType!==void 0&&B.source.subagentType!==$.scope.subagentType)continue}if(Q){if(!Q.includes(B.status))continue}else if(B.status==="archived")continue;H.push(B)}if($.activeChildFirst){let B=new Map;for(let U of H)B.set(U.taskId,this.hasActiveChild(U.taskId));H.sort((U,V)=>{let O=B.get(U.taskId)?1:0,F=B.get(V.taskId)?1:0;if(O!==F)return F-O;let D=Date.parse(V.updatedAt)-Date.parse(U.updatedAt);if(D!==0)return D;return V.taskId-U.taskId})}else H.sort((B,U)=>{let V=Date.parse(U.updatedAt)-Date.parse(B.updatedAt);if(V!==0)return V;return U.taskId-B.taskId});return H.slice(0,J)}getSubtreeSummary($,J={}){let Q=J.includeArchived===!0,X={descendantCount:0,activeCount:0,completedCount:0,maxDepth:0};if(!this.records.has($)&&!this.childrenIndex.has($))return X;let Y=this.childrenIndex.get($),G=Y?Array.from(Y):[],q=G.length>0?1:0;X.maxDepth=q;let W=G;while(W.length>0){let z=[];for(let H of W){let B=this.records.get(H);if(!B)continue;if(!Q&&B.status==="archived")continue;if(X.descendantCount++,B.status==="active")X.activeCount++;else if(B.status==="completed")X.completedCount++;let U=this.childrenIndex.get(H);if(U&&U.size>0)for(let V of U)z.push(V)}if(z.length>0)q++,X.maxDepth=q;W=z}return X}hasActiveChild($){let J=this.childrenIndex.get($);if(!J)return!1;for(let Q of J){let X=this.records.get(Q);if(!X)continue;if(X.status==="active"||X.status==="todo")return!0}return!1}toRecord($,J,Q){let X=this.safeParseContext($.context),Y=X?this.stripSensitiveKeys(X):void 0;return{taskId:$.id,title:$.title,description:D3($.description||"",this.maxDescriptionChars),goals:D3($.goals_and_expected_deliverables||"",this.maxDescriptionChars),tags:$.tags??[],status:$.status,priority:$.priority,type:$.type,parentTaskId:$.parent_task_id,source:J,createdAt:$.createdAt||Q,updatedAt:$.updatedAt||Q,operationCount:0,project_path:$.project_path,branch:this.pickString(Y,"branch"),worktree_path:this.pickString(Y,"worktree_path"),parentBranch:this.pickString(Y,"parent_branch"),context:Y}}safeParseContext($){if(!$||!$.trim())return;try{let J=JSON.parse($);if(J&&typeof J==="object"&&!Array.isArray(J))return J;return}catch{return}}pickString($,J){if(!$)return;let Q=$[J];return typeof Q==="string"?Q:void 0}static STRIPPED_KEYS=["commit","token","secret","password","api_key"];stripSensitiveKeys($){if($===null||$===void 0)return $;if(Array.isArray($))return $.map((X)=>this.stripSensitiveKeys(X));if(typeof $!=="object")return $;let J={},Q=E8.STRIPPED_KEYS;for(let[X,Y]of Object.entries($)){let G=X.toLowerCase();if(Q.some((q)=>G.includes(q)))continue;J[X]=this.stripSensitiveKeys(Y)}return J}upsert($){this.records.set($.taskId,$)}indexParentChild($){if($.parentTaskId===void 0||$.parentTaskId===null)return;let J=$.parentTaskId,Q=this.childrenIndex.get(J);if(!Q)Q=new Set,this.childrenIndex.set(J,Q);Q.add($.taskId)}collectSubtree($){let J=new Set([$]),Q=[$];while(Q.length>0){let X=Q.shift(),Y=this.childrenIndex.get(X);if(!Y)continue;for(let G of Y)if(!J.has(G))J.add(G),Q.push(G)}return J}evictIfNeeded(){if(this.records.size<=this.maxEntries)return;let $=this.records.size-this.maxEntries,J=Array.from(this.records.keys()).slice(0,$);for(let Q of J)this.remove(Q)}}n();var R9=i("registry-hook-installer");function QF($,J,Q={}){let X=`${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`,Y=Q.hookName?`${Q.hookName}:${X}`:`registry-hook-installer:${X}`,G=Q.priority??100,q=!1,W=(D,M)=>{try{J.record(D,M)}catch(R){R9.warn(`[registry-hook-installer] record failed for task #${D.id}: ${R instanceof Error?R.message:String(R)}`)}},z=(D,M)=>{try{J.update(D,M)}catch(R){R9.warn(`[registry-hook-installer] update failed for task #${D.id}: ${R instanceof Error?R.message:String(R)}`)}},H=(D)=>{try{J.remove(D)}catch(M){R9.warn(`[registry-hook-installer] remove failed for task #${D}: ${M instanceof Error?M.message:String(M)}`)}},B=()=>({sessionId:Q.sessionIdProvider?.(),...Q.staticSource??{}}),U={name:`${Y}:after-create`,priority:G,execute:async(D)=>{let M=D.data;if(M?.task)W(M.task,B())}},V={name:`${Y}:after-update`,priority:G,execute:async(D)=>{let M=D.data;if(!M?.task)return;if(J.peekById(M.task.id))z(M.task,B());else W(M.task,B())}},O={name:`${Y}:after-complete`,priority:G,execute:async(D)=>{let M=D.data;if(M?.task)z(M.task,B())}},F={name:`${Y}:after-delete`,priority:G,execute:async(D)=>{let M=D.data;if(typeof M?.id==="number")H(M.id)}};return $.registerHook(X0.AFTER_CREATE,U),$.registerHook(X0.AFTER_UPDATE,V),$.registerHook(X0.AFTER_COMPLETE,O),$.registerHook(X0.AFTER_DELETE,F),{uninstall(){if(q)return;q=!0,$.unregisterHook(X0.AFTER_CREATE,U.name),$.unregisterHook(X0.AFTER_UPDATE,V.name),$.unregisterHook(X0.AFTER_COMPLETE,O.name),$.unregisterHook(X0.AFTER_DELETE,F.name),R9.debug(`[registry-hook-installer] uninstalled hooks (name=${Y})`)}}}n();var P8=i("task-reuse-registry"),XF={maxEntries:500,ttlMs:86400000,maxDescriptionChars:240},F3=new WeakMap;function YF($){let J=F3.get($);if(J)return J.registry;let Q=new E8(XF),X={uninstall:()=>{}};try{let G=$.getComponent?.("task");if(G?.registerHook)X=QF(G,Q,{sessionIdProvider:()=>{try{return $.currentSessionId??void 0}catch{return}},staticSource:{processId:typeof process<"u"?process.pid:void 0}}),P8.debug("[task-reuse-registry] hook installed");else P8.debug("[task-reuse-registry] no TaskComponent in env; registry stays empty")}catch(G){P8.warn(`[task-reuse-registry] hook install failed: ${G instanceof Error?G.message:String(G)}`)}let Y={registry:Q,installHandle:X};return F3.set($,Y),Q}var GF=[/\bsk-(?:proj-)?[A-Za-z0-9_-]{16,}\b/g,/\bxox[abprs]-[A-Za-z0-9-]{8,}\b/g,/\bghp_[A-Za-z0-9]{16,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{16,}\b/g,/\bBearer\s+[A-Za-z0-9._\-+/=]{12,}\b/g,/\bAKIA[0-9A-Z]{16}\b/g];function qF($){let J=$;for(let Q of GF)J=J.replace(Q,"<redacted>");return J}function M3($,J){if($.length<=J)return $;if(J<=1)return $.slice(0,J);return $.slice(0,J-1)+"\u2026"}function WF($){let J=$.limit??5,Q=$.maxChars??2000,X=$.maxDescriptionChars??240,Y=$.heading??"Recent task context (reuse candidates)",G=$.registry.recent({scope:$.scope,limit:J,statuses:$.statuses,excludeIds:$.similarTaskIds??[],excludeAncestorOf:$.excludeAncestorOf});if(G.length===0)return{markdown:"",candidateIds:[],isEmpty:!0};let q=[];q.push(`## ${Y}`),q.push(""),q.push("The following tasks were recently created in this process / session and may be related to your current work. Before creating a brand-new task, check whether one of these is the same work continuing. "+"The list is a *suggestion only* \u2014 confirm with `task_get <id>` before reusing."),q.push("");for(let z of G){if(q.push(`### Task #${z.taskId}: ${z.title}`),q.push(`- Status: ${z.status}`),z.parentTaskId!==void 0&&z.parentTaskId!==null)q.push(`- Parent: #${z.parentTaskId}`);if(z.source.subagentType)q.push(`- Created by: ${z.source.subagentType}`);if(q.push(`- Updated: ${z.updatedAt}`),z.project_path)q.push(`- Project: ${z.project_path}`);if(z.worktree_path)q.push(`- Worktree: ${z.worktree_path}`);if(z.branch)q.push(`- Branch: ${z.branch}`);if(z.parentBranch)q.push(`- Parent branch: ${z.parentBranch}`);let H;try{H=$.registry.getSubtreeSummary(z.taskId)}catch{H=void 0}if(H&&H.descendantCount>0)q.push(`- Children: ${H.descendantCount} (active: ${H.activeCount}, completed: ${H.completedCount}, max depth: ${H.maxDepth})`);let B=H!==void 0&&H.activeCount>0;if(z.status==="completed"&&B)q.push("- \u26A0 Has active child \u2014 reopening this parent will conflict with running work; prefer creating a child task.");let U=qF(M3(z.description,X));if(U)q.push(`- Description: ${U}`);if(z.tags&&z.tags.length>0)q.push(`- Tags: ${z.tags.join(", ")}`);q.push("")}q.push("---"),q.push(""),q.push("### Reuse instructions"),q.push(""),q.push("1. **First** call `task_get <id>` on the most relevant candidate to read its description, goals, and recent operations."),q.push("2. **If it is the same work continuing** \u2014 prefer `task_update` over `task_create`:"),q.push(" - Set `status` back to `active` (or `todo`) to reopen a completed task."),q.push(" - Append new context to `description` and `goals_and_expected_deliverables` (do not replace)."),q.push(' - Update `current_status` to reflect the new scope, then call `task_operation_create` with `milestone_type: "decision"` to record the continuation.'),q.push("3. **Only** if the candidate is clearly a different task, call `task_create` with a distinguishing title and `parent_task_id` if appropriate."),q.push("4. Do **not** create a duplicate task merely because the existing one is already `completed` \u2014 reopen it instead."),q.push("5. Do **not** reuse an unrelated candidate just to fill this list. Empty reuse is a valid outcome."),q.push(""),q.push("### Decision matrix \u2014 three legal paths"),q.push(""),q.push("Pick exactly **one** of these paths before calling `task_create`. Reopen-first"),q.push("remains the default, but the matrix adds two new paths for independent work."),q.push(""),q.push("**Path A \u2014 Continuation (reopen existing task).** The new work is the SAME"),q.push('logical task. Use `task_update(task_id=<id>, { status: "active", ... })` and'),q.push("append description/goals. Do **not** create a new task id."),q.push(""),q.push("```"),q.push('task_update(task_id=<parent_id>, { status: "active", current_status: "..." })'),q.push('task_operation_create({ task_id=<parent_id>, milestone_type: "decision",'),q.push(' milestone_title: "Reopened for <new-scope>",'),q.push(' milestone_description: "<why this is the same work>" })'),q.push("```"),q.push(""),q.push("**Path B \u2014 Child task (parent_task_id=<id>).** The new work is related but"),q.push("distinct: an independent bug fix, optimization, parallel delivery or"),q.push("independent acceptance item under the same feature. Create a child task so"),q.push("the audit trail is preserved. Always pair with an audit operation."),q.push(""),q.push("```");for(let z of G){let H=z.project_path??"<project_path>";q.push(`task_create(parent_task_id=${z.taskId}, title="<distinguishing title>", project_path="${H}", context=<inherit or override>)`);break}q.push('task_operation_create({ task_id=<new_id>, milestone_type: "milestone",'),q.push(' milestone_title: "Child of #<parent_id>: <new-scope>",'),q.push(' milestone_description: "<why this is a sibling/child, not a reopen>" })'),q.push("```"),q.push(""),q.push("**Path C \u2014 New root (no parent_task_id).** The new work is unrelated to any"),q.push("existing task. Create a brand-new root task. Use this sparingly \u2014 root count"),q.push("should stay \u2264 ~10 to keep the tree readable."),q.push(""),q.push("```"),q.push('task_create(parent_task_id=undefined, title="<distinct topic>", project_path="<project_path>", context=<json>)'),q.push('task_operation_create({ task_id=<new_id>, milestone_type: "create",'),q.push(' milestone_title: "New root: <topic>",'),q.push(' milestone_description: "<why this is not a child of any existing task>" })'),q.push("```"),q.push(""),q.push("**Operation audit templates.** Every `task_create`/`task_update` call MUST be"),q.push("followed by a `task_operation_create` so the next agent sees *why* the path was"),q.push("chosen. Use the appropriate `milestone_type`:"),q.push(" - continuation \u2192 `decision` (and `progress` once the new scope makes headway)"),q.push(" - child task \u2192 `milestone` (then `progress` as the child advances)"),q.push(" - new root \u2192 `create` (then `progress` per phase)"),q.push(""),q.push("**Project + context inheritance.** For Path B/C, prefer inheriting the"),q.push("candidate's `project_path`, `context.worktree_path`, `context.branch` and"),q.push("`context.parent_branch` from the parent task. Sensitive keys (commits,"),q.push("tokens, secrets) are stripped automatically. Use the helper:"),q.push(""),q.push("```"),q.push("inheritChildContext({ parent: { taskId, projectPath, contextJson, tags }, overrides: {...} })"),q.push("```"),q.push("");let W=q.join(`
2475
+ `);if(W.length>Q)W=M3(W,Q);return{markdown:W,candidateIds:G.map((z)=>z.taskId),isEmpty:!1}}var y=i("task:delegate"),n0={STARTED:"task.background.started",PROGRESS:"task.background.progress",COMPLETED:"task.background.completed",FAILED:"task.background.failed",TIMEOUT:"task.background.timeout",STOPPED:"task.background.stopped",ASK_USER:"task.background.ask_user"},b8=[{id:"general",name:"general",mode:"subagent",description:"General-purpose agent for researching complex questions and executing multi-step tasks.",promptOverride:`You are a subagent created by the main agent to handle a specific task.
2237
2476
 
2238
2477
  ## Your Role
2239
2478
  - You were created to handle: {task_description}
@@ -2284,7 +2523,7 @@ ${$.hasCustomAgents?"- Custom agents from AgentRegistry are listed above.":"- Cu
2284
2523
  ## Execution
2285
2524
  - Use the available tools to complete the task
2286
2525
  - If you need more information, ask the main agent through the result
2287
- - Return a clear summary of what you did and the results`,deniedTools:["delegate_task","stop_task"]},{id:"explore",name:"explore",mode:"subagent",description:"Fast agent specialized for exploring codebases, finding files, and searching for patterns.",allowedTools:["read_file","glob","grep","bash"],deniedTools:["delegate_task","stop_task"]},{id:"roy",name:"Roy",mode:"subagent",description:"Versatile AI assistant inspired by Jarvis \u2014 intelligent, proactive, and capable. Use for general-purpose tasks, coding, research, and complex multi-step work. Always available (built-in) without `agent add roy`.",promptOverride:Y4.roy,deniedTools:["delegate_task","stop_task","task_complete","task_cancel"]}];function P8($){return w8.find((J)=>J.id===$)}function JF($,J,Q,X,W){let G=$.getRegistry?.();if(G){if(G.get(J)?.type==="workflow")return y.debug(`[delegate] Skipping registration for workflow agent: ${J}`),null}let Y=$.getAgent(J);if(!Y){let q={type:"sub",systemPrompt:Q};if(X?.allowedTools&&X.allowedTools.length>0)q.allowedTools=X.allowedTools;if(W.length>0)q.deniedTools=W;Y=$.registerAgent(J,q),y.debug(`[delegate] Registered subagent: ${J}`)}return Y}var V3=K.object({description:K.string().describe("A short (3-5 words) description of the task"),prompt:K.string().describe("The task for the agent to perform"),subagent_type:K.string().describe("The type of specialized agent to use for this task").default("general"),timeout:K.number().describe("Task timeout in milliseconds. Default: 1800000 (30 minutes). If set, task will be terminated after timeout.").optional(),reason:K.string().describe("Brief reason for calling this tool (max 30 chars, e.g., 'Delegate refactor task')").optional(),similar_task_ids:K.array(K.number()).max(3).describe("Similar task IDs (max 3) to reference for improving task execution. Search for similar tasks before calling this tool."),sub_session_id:K.string().describe("Existing sub-agent session ID to resume. If provided, the sub-agent will continue from the previous conversation context (used for retry on timeout/failure). Leave empty for a new session.").optional(),triggerEventId:K.string().describe("EventStore trigger event ID (ESPlugin v2). Pass it when this delegate_task is triggered by an external event source (e.g. Feishu message) so the completion notification can reply to the original chat instead of a fallback channel. Leave empty if not triggered by an event source.").optional()});function QF($){let{workflowName:J,originalPrompt:Q,description:X}=$;return`# Workflow \u8C03\u5EA6\u8BF7\u6C42
2526
+ - Return a clear summary of what you did and the results`,deniedTools:["delegate_task","stop_task"]},{id:"explore",name:"explore",mode:"subagent",description:"Fast agent specialized for exploring codebases, finding files, and searching for patterns.",allowedTools:["read_file","glob","grep","bash"],deniedTools:["delegate_task","stop_task"]},{id:"roy",name:"Roy",mode:"subagent",description:"Versatile AI assistant inspired by Jarvis \u2014 intelligent, proactive, and capable. Use for general-purpose tasks, coding, research, and complex multi-step work. Always available (built-in) without `agent add roy`.",promptOverride:z4.roy,deniedTools:["delegate_task","stop_task","task_complete","task_cancel"]}];function S8($){return b8.find((J)=>J.id===$)}function zF($,J,Q,X,Y){let G=$.getRegistry?.();if(G){if(G.get(J)?.type==="workflow")return y.debug(`[delegate] Skipping registration for workflow agent: ${J}`),null}let q=$.getAgent(J);if(!q){let W={type:"sub",systemPrompt:Q};if(X?.allowedTools&&X.allowedTools.length>0)W.allowedTools=X.allowedTools;if(Y.length>0)W.deniedTools=Y;q=$.registerAgent(J,W),y.debug(`[delegate] Registered subagent: ${J}`)}return q}var O3=K.object({description:K.string().describe("A short (3-5 words) description of the task"),prompt:K.string().describe("The task for the agent to perform"),subagent_type:K.string().describe("The type of specialized agent to use for this task").default("general"),timeout:K.number().describe("Task timeout in milliseconds. Default: 1800000 (30 minutes). If set, task will be terminated after timeout.").optional(),reason:K.string().describe("Brief reason for calling this tool (max 30 chars, e.g., 'Delegate refactor task')").optional(),similar_task_ids:K.array(K.number()).max(3).describe("Similar task IDs (max 3) to reference for improving task execution. Search for similar tasks before calling this tool."),sub_session_id:K.string().describe("Existing sub-agent session ID to resume. If provided, the sub-agent will continue from the previous conversation context (used for retry on timeout/failure). Leave empty for a new session.").optional(),triggerEventId:K.string().describe("EventStore trigger event ID (ESPlugin v2). Pass it when this delegate_task is triggered by an external event source (e.g. Feishu message) so the completion notification can reply to the original chat instead of a fallback channel. Leave empty if not triggered by an event source.").optional()});function HF($){let{workflowName:J,originalPrompt:Q,description:X}=$;return`# Workflow \u8C03\u5EA6\u8BF7\u6C42
2288
2527
 
2289
2528
  \u4F60\u88AB\u8C03\u7528\u662F\u56E0\u4E3A\u4E0A\u6E38 \`delegate_task\` \u68C0\u6D4B\u5230 workflow \u7C7B\u578B subagent **${J}**\u3002
2290
2529
  \u8BF7\u901A\u8FC7 \`workflow_run\` \u547D\u4EE4\u8C03\u5EA6\u5BF9\u5E94 workflow\u3002
@@ -2308,12 +2547,12 @@ ${Q}
2308
2547
  4. \u628A output \u539F\u6837\u56DE\u7ED9 parent agent
2309
2548
 
2310
2549
  \u4E0D\u8981\u505A\u5176\u4ED6\u5DE5\u4F5C\u3002\u53EA\u8D70 \`workflow_run\` \u8DEF\u5F84\u3002
2311
- `}var XF=new Set(["strict-task-agent","code-review","bench-agent-host","workspace-analyzer","test-workflow-agent"]),M9=1800000,WF=1200000;class J0{env;maxProcessRegistries=1000;maxTerminalTasks=1000;tasks=new Map;terminalTasks=new Map;abortControllers=new Map;progressTimers=new Map;processRegistries=new Map;workflowRunRegistries=new Map;workflowService;constructor($){this.env=$}setWorkflowService($){this.workflowService=$}attachWorkflowRun($,J){if(!$||!J)return;let Q=this.workflowRunRegistries.get($);if(!Q)Q=new Set,this.workflowRunRegistries.set($,Q);Q.add(J)}detachWorkflowRun($,J){this.workflowRunRegistries.get($)?.delete(J)}replaceWorkflowRun($,J,Q){if(!$)return;let X=this.workflowRunRegistries.get($);if(!X)return;if(J)X.delete(J);if(Q)X.add(Q)}async propagateStopToWorkflowRuns($,J){let Q=this.workflowRunRegistries.get($);if(!Q||Q.size===0)return{runIds:[],stopResults:[]};let X=Array.from(Q);y.info(`[BackgroundTaskManager] propagateStopToWorkflowRuns count=${X.length} bgTaskId=${$}`);let W=[];for(let G of X){if(typeof this.workflowService?.stopRun!=="function"){y.warn(`[BackgroundTaskManager] workflowService not injected; cannot stop ${G}`),W.push({runId:G,success:!1,error:"workflowService not injected"});continue}try{await this.workflowService.stopRun(G,J),W.push({runId:G,success:!0})}catch(Y){let q=Y instanceof Error?Y.message:String(Y);y.warn(`[BackgroundTaskManager] workflowService.stopRun(${G}) failed (likely already terminal): ${q}`),W.push({runId:G,success:!1,error:q})}}return Q.clear(),{runIds:X,stopResults:W}}finalizeTask($,J){if(!$)return;this.stopProgressReporter($),this.progressTimers.delete($);let Q=this.tasks.get($);if(Q){if(this.tasks.delete($),this.terminalTasks.size>=this.maxTerminalTasks){let G=this.terminalTasks.keys().next().value;if(G!==void 0)this.terminalTasks.delete(G)}this.terminalTasks.set($,Q)}let X=this.abortControllers.get($);if(X&&J!=="completed"){if(!X.signal.aborted)try{X.abort()}catch{}}this.abortControllers.delete($),this.workflowRunRegistries.delete($);let W=this.processRegistries.get($);if(W&&W.size()>0)y.debug(`[BackgroundTaskManager] finalizeTask\u4FDD\u7559 processRegistry ${$} (residualPIDs=${W.size()}, reason=${J})`);y.debug(`[BackgroundTaskManager] finalizeTask taskId=${$} reason=${J}`)}getProcessRegistrySize(){return this.processRegistries.size}getMaxProcessRegistries(){return this.maxProcessRegistries}cleanupEmptyProcessRegistries(){let $=0;for(let[J,Q]of this.processRegistries)if(Q.size()===0)this.processRegistries.delete(J),$++;return $}static DEFAULT_WORKFLOW_ENTRY_AGENT="workflow-runner";resolveEntryAgent($){try{if(J0.detectWorkflowShortcutCompat($))return y.info(`[BackgroundTaskManager] Compat rewrite: '${$}' \u2192 '${J0.DEFAULT_WORKFLOW_ENTRY_AGENT}'`),J0.DEFAULT_WORKFLOW_ENTRY_AGENT;let X=this.env?.getComponent?.("agent")?.getRegistry?.()?.get?.($);if(!X||X.type!=="workflow")return;return X.entryAgent??J0.DEFAULT_WORKFLOW_ENTRY_AGENT}catch(J){y.warn(`[BackgroundTaskManager] resolveEntryAgent failed for ${$}: ${J}`);return}}static _detectWorkflowShortcutWrapped=U0(($)=>XF.has($),"delegate.detectWorkflowShortcut",{recordParams:!0,recordResult:!0,log:!0});static detectWorkflowShortcutCompat($){return J0._detectWorkflowShortcutWrapped($)}getSessionComponent(){return this.env?.getComponent?.("session")}async resolveAssociatedTaskIdBySubSession($){if(!$)return;try{let Q=await this.env?.getComponent?.("task")?.getTaskIdBySessionId?.($);return typeof Q==="number"&&Q>0?Q:void 0}catch(J){y.debug(`[BackgroundTaskManager] resolveAssociatedTaskIdBySubSession failed for ${$}: ${J instanceof Error?J.message:String(J)}`);return}}publishBackgroundEvent($,J,Q,X,W){if(this.env?.pushEnvEvent)this.env.pushEnvEvent({type:$,payload:J,metadata:{source:"task.background",trigger_session_id:Q,...X?{triggerEventId:X}:{},...W?{replyChannel:W}:{}}}),y.info(`[BackgroundTaskManager] Event published: ${$}`,{triggerEventId:X,replyChannelChatId:W?.chatId})}publishBackgroundEventWithTrigger($,J,Q,X,W){this.publishBackgroundEvent($,J,Q,X,W)}static parseAskUserErrorFromMessage($){let J=$ instanceof Error?$.message:String($);if($&&typeof $==="object"&&$.name==="AskUserError"&&$.query){let X=$;return{query:X.query,sessionId:X.sessionId,nodeId:X.nodeId,nodeType:X.nodeType||"agent",agentSessionId:X.agentSessionId,delivered:X.delivered===!0,rawErrorMessage:J}}let Q="__ASK_USER_ERROR__:";if(J.includes(Q))try{let X=J.substring(J.indexOf(Q)+Q.length),W=JSON.parse(X);return{query:W.query,sessionId:W.sessionId,nodeId:W.nodeId,nodeType:W.nodeType||"agent",agentSessionId:W.agentSessionId,delivered:W.delivered===!0,rawErrorMessage:J}}catch(X){return y.warn("[BackgroundTaskManager] Failed to parse __ASK_USER_ERROR__ payload",{error:X instanceof Error?X.message:String(X)}),null}return null}async createTask($){let{parentSessionId:J,description:Q,prompt:X,subagentType:W,timeout:G,similarTaskIds:Y,existingSubSessionId:q,triggerEventId:H,model:B,fallbackModel:U,fallbackModels:z}=$,V=`process_${Date.now()}_${Math.random().toString(36).slice(2,11)}`,M=this.getSessionComponent();if(!M)throw Error("SessionComponent not found");if(!await M.get(J))throw Error(`Parent session not found: ${J}`);let D;if(q){let f=await M.get(q);if(!f)throw Error(`Sub session not found for resume: ${q}`);let N=f?.metadata?.created_by;if(N&&N!=="subagent")y.warn(`[BackgroundTaskManager] Session ${q} was not created by a sub-agent (created_by=${N}); reusing anyway`);D=f;try{let E=f?.metadata??{};await M.update(q,{metadata:{...E,reused_sub_session:!0,reused_at:Date.now()}})}catch(E){y.warn("[BackgroundTaskManager] Failed to update reused session metadata",{existingSubSessionId:q,error:E instanceof Error?E.message:String(E)})}y.info(`[BackgroundTaskManager] Reusing sub session: ${q} for task ${V}`)}else{let f={subagent_type:W,created_by:"subagent",task_description:Q},N=Q2();if(N){if(N.messageId)f.messageId=N.messageId;let E=N.replyChannel;if(E?.messageId)f.larkMessageId=E.messageId;if(E?.chatId)f.chatId=E.chatId;if(E?.userId)f.larkUserId=E.userId;let x=E?.profile;if(x)f.larkProfile=x}if(H)f.triggerEventId=H;if(D=await M.create({title:`${Q} (@${W} subagent)`,parentSessionId:J,metadata:f}),!D)throw Error("Failed to create sub-session")}let O=HF(),R=new AbortController;if(this.processRegistries.size>=this.maxProcessRegistries){if(this.cleanupEmptyProcessRegistries(),this.processRegistries.size>=this.maxProcessRegistries)throw Error(`BackgroundTaskManager.processRegistries \u8FBE\u5230\u4E0A\u9650 ${this.maxProcessRegistries}\uFF08\u542B\u6B8B\u7559 PID\uFF09\uFF0C\u62D2\u7EDD\u521B\u5EFA\u65B0 task\uFF08taskId=${V}\uFF09\u3002\u8BF7\u6E05\u7406 / \u91CD\u542F / \u8C03\u9AD8 maxProcessRegistries\u3002`)}let L=new W4;this.processRegistries.set(V,L);let _=Date.now(),Z=`${W}:bg_${V}`,P={id:V,runId:Z,subSessionId:D.id,parentSessionId:J,description:Q,subagentType:W,status:"pending",createdAt:_,lastUpdatedAt:_,timeoutMs:G||M9,abortController:R,similarTaskIds:Y,triggerEventId:H,model:B,fallbackModel:U,fallbackModels:z,replyChannel:O};this.tasks.set(V,P),this.abortControllers.set(V,R);let w={backgroundTaskId:V,subSessionId:D.id,parentSessionId:J,description:Q,subagentType:W,startedAt:_,timeoutMs:G||M9};return this.publishBackgroundEvent(p0.STARTED,w,J,H,O),this.executeTask(V,X,G,J).catch((f)=>{y.error("[BackgroundTaskManager] executeTask unhandled rejection",{taskId:V,error:f instanceof Error?f.message:String(f)})}),{taskId:V,subSessionId:D.id}}async executeTask($,J,Q,X){let W=this.tasks.get($);if(!W){y.warn("[BackgroundTaskManager] executeTask: Task not found",{taskId:$});return}let G=Date.now();W.status="running",W.startedAt=G,W.lastUpdatedAt=G;let Y=Q||M9,q=this.abortControllers.get($);this.startProgressReporter($,X||W.parentSessionId);try{let B=await this.getSessionComponent().get(W.subSessionId);if(!B)throw Error(`Sub session not found: ${W.subSessionId}`);let U=this.processRegistries.get($),z=await this.executeWithAbort(B,J,Y,$,q?.signal,W.similarTaskIds,U,()=>q?.abort(),W.subagentType);if(q?.signal.aborted){y.info("[BackgroundTaskManager] Task was aborted",{taskId:$});return}let V=Date.now();W.status="completed",W.completedAt=V,W.lastUpdatedAt=V,W.result=z;let M=W.completedAt-W.startedAt;if(W.associatedTaskId=await this.resolveAssociatedTaskIdBySubSession(W.subSessionId),W.associatedTaskId===void 0)W.associatedTaskId=d2();let F={backgroundTaskId:W.id,subSessionId:W.subSessionId,parentSessionId:X||W.parentSessionId,status:"completed",result:W.result,description:W.description,executionTimeMs:M,associatedTaskId:W.associatedTaskId};this.publishBackgroundEvent(p0.COMPLETED,F,X||W.parentSessionId,W.triggerEventId,W.replyChannel),y.info("[BackgroundTaskManager] Task completed successfully",{taskId:$,executionTimeMs:M})}catch(H){let B=H instanceof Error?H.message:String(H),U=J0.parseAskUserErrorFromMessage(H),z=B.toLowerCase().includes("stopped")||B.toLowerCase().includes("aborted"),V=W.startedAt?Date.now()-W.startedAt:0,M=Date.now();if(W.completedAt=M,W.lastUpdatedAt=M,W.associatedTaskId=await this.resolveAssociatedTaskIdBySubSession(W.subSessionId),W.associatedTaskId===void 0)W.associatedTaskId=d2();if(U){W.status="awaiting-user",W.error=U.rawErrorMessage,W.pendingAskUserQuery=U.query;let F={backgroundTaskId:W.id,subSessionId:W.subSessionId,parentSessionId:X||W.parentSessionId,subagentType:W.subagentType,description:W.description,query:U.query,sessionId:U.sessionId,nodeId:U.nodeId,nodeType:U.nodeType,agentSessionId:U.agentSessionId,delivered:U.delivered===!0,error:U.rawErrorMessage,executionTimeMs:V,hints:["\u8BF7\u628A\u4E0A\u9762\u7684\u95EE\u9898\u539F\u6837\u901A\u8FC7 ask_user tool \u5C55\u793A\u7ED9\u7528\u6237\u5E76\u7B49\u5F85\u7B54\u590D",`\u5F97\u5230\u7528\u6237\u56DE\u590D\u540E\uFF0C\u901A\u8FC7 delegate_task(subagentType="${W.subagentType}", existingSubSessionId="${W.subSessionId}", prompt=<\u57FA\u4E8E\u7528\u6237\u56DE\u590D>) \u590D\u7528 sub-session \u8BA9 sub-agent \u7EE7\u627F\u4E4B\u524D\u6D88\u606F\u5386\u53F2\u7EE7\u7EED\u63A8\u8FDB\uFF0C\u65E0\u9700\u5B9E\u73B0 resume function`],associatedTaskId:W.associatedTaskId};this.publishBackgroundEvent(p0.ASK_USER,F,X||W.parentSessionId,W.triggerEventId,W.replyChannel),y.info("[BackgroundTaskManager] Task awaiting user input (ask_user cascade)",{taskId:$,subSessionId:W.subSessionId,nodeId:U.nodeId,queryPreview:U.query.substring(0,80)}),W._preserveSubSessionOnExit=!0;return}if(z){W.status="stopped";let F={backgroundTaskId:W.id,subSessionId:W.subSessionId,parentSessionId:X||W.parentSessionId,status:"stopped",description:W.description,error:B,executionTimeMs:V,associatedTaskId:W.associatedTaskId};this.publishBackgroundEvent(p0.STOPPED,F,X||W.parentSessionId,W.triggerEventId,W.replyChannel)}else if(B.startsWith("Task execution timeout after")){W.status="timeout";let F={backgroundTaskId:W.id,subSessionId:W.subSessionId,parentSessionId:X||W.parentSessionId,status:"timeout",description:W.description,error:B,executionTimeMs:V,associatedTaskId:W.associatedTaskId};this.publishBackgroundEvent(p0.TIMEOUT,F,X||W.parentSessionId,W.triggerEventId,W.replyChannel)}else{W.status="failed";let F={backgroundTaskId:W.id,subSessionId:W.subSessionId,parentSessionId:X||W.parentSessionId,status:"failed",error:B,executionTimeMs:V,associatedTaskId:W.associatedTaskId};this.publishBackgroundEvent(p0.FAILED,F,X||W.parentSessionId,W.triggerEventId,W.replyChannel)}W.error=B,y.error("[BackgroundTaskManager] Task execution error",{taskId:$,status:W.status,error:B})}finally{this.finalizeTask($,W.status);let H=W?._preserveSubSessionOnExit===!0,B=this.getSessionComponent();if(!H&&B?.endSessionCleanup&&W?.subSessionId)try{await B.endSessionCleanup(W.subSessionId)}catch(U){y.warn(`[BackgroundTaskManager] endSessionCleanup failed for ${W.subSessionId}`,{error:U instanceof Error?U.message:String(U)})}else if(H)y.info(`[BackgroundTaskManager] Preserve sub session for ask_user resume: ${W.subSessionId}`)}}startProgressReporter($,J){let Q=setInterval(()=>{let X=this.tasks.get($);if(!X||X.status!=="running"){this.stopProgressReporter($);return}let W=d2();if(W!==void 0&&X.associatedTaskId===void 0)X.associatedTaskId=W;X.lastUpdatedAt=Date.now();let G={backgroundTaskId:$,subSessionId:X.subSessionId,parentSessionId:J,description:X.description,status:X.status,associatedTaskId:X.associatedTaskId,startedAt:X.createdAt,timeoutMs:X.timeoutMs};this.publishBackgroundEvent(p0.PROGRESS,G,J,X.triggerEventId,X.replyChannel)},WF);this.progressTimers.set($,Q)}stopProgressReporter($){let J=this.progressTimers.get($);if(J)clearInterval(J),this.progressTimers.delete($)}async executeWithAbort($,J,Q,X,W,G,Y,q,H){let B=$?.metadata??{},U=B.task_id,z=B.task_description||"",V=$.id,M=B.subagent_type,F=M||H||"general";if(!M&&!H)y.warn(`[delegate] subagent_type unresolved (no session metadata, no explicit value) \u2014 falling back to "general". sessionId=${V}`);let D=this.env?.getComponent?.("agent"),O=D?.getRegistry?.(),R=await lD(F,{registry:O}),L=P8(F),_=R?.basePrompt||L?.promptOverride||"You are a subagent. Complete this task: {task_description}",Z=R?.deniedTools||L?.deniedTools||[],P=R?.allowedTools||L?.allowedTools,w=_.replace(/{task_description}/g,z||"N/A");if(w+=`
2550
+ `}var BF=new Set(["strict-task-agent","code-review","bench-agent-host","workspace-analyzer","test-workflow-agent"]),L9=1800000,UF=1200000;class J0{env;maxProcessRegistries=1000;maxTerminalTasks=1000;tasks=new Map;terminalTasks=new Map;abortControllers=new Map;progressTimers=new Map;processRegistries=new Map;workflowRunRegistries=new Map;workflowService;constructor($){this.env=$}setWorkflowService($){this.workflowService=$}attachWorkflowRun($,J){if(!$||!J)return;let Q=this.workflowRunRegistries.get($);if(!Q)Q=new Set,this.workflowRunRegistries.set($,Q);Q.add(J)}detachWorkflowRun($,J){this.workflowRunRegistries.get($)?.delete(J)}replaceWorkflowRun($,J,Q){if(!$)return;let X=this.workflowRunRegistries.get($);if(!X)return;if(J)X.delete(J);if(Q)X.add(Q)}async propagateStopToWorkflowRuns($,J){let Q=this.workflowRunRegistries.get($);if(!Q||Q.size===0)return{runIds:[],stopResults:[]};let X=Array.from(Q);y.info(`[BackgroundTaskManager] propagateStopToWorkflowRuns count=${X.length} bgTaskId=${$}`);let Y=[];for(let G of X){if(typeof this.workflowService?.stopRun!=="function"){y.warn(`[BackgroundTaskManager] workflowService not injected; cannot stop ${G}`),Y.push({runId:G,success:!1,error:"workflowService not injected"});continue}try{await this.workflowService.stopRun(G,J),Y.push({runId:G,success:!0})}catch(q){let W=q instanceof Error?q.message:String(q);y.warn(`[BackgroundTaskManager] workflowService.stopRun(${G}) failed (likely already terminal): ${W}`),Y.push({runId:G,success:!1,error:W})}}return Q.clear(),{runIds:X,stopResults:Y}}finalizeTask($,J){if(!$)return;this.stopProgressReporter($),this.progressTimers.delete($);let Q=this.tasks.get($);if(Q){if(this.tasks.delete($),this.terminalTasks.size>=this.maxTerminalTasks){let G=this.terminalTasks.keys().next().value;if(G!==void 0)this.terminalTasks.delete(G)}this.terminalTasks.set($,Q)}let X=this.abortControllers.get($);if(X&&J!=="completed"){if(!X.signal.aborted)try{X.abort()}catch{}}this.abortControllers.delete($),this.workflowRunRegistries.delete($);let Y=this.processRegistries.get($);if(Y&&Y.size()>0)y.debug(`[BackgroundTaskManager] finalizeTask\u4FDD\u7559 processRegistry ${$} (residualPIDs=${Y.size()}, reason=${J})`);y.debug(`[BackgroundTaskManager] finalizeTask taskId=${$} reason=${J}`)}getProcessRegistrySize(){return this.processRegistries.size}getMaxProcessRegistries(){return this.maxProcessRegistries}cleanupEmptyProcessRegistries(){let $=0;for(let[J,Q]of this.processRegistries)if(Q.size()===0)this.processRegistries.delete(J),$++;return $}static DEFAULT_WORKFLOW_ENTRY_AGENT="workflow-runner";resolveEntryAgent($){try{if(J0.detectWorkflowShortcutCompat($))return y.info(`[BackgroundTaskManager] Compat rewrite: '${$}' \u2192 '${J0.DEFAULT_WORKFLOW_ENTRY_AGENT}'`),J0.DEFAULT_WORKFLOW_ENTRY_AGENT;let X=this.env?.getComponent?.("agent")?.getRegistry?.()?.get?.($);if(!X||X.type!=="workflow")return;return X.entryAgent??J0.DEFAULT_WORKFLOW_ENTRY_AGENT}catch(J){y.warn(`[BackgroundTaskManager] resolveEntryAgent failed for ${$}: ${J}`);return}}static _detectWorkflowShortcutWrapped=B0(($)=>BF.has($),"delegate.detectWorkflowShortcut",{recordParams:!0,recordResult:!0,log:!0});static detectWorkflowShortcutCompat($){return J0._detectWorkflowShortcutWrapped($)}getSessionComponent(){return this.env?.getComponent?.("session")}async resolveAssociatedTaskIdBySubSession($){if(!$)return;try{let Q=await this.env?.getComponent?.("task")?.getTaskIdBySessionId?.($);return typeof Q==="number"&&Q>0?Q:void 0}catch(J){y.debug(`[BackgroundTaskManager] resolveAssociatedTaskIdBySubSession failed for ${$}: ${J instanceof Error?J.message:String(J)}`);return}}publishBackgroundEvent($,J,Q,X,Y){if(this.env?.pushEnvEvent)this.env.pushEnvEvent({type:$,payload:J,metadata:{source:"task.background",trigger_session_id:Q,...X?{triggerEventId:X}:{},...Y?{replyChannel:Y}:{}}}),y.info(`[BackgroundTaskManager] Event published: ${$}`,{triggerEventId:X,replyChannelChatId:Y?.chatId})}publishBackgroundEventWithTrigger($,J,Q,X,Y){this.publishBackgroundEvent($,J,Q,X,Y)}static parseAskUserErrorFromMessage($){let J=$ instanceof Error?$.message:String($);if($&&typeof $==="object"&&$.name==="AskUserError"&&$.query){let X=$;return{query:X.query,sessionId:X.sessionId,nodeId:X.nodeId,nodeType:X.nodeType||"agent",agentSessionId:X.agentSessionId,delivered:X.delivered===!0,rawErrorMessage:J}}let Q="__ASK_USER_ERROR__:";if(J.includes(Q))try{let X=J.substring(J.indexOf(Q)+Q.length),Y=JSON.parse(X);return{query:Y.query,sessionId:Y.sessionId,nodeId:Y.nodeId,nodeType:Y.nodeType||"agent",agentSessionId:Y.agentSessionId,delivered:Y.delivered===!0,rawErrorMessage:J}}catch(X){return y.warn("[BackgroundTaskManager] Failed to parse __ASK_USER_ERROR__ payload",{error:X instanceof Error?X.message:String(X)}),null}return null}async createTask($){let{parentSessionId:J,description:Q,prompt:X,subagentType:Y,timeout:G,similarTaskIds:q,existingSubSessionId:W,triggerEventId:z,model:H,fallbackModel:B,fallbackModels:U}=$,V=`process_${Date.now()}_${Math.random().toString(36).slice(2,11)}`,O=this.getSessionComponent();if(!O)throw Error("SessionComponent not found");if(!await O.get(J))throw Error(`Parent session not found: ${J}`);let D;if(W){let f=await O.get(W);if(!f)throw Error(`Sub session not found for resume: ${W}`);let A=f?.metadata?.created_by;if(A&&A!=="subagent")y.warn(`[BackgroundTaskManager] Session ${W} was not created by a sub-agent (created_by=${A}); reusing anyway`);D=f;try{let S=f?.metadata??{};await O.update(W,{metadata:{...S,reused_sub_session:!0,reused_at:Date.now()}})}catch(S){y.warn("[BackgroundTaskManager] Failed to update reused session metadata",{existingSubSessionId:W,error:S instanceof Error?S.message:String(S)})}y.info(`[BackgroundTaskManager] Reusing sub session: ${W} for task ${V}`)}else{let f={subagent_type:Y,created_by:"subagent",task_description:Q},A=W2();if(A){if(A.messageId)f.messageId=A.messageId;let S=A.replyChannel;if(S?.messageId)f.larkMessageId=S.messageId;if(S?.chatId)f.chatId=S.chatId;if(S?.userId)f.larkUserId=S.userId;let x=S?.profile;if(x)f.larkProfile=x}if(z)f.triggerEventId=z;if(D=await O.create({title:`${Q} (@${Y} subagent)`,parentSessionId:J,metadata:f}),!D)throw Error("Failed to create sub-session")}let M=MF(),R=new AbortController;if(this.processRegistries.size>=this.maxProcessRegistries){if(this.cleanupEmptyProcessRegistries(),this.processRegistries.size>=this.maxProcessRegistries)throw Error(`BackgroundTaskManager.processRegistries \u8FBE\u5230\u4E0A\u9650 ${this.maxProcessRegistries}\uFF08\u542B\u6B8B\u7559 PID\uFF09\uFF0C\u62D2\u7EDD\u521B\u5EFA\u65B0 task\uFF08taskId=${V}\uFF09\u3002\u8BF7\u6E05\u7406 / \u91CD\u542F / \u8C03\u9AD8 maxProcessRegistries\u3002`)}let L=new G4;this.processRegistries.set(V,L);let N=Date.now(),Z=`${Y}:bg_${V}`,b={id:V,runId:Z,subSessionId:D.id,parentSessionId:J,description:Q,subagentType:Y,status:"pending",createdAt:N,lastUpdatedAt:N,timeoutMs:G||L9,abortController:R,similarTaskIds:q,triggerEventId:z,model:H,fallbackModel:B,fallbackModels:U,replyChannel:M};this.tasks.set(V,b),this.abortControllers.set(V,R);let w={backgroundTaskId:V,subSessionId:D.id,parentSessionId:J,description:Q,subagentType:Y,startedAt:N,timeoutMs:G||L9};return this.publishBackgroundEvent(n0.STARTED,w,J,z,M),this.executeTask(V,X,G,J).catch((f)=>{y.error("[BackgroundTaskManager] executeTask unhandled rejection",{taskId:V,error:f instanceof Error?f.message:String(f)})}),{taskId:V,subSessionId:D.id}}async executeTask($,J,Q,X){let Y=this.tasks.get($);if(!Y){y.warn("[BackgroundTaskManager] executeTask: Task not found",{taskId:$});return}let G=Date.now();Y.status="running",Y.startedAt=G,Y.lastUpdatedAt=G;let q=Q||L9,W=this.abortControllers.get($);this.startProgressReporter($,X||Y.parentSessionId);try{let H=await this.getSessionComponent().get(Y.subSessionId);if(!H)throw Error(`Sub session not found: ${Y.subSessionId}`);let B=this.processRegistries.get($),U=await this.executeWithAbort(H,J,q,$,W?.signal,Y.similarTaskIds,B,()=>W?.abort(),Y.subagentType);if(W?.signal.aborted){y.info("[BackgroundTaskManager] Task was aborted",{taskId:$});return}let V=Date.now();Y.status="completed",Y.completedAt=V,Y.lastUpdatedAt=V,Y.result=U;let O=Y.completedAt-Y.startedAt;if(Y.associatedTaskId=await this.resolveAssociatedTaskIdBySubSession(Y.subSessionId),Y.associatedTaskId===void 0)Y.associatedTaskId=n2();let F={backgroundTaskId:Y.id,subSessionId:Y.subSessionId,parentSessionId:X||Y.parentSessionId,status:"completed",result:Y.result,description:Y.description,executionTimeMs:O,associatedTaskId:Y.associatedTaskId};this.publishBackgroundEvent(n0.COMPLETED,F,X||Y.parentSessionId,Y.triggerEventId,Y.replyChannel),y.info("[BackgroundTaskManager] Task completed successfully",{taskId:$,executionTimeMs:O})}catch(z){let H=z instanceof Error?z.message:String(z),B=J0.parseAskUserErrorFromMessage(z),U=H.toLowerCase().includes("stopped")||H.toLowerCase().includes("aborted"),V=Y.startedAt?Date.now()-Y.startedAt:0,O=Date.now();if(Y.completedAt=O,Y.lastUpdatedAt=O,Y.associatedTaskId=await this.resolveAssociatedTaskIdBySubSession(Y.subSessionId),Y.associatedTaskId===void 0)Y.associatedTaskId=n2();if(B){Y.status="awaiting-user",Y.error=B.rawErrorMessage,Y.pendingAskUserQuery=B.query;let F={backgroundTaskId:Y.id,subSessionId:Y.subSessionId,parentSessionId:X||Y.parentSessionId,subagentType:Y.subagentType,description:Y.description,query:B.query,sessionId:B.sessionId,nodeId:B.nodeId,nodeType:B.nodeType,agentSessionId:B.agentSessionId,delivered:B.delivered===!0,error:B.rawErrorMessage,executionTimeMs:V,hints:["\u8BF7\u628A\u4E0A\u9762\u7684\u95EE\u9898\u539F\u6837\u901A\u8FC7 ask_user tool \u5C55\u793A\u7ED9\u7528\u6237\u5E76\u7B49\u5F85\u7B54\u590D",`\u5F97\u5230\u7528\u6237\u56DE\u590D\u540E\uFF0C\u901A\u8FC7 delegate_task(subagentType="${Y.subagentType}", existingSubSessionId="${Y.subSessionId}", prompt=<\u57FA\u4E8E\u7528\u6237\u56DE\u590D>) \u590D\u7528 sub-session \u8BA9 sub-agent \u7EE7\u627F\u4E4B\u524D\u6D88\u606F\u5386\u53F2\u7EE7\u7EED\u63A8\u8FDB\uFF0C\u65E0\u9700\u5B9E\u73B0 resume function`],associatedTaskId:Y.associatedTaskId};this.publishBackgroundEvent(n0.ASK_USER,F,X||Y.parentSessionId,Y.triggerEventId,Y.replyChannel),y.info("[BackgroundTaskManager] Task awaiting user input (ask_user cascade)",{taskId:$,subSessionId:Y.subSessionId,nodeId:B.nodeId,queryPreview:B.query.substring(0,80)}),Y._preserveSubSessionOnExit=!0;return}if(U){Y.status="stopped";let F={backgroundTaskId:Y.id,subSessionId:Y.subSessionId,parentSessionId:X||Y.parentSessionId,status:"stopped",description:Y.description,error:H,executionTimeMs:V,associatedTaskId:Y.associatedTaskId};this.publishBackgroundEvent(n0.STOPPED,F,X||Y.parentSessionId,Y.triggerEventId,Y.replyChannel)}else if(H.startsWith("Task execution timeout after")){Y.status="timeout";let F={backgroundTaskId:Y.id,subSessionId:Y.subSessionId,parentSessionId:X||Y.parentSessionId,status:"timeout",description:Y.description,error:H,executionTimeMs:V,associatedTaskId:Y.associatedTaskId};this.publishBackgroundEvent(n0.TIMEOUT,F,X||Y.parentSessionId,Y.triggerEventId,Y.replyChannel)}else{Y.status="failed";let F={backgroundTaskId:Y.id,subSessionId:Y.subSessionId,parentSessionId:X||Y.parentSessionId,status:"failed",error:H,executionTimeMs:V,associatedTaskId:Y.associatedTaskId};this.publishBackgroundEvent(n0.FAILED,F,X||Y.parentSessionId,Y.triggerEventId,Y.replyChannel)}Y.error=H,y.error("[BackgroundTaskManager] Task execution error",{taskId:$,status:Y.status,error:H})}finally{this.finalizeTask($,Y.status);let z=Y?._preserveSubSessionOnExit===!0,H=this.getSessionComponent();if(!z&&H?.endSessionCleanup&&Y?.subSessionId)try{await H.endSessionCleanup(Y.subSessionId)}catch(B){y.warn(`[BackgroundTaskManager] endSessionCleanup failed for ${Y.subSessionId}`,{error:B instanceof Error?B.message:String(B)})}else if(z)y.info(`[BackgroundTaskManager] Preserve sub session for ask_user resume: ${Y.subSessionId}`)}}startProgressReporter($,J){let Q=setInterval(()=>{let X=this.tasks.get($);if(!X||X.status!=="running"){this.stopProgressReporter($);return}let Y=n2();if(Y!==void 0&&X.associatedTaskId===void 0)X.associatedTaskId=Y;X.lastUpdatedAt=Date.now();let G={backgroundTaskId:$,subSessionId:X.subSessionId,parentSessionId:J,description:X.description,status:X.status,associatedTaskId:X.associatedTaskId,startedAt:X.createdAt,timeoutMs:X.timeoutMs};this.publishBackgroundEvent(n0.PROGRESS,G,J,X.triggerEventId,X.replyChannel)},UF);this.progressTimers.set($,Q)}stopProgressReporter($){let J=this.progressTimers.get($);if(J)clearInterval(J),this.progressTimers.delete($)}async executeWithAbort($,J,Q,X,Y,G,q,W,z){let H=$?.metadata??{},B=H.task_id,U=H.task_description||"",V=$.id,O=H.subagent_type,F=O||z||"general";if(!O&&!z)y.warn(`[delegate] subagent_type unresolved (no session metadata, no explicit value) \u2014 falling back to "general". sessionId=${V}`);let D=this.env?.getComponent?.("agent"),M=D?.getRegistry?.(),R=await aD(F,{registry:M}),L=S8(F),N=R?.basePrompt||L?.promptOverride||"You are a subagent. Complete this task: {task_description}",Z=R?.deniedTools||L?.deniedTools||[],b=R?.allowedTools||L?.allowedTools,w=N.replace(/{task_description}/g,U||"N/A");if(w+=`
2312
2551
 
2313
2552
  ---
2314
2553
 
2315
2554
  # Session Info
2316
- - task_id: ${U||"N/A"}
2555
+ - task_id: ${B||"N/A"}
2317
2556
  - session_id: ${V}
2318
2557
 
2319
2558
  ---
@@ -2327,13 +2566,13 @@ ${J}
2327
2566
  - \u4F7F\u7528\u53EF\u7528\u5DE5\u5177\u5B8C\u6210\u4EFB\u52A1
2328
2567
  - \u8FD4\u56DE\u6E05\u6670\u7684\u4EFB\u52A1\u6267\u884C\u7ED3\u679C\u6458\u8981
2329
2568
  - \u9002\u65F6\u8C03\u7528 task_operation_create \u8BB0\u5F55\u8FDB\u5C55
2330
- - \u5982\u679C\u4F60\u901A\u8FC7 task_create \u521B\u5EFA\u4E86\u4EFB\u52A1\uFF0C\u8BF7\u5728\u6700\u7EC8\u54CD\u5E94\u4E2D\u660E\u786E\u62A5\u544A task_id\uFF08\u4F8B\u5982\uFF1ATask #627\uFF09`,G&&G.length>0)try{let x=this.env?.getComponent?.("task");if(x){let n=[];for(let g of G)try{let c=await x.getTask(g);if(!c){y.warn(`[delegate] Similar task #${g} not found, skipping`);continue}let F0=await x.listOperations({taskId:g,limit:10}),O0=`### Task #${c.id}: ${c.title}
2331
- `;if(O0+=`- Status: ${c.status}
2332
- `,c.description)O0+=`- Description: ${c.description}
2333
- `;if(c.goals_and_expected_deliverables)O0+=`- Goals: ${c.goals_and_expected_deliverables}
2334
- `;if(F0&&F0.length>0){O0+=`- Recent Operations:
2335
- `;for(let g0 of F0)O0+=` - [${g0.actionType}] ${g0.actionTitle}: ${g0.actionDescription||""}
2336
- `}n.push(O0)}catch(c){y.warn(`[delegate] Failed to fetch similar task #${g}`,{error:c instanceof Error?c.message:String(c)})}if(n.length>0)w+=`
2569
+ - \u5982\u679C\u4F60\u901A\u8FC7 task_create \u521B\u5EFA\u4E86\u4EFB\u52A1\uFF0C\u8BF7\u5728\u6700\u7EC8\u54CD\u5E94\u4E2D\u660E\u786E\u62A5\u544A task_id\uFF08\u4F8B\u5982\uFF1ATask #627\uFF09`,G&&G.length>0)try{let x=this.env?.getComponent?.("task");if(x){let r=[];for(let g of G)try{let c=await x.getTask(g);if(!c){y.warn(`[delegate] Similar task #${g} not found, skipping`);continue}let F0=await x.listOperations({taskId:g,limit:10}),M0=`### Task #${c.id}: ${c.title}
2570
+ `;if(M0+=`- Status: ${c.status}
2571
+ `,c.description)M0+=`- Description: ${c.description}
2572
+ `;if(c.goals_and_expected_deliverables)M0+=`- Goals: ${c.goals_and_expected_deliverables}
2573
+ `;if(F0&&F0.length>0){M0+=`- Recent Operations:
2574
+ `;for(let k0 of F0)M0+=` - [${k0.actionType}] ${k0.actionTitle}: ${k0.actionDescription||""}
2575
+ `}r.push(M0)}catch(c){y.warn(`[delegate] Failed to fetch similar task #${g}`,{error:c instanceof Error?c.message:String(c)})}if(r.length>0)w+=`
2337
2576
 
2338
2577
  ---
2339
2578
 
@@ -2341,19 +2580,19 @@ ${J}
2341
2580
 
2342
2581
  The following similar tasks and their operation records can serve as reference:
2343
2582
 
2344
- `,w+=n.join(`
2583
+ `,w+=r.join(`
2345
2584
  `),w+=`
2346
2585
 
2347
2586
  ---
2348
2587
 
2349
- Use these as guidance to improve task execution efficiency.`}}catch(x){y.warn("[delegate] Failed to inject similar tasks reference",{error:x instanceof Error?x.message:String(x)})}if(!D)throw Error("AgentComponent not found");try{if(this.env){let x=oD(this.env),n=$F({registry:x,similarTaskIds:G??[],limit:5,maxChars:2000,maxDescriptionChars:240});if(!n.isEmpty)w+=`
2588
+ Use these as guidance to improve task execution efficiency.`}}catch(x){y.warn("[delegate] Failed to inject similar tasks reference",{error:x instanceof Error?x.message:String(x)})}if(!D)throw Error("AgentComponent not found");try{if(this.env){let x=YF(this.env),r=WF({registry:x,similarTaskIds:G??[],limit:5,maxChars:2000,maxDescriptionChars:240});if(!r.isEmpty)w+=`
2350
2589
 
2351
2590
  ---
2352
2591
 
2353
- ${n.markdown}`}}catch(x){y.warn("[delegate] Failed to inject reuse candidate section",{error:x instanceof Error?x.message:String(x)})}let f=L?{...L,allowedTools:P}:P?{id:F,name:F,mode:"subagent",description:R?.description||"Custom agent",allowedTools:P,deniedTools:Z}:void 0;JF(D,F,_,f,Z);let E=O?.get(F)?.type==="workflow"?J:w;return new Promise((x,n)=>{let g=async()=>{try{await Y?.killAll()}catch(H0){y.warn("[delegate] ProcessRegistry.killAll failed",{error:H0 instanceof Error?H0.message:String(H0)})}},c=!1,F0,O0,g0=this.tasks.get(X);if(g0?.runId)O0=g0.runId;let q6=()=>{if(W&&H6)try{W.removeEventListener("abort",H6)}catch{}},H6;if(H6=()=>{if(c)return;if(c=!0,F0)clearTimeout(F0);q6();try{let H0=this.env?.getComponent?.("agent");if(H0?.abortRun&&O0)H0.abortRun(O0,"task_signal_abort")}catch{}g().catch(()=>{}).then(()=>{n(Error("Task execution stopped"))})},F0=setTimeout(()=>{if(c)return;if(c=!0,F0)clearTimeout(F0);q6();try{q?.()}catch{}try{let H0=this.env?.getComponent?.("agent");if(H0?.abortRun&&O0)H0.abortRun(O0,"task_timeout")}catch{}g().catch(()=>{}).then(()=>{n(Error(`Task execution timeout after ${Q}ms`))})},Q),W)W.addEventListener("abort",H6);let X7=()=>{let H0=g0?.model,W7=g0?.fallbackModel,G7=g0?.fallbackModels;return this.env.handle_query?.(E,{sessionId:V,deniedTools:Z.length>0?Z:void 0,agentType:F,abort:W,runId:O0,...H0?{model:H0}:{},...W7?{fallbackModel:W7}:{},...Array.isArray(G7)?{fallbackModels:G7}:{}})};(Y?c7(Y,()=>_8(X,()=>X7())):_8(X,()=>X7()))?.then((H0)=>{if(c)return;if(c=!0,F0)clearTimeout(F0);q6(),x(H0)}).catch((H0)=>{if(c)return;if(c=!0,F0)clearTimeout(F0);q6(),n(H0)})})}async stopTask($){let J=this.tasks.get($)??this.terminalTasks.get($);if(!J)return{success:!1,message:"Task not found"};if(this.terminalTasks.has($))return{success:!1,task:J,message:`Cannot stop task with status: ${J.status}`};if(J.status==="completed"||J.status==="failed"||J.status==="stopped"||J.status==="timeout")return{success:!1,task:J,message:`Cannot stop task with status: ${J.status}`};let Q=Date.now();if(J.status="stopped",J.abortController?.abort(),J.runId)try{this.env?.getComponent?.("agent")?.abortRun?.(J.runId,"stop_task")}catch(Y){y.warn("[BackgroundTaskManager] abortRun failed during stopTask",{taskId:$,runId:J.runId,error:Y instanceof Error?Y.message:String(Y)})}J.completedAt=Q,J.lastUpdatedAt=Q;try{await this.processRegistries.get($)?.killAll()}catch(Y){y.warn("[delegate] stopTask killAll failed",{taskId:$,error:Y instanceof Error?Y.message:String(Y)})}let{runIds:X,stopResults:W}=await this.propagateStopToWorkflowRuns($,"Task stopped by user"),G={backgroundTaskId:J.id,subSessionId:J.subSessionId,parentSessionId:J.parentSessionId,status:"stopped",description:J.description,error:"Task stopped by user",executionTimeMs:J.startedAt?J.completedAt-J.startedAt:0,associatedTaskId:J.associatedTaskId};return this.publishBackgroundEvent(p0.STOPPED,G,J.parentSessionId,J.triggerEventId,J.replyChannel),this.finalizeTask($,"stopped"),{success:!0,task:J,message:"Task has been stopped",attached_workflow_run_ids:X,workflow_stop_results:W}}getTask($){return this.tasks.get($)??this.terminalTasks.get($)}async getSubSessionActivity($){let J=this.getTask($);if(!J)return;let Q=this.getSessionComponent();if(!Q?.get)return;try{let X=await Q.get(J.subSessionId);if(!X)return;return{messageCount:X.messageCount??0,updatedAt:X.updatedAt??J.lastUpdatedAt??J.createdAt}}catch{return}}listTasks(){return Array.from(this.tasks.values()).concat(Array.from(this.terminalTasks.values()))}hasActiveTaskForParent($){if(!$)return!1;for(let J of this.tasks.values())if(J.parentSessionId===$&&(J.status==="pending"||J.status==="running"))return!0;return!1}async stopAllForParent($){if(!$)return{stoppedTaskIds:[]};let J=[];for(let[Q,X]of this.tasks)if(X.parentSessionId===$&&(X.status==="running"||X.status==="pending"))try{if((await this.stopTask(Q))?.success)J.push(Q)}catch(W){y.warn(`[BackgroundTaskManager] stopAllForParent failed for ${Q}: ${W instanceof Error?W.message:String(W)}`)}return{stoppedTaskIds:J}}async forceStopAllAcrossParents(){let $=new Set,J=new Set([...this.tasks.keys(),...this.terminalTasks.keys(),...this.processRegistries.keys()]);for(let Q of J){if($.has(Q))continue;$.add(Q);let W=this.tasks.get(Q)??this.terminalTasks.get(Q);try{await this.processRegistries.get(Q)?.killAll()}catch(Y){y.warn(`[BackgroundTaskManager] forceStopAllAcrossParents killAll failed for ${Q}: ${Y instanceof Error?Y.message:String(Y)}`)}try{await this.propagateStopToWorkflowRuns(Q,"force stop all")}catch(Y){y.warn(`[BackgroundTaskManager] forceStopAllAcrossParents propagateStopToWorkflowRuns failed for ${Q}: ${Y instanceof Error?Y.message:String(Y)}`)}let G=!1;if(W&&(W.status==="running"||W.status==="pending"))try{W.status="stopped",W.completedAt=Date.now(),W.lastUpdatedAt=W.completedAt,W.abortController?.abort(),G=!0}catch(Y){y.warn(`[BackgroundTaskManager] forceStopAllAcrossParents mark stopped failed for ${Q}: ${Y instanceof Error?Y.message:String(Y)}`)}if(G&&W){let Y={backgroundTaskId:W.id,subSessionId:W.subSessionId,parentSessionId:W.parentSessionId,status:"stopped",description:W.description,error:"force stop all",executionTimeMs:W.startedAt&&W.completedAt?W.completedAt-W.startedAt:0,associatedTaskId:W.associatedTaskId};this.publishBackgroundEvent(p0.STOPPED,Y,W.parentSessionId,W.triggerEventId,W.replyChannel)}}}async forceStopAll(){return this.forceStopAllAcrossParents()}async dispose($){for(let[,X]of this.progressTimers)try{clearInterval(X)}catch{}this.progressTimers.clear();let J=$?.skipAbortRunningTasks===!0;if($?.waitForRunningTasks===!0&&J){let X=Date.now(),W=600000;while(Date.now()-X<600000){let G=0;for(let[,Y]of this.tasks)if(Y.status==="running"||Y.status==="pending")G++;if(G===0)break;y.info(`[BackgroundTaskManager] dispose waiting for ${G} running task(s)`),await new Promise((Y)=>setTimeout(Y,200))}}for(let[,X]of this.abortControllers){if(J)break;try{X.abort()}catch{}}this.abortControllers.clear();for(let[,X]of this.processRegistries)try{await X.killAll()}catch(W){y.warn("[BackgroundTaskManager] dispose registry.killAll failed",{error:W instanceof Error?W.message:String(W)})}this.processRegistries.clear();for(let X of this.workflowRunRegistries.keys())await this.propagateStopToWorkflowRuns(X,"BackgroundTaskManager disposed");this.workflowRunRegistries.clear(),this.tasks.clear(),y.info("[BackgroundTaskManager] Disposed")}}m([u("task.background.attachWorkflowRun",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"attachWorkflowRun",null);m([u("task.background.detachWorkflowRun",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"detachWorkflowRun",null);m([u("task.background.replaceWorkflowRun",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"replaceWorkflowRun",null);m([u("task.background.propagateStopToWorkflowRuns",{recordParams:!0,recordResult:!0,log:!0})],J0.prototype,"propagateStopToWorkflowRuns",null);m([u("task.background.finalizeTask",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"finalizeTask",null);m([u("task.background.resolveEntryAgent",{recordParams:!0,recordResult:!0})],J0.prototype,"resolveEntryAgent",null);m([u("task.background.createTask",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"createTask",null);m([u("task.background.executeTask",{recordParams:!0,recordResult:!0,log:!0})],J0.prototype,"executeTask",null);m([u("task.background.startProgressReporter",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"startProgressReporter",null);m([u("task.background.stopProgressReporter",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"stopProgressReporter",null);m([u("delegate.executeWithAbort",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"executeWithAbort",null);m([u("task.background.stopAllForParent",{recordParams:!0,recordResult:!0,log:!0})],J0.prototype,"stopAllForParent",null);m([u("task.background.forceStopAllAcrossParents",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"forceStopAllAcrossParents",null);function z3($){return $.env?.getComponent?.("agent")?.getRegistry?.()}function D3($){let J=$.env,X=$.backgroundTaskManager??new J0(J),W=z3($);$._backgroundTaskManager=X;let G={name:"delegate_task",description:`Launch a new sub-agent to handle complex, multistep tasks autonomously.
2592
+ ${r.markdown}`}}catch(x){y.warn("[delegate] Failed to inject reuse candidate section",{error:x instanceof Error?x.message:String(x)})}let f=L?{...L,allowedTools:b}:b?{id:F,name:F,mode:"subagent",description:R?.description||"Custom agent",allowedTools:b,deniedTools:Z}:void 0;zF(D,F,N,f,Z);let S=M?.get(F)?.type==="workflow"?J:w;return new Promise((x,r)=>{let g=async()=>{try{await q?.killAll()}catch(z0){y.warn("[delegate] ProcessRegistry.killAll failed",{error:z0 instanceof Error?z0.message:String(z0)})}},c=!1,F0,M0,k0=this.tasks.get(X);if(k0?.runId)M0=k0.runId;let V6=()=>{if(Y&&D6)try{Y.removeEventListener("abort",D6)}catch{}},D6;if(D6=()=>{if(c)return;if(c=!0,F0)clearTimeout(F0);V6();try{let z0=this.env?.getComponent?.("agent");if(z0?.abortRun&&M0)z0.abortRun(M0,"task_signal_abort")}catch{}g().catch(()=>{}).then(()=>{r(Error("Task execution stopped"))})},F0=setTimeout(()=>{if(c)return;if(c=!0,F0)clearTimeout(F0);V6();try{W?.()}catch{}try{let z0=this.env?.getComponent?.("agent");if(z0?.abortRun&&M0)z0.abortRun(M0,"task_timeout")}catch{}g().catch(()=>{}).then(()=>{r(Error(`Task execution timeout after ${Q}ms`))})},Q),Y)Y.addEventListener("abort",D6);let G7=()=>{let z0=k0?.model,q7=k0?.fallbackModel,W7=k0?.fallbackModels;return this.env.handle_query?.(S,{sessionId:V,deniedTools:Z.length>0?Z:void 0,agentType:F,abort:Y,runId:M0,...z0?{model:z0}:{},...q7?{fallbackModel:q7}:{},...Array.isArray(W7)?{fallbackModels:W7}:{}})};(q?d7(q,()=>A8(X,()=>G7())):A8(X,()=>G7()))?.then((z0)=>{if(c)return;if(c=!0,F0)clearTimeout(F0);V6(),x(z0)}).catch((z0)=>{if(c)return;if(c=!0,F0)clearTimeout(F0);V6(),r(z0)})})}async stopTask($){let J=this.tasks.get($)??this.terminalTasks.get($);if(!J)return{success:!1,message:"Task not found"};if(this.terminalTasks.has($))return{success:!1,task:J,message:`Cannot stop task with status: ${J.status}`};if(J.status==="completed"||J.status==="failed"||J.status==="stopped"||J.status==="timeout")return{success:!1,task:J,message:`Cannot stop task with status: ${J.status}`};let Q=Date.now();if(J.status="stopped",J.abortController?.abort(),J.runId)try{this.env?.getComponent?.("agent")?.abortRun?.(J.runId,"stop_task")}catch(q){y.warn("[BackgroundTaskManager] abortRun failed during stopTask",{taskId:$,runId:J.runId,error:q instanceof Error?q.message:String(q)})}J.completedAt=Q,J.lastUpdatedAt=Q;try{await this.processRegistries.get($)?.killAll()}catch(q){y.warn("[delegate] stopTask killAll failed",{taskId:$,error:q instanceof Error?q.message:String(q)})}let{runIds:X,stopResults:Y}=await this.propagateStopToWorkflowRuns($,"Task stopped by user"),G={backgroundTaskId:J.id,subSessionId:J.subSessionId,parentSessionId:J.parentSessionId,status:"stopped",description:J.description,error:"Task stopped by user",executionTimeMs:J.startedAt?J.completedAt-J.startedAt:0,associatedTaskId:J.associatedTaskId};return this.publishBackgroundEvent(n0.STOPPED,G,J.parentSessionId,J.triggerEventId,J.replyChannel),this.finalizeTask($,"stopped"),{success:!0,task:J,message:"Task has been stopped",attached_workflow_run_ids:X,workflow_stop_results:Y}}getTask($){return this.tasks.get($)??this.terminalTasks.get($)}async getSubSessionActivity($){let J=this.getTask($);if(!J)return;let Q=this.getSessionComponent();if(!Q?.get)return;try{let X=await Q.get(J.subSessionId);if(!X)return;return{messageCount:X.messageCount??0,updatedAt:X.updatedAt??J.lastUpdatedAt??J.createdAt}}catch{return}}listTasks(){return Array.from(this.tasks.values()).concat(Array.from(this.terminalTasks.values()))}hasActiveTaskForParent($){if(!$)return!1;for(let J of this.tasks.values())if(J.parentSessionId===$&&(J.status==="pending"||J.status==="running"))return!0;return!1}async stopAllForParent($){if(!$)return{stoppedTaskIds:[]};let J=[];for(let[Q,X]of this.tasks)if(X.parentSessionId===$&&(X.status==="running"||X.status==="pending"))try{if((await this.stopTask(Q))?.success)J.push(Q)}catch(Y){y.warn(`[BackgroundTaskManager] stopAllForParent failed for ${Q}: ${Y instanceof Error?Y.message:String(Y)}`)}return{stoppedTaskIds:J}}async forceStopAllAcrossParents(){let $=new Set,J=new Set([...this.tasks.keys(),...this.terminalTasks.keys(),...this.processRegistries.keys()]);for(let Q of J){if($.has(Q))continue;$.add(Q);let Y=this.tasks.get(Q)??this.terminalTasks.get(Q);try{await this.processRegistries.get(Q)?.killAll()}catch(q){y.warn(`[BackgroundTaskManager] forceStopAllAcrossParents killAll failed for ${Q}: ${q instanceof Error?q.message:String(q)}`)}try{await this.propagateStopToWorkflowRuns(Q,"force stop all")}catch(q){y.warn(`[BackgroundTaskManager] forceStopAllAcrossParents propagateStopToWorkflowRuns failed for ${Q}: ${q instanceof Error?q.message:String(q)}`)}let G=!1;if(Y&&(Y.status==="running"||Y.status==="pending"))try{Y.status="stopped",Y.completedAt=Date.now(),Y.lastUpdatedAt=Y.completedAt,Y.abortController?.abort(),G=!0}catch(q){y.warn(`[BackgroundTaskManager] forceStopAllAcrossParents mark stopped failed for ${Q}: ${q instanceof Error?q.message:String(q)}`)}if(G&&Y){let q={backgroundTaskId:Y.id,subSessionId:Y.subSessionId,parentSessionId:Y.parentSessionId,status:"stopped",description:Y.description,error:"force stop all",executionTimeMs:Y.startedAt&&Y.completedAt?Y.completedAt-Y.startedAt:0,associatedTaskId:Y.associatedTaskId};this.publishBackgroundEvent(n0.STOPPED,q,Y.parentSessionId,Y.triggerEventId,Y.replyChannel)}}}async forceStopAll(){return this.forceStopAllAcrossParents()}async dispose($){for(let[,X]of this.progressTimers)try{clearInterval(X)}catch{}this.progressTimers.clear();let J=$?.skipAbortRunningTasks===!0;if($?.waitForRunningTasks===!0&&J){let X=Date.now(),Y=600000;while(Date.now()-X<600000){let G=0;for(let[,q]of this.tasks)if(q.status==="running"||q.status==="pending")G++;if(G===0)break;y.info(`[BackgroundTaskManager] dispose waiting for ${G} running task(s)`),await new Promise((q)=>setTimeout(q,200))}}for(let[,X]of this.abortControllers){if(J)break;try{X.abort()}catch{}}this.abortControllers.clear();for(let[,X]of this.processRegistries)try{await X.killAll()}catch(Y){y.warn("[BackgroundTaskManager] dispose registry.killAll failed",{error:Y instanceof Error?Y.message:String(Y)})}this.processRegistries.clear();for(let X of this.workflowRunRegistries.keys())await this.propagateStopToWorkflowRuns(X,"BackgroundTaskManager disposed");this.workflowRunRegistries.clear(),this.tasks.clear(),y.info("[BackgroundTaskManager] Disposed")}}k([u("task.background.attachWorkflowRun",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"attachWorkflowRun",null);k([u("task.background.detachWorkflowRun",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"detachWorkflowRun",null);k([u("task.background.replaceWorkflowRun",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"replaceWorkflowRun",null);k([u("task.background.propagateStopToWorkflowRuns",{recordParams:!0,recordResult:!0,log:!0})],J0.prototype,"propagateStopToWorkflowRuns",null);k([u("task.background.finalizeTask",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"finalizeTask",null);k([u("task.background.resolveEntryAgent",{recordParams:!0,recordResult:!0})],J0.prototype,"resolveEntryAgent",null);k([u("task.background.createTask",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"createTask",null);k([u("task.background.executeTask",{recordParams:!0,recordResult:!0,log:!0})],J0.prototype,"executeTask",null);k([u("task.background.startProgressReporter",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"startProgressReporter",null);k([u("task.background.stopProgressReporter",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"stopProgressReporter",null);k([u("delegate.executeWithAbort",{recordParams:!0,recordResult:!1,log:!0})],J0.prototype,"executeWithAbort",null);k([u("task.background.stopAllForParent",{recordParams:!0,recordResult:!0,log:!0})],J0.prototype,"stopAllForParent",null);k([u("task.background.forceStopAllAcrossParents",{recordParams:!1,recordResult:!0,log:!0})],J0.prototype,"forceStopAllAcrossParents",null);function K3($){return $.env?.getComponent?.("agent")?.getRegistry?.()}function R3($){let J=$.env,X=$.backgroundTaskManager??new J0(J),Y=K3($);$._backgroundTaskManager=X;let G={name:"delegate_task",description:`Launch a new sub-agent to handle complex, multistep tasks autonomously.
2354
2593
 
2355
2594
  Available agent types:
2356
- ${pD(W)}
2595
+ ${tD(Y)}
2357
2596
 
2358
2597
  When using the delegate_task tool, you must specify a subagent_type parameter to select which agent type to use.
2359
2598
 
@@ -2382,14 +2621,14 @@ No need to poll \u2014 just wait for the notification and use \`task_get\` with
2382
2621
  - **subagent_type**: The type of specialized agent to use (e.g., "general", "explore")
2383
2622
  - **timeout**: Task timeout in milliseconds (optional, default 30 minutes)
2384
2623
  - **reason**: Brief reason for calling this tool (optional)
2385
- - **similar_task_ids**: Similar task IDs (max 3) to reference for improving sub-agent execution efficiency. Search for similar tasks using \`task_search\` or \`task_list\` before calling this tool.`,parameters:V3,execute:async(Y,q)=>{let H=Date.now(),B=V3.parse(Y),{description:U,prompt:z,subagent_type:V="general",timeout:M,reason:F,similar_task_ids:D}=B,O=q.session_id||"default",R=B.triggerEventId??YF();if(R&&R!==B.triggerEventId)y.info(`[delegate_task] triggerEventId auto-derived from EnvContext: ${R}`);if(y.info(`[delegate_task] Called: description=${U}, subagent_type=${V}, triggerEventId=${R??"(none)"}`),R){let f=p7();if(f)try{if(!await f.getEventById(R))return{success:!1,output:"",error:`Unknown triggerEventId: ${R} (not found in EventStore)`,metadata:{execution_time_ms:Date.now()-H}}}catch(N){return{success:!1,output:"",error:`Failed to verify triggerEventId ${R}: ${N instanceof Error?N.message:String(N)}`,metadata:{execution_time_ms:Date.now()-H}}}else y.warn(`[delegate_task] triggerEventId=${R} supplied but no shared EventStore registered; skipping verification`)}let L=z3($);if(!uD(V,L))return{success:!1,output:"",error:`Unknown subagent type: ${V}`,metadata:{execution_time_ms:Date.now()-H}};let _=$.getTagService(),Z=z,P={prompt:Z,subagentType:V,timeout:M,reason:F,tagService:_},w={component:{name:"task",version:"1.0.0"},data:P,metadata:{sessionId:O},phase:"before",hookPoint:X0.DELEGATE_BEFORE};return await E0.execute(X0.DELEGATE_BEFORE,P,{sessionId:O}),Z=P.prompt,await BF(X,O,U,Z,P.subagentType,P.timeout,D,B.sub_session_id,R,q.model,q.fallbackModel,q.fallbackModels)}};return G.execute=U0(G.execute,"delegate.execute",{recordParams:!0,recordResult:!1,recordError:!0}),G}function GF(){let $=Q2();if(!$)return;let J=$.envEvent,Q=J?.metadata?.triggerEventId;if(typeof Q==="string"&&Q.length>0)return Q;let X=J?.payload?.triggerEventId;if(typeof X==="string"&&X.length>0)return X;return}var YF=U0(GF,"delegate.deriveTriggerEventId",{recordParams:!1,recordResult:!0,recordError:!0});function qF(){let $=Q2()?.replyChannel;if(!$)return;if(!$.chatId&&!$.messageId)return;let J={...$.params??{}};if($.userId&&J.userId===void 0)J.userId=$.userId;return{type:$.type,appId:$.appId,chatId:$.chatId,messageId:$.messageId,profile:$.profile,params:Object.keys(J).length>0?J:void 0}}var HF=U0(qF,"delegate.captureReplyChannel",{recordParams:!1,recordResult:!0,recordError:!0});async function BF($,J,Q,X,W,G,Y,q,H,B,U,z){let V=Date.now();try{let M=W,F=X,D,O=$.resolveEntryAgent(W);if(O)D=W,M=O,F=QF({workflowName:D,originalPrompt:X,description:Q}),y.info(`[delegate_task] Routing workflow subagent '${W}' \u2192 entry-agent '${O}'`);let{taskId:R,subSessionId:L}=await $.createTask({parentSessionId:J,description:Q,prompt:F,subagentType:M,timeout:G,similarTaskIds:Y,originalWorkflowName:D,existingSubSessionId:q,triggerEventId:H,model:B,fallbackModel:U,fallbackModels:z});return{success:!0,output:["\u2705 Background task accepted","",`\uD83D\uDCCB Process ID: ${R}`,`\uD83D\uDCDD Description: ${Q}`,`\uD83E\uDD16 Sub-agent: ${M}${D?` (workflow: ${D})`:""}`,`\u23F1\uFE0F Timeout: ${(G||M9)/1000}s`,"",`Use stop_task with task_id="${R}" to cancel this task.`].join(`
2386
- `),metadata:{execution_time_ms:Date.now()-V,sessionId:L,background:!0,status:"accepted",bgProcessId:R}}}catch(M){return{success:!1,output:"",error:M instanceof Error?M.message:String(M),metadata:{execution_time_ms:Date.now()-V}}}}var j$={CREATED:"task.created",UPDATED:"task.updated",COMPLETED:"task.completed",DELETED:"task.deleted",OPERATION_ADDED:"task.operation_added",DELEGATED:"task.delegated"};z0();var UF=20;var VF=["expected_decision","expected_root","expected_","case_id","category","suggested_","recommended_","best_match","answer","answer_key","label","should_","target","gold","ground_truth","hint","solution","duplicate_of","similar_task_ids","candidate_order","verdict","decision"];function zF($){if(!$)return[];let J;try{J=JSON.parse($)}catch{return[]}if(!J||typeof J!=="object"||Array.isArray(J))return[];let Q=J.similar_task_ids;if(!Array.isArray(Q))return[];let X=[],W=new Set;for(let G of Q){if(typeof G!=="number")continue;if(!Number.isInteger(G)||G<=0)continue;if(W.has(G))continue;if(W.add(G),X.push(G),X.length>=UF)break}return X}function DF($){switch($){case"completed":case"cancelled":case"paused":case"archived":return"reopen";case"todo":case"active":default:return"enhance"}}function F3($){return $==="paused"?"active":"todo"}var E8="__NEW_TASK_ID__",C8="#__NEW_TASK_ID__";function FF($){switch($.scenario){case"reuse":return OF($);case"reopen":return MF($);case"reopen_enhance":return KF($);case"remount":return RF($);case"soft_reuse":return LF($)}}function S8($){return $.newTaskId>0?String($.newTaskId):E8}function A0($){return $.newTaskId>0?`#${$.newTaskId}`:C8}function R9($){let J=$.targetTask;if(!J)return"";return`#${$.targetTaskId} [${J.type}] ${J.title}
2387
- \u72B6\u6001\uFF1A${J.status}`}function OF($){let J=$.includeGoals?", goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>":"";return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u4E0E\u5DF2\u6709\u4EFB\u52A1\u9AD8\u5EA6\u76F8\u4F3C\uFF0C\u5EFA\u8BAE\u590D\u7528\u800C\u975E\u65B0\u5EFA\u3002","",R9($),"\u72B6\u6001\uFF1A"+($.targetTask?.status??"")+" \uFF5C \u5EFA\u8BAE\u52A8\u4F5C\uFF1Aenhance\uFF08\u8865\u5145\u76EE\u6807/\u63CF\u8FF0\uFF09","",`\u5982\u9700\u5408\u5E76\u5230 #${$.targetTaskId}\uFF0C\u53EF\u6267\u884C\uFF1A`,` task_update(task_id=${$.targetTaskId}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>${J})`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${A0($)}\u3002\u82E5\u786E\u8BA4\u5E94\u590D\u7528 #${$.targetTaskId}\uFF0C\u8BF7\u8C03\u7528\u4E0A\u8FF0 task_update \u5E76\u6309\u9700\u5F52\u6863 ${A0($)}\u3002`,"","\u6838\u5B9E\u8981\u70B9\uFF1A\u672C\u6B21\u8BF7\u6C42\u662F\u5426\u5C31\u662F #"+$.targetTaskId+" \u7684\u300C\u540C\u4E00\u4EF6\u4E8B\u300D\uFF0C\u800C\u4E0D\u662F\u540C\u4E3B\u9898\u4E0B\u65B0\u7684\u4E00\u6B65\uFF1F"," - \u82E5\u53EA\u662F\u540C\u4E3B\u9898\u7684\u65B0\u4E00\u6B65\uFF08\u9700\u8981\u72EC\u7ACB\u8DDF\u8E2A\u7684\u65B0\u5B50\u4EFB\u52A1\uFF09\uFF0C\u5EFA\u5B50\u4EFB\u52A1\u4E0D\u7B97\u4E0D\u91C7\u7EB3\uFF0C\u4F46\u9700\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u4E3A\u4F55\u4E0D\u76F4\u63A5\u5408\u5E76\u3002"," - \u82E5\u786E\u5B9E\u662F\u540C\u4E00\u4EF6\u4E8B\uFF0C\u5E94\u91C7\u7EB3 (a) \u6267\u884C\u590D\u7528\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, ...) \u6267\u884C\u590D\u7528\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${A0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2388
- `)}function MF($){let J=$.targetTask?.status??"completed",Q=F3(J),X=$.includeGoals?", goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>":"";return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u8BF7\u6C42\u4E0E\u5DF2\u6709\u4EFB\u52A1\u5B9E\u8D28\u76F8\u540C\uFF0C\u5EFA\u8BAE\u91CD\u5F00\u8BE5\u4EFB\u52A1\u800C\u4E0D\u662F\u65B0\u5EFA\u3002","",R9($),`\u72B6\u6001\uFF1A${J} \uFF5C \u5EFA\u8BAE\u52A8\u4F5C\uFF1Areopen\uFF08\u6062\u590D\u4E3A ${Q}\uFF09`,"","\u5982\u9700\u91CD\u5F00\u5E76\u627F\u63A5\u672C\u6B21\u8BF7\u6C42\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${$.targetTaskId}, status=${Q}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>${X})`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${A0($)}\u3002\u82E5\u786E\u8BA4\u5E94\u590D\u7528 #${$.targetTaskId}\uFF0C\u8BF7\u8C03\u7528\u4E0A\u8FF0 task_update \u5E76\u6309\u9700\u5F52\u6863 ${A0($)}\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A#${$.targetTaskId} \u662F\u5426\u771F\u7684\u5DF2\u5B8C\u7ED3\uFF08completed / cancelled\uFF09\uFF0C\u4F46\u5176\u8BED\u4E49\u4E0E\u672C\u6B21\u8BF7\u6C42\u4ECD\u7136\u76F8\u540C\uFF1F`," - \u82E5\u5DF2\u5B8C\u7ED3\u4F46\u8BED\u4E49\u4ECD\u76F8\u540C\uFF08\u672C\u6B21\u8BF7\u6C42\u662F\u8BE5\u4EFB\u52A1\u7684\u5EF6\u7EED\uFF09\u2192 \u5E94\u91C7\u7EB3 (a) \u91CD\u5F00\u3002"," - \u82E5\u76EE\u6807\u5DF2\u5B8C\u7ED3\u4E14\u8BED\u4E49\u4E0D\u540C\uFF08\u53EA\u662F\u4E3B\u9898\u76F8\u8FD1\uFF09\u2192 \u5E94\u91C7\u7EB3 (b) \u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, status=${Q}, ...) \u6267\u884C\u91CD\u5F00\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${A0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2389
- `)}function KF($){let J=$.targetTask?.status??"completed",Q=F3(J);return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u8BF7\u6C42\u4E0E\u5DF2\u6709\u4EFB\u52A1\u5B9E\u8D28\u76F8\u540C\uFF0C\u4E14\u672C\u6B21\u65B0\u589E\u4E86\u76EE\u6807\uFF0C\u5EFA\u8BAE\u91CD\u5F00\u5E76\u589E\u5F3A\u8BE5\u4EFB\u52A1\u3002","",R9($),`\u72B6\u6001\uFF1A${J} \uFF5C \u5EFA\u8BAE\u52A8\u4F5C\uFF1Areopen + enhance\uFF08\u6062\u590D\u4E3A ${Q} \u5E76\u8FFD\u52A0\u76EE\u6807\uFF09`,"","\u5982\u9700\u91CD\u5F00\u5E76\u627F\u63A5\u672C\u6B21\u8BF7\u6C42\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${$.targetTaskId}, status=${Q}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>, goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>)`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${A0($)}\u3002\u82E5\u786E\u8BA4\u5E94\u590D\u7528 #${$.targetTaskId}\uFF0C\u8BF7\u8C03\u7528\u4E0A\u8FF0 task_update \u5E76\u6309\u9700\u5F52\u6863 ${A0($)}\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A\u2460 #${$.targetTaskId} \u662F\u5426\u771F\u7684\u5DF2\u5B8C\u7ED3\uFF08completed / cancelled\uFF09\u4F46\u8BED\u4E49\u4ECD\u4E0E\u672C\u6B21\u8BF7\u6C42\u76F8\u540C\uFF1B\u2461 \u672C\u6B21\u65B0\u589E\u7684\u76EE\u6807\u662F\u5426\u786E\u5B9E\u5C5E\u4E8E\u8BE5\u4EFB\u52A1\u7684\u8303\u56F4\u5185\uFF1F`," - \u4E24\u70B9\u90FD\u6210\u7ACB \u2192 \u5E94\u91C7\u7EB3 (a) \u91CD\u5F00\u5E76\u589E\u5F3A\u3002"," - \u65B0\u589E\u76EE\u6807\u8D85\u51FA\u539F\u4EFB\u52A1\u8303\u56F4\uFF08\u662F\u72EC\u7ACB\u7684\u65B0\u5DE5\u4F5C\uFF09\u2192 \u5E94\u91C7\u7EB3 (b) \u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, status=${Q}, ..., goals_and_expected_deliverables=...) \u6267\u884C\u91CD\u5F00\u5E76\u589E\u5F3A\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${A0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2390
- `)}function RF($){return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u4EFB\u52A1\u7684\u6302\u8F7D\u4F4D\u7F6E\u53EF\u80FD\u4E0D\u5408\u7406\u3002","",`\u5F53\u524D\u6302\u8F7D\uFF1Aparent #${$.currentParentId} \u2192 root \u7956\u5148 #${$.currentRootAncestorId}`,`\u5EFA\u8BAE\u5F52\u5C5E\uFF1Aroot #${$.recommendedRootId} ${$.recommendedRootTitle??""}`.trimEnd(),"","\u5982\u9700\u6539\u6302\u5230\u5EFA\u8BAE\u7684 root \u4E0B\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${S8($)}, parent_task_id=${$.recommendedRootId})`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${A0($)}\uFF0Cparent \u672A\u88AB\u81EA\u52A8\u4FEE\u6539\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A\u5F53\u524D parent #${$.currentParentId} \u7684 root \u7956\u5148 #${$.currentRootAncestorId} \u4E0E\u5EFA\u8BAE\u7684 root #${$.recommendedRootId}\uFF0C\u54EA\u4E00\u6761\u624D\u662F\u672C\u6B21\u4EFB\u52A1\u7684\u6B63\u786E\u5F52\u5C5E\u7EBF\uFF1F\uFF08\u53EF\u53C2\u8003\u5144\u5F1F\u4EFB\u52A1\u7684\u4E3B\u9898\u5206\u5E03\uFF09`," - \u5EFA\u8BAE\u7684 root \u66F4\u8D34\u5408\u672C\u6B21\u4EFB\u52A1\u4E3B\u9898 \u2192 \u5E94\u91C7\u7EB3 (a) \u6267\u884C\u6539\u6302\u3002"," - \u5F53\u524D\u5F52\u5C5E\u7EBF\u5DF2\u6B63\u786E \u2192 \u5E94\u91C7\u7EB3 (b) \u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${S8($)}) \u786E\u8BA4\u672C\u6B21\u65B0\u5EFA\u4EFB\u52A1\u7684\u5B9E\u9645 parent\uFF0C\u5E76\u7528 task_get(${$.recommendedRootId})\uFF08\u5FC5\u8981\u65F6 task_tree\uFF09\u786E\u8BA4\u5F52\u5C5E\u7EBF\u662F\u5426\u771F\u7684\u4E0D\u5BF9\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u6302\u8F7D\u4E0D\u5408\u7406 \u2192 \u6267\u884C\u6539\u6302 task_update(task_id=${S8($)}, parent_task_id=${$.recommendedRootId})\uFF1B`,"(b) \u786E\u8BA4\u5F53\u524D\u6302\u8F7D\u5408\u7406 \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2391
- `)}function LF($){let J=$.includeGoals?", goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>":"";return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u8BF7\u6C42\u53EF\u80FD\u4E0E\u5DF2\u6709\u4EFB\u52A1\u6709\u5173\u8054\uFF08\u7F6E\u4FE1\u5EA6\u504F\u4F4E\uFF0C\u4EC5\u4F9B\u53C2\u8003\uFF09\u3002","",R9($),"","\u82E5\u786E\u8BA4\u662F\u540C\u4E00\u4EF6\u4E8B\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${$.targetTaskId}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>${J})`,"",`\u8BF4\u660E\uFF1A\u672C\u63D0\u793A\u57FA\u4E8E\u8F83\u4F4E\u7F6E\u4FE1\u5EA6\uFF0C\u53EF\u80FD\u8BEF\u5224\u3002\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${A0($)}\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A#${$.targetTaskId} \u4E0E\u672C\u6B21\u8BF7\u6C42\u662F\u5426\u786E\u4E3A\u540C\u4E00\u4EF6\u4E8B\uFF1F\uFF08\u672C\u63D0\u793A\u7F6E\u4FE1\u5EA6\u4F4E\uFF0C\u6838\u5B9E\u6743\u91CD\u76F8\u5E94\u964D\u4F4E\uFF0C\u4F46\u4E0D\u5F97\u8DF3\u8FC7\u8868\u6001\uFF09`,"",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, ...) \u6267\u884C\u590D\u7528\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${A0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2392
- `)}function AF($){let J=$.toLowerCase();return VF.some((Q)=>Q.endsWith("_")||Q.endsWith("*")?J.startsWith(Q.slice(0,-1)):J===Q)}function _F($,J){let Q=(X,W)=>{if(Array.isArray(X)){X.forEach((G,Y)=>Q(G,`${W}[${Y}]`));return}if(!X||typeof X!=="object")return;for(let[G,Y]of Object.entries(X)){let q=W?`${W}.${G}`:G;if(AF(G))throw Error(`[assertNoLeakage] leakage key detected at ${q}: "${G}"`);Q(Y,q)}};Q($,"state"),Q(J,"questions")}function jF($,J){let Q;try{Q=JSON.parse($.context)}catch{return!1}if(!Q||typeof Q!=="object"||Array.isArray(Q))return!1;return Q.decision_hint=J,$.context=JSON.stringify(Q),!0}var wL=U0(zF,"task.decision.parseSimilarTaskIds",{recordParams:!0,recordResult:!0,log:!1,paramFilter:($)=>{let J=$[0],Q=typeof J==="string"?J:"";return{contextLen:Q.length,contextPreview:Q.length>80?Q.slice(0,80)+"\u2026":Q}},resultFilter:($)=>({count:$.length,ids:$.join(",")})}),bL=U0(DF,"task.decision.deriveActionFromStatus",{recordParams:!0,recordResult:!0,log:!1}),PL=U0(FF,"task.decision.buildHintText",{recordParams:!0,recordResult:!0,log:!1,paramFilter:($)=>{let J=$[0]??{};return{scenario:J.scenario,newTaskId:J.newTaskId,targetTaskId:J.targetTaskId??null,recommendedRootId:J.recommendedRootId??null,currentParentId:J.currentParentId??null,confidence:J.confidence??null}},resultFilter:($)=>({hintLen:$.length,hintPreview:$.slice(0,240),hasTaskUpdate:/task_update\s*\(/.test($),hasTaskId:/"task_id"\s*:/.test($),hasParentTaskId:/"parent_task_id"\s*:/.test($)})}),SL=U0(_F,"task.decision.assertNoLeakage",{recordParams:!0,recordResult:!1,log:!1,paramFilter:($)=>({stateKeys:K9($[0]),questionKeys:K9($[1])})}),EL=U0(jF,"task.decision.writeDecisionHint",{recordParams:!0,recordResult:!0,log:!1,paramFilter:($)=>{let J=$[0]??{},Q=typeof $[1]==="string"?$[1]:"";return{contextLen:typeof J.context==="string"?J.context.length:0,hintLen:Q.length,hintScenario:/task_update\s*\(/.test(Q)?"actionable":"plain"}},resultFilter:($)=>({written:$}),errorIf:($)=>$===!1?Error("writeDecisionHint returned false (context not a JSON object)"):void 0});function K9($,J=[],Q=0){if(J.length>=40||Q>4)return J;if(Array.isArray($)){for(let X of $.slice(0,3))K9(X,J,Q+1);return J}if(!$||typeof $!=="object")return J;for(let X of Object.keys($)){if(J.length>=40)break;if(!J.includes(X))J.push(X);K9($[X],J,Q+1)}return J}import{execSync as bF}from"child_process";var O3="unknown",NF='{"type":"unknown"}';function ZF(){return{task_id:K.number().describe("Task ID")}}function wF($){if(typeof $!=="object"||$===null||Array.isArray($))return $;let J=$;if(J.task_id===void 0&&J.id!==void 0)return{...J,task_id:J.id};return J}function L9($){return K.preprocess(wF,K.object({...ZF(),...$}))}var M3=K.object({title:K.string().describe("Task title"),description:K.string().optional().describe("Task description"),priority:K.enum(["low","medium","high"]).optional().describe("Task priority"),type:K.enum(["normal","cycle","longterm"]).optional().default("normal").describe("Task type. normal: \u5E38\u89C4\u4EFB\u52A1\uFF0C\u9700\u8981\u8DDF\u8E2A\u5B8C\u6210. cycle: \u5468\u671F\u4EFB\u52A1\uFF08\u5982\u6BCF\u5468\u53D1\u5468\u62A5\uFF09\uFF0C\u65E0\u9700 complete\uFF0C\u5B9A\u671F\u6267\u884C. longterm: \u957F\u671F\u4EFB\u52A1/\u613F\u666F\u76EE\u6807\uFF08\u5982\u63D0\u5347\u516C\u53F8\u5F71\u54CD\u529B\uFF09\uFF0C\u96BE\u4EE5\u4E00\u6B21\u6027\u5B8C\u6210\uFF0C\u6301\u7EED\u8DDF\u8FDB"),goals_and_expected_deliverables:K.string().optional().describe("Goals and expected deliverables. "+"\u26A0\uFE0F \u5199\u6210\u53EF\u9010\u6761\u9A8C\u6536\u7684\u7F16\u53F7\u5B50\u9879\uFF081. \u2026 2. \u2026 3. \u2026\uFF09\uFF0C\u6BCF\u6761\u662F\u4E00\u4E2A\u53EF\u5224\u5B9A\u7684\u4EA4\u4ED8/\u52A8\u4F5C"+"\uFF08\u6587\u4EF6\u65AD\u8A00\uFF1A\u6587\u4EF6\u5B58\u5728/\u5927\u5C0F/\u5185\u5BB9\uFF1B\u8FDB\u7A0B\u65AD\u8A00\uFF1A\u547D\u4EE4 exit code/stdout\uFF1B"+"\u6D4B\u8BD5\u65AD\u8A00\uFF1Apass/fail \u8BA1\u6570\uFF1B\u72B6\u6001\u65AD\u8A00\uFF1A\u7248\u672C\u53F7/HTTP 200/\u72B6\u6001\u5B57\u6BB5\uFF09\u3002"+"\u907F\u514D\u4E00\u53E5\u8BDD\u6A21\u7CCA\u76EE\u6807\uFF08\u5982\u300C\u505A\u597D X\u300D\u300C\u5B8C\u6210\u8C03\u7814\u300D\uFF09\u2014\u2014"+"\u4EFB\u52A1\u5B8C\u6210\u65F6 completion hook \u4F1A\u6309\u8FD9\u4E9B\u5B50\u9879\u9010\u6761\u5BF9\u7167\u64CD\u4F5C\u8BB0\u5F55\u9A8C\u6536\u3002"),due_date:K.string().optional().describe("Due date (ISO format)"),tags:K.array(K.string()).optional().describe("Task tags (for search, stored in task.tags JSON field)"),project_path:K.string().default("unknown").describe("Project root path for task positioning. Used to locate the project space for this task. Use 'unknown' if unknown. (Defaults to 'unknown'.)"),parent_task_id:K.union([K.number(),K.null()]).optional().describe(`\u7236\u4EFB\u52A1 ID\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u6216\u4F20 null \u65F6\uFF0C\u521B\u5EFA\u6839\u4EFB\u52A1\uFF08root task\uFF09\u3002
2624
+ - **similar_task_ids**: Similar task IDs (max 3) to reference for improving sub-agent execution efficiency. Search for similar tasks using \`task_search\` or \`task_list\` before calling this tool.`,parameters:O3,execute:async(q,W)=>{let z=Date.now(),H=O3.parse(q),{description:B,prompt:U,subagent_type:V="general",timeout:O,reason:F,similar_task_ids:D}=H,M=W.session_id||"default",R=H.triggerEventId??DF();if(R&&R!==H.triggerEventId)y.info(`[delegate_task] triggerEventId auto-derived from EnvContext: ${R}`);if(y.info(`[delegate_task] Called: description=${B}, subagent_type=${V}, triggerEventId=${R??"(none)"}`),R){let f=n7();if(f)try{if(!await f.getEventById(R))return{success:!1,output:"",error:`Unknown triggerEventId: ${R} (not found in EventStore)`,metadata:{execution_time_ms:Date.now()-z}}}catch(A){return{success:!1,output:"",error:`Failed to verify triggerEventId ${R}: ${A instanceof Error?A.message:String(A)}`,metadata:{execution_time_ms:Date.now()-z}}}else y.warn(`[delegate_task] triggerEventId=${R} supplied but no shared EventStore registered; skipping verification`)}let L=K3($);if(!rD(V,L))return{success:!1,output:"",error:`Unknown subagent type: ${V}`,metadata:{execution_time_ms:Date.now()-z}};let N=$.getTagService(),Z=U,b={prompt:Z,subagentType:V,timeout:O,reason:F,tagService:N},w={component:{name:"task",version:"1.0.0"},data:b,metadata:{sessionId:M},phase:"before",hookPoint:X0.DELEGATE_BEFORE};return await S0.execute(X0.DELEGATE_BEFORE,b,{sessionId:M}),Z=b.prompt,await OF(X,M,B,Z,b.subagentType,b.timeout,D,H.sub_session_id,R,W.model,W.fallbackModel,W.fallbackModels)}};return G.execute=B0(G.execute,"delegate.execute",{recordParams:!0,recordResult:!1,recordError:!0}),G}function VF(){let $=W2();if(!$)return;let J=$.envEvent,Q=J?.metadata?.triggerEventId;if(typeof Q==="string"&&Q.length>0)return Q;let X=J?.payload?.triggerEventId;if(typeof X==="string"&&X.length>0)return X;return}var DF=B0(VF,"delegate.deriveTriggerEventId",{recordParams:!1,recordResult:!0,recordError:!0});function FF(){let $=W2()?.replyChannel;if(!$)return;if(!$.chatId&&!$.messageId)return;let J={...$.params??{}};if($.userId&&J.userId===void 0)J.userId=$.userId;return{type:$.type,appId:$.appId,chatId:$.chatId,messageId:$.messageId,profile:$.profile,params:Object.keys(J).length>0?J:void 0}}var MF=B0(FF,"delegate.captureReplyChannel",{recordParams:!1,recordResult:!0,recordError:!0});async function OF($,J,Q,X,Y,G,q,W,z,H,B,U){let V=Date.now();try{let O=Y,F=X,D,M=$.resolveEntryAgent(Y);if(M)D=Y,O=M,F=HF({workflowName:D,originalPrompt:X,description:Q}),y.info(`[delegate_task] Routing workflow subagent '${Y}' \u2192 entry-agent '${M}'`);let{taskId:R,subSessionId:L}=await $.createTask({parentSessionId:J,description:Q,prompt:F,subagentType:O,timeout:G,similarTaskIds:q,originalWorkflowName:D,existingSubSessionId:W,triggerEventId:z,model:H,fallbackModel:B,fallbackModels:U});return{success:!0,output:["\u2705 Background task accepted","",`\uD83D\uDCCB Process ID: ${R}`,`\uD83D\uDCDD Description: ${Q}`,`\uD83E\uDD16 Sub-agent: ${O}${D?` (workflow: ${D})`:""}`,`\u23F1\uFE0F Timeout: ${(G||L9)/1000}s`,"",`Use stop_task with task_id="${R}" to cancel this task.`].join(`
2625
+ `),metadata:{execution_time_ms:Date.now()-V,sessionId:L,background:!0,status:"accepted",bgProcessId:R}}}catch(O){return{success:!1,output:"",error:O instanceof Error?O.message:String(O),metadata:{execution_time_ms:Date.now()-V}}}}var b$={CREATED:"task.created",UPDATED:"task.updated",COMPLETED:"task.completed",DELETED:"task.deleted",OPERATION_ADDED:"task.operation_added",DELEGATED:"task.delegated"};V0();var KF=20;var RF=["expected_decision","expected_root","expected_","case_id","category","suggested_","recommended_","best_match","answer","answer_key","label","should_","target","gold","ground_truth","hint","solution","duplicate_of","similar_task_ids","candidate_order","verdict","decision"];function LF($){if(!$)return[];let J;try{J=JSON.parse($)}catch{return[]}if(!J||typeof J!=="object"||Array.isArray(J))return[];let Q=J.similar_task_ids;if(!Array.isArray(Q))return[];let X=[],Y=new Set;for(let G of Q){if(typeof G!=="number")continue;if(!Number.isInteger(G)||G<=0)continue;if(Y.has(G))continue;if(Y.add(G),X.push(G),X.length>=KF)break}return X}function jF($){switch($){case"completed":case"cancelled":case"paused":case"archived":return"reopen";case"todo":case"active":default:return"enhance"}}function L3($){return $==="paused"?"active":"todo"}var f8="__NEW_TASK_ID__",I8="#__NEW_TASK_ID__";function NF($){switch($.scenario){case"reuse":return _F($);case"reopen":return AF($);case"reopen_enhance":return ZF($);case"remount":return wF($);case"soft_reuse":return PF($)}}function C8($){return $.newTaskId>0?String($.newTaskId):f8}function j0($){return $.newTaskId>0?`#${$.newTaskId}`:I8}function N9($){let J=$.targetTask;if(!J)return"";return`#${$.targetTaskId} [${J.type}] ${J.title}
2626
+ \u72B6\u6001\uFF1A${J.status}`}function _F($){let J=$.includeGoals?", goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>":"";return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u4E0E\u5DF2\u6709\u4EFB\u52A1\u9AD8\u5EA6\u76F8\u4F3C\uFF0C\u5EFA\u8BAE\u590D\u7528\u800C\u975E\u65B0\u5EFA\u3002","",N9($),"\u72B6\u6001\uFF1A"+($.targetTask?.status??"")+" \uFF5C \u5EFA\u8BAE\u52A8\u4F5C\uFF1Aenhance\uFF08\u8865\u5145\u76EE\u6807/\u63CF\u8FF0\uFF09","",`\u5982\u9700\u5408\u5E76\u5230 #${$.targetTaskId}\uFF0C\u53EF\u6267\u884C\uFF1A`,` task_update(task_id=${$.targetTaskId}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>${J})`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${j0($)}\u3002\u82E5\u786E\u8BA4\u5E94\u590D\u7528 #${$.targetTaskId}\uFF0C\u8BF7\u8C03\u7528\u4E0A\u8FF0 task_update \u5E76\u6309\u9700\u5F52\u6863 ${j0($)}\u3002`,"","\u6838\u5B9E\u8981\u70B9\uFF1A\u672C\u6B21\u8BF7\u6C42\u662F\u5426\u5C31\u662F #"+$.targetTaskId+" \u7684\u300C\u540C\u4E00\u4EF6\u4E8B\u300D\uFF0C\u800C\u4E0D\u662F\u540C\u4E3B\u9898\u4E0B\u65B0\u7684\u4E00\u6B65\uFF1F"," - \u82E5\u53EA\u662F\u540C\u4E3B\u9898\u7684\u65B0\u4E00\u6B65\uFF08\u9700\u8981\u72EC\u7ACB\u8DDF\u8E2A\u7684\u65B0\u5B50\u4EFB\u52A1\uFF09\uFF0C\u5EFA\u5B50\u4EFB\u52A1\u4E0D\u7B97\u4E0D\u91C7\u7EB3\uFF0C\u4F46\u9700\u5728\u56DE\u590D\u4E2D\u8BF4\u660E\u4E3A\u4F55\u4E0D\u76F4\u63A5\u5408\u5E76\u3002"," - \u82E5\u786E\u5B9E\u662F\u540C\u4E00\u4EF6\u4E8B\uFF0C\u5E94\u91C7\u7EB3 (a) \u6267\u884C\u590D\u7528\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, ...) \u6267\u884C\u590D\u7528\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${j0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2627
+ `)}function AF($){let J=$.targetTask?.status??"completed",Q=L3(J),X=$.includeGoals?", goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>":"";return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u8BF7\u6C42\u4E0E\u5DF2\u6709\u4EFB\u52A1\u5B9E\u8D28\u76F8\u540C\uFF0C\u5EFA\u8BAE\u91CD\u5F00\u8BE5\u4EFB\u52A1\u800C\u4E0D\u662F\u65B0\u5EFA\u3002","",N9($),`\u72B6\u6001\uFF1A${J} \uFF5C \u5EFA\u8BAE\u52A8\u4F5C\uFF1Areopen\uFF08\u6062\u590D\u4E3A ${Q}\uFF09`,"","\u5982\u9700\u91CD\u5F00\u5E76\u627F\u63A5\u672C\u6B21\u8BF7\u6C42\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${$.targetTaskId}, status=${Q}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>${X})`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${j0($)}\u3002\u82E5\u786E\u8BA4\u5E94\u590D\u7528 #${$.targetTaskId}\uFF0C\u8BF7\u8C03\u7528\u4E0A\u8FF0 task_update \u5E76\u6309\u9700\u5F52\u6863 ${j0($)}\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A#${$.targetTaskId} \u662F\u5426\u771F\u7684\u5DF2\u5B8C\u7ED3\uFF08completed / cancelled\uFF09\uFF0C\u4F46\u5176\u8BED\u4E49\u4E0E\u672C\u6B21\u8BF7\u6C42\u4ECD\u7136\u76F8\u540C\uFF1F`," - \u82E5\u5DF2\u5B8C\u7ED3\u4F46\u8BED\u4E49\u4ECD\u76F8\u540C\uFF08\u672C\u6B21\u8BF7\u6C42\u662F\u8BE5\u4EFB\u52A1\u7684\u5EF6\u7EED\uFF09\u2192 \u5E94\u91C7\u7EB3 (a) \u91CD\u5F00\u3002"," - \u82E5\u76EE\u6807\u5DF2\u5B8C\u7ED3\u4E14\u8BED\u4E49\u4E0D\u540C\uFF08\u53EA\u662F\u4E3B\u9898\u76F8\u8FD1\uFF09\u2192 \u5E94\u91C7\u7EB3 (b) \u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, status=${Q}, ...) \u6267\u884C\u91CD\u5F00\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${j0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2628
+ `)}function ZF($){let J=$.targetTask?.status??"completed",Q=L3(J);return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u8BF7\u6C42\u4E0E\u5DF2\u6709\u4EFB\u52A1\u5B9E\u8D28\u76F8\u540C\uFF0C\u4E14\u672C\u6B21\u65B0\u589E\u4E86\u76EE\u6807\uFF0C\u5EFA\u8BAE\u91CD\u5F00\u5E76\u589E\u5F3A\u8BE5\u4EFB\u52A1\u3002","",N9($),`\u72B6\u6001\uFF1A${J} \uFF5C \u5EFA\u8BAE\u52A8\u4F5C\uFF1Areopen + enhance\uFF08\u6062\u590D\u4E3A ${Q} \u5E76\u8FFD\u52A0\u76EE\u6807\uFF09`,"","\u5982\u9700\u91CD\u5F00\u5E76\u627F\u63A5\u672C\u6B21\u8BF7\u6C42\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${$.targetTaskId}, status=${Q}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>, goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>)`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${j0($)}\u3002\u82E5\u786E\u8BA4\u5E94\u590D\u7528 #${$.targetTaskId}\uFF0C\u8BF7\u8C03\u7528\u4E0A\u8FF0 task_update \u5E76\u6309\u9700\u5F52\u6863 ${j0($)}\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A\u2460 #${$.targetTaskId} \u662F\u5426\u771F\u7684\u5DF2\u5B8C\u7ED3\uFF08completed / cancelled\uFF09\u4F46\u8BED\u4E49\u4ECD\u4E0E\u672C\u6B21\u8BF7\u6C42\u76F8\u540C\uFF1B\u2461 \u672C\u6B21\u65B0\u589E\u7684\u76EE\u6807\u662F\u5426\u786E\u5B9E\u5C5E\u4E8E\u8BE5\u4EFB\u52A1\u7684\u8303\u56F4\u5185\uFF1F`," - \u4E24\u70B9\u90FD\u6210\u7ACB \u2192 \u5E94\u91C7\u7EB3 (a) \u91CD\u5F00\u5E76\u589E\u5F3A\u3002"," - \u65B0\u589E\u76EE\u6807\u8D85\u51FA\u539F\u4EFB\u52A1\u8303\u56F4\uFF08\u662F\u72EC\u7ACB\u7684\u65B0\u5DE5\u4F5C\uFF09\u2192 \u5E94\u91C7\u7EB3 (b) \u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, status=${Q}, ..., goals_and_expected_deliverables=...) \u6267\u884C\u91CD\u5F00\u5E76\u589E\u5F3A\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${j0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2629
+ `)}function wF($){return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u4EFB\u52A1\u7684\u6302\u8F7D\u4F4D\u7F6E\u53EF\u80FD\u4E0D\u5408\u7406\u3002","",`\u5F53\u524D\u6302\u8F7D\uFF1Aparent #${$.currentParentId} \u2192 root \u7956\u5148 #${$.currentRootAncestorId}`,`\u5EFA\u8BAE\u5F52\u5C5E\uFF1Aroot #${$.recommendedRootId} ${$.recommendedRootTitle??""}`.trimEnd(),"","\u5982\u9700\u6539\u6302\u5230\u5EFA\u8BAE\u7684 root \u4E0B\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${C8($)}, parent_task_id=${$.recommendedRootId})`,"",`\u8BF4\u660E\uFF1A\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${j0($)}\uFF0Cparent \u672A\u88AB\u81EA\u52A8\u4FEE\u6539\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A\u5F53\u524D parent #${$.currentParentId} \u7684 root \u7956\u5148 #${$.currentRootAncestorId} \u4E0E\u5EFA\u8BAE\u7684 root #${$.recommendedRootId}\uFF0C\u54EA\u4E00\u6761\u624D\u662F\u672C\u6B21\u4EFB\u52A1\u7684\u6B63\u786E\u5F52\u5C5E\u7EBF\uFF1F\uFF08\u53EF\u53C2\u8003\u5144\u5F1F\u4EFB\u52A1\u7684\u4E3B\u9898\u5206\u5E03\uFF09`," - \u5EFA\u8BAE\u7684 root \u66F4\u8D34\u5408\u672C\u6B21\u4EFB\u52A1\u4E3B\u9898 \u2192 \u5E94\u91C7\u7EB3 (a) \u6267\u884C\u6539\u6302\u3002"," - \u5F53\u524D\u5F52\u5C5E\u7EBF\u5DF2\u6B63\u786E \u2192 \u5E94\u91C7\u7EB3 (b) \u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${C8($)}) \u786E\u8BA4\u672C\u6B21\u65B0\u5EFA\u4EFB\u52A1\u7684\u5B9E\u9645 parent\uFF0C\u5E76\u7528 task_get(${$.recommendedRootId})\uFF08\u5FC5\u8981\u65F6 task_tree\uFF09\u786E\u8BA4\u5F52\u5C5E\u7EBF\u662F\u5426\u771F\u7684\u4E0D\u5BF9\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u6302\u8F7D\u4E0D\u5408\u7406 \u2192 \u6267\u884C\u6539\u6302 task_update(task_id=${C8($)}, parent_task_id=${$.recommendedRootId})\uFF1B`,"(b) \u786E\u8BA4\u5F53\u524D\u6302\u8F7D\u5408\u7406 \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2630
+ `)}function PF($){let J=$.includeGoals?", goals_and_expected_deliverables=<\u8FFD\u52A0\u672C\u6B21\u76EE\u6807>":"";return["[TASK_CREATE_HINT] \u68C0\u6D4B\u5230\u672C\u6B21\u8BF7\u6C42\u53EF\u80FD\u4E0E\u5DF2\u6709\u4EFB\u52A1\u6709\u5173\u8054\uFF08\u7F6E\u4FE1\u5EA6\u504F\u4F4E\uFF0C\u4EC5\u4F9B\u53C2\u8003\uFF09\u3002","",N9($),"","\u82E5\u786E\u8BA4\u662F\u540C\u4E00\u4EF6\u4E8B\uFF0C\u53EF\u6267\u884C\uFF1A",` task_update(task_id=${$.targetTaskId}, description=<\u8FFD\u52A0\u672C\u6B21\u8BF7\u6C42\u7684\u63CF\u8FF0>${J})`,"",`\u8BF4\u660E\uFF1A\u672C\u63D0\u793A\u57FA\u4E8E\u8F83\u4F4E\u7F6E\u4FE1\u5EA6\uFF0C\u53EF\u80FD\u8BEF\u5224\u3002\u672C\u6B21\u5DF2\u521B\u5EFA\u65B0\u4EFB\u52A1 ${j0($)}\u3002`,"",`\u6838\u5B9E\u8981\u70B9\uFF1A#${$.targetTaskId} \u4E0E\u672C\u6B21\u8BF7\u6C42\u662F\u5426\u786E\u4E3A\u540C\u4E00\u4EF6\u4E8B\uFF1F\uFF08\u672C\u63D0\u793A\u7F6E\u4FE1\u5EA6\u4F4E\uFF0C\u6838\u5B9E\u6743\u91CD\u76F8\u5E94\u964D\u4F4E\uFF0C\u4F46\u4E0D\u5F97\u8DF3\u8FC7\u8868\u6001\uFF09`,"",`\u26A0\uFE0F \u4F60\u5FC5\u987B\u6838\u5B9E\u672C\u63D0\u793A\uFF1A\u5148\u7528 task_get(${$.targetTaskId}) \u786E\u8BA4\u76EE\u6807\u4EFB\u52A1\u7684\u5F53\u524D\u72B6\u6001\u4E0E\u5185\u5BB9\u662F\u5426\u4E0E\u672C\u6B21\u8BF7\u6C42\u5B9E\u8D28\u76F8\u540C\u3002`,"\u6838\u5B9E\u540E\u4E8C\u9009\u4E00\u6267\u884C\uFF1A",`(a) \u786E\u8BA4\u5B9E\u8D28\u76F8\u540C \u2192 \u6309\u4E0A\u9762\u7684 task_update(task_id=${$.targetTaskId}, ...) \u6267\u884C\u590D\u7528\uFF0C\u5E76\u5F52\u6863\u672C\u6B21\u65B0\u5EFA\u7684\u4EFB\u52A1 ${j0($)}\uFF1B`,"(b) \u786E\u8BA4\u4E0D\u76F8\u4F3C \u2192 \u5728\u672C\u6B21\u56DE\u590D\u4E2D\u660E\u786E\u8BF4\u660E\u4E0D\u91C7\u7EB3\u7684\u7406\u7531\u3002","\u4E0D\u5141\u8BB8\u65E0\u89C6\u672C\u63D0\u793A\u3002"].join(`
2631
+ `)}function bF($){let J=$.toLowerCase();return RF.some((Q)=>Q.endsWith("_")||Q.endsWith("*")?J.startsWith(Q.slice(0,-1)):J===Q)}function EF($,J){let Q=(X,Y)=>{if(Array.isArray(X)){X.forEach((G,q)=>Q(G,`${Y}[${q}]`));return}if(!X||typeof X!=="object")return;for(let[G,q]of Object.entries(X)){let W=Y?`${Y}.${G}`:G;if(bF(G))throw Error(`[assertNoLeakage] leakage key detected at ${W}: "${G}"`);Q(q,W)}};Q($,"state"),Q(J,"questions")}function SF($,J){let Q;try{Q=JSON.parse($.context)}catch{return!1}if(!Q||typeof Q!=="object"||Array.isArray(Q))return!1;return Q.decision_hint=J,$.context=JSON.stringify(Q),!0}var bL=B0(LF,"task.decision.parseSimilarTaskIds",{recordParams:!0,recordResult:!0,log:!1,paramFilter:($)=>{let J=$[0],Q=typeof J==="string"?J:"";return{contextLen:Q.length,contextPreview:Q.length>80?Q.slice(0,80)+"\u2026":Q}},resultFilter:($)=>({count:$.length,ids:$.join(",")})}),EL=B0(jF,"task.decision.deriveActionFromStatus",{recordParams:!0,recordResult:!0,log:!1}),SL=B0(NF,"task.decision.buildHintText",{recordParams:!0,recordResult:!0,log:!1,paramFilter:($)=>{let J=$[0]??{};return{scenario:J.scenario,newTaskId:J.newTaskId,targetTaskId:J.targetTaskId??null,recommendedRootId:J.recommendedRootId??null,currentParentId:J.currentParentId??null,confidence:J.confidence??null}},resultFilter:($)=>({hintLen:$.length,hintPreview:$.slice(0,240),hasTaskUpdate:/task_update\s*\(/.test($),hasTaskId:/"task_id"\s*:/.test($),hasParentTaskId:/"parent_task_id"\s*:/.test($)})}),CL=B0(EF,"task.decision.assertNoLeakage",{recordParams:!0,recordResult:!1,log:!1,paramFilter:($)=>({stateKeys:j9($[0]),questionKeys:j9($[1])})}),fL=B0(SF,"task.decision.writeDecisionHint",{recordParams:!0,recordResult:!0,log:!1,paramFilter:($)=>{let J=$[0]??{},Q=typeof $[1]==="string"?$[1]:"";return{contextLen:typeof J.context==="string"?J.context.length:0,hintLen:Q.length,hintScenario:/task_update\s*\(/.test(Q)?"actionable":"plain"}},resultFilter:($)=>({written:$}),errorIf:($)=>$===!1?Error("writeDecisionHint returned false (context not a JSON object)"):void 0});function j9($,J=[],Q=0){if(J.length>=40||Q>4)return J;if(Array.isArray($)){for(let X of $.slice(0,3))j9(X,J,Q+1);return J}if(!$||typeof $!=="object")return J;for(let X of Object.keys($)){if(J.length>=40)break;if(!J.includes(X))J.push(X);j9($[X],J,Q+1)}return J}import{execSync as TF}from"child_process";var j3="unknown",CF='{"type":"unknown"}';function fF(){return{task_id:K.number().describe("Task ID")}}function IF($){if(typeof $!=="object"||$===null||Array.isArray($))return $;let J=$;if(J.task_id===void 0&&J.id!==void 0)return{...J,task_id:J.id};return J}function a2($){return K.preprocess(IF,K.object({...fF(),...$}))}var N3=K.object({title:K.string().describe("Task title"),description:K.string().optional().describe("Task description"),priority:K.enum(["low","medium","high"]).optional().describe("Task priority"),type:K.enum(["normal","cycle","longterm"]).optional().default("normal").describe("Task type. normal: \u5E38\u89C4\u4EFB\u52A1\uFF0C\u9700\u8981\u8DDF\u8E2A\u5B8C\u6210. cycle: \u5468\u671F\u4EFB\u52A1\uFF08\u5982\u6BCF\u5468\u53D1\u5468\u62A5\uFF09\uFF0C\u65E0\u9700 complete\uFF0C\u5B9A\u671F\u6267\u884C. longterm: \u957F\u671F\u4EFB\u52A1/\u613F\u666F\u76EE\u6807\uFF08\u5982\u63D0\u5347\u516C\u53F8\u5F71\u54CD\u529B\uFF09\uFF0C\u96BE\u4EE5\u4E00\u6B21\u6027\u5B8C\u6210\uFF0C\u6301\u7EED\u8DDF\u8FDB"),goals_and_expected_deliverables:K.string().optional().describe("Goals and expected deliverables. "+"\u26A0\uFE0F \u5199\u6210\u53EF\u9010\u6761\u9A8C\u6536\u7684\u7F16\u53F7\u5B50\u9879\uFF081. \u2026 2. \u2026 3. \u2026\uFF09\uFF0C\u6BCF\u6761\u662F\u4E00\u4E2A\u53EF\u5224\u5B9A\u7684\u4EA4\u4ED8/\u52A8\u4F5C"+"\uFF08\u6587\u4EF6\u65AD\u8A00\uFF1A\u6587\u4EF6\u5B58\u5728/\u5927\u5C0F/\u5185\u5BB9\uFF1B\u8FDB\u7A0B\u65AD\u8A00\uFF1A\u547D\u4EE4 exit code/stdout\uFF1B"+"\u6D4B\u8BD5\u65AD\u8A00\uFF1Apass/fail \u8BA1\u6570\uFF1B\u72B6\u6001\u65AD\u8A00\uFF1A\u7248\u672C\u53F7/HTTP 200/\u72B6\u6001\u5B57\u6BB5\uFF09\u3002"+"\u907F\u514D\u4E00\u53E5\u8BDD\u6A21\u7CCA\u76EE\u6807\uFF08\u5982\u300C\u505A\u597D X\u300D\u300C\u5B8C\u6210\u8C03\u7814\u300D\uFF09\u2014\u2014"+"\u4EFB\u52A1\u5B8C\u6210\u65F6 completion hook \u4F1A\u6309\u8FD9\u4E9B\u5B50\u9879\u9010\u6761\u5BF9\u7167\u64CD\u4F5C\u8BB0\u5F55\u9A8C\u6536\u3002"),due_date:K.string().optional().describe("Due date (ISO format)"),tags:K.array(K.string()).optional().describe("Task tags (for search, stored in task.tags JSON field)"),project_path:K.string().default("unknown").describe("Project root path for task positioning. Used to locate the project space for this task. Use 'unknown' if unknown. (Defaults to 'unknown'.)"),parent_task_id:K.union([K.number(),K.null()]).optional().describe(`\u7236\u4EFB\u52A1 ID\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u6216\u4F20 null \u65F6\uFF0C\u521B\u5EFA\u6839\u4EFB\u52A1\uFF08root task\uFF09\u3002
2393
2632
  `+`\u5982\u9700\u5C06\u4EFB\u52A1\u6302\u8F7D\u5230\u67D0\u4E2A\u7236\u4EFB\u52A1\u4E0B\uFF0C\u4F20\u5165\u5BF9\u5E94\u7236\u4EFB\u52A1 ID\u3002
2394
2633
  `+`**\u8C03\u7528\u524D\u5FC5\u987B\u5148\u8C03\u7528 task_tree(depth=2)** \u67E5\u770B\u73B0\u6709\u4EFB\u52A1\u6811\u7ED3\u6784\uFF0C\u907F\u514D\u91CD\u590D\u521B\u5EFA\u6839\u4EFB\u52A1\u3001\u907F\u514D\u5B64\u513F\u4EFB\u52A1\u3002
2395
2634
  `+`\u51B3\u7B56\u8DEF\u5F84\uFF08\u6309\u987A\u5E8F\u5339\u914D\uFF09\uFF1A
@@ -2397,9 +2636,9 @@ No need to poll \u2014 just wait for the notification and use \`task_get\` with
2397
2636
  `+` B. \u5F52\u5C5E\u5230\u73B0\u6709\u4E3B\u9898\u805A\u7C7B\uFF08\u975E longterm \u6839\uFF0C\u4F46\u540C\u4E3B\u9898\uFF09\u2192 parent_task_id = \u8BE5\u6839 ID
2398
2637
  `+` C. \u65B0\u5EFA\u6839\u4EFB\u52A1 \u2192 \u7701\u7565 parent_task_id\uFF08\u8BA9\u6811\u6839 \u226410\uFF09
2399
2638
  `+`\u5982\u4F55\u627E\u5230 parent_task_id\uFF1A\u4F7F\u7528 task_tree(depth=2) \u83B7\u53D6\u7684\u6811\u5F62\u7ED3\u6784\uFF0C
2400
- `+"\u6839\u636E\u8282\u70B9 id \u9009\u62E9\u5408\u9002\u7684\u7236\u4EFB\u52A1 ID\uFF08\u6765\u81EA tree \u8F93\u51FA\uFF0C**\u4E0D\u8981\u786C\u7F16\u7801**\u6570\u5B57\uFF09\u3002"),context:K.string().default('{"type":"unknown"}').describe(`JSON string with time-space positioning information for task continuity. This field is crucial for Agent task handoff. Core fields: worktree_path (git worktree path), branch (current branch), type (feature/bug/refactor/chore). Example for coding: {"worktree_path": "/path/worktree", "branch": "feature/xyz", "type": "feature"}. Example for other: {"type": "general"}. If unknown, use '{}' or '{"type":"unknown"}'. IMPORTANT: Must be a valid JSON string! `+"**Task #4467 \u2014 similar_task_ids (REQUIRED)**: array of existing task ids that "+"cover the same ground as this request, used by the task:before.create decision check to suggest reusing/reopening instead of creating a duplicate. Search first (task_search / task_get), then pass the ids. "+"It may be an empty array [] if you searched and found nothing related \u2014 "+'but the field itself must be present. Example: {"type":"feature", "similar_task_ids": [4433, 4445]}')}),K3=L9({include_operations:K.boolean().optional().default(!0).describe("Include operation records (milestones / process log) with the task. "+"Defaults to true \u2014 the task's operation history is part of its detail. "+"Pass false for a lean task-only response.")}),R3=K.object({status:K.enum(["todo","active","completed","paused","cancelled","archived"]).optional(),priority:K.enum(["low","medium","high"]).optional(),type:K.enum(["normal","cycle","longterm"]).optional().describe("Filter by task type"),limit:K.number().optional().default(20),offset:K.number().optional().default(0),depth:K.number().optional().describe("\u68C0\u7D22\u5C42\u7EA7\u6DF1\u5EA6\uFF1A0=\u53EA\u6839\u4EFB\u52A1\uFF08\u65E0\u7236\u4EFB\u52A1\uFF09\uFF0C1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1\uFF0C2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1\uFF0C-1 \u6216\u5FFD\u7565=\u5168\u90E8"),include_archived:K.boolean().optional().default(!1).describe("\u662F\u5426\u5305\u542B\u5DF2\u5F52\u6863\u4EFB\u52A1\uFF08status=archived \u7684\u4EFB\u52A1\u9ED8\u8BA4\u88AB\u6392\u9664\uFF09")}),L3=K.object({keywords:K.array(K.string()).describe("\u5173\u952E\u8BCD\u5217\u8868\uFF08AND \u903B\u8F91\uFF0C\u5339\u914D title/description/goals/tags/operations\uFF09"),limit:K.number().optional().default(20).describe("\u8FD4\u56DE\u6570\u91CF"),offset:K.number().optional().default(0).describe("\u504F\u79FB\u91CF"),status:K.enum(["todo","active","completed","paused","cancelled","archived"]).optional().describe("\u6309\u72B6\u6001\u7B5B\u9009"),priority:K.enum(["low","medium","high"]).optional().describe("\u6309\u4F18\u5148\u7EA7\u7B5B\u9009"),type:K.enum(["normal","cycle","longterm"]).optional().describe("\u6309\u7C7B\u578B\u7B5B\u9009"),exclude_task_id:K.number().optional().describe("\u6392\u9664\u7684 task ID"),depth:K.number().optional().describe("\u68C0\u7D22\u5C42\u7EA7\u6DF1\u5EA6\uFF1A0=\u53EA\u6839\u4EFB\u52A1\uFF0C1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1\uFF0C2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1\uFF0C-1 \u6216\u5FFD\u7565=\u5168\u90E8"),include_archived:K.boolean().optional().default(!1).describe("\u662F\u5426\u5305\u542B\u5DF2\u5F52\u6863\u4EFB\u52A1\uFF08status=archived \u7684\u4EFB\u52A1\u9ED8\u8BA4\u88AB\u6392\u9664\uFF09")}),A3=L9({title:K.string().optional(),description:K.string().optional(),status:K.enum(["todo","active","completed","paused","cancelled","archived"]).optional(),priority:K.enum(["low","medium","high"]).optional(),type:K.enum(["normal","cycle","longterm"]).optional().describe("Task type"),progress:K.number().min(0).max(100).optional(),current_status:K.string().optional(),goals_and_expected_deliverables:K.string().optional().describe("Goals and expected deliverables. "+"\u26A0\uFE0F \u8FFD\u52A0/\u4FEE\u6539\u65F6\u540C\u6837\u5199\u6210\u53EF\u9010\u6761\u9A8C\u6536\u7684\u7F16\u53F7\u5B50\u9879\uFF081. \u2026 2. \u2026 3. \u2026\uFF09\uFF0C"+"\u6BCF\u6761\u662F\u4E00\u4E2A\u53EF\u5224\u5B9A\u7684\u4EA4\u4ED8/\u52A8\u4F5C\uFF08\u6587\u4EF6\u65AD\u8A00\uFF1A\u6587\u4EF6\u5B58\u5728/\u5927\u5C0F/\u5185\u5BB9\uFF1B"+"\u8FDB\u7A0B\u65AD\u8A00\uFF1A\u547D\u4EE4 exit code/stdout\uFF1B\u6D4B\u8BD5\u65AD\u8A00\uFF1Apass/fail \u8BA1\u6570\uFF1B"+"\u72B6\u6001\u65AD\u8A00\uFF1A\u7248\u672C\u53F7/HTTP 200/\u72B6\u6001\u5B57\u6BB5\uFF09\u3002"+"\u907F\u514D\u4E00\u53E5\u8BDD\u6A21\u7CCA\u76EE\u6807\uFF08\u5982\u300C\u505A\u597D X\u300D\u300C\u5B8C\u6210\u8C03\u7814\u300D\uFF09\u2014\u2014"+"\u4EFB\u52A1\u5B8C\u6210\u65F6 completion hook \u4F1A\u6309\u8FD9\u4E9B\u5B50\u9879\u9010\u6761\u5BF9\u7167\u64CD\u4F5C\u8BB0\u5F55\u9A8C\u6536\u3002"+"\uFF08Task #4833 \u2014 \u4E0E task_create \u7684 goals \u89C4\u5219\u540C\u6E90\uFF09"),due_date:K.string().optional(),tags:K.array(K.string()).optional(),project_path:K.string().optional().describe("Project path, identifies which project this task belongs to"),context:K.string().optional().describe("Task context information for storing additional context"),parent_task_id:K.union([K.number(),K.null()]).optional().describe("Parent task ID (set to null to make it a root task)")}),_3=K.object({task_id:K.number().describe("Task ID")}),j3=L9({deliverable_storage_path:K.string().optional().describe("\u4EA4\u4ED8\u7269\u7684\u5BFB\u5740\u5730\u5740\uFF08\u8DEF\u5F84 / URL / \u5206\u652F\u540D\u7B49\uFF09\u3002"+"\u8C03\u7528\u672C\u5DE5\u5177\u524D\uFF0C\u8BF7\u5148\u8BFB\u53D6\u4EFB\u52A1\u7684 goal\uFF08description\uFF09\u548C delivery\uFF08goals_and_expected_deliverables\uFF09\u680F\u4F4D\uFF0C"+"\u5EFA\u8BAE\u9A8C\u8BC1\u76EE\u6807\u548C\u4EA4\u4ED8\u7269\u662F\u5426\u7B26\u5408\u9884\u671F\uFF0C\u7136\u540E\u5C06\u5B9E\u9645\u4EA4\u4ED8\u7269\u7684\u5BFB\u5740\u5730\u5740\u586B\u5165\u6B64\u53C2\u6570\u3002")}),N3=L9({reason:K.string().optional().describe("\u53D6\u6D88\u539F\u56E0\uFF08\u53EF\u9009\uFF09\u3002\u4F1A\u5199\u5165\u8BE5\u4EFB\u52A1\u7684 operation \u8BB0\u5F55\uFF0C\u4FBF\u4E8E\u4E8B\u540E\u8FFD\u6EAF\u9A8C\u6536\u7ED3\u8BBA\u3002")}),Z3=K.object({task_ids:K.array(K.number()).describe("\u8981\u5F52\u6863\u7684\u4EFB\u52A1 ID \u5217\u8868"),reason:K.string().optional().describe("\u5F52\u6863\u539F\u56E0\uFF08\u53EF\u9009\uFF0C\u4F1A\u5199\u5165\u6BCF\u4E2A\u4EFB\u52A1\u7684 operation \u8BB0\u5F55\uFF09")}),w3=K.object({task_ids:K.array(K.number()).describe("\u8981\u5220\u9664\u7684\u4EFB\u52A1 ID \u5217\u8868")}),b3=K.object({depth:K.number().optional().default(2).describe("\u6811\u7684\u5C55\u5F00\u6DF1\u5EA6\u3002\u9ED8\u8BA4 2 (\u6839 + \u4E00\u5C42\u5B50\u4EFB\u52A1 + \u4E8C\u5C42\u5B59\u4EFB\u52A1)\u3002"+"0 = \u53EA\u8FD4\u56DE\u6839\u4EFB\u52A1\uFF0C\u4E0D\u5C55\u5F00\u4EFB\u4F55\u5B50\u8282\u70B9\u3002"+"-1 \u6216\u8D1F\u6570 = \u65E0\u9650\u5C42\u7EA7\uFF08\u5168\u90E8\u5C55\u5F00\uFF09\u3002"),parent_task_id:K.number().optional().describe("\u53EA\u770B\u6307\u5B9A\u7236\u4EFB\u52A1\u7684\u5B50\u6811\u3002\u4E0D\u4F20\u5219\u4ECE\u6240\u6709\u6839\u4EFB\u52A1\uFF08forest\uFF09\u5F00\u59CB\u3002"),status:K.enum(["todo","active","completed","paused","cancelled","archived"]).optional().describe("\u6309\u72B6\u6001\u8FC7\u6EE4\uFF08\u4E0E task_list \u4E00\u81F4\uFF09\u3002"),priority:K.enum(["low","medium","high"]).optional().describe("\u6309\u4F18\u5148\u7EA7\u8FC7\u6EE4\u3002"),type:K.enum(["normal","cycle","longterm"]).optional().describe("\u6309\u4EFB\u52A1\u7C7B\u578B\u8FC7\u6EE4\u3002"),include_archived:K.boolean().optional().default(!1).describe("\u662F\u5426\u5305\u542B\u5DF2\u5F52\u6863\u4EFB\u52A1\uFF08\u9ED8\u8BA4 false\uFF0C\u4E0E task_list \u4E00\u81F4\uFF09\u3002")});q$();r();r();var PF=i("task-child-context"),SF=["commit","token","secret","password","api_key"];function f8($){if($===null||$===void 0)return $;if(Array.isArray($))return $.map(f8);if(typeof $!=="object")return $;let J={};for(let[Q,X]of Object.entries($)){let W=Q.toLowerCase();if(SF.some((G)=>W.includes(G)))continue;J[Q]=f8(X)}return J}function EF($){let{parent:J,overrides:Q={}}=$,X=Q.contextInherit!==!1,W=Q.inheritTags===!0,G=Q.projectPath??J.projectPath??"unknown",Y={};if(J.contextJson&&J.contextJson.trim().length>0)try{let U=JSON.parse(J.contextJson);if(U&&typeof U==="object"&&!Array.isArray(U))Y=U}catch(U){PF.debug(`[task-child-context] parent #${J.taskId} context is malformed JSON; continuing with empty inherited context (${U instanceof Error?U.message:String(U)})`),Y={}}let q={};if(X){if(Y.worktree_path!==void 0&&Q.worktreePath===void 0)q.worktree_path=Y.worktree_path;if(Y.branch!==void 0&&Q.branch===void 0)q.branch=Y.branch;if(Y.parent_branch!==void 0)q.parent_branch=Y.parent_branch;if(Y.type!==void 0)q.type=Y.type;if(Y.prior_context&&typeof Y.prior_context==="object"){let z=Y.prior_context,V={};for(let[M,F]of Object.entries(z)){if(M.toLowerCase()==="commit")continue;V[M]=F}if(Object.keys(V).length>0)q.prior_context=V}let U=new Set(["worktree_path","branch","parent_branch","type","prior_context","created_at"]);for(let[z,V]of Object.entries(Y)){if(U.has(z))continue;q[z]=V}}if(Q.worktreePath!==void 0)q.worktree_path=Q.worktreePath;if(Q.branch!==void 0)q.branch=Q.branch;let H=Q.createdAt??new Date().toISOString();q.created_at=H,q.child_of=J.taskId;let B=f8(q);return{project_path:G,context:JSON.stringify(B),inheritedTags:W?J.tags??[]:[]}}var P3=i("task:tools:create"),CF=P$.split(`
2639
+ `+"\u6839\u636E\u8282\u70B9 id \u9009\u62E9\u5408\u9002\u7684\u7236\u4EFB\u52A1 ID\uFF08\u6765\u81EA tree \u8F93\u51FA\uFF0C**\u4E0D\u8981\u786C\u7F16\u7801**\u6570\u5B57\uFF09\u3002"),context:K.string().default('{"type":"unknown"}').describe(`JSON string with time-space positioning information for task continuity. This field is crucial for Agent task handoff. Core fields: worktree_path (git worktree path), branch (current branch), type (feature/bug/refactor/chore). Example for coding: {"worktree_path": "/path/worktree", "branch": "feature/xyz", "type": "feature"}. Example for other: {"type": "general"}. If unknown, use '{}' or '{"type":"unknown"}'. IMPORTANT: Must be a valid JSON string! `+"**Task #4467 \u2014 similar_task_ids (REQUIRED)**: array of existing task ids that "+"cover the same ground as this request, used by the task:before.create decision check to suggest reusing/reopening instead of creating a duplicate. Search first (task_search / task_get), then pass the ids. "+"It may be an empty array [] if you searched and found nothing related \u2014 "+'but the field itself must be present. Example: {"type":"feature", "similar_task_ids": [4433, 4445]}')}),_3=a2({include_operations:K.boolean().optional().default(!0).describe("Include operation records (milestones / process log) with the task. "+"Defaults to true \u2014 the task's operation history is part of its detail. "+"Pass false for a lean task-only response.")}),A3=K.object({status:K.enum(["todo","active","to_validate","completed","paused","cancelled","archived"]).optional(),priority:K.enum(["low","medium","high"]).optional(),type:K.enum(["normal","cycle","longterm"]).optional().describe("Filter by task type"),limit:K.number().optional().default(20),offset:K.number().optional().default(0),depth:K.number().optional().describe("\u68C0\u7D22\u5C42\u7EA7\u6DF1\u5EA6\uFF1A0=\u53EA\u6839\u4EFB\u52A1\uFF08\u65E0\u7236\u4EFB\u52A1\uFF09\uFF0C1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1\uFF0C2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1\uFF0C-1 \u6216\u5FFD\u7565=\u5168\u90E8"),include_archived:K.boolean().optional().default(!1).describe("\u662F\u5426\u5305\u542B\u5DF2\u5F52\u6863\u4EFB\u52A1\uFF08status=archived \u7684\u4EFB\u52A1\u9ED8\u8BA4\u88AB\u6392\u9664\uFF09")}),Z3=K.object({keywords:K.array(K.string()).describe("\u5173\u952E\u8BCD\u5217\u8868\uFF08AND \u903B\u8F91\uFF0C\u5339\u914D title/description/goals/tags/operations\uFF09"),limit:K.number().optional().default(20).describe("\u8FD4\u56DE\u6570\u91CF"),offset:K.number().optional().default(0).describe("\u504F\u79FB\u91CF"),status:K.enum(["todo","active","to_validate","completed","paused","cancelled","archived"]).optional().describe("\u6309\u72B6\u6001\u7B5B\u9009"),priority:K.enum(["low","medium","high"]).optional().describe("\u6309\u4F18\u5148\u7EA7\u7B5B\u9009"),type:K.enum(["normal","cycle","longterm"]).optional().describe("\u6309\u7C7B\u578B\u7B5B\u9009"),exclude_task_id:K.number().optional().describe("\u6392\u9664\u7684 task ID"),depth:K.number().optional().describe("\u68C0\u7D22\u5C42\u7EA7\u6DF1\u5EA6\uFF1A0=\u53EA\u6839\u4EFB\u52A1\uFF0C1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1\uFF0C2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1\uFF0C-1 \u6216\u5FFD\u7565=\u5168\u90E8"),include_archived:K.boolean().optional().default(!1).describe("\u662F\u5426\u5305\u542B\u5DF2\u5F52\u6863\u4EFB\u52A1\uFF08status=archived \u7684\u4EFB\u52A1\u9ED8\u8BA4\u88AB\u6392\u9664\uFF09")}),w3=a2({title:K.string().optional(),description:K.string().optional(),status:K.enum(["todo","active","to_validate","completed","paused","cancelled","archived"]).optional(),priority:K.enum(["low","medium","high"]).optional(),type:K.enum(["normal","cycle","longterm"]).optional().describe("Task type"),progress:K.number().min(0).max(100).optional(),current_status:K.string().optional(),goals_and_expected_deliverables:K.string().optional().describe("Goals and expected deliverables. "+"\u26A0\uFE0F \u8FFD\u52A0/\u4FEE\u6539\u65F6\u540C\u6837\u5199\u6210\u53EF\u9010\u6761\u9A8C\u6536\u7684\u7F16\u53F7\u5B50\u9879\uFF081. \u2026 2. \u2026 3. \u2026\uFF09\uFF0C"+"\u6BCF\u6761\u662F\u4E00\u4E2A\u53EF\u5224\u5B9A\u7684\u4EA4\u4ED8/\u52A8\u4F5C\uFF08\u6587\u4EF6\u65AD\u8A00\uFF1A\u6587\u4EF6\u5B58\u5728/\u5927\u5C0F/\u5185\u5BB9\uFF1B"+"\u8FDB\u7A0B\u65AD\u8A00\uFF1A\u547D\u4EE4 exit code/stdout\uFF1B\u6D4B\u8BD5\u65AD\u8A00\uFF1Apass/fail \u8BA1\u6570\uFF1B"+"\u72B6\u6001\u65AD\u8A00\uFF1A\u7248\u672C\u53F7/HTTP 200/\u72B6\u6001\u5B57\u6BB5\uFF09\u3002"+"\u907F\u514D\u4E00\u53E5\u8BDD\u6A21\u7CCA\u76EE\u6807\uFF08\u5982\u300C\u505A\u597D X\u300D\u300C\u5B8C\u6210\u8C03\u7814\u300D\uFF09\u2014\u2014"+"\u4EFB\u52A1\u5B8C\u6210\u65F6 completion hook \u4F1A\u6309\u8FD9\u4E9B\u5B50\u9879\u9010\u6761\u5BF9\u7167\u64CD\u4F5C\u8BB0\u5F55\u9A8C\u6536\u3002"+"\uFF08Task #4833 \u2014 \u4E0E task_create \u7684 goals \u89C4\u5219\u540C\u6E90\uFF09"),due_date:K.string().optional(),tags:K.array(K.string()).optional(),project_path:K.string().optional().describe("Project path, identifies which project this task belongs to"),context:K.string().optional().describe("Task context information for storing additional context"),parent_task_id:K.union([K.number(),K.null()]).optional().describe("Parent task ID (set to null to make it a root task)")}),P3=K.object({task_id:K.number().describe("Task ID")}),b3=a2({}),E3=a2({deliverable_storage_path:K.string().optional().describe("\u4EA4\u4ED8\u7269\u7684\u5BFB\u5740\u5730\u5740\uFF08\u8DEF\u5F84 / URL / \u5206\u652F\u540D\u7B49\uFF09\u3002"+"\u4F1A\u6301\u4E45\u5316\u5230 task.context.deliverable_storage_path\uFF0C"+"\u5E76\u5199\u5165 operation \u8BB0\u5F55\uFF08Deliverable \u884C\uFF09\uFF0C\u4F9B\u9A8C\u6536\u65B9 task_complete \u65F6\u9010\u6761\u5BF9\u7167\u3002"),current_status:K.string().optional().describe("\u672C\u6B21\u4EA4\u4ED8\u7684\u8FDB\u5C55\u6458\u8981\uFF08\u53EF\u9009\uFF09\u3002"+"\u4F1A\u62FC\u8FDB\u300C\u5F85\u9A8C\u8BC1\uFF1A\u300D\u6587\u6848\uFF0C\u4F5C\u4E3A\u4EFB\u52A1\u5F53\u524D\u72B6\u6001\u5C55\u793A\u7ED9\u9A8C\u6536\u65B9\uFF08default agent\uFF09\u3002")}),S3=a2({reason:K.string().optional().describe("\u53D6\u6D88\u539F\u56E0\uFF08\u53EF\u9009\uFF09\u3002\u4F1A\u5199\u5165\u8BE5\u4EFB\u52A1\u7684 operation \u8BB0\u5F55\uFF0C\u4FBF\u4E8E\u4E8B\u540E\u8FFD\u6EAF\u9A8C\u6536\u7ED3\u8BBA\u3002")}),C3=K.object({task_ids:K.array(K.number()).describe("\u8981\u5F52\u6863\u7684\u4EFB\u52A1 ID \u5217\u8868"),reason:K.string().optional().describe("\u5F52\u6863\u539F\u56E0\uFF08\u53EF\u9009\uFF0C\u4F1A\u5199\u5165\u6BCF\u4E2A\u4EFB\u52A1\u7684 operation \u8BB0\u5F55\uFF09")}),f3=K.object({task_ids:K.array(K.number()).describe("\u8981\u5220\u9664\u7684\u4EFB\u52A1 ID \u5217\u8868")}),I3=K.object({depth:K.number().optional().default(2).describe("\u6811\u7684\u5C55\u5F00\u6DF1\u5EA6\u3002\u9ED8\u8BA4 2 (\u6839 + \u4E00\u5C42\u5B50\u4EFB\u52A1 + \u4E8C\u5C42\u5B59\u4EFB\u52A1)\u3002"+"0 = \u53EA\u8FD4\u56DE\u6839\u4EFB\u52A1\uFF0C\u4E0D\u5C55\u5F00\u4EFB\u4F55\u5B50\u8282\u70B9\u3002"+"-1 \u6216\u8D1F\u6570 = \u65E0\u9650\u5C42\u7EA7\uFF08\u5168\u90E8\u5C55\u5F00\uFF09\u3002"),parent_task_id:K.number().optional().describe("\u53EA\u770B\u6307\u5B9A\u7236\u4EFB\u52A1\u7684\u5B50\u6811\u3002\u4E0D\u4F20\u5219\u4ECE\u6240\u6709\u6839\u4EFB\u52A1\uFF08forest\uFF09\u5F00\u59CB\u3002"),status:K.enum(["todo","active","to_validate","completed","paused","cancelled","archived"]).optional().describe("\u6309\u72B6\u6001\u8FC7\u6EE4\uFF08\u4E0E task_list \u4E00\u81F4\uFF09\u3002"),priority:K.enum(["low","medium","high"]).optional().describe("\u6309\u4F18\u5148\u7EA7\u8FC7\u6EE4\u3002"),type:K.enum(["normal","cycle","longterm"]).optional().describe("\u6309\u4EFB\u52A1\u7C7B\u578B\u8FC7\u6EE4\u3002"),include_archived:K.boolean().optional().default(!1).describe("\u662F\u5426\u5305\u542B\u5DF2\u5F52\u6863\u4EFB\u52A1\uFF08\u9ED8\u8BA4 false\uFF0C\u4E0E task_list \u4E00\u81F4\uFF09\u3002")});B$();n();n();var vF=i("task-child-context"),xF=["commit","token","secret","password","api_key"];function T8($){if($===null||$===void 0)return $;if(Array.isArray($))return $.map(T8);if(typeof $!=="object")return $;let J={};for(let[Q,X]of Object.entries($)){let Y=Q.toLowerCase();if(xF.some((G)=>Y.includes(G)))continue;J[Q]=T8(X)}return J}function hF($){let{parent:J,overrides:Q={}}=$,X=Q.contextInherit!==!1,Y=Q.inheritTags===!0,G=Q.projectPath??J.projectPath??"unknown",q={};if(J.contextJson&&J.contextJson.trim().length>0)try{let B=JSON.parse(J.contextJson);if(B&&typeof B==="object"&&!Array.isArray(B))q=B}catch(B){vF.debug(`[task-child-context] parent #${J.taskId} context is malformed JSON; continuing with empty inherited context (${B instanceof Error?B.message:String(B)})`),q={}}let W={};if(X){if(q.worktree_path!==void 0&&Q.worktreePath===void 0)W.worktree_path=q.worktree_path;if(q.branch!==void 0&&Q.branch===void 0)W.branch=q.branch;if(q.parent_branch!==void 0)W.parent_branch=q.parent_branch;if(q.type!==void 0)W.type=q.type;if(q.prior_context&&typeof q.prior_context==="object"){let U=q.prior_context,V={};for(let[O,F]of Object.entries(U)){if(O.toLowerCase()==="commit")continue;V[O]=F}if(Object.keys(V).length>0)W.prior_context=V}let B=new Set(["worktree_path","branch","parent_branch","type","prior_context","created_at"]);for(let[U,V]of Object.entries(q)){if(B.has(U))continue;W[U]=V}}if(Q.worktreePath!==void 0)W.worktree_path=Q.worktreePath;if(Q.branch!==void 0)W.branch=Q.branch;let z=Q.createdAt??new Date().toISOString();W.created_at=z,W.child_of=J.taskId;let H=T8(W);return{project_path:G,context:JSON.stringify(H),inheritedTags:Y?J.tags??[]:[]}}var T3=i("task:tools:create"),yF=W4.split(`
2401
2640
  `).map(($)=>$.trim()?" "+$:$).join(`
2402
- `);function fF($){if(!$)return;try{let J=JSON.parse($);if(!J||typeof J!=="object"||Array.isArray(J))return;let Q=J.decision_hint;return typeof Q==="string"&&Q.length>0?Q:void 0}catch{return}}function TF(){try{let $=bF("git rev-parse --show-toplevel",{stdio:["ignore","pipe","ignore"]}).toString().trim(),J=process.cwd();if(!$)return null;if(J!==$)return J;if(J.includes(".worktrees/")||J.includes(".worktree/"))return J;return null}catch{return null}}function i2($){return{name:"task_create",description:`
2641
+ `);function gF($){if(!$)return;try{let J=JSON.parse($);if(!J||typeof J!=="object"||Array.isArray(J))return;let Q=J.decision_hint;return typeof Q==="string"&&Q.length>0?Q:void 0}catch{return}}function kF(){try{let $=TF("git rev-parse --show-toplevel",{stdio:["ignore","pipe","ignore"]}).toString().trim(),J=process.cwd();if(!$)return null;if(J!==$)return J;if(J.includes(".worktrees/")||J.includes(".worktree/"))return J;return null}catch{return null}}function s2($){return{name:"task_create",description:`
2403
2642
  Create a new task for tracking work.
2404
2643
 
2405
2644
  ## \u26A0\uFE0F CALL task_tree(depth=1) BEFORE THIS TOOL
@@ -2468,7 +2707,7 @@ No need to poll \u2014 just wait for the notification and use \`task_get\` with
2468
2707
  - Depth \u2264 5 (avoid deep nesting)
2469
2708
  - Same-theme tasks cluster under one parent
2470
2709
  - Long-tail/stranded tasks should be archived or merged
2471
- ${CF}
2710
+ ${yF}
2472
2711
 
2473
2712
  ## \u26A0\uFE0F Spatial + Temporal Context (Task #2325)
2474
2713
 
@@ -2564,29 +2803,33 @@ No need to poll \u2014 just wait for the notification and use \`task_get\` with
2564
2803
  env-injected value is 0 / negative / non-integer, it's treated as
2565
2804
  missing \u2014 only positive integers are honored.
2566
2805
 
2567
- `,parameters:M3,execute:async(J,Q)=>{let X=M3.parse(J),W=Q.session_id||"unknown",G=TF(),Y=X.context,q=z9().parentTaskId,H=X.parent_task_id!==void 0&&X.parent_task_id!==null?X.parent_task_id:q!==void 0&&q!==null&&Number.isInteger(q)&&q>0?q:void 0,B=X.project_path&&X.project_path.trim()!==""?X.project_path:void 0,U=B!==void 0&&B!==O3,z=U?B:void 0,V=X.tags,M;if(H!==void 0)try{let F=await $.getTask(H);if(F){let D=EF({parent:{taskId:F.id,projectPath:F.project_path,contextJson:F.context??"",tags:F.tags},overrides:{projectPath:z,branch:void 0,worktreePath:void 0,inheritTags:X.tags===void 0,contextInherit:!0}});if(z===void 0)z=D.project_path;if(X.tags===void 0)V=D.inheritedTags;M=D.context}}catch(F){P3.debug(`[task_create] failed to pre-load parent #${H} for context inheritance: ${F instanceof Error?F.message:String(F)}`)}try{let F=X.context===NF?void 0:X.context,D=F?JSON.parse(F):{},O=typeof D==="object"&&D!==null&&!Array.isArray(D)?D:{};if(M)try{let R=JSON.parse(M);if(R&&typeof R==="object"&&!Array.isArray(R)){for(let[L,_]of Object.entries(R))if(O[L]===void 0)O[L]=_}}catch{}if(!O.created_at)O.created_at=new Date().toISOString();if(!O.worktree_path&&G)O.worktree_path=G;Y=JSON.stringify(O)}catch{Y=X.context}try{let F=await $.createTask({parent_task_id:H,title:X.title,description:X.description,priority:X.priority,type:X.type||"normal",goals_and_expected_deliverables:X.goals_and_expected_deliverables,due_date:X.due_date,tags:V,sessionId:W,project_path:z??(U?B:O3),context:Y});p2(F.id),P3.info(`[createTask] Trace: Task #${F.id} created, currentTaskId=${F.id} set in EnvContext`);let D=fF(F.context),O=D?D.replaceAll(C8,`#${F.id}`).replaceAll(E8,String(F.id)):"";return{success:!0,output:`Task created successfully: #${F.id} - ${F.title}`+(O?`
2806
+ `,parameters:N3,execute:async(J,Q)=>{let X=N3.parse(J),Y=Q.session_id||"unknown",G=kF(),q=X.context,W=M9().parentTaskId,z=X.parent_task_id!==void 0&&X.parent_task_id!==null?X.parent_task_id:W!==void 0&&W!==null&&Number.isInteger(W)&&W>0?W:void 0,H=X.project_path&&X.project_path.trim()!==""?X.project_path:void 0,B=H!==void 0&&H!==j3,U=B?H:void 0,V=X.tags,O;if(z!==void 0)try{let F=await $.getTask(z);if(F){let D=hF({parent:{taskId:F.id,projectPath:F.project_path,contextJson:F.context??"",tags:F.tags},overrides:{projectPath:U,branch:void 0,worktreePath:void 0,inheritTags:X.tags===void 0,contextInherit:!0}});if(U===void 0)U=D.project_path;if(X.tags===void 0)V=D.inheritedTags;O=D.context}}catch(F){T3.debug(`[task_create] failed to pre-load parent #${z} for context inheritance: ${F instanceof Error?F.message:String(F)}`)}try{let F=X.context===CF?void 0:X.context,D=F?JSON.parse(F):{},M=typeof D==="object"&&D!==null&&!Array.isArray(D)?D:{};if(O)try{let R=JSON.parse(O);if(R&&typeof R==="object"&&!Array.isArray(R)){for(let[L,N]of Object.entries(R))if(M[L]===void 0)M[L]=N}}catch{}if(!M.created_at)M.created_at=new Date().toISOString();if(!M.worktree_path&&G)M.worktree_path=G;q=JSON.stringify(M)}catch{q=X.context}try{let F=await $.createTask({parent_task_id:z,title:X.title,description:X.description,priority:X.priority,type:X.type||"normal",goals_and_expected_deliverables:X.goals_and_expected_deliverables,due_date:X.due_date,tags:V,sessionId:Y,project_path:U??(B?H:j3),context:q});r2(F.id),T3.info(`[createTask] Trace: Task #${F.id} created, currentTaskId=${F.id} set in EnvContext`);let D=gF(F.context),M=D?D.replaceAll(I8,`#${F.id}`).replaceAll(f8,String(F.id)):"";return{success:!0,output:`Task created successfully: #${F.id} - ${F.title}`+(M?`
2568
2807
 
2569
- ${O}`:""),metadata:{execution_time_ms:0,task_id:F.id,status:F.status,createdAt:F.createdAt}}}catch(F){return{success:!1,output:"",error:F instanceof Error?F.message:String(F),metadata:{execution_time_ms:0}}}}}}function n2($){return{name:"task_get",description:"Get task details by ID. Optionally include operation records.",parameters:K3,execute:async(J,Q)=>{let X=K3.parse(J);try{if(X.include_operations){let W=await $.getTaskWithOperations(X.task_id);if(!W)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};let G=W.task,Y=G&&typeof G==="object"?{...G,operations:W.operations}:W;return{success:!0,output:JSON.stringify(Y,null,2),metadata:{execution_time_ms:0}}}else{let W=await $.getTask(X.task_id);if(!W)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:JSON.stringify(W,null,2),metadata:{execution_time_ms:0}}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}function r2($){return{name:"task_list",description:"List tasks with optional filters for status, priority, type, parent_task_id, and depth (hierarchy level). "+`depth: 0=\u53EA\u6839\u4EFB\u52A1\uFF08\u65E0\u7236\u4EFB\u52A1\uFF09\uFF0C1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1\uFF0C2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1\uFF0C-1 \u6216\u5FFD\u7565=\u5168\u90E8\u3002
2570
- `+"Returns { total, count, truncated, limit, offset, depth, tasks } where:\n - total: count of all matching tasks BEFORE pagination\n - count: count of tasks in the returned `tasks` array (after pagination)\n - truncated: true when total > count (data was truncated by pagination)\nNote: `total` is the FIRST field in the response so it survives tail-truncation by ToolComponent.truncateOutput.",parameters:R3,execute:async(J,Q)=>{let X=R3.parse(J);try{let W=await $.listTasks({status:X.status,priority:X.priority,type:X.type,limit:X.limit,offset:X.offset,depth:X.depth,include_archived:X.include_archived});return{success:!0,output:JSON.stringify({total:W.total,count:W.tasks.length,truncated:W.total>W.tasks.length,limit:X.limit,offset:X.offset,depth:X.depth,tasks:W.tasks}),metadata:{execution_time_ms:0}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}function a2($){return{name:"task_search",description:"Search tasks by keywords across title, description, goals, tags, and operation records. Use this when you need to find tasks related to a "+"topic, feature, bug, or area of work \u2014 even when the keyword is only "+`in description / goals / tags / past operation logs.
2808
+ ${M}`:""),metadata:{execution_time_ms:0,task_id:F.id,status:F.status,createdAt:F.createdAt}}}catch(F){return{success:!1,output:"",error:F instanceof Error?F.message:String(F),metadata:{execution_time_ms:0}}}}}}function o2($){return{name:"task_get",description:"Get task details by ID. Optionally include operation records.",parameters:_3,execute:async(J,Q)=>{let X=_3.parse(J);try{if(X.include_operations){let Y=await $.getTaskWithOperations(X.task_id);if(!Y)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};let G=Y.task,q=G&&typeof G==="object"?{...G,operations:Y.operations}:Y;return{success:!0,output:JSON.stringify(q,null,2),metadata:{execution_time_ms:0}}}else{let Y=await $.getTask(X.task_id);if(!Y)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:JSON.stringify(Y,null,2),metadata:{execution_time_ms:0}}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}function t2($){return{name:"task_list",description:"List tasks with optional filters for status, priority, type, parent_task_id, and depth (hierarchy level). "+`depth: 0=\u53EA\u6839\u4EFB\u52A1\uFF08\u65E0\u7236\u4EFB\u52A1\uFF09\uFF0C1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1\uFF0C2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1\uFF0C-1 \u6216\u5FFD\u7565=\u5168\u90E8\u3002
2809
+ `+"Returns { total, count, truncated, limit, offset, depth, tasks } where:\n - total: count of all matching tasks BEFORE pagination\n - count: count of tasks in the returned `tasks` array (after pagination)\n - truncated: true when total > count (data was truncated by pagination)\nNote: `total` is the FIRST field in the response so it survives tail-truncation by ToolComponent.truncateOutput.",parameters:A3,execute:async(J,Q)=>{let X=A3.parse(J);try{let Y=await $.listTasks({status:X.status,priority:X.priority,type:X.type,limit:X.limit,offset:X.offset,depth:X.depth,include_archived:X.include_archived});return{success:!0,output:JSON.stringify({total:Y.total,count:Y.tasks.length,truncated:Y.total>Y.tasks.length,limit:X.limit,offset:X.offset,depth:X.depth,tasks:Y.tasks}),metadata:{execution_time_ms:0}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}function e2($){return{name:"task_search",description:"Search tasks by keywords across title, description, goals, tags, and operation records. Use this when you need to find tasks related to a "+"topic, feature, bug, or area of work \u2014 even when the keyword is only "+`in description / goals / tags / past operation logs.
2571
2810
 
2572
2811
  Returns { tasks, total, limit, offset } so you can paginate large result sets.
2573
2812
 
2574
- If \`keywords\` is empty, returns no results.`,parameters:L3,execute:async(J,Q)=>{let X=L3.parse(J);try{let W=await $.searchTasksByKeywords(X.keywords,{limit:X.limit,offset:X.offset,excludeTaskId:X.exclude_task_id,status:X.status,priority:X.priority,type:X.type,depth:X.depth,include_archived:X.include_archived});return{success:!0,output:JSON.stringify({tasks:W.tasks,total:W.total,limit:X.limit,offset:X.offset}),metadata:{execution_time_ms:0}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}function T8($){return{name:"task_batch_archive",description:`Batch archive multiple tasks at once. Sets all specified tasks to 'archived' status and creates operation records for each.
2813
+ If \`keywords\` is empty, returns no results.`,parameters:Z3,execute:async(J,Q)=>{let X=Z3.parse(J);try{let Y=await $.searchTasksByKeywords(X.keywords,{limit:X.limit,offset:X.offset,excludeTaskId:X.exclude_task_id,status:X.status,priority:X.priority,type:X.type,depth:X.depth,include_archived:X.include_archived});return{success:!0,output:JSON.stringify({tasks:Y.tasks,total:Y.total,limit:X.limit,offset:X.offset}),metadata:{execution_time_ms:0}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}function v8($){return{name:"task_batch_archive",description:`Batch archive multiple tasks at once. Sets all specified tasks to 'archived' status and creates operation records for each.
2575
2814
 
2576
2815
  Use this when you need to quickly archive a group of completed, obsolete, or historical tasks (e.g., during task organization).
2577
2816
 
2578
- Returns summary of how many tasks were successfully archived and any errors encountered.`,parameters:Z3,execute:async(J,Q)=>{let X=Z3.parse(J),W=X.task_ids,G=Q.session_id||"batch-archive";if(!W||W.length===0)return{success:!0,output:JSON.stringify({archived_count:0,errors:[]}),metadata:{execution_time_ms:0}};let Y=[],q=0;for(let B of W)try{if(await $.updateTask(B,{status:"archived"}))await $.createOperation({taskId:B,sessionId:G,actionType:"completed",actionTitle:"Batch archived",actionDescription:X.reason||"\u6279\u91CF\u5F52\u6863\uFF08\u4EFB\u52A1\u6574\u7406\uFF09"}),q++,Y.push({id:B,success:!0});else Y.push({id:B,success:!1,error:"Task not found"})}catch(U){Y.push({id:B,success:!1,error:U instanceof Error?U.message:String(U)})}return{success:!Y.some((B)=>!B.success),output:JSON.stringify({archived_count:q,total:W.length,errors:Y.filter((B)=>!B.success).map((B)=>({id:B.id,error:B.error})),results:Y},null,2),metadata:{execution_time_ms:0}}}}}function I8($){return{name:"task_batch_delete",description:`Batch delete multiple tasks at once. Deletes each task and all its operation records.
2817
+ Returns summary of how many tasks were successfully archived and any errors encountered.`,parameters:C3,execute:async(J,Q)=>{let X=C3.parse(J),Y=X.task_ids,G=Q.session_id||"batch-archive";if(!Y||Y.length===0)return{success:!0,output:JSON.stringify({archived_count:0,errors:[]}),metadata:{execution_time_ms:0}};let q=[],W=0;for(let H of Y)try{if(await $.updateTask(H,{status:"archived",current_status:X.reason?`${L$}\uFF1A${X.reason}`:L$}))await $.createOperation({taskId:H,sessionId:G,actionType:"completed",actionTitle:"Batch archived",actionDescription:X.reason||"\u6279\u91CF\u5F52\u6863\uFF08\u4EFB\u52A1\u6574\u7406\uFF09"}),W++,q.push({id:H,success:!0});else q.push({id:H,success:!1,error:"Task not found"})}catch(B){q.push({id:H,success:!1,error:B instanceof Error?B.message:String(B)})}return{success:!q.some((H)=>!H.success),output:JSON.stringify({archived_count:W,total:Y.length,errors:q.filter((H)=>!H.success).map((H)=>({id:H.id,error:H.error})),results:q},null,2),metadata:{execution_time_ms:0}}}}}function x8($){return{name:"task_batch_delete",description:`Batch delete multiple tasks at once. Deletes each task and all its operation records.
2579
2818
 
2580
2819
  Use this when you need to quickly remove a group of test, temporary, or otherwise worthless tasks (e.g., during task organization).
2581
2820
 
2582
- Returns summary of how many tasks were successfully deleted and any errors encountered.`,parameters:w3,execute:async(J,Q)=>{let W=w3.parse(J).task_ids;if(!W||W.length===0)return{success:!0,output:JSON.stringify({deleted_count:0,errors:[]}),metadata:{execution_time_ms:0}};let G=[],Y=0;for(let H of W)try{if(await $.deleteTask(H))Y++,G.push({id:H,success:!0});else G.push({id:H,success:!1,error:"Task not found"})}catch(B){G.push({id:H,success:!1,error:B instanceof Error?B.message:String(B)})}return{success:!G.some((H)=>!H.success),output:JSON.stringify({deleted_count:Y,total:W.length,errors:G.filter((H)=>!H.success).map((H)=>({id:H.id,error:H.error})),results:G},null,2),metadata:{execution_time_ms:0}}}}}q$();r();var IF=i("tool:update-task");async function vF($,J,Q){let X=new Set,W=Q;while(W!==null&&W!==void 0){if(W===J)return!0;if(X.has(W))break;X.add(W);let G=await $.getTask(W);if(!G)break;W=G.parent_task_id}return!1}function s2($){return{name:"task_update",description:"Update an existing task's properties. Status and progress changes will create operation records.",parameters:A3,execute:async(J,Q)=>{let X=A3.parse(J),W=Q.session_id||"unknown";try{if(X.parent_task_id!==void 0&&X.parent_task_id!==null){if(await vF($,X.task_id,X.parent_task_id))return{success:!1,output:"",error:`Circular reference detected: setting parent_task_id to ${X.parent_task_id} for task #${X.task_id} would create a cycle`,metadata:{execution_time_ms:0}}}let G=Q.metadata?.agentType??void 0,Y=Q.metadata?.agentName??void 0;if(X.status==="completed"&&G==="sub"){let H=$.env?.getComponent?.("agent"),U=(Y&&H?.getAgent?H.getAgent(Y):void 0)?.config;if(!(U?Array.isArray(U.allowedTools)&&U.allowedTools.includes("task_complete")||!Array.isArray(U.allowedTools)&&!(Array.isArray(U.deniedTools)&&U.deniedTools.includes("task_complete")):!1))return{success:!1,output:"",error:'Cannot set status="completed" without acceptance permission (Task #5007 \u2014 \u9A8C\u6536\u6743\u5206\u79BB). '+'\u6267\u884C\u65B9\u53EA\u80FD\u63A8\u8FDB\u8FDB\u5EA6\uFF1A\u7528 task_update(progress=100) \u8868\u793A"\u6211\u8FD9\u8FB9\u5E72\u5B8C\u4E86"\uFF0C'+"\u518D task_operation_create \u8BB0\u5F55\u7ED3\u8BBA\uFF0C\u7136\u540E\u7ED3\u675F\u8FD4\u56DE\uFF1B"+"\u4EFB\u52A1\u7EC8\u6001\u5FC5\u987B\u7531\u9A8C\u6536\u65B9\uFF08default agent / \u4E3B\u667A\u80FD\u4F53\uFF09\u8C03\u7528 task_complete \u843D\u5B9A\u3002",metadata:{execution_time_ms:0}}}let q=await $.updateTask(X.task_id,{title:X.title,description:X.description,status:X.status,priority:X.priority,type:X.type,progress:X.progress,current_status:X.current_status,goals_and_expected_deliverables:X.goals_and_expected_deliverables,due_date:X.due_date,tags:X.tags,project_path:X.project_path,context:X.context,parent_task_id:X.parent_task_id});if(!q)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};if(X.status||X.progress!==void 0||X.current_status)await $.createOperation({taskId:X.task_id,sessionId:W,actionType:"progress",actionTitle:X.current_status||`Updated: ${X.status||`${X.progress}%`}`,actionDescription:JSON.stringify({status:X.status,progress:X.progress,current_status:X.current_status})});return p2(q.id),IF.info(`[updateTask] Trace: Task #${q.id} updated, currentTaskId=${q.id} set in EnvContext`),{success:!0,output:`Task updated: #${q.id} - ${q.title}`,metadata:{execution_time_ms:0,task:q}}}catch(G){return{success:!1,output:"",error:G instanceof Error?G.message:String(G),metadata:{execution_time_ms:0}}}}}}function v8($){return{name:"task_delete",description:"Delete a task and all its operation records.",parameters:_3,execute:async(J,Q)=>{let X=_3.parse(J);try{if(!await $.deleteTask(X.task_id))return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:`Task deleted: #${X.task_id}`,metadata:{execution_time_ms:0}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}q$();r();var xF=i("task:tools:complete"),hF=`
2583
- Mark a task as completed (progress=100, status=completed). Creates an operation record.
2821
+ Returns summary of how many tasks were successfully deleted and any errors encountered.`,parameters:f3,execute:async(J,Q)=>{let Y=f3.parse(J).task_ids;if(!Y||Y.length===0)return{success:!0,output:JSON.stringify({deleted_count:0,errors:[]}),metadata:{execution_time_ms:0}};let G=[],q=0;for(let z of Y)try{if(await $.deleteTask(z))q++,G.push({id:z,success:!0});else G.push({id:z,success:!1,error:"Task not found"})}catch(H){G.push({id:z,success:!1,error:H instanceof Error?H.message:String(H)})}return{success:!G.some((z)=>!z.success),output:JSON.stringify({deleted_count:q,total:Y.length,errors:G.filter((z)=>!z.success).map((z)=>({id:z.id,error:z.error})),results:G},null,2),metadata:{execution_time_ms:0}}}}}B$();n();var mF=i("tool:update-task");async function uF($,J,Q){let X=new Set,Y=Q;while(Y!==null&&Y!==void 0){if(Y===J)return!0;if(X.has(Y))break;X.add(Y);let G=await $.getTask(Y);if(!G)break;Y=G.parent_task_id}return!1}function $6($){return{name:"task_update",description:"Update an existing task's properties. Status and progress changes will create operation records.",parameters:w3,execute:async(J,Q)=>{let X=w3.parse(J),Y=Q.session_id||"unknown";try{if(X.parent_task_id!==void 0&&X.parent_task_id!==null){if(await uF($,X.task_id,X.parent_task_id))return{success:!1,output:"",error:`Circular reference detected: setting parent_task_id to ${X.parent_task_id} for task #${X.task_id} would create a cycle`,metadata:{execution_time_ms:0}}}let G=Q.metadata?.agentType??void 0,q=Q.metadata?.agentName??void 0;if(X.status==="completed"&&G==="sub"){let z=$.env?.getComponent?.("agent"),B=(q&&z?.getAgent?z.getAgent(q):void 0)?.config;if(!(B?Array.isArray(B.allowedTools)&&B.allowedTools.includes("task_complete")||!Array.isArray(B.allowedTools)&&!(Array.isArray(B.deniedTools)&&B.deniedTools.includes("task_complete")):!1))return{success:!1,output:"",error:'Cannot set status="completed" without acceptance permission (Task #5007 \u2014 \u9A8C\u6536\u6743\u5206\u79BB). '+'\u6267\u884C\u65B9\u53EA\u80FD\u63A8\u8FDB\u8FDB\u5EA6\uFF1A\u7528 task_update(progress=100) \u8868\u793A"\u6211\u8FD9\u8FB9\u5E72\u5B8C\u4E86"\uFF0C'+"\u518D task_operation_create \u8BB0\u5F55\u7ED3\u8BBA\uFF0C\u7136\u540E\u7ED3\u675F\u8FD4\u56DE\uFF1B"+"\u4EFB\u52A1\u7EC8\u6001\u5FC5\u987B\u7531\u9A8C\u6536\u65B9\uFF08default agent / \u4E3B\u667A\u80FD\u4F53\uFF09\u8C03\u7528 task_complete \u843D\u5B9A\u3002",metadata:{execution_time_ms:0}}}let W=await $.updateTask(X.task_id,{title:X.title,description:X.description,status:X.status,priority:X.priority,type:X.type,progress:X.progress,current_status:X.current_status,goals_and_expected_deliverables:X.goals_and_expected_deliverables,due_date:X.due_date,tags:X.tags,project_path:X.project_path,context:X.context,parent_task_id:X.parent_task_id});if(!W)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};if(X.status||X.progress!==void 0||X.current_status)await $.createOperation({taskId:X.task_id,sessionId:Y,actionType:"progress",actionTitle:X.current_status||`Updated: ${X.status||`${X.progress}%`}`,actionDescription:JSON.stringify({status:X.status,progress:X.progress,current_status:X.current_status})});return r2(W.id),mF.info(`[updateTask] Trace: Task #${W.id} updated, currentTaskId=${W.id} set in EnvContext`),{success:!0,output:`Task updated: #${W.id} - ${W.title}`,metadata:{execution_time_ms:0,task:W}}}catch(G){return{success:!1,output:"",error:G instanceof Error?G.message:String(G),metadata:{execution_time_ms:0}}}}}}function h8($){return{name:"task_delete",description:"Delete a task and all its operation records.",parameters:P3,execute:async(J,Q)=>{let X=P3.parse(J);try{if(!await $.deleteTask(X.task_id))return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:`Task deleted: #${X.task_id}`,metadata:{execution_time_ms:0}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}B$();n();var lF=i("task:tools:complete"),cF=`
2822
+ Final acceptance of a submitted task: set status=completed, progress=100
2823
+ (two-phase acceptance, Task #5073).
2824
+
2825
+ **Who should call this** \u2014 the **acceptance side** (default agent). The
2826
+ executor (sub-agent) has NO permission to call it (deniedTools, Task #5007).
2584
2827
 
2585
2828
  **Before calling this tool**, you MUST:
2586
2829
 
2587
2830
  1. Read the task's \`goal\` (description) and \`delivery\` (goals_and_expected_deliverables) fields.
2588
2831
  - Use \`task_get(task_id=<id>)\` to fetch the full task record.
2589
- 2. **Validate whether each goal sub-item was achieved** (${Y2}).
2832
+ 2. **Validate whether each goal sub-item was achieved** (${n$}).
2590
2833
  - Goals should be numbered sub-items (\u7F16\u53F7\u5B50\u9879, see task_create rules). Check
2591
2834
  each sub-item against the operation-record chain (\u64CD\u4F5C\u8BB0\u5F55\u94FE) and the
2592
2835
  deliverable evidence (context.deliverable_storage_path).
@@ -2594,9 +2837,9 @@ Mark a task as completed (progress=100, status=completed). Creates an operation
2594
2837
  deliverables; numbered sub-items give it finer-grained evidence to
2595
2838
  reason with (\u9010\u6761\u5BF9\u7167\u7684\u8BC1\u636E\u7C92\u5EA6). If it detects that the goal or
2596
2839
  deliverables appear unmet, the task context will carry a
2597
- \`[${B$}]\`.
2598
- - **If you receive a [${B$}]**, you MUST verify it
2599
- (${q2}): re-read the task via \`task_get\`, then do exactly one of:
2840
+ \`[${$$}]\`.
2841
+ - **If you receive a [${$$}]**, you MUST verify it
2842
+ (${r$}): re-read the task via \`task_get\`, then do exactly one of:
2600
2843
  (a) \u786E\u8BA4\u672A\u5B8C\u6210 \u2192 \`task_update(task_id=<id>, status=todo)\` reopen and continue; or
2601
2844
  (b) \u786E\u8BA4\u5DF2\u5B8C\u6210 \u2192 \`task_operation_create\` (milestone_type=decision,
2602
2845
  milestone_title=<\u4E00\u884C\u7ED3\u8BBA>) state why the sub-items are actually
@@ -2608,31 +2851,39 @@ Mark a task as completed (progress=100, status=completed). Creates an operation
2608
2851
  (milestone_type=decision) \u2014 the reason **must** land in the
2609
2852
  operation record (\u5FC5\u987B\u843D\u5230\u64CD\u4F5C\u8BB0\u5F55\u91CC), not merely a line in
2610
2853
  your final report (\u4E0D\u80FD\u53EA\u5728\u62A5\u544A\u91CC\u5E26\u4E00\u53E5).
2611
- 3. **Provide \`deliverable_storage_path\`** parameter with the deliverable's address:
2612
- - Feishu doc URL (e.g., https://my.feishu.cn/docx/abc)
2613
- - Local file path (e.g., /tmp/report.md)
2614
- - Git branch or worktree path (e.g., feature/my-feature)
2615
- - GitHub commit URL or PR URL
2616
- - Cloud drive URL (e.g., https://my.feishu.cn/file/abc)
2617
- - Or any other locator that points to where the work product lives
2618
-
2619
- The \`deliverable_storage_path\` will be persisted to the task's \`context.deliverable_storage_path\` for future reference and traceability.
2854
+ 3. Deliverables were already submitted by the executor via
2855
+ \`task_pre_complete\` (they live in \`context.deliverable_storage_path\`
2856
+ and the operation trail \u2014 Task #5073 design: task_complete takes **no**
2857
+ deliverable parameter). Cross-check them in step 2; do NOT ask the
2858
+ executor to resubmit.
2620
2859
 
2621
2860
  **Restrictions**:
2622
2861
  - Cannot complete cycle-type tasks (they are periodic). Use \`task_update\` to reset progress instead.
2623
2862
  - Marks the task as 100% complete; use \`task_update\` to record partial progress first if needed.
2624
2863
 
2625
- **Backward compatibility**: \`deliverable_storage_path\` is optional. Existing callers that omit it continue to work as before.
2626
- `.trim();function o2($){return{name:"task_complete",description:hF,parameters:j3,execute:async(J,Q)=>{let X=j3.parse(J),W=Q.session_id||"unknown";try{let G=await $.getTask(X.task_id);if(!G)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};if(G.type==="cycle")return{success:!1,output:"",error:`Cannot complete a cycle-type task (id: ${X.task_id}). Cycle tasks are periodic (e.g., weekly reports) and should not be marked as completed. Use task_update to reset progress instead.`,metadata:{execution_time_ms:0}};let Y=await $.completeTask(X.task_id,W,X.deliverable_storage_path);if(!Y)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return p2(void 0),xF.info(`[completeTask] Trace: Task #${X.task_id} completed, deliverable=${X.deliverable_storage_path||"(none)"}, currentTaskId cleared from EnvContext`),{success:!0,output:X.deliverable_storage_path?`Task completed: #${Y.id} - ${Y.title}
2627
- Deliverable (context + operation): ${X.deliverable_storage_path}`:`Task completed: #${Y.id} - ${Y.title}
2628
- Deliverable: (no path provided)`,metadata:{execution_time_ms:0,task:Y}}}catch(G){return{success:!1,output:"",error:G instanceof Error?G.message:String(G),metadata:{execution_time_ms:0}}}}}}r();var yF=i("tool:cancel-task"),gF=new Set(["completed","cancelled","archived"]),kF=`
2629
- Cancel a task (task.status = "cancelled"). This is the **acceptance-side** cancel:
2630
- use it when the work is abandoned, the user asked to stop, or acceptance failed.
2631
-
2632
- **When to use**:
2633
- - The user asks to cancel / stop / drop the task
2634
- - Acceptance failed and re-delegation is not worth it
2635
- - The sub-agent timed out or went off-track and the task is no longer relevant
2864
+ **Side effects**:
2865
+ - Sets \`status = "completed"\`, \`progress = 100\` **and refreshes \`current_status\`**
2866
+ to the completed wording. You do **NOT** need a follow-up
2867
+ \`task_update(current_status=...)\` call \u2014 a task must never keep a stale
2868
+ pre-completion progress sentence (e.g. "paused, not committed") that would
2869
+ contradict \`status = "completed"\`.
2870
+ - The goal-check decision model does **NOT** run here \u2014 it already ran at
2871
+ \`task_pre_complete\` time (Task #5073 design v2). This tool is the final
2872
+ state commit by the acceptance side.
2873
+ - Cannot complete a task that is already in a terminal state (cancelled /
2874
+ archived) \u2014 reopen it first via \`task_update(status="active")\`.
2875
+ `.trim();function J6($){return{name:"task_complete",description:cF,parameters:b3,execute:async(J,Q)=>{let X=b3.parse(J),Y=Q.session_id||"unknown";try{let G=await $.getTask(X.task_id);if(!G)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};if(G.type==="cycle")return{success:!1,output:"",error:`Cannot complete a cycle-type task (id: ${X.task_id}). Cycle tasks are periodic (e.g., weekly reports) and should not be marked as completed. Use task_update to reset progress instead.`,metadata:{execution_time_ms:0}};if(new Set([...Z6]).has(G.status))return{success:!1,output:"",error:`Cannot complete task #${X.task_id}: it is already in terminal status "${G.status}". Reopen it first via task_update(status="active") if acceptance should proceed.`,metadata:{execution_time_ms:0}};let W=await $.completeTask(X.task_id,Y);if(!W)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return r2(void 0),lF.info(`[completeTask] Trace: Task #${X.task_id} completed (acceptance committed), currentTaskId cleared from EnvContext`),{success:!0,output:`Task completed: #${W.id} - ${W.title}`,metadata:{execution_time_ms:0,task:W}}}catch(G){return{success:!1,output:"",error:G instanceof Error?G.message:String(G),metadata:{execution_time_ms:0}}}}}}n();var pF=i("tool:cancel-task"),dF=new Set(["completed","cancelled","archived"]),iF=`
2876
+ Cancel a task (task.status = "cancelled"). This is the **acceptance-side** cancel.
2877
+
2878
+ **When to use** \u2014 ONLY when the user explicitly asks (\u7528\u6237\u660E\u4EE4):
2879
+ - The user asks to cancel / stop / drop the task (\u7528\u6237\u660E\u4EE4\u53D6\u6D88 / \u505C\u6389 / \u653E\u5F03\u8FD9\u4E2A\u4EFB\u52A1)
2880
+
2881
+ **When NOT to use**:
2882
+ - \u274C A sub-agent failed / timed out / went off-track \u2014 that is NOT a cancellation.
2883
+ Find the root cause, propose a fix, and re-delegate (with \`sub_session_id\` to resume).
2884
+ If it truly cannot be moved forward, report the situation to the user and **wait for
2885
+ the user's decision** \u2014 do NOT cancel it on your own.
2886
+ - \u274C Acceptance found gaps but re-delegation is still possible \u2014 re-delegate instead.
2636
2887
 
2637
2888
  **What it does NOT do**:
2638
2889
  - It does **NOT** stop a running background process \u2014 that is \`stop_task\`
@@ -2642,26 +2893,73 @@ use it when the work is abandoned, the user asked to stop, or acceptance failed.
2642
2893
  **Side effects**:
2643
2894
  - Sets \`status = "cancelled"\` and fires the task terminal-state hooks
2644
2895
  (notifications / card state machine converge to the cancelled state).
2896
+ - Also refreshes \`current_status\` to the cancelled wording (with your \`reason\`
2897
+ appended when given) \u2014 the task no longer keeps a stale pre-cancel progress
2898
+ sentence that would contradict \`status = "cancelled"\`.
2645
2899
  - Writes an operation record so the cancellation reason stays auditable.
2646
2900
  - A cancelled task can be reopened later with \`task_update(status="active")\`.
2647
2901
 
2648
2902
  **Parameters**:
2649
2903
  - \`task_id\` (required): the task to cancel
2650
2904
  - \`reason\` (optional): why it is being cancelled \u2014 recorded in the operation trail
2651
- `.trim();function x8($){return{name:"task_cancel",description:kF,parameters:N3,execute:async(J,Q)=>{let X=N3.parse(J),W=Q.session_id||"unknown";try{let G=await $.getTask(X.task_id);if(!G)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};if(gF.has(G.status))return{success:!1,output:"",error:`Cannot cancel task #${X.task_id}: it is already in terminal status "${G.status}".`,metadata:{execution_time_ms:0,task_id:X.task_id}};let Y=await $.updateTask(X.task_id,{status:"cancelled"});if(!Y)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return await $.createOperation({taskId:X.task_id,sessionId:W,milestoneType:"decision",milestoneTitle:`Task cancelled: #${X.task_id}`,milestoneDescription:X.reason?`Cancelled by acceptance side. Reason: ${X.reason}`:"Cancelled by acceptance side (no reason given)."}),yF.info(`[cancelTask] Task #${X.task_id} cancelled (previous status: ${G.status})`),{success:!0,output:`Task cancelled: #${X.task_id} - ${Y.title}`,metadata:{execution_time_ms:0,task:Y}}}catch(G){return{success:!1,output:"",error:G instanceof Error?G.message:String(G),metadata:{execution_time_ms:0}}}}}}function S3($,J){if($.updatedAt<J.updatedAt)return 1;if($.updatedAt>J.updatedAt)return-1;if($.id<J.id)return 1;if($.id>J.id)return-1;return 0}function E3($,J){if(J<0)return $;if(J===0)return $.map((Q)=>({...Q,children:[]}));return $.map((Q)=>({...Q,children:E3(Q.children,J-1)}))}function C3($){let J=0;for(let Q of $)J+=1+C3(Q.children);return J}function mF($){let J=new Map,Q=new Map,X=[];for(let W of $)J.set(W.id,{id:W.id,title:W.title,status:W.status,type:W.type,priority:W.priority,progress:W.progress,children:[]});for(let W of $){let G=W.parent_task_id;if(G!==void 0&&G!==null&&J.has(G)){let Y=Q.get(G)||[];Y.push(W),Q.set(G,Y)}else X.push(W)}for(let[W,G]of Q.entries()){let Y=J.get(W);G.sort(S3),Y.children=G.map((q)=>J.get(q.id))}return X.sort(S3),X.map((W)=>J.get(W.id))}function t2($){return{name:"task_tree",description:"View the task tree (forest) with optional filters. Use this BEFORE task_create to decide whether to create a root task (omit parent_task_id) or attach to an existing parent. "+"depth: 0=\u53EA\u6839\u4EFB\u52A1, 1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1, 2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1 (default), "+"-1 or omitted as -1=\u65E0\u9650\u5C42\u7EA7. "+`Returns { total, truncated, depth, parent_task_id, nodes } where:
2905
+ `.trim();function y8($){return{name:"task_cancel",description:iF,parameters:S3,execute:async(J,Q)=>{let X=S3.parse(J),Y=Q.session_id||"unknown";try{let G=await $.getTask(X.task_id);if(!G)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};if(dF.has(G.status))return{success:!1,output:"",error:`Cannot cancel task #${X.task_id}: it is already in terminal status "${G.status}".`,metadata:{execution_time_ms:0,task_id:X.task_id}};let q=await $.updateTask(X.task_id,{status:"cancelled",current_status:X.reason?`${R$}\uFF1A${X.reason}`:R$});if(!q)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return await $.createOperation({taskId:X.task_id,sessionId:Y,milestoneType:"decision",milestoneTitle:`Task cancelled: #${X.task_id}`,milestoneDescription:X.reason?`Cancelled by acceptance side. Reason: ${X.reason}`:"Cancelled by acceptance side (no reason given)."}),pF.info(`[cancelTask] Task #${X.task_id} cancelled (previous status: ${G.status})`),{success:!0,output:`Task cancelled: #${X.task_id} - ${q.title}`,metadata:{execution_time_ms:0,task:q}}}catch(G){return{success:!1,output:"",error:G instanceof Error?G.message:String(G),metadata:{execution_time_ms:0}}}}}}n();var mL=i("task:tools:pre-complete"),nF=`
2906
+ Submit a task for acceptance (two-phase acceptance, Task #5073).
2907
+
2908
+ **Who should call this** \u2014 the **executor** (sub-agent) when it believes
2909
+ the work is done and deliverables are ready.
2910
+
2911
+ **What it does**:
2912
+ - Sets \`status = "to_validate"\` (\u5F85\u9A8C\u8BC1) \u2014 the task enters the
2913
+ acceptance queue. This is **NOT** a terminal state.
2914
+ - Persists \`deliverable_storage_path\` to \`task.context.deliverable_storage_path\`
2915
+ and writes a \`Deliverable: <path>\` line into the operation trail.
2916
+ - Refreshes \`current_status\` to the to-validate wording
2917
+ (with your progress summary appended when given).
2918
+ - Creates an operation record so the submission stays auditable.
2919
+
2920
+ **What it does NOT do**:
2921
+ - It does **NOT** mark the task completed \u2014 final acceptance
2922
+ (\`task_complete\`) belongs to the **default agent** (\u9A8C\u6536\u6743\u5206\u79BB, Task #5007).
2923
+
2924
+ **Goal self-check (design v2)**:
2925
+ - Submitting **does** fire the completion goal-check hook once
2926
+ (\`terminalStatus="to_validate"\`) as a self-check gate \u2014 the
2927
+ decision model reviews your goals/operations at submission time.
2928
+ If it produces a hint, read it and address the gaps **before**
2929
+ ending your turn. The final acceptance (\`task_complete\`) does
2930
+ **not** re-run the goal check.
2931
+
2932
+ **After calling**:
2933
+ - Push progress to 100 via \`task_update(progress=100)\` if not already,
2934
+ then **end your turn and return the result** to the main agent.
2935
+ - The default agent will pick up the notification, verify the goals
2936
+ item-by-item, and call \`task_complete\` (or re-delegate on gaps).
2937
+
2938
+ **Parameters**:
2939
+ - \`task_id\` (required): the task to submit
2940
+ - \`deliverable_storage_path\` (optional): where the work product lives
2941
+ (file path / Feishu doc URL / git branch / PR URL ...)
2942
+ - \`current_status\` (optional): a one-line progress summary shown to the
2943
+ acceptance side (e.g. "\u5B9E\u73B0\u5B8C\u6210\uFF0C\u6D4B\u8BD5\u5168\u7EFF")
2944
+
2945
+ **Restrictions**:
2946
+ - Cannot pre-complete cycle-type tasks (they are periodic).
2947
+ `.trim();function Q6($){return{name:"task_pre_complete",description:nF,parameters:E3,execute:async(J,Q)=>{let X=E3.parse(J),Y=Q.session_id||"unknown";try{let G=await $.preCompleteTask(X.task_id,Y,X.deliverable_storage_path,X.current_status);if(!G)return{success:!1,output:"",error:`Task not found: ${X.task_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:X.deliverable_storage_path?`Task submitted for acceptance (to_validate): #${G.id} - ${G.title}
2948
+ Deliverable (context + operation): ${X.deliverable_storage_path}`:`Task submitted for acceptance (to_validate): #${G.id} - ${G.title}
2949
+ Deliverable: (no path provided)`,metadata:{execution_time_ms:0,task:G}}}catch(G){return{success:!1,output:"",error:G instanceof Error?G.message:String(G),metadata:{execution_time_ms:0}}}}}}function v3($,J){if($.updatedAt<J.updatedAt)return 1;if($.updatedAt>J.updatedAt)return-1;if($.id<J.id)return 1;if($.id>J.id)return-1;return 0}function x3($,J){if(J<0)return $;if(J===0)return $.map((Q)=>({...Q,children:[]}));return $.map((Q)=>({...Q,children:x3(Q.children,J-1)}))}function h3($){let J=0;for(let Q of $)J+=1+h3(Q.children);return J}function rF($){let J=new Map,Q=new Map,X=[];for(let Y of $)J.set(Y.id,{id:Y.id,title:Y.title,status:Y.status,type:Y.type,priority:Y.priority,progress:Y.progress,children:[]});for(let Y of $){let G=Y.parent_task_id;if(G!==void 0&&G!==null&&J.has(G)){let q=Q.get(G)||[];q.push(Y),Q.set(G,q)}else X.push(Y)}for(let[Y,G]of Q.entries()){let q=J.get(Y);G.sort(v3),q.children=G.map((W)=>J.get(W.id))}return X.sort(v3),X.map((Y)=>J.get(Y.id))}function X6($){return{name:"task_tree",description:"View the task tree (forest) with optional filters. Use this BEFORE task_create to decide whether to create a root task (omit parent_task_id) or attach to an existing parent. "+"depth: 0=\u53EA\u6839\u4EFB\u52A1, 1=\u6839+\u4E00\u5C42\u5B50\u4EFB\u52A1, 2=\u6839+\u4E8C\u5C42\u5B50\u4EFB\u52A1 (default), "+"-1 or omitted as -1=\u65E0\u9650\u5C42\u7EA7. "+`Returns { total, truncated, depth, parent_task_id, nodes } where:
2652
2950
  - total: count of ALL tasks in the returned tree (incl. descendants)
2653
2951
  - truncated: always false for now (no pagination cap on tree)
2654
2952
  - depth: the resolved depth value
2655
2953
  - parent_task_id: the root's id, or null for forest mode
2656
2954
  - nodes: TaskNode[] with { id, title, status, type, priority, progress, children }
2657
- Note: \`total\` is the FIRST field in the response so it survives tail-truncation by ToolComponent.truncateOutput.`,parameters:b3,execute:async(J,Q)=>{let X=b3.parse(J);try{let W=[],G=X.parent_task_id??null;if(X.parent_task_id!==void 0&&X.parent_task_id!==null){let H=await $.getTask(X.parent_task_id);if(!H)W=[];else{let B=await $.getTaskTree(X.parent_task_id,X.depth===-1?-1:Math.max(0,X.depth-1));W=[H,...B]}}else W=(await $.listTasks({status:X.status,priority:X.priority,type:X.type,include_archived:X.include_archived,limit:9999,offset:0})).tasks;if(X.parent_task_id!==void 0&&X.parent_task_id!==null){if(X.status)W=W.filter((H)=>H.status===X.status);if(X.priority)W=W.filter((H)=>H.priority===X.priority);if(X.type)W=W.filter((H)=>H.type===X.type);if(!X.include_archived)W=W.filter((H)=>H.status!=="archived")}let Y=mF(W);if(X.parent_task_id===void 0||X.parent_task_id===null)Y=E3(Y,X.depth);let q=C3(Y);return{success:!0,output:JSON.stringify({total:q,truncated:!1,depth:X.depth,parent_task_id:G,nodes:Y}),metadata:{execution_time_ms:0}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}var A9=K.enum(["create","progress","milestone","problem","solution","decision","review","completed","workflow_extracted"]),h8=100,y8=500,_9=5000,uF=1,j9=200,h3=K.string().min(h8,{message:`process_description \u592A\u77ED\uFF08\u5C11\u4E8E ${h8} \u5B57\u7B26\uFF09\uFF0C\u65E0\u6CD5\u8868\u8FBE\u8FC7\u7A0B\u6982\u8981\uFF1B\u5982\u65E0\u8FC7\u7A0B\u4FE1\u606F\u8BF7\u7701\u7565\u8BE5\u5B57\u6BB5\uFF0C\u7EC6\u8282\u8BF7\u56DE\u67E5 sessionId\u3002`}).max(y8,{message:`process_description \u592A\u957F\uFF08\u8D85\u8FC7 ${y8} \u5B57\u7B26\uFF09\uFF0C\u4F1A\u9000\u5316\u4E3A\u65E5\u5FD7\u7EC6\u8282\uFF1B\u64CD\u4F5C\u8BB0\u5F55\u53EA\u627F\u62C5 milestone \u6982\u8981\uFF0C\u5B8C\u6574\u7EC6\u8282\u8BF7\u901A\u8FC7 sessionId \u56DE\u67E5 session\u3002`}).describe("\u8FC7\u7A0B\u6982\u8981\uFF08process_description\uFF09\uFF1A\u91C7\u53D6\u7684\u7B56\u7565 + \u5DE5\u5177\u6B65\u9AA4\u6982\u8981\uFF1B"+`\u4E25\u683C\u63A7\u5236 ${h8}-${y8} \u5B57\u7B26\u3002`+"\u64CD\u4F5C\u8BB0\u5F55\u662F\u8282\u70B9\u9636\u6BB5 milestone \u6458\u8981\uFF0C\u5B8C\u6574\u8FC7\u7A0B\u901A\u8FC7 sessionId \u56DE\u67E5 session\uFF1B"+"milestone_description \u624D\u662F\u8FBE\u6210\u7684\u72B6\u6001/\u7ED3\u679C\u63CF\u8FF0\u3002"),y3=K.string().min(uF,{message:"milestone_title \u4E0D\u80FD\u4E3A\u7A7A"}).max(j9,{message:`milestone_title \u8D85\u8FC7 ${j9} \u5B57\u7B26\uFF0C\u5EFA\u8BAE\u7CBE\u7B80\uFF08\u4E00\u884C\u6807\u9898\u5373\u53EF\uFF09\u3002`}).describe("\u91CC\u7A0B\u7891\u6807\u9898\uFF08milestone_title\uFF09\uFF1A\u8FBE\u6210\u7684\u91CC\u7A0B\u7891/\u72B6\u6001\u7684\u4E00\u53E5\u8BDD\u6807\u9898\uFF1B"+"\u5FC5\u586B\uFF0C1-200 \u5B57\u7B26\u3002"),g3=K.string().max(_9,{message:`milestone_description \u8D85\u8FC7 ${_9} \u5B57\u7B26\uFF1B\u5982\u9700\u66F4\u8BE6\u7EC6\u7684\u8FC7\u7A0B\uFF0C\u8BF7\u6539\u7528 process_description\u3002`}).optional().describe("\u72B6\u6001/\u7ED3\u679C\u63CF\u8FF0\uFF08milestone_description\uFF09\uFF1A\u8FBE\u6210\u7684\u72B6\u6001\u6216\u7ED3\u679C\u63CF\u8FF0\uFF1B"+"\u53EF\u957F\u53EF\u77ED\uFF1B\u8FC7\u7A0B\u6982\u8981\u5E94\u653E\u5728 process_description\uFF0C\u4E0D\u8981\u4E0E\u672C\u5B57\u6BB5\u91CD\u590D\u3002"),lF=K.object({task_id:K.number().describe("Task ID"),milestone_type:A9.optional(),milestone_title:y3.optional(),milestone_description:g3,process_description:h3.optional(),action_type:A9.optional(),action_title:K.string().min(1).max(j9).optional(),action_description:K.string().max(_9).optional(),md_path:K.string().optional().describe("Path to detailed markdown documentation")}),f3=lF.transform(($)=>{let J=[],Q=$.milestone_type,X=$.milestone_title,W=$.milestone_description;if(!Q&&$.action_type)Q=$.action_type,J.push("action_type");if(!X&&$.action_title)X=$.action_title,J.push("action_title");if(W===void 0&&$.action_description!==void 0)W=$.action_description,J.push("action_description");return{task_id:$.task_id,milestone_type:Q,milestone_title:X,milestone_description:W,process_description:$.process_description,md_path:$.md_path,_deprecated_fields_used:J}}),T3=K.object({operation_id:K.number().describe("Operation ID")}),I3=K.object({task_id:K.number().describe("Task ID"),milestone_type:A9.optional(),action_type:A9.optional(),limit:K.number().optional().default(20),offset:K.number().optional().default(0)}).transform(($)=>{let J=[],Q=$.milestone_type;if(!Q&&$.action_type)Q=$.action_type,J.push("action_type");return{task_id:$.task_id,milestone_type:Q,limit:$.limit,offset:$.offset,_deprecated_fields_used:J}}),cF=K.object({operation_id:K.number().describe("Operation ID"),milestone_title:y3.optional(),milestone_description:g3,process_description:h3.optional(),action_title:K.string().min(1).max(j9).optional(),action_description:K.string().max(_9).optional()}),v3=cF.transform(($)=>{let J=[],Q=$.milestone_title,X=$.milestone_description;if(!Q&&$.action_title)Q=$.action_title,J.push("action_title");if(X===void 0&&$.action_description!==void 0)X=$.action_description,J.push("action_description");return{operation_id:$.operation_id,milestone_title:Q,milestone_description:X,process_description:$.process_description,_deprecated_fields_used:J}}),x3=K.object({operation_id:K.number().describe("Operation ID")});function dF($){return`Invalid parameters: ${$.issues.map((Q)=>`${Q.path.join(".")||"<root>"}: ${Q.message}`).join("; ")}`}function pF($){if(!$.milestone_type)return{ok:!1,error:"milestone_type is required (or action_type for backward compatibility). Use one of: create, progress, milestone, problem, solution, decision, review, completed, workflow_extracted."};if(!$.milestone_title)return{ok:!1,error:"milestone_title is required (or action_title for backward compatibility)."};return{ok:!0,milestoneType:$.milestone_type,milestoneTitle:$.milestone_title}}function e2($){return{name:"task_operation_create",description:"Create an operation record for a task. Tracks milestones (state/result) and process (strategy + tool steps). Dual-dimension schema: milestone_type/title/description captures WHAT milestone was reached; process_description (100-500 chars) captures HOW. Legacy action_* fields are accepted as deprecated aliases.",parameters:f3,execute:async(J,Q)=>{let X;try{X=f3.parse(J)}catch(Y){if(Y instanceof Y0)return{success:!1,output:"",error:dF(Y),metadata:{execution_time_ms:0}};throw Y}let W=pF(X);if(!W.ok)return{success:!1,output:"",error:W.error,metadata:{execution_time_ms:0}};let G=Q.session_id||"unknown";try{let Y=await $.createOperation({taskId:X.task_id,sessionId:G,milestoneType:W.milestoneType,milestoneTitle:W.milestoneTitle,milestoneDescription:X.milestone_description,processDescription:X.process_description,mdPath:X.md_path}),q=`Operation created: #${Y.id} for task #${Y.taskId} [milestone=${Y.milestoneType}] ${Y.milestoneTitle}`,H=[];if(X._deprecated_fields_used.length>0)H.push(`\u26A0\uFE0F DEPRECATION NOTICE: \u4F60\u4F7F\u7528\u4E86\u65E7\u7684 action_* \u5B57\u6BB5 (${X._deprecated_fields_used.join(", ")})\uFF0C\u5DF2\u81EA\u52A8\u6620\u5C04\u5230 milestone_* \u5B57\u6BB5\u3002`+"\u8BF7\u5C3D\u5FEB\u8FC1\u79FB\u5230 milestone_type / milestone_title / milestone_description \u4E3B\u5B57\u6BB5\u3002");if(H.length>0)q+=`
2955
+ Note: \`total\` is the FIRST field in the response so it survives tail-truncation by ToolComponent.truncateOutput.`,parameters:I3,execute:async(J,Q)=>{let X=I3.parse(J);try{let Y=[],G=X.parent_task_id??null;if(X.parent_task_id!==void 0&&X.parent_task_id!==null){let z=await $.getTask(X.parent_task_id);if(!z)Y=[];else{let H=await $.getTaskTree(X.parent_task_id,X.depth===-1?-1:Math.max(0,X.depth-1));Y=[z,...H]}}else Y=(await $.listTasks({status:X.status,priority:X.priority,type:X.type,include_archived:X.include_archived,limit:9999,offset:0})).tasks;if(X.parent_task_id!==void 0&&X.parent_task_id!==null){if(X.status)Y=Y.filter((z)=>z.status===X.status);if(X.priority)Y=Y.filter((z)=>z.priority===X.priority);if(X.type)Y=Y.filter((z)=>z.type===X.type);if(!X.include_archived)Y=Y.filter((z)=>z.status!=="archived")}let q=rF(Y);if(X.parent_task_id===void 0||X.parent_task_id===null)q=x3(q,X.depth);let W=h3(q);return{success:!0,output:JSON.stringify({total:W,truncated:!1,depth:X.depth,parent_task_id:G,nodes:q}),metadata:{execution_time_ms:0}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}var _9=K.enum(["create","progress","milestone","problem","solution","decision","review","completed","workflow_extracted"]),g8=100,k8=500,A9=5000,aF=1,Z9=200,l3=K.string().min(g8,{message:`process_description \u592A\u77ED\uFF08\u5C11\u4E8E ${g8} \u5B57\u7B26\uFF09\uFF0C\u65E0\u6CD5\u8868\u8FBE\u8FC7\u7A0B\u6982\u8981\uFF1B\u5982\u65E0\u8FC7\u7A0B\u4FE1\u606F\u8BF7\u7701\u7565\u8BE5\u5B57\u6BB5\uFF0C\u7EC6\u8282\u8BF7\u56DE\u67E5 sessionId\u3002`}).max(k8,{message:`process_description \u592A\u957F\uFF08\u8D85\u8FC7 ${k8} \u5B57\u7B26\uFF09\uFF0C\u4F1A\u9000\u5316\u4E3A\u65E5\u5FD7\u7EC6\u8282\uFF1B\u64CD\u4F5C\u8BB0\u5F55\u53EA\u627F\u62C5 milestone \u6982\u8981\uFF0C\u5B8C\u6574\u7EC6\u8282\u8BF7\u901A\u8FC7 sessionId \u56DE\u67E5 session\u3002`}).describe("\u8FC7\u7A0B\u6982\u8981\uFF08process_description\uFF09\uFF1A\u91C7\u53D6\u7684\u7B56\u7565 + \u5DE5\u5177\u6B65\u9AA4\u6982\u8981\uFF1B"+`\u4E25\u683C\u63A7\u5236 ${g8}-${k8} \u5B57\u7B26\u3002`+"\u64CD\u4F5C\u8BB0\u5F55\u662F\u8282\u70B9\u9636\u6BB5 milestone \u6458\u8981\uFF0C\u5B8C\u6574\u8FC7\u7A0B\u901A\u8FC7 sessionId \u56DE\u67E5 session\uFF1B"+"milestone_description \u624D\u662F\u8FBE\u6210\u7684\u72B6\u6001/\u7ED3\u679C\u63CF\u8FF0\u3002"),c3=K.string().min(aF,{message:"milestone_title \u4E0D\u80FD\u4E3A\u7A7A"}).max(Z9,{message:`milestone_title \u8D85\u8FC7 ${Z9} \u5B57\u7B26\uFF0C\u5EFA\u8BAE\u7CBE\u7B80\uFF08\u4E00\u884C\u6807\u9898\u5373\u53EF\uFF09\u3002`}).describe("\u91CC\u7A0B\u7891\u6807\u9898\uFF08milestone_title\uFF09\uFF1A\u8FBE\u6210\u7684\u91CC\u7A0B\u7891/\u72B6\u6001\u7684\u4E00\u53E5\u8BDD\u6807\u9898\uFF1B"+"\u5FC5\u586B\uFF0C1-200 \u5B57\u7B26\u3002"),p3=K.string().max(A9,{message:`milestone_description \u8D85\u8FC7 ${A9} \u5B57\u7B26\uFF1B\u5982\u9700\u66F4\u8BE6\u7EC6\u7684\u8FC7\u7A0B\uFF0C\u8BF7\u6539\u7528 process_description\u3002`}).optional().describe("\u72B6\u6001/\u7ED3\u679C\u63CF\u8FF0\uFF08milestone_description\uFF09\uFF1A\u8FBE\u6210\u7684\u72B6\u6001\u6216\u7ED3\u679C\u63CF\u8FF0\uFF1B"+"\u53EF\u957F\u53EF\u77ED\uFF1B\u8FC7\u7A0B\u6982\u8981\u5E94\u653E\u5728 process_description\uFF0C\u4E0D\u8981\u4E0E\u672C\u5B57\u6BB5\u91CD\u590D\u3002"),sF=K.object({task_id:K.number().describe("Task ID"),milestone_type:_9.optional(),milestone_title:c3.optional(),milestone_description:p3,process_description:l3.optional(),action_type:_9.optional(),action_title:K.string().min(1).max(Z9).optional(),action_description:K.string().max(A9).optional(),md_path:K.string().optional().describe("Path to detailed markdown documentation")}),y3=sF.transform(($)=>{let J=[],Q=$.milestone_type,X=$.milestone_title,Y=$.milestone_description;if(!Q&&$.action_type)Q=$.action_type,J.push("action_type");if(!X&&$.action_title)X=$.action_title,J.push("action_title");if(Y===void 0&&$.action_description!==void 0)Y=$.action_description,J.push("action_description");return{task_id:$.task_id,milestone_type:Q,milestone_title:X,milestone_description:Y,process_description:$.process_description,md_path:$.md_path,_deprecated_fields_used:J}}),g3=K.object({operation_id:K.number().describe("Operation ID")}),k3=K.object({task_id:K.number().describe("Task ID"),milestone_type:_9.optional(),action_type:_9.optional(),limit:K.number().optional().default(20),offset:K.number().optional().default(0)}).transform(($)=>{let J=[],Q=$.milestone_type;if(!Q&&$.action_type)Q=$.action_type,J.push("action_type");return{task_id:$.task_id,milestone_type:Q,limit:$.limit,offset:$.offset,_deprecated_fields_used:J}}),oF=K.object({operation_id:K.number().describe("Operation ID"),milestone_title:c3.optional(),milestone_description:p3,process_description:l3.optional(),action_title:K.string().min(1).max(Z9).optional(),action_description:K.string().max(A9).optional()}),m3=oF.transform(($)=>{let J=[],Q=$.milestone_title,X=$.milestone_description;if(!Q&&$.action_title)Q=$.action_title,J.push("action_title");if(X===void 0&&$.action_description!==void 0)X=$.action_description,J.push("action_description");return{operation_id:$.operation_id,milestone_title:Q,milestone_description:X,process_description:$.process_description,_deprecated_fields_used:J}}),u3=K.object({operation_id:K.number().describe("Operation ID")});function tF($){return`Invalid parameters: ${$.issues.map((Q)=>`${Q.path.join(".")||"<root>"}: ${Q.message}`).join("; ")}`}function eF($){if(!$.milestone_type)return{ok:!1,error:"milestone_type is required (or action_type for backward compatibility). Use one of: create, progress, milestone, problem, solution, decision, review, completed, workflow_extracted."};if(!$.milestone_title)return{ok:!1,error:"milestone_title is required (or action_title for backward compatibility)."};return{ok:!0,milestoneType:$.milestone_type,milestoneTitle:$.milestone_title}}function Y6($){return{name:"task_operation_create",description:"Create an operation record for a task. Tracks milestones (state/result) and process (strategy + tool steps). Dual-dimension schema: milestone_type/title/description captures WHAT milestone was reached; process_description (100-500 chars) captures HOW. Legacy action_* fields are accepted as deprecated aliases.",parameters:y3,execute:async(J,Q)=>{let X;try{X=y3.parse(J)}catch(q){if(q instanceof q0)return{success:!1,output:"",error:tF(q),metadata:{execution_time_ms:0}};throw q}let Y=eF(X);if(!Y.ok)return{success:!1,output:"",error:Y.error,metadata:{execution_time_ms:0}};let G=Q.session_id||"unknown";try{let q=await $.createOperation({taskId:X.task_id,sessionId:G,milestoneType:Y.milestoneType,milestoneTitle:Y.milestoneTitle,milestoneDescription:X.milestone_description,processDescription:X.process_description,mdPath:X.md_path}),W=`Operation created: #${q.id} for task #${q.taskId} [milestone=${q.milestoneType}] ${q.milestoneTitle}`,z=[];if(X._deprecated_fields_used.length>0)z.push(`\u26A0\uFE0F DEPRECATION NOTICE: \u4F60\u4F7F\u7528\u4E86\u65E7\u7684 action_* \u5B57\u6BB5 (${X._deprecated_fields_used.join(", ")})\uFF0C\u5DF2\u81EA\u52A8\u6620\u5C04\u5230 milestone_* \u5B57\u6BB5\u3002`+"\u8BF7\u5C3D\u5FEB\u8FC1\u79FB\u5230 milestone_type / milestone_title / milestone_description \u4E3B\u5B57\u6BB5\u3002");if(z.length>0)W+=`
2658
2956
 
2659
- `+H.join(`
2660
- `);return{success:!0,output:q,metadata:{execution_time_ms:0,operation_id:Y.id,task_id:Y.taskId,session_id:Y.sessionId,deprecated_fields_used:X._deprecated_fields_used}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}function g8($){return{name:"task_operation_get",description:"Get a single operation record by ID.",parameters:T3,execute:async(J,Q)=>{let X=T3.parse(J);try{let W=await $.getOperation(X.operation_id);if(!W)return{success:!1,output:"",error:`Operation not found: ${X.operation_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:JSON.stringify(W,null,2),metadata:{execution_time_ms:0}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}function $6($){return{name:"task_operation_list",description:"List operation records for a task with optional filters. Use milestone_type (canonical) or action_type (deprecated, auto-mapped).",parameters:I3,execute:async(J,Q)=>{let X=I3.parse(J);try{let W=await $.listOperations({taskId:X.task_id,milestoneType:X.milestone_type,limit:X.limit,offset:X.offset}),G=JSON.stringify({operations:W,count:W.length});if(X._deprecated_fields_used.length>0)G=`\u26A0\uFE0F DEPRECATION NOTICE: \u4F60\u4F7F\u7528\u4E86\u65E7\u7684 action_type \u5B57\u6BB5\uFF0C\u5DF2\u81EA\u52A8\u6620\u5C04\u5230 milestone_type\u3002
2957
+ `+z.join(`
2958
+ `);return{success:!0,output:W,metadata:{execution_time_ms:0,operation_id:q.id,task_id:q.taskId,session_id:q.sessionId,deprecated_fields_used:X._deprecated_fields_used}}}catch(q){return{success:!1,output:"",error:q instanceof Error?q.message:String(q),metadata:{execution_time_ms:0}}}}}}function m8($){return{name:"task_operation_get",description:"Get a single operation record by ID.",parameters:g3,execute:async(J,Q)=>{let X=g3.parse(J);try{let Y=await $.getOperation(X.operation_id);if(!Y)return{success:!1,output:"",error:`Operation not found: ${X.operation_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:JSON.stringify(Y,null,2),metadata:{execution_time_ms:0}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}function G6($){return{name:"task_operation_list",description:"List operation records for a task with optional filters. Use milestone_type (canonical) or action_type (deprecated, auto-mapped).",parameters:k3,execute:async(J,Q)=>{let X=k3.parse(J);try{let Y=await $.listOperations({taskId:X.task_id,milestoneType:X.milestone_type,limit:X.limit,offset:X.offset}),G=JSON.stringify({operations:Y,count:Y.length});if(X._deprecated_fields_used.length>0)G=`\u26A0\uFE0F DEPRECATION NOTICE: \u4F60\u4F7F\u7528\u4E86\u65E7\u7684 action_type \u5B57\u6BB5\uFF0C\u5DF2\u81EA\u52A8\u6620\u5C04\u5230 milestone_type\u3002
2661
2959
 
2662
- `+G;return{success:!0,output:G,metadata:{execution_time_ms:0,deprecated_fields_used:X._deprecated_fields_used}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}function iF($){return`Invalid parameters: ${$.issues.map((Q)=>`${Q.path.join(".")||"<root>"}: ${Q.message}`).join("; ")}`}function k8($){return{name:"task_operation_update",description:"Update an operation record. Use milestone_title / milestone_description (canonical) or action_title / action_description (deprecated, auto-mapped). process_description captures the process (100-500 chars).",parameters:v3,execute:async(J,Q)=>{let X;try{X=v3.parse(J)}catch(W){if(W instanceof Y0)return{success:!1,output:"",error:iF(W),metadata:{execution_time_ms:0}};throw W}try{let W=await $.updateOperation(X.operation_id,{milestoneTitle:X.milestone_title,milestoneDescription:X.milestone_description,processDescription:X.process_description});if(!W)return{success:!1,output:"",error:`Operation not found: ${X.operation_id}`,metadata:{execution_time_ms:0}};let G=`Operation updated: #${W.id}`;if(X._deprecated_fields_used.length>0)G+=`
2960
+ `+G;return{success:!0,output:G,metadata:{execution_time_ms:0,deprecated_fields_used:X._deprecated_fields_used}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}function $M($){return`Invalid parameters: ${$.issues.map((Q)=>`${Q.path.join(".")||"<root>"}: ${Q.message}`).join("; ")}`}function u8($){return{name:"task_operation_update",description:"Update an operation record. Use milestone_title / milestone_description (canonical) or action_title / action_description (deprecated, auto-mapped). process_description captures the process (100-500 chars).",parameters:m3,execute:async(J,Q)=>{let X;try{X=m3.parse(J)}catch(Y){if(Y instanceof q0)return{success:!1,output:"",error:$M(Y),metadata:{execution_time_ms:0}};throw Y}try{let Y=await $.updateOperation(X.operation_id,{milestoneTitle:X.milestone_title,milestoneDescription:X.milestone_description,processDescription:X.process_description});if(!Y)return{success:!1,output:"",error:`Operation not found: ${X.operation_id}`,metadata:{execution_time_ms:0}};let G=`Operation updated: #${Y.id}`;if(X._deprecated_fields_used.length>0)G+=`
2663
2961
 
2664
- \u26A0\uFE0F DEPRECATION NOTICE: \u4F60\u4F7F\u7528\u4E86\u65E7\u7684 action_* \u5B57\u6BB5 (${X._deprecated_fields_used.join(", ")})\uFF0C\u5DF2\u81EA\u52A8\u6620\u5C04\u5230 milestone_* \u5B57\u6BB5\u3002`+"\u8BF7\u5C3D\u5FEB\u8FC1\u79FB\u5230 milestone_* \u5B57\u6BB5\u3002";return{success:!0,output:G,metadata:{execution_time_ms:0,operation:W,deprecated_fields_used:X._deprecated_fields_used}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}function m8($){return{name:"task_operation_delete",description:"Delete an operation record.",parameters:x3,execute:async(J,Q)=>{let X=x3.parse(J);try{if(!await $.deleteOperation(X.operation_id))return{success:!1,output:"",error:`Operation not found: ${X.operation_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:`Operation deleted: #${X.operation_id}`,metadata:{execution_time_ms:0}}}catch(W){return{success:!1,output:"",error:W instanceof Error?W.message:String(W),metadata:{execution_time_ms:0}}}}}}import{join as i3}from"path";function o($){k3.warn($)}var k3,J6=a(()=>{r(),k3=i("task:migration")}),m3={};i0(m3,{runMigration:()=>nF});function nF($){o(`[Migration 001] Starting migration for: ${$}`);let J=W2($);try{try{J.run("ALTER TABLE task ADD COLUMN project_path TEXT"),o("[Migration 001] Added project_path column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 001] project_path column already exists, skipping");else throw Q}try{J.run("ALTER TABLE task ADD COLUMN context TEXT"),o("[Migration 001] Added context column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 001] context column already exists, skipping");else throw Q}o("[Migration 001] Migration completed successfully")}finally{J.close()}}var rF=a(()=>{H$(),J6()}),u3={};i0(u3,{runMigration:()=>aF});function aF($){o(`[Migration 002] Starting migration for: ${$}`);let J=W2($);try{try{J.run("ALTER TABLE task ADD COLUMN type TEXT NOT NULL DEFAULT 'normal'"),o("[Migration 002] Added type column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 002] type column already exists, skipping");else throw Q}o("[Migration 002] Migration completed successfully")}finally{J.close()}}var sF=a(()=>{H$(),J6()}),l3={};i0(l3,{runMigration:()=>oF});function oF($){o(`[Migration 003] Starting migration for: ${$}`);let J=W2($);try{try{J.run("ALTER TABLE task_operation ADD COLUMN process_description TEXT NOT NULL DEFAULT ''"),o("[Migration 003] Added process_description column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 003] process_description column already exists, skipping");else throw Q}o("[Migration 003] Migration completed successfully")}finally{J.close()}}var tF=a(()=>{H$(),J6()}),c3={};i0(c3,{runMigration:()=>eF});function eF($){o(`[Migration 004] Starting migration for: ${$}`);let J=W2($);try{let Q=new Set,X=J.query("PRAGMA table_info(task_operation)").all();for(let W of X)Q.add(W.name);for(let{oldName:W,newName:G}of d3){let Y=Q.has(W),q=Q.has(G);if(Y&&!q)J.run(`ALTER TABLE task_operation RENAME COLUMN ${W} TO ${G}`),o(`[Migration 004] Renamed ${W} -> ${G}`);else if(q)o(`[Migration 004] ${G} already exists, skipping rename of ${W}`);else o(`[Migration 004] ${W} not present, skipping rename to ${G}`)}o("[Migration 004] Migration completed successfully")}finally{J.close()}}var d3,$O=a(()=>{H$(),J6(),d3=[{oldName:"action_type",newName:"milestone_type"},{oldName:"action_title",newName:"milestone_title"},{oldName:"action_description",newName:"milestone_description"}]}),p3={};i0(p3,{runMigration:()=>JO});function JO($){o(`[Migration 005] Starting migration for: ${$}`);let J=W2($),Q={blobCountBefore:0,blobCountAfter:0,ran:!1};try{if(J.query("SELECT name FROM sqlite_master WHERE type='table' AND name='task'").all().length===0)return o("[Migration 005] task table does not exist, skipping"),Q;let W=J.query("SELECT COUNT(*) as cnt FROM task WHERE typeof(description) = 'blob'").all();if(Q.blobCountBefore=W[0]?.cnt??0,Q.blobCountBefore===0)return o("[Migration 005] No BLOB descriptions found, no action needed"),Q;J.run("UPDATE task SET description = CAST(description AS TEXT) WHERE typeof(description) = 'blob'"),Q.ran=!0;let G=J.query("SELECT COUNT(*) as cnt FROM task WHERE typeof(description) = 'blob'").all();Q.blobCountAfter=G[0]?.cnt??0,o(`[Migration 005] Converted ${Q.blobCountBefore-Q.blobCountAfter} BLOB description(s) to TEXT`),o("[Migration 005] Migration completed successfully")}finally{J.close()}return Q}var QO=a(()=>{H$(),J6()});function XO(){if(typeof Bun<"u"){let{Database:$}=e("bun:sqlite");return $}try{let{DatabaseSync:$}=e("node:sqlite");if(typeof $==="function")return $}catch{}return e("better-sqlite3")}function W2($){let J=XO();return WO(new J($))}function WO($){if(typeof $.run!=="function")$.run=function(J,...Q){if(Q.length>0)return this.prepare(J).run(...Q);else return this.exec(J)};return $.query=function(J,...Q){if(Q.length===0){let W=this.prepare(J);return{all:()=>W.all(),get:()=>W.get(),run:()=>W.run()}}let X=this.prepare(J);return{all:(...W)=>X.all(...Q,...W),get:(...W)=>X.get(...Q,...W),run:(...W)=>X.run(...Q,...W)}},$}function GO(){let $=process.env.HOME||process.env.USERPROFILE||"/tmp";return i3($,".local","share")}function N9(){return i3(GO(),"roy-agent","tasks.db")}var N$,Z$,H$=a(()=>{r(),z0(),N$=i("task:store"),Z$=class ${db=null;dbPath;initialized=!1;tasksCache=new Map;operationsCache=new Map;constructor(J){this.dbPath=J||N9()}async initialize(){if(this.initialized)return;if(this.dbPath!==":memory:"){let J=e("fs"),X=e("path").dirname(this.dbPath);if(!J.existsSync(X))J.mkdirSync(X,{recursive:!0})}if(this.db=W2(this.dbPath),this.db.run(`
2962
+ \u26A0\uFE0F DEPRECATION NOTICE: \u4F60\u4F7F\u7528\u4E86\u65E7\u7684 action_* \u5B57\u6BB5 (${X._deprecated_fields_used.join(", ")})\uFF0C\u5DF2\u81EA\u52A8\u6620\u5C04\u5230 milestone_* \u5B57\u6BB5\u3002`+"\u8BF7\u5C3D\u5FEB\u8FC1\u79FB\u5230 milestone_* \u5B57\u6BB5\u3002";return{success:!0,output:G,metadata:{execution_time_ms:0,operation:Y,deprecated_fields_used:X._deprecated_fields_used}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}function l8($){return{name:"task_operation_delete",description:"Delete an operation record.",parameters:u3,execute:async(J,Q)=>{let X=u3.parse(J);try{if(!await $.deleteOperation(X.operation_id))return{success:!1,output:"",error:`Operation not found: ${X.operation_id}`,metadata:{execution_time_ms:0}};return{success:!0,output:`Operation deleted: #${X.operation_id}`,metadata:{execution_time_ms:0}}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:String(Y),metadata:{execution_time_ms:0}}}}}}import{join as t3}from"path";function o($){d3.warn($)}var d3,q6=a(()=>{n(),d3=i("task:migration")}),i3={};r0(i3,{runMigration:()=>JM});function JM($){o(`[Migration 001] Starting migration for: ${$}`);let J=H2($);try{try{J.run("ALTER TABLE task ADD COLUMN project_path TEXT"),o("[Migration 001] Added project_path column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 001] project_path column already exists, skipping");else throw Q}try{J.run("ALTER TABLE task ADD COLUMN context TEXT"),o("[Migration 001] Added context column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 001] context column already exists, skipping");else throw Q}o("[Migration 001] Migration completed successfully")}finally{J.close()}}var QM=a(()=>{U$(),q6()}),n3={};r0(n3,{runMigration:()=>XM});function XM($){o(`[Migration 002] Starting migration for: ${$}`);let J=H2($);try{try{J.run("ALTER TABLE task ADD COLUMN type TEXT NOT NULL DEFAULT 'normal'"),o("[Migration 002] Added type column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 002] type column already exists, skipping");else throw Q}o("[Migration 002] Migration completed successfully")}finally{J.close()}}var YM=a(()=>{U$(),q6()}),r3={};r0(r3,{runMigration:()=>GM});function GM($){o(`[Migration 003] Starting migration for: ${$}`);let J=H2($);try{try{J.run("ALTER TABLE task_operation ADD COLUMN process_description TEXT NOT NULL DEFAULT ''"),o("[Migration 003] Added process_description column")}catch(Q){if(Q.message?.includes("duplicate column name"))o("[Migration 003] process_description column already exists, skipping");else throw Q}o("[Migration 003] Migration completed successfully")}finally{J.close()}}var qM=a(()=>{U$(),q6()}),a3={};r0(a3,{runMigration:()=>WM});function WM($){o(`[Migration 004] Starting migration for: ${$}`);let J=H2($);try{let Q=new Set,X=J.query("PRAGMA table_info(task_operation)").all();for(let Y of X)Q.add(Y.name);for(let{oldName:Y,newName:G}of s3){let q=Q.has(Y),W=Q.has(G);if(q&&!W)J.run(`ALTER TABLE task_operation RENAME COLUMN ${Y} TO ${G}`),o(`[Migration 004] Renamed ${Y} -> ${G}`);else if(W)o(`[Migration 004] ${G} already exists, skipping rename of ${Y}`);else o(`[Migration 004] ${Y} not present, skipping rename to ${G}`)}o("[Migration 004] Migration completed successfully")}finally{J.close()}}var s3,zM=a(()=>{U$(),q6(),s3=[{oldName:"action_type",newName:"milestone_type"},{oldName:"action_title",newName:"milestone_title"},{oldName:"action_description",newName:"milestone_description"}]}),o3={};r0(o3,{runMigration:()=>HM});function HM($){o(`[Migration 005] Starting migration for: ${$}`);let J=H2($),Q={blobCountBefore:0,blobCountAfter:0,ran:!1};try{if(J.query("SELECT name FROM sqlite_master WHERE type='table' AND name='task'").all().length===0)return o("[Migration 005] task table does not exist, skipping"),Q;let Y=J.query("SELECT COUNT(*) as cnt FROM task WHERE typeof(description) = 'blob'").all();if(Q.blobCountBefore=Y[0]?.cnt??0,Q.blobCountBefore===0)return o("[Migration 005] No BLOB descriptions found, no action needed"),Q;J.run("UPDATE task SET description = CAST(description AS TEXT) WHERE typeof(description) = 'blob'"),Q.ran=!0;let G=J.query("SELECT COUNT(*) as cnt FROM task WHERE typeof(description) = 'blob'").all();Q.blobCountAfter=G[0]?.cnt??0,o(`[Migration 005] Converted ${Q.blobCountBefore-Q.blobCountAfter} BLOB description(s) to TEXT`),o("[Migration 005] Migration completed successfully")}finally{J.close()}return Q}var BM=a(()=>{U$(),q6()});function UM(){if(typeof Bun<"u"){let{Database:$}=e("bun:sqlite");return $}try{let{DatabaseSync:$}=e("node:sqlite");if(typeof $==="function")return $}catch{}return e("better-sqlite3")}function H2($){let J=UM();return VM(new J($))}function VM($){if(typeof $.run!=="function")$.run=function(J,...Q){if(Q.length>0)return this.prepare(J).run(...Q);else return this.exec(J)};return $.query=function(J,...Q){if(Q.length===0){let Y=this.prepare(J);return{all:()=>Y.all(),get:()=>Y.get(),run:()=>Y.run()}}let X=this.prepare(J);return{all:(...Y)=>X.all(...Q,...Y),get:(...Y)=>X.get(...Q,...Y),run:(...Y)=>X.run(...Q,...Y)}},$}function DM(){let $=process.env.HOME||process.env.USERPROFILE||"/tmp";return t3($,".local","share")}function w9(){return t3(DM(),"roy-agent","tasks.db")}var E$,S$,U$=a(()=>{n(),V0(),E$=i("task:store"),S$=class ${db=null;dbPath;initialized=!1;tasksCache=new Map;operationsCache=new Map;constructor(J){this.dbPath=J||w9()}async initialize(){if(this.initialized)return;if(this.dbPath!==":memory:"){let J=e("fs"),X=e("path").dirname(this.dbPath);if(!J.existsSync(X))J.mkdirSync(X,{recursive:!0})}if(this.db=H2(this.dbPath),this.db.run(`
2665
2963
  CREATE TABLE IF NOT EXISTS task (
2666
2964
  id INTEGER PRIMARY KEY AUTOINCREMENT,
2667
2965
  title TEXT NOT NULL,
@@ -2709,31 +3007,31 @@ Note: \`total\` is the FIRST field in the response so it survives tail-truncatio
2709
3007
  FOREIGN KEY (task_id) REFERENCES task(id) ON DELETE CASCADE,
2710
3008
  FOREIGN KEY (tag_id) REFERENCES task_tag(id) ON DELETE CASCADE
2711
3009
  )
2712
- `),this.db.run("CREATE INDEX IF NOT EXISTS idx_task_tag_relation_tag_id ON task_tag_relation(tag_id)"),this.db.run("CREATE INDEX IF NOT EXISTS idx_task_parent_task_id ON task(parent_task_id)"),this.dbPath!==":memory:"){try{let{runMigration:J}=(rF(),S$(m3));J(this.dbPath)}catch(J){N$.warn(`[Migration 001] Failed to run: ${J.message}`)}try{let{runMigration:J}=(sF(),S$(u3));J(this.dbPath)}catch(J){N$.warn(`[Migration 002] Failed to run: ${J.message}`)}try{let{runMigration:J}=(tF(),S$(l3));J(this.dbPath)}catch(J){N$.warn(`[Migration 003] Failed to run: ${J.message}`)}try{let{runMigration:J}=($O(),S$(c3));J(this.dbPath)}catch(J){N$.warn(`[Migration 004] Failed to run: ${J.message}`)}try{let{runMigration:J}=(QO(),S$(p3));J(this.dbPath)}catch(J){N$.warn(`[Migration 005] Failed to run: ${J.message}`)}}this.initialized=!0,N$.info(`TaskStore initialized at ${this.dbPath}`)}async createTask(J){await this.initialize();let Q=Date.now(),W=this.db.prepare(`
3010
+ `),this.db.run("CREATE INDEX IF NOT EXISTS idx_task_tag_relation_tag_id ON task_tag_relation(tag_id)"),this.db.run("CREATE INDEX IF NOT EXISTS idx_task_parent_task_id ON task(parent_task_id)"),this.dbPath!==":memory:"){try{let{runMigration:J}=(QM(),f$(i3));J(this.dbPath)}catch(J){E$.warn(`[Migration 001] Failed to run: ${J.message}`)}try{let{runMigration:J}=(YM(),f$(n3));J(this.dbPath)}catch(J){E$.warn(`[Migration 002] Failed to run: ${J.message}`)}try{let{runMigration:J}=(qM(),f$(r3));J(this.dbPath)}catch(J){E$.warn(`[Migration 003] Failed to run: ${J.message}`)}try{let{runMigration:J}=(zM(),f$(a3));J(this.dbPath)}catch(J){E$.warn(`[Migration 004] Failed to run: ${J.message}`)}try{let{runMigration:J}=(BM(),f$(o3));J(this.dbPath)}catch(J){E$.warn(`[Migration 005] Failed to run: ${J.message}`)}}this.initialized=!0,E$.info(`TaskStore initialized at ${this.dbPath}`)}async createTask(J){await this.initialize();let Q=Date.now(),Y=this.db.prepare(`
2713
3011
  INSERT INTO task (title, description, priority, type, parent_task_id,
2714
3012
  goals_and_expected_deliverables, due_date, tags, status,
2715
3013
  current_status, created_at, updated_at, project_path, context)
2716
3014
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'todo', '', ?, ?, ?, ?)
2717
- `).run(J.title,J.description||"",J.priority||"medium",J.type||"normal",J.parent_task_id||null,J.goals_and_expected_deliverables||"",J.due_date||null,J.tags?JSON.stringify(J.tags):null,Q,Q,J.project_path,J.context),G=await this.getTask(W.lastInsertRowid);if(G)return this.tasksCache.set(G.id,G),G;throw Error("Failed to create task")}async getTask(J){if(await this.initialize(),this.tasksCache.has(J))return this.tasksCache.get(J);let X=this.db.prepare("SELECT * FROM task WHERE id = ?").get(J);if(!X)return;let W=this.rowToTask(X);return this.tasksCache.set(J,W),W}async updateTask(J,Q){await this.initialize();let X=await this.getTask(J);if(!X)return;let W=[],G=[];if(Q.title!==void 0)W.push("title = ?"),G.push(Q.title);if(Q.description!==void 0)W.push("description = ?"),G.push(Q.description);if(Q.status!==void 0)W.push("status = ?"),G.push(Q.status);if(Q.priority!==void 0)W.push("priority = ?"),G.push(Q.priority);if(Q.type!==void 0)W.push("type = ?"),G.push(Q.type);if(Q.progress!==void 0)W.push("progress = ?"),G.push(Q.progress);if(Q.current_status!==void 0)W.push("current_status = ?"),G.push(Q.current_status);if(Q.goals_and_expected_deliverables!==void 0)W.push("goals_and_expected_deliverables = ?"),G.push(Q.goals_and_expected_deliverables);if(Q.due_date!==void 0)W.push("due_date = ?"),G.push(Q.due_date);if(Q.tags!==void 0)W.push("tags = ?"),G.push(JSON.stringify(Q.tags));if(Q.project_path!==void 0)W.push("project_path = ?"),G.push(Q.project_path);if(Q.context!==void 0)W.push("context = ?"),G.push(Q.context);if(Q.parent_task_id!==void 0)W.push("parent_task_id = ?"),G.push(Q.parent_task_id);if(W.length===0)return X;return W.push("updated_at = ?"),G.push(Date.now()),G.push(J),this.db.prepare(`UPDATE task SET ${W.join(", ")} WHERE id = ?`).run(...G),this.tasksCache.delete(J),this.getTask(J)}async deleteTask(J){await this.initialize();let X=this.db.prepare("DELETE FROM task WHERE id = ?").run(J);if(X.changes>0)this.tasksCache.delete(J),this.operationsCache.delete(J);return X.changes>0}async listTasks(J){if(await this.initialize(),J?.depth!==void 0&&J.depth>=0&&J.parent_task_id===void 0)return this.listTasksByDepth(J);let Q=["1=1"],X=[];if(J?.status)Q.push("status = ?"),X.push(J.status);if(J?.priority)Q.push("priority = ?"),X.push(J.priority);if(J?.type)Q.push("type = ?"),X.push(J.type);if(J?.parent_task_id!==void 0)Q.push("parent_task_id = ?"),X.push(J.parent_task_id);if(!J?.include_archived&&J?.status!=="archived")Q.push("status != 'archived'");let W=Q.join(" AND "),G=`SELECT COUNT(*) as total FROM task WHERE ${W}`,q=this.db.prepare(G).get(...X)?.total??0,H=`SELECT * FROM task WHERE ${W}`,B=[...X];if(H+=" ORDER BY updated_at DESC",J?.limit)H+=" LIMIT ?",B.push(J.limit);if(J?.offset)H+=" OFFSET ?",B.push(J.offset);return{tasks:this.db.prepare(H).all(...B).map((M)=>{let F=this.rowToTask(M);return this.tasksCache.set(F.id,F),F}),total:q}}async listTasksByDepth(J){let Q=J.depth??0,X=["1=1"],W=[];if(J.status)X.push("status = ?"),W.push(J.status);if(J.priority)X.push("priority = ?"),W.push(J.priority);if(J.type)X.push("type = ?"),W.push(J.type);if(!J?.include_archived&&J?.status!=="archived")X.push("status != 'archived'");let G=X.join(" AND "),Y=[];if(Q===0){let z=`SELECT * FROM task WHERE parent_task_id IS NULL AND ${G} ORDER BY updated_at DESC`,V=this.db.prepare(z).all(...W);for(let M of V){let F=this.rowToTask(M);this.tasksCache.set(F.id,F),Y.push(F)}}else{let V=this.db.prepare(`SELECT * FROM task WHERE parent_task_id IS NULL AND ${G} ORDER BY updated_at DESC`).all(...W).map((M)=>{let F=this.rowToTask(M);return this.tasksCache.set(F.id,F),F});Y.push(...V);for(let M=1;M<=Q;M++){if(V.length===0)break;let F=V.map((_)=>_.id),O=`SELECT * FROM task WHERE parent_task_id IN (${F.map(()=>"?").join(",")}) AND ${G} ORDER BY updated_at DESC`,L=this.db.prepare(O).all(...F,...W).map((_)=>{let Z=this.rowToTask(_);return this.tasksCache.set(Z.id,Z),Z});Y.push(...L),V=L}}let q=Y.length,H=J.offset??0,B=J.limit??q;return{tasks:Y.slice(H,H+B),total:q}}async getTaskTree(J,Q=-1){await this.initialize();let X=[],W=[J],G=0;while(W.length>0){if(Q!==-1&&G>=Q)break;let Y=W.map(()=>"?").join(","),q=this.db.prepare(`SELECT * FROM task WHERE parent_task_id IN (${Y}) ORDER BY updated_at DESC`).all(...W),H=[];for(let B of q){let U=this.rowToTask(B);this.tasksCache.set(U.id,U),X.push(U),H.push(U.id)}W=H,G++}return X}async getChildTasks(J,Q={}){return this.listTasks({...Q,parent_task_id:J})}async createOperation(J){await this.initialize();let Q=J.milestoneType??J.actionType,X=J.milestoneTitle??J.actionTitle,W=J.milestoneDescription??J.actionDescription;if(!Q||!X)throw Error("createOperation requires milestoneType and milestoneTitle (or legacy actionType/actionTitle)");let G=Date.now(),q=this.db.prepare(`
3015
+ `).run(J.title,J.description||"",J.priority||"medium",J.type||"normal",J.parent_task_id||null,J.goals_and_expected_deliverables||"",J.due_date||null,J.tags?JSON.stringify(J.tags):null,Q,Q,J.project_path,J.context),G=await this.getTask(Y.lastInsertRowid);if(G)return this.tasksCache.set(G.id,G),G;throw Error("Failed to create task")}async getTask(J){if(await this.initialize(),this.tasksCache.has(J))return this.tasksCache.get(J);let X=this.db.prepare("SELECT * FROM task WHERE id = ?").get(J);if(!X)return;let Y=this.rowToTask(X);return this.tasksCache.set(J,Y),Y}async updateTask(J,Q){await this.initialize();let X=await this.getTask(J);if(!X)return;let Y=[],G=[];if(Q.title!==void 0)Y.push("title = ?"),G.push(Q.title);if(Q.description!==void 0)Y.push("description = ?"),G.push(Q.description);if(Q.status!==void 0)Y.push("status = ?"),G.push(Q.status);if(Q.priority!==void 0)Y.push("priority = ?"),G.push(Q.priority);if(Q.type!==void 0)Y.push("type = ?"),G.push(Q.type);if(Q.progress!==void 0)Y.push("progress = ?"),G.push(Q.progress);if(Q.current_status!==void 0)Y.push("current_status = ?"),G.push(Q.current_status);if(Q.goals_and_expected_deliverables!==void 0)Y.push("goals_and_expected_deliverables = ?"),G.push(Q.goals_and_expected_deliverables);if(Q.due_date!==void 0)Y.push("due_date = ?"),G.push(Q.due_date);if(Q.tags!==void 0)Y.push("tags = ?"),G.push(JSON.stringify(Q.tags));if(Q.project_path!==void 0)Y.push("project_path = ?"),G.push(Q.project_path);if(Q.context!==void 0)Y.push("context = ?"),G.push(Q.context);if(Q.parent_task_id!==void 0)Y.push("parent_task_id = ?"),G.push(Q.parent_task_id);if(Y.length===0)return X;return Y.push("updated_at = ?"),G.push(Date.now()),G.push(J),this.db.prepare(`UPDATE task SET ${Y.join(", ")} WHERE id = ?`).run(...G),this.tasksCache.delete(J),this.getTask(J)}async deleteTask(J){await this.initialize();let X=this.db.prepare("DELETE FROM task WHERE id = ?").run(J);if(X.changes>0)this.tasksCache.delete(J),this.operationsCache.delete(J);return X.changes>0}async listTasks(J){if(await this.initialize(),J?.depth!==void 0&&J.depth>=0&&J.parent_task_id===void 0)return this.listTasksByDepth(J);let Q=["1=1"],X=[];if(J?.status)Q.push("status = ?"),X.push(J.status);if(J?.priority)Q.push("priority = ?"),X.push(J.priority);if(J?.type)Q.push("type = ?"),X.push(J.type);if(J?.parent_task_id!==void 0)Q.push("parent_task_id = ?"),X.push(J.parent_task_id);if(!J?.include_archived&&J?.status!=="archived")Q.push("status != 'archived'");let Y=Q.join(" AND "),G=`SELECT COUNT(*) as total FROM task WHERE ${Y}`,W=this.db.prepare(G).get(...X)?.total??0,z=`SELECT * FROM task WHERE ${Y}`,H=[...X];if(z+=" ORDER BY updated_at DESC",J?.limit)z+=" LIMIT ?",H.push(J.limit);if(J?.offset)z+=" OFFSET ?",H.push(J.offset);return{tasks:this.db.prepare(z).all(...H).map((O)=>{let F=this.rowToTask(O);return this.tasksCache.set(F.id,F),F}),total:W}}async listTasksByDepth(J){let Q=J.depth??0,X=["1=1"],Y=[];if(J.status)X.push("status = ?"),Y.push(J.status);if(J.priority)X.push("priority = ?"),Y.push(J.priority);if(J.type)X.push("type = ?"),Y.push(J.type);if(!J?.include_archived&&J?.status!=="archived")X.push("status != 'archived'");let G=X.join(" AND "),q=[];if(Q===0){let U=`SELECT * FROM task WHERE parent_task_id IS NULL AND ${G} ORDER BY updated_at DESC`,V=this.db.prepare(U).all(...Y);for(let O of V){let F=this.rowToTask(O);this.tasksCache.set(F.id,F),q.push(F)}}else{let V=this.db.prepare(`SELECT * FROM task WHERE parent_task_id IS NULL AND ${G} ORDER BY updated_at DESC`).all(...Y).map((O)=>{let F=this.rowToTask(O);return this.tasksCache.set(F.id,F),F});q.push(...V);for(let O=1;O<=Q;O++){if(V.length===0)break;let F=V.map((N)=>N.id),M=`SELECT * FROM task WHERE parent_task_id IN (${F.map(()=>"?").join(",")}) AND ${G} ORDER BY updated_at DESC`,L=this.db.prepare(M).all(...F,...Y).map((N)=>{let Z=this.rowToTask(N);return this.tasksCache.set(Z.id,Z),Z});q.push(...L),V=L}}let W=q.length,z=J.offset??0,H=J.limit??W;return{tasks:q.slice(z,z+H),total:W}}async getTaskTree(J,Q=-1){await this.initialize();let X=[],Y=[J],G=0;while(Y.length>0){if(Q!==-1&&G>=Q)break;let q=Y.map(()=>"?").join(","),W=this.db.prepare(`SELECT * FROM task WHERE parent_task_id IN (${q}) ORDER BY updated_at DESC`).all(...Y),z=[];for(let H of W){let B=this.rowToTask(H);this.tasksCache.set(B.id,B),X.push(B),z.push(B.id)}Y=z,G++}return X}async getChildTasks(J,Q={}){return this.listTasks({...Q,parent_task_id:J})}async createOperation(J){await this.initialize();let Q=J.milestoneType??J.actionType,X=J.milestoneTitle??J.actionTitle,Y=J.milestoneDescription??J.actionDescription;if(!Q||!X)throw Error("createOperation requires milestoneType and milestoneTitle (or legacy actionType/actionTitle)");let G=Date.now(),W=this.db.prepare(`
2718
3016
  INSERT INTO task_operation (task_id, session_id, milestone_type, milestone_title,
2719
3017
  milestone_description, process_description, timestamp, md_path)
2720
3018
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
2721
- `).run(J.taskId,J.sessionId,Q,X,W||"",J.processDescription||"",G,J.mdPath||null);this.operationsCache.delete(J.taskId);let H=await this.getOperation(q.lastInsertRowid);if(!H)throw Error("Failed to create operation");return H}async getOperation(J){await this.initialize();let X=this.db.prepare("SELECT * FROM task_operation WHERE id = ?").get(J);if(!X)return;return this.rowToOperation(X)}async updateOperation(J,Q){await this.initialize();let X=await this.getOperation(J);if(!X)return;let W=Q.milestoneTitle??Q.actionTitle,G=Q.milestoneDescription??Q.actionDescription,Y=[],q=[];if(W!==void 0)Y.push("milestone_title = ?"),q.push(W);if(G!==void 0)Y.push("milestone_description = ?"),q.push(G);if(Q.processDescription!==void 0)Y.push("process_description = ?"),q.push(Q.processDescription);if(Y.length===0)return X;return this.db.prepare(`UPDATE task_operation SET ${Y.join(", ")} WHERE id = ?`).run(...q,J),this.operationsCache.delete(X.taskId),this.getOperation(J)}async deleteOperation(J){await this.initialize();let Q=await this.getOperation(J);if(!Q)return!1;let W=this.db.prepare("DELETE FROM task_operation WHERE id = ?").run(J);if(W.changes>0)this.operationsCache.delete(Q.taskId);return W.changes>0}async listOperations(J){await this.initialize();let Q=J.taskId;if(!this.operationsCache.has(Q)){let H=this.db.prepare("SELECT * FROM task_operation WHERE task_id = ? ORDER BY timestamp DESC").all(J.taskId);this.operationsCache.set(Q,H.map((B)=>this.rowToOperation(B)))}let X=this.operationsCache.get(Q),W=J.milestoneType??J.actionType;if(W)X=X.filter((q)=>q.milestoneType===W);let G=J.offset||0,Y=J.limit||20;return X.slice(G,G+Y)}async getTaskIdBySessionId(J){if(await this.initialize(),!J)return;let Q=this.db.prepare("SELECT task_id FROM task_operation WHERE session_id = ? AND milestone_type = 'create' ORDER BY timestamp ASC LIMIT 1").get(J);return typeof Q?.task_id==="number"?Q.task_id:void 0}rowToTask(J){return{id:J.id,title:String(J.title??""),description:String(J.description??""),status:String(J.status??"todo"),priority:String(J.priority??"medium"),type:String(J.type??"normal"),progress:J.progress,current_status:String(J.current_status??""),goals_and_expected_deliverables:String(J.goals_and_expected_deliverables??""),parent_task_id:J.parent_task_id||void 0,createdAt:new Date(J.created_at).toISOString(),updatedAt:new Date(J.updated_at).toISOString(),due_date:J.due_date?String(J.due_date):void 0,tags:$.parseTagsSafely(J.tags),project_path:String(J.project_path??"unknown"),context:J.context}}static parseTagsSafely(J){if(J===null||J===void 0||J==="")return;let Q=typeof J==="string"?J:String(J);try{let X=JSON.parse(Q);if(Array.isArray(X))return X;if(typeof X==="string")return[X];return}catch{return[Q]}}rowToOperation(J){let Q=J.milestone_type??J.action_type,X=J.milestone_title??J.action_title,W=J.milestone_description??J.action_description??"";return{id:J.id,taskId:J.task_id,sessionId:J.session_id,milestoneType:Q,milestoneTitle:X,milestoneDescription:W,processDescription:J.process_description??"",timestamp:new Date(J.timestamp).toISOString(),mdPath:J.md_path||void 0,actionType:Q,actionTitle:X,actionDescription:W}}async createTag(J){await this.initialize();let Q=Date.now(),X=await this.getTagByName(J);if(X)return X;return{id:this.db.prepare(`
3019
+ `).run(J.taskId,J.sessionId,Q,X,Y||"",J.processDescription||"",G,J.mdPath||null);this.operationsCache.delete(J.taskId);let z=await this.getOperation(W.lastInsertRowid);if(!z)throw Error("Failed to create operation");return z}async getOperation(J){await this.initialize();let X=this.db.prepare("SELECT * FROM task_operation WHERE id = ?").get(J);if(!X)return;return this.rowToOperation(X)}async updateOperation(J,Q){await this.initialize();let X=await this.getOperation(J);if(!X)return;let Y=Q.milestoneTitle??Q.actionTitle,G=Q.milestoneDescription??Q.actionDescription,q=[],W=[];if(Y!==void 0)q.push("milestone_title = ?"),W.push(Y);if(G!==void 0)q.push("milestone_description = ?"),W.push(G);if(Q.processDescription!==void 0)q.push("process_description = ?"),W.push(Q.processDescription);if(q.length===0)return X;return this.db.prepare(`UPDATE task_operation SET ${q.join(", ")} WHERE id = ?`).run(...W,J),this.operationsCache.delete(X.taskId),this.getOperation(J)}async deleteOperation(J){await this.initialize();let Q=await this.getOperation(J);if(!Q)return!1;let Y=this.db.prepare("DELETE FROM task_operation WHERE id = ?").run(J);if(Y.changes>0)this.operationsCache.delete(Q.taskId);return Y.changes>0}async listOperations(J){await this.initialize();let Q=J.taskId;if(!this.operationsCache.has(Q)){let z=this.db.prepare("SELECT * FROM task_operation WHERE task_id = ? ORDER BY timestamp DESC").all(J.taskId);this.operationsCache.set(Q,z.map((H)=>this.rowToOperation(H)))}let X=this.operationsCache.get(Q),Y=J.milestoneType??J.actionType;if(Y)X=X.filter((W)=>W.milestoneType===Y);let G=J.offset||0,q=J.limit||20;return X.slice(G,G+q)}async listOperationsFresh(J){await this.initialize();let Y=this.db.prepare("SELECT * FROM task_operation WHERE task_id = ? ORDER BY id DESC").all(J.taskId).map((z)=>this.rowToOperation(z)),G=J.milestoneType??J.actionType;if(G)Y=Y.filter((z)=>z.milestoneType===G);let q=J.offset||0,W=J.limit||20;return Y.slice(q,q+W)}invalidateOperationsCache(J){this.operationsCache.delete(J)}async getTaskIdBySessionId(J){if(await this.initialize(),!J)return;let Q=this.db.prepare("SELECT task_id FROM task_operation WHERE session_id = ? AND milestone_type = 'create' ORDER BY timestamp ASC LIMIT 1").get(J);return typeof Q?.task_id==="number"?Q.task_id:void 0}async getTaskIdsBySessionId(J){if(await this.initialize(),!J)return[];return this.db.prepare("SELECT DISTINCT task_id FROM task_operation WHERE session_id = ? ORDER BY task_id ASC").all(J).map((X)=>X.task_id).filter((X)=>typeof X==="number")}rowToTask(J){return{id:J.id,title:String(J.title??""),description:String(J.description??""),status:String(J.status??"todo"),priority:String(J.priority??"medium"),type:String(J.type??"normal"),progress:J.progress,current_status:String(J.current_status??""),goals_and_expected_deliverables:String(J.goals_and_expected_deliverables??""),parent_task_id:J.parent_task_id||void 0,createdAt:new Date(J.created_at).toISOString(),updatedAt:new Date(J.updated_at).toISOString(),due_date:J.due_date?String(J.due_date):void 0,tags:$.parseTagsSafely(J.tags),project_path:String(J.project_path??"unknown"),context:J.context}}static parseTagsSafely(J){if(J===null||J===void 0||J==="")return;let Q=typeof J==="string"?J:String(J);try{let X=JSON.parse(Q);if(Array.isArray(X))return X;if(typeof X==="string")return[X];return}catch{return[Q]}}rowToOperation(J){let Q=J.milestone_type??J.action_type,X=J.milestone_title??J.action_title,Y=J.milestone_description??J.action_description??"";return{id:J.id,taskId:J.task_id,sessionId:J.session_id,milestoneType:Q,milestoneTitle:X,milestoneDescription:Y,processDescription:J.process_description??"",timestamp:new Date(J.timestamp).toISOString(),mdPath:J.md_path||void 0,actionType:Q,actionTitle:X,actionDescription:Y}}async createTag(J){await this.initialize();let Q=Date.now(),X=await this.getTagByName(J);if(X)return X;return{id:this.db.prepare(`
2722
3020
  INSERT INTO task_tag (name, created_at, task_count)
2723
3021
  VALUES (?, ?, 0)
2724
- `).run(J,Q).lastInsertRowid,name:J,createdAt:new Date(Q).toISOString(),taskCount:0}}async getTag(J){await this.initialize();let X=this.db.prepare("SELECT * FROM task_tag WHERE id = ?").get(J);if(!X)return;return this.rowToTag(X)}async getTagByName(J){await this.initialize();let X=this.db.prepare("SELECT * FROM task_tag WHERE name = ?").get(J);if(!X)return;return this.rowToTag(X)}async listTags(J){await this.initialize();let Q="SELECT * FROM task_tag",X=[],W=J?.orderBy||"count";if(W==="count")Q+=" ORDER BY task_count DESC";else if(W==="name")Q+=" ORDER BY name ASC";else Q+=" ORDER BY created_at DESC";if(J?.limit)Q+=" LIMIT ?",X.push(J.limit);if(J?.offset)Q+=" OFFSET ?",X.push(J.offset);return this.db.prepare(Q).all(...X).map((q)=>this.rowToTag(q))}async searchTags(J){await this.initialize();let Q=`
3022
+ `).run(J,Q).lastInsertRowid,name:J,createdAt:new Date(Q).toISOString(),taskCount:0}}async getTag(J){await this.initialize();let X=this.db.prepare("SELECT * FROM task_tag WHERE id = ?").get(J);if(!X)return;return this.rowToTag(X)}async getTagByName(J){await this.initialize();let X=this.db.prepare("SELECT * FROM task_tag WHERE name = ?").get(J);if(!X)return;return this.rowToTag(X)}async listTags(J){await this.initialize();let Q="SELECT * FROM task_tag",X=[],Y=J?.orderBy||"count";if(Y==="count")Q+=" ORDER BY task_count DESC";else if(Y==="name")Q+=" ORDER BY name ASC";else Q+=" ORDER BY created_at DESC";if(J?.limit)Q+=" LIMIT ?",X.push(J.limit);if(J?.offset)Q+=" OFFSET ?",X.push(J.offset);return this.db.prepare(Q).all(...X).map((W)=>this.rowToTag(W))}async searchTags(J){await this.initialize();let Q=`
2725
3023
  SELECT * FROM task_tag
2726
3024
  WHERE name LIKE ?
2727
3025
  ORDER BY task_count DESC
2728
3026
  LIMIT ?
2729
- `;return this.db.prepare(Q).all(`%${J.query}%`,J.limit||20).map((G)=>this.rowToTag(G))}async deleteTag(J){return await this.initialize(),this.db.prepare("DELETE FROM task_tag WHERE id = ?").run(J).changes>0}async addTagsToTask(J,Q){await this.initialize();let X=Date.now(),W=this.db.prepare(`
3027
+ `;return this.db.prepare(Q).all(`%${J.query}%`,J.limit||20).map((G)=>this.rowToTag(G))}async deleteTag(J){return await this.initialize(),this.db.prepare("DELETE FROM task_tag WHERE id = ?").run(J).changes>0}async addTagsToTask(J,Q){await this.initialize();let X=Date.now(),Y=this.db.prepare(`
2730
3028
  INSERT OR IGNORE INTO task_tag_relation (task_id, tag_id, created_at)
2731
3029
  VALUES (?, ?, ?)
2732
- `);for(let G of Q)W.run(J,G,X),this.db.run(`
3030
+ `);for(let G of Q)Y.run(J,G,X),this.db.run(`
2733
3031
  UPDATE task_tag SET task_count = task_count + 1 WHERE id = ?
2734
- `,G);await this.syncTaskTagsJson(J)}async removeTagsFromTask(J,Q){await this.initialize();let X=this.db.prepare("DELETE FROM task_tag_relation WHERE task_id = ? AND tag_id = ?");for(let W of Q)X.run(J,W),this.db.run(`
3032
+ `,G);await this.syncTaskTagsJson(J)}async removeTagsFromTask(J,Q){await this.initialize();let X=this.db.prepare("DELETE FROM task_tag_relation WHERE task_id = ? AND tag_id = ?");for(let Y of Q)X.run(J,Y),this.db.run(`
2735
3033
  UPDATE task_tag SET task_count = MAX(0, task_count - 1) WHERE id = ?
2736
- `,W);await this.syncTaskTagsJson(J)}async getTagsForTask(J){await this.initialize();let Q=`
3034
+ `,Y);await this.syncTaskTagsJson(J)}async getTagsForTask(J){await this.initialize();let Q=`
2737
3035
  SELECT t.* FROM task_tag t
2738
3036
  INNER JOIN task_tag_relation r ON t.id = r.tag_id
2739
3037
  WHERE r.task_id = ?
@@ -2742,36 +3040,36 @@ Note: \`total\` is the FIRST field in the response so it survives tail-truncatio
2742
3040
  SELECT DISTINCT r.task_id FROM task_tag_relation r
2743
3041
  INNER JOIN task_tag t ON r.tag_id = t.id
2744
3042
  WHERE t.name IN (${J.map(()=>"?").join(", ")})
2745
- `;return this.db.prepare(X).all(...J).map((Y)=>Y.task_id)}async updateTaskTags(J,Q){await this.initialize();let X=await this.getTagsForTask(J);if(X.length>0)await this.removeTagsFromTask(J,X.map((G)=>G.id));let W=[];for(let G of Q){let Y=await this.getTagByName(G);if(!Y)Y=await this.createTag(G);W.push(Y.id)}if(W.length>0)await this.addTagsToTask(J,W)}async searchTasksByKeywords(J,Q={}){if(await this.initialize(),!J||J.length===0)return{tasks:[],total:0};let{limit:X=20,offset:W=0,excludeTaskId:G,status:Y,priority:q,type:H,depth:B}=Q,U=null;if(B!==void 0&&B>=0)U=await this.collectTaskIdsByDepth(B);let z=new Map,V="SELECT * FROM task WHERE 1=1",M=[];if(G)V+=" AND id != ?",M.push(G);if(Y)V+=" AND status = ?",M.push(Y);if(q)V+=" AND priority = ?",M.push(q);if(H)V+=" AND type = ?",M.push(H);if(!Q?.include_archived&&Q?.status!=="archived")V+=" AND status != 'archived'";let F=Math.max(X*5,200);V+=" ORDER BY updated_at DESC LIMIT ?",M.push(F);let D=this.db.prepare(V).all(...M);for(let P of D){let w=this.rowToTask(P),f=new Set,N=0;if(typeof w.title==="string"&&w.title){let E=w.title.toLowerCase();for(let x of J)if(E.includes(x.toLowerCase()))N++,f.add(x)}if(w.tags&&Array.isArray(w.tags))for(let E of J){let x=E.toLowerCase();if(w.tags.some((n)=>n.toLowerCase().includes(x)))N+=2,f.add(E)}if(typeof w.description==="string"&&w.description){let E=w.description.toLowerCase();for(let x of J)if(E.includes(x.toLowerCase()))N++,f.add(x)}if(typeof w.goals_and_expected_deliverables==="string"&&w.goals_and_expected_deliverables){let E=w.goals_and_expected_deliverables.toLowerCase();for(let x of J)if(E.includes(x.toLowerCase()))N++,f.add(x)}if(f.size===J.length)z.set(w.id,{task:w,matchCount:N})}let O=this.db.prepare("SELECT DISTINCT task_id FROM task_operation WHERE 1=1").all();for(let P of O){let f=new Set;for(let n of J){let g=`%${n}%`;if(this.db.prepare(`
3043
+ `;return this.db.prepare(X).all(...J).map((q)=>q.task_id)}async updateTaskTags(J,Q){await this.initialize();let X=await this.getTagsForTask(J);if(X.length>0)await this.removeTagsFromTask(J,X.map((G)=>G.id));let Y=[];for(let G of Q){let q=await this.getTagByName(G);if(!q)q=await this.createTag(G);Y.push(q.id)}if(Y.length>0)await this.addTagsToTask(J,Y)}async searchTasksByKeywords(J,Q={}){if(await this.initialize(),!J||J.length===0)return{tasks:[],total:0};let{limit:X=20,offset:Y=0,excludeTaskId:G,status:q,priority:W,type:z,depth:H}=Q,B=null;if(H!==void 0&&H>=0)B=await this.collectTaskIdsByDepth(H);let U=new Map,V="SELECT * FROM task WHERE 1=1",O=[];if(G)V+=" AND id != ?",O.push(G);if(q)V+=" AND status = ?",O.push(q);if(W)V+=" AND priority = ?",O.push(W);if(z)V+=" AND type = ?",O.push(z);if(!Q?.include_archived&&Q?.status!=="archived")V+=" AND status != 'archived'";let F=Math.max(X*5,200);V+=" ORDER BY updated_at DESC LIMIT ?",O.push(F);let D=this.db.prepare(V).all(...O);for(let b of D){let w=this.rowToTask(b),f=new Set,A=0;if(typeof w.title==="string"&&w.title){let S=w.title.toLowerCase();for(let x of J)if(S.includes(x.toLowerCase()))A++,f.add(x)}if(w.tags&&Array.isArray(w.tags))for(let S of J){let x=S.toLowerCase();if(w.tags.some((r)=>r.toLowerCase().includes(x)))A+=2,f.add(S)}if(typeof w.description==="string"&&w.description){let S=w.description.toLowerCase();for(let x of J)if(S.includes(x.toLowerCase()))A++,f.add(x)}if(typeof w.goals_and_expected_deliverables==="string"&&w.goals_and_expected_deliverables){let S=w.goals_and_expected_deliverables.toLowerCase();for(let x of J)if(S.includes(x.toLowerCase()))A++,f.add(x)}if(f.size===J.length)U.set(w.id,{task:w,matchCount:A})}let M=this.db.prepare("SELECT DISTINCT task_id FROM task_operation WHERE 1=1").all();for(let b of M){let f=new Set;for(let r of J){let g=`%${r}%`;if(this.db.prepare(`
2746
3044
  SELECT * FROM task_operation
2747
3045
  WHERE task_id = ?
2748
3046
  AND (milestone_title LIKE ? OR milestone_description LIKE ? OR process_description LIKE ?)
2749
3047
  LIMIT 10
2750
- `).all(P.task_id,g,g,g).length>0)f.add(n)}if(f.size===0)continue;let N=this.db.prepare("SELECT * FROM task WHERE id = ?").get(P.task_id);if(!N)continue;let E=this.rowToTask(N);if(G&&E.id===G)continue;if(Y&&E.status!==Y)continue;if(q&&E.priority!==q)continue;if(H&&E.type!==H)continue;if(!Q?.include_archived&&E.status==="archived")continue;let x=z.get(E.id);if(x)x.matchCount+=2;else{let n=new Set(f);if(typeof E.title==="string"&&E.title){let g=E.title.toLowerCase();for(let c of J)if(g.includes(c.toLowerCase()))n.add(c)}if(typeof E.description==="string"&&E.description){let g=E.description.toLowerCase();for(let c of J)if(g.includes(c.toLowerCase()))n.add(c)}if(typeof E.goals_and_expected_deliverables==="string"&&E.goals_and_expected_deliverables){let g=E.goals_and_expected_deliverables.toLowerCase();for(let c of J)if(g.includes(c.toLowerCase()))n.add(c)}if(E.tags&&Array.isArray(E.tags)){for(let g of J)if(E.tags.some((c)=>c.toLowerCase().includes(g.toLowerCase())))n.add(g)}if(n.size===J.length)z.set(E.id,{task:E,matchCount:2})}}let R=Array.from(z.values()).sort((P,w)=>w.matchCount-P.matchCount);if(U!==null)R=R.filter((P)=>U.has(P.task.id));let L=R.length;return{tasks:R.slice(W,W+X).map((P)=>P.task),total:L}}async collectTaskIdsByDepth(J){let Q=new Set,W=this.db.prepare("SELECT id FROM task WHERE parent_task_id IS NULL").all().map((G)=>G.id);for(let G of W)Q.add(G);if(J===0)return Q;for(let G=1;G<=J;G++){if(W.length===0)break;let Y=W.map(()=>"?").join(",");W=this.db.prepare(`SELECT id FROM task WHERE parent_task_id IN (${Y})`).all(...W).map((H)=>H.id);for(let H of W)Q.add(H)}return Q}async findSimilarTasksByKeywords(J,Q={}){let X={...Q,limit:Q.limit??5};return(await this.searchTasksByKeywords(J,X)).tasks}async findSimilarTasks(J,Q=5){await this.initialize();let X=await this.getTagsForTask(J);if(X.length===0)return[];let W=X.map((B)=>B.id),Y=`
3048
+ `).all(b.task_id,g,g,g).length>0)f.add(r)}if(f.size===0)continue;let A=this.db.prepare("SELECT * FROM task WHERE id = ?").get(b.task_id);if(!A)continue;let S=this.rowToTask(A);if(G&&S.id===G)continue;if(q&&S.status!==q)continue;if(W&&S.priority!==W)continue;if(z&&S.type!==z)continue;if(!Q?.include_archived&&S.status==="archived")continue;let x=U.get(S.id);if(x)x.matchCount+=2;else{let r=new Set(f);if(typeof S.title==="string"&&S.title){let g=S.title.toLowerCase();for(let c of J)if(g.includes(c.toLowerCase()))r.add(c)}if(typeof S.description==="string"&&S.description){let g=S.description.toLowerCase();for(let c of J)if(g.includes(c.toLowerCase()))r.add(c)}if(typeof S.goals_and_expected_deliverables==="string"&&S.goals_and_expected_deliverables){let g=S.goals_and_expected_deliverables.toLowerCase();for(let c of J)if(g.includes(c.toLowerCase()))r.add(c)}if(S.tags&&Array.isArray(S.tags)){for(let g of J)if(S.tags.some((c)=>c.toLowerCase().includes(g.toLowerCase())))r.add(g)}if(r.size===J.length)U.set(S.id,{task:S,matchCount:2})}}let R=Array.from(U.values()).sort((b,w)=>w.matchCount-b.matchCount);if(B!==null)R=R.filter((b)=>B.has(b.task.id));let L=R.length;return{tasks:R.slice(Y,Y+X).map((b)=>b.task),total:L}}async collectTaskIdsByDepth(J){let Q=new Set,Y=this.db.prepare("SELECT id FROM task WHERE parent_task_id IS NULL").all().map((G)=>G.id);for(let G of Y)Q.add(G);if(J===0)return Q;for(let G=1;G<=J;G++){if(Y.length===0)break;let q=Y.map(()=>"?").join(",");Y=this.db.prepare(`SELECT id FROM task WHERE parent_task_id IN (${q})`).all(...Y).map((z)=>z.id);for(let z of Y)Q.add(z)}return Q}async findSimilarTasksByKeywords(J,Q={}){let X={...Q,limit:Q.limit??5};return(await this.searchTasksByKeywords(J,X)).tasks}async findSimilarTasks(J,Q=5){await this.initialize();let X=await this.getTagsForTask(J);if(X.length===0)return[];let Y=X.map((H)=>H.id),q=`
2751
3049
  SELECT t.*, COUNT(r2.tag_id) as match_count
2752
3050
  FROM task t
2753
3051
  INNER JOIN task_tag_relation r ON t.id = r.task_id
2754
3052
  INNER JOIN task_tag_relation r2 ON t.id = r2.task_id
2755
- WHERE r.tag_id IN (${W.map(()=>"?").join(", ")})
3053
+ WHERE r.tag_id IN (${Y.map(()=>"?").join(", ")})
2756
3054
  AND t.id != ?
2757
3055
  GROUP BY t.id
2758
3056
  ORDER BY match_count DESC, t.updated_at DESC
2759
3057
  LIMIT ?
2760
- `;return this.db.prepare(Y).all(...W,J,Q).map((B)=>this.rowToTask(B))}async searchTasks(J,Q=20){await this.initialize();let X=`
3058
+ `;return this.db.prepare(q).all(...Y,J,Q).map((H)=>this.rowToTask(H))}async searchTasks(J,Q=20){await this.initialize();let X=`
2761
3059
  SELECT * FROM task
2762
3060
  WHERE title LIKE ? OR description LIKE ?
2763
3061
  ORDER BY updated_at DESC
2764
3062
  LIMIT ?
2765
- `;return this.db.prepare(X).all(`%${J}%`,`%${J}%`,Q).map((Y)=>this.rowToTask(Y))}async findTasksByContextValue(J,Q=50){if(await this.initialize(),!J)return[];let X=`
3063
+ `;return this.db.prepare(X).all(`%${J}%`,`%${J}%`,Q).map((q)=>this.rowToTask(q))}async findTasksByContextValue(J,Q=50){if(await this.initialize(),!J)return[];let X=`
2766
3064
  SELECT * FROM task
2767
3065
  WHERE context LIKE ?
2768
3066
  ORDER BY updated_at DESC
2769
3067
  LIMIT ?
2770
- `;return this.db.prepare(X).all(`%${J}%`,Q).map((G)=>this.rowToTask(G))}rowToTag(J){return{id:J.id,name:J.name,createdAt:new Date(J.created_at).toISOString(),taskCount:J.task_count}}async syncTaskTagsJson(J){let X=(await this.getTagsForTask(J)).map((G)=>G.name);this.db.prepare("UPDATE task SET tags = ? WHERE id = ?").run(X.length>0?JSON.stringify(X):null,J),this.tasksCache.delete(J)}async close(){if(this.db)this.db.close(),this.db=null,this.initialized=!1;this.tasksCache.clear(),this.operationsCache.clear()}},m([u("task.rowToTask",{recordParams:!0,recordResult:!0,log:!0})],Z$.prototype,"rowToTask",null),m([u("task.searchTasksByKeywords",{recordParams:!0,recordResult:!0,log:!0})],Z$.prototype,"searchTasksByKeywords",null)});function n3($,J,Q){let X=J.toUpperCase();if(!$.startsWith(X))return;let W=Q.replace(/-/g,"_").toUpperCase(),G=$.slice(X.length);if(G.startsWith("_"))G=G.slice(1);if(!G)return;let Y=G.indexOf("_"),q;if(Y===-1)q=G;else{let B=G.slice(0,Y),U=G.slice(Y+1);if(B===W)q=U;else q=G}if(!q)return;let H=q.replace(/_/g,".");return`${Q}.${H.toLowerCase()}`}function r3($,J){return{...$,execute:J}}var YO=()=>{},a3=a(()=>{YO(),N8(),X2()});a3();class u8{_status="created";_enabled=!0;env;hookManager;constructor(){this.hookManager=new F9}getStatus(){return this._status}getConfig(){return{name:this.name,version:this.version,enabled:this._enabled,env:this.env}}isEnvInitialized(){return this._status!=="created"}setStatus($){this._status=$}getEnv(){return this.env}async init($){if($?.env)this.env=$.env;this.setStatus("initializing");try{if($?.name)Object.defineProperty(this,"name",{value:$.name,writable:!1});if($?.version)Object.defineProperty(this,"version",{value:$.version,writable:!1})}catch{}if($?.enabled!==void 0)this._enabled=$.enabled;this.hookManager.setComponentInfo(this.name,this.version),await this.onInit(),this.setStatus("running")}async start(){if(this._started)return;this._started=!0,await this.onStart(),this.setStatus("running")}async stop(){this.setStatus("stopping"),this.hookManager.clear(),await this.onStop(),this.setStatus("stopped")}async onInit(){}async onStart(){}async onStop(){}registerHook($,J){this.hookManager.register($,J)}addHook($,J,Q,X){this.hookManager.register($,r3({name:J,priority:X},Q))}removeHook($,J){return this.hookManager.unregister($,J)}async executeHooks($,J,Q){await this.hookManager.execute($,J,Q)}getConfigComponent(){return this.env?.getComponent("config")}getRuntimeConfig($,J){let Q=this.getConfigComponent();if(Q){let X=Q.get($);if(X!==void 0)return X}return J}}r();var qO={"task.storage.type":"sqlite","task.storage.dbPath":void 0},HO={name:"task",sources:[{type:"env",envPrefix:"TASK",priority:20,watch:!1}],keys:[{key:"task.storage.type",sources:["env","file"]},{key:"task.storage.dbPath",sources:["env","file"]}]};X2();var BO=["completed","failed","cancelled","timeout"];q$();r();var Q6=i("task:tag");class s3{store;constructor($){this.store=$}async createTag($){let J=await this.store.createTag($);return Q6.debug(`[TagService] Created tag: ${J.name} (id=${J.id})`),J}async getTag($){return this.store.getTag($)}async getTagByName($){return this.store.getTagByName($)}async listTags($){return this.store.listTags($)}async searchTags($){return this.store.searchTags($)}async deleteTag($){let J=await this.store.deleteTag($);if(J)Q6.debug(`[TagService] Deleted tag id=${$}`);return J}async addTagsToTask($,J){await this.store.addTagsToTask($,J),Q6.debug(`[TagService] Added ${J.length} tags to task ${$}`)}async removeTagsFromTask($,J){await this.store.removeTagsFromTask($,J),Q6.debug(`[TagService] Removed ${J.length} tags from task ${$}`)}async getTagsForTask($){return this.store.getTagsForTask($)}async getTaskIdsByTags($){return this.store.getTaskIdsByTags($)}async findSimilarTasks($,J=5){return this.store.findSimilarTasks($,J)}async searchTasks($,J=20){return this.store.searchTasks($,J)}async searchTasksByKeywords($,J){return(await this.store.searchTasksByKeywords($,J)).tasks}async findSimilarTasksByKeywords($,J){return this.store.findSimilarTasksByKeywords($,J)}async syncTagsToTask($,J){let Q=[];for(let H of J){let B=await this.store.getTagByName(H);if(!B)B=await this.store.createTag(H);Q.push(B.id)}let X=await this.store.getTagsForTask($),W=new Set(X.map((H)=>H.id)),G=new Set(Q),Y=Q.filter((H)=>!W.has(H)),q=X.filter((H)=>!G.has(H.id)).map((H)=>H.id);if(q.length>0)await this.store.removeTagsFromTask($,q);if(Y.length>0)await this.store.addTagsToTask($,Y);await this.store.updateTaskTags($,J),Q6.info(`[TagService] Synced tags for task ${$}: ${J.join(", ")}`)}}z0();var Q0=i("task"),UO="Deliverable: ";function VO($){if(!$)return;return`${UO}${$}`}class w$ extends u8{name="task";version="1.0.0";store;config;toolComponent;backgroundTaskManager;skipAbortRunningTasksOnDispose=!1;waitForRunningTasksOnDispose=!1;configComponent;tagService;plugins=new Map;getBackgroundTaskManager(){return this.backgroundTaskManager}publishEvent($,J,Q){if(this.env?.pushEnvEvent)this.env.pushEnvEvent({type:$,payload:J,metadata:{source:"task.component",trigger_session_id:Q}}),Q0.info(`[TaskComponent] Event published: ${$}`)}constructor(){super()}async init($){await super.init($);let J=$?.options;if(!J?.configComponent)throw Error("ConfigComponent is required for TaskComponent initialization");this.configComponent=J.configComponent,this.skipAbortRunningTasksOnDispose=J.skipAbortRunningTasksOnDispose===!0,this.waitForRunningTasksOnDispose=J.waitForRunningTasksOnDispose===!0,await this.registerConfig(J),this.setStatus("running"),Q0.info("[TaskComponent] Initialized")}async registerConfig($){let J=this.configComponent;if(!J)return;let{configPath:Q,envPrefix:X,config:W}=$,G=X??"TASK";if(J.registerComponent(HO),Q)J.registerSource({type:"file",relativePath:Q,optional:!0,watch:!1});J.registerSource({type:"env",envPrefix:G,priority:20,watch:!1}),await J.load("task");for(let Y of Object.keys(process.env)){let q=n3(Y,G,"task");if(!q)continue;let H=process.env[Y];if(H!==void 0)await J.set(q,H)}for(let[Y,q]of Object.entries(qO))if(J.get(Y)===void 0)await J.set(Y,q);if(J.get("task.storage.dbPath")===void 0)await J.set("task.storage.dbPath",N9());if(W){let Y=this.flattenConfig(W);for(let[q,H]of Object.entries(Y))await J.set(q,H)}this.registerConfigWatcher(J),await this.initStore(),this.tagService=new s3(this.store)}async initStore(){let $=this.configComponent;if(!$)return;let J=$.get("task.storage.type")??"sqlite",Q=$.get("task.storage.dbPath");if(J==="sqlite")this.store=new Z$(Q),Q0.info(`[TaskComponent] Using SQLite storage: ${Q||"default path"}`);else this.store=new Z$,Q0.info("[TaskComponent] Using SQLite storage (default)")}flattenConfig($,J="task"){let Q={};for(let[X,W]of Object.entries($)){let G=`${J}.${X}`;if(W&&typeof W==="object"&&!Array.isArray(W))Object.assign(Q,this.flattenConfig(W,G));else Q[G]=W}return Q}registerConfigWatcher($){if(typeof $.watch!=="function")return;this.configWatcher=$.watch("task.*",(J)=>{this.onConfigChange(J)})}onConfigChange($){if(Q0.info(`[TaskComponent] Config changed: ${$.key}`,{oldValue:$.oldValue,newValue:$.newValue}),$.key==="task.storage.type"||$.key==="task.storage.dbPath")this.initStore()}configWatcher;async start(){if(await super.start(),this.backgroundTaskManager=new J0(this.env),this.toolComponent=this.env?.getComponent("tool"),this.toolComponent){await this.registerTools(),this.toolComponent.register(L6(this.backgroundTaskManager),"built-in"),Q0.debug("[TaskComponent] Injected BackgroundTaskManager into query_background_process tool (factory pattern)");let $=this.env?.getComponent("session");this.toolComponent.register(Q4(this.backgroundTaskManager,$??null),"built-in"),Q0.debug("[TaskComponent] Registered compact_session tool (factory pattern)")}else Q0.warn("[TaskComponent] ToolComponent not found, skipping tool registration")}async stop(){if(this.configWatcher)this.configWatcher(),this.configWatcher=void 0;if(this.toolComponent){try{this.toolComponent.register(L6(null),"built-in"),Q0.debug("[TaskComponent] Reset query_background_process tool to no-manager default (cleanup)")}catch($){Q0.warn(`[TaskComponent] Failed to reset query_background_process tool: ${$.message}`)}try{this.toolComponent.register(y7,"built-in"),Q0.debug("[TaskComponent] Reset compact_session tool to no-deps default (cleanup)")}catch($){Q0.warn(`[TaskComponent] Failed to reset compact_session tool: ${$.message}`)}}if(this.backgroundTaskManager)await this.backgroundTaskManager.dispose(this.skipAbortRunningTasksOnDispose?{skipAbortRunningTasks:!0,waitForRunningTasks:this.waitForRunningTasksOnDispose}:void 0),this.backgroundTaskManager=void 0;if(this.store)await this.store.close();await super.stop()}async registerTools(){if(!this.toolComponent)return;let $=[i2(this),n2(this),r2(this),t2(this),a2(this),T8(this),I8(this),s2(this),v8(this),o2(this),x8(this)],J=[e2(this),g8(this),$6(this),k8(this),m8(this)],Q=[D3(this),k7(this.backgroundTaskManager)];for(let X of[...$,...J,...Q])this.toolComponent.register(X),Q0.info(`[TaskComponent] Registered tool: ${X.name}`)}async executeHook($,J,Q={}){let X={component:{name:this.name,version:this.version},data:J,metadata:Q,phase:$.includes("before")?"before":"after",hookPoint:$};await E0.execute($,J,Q)}async createTask($){let J=$.sessionId;if($.parent_task_id!==void 0&&$.parent_task_id!==null){if(!await this.store.getTask($.parent_task_id))throw Error(`Parent task #${$.parent_task_id} not found. Please provide a valid parent_task_id. Use task_list(depth=0) to see all root tasks.`)}let Q={options:{...$},sessionId:J,tagService:this.tagService,taskComponent:this};await this.executeHook(X0.BEFORE_CREATE,Q);let X=await this.store.createTask(Q.options);await this.store.createOperation({taskId:X.id,sessionId:J,milestoneType:"create",milestoneTitle:`Task created: ${X.title}`,milestoneDescription:X.description||""});let W={task:X,sessionId:J,tagService:this.tagService};return await this.executeHook(X0.AFTER_CREATE,W),this.publishEvent(j$.CREATED,{task:X,sessionId:J},J),Q0.info(`[TaskComponent] Task created: ${X.id} - ${X.title}`),X}async getTask($){return this.store.getTask($)}async getTaskIdBySessionId($){return this.store.getTaskIdBySessionId($)}async getTaskWithOperations($){let J=await this.store.getTask($);if(!J)return;let Q=await this.store.listOperations({taskId:$});return{...J,operations:Q,task:J}}async updateTask($,J){let Q={id:$,options:{...J},tagService:this.tagService};await this.executeHook(X0.BEFORE_UPDATE,Q);let X=await this.store.updateTask($,Q.options);if(X){let W={task:X,changes:J,tagService:this.tagService};if(await this.executeHook(X0.AFTER_UPDATE,W),this.publishEvent(j$.UPDATED,{task:X,changes:J,sessionId:""},""),Q0.info(`[TaskComponent] Task updated: ${$}`),J.status&&BO.includes(J.status)){let G=z9(),Y={task:X,changes:J,terminalStatus:J.status,sessionId:G.sessionId??"",tagService:this.tagService};await this.executeHook(X0.AFTER_COMPLETE,Y),Q0.info(`[TaskComponent] Task completed (AFTER_COMPLETE fired): ${$} -> ${J.status}`)}}return X}async deleteTask($){let J={id:$};await this.executeHook(X0.BEFORE_DELETE,J);let Q=await this.store.deleteTask($),X={id:$,deleted:Q};if(await this.executeHook(X0.AFTER_DELETE,X),Q)this.publishEvent(j$.DELETED,{taskId:$,sessionId:""},""),Q0.info(`[TaskComponent] Task deleted: ${$}`);return Q}async listTasks($){return this.store.listTasks($)}async searchTasksByKeywords($,J){return this.store.searchTasksByKeywords($,J||{})}async getTaskTree($,J=-1){return this.store.getTaskTree($,J)}async getChildTasks($,J){return this.store.getChildTasks($,J)}async completeTask($,J,Q){let X=await this.store.getTask($);if(X&&X.type==="cycle")throw Error(`Cannot complete cycle task: #${$} - ${X.title}. Cycle tasks are not meant to be completed.`);let W={status:"completed",progress:100};if(Q){let Y={};if(X?.context)try{let q=JSON.parse(X.context);if(q&&typeof q==="object"&&!Array.isArray(q))Y=q}catch{Q0.warn(`[TaskComponent] Task #${$} context is not valid JSON, ignoring when merging deliverable`)}Y.deliverable_storage_path=Q,W.context=JSON.stringify(Y)}let G=await this.updateTask($,W);if(G)await this.createOperation({taskId:$,sessionId:J,milestoneType:"completed",milestoneTitle:"Task completed",milestoneDescription:VO(Q)}),this.publishEvent(j$.COMPLETED,{task:G,sessionId:J},J),Q0.info(`[TaskComponent] Task completed: ${$}, deliverable=${Q||"(none)"}`);return G}async updateTaskContext($,J){return this.store.updateTask($,{context:J})}async createOperation($){let J={options:{...$}};await this.executeHook(X0.OPERATION_BEFORE_CREATE,J);let Q=await this.store.createOperation(J.options),X=await this.store.getTask(Q.taskId),W={operation:Q};return await this.executeHook(X0.OPERATION_AFTER_CREATE,W,{task:X,operation:Q}),this.publishEvent(j$.OPERATION_ADDED,{operation:Q,taskId:Q.taskId},Q.sessionId),Q0.info(`[TaskComponent] Operation created: ${Q.id} for task ${Q.taskId}`),Q}async getOperation($){return this.store.getOperation($)}async updateOperation($,J){return this.store.updateOperation($,J)}async deleteOperation($){return this.store.deleteOperation($)}async listOperations($){return this.store.listOperations($)}getTagService(){return this.tagService}registerHook($,J){E0.register($,J),this.plugins.set(this.makePluginKey($,J.name),J),Q0.debug(`[TaskComponent] Registered hook: ${J.name} at ${$}`)}registerHooks($){for(let{hookPoint:J,hook:Q}of $)this.registerHook(J,Q)}unregisterHook($,J){let Q=E0.unregister($,J);if(Q)this.plugins.delete(this.makePluginKey($,J)),Q0.info(`[TaskComponent] Unregistered hook: ${J} from ${$}`);return Q}listHooks(){return Array.from(this.plugins.values())}makePluginKey($,J){return`${$}::${J}`}countHooks($){return E0.count($)}}m([u("task.component.executeHook",{recordParams:!0})],w$.prototype,"executeHook",null);m([u("task.component.createTask",{recordParams:!0,recordResult:!0,log:!0})],w$.prototype,"createTask",null);m([u("task.component.updateTask",{recordParams:!0,recordResult:!0,log:!0})],w$.prototype,"updateTask",null);m([u("task.component.completeTask",{recordParams:!0,recordResult:!0,log:!0})],w$.prototype,"completeTask",null);m([u("task.component.createOperation",{recordParams:!0,recordResult:!0,log:!0})],w$.prototype,"createOperation",null);var l8=K.enum(["todo","active","completed","paused","cancelled","archived"]),c8=K.enum(["low","medium","high"]),d8=K.enum(["normal","cycle","longterm"]),p8=K.enum(["create","progress","milestone","problem","solution","decision","review","completed","workflow_extracted"]),zO=K.object({storage:K.object({type:K.enum(["memory","sqlite"]).default("sqlite"),dbPath:K.string().optional()}).default({})}).default({});H$();H$();var DO="Deliverable: ";function FO($){if(!$)return;return`${DO}${$}`}var Z9=1e6;class i8{port;options;constructor($,J={}){this.port=$,this.options=J}get defaultSessionId(){return this.options.sessionId??"unknown"}async resolve($){let J=OO($);if(J!==void 0){if(typeof this.port.getTaskByNum==="function")return await this.port.getTaskByNum(J);return(await this.scanAllTasks()).find((Q)=>Q.id===J)??null}return await this.port.getTask(String($))}toTask($){let{nativeId:J,...Q}=$;return Q}toOperation($){let{nativeId:J,...Q}=$;return Q}async scanAllTasks(){return(await this.port.listTasks({limit:Z9,offset:0,includeArchived:!0})).tasks}async createTask($){let J=$.sessionId??this.defaultSessionId,Q;if($.parent_task_id!==void 0&&$.parent_task_id!==null){let W=await this.resolve($.parent_task_id);if(!W)throw Error(`Parent task #${$.parent_task_id} not found.`);Q=W.id}let X=await this.port.createTask({title:$.title,description:$.description,priority:$.priority,type:$.type,goals_and_expected_deliverables:$.goals_and_expected_deliverables,...Q!==void 0?{parent_task_id:Q}:{},due_date:$.due_date,tags:$.tags,project_path:$.project_path,context:$.context,sessionId:J});return await this.createOperation({taskId:X.id,sessionId:J,milestoneType:"create",milestoneTitle:`Task created: ${X.title}`,milestoneDescription:X.description??""}),this.toTask(X)}async getTask($){let J=await this.resolve($);return J?this.toTask(J):null}async getTaskWithOperations($){let J=await this.getTask($);if(!J)return null;let Q=await this.listOperations({taskId:J.id,limit:Z9,offset:0});return{...J,operations:Q}}async listTasks($={}){let J=$.limit??20,Q=$.offset??0,X=(await this.scanAllTasks()).map((W)=>this.toTask(W));return X=this.applyFilters(X,$),{tasks:X.slice(Q,Q+J),total:X.length}}async updateTask($,J){let Q=await this.resolve($);if(!Q)return null;let X;if(J.parent_task_id!==void 0)if(J.parent_task_id===null)X=null;else{let G=await this.resolve(J.parent_task_id);if(!G)throw Error(`Parent task #${J.parent_task_id} not found.`);X=G.id}let W=await this.port.updateTask(Q.nativeId,{title:J.title,description:J.description,status:J.status,priority:J.priority,type:J.type,progress:J.progress,current_status:J.current_status,goals_and_expected_deliverables:J.goals_and_expected_deliverables,due_date:J.due_date,tags:J.tags,project_path:J.project_path,context:J.context,...X!==void 0?{parent_task_id:X}:{}});return W?this.toTask(W):null}async deleteTask($){let J=await this.resolve($);if(!J)return!1;return await this.port.deleteTask(J.nativeId)}async completeTask($,J,Q){let X=await this.resolve($);if(!X)return null;if(X.type==="cycle")throw Error(`Cannot complete cycle task: #${X.id} - ${X.title}. Cycle tasks are not meant to be completed.`);let W={status:"completed",progress:100};if(Q)W.context=KO(X.context,Q);let G=await this.port.updateTask(X.nativeId,W);if(!G)return null;let Y=FO(Q);await this.createOperation({taskId:G.id,sessionId:J??this.defaultSessionId,milestoneType:"completed",milestoneTitle:`Completed: ${G.title}`,milestoneDescription:Y??"Task completed",...Q?{mdPath:Q}:{}});let q=await this.resolve(X.nativeId);return this.toTask(q??G)}async getTaskTree($,J=-1){let Q=await this.resolve($);if(!Q)return[];if(J===0)return[];let X=(await this.scanAllTasks()).map((B)=>this.toTask(B)),W=new Map;for(let B of X){if(B.parent_task_id===void 0)continue;let U=W.get(B.parent_task_id)??[];U.push(B),W.set(B.parent_task_id,U)}let G=[],Y=new Set([Q.id]),q=[Q.id],H=0;while(q.length>0){if(J!==-1&&H>=J)break;let B=[];for(let U of q)for(let z of W.get(U)??[]){if(Y.has(z.id))continue;Y.add(z.id),G.push(z),B.push(z.id)}q=B,H++}return G}async searchTasksByKeywords($,J={}){let Q=J.limit??20,X=J.offset??0,W=(await this.scanAllTasks()).map((q)=>this.toTask(q));if(W=this.applyFilters(W,J),J.excludeTaskId!==void 0)W=W.filter((q)=>q.id!==J.excludeTaskId);let G=$.map((q)=>q.toLowerCase()).filter((q)=>q.length>0),Y=G.length===0?W:W.filter((q)=>{let H=[q.title,q.description,q.goals_and_expected_deliverables,q.current_status,(q.tags??[]).join(" "),q.project_path].join(" ").toLowerCase();return G.every((B)=>H.includes(B))});return{tasks:Y.slice(X,X+Q),total:Y.length}}async createOperation($){let J=await this.resolve($.taskId);if(!J)throw Error(`Task not found: ${$.taskId}`);let Q=$.milestoneType??$.actionType??"progress",X=$.milestoneTitle??$.actionTitle??"",W=$.milestoneDescription??$.actionDescription??"",G=await this.port.createOperation({taskId:J.id,taskNativeId:J.nativeId,sessionId:$.sessionId??this.defaultSessionId,milestoneType:Q,milestoneTitle:X,milestoneDescription:W,processDescription:$.processDescription??"",...$.mdPath?{mdPath:$.mdPath}:{}});return this.toOperation(G)}async listOperations($={}){let J=$.limit??100,Q=$.offset??0,X=$.milestoneType??$.actionType;if($.taskId===void 0)return[];let W=await this.resolve($.taskId);if(!W)return[];let Y=(await this.port.listOperations({taskNativeId:W.nativeId,limit:X?Z9:J,offset:X?0:Q})).operations.map((q)=>this.toOperation(q));if(X)Y=Y.filter((q)=>q.milestoneType===X),Y=Y.slice(Q,Q+J);return Y}async getOperation($){if(typeof this.port.getOperationByNum==="function"){let Q=await this.port.getOperationByNum($);return Q?this.toOperation(Q):null}let J=await this.scanAllTasks();for(let Q of J){let W=(await this.port.listOperations({taskNativeId:Q.nativeId,limit:Z9})).operations.find((G)=>G.id===$);if(W)return this.toOperation(W)}return null}async updateOperation($,J){let Q=await this.getOperation($);if(!Q)return null;if(typeof this.port.updateOperationByNum!=="function")return Q;let X=await this.port.updateOperationByNum($,{sessionId:J.sessionId??Q.sessionId,milestoneType:J.milestoneType??J.actionType??Q.milestoneType,milestoneTitle:J.milestoneTitle??J.actionTitle??Q.milestoneTitle,milestoneDescription:J.milestoneDescription??J.actionDescription??Q.milestoneDescription,processDescription:J.processDescription??Q.processDescription,...J.mdPath!==void 0?{mdPath:J.mdPath}:{}});return X?this.toOperation(X):null}async deleteOperation($){if(typeof this.port.deleteOperationByNum!=="function")return!1;return await this.port.deleteOperationByNum($)}applyFilters($,J){let Q=$;if(J.include_archived!==!0&&J.status!=="archived")Q=Q.filter((W)=>W.status!=="archived");if(J.status!==void 0)Q=Q.filter((W)=>W.status===J.status);if(J.priority!==void 0)Q=Q.filter((W)=>W.priority===J.priority);if(J.type!==void 0)Q=Q.filter((W)=>W.type===J.type);if(J.parent_task_id!==void 0)Q=Q.filter((W)=>W.parent_task_id===J.parent_task_id);if(J.depth!==void 0&&J.depth>=0){let W=MO(Q,J.depth);Q=Q.filter((G)=>W.has(G.id))}return Q}}function OO($){if(typeof $==="number")return Number.isFinite($)?$:void 0;return/^\d+$/.test($)?Number($):void 0}function MO($,J){if(J<0)return new Set($.map((Y)=>Y.id));let Q=new Set($.map((Y)=>Y.id)),X=new Map;for(let Y of $){let q=Y.parent_task_id;if(q===void 0||!Q.has(q))continue;let H=X.get(q)??[];H.push(Y),X.set(q,H)}let W=new Set,G=$.filter((Y)=>Y.parent_task_id===void 0||!Q.has(Y.parent_task_id));for(let Y of G)W.add(Y.id);for(let Y=1;Y<=J;Y++){let q=[];for(let H of G)for(let B of X.get(H.id)??[]){if(W.has(B.id))continue;W.add(B.id),q.push(B)}if(q.length===0)break;G=q}return W}function KO($,J){let Q={};if(typeof $==="string"&&$.trim().length>0)try{let X=JSON.parse($);if(X&&typeof X==="object"&&!Array.isArray(X))Q=X}catch{}return Q.deliverable_storage_path=J,JSON.stringify(Q)}var RO=1e6;function LO($){let J={};if($.type!==void 0)J.type=$.type;if($.progress!==void 0)J.progress=$.progress;if($.current_status!==void 0)J.current_status=$.current_status;if($.goals_and_expected_deliverables!==void 0)J.goals_and_expected_deliverables=$.goals_and_expected_deliverables;if($.project_path!==void 0)J.project_path=$.project_path;if($.context!==void 0)J.context=$.context;if($.due_date!==void 0)J.due_date=$.due_date;return J}function X6($,J,Q){if(typeof $.num!=="number")throw Error(`store did not expose a numeric handle for task ${$.id}`);let X=$.roy??{};return{id:$.num,nativeId:$.id,title:$.title,description:$.description??"",status:J.toRoyStatus($.status),priority:J.toRoyPriority($.priority),type:X.type??"normal",progress:typeof X.progress==="number"?X.progress:$.status==="done"?100:0,current_status:X.current_status??"",goals_and_expected_deliverables:X.goals_and_expected_deliverables??"",...Q!==void 0?{parent_task_id:Q}:{},createdAt:$.created_at,updatedAt:$.updated_at,...X.due_date?{due_date:X.due_date}:{},tags:J.toRoyTags($.tags),project_path:X.project_path??"unknown",context:X.context??"{}"}}function W6($){let J=$.data??{},Q=String(J.milestoneType??J.actionType??"progress"),X=String(J.milestoneTitle??J.actionTitle??""),W=String(J.milestoneDescription??J.actionDescription??""),G=J.taskId??$.task_id,Y=typeof G==="number"?G:typeof G==="string"&&/^\d+$/.test(G)?Number(G):0;return{id:typeof $.num==="number"?$.num:0,nativeId:$.id,taskId:Y,sessionId:String(J.sessionId??$.task_id??"unknown"),milestoneType:Q,milestoneTitle:X,milestoneDescription:W,processDescription:String(J.processDescription??""),timestamp:$.created_at,...J.mdPath?{mdPath:String(J.mdPath)}:{},actionType:Q,actionTitle:X,actionDescription:W}}function o3($,J,Q={}){let X=Q.operationType??"roy.milestone",W=Q.agent??"roy",G=Q.scanLimit??RO;async function Y(){let B=await $.listTasks({limit:G});return new Map(B.tasks.filter((U)=>typeof U.num==="number").map((U)=>[U.id,U.num]))}async function q(B){if(typeof $.getTaskByNum==="function")return await $.getTaskByNum(B);return(await $.listTasks({limit:G})).tasks.find((z)=>z.num===B)??null}async function H(B){let z=[...(await Y()).entries()].find(([,V])=>V===B);if(!z)throw Error(`parent task not found: ${B}`);return z[0]}return{async createTask(B){let U=B.parent_task_id!==void 0?await H(B.parent_task_id):null,z={type:B.type??"normal",progress:B.progress??0,current_status:B.current_status??"",goals_and_expected_deliverables:B.goals_and_expected_deliverables??"",project_path:B.project_path,context:B.context,...B.due_date?{due_date:B.due_date}:{}},V=await $.createTask({title:B.title,description:B.description,priority:J.toStorePriority(B.priority),owner:W,tags:J.toStoreTags(B.tags),parent_id:U,session_id:B.sessionId??"unknown",roy:z});return X6(V,J,B.parent_task_id)},async getTask(B){let U=await $.getTask(B);if(!U)return null;let z=await Y();return X6(U,J,U.parent_id?z.get(U.parent_id):void 0)},async getTaskByNum(B){let U=await q(B);if(!U)return null;let z=await Y();return X6(U,J,U.parent_id?z.get(U.parent_id):void 0)},async listTasks(B){let U=await $.listTasks({limit:B?.limit??20,offset:B?.offset??0}),z=await Y();return{tasks:U.tasks.map((V)=>X6(V,J,V.parent_id?z.get(V.parent_id):void 0)),total:U.total}},async updateTask(B,U){let z=LO(U),V=await $.updateTask(B,{...U.title!==void 0?{title:U.title}:{},...U.description!==void 0?{description:U.description}:{},...U.status!==void 0?{status:J.toStoreStatus(U.status)}:{},...U.priority!==void 0?{priority:J.toStorePriority(U.priority)}:{},...U.tags!==void 0?{tags:J.toStoreTags(U.tags)}:{},...Object.keys(z).length>0?{roy:z}:{}});if(!V)return null;let M;if(U.parent_task_id!==void 0){let D=U.parent_task_id===null?null:await H(U.parent_task_id);if(typeof $.setParentId==="function")await $.setParentId(B,D);M=U.parent_task_id===null?void 0:U.parent_task_id}let F=await $.getTask(B)??V;if(M===void 0&&F.parent_id)M=(await Y()).get(F.parent_id);return X6(F,J,M)},async deleteTask(B){return await $.deleteTask(B)},async createOperation(B){let U=await $.appendOperation({task_id:B.taskNativeId??String(B.taskId),type:X,data:{taskId:B.taskId,sessionId:B.sessionId,milestoneType:B.milestoneType,milestoneTitle:B.milestoneTitle,milestoneDescription:B.milestoneDescription,processDescription:B.processDescription,...B.mdPath?{mdPath:B.mdPath}:{}}});return W6(U)},async listOperations(B){let U=await $.listOperations({...B?.taskNativeId?{task_id:B.taskNativeId}:{},type:X,limit:B?.limit??G,offset:B?.offset??0});return{operations:U.operations.map(W6),total:U.total}},async getOperationByNum(B){if(typeof $.getOperationByNum!=="function")return null;let U=await $.getOperationByNum(B);return U?W6(U):null},async updateOperationByNum(B,U){if(typeof $.updateOperation!=="function")return null;if(typeof $.getOperationByNum!=="function")return null;let z=await $.getOperationByNum(B);if(!z)return null;let V=W6(z),M=await $.updateOperation(B,{data:{taskId:V.taskId,sessionId:U.sessionId??V.sessionId,milestoneType:U.milestoneType??V.milestoneType,milestoneTitle:U.milestoneTitle??V.milestoneTitle,milestoneDescription:U.milestoneDescription??V.milestoneDescription,processDescription:U.processDescription??V.processDescription,...U.mdPath??V.mdPath?{mdPath:U.mdPath??V.mdPath}:{}}});return M?W6(M):null},async deleteOperationByNum(B){if(typeof $.deleteOperation!=="function")return!1;return await $.deleteOperation(B)}}}var AO="roy.milestone",_O={todo:"pending",active:"in_progress",completed:"done",cancelled:"cancelled",paused:"blocked",archived:"archived"},jO={pending:"todo",in_progress:"active",done:"completed",cancelled:"cancelled",blocked:"paused",review:"active",archived:"archived"};function t3($){return _O[$]??"pending"}function e3($){return jO[$]??"todo"}function $1($){if($==="high")return 1;if($==="low")return 5;return 3}function J1($){if($===void 0)return"medium";if($<=2)return"high";return $===3?"medium":"low"}function Q1($){if(!$||$.length===0)return;return $.join(",")}function X1($){if(!$)return[];return $.split(",").map((J)=>J.trim()).filter((J)=>J.length>0)}var NO={toRoyStatus:($)=>e3($),toStoreStatus:($)=>t3($),toRoyPriority:($)=>J1($),toStorePriority:($)=>$1($),toRoyTags:($)=>X1($),toStoreTags:($)=>Q1($)};function W1($,J={}){return new i8(o3($,NO,{operationType:AO,agent:J.agent??"roy"}),{sessionId:J.sessionId})}var tA=l8.options,eA=c8.options,$_=d8.options,J_=p8.options;var Y1=Symbol("Let zodToJsonSchema decide on which parser to use");var G1={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},q1=($)=>typeof $==="string"?{...G1,name:$}:{...G1,...$};var H1=($)=>{let J=q1($),Q=J.name!==void 0?[...J.basePath,J.definitionPath,J.name]:J.basePath;return{...J,flags:{hasReferencedOpenAiAnyType:!1},currentPath:Q,propertyPath:void 0,seen:new Map(Object.entries(J.definitions).map(([X,W])=>[W._def,{def:W._def,path:[...J.basePath,J.definitionPath,X],jsonSchema:void 0}]))}};function n8($,J,Q,X){if(!X?.errorMessages)return;if(Q)$.errorMessage={...$.errorMessage,[J]:Q}}function d($,J,Q,X,W){$[J]=Q,n8($,J,X,W)}var w9=($,J)=>{let Q=0;for(;Q<$.length&&Q<J.length;Q++)if($[Q]!==J[Q])break;return[($.length-Q).toString(),...J.slice(Q)].join("/")};function t($){if($.target!=="openAi")return{};let J=[...$.basePath,$.definitionPath,$.openAiAnyTypeName];return $.flags.hasReferencedOpenAiAnyType=!0,{$ref:$.$refStrategy==="relative"?w9(J,$.currentPath):J.join("/")}}function B1($,J){let Q={type:"array"};if($.type?._def&&$.type?._def?.typeName!==j.ZodAny)Q.items=v($.type._def,{...J,currentPath:[...J.currentPath,"items"]});if($.minLength)d(Q,"minItems",$.minLength.value,$.minLength.message,J);if($.maxLength)d(Q,"maxItems",$.maxLength.value,$.maxLength.message,J);if($.exactLength)d(Q,"minItems",$.exactLength.value,$.exactLength.message,J),d(Q,"maxItems",$.exactLength.value,$.exactLength.message,J);return Q}function U1($,J){let Q={type:"integer",format:"int64"};if(!$.checks)return Q;for(let X of $.checks)switch(X.kind){case"min":if(J.target==="jsonSchema7")if(X.inclusive)d(Q,"minimum",X.value,X.message,J);else d(Q,"exclusiveMinimum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMinimum=!0;d(Q,"minimum",X.value,X.message,J)}break;case"max":if(J.target==="jsonSchema7")if(X.inclusive)d(Q,"maximum",X.value,X.message,J);else d(Q,"exclusiveMaximum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMaximum=!0;d(Q,"maximum",X.value,X.message,J)}break;case"multipleOf":d(Q,"multipleOf",X.value,X.message,J);break}return Q}function V1(){return{type:"boolean"}}function b9($,J){return v($.type._def,J)}var z1=($,J)=>{return v($.innerType._def,J)};function r8($,J,Q){let X=Q??J.dateStrategy;if(Array.isArray(X))return{anyOf:X.map((W,G)=>r8($,J,W))};switch(X){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return ZO($,J)}}var ZO=($,J)=>{let Q={type:"integer",format:"unix-time"};if(J.target==="openApi3")return Q;for(let X of $.checks)switch(X.kind){case"min":d(Q,"minimum",X.value,X.message,J);break;case"max":d(Q,"maximum",X.value,X.message,J);break}return Q};function D1($,J){return{...v($.innerType._def,J),default:$.defaultValue()}}function F1($,J){return J.effectStrategy==="input"?v($.schema._def,J):t(J)}function O1($){return{type:"string",enum:Array.from($.values)}}var wO=($)=>{if("type"in $&&$.type==="string")return!1;return"allOf"in $};function M1($,J){let Q=[v($.left._def,{...J,currentPath:[...J.currentPath,"allOf","0"]}),v($.right._def,{...J,currentPath:[...J.currentPath,"allOf","1"]})].filter((G)=>!!G),X=J.target==="jsonSchema2019-09"?{unevaluatedProperties:!1}:void 0,W=[];return Q.forEach((G)=>{if(wO(G)){if(W.push(...G.allOf),G.unevaluatedProperties===void 0)X=void 0}else{let Y=G;if("additionalProperties"in G&&G.additionalProperties===!1){let{additionalProperties:q,...H}=G;Y=H}else X=void 0;W.push(Y)}}),W.length?{allOf:W,...X}:void 0}function K1($,J){let Q=typeof $.value;if(Q!=="bigint"&&Q!=="number"&&Q!=="boolean"&&Q!=="string")return{type:Array.isArray($.value)?"array":"object"};if(J.target==="openApi3")return{type:Q==="bigint"?"integer":Q,enum:[$.value]};return{type:Q==="bigint"?"integer":Q,const:$.value}}var a8=void 0,C0={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>{if(a8===void 0)a8=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return a8},uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function P9($,J){let Q={type:"string"};if($.checks)for(let X of $.checks)switch(X.kind){case"min":d(Q,"minLength",typeof Q.minLength==="number"?Math.max(Q.minLength,X.value):X.value,X.message,J);break;case"max":d(Q,"maxLength",typeof Q.maxLength==="number"?Math.min(Q.maxLength,X.value):X.value,X.message,J);break;case"email":switch(J.emailStrategy){case"format:email":f0(Q,"email",X.message,J);break;case"format:idn-email":f0(Q,"idn-email",X.message,J);break;case"pattern:zod":V0(Q,C0.email,X.message,J);break}break;case"url":f0(Q,"uri",X.message,J);break;case"uuid":f0(Q,"uuid",X.message,J);break;case"regex":V0(Q,X.regex,X.message,J);break;case"cuid":V0(Q,C0.cuid,X.message,J);break;case"cuid2":V0(Q,C0.cuid2,X.message,J);break;case"startsWith":V0(Q,RegExp(`^${s8(X.value,J)}`),X.message,J);break;case"endsWith":V0(Q,RegExp(`${s8(X.value,J)}$`),X.message,J);break;case"datetime":f0(Q,"date-time",X.message,J);break;case"date":f0(Q,"date",X.message,J);break;case"time":f0(Q,"time",X.message,J);break;case"duration":f0(Q,"duration",X.message,J);break;case"length":d(Q,"minLength",typeof Q.minLength==="number"?Math.max(Q.minLength,X.value):X.value,X.message,J),d(Q,"maxLength",typeof Q.maxLength==="number"?Math.min(Q.maxLength,X.value):X.value,X.message,J);break;case"includes":{V0(Q,RegExp(s8(X.value,J)),X.message,J);break}case"ip":{if(X.version!=="v6")f0(Q,"ipv4",X.message,J);if(X.version!=="v4")f0(Q,"ipv6",X.message,J);break}case"base64url":V0(Q,C0.base64url,X.message,J);break;case"jwt":V0(Q,C0.jwt,X.message,J);break;case"cidr":{if(X.version!=="v6")V0(Q,C0.ipv4Cidr,X.message,J);if(X.version!=="v4")V0(Q,C0.ipv6Cidr,X.message,J);break}case"emoji":V0(Q,C0.emoji(),X.message,J);break;case"ulid":{V0(Q,C0.ulid,X.message,J);break}case"base64":{switch(J.base64Strategy){case"format:binary":{f0(Q,"binary",X.message,J);break}case"contentEncoding:base64":{d(Q,"contentEncoding","base64",X.message,J);break}case"pattern:zod":{V0(Q,C0.base64,X.message,J);break}}break}case"nanoid":V0(Q,C0.nanoid,X.message,J);case"toLowerCase":case"toUpperCase":case"trim":break;default:((W)=>{})(X)}return Q}function s8($,J){return J.patternStrategy==="escape"?PO($):$}var bO=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function PO($){let J="";for(let Q=0;Q<$.length;Q++){if(!bO.has($[Q]))J+="\\";J+=$[Q]}return J}function f0($,J,Q,X){if($.format||$.anyOf?.some((W)=>W.format)){if(!$.anyOf)$.anyOf=[];if($.format){if($.anyOf.push({format:$.format,...$.errorMessage&&X.errorMessages&&{errorMessage:{format:$.errorMessage.format}}}),delete $.format,$.errorMessage){if(delete $.errorMessage.format,Object.keys($.errorMessage).length===0)delete $.errorMessage}}$.anyOf.push({format:J,...Q&&X.errorMessages&&{errorMessage:{format:Q}}})}else d($,"format",J,Q,X)}function V0($,J,Q,X){if($.pattern||$.allOf?.some((W)=>W.pattern)){if(!$.allOf)$.allOf=[];if($.pattern){if($.allOf.push({pattern:$.pattern,...$.errorMessage&&X.errorMessages&&{errorMessage:{pattern:$.errorMessage.pattern}}}),delete $.pattern,$.errorMessage){if(delete $.errorMessage.pattern,Object.keys($.errorMessage).length===0)delete $.errorMessage}}$.allOf.push({pattern:R1(J,X),...Q&&X.errorMessages&&{errorMessage:{pattern:Q}}})}else d($,"pattern",R1(J,X),Q,X)}function R1($,J){if(!J.applyRegexFlags||!$.flags)return $.source;let Q={i:$.flags.includes("i"),m:$.flags.includes("m"),s:$.flags.includes("s")},X=Q.i?$.source.toLowerCase():$.source,W="",G=!1,Y=!1,q=!1;for(let H=0;H<X.length;H++){if(G){W+=X[H],G=!1;continue}if(Q.i){if(Y){if(X[H].match(/[a-z]/)){if(q)W+=X[H],W+=`${X[H-2]}-${X[H]}`.toUpperCase(),q=!1;else if(X[H+1]==="-"&&X[H+2]?.match(/[a-z]/))W+=X[H],q=!0;else W+=`${X[H]}${X[H].toUpperCase()}`;continue}}else if(X[H].match(/[a-z]/)){W+=`[${X[H]}${X[H].toUpperCase()}]`;continue}}if(Q.m){if(X[H]==="^"){W+=`(^|(?<=[\r
2771
- ]))`;continue}else if(X[H]==="$"){W+=`($|(?=[\r
2772
- ]))`;continue}}if(Q.s&&X[H]==="."){W+=Y?`${X[H]}\r
2773
- `:`[${X[H]}\r
2774
- ]`;continue}if(W+=X[H],X[H]==="\\")G=!0;else if(Y&&X[H]==="]")Y=!1;else if(!Y&&X[H]==="[")Y=!0}try{new RegExp(W)}catch{return console.warn(`Could not convert regex pattern at ${J.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),$.source}return W}function S9($,J){if(J.target==="openAi")console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.");if(J.target==="openApi3"&&$.keyType?._def.typeName===j.ZodEnum)return{type:"object",required:$.keyType._def.values,properties:$.keyType._def.values.reduce((X,W)=>({...X,[W]:v($.valueType._def,{...J,currentPath:[...J.currentPath,"properties",W]})??t(J)}),{}),additionalProperties:J.rejectedAdditionalProperties};let Q={type:"object",additionalProperties:v($.valueType._def,{...J,currentPath:[...J.currentPath,"additionalProperties"]})??J.allowedAdditionalProperties};if(J.target==="openApi3")return Q;if($.keyType?._def.typeName===j.ZodString&&$.keyType._def.checks?.length){let{type:X,...W}=P9($.keyType._def,J);return{...Q,propertyNames:W}}else if($.keyType?._def.typeName===j.ZodEnum)return{...Q,propertyNames:{enum:$.keyType._def.values}};else if($.keyType?._def.typeName===j.ZodBranded&&$.keyType._def.type._def.typeName===j.ZodString&&$.keyType._def.type._def.checks?.length){let{type:X,...W}=b9($.keyType._def,J);return{...Q,propertyNames:W}}return Q}function L1($,J){if(J.mapStrategy==="record")return S9($,J);let Q=v($.keyType._def,{...J,currentPath:[...J.currentPath,"items","items","0"]})||t(J),X=v($.valueType._def,{...J,currentPath:[...J.currentPath,"items","items","1"]})||t(J);return{type:"array",maxItems:125,items:{type:"array",items:[Q,X],minItems:2,maxItems:2}}}function A1($){let J=$.values,X=Object.keys($.values).filter((G)=>{return typeof J[J[G]]!=="number"}).map((G)=>J[G]),W=Array.from(new Set(X.map((G)=>typeof G)));return{type:W.length===1?W[0]==="string"?"string":"number":["string","number"],enum:X}}function _1($){return $.target==="openAi"?void 0:{not:t({...$,currentPath:[...$.currentPath,"not"]})}}function j1($){return $.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var G6={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function Z1($,J){if(J.target==="openApi3")return N1($,J);let Q=$.options instanceof Map?Array.from($.options.values()):$.options;if(Q.every((X)=>(X._def.typeName in G6)&&(!X._def.checks||!X._def.checks.length))){let X=Q.reduce((W,G)=>{let Y=G6[G._def.typeName];return Y&&!W.includes(Y)?[...W,Y]:W},[]);return{type:X.length>1?X:X[0]}}else if(Q.every((X)=>X._def.typeName==="ZodLiteral"&&!X.description)){let X=Q.reduce((W,G)=>{let Y=typeof G._def.value;switch(Y){case"string":case"number":case"boolean":return[...W,Y];case"bigint":return[...W,"integer"];case"object":if(G._def.value===null)return[...W,"null"];case"symbol":case"undefined":case"function":default:return W}},[]);if(X.length===Q.length){let W=X.filter((G,Y,q)=>q.indexOf(G)===Y);return{type:W.length>1?W:W[0],enum:Q.reduce((G,Y)=>{return G.includes(Y._def.value)?G:[...G,Y._def.value]},[])}}}else if(Q.every((X)=>X._def.typeName==="ZodEnum"))return{type:"string",enum:Q.reduce((X,W)=>[...X,...W._def.values.filter((G)=>!X.includes(G))],[])};return N1($,J)}var N1=($,J)=>{let Q=($.options instanceof Map?Array.from($.options.values()):$.options).map((X,W)=>v(X._def,{...J,currentPath:[...J.currentPath,"anyOf",`${W}`]})).filter((X)=>!!X&&(!J.strictUnions||typeof X==="object"&&Object.keys(X).length>0));return Q.length?{anyOf:Q}:void 0};function w1($,J){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes($.innerType._def.typeName)&&(!$.innerType._def.checks||!$.innerType._def.checks.length)){if(J.target==="openApi3")return{type:G6[$.innerType._def.typeName],nullable:!0};return{type:[G6[$.innerType._def.typeName],"null"]}}if(J.target==="openApi3"){let X=v($.innerType._def,{...J,currentPath:[...J.currentPath]});if(X&&"$ref"in X)return{allOf:[X],nullable:!0};return X&&{...X,nullable:!0}}let Q=v($.innerType._def,{...J,currentPath:[...J.currentPath,"anyOf","0"]});return Q&&{anyOf:[Q,{type:"null"}]}}function b1($,J){let Q={type:"number"};if(!$.checks)return Q;for(let X of $.checks)switch(X.kind){case"int":Q.type="integer",n8(Q,"type",X.message,J);break;case"min":if(J.target==="jsonSchema7")if(X.inclusive)d(Q,"minimum",X.value,X.message,J);else d(Q,"exclusiveMinimum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMinimum=!0;d(Q,"minimum",X.value,X.message,J)}break;case"max":if(J.target==="jsonSchema7")if(X.inclusive)d(Q,"maximum",X.value,X.message,J);else d(Q,"exclusiveMaximum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMaximum=!0;d(Q,"maximum",X.value,X.message,J)}break;case"multipleOf":d(Q,"multipleOf",X.value,X.message,J);break}return Q}function P1($,J){let Q=J.target==="openAi",X={type:"object",properties:{}},W=[],G=$.shape();for(let q in G){let H=G[q];if(H===void 0||H._def===void 0)continue;let B=EO(H);if(B&&Q){if(H._def.typeName==="ZodOptional")H=H._def.innerType;if(!H.isNullable())H=H.nullable();B=!1}let U=v(H._def,{...J,currentPath:[...J.currentPath,"properties",q],propertyPath:[...J.currentPath,"properties",q]});if(U===void 0)continue;if(X.properties[q]=U,!B)W.push(q)}if(W.length)X.required=W;let Y=SO($,J);if(Y!==void 0)X.additionalProperties=Y;return X}function SO($,J){if($.catchall._def.typeName!=="ZodNever")return v($.catchall._def,{...J,currentPath:[...J.currentPath,"additionalProperties"]});switch($.unknownKeys){case"passthrough":return J.allowedAdditionalProperties;case"strict":return J.rejectedAdditionalProperties;case"strip":return J.removeAdditionalStrategy==="strict"?J.allowedAdditionalProperties:J.rejectedAdditionalProperties}}function EO($){try{return $.isOptional()}catch{return!0}}var S1=($,J)=>{if(J.currentPath.toString()===J.propertyPath?.toString())return v($.innerType._def,J);let Q=v($.innerType._def,{...J,currentPath:[...J.currentPath,"anyOf","1"]});return Q?{anyOf:[{not:t(J)},Q]}:t(J)};var E1=($,J)=>{if(J.pipeStrategy==="input")return v($.in._def,J);else if(J.pipeStrategy==="output")return v($.out._def,J);let Q=v($.in._def,{...J,currentPath:[...J.currentPath,"allOf","0"]}),X=v($.out._def,{...J,currentPath:[...J.currentPath,"allOf",Q?"1":"0"]});return{allOf:[Q,X].filter((W)=>W!==void 0)}};function C1($,J){return v($.type._def,J)}function f1($,J){let X={type:"array",uniqueItems:!0,items:v($.valueType._def,{...J,currentPath:[...J.currentPath,"items"]})};if($.minSize)d(X,"minItems",$.minSize.value,$.minSize.message,J);if($.maxSize)d(X,"maxItems",$.maxSize.value,$.maxSize.message,J);return X}function T1($,J){if($.rest)return{type:"array",minItems:$.items.length,items:$.items.map((Q,X)=>v(Q._def,{...J,currentPath:[...J.currentPath,"items",`${X}`]})).reduce((Q,X)=>X===void 0?Q:[...Q,X],[]),additionalItems:v($.rest._def,{...J,currentPath:[...J.currentPath,"additionalItems"]})};else return{type:"array",minItems:$.items.length,maxItems:$.items.length,items:$.items.map((Q,X)=>v(Q._def,{...J,currentPath:[...J.currentPath,"items",`${X}`]})).reduce((Q,X)=>X===void 0?Q:[...Q,X],[])}}function I1($){return{not:t($)}}function v1($){return t($)}var x1=($,J)=>{return v($.innerType._def,J)};var h1=($,J,Q)=>{switch(J){case j.ZodString:return P9($,Q);case j.ZodNumber:return b1($,Q);case j.ZodObject:return P1($,Q);case j.ZodBigInt:return U1($,Q);case j.ZodBoolean:return V1();case j.ZodDate:return r8($,Q);case j.ZodUndefined:return I1(Q);case j.ZodNull:return j1(Q);case j.ZodArray:return B1($,Q);case j.ZodUnion:case j.ZodDiscriminatedUnion:return Z1($,Q);case j.ZodIntersection:return M1($,Q);case j.ZodTuple:return T1($,Q);case j.ZodRecord:return S9($,Q);case j.ZodLiteral:return K1($,Q);case j.ZodEnum:return O1($);case j.ZodNativeEnum:return A1($);case j.ZodNullable:return w1($,Q);case j.ZodOptional:return S1($,Q);case j.ZodMap:return L1($,Q);case j.ZodSet:return f1($,Q);case j.ZodLazy:return()=>$.getter()._def;case j.ZodPromise:return C1($,Q);case j.ZodNaN:case j.ZodNever:return _1(Q);case j.ZodEffects:return F1($,Q);case j.ZodAny:return t(Q);case j.ZodUnknown:return v1(Q);case j.ZodDefault:return D1($,Q);case j.ZodBranded:return b9($,Q);case j.ZodReadonly:return x1($,Q);case j.ZodCatch:return z1($,Q);case j.ZodPipeline:return E1($,Q);case j.ZodFunction:case j.ZodVoid:case j.ZodSymbol:return;default:return((X)=>{return})(J)}};function v($,J,Q=!1){let X=J.seen.get($);if(J.override){let q=J.override?.($,J,X,Q);if(q!==Y1)return q}if(X&&!Q){let q=CO(X,J);if(q!==void 0)return q}let W={def:$,path:J.currentPath,jsonSchema:void 0};J.seen.set($,W);let G=h1($,$.typeName,J),Y=typeof G==="function"?v(G(),J):G;if(Y)fO($,J,Y);if(J.postProcess){let q=J.postProcess(Y,$,J);return W.jsonSchema=Y,q}return W.jsonSchema=Y,Y}var CO=($,J)=>{switch(J.$refStrategy){case"root":return{$ref:$.path.join("/")};case"relative":return{$ref:w9(J.currentPath,$.path)};case"none":case"seen":{if($.path.length<J.currentPath.length&&$.path.every((Q,X)=>J.currentPath[X]===Q))return console.warn(`Recursive reference detected at ${J.currentPath.join("/")}! Defaulting to any`),t(J);return J.$refStrategy==="seen"?t(J):void 0}}},fO=($,J,Q)=>{if($.description){if(Q.description=$.description,J.markdownDescription)Q.markdownDescription=$.description}return Q};var o8=($,J)=>{let Q=H1(J),X=typeof J==="object"&&J.definitions?Object.entries(J.definitions).reduce((H,[B,U])=>({...H,[B]:v(U._def,{...Q,currentPath:[...Q.basePath,Q.definitionPath,B]},!0)??t(Q)}),{}):void 0,W=typeof J==="string"?J:J?.nameStrategy==="title"?void 0:J?.name,G=v($._def,W===void 0?Q:{...Q,currentPath:[...Q.basePath,Q.definitionPath,W]},!1)??t(Q),Y=typeof J==="object"&&J.name!==void 0&&J.nameStrategy==="title"?J.name:void 0;if(Y!==void 0)G.title=Y;if(Q.flags.hasReferencedOpenAiAnyType){if(!X)X={};if(!X[Q.openAiAnyTypeName])X[Q.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:Q.$refStrategy==="relative"?"1":[...Q.basePath,Q.definitionPath,Q.openAiAnyTypeName].join("/")}}}let q=W===void 0?X?{...G,[Q.definitionPath]:X}:G:{$ref:[...Q.$refStrategy==="relative"?[]:Q.basePath,Q.definitionPath,W].join("/"),[Q.definitionPath]:{...X,[W]:G}};if(Q.target==="jsonSchema7")q.$schema="http://json-schema.org/draft-07/schema#";else if(Q.target==="jsonSchema2019-09"||Q.target==="openAi")q.$schema="https://json-schema.org/draft/2019-09/schema#";if(Q.target==="openAi"&&(("anyOf"in q)||("oneOf"in q)||("allOf"in q)||("type"in q)&&Array.isArray(q.type)))console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.");return q};var TO=[i2,t2,n2,r2,a2,s2,o2,e2,$6];function IO($){let J=$;if(!J)return{};let Q=J.shape?J:J._def?.schema??J;try{let X=o8(Q,{target:"jsonSchema7",$refStrategy:"none",effectStrategy:"input"}),{$schema:W,...G}=X;return G}catch{return{}}}function y1($,J={}){let Q=W1($,J);return TO.map((X)=>{let W=X(Q);return{name:W.name,description:W.description,input:IO(W.parameters),options:{codemode:!1},execute:async(G,Y)=>{let q={session_id:Y?.sessionID??J.sessionId??"unknown",workdir:Y?.directory};try{let H=await W.execute(G??{},q),B=typeof H.output==="string"?H.output:JSON.stringify(H.output??"");return{content:H.success?B:`ERROR: ${H.error??"unknown error"}`,metadata:{tool:W.name,ok:H.success}}}catch(H){return{content:`ERROR: ${H instanceof Error?H.message:String(H)}`,metadata:{tool:W.name,ok:!1}}}}}})}function g1($,J){let Q=$?.dispose;if(typeof Q==="function")J.push(Q)}async function k1($,J){let Q=J.enabled!==!1,X={enabled:Q,agentId:null,toolNames:[],errors:[],disposers:[]};if(!Q)return X;let W=$??{},G=J.agent??B2;if(typeof W.agent?.transform==="function")try{let q=await W.agent.transform((H)=>{y9(H)});g1(q,X.disposers),X.agentId=G}catch(q){X.errors.push(`roy agent registration failed: ${t8(q)}`)}else X.errors.push("ctx.agent.transform unavailable \u2014 roy agent not registered");let Y=[];try{Y=y1(J.store,{agent:G,...J.sessionId?{sessionId:J.sessionId}:{}})}catch(q){return X.errors.push(`roy tool construction failed: ${t8(q)}`),X}if(typeof W.tool?.transform==="function")try{let q=await W.tool.transform((H)=>{for(let B of Y)H.add(B)});g1(q,X.disposers),X.toolNames=Y.map((H)=>H.name)}catch(q){X.errors.push(`roy tool registration failed: ${t8(q)}`)}else X.errors.push("ctx.tool.transform unavailable \u2014 roy task tools not registered");return X}function t8($){return $ instanceof Error?$.message:String($)}import{join as J7}from"path";import{homedir as uO}from"os";import{mkdirSync as lO}from"fs";import{Database as vO}from"bun:sqlite";import{createHash as xO,randomUUID as hO}from"crypto";var yO=`
3068
+ `;return this.db.prepare(X).all(`%${J}%`,Q).map((G)=>this.rowToTask(G))}rowToTag(J){return{id:J.id,name:J.name,createdAt:new Date(J.created_at).toISOString(),taskCount:J.task_count}}async syncTaskTagsJson(J){let X=(await this.getTagsForTask(J)).map((G)=>G.name);this.db.prepare("UPDATE task SET tags = ? WHERE id = ?").run(X.length>0?JSON.stringify(X):null,J),this.tasksCache.delete(J)}async close(){if(this.db)this.db.close(),this.db=null,this.initialized=!1;this.tasksCache.clear(),this.operationsCache.clear()}},k([u("task.rowToTask",{recordParams:!0,recordResult:!0,log:!0})],S$.prototype,"rowToTask",null),k([u("task.searchTasksByKeywords",{recordParams:!0,recordResult:!0,log:!0})],S$.prototype,"searchTasksByKeywords",null)});function e3($,J,Q){let X=J.toUpperCase();if(!$.startsWith(X))return;let Y=Q.replace(/-/g,"_").toUpperCase(),G=$.slice(X.length);if(G.startsWith("_"))G=G.slice(1);if(!G)return;let q=G.indexOf("_"),W;if(q===-1)W=G;else{let H=G.slice(0,q),B=G.slice(q+1);if(H===Y)W=B;else W=G}if(!W)return;let z=W.replace(/_/g,".");return`${Q}.${z.toLowerCase()}`}function $1($,J){return{...$,execute:J}}var FM=()=>{},J1=a(()=>{FM(),w8(),z2()});J1();class c8{_status="created";_enabled=!0;env;hookManager;constructor(){this.hookManager=new K9}getStatus(){return this._status}getConfig(){return{name:this.name,version:this.version,enabled:this._enabled,env:this.env}}isEnvInitialized(){return this._status!=="created"}setStatus($){this._status=$}getEnv(){return this.env}async init($){if($?.env)this.env=$.env;this.setStatus("initializing");try{if($?.name)Object.defineProperty(this,"name",{value:$.name,writable:!1});if($?.version)Object.defineProperty(this,"version",{value:$.version,writable:!1})}catch{}if($?.enabled!==void 0)this._enabled=$.enabled;this.hookManager.setComponentInfo(this.name,this.version),await this.onInit(),this.setStatus("running")}async start(){if(this._started)return;this._started=!0,await this.onStart(),this.setStatus("running")}async stop(){this.setStatus("stopping"),this.hookManager.clear(),await this.onStop(),this.setStatus("stopped")}async onInit(){}async onStart(){}async onStop(){}registerHook($,J){this.hookManager.register($,J)}addHook($,J,Q,X){this.hookManager.register($,$1({name:J,priority:X},Q))}removeHook($,J){return this.hookManager.unregister($,J)}async executeHooks($,J,Q){await this.hookManager.execute($,J,Q)}getConfigComponent(){return this.env?.getComponent("config")}getRuntimeConfig($,J){let Q=this.getConfigComponent();if(Q){let X=Q.get($);if(X!==void 0)return X}return J}}n();var MM={"task.storage.type":"sqlite","task.storage.dbPath":void 0},OM={name:"task",sources:[{type:"env",envPrefix:"TASK",priority:20,watch:!1}],keys:[{key:"task.storage.type",sources:["env","file"]},{key:"task.storage.dbPath",sources:["env","file"]}]};z2();B$();n();var W6=i("task:tag");class Y1{store;constructor($){this.store=$}async createTag($){let J=await this.store.createTag($);return W6.debug(`[TagService] Created tag: ${J.name} (id=${J.id})`),J}async getTag($){return this.store.getTag($)}async getTagByName($){return this.store.getTagByName($)}async listTags($){return this.store.listTags($)}async searchTags($){return this.store.searchTags($)}async deleteTag($){let J=await this.store.deleteTag($);if(J)W6.debug(`[TagService] Deleted tag id=${$}`);return J}async addTagsToTask($,J){await this.store.addTagsToTask($,J),W6.debug(`[TagService] Added ${J.length} tags to task ${$}`)}async removeTagsFromTask($,J){await this.store.removeTagsFromTask($,J),W6.debug(`[TagService] Removed ${J.length} tags from task ${$}`)}async getTagsForTask($){return this.store.getTagsForTask($)}async getTaskIdsByTags($){return this.store.getTaskIdsByTags($)}async findSimilarTasks($,J=5){return this.store.findSimilarTasks($,J)}async searchTasks($,J=20){return this.store.searchTasks($,J)}async searchTasksByKeywords($,J){return(await this.store.searchTasksByKeywords($,J)).tasks}async findSimilarTasksByKeywords($,J){return this.store.findSimilarTasksByKeywords($,J)}async syncTagsToTask($,J){let Q=[];for(let z of J){let H=await this.store.getTagByName(z);if(!H)H=await this.store.createTag(z);Q.push(H.id)}let X=await this.store.getTagsForTask($),Y=new Set(X.map((z)=>z.id)),G=new Set(Q),q=Q.filter((z)=>!Y.has(z)),W=X.filter((z)=>!G.has(z.id)).map((z)=>z.id);if(W.length>0)await this.store.removeTagsFromTask($,W);if(q.length>0)await this.store.addTagsToTask($,q);await this.store.updateTaskTags($,J),W6.info(`[TagService] Synced tags for task ${$}: ${J.join(", ")}`)}}V0();var Q0=i("task");function Q1($){return $==="completed"||$==="cancelled"||$==="archived"}function KM($){if(!$)return!1;let J=$.trim();if(!J)return!1;return a7.some((Q)=>J.startsWith(Q))}var RM="Deliverable: ";function X1($){if(!$)return;return`${RM}${$}`}class V$ extends c8{name="task";version="1.0.0";store;config;toolComponent;backgroundTaskManager;skipAbortRunningTasksOnDispose=!1;waitForRunningTasksOnDispose=!1;configComponent;tagService;plugins=new Map;getBackgroundTaskManager(){return this.backgroundTaskManager}publishEvent($,J,Q){if(this.env?.pushEnvEvent)this.env.pushEnvEvent({type:$,payload:J,metadata:{source:"task.component",trigger_session_id:Q}}),Q0.info(`[TaskComponent] Event published: ${$}`)}constructor(){super()}async init($){await super.init($);let J=$?.options;if(!J?.configComponent)throw Error("ConfigComponent is required for TaskComponent initialization");this.configComponent=J.configComponent,this.skipAbortRunningTasksOnDispose=J.skipAbortRunningTasksOnDispose===!0,this.waitForRunningTasksOnDispose=J.waitForRunningTasksOnDispose===!0,await this.registerConfig(J),this.setStatus("running"),Q0.info("[TaskComponent] Initialized")}async registerConfig($){let J=this.configComponent;if(!J)return;let{configPath:Q,envPrefix:X,config:Y}=$,G=X??"TASK";if(J.registerComponent(OM),Q)J.registerSource({type:"file",relativePath:Q,optional:!0,watch:!1});J.registerSource({type:"env",envPrefix:G,priority:20,watch:!1}),await J.load("task");for(let q of Object.keys(process.env)){let W=e3(q,G,"task");if(!W)continue;let z=process.env[q];if(z!==void 0)await J.set(W,z)}for(let[q,W]of Object.entries(MM))if(J.get(q)===void 0)await J.set(q,W);if(J.get("task.storage.dbPath")===void 0)await J.set("task.storage.dbPath",w9());if(Y){let q=this.flattenConfig(Y);for(let[W,z]of Object.entries(q))await J.set(W,z)}this.registerConfigWatcher(J),await this.initStore(),this.tagService=new Y1(this.store)}async initStore(){let $=this.configComponent;if(!$)return;let J=$.get("task.storage.type")??"sqlite",Q=$.get("task.storage.dbPath");if(J==="sqlite")this.store=new S$(Q),Q0.info(`[TaskComponent] Using SQLite storage: ${Q||"default path"}`);else this.store=new S$,Q0.info("[TaskComponent] Using SQLite storage (default)")}flattenConfig($,J="task"){let Q={};for(let[X,Y]of Object.entries($)){let G=`${J}.${X}`;if(Y&&typeof Y==="object"&&!Array.isArray(Y))Object.assign(Q,this.flattenConfig(Y,G));else Q[G]=Y}return Q}registerConfigWatcher($){if(typeof $.watch!=="function")return;this.configWatcher=$.watch("task.*",(J)=>{this.onConfigChange(J)})}onConfigChange($){if(Q0.info(`[TaskComponent] Config changed: ${$.key}`,{oldValue:$.oldValue,newValue:$.newValue}),$.key==="task.storage.type"||$.key==="task.storage.dbPath")this.initStore()}configWatcher;async start(){if(await super.start(),this.backgroundTaskManager=new J0(this.env),this.toolComponent=this.env?.getComponent("tool"),this.toolComponent){await this.registerTools(),this.toolComponent.register(N6(this.backgroundTaskManager),"built-in"),Q0.debug("[TaskComponent] Injected BackgroundTaskManager into query_background_process tool (factory pattern)");let $=this.env?.getComponent("session");this.toolComponent.register(X4(this.backgroundTaskManager,$??null),"built-in"),Q0.debug("[TaskComponent] Registered compact_session tool (factory pattern)")}else Q0.warn("[TaskComponent] ToolComponent not found, skipping tool registration")}async stop(){if(this.configWatcher)this.configWatcher(),this.configWatcher=void 0;if(this.toolComponent){try{this.toolComponent.register(N6(null),"built-in"),Q0.debug("[TaskComponent] Reset query_background_process tool to no-manager default (cleanup)")}catch($){Q0.warn(`[TaskComponent] Failed to reset query_background_process tool: ${$.message}`)}try{this.toolComponent.register(k7,"built-in"),Q0.debug("[TaskComponent] Reset compact_session tool to no-deps default (cleanup)")}catch($){Q0.warn(`[TaskComponent] Failed to reset compact_session tool: ${$.message}`)}}if(this.backgroundTaskManager)await this.backgroundTaskManager.dispose(this.skipAbortRunningTasksOnDispose?{skipAbortRunningTasks:!0,waitForRunningTasks:this.waitForRunningTasksOnDispose}:void 0),this.backgroundTaskManager=void 0;if(this.store)await this.store.close();await super.stop()}async registerTools(){if(!this.toolComponent)return;let $=[s2(this),o2(this),t2(this),X6(this),e2(this),v8(this),x8(this),$6(this),h8(this),J6(this),y8(this),Q6(this)],J=[Y6(this),m8(this),G6(this),u8(this),l8(this)],Q=[R3(this),u7(this.backgroundTaskManager)];for(let X of[...$,...J,...Q])this.toolComponent.register(X),Q0.info(`[TaskComponent] Registered tool: ${X.name}`)}async executeHook($,J,Q={}){let X={component:{name:this.name,version:this.version},data:J,metadata:Q,phase:$.includes("before")?"before":"after",hookPoint:$};await S0.execute($,J,Q)}async createTask($){let J=$.sessionId;if($.parent_task_id!==void 0&&$.parent_task_id!==null){if(!await this.store.getTask($.parent_task_id))throw Error(`Parent task #${$.parent_task_id} not found. Please provide a valid parent_task_id. Use task_list(depth=0) to see all root tasks.`)}let Q={options:{...$},sessionId:J,tagService:this.tagService,taskComponent:this};await this.executeHook(X0.BEFORE_CREATE,Q);let X=await this.store.createTask(Q.options);await this.store.createOperation({taskId:X.id,sessionId:J,milestoneType:"create",milestoneTitle:`Task created: ${X.title}`,milestoneDescription:X.description||""});let Y={task:X,sessionId:J,tagService:this.tagService};return await this.executeHook(X0.AFTER_CREATE,Y),this.publishEvent(b$.CREATED,{task:X,sessionId:J},J),Q0.info(`[TaskComponent] Task created: ${X.id} - ${X.title}`),X}async getTask($){return this.store.getTask($)}async getTaskIdBySessionId($){return this.store.getTaskIdBySessionId($)}async getTaskIdsBySessionId($){let J=this.store;if(typeof J.getTaskIdsBySessionId==="function"){let X=await J.getTaskIdsBySessionId($);return Array.isArray(X)?X:[]}let Q=await this.store.getTaskIdBySessionId($);return typeof Q==="number"?[Q]:[]}async getTaskWithOperations($){let J=await this.store.getTask($);if(!J)return;let Q=await this.store.listOperations({taskId:$});return{...J,operations:Q,task:J}}withTerminalCurrentStatus($,J){let Q=$.status;if(!Q)return $;if($.current_status!==void 0)return $;let X;switch(Q){case"completed":X=p0;break;case"cancelled":X=R$;break;case"archived":X=L$;break;default:if(J&&Q1(J.status)&&KM(J.current_status))return{...$,current_status:r7};return $}return{...$,current_status:X}}async updateTask($,J){let Q={id:$,options:{...J},tagService:this.tagService};await this.executeHook(X0.BEFORE_UPDATE,Q);let X=Q.options.status,Y;if(X&&!Q1(X))Y=await this.store.getTask($);let G=this.withTerminalCurrentStatus(Q.options,Y),q=await this.store.updateTask($,G);if(q){let W={task:q,changes:J,tagService:this.tagService};await this.executeHook(X0.AFTER_UPDATE,W),this.publishEvent(b$.UPDATED,{task:q,changes:J,sessionId:""},""),Q0.info(`[TaskComponent] Task updated: ${$}`)}return q}async deleteTask($){let J={id:$};await this.executeHook(X0.BEFORE_DELETE,J);let Q=await this.store.deleteTask($),X={id:$,deleted:Q};if(await this.executeHook(X0.AFTER_DELETE,X),Q)this.publishEvent(b$.DELETED,{taskId:$,sessionId:""},""),Q0.info(`[TaskComponent] Task deleted: ${$}`);return Q}async listTasks($){return this.store.listTasks($)}async searchTasksByKeywords($,J){return this.store.searchTasksByKeywords($,J||{})}async getTaskTree($,J=-1){return this.store.getTaskTree($,J)}async getChildTasks($,J){return this.store.getChildTasks($,J)}async completeTask($,J,Q){let X=await this.store.getTask($);if(X&&X.type==="cycle")throw Error(`Cannot complete cycle task: #${$} - ${X.title}. Cycle tasks are not meant to be completed.`);if(X&&Z6.includes(X.status))throw Error(`Cannot complete task: #${$} - ${X.title}. It is already in terminal status "${X.status}". Reopen it first via task_update(status="active") if acceptance should proceed.`);let Y={status:"completed",progress:100,current_status:Q?`${p0}\uFF08${_2}\uFF1A${Q}\uFF09`:p0};if(Q){let q={};if(X?.context)try{let W=JSON.parse(X.context);if(W&&typeof W==="object"&&!Array.isArray(W))q=W}catch{Q0.warn(`[TaskComponent] Task #${$} context is not valid JSON, ignoring when merging deliverable`)}q.deliverable_storage_path=Q,Y.context=JSON.stringify(q)}let G=await this.updateTask($,Y);if(G)await this.createOperation({taskId:$,sessionId:J,milestoneType:"completed",milestoneTitle:"Task completed",milestoneDescription:X1(Q)}),this.publishEvent(b$.COMPLETED,{task:G,sessionId:J},J),Q0.info(`[TaskComponent] Task completed: ${$}, deliverable=${Q||"(none)"}`);return G}async updateTaskContext($,J){return this.store.updateTask($,{context:J})}async preCompleteTask($,J,Q,X){let Y=await this.store.getTask($);if(Y&&Y.type==="cycle")throw Error(`Cannot pre-complete cycle task: #${$} - ${Y.title}. Cycle tasks are not meant to be completed or submitted for acceptance.`);let q={status:"to_validate",current_status:X?`${x0}\uFF1A${X}`:x0};if(Q){let z={};if(Y?.context)try{let H=JSON.parse(Y.context);if(H&&typeof H==="object"&&!Array.isArray(H))z=H}catch{Q0.warn(`[TaskComponent] Task #${$} context is not valid JSON, ignoring when merging deliverable`)}z.deliverable_storage_path=Q,q.context=JSON.stringify(z)}let W=await this.updateTask($,q);if(W){let z=M9(),H={task:W,changes:q,terminalStatus:"to_validate",sessionId:z.sessionId??J,tagService:this.tagService};await this.executeHook(X0.AFTER_COMPLETE,H);let B=[],U=X1(Q);if(U)B.push(U);if(X)B.push(X);await this.createOperation({taskId:$,sessionId:J,milestoneType:"milestone",milestoneTitle:`${x0}\uFF08to_validate\uFF09\uFF1ATask #${$} submitted for acceptance`,milestoneDescription:B.join(" / ")||x0}),Q0.info(`[TaskComponent] Task submitted for acceptance (to_validate): ${$}, deliverable=${Q||"(none)"}`)}return W}async createOperation($){let J={options:{...$}};await this.executeHook(X0.OPERATION_BEFORE_CREATE,J);let Q=await this.store.createOperation(J.options),X=await this.store.getTask(Q.taskId),Y={operation:Q};return await this.executeHook(X0.OPERATION_AFTER_CREATE,Y,{task:X,operation:Q}),this.publishEvent(b$.OPERATION_ADDED,{operation:Q,taskId:Q.taskId},Q.sessionId),Q0.info(`[TaskComponent] Operation created: ${Q.id} for task ${Q.taskId}`),Q}async getOperation($){return this.store.getOperation($)}async updateOperation($,J){return this.store.updateOperation($,J)}async deleteOperation($){return this.store.deleteOperation($)}async listOperations($){return this.store.listOperations($)}async listOperationsFresh($){let J=this.store;if(typeof J.listOperationsFresh==="function")return await J.listOperationsFresh($);if(typeof J.invalidateOperationsCache==="function")J.invalidateOperationsCache($.taskId);return await this.store.listOperations($)}getTagService(){return this.tagService}registerHook($,J){S0.register($,J),this.plugins.set(this.makePluginKey($,J.name),J),Q0.debug(`[TaskComponent] Registered hook: ${J.name} at ${$}`)}registerHooks($){for(let{hookPoint:J,hook:Q}of $)this.registerHook(J,Q)}unregisterHook($,J){let Q=S0.unregister($,J);if(Q)this.plugins.delete(this.makePluginKey($,J)),Q0.info(`[TaskComponent] Unregistered hook: ${J} from ${$}`);return Q}listHooks(){return Array.from(this.plugins.values())}makePluginKey($,J){return`${$}::${J}`}countHooks($){return S0.count($)}}k([u("task.component.executeHook",{recordParams:!0})],V$.prototype,"executeHook",null);k([u("task.component.createTask",{recordParams:!0,recordResult:!0,log:!0})],V$.prototype,"createTask",null);k([u("task.component.updateTask",{recordParams:!0,recordResult:!0,log:!0})],V$.prototype,"updateTask",null);k([u("task.component.completeTask",{recordParams:!0,recordResult:!0,log:!0})],V$.prototype,"completeTask",null);k([u("task.component.preCompleteTask",{recordParams:!0,recordResult:!0,log:!0})],V$.prototype,"preCompleteTask",null);k([u("task.component.createOperation",{recordParams:!0,recordResult:!0,log:!0})],V$.prototype,"createOperation",null);var p8=K.enum(["todo","active","to_validate","completed","paused","cancelled","archived"]),d8=K.enum(["low","medium","high"]),i8=K.enum(["normal","cycle","longterm"]),n8=K.enum(["create","progress","milestone","problem","solution","decision","review","completed","workflow_extracted"]),LM=K.object({storage:K.object({type:K.enum(["memory","sqlite"]).default("sqlite"),dbPath:K.string().optional()}).default({})}).default({});U$();U$();var jM="Deliverable: ";function G1($){if(!$)return;return`${jM}${$}`}var P9=1e6;class r8{port;options;constructor($,J={}){this.port=$,this.options=J}get defaultSessionId(){return this.options.sessionId??"unknown"}async resolve($){let J=NM($);if(J!==void 0){if(typeof this.port.getTaskByNum==="function")return await this.port.getTaskByNum(J);return(await this.scanAllTasks()).find((Q)=>Q.id===J)??null}return await this.port.getTask(String($))}toTask($){let{nativeId:J,...Q}=$;return Q}toOperation($){let{nativeId:J,...Q}=$;return Q}async scanAllTasks(){return(await this.port.listTasks({limit:P9,offset:0,includeArchived:!0})).tasks}async createTask($){let J=$.sessionId??this.defaultSessionId,Q;if($.parent_task_id!==void 0&&$.parent_task_id!==null){let Y=await this.resolve($.parent_task_id);if(!Y)throw Error(`Parent task #${$.parent_task_id} not found.`);Q=Y.id}let X=await this.port.createTask({title:$.title,description:$.description,priority:$.priority,type:$.type,goals_and_expected_deliverables:$.goals_and_expected_deliverables,...Q!==void 0?{parent_task_id:Q}:{},due_date:$.due_date,tags:$.tags,project_path:$.project_path,context:$.context,sessionId:J});return await this.createOperation({taskId:X.id,sessionId:J,milestoneType:"create",milestoneTitle:`Task created: ${X.title}`,milestoneDescription:X.description??""}),this.toTask(X)}async getTask($){let J=await this.resolve($);return J?this.toTask(J):null}async getTaskWithOperations($){let J=await this.getTask($);if(!J)return null;let Q=await this.listOperations({taskId:J.id,limit:P9,offset:0});return{...J,operations:Q}}async listTasks($={}){let J=$.limit??20,Q=$.offset??0,X=(await this.scanAllTasks()).map((Y)=>this.toTask(Y));return X=this.applyFilters(X,$),{tasks:X.slice(Q,Q+J),total:X.length}}async updateTask($,J){let Q=await this.resolve($);if(!Q)return null;let X;if(J.parent_task_id!==void 0)if(J.parent_task_id===null)X=null;else{let G=await this.resolve(J.parent_task_id);if(!G)throw Error(`Parent task #${J.parent_task_id} not found.`);X=G.id}let Y=await this.port.updateTask(Q.nativeId,{title:J.title,description:J.description,status:J.status,priority:J.priority,type:J.type,progress:J.progress,current_status:J.current_status,goals_and_expected_deliverables:J.goals_and_expected_deliverables,due_date:J.due_date,tags:J.tags,project_path:J.project_path,context:J.context,...X!==void 0?{parent_task_id:X}:{}});return Y?this.toTask(Y):null}async deleteTask($){let J=await this.resolve($);if(!J)return!1;return await this.port.deleteTask(J.nativeId)}async completeTask($,J,Q){let X=await this.resolve($);if(!X)return null;if(X.type==="cycle")throw Error(`Cannot complete cycle task: #${X.id} - ${X.title}. Cycle tasks are not meant to be completed.`);let Y={status:"completed",progress:100,current_status:Q?`${p0}\uFF08${_2}\uFF1A${Q}\uFF09`:p0};if(Q)Y.context=q1(X.context,Q);let G=await this.port.updateTask(X.nativeId,Y);if(!G)return null;let q=G1(Q);await this.createOperation({taskId:G.id,sessionId:J??this.defaultSessionId,milestoneType:"completed",milestoneTitle:`Completed: ${G.title}`,milestoneDescription:q??"Task completed",...Q?{mdPath:Q}:{}});let W=await this.resolve(X.nativeId);return this.toTask(W??G)}async preCompleteTask($,J,Q,X){let Y=await this.resolve($);if(!Y)return null;if(Y.type==="cycle")throw Error(`Cannot pre-complete cycle task: #${Y.id} - ${Y.title}. Cycle tasks are not meant to be completed or submitted for acceptance.`);let q={status:"to_validate",current_status:X?`${x0}\uFF1A${X}`:x0};if(Q)q.context=q1(Y.context,Q);let W=await this.port.updateTask(Y.nativeId,q);if(!W)return null;let z=[],H=G1(Q);if(H)z.push(H);if(X)z.push(X);await this.createOperation({taskId:W.id,sessionId:J??this.defaultSessionId,milestoneType:"milestone",milestoneTitle:`${x0}\uFF08to_validate\uFF09\uFF1ATask #${W.id} submitted for acceptance`,milestoneDescription:z.join(" / ")||x0,...Q?{mdPath:Q}:{}});let B=await this.resolve(Y.nativeId);return this.toTask(B??W)}async getTaskTree($,J=-1){let Q=await this.resolve($);if(!Q)return[];if(J===0)return[];let X=(await this.scanAllTasks()).map((H)=>this.toTask(H)),Y=new Map;for(let H of X){if(H.parent_task_id===void 0)continue;let B=Y.get(H.parent_task_id)??[];B.push(H),Y.set(H.parent_task_id,B)}let G=[],q=new Set([Q.id]),W=[Q.id],z=0;while(W.length>0){if(J!==-1&&z>=J)break;let H=[];for(let B of W)for(let U of Y.get(B)??[]){if(q.has(U.id))continue;q.add(U.id),G.push(U),H.push(U.id)}W=H,z++}return G}async searchTasksByKeywords($,J={}){let Q=J.limit??20,X=J.offset??0,Y=(await this.scanAllTasks()).map((W)=>this.toTask(W));if(Y=this.applyFilters(Y,J),J.excludeTaskId!==void 0)Y=Y.filter((W)=>W.id!==J.excludeTaskId);let G=$.map((W)=>W.toLowerCase()).filter((W)=>W.length>0),q=G.length===0?Y:Y.filter((W)=>{let z=[W.title,W.description,W.goals_and_expected_deliverables,W.current_status,(W.tags??[]).join(" "),W.project_path].join(" ").toLowerCase();return G.every((H)=>z.includes(H))});return{tasks:q.slice(X,X+Q),total:q.length}}async createOperation($){let J=await this.resolve($.taskId);if(!J)throw Error(`Task not found: ${$.taskId}`);let Q=$.milestoneType??$.actionType??"progress",X=$.milestoneTitle??$.actionTitle??"",Y=$.milestoneDescription??$.actionDescription??"",G=await this.port.createOperation({taskId:J.id,taskNativeId:J.nativeId,sessionId:$.sessionId??this.defaultSessionId,milestoneType:Q,milestoneTitle:X,milestoneDescription:Y,processDescription:$.processDescription??"",...$.mdPath?{mdPath:$.mdPath}:{}});return this.toOperation(G)}async listOperations($={}){let J=$.limit??100,Q=$.offset??0,X=$.milestoneType??$.actionType;if($.taskId===void 0)return[];let Y=await this.resolve($.taskId);if(!Y)return[];let q=(await this.port.listOperations({taskNativeId:Y.nativeId,limit:X?P9:J,offset:X?0:Q})).operations.map((W)=>this.toOperation(W));if(X)q=q.filter((W)=>W.milestoneType===X),q=q.slice(Q,Q+J);return q}async getOperation($){if(typeof this.port.getOperationByNum==="function"){let Q=await this.port.getOperationByNum($);return Q?this.toOperation(Q):null}let J=await this.scanAllTasks();for(let Q of J){let Y=(await this.port.listOperations({taskNativeId:Q.nativeId,limit:P9})).operations.find((G)=>G.id===$);if(Y)return this.toOperation(Y)}return null}async updateOperation($,J){let Q=await this.getOperation($);if(!Q)return null;if(typeof this.port.updateOperationByNum!=="function")return Q;let X=await this.port.updateOperationByNum($,{sessionId:J.sessionId??Q.sessionId,milestoneType:J.milestoneType??J.actionType??Q.milestoneType,milestoneTitle:J.milestoneTitle??J.actionTitle??Q.milestoneTitle,milestoneDescription:J.milestoneDescription??J.actionDescription??Q.milestoneDescription,processDescription:J.processDescription??Q.processDescription,...J.mdPath!==void 0?{mdPath:J.mdPath}:{}});return X?this.toOperation(X):null}async deleteOperation($){if(typeof this.port.deleteOperationByNum!=="function")return!1;return await this.port.deleteOperationByNum($)}applyFilters($,J){let Q=$;if(J.include_archived!==!0&&J.status!=="archived")Q=Q.filter((Y)=>Y.status!=="archived");if(J.status!==void 0)Q=Q.filter((Y)=>Y.status===J.status);if(J.priority!==void 0)Q=Q.filter((Y)=>Y.priority===J.priority);if(J.type!==void 0)Q=Q.filter((Y)=>Y.type===J.type);if(J.parent_task_id!==void 0)Q=Q.filter((Y)=>Y.parent_task_id===J.parent_task_id);if(J.depth!==void 0&&J.depth>=0){let Y=_M(Q,J.depth);Q=Q.filter((G)=>Y.has(G.id))}return Q}}function NM($){if(typeof $==="number")return Number.isFinite($)?$:void 0;return/^\d+$/.test($)?Number($):void 0}function _M($,J){if(J<0)return new Set($.map((q)=>q.id));let Q=new Set($.map((q)=>q.id)),X=new Map;for(let q of $){let W=q.parent_task_id;if(W===void 0||!Q.has(W))continue;let z=X.get(W)??[];z.push(q),X.set(W,z)}let Y=new Set,G=$.filter((q)=>q.parent_task_id===void 0||!Q.has(q.parent_task_id));for(let q of G)Y.add(q.id);for(let q=1;q<=J;q++){let W=[];for(let z of G)for(let H of X.get(z.id)??[]){if(Y.has(H.id))continue;Y.add(H.id),W.push(H)}if(W.length===0)break;G=W}return Y}function q1($,J){let Q={};if(typeof $==="string"&&$.trim().length>0)try{let X=JSON.parse($);if(X&&typeof X==="object"&&!Array.isArray(X))Q=X}catch{}return Q.deliverable_storage_path=J,JSON.stringify(Q)}var AM=1e6;function ZM($){let J={};if($.type!==void 0)J.type=$.type;if($.progress!==void 0)J.progress=$.progress;if($.current_status!==void 0)J.current_status=$.current_status;if($.goals_and_expected_deliverables!==void 0)J.goals_and_expected_deliverables=$.goals_and_expected_deliverables;if($.project_path!==void 0)J.project_path=$.project_path;if($.context!==void 0)J.context=$.context;if($.due_date!==void 0)J.due_date=$.due_date;return J}function z6($,J,Q){if(typeof $.num!=="number")throw Error(`store did not expose a numeric handle for task ${$.id}`);let X=$.roy??{};return{id:$.num,nativeId:$.id,title:$.title,description:$.description??"",status:J.toRoyStatus($.status),priority:J.toRoyPriority($.priority),type:X.type??"normal",progress:typeof X.progress==="number"?X.progress:$.status==="done"?100:0,current_status:X.current_status??"",goals_and_expected_deliverables:X.goals_and_expected_deliverables??"",...Q!==void 0?{parent_task_id:Q}:{},createdAt:$.created_at,updatedAt:$.updated_at,...X.due_date?{due_date:X.due_date}:{},tags:J.toRoyTags($.tags),project_path:X.project_path??"unknown",context:X.context??"{}"}}function H6($){let J=$.data??{},Q=String(J.milestoneType??J.actionType??"progress"),X=String(J.milestoneTitle??J.actionTitle??""),Y=String(J.milestoneDescription??J.actionDescription??""),G=J.taskId??$.task_id,q=typeof G==="number"?G:typeof G==="string"&&/^\d+$/.test(G)?Number(G):0;return{id:typeof $.num==="number"?$.num:0,nativeId:$.id,taskId:q,sessionId:String(J.sessionId??$.task_id??"unknown"),milestoneType:Q,milestoneTitle:X,milestoneDescription:Y,processDescription:String(J.processDescription??""),timestamp:$.created_at,...J.mdPath?{mdPath:String(J.mdPath)}:{},actionType:Q,actionTitle:X,actionDescription:Y}}function W1($,J,Q={}){let X=Q.operationType??"roy.milestone",Y=Q.agent??"roy",G=Q.scanLimit??AM;async function q(){let H=await $.listTasks({limit:G});return new Map(H.tasks.filter((B)=>typeof B.num==="number").map((B)=>[B.id,B.num]))}async function W(H){if(typeof $.getTaskByNum==="function")return await $.getTaskByNum(H);return(await $.listTasks({limit:G})).tasks.find((U)=>U.num===H)??null}async function z(H){let U=[...(await q()).entries()].find(([,V])=>V===H);if(!U)throw Error(`parent task not found: ${H}`);return U[0]}return{async createTask(H){let B=H.parent_task_id!==void 0?await z(H.parent_task_id):null,U={type:H.type??"normal",progress:H.progress??0,current_status:H.current_status??"",goals_and_expected_deliverables:H.goals_and_expected_deliverables??"",project_path:H.project_path,context:H.context,...H.due_date?{due_date:H.due_date}:{}},V=await $.createTask({title:H.title,description:H.description,priority:J.toStorePriority(H.priority),owner:Y,tags:J.toStoreTags(H.tags),parent_id:B,session_id:H.sessionId??"unknown",roy:U});return z6(V,J,H.parent_task_id)},async getTask(H){let B=await $.getTask(H);if(!B)return null;let U=await q();return z6(B,J,B.parent_id?U.get(B.parent_id):void 0)},async getTaskByNum(H){let B=await W(H);if(!B)return null;let U=await q();return z6(B,J,B.parent_id?U.get(B.parent_id):void 0)},async listTasks(H){let B=await $.listTasks({limit:H?.limit??20,offset:H?.offset??0}),U=await q();return{tasks:B.tasks.map((V)=>z6(V,J,V.parent_id?U.get(V.parent_id):void 0)),total:B.total}},async updateTask(H,B){let U=ZM(B),V=await $.updateTask(H,{...B.title!==void 0?{title:B.title}:{},...B.description!==void 0?{description:B.description}:{},...B.status!==void 0?{status:J.toStoreStatus(B.status)}:{},...B.priority!==void 0?{priority:J.toStorePriority(B.priority)}:{},...B.tags!==void 0?{tags:J.toStoreTags(B.tags)}:{},...Object.keys(U).length>0?{roy:U}:{}});if(!V)return null;let O;if(B.parent_task_id!==void 0){let D=B.parent_task_id===null?null:await z(B.parent_task_id);if(typeof $.setParentId==="function")await $.setParentId(H,D);O=B.parent_task_id===null?void 0:B.parent_task_id}let F=await $.getTask(H)??V;if(O===void 0&&F.parent_id)O=(await q()).get(F.parent_id);return z6(F,J,O)},async deleteTask(H){return await $.deleteTask(H)},async createOperation(H){let B=await $.appendOperation({task_id:H.taskNativeId??String(H.taskId),type:X,data:{taskId:H.taskId,sessionId:H.sessionId,milestoneType:H.milestoneType,milestoneTitle:H.milestoneTitle,milestoneDescription:H.milestoneDescription,processDescription:H.processDescription,...H.mdPath?{mdPath:H.mdPath}:{}}});return H6(B)},async listOperations(H){let B=await $.listOperations({...H?.taskNativeId?{task_id:H.taskNativeId}:{},type:X,limit:H?.limit??G,offset:H?.offset??0});return{operations:B.operations.map(H6),total:B.total}},async getOperationByNum(H){if(typeof $.getOperationByNum!=="function")return null;let B=await $.getOperationByNum(H);return B?H6(B):null},async updateOperationByNum(H,B){if(typeof $.updateOperation!=="function")return null;if(typeof $.getOperationByNum!=="function")return null;let U=await $.getOperationByNum(H);if(!U)return null;let V=H6(U),O=await $.updateOperation(H,{data:{taskId:V.taskId,sessionId:B.sessionId??V.sessionId,milestoneType:B.milestoneType??V.milestoneType,milestoneTitle:B.milestoneTitle??V.milestoneTitle,milestoneDescription:B.milestoneDescription??V.milestoneDescription,processDescription:B.processDescription??V.processDescription,...B.mdPath??V.mdPath?{mdPath:B.mdPath??V.mdPath}:{}}});return O?H6(O):null},async deleteOperationByNum(H){if(typeof $.deleteOperation!=="function")return!1;return await $.deleteOperation(H)}}}var wM="roy.milestone",PM={todo:"pending",active:"in_progress",completed:"done",cancelled:"cancelled",paused:"blocked",to_validate:"review",archived:"archived"},bM={pending:"todo",in_progress:"active",done:"completed",cancelled:"cancelled",blocked:"paused",review:"to_validate",archived:"archived"};function z1($){return PM[$]??"pending"}function H1($){return bM[$]??"todo"}function B1($){if($==="high")return 1;if($==="low")return 5;return 3}function U1($){if($===void 0)return"medium";if($<=2)return"high";return $===3?"medium":"low"}function V1($){if(!$||$.length===0)return;return $.join(",")}function D1($){if(!$)return[];return $.split(",").map((J)=>J.trim()).filter((J)=>J.length>0)}var EM={toRoyStatus:($)=>H1($),toStoreStatus:($)=>z1($),toRoyPriority:($)=>U1($),toStorePriority:($)=>B1($),toRoyTags:($)=>D1($),toStoreTags:($)=>V1($)};function F1($,J={}){return new r8(W1($,EM,{operationType:wM,agent:J.agent??"roy"}),{sessionId:J.sessionId})}var GN=p8.options,qN=d8.options,WN=i8.options,zN=n8.options;var O1=Symbol("Let zodToJsonSchema decide on which parser to use");var M1={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",target:"jsonSchema7",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref",openAiAnyTypeName:"OpenAiAnyType"},K1=($)=>typeof $==="string"?{...M1,name:$}:{...M1,...$};var R1=($)=>{let J=K1($),Q=J.name!==void 0?[...J.basePath,J.definitionPath,J.name]:J.basePath;return{...J,flags:{hasReferencedOpenAiAnyType:!1},currentPath:Q,propertyPath:void 0,seen:new Map(Object.entries(J.definitions).map(([X,Y])=>[Y._def,{def:Y._def,path:[...J.basePath,J.definitionPath,X],jsonSchema:void 0}]))}};function a8($,J,Q,X){if(!X?.errorMessages)return;if(Q)$.errorMessage={...$.errorMessage,[J]:Q}}function p($,J,Q,X,Y){$[J]=Q,a8($,J,X,Y)}var b9=($,J)=>{let Q=0;for(;Q<$.length&&Q<J.length;Q++)if($[Q]!==J[Q])break;return[($.length-Q).toString(),...J.slice(Q)].join("/")};function t($){if($.target!=="openAi")return{};let J=[...$.basePath,$.definitionPath,$.openAiAnyTypeName];return $.flags.hasReferencedOpenAiAnyType=!0,{$ref:$.$refStrategy==="relative"?b9(J,$.currentPath):J.join("/")}}function L1($,J){let Q={type:"array"};if($.type?._def&&$.type?._def?.typeName!==_.ZodAny)Q.items=v($.type._def,{...J,currentPath:[...J.currentPath,"items"]});if($.minLength)p(Q,"minItems",$.minLength.value,$.minLength.message,J);if($.maxLength)p(Q,"maxItems",$.maxLength.value,$.maxLength.message,J);if($.exactLength)p(Q,"minItems",$.exactLength.value,$.exactLength.message,J),p(Q,"maxItems",$.exactLength.value,$.exactLength.message,J);return Q}function j1($,J){let Q={type:"integer",format:"int64"};if(!$.checks)return Q;for(let X of $.checks)switch(X.kind){case"min":if(J.target==="jsonSchema7")if(X.inclusive)p(Q,"minimum",X.value,X.message,J);else p(Q,"exclusiveMinimum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMinimum=!0;p(Q,"minimum",X.value,X.message,J)}break;case"max":if(J.target==="jsonSchema7")if(X.inclusive)p(Q,"maximum",X.value,X.message,J);else p(Q,"exclusiveMaximum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMaximum=!0;p(Q,"maximum",X.value,X.message,J)}break;case"multipleOf":p(Q,"multipleOf",X.value,X.message,J);break}return Q}function N1(){return{type:"boolean"}}function E9($,J){return v($.type._def,J)}var _1=($,J)=>{return v($.innerType._def,J)};function s8($,J,Q){let X=Q??J.dateStrategy;if(Array.isArray(X))return{anyOf:X.map((Y,G)=>s8($,J,Y))};switch(X){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return CM($,J)}}var CM=($,J)=>{let Q={type:"integer",format:"unix-time"};if(J.target==="openApi3")return Q;for(let X of $.checks)switch(X.kind){case"min":p(Q,"minimum",X.value,X.message,J);break;case"max":p(Q,"maximum",X.value,X.message,J);break}return Q};function A1($,J){return{...v($.innerType._def,J),default:$.defaultValue()}}function Z1($,J){return J.effectStrategy==="input"?v($.schema._def,J):t(J)}function w1($){return{type:"string",enum:Array.from($.values)}}var fM=($)=>{if("type"in $&&$.type==="string")return!1;return"allOf"in $};function P1($,J){let Q=[v($.left._def,{...J,currentPath:[...J.currentPath,"allOf","0"]}),v($.right._def,{...J,currentPath:[...J.currentPath,"allOf","1"]})].filter((G)=>!!G),X=J.target==="jsonSchema2019-09"?{unevaluatedProperties:!1}:void 0,Y=[];return Q.forEach((G)=>{if(fM(G)){if(Y.push(...G.allOf),G.unevaluatedProperties===void 0)X=void 0}else{let q=G;if("additionalProperties"in G&&G.additionalProperties===!1){let{additionalProperties:W,...z}=G;q=z}else X=void 0;Y.push(q)}}),Y.length?{allOf:Y,...X}:void 0}function b1($,J){let Q=typeof $.value;if(Q!=="bigint"&&Q!=="number"&&Q!=="boolean"&&Q!=="string")return{type:Array.isArray($.value)?"array":"object"};if(J.target==="openApi3")return{type:Q==="bigint"?"integer":Q,enum:[$.value]};return{type:Q==="bigint"?"integer":Q,const:$.value}}var o8=void 0,C0={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>{if(o8===void 0)o8=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return o8},uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function S9($,J){let Q={type:"string"};if($.checks)for(let X of $.checks)switch(X.kind){case"min":p(Q,"minLength",typeof Q.minLength==="number"?Math.max(Q.minLength,X.value):X.value,X.message,J);break;case"max":p(Q,"maxLength",typeof Q.maxLength==="number"?Math.min(Q.maxLength,X.value):X.value,X.message,J);break;case"email":switch(J.emailStrategy){case"format:email":f0(Q,"email",X.message,J);break;case"format:idn-email":f0(Q,"idn-email",X.message,J);break;case"pattern:zod":U0(Q,C0.email,X.message,J);break}break;case"url":f0(Q,"uri",X.message,J);break;case"uuid":f0(Q,"uuid",X.message,J);break;case"regex":U0(Q,X.regex,X.message,J);break;case"cuid":U0(Q,C0.cuid,X.message,J);break;case"cuid2":U0(Q,C0.cuid2,X.message,J);break;case"startsWith":U0(Q,RegExp(`^${t8(X.value,J)}`),X.message,J);break;case"endsWith":U0(Q,RegExp(`${t8(X.value,J)}$`),X.message,J);break;case"datetime":f0(Q,"date-time",X.message,J);break;case"date":f0(Q,"date",X.message,J);break;case"time":f0(Q,"time",X.message,J);break;case"duration":f0(Q,"duration",X.message,J);break;case"length":p(Q,"minLength",typeof Q.minLength==="number"?Math.max(Q.minLength,X.value):X.value,X.message,J),p(Q,"maxLength",typeof Q.maxLength==="number"?Math.min(Q.maxLength,X.value):X.value,X.message,J);break;case"includes":{U0(Q,RegExp(t8(X.value,J)),X.message,J);break}case"ip":{if(X.version!=="v6")f0(Q,"ipv4",X.message,J);if(X.version!=="v4")f0(Q,"ipv6",X.message,J);break}case"base64url":U0(Q,C0.base64url,X.message,J);break;case"jwt":U0(Q,C0.jwt,X.message,J);break;case"cidr":{if(X.version!=="v6")U0(Q,C0.ipv4Cidr,X.message,J);if(X.version!=="v4")U0(Q,C0.ipv6Cidr,X.message,J);break}case"emoji":U0(Q,C0.emoji(),X.message,J);break;case"ulid":{U0(Q,C0.ulid,X.message,J);break}case"base64":{switch(J.base64Strategy){case"format:binary":{f0(Q,"binary",X.message,J);break}case"contentEncoding:base64":{p(Q,"contentEncoding","base64",X.message,J);break}case"pattern:zod":{U0(Q,C0.base64,X.message,J);break}}break}case"nanoid":U0(Q,C0.nanoid,X.message,J);case"toLowerCase":case"toUpperCase":case"trim":break;default:((Y)=>{})(X)}return Q}function t8($,J){return J.patternStrategy==="escape"?TM($):$}var IM=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function TM($){let J="";for(let Q=0;Q<$.length;Q++){if(!IM.has($[Q]))J+="\\";J+=$[Q]}return J}function f0($,J,Q,X){if($.format||$.anyOf?.some((Y)=>Y.format)){if(!$.anyOf)$.anyOf=[];if($.format){if($.anyOf.push({format:$.format,...$.errorMessage&&X.errorMessages&&{errorMessage:{format:$.errorMessage.format}}}),delete $.format,$.errorMessage){if(delete $.errorMessage.format,Object.keys($.errorMessage).length===0)delete $.errorMessage}}$.anyOf.push({format:J,...Q&&X.errorMessages&&{errorMessage:{format:Q}}})}else p($,"format",J,Q,X)}function U0($,J,Q,X){if($.pattern||$.allOf?.some((Y)=>Y.pattern)){if(!$.allOf)$.allOf=[];if($.pattern){if($.allOf.push({pattern:$.pattern,...$.errorMessage&&X.errorMessages&&{errorMessage:{pattern:$.errorMessage.pattern}}}),delete $.pattern,$.errorMessage){if(delete $.errorMessage.pattern,Object.keys($.errorMessage).length===0)delete $.errorMessage}}$.allOf.push({pattern:E1(J,X),...Q&&X.errorMessages&&{errorMessage:{pattern:Q}}})}else p($,"pattern",E1(J,X),Q,X)}function E1($,J){if(!J.applyRegexFlags||!$.flags)return $.source;let Q={i:$.flags.includes("i"),m:$.flags.includes("m"),s:$.flags.includes("s")},X=Q.i?$.source.toLowerCase():$.source,Y="",G=!1,q=!1,W=!1;for(let z=0;z<X.length;z++){if(G){Y+=X[z],G=!1;continue}if(Q.i){if(q){if(X[z].match(/[a-z]/)){if(W)Y+=X[z],Y+=`${X[z-2]}-${X[z]}`.toUpperCase(),W=!1;else if(X[z+1]==="-"&&X[z+2]?.match(/[a-z]/))Y+=X[z],W=!0;else Y+=`${X[z]}${X[z].toUpperCase()}`;continue}}else if(X[z].match(/[a-z]/)){Y+=`[${X[z]}${X[z].toUpperCase()}]`;continue}}if(Q.m){if(X[z]==="^"){Y+=`(^|(?<=[\r
3069
+ ]))`;continue}else if(X[z]==="$"){Y+=`($|(?=[\r
3070
+ ]))`;continue}}if(Q.s&&X[z]==="."){Y+=q?`${X[z]}\r
3071
+ `:`[${X[z]}\r
3072
+ ]`;continue}if(Y+=X[z],X[z]==="\\")G=!0;else if(q&&X[z]==="]")q=!1;else if(!q&&X[z]==="[")q=!0}try{new RegExp(Y)}catch{return console.warn(`Could not convert regex pattern at ${J.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),$.source}return Y}function C9($,J){if(J.target==="openAi")console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.");if(J.target==="openApi3"&&$.keyType?._def.typeName===_.ZodEnum)return{type:"object",required:$.keyType._def.values,properties:$.keyType._def.values.reduce((X,Y)=>({...X,[Y]:v($.valueType._def,{...J,currentPath:[...J.currentPath,"properties",Y]})??t(J)}),{}),additionalProperties:J.rejectedAdditionalProperties};let Q={type:"object",additionalProperties:v($.valueType._def,{...J,currentPath:[...J.currentPath,"additionalProperties"]})??J.allowedAdditionalProperties};if(J.target==="openApi3")return Q;if($.keyType?._def.typeName===_.ZodString&&$.keyType._def.checks?.length){let{type:X,...Y}=S9($.keyType._def,J);return{...Q,propertyNames:Y}}else if($.keyType?._def.typeName===_.ZodEnum)return{...Q,propertyNames:{enum:$.keyType._def.values}};else if($.keyType?._def.typeName===_.ZodBranded&&$.keyType._def.type._def.typeName===_.ZodString&&$.keyType._def.type._def.checks?.length){let{type:X,...Y}=E9($.keyType._def,J);return{...Q,propertyNames:Y}}return Q}function S1($,J){if(J.mapStrategy==="record")return C9($,J);let Q=v($.keyType._def,{...J,currentPath:[...J.currentPath,"items","items","0"]})||t(J),X=v($.valueType._def,{...J,currentPath:[...J.currentPath,"items","items","1"]})||t(J);return{type:"array",maxItems:125,items:{type:"array",items:[Q,X],minItems:2,maxItems:2}}}function C1($){let J=$.values,X=Object.keys($.values).filter((G)=>{return typeof J[J[G]]!=="number"}).map((G)=>J[G]),Y=Array.from(new Set(X.map((G)=>typeof G)));return{type:Y.length===1?Y[0]==="string"?"string":"number":["string","number"],enum:X}}function f1($){return $.target==="openAi"?void 0:{not:t({...$,currentPath:[...$.currentPath,"not"]})}}function I1($){return $.target==="openApi3"?{enum:["null"],nullable:!0}:{type:"null"}}var B6={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function v1($,J){if(J.target==="openApi3")return T1($,J);let Q=$.options instanceof Map?Array.from($.options.values()):$.options;if(Q.every((X)=>(X._def.typeName in B6)&&(!X._def.checks||!X._def.checks.length))){let X=Q.reduce((Y,G)=>{let q=B6[G._def.typeName];return q&&!Y.includes(q)?[...Y,q]:Y},[]);return{type:X.length>1?X:X[0]}}else if(Q.every((X)=>X._def.typeName==="ZodLiteral"&&!X.description)){let X=Q.reduce((Y,G)=>{let q=typeof G._def.value;switch(q){case"string":case"number":case"boolean":return[...Y,q];case"bigint":return[...Y,"integer"];case"object":if(G._def.value===null)return[...Y,"null"];case"symbol":case"undefined":case"function":default:return Y}},[]);if(X.length===Q.length){let Y=X.filter((G,q,W)=>W.indexOf(G)===q);return{type:Y.length>1?Y:Y[0],enum:Q.reduce((G,q)=>{return G.includes(q._def.value)?G:[...G,q._def.value]},[])}}}else if(Q.every((X)=>X._def.typeName==="ZodEnum"))return{type:"string",enum:Q.reduce((X,Y)=>[...X,...Y._def.values.filter((G)=>!X.includes(G))],[])};return T1($,J)}var T1=($,J)=>{let Q=($.options instanceof Map?Array.from($.options.values()):$.options).map((X,Y)=>v(X._def,{...J,currentPath:[...J.currentPath,"anyOf",`${Y}`]})).filter((X)=>!!X&&(!J.strictUnions||typeof X==="object"&&Object.keys(X).length>0));return Q.length?{anyOf:Q}:void 0};function x1($,J){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes($.innerType._def.typeName)&&(!$.innerType._def.checks||!$.innerType._def.checks.length)){if(J.target==="openApi3")return{type:B6[$.innerType._def.typeName],nullable:!0};return{type:[B6[$.innerType._def.typeName],"null"]}}if(J.target==="openApi3"){let X=v($.innerType._def,{...J,currentPath:[...J.currentPath]});if(X&&"$ref"in X)return{allOf:[X],nullable:!0};return X&&{...X,nullable:!0}}let Q=v($.innerType._def,{...J,currentPath:[...J.currentPath,"anyOf","0"]});return Q&&{anyOf:[Q,{type:"null"}]}}function h1($,J){let Q={type:"number"};if(!$.checks)return Q;for(let X of $.checks)switch(X.kind){case"int":Q.type="integer",a8(Q,"type",X.message,J);break;case"min":if(J.target==="jsonSchema7")if(X.inclusive)p(Q,"minimum",X.value,X.message,J);else p(Q,"exclusiveMinimum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMinimum=!0;p(Q,"minimum",X.value,X.message,J)}break;case"max":if(J.target==="jsonSchema7")if(X.inclusive)p(Q,"maximum",X.value,X.message,J);else p(Q,"exclusiveMaximum",X.value,X.message,J);else{if(!X.inclusive)Q.exclusiveMaximum=!0;p(Q,"maximum",X.value,X.message,J)}break;case"multipleOf":p(Q,"multipleOf",X.value,X.message,J);break}return Q}function y1($,J){let Q=J.target==="openAi",X={type:"object",properties:{}},Y=[],G=$.shape();for(let W in G){let z=G[W];if(z===void 0||z._def===void 0)continue;let H=xM(z);if(H&&Q){if(z._def.typeName==="ZodOptional")z=z._def.innerType;if(!z.isNullable())z=z.nullable();H=!1}let B=v(z._def,{...J,currentPath:[...J.currentPath,"properties",W],propertyPath:[...J.currentPath,"properties",W]});if(B===void 0)continue;if(X.properties[W]=B,!H)Y.push(W)}if(Y.length)X.required=Y;let q=vM($,J);if(q!==void 0)X.additionalProperties=q;return X}function vM($,J){if($.catchall._def.typeName!=="ZodNever")return v($.catchall._def,{...J,currentPath:[...J.currentPath,"additionalProperties"]});switch($.unknownKeys){case"passthrough":return J.allowedAdditionalProperties;case"strict":return J.rejectedAdditionalProperties;case"strip":return J.removeAdditionalStrategy==="strict"?J.allowedAdditionalProperties:J.rejectedAdditionalProperties}}function xM($){try{return $.isOptional()}catch{return!0}}var g1=($,J)=>{if(J.currentPath.toString()===J.propertyPath?.toString())return v($.innerType._def,J);let Q=v($.innerType._def,{...J,currentPath:[...J.currentPath,"anyOf","1"]});return Q?{anyOf:[{not:t(J)},Q]}:t(J)};var k1=($,J)=>{if(J.pipeStrategy==="input")return v($.in._def,J);else if(J.pipeStrategy==="output")return v($.out._def,J);let Q=v($.in._def,{...J,currentPath:[...J.currentPath,"allOf","0"]}),X=v($.out._def,{...J,currentPath:[...J.currentPath,"allOf",Q?"1":"0"]});return{allOf:[Q,X].filter((Y)=>Y!==void 0)}};function m1($,J){return v($.type._def,J)}function u1($,J){let X={type:"array",uniqueItems:!0,items:v($.valueType._def,{...J,currentPath:[...J.currentPath,"items"]})};if($.minSize)p(X,"minItems",$.minSize.value,$.minSize.message,J);if($.maxSize)p(X,"maxItems",$.maxSize.value,$.maxSize.message,J);return X}function l1($,J){if($.rest)return{type:"array",minItems:$.items.length,items:$.items.map((Q,X)=>v(Q._def,{...J,currentPath:[...J.currentPath,"items",`${X}`]})).reduce((Q,X)=>X===void 0?Q:[...Q,X],[]),additionalItems:v($.rest._def,{...J,currentPath:[...J.currentPath,"additionalItems"]})};else return{type:"array",minItems:$.items.length,maxItems:$.items.length,items:$.items.map((Q,X)=>v(Q._def,{...J,currentPath:[...J.currentPath,"items",`${X}`]})).reduce((Q,X)=>X===void 0?Q:[...Q,X],[])}}function c1($){return{not:t($)}}function p1($){return t($)}var d1=($,J)=>{return v($.innerType._def,J)};var i1=($,J,Q)=>{switch(J){case _.ZodString:return S9($,Q);case _.ZodNumber:return h1($,Q);case _.ZodObject:return y1($,Q);case _.ZodBigInt:return j1($,Q);case _.ZodBoolean:return N1();case _.ZodDate:return s8($,Q);case _.ZodUndefined:return c1(Q);case _.ZodNull:return I1(Q);case _.ZodArray:return L1($,Q);case _.ZodUnion:case _.ZodDiscriminatedUnion:return v1($,Q);case _.ZodIntersection:return P1($,Q);case _.ZodTuple:return l1($,Q);case _.ZodRecord:return C9($,Q);case _.ZodLiteral:return b1($,Q);case _.ZodEnum:return w1($);case _.ZodNativeEnum:return C1($);case _.ZodNullable:return x1($,Q);case _.ZodOptional:return g1($,Q);case _.ZodMap:return S1($,Q);case _.ZodSet:return u1($,Q);case _.ZodLazy:return()=>$.getter()._def;case _.ZodPromise:return m1($,Q);case _.ZodNaN:case _.ZodNever:return f1(Q);case _.ZodEffects:return Z1($,Q);case _.ZodAny:return t(Q);case _.ZodUnknown:return p1(Q);case _.ZodDefault:return A1($,Q);case _.ZodBranded:return E9($,Q);case _.ZodReadonly:return d1($,Q);case _.ZodCatch:return _1($,Q);case _.ZodPipeline:return k1($,Q);case _.ZodFunction:case _.ZodVoid:case _.ZodSymbol:return;default:return((X)=>{return})(J)}};function v($,J,Q=!1){let X=J.seen.get($);if(J.override){let W=J.override?.($,J,X,Q);if(W!==O1)return W}if(X&&!Q){let W=hM(X,J);if(W!==void 0)return W}let Y={def:$,path:J.currentPath,jsonSchema:void 0};J.seen.set($,Y);let G=i1($,$.typeName,J),q=typeof G==="function"?v(G(),J):G;if(q)yM($,J,q);if(J.postProcess){let W=J.postProcess(q,$,J);return Y.jsonSchema=q,W}return Y.jsonSchema=q,q}var hM=($,J)=>{switch(J.$refStrategy){case"root":return{$ref:$.path.join("/")};case"relative":return{$ref:b9(J.currentPath,$.path)};case"none":case"seen":{if($.path.length<J.currentPath.length&&$.path.every((Q,X)=>J.currentPath[X]===Q))return console.warn(`Recursive reference detected at ${J.currentPath.join("/")}! Defaulting to any`),t(J);return J.$refStrategy==="seen"?t(J):void 0}}},yM=($,J,Q)=>{if($.description){if(Q.description=$.description,J.markdownDescription)Q.markdownDescription=$.description}return Q};var e8=($,J)=>{let Q=R1(J),X=typeof J==="object"&&J.definitions?Object.entries(J.definitions).reduce((z,[H,B])=>({...z,[H]:v(B._def,{...Q,currentPath:[...Q.basePath,Q.definitionPath,H]},!0)??t(Q)}),{}):void 0,Y=typeof J==="string"?J:J?.nameStrategy==="title"?void 0:J?.name,G=v($._def,Y===void 0?Q:{...Q,currentPath:[...Q.basePath,Q.definitionPath,Y]},!1)??t(Q),q=typeof J==="object"&&J.name!==void 0&&J.nameStrategy==="title"?J.name:void 0;if(q!==void 0)G.title=q;if(Q.flags.hasReferencedOpenAiAnyType){if(!X)X={};if(!X[Q.openAiAnyTypeName])X[Q.openAiAnyTypeName]={type:["string","number","integer","boolean","array","null"],items:{$ref:Q.$refStrategy==="relative"?"1":[...Q.basePath,Q.definitionPath,Q.openAiAnyTypeName].join("/")}}}let W=Y===void 0?X?{...G,[Q.definitionPath]:X}:G:{$ref:[...Q.$refStrategy==="relative"?[]:Q.basePath,Q.definitionPath,Y].join("/"),[Q.definitionPath]:{...X,[Y]:G}};if(Q.target==="jsonSchema7")W.$schema="http://json-schema.org/draft-07/schema#";else if(Q.target==="jsonSchema2019-09"||Q.target==="openAi")W.$schema="https://json-schema.org/draft/2019-09/schema#";if(Q.target==="openAi"&&(("anyOf"in W)||("oneOf"in W)||("allOf"in W)||("type"in W)&&Array.isArray(W.type)))console.warn("Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.");return W};var n1=[s2,X6,o2,t2,e2,$6,J6,Y6,G6];function gM($){let J=$;if(!J)return{};let Q=J.shape?J:J._def?.schema??J;try{let X=e8(Q,{target:"jsonSchema7",$refStrategy:"none",effectStrategy:"input"}),{$schema:Y,...G}=X;return G}catch{return{}}}function r1($,J={}){let Q=F1($,J),X=Q6;return(X?[...n1,X]:n1).map((G)=>{let q=G(Q);return{name:q.name,description:q.description,input:gM(q.parameters),options:{codemode:!1},execute:async(W,z)=>{let H={session_id:z?.sessionID??J.sessionId??"unknown",workdir:z?.directory};try{let B=await q.execute(W??{},H),U=typeof B.output==="string"?B.output:JSON.stringify(B.output??"");return{content:B.success?U:`ERROR: ${B.error??"unknown error"}`,metadata:{tool:q.name,ok:B.success}}}catch(B){return{content:`ERROR: ${B instanceof Error?B.message:String(B)}`,metadata:{tool:q.name,ok:!1}}}}}})}function a1($,J){let Q=$?.dispose;if(typeof Q==="function")J.push(Q)}async function s1($,J){let Q=J.enabled!==!1,X={enabled:Q,agentId:null,toolNames:[],errors:[],disposers:[]};if(!Q)return X;let Y=$??{},G=J.agent??U2;if(typeof Y.agent?.transform==="function")try{let W=await Y.agent.transform((z)=>{y9(z)});a1(W,X.disposers),X.agentId=G}catch(W){X.errors.push(`roy agent registration failed: ${$7(W)}`)}else X.errors.push("ctx.agent.transform unavailable \u2014 roy agent not registered");let q=[];try{q=r1(J.store,{agent:G,...J.sessionId?{sessionId:J.sessionId}:{}})}catch(W){return X.errors.push(`roy tool construction failed: ${$7(W)}`),X}if(typeof Y.tool?.transform==="function")try{let W=await Y.tool.transform((z)=>{for(let H of q)z.add(H)});a1(W,X.disposers),X.toolNames=q.map((z)=>z.name)}catch(W){X.errors.push(`roy tool registration failed: ${$7(W)}`)}else X.errors.push("ctx.tool.transform unavailable \u2014 roy task tools not registered");return X}function $7($){return $ instanceof Error?$.message:String($)}import{join as X7}from"path";import{homedir as iM}from"os";import{mkdirSync as nM}from"fs";import{Database as kM}from"bun:sqlite";import{createHash as mM,randomUUID as uM}from"crypto";var lM=`
2775
3073
  CREATE TABLE IF NOT EXISTS tasks (
2776
3074
  id TEXT PRIMARY KEY,
2777
3075
  title TEXT NOT NULL,
@@ -2826,13 +3124,13 @@ CREATE TABLE IF NOT EXISTS bounties (
2826
3124
  done_at TEXT
2827
3125
  );
2828
3126
  CREATE INDEX IF NOT EXISTS bounties_status_idx ON bounties(status);
2829
- `;function b$(){return new Date().toISOString()}function e8(){return hO()}function gO($){return xO("sha256").update($).digest("hex")}function m1($){let J=JSON.stringify({id:$.id,type:$.type,data:$.data,prev_hash:$.prev_hash,created_at:$.created_at});return gO(J)}function $7($){return{id:$.id,num:$.num,title:$.title,description:$.description??void 0,status:$.status,priority:$.priority,owner:$.owner??void 0,tags:$.tags??void 0,parent_id:$.parent_id,blocked_by:JSON.parse($.blocked_by),retry_of:$.retry_of,retry_count:$.retry_count,session_id:$.session_id,roy:kO($.roy),created_at:$.created_at,updated_at:$.updated_at}}function kO($){if($===null||$===void 0||$==="")return;try{let J=JSON.parse($);if(J&&typeof J==="object"&&!Array.isArray(J))return J;return}catch{return}}function mO($){try{let J=$.query("PRAGMA table_info(tasks)").all();if(!new Set(J.map((X)=>X.name)).has("roy"))$.exec("ALTER TABLE tasks ADD COLUMN roy TEXT")}catch{}}function u1($){return{id:$.id,num:$.num,task_id:$.task_id,type:$.type,data:JSON.parse($.data),created_at:$.created_at,prev_hash:$.prev_hash,hash:$.hash}}function E9($){return{id:$.id,subject:$.subject,body:$.body,from:$.from_,to:$.to_,status:$.status,claimed_by:$.claimed_by,task_id:$.task_id,created_at:$.created_at,claimed_at:$.claimed_at,done_at:$.done_at}}class C9{db;closedFlag=!1;constructor($){this.db=$}static async create($){let J=new vO($);return J.exec(yO),mO(J),new C9(J)}async close(){if(this.closedFlag)return;this.closedFlag=!0,this.db.close()}async createTask($,J){if(this.closedFlag)throw Error("store closed");if(J){let Y=this.db.query("SELECT task_id FROM task_idempotency WHERE idempotency_key = ?").get(J);if(Y){let q=await this.getTask(Y.task_id);if(q)return q}}let Q=e8(),X=b$(),W=$.priority??3;if(this.db.query(`INSERT INTO tasks (id, title, description, status, priority, owner, tags,
3127
+ `;function C$(){return new Date().toISOString()}function J7(){return uM()}function cM($){return mM("sha256").update($).digest("hex")}function o1($){let J=JSON.stringify({id:$.id,type:$.type,data:$.data,prev_hash:$.prev_hash,created_at:$.created_at});return cM(J)}function Q7($){return{id:$.id,num:$.num,title:$.title,description:$.description??void 0,status:$.status,priority:$.priority,owner:$.owner??void 0,tags:$.tags??void 0,parent_id:$.parent_id,blocked_by:JSON.parse($.blocked_by),retry_of:$.retry_of,retry_count:$.retry_count,session_id:$.session_id,roy:pM($.roy),created_at:$.created_at,updated_at:$.updated_at}}function pM($){if($===null||$===void 0||$==="")return;try{let J=JSON.parse($);if(J&&typeof J==="object"&&!Array.isArray(J))return J;return}catch{return}}function dM($){try{let J=$.query("PRAGMA table_info(tasks)").all();if(!new Set(J.map((X)=>X.name)).has("roy"))$.exec("ALTER TABLE tasks ADD COLUMN roy TEXT")}catch{}}function t1($){return{id:$.id,num:$.num,task_id:$.task_id,type:$.type,data:JSON.parse($.data),created_at:$.created_at,prev_hash:$.prev_hash,hash:$.hash}}function f9($){return{id:$.id,subject:$.subject,body:$.body,from:$.from_,to:$.to_,status:$.status,claimed_by:$.claimed_by,task_id:$.task_id,created_at:$.created_at,claimed_at:$.claimed_at,done_at:$.done_at}}class I9{db;closedFlag=!1;constructor($){this.db=$}static async create($){let J=new kM($);return J.exec(lM),dM(J),new I9(J)}async close(){if(this.closedFlag)return;this.closedFlag=!0,this.db.close()}async createTask($,J){if(this.closedFlag)throw Error("store closed");if(J){let q=this.db.query("SELECT task_id FROM task_idempotency WHERE idempotency_key = ?").get(J);if(q){let W=await this.getTask(q.task_id);if(W)return W}}let Q=J7(),X=C$(),Y=$.priority??3;if(this.db.query(`INSERT INTO tasks (id, title, description, status, priority, owner, tags,
2830
3128
  parent_id, blocked_by, retry_of, retry_count, session_id, roy, created_at, updated_at)
2831
- VALUES (?, ?, ?, 'pending', ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?)`).run(Q,$.title,$.description??null,W,$.owner??null,$.tags??null,$.parent_id??null,JSON.stringify($.blocked_by??[]),$.retry_of??null,$.session_id??null,$.roy===void 0?null:JSON.stringify($.roy),X,X),J)this.db.query(`INSERT INTO task_idempotency (idempotency_key, task_id, created_at)
2832
- VALUES (?, ?, ?)`).run(J,Q,X);await this.appendOperation({task_id:Q,type:"task.created",data:{title:$.title,parent_id:$.parent_id??null}});let G=await this.getTask(Q);if(!G)throw Error("internal: task vanished after insert");return G}async getTask($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT rowid AS num, * FROM tasks WHERE id = ?").get($);return J?$7(J):null}async getTaskByNum($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT rowid AS num, * FROM tasks WHERE rowid = ?").get($);return J?$7(J):null}async updateTask($,J){if(this.closedFlag)throw Error("store closed");let Q=await this.getTask($);if(!Q)return null;let X=[],W=[];if(J.title!==void 0)X.push("title = ?"),W.push(J.title);if(J.description!==void 0)X.push("description = ?"),W.push(J.description);if(J.status!==void 0)X.push("status = ?"),W.push(J.status);if(J.priority!==void 0)X.push("priority = ?"),W.push(J.priority);if(J.owner!==void 0)X.push("owner = ?"),W.push(J.owner);if(J.tags!==void 0)X.push("tags = ?"),W.push(J.tags);if(J.blocked_by!==void 0)X.push("blocked_by = ?"),W.push(JSON.stringify(J.blocked_by));if(J.roy!==void 0){let G={...Q.roy??{},...J.roy};X.push("roy = ?"),W.push(JSON.stringify(G))}if(X.push("updated_at = ?"),W.push(b$()),W.push($),this.db.query(`UPDATE tasks SET ${X.join(", ")} WHERE id = ?`).run(...W),J.status!==void 0&&J.status!==Q.status)await this.appendOperation({task_id:$,type:"task.status_changed",data:{from:Q.status,to:J.status}});else await this.appendOperation({task_id:$,type:"task.updated",data:{keys:Object.keys(J)}});return await this.getTask($)}async listTasks($={}){if(this.closedFlag)throw Error("store closed");let J=[],Q=[];if($.status!==void 0)if(Array.isArray($.status))J.push(`status IN (${$.status.map(()=>"?").join(",")})`),Q.push(...$.status);else J.push("status = ?"),Q.push($.status);if($.parent_id!==void 0)if($.parent_id===null)J.push("parent_id IS NULL");else J.push("parent_id = ?"),Q.push($.parent_id);if($.session_id!==void 0)J.push("session_id = ?"),Q.push($.session_id);if($.owner!==void 0)J.push("owner = ?"),Q.push($.owner);if($.tags!==void 0)J.push("tags LIKE ?"),Q.push(`%${$.tags}%`);if($.search!==void 0)J.push("(title LIKE ? OR description LIKE ?)"),Q.push(`%${$.search}%`,`%${$.search}%`);let X=$.limit??100,W=$.offset??0,G=J.length?`WHERE ${J.join(" AND ")}`:"",Y=this.db.query(`SELECT COUNT(*) AS n FROM tasks ${G}`).get(...Q).n;return{tasks:this.db.query(`SELECT rowid AS num, * FROM tasks ${G} ORDER BY created_at DESC LIMIT ? OFFSET ?`).all(...Q,X,W).map($7),total:Y}}async deleteTask($){if(this.closedFlag)throw Error("store closed");return this.db.query("DELETE FROM tasks WHERE id = ?").run($).changes>0}async setParentId($,J){if(this.closedFlag)throw Error("store closed");this.db.query("UPDATE tasks SET parent_id = ?, updated_at = ? WHERE id = ?").run(J,b$(),$)}async appendOperation($){if(this.closedFlag)throw Error("store closed");let Q=this.db.query("SELECT hash FROM operations ORDER BY rowid DESC LIMIT 1").get()?.hash??"0".repeat(64),X=e8(),W=b$(),G=m1({id:X,type:$.type,data:$.data,prev_hash:Q,created_at:W});this.db.query(`INSERT INTO operations (id, task_id, type, data, created_at, prev_hash, hash)
2833
- VALUES (?, ?, ?, ?, ?, ?, ?)`).run(X,$.task_id,$.type,JSON.stringify($.data),W,Q,G);let Y=this.db.query("SELECT last_insert_rowid() AS n").get().n;return{id:X,num:Y,task_id:$.task_id,type:$.type,data:$.data,created_at:W,prev_hash:Q,hash:G}}async getOperationByNum($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT rowid AS num, * FROM operations WHERE rowid = ?").get($);return J?u1(J):null}async updateOperation($,J){if(this.closedFlag)throw Error("store closed");let Q=await this.getOperationByNum($);if(!Q)return null;let X=[],W=[];if(J.type!==void 0)X.push("type = ?"),W.push(J.type);if(J.data!==void 0)X.push("data = ?"),W.push(JSON.stringify(J.data));if(X.length===0)return Q;return W.push($),this.db.query(`UPDATE operations SET ${X.join(", ")} WHERE rowid = ?`).run(...W),await this.getOperationByNum($)}async deleteOperation($){if(this.closedFlag)throw Error("store closed");return this.db.query("DELETE FROM operations WHERE rowid = ?").run($).changes>0}async listOperations($={}){if(this.closedFlag)throw Error("store closed");let J=[],Q=[];if($.task_id!==void 0)J.push("task_id = ?"),Q.push($.task_id);if($.type!==void 0)J.push("type = ?"),Q.push($.type);let X=$.limit??100,W=$.offset??0,G=J.length?`WHERE ${J.join(" AND ")}`:"",Y=this.db.query(`SELECT COUNT(*) AS n FROM operations ${G}`).get(...Q).n;return{operations:this.db.query(`SELECT rowid AS num, * FROM operations ${G} ORDER BY rowid ASC LIMIT ? OFFSET ?`).all(...Q,X,W).map(u1),total:Y}}async verifyChain(){if(this.closedFlag)throw Error("store closed");let $=this.db.query("SELECT * FROM operations ORDER BY rowid ASC").all(),J="0".repeat(64);for(let Q of $){let X=m1({id:Q.id,type:Q.type,data:JSON.parse(Q.data),prev_hash:J,created_at:Q.created_at});if(Q.prev_hash!==J)return!1;if(Q.hash!==X)return!1;J=Q.hash}return!0}async tamperOpForTest($,J){this.db.query("UPDATE operations SET data = ? WHERE rowid = ?").run(JSON.stringify(J),$)}async sendBounty($){if(this.closedFlag)throw Error("store closed");let J=e8(),Q=b$();this.db.query(`INSERT INTO bounties (id, subject, body, from_, status, created_at)
2834
- VALUES (?, ?, ?, ?, 'open', ?)`).run(J,$.subject,$.body,$.from,Q),await this.appendOperation({task_id:null,type:"bounty.sent",data:{bounty_id:J,subject:$.subject,from:$.from}});let X=this.db.query("SELECT * FROM bounties WHERE id = ?").get(J);return E9(X)}async claimBounty($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT * FROM bounties WHERE status = 'open' ORDER BY created_at ASC LIMIT 1").get();if(!J)return null;let Q=b$();this.db.query("UPDATE bounties SET status = 'claimed', claimed_by = ?, claimed_at = ? WHERE id = ?").run($,Q,J.id),await this.appendOperation({task_id:null,type:"bounty.claimed",data:{bounty_id:J.id,by:$}});let X=this.db.query("SELECT * FROM bounties WHERE id = ?").get(J.id);return E9(X)}async completeBounty($,J){if(this.closedFlag)throw Error("store closed");let Q=b$();if(this.db.query(`UPDATE bounties SET status = 'done', task_id = ?, done_at = ?
2835
- WHERE id = ? AND status = 'claimed'`).run(J,Q,$).changes===0)return null;await this.appendOperation({task_id:null,type:"bounty.completed",data:{bounty_id:$,task_id:J}});let W=this.db.query("SELECT * FROM bounties WHERE id = ?").get($);return E9(W)}async listBounties($={}){if(this.closedFlag)throw Error("store closed");let J=[],Q=[];if($.status!==void 0)J.push("status = ?"),Q.push($.status);if($.to!==void 0)J.push("to_ = ?"),Q.push($.to);let X=J.length?`WHERE ${J.join(" AND ")}`:"";return this.db.query(`SELECT * FROM bounties ${X} ORDER BY created_at DESC`).all(...Q).map(E9)}}var cO=J7(uO(),".roy-task-plugin"),dO=J7(cO,"tasks.db");class G2{inner;constructor($){this.inner=$}static async create($){let J=$??dO;if(J!==":memory:")lO(J7(J,".."),{recursive:!0});let Q=await C9.create(J);return new G2(Q)}createTask(...$){return this.inner.createTask(...$)}getTask(...$){return this.inner.getTask(...$)}updateTask(...$){return this.inner.updateTask(...$)}deleteTask(...$){return this.inner.deleteTask(...$)}listTasks(...$){return this.inner.listTasks(...$)}appendOperation(...$){return this.inner.appendOperation(...$)}listOperations(...$){return this.inner.listOperations(...$)}verifyChain(){return this.inner.verifyChain()}sendBounty(...$){return this.inner.sendBounty(...$)}claimBounty(...$){return this.inner.claimBounty(...$)}completeBounty(...$){return this.inner.completeBounty(...$)}listBounties(...$){return this.inner.listBounties(...$)}async close(){await this.inner.close()}}class y0 extends Error{status;body;constructor($,J,Q){super(J);this.status=$,this.body=Q}}class Q7{baseUrl;headers;closedFlag=!1;constructor($){this.baseUrl=$.baseUrl.replace(/\/+$/,""),this.headers={"content-type":"application/json",...$.authToken?{authorization:`Bearer ${$.authToken}`}:{},...$.headers??{}}}async close(){this.closedFlag=!0}async request($,J,Q){if(this.closedFlag)throw Error("client closed");let X={...this.headers};if(Q?.idempotencyKey)X["idempotency-key"]=Q.idempotencyKey;let W=await fetch(`${this.baseUrl}${J}`,{method:$,headers:X,body:Q?.body!==void 0?JSON.stringify(Q.body):void 0});if(W.status===204)return null;let G=await W.text(),Y=null;try{Y=G?JSON.parse(G):null}catch{Y=G}if(!W.ok)throw new y0(W.status,`HTTP ${W.status}`,Y);return Y}async createTask($,J){let Q=await this.request("POST","/tasks",{body:$,idempotencyKey:J});if(!Q)throw new y0(500,"empty response from POST /tasks");return Q}async getTask($){try{return await this.request("GET",`/tasks/${encodeURIComponent($)}`)}catch(J){if(J instanceof y0&&J.status===404)return null;throw J}}async updateTask($,J){try{return await this.request("PATCH",`/tasks/${encodeURIComponent($)}`,{body:J})}catch(Q){if(Q instanceof y0&&Q.status===404)return null;throw Q}}async deleteTask($){try{return await this.request("DELETE",`/tasks/${encodeURIComponent($)}`),!0}catch(J){if(J instanceof y0&&J.status===404)return!1;throw J}}async listTasks($={}){let J=new URLSearchParams;if($.status!==void 0){let X=Array.isArray($.status)?$.status.join(","):$.status;J.set("status",X)}if($.parent_id!==void 0&&$.parent_id!==null)J.set("parent_id",$.parent_id);if($.session_id!==void 0)J.set("session_id",$.session_id);if($.owner!==void 0)J.set("owner",$.owner);if($.tags!==void 0)J.set("tags",$.tags);if($.search!==void 0)J.set("search",$.search);J.set("limit",String($.limit??100)),J.set("offset",String($.offset??0));let Q=await this.request("GET",`/tasks?${J}`);if(!Q)throw new y0(500,"empty response");return Q}async appendOperation($){return await this.request("POST","/operations",{body:$})}async listOperations($={}){let J=new URLSearchParams;if($.task_id!==void 0)J.set("task_id",$.task_id);if($.type!==void 0)J.set("type",$.type);return J.set("limit",String($.limit??100)),J.set("offset",String($.offset??0)),await this.request("GET",`/operations?${J}`)}async verifyChain(){return(await this.request("GET","/verify"))?.valid===!0}async sendBounty($){let J=await this.request("POST","/bounties",{body:$});if(!J)throw new y0(500,"empty bounty response");return J}async claimBounty($){try{return await this.request("POST","/bounties/claim",{body:{agent:$}})}catch(J){if(J instanceof y0&&J.status===404)return null;throw J}}async completeBounty($,J){try{return await this.request("POST",`/bounties/${encodeURIComponent($)}/complete`,{body:{task_id:J}})}catch(Q){if(Q instanceof y0&&Q.status===404)return null;throw Q}}async listBounties($={}){let J=new URLSearchParams;if($.status!==void 0)J.set("status",$.status);if($.to!==void 0)J.set("to",$.to);return(await this.request("GET",`/bounties?${J}`))?.bounties??[]}}class Y6{inner;constructor($){this.inner=new Q7($)}createTask(...$){return this.inner.createTask(...$)}getTask(...$){return this.inner.getTask(...$)}updateTask(...$){return this.inner.updateTask(...$)}deleteTask(...$){return this.inner.deleteTask(...$)}listTasks(...$){return this.inner.listTasks(...$)}appendOperation(...$){return this.inner.appendOperation(...$)}listOperations(...$){return this.inner.listOperations(...$)}verifyChain(){return this.inner.verifyChain()}sendBounty(...$){return this.inner.sendBounty(...$)}claimBounty(...$){return this.inner.claimBounty(...$)}completeBounty(...$){return this.inner.completeBounty(...$)}listBounties(...$){return this.inner.listBounties(...$)}async close(){await this.inner.close()}}async function hZ($={}){let J=$.persistence??"local",Q;if(J==="remote"){if(!$.remoteUrl)throw Error("remoteUrl is required when persistence = 'remote' (e.g. http://localhost:7820)");Q=new Y6({baseUrl:$.remoteUrl,authToken:$.remoteAuthToken})}else Q=await G2.create($.localDbPath);let X={store:Q,agent:$.agent??"opencode-default"};return{handlers:U6(X),store:Q,async close(){await Q.close()}}}var pO={id:"roy-task-plugin",async setup($){let J=$.options??{},Q=J.persistence??"local",X;if(Q==="remote"){if(!J.remoteUrl)throw Error("remoteUrl is required when persistence = 'remote' (e.g. http://localhost:7820)");X=new Y6({baseUrl:J.remoteUrl,authToken:J.remoteAuthToken})}else X=await G2.create(J.localDbPath);let W={store:X,agent:J.agent??"opencode-default"},G=U6(W),Y=await k1($,{store:X,enabled:J.royAgent!==!1,agent:"roy"}),q=await $.agent.transform(async(B)=>{let z=B.get("build");if(!z)return;let V=String(z.system??""),M=`
3129
+ VALUES (?, ?, ?, 'pending', ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?)`).run(Q,$.title,$.description??null,Y,$.owner??null,$.tags??null,$.parent_id??null,JSON.stringify($.blocked_by??[]),$.retry_of??null,$.session_id??null,$.roy===void 0?null:JSON.stringify($.roy),X,X),J)this.db.query(`INSERT INTO task_idempotency (idempotency_key, task_id, created_at)
3130
+ VALUES (?, ?, ?)`).run(J,Q,X);await this.appendOperation({task_id:Q,type:"task.created",data:{title:$.title,parent_id:$.parent_id??null}});let G=await this.getTask(Q);if(!G)throw Error("internal: task vanished after insert");return G}async getTask($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT rowid AS num, * FROM tasks WHERE id = ?").get($);return J?Q7(J):null}async getTaskByNum($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT rowid AS num, * FROM tasks WHERE rowid = ?").get($);return J?Q7(J):null}async updateTask($,J){if(this.closedFlag)throw Error("store closed");let Q=await this.getTask($);if(!Q)return null;let X=[],Y=[];if(J.title!==void 0)X.push("title = ?"),Y.push(J.title);if(J.description!==void 0)X.push("description = ?"),Y.push(J.description);if(J.status!==void 0)X.push("status = ?"),Y.push(J.status);if(J.priority!==void 0)X.push("priority = ?"),Y.push(J.priority);if(J.owner!==void 0)X.push("owner = ?"),Y.push(J.owner);if(J.tags!==void 0)X.push("tags = ?"),Y.push(J.tags);if(J.blocked_by!==void 0)X.push("blocked_by = ?"),Y.push(JSON.stringify(J.blocked_by));if(J.roy!==void 0){let G={...Q.roy??{},...J.roy};X.push("roy = ?"),Y.push(JSON.stringify(G))}if(X.push("updated_at = ?"),Y.push(C$()),Y.push($),this.db.query(`UPDATE tasks SET ${X.join(", ")} WHERE id = ?`).run(...Y),J.status!==void 0&&J.status!==Q.status)await this.appendOperation({task_id:$,type:"task.status_changed",data:{from:Q.status,to:J.status}});else await this.appendOperation({task_id:$,type:"task.updated",data:{keys:Object.keys(J)}});return await this.getTask($)}async listTasks($={}){if(this.closedFlag)throw Error("store closed");let J=[],Q=[];if($.status!==void 0)if(Array.isArray($.status))J.push(`status IN (${$.status.map(()=>"?").join(",")})`),Q.push(...$.status);else J.push("status = ?"),Q.push($.status);if($.parent_id!==void 0)if($.parent_id===null)J.push("parent_id IS NULL");else J.push("parent_id = ?"),Q.push($.parent_id);if($.session_id!==void 0)J.push("session_id = ?"),Q.push($.session_id);if($.owner!==void 0)J.push("owner = ?"),Q.push($.owner);if($.tags!==void 0)J.push("tags LIKE ?"),Q.push(`%${$.tags}%`);if($.search!==void 0)J.push("(title LIKE ? OR description LIKE ?)"),Q.push(`%${$.search}%`,`%${$.search}%`);let X=$.limit??100,Y=$.offset??0,G=J.length?`WHERE ${J.join(" AND ")}`:"",q=this.db.query(`SELECT COUNT(*) AS n FROM tasks ${G}`).get(...Q).n;return{tasks:this.db.query(`SELECT rowid AS num, * FROM tasks ${G} ORDER BY created_at DESC LIMIT ? OFFSET ?`).all(...Q,X,Y).map(Q7),total:q}}async deleteTask($){if(this.closedFlag)throw Error("store closed");return this.db.query("DELETE FROM tasks WHERE id = ?").run($).changes>0}async setParentId($,J){if(this.closedFlag)throw Error("store closed");this.db.query("UPDATE tasks SET parent_id = ?, updated_at = ? WHERE id = ?").run(J,C$(),$)}async appendOperation($){if(this.closedFlag)throw Error("store closed");let Q=this.db.query("SELECT hash FROM operations ORDER BY rowid DESC LIMIT 1").get()?.hash??"0".repeat(64),X=J7(),Y=C$(),G=o1({id:X,type:$.type,data:$.data,prev_hash:Q,created_at:Y});this.db.query(`INSERT INTO operations (id, task_id, type, data, created_at, prev_hash, hash)
3131
+ VALUES (?, ?, ?, ?, ?, ?, ?)`).run(X,$.task_id,$.type,JSON.stringify($.data),Y,Q,G);let q=this.db.query("SELECT last_insert_rowid() AS n").get().n;return{id:X,num:q,task_id:$.task_id,type:$.type,data:$.data,created_at:Y,prev_hash:Q,hash:G}}async getOperationByNum($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT rowid AS num, * FROM operations WHERE rowid = ?").get($);return J?t1(J):null}async updateOperation($,J){if(this.closedFlag)throw Error("store closed");let Q=await this.getOperationByNum($);if(!Q)return null;let X=[],Y=[];if(J.type!==void 0)X.push("type = ?"),Y.push(J.type);if(J.data!==void 0)X.push("data = ?"),Y.push(JSON.stringify(J.data));if(X.length===0)return Q;return Y.push($),this.db.query(`UPDATE operations SET ${X.join(", ")} WHERE rowid = ?`).run(...Y),await this.getOperationByNum($)}async deleteOperation($){if(this.closedFlag)throw Error("store closed");return this.db.query("DELETE FROM operations WHERE rowid = ?").run($).changes>0}async listOperations($={}){if(this.closedFlag)throw Error("store closed");let J=[],Q=[];if($.task_id!==void 0)J.push("task_id = ?"),Q.push($.task_id);if($.type!==void 0)J.push("type = ?"),Q.push($.type);let X=$.limit??100,Y=$.offset??0,G=J.length?`WHERE ${J.join(" AND ")}`:"",q=this.db.query(`SELECT COUNT(*) AS n FROM operations ${G}`).get(...Q).n;return{operations:this.db.query(`SELECT rowid AS num, * FROM operations ${G} ORDER BY rowid ASC LIMIT ? OFFSET ?`).all(...Q,X,Y).map(t1),total:q}}async verifyChain(){if(this.closedFlag)throw Error("store closed");let $=this.db.query("SELECT * FROM operations ORDER BY rowid ASC").all(),J="0".repeat(64);for(let Q of $){let X=o1({id:Q.id,type:Q.type,data:JSON.parse(Q.data),prev_hash:J,created_at:Q.created_at});if(Q.prev_hash!==J)return!1;if(Q.hash!==X)return!1;J=Q.hash}return!0}async tamperOpForTest($,J){this.db.query("UPDATE operations SET data = ? WHERE rowid = ?").run(JSON.stringify(J),$)}async sendBounty($){if(this.closedFlag)throw Error("store closed");let J=J7(),Q=C$();this.db.query(`INSERT INTO bounties (id, subject, body, from_, status, created_at)
3132
+ VALUES (?, ?, ?, ?, 'open', ?)`).run(J,$.subject,$.body,$.from,Q),await this.appendOperation({task_id:null,type:"bounty.sent",data:{bounty_id:J,subject:$.subject,from:$.from}});let X=this.db.query("SELECT * FROM bounties WHERE id = ?").get(J);return f9(X)}async claimBounty($){if(this.closedFlag)throw Error("store closed");let J=this.db.query("SELECT * FROM bounties WHERE status = 'open' ORDER BY created_at ASC LIMIT 1").get();if(!J)return null;let Q=C$();this.db.query("UPDATE bounties SET status = 'claimed', claimed_by = ?, claimed_at = ? WHERE id = ?").run($,Q,J.id),await this.appendOperation({task_id:null,type:"bounty.claimed",data:{bounty_id:J.id,by:$}});let X=this.db.query("SELECT * FROM bounties WHERE id = ?").get(J.id);return f9(X)}async completeBounty($,J){if(this.closedFlag)throw Error("store closed");let Q=C$();if(this.db.query(`UPDATE bounties SET status = 'done', task_id = ?, done_at = ?
3133
+ WHERE id = ? AND status = 'claimed'`).run(J,Q,$).changes===0)return null;await this.appendOperation({task_id:null,type:"bounty.completed",data:{bounty_id:$,task_id:J}});let Y=this.db.query("SELECT * FROM bounties WHERE id = ?").get($);return f9(Y)}async listBounties($={}){if(this.closedFlag)throw Error("store closed");let J=[],Q=[];if($.status!==void 0)J.push("status = ?"),Q.push($.status);if($.to!==void 0)J.push("to_ = ?"),Q.push($.to);let X=J.length?`WHERE ${J.join(" AND ")}`:"";return this.db.query(`SELECT * FROM bounties ${X} ORDER BY created_at DESC`).all(...Q).map(f9)}}var rM=X7(iM(),".roy-task-plugin"),aM=X7(rM,"tasks.db");class B2{inner;constructor($){this.inner=$}static async create($){let J=$??aM;if(J!==":memory:")nM(X7(J,".."),{recursive:!0});let Q=await I9.create(J);return new B2(Q)}createTask(...$){return this.inner.createTask(...$)}getTask(...$){return this.inner.getTask(...$)}updateTask(...$){return this.inner.updateTask(...$)}deleteTask(...$){return this.inner.deleteTask(...$)}listTasks(...$){return this.inner.listTasks(...$)}appendOperation(...$){return this.inner.appendOperation(...$)}listOperations(...$){return this.inner.listOperations(...$)}verifyChain(){return this.inner.verifyChain()}sendBounty(...$){return this.inner.sendBounty(...$)}claimBounty(...$){return this.inner.claimBounty(...$)}completeBounty(...$){return this.inner.completeBounty(...$)}listBounties(...$){return this.inner.listBounties(...$)}async close(){await this.inner.close()}}class g0 extends Error{status;body;constructor($,J,Q){super(J);this.status=$,this.body=Q}}class Y7{baseUrl;headers;closedFlag=!1;constructor($){this.baseUrl=$.baseUrl.replace(/\/+$/,""),this.headers={"content-type":"application/json",...$.authToken?{authorization:`Bearer ${$.authToken}`}:{},...$.headers??{}}}async close(){this.closedFlag=!0}async request($,J,Q){if(this.closedFlag)throw Error("client closed");let X={...this.headers};if(Q?.idempotencyKey)X["idempotency-key"]=Q.idempotencyKey;let Y=await fetch(`${this.baseUrl}${J}`,{method:$,headers:X,body:Q?.body!==void 0?JSON.stringify(Q.body):void 0});if(Y.status===204)return null;let G=await Y.text(),q=null;try{q=G?JSON.parse(G):null}catch{q=G}if(!Y.ok)throw new g0(Y.status,`HTTP ${Y.status}`,q);return q}async createTask($,J){let Q=await this.request("POST","/tasks",{body:$,idempotencyKey:J});if(!Q)throw new g0(500,"empty response from POST /tasks");return Q}async getTask($){try{return await this.request("GET",`/tasks/${encodeURIComponent($)}`)}catch(J){if(J instanceof g0&&J.status===404)return null;throw J}}async updateTask($,J){try{return await this.request("PATCH",`/tasks/${encodeURIComponent($)}`,{body:J})}catch(Q){if(Q instanceof g0&&Q.status===404)return null;throw Q}}async deleteTask($){try{return await this.request("DELETE",`/tasks/${encodeURIComponent($)}`),!0}catch(J){if(J instanceof g0&&J.status===404)return!1;throw J}}async listTasks($={}){let J=new URLSearchParams;if($.status!==void 0){let X=Array.isArray($.status)?$.status.join(","):$.status;J.set("status",X)}if($.parent_id!==void 0&&$.parent_id!==null)J.set("parent_id",$.parent_id);if($.session_id!==void 0)J.set("session_id",$.session_id);if($.owner!==void 0)J.set("owner",$.owner);if($.tags!==void 0)J.set("tags",$.tags);if($.search!==void 0)J.set("search",$.search);J.set("limit",String($.limit??100)),J.set("offset",String($.offset??0));let Q=await this.request("GET",`/tasks?${J}`);if(!Q)throw new g0(500,"empty response");return Q}async appendOperation($){return await this.request("POST","/operations",{body:$})}async listOperations($={}){let J=new URLSearchParams;if($.task_id!==void 0)J.set("task_id",$.task_id);if($.type!==void 0)J.set("type",$.type);return J.set("limit",String($.limit??100)),J.set("offset",String($.offset??0)),await this.request("GET",`/operations?${J}`)}async verifyChain(){return(await this.request("GET","/verify"))?.valid===!0}async sendBounty($){let J=await this.request("POST","/bounties",{body:$});if(!J)throw new g0(500,"empty bounty response");return J}async claimBounty($){try{return await this.request("POST","/bounties/claim",{body:{agent:$}})}catch(J){if(J instanceof g0&&J.status===404)return null;throw J}}async completeBounty($,J){try{return await this.request("POST",`/bounties/${encodeURIComponent($)}/complete`,{body:{task_id:J}})}catch(Q){if(Q instanceof g0&&Q.status===404)return null;throw Q}}async listBounties($={}){let J=new URLSearchParams;if($.status!==void 0)J.set("status",$.status);if($.to!==void 0)J.set("to",$.to);return(await this.request("GET",`/bounties?${J}`))?.bounties??[]}}class U6{inner;constructor($){this.inner=new Y7($)}createTask(...$){return this.inner.createTask(...$)}getTask(...$){return this.inner.getTask(...$)}updateTask(...$){return this.inner.updateTask(...$)}deleteTask(...$){return this.inner.deleteTask(...$)}listTasks(...$){return this.inner.listTasks(...$)}appendOperation(...$){return this.inner.appendOperation(...$)}listOperations(...$){return this.inner.listOperations(...$)}verifyChain(){return this.inner.verifyChain()}sendBounty(...$){return this.inner.sendBounty(...$)}claimBounty(...$){return this.inner.claimBounty(...$)}completeBounty(...$){return this.inner.completeBounty(...$)}listBounties(...$){return this.inner.listBounties(...$)}async close(){await this.inner.close()}}async function cZ($={}){let J=$.persistence??"local",Q;if(J==="remote"){if(!$.remoteUrl)throw Error("remoteUrl is required when persistence = 'remote' (e.g. http://localhost:7820)");Q=new U6({baseUrl:$.remoteUrl,authToken:$.remoteAuthToken})}else Q=await B2.create($.localDbPath);let X={store:Q,agent:$.agent??"opencode-default"};return{handlers:M6(X),store:Q,async close(){await Q.close()}}}var sM={id:"roy-task-plugin",async setup($){let J=$.options??{},Q=J.persistence??"local",X;if(Q==="remote"){if(!J.remoteUrl)throw Error("remoteUrl is required when persistence = 'remote' (e.g. http://localhost:7820)");X=new U6({baseUrl:J.remoteUrl,authToken:J.remoteAuthToken})}else X=await B2.create(J.localDbPath);let Y={store:X,agent:J.agent??"opencode-default"},G=M6(Y),q=await s1($,{store:X,enabled:J.royAgent!==!1,agent:"roy"}),W=await $.agent.transform(async(H)=>{let U=H.get("build");if(!U)return;let V=String(U.system??""),O=`
2836
3134
 
2837
3135
  # Roy Task Plugin (auto-injected by roy-task-plugin v2)
2838
3136
 
@@ -2847,7 +3145,7 @@ Mark progress on long tasks via \`task-update <id> --status <status>\`.
2847
3145
  For task-first-class-citizen work (task tree, milestones, deliverables), switch
2848
3146
  to the dedicated **\`roy\`** primary agent \u2014 it carries the full roy task
2849
3147
  lifecycle as native tools.
2850
- `;B.update("build",(F)=>{if(typeof F.system==="string"||F.system===void 0)F.system=V+M})}),H=await $.command.transform((B)=>{B.add({name:"task-create",description:"Create a tracked task in roy-task-plugin store. Persists to SQLite (~/.roy-task-plugin/tasks.db) or remote service. Args: <title> [body]",template:"task-create <title> [body]",execute:async(U)=>{let z=String(U?.prompt?.text??"").trim(),V=z.split(`
2851
- `)[0]?.trim()||`task-${Date.now()}`;await G.session({type:"session.created",payload:{id:U?.sessionID??`cmd-${Date.now()}`,title:V,body:z,source:"command:task-create"}})}}),B.add({name:"task-list",description:"List tracked tasks. Filters: [--status <s>] [--owner <o>]",template:"task-list [--status <status>] [--owner <owner>]",execute:async()=>{}}),B.add({name:"task-status",description:"Show full status of a single task. Args: <id>",template:"task-status <id>",execute:async()=>{}})});return{async dispose(){for(let B of Y.disposers)try{await B()}catch{}await q.dispose(),await H.dispose(),await X.close()}}}},gZ=pO;export{gZ as default,hZ as createRoyTaskPlugin,U6 as createHandlers,Y6 as RemoteTaskStore,G2 as LocalTaskStore};
3148
+ `;H.update("build",(F)=>{if(typeof F.system==="string"||F.system===void 0)F.system=V+O})}),z=await $.command.transform((H)=>{H.add({name:"task-create",description:"Create a tracked task in roy-task-plugin store. Persists to SQLite (~/.roy-task-plugin/tasks.db) or remote service. Args: <title> [body]",template:"task-create <title> [body]",execute:async(B)=>{let U=String(B?.prompt?.text??"").trim(),V=U.split(`
3149
+ `)[0]?.trim()||`task-${Date.now()}`;await G.session({type:"session.created",payload:{id:B?.sessionID??`cmd-${Date.now()}`,title:V,body:U,source:"command:task-create"}})}}),H.add({name:"task-list",description:"List tracked tasks. Filters: [--status <s>] [--owner <o>]",template:"task-list [--status <status>] [--owner <owner>]",execute:async()=>{}}),H.add({name:"task-status",description:"Show full status of a single task. Args: <id>",template:"task-status <id>",execute:async()=>{}})});return{async dispose(){for(let H of q.disposers)try{await H()}catch{}await W.dispose(),await z.dispose(),await X.close()}}}},dZ=sM;export{dZ as default,cZ as createRoyTaskPlugin,M6 as createHandlers,U6 as RemoteTaskStore,B2 as LocalTaskStore};
2852
3150
 
2853
- //# debugId=F3E03D2336A3457064756E2164756E21
3151
+ //# debugId=85D8D4EEDE8A554A64756E2164756E21