@stigmer/mcp-server 3.5.2 → 3.6.0
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/cli/mcp-server-stigmer.js +4 -4
- package/config.d.ts +5 -1
- package/config.d.ts.map +1 -1
- package/config.js +2 -2
- package/config.js.map +1 -1
- package/domains/channels/calls.d.ts +15 -0
- package/domains/channels/calls.d.ts.map +1 -0
- package/domains/channels/calls.js +54 -0
- package/domains/channels/calls.js.map +1 -0
- package/domains/channels/errors.d.ts +21 -0
- package/domains/channels/errors.d.ts.map +1 -0
- package/domains/channels/errors.js +77 -0
- package/domains/channels/errors.js.map +1 -0
- package/domains/channels/tools.d.ts +5 -0
- package/domains/channels/tools.d.ts.map +1 -0
- package/domains/channels/tools.js +88 -0
- package/domains/channels/tools.js.map +1 -0
- package/gen/mcpserver.js +2 -2
- package/gen/mcpserver.js.map +1 -1
- package/gen/workflow.d.ts +2 -2
- package/package.json +3 -3
- package/server.d.ts +16 -4
- package/server.d.ts.map +1 -1
- package/server.js +34 -6
- package/server.js.map +1 -1
- package/src/config.ts +9 -3
- package/src/domains/channels/calls.ts +86 -0
- package/src/domains/channels/channels.integration.test.ts +272 -0
- package/src/domains/channels/errors.ts +94 -0
- package/src/domains/channels/tools.ts +112 -0
- package/src/gen/mcpserver.ts +2 -2
- package/src/server.ts +32 -6
|
@@ -148,7 +148,7 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
|
|
|
148
148
|
`)+1;for(;nl!==0;)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
149
149
|
`,nl)+1}return{type,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(parent){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 prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return start.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(start,indent){return this.type!=="comment"||this.indent<=indent?!1:start.every(st=>st.type==="newline"||st.type==="space")}*documentEnd(docEnd){this.type!=="doc-mode"&&(docEnd.end?docEnd.end.push(this.sourceToken):docEnd.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(token){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:token.end?token.end.push(this.sourceToken):token.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};exports.Parser=Parser}});var require_public_api=__commonJS({"../node_modules/yaml/dist/public-api.js"(exports){"use strict";var composer=require_composer(),Document=require_Document(),errors=require_errors2(),log2=require_log(),identity=require_identity(),lineCounter=require_line_counter(),parser=require_parser();function parseOptions(options){let prettyErrors=options.prettyErrors!==!1;return{lineCounter:options.lineCounter||prettyErrors&&new lineCounter.LineCounter||null,prettyErrors}}function parseAllDocuments(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),docs=Array.from(composer$1.compose(parser$1.parse(source)));if(prettyErrors&&lineCounter2)for(let doc of docs)doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2));return docs.length>0?docs:Object.assign([],{empty:!0},composer$1.streamInfo())}function parseDocument(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),doc=null;for(let _doc of composer$1.compose(parser$1.parse(source),!0,source.length))if(!doc)doc=_doc;else if(doc.options.logLevel!=="silent"){doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return prettyErrors&&lineCounter2&&(doc.errors.forEach(errors.prettifyError(source,lineCounter2)),doc.warnings.forEach(errors.prettifyError(source,lineCounter2))),doc}function parse3(src,reviver,options){let _reviver;typeof reviver=="function"?_reviver=reviver:options===void 0&&reviver&&typeof reviver=="object"&&(options=reviver);let doc=parseDocument(src,options);if(!doc)return null;if(doc.warnings.forEach(warning=>log2.warn(doc.options.logLevel,warning)),doc.errors.length>0){if(doc.options.logLevel!=="silent")throw doc.errors[0];doc.errors=[]}return doc.toJS(Object.assign({reviver:_reviver},options))}function stringify(value,replacer,options){let _replacer=null;if(typeof replacer=="function"||Array.isArray(replacer)?_replacer=replacer:options===void 0&&replacer&&(options=replacer),typeof options=="string"&&(options=options.length),typeof options=="number"){let indent=Math.round(options);options=indent<1?void 0:indent>8?{indent:8}:{indent}}if(value===void 0){let{keepUndefined}=options??replacer??{};if(!keepUndefined)return}return identity.isDocument(value)&&!_replacer?value.toString(options):new Document.Document(value,_replacer,options).toString(options)}exports.parse=parse3;exports.parseAllDocuments=parseAllDocuments;exports.parseDocument=parseDocument;exports.stringify=stringify}});var require_dist2=__commonJS({"../node_modules/yaml/dist/index.js"(exports){"use strict";var composer=require_composer(),Document=require_Document(),Schema=require_Schema(),errors=require_errors2(),Alias=require_Alias(),identity=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit=require_visit();exports.Composer=composer.Composer;exports.Document=Document.Document;exports.Schema=Schema.Schema;exports.YAMLError=errors.YAMLError;exports.YAMLParseError=errors.YAMLParseError;exports.YAMLWarning=errors.YAMLWarning;exports.Alias=Alias.Alias;exports.isAlias=identity.isAlias;exports.isCollection=identity.isCollection;exports.isDocument=identity.isDocument;exports.isMap=identity.isMap;exports.isNode=identity.isNode;exports.isPair=identity.isPair;exports.isScalar=identity.isScalar;exports.isSeq=identity.isSeq;exports.Pair=Pair.Pair;exports.Scalar=Scalar.Scalar;exports.YAMLMap=YAMLMap.YAMLMap;exports.YAMLSeq=YAMLSeq.YAMLSeq;exports.CST=cst;exports.Lexer=lexer.Lexer;exports.LineCounter=lineCounter.LineCounter;exports.Parser=parser.Parser;exports.parse=publicApi.parse;exports.parseAllDocuments=publicApi.parseAllDocuments;exports.parseDocument=publicApi.parseDocument;exports.stringify=publicApi.stringify;exports.visit=visit.visit;exports.visitAsync=visit.visitAsync}});var LEVEL_ORDER={debug:0,info:1,warn:2,error:3},minLevel="info",format="text";function configureLogger(opts){minLevel=opts.level in LEVEL_ORDER?opts.level:"info",format=opts.format==="json"?"json":"text"}function emit(level,msg,fields){if(LEVEL_ORDER[level]<LEVEL_ORDER[minLevel])return;if(format==="json"){process.stderr.write(JSON.stringify({level,msg,...fields})+`
|
|
150
150
|
`);return}let suffix=fields?" "+Object.entries(fields).map(([k,v])=>`${k}=${typeof v=="string"?v:JSON.stringify(v)}`).join(" "):"";process.stderr.write(`${level.toUpperCase()} ${msg}${suffix}
|
|
151
|
-
`)}var log={debug:(msg,fields)=>emit("debug",msg,fields),info:(msg,fields)=>emit("info",msg,fields),warn:(msg,fields)=>emit("warn",msg,fields),error:(msg,fields)=>emit("error",msg,fields)};var VALID_TRANSPORTS=["stdio","http","both"],VALID_ROSTERS=["full","records"],VALID_LOG_FORMATS=["text","json"],VALID_LOG_LEVELS=["debug","info","warn","error"];function loadConfigFromEnv(env=process.env){return{stigmerServerAddress:envOr(env,"STIGMER_SERVER_ADDRESS","localhost:7234"),apiKey:env.STIGMER_API_KEY??"",transport:envOr(env,"STIGMER_MCP_TRANSPORT","stdio").toLowerCase(),roster:envOr(env,"STIGMER_MCP_ROSTER","full").toLowerCase(),httpPort:envOr(env,"STIGMER_MCP_HTTP_PORT","8080"),httpAuthEnabled:envOr(env,"STIGMER_MCP_HTTP_AUTH_ENABLED","true")==="true",oauth:{enabled:env.STIGMER_MCP_OAUTH_ENABLED==="true",resource:(env.STIGMER_MCP_OAUTH_RESOURCE??"").trim(),authorizationServers:splitList(env.STIGMER_MCP_OAUTH_AUTHORIZATION_SERVERS),scopesSupported:splitList(env.STIGMER_MCP_OAUTH_SCOPES_SUPPORTED)},logFormat:envOr(env,"STIGMER_MCP_LOG_FORMAT","text").toLowerCase(),logLevel:envOr(env,"STIGMER_MCP_LOG_LEVEL","info").toLowerCase()}}function validateConfig(cfg){if(!VALID_TRANSPORTS.includes(cfg.transport))throw new Error(`invalid STIGMER_MCP_TRANSPORT "${cfg.transport}": must be stdio, http, or both`);if(!VALID_ROSTERS.includes(cfg.roster))throw new Error(`invalid STIGMER_MCP_ROSTER "${cfg.roster}": must be full or records`);if(cfg.stigmerServerAddress==="")throw new Error("STIGMER_SERVER_ADDRESS must not be empty");if(cfg.stigmerServerAddress.includes("://")?log.warn("STIGMER_SERVER_ADDRESS contains a URL scheme; gRPC targets are host:port \u2014 the scheme is informational and TLS is derived from the port",{value:cfg.stigmerServerAddress}):hasExplicitPort(cfg.stigmerServerAddress)||log.warn("STIGMER_SERVER_ADDRESS has no explicit port; :443 with TLS is assumed for non-loopback addresses",{value:cfg.stigmerServerAddress}),!VALID_LOG_FORMATS.includes(cfg.logFormat))throw new Error(`invalid STIGMER_MCP_LOG_FORMAT "${cfg.logFormat}": must be text or json`);if(!VALID_LOG_LEVELS.includes(cfg.logLevel))throw new Error(`invalid STIGMER_MCP_LOG_LEVEL "${cfg.logLevel}": must be debug, info, warn, or error`);if(cfg.oauth.enabled){if(cfg.oauth.resource==="")throw new Error("STIGMER_MCP_OAUTH_RESOURCE must be set when STIGMER_MCP_OAUTH_ENABLED is true");if(cfg.oauth.authorizationServers.length===0)throw new Error("STIGMER_MCP_OAUTH_AUTHORIZATION_SERVERS must list at least one issuer when STIGMER_MCP_OAUTH_ENABLED is true")}}function envOr(env,key,fallback){let v=env[key];return v!==void 0&&v!==""?v:fallback}function splitList(raw){return!raw||raw.trim()===""?[]:raw.split(",").map(p=>p.trim()).filter(p=>p!=="")}function hasExplicitPort(authority){if(authority.startsWith("[")){let close=authority.indexOf("]");return close!==-1&&authority.slice(close+1).startsWith(":")}let lastColon=authority.lastIndexOf(":");return lastColon!==-1&&authority.indexOf(":")===lastColon}import{createServer as createHttpServer}from"node:http";import{randomBytes,randomUUID}from"node:crypto";var external_exports={};__export(external_exports,{BRAND:()=>BRAND,DIRTY:()=>DIRTY,EMPTY_PATH:()=>EMPTY_PATH,INVALID:()=>INVALID,NEVER:()=>NEVER,OK:()=>OK,ParseStatus:()=>ParseStatus,Schema:()=>ZodType,ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBigInt:()=>ZodBigInt,ZodBoolean:()=>ZodBoolean,ZodBranded:()=>ZodBranded,ZodCatch:()=>ZodCatch,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodEffects:()=>ZodEffects,ZodEnum:()=>ZodEnum,ZodError:()=>ZodError,ZodFirstPartyTypeKind:()=>ZodFirstPartyTypeKind,ZodFunction:()=>ZodFunction,ZodIntersection:()=>ZodIntersection,ZodIssueCode:()=>ZodIssueCode,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNativeEnum:()=>ZodNativeEnum,ZodNever:()=>ZodNever,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodParsedType:()=>ZodParsedType,ZodPipeline:()=>ZodPipeline,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRecord:()=>ZodRecord,ZodSchema:()=>ZodType,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodSymbol:()=>ZodSymbol,ZodTransformer:()=>ZodEffects,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,addIssueToContext:()=>addIssueToContext,any:()=>anyType,array:()=>arrayType,bigint:()=>bigIntType,boolean:()=>booleanType,coerce:()=>coerce,custom:()=>custom,date:()=>dateType,datetimeRegex:()=>datetimeRegex,defaultErrorMap:()=>en_default,discriminatedUnion:()=>discriminatedUnionType,effect:()=>effectsType,enum:()=>enumType,function:()=>functionType,getErrorMap:()=>getErrorMap,getParsedType:()=>getParsedType,instanceof:()=>instanceOfType,intersection:()=>intersectionType,isAborted:()=>isAborted,isAsync:()=>isAsync,isDirty:()=>isDirty,isValid:()=>isValid,late:()=>late,lazy:()=>lazyType,literal:()=>literalType,makeIssue:()=>makeIssue,map:()=>mapType,nan:()=>nanType,nativeEnum:()=>nativeEnumType,never:()=>neverType,null:()=>nullType,nullable:()=>nullableType,number:()=>numberType,object:()=>objectType,objectUtil:()=>objectUtil,oboolean:()=>oboolean,onumber:()=>onumber,optional:()=>optionalType,ostring:()=>ostring,pipeline:()=>pipelineType,preprocess:()=>preprocessType,promise:()=>promiseType,quotelessJson:()=>quotelessJson,record:()=>recordType,set:()=>setType,setErrorMap:()=>setErrorMap,strictObject:()=>strictObjectType,string:()=>stringType,symbol:()=>symbolType,transformer:()=>effectsType,tuple:()=>tupleType,undefined:()=>undefinedType,union:()=>unionType,unknown:()=>unknownType,util:()=>util,void:()=>voidType});var util;(function(util2){util2.assertEqual=_=>{};function assertIs2(_arg){}util2.assertIs=assertIs2;function assertNever2(_x){throw new Error}util2.assertNever=assertNever2,util2.arrayToEnum=items=>{let obj={};for(let item of items)obj[item]=item;return obj},util2.getValidEnumValues=obj=>{let validKeys=util2.objectKeys(obj).filter(k=>typeof obj[obj[k]]!="number"),filtered={};for(let k of validKeys)filtered[k]=obj[k];return util2.objectValues(filtered)},util2.objectValues=obj=>util2.objectKeys(obj).map(function(e){return obj[e]}),util2.objectKeys=typeof Object.keys=="function"?obj=>Object.keys(obj):object3=>{let keys=[];for(let key in object3)Object.prototype.hasOwnProperty.call(object3,key)&&keys.push(key);return keys},util2.find=(arr,checker)=>{for(let item of arr)if(checker(item))return item},util2.isInteger=typeof Number.isInteger=="function"?val=>Number.isInteger(val):val=>typeof val=="number"&&Number.isFinite(val)&&Math.floor(val)===val;function joinValues2(array2,separator=" | "){return array2.map(val=>typeof val=="string"?`'${val}'`:val).join(separator)}util2.joinValues=joinValues2,util2.jsonStringifyReplacer=(_,value)=>typeof value=="bigint"?value.toString():value})(util||(util={}));var objectUtil;(function(objectUtil2){objectUtil2.mergeShapes=(first,second)=>({...first,...second})})(objectUtil||(objectUtil={}));var ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType=data=>{switch(typeof data){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return Number.isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":return Array.isArray(data)?ZodParsedType.array:data===null?ZodParsedType.null:data.then&&typeof data.then=="function"&&data.catch&&typeof data.catch=="function"?ZodParsedType.promise:typeof Map<"u"&&data instanceof Map?ZodParsedType.map:typeof Set<"u"&&data instanceof Set?ZodParsedType.set:typeof Date<"u"&&data instanceof Date?ZodParsedType.date:ZodParsedType.object;default:return ZodParsedType.unknown}};var ZodIssueCode=util.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"]),quotelessJson=obj=>JSON.stringify(obj,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError=class _ZodError extends Error{get errors(){return this.issues}constructor(issues){super(),this.issues=[],this.addIssue=sub=>{this.issues=[...this.issues,sub]},this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};let actualProto=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,actualProto):this.__proto__=actualProto,this.name="ZodError",this.issues=issues}format(_mapper){let mapper=_mapper||function(issue2){return issue2.message},fieldErrors={_errors:[]},processError=error3=>{for(let issue2 of error3.issues)if(issue2.code==="invalid_union")issue2.unionErrors.map(processError);else if(issue2.code==="invalid_return_type")processError(issue2.returnTypeError);else if(issue2.code==="invalid_arguments")processError(issue2.argumentsError);else if(issue2.path.length===0)fieldErrors._errors.push(mapper(issue2));else{let curr=fieldErrors,i=0;for(;i<issue2.path.length;){let el=issue2.path[i];i===issue2.path.length-1?(curr[el]=curr[el]||{_errors:[]},curr[el]._errors.push(mapper(issue2))):curr[el]=curr[el]||{_errors:[]},curr=curr[el],i++}}};return processError(this),fieldErrors}static assert(value){if(!(value instanceof _ZodError))throw new Error(`Not a ZodError: ${value}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(mapper=issue2=>issue2.message){let fieldErrors={},formErrors=[];for(let sub of this.issues)if(sub.path.length>0){let firstEl=sub.path[0];fieldErrors[firstEl]=fieldErrors[firstEl]||[],fieldErrors[firstEl].push(mapper(sub))}else formErrors.push(mapper(sub));return{formErrors,fieldErrors}}get formErrors(){return this.flatten()}};ZodError.create=issues=>new ZodError(issues);var errorMap=(issue2,_ctx)=>{let message;switch(issue2.code){case ZodIssueCode.invalid_type:issue2.received===ZodParsedType.undefined?message="Required":message=`Expected ${issue2.expected}, received ${issue2.received}`;break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue2.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue2.keys,", ")}`;break;case ZodIssueCode.invalid_union:message="Invalid input";break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue2.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue2.options)}, received '${issue2.received}'`;break;case ZodIssueCode.invalid_arguments:message="Invalid function arguments";break;case ZodIssueCode.invalid_return_type:message="Invalid function return type";break;case ZodIssueCode.invalid_date:message="Invalid date";break;case ZodIssueCode.invalid_string:typeof issue2.validation=="object"?"includes"in issue2.validation?(message=`Invalid input: must include "${issue2.validation.includes}"`,typeof issue2.validation.position=="number"&&(message=`${message} at one or more positions greater than or equal to ${issue2.validation.position}`)):"startsWith"in issue2.validation?message=`Invalid input: must start with "${issue2.validation.startsWith}"`:"endsWith"in issue2.validation?message=`Invalid input: must end with "${issue2.validation.endsWith}"`:util.assertNever(issue2.validation):issue2.validation!=="regex"?message=`Invalid ${issue2.validation}`:message="Invalid";break;case ZodIssueCode.too_small:issue2.type==="array"?message=`Array must contain ${issue2.exact?"exactly":issue2.inclusive?"at least":"more than"} ${issue2.minimum} element(s)`:issue2.type==="string"?message=`String must contain ${issue2.exact?"exactly":issue2.inclusive?"at least":"over"} ${issue2.minimum} character(s)`:issue2.type==="number"?message=`Number must be ${issue2.exact?"exactly equal to ":issue2.inclusive?"greater than or equal to ":"greater than "}${issue2.minimum}`:issue2.type==="bigint"?message=`Number must be ${issue2.exact?"exactly equal to ":issue2.inclusive?"greater than or equal to ":"greater than "}${issue2.minimum}`:issue2.type==="date"?message=`Date must be ${issue2.exact?"exactly equal to ":issue2.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(issue2.minimum))}`:message="Invalid input";break;case ZodIssueCode.too_big:issue2.type==="array"?message=`Array must contain ${issue2.exact?"exactly":issue2.inclusive?"at most":"less than"} ${issue2.maximum} element(s)`:issue2.type==="string"?message=`String must contain ${issue2.exact?"exactly":issue2.inclusive?"at most":"under"} ${issue2.maximum} character(s)`:issue2.type==="number"?message=`Number must be ${issue2.exact?"exactly":issue2.inclusive?"less than or equal to":"less than"} ${issue2.maximum}`:issue2.type==="bigint"?message=`BigInt must be ${issue2.exact?"exactly":issue2.inclusive?"less than or equal to":"less than"} ${issue2.maximum}`:issue2.type==="date"?message=`Date must be ${issue2.exact?"exactly":issue2.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(issue2.maximum))}`:message="Invalid input";break;case ZodIssueCode.custom:message="Invalid input";break;case ZodIssueCode.invalid_intersection_types:message="Intersection results could not be merged";break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue2.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError,util.assertNever(issue2)}return{message}},en_default=errorMap;var overrideErrorMap=en_default;function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}var makeIssue=params=>{let{data,path,errorMaps,issueData}=params,fullPath=[...path,...issueData.path||[]],fullIssue={...issueData,path:fullPath};if(issueData.message!==void 0)return{...issueData,path:fullPath,message:issueData.message};let errorMessage="",maps=errorMaps.filter(m=>!!m).slice().reverse();for(let map of maps)errorMessage=map(fullIssue,{data,defaultError:errorMessage}).message;return{...issueData,path:fullPath,message:errorMessage}},EMPTY_PATH=[];function addIssueToContext(ctx,issueData){let overrideMap=getErrorMap(),issue2=makeIssue({issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===en_default?void 0:en_default].filter(x=>!!x)});ctx.common.issues.push(issue2)}var ParseStatus=class _ParseStatus{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(status,results){let arrayValue=[];for(let s of results){if(s.status==="aborted")return INVALID;s.status==="dirty"&&status.dirty(),arrayValue.push(s.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs){let syncPairs=[];for(let pair of pairs){let key=await pair.key,value=await pair.value;syncPairs.push({key,value})}return _ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs){let finalObject={};for(let pair of pairs){let{key,value}=pair;if(key.status==="aborted"||value.status==="aborted")return INVALID;key.status==="dirty"&&status.dirty(),value.status==="dirty"&&status.dirty(),key.value!=="__proto__"&&(typeof value.value<"u"||pair.alwaysSet)&&(finalObject[key.value]=value.value)}return{status:status.value,value:finalObject}}},INVALID=Object.freeze({status:"aborted"}),DIRTY=value=>({status:"dirty",value}),OK=value=>({status:"valid",value}),isAborted=x=>x.status==="aborted",isDirty=x=>x.status==="dirty",isValid=x=>x.status==="valid",isAsync=x=>typeof Promise<"u"&&x instanceof Promise;var errorUtil;(function(errorUtil2){errorUtil2.errToObj=message=>typeof message=="string"?{message}:message||{},errorUtil2.toString=message=>typeof message=="string"?message:message?.message})(errorUtil||(errorUtil={}));var ParseInputLazyPath=class{constructor(parent,value,path,key){this._cachedPath=[],this.parent=parent,this.data=value,this._path=path,this._key=key}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},handleResult=(ctx,result)=>{if(isValid(result))return{success:!0,data:result.value};if(!ctx.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let error3=new ZodError(ctx.common.issues);return this._error=error3,this._error}}};function processCreateParams(params){if(!params)return{};let{errorMap:errorMap2,invalid_type_error,required_error,description}=params;if(errorMap2&&(invalid_type_error||required_error))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return errorMap2?{errorMap:errorMap2,description}:{errorMap:(iss,ctx)=>{let{message}=params;return iss.code==="invalid_enum_value"?{message:message??ctx.defaultError}:typeof ctx.data>"u"?{message:message??required_error??ctx.defaultError}:iss.code!=="invalid_type"?{message:ctx.defaultError}:{message:message??invalid_type_error??ctx.defaultError}},description}}var ZodType=class{get description(){return this._def.description}_getType(input){return getParsedType(input.data)}_getOrReturnCtx(input,ctx){return ctx||{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}_processInputParams(input){return{status:new ParseStatus,ctx:{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}}_parseSync(input){let result=this._parse(input);if(isAsync(result))throw new Error("Synchronous parse encountered promise.");return result}_parseAsync(input){let result=this._parse(input);return Promise.resolve(result)}parse(data,params){let result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){let ctx={common:{issues:[],async:params?.async??!1,contextualErrorMap:params?.errorMap},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},result=this._parseSync({data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}"~validate"(data){let ctx={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)};if(!this["~standard"].async)try{let result=this._parseSync({data,path:[],parent:ctx});return isValid(result)?{value:result.value}:{issues:ctx.common.issues}}catch(err){err?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),ctx.common={issues:[],async:!0}}return this._parseAsync({data,path:[],parent:ctx}).then(result=>isValid(result)?{value:result.value}:{issues:ctx.common.issues})}async parseAsync(data,params){let result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){let ctx={common:{issues:[],contextualErrorMap:params?.errorMap,async:!0},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},maybeAsyncResult=this._parse({data,path:ctx.path,parent:ctx}),result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check2,message){let getIssueProperties=val=>typeof message=="string"||typeof message>"u"?{message}:typeof message=="function"?message(val):message;return this._refinement((val,ctx)=>{let result=check2(val),setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});return typeof Promise<"u"&&result instanceof Promise?result.then(data=>data?!0:(setError(),!1)):result?!0:(setError(),!1)})}refinement(check2,refinementData){return this._refinement((val,ctx)=>check2(val)?!0:(ctx.addIssue(typeof refinementData=="function"?refinementData(val,ctx):refinementData),!1))}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement}})}superRefine(refinement){return this._refinement(refinement)}constructor(def){this.spa=this.safeParseAsync,this._def=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:data=>this["~validate"](data)}}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform2){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform2}})}default(def){let defaultValueFunc=typeof def=="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){let catchValueFunc=typeof def=="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){let This=this.constructor;return new This({...this._def,description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},cuidRegex=/^c[^\s-]{8,}$/i,cuid2Regex=/^[0-9a-z]+$/,ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/i,uuidRegex=/^[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,nanoidRegex=/^[a-z0-9_-]{21}$/i,jwtRegex=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,durationRegex=/^[-+]?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)?)??$/,emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",emojiRegex,ipv4Regex=/^(?:(?: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])$/,ipv4CidrRegex=/^(?:(?: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])$/,ipv6Regex=/^(([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]))$/,ipv6CidrRegex=/^(([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])$/,base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64urlRegex=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,dateRegexSource="((\\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])))",dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(args){let secondsRegexSource="[0-5]\\d";args.precision?secondsRegexSource=`${secondsRegexSource}\\.\\d{${args.precision}}`:args.precision==null&&(secondsRegexSource=`${secondsRegexSource}(\\.\\d+)?`);let secondsQuantifier=args.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`,opts=[];return opts.push(args.local?"Z?":"Z"),args.offset&&opts.push("([+-]\\d{2}:?\\d{2})"),regex=`${regex}(${opts.join("|")})`,new RegExp(`^${regex}$`)}function isValidIP(ip,version2){return!!((version2==="v4"||!version2)&&ipv4Regex.test(ip)||(version2==="v6"||!version2)&&ipv6Regex.test(ip))}function isValidJWT(jwt,alg){if(!jwtRegex.test(jwt))return!1;try{let[header]=jwt.split(".");if(!header)return!1;let base642=header.replace(/-/g,"+").replace(/_/g,"/").padEnd(header.length+(4-header.length%4)%4,"="),decoded=JSON.parse(atob(base642));return!(typeof decoded!="object"||decoded===null||"typ"in decoded&&decoded?.typ!=="JWT"||!decoded.alg||alg&&decoded.alg!==alg)}catch{return!1}}function isValidCidr(ip,version2){return!!((version2==="v4"||!version2)&&ipv4CidrRegex.test(ip)||(version2==="v6"||!version2)&&ipv6CidrRegex.test(ip))}var ZodString=class _ZodString2 extends ZodType{_parse(input){if(this._def.coerce&&(input.data=String(input.data)),this._getType(input)!==ZodParsedType.string){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx2.parsedType}),INVALID}let status=new ParseStatus,ctx;for(let check2 of this._def.checks)if(check2.kind==="min")input.data.length<check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check2.value,type:"string",inclusive:!0,exact:!1,message:check2.message}),status.dirty());else if(check2.kind==="max")input.data.length>check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check2.value,type:"string",inclusive:!0,exact:!1,message:check2.message}),status.dirty());else if(check2.kind==="length"){let tooBig=input.data.length>check2.value,tooSmall=input.data.length<check2.value;(tooBig||tooSmall)&&(ctx=this._getOrReturnCtx(input,ctx),tooBig?addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check2.value,type:"string",inclusive:!0,exact:!0,message:check2.message}):tooSmall&&addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check2.value,type:"string",inclusive:!0,exact:!0,message:check2.message}),status.dirty())}else if(check2.kind==="email")emailRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"email",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="emoji")emojiRegex||(emojiRegex=new RegExp(_emojiRegex,"u")),emojiRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"emoji",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="uuid")uuidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"uuid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="nanoid")nanoidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"nanoid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="cuid")cuidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"cuid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="cuid2")cuid2Regex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"cuid2",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="ulid")ulidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"ulid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="url")try{new URL(input.data)}catch{ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"url",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()}else check2.kind==="regex"?(check2.regex.lastIndex=0,check2.regex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"regex",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty())):check2.kind==="trim"?input.data=input.data.trim():check2.kind==="includes"?input.data.includes(check2.value,check2.position)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{includes:check2.value,position:check2.position},message:check2.message}),status.dirty()):check2.kind==="toLowerCase"?input.data=input.data.toLowerCase():check2.kind==="toUpperCase"?input.data=input.data.toUpperCase():check2.kind==="startsWith"?input.data.startsWith(check2.value)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{startsWith:check2.value},message:check2.message}),status.dirty()):check2.kind==="endsWith"?input.data.endsWith(check2.value)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{endsWith:check2.value},message:check2.message}),status.dirty()):check2.kind==="datetime"?datetimeRegex(check2).test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"datetime",message:check2.message}),status.dirty()):check2.kind==="date"?dateRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"date",message:check2.message}),status.dirty()):check2.kind==="time"?timeRegex(check2).test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"time",message:check2.message}),status.dirty()):check2.kind==="duration"?durationRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"duration",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="ip"?isValidIP(input.data,check2.version)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"ip",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="jwt"?isValidJWT(input.data,check2.alg)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"jwt",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="cidr"?isValidCidr(input.data,check2.version)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"cidr",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="base64"?base64Regex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"base64",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="base64url"?base64urlRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"base64url",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):util.assertNever(check2);return{status:status.value,value:input.data}}_regex(regex,validation,message){return this.refinement(data=>regex.test(data),{validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check2){return new _ZodString2({...this._def,checks:[...this._def.checks,check2]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}base64url(message){return this._addCheck({kind:"base64url",...errorUtil.errToObj(message)})}jwt(options){return this._addCheck({kind:"jwt",...errorUtil.errToObj(options)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}cidr(options){return this._addCheck({kind:"cidr",...errorUtil.errToObj(options)})}datetime(options){return typeof options=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:options}):this._addCheck({kind:"datetime",precision:typeof options?.precision>"u"?null:options?.precision,offset:options?.offset??!1,local:options?.local??!1,...errorUtil.errToObj(options?.message)})}date(message){return this._addCheck({kind:"date",message})}time(options){return typeof options=="string"?this._addCheck({kind:"time",precision:null,message:options}):this._addCheck({kind:"time",precision:typeof options?.precision>"u"?null:options?.precision,...errorUtil.errToObj(options?.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value,position:options?.position,...errorUtil.errToObj(options?.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new _ZodString2({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new _ZodString2({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new _ZodString2({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch=>ch.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch=>ch.kind==="date")}get isTime(){return!!this._def.checks.find(ch=>ch.kind==="time")}get isDuration(){return!!this._def.checks.find(ch=>ch.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch=>ch.kind==="email")}get isURL(){return!!this._def.checks.find(ch=>ch.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch=>ch.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch=>ch.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch=>ch.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch=>ch.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch=>ch.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch=>ch.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch=>ch.kind==="ip")}get isCIDR(){return!!this._def.checks.find(ch=>ch.kind==="cidr")}get isBase64(){return!!this._def.checks.find(ch=>ch.kind==="base64")}get isBase64url(){return!!this._def.checks.find(ch=>ch.kind==="base64url")}get minLength(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min}get maxLength(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max}};ZodString.create=params=>new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:params?.coerce??!1,...processCreateParams(params)});function floatSafeRemainder(val,step){let valDecCount=(val.toString().split(".")[1]||"").length,stepDecCount=(step.toString().split(".")[1]||"").length,decCount=valDecCount>stepDecCount?valDecCount:stepDecCount,valInt=Number.parseInt(val.toFixed(decCount).replace(".","")),stepInt=Number.parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/10**decCount}var ZodNumber=class _ZodNumber extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(input){if(this._def.coerce&&(input.data=Number(input.data)),this._getType(input)!==ZodParsedType.number){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx2.parsedType}),INVALID}let ctx,status=new ParseStatus;for(let check2 of this._def.checks)check2.kind==="int"?util.isInteger(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check2.message}),status.dirty()):check2.kind==="min"?(check2.inclusive?input.data<check2.value:input.data<=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check2.value,type:"number",inclusive:check2.inclusive,exact:!1,message:check2.message}),status.dirty()):check2.kind==="max"?(check2.inclusive?input.data>check2.value:input.data>=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check2.value,type:"number",inclusive:check2.inclusive,exact:!1,message:check2.message}),status.dirty()):check2.kind==="multipleOf"?floatSafeRemainder(input.data,check2.value)!==0&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check2.value,message:check2.message}),status.dirty()):check2.kind==="finite"?Number.isFinite(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check2.message}),status.dirty()):util.assertNever(check2);return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodNumber({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check2){return new _ZodNumber({...this._def,checks:[...this._def.checks,check2]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min}get maxValue(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max}get isInt(){return!!this._def.checks.find(ch=>ch.kind==="int"||ch.kind==="multipleOf"&&util.isInteger(ch.value))}get isFinite(){let max=null,min=null;for(let ch of this._def.checks){if(ch.kind==="finite"||ch.kind==="int"||ch.kind==="multipleOf")return!0;ch.kind==="min"?(min===null||ch.value>min)&&(min=ch.value):ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value)}return Number.isFinite(min)&&Number.isFinite(max)}};ZodNumber.create=params=>new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:params?.coerce||!1,...processCreateParams(params)});var ZodBigInt=class _ZodBigInt extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(input){if(this._def.coerce)try{input.data=BigInt(input.data)}catch{return this._getInvalidInput(input)}if(this._getType(input)!==ZodParsedType.bigint)return this._getInvalidInput(input);let ctx,status=new ParseStatus;for(let check2 of this._def.checks)check2.kind==="min"?(check2.inclusive?input.data<check2.value:input.data<=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,type:"bigint",minimum:check2.value,inclusive:check2.inclusive,message:check2.message}),status.dirty()):check2.kind==="max"?(check2.inclusive?input.data>check2.value:input.data>=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check2.value,inclusive:check2.inclusive,message:check2.message}),status.dirty()):check2.kind==="multipleOf"?input.data%check2.value!==BigInt(0)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check2.value,message:check2.message}),status.dirty()):util.assertNever(check2);return{status:status.value,value:input.data}}_getInvalidInput(input){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType}),INVALID}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodBigInt({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check2){return new _ZodBigInt({...this._def,checks:[...this._def.checks,check2]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min}get maxValue(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max}};ZodBigInt.create=params=>new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:params?.coerce??!1,...processCreateParams(params)});var ZodBoolean=class extends ZodType{_parse(input){if(this._def.coerce&&(input.data=!!input.data),this._getType(input)!==ZodParsedType.boolean){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodBoolean.create=params=>new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:params?.coerce||!1,...processCreateParams(params)});var ZodDate=class _ZodDate extends ZodType{_parse(input){if(this._def.coerce&&(input.data=new Date(input.data)),this._getType(input)!==ZodParsedType.date){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx2.parsedType}),INVALID}if(Number.isNaN(input.data.getTime())){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_date}),INVALID}let status=new ParseStatus,ctx;for(let check2 of this._def.checks)check2.kind==="min"?input.data.getTime()<check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,message:check2.message,inclusive:!0,exact:!1,minimum:check2.value,type:"date"}),status.dirty()):check2.kind==="max"?input.data.getTime()>check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check2.message,inclusive:!0,exact:!1,maximum:check2.value,type:"date"}),status.dirty()):util.assertNever(check2);return{status:status.value,value:new Date(input.data.getTime())}}_addCheck(check2){return new _ZodDate({...this._def,checks:[...this._def.checks,check2]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min!=null?new Date(min):null}get maxDate(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max!=null?new Date(max):null}};ZodDate.create=params=>new ZodDate({checks:[],coerce:params?.coerce||!1,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)});var ZodSymbol=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.symbol){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodSymbol.create=params=>new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)});var ZodUndefined=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodUndefined.create=params=>new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)});var ZodNull=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.null){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodNull.create=params=>new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)});var ZodAny=class extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(input){return OK(input.data)}};ZodAny.create=params=>new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)});var ZodUnknown=class extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(input){return OK(input.data)}};ZodUnknown.create=params=>new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)});var ZodNever=class extends ZodType{_parse(input){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType}),INVALID}};ZodNever.create=params=>new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)});var ZodVoid=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodVoid.create=params=>new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)});var ZodArray=class _ZodArray extends ZodType{_parse(input){let{ctx,status}=this._processInputParams(input),def=this._def;if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(def.exactLength!==null){let tooBig=ctx.data.length>def.exactLength.value,tooSmall=ctx.data.length<def.exactLength.value;(tooBig||tooSmall)&&(addIssueToContext(ctx,{code:tooBig?ZodIssueCode.too_big:ZodIssueCode.too_small,minimum:tooSmall?def.exactLength.value:void 0,maximum:tooBig?def.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:def.exactLength.message}),status.dirty())}if(def.minLength!==null&&ctx.data.length<def.minLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minLength.value,type:"array",inclusive:!0,exact:!1,message:def.minLength.message}),status.dirty()),def.maxLength!==null&&ctx.data.length>def.maxLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:!0,exact:!1,message:def.maxLength.message}),status.dirty()),ctx.common.async)return Promise.all([...ctx.data].map((item,i)=>def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i)))).then(result2=>ParseStatus.mergeArray(status,result2));let result=[...ctx.data].map((item,i)=>def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i)));return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new _ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new _ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new _ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}};ZodArray.create=(schema,params)=>new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)});function deepPartialify(schema){if(schema instanceof ZodObject){let newShape={};for(let key in schema.shape){let fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else return schema instanceof ZodArray?new ZodArray({...schema._def,type:deepPartialify(schema.element)}):schema instanceof ZodOptional?ZodOptional.create(deepPartialify(schema.unwrap())):schema instanceof ZodNullable?ZodNullable.create(deepPartialify(schema.unwrap())):schema instanceof ZodTuple?ZodTuple.create(schema.items.map(item=>deepPartialify(item))):schema}var ZodObject=class _ZodObject extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let shape=this._def.shape(),keys=util.objectKeys(shape);return this._cached={shape,keys},this._cached}_parse(input){if(this._getType(input)!==ZodParsedType.object){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx2.parsedType}),INVALID}let{status,ctx}=this._processInputParams(input),{shape,keys:shapeKeys}=this._getCached(),extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip"))for(let key in ctx.data)shapeKeys.includes(key)||extraKeys.push(key);let pairs=[];for(let key of shapeKeys){let keyValidator=shape[key],value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){let unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough")for(let key of extraKeys)pairs.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}});else if(unknownKeys==="strict")extraKeys.length>0&&(addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys}),status.dirty());else if(unknownKeys!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let catchall=this._def.catchall;for(let key of extraKeys){let value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}return ctx.common.async?Promise.resolve().then(async()=>{let syncPairs=[];for(let pair of pairs){let key=await pair.key,value=await pair.value;syncPairs.push({key,value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>ParseStatus.mergeObjectSync(status,syncPairs)):ParseStatus.mergeObjectSync(status,pairs)}get shape(){return this._def.shape()}strict(message){return errorUtil.errToObj,new _ZodObject({...this._def,unknownKeys:"strict",...message!==void 0?{errorMap:(issue2,ctx)=>{let defaultError=this._def.errorMap?.(issue2,ctx).message??ctx.defaultError;return issue2.code==="unrecognized_keys"?{message:errorUtil.errToObj(message).message??defaultError}:{message:defaultError}}}:{}})}strip(){return new _ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new _ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new _ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){return new _ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject})}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new _ZodObject({...this._def,catchall:index})}pick(mask){let shape={};for(let key of util.objectKeys(mask))mask[key]&&this.shape[key]&&(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}omit(mask){let shape={};for(let key of util.objectKeys(this.shape))mask[key]||(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){let newShape={};for(let key of util.objectKeys(this.shape)){let fieldSchema=this.shape[key];mask&&!mask[key]?newShape[key]=fieldSchema:newShape[key]=fieldSchema.optional()}return new _ZodObject({...this._def,shape:()=>newShape})}required(mask){let newShape={};for(let key of util.objectKeys(this.shape))if(mask&&!mask[key])newShape[key]=this.shape[key];else{let newField2=this.shape[key];for(;newField2 instanceof ZodOptional;)newField2=newField2._def.innerType;newShape[key]=newField2}return new _ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}};ZodObject.create=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.strictCreate=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.lazycreate=(shape,params)=>new ZodObject({shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});var ZodUnion=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),options=this._def.options;function handleResults(results){for(let result of results)if(result.result.status==="valid")return result.result;for(let result of results)if(result.result.status==="dirty")return ctx.common.issues.push(...result.ctx.common.issues),result.result;let unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}if(ctx.common.async)return Promise.all(options.map(async option=>{let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults);{let dirty,issues=[];for(let option of options){let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null},result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid")return result;result.status==="dirty"&&!dirty&&(dirty={result,ctx:childCtx}),childCtx.common.issues.length&&issues.push(childCtx.common.issues)}if(dirty)return ctx.common.issues.push(...dirty.ctx.common.issues),dirty.result;let unionErrors=issues.map(issues2=>new ZodError(issues2));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}}get options(){return this._def.options}};ZodUnion.create=(types,params)=>new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)});var getDiscriminator=type=>type instanceof ZodLazy?getDiscriminator(type.schema):type instanceof ZodEffects?getDiscriminator(type.innerType()):type instanceof ZodLiteral?[type.value]:type instanceof ZodEnum?type.options:type instanceof ZodNativeEnum?util.objectValues(type.enum):type instanceof ZodDefault?getDiscriminator(type._def.innerType):type instanceof ZodUndefined?[void 0]:type instanceof ZodNull?[null]:type instanceof ZodOptional?[void 0,...getDiscriminator(type.unwrap())]:type instanceof ZodNullable?[null,...getDiscriminator(type.unwrap())]:type instanceof ZodBranded||type instanceof ZodReadonly?getDiscriminator(type.unwrap()):type instanceof ZodCatch?getDiscriminator(type._def.innerType):[],ZodDiscriminatedUnion=class _ZodDiscriminatedUnion extends ZodType{_parse(input){let{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let discriminator=this.discriminator,discriminatorValue=ctx.data[discriminator],option=this.optionsMap.get(discriminatorValue);return option?ctx.common.async?option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}):option._parseSync({data:ctx.data,path:ctx.path,parent:ctx}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]}),INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){let optionsMap=new Map;for(let type of options){let discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length)throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`);for(let value of discriminatorValues){if(optionsMap.has(value))throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);optionsMap.set(value,type)}}return new _ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator,options,optionsMap,...processCreateParams(params)})}};function mergeValues(a,b){let aType=getParsedType(a),bType=getParsedType(b);if(a===b)return{valid:!0,data:a};if(aType===ZodParsedType.object&&bType===ZodParsedType.object){let bKeys=util.objectKeys(b),sharedKeys=util.objectKeys(a).filter(key=>bKeys.indexOf(key)!==-1),newObj={...a,...b};for(let key of sharedKeys){let sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid)return{valid:!1};newObj[key]=sharedValue.data}return{valid:!0,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a.length!==b.length)return{valid:!1};let newArray=[];for(let index=0;index<a.length;index++){let itemA=a[index],itemB=b[index],sharedValue=mergeValues(itemA,itemB);if(!sharedValue.valid)return{valid:!1};newArray.push(sharedValue.data)}return{valid:!0,data:newArray}}else return aType===ZodParsedType.date&&bType===ZodParsedType.date&&+a==+b?{valid:!0,data:a}:{valid:!1}}var ZodIntersection=class extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input),handleParsed=(parsedLeft,parsedRight)=>{if(isAborted(parsedLeft)||isAborted(parsedRight))return INVALID;let merged=mergeValues(parsedLeft.value,parsedRight.value);return merged.valid?((isDirty(parsedLeft)||isDirty(parsedRight))&&status.dirty(),{status:status.value,value:merged.data}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types}),INVALID)};return ctx.common.async?Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right)):handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}};ZodIntersection.create=(left,right,params)=>new ZodIntersection({left,right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)});var ZodTuple=class _ZodTuple extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(ctx.data.length<this._def.items.length)return addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID;!this._def.rest&&ctx.data.length>this._def.items.length&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),status.dirty());let items=[...ctx.data].map((item,itemIndex)=>{let schema=this._def.items[itemIndex]||this._def.rest;return schema?schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex)):null}).filter(x=>!!x);return ctx.common.async?Promise.all(items).then(results=>ParseStatus.mergeArray(status,results)):ParseStatus.mergeArray(status,items)}get items(){return this._def.items}rest(rest){return new _ZodTuple({...this._def,rest})}};ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};var ZodRecord=class _ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let pairs=[],keyType=this._def.keyType,valueType=this._def.valueType;for(let key in ctx.data)pairs.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data});return ctx.common.async?ParseStatus.mergeObjectAsync(status,pairs):ParseStatus.mergeObjectSync(status,pairs)}get element(){return this._def.valueType}static create(first,second,third){return second instanceof ZodType?new _ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)}):new _ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}},ZodMap=class extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.map)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType}),INVALID;let keyType=this._def.keyType,valueType=this._def.valueType,pairs=[...ctx.data.entries()].map(([key,value],index)=>({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}));if(ctx.common.async){let finalMap=new Map;return Promise.resolve().then(async()=>{for(let pair of pairs){let key=await pair.key,value=await pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{let finalMap=new Map;for(let pair of pairs){let key=pair.key,value=pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}};ZodMap.create=(keyType,valueType,params)=>new ZodMap({valueType,keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)});var ZodSet=class _ZodSet extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.set)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType}),INVALID;let def=this._def;def.minSize!==null&&ctx.data.size<def.minSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minSize.value,type:"set",inclusive:!0,exact:!1,message:def.minSize.message}),status.dirty()),def.maxSize!==null&&ctx.data.size>def.maxSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:!0,exact:!1,message:def.maxSize.message}),status.dirty());let valueType=this._def.valueType;function finalizeSet(elements2){let parsedSet=new Set;for(let element of elements2){if(element.status==="aborted")return INVALID;element.status==="dirty"&&status.dirty(),parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}let elements=[...ctx.data.values()].map((item,i)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i)));return ctx.common.async?Promise.all(elements).then(elements2=>finalizeSet(elements2)):finalizeSet(elements)}min(minSize,message){return new _ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new _ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size,message){return this.min(size,message).max(size,message)}nonempty(message){return this.min(1,message)}};ZodSet.create=(valueType,params)=>new ZodSet({valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)});var ZodFunction=class _ZodFunction extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(input){let{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.function)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType}),INVALID;function makeArgsIssue(args,error3){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error3}})}function makeReturnsIssue(returns,error3){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error3}})}let params={errorMap:ctx.common.contextualErrorMap},fn=ctx.data;if(this._def.returns instanceof ZodPromise){let me=this;return OK(async function(...args){let error3=new ZodError([]),parsedArgs=await me._def.args.parseAsync(args,params).catch(e=>{throw error3.addIssue(makeArgsIssue(args,e)),error3}),result=await Reflect.apply(fn,this,parsedArgs);return await me._def.returns._def.type.parseAsync(result,params).catch(e=>{throw error3.addIssue(makeReturnsIssue(result,e)),error3})})}else{let me=this;return OK(function(...args){let parsedArgs=me._def.args.safeParse(args,params);if(!parsedArgs.success)throw new ZodError([makeArgsIssue(args,parsedArgs.error)]);let result=Reflect.apply(fn,this,parsedArgs.data),parsedReturns=me._def.returns.safeParse(result,params);if(!parsedReturns.success)throw new ZodError([makeReturnsIssue(result,parsedReturns.error)]);return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new _ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new _ZodFunction({...this._def,returns:returnType})}implement(func){return this.parse(func)}strictImplement(func){return this.parse(func)}static create(args,returns,params){return new _ZodFunction({args:args||ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}},ZodLazy=class extends ZodType{get schema(){return this._def.getter()}_parse(input){let{ctx}=this._processInputParams(input);return this._def.getter()._parse({data:ctx.data,path:ctx.path,parent:ctx})}};ZodLazy.create=(getter,params)=>new ZodLazy({getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)});var ZodLiteral=class extends ZodType{_parse(input){if(input.data!==this._def.value){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value}),INVALID}return{status:"valid",value:input.data}}get value(){return this._def.value}};ZodLiteral.create=(value,params)=>new ZodLiteral({value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)});function createZodEnum(values,params){return new ZodEnum({values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}var ZodEnum=class _ZodEnum extends ZodType{_parse(input){if(typeof input.data!="string"){let ctx=this._getOrReturnCtx(input),expectedValues=this._def.values;return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(input.data)){let ctx=this._getOrReturnCtx(input),expectedValues=this._def.values;return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input.data)}get options(){return this._def.values}get enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Values(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}extract(values,newDef=this._def){return _ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return _ZodEnum.create(this.options.filter(opt=>!values.includes(opt)),{...this._def,...newDef})}};ZodEnum.create=createZodEnum;var ZodNativeEnum=class extends ZodType{_parse(input){let nativeEnumValues=util.getValidEnumValues(this._def.values),ctx=this._getOrReturnCtx(input);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(util.getValidEnumValues(this._def.values))),!this._cache.has(input.data)){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input.data)}get enum(){return this._def.values}};ZodNativeEnum.create=(values,params)=>new ZodNativeEnum({values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)});var ZodPromise=class extends ZodType{unwrap(){return this._def.type}_parse(input){let{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===!1)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType}),INVALID;let promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})))}};ZodPromise.create=(schema,params)=>new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)});var ZodEffects=class extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input){let{status,ctx}=this._processInputParams(input),effect=this._def.effect||null,checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg),arg.fatal?status.abort():status.dirty()},get path(){return ctx.path}};if(checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx),effect.type==="preprocess"){let processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async)return Promise.resolve(processed).then(async processed2=>{if(status.value==="aborted")return INVALID;let result=await this._def.schema._parseAsync({data:processed2,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result});{if(status.value==="aborted")return INVALID;let result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result}}if(effect.type==="refinement"){let executeRefinement=acc=>{let result=effect.refinement(acc,checkCtx);if(ctx.common.async)return Promise.resolve(result);if(result instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return acc};if(ctx.common.async===!1){let inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value),{status:status.value,value:inner.value})}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value).then(()=>({status:status.value,value:inner.value}))))}if(effect.type==="transform")if(ctx.common.async===!1){let base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return INVALID;let result=effect.transform(base.value,checkCtx);if(result instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:status.value,value:result}}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>isValid(base)?Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result})):INVALID);util.assertNever(effect)}};ZodEffects.create=(schema,effect,params)=>new ZodEffects({schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect,...processCreateParams(params)});ZodEffects.createWithPreprocess=(preprocess2,schema,params)=>new ZodEffects({schema,effect:{type:"preprocess",transform:preprocess2},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)});var ZodOptional=class extends ZodType{_parse(input){return this._getType(input)===ZodParsedType.undefined?OK(void 0):this._def.innerType._parse(input)}unwrap(){return this._def.innerType}};ZodOptional.create=(type,params)=>new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)});var ZodNullable=class extends ZodType{_parse(input){return this._getType(input)===ZodParsedType.null?OK(null):this._def.innerType._parse(input)}unwrap(){return this._def.innerType}};ZodNullable.create=(type,params)=>new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)});var ZodDefault=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),data=ctx.data;return ctx.parsedType===ZodParsedType.undefined&&(data=this._def.defaultValue()),this._def.innerType._parse({data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}};ZodDefault.create=(type,params)=>new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default=="function"?params.default:()=>params.default,...processCreateParams(params)});var ZodCatch=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),newCtx={...ctx,common:{...ctx.common,issues:[]}},result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});return isAsync(result)?result.then(result2=>({status:"valid",value:result2.status==="valid"?result2.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})})):{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}removeCatch(){return this._def.innerType}};ZodCatch.create=(type,params)=>new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch=="function"?params.catch:()=>params.catch,...processCreateParams(params)});var ZodNaN=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.nan){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType}),INVALID}return{status:"valid",value:input.data}}};ZodNaN.create=params=>new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)});var BRAND=Symbol("zod_brand"),ZodBranded=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),data=ctx.data;return this._def.type._parse({data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}},ZodPipeline=class _ZodPipeline extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.common.async)return(async()=>{let inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),DIRTY(inResult.value)):this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})})();{let inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),{status:"dirty",value:inResult.value}):this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}static create(a,b){return new _ZodPipeline({in:a,out:b,typeName:ZodFirstPartyTypeKind.ZodPipeline})}},ZodReadonly=class extends ZodType{_parse(input){let result=this._def.innerType._parse(input),freeze=data=>(isValid(data)&&(data.value=Object.freeze(data.value)),data);return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}};ZodReadonly.create=(type,params)=>new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)});function cleanParams(params,data){let p=typeof params=="function"?params(data):typeof params=="string"?{message:params}:params;return typeof p=="string"?{message:p}:p}function custom(check2,_params={},fatal){return check2?ZodAny.create().superRefine((data,ctx)=>{let r=check2(data);if(r instanceof Promise)return r.then(r2=>{if(!r2){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}});if(!r){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}}):ZodAny.create()}var late={object:ZodObject.lazycreate},ZodFirstPartyTypeKind;(function(ZodFirstPartyTypeKind2){ZodFirstPartyTypeKind2.ZodString="ZodString",ZodFirstPartyTypeKind2.ZodNumber="ZodNumber",ZodFirstPartyTypeKind2.ZodNaN="ZodNaN",ZodFirstPartyTypeKind2.ZodBigInt="ZodBigInt",ZodFirstPartyTypeKind2.ZodBoolean="ZodBoolean",ZodFirstPartyTypeKind2.ZodDate="ZodDate",ZodFirstPartyTypeKind2.ZodSymbol="ZodSymbol",ZodFirstPartyTypeKind2.ZodUndefined="ZodUndefined",ZodFirstPartyTypeKind2.ZodNull="ZodNull",ZodFirstPartyTypeKind2.ZodAny="ZodAny",ZodFirstPartyTypeKind2.ZodUnknown="ZodUnknown",ZodFirstPartyTypeKind2.ZodNever="ZodNever",ZodFirstPartyTypeKind2.ZodVoid="ZodVoid",ZodFirstPartyTypeKind2.ZodArray="ZodArray",ZodFirstPartyTypeKind2.ZodObject="ZodObject",ZodFirstPartyTypeKind2.ZodUnion="ZodUnion",ZodFirstPartyTypeKind2.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ZodFirstPartyTypeKind2.ZodIntersection="ZodIntersection",ZodFirstPartyTypeKind2.ZodTuple="ZodTuple",ZodFirstPartyTypeKind2.ZodRecord="ZodRecord",ZodFirstPartyTypeKind2.ZodMap="ZodMap",ZodFirstPartyTypeKind2.ZodSet="ZodSet",ZodFirstPartyTypeKind2.ZodFunction="ZodFunction",ZodFirstPartyTypeKind2.ZodLazy="ZodLazy",ZodFirstPartyTypeKind2.ZodLiteral="ZodLiteral",ZodFirstPartyTypeKind2.ZodEnum="ZodEnum",ZodFirstPartyTypeKind2.ZodEffects="ZodEffects",ZodFirstPartyTypeKind2.ZodNativeEnum="ZodNativeEnum",ZodFirstPartyTypeKind2.ZodOptional="ZodOptional",ZodFirstPartyTypeKind2.ZodNullable="ZodNullable",ZodFirstPartyTypeKind2.ZodDefault="ZodDefault",ZodFirstPartyTypeKind2.ZodCatch="ZodCatch",ZodFirstPartyTypeKind2.ZodPromise="ZodPromise",ZodFirstPartyTypeKind2.ZodBranded="ZodBranded",ZodFirstPartyTypeKind2.ZodPipeline="ZodPipeline",ZodFirstPartyTypeKind2.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));var instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params),stringType=ZodString.create,numberType=ZodNumber.create,nanType=ZodNaN.create,bigIntType=ZodBigInt.create,booleanType=ZodBoolean.create,dateType=ZodDate.create,symbolType=ZodSymbol.create,undefinedType=ZodUndefined.create,nullType=ZodNull.create,anyType=ZodAny.create,unknownType=ZodUnknown.create,neverType=ZodNever.create,voidType=ZodVoid.create,arrayType=ZodArray.create,objectType=ZodObject.create,strictObjectType=ZodObject.strictCreate,unionType=ZodUnion.create,discriminatedUnionType=ZodDiscriminatedUnion.create,intersectionType=ZodIntersection.create,tupleType=ZodTuple.create,recordType=ZodRecord.create,mapType=ZodMap.create,setType=ZodSet.create,functionType=ZodFunction.create,lazyType=ZodLazy.create,literalType=ZodLiteral.create,enumType=ZodEnum.create,nativeEnumType=ZodNativeEnum.create,promiseType=ZodPromise.create,effectsType=ZodEffects.create,optionalType=ZodOptional.create,nullableType=ZodNullable.create,preprocessType=ZodEffects.createWithPreprocess,pipelineType=ZodPipeline.create,ostring=()=>stringType().optional(),onumber=()=>numberType().optional(),oboolean=()=>booleanType().optional(),coerce={string:(arg=>ZodString.create({...arg,coerce:!0})),number:(arg=>ZodNumber.create({...arg,coerce:!0})),boolean:(arg=>ZodBoolean.create({...arg,coerce:!0})),bigint:(arg=>ZodBigInt.create({...arg,coerce:!0})),date:(arg=>ZodDate.create({...arg,coerce:!0}))};var NEVER=INVALID;var NEVER2=Object.freeze({status:"aborted"});function $constructor(name,initializer3,params){function init(inst,def){var _a;Object.defineProperty(inst,"_zod",{value:inst._zod??{},enumerable:!1}),(_a=inst._zod).traits??(_a.traits=new Set),inst._zod.traits.add(name),initializer3(inst,def);for(let k in _.prototype)k in inst||Object.defineProperty(inst,k,{value:_.prototype[k].bind(inst)});inst._zod.constr=_,inst._zod.def=def}let Parent=params?.Parent??Object;class Definition extends Parent{}Object.defineProperty(Definition,"name",{value:name});function _(def){var _a;let inst=params?.Parent?new Definition:this;init(inst,def),(_a=inst._zod).deferred??(_a.deferred=[]);for(let fn of inst._zod.deferred)fn();return inst}return Object.defineProperty(_,"init",{value:init}),Object.defineProperty(_,Symbol.hasInstance,{value:inst=>params?.Parent&&inst instanceof params.Parent?!0:inst?._zod?.traits?.has(name)}),Object.defineProperty(_,"name",{value:name}),_}var $ZodAsyncError=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},globalConfig={};function config(newConfig){return newConfig&&Object.assign(globalConfig,newConfig),globalConfig}var util_exports={};__export(util_exports,{BIGINT_FORMAT_RANGES:()=>BIGINT_FORMAT_RANGES,Class:()=>Class,NUMBER_FORMAT_RANGES:()=>NUMBER_FORMAT_RANGES,aborted:()=>aborted,allowsEval:()=>allowsEval,assert:()=>assert,assertEqual:()=>assertEqual,assertIs:()=>assertIs,assertNever:()=>assertNever,assertNotEqual:()=>assertNotEqual,assignProp:()=>assignProp,cached:()=>cached,captureStackTrace:()=>captureStackTrace,cleanEnum:()=>cleanEnum,cleanRegex:()=>cleanRegex,clone:()=>clone,createTransparentProxy:()=>createTransparentProxy,defineLazy:()=>defineLazy,esc:()=>esc,escapeRegex:()=>escapeRegex,extend:()=>extend,finalizeIssue:()=>finalizeIssue,floatSafeRemainder:()=>floatSafeRemainder2,getElementAtPath:()=>getElementAtPath,getEnumValues:()=>getEnumValues,getLengthableOrigin:()=>getLengthableOrigin,getParsedType:()=>getParsedType2,getSizableOrigin:()=>getSizableOrigin,isObject:()=>isObject,isPlainObject:()=>isPlainObject,issue:()=>issue,joinValues:()=>joinValues,jsonStringifyReplacer:()=>jsonStringifyReplacer,merge:()=>merge,normalizeParams:()=>normalizeParams,nullish:()=>nullish,numKeys:()=>numKeys,omit:()=>omit,optionalKeys:()=>optionalKeys,partial:()=>partial,pick:()=>pick,prefixIssues:()=>prefixIssues,primitiveTypes:()=>primitiveTypes,promiseAllObject:()=>promiseAllObject,propertyKeyTypes:()=>propertyKeyTypes,randomString:()=>randomString,required:()=>required,stringifyPrimitive:()=>stringifyPrimitive,unwrapMessage:()=>unwrapMessage});function assertEqual(val){return val}function assertNotEqual(val){return val}function assertIs(_arg){}function assertNever(_x){throw new Error}function assert(_){}function getEnumValues(entries){let numericValues=Object.values(entries).filter(v=>typeof v=="number");return Object.entries(entries).filter(([k,_])=>numericValues.indexOf(+k)===-1).map(([_,v])=>v)}function joinValues(array2,separator="|"){return array2.map(val=>stringifyPrimitive(val)).join(separator)}function jsonStringifyReplacer(_,value){return typeof value=="bigint"?value.toString():value}function cached(getter){return{get value(){{let value=getter();return Object.defineProperty(this,"value",{value}),value}throw new Error("cached value already set")}}}function nullish(input){return input==null}function cleanRegex(source){let start=source.startsWith("^")?1:0,end=source.endsWith("$")?source.length-1:source.length;return source.slice(start,end)}function floatSafeRemainder2(val,step){let valDecCount=(val.toString().split(".")[1]||"").length,stepDecCount=(step.toString().split(".")[1]||"").length,decCount=valDecCount>stepDecCount?valDecCount:stepDecCount,valInt=Number.parseInt(val.toFixed(decCount).replace(".","")),stepInt=Number.parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/10**decCount}function defineLazy(object3,key,getter){Object.defineProperty(object3,key,{get(){{let value=getter();return object3[key]=value,value}throw new Error("cached value already set")},set(v){Object.defineProperty(object3,key,{value:v})},configurable:!0})}function assignProp(target,prop,value){Object.defineProperty(target,prop,{value,writable:!0,enumerable:!0,configurable:!0})}function getElementAtPath(obj,path){return path?path.reduce((acc,key)=>acc?.[key],obj):obj}function promiseAllObject(promisesObj){let keys=Object.keys(promisesObj),promises=keys.map(key=>promisesObj[key]);return Promise.all(promises).then(results=>{let resolvedObj={};for(let i=0;i<keys.length;i++)resolvedObj[keys[i]]=results[i];return resolvedObj})}function randomString(length=10){let chars="abcdefghijklmnopqrstuvwxyz",str="";for(let i=0;i<length;i++)str+=chars[Math.floor(Math.random()*chars.length)];return str}function esc(str){return JSON.stringify(str)}var captureStackTrace=Error.captureStackTrace?Error.captureStackTrace:(..._args)=>{};function isObject(data){return typeof data=="object"&&data!==null&&!Array.isArray(data)}var allowsEval=cached(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let F=Function;return new F(""),!0}catch{return!1}});function isPlainObject(o){if(isObject(o)===!1)return!1;let ctor=o.constructor;if(ctor===void 0)return!0;let prot=ctor.prototype;return!(isObject(prot)===!1||Object.prototype.hasOwnProperty.call(prot,"isPrototypeOf")===!1)}function numKeys(data){let keyCount=0;for(let key in data)Object.prototype.hasOwnProperty.call(data,key)&&keyCount++;return keyCount}var getParsedType2=data=>{let t=typeof data;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(data)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(data)?"array":data===null?"null":data.then&&typeof data.then=="function"&&data.catch&&typeof data.catch=="function"?"promise":typeof Map<"u"&&data instanceof Map?"map":typeof Set<"u"&&data instanceof Set?"set":typeof Date<"u"&&data instanceof Date?"date":typeof File<"u"&&data instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},propertyKeyTypes=new Set(["string","number","symbol"]),primitiveTypes=new Set(["string","number","bigint","boolean","symbol","undefined"]);function escapeRegex(str){return str.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function clone(inst,def,params){let cl=new inst._zod.constr(def??inst._zod.def);return(!def||params?.parent)&&(cl._zod.parent=inst),cl}function normalizeParams(_params){let params=_params;if(!params)return{};if(typeof params=="string")return{error:()=>params};if(params?.message!==void 0){if(params?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");params.error=params.message}return delete params.message,typeof params.error=="string"?{...params,error:()=>params.error}:params}function createTransparentProxy(getter){let target;return new Proxy({},{get(_,prop,receiver){return target??(target=getter()),Reflect.get(target,prop,receiver)},set(_,prop,value,receiver){return target??(target=getter()),Reflect.set(target,prop,value,receiver)},has(_,prop){return target??(target=getter()),Reflect.has(target,prop)},deleteProperty(_,prop){return target??(target=getter()),Reflect.deleteProperty(target,prop)},ownKeys(_){return target??(target=getter()),Reflect.ownKeys(target)},getOwnPropertyDescriptor(_,prop){return target??(target=getter()),Reflect.getOwnPropertyDescriptor(target,prop)},defineProperty(_,prop,descriptor){return target??(target=getter()),Reflect.defineProperty(target,prop,descriptor)}})}function stringifyPrimitive(value){return typeof value=="bigint"?value.toString()+"n":typeof value=="string"?`"${value}"`:`${value}`}function optionalKeys(shape){return Object.keys(shape).filter(k=>shape[k]._zod.optin==="optional"&&shape[k]._zod.optout==="optional")}var NUMBER_FORMAT_RANGES={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},BIGINT_FORMAT_RANGES={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function pick(schema,mask){let newShape={},currDef=schema._zod.def;for(let key in mask){if(!(key in currDef.shape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&(newShape[key]=currDef.shape[key])}return clone(schema,{...schema._zod.def,shape:newShape,checks:[]})}function omit(schema,mask){let newShape={...schema._zod.def.shape},currDef=schema._zod.def;for(let key in mask){if(!(key in currDef.shape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&delete newShape[key]}return clone(schema,{...schema._zod.def,shape:newShape,checks:[]})}function extend(schema,shape){if(!isPlainObject(shape))throw new Error("Invalid input to extend: expected a plain object");let def={...schema._zod.def,get shape(){let _shape={...schema._zod.def.shape,...shape};return assignProp(this,"shape",_shape),_shape},checks:[]};return clone(schema,def)}function merge(a,b){return clone(a,{...a._zod.def,get shape(){let _shape={...a._zod.def.shape,...b._zod.def.shape};return assignProp(this,"shape",_shape),_shape},catchall:b._zod.def.catchall,checks:[]})}function partial(Class2,schema,mask){let oldShape=schema._zod.def.shape,shape={...oldShape};if(mask)for(let key in mask){if(!(key in oldShape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&(shape[key]=Class2?new Class2({type:"optional",innerType:oldShape[key]}):oldShape[key])}else for(let key in oldShape)shape[key]=Class2?new Class2({type:"optional",innerType:oldShape[key]}):oldShape[key];return clone(schema,{...schema._zod.def,shape,checks:[]})}function required(Class2,schema,mask){let oldShape=schema._zod.def.shape,shape={...oldShape};if(mask)for(let key in mask){if(!(key in shape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&(shape[key]=new Class2({type:"nonoptional",innerType:oldShape[key]}))}else for(let key in oldShape)shape[key]=new Class2({type:"nonoptional",innerType:oldShape[key]});return clone(schema,{...schema._zod.def,shape,checks:[]})}function aborted(x,startIndex=0){for(let i=startIndex;i<x.issues.length;i++)if(x.issues[i]?.continue!==!0)return!0;return!1}function prefixIssues(path,issues){return issues.map(iss=>{var _a;return(_a=iss).path??(_a.path=[]),iss.path.unshift(path),iss})}function unwrapMessage(message){return typeof message=="string"?message:message?.message}function finalizeIssue(iss,ctx,config2){let full={...iss,path:iss.path??[]};if(!iss.message){let message=unwrapMessage(iss.inst?._zod.def?.error?.(iss))??unwrapMessage(ctx?.error?.(iss))??unwrapMessage(config2.customError?.(iss))??unwrapMessage(config2.localeError?.(iss))??"Invalid input";full.message=message}return delete full.inst,delete full.continue,ctx?.reportInput||delete full.input,full}function getSizableOrigin(input){return input instanceof Set?"set":input instanceof Map?"map":input instanceof File?"file":"unknown"}function getLengthableOrigin(input){return Array.isArray(input)?"array":typeof input=="string"?"string":"unknown"}function issue(...args){let[iss,input,inst]=args;return typeof iss=="string"?{message:iss,code:"custom",input,inst}:{...iss}}function cleanEnum(obj){return Object.entries(obj).filter(([k,_])=>Number.isNaN(Number.parseInt(k,10))).map(el=>el[1])}var Class=class{constructor(..._args){}};var initializer=(inst,def)=>{inst.name="$ZodError",Object.defineProperty(inst,"_zod",{value:inst._zod,enumerable:!1}),Object.defineProperty(inst,"issues",{value:def,enumerable:!1}),Object.defineProperty(inst,"message",{get(){return JSON.stringify(def,jsonStringifyReplacer,2)},enumerable:!0}),Object.defineProperty(inst,"toString",{value:()=>inst.message,enumerable:!1})},$ZodError=$constructor("$ZodError",initializer),$ZodRealError=$constructor("$ZodError",initializer,{Parent:Error});function flattenError(error3,mapper=issue2=>issue2.message){let fieldErrors={},formErrors=[];for(let sub of error3.issues)sub.path.length>0?(fieldErrors[sub.path[0]]=fieldErrors[sub.path[0]]||[],fieldErrors[sub.path[0]].push(mapper(sub))):formErrors.push(mapper(sub));return{formErrors,fieldErrors}}function formatError(error3,_mapper){let mapper=_mapper||function(issue2){return issue2.message},fieldErrors={_errors:[]},processError=error4=>{for(let issue2 of error4.issues)if(issue2.code==="invalid_union"&&issue2.errors.length)issue2.errors.map(issues=>processError({issues}));else if(issue2.code==="invalid_key")processError({issues:issue2.issues});else if(issue2.code==="invalid_element")processError({issues:issue2.issues});else if(issue2.path.length===0)fieldErrors._errors.push(mapper(issue2));else{let curr=fieldErrors,i=0;for(;i<issue2.path.length;){let el=issue2.path[i];i===issue2.path.length-1?(curr[el]=curr[el]||{_errors:[]},curr[el]._errors.push(mapper(issue2))):curr[el]=curr[el]||{_errors:[]},curr=curr[el],i++}}};return processError(error3),fieldErrors}var _parse=_Err=>(schema,value,_ctx,_params)=>{let ctx=_ctx?Object.assign(_ctx,{async:!1}):{async:!1},result=schema._zod.run({value,issues:[]},ctx);if(result instanceof Promise)throw new $ZodAsyncError;if(result.issues.length){let e=new(_params?.Err??_Err)(result.issues.map(iss=>finalizeIssue(iss,ctx,config())));throw captureStackTrace(e,_params?.callee),e}return result.value},parse=_parse($ZodRealError),_parseAsync=_Err=>async(schema,value,_ctx,params)=>{let ctx=_ctx?Object.assign(_ctx,{async:!0}):{async:!0},result=schema._zod.run({value,issues:[]},ctx);if(result instanceof Promise&&(result=await result),result.issues.length){let e=new(params?.Err??_Err)(result.issues.map(iss=>finalizeIssue(iss,ctx,config())));throw captureStackTrace(e,params?.callee),e}return result.value},parseAsync=_parseAsync($ZodRealError),_safeParse=_Err=>(schema,value,_ctx)=>{let ctx=_ctx?{..._ctx,async:!1}:{async:!1},result=schema._zod.run({value,issues:[]},ctx);if(result instanceof Promise)throw new $ZodAsyncError;return result.issues.length?{success:!1,error:new(_Err??$ZodError)(result.issues.map(iss=>finalizeIssue(iss,ctx,config())))}:{success:!0,data:result.value}},safeParse=_safeParse($ZodRealError),_safeParseAsync=_Err=>async(schema,value,_ctx)=>{let ctx=_ctx?Object.assign(_ctx,{async:!0}):{async:!0},result=schema._zod.run({value,issues:[]},ctx);return result instanceof Promise&&(result=await result),result.issues.length?{success:!1,error:new _Err(result.issues.map(iss=>finalizeIssue(iss,ctx,config())))}:{success:!0,data:result.value}},safeParseAsync=_safeParseAsync($ZodRealError);var cuid=/^[cC][^\s-]{8,}$/,cuid2=/^[0-9a-z]+$/,ulid=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xid=/^[0-9a-vA-V]{20}$/,ksuid=/^[A-Za-z0-9]{27}$/,nanoid=/^[a-zA-Z0-9_-]{21}$/,duration=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var guid=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=version2=>version2?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version2}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;var email=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var _emoji="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function emoji(){return new RegExp(_emoji,"u")}var ipv4=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,cidrv4=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url=/^[A-Za-z0-9_-]*$/,hostname=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/;var e164=/^\+(?:[0-9]){6,14}[0-9]$/,dateSource="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",date=new RegExp(`^${dateSource}$`);function timeSource(args){let hhmm="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof args.precision=="number"?args.precision===-1?`${hhmm}`:args.precision===0?`${hhmm}:[0-5]\\d`:`${hhmm}:[0-5]\\d\\.\\d{${args.precision}}`:`${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time(args){return new RegExp(`^${timeSource(args)}$`)}function datetime(args){let time3=timeSource({precision:args.precision}),opts=["Z"];args.local&&opts.push(""),args.offset&&opts.push("([+-]\\d{2}:\\d{2})");let timeRegex2=`${time3}(?:${opts.join("|")})`;return new RegExp(`^${dateSource}T(?:${timeRegex2})$`)}var string=params=>{let regex=params?`[\\s\\S]{${params?.minimum??0},${params?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${regex}$`)};var integer=/^\d+$/,number=/^-?\d+(?:\.\d+)?/i,boolean=/true|false/i,_null=/null/i;var lowercase=/^[^A-Z]*$/,uppercase=/^[^a-z]*$/;var $ZodCheck=$constructor("$ZodCheck",(inst,def)=>{var _a;inst._zod??(inst._zod={}),inst._zod.def=def,(_a=inst._zod).onattach??(_a.onattach=[])}),numericOriginMap={number:"number",bigint:"bigint",object:"date"},$ZodCheckLessThan=$constructor("$ZodCheckLessThan",(inst,def)=>{$ZodCheck.init(inst,def);let origin=numericOriginMap[typeof def.value];inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag,curr=(def.inclusive?bag.maximum:bag.exclusiveMaximum)??Number.POSITIVE_INFINITY;def.value<curr&&(def.inclusive?bag.maximum=def.value:bag.exclusiveMaximum=def.value)}),inst._zod.check=payload=>{(def.inclusive?payload.value<=def.value:payload.value<def.value)||payload.issues.push({origin,code:"too_big",maximum:def.value,input:payload.value,inclusive:def.inclusive,inst,continue:!def.abort})}}),$ZodCheckGreaterThan=$constructor("$ZodCheckGreaterThan",(inst,def)=>{$ZodCheck.init(inst,def);let origin=numericOriginMap[typeof def.value];inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag,curr=(def.inclusive?bag.minimum:bag.exclusiveMinimum)??Number.NEGATIVE_INFINITY;def.value>curr&&(def.inclusive?bag.minimum=def.value:bag.exclusiveMinimum=def.value)}),inst._zod.check=payload=>{(def.inclusive?payload.value>=def.value:payload.value>def.value)||payload.issues.push({origin,code:"too_small",minimum:def.value,input:payload.value,inclusive:def.inclusive,inst,continue:!def.abort})}}),$ZodCheckMultipleOf=$constructor("$ZodCheckMultipleOf",(inst,def)=>{$ZodCheck.init(inst,def),inst._zod.onattach.push(inst2=>{var _a;(_a=inst2._zod.bag).multipleOf??(_a.multipleOf=def.value)}),inst._zod.check=payload=>{if(typeof payload.value!=typeof def.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof payload.value=="bigint"?payload.value%def.value===BigInt(0):floatSafeRemainder2(payload.value,def.value)===0)||payload.issues.push({origin:typeof payload.value,code:"not_multiple_of",divisor:def.value,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckNumberFormat=$constructor("$ZodCheckNumberFormat",(inst,def)=>{$ZodCheck.init(inst,def),def.format=def.format||"float64";let isInt=def.format?.includes("int"),origin=isInt?"int":"number",[minimum,maximum]=NUMBER_FORMAT_RANGES[def.format];inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.format=def.format,bag.minimum=minimum,bag.maximum=maximum,isInt&&(bag.pattern=integer)}),inst._zod.check=payload=>{let input=payload.value;if(isInt){if(!Number.isInteger(input)){payload.issues.push({expected:origin,format:def.format,code:"invalid_type",input,inst});return}if(!Number.isSafeInteger(input)){input>0?payload.issues.push({input,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst,origin,continue:!def.abort}):payload.issues.push({input,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst,origin,continue:!def.abort});return}}input<minimum&&payload.issues.push({origin:"number",input,code:"too_small",minimum,inclusive:!0,inst,continue:!def.abort}),input>maximum&&payload.issues.push({origin:"number",input,code:"too_big",maximum,inst})}});var $ZodCheckMaxLength=$constructor("$ZodCheckMaxLength",(inst,def)=>{var _a;$ZodCheck.init(inst,def),(_a=inst._zod.def).when??(_a.when=payload=>{let val=payload.value;return!nullish(val)&&val.length!==void 0}),inst._zod.onattach.push(inst2=>{let curr=inst2._zod.bag.maximum??Number.POSITIVE_INFINITY;def.maximum<curr&&(inst2._zod.bag.maximum=def.maximum)}),inst._zod.check=payload=>{let input=payload.value;if(input.length<=def.maximum)return;let origin=getLengthableOrigin(input);payload.issues.push({origin,code:"too_big",maximum:def.maximum,inclusive:!0,input,inst,continue:!def.abort})}}),$ZodCheckMinLength=$constructor("$ZodCheckMinLength",(inst,def)=>{var _a;$ZodCheck.init(inst,def),(_a=inst._zod.def).when??(_a.when=payload=>{let val=payload.value;return!nullish(val)&&val.length!==void 0}),inst._zod.onattach.push(inst2=>{let curr=inst2._zod.bag.minimum??Number.NEGATIVE_INFINITY;def.minimum>curr&&(inst2._zod.bag.minimum=def.minimum)}),inst._zod.check=payload=>{let input=payload.value;if(input.length>=def.minimum)return;let origin=getLengthableOrigin(input);payload.issues.push({origin,code:"too_small",minimum:def.minimum,inclusive:!0,input,inst,continue:!def.abort})}}),$ZodCheckLengthEquals=$constructor("$ZodCheckLengthEquals",(inst,def)=>{var _a;$ZodCheck.init(inst,def),(_a=inst._zod.def).when??(_a.when=payload=>{let val=payload.value;return!nullish(val)&&val.length!==void 0}),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.minimum=def.length,bag.maximum=def.length,bag.length=def.length}),inst._zod.check=payload=>{let input=payload.value,length=input.length;if(length===def.length)return;let origin=getLengthableOrigin(input),tooBig=length>def.length;payload.issues.push({origin,...tooBig?{code:"too_big",maximum:def.length}:{code:"too_small",minimum:def.length},inclusive:!0,exact:!0,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckStringFormat=$constructor("$ZodCheckStringFormat",(inst,def)=>{var _a,_b;$ZodCheck.init(inst,def),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.format=def.format,def.pattern&&(bag.patterns??(bag.patterns=new Set),bag.patterns.add(def.pattern))}),def.pattern?(_a=inst._zod).check??(_a.check=payload=>{def.pattern.lastIndex=0,!def.pattern.test(payload.value)&&payload.issues.push({origin:"string",code:"invalid_format",format:def.format,input:payload.value,...def.pattern?{pattern:def.pattern.toString()}:{},inst,continue:!def.abort})}):(_b=inst._zod).check??(_b.check=()=>{})}),$ZodCheckRegex=$constructor("$ZodCheckRegex",(inst,def)=>{$ZodCheckStringFormat.init(inst,def),inst._zod.check=payload=>{def.pattern.lastIndex=0,!def.pattern.test(payload.value)&&payload.issues.push({origin:"string",code:"invalid_format",format:"regex",input:payload.value,pattern:def.pattern.toString(),inst,continue:!def.abort})}}),$ZodCheckLowerCase=$constructor("$ZodCheckLowerCase",(inst,def)=>{def.pattern??(def.pattern=lowercase),$ZodCheckStringFormat.init(inst,def)}),$ZodCheckUpperCase=$constructor("$ZodCheckUpperCase",(inst,def)=>{def.pattern??(def.pattern=uppercase),$ZodCheckStringFormat.init(inst,def)}),$ZodCheckIncludes=$constructor("$ZodCheckIncludes",(inst,def)=>{$ZodCheck.init(inst,def);let escapedRegex=escapeRegex(def.includes),pattern=new RegExp(typeof def.position=="number"?`^.{${def.position}}${escapedRegex}`:escapedRegex);def.pattern=pattern,inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.patterns??(bag.patterns=new Set),bag.patterns.add(pattern)}),inst._zod.check=payload=>{payload.value.includes(def.includes,def.position)||payload.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:def.includes,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckStartsWith=$constructor("$ZodCheckStartsWith",(inst,def)=>{$ZodCheck.init(inst,def);let pattern=new RegExp(`^${escapeRegex(def.prefix)}.*`);def.pattern??(def.pattern=pattern),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.patterns??(bag.patterns=new Set),bag.patterns.add(pattern)}),inst._zod.check=payload=>{payload.value.startsWith(def.prefix)||payload.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:def.prefix,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckEndsWith=$constructor("$ZodCheckEndsWith",(inst,def)=>{$ZodCheck.init(inst,def);let pattern=new RegExp(`.*${escapeRegex(def.suffix)}$`);def.pattern??(def.pattern=pattern),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.patterns??(bag.patterns=new Set),bag.patterns.add(pattern)}),inst._zod.check=payload=>{payload.value.endsWith(def.suffix)||payload.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:def.suffix,input:payload.value,inst,continue:!def.abort})}});var $ZodCheckOverwrite=$constructor("$ZodCheckOverwrite",(inst,def)=>{$ZodCheck.init(inst,def),inst._zod.check=payload=>{payload.value=def.tx(payload.value)}});var Doc=class{constructor(args=[]){this.content=[],this.indent=0,this&&(this.args=args)}indented(fn){this.indent+=1,fn(this),this.indent-=1}write(arg){if(typeof arg=="function"){arg(this,{execution:"sync"}),arg(this,{execution:"async"});return}let lines=arg.split(`
|
|
151
|
+
`)}var log={debug:(msg,fields)=>emit("debug",msg,fields),info:(msg,fields)=>emit("info",msg,fields),warn:(msg,fields)=>emit("warn",msg,fields),error:(msg,fields)=>emit("error",msg,fields)};var VALID_TRANSPORTS=["stdio","http","both"],VALID_ROSTERS=["full","records","channels"],VALID_LOG_FORMATS=["text","json"],VALID_LOG_LEVELS=["debug","info","warn","error"];function loadConfigFromEnv(env=process.env){return{stigmerServerAddress:envOr(env,"STIGMER_SERVER_ADDRESS","localhost:7234"),apiKey:env.STIGMER_API_KEY??"",transport:envOr(env,"STIGMER_MCP_TRANSPORT","stdio").toLowerCase(),roster:envOr(env,"STIGMER_MCP_ROSTER","full").toLowerCase(),httpPort:envOr(env,"STIGMER_MCP_HTTP_PORT","8080"),httpAuthEnabled:envOr(env,"STIGMER_MCP_HTTP_AUTH_ENABLED","true")==="true",oauth:{enabled:env.STIGMER_MCP_OAUTH_ENABLED==="true",resource:(env.STIGMER_MCP_OAUTH_RESOURCE??"").trim(),authorizationServers:splitList(env.STIGMER_MCP_OAUTH_AUTHORIZATION_SERVERS),scopesSupported:splitList(env.STIGMER_MCP_OAUTH_SCOPES_SUPPORTED)},logFormat:envOr(env,"STIGMER_MCP_LOG_FORMAT","text").toLowerCase(),logLevel:envOr(env,"STIGMER_MCP_LOG_LEVEL","info").toLowerCase()}}function validateConfig(cfg){if(!VALID_TRANSPORTS.includes(cfg.transport))throw new Error(`invalid STIGMER_MCP_TRANSPORT "${cfg.transport}": must be stdio, http, or both`);if(!VALID_ROSTERS.includes(cfg.roster))throw new Error(`invalid STIGMER_MCP_ROSTER "${cfg.roster}": must be full, records, or channels`);if(cfg.stigmerServerAddress==="")throw new Error("STIGMER_SERVER_ADDRESS must not be empty");if(cfg.stigmerServerAddress.includes("://")?log.warn("STIGMER_SERVER_ADDRESS contains a URL scheme; gRPC targets are host:port \u2014 the scheme is informational and TLS is derived from the port",{value:cfg.stigmerServerAddress}):hasExplicitPort(cfg.stigmerServerAddress)||log.warn("STIGMER_SERVER_ADDRESS has no explicit port; :443 with TLS is assumed for non-loopback addresses",{value:cfg.stigmerServerAddress}),!VALID_LOG_FORMATS.includes(cfg.logFormat))throw new Error(`invalid STIGMER_MCP_LOG_FORMAT "${cfg.logFormat}": must be text or json`);if(!VALID_LOG_LEVELS.includes(cfg.logLevel))throw new Error(`invalid STIGMER_MCP_LOG_LEVEL "${cfg.logLevel}": must be debug, info, warn, or error`);if(cfg.oauth.enabled){if(cfg.oauth.resource==="")throw new Error("STIGMER_MCP_OAUTH_RESOURCE must be set when STIGMER_MCP_OAUTH_ENABLED is true");if(cfg.oauth.authorizationServers.length===0)throw new Error("STIGMER_MCP_OAUTH_AUTHORIZATION_SERVERS must list at least one issuer when STIGMER_MCP_OAUTH_ENABLED is true")}}function envOr(env,key,fallback){let v=env[key];return v!==void 0&&v!==""?v:fallback}function splitList(raw){return!raw||raw.trim()===""?[]:raw.split(",").map(p=>p.trim()).filter(p=>p!=="")}function hasExplicitPort(authority){if(authority.startsWith("[")){let close=authority.indexOf("]");return close!==-1&&authority.slice(close+1).startsWith(":")}let lastColon=authority.lastIndexOf(":");return lastColon!==-1&&authority.indexOf(":")===lastColon}import{createServer as createHttpServer}from"node:http";import{randomBytes,randomUUID}from"node:crypto";var external_exports={};__export(external_exports,{BRAND:()=>BRAND,DIRTY:()=>DIRTY,EMPTY_PATH:()=>EMPTY_PATH,INVALID:()=>INVALID,NEVER:()=>NEVER,OK:()=>OK,ParseStatus:()=>ParseStatus,Schema:()=>ZodType,ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBigInt:()=>ZodBigInt,ZodBoolean:()=>ZodBoolean,ZodBranded:()=>ZodBranded,ZodCatch:()=>ZodCatch,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodEffects:()=>ZodEffects,ZodEnum:()=>ZodEnum,ZodError:()=>ZodError,ZodFirstPartyTypeKind:()=>ZodFirstPartyTypeKind,ZodFunction:()=>ZodFunction,ZodIntersection:()=>ZodIntersection,ZodIssueCode:()=>ZodIssueCode,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNativeEnum:()=>ZodNativeEnum,ZodNever:()=>ZodNever,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodParsedType:()=>ZodParsedType,ZodPipeline:()=>ZodPipeline,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRecord:()=>ZodRecord,ZodSchema:()=>ZodType,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodSymbol:()=>ZodSymbol,ZodTransformer:()=>ZodEffects,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,addIssueToContext:()=>addIssueToContext,any:()=>anyType,array:()=>arrayType,bigint:()=>bigIntType,boolean:()=>booleanType,coerce:()=>coerce,custom:()=>custom,date:()=>dateType,datetimeRegex:()=>datetimeRegex,defaultErrorMap:()=>en_default,discriminatedUnion:()=>discriminatedUnionType,effect:()=>effectsType,enum:()=>enumType,function:()=>functionType,getErrorMap:()=>getErrorMap,getParsedType:()=>getParsedType,instanceof:()=>instanceOfType,intersection:()=>intersectionType,isAborted:()=>isAborted,isAsync:()=>isAsync,isDirty:()=>isDirty,isValid:()=>isValid,late:()=>late,lazy:()=>lazyType,literal:()=>literalType,makeIssue:()=>makeIssue,map:()=>mapType,nan:()=>nanType,nativeEnum:()=>nativeEnumType,never:()=>neverType,null:()=>nullType,nullable:()=>nullableType,number:()=>numberType,object:()=>objectType,objectUtil:()=>objectUtil,oboolean:()=>oboolean,onumber:()=>onumber,optional:()=>optionalType,ostring:()=>ostring,pipeline:()=>pipelineType,preprocess:()=>preprocessType,promise:()=>promiseType,quotelessJson:()=>quotelessJson,record:()=>recordType,set:()=>setType,setErrorMap:()=>setErrorMap,strictObject:()=>strictObjectType,string:()=>stringType,symbol:()=>symbolType,transformer:()=>effectsType,tuple:()=>tupleType,undefined:()=>undefinedType,union:()=>unionType,unknown:()=>unknownType,util:()=>util,void:()=>voidType});var util;(function(util2){util2.assertEqual=_=>{};function assertIs2(_arg){}util2.assertIs=assertIs2;function assertNever2(_x){throw new Error}util2.assertNever=assertNever2,util2.arrayToEnum=items=>{let obj={};for(let item of items)obj[item]=item;return obj},util2.getValidEnumValues=obj=>{let validKeys=util2.objectKeys(obj).filter(k=>typeof obj[obj[k]]!="number"),filtered={};for(let k of validKeys)filtered[k]=obj[k];return util2.objectValues(filtered)},util2.objectValues=obj=>util2.objectKeys(obj).map(function(e){return obj[e]}),util2.objectKeys=typeof Object.keys=="function"?obj=>Object.keys(obj):object3=>{let keys=[];for(let key in object3)Object.prototype.hasOwnProperty.call(object3,key)&&keys.push(key);return keys},util2.find=(arr,checker)=>{for(let item of arr)if(checker(item))return item},util2.isInteger=typeof Number.isInteger=="function"?val=>Number.isInteger(val):val=>typeof val=="number"&&Number.isFinite(val)&&Math.floor(val)===val;function joinValues2(array2,separator=" | "){return array2.map(val=>typeof val=="string"?`'${val}'`:val).join(separator)}util2.joinValues=joinValues2,util2.jsonStringifyReplacer=(_,value)=>typeof value=="bigint"?value.toString():value})(util||(util={}));var objectUtil;(function(objectUtil2){objectUtil2.mergeShapes=(first,second)=>({...first,...second})})(objectUtil||(objectUtil={}));var ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType=data=>{switch(typeof data){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return Number.isNaN(data)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":return Array.isArray(data)?ZodParsedType.array:data===null?ZodParsedType.null:data.then&&typeof data.then=="function"&&data.catch&&typeof data.catch=="function"?ZodParsedType.promise:typeof Map<"u"&&data instanceof Map?ZodParsedType.map:typeof Set<"u"&&data instanceof Set?ZodParsedType.set:typeof Date<"u"&&data instanceof Date?ZodParsedType.date:ZodParsedType.object;default:return ZodParsedType.unknown}};var ZodIssueCode=util.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"]),quotelessJson=obj=>JSON.stringify(obj,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError=class _ZodError extends Error{get errors(){return this.issues}constructor(issues){super(),this.issues=[],this.addIssue=sub=>{this.issues=[...this.issues,sub]},this.addIssues=(subs=[])=>{this.issues=[...this.issues,...subs]};let actualProto=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,actualProto):this.__proto__=actualProto,this.name="ZodError",this.issues=issues}format(_mapper){let mapper=_mapper||function(issue2){return issue2.message},fieldErrors={_errors:[]},processError=error3=>{for(let issue2 of error3.issues)if(issue2.code==="invalid_union")issue2.unionErrors.map(processError);else if(issue2.code==="invalid_return_type")processError(issue2.returnTypeError);else if(issue2.code==="invalid_arguments")processError(issue2.argumentsError);else if(issue2.path.length===0)fieldErrors._errors.push(mapper(issue2));else{let curr=fieldErrors,i=0;for(;i<issue2.path.length;){let el=issue2.path[i];i===issue2.path.length-1?(curr[el]=curr[el]||{_errors:[]},curr[el]._errors.push(mapper(issue2))):curr[el]=curr[el]||{_errors:[]},curr=curr[el],i++}}};return processError(this),fieldErrors}static assert(value){if(!(value instanceof _ZodError))throw new Error(`Not a ZodError: ${value}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(mapper=issue2=>issue2.message){let fieldErrors={},formErrors=[];for(let sub of this.issues)if(sub.path.length>0){let firstEl=sub.path[0];fieldErrors[firstEl]=fieldErrors[firstEl]||[],fieldErrors[firstEl].push(mapper(sub))}else formErrors.push(mapper(sub));return{formErrors,fieldErrors}}get formErrors(){return this.flatten()}};ZodError.create=issues=>new ZodError(issues);var errorMap=(issue2,_ctx)=>{let message;switch(issue2.code){case ZodIssueCode.invalid_type:issue2.received===ZodParsedType.undefined?message="Required":message=`Expected ${issue2.expected}, received ${issue2.received}`;break;case ZodIssueCode.invalid_literal:message=`Invalid literal value, expected ${JSON.stringify(issue2.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:message=`Unrecognized key(s) in object: ${util.joinValues(issue2.keys,", ")}`;break;case ZodIssueCode.invalid_union:message="Invalid input";break;case ZodIssueCode.invalid_union_discriminator:message=`Invalid discriminator value. Expected ${util.joinValues(issue2.options)}`;break;case ZodIssueCode.invalid_enum_value:message=`Invalid enum value. Expected ${util.joinValues(issue2.options)}, received '${issue2.received}'`;break;case ZodIssueCode.invalid_arguments:message="Invalid function arguments";break;case ZodIssueCode.invalid_return_type:message="Invalid function return type";break;case ZodIssueCode.invalid_date:message="Invalid date";break;case ZodIssueCode.invalid_string:typeof issue2.validation=="object"?"includes"in issue2.validation?(message=`Invalid input: must include "${issue2.validation.includes}"`,typeof issue2.validation.position=="number"&&(message=`${message} at one or more positions greater than or equal to ${issue2.validation.position}`)):"startsWith"in issue2.validation?message=`Invalid input: must start with "${issue2.validation.startsWith}"`:"endsWith"in issue2.validation?message=`Invalid input: must end with "${issue2.validation.endsWith}"`:util.assertNever(issue2.validation):issue2.validation!=="regex"?message=`Invalid ${issue2.validation}`:message="Invalid";break;case ZodIssueCode.too_small:issue2.type==="array"?message=`Array must contain ${issue2.exact?"exactly":issue2.inclusive?"at least":"more than"} ${issue2.minimum} element(s)`:issue2.type==="string"?message=`String must contain ${issue2.exact?"exactly":issue2.inclusive?"at least":"over"} ${issue2.minimum} character(s)`:issue2.type==="number"?message=`Number must be ${issue2.exact?"exactly equal to ":issue2.inclusive?"greater than or equal to ":"greater than "}${issue2.minimum}`:issue2.type==="bigint"?message=`Number must be ${issue2.exact?"exactly equal to ":issue2.inclusive?"greater than or equal to ":"greater than "}${issue2.minimum}`:issue2.type==="date"?message=`Date must be ${issue2.exact?"exactly equal to ":issue2.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(issue2.minimum))}`:message="Invalid input";break;case ZodIssueCode.too_big:issue2.type==="array"?message=`Array must contain ${issue2.exact?"exactly":issue2.inclusive?"at most":"less than"} ${issue2.maximum} element(s)`:issue2.type==="string"?message=`String must contain ${issue2.exact?"exactly":issue2.inclusive?"at most":"under"} ${issue2.maximum} character(s)`:issue2.type==="number"?message=`Number must be ${issue2.exact?"exactly":issue2.inclusive?"less than or equal to":"less than"} ${issue2.maximum}`:issue2.type==="bigint"?message=`BigInt must be ${issue2.exact?"exactly":issue2.inclusive?"less than or equal to":"less than"} ${issue2.maximum}`:issue2.type==="date"?message=`Date must be ${issue2.exact?"exactly":issue2.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(issue2.maximum))}`:message="Invalid input";break;case ZodIssueCode.custom:message="Invalid input";break;case ZodIssueCode.invalid_intersection_types:message="Intersection results could not be merged";break;case ZodIssueCode.not_multiple_of:message=`Number must be a multiple of ${issue2.multipleOf}`;break;case ZodIssueCode.not_finite:message="Number must be finite";break;default:message=_ctx.defaultError,util.assertNever(issue2)}return{message}},en_default=errorMap;var overrideErrorMap=en_default;function setErrorMap(map){overrideErrorMap=map}function getErrorMap(){return overrideErrorMap}var makeIssue=params=>{let{data,path,errorMaps,issueData}=params,fullPath=[...path,...issueData.path||[]],fullIssue={...issueData,path:fullPath};if(issueData.message!==void 0)return{...issueData,path:fullPath,message:issueData.message};let errorMessage="",maps=errorMaps.filter(m=>!!m).slice().reverse();for(let map of maps)errorMessage=map(fullIssue,{data,defaultError:errorMessage}).message;return{...issueData,path:fullPath,message:errorMessage}},EMPTY_PATH=[];function addIssueToContext(ctx,issueData){let overrideMap=getErrorMap(),issue2=makeIssue({issueData,data:ctx.data,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,overrideMap,overrideMap===en_default?void 0:en_default].filter(x=>!!x)});ctx.common.issues.push(issue2)}var ParseStatus=class _ParseStatus{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(status,results){let arrayValue=[];for(let s of results){if(s.status==="aborted")return INVALID;s.status==="dirty"&&status.dirty(),arrayValue.push(s.value)}return{status:status.value,value:arrayValue}}static async mergeObjectAsync(status,pairs){let syncPairs=[];for(let pair of pairs){let key=await pair.key,value=await pair.value;syncPairs.push({key,value})}return _ParseStatus.mergeObjectSync(status,syncPairs)}static mergeObjectSync(status,pairs){let finalObject={};for(let pair of pairs){let{key,value}=pair;if(key.status==="aborted"||value.status==="aborted")return INVALID;key.status==="dirty"&&status.dirty(),value.status==="dirty"&&status.dirty(),key.value!=="__proto__"&&(typeof value.value<"u"||pair.alwaysSet)&&(finalObject[key.value]=value.value)}return{status:status.value,value:finalObject}}},INVALID=Object.freeze({status:"aborted"}),DIRTY=value=>({status:"dirty",value}),OK=value=>({status:"valid",value}),isAborted=x=>x.status==="aborted",isDirty=x=>x.status==="dirty",isValid=x=>x.status==="valid",isAsync=x=>typeof Promise<"u"&&x instanceof Promise;var errorUtil;(function(errorUtil2){errorUtil2.errToObj=message=>typeof message=="string"?{message}:message||{},errorUtil2.toString=message=>typeof message=="string"?message:message?.message})(errorUtil||(errorUtil={}));var ParseInputLazyPath=class{constructor(parent,value,path,key){this._cachedPath=[],this.parent=parent,this.data=value,this._path=path,this._key=key}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},handleResult=(ctx,result)=>{if(isValid(result))return{success:!0,data:result.value};if(!ctx.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let error3=new ZodError(ctx.common.issues);return this._error=error3,this._error}}};function processCreateParams(params){if(!params)return{};let{errorMap:errorMap2,invalid_type_error,required_error,description}=params;if(errorMap2&&(invalid_type_error||required_error))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return errorMap2?{errorMap:errorMap2,description}:{errorMap:(iss,ctx)=>{let{message}=params;return iss.code==="invalid_enum_value"?{message:message??ctx.defaultError}:typeof ctx.data>"u"?{message:message??required_error??ctx.defaultError}:iss.code!=="invalid_type"?{message:ctx.defaultError}:{message:message??invalid_type_error??ctx.defaultError}},description}}var ZodType=class{get description(){return this._def.description}_getType(input){return getParsedType(input.data)}_getOrReturnCtx(input,ctx){return ctx||{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}_processInputParams(input){return{status:new ParseStatus,ctx:{common:input.parent.common,data:input.data,parsedType:getParsedType(input.data),schemaErrorMap:this._def.errorMap,path:input.path,parent:input.parent}}}_parseSync(input){let result=this._parse(input);if(isAsync(result))throw new Error("Synchronous parse encountered promise.");return result}_parseAsync(input){let result=this._parse(input);return Promise.resolve(result)}parse(data,params){let result=this.safeParse(data,params);if(result.success)return result.data;throw result.error}safeParse(data,params){let ctx={common:{issues:[],async:params?.async??!1,contextualErrorMap:params?.errorMap},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},result=this._parseSync({data,path:ctx.path,parent:ctx});return handleResult(ctx,result)}"~validate"(data){let ctx={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)};if(!this["~standard"].async)try{let result=this._parseSync({data,path:[],parent:ctx});return isValid(result)?{value:result.value}:{issues:ctx.common.issues}}catch(err){err?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),ctx.common={issues:[],async:!0}}return this._parseAsync({data,path:[],parent:ctx}).then(result=>isValid(result)?{value:result.value}:{issues:ctx.common.issues})}async parseAsync(data,params){let result=await this.safeParseAsync(data,params);if(result.success)return result.data;throw result.error}async safeParseAsync(data,params){let ctx={common:{issues:[],contextualErrorMap:params?.errorMap,async:!0},path:params?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data,parsedType:getParsedType(data)},maybeAsyncResult=this._parse({data,path:ctx.path,parent:ctx}),result=await(isAsync(maybeAsyncResult)?maybeAsyncResult:Promise.resolve(maybeAsyncResult));return handleResult(ctx,result)}refine(check2,message){let getIssueProperties=val=>typeof message=="string"||typeof message>"u"?{message}:typeof message=="function"?message(val):message;return this._refinement((val,ctx)=>{let result=check2(val),setError=()=>ctx.addIssue({code:ZodIssueCode.custom,...getIssueProperties(val)});return typeof Promise<"u"&&result instanceof Promise?result.then(data=>data?!0:(setError(),!1)):result?!0:(setError(),!1)})}refinement(check2,refinementData){return this._refinement((val,ctx)=>check2(val)?!0:(ctx.addIssue(typeof refinementData=="function"?refinementData(val,ctx):refinementData),!1))}_refinement(refinement){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement}})}superRefine(refinement){return this._refinement(refinement)}constructor(def){this.spa=this.safeParseAsync,this._def=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:data=>this["~validate"](data)}}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this)}promise(){return ZodPromise.create(this,this._def)}or(option){return ZodUnion.create([this,option],this._def)}and(incoming){return ZodIntersection.create(this,incoming,this._def)}transform(transform2){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:transform2}})}default(def){let defaultValueFunc=typeof def=="function"?def:()=>def;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:defaultValueFunc,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(def){let catchValueFunc=typeof def=="function"?def:()=>def;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:catchValueFunc,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(description){let This=this.constructor;return new This({...this._def,description})}pipe(target){return ZodPipeline.create(this,target)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},cuidRegex=/^c[^\s-]{8,}$/i,cuid2Regex=/^[0-9a-z]+$/,ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/i,uuidRegex=/^[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,nanoidRegex=/^[a-z0-9_-]{21}$/i,jwtRegex=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,durationRegex=/^[-+]?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)?)??$/,emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",emojiRegex,ipv4Regex=/^(?:(?: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])$/,ipv4CidrRegex=/^(?:(?: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])$/,ipv6Regex=/^(([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]))$/,ipv6CidrRegex=/^(([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])$/,base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64urlRegex=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,dateRegexSource="((\\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])))",dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(args){let secondsRegexSource="[0-5]\\d";args.precision?secondsRegexSource=`${secondsRegexSource}\\.\\d{${args.precision}}`:args.precision==null&&(secondsRegexSource=`${secondsRegexSource}(\\.\\d+)?`);let secondsQuantifier=args.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${secondsRegexSource})${secondsQuantifier}`}function timeRegex(args){return new RegExp(`^${timeRegexSource(args)}$`)}function datetimeRegex(args){let regex=`${dateRegexSource}T${timeRegexSource(args)}`,opts=[];return opts.push(args.local?"Z?":"Z"),args.offset&&opts.push("([+-]\\d{2}:?\\d{2})"),regex=`${regex}(${opts.join("|")})`,new RegExp(`^${regex}$`)}function isValidIP(ip,version2){return!!((version2==="v4"||!version2)&&ipv4Regex.test(ip)||(version2==="v6"||!version2)&&ipv6Regex.test(ip))}function isValidJWT(jwt,alg){if(!jwtRegex.test(jwt))return!1;try{let[header]=jwt.split(".");if(!header)return!1;let base642=header.replace(/-/g,"+").replace(/_/g,"/").padEnd(header.length+(4-header.length%4)%4,"="),decoded=JSON.parse(atob(base642));return!(typeof decoded!="object"||decoded===null||"typ"in decoded&&decoded?.typ!=="JWT"||!decoded.alg||alg&&decoded.alg!==alg)}catch{return!1}}function isValidCidr(ip,version2){return!!((version2==="v4"||!version2)&&ipv4CidrRegex.test(ip)||(version2==="v6"||!version2)&&ipv6CidrRegex.test(ip))}var ZodString=class _ZodString2 extends ZodType{_parse(input){if(this._def.coerce&&(input.data=String(input.data)),this._getType(input)!==ZodParsedType.string){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ctx2.parsedType}),INVALID}let status=new ParseStatus,ctx;for(let check2 of this._def.checks)if(check2.kind==="min")input.data.length<check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check2.value,type:"string",inclusive:!0,exact:!1,message:check2.message}),status.dirty());else if(check2.kind==="max")input.data.length>check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check2.value,type:"string",inclusive:!0,exact:!1,message:check2.message}),status.dirty());else if(check2.kind==="length"){let tooBig=input.data.length>check2.value,tooSmall=input.data.length<check2.value;(tooBig||tooSmall)&&(ctx=this._getOrReturnCtx(input,ctx),tooBig?addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check2.value,type:"string",inclusive:!0,exact:!0,message:check2.message}):tooSmall&&addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check2.value,type:"string",inclusive:!0,exact:!0,message:check2.message}),status.dirty())}else if(check2.kind==="email")emailRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"email",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="emoji")emojiRegex||(emojiRegex=new RegExp(_emojiRegex,"u")),emojiRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"emoji",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="uuid")uuidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"uuid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="nanoid")nanoidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"nanoid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="cuid")cuidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"cuid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="cuid2")cuid2Regex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"cuid2",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="ulid")ulidRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"ulid",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty());else if(check2.kind==="url")try{new URL(input.data)}catch{ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"url",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()}else check2.kind==="regex"?(check2.regex.lastIndex=0,check2.regex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"regex",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty())):check2.kind==="trim"?input.data=input.data.trim():check2.kind==="includes"?input.data.includes(check2.value,check2.position)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{includes:check2.value,position:check2.position},message:check2.message}),status.dirty()):check2.kind==="toLowerCase"?input.data=input.data.toLowerCase():check2.kind==="toUpperCase"?input.data=input.data.toUpperCase():check2.kind==="startsWith"?input.data.startsWith(check2.value)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{startsWith:check2.value},message:check2.message}),status.dirty()):check2.kind==="endsWith"?input.data.endsWith(check2.value)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:{endsWith:check2.value},message:check2.message}),status.dirty()):check2.kind==="datetime"?datetimeRegex(check2).test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"datetime",message:check2.message}),status.dirty()):check2.kind==="date"?dateRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"date",message:check2.message}),status.dirty()):check2.kind==="time"?timeRegex(check2).test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_string,validation:"time",message:check2.message}),status.dirty()):check2.kind==="duration"?durationRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"duration",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="ip"?isValidIP(input.data,check2.version)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"ip",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="jwt"?isValidJWT(input.data,check2.alg)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"jwt",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="cidr"?isValidCidr(input.data,check2.version)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"cidr",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="base64"?base64Regex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"base64",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):check2.kind==="base64url"?base64urlRegex.test(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{validation:"base64url",code:ZodIssueCode.invalid_string,message:check2.message}),status.dirty()):util.assertNever(check2);return{status:status.value,value:input.data}}_regex(regex,validation,message){return this.refinement(data=>regex.test(data),{validation,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(message)})}_addCheck(check2){return new _ZodString2({...this._def,checks:[...this._def.checks,check2]})}email(message){return this._addCheck({kind:"email",...errorUtil.errToObj(message)})}url(message){return this._addCheck({kind:"url",...errorUtil.errToObj(message)})}emoji(message){return this._addCheck({kind:"emoji",...errorUtil.errToObj(message)})}uuid(message){return this._addCheck({kind:"uuid",...errorUtil.errToObj(message)})}nanoid(message){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(message)})}cuid(message){return this._addCheck({kind:"cuid",...errorUtil.errToObj(message)})}cuid2(message){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(message)})}ulid(message){return this._addCheck({kind:"ulid",...errorUtil.errToObj(message)})}base64(message){return this._addCheck({kind:"base64",...errorUtil.errToObj(message)})}base64url(message){return this._addCheck({kind:"base64url",...errorUtil.errToObj(message)})}jwt(options){return this._addCheck({kind:"jwt",...errorUtil.errToObj(options)})}ip(options){return this._addCheck({kind:"ip",...errorUtil.errToObj(options)})}cidr(options){return this._addCheck({kind:"cidr",...errorUtil.errToObj(options)})}datetime(options){return typeof options=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:options}):this._addCheck({kind:"datetime",precision:typeof options?.precision>"u"?null:options?.precision,offset:options?.offset??!1,local:options?.local??!1,...errorUtil.errToObj(options?.message)})}date(message){return this._addCheck({kind:"date",message})}time(options){return typeof options=="string"?this._addCheck({kind:"time",precision:null,message:options}):this._addCheck({kind:"time",precision:typeof options?.precision>"u"?null:options?.precision,...errorUtil.errToObj(options?.message)})}duration(message){return this._addCheck({kind:"duration",...errorUtil.errToObj(message)})}regex(regex,message){return this._addCheck({kind:"regex",regex,...errorUtil.errToObj(message)})}includes(value,options){return this._addCheck({kind:"includes",value,position:options?.position,...errorUtil.errToObj(options?.message)})}startsWith(value,message){return this._addCheck({kind:"startsWith",value,...errorUtil.errToObj(message)})}endsWith(value,message){return this._addCheck({kind:"endsWith",value,...errorUtil.errToObj(message)})}min(minLength,message){return this._addCheck({kind:"min",value:minLength,...errorUtil.errToObj(message)})}max(maxLength,message){return this._addCheck({kind:"max",value:maxLength,...errorUtil.errToObj(message)})}length(len,message){return this._addCheck({kind:"length",value:len,...errorUtil.errToObj(message)})}nonempty(message){return this.min(1,errorUtil.errToObj(message))}trim(){return new _ZodString2({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new _ZodString2({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new _ZodString2({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(ch=>ch.kind==="datetime")}get isDate(){return!!this._def.checks.find(ch=>ch.kind==="date")}get isTime(){return!!this._def.checks.find(ch=>ch.kind==="time")}get isDuration(){return!!this._def.checks.find(ch=>ch.kind==="duration")}get isEmail(){return!!this._def.checks.find(ch=>ch.kind==="email")}get isURL(){return!!this._def.checks.find(ch=>ch.kind==="url")}get isEmoji(){return!!this._def.checks.find(ch=>ch.kind==="emoji")}get isUUID(){return!!this._def.checks.find(ch=>ch.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(ch=>ch.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(ch=>ch.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(ch=>ch.kind==="cuid2")}get isULID(){return!!this._def.checks.find(ch=>ch.kind==="ulid")}get isIP(){return!!this._def.checks.find(ch=>ch.kind==="ip")}get isCIDR(){return!!this._def.checks.find(ch=>ch.kind==="cidr")}get isBase64(){return!!this._def.checks.find(ch=>ch.kind==="base64")}get isBase64url(){return!!this._def.checks.find(ch=>ch.kind==="base64url")}get minLength(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min}get maxLength(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max}};ZodString.create=params=>new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:params?.coerce??!1,...processCreateParams(params)});function floatSafeRemainder(val,step){let valDecCount=(val.toString().split(".")[1]||"").length,stepDecCount=(step.toString().split(".")[1]||"").length,decCount=valDecCount>stepDecCount?valDecCount:stepDecCount,valInt=Number.parseInt(val.toFixed(decCount).replace(".","")),stepInt=Number.parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/10**decCount}var ZodNumber=class _ZodNumber extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(input){if(this._def.coerce&&(input.data=Number(input.data)),this._getType(input)!==ZodParsedType.number){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ctx2.parsedType}),INVALID}let ctx,status=new ParseStatus;for(let check2 of this._def.checks)check2.kind==="int"?util.isInteger(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:check2.message}),status.dirty()):check2.kind==="min"?(check2.inclusive?input.data<check2.value:input.data<=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:check2.value,type:"number",inclusive:check2.inclusive,exact:!1,message:check2.message}),status.dirty()):check2.kind==="max"?(check2.inclusive?input.data>check2.value:input.data>=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:check2.value,type:"number",inclusive:check2.inclusive,exact:!1,message:check2.message}),status.dirty()):check2.kind==="multipleOf"?floatSafeRemainder(input.data,check2.value)!==0&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check2.value,message:check2.message}),status.dirty()):check2.kind==="finite"?Number.isFinite(input.data)||(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_finite,message:check2.message}),status.dirty()):util.assertNever(check2);return{status:status.value,value:input.data}}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodNumber({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check2){return new _ZodNumber({...this._def,checks:[...this._def.checks,check2]})}int(message){return this._addCheck({kind:"int",message:errorUtil.toString(message)})}positive(message){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}finite(message){return this._addCheck({kind:"finite",message:errorUtil.toString(message)})}safe(message){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(message)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min}get maxValue(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max}get isInt(){return!!this._def.checks.find(ch=>ch.kind==="int"||ch.kind==="multipleOf"&&util.isInteger(ch.value))}get isFinite(){let max=null,min=null;for(let ch of this._def.checks){if(ch.kind==="finite"||ch.kind==="int"||ch.kind==="multipleOf")return!0;ch.kind==="min"?(min===null||ch.value>min)&&(min=ch.value):ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value)}return Number.isFinite(min)&&Number.isFinite(max)}};ZodNumber.create=params=>new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:params?.coerce||!1,...processCreateParams(params)});var ZodBigInt=class _ZodBigInt extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(input){if(this._def.coerce)try{input.data=BigInt(input.data)}catch{return this._getInvalidInput(input)}if(this._getType(input)!==ZodParsedType.bigint)return this._getInvalidInput(input);let ctx,status=new ParseStatus;for(let check2 of this._def.checks)check2.kind==="min"?(check2.inclusive?input.data<check2.value:input.data<=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,type:"bigint",minimum:check2.value,inclusive:check2.inclusive,message:check2.message}),status.dirty()):check2.kind==="max"?(check2.inclusive?input.data>check2.value:input.data>=check2.value)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,type:"bigint",maximum:check2.value,inclusive:check2.inclusive,message:check2.message}),status.dirty()):check2.kind==="multipleOf"?input.data%check2.value!==BigInt(0)&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.not_multiple_of,multipleOf:check2.value,message:check2.message}),status.dirty()):util.assertNever(check2);return{status:status.value,value:input.data}}_getInvalidInput(input){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:ctx.parsedType}),INVALID}gte(value,message){return this.setLimit("min",value,!0,errorUtil.toString(message))}gt(value,message){return this.setLimit("min",value,!1,errorUtil.toString(message))}lte(value,message){return this.setLimit("max",value,!0,errorUtil.toString(message))}lt(value,message){return this.setLimit("max",value,!1,errorUtil.toString(message))}setLimit(kind,value,inclusive,message){return new _ZodBigInt({...this._def,checks:[...this._def.checks,{kind,value,inclusive,message:errorUtil.toString(message)}]})}_addCheck(check2){return new _ZodBigInt({...this._def,checks:[...this._def.checks,check2]})}positive(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}negative(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil.toString(message)})}nonpositive(message){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}nonnegative(message){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil.toString(message)})}multipleOf(value,message){return this._addCheck({kind:"multipleOf",value,message:errorUtil.toString(message)})}get minValue(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min}get maxValue(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max}};ZodBigInt.create=params=>new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:params?.coerce??!1,...processCreateParams(params)});var ZodBoolean=class extends ZodType{_parse(input){if(this._def.coerce&&(input.data=!!input.data),this._getType(input)!==ZodParsedType.boolean){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodBoolean.create=params=>new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:params?.coerce||!1,...processCreateParams(params)});var ZodDate=class _ZodDate extends ZodType{_parse(input){if(this._def.coerce&&(input.data=new Date(input.data)),this._getType(input)!==ZodParsedType.date){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ctx2.parsedType}),INVALID}if(Number.isNaN(input.data.getTime())){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_date}),INVALID}let status=new ParseStatus,ctx;for(let check2 of this._def.checks)check2.kind==="min"?input.data.getTime()<check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_small,message:check2.message,inclusive:!0,exact:!1,minimum:check2.value,type:"date"}),status.dirty()):check2.kind==="max"?input.data.getTime()>check2.value&&(ctx=this._getOrReturnCtx(input,ctx),addIssueToContext(ctx,{code:ZodIssueCode.too_big,message:check2.message,inclusive:!0,exact:!1,maximum:check2.value,type:"date"}),status.dirty()):util.assertNever(check2);return{status:status.value,value:new Date(input.data.getTime())}}_addCheck(check2){return new _ZodDate({...this._def,checks:[...this._def.checks,check2]})}min(minDate,message){return this._addCheck({kind:"min",value:minDate.getTime(),message:errorUtil.toString(message)})}max(maxDate,message){return this._addCheck({kind:"max",value:maxDate.getTime(),message:errorUtil.toString(message)})}get minDate(){let min=null;for(let ch of this._def.checks)ch.kind==="min"&&(min===null||ch.value>min)&&(min=ch.value);return min!=null?new Date(min):null}get maxDate(){let max=null;for(let ch of this._def.checks)ch.kind==="max"&&(max===null||ch.value<max)&&(max=ch.value);return max!=null?new Date(max):null}};ZodDate.create=params=>new ZodDate({checks:[],coerce:params?.coerce||!1,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(params)});var ZodSymbol=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.symbol){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodSymbol.create=params=>new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(params)});var ZodUndefined=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodUndefined.create=params=>new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(params)});var ZodNull=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.null){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodNull.create=params=>new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(params)});var ZodAny=class extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(input){return OK(input.data)}};ZodAny.create=params=>new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(params)});var ZodUnknown=class extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(input){return OK(input.data)}};ZodUnknown.create=params=>new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(params)});var ZodNever=class extends ZodType{_parse(input){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:ctx.parsedType}),INVALID}};ZodNever.create=params=>new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(params)});var ZodVoid=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.undefined){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:ctx.parsedType}),INVALID}return OK(input.data)}};ZodVoid.create=params=>new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(params)});var ZodArray=class _ZodArray extends ZodType{_parse(input){let{ctx,status}=this._processInputParams(input),def=this._def;if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(def.exactLength!==null){let tooBig=ctx.data.length>def.exactLength.value,tooSmall=ctx.data.length<def.exactLength.value;(tooBig||tooSmall)&&(addIssueToContext(ctx,{code:tooBig?ZodIssueCode.too_big:ZodIssueCode.too_small,minimum:tooSmall?def.exactLength.value:void 0,maximum:tooBig?def.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:def.exactLength.message}),status.dirty())}if(def.minLength!==null&&ctx.data.length<def.minLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minLength.value,type:"array",inclusive:!0,exact:!1,message:def.minLength.message}),status.dirty()),def.maxLength!==null&&ctx.data.length>def.maxLength.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxLength.value,type:"array",inclusive:!0,exact:!1,message:def.maxLength.message}),status.dirty()),ctx.common.async)return Promise.all([...ctx.data].map((item,i)=>def.type._parseAsync(new ParseInputLazyPath(ctx,item,ctx.path,i)))).then(result2=>ParseStatus.mergeArray(status,result2));let result=[...ctx.data].map((item,i)=>def.type._parseSync(new ParseInputLazyPath(ctx,item,ctx.path,i)));return ParseStatus.mergeArray(status,result)}get element(){return this._def.type}min(minLength,message){return new _ZodArray({...this._def,minLength:{value:minLength,message:errorUtil.toString(message)}})}max(maxLength,message){return new _ZodArray({...this._def,maxLength:{value:maxLength,message:errorUtil.toString(message)}})}length(len,message){return new _ZodArray({...this._def,exactLength:{value:len,message:errorUtil.toString(message)}})}nonempty(message){return this.min(1,message)}};ZodArray.create=(schema,params)=>new ZodArray({type:schema,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(params)});function deepPartialify(schema){if(schema instanceof ZodObject){let newShape={};for(let key in schema.shape){let fieldSchema=schema.shape[key];newShape[key]=ZodOptional.create(deepPartialify(fieldSchema))}return new ZodObject({...schema._def,shape:()=>newShape})}else return schema instanceof ZodArray?new ZodArray({...schema._def,type:deepPartialify(schema.element)}):schema instanceof ZodOptional?ZodOptional.create(deepPartialify(schema.unwrap())):schema instanceof ZodNullable?ZodNullable.create(deepPartialify(schema.unwrap())):schema instanceof ZodTuple?ZodTuple.create(schema.items.map(item=>deepPartialify(item))):schema}var ZodObject=class _ZodObject extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let shape=this._def.shape(),keys=util.objectKeys(shape);return this._cached={shape,keys},this._cached}_parse(input){if(this._getType(input)!==ZodParsedType.object){let ctx2=this._getOrReturnCtx(input);return addIssueToContext(ctx2,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx2.parsedType}),INVALID}let{status,ctx}=this._processInputParams(input),{shape,keys:shapeKeys}=this._getCached(),extraKeys=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip"))for(let key in ctx.data)shapeKeys.includes(key)||extraKeys.push(key);let pairs=[];for(let key of shapeKeys){let keyValidator=shape[key],value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:keyValidator._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}if(this._def.catchall instanceof ZodNever){let unknownKeys=this._def.unknownKeys;if(unknownKeys==="passthrough")for(let key of extraKeys)pairs.push({key:{status:"valid",value:key},value:{status:"valid",value:ctx.data[key]}});else if(unknownKeys==="strict")extraKeys.length>0&&(addIssueToContext(ctx,{code:ZodIssueCode.unrecognized_keys,keys:extraKeys}),status.dirty());else if(unknownKeys!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let catchall=this._def.catchall;for(let key of extraKeys){let value=ctx.data[key];pairs.push({key:{status:"valid",value:key},value:catchall._parse(new ParseInputLazyPath(ctx,value,ctx.path,key)),alwaysSet:key in ctx.data})}}return ctx.common.async?Promise.resolve().then(async()=>{let syncPairs=[];for(let pair of pairs){let key=await pair.key,value=await pair.value;syncPairs.push({key,value,alwaysSet:pair.alwaysSet})}return syncPairs}).then(syncPairs=>ParseStatus.mergeObjectSync(status,syncPairs)):ParseStatus.mergeObjectSync(status,pairs)}get shape(){return this._def.shape()}strict(message){return errorUtil.errToObj,new _ZodObject({...this._def,unknownKeys:"strict",...message!==void 0?{errorMap:(issue2,ctx)=>{let defaultError=this._def.errorMap?.(issue2,ctx).message??ctx.defaultError;return issue2.code==="unrecognized_keys"?{message:errorUtil.errToObj(message).message??defaultError}:{message:defaultError}}}:{}})}strip(){return new _ZodObject({...this._def,unknownKeys:"strip"})}passthrough(){return new _ZodObject({...this._def,unknownKeys:"passthrough"})}extend(augmentation){return new _ZodObject({...this._def,shape:()=>({...this._def.shape(),...augmentation})})}merge(merging){return new _ZodObject({unknownKeys:merging._def.unknownKeys,catchall:merging._def.catchall,shape:()=>({...this._def.shape(),...merging._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject})}setKey(key,schema){return this.augment({[key]:schema})}catchall(index){return new _ZodObject({...this._def,catchall:index})}pick(mask){let shape={};for(let key of util.objectKeys(mask))mask[key]&&this.shape[key]&&(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}omit(mask){let shape={};for(let key of util.objectKeys(this.shape))mask[key]||(shape[key]=this.shape[key]);return new _ZodObject({...this._def,shape:()=>shape})}deepPartial(){return deepPartialify(this)}partial(mask){let newShape={};for(let key of util.objectKeys(this.shape)){let fieldSchema=this.shape[key];mask&&!mask[key]?newShape[key]=fieldSchema:newShape[key]=fieldSchema.optional()}return new _ZodObject({...this._def,shape:()=>newShape})}required(mask){let newShape={};for(let key of util.objectKeys(this.shape))if(mask&&!mask[key])newShape[key]=this.shape[key];else{let newField2=this.shape[key];for(;newField2 instanceof ZodOptional;)newField2=newField2._def.innerType;newShape[key]=newField2}return new _ZodObject({...this._def,shape:()=>newShape})}keyof(){return createZodEnum(util.objectKeys(this.shape))}};ZodObject.create=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.strictCreate=(shape,params)=>new ZodObject({shape:()=>shape,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});ZodObject.lazycreate=(shape,params)=>new ZodObject({shape,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(params)});var ZodUnion=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),options=this._def.options;function handleResults(results){for(let result of results)if(result.result.status==="valid")return result.result;for(let result of results)if(result.result.status==="dirty")return ctx.common.issues.push(...result.ctx.common.issues),result.result;let unionErrors=results.map(result=>new ZodError(result.ctx.common.issues));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}if(ctx.common.async)return Promise.all(options.map(async option=>{let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null};return{result:await option._parseAsync({data:ctx.data,path:ctx.path,parent:childCtx}),ctx:childCtx}})).then(handleResults);{let dirty,issues=[];for(let option of options){let childCtx={...ctx,common:{...ctx.common,issues:[]},parent:null},result=option._parseSync({data:ctx.data,path:ctx.path,parent:childCtx});if(result.status==="valid")return result;result.status==="dirty"&&!dirty&&(dirty={result,ctx:childCtx}),childCtx.common.issues.length&&issues.push(childCtx.common.issues)}if(dirty)return ctx.common.issues.push(...dirty.ctx.common.issues),dirty.result;let unionErrors=issues.map(issues2=>new ZodError(issues2));return addIssueToContext(ctx,{code:ZodIssueCode.invalid_union,unionErrors}),INVALID}}get options(){return this._def.options}};ZodUnion.create=(types,params)=>new ZodUnion({options:types,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(params)});var getDiscriminator=type=>type instanceof ZodLazy?getDiscriminator(type.schema):type instanceof ZodEffects?getDiscriminator(type.innerType()):type instanceof ZodLiteral?[type.value]:type instanceof ZodEnum?type.options:type instanceof ZodNativeEnum?util.objectValues(type.enum):type instanceof ZodDefault?getDiscriminator(type._def.innerType):type instanceof ZodUndefined?[void 0]:type instanceof ZodNull?[null]:type instanceof ZodOptional?[void 0,...getDiscriminator(type.unwrap())]:type instanceof ZodNullable?[null,...getDiscriminator(type.unwrap())]:type instanceof ZodBranded||type instanceof ZodReadonly?getDiscriminator(type.unwrap()):type instanceof ZodCatch?getDiscriminator(type._def.innerType):[],ZodDiscriminatedUnion=class _ZodDiscriminatedUnion extends ZodType{_parse(input){let{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let discriminator=this.discriminator,discriminatorValue=ctx.data[discriminator],option=this.optionsMap.get(discriminatorValue);return option?ctx.common.async?option._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}):option._parseSync({data:ctx.data,path:ctx.path,parent:ctx}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[discriminator]}),INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(discriminator,options,params){let optionsMap=new Map;for(let type of options){let discriminatorValues=getDiscriminator(type.shape[discriminator]);if(!discriminatorValues.length)throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`);for(let value of discriminatorValues){if(optionsMap.has(value))throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);optionsMap.set(value,type)}}return new _ZodDiscriminatedUnion({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator,options,optionsMap,...processCreateParams(params)})}};function mergeValues(a,b){let aType=getParsedType(a),bType=getParsedType(b);if(a===b)return{valid:!0,data:a};if(aType===ZodParsedType.object&&bType===ZodParsedType.object){let bKeys=util.objectKeys(b),sharedKeys=util.objectKeys(a).filter(key=>bKeys.indexOf(key)!==-1),newObj={...a,...b};for(let key of sharedKeys){let sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid)return{valid:!1};newObj[key]=sharedValue.data}return{valid:!0,data:newObj}}else if(aType===ZodParsedType.array&&bType===ZodParsedType.array){if(a.length!==b.length)return{valid:!1};let newArray=[];for(let index=0;index<a.length;index++){let itemA=a[index],itemB=b[index],sharedValue=mergeValues(itemA,itemB);if(!sharedValue.valid)return{valid:!1};newArray.push(sharedValue.data)}return{valid:!0,data:newArray}}else return aType===ZodParsedType.date&&bType===ZodParsedType.date&&+a==+b?{valid:!0,data:a}:{valid:!1}}var ZodIntersection=class extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input),handleParsed=(parsedLeft,parsedRight)=>{if(isAborted(parsedLeft)||isAborted(parsedRight))return INVALID;let merged=mergeValues(parsedLeft.value,parsedRight.value);return merged.valid?((isDirty(parsedLeft)||isDirty(parsedRight))&&status.dirty(),{status:status.value,value:merged.data}):(addIssueToContext(ctx,{code:ZodIssueCode.invalid_intersection_types}),INVALID)};return ctx.common.async?Promise.all([this._def.left._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseAsync({data:ctx.data,path:ctx.path,parent:ctx})]).then(([left,right])=>handleParsed(left,right)):handleParsed(this._def.left._parseSync({data:ctx.data,path:ctx.path,parent:ctx}),this._def.right._parseSync({data:ctx.data,path:ctx.path,parent:ctx}))}};ZodIntersection.create=(left,right,params)=>new ZodIntersection({left,right,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(params)});var ZodTuple=class _ZodTuple extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.array)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:ctx.parsedType}),INVALID;if(ctx.data.length<this._def.items.length)return addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID;!this._def.rest&&ctx.data.length>this._def.items.length&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),status.dirty());let items=[...ctx.data].map((item,itemIndex)=>{let schema=this._def.items[itemIndex]||this._def.rest;return schema?schema._parse(new ParseInputLazyPath(ctx,item,ctx.path,itemIndex)):null}).filter(x=>!!x);return ctx.common.async?Promise.all(items).then(results=>ParseStatus.mergeArray(status,results)):ParseStatus.mergeArray(status,items)}get items(){return this._def.items}rest(rest){return new _ZodTuple({...this._def,rest})}};ZodTuple.create=(schemas,params)=>{if(!Array.isArray(schemas))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple({items:schemas,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(params)})};var ZodRecord=class _ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.object)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:ctx.parsedType}),INVALID;let pairs=[],keyType=this._def.keyType,valueType=this._def.valueType;for(let key in ctx.data)pairs.push({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,key)),value:valueType._parse(new ParseInputLazyPath(ctx,ctx.data[key],ctx.path,key)),alwaysSet:key in ctx.data});return ctx.common.async?ParseStatus.mergeObjectAsync(status,pairs):ParseStatus.mergeObjectSync(status,pairs)}get element(){return this._def.valueType}static create(first,second,third){return second instanceof ZodType?new _ZodRecord({keyType:first,valueType:second,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(third)}):new _ZodRecord({keyType:ZodString.create(),valueType:first,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(second)})}},ZodMap=class extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.map)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:ctx.parsedType}),INVALID;let keyType=this._def.keyType,valueType=this._def.valueType,pairs=[...ctx.data.entries()].map(([key,value],index)=>({key:keyType._parse(new ParseInputLazyPath(ctx,key,ctx.path,[index,"key"])),value:valueType._parse(new ParseInputLazyPath(ctx,value,ctx.path,[index,"value"]))}));if(ctx.common.async){let finalMap=new Map;return Promise.resolve().then(async()=>{for(let pair of pairs){let key=await pair.key,value=await pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}})}else{let finalMap=new Map;for(let pair of pairs){let key=pair.key,value=pair.value;if(key.status==="aborted"||value.status==="aborted")return INVALID;(key.status==="dirty"||value.status==="dirty")&&status.dirty(),finalMap.set(key.value,value.value)}return{status:status.value,value:finalMap}}}};ZodMap.create=(keyType,valueType,params)=>new ZodMap({valueType,keyType,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(params)});var ZodSet=class _ZodSet extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.set)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:ctx.parsedType}),INVALID;let def=this._def;def.minSize!==null&&ctx.data.size<def.minSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_small,minimum:def.minSize.value,type:"set",inclusive:!0,exact:!1,message:def.minSize.message}),status.dirty()),def.maxSize!==null&&ctx.data.size>def.maxSize.value&&(addIssueToContext(ctx,{code:ZodIssueCode.too_big,maximum:def.maxSize.value,type:"set",inclusive:!0,exact:!1,message:def.maxSize.message}),status.dirty());let valueType=this._def.valueType;function finalizeSet(elements2){let parsedSet=new Set;for(let element of elements2){if(element.status==="aborted")return INVALID;element.status==="dirty"&&status.dirty(),parsedSet.add(element.value)}return{status:status.value,value:parsedSet}}let elements=[...ctx.data.values()].map((item,i)=>valueType._parse(new ParseInputLazyPath(ctx,item,ctx.path,i)));return ctx.common.async?Promise.all(elements).then(elements2=>finalizeSet(elements2)):finalizeSet(elements)}min(minSize,message){return new _ZodSet({...this._def,minSize:{value:minSize,message:errorUtil.toString(message)}})}max(maxSize,message){return new _ZodSet({...this._def,maxSize:{value:maxSize,message:errorUtil.toString(message)}})}size(size,message){return this.min(size,message).max(size,message)}nonempty(message){return this.min(1,message)}};ZodSet.create=(valueType,params)=>new ZodSet({valueType,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(params)});var ZodFunction=class _ZodFunction extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(input){let{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.function)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:ctx.parsedType}),INVALID;function makeArgsIssue(args,error3){return makeIssue({data:args,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:error3}})}function makeReturnsIssue(returns,error3){return makeIssue({data:returns,path:ctx.path,errorMaps:[ctx.common.contextualErrorMap,ctx.schemaErrorMap,getErrorMap(),en_default].filter(x=>!!x),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:error3}})}let params={errorMap:ctx.common.contextualErrorMap},fn=ctx.data;if(this._def.returns instanceof ZodPromise){let me=this;return OK(async function(...args){let error3=new ZodError([]),parsedArgs=await me._def.args.parseAsync(args,params).catch(e=>{throw error3.addIssue(makeArgsIssue(args,e)),error3}),result=await Reflect.apply(fn,this,parsedArgs);return await me._def.returns._def.type.parseAsync(result,params).catch(e=>{throw error3.addIssue(makeReturnsIssue(result,e)),error3})})}else{let me=this;return OK(function(...args){let parsedArgs=me._def.args.safeParse(args,params);if(!parsedArgs.success)throw new ZodError([makeArgsIssue(args,parsedArgs.error)]);let result=Reflect.apply(fn,this,parsedArgs.data),parsedReturns=me._def.returns.safeParse(result,params);if(!parsedReturns.success)throw new ZodError([makeReturnsIssue(result,parsedReturns.error)]);return parsedReturns.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...items){return new _ZodFunction({...this._def,args:ZodTuple.create(items).rest(ZodUnknown.create())})}returns(returnType){return new _ZodFunction({...this._def,returns:returnType})}implement(func){return this.parse(func)}strictImplement(func){return this.parse(func)}static create(args,returns,params){return new _ZodFunction({args:args||ZodTuple.create([]).rest(ZodUnknown.create()),returns:returns||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(params)})}},ZodLazy=class extends ZodType{get schema(){return this._def.getter()}_parse(input){let{ctx}=this._processInputParams(input);return this._def.getter()._parse({data:ctx.data,path:ctx.path,parent:ctx})}};ZodLazy.create=(getter,params)=>new ZodLazy({getter,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(params)});var ZodLiteral=class extends ZodType{_parse(input){if(input.data!==this._def.value){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_literal,expected:this._def.value}),INVALID}return{status:"valid",value:input.data}}get value(){return this._def.value}};ZodLiteral.create=(value,params)=>new ZodLiteral({value,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(params)});function createZodEnum(values,params){return new ZodEnum({values,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(params)})}var ZodEnum=class _ZodEnum extends ZodType{_parse(input){if(typeof input.data!="string"){let ctx=this._getOrReturnCtx(input),expectedValues=this._def.values;return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(input.data)){let ctx=this._getOrReturnCtx(input),expectedValues=this._def.values;return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input.data)}get options(){return this._def.values}get enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Values(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}get Enum(){let enumValues={};for(let val of this._def.values)enumValues[val]=val;return enumValues}extract(values,newDef=this._def){return _ZodEnum.create(values,{...this._def,...newDef})}exclude(values,newDef=this._def){return _ZodEnum.create(this.options.filter(opt=>!values.includes(opt)),{...this._def,...newDef})}};ZodEnum.create=createZodEnum;var ZodNativeEnum=class extends ZodType{_parse(input){let nativeEnumValues=util.getValidEnumValues(this._def.values),ctx=this._getOrReturnCtx(input);if(ctx.parsedType!==ZodParsedType.string&&ctx.parsedType!==ZodParsedType.number){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{expected:util.joinValues(expectedValues),received:ctx.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(this._cache||(this._cache=new Set(util.getValidEnumValues(this._def.values))),!this._cache.has(input.data)){let expectedValues=util.objectValues(nativeEnumValues);return addIssueToContext(ctx,{received:ctx.data,code:ZodIssueCode.invalid_enum_value,options:expectedValues}),INVALID}return OK(input.data)}get enum(){return this._def.values}};ZodNativeEnum.create=(values,params)=>new ZodNativeEnum({values,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(params)});var ZodPromise=class extends ZodType{unwrap(){return this._def.type}_parse(input){let{ctx}=this._processInputParams(input);if(ctx.parsedType!==ZodParsedType.promise&&ctx.common.async===!1)return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:ctx.parsedType}),INVALID;let promisified=ctx.parsedType===ZodParsedType.promise?ctx.data:Promise.resolve(ctx.data);return OK(promisified.then(data=>this._def.type.parseAsync(data,{path:ctx.path,errorMap:ctx.common.contextualErrorMap})))}};ZodPromise.create=(schema,params)=>new ZodPromise({type:schema,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(params)});var ZodEffects=class extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(input){let{status,ctx}=this._processInputParams(input),effect=this._def.effect||null,checkCtx={addIssue:arg=>{addIssueToContext(ctx,arg),arg.fatal?status.abort():status.dirty()},get path(){return ctx.path}};if(checkCtx.addIssue=checkCtx.addIssue.bind(checkCtx),effect.type==="preprocess"){let processed=effect.transform(ctx.data,checkCtx);if(ctx.common.async)return Promise.resolve(processed).then(async processed2=>{if(status.value==="aborted")return INVALID;let result=await this._def.schema._parseAsync({data:processed2,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result});{if(status.value==="aborted")return INVALID;let result=this._def.schema._parseSync({data:processed,path:ctx.path,parent:ctx});return result.status==="aborted"?INVALID:result.status==="dirty"?DIRTY(result.value):status.value==="dirty"?DIRTY(result.value):result}}if(effect.type==="refinement"){let executeRefinement=acc=>{let result=effect.refinement(acc,checkCtx);if(ctx.common.async)return Promise.resolve(result);if(result instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return acc};if(ctx.common.async===!1){let inner=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value),{status:status.value,value:inner.value})}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(inner=>inner.status==="aborted"?INVALID:(inner.status==="dirty"&&status.dirty(),executeRefinement(inner.value).then(()=>({status:status.value,value:inner.value}))))}if(effect.type==="transform")if(ctx.common.async===!1){let base=this._def.schema._parseSync({data:ctx.data,path:ctx.path,parent:ctx});if(!isValid(base))return INVALID;let result=effect.transform(base.value,checkCtx);if(result instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:status.value,value:result}}else return this._def.schema._parseAsync({data:ctx.data,path:ctx.path,parent:ctx}).then(base=>isValid(base)?Promise.resolve(effect.transform(base.value,checkCtx)).then(result=>({status:status.value,value:result})):INVALID);util.assertNever(effect)}};ZodEffects.create=(schema,effect,params)=>new ZodEffects({schema,typeName:ZodFirstPartyTypeKind.ZodEffects,effect,...processCreateParams(params)});ZodEffects.createWithPreprocess=(preprocess2,schema,params)=>new ZodEffects({schema,effect:{type:"preprocess",transform:preprocess2},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(params)});var ZodOptional=class extends ZodType{_parse(input){return this._getType(input)===ZodParsedType.undefined?OK(void 0):this._def.innerType._parse(input)}unwrap(){return this._def.innerType}};ZodOptional.create=(type,params)=>new ZodOptional({innerType:type,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(params)});var ZodNullable=class extends ZodType{_parse(input){return this._getType(input)===ZodParsedType.null?OK(null):this._def.innerType._parse(input)}unwrap(){return this._def.innerType}};ZodNullable.create=(type,params)=>new ZodNullable({innerType:type,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(params)});var ZodDefault=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),data=ctx.data;return ctx.parsedType===ZodParsedType.undefined&&(data=this._def.defaultValue()),this._def.innerType._parse({data,path:ctx.path,parent:ctx})}removeDefault(){return this._def.innerType}};ZodDefault.create=(type,params)=>new ZodDefault({innerType:type,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof params.default=="function"?params.default:()=>params.default,...processCreateParams(params)});var ZodCatch=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),newCtx={...ctx,common:{...ctx.common,issues:[]}},result=this._def.innerType._parse({data:newCtx.data,path:newCtx.path,parent:{...newCtx}});return isAsync(result)?result.then(result2=>({status:"valid",value:result2.status==="valid"?result2.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})})):{status:"valid",value:result.status==="valid"?result.value:this._def.catchValue({get error(){return new ZodError(newCtx.common.issues)},input:newCtx.data})}}removeCatch(){return this._def.innerType}};ZodCatch.create=(type,params)=>new ZodCatch({innerType:type,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof params.catch=="function"?params.catch:()=>params.catch,...processCreateParams(params)});var ZodNaN=class extends ZodType{_parse(input){if(this._getType(input)!==ZodParsedType.nan){let ctx=this._getOrReturnCtx(input);return addIssueToContext(ctx,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:ctx.parsedType}),INVALID}return{status:"valid",value:input.data}}};ZodNaN.create=params=>new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(params)});var BRAND=Symbol("zod_brand"),ZodBranded=class extends ZodType{_parse(input){let{ctx}=this._processInputParams(input),data=ctx.data;return this._def.type._parse({data,path:ctx.path,parent:ctx})}unwrap(){return this._def.type}},ZodPipeline=class _ZodPipeline extends ZodType{_parse(input){let{status,ctx}=this._processInputParams(input);if(ctx.common.async)return(async()=>{let inResult=await this._def.in._parseAsync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),DIRTY(inResult.value)):this._def.out._parseAsync({data:inResult.value,path:ctx.path,parent:ctx})})();{let inResult=this._def.in._parseSync({data:ctx.data,path:ctx.path,parent:ctx});return inResult.status==="aborted"?INVALID:inResult.status==="dirty"?(status.dirty(),{status:"dirty",value:inResult.value}):this._def.out._parseSync({data:inResult.value,path:ctx.path,parent:ctx})}}static create(a,b){return new _ZodPipeline({in:a,out:b,typeName:ZodFirstPartyTypeKind.ZodPipeline})}},ZodReadonly=class extends ZodType{_parse(input){let result=this._def.innerType._parse(input),freeze=data=>(isValid(data)&&(data.value=Object.freeze(data.value)),data);return isAsync(result)?result.then(data=>freeze(data)):freeze(result)}unwrap(){return this._def.innerType}};ZodReadonly.create=(type,params)=>new ZodReadonly({innerType:type,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(params)});function cleanParams(params,data){let p=typeof params=="function"?params(data):typeof params=="string"?{message:params}:params;return typeof p=="string"?{message:p}:p}function custom(check2,_params={},fatal){return check2?ZodAny.create().superRefine((data,ctx)=>{let r=check2(data);if(r instanceof Promise)return r.then(r2=>{if(!r2){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}});if(!r){let params=cleanParams(_params,data),_fatal=params.fatal??fatal??!0;ctx.addIssue({code:"custom",...params,fatal:_fatal})}}):ZodAny.create()}var late={object:ZodObject.lazycreate},ZodFirstPartyTypeKind;(function(ZodFirstPartyTypeKind2){ZodFirstPartyTypeKind2.ZodString="ZodString",ZodFirstPartyTypeKind2.ZodNumber="ZodNumber",ZodFirstPartyTypeKind2.ZodNaN="ZodNaN",ZodFirstPartyTypeKind2.ZodBigInt="ZodBigInt",ZodFirstPartyTypeKind2.ZodBoolean="ZodBoolean",ZodFirstPartyTypeKind2.ZodDate="ZodDate",ZodFirstPartyTypeKind2.ZodSymbol="ZodSymbol",ZodFirstPartyTypeKind2.ZodUndefined="ZodUndefined",ZodFirstPartyTypeKind2.ZodNull="ZodNull",ZodFirstPartyTypeKind2.ZodAny="ZodAny",ZodFirstPartyTypeKind2.ZodUnknown="ZodUnknown",ZodFirstPartyTypeKind2.ZodNever="ZodNever",ZodFirstPartyTypeKind2.ZodVoid="ZodVoid",ZodFirstPartyTypeKind2.ZodArray="ZodArray",ZodFirstPartyTypeKind2.ZodObject="ZodObject",ZodFirstPartyTypeKind2.ZodUnion="ZodUnion",ZodFirstPartyTypeKind2.ZodDiscriminatedUnion="ZodDiscriminatedUnion",ZodFirstPartyTypeKind2.ZodIntersection="ZodIntersection",ZodFirstPartyTypeKind2.ZodTuple="ZodTuple",ZodFirstPartyTypeKind2.ZodRecord="ZodRecord",ZodFirstPartyTypeKind2.ZodMap="ZodMap",ZodFirstPartyTypeKind2.ZodSet="ZodSet",ZodFirstPartyTypeKind2.ZodFunction="ZodFunction",ZodFirstPartyTypeKind2.ZodLazy="ZodLazy",ZodFirstPartyTypeKind2.ZodLiteral="ZodLiteral",ZodFirstPartyTypeKind2.ZodEnum="ZodEnum",ZodFirstPartyTypeKind2.ZodEffects="ZodEffects",ZodFirstPartyTypeKind2.ZodNativeEnum="ZodNativeEnum",ZodFirstPartyTypeKind2.ZodOptional="ZodOptional",ZodFirstPartyTypeKind2.ZodNullable="ZodNullable",ZodFirstPartyTypeKind2.ZodDefault="ZodDefault",ZodFirstPartyTypeKind2.ZodCatch="ZodCatch",ZodFirstPartyTypeKind2.ZodPromise="ZodPromise",ZodFirstPartyTypeKind2.ZodBranded="ZodBranded",ZodFirstPartyTypeKind2.ZodPipeline="ZodPipeline",ZodFirstPartyTypeKind2.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));var instanceOfType=(cls,params={message:`Input not instance of ${cls.name}`})=>custom(data=>data instanceof cls,params),stringType=ZodString.create,numberType=ZodNumber.create,nanType=ZodNaN.create,bigIntType=ZodBigInt.create,booleanType=ZodBoolean.create,dateType=ZodDate.create,symbolType=ZodSymbol.create,undefinedType=ZodUndefined.create,nullType=ZodNull.create,anyType=ZodAny.create,unknownType=ZodUnknown.create,neverType=ZodNever.create,voidType=ZodVoid.create,arrayType=ZodArray.create,objectType=ZodObject.create,strictObjectType=ZodObject.strictCreate,unionType=ZodUnion.create,discriminatedUnionType=ZodDiscriminatedUnion.create,intersectionType=ZodIntersection.create,tupleType=ZodTuple.create,recordType=ZodRecord.create,mapType=ZodMap.create,setType=ZodSet.create,functionType=ZodFunction.create,lazyType=ZodLazy.create,literalType=ZodLiteral.create,enumType=ZodEnum.create,nativeEnumType=ZodNativeEnum.create,promiseType=ZodPromise.create,effectsType=ZodEffects.create,optionalType=ZodOptional.create,nullableType=ZodNullable.create,preprocessType=ZodEffects.createWithPreprocess,pipelineType=ZodPipeline.create,ostring=()=>stringType().optional(),onumber=()=>numberType().optional(),oboolean=()=>booleanType().optional(),coerce={string:(arg=>ZodString.create({...arg,coerce:!0})),number:(arg=>ZodNumber.create({...arg,coerce:!0})),boolean:(arg=>ZodBoolean.create({...arg,coerce:!0})),bigint:(arg=>ZodBigInt.create({...arg,coerce:!0})),date:(arg=>ZodDate.create({...arg,coerce:!0}))};var NEVER=INVALID;var NEVER2=Object.freeze({status:"aborted"});function $constructor(name,initializer3,params){function init(inst,def){var _a;Object.defineProperty(inst,"_zod",{value:inst._zod??{},enumerable:!1}),(_a=inst._zod).traits??(_a.traits=new Set),inst._zod.traits.add(name),initializer3(inst,def);for(let k in _.prototype)k in inst||Object.defineProperty(inst,k,{value:_.prototype[k].bind(inst)});inst._zod.constr=_,inst._zod.def=def}let Parent=params?.Parent??Object;class Definition extends Parent{}Object.defineProperty(Definition,"name",{value:name});function _(def){var _a;let inst=params?.Parent?new Definition:this;init(inst,def),(_a=inst._zod).deferred??(_a.deferred=[]);for(let fn of inst._zod.deferred)fn();return inst}return Object.defineProperty(_,"init",{value:init}),Object.defineProperty(_,Symbol.hasInstance,{value:inst=>params?.Parent&&inst instanceof params.Parent?!0:inst?._zod?.traits?.has(name)}),Object.defineProperty(_,"name",{value:name}),_}var $ZodAsyncError=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},globalConfig={};function config(newConfig){return newConfig&&Object.assign(globalConfig,newConfig),globalConfig}var util_exports={};__export(util_exports,{BIGINT_FORMAT_RANGES:()=>BIGINT_FORMAT_RANGES,Class:()=>Class,NUMBER_FORMAT_RANGES:()=>NUMBER_FORMAT_RANGES,aborted:()=>aborted,allowsEval:()=>allowsEval,assert:()=>assert,assertEqual:()=>assertEqual,assertIs:()=>assertIs,assertNever:()=>assertNever,assertNotEqual:()=>assertNotEqual,assignProp:()=>assignProp,cached:()=>cached,captureStackTrace:()=>captureStackTrace,cleanEnum:()=>cleanEnum,cleanRegex:()=>cleanRegex,clone:()=>clone,createTransparentProxy:()=>createTransparentProxy,defineLazy:()=>defineLazy,esc:()=>esc,escapeRegex:()=>escapeRegex,extend:()=>extend,finalizeIssue:()=>finalizeIssue,floatSafeRemainder:()=>floatSafeRemainder2,getElementAtPath:()=>getElementAtPath,getEnumValues:()=>getEnumValues,getLengthableOrigin:()=>getLengthableOrigin,getParsedType:()=>getParsedType2,getSizableOrigin:()=>getSizableOrigin,isObject:()=>isObject,isPlainObject:()=>isPlainObject,issue:()=>issue,joinValues:()=>joinValues,jsonStringifyReplacer:()=>jsonStringifyReplacer,merge:()=>merge,normalizeParams:()=>normalizeParams,nullish:()=>nullish,numKeys:()=>numKeys,omit:()=>omit,optionalKeys:()=>optionalKeys,partial:()=>partial,pick:()=>pick,prefixIssues:()=>prefixIssues,primitiveTypes:()=>primitiveTypes,promiseAllObject:()=>promiseAllObject,propertyKeyTypes:()=>propertyKeyTypes,randomString:()=>randomString,required:()=>required,stringifyPrimitive:()=>stringifyPrimitive,unwrapMessage:()=>unwrapMessage});function assertEqual(val){return val}function assertNotEqual(val){return val}function assertIs(_arg){}function assertNever(_x){throw new Error}function assert(_){}function getEnumValues(entries){let numericValues=Object.values(entries).filter(v=>typeof v=="number");return Object.entries(entries).filter(([k,_])=>numericValues.indexOf(+k)===-1).map(([_,v])=>v)}function joinValues(array2,separator="|"){return array2.map(val=>stringifyPrimitive(val)).join(separator)}function jsonStringifyReplacer(_,value){return typeof value=="bigint"?value.toString():value}function cached(getter){return{get value(){{let value=getter();return Object.defineProperty(this,"value",{value}),value}throw new Error("cached value already set")}}}function nullish(input){return input==null}function cleanRegex(source){let start=source.startsWith("^")?1:0,end=source.endsWith("$")?source.length-1:source.length;return source.slice(start,end)}function floatSafeRemainder2(val,step){let valDecCount=(val.toString().split(".")[1]||"").length,stepDecCount=(step.toString().split(".")[1]||"").length,decCount=valDecCount>stepDecCount?valDecCount:stepDecCount,valInt=Number.parseInt(val.toFixed(decCount).replace(".","")),stepInt=Number.parseInt(step.toFixed(decCount).replace(".",""));return valInt%stepInt/10**decCount}function defineLazy(object3,key,getter){Object.defineProperty(object3,key,{get(){{let value=getter();return object3[key]=value,value}throw new Error("cached value already set")},set(v){Object.defineProperty(object3,key,{value:v})},configurable:!0})}function assignProp(target,prop,value){Object.defineProperty(target,prop,{value,writable:!0,enumerable:!0,configurable:!0})}function getElementAtPath(obj,path){return path?path.reduce((acc,key)=>acc?.[key],obj):obj}function promiseAllObject(promisesObj){let keys=Object.keys(promisesObj),promises=keys.map(key=>promisesObj[key]);return Promise.all(promises).then(results=>{let resolvedObj={};for(let i=0;i<keys.length;i++)resolvedObj[keys[i]]=results[i];return resolvedObj})}function randomString(length=10){let chars="abcdefghijklmnopqrstuvwxyz",str="";for(let i=0;i<length;i++)str+=chars[Math.floor(Math.random()*chars.length)];return str}function esc(str){return JSON.stringify(str)}var captureStackTrace=Error.captureStackTrace?Error.captureStackTrace:(..._args)=>{};function isObject(data){return typeof data=="object"&&data!==null&&!Array.isArray(data)}var allowsEval=cached(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let F=Function;return new F(""),!0}catch{return!1}});function isPlainObject(o){if(isObject(o)===!1)return!1;let ctor=o.constructor;if(ctor===void 0)return!0;let prot=ctor.prototype;return!(isObject(prot)===!1||Object.prototype.hasOwnProperty.call(prot,"isPrototypeOf")===!1)}function numKeys(data){let keyCount=0;for(let key in data)Object.prototype.hasOwnProperty.call(data,key)&&keyCount++;return keyCount}var getParsedType2=data=>{let t=typeof data;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(data)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(data)?"array":data===null?"null":data.then&&typeof data.then=="function"&&data.catch&&typeof data.catch=="function"?"promise":typeof Map<"u"&&data instanceof Map?"map":typeof Set<"u"&&data instanceof Set?"set":typeof Date<"u"&&data instanceof Date?"date":typeof File<"u"&&data instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},propertyKeyTypes=new Set(["string","number","symbol"]),primitiveTypes=new Set(["string","number","bigint","boolean","symbol","undefined"]);function escapeRegex(str){return str.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function clone(inst,def,params){let cl=new inst._zod.constr(def??inst._zod.def);return(!def||params?.parent)&&(cl._zod.parent=inst),cl}function normalizeParams(_params){let params=_params;if(!params)return{};if(typeof params=="string")return{error:()=>params};if(params?.message!==void 0){if(params?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");params.error=params.message}return delete params.message,typeof params.error=="string"?{...params,error:()=>params.error}:params}function createTransparentProxy(getter){let target;return new Proxy({},{get(_,prop,receiver){return target??(target=getter()),Reflect.get(target,prop,receiver)},set(_,prop,value,receiver){return target??(target=getter()),Reflect.set(target,prop,value,receiver)},has(_,prop){return target??(target=getter()),Reflect.has(target,prop)},deleteProperty(_,prop){return target??(target=getter()),Reflect.deleteProperty(target,prop)},ownKeys(_){return target??(target=getter()),Reflect.ownKeys(target)},getOwnPropertyDescriptor(_,prop){return target??(target=getter()),Reflect.getOwnPropertyDescriptor(target,prop)},defineProperty(_,prop,descriptor){return target??(target=getter()),Reflect.defineProperty(target,prop,descriptor)}})}function stringifyPrimitive(value){return typeof value=="bigint"?value.toString()+"n":typeof value=="string"?`"${value}"`:`${value}`}function optionalKeys(shape){return Object.keys(shape).filter(k=>shape[k]._zod.optin==="optional"&&shape[k]._zod.optout==="optional")}var NUMBER_FORMAT_RANGES={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},BIGINT_FORMAT_RANGES={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function pick(schema,mask){let newShape={},currDef=schema._zod.def;for(let key in mask){if(!(key in currDef.shape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&(newShape[key]=currDef.shape[key])}return clone(schema,{...schema._zod.def,shape:newShape,checks:[]})}function omit(schema,mask){let newShape={...schema._zod.def.shape},currDef=schema._zod.def;for(let key in mask){if(!(key in currDef.shape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&delete newShape[key]}return clone(schema,{...schema._zod.def,shape:newShape,checks:[]})}function extend(schema,shape){if(!isPlainObject(shape))throw new Error("Invalid input to extend: expected a plain object");let def={...schema._zod.def,get shape(){let _shape={...schema._zod.def.shape,...shape};return assignProp(this,"shape",_shape),_shape},checks:[]};return clone(schema,def)}function merge(a,b){return clone(a,{...a._zod.def,get shape(){let _shape={...a._zod.def.shape,...b._zod.def.shape};return assignProp(this,"shape",_shape),_shape},catchall:b._zod.def.catchall,checks:[]})}function partial(Class2,schema,mask){let oldShape=schema._zod.def.shape,shape={...oldShape};if(mask)for(let key in mask){if(!(key in oldShape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&(shape[key]=Class2?new Class2({type:"optional",innerType:oldShape[key]}):oldShape[key])}else for(let key in oldShape)shape[key]=Class2?new Class2({type:"optional",innerType:oldShape[key]}):oldShape[key];return clone(schema,{...schema._zod.def,shape,checks:[]})}function required(Class2,schema,mask){let oldShape=schema._zod.def.shape,shape={...oldShape};if(mask)for(let key in mask){if(!(key in shape))throw new Error(`Unrecognized key: "${key}"`);mask[key]&&(shape[key]=new Class2({type:"nonoptional",innerType:oldShape[key]}))}else for(let key in oldShape)shape[key]=new Class2({type:"nonoptional",innerType:oldShape[key]});return clone(schema,{...schema._zod.def,shape,checks:[]})}function aborted(x,startIndex=0){for(let i=startIndex;i<x.issues.length;i++)if(x.issues[i]?.continue!==!0)return!0;return!1}function prefixIssues(path,issues){return issues.map(iss=>{var _a;return(_a=iss).path??(_a.path=[]),iss.path.unshift(path),iss})}function unwrapMessage(message){return typeof message=="string"?message:message?.message}function finalizeIssue(iss,ctx,config2){let full={...iss,path:iss.path??[]};if(!iss.message){let message=unwrapMessage(iss.inst?._zod.def?.error?.(iss))??unwrapMessage(ctx?.error?.(iss))??unwrapMessage(config2.customError?.(iss))??unwrapMessage(config2.localeError?.(iss))??"Invalid input";full.message=message}return delete full.inst,delete full.continue,ctx?.reportInput||delete full.input,full}function getSizableOrigin(input){return input instanceof Set?"set":input instanceof Map?"map":input instanceof File?"file":"unknown"}function getLengthableOrigin(input){return Array.isArray(input)?"array":typeof input=="string"?"string":"unknown"}function issue(...args){let[iss,input,inst]=args;return typeof iss=="string"?{message:iss,code:"custom",input,inst}:{...iss}}function cleanEnum(obj){return Object.entries(obj).filter(([k,_])=>Number.isNaN(Number.parseInt(k,10))).map(el=>el[1])}var Class=class{constructor(..._args){}};var initializer=(inst,def)=>{inst.name="$ZodError",Object.defineProperty(inst,"_zod",{value:inst._zod,enumerable:!1}),Object.defineProperty(inst,"issues",{value:def,enumerable:!1}),Object.defineProperty(inst,"message",{get(){return JSON.stringify(def,jsonStringifyReplacer,2)},enumerable:!0}),Object.defineProperty(inst,"toString",{value:()=>inst.message,enumerable:!1})},$ZodError=$constructor("$ZodError",initializer),$ZodRealError=$constructor("$ZodError",initializer,{Parent:Error});function flattenError(error3,mapper=issue2=>issue2.message){let fieldErrors={},formErrors=[];for(let sub of error3.issues)sub.path.length>0?(fieldErrors[sub.path[0]]=fieldErrors[sub.path[0]]||[],fieldErrors[sub.path[0]].push(mapper(sub))):formErrors.push(mapper(sub));return{formErrors,fieldErrors}}function formatError(error3,_mapper){let mapper=_mapper||function(issue2){return issue2.message},fieldErrors={_errors:[]},processError=error4=>{for(let issue2 of error4.issues)if(issue2.code==="invalid_union"&&issue2.errors.length)issue2.errors.map(issues=>processError({issues}));else if(issue2.code==="invalid_key")processError({issues:issue2.issues});else if(issue2.code==="invalid_element")processError({issues:issue2.issues});else if(issue2.path.length===0)fieldErrors._errors.push(mapper(issue2));else{let curr=fieldErrors,i=0;for(;i<issue2.path.length;){let el=issue2.path[i];i===issue2.path.length-1?(curr[el]=curr[el]||{_errors:[]},curr[el]._errors.push(mapper(issue2))):curr[el]=curr[el]||{_errors:[]},curr=curr[el],i++}}};return processError(error3),fieldErrors}var _parse=_Err=>(schema,value,_ctx,_params)=>{let ctx=_ctx?Object.assign(_ctx,{async:!1}):{async:!1},result=schema._zod.run({value,issues:[]},ctx);if(result instanceof Promise)throw new $ZodAsyncError;if(result.issues.length){let e=new(_params?.Err??_Err)(result.issues.map(iss=>finalizeIssue(iss,ctx,config())));throw captureStackTrace(e,_params?.callee),e}return result.value},parse=_parse($ZodRealError),_parseAsync=_Err=>async(schema,value,_ctx,params)=>{let ctx=_ctx?Object.assign(_ctx,{async:!0}):{async:!0},result=schema._zod.run({value,issues:[]},ctx);if(result instanceof Promise&&(result=await result),result.issues.length){let e=new(params?.Err??_Err)(result.issues.map(iss=>finalizeIssue(iss,ctx,config())));throw captureStackTrace(e,params?.callee),e}return result.value},parseAsync=_parseAsync($ZodRealError),_safeParse=_Err=>(schema,value,_ctx)=>{let ctx=_ctx?{..._ctx,async:!1}:{async:!1},result=schema._zod.run({value,issues:[]},ctx);if(result instanceof Promise)throw new $ZodAsyncError;return result.issues.length?{success:!1,error:new(_Err??$ZodError)(result.issues.map(iss=>finalizeIssue(iss,ctx,config())))}:{success:!0,data:result.value}},safeParse=_safeParse($ZodRealError),_safeParseAsync=_Err=>async(schema,value,_ctx)=>{let ctx=_ctx?Object.assign(_ctx,{async:!0}):{async:!0},result=schema._zod.run({value,issues:[]},ctx);return result instanceof Promise&&(result=await result),result.issues.length?{success:!1,error:new _Err(result.issues.map(iss=>finalizeIssue(iss,ctx,config())))}:{success:!0,data:result.value}},safeParseAsync=_safeParseAsync($ZodRealError);var cuid=/^[cC][^\s-]{8,}$/,cuid2=/^[0-9a-z]+$/,ulid=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xid=/^[0-9a-vA-V]{20}$/,ksuid=/^[A-Za-z0-9]{27}$/,nanoid=/^[a-zA-Z0-9_-]{21}$/,duration=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var guid=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=version2=>version2?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version2}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;var email=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var _emoji="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function emoji(){return new RegExp(_emoji,"u")}var ipv4=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,cidrv4=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url=/^[A-Za-z0-9_-]*$/,hostname=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/;var e164=/^\+(?:[0-9]){6,14}[0-9]$/,dateSource="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",date=new RegExp(`^${dateSource}$`);function timeSource(args){let hhmm="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof args.precision=="number"?args.precision===-1?`${hhmm}`:args.precision===0?`${hhmm}:[0-5]\\d`:`${hhmm}:[0-5]\\d\\.\\d{${args.precision}}`:`${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time(args){return new RegExp(`^${timeSource(args)}$`)}function datetime(args){let time3=timeSource({precision:args.precision}),opts=["Z"];args.local&&opts.push(""),args.offset&&opts.push("([+-]\\d{2}:\\d{2})");let timeRegex2=`${time3}(?:${opts.join("|")})`;return new RegExp(`^${dateSource}T(?:${timeRegex2})$`)}var string=params=>{let regex=params?`[\\s\\S]{${params?.minimum??0},${params?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${regex}$`)};var integer=/^\d+$/,number=/^-?\d+(?:\.\d+)?/i,boolean=/true|false/i,_null=/null/i;var lowercase=/^[^A-Z]*$/,uppercase=/^[^a-z]*$/;var $ZodCheck=$constructor("$ZodCheck",(inst,def)=>{var _a;inst._zod??(inst._zod={}),inst._zod.def=def,(_a=inst._zod).onattach??(_a.onattach=[])}),numericOriginMap={number:"number",bigint:"bigint",object:"date"},$ZodCheckLessThan=$constructor("$ZodCheckLessThan",(inst,def)=>{$ZodCheck.init(inst,def);let origin=numericOriginMap[typeof def.value];inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag,curr=(def.inclusive?bag.maximum:bag.exclusiveMaximum)??Number.POSITIVE_INFINITY;def.value<curr&&(def.inclusive?bag.maximum=def.value:bag.exclusiveMaximum=def.value)}),inst._zod.check=payload=>{(def.inclusive?payload.value<=def.value:payload.value<def.value)||payload.issues.push({origin,code:"too_big",maximum:def.value,input:payload.value,inclusive:def.inclusive,inst,continue:!def.abort})}}),$ZodCheckGreaterThan=$constructor("$ZodCheckGreaterThan",(inst,def)=>{$ZodCheck.init(inst,def);let origin=numericOriginMap[typeof def.value];inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag,curr=(def.inclusive?bag.minimum:bag.exclusiveMinimum)??Number.NEGATIVE_INFINITY;def.value>curr&&(def.inclusive?bag.minimum=def.value:bag.exclusiveMinimum=def.value)}),inst._zod.check=payload=>{(def.inclusive?payload.value>=def.value:payload.value>def.value)||payload.issues.push({origin,code:"too_small",minimum:def.value,input:payload.value,inclusive:def.inclusive,inst,continue:!def.abort})}}),$ZodCheckMultipleOf=$constructor("$ZodCheckMultipleOf",(inst,def)=>{$ZodCheck.init(inst,def),inst._zod.onattach.push(inst2=>{var _a;(_a=inst2._zod.bag).multipleOf??(_a.multipleOf=def.value)}),inst._zod.check=payload=>{if(typeof payload.value!=typeof def.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof payload.value=="bigint"?payload.value%def.value===BigInt(0):floatSafeRemainder2(payload.value,def.value)===0)||payload.issues.push({origin:typeof payload.value,code:"not_multiple_of",divisor:def.value,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckNumberFormat=$constructor("$ZodCheckNumberFormat",(inst,def)=>{$ZodCheck.init(inst,def),def.format=def.format||"float64";let isInt=def.format?.includes("int"),origin=isInt?"int":"number",[minimum,maximum]=NUMBER_FORMAT_RANGES[def.format];inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.format=def.format,bag.minimum=minimum,bag.maximum=maximum,isInt&&(bag.pattern=integer)}),inst._zod.check=payload=>{let input=payload.value;if(isInt){if(!Number.isInteger(input)){payload.issues.push({expected:origin,format:def.format,code:"invalid_type",input,inst});return}if(!Number.isSafeInteger(input)){input>0?payload.issues.push({input,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst,origin,continue:!def.abort}):payload.issues.push({input,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst,origin,continue:!def.abort});return}}input<minimum&&payload.issues.push({origin:"number",input,code:"too_small",minimum,inclusive:!0,inst,continue:!def.abort}),input>maximum&&payload.issues.push({origin:"number",input,code:"too_big",maximum,inst})}});var $ZodCheckMaxLength=$constructor("$ZodCheckMaxLength",(inst,def)=>{var _a;$ZodCheck.init(inst,def),(_a=inst._zod.def).when??(_a.when=payload=>{let val=payload.value;return!nullish(val)&&val.length!==void 0}),inst._zod.onattach.push(inst2=>{let curr=inst2._zod.bag.maximum??Number.POSITIVE_INFINITY;def.maximum<curr&&(inst2._zod.bag.maximum=def.maximum)}),inst._zod.check=payload=>{let input=payload.value;if(input.length<=def.maximum)return;let origin=getLengthableOrigin(input);payload.issues.push({origin,code:"too_big",maximum:def.maximum,inclusive:!0,input,inst,continue:!def.abort})}}),$ZodCheckMinLength=$constructor("$ZodCheckMinLength",(inst,def)=>{var _a;$ZodCheck.init(inst,def),(_a=inst._zod.def).when??(_a.when=payload=>{let val=payload.value;return!nullish(val)&&val.length!==void 0}),inst._zod.onattach.push(inst2=>{let curr=inst2._zod.bag.minimum??Number.NEGATIVE_INFINITY;def.minimum>curr&&(inst2._zod.bag.minimum=def.minimum)}),inst._zod.check=payload=>{let input=payload.value;if(input.length>=def.minimum)return;let origin=getLengthableOrigin(input);payload.issues.push({origin,code:"too_small",minimum:def.minimum,inclusive:!0,input,inst,continue:!def.abort})}}),$ZodCheckLengthEquals=$constructor("$ZodCheckLengthEquals",(inst,def)=>{var _a;$ZodCheck.init(inst,def),(_a=inst._zod.def).when??(_a.when=payload=>{let val=payload.value;return!nullish(val)&&val.length!==void 0}),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.minimum=def.length,bag.maximum=def.length,bag.length=def.length}),inst._zod.check=payload=>{let input=payload.value,length=input.length;if(length===def.length)return;let origin=getLengthableOrigin(input),tooBig=length>def.length;payload.issues.push({origin,...tooBig?{code:"too_big",maximum:def.length}:{code:"too_small",minimum:def.length},inclusive:!0,exact:!0,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckStringFormat=$constructor("$ZodCheckStringFormat",(inst,def)=>{var _a,_b;$ZodCheck.init(inst,def),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.format=def.format,def.pattern&&(bag.patterns??(bag.patterns=new Set),bag.patterns.add(def.pattern))}),def.pattern?(_a=inst._zod).check??(_a.check=payload=>{def.pattern.lastIndex=0,!def.pattern.test(payload.value)&&payload.issues.push({origin:"string",code:"invalid_format",format:def.format,input:payload.value,...def.pattern?{pattern:def.pattern.toString()}:{},inst,continue:!def.abort})}):(_b=inst._zod).check??(_b.check=()=>{})}),$ZodCheckRegex=$constructor("$ZodCheckRegex",(inst,def)=>{$ZodCheckStringFormat.init(inst,def),inst._zod.check=payload=>{def.pattern.lastIndex=0,!def.pattern.test(payload.value)&&payload.issues.push({origin:"string",code:"invalid_format",format:"regex",input:payload.value,pattern:def.pattern.toString(),inst,continue:!def.abort})}}),$ZodCheckLowerCase=$constructor("$ZodCheckLowerCase",(inst,def)=>{def.pattern??(def.pattern=lowercase),$ZodCheckStringFormat.init(inst,def)}),$ZodCheckUpperCase=$constructor("$ZodCheckUpperCase",(inst,def)=>{def.pattern??(def.pattern=uppercase),$ZodCheckStringFormat.init(inst,def)}),$ZodCheckIncludes=$constructor("$ZodCheckIncludes",(inst,def)=>{$ZodCheck.init(inst,def);let escapedRegex=escapeRegex(def.includes),pattern=new RegExp(typeof def.position=="number"?`^.{${def.position}}${escapedRegex}`:escapedRegex);def.pattern=pattern,inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.patterns??(bag.patterns=new Set),bag.patterns.add(pattern)}),inst._zod.check=payload=>{payload.value.includes(def.includes,def.position)||payload.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:def.includes,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckStartsWith=$constructor("$ZodCheckStartsWith",(inst,def)=>{$ZodCheck.init(inst,def);let pattern=new RegExp(`^${escapeRegex(def.prefix)}.*`);def.pattern??(def.pattern=pattern),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.patterns??(bag.patterns=new Set),bag.patterns.add(pattern)}),inst._zod.check=payload=>{payload.value.startsWith(def.prefix)||payload.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:def.prefix,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckEndsWith=$constructor("$ZodCheckEndsWith",(inst,def)=>{$ZodCheck.init(inst,def);let pattern=new RegExp(`.*${escapeRegex(def.suffix)}$`);def.pattern??(def.pattern=pattern),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.patterns??(bag.patterns=new Set),bag.patterns.add(pattern)}),inst._zod.check=payload=>{payload.value.endsWith(def.suffix)||payload.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:def.suffix,input:payload.value,inst,continue:!def.abort})}});var $ZodCheckOverwrite=$constructor("$ZodCheckOverwrite",(inst,def)=>{$ZodCheck.init(inst,def),inst._zod.check=payload=>{payload.value=def.tx(payload.value)}});var Doc=class{constructor(args=[]){this.content=[],this.indent=0,this&&(this.args=args)}indented(fn){this.indent+=1,fn(this),this.indent-=1}write(arg){if(typeof arg=="function"){arg(this,{execution:"sync"}),arg(this,{execution:"async"});return}let lines=arg.split(`
|
|
152
152
|
`).filter(x=>x),minIndent=Math.min(...lines.map(x=>x.length-x.trimStart().length)),dedented=lines.map(x=>x.slice(minIndent)).map(x=>" ".repeat(this.indent*2)+x);for(let line of dedented)this.content.push(line)}compile(){let F=Function,args=this?.args,lines=[...(this?.content??[""]).map(x=>` ${x}`)];return new F(...args,lines.join(`
|
|
153
153
|
`))}};var version={major:4,minor:0,patch:0};var $ZodType=$constructor("$ZodType",(inst,def)=>{var _a;inst??(inst={}),inst._zod.def=def,inst._zod.bag=inst._zod.bag||{},inst._zod.version=version;let checks=[...inst._zod.def.checks??[]];inst._zod.traits.has("$ZodCheck")&&checks.unshift(inst);for(let ch of checks)for(let fn of ch._zod.onattach)fn(inst);if(checks.length===0)(_a=inst._zod).deferred??(_a.deferred=[]),inst._zod.deferred?.push(()=>{inst._zod.run=inst._zod.parse});else{let runChecks=(payload,checks2,ctx)=>{let isAborted2=aborted(payload),asyncResult;for(let ch of checks2){if(ch._zod.def.when){if(!ch._zod.def.when(payload))continue}else if(isAborted2)continue;let currLen=payload.issues.length,_=ch._zod.check(payload);if(_ instanceof Promise&&ctx?.async===!1)throw new $ZodAsyncError;if(asyncResult||_ instanceof Promise)asyncResult=(asyncResult??Promise.resolve()).then(async()=>{await _,payload.issues.length!==currLen&&(isAborted2||(isAborted2=aborted(payload,currLen)))});else{if(payload.issues.length===currLen)continue;isAborted2||(isAborted2=aborted(payload,currLen))}}return asyncResult?asyncResult.then(()=>payload):payload};inst._zod.run=(payload,ctx)=>{let result=inst._zod.parse(payload,ctx);if(result instanceof Promise){if(ctx.async===!1)throw new $ZodAsyncError;return result.then(result2=>runChecks(result2,checks,ctx))}return runChecks(result,checks,ctx)}}inst["~standard"]={validate:value=>{try{let r=safeParse(inst,value);return r.success?{value:r.data}:{issues:r.error?.issues}}catch{return safeParseAsync(inst,value).then(r=>r.success?{value:r.data}:{issues:r.error?.issues})}},vendor:"zod",version:1}}),$ZodString=$constructor("$ZodString",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=[...inst?._zod.bag?.patterns??[]].pop()??string(inst._zod.bag),inst._zod.parse=(payload,_)=>{if(def.coerce)try{payload.value=String(payload.value)}catch{}return typeof payload.value=="string"||payload.issues.push({expected:"string",code:"invalid_type",input:payload.value,inst}),payload}}),$ZodStringFormat=$constructor("$ZodStringFormat",(inst,def)=>{$ZodCheckStringFormat.init(inst,def),$ZodString.init(inst,def)}),$ZodGUID=$constructor("$ZodGUID",(inst,def)=>{def.pattern??(def.pattern=guid),$ZodStringFormat.init(inst,def)}),$ZodUUID=$constructor("$ZodUUID",(inst,def)=>{if(def.version){let v={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[def.version];if(v===void 0)throw new Error(`Invalid UUID version: "${def.version}"`);def.pattern??(def.pattern=uuid(v))}else def.pattern??(def.pattern=uuid());$ZodStringFormat.init(inst,def)}),$ZodEmail=$constructor("$ZodEmail",(inst,def)=>{def.pattern??(def.pattern=email),$ZodStringFormat.init(inst,def)}),$ZodURL=$constructor("$ZodURL",(inst,def)=>{$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{try{let orig=payload.value,url=new URL(orig),href=url.href;def.hostname&&(def.hostname.lastIndex=0,def.hostname.test(url.hostname)||payload.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:hostname.source,input:payload.value,inst,continue:!def.abort})),def.protocol&&(def.protocol.lastIndex=0,def.protocol.test(url.protocol.endsWith(":")?url.protocol.slice(0,-1):url.protocol)||payload.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:def.protocol.source,input:payload.value,inst,continue:!def.abort})),!orig.endsWith("/")&&href.endsWith("/")?payload.value=href.slice(0,-1):payload.value=href;return}catch{payload.issues.push({code:"invalid_format",format:"url",input:payload.value,inst,continue:!def.abort})}}}),$ZodEmoji=$constructor("$ZodEmoji",(inst,def)=>{def.pattern??(def.pattern=emoji()),$ZodStringFormat.init(inst,def)}),$ZodNanoID=$constructor("$ZodNanoID",(inst,def)=>{def.pattern??(def.pattern=nanoid),$ZodStringFormat.init(inst,def)}),$ZodCUID=$constructor("$ZodCUID",(inst,def)=>{def.pattern??(def.pattern=cuid),$ZodStringFormat.init(inst,def)}),$ZodCUID2=$constructor("$ZodCUID2",(inst,def)=>{def.pattern??(def.pattern=cuid2),$ZodStringFormat.init(inst,def)}),$ZodULID=$constructor("$ZodULID",(inst,def)=>{def.pattern??(def.pattern=ulid),$ZodStringFormat.init(inst,def)}),$ZodXID=$constructor("$ZodXID",(inst,def)=>{def.pattern??(def.pattern=xid),$ZodStringFormat.init(inst,def)}),$ZodKSUID=$constructor("$ZodKSUID",(inst,def)=>{def.pattern??(def.pattern=ksuid),$ZodStringFormat.init(inst,def)}),$ZodISODateTime=$constructor("$ZodISODateTime",(inst,def)=>{def.pattern??(def.pattern=datetime(def)),$ZodStringFormat.init(inst,def)}),$ZodISODate=$constructor("$ZodISODate",(inst,def)=>{def.pattern??(def.pattern=date),$ZodStringFormat.init(inst,def)}),$ZodISOTime=$constructor("$ZodISOTime",(inst,def)=>{def.pattern??(def.pattern=time(def)),$ZodStringFormat.init(inst,def)}),$ZodISODuration=$constructor("$ZodISODuration",(inst,def)=>{def.pattern??(def.pattern=duration),$ZodStringFormat.init(inst,def)}),$ZodIPv4=$constructor("$ZodIPv4",(inst,def)=>{def.pattern??(def.pattern=ipv4),$ZodStringFormat.init(inst,def),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.format="ipv4"})}),$ZodIPv6=$constructor("$ZodIPv6",(inst,def)=>{def.pattern??(def.pattern=ipv6),$ZodStringFormat.init(inst,def),inst._zod.onattach.push(inst2=>{let bag=inst2._zod.bag;bag.format="ipv6"}),inst._zod.check=payload=>{try{new URL(`http://[${payload.value}]`)}catch{payload.issues.push({code:"invalid_format",format:"ipv6",input:payload.value,inst,continue:!def.abort})}}}),$ZodCIDRv4=$constructor("$ZodCIDRv4",(inst,def)=>{def.pattern??(def.pattern=cidrv4),$ZodStringFormat.init(inst,def)}),$ZodCIDRv6=$constructor("$ZodCIDRv6",(inst,def)=>{def.pattern??(def.pattern=cidrv6),$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{let[address,prefix]=payload.value.split("/");try{if(!prefix)throw new Error;let prefixNum=Number(prefix);if(`${prefixNum}`!==prefix)throw new Error;if(prefixNum<0||prefixNum>128)throw new Error;new URL(`http://[${address}]`)}catch{payload.issues.push({code:"invalid_format",format:"cidrv6",input:payload.value,inst,continue:!def.abort})}}});function isValidBase64(data){if(data==="")return!0;if(data.length%4!==0)return!1;try{return atob(data),!0}catch{return!1}}var $ZodBase64=$constructor("$ZodBase64",(inst,def)=>{def.pattern??(def.pattern=base64),$ZodStringFormat.init(inst,def),inst._zod.onattach.push(inst2=>{inst2._zod.bag.contentEncoding="base64"}),inst._zod.check=payload=>{isValidBase64(payload.value)||payload.issues.push({code:"invalid_format",format:"base64",input:payload.value,inst,continue:!def.abort})}});function isValidBase64URL(data){if(!base64url.test(data))return!1;let base642=data.replace(/[-_]/g,c=>c==="-"?"+":"/"),padded=base642.padEnd(Math.ceil(base642.length/4)*4,"=");return isValidBase64(padded)}var $ZodBase64URL=$constructor("$ZodBase64URL",(inst,def)=>{def.pattern??(def.pattern=base64url),$ZodStringFormat.init(inst,def),inst._zod.onattach.push(inst2=>{inst2._zod.bag.contentEncoding="base64url"}),inst._zod.check=payload=>{isValidBase64URL(payload.value)||payload.issues.push({code:"invalid_format",format:"base64url",input:payload.value,inst,continue:!def.abort})}}),$ZodE164=$constructor("$ZodE164",(inst,def)=>{def.pattern??(def.pattern=e164),$ZodStringFormat.init(inst,def)});function isValidJWT2(token,algorithm=null){try{let tokensParts=token.split(".");if(tokensParts.length!==3)return!1;let[header]=tokensParts;if(!header)return!1;let parsedHeader=JSON.parse(atob(header));return!("typ"in parsedHeader&&parsedHeader?.typ!=="JWT"||!parsedHeader.alg||algorithm&&(!("alg"in parsedHeader)||parsedHeader.alg!==algorithm))}catch{return!1}}var $ZodJWT=$constructor("$ZodJWT",(inst,def)=>{$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{isValidJWT2(payload.value,def.alg)||payload.issues.push({code:"invalid_format",format:"jwt",input:payload.value,inst,continue:!def.abort})}});var $ZodNumber=$constructor("$ZodNumber",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=inst._zod.bag.pattern??number,inst._zod.parse=(payload,_ctx)=>{if(def.coerce)try{payload.value=Number(payload.value)}catch{}let input=payload.value;if(typeof input=="number"&&!Number.isNaN(input)&&Number.isFinite(input))return payload;let received=typeof input=="number"?Number.isNaN(input)?"NaN":Number.isFinite(input)?void 0:"Infinity":void 0;return payload.issues.push({expected:"number",code:"invalid_type",input,inst,...received?{received}:{}}),payload}}),$ZodNumberFormat=$constructor("$ZodNumber",(inst,def)=>{$ZodCheckNumberFormat.init(inst,def),$ZodNumber.init(inst,def)}),$ZodBoolean=$constructor("$ZodBoolean",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=boolean,inst._zod.parse=(payload,_ctx)=>{if(def.coerce)try{payload.value=!!payload.value}catch{}let input=payload.value;return typeof input=="boolean"||payload.issues.push({expected:"boolean",code:"invalid_type",input,inst}),payload}});var $ZodNull=$constructor("$ZodNull",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=_null,inst._zod.values=new Set([null]),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;return input===null||payload.issues.push({expected:"null",code:"invalid_type",input,inst}),payload}});var $ZodUnknown=$constructor("$ZodUnknown",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=payload=>payload}),$ZodNever=$constructor("$ZodNever",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,_ctx)=>(payload.issues.push({expected:"never",code:"invalid_type",input:payload.value,inst}),payload)});function handleArrayResult(result,final,index){result.issues.length&&final.issues.push(...prefixIssues(index,result.issues)),final.value[index]=result.value}var $ZodArray=$constructor("$ZodArray",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!Array.isArray(input))return payload.issues.push({expected:"array",code:"invalid_type",input,inst}),payload;payload.value=Array(input.length);let proms=[];for(let i=0;i<input.length;i++){let item=input[i],result=def.element._zod.run({value:item,issues:[]},ctx);result instanceof Promise?proms.push(result.then(result2=>handleArrayResult(result2,payload,i))):handleArrayResult(result,payload,i)}return proms.length?Promise.all(proms).then(()=>payload):payload}});function handleObjectResult(result,final,key){result.issues.length&&final.issues.push(...prefixIssues(key,result.issues)),final.value[key]=result.value}function handleOptionalObjectResult(result,final,key,input){result.issues.length?input[key]===void 0?key in input?final.value[key]=void 0:final.value[key]=result.value:final.issues.push(...prefixIssues(key,result.issues)):result.value===void 0?key in input&&(final.value[key]=void 0):final.value[key]=result.value}var $ZodObject=$constructor("$ZodObject",(inst,def)=>{$ZodType.init(inst,def);let _normalized=cached(()=>{let keys=Object.keys(def.shape);for(let k of keys)if(!(def.shape[k]instanceof $ZodType))throw new Error(`Invalid element at key "${k}": expected a Zod schema`);let okeys=optionalKeys(def.shape);return{shape:def.shape,keys,keySet:new Set(keys),numKeys:keys.length,optionalKeys:new Set(okeys)}});defineLazy(inst._zod,"propValues",()=>{let shape=def.shape,propValues={};for(let key in shape){let field=shape[key]._zod;if(field.values){propValues[key]??(propValues[key]=new Set);for(let v of field.values)propValues[key].add(v)}}return propValues});let generateFastpass=shape=>{let doc=new Doc(["shape","payload","ctx"]),normalized=_normalized.value,parseStr=key=>{let k=esc(key);return`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`};doc.write("const input = payload.value;");let ids=Object.create(null),counter=0;for(let key of normalized.keys)ids[key]=`key_${counter++}`;doc.write("const newResult = {}");for(let key of normalized.keys)if(normalized.optionalKeys.has(key)){let id=ids[key];doc.write(`const ${id} = ${parseStr(key)};`);let k=esc(key);doc.write(`
|
|
154
154
|
if (${id}.issues.length) {
|
|
@@ -195,11 +195,11 @@ data:
|
|
|
195
195
|
`,controller.enqueue(encoder.encode(eventData)),!0}catch(error3){return this.onerror?.(error3),!1}}handleUnsupportedRequest(){return this.onerror?.(new Error("Method not allowed.")),new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(req,options){try{let acceptHeader=req.headers.get("accept");if(!acceptHeader?.includes("application/json")||!acceptHeader.includes("text/event-stream"))return this.onerror?.(new Error("Not Acceptable: Client must accept both application/json and text/event-stream")),this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept both application/json and text/event-stream");let ct=req.headers.get("content-type");if(!ct||!ct.includes("application/json"))return this.onerror?.(new Error("Unsupported Media Type: Content-Type must be application/json")),this.createJsonErrorResponse(415,-32e3,"Unsupported Media Type: Content-Type must be application/json");let requestInfo={headers:Object.fromEntries(req.headers.entries()),url:new URL(req.url)},rawMessage;if(options?.parsedBody!==void 0)rawMessage=options.parsedBody;else try{rawMessage=await req.json()}catch{return this.onerror?.(new Error("Parse error: Invalid JSON")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let messages;try{Array.isArray(rawMessage)?messages=rawMessage.map(msg=>JSONRPCMessageSchema.parse(msg)):messages=[JSONRPCMessageSchema.parse(rawMessage)]}catch{return this.onerror?.(new Error("Parse error: Invalid JSON-RPC message")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let isInitializationRequest=messages.some(isInitializeRequest);if(isInitializationRequest){if(this._initialized&&this.sessionId!==void 0)return this.onerror?.(new Error("Invalid Request: Server already initialized")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(messages.length>1)return this.onerror?.(new Error("Invalid Request: Only one initialization request is allowed")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!isInitializationRequest){let sessionError=this.validateSession(req);if(sessionError)return sessionError;let protocolError=this.validateProtocolVersion(req);if(protocolError)return protocolError}if(!messages.some(isJSONRPCRequest)){for(let message of messages)this.onmessage?.(message,{authInfo:options?.authInfo,requestInfo});return new Response(null,{status:202})}let streamId=crypto.randomUUID(),initRequest=messages.find(m=>isInitializeRequest(m)),clientProtocolVersion=initRequest?initRequest.params.protocolVersion:req.headers.get("mcp-protocol-version")??DEFAULT_NEGOTIATED_PROTOCOL_VERSION;if(this._enableJsonResponse)return new Promise(resolve=>{this._streamMapping.set(streamId,{resolveJson:resolve,cleanup:()=>{this._streamMapping.delete(streamId)}});for(let message of messages)isJSONRPCRequest(message)&&this._requestToStreamMapping.set(message.id,streamId);for(let message of messages)this.onmessage?.(message,{authInfo:options?.authInfo,requestInfo})});let encoder=new TextEncoder,streamController,readable=new ReadableStream({start:controller=>{streamController=controller},cancel:()=>{this._streamMapping.delete(streamId)}}),headers={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};this.sessionId!==void 0&&(headers["mcp-session-id"]=this.sessionId);for(let message of messages)isJSONRPCRequest(message)&&(this._streamMapping.set(streamId,{controller:streamController,encoder,cleanup:()=>{this._streamMapping.delete(streamId);try{streamController.close()}catch{}}}),this._requestToStreamMapping.set(message.id,streamId));await this.writePrimingEvent(streamController,encoder,streamId,clientProtocolVersion);for(let message of messages){let closeSSEStream,closeStandaloneSSEStream;isJSONRPCRequest(message)&&this._eventStore&&clientProtocolVersion>="2025-11-25"&&(closeSSEStream=()=>{this.closeSSEStream(message.id)},closeStandaloneSSEStream=()=>{this.closeStandaloneSSEStream()}),this.onmessage?.(message,{authInfo:options?.authInfo,requestInfo,closeSSEStream,closeStandaloneSSEStream})}return new Response(readable,{status:200,headers})}catch(error3){return this.onerror?.(error3),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(error3)})}}async handleDeleteRequest(req){let sessionError=this.validateSession(req);if(sessionError)return sessionError;let protocolError=this.validateProtocolVersion(req);return protocolError||(await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200}))}validateSession(req){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.onerror?.(new Error("Bad Request: Server not initialized")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Server not initialized");let sessionId=req.headers.get("mcp-session-id");if(!sessionId)return this.onerror?.(new Error("Bad Request: Mcp-Session-Id header is required")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Mcp-Session-Id header is required");if(sessionId!==this.sessionId)return this.onerror?.(new Error("Session not found")),this.createJsonErrorResponse(404,-32001,"Session not found")}validateProtocolVersion(req){let protocolVersion=req.headers.get("mcp-protocol-version");if(protocolVersion!==null&&!SUPPORTED_PROTOCOL_VERSIONS.includes(protocolVersion))return this.onerror?.(new Error(`Bad Request: Unsupported protocol version: ${protocolVersion} (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${protocolVersion} (supported versions: ${SUPPORTED_PROTOCOL_VERSIONS.join(", ")})`)}async close(){this._streamMapping.forEach(({cleanup})=>{cleanup()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(requestId){let streamId=this._requestToStreamMapping.get(requestId);if(!streamId)return;let stream=this._streamMapping.get(streamId);stream&&stream.cleanup()}closeStandaloneSSEStream(){let stream=this._streamMapping.get(this._standaloneSseStreamId);stream&&stream.cleanup()}async send(message,options){let requestId=options?.relatedRequestId;if((isJSONRPCResultResponse(message)||isJSONRPCErrorResponse(message))&&(requestId=message.id),requestId===void 0){if(isJSONRPCResultResponse(message)||isJSONRPCErrorResponse(message))throw new Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let eventId;this._eventStore&&(eventId=await this._eventStore.storeEvent(this._standaloneSseStreamId,message));let standaloneSse=this._streamMapping.get(this._standaloneSseStreamId);if(standaloneSse===void 0)return;standaloneSse.controller&&standaloneSse.encoder&&this.writeSSEEvent(standaloneSse.controller,standaloneSse.encoder,message,eventId);return}let streamId=this._requestToStreamMapping.get(requestId);if(!streamId)throw new Error(`No connection established for request ID: ${String(requestId)}`);let stream=this._streamMapping.get(streamId);if(!this._enableJsonResponse&&stream?.controller&&stream?.encoder){let eventId;this._eventStore&&(eventId=await this._eventStore.storeEvent(streamId,message)),this.writeSSEEvent(stream.controller,stream.encoder,message,eventId)}if(isJSONRPCResultResponse(message)||isJSONRPCErrorResponse(message)){this._requestResponseMap.set(requestId,message);let relatedIds=Array.from(this._requestToStreamMapping.entries()).filter(([_,sid])=>sid===streamId).map(([id])=>id);if(relatedIds.every(id=>this._requestResponseMap.has(id))){if(!stream)throw new Error(`No connection established for request ID: ${String(requestId)}`);if(this._enableJsonResponse&&stream.resolveJson){let headers={"Content-Type":"application/json"};this.sessionId!==void 0&&(headers["mcp-session-id"]=this.sessionId);let responses=relatedIds.map(id=>this._requestResponseMap.get(id));responses.length===1?stream.resolveJson(new Response(JSON.stringify(responses[0]),{status:200,headers})):stream.resolveJson(new Response(JSON.stringify(responses),{status:200,headers}))}else stream.cleanup();for(let id of relatedIds)this._requestResponseMap.delete(id),this._requestToStreamMapping.delete(id)}}}};var StreamableHTTPServerTransport=class{constructor(options={}){this._requestContext=new WeakMap,this._webStandardTransport=new WebStandardStreamableHTTPServerTransport(options),this._requestListener=getRequestListener(async webRequest=>{let context=this._requestContext.get(webRequest);return this._webStandardTransport.handleRequest(webRequest,{authInfo:context?.authInfo,parsedBody:context?.parsedBody})},{overrideGlobalObjects:!1})}get sessionId(){return this._webStandardTransport.sessionId}set onclose(handler){this._webStandardTransport.onclose=handler}get onclose(){return this._webStandardTransport.onclose}set onerror(handler){this._webStandardTransport.onerror=handler}get onerror(){return this._webStandardTransport.onerror}set onmessage(handler){this._webStandardTransport.onmessage=handler}get onmessage(){return this._webStandardTransport.onmessage}async start(){return this._webStandardTransport.start()}async close(){return this._webStandardTransport.close()}async send(message,options){return this._webStandardTransport.send(message,options)}async handleRequest(req,res,parsedBody){let authInfo=req.auth;await getRequestListener(async webRequest=>this._webStandardTransport.handleRequest(webRequest,{authInfo,parsedBody}),{overrideGlobalObjects:!1})(req,res)}closeSSEStream(requestId){this._webStandardTransport.closeSSEStream(requestId)}closeStandaloneSSEStream(){this._webStandardTransport.closeStandaloneSSEStream()}};var Code;(function(Code2){Code2[Code2.Canceled=1]="Canceled",Code2[Code2.Unknown=2]="Unknown",Code2[Code2.InvalidArgument=3]="InvalidArgument",Code2[Code2.DeadlineExceeded=4]="DeadlineExceeded",Code2[Code2.NotFound=5]="NotFound",Code2[Code2.AlreadyExists=6]="AlreadyExists",Code2[Code2.PermissionDenied=7]="PermissionDenied",Code2[Code2.ResourceExhausted=8]="ResourceExhausted",Code2[Code2.FailedPrecondition=9]="FailedPrecondition",Code2[Code2.Aborted=10]="Aborted",Code2[Code2.OutOfRange=11]="OutOfRange",Code2[Code2.Unimplemented=12]="Unimplemented",Code2[Code2.Internal=13]="Internal",Code2[Code2.Unavailable=14]="Unavailable",Code2[Code2.DataLoss=15]="DataLoss",Code2[Code2.Unauthenticated=16]="Unauthenticated"})(Code||(Code={}));function isMessage(arg,schema){return arg!==null&&typeof arg=="object"&&"$typeName"in arg&&typeof arg.$typeName=="string"?schema===void 0?!0:schema.typeName===arg.$typeName:!1}var ScalarType;(function(ScalarType2){ScalarType2[ScalarType2.DOUBLE=1]="DOUBLE",ScalarType2[ScalarType2.FLOAT=2]="FLOAT",ScalarType2[ScalarType2.INT64=3]="INT64",ScalarType2[ScalarType2.UINT64=4]="UINT64",ScalarType2[ScalarType2.INT32=5]="INT32",ScalarType2[ScalarType2.FIXED64=6]="FIXED64",ScalarType2[ScalarType2.FIXED32=7]="FIXED32",ScalarType2[ScalarType2.BOOL=8]="BOOL",ScalarType2[ScalarType2.STRING=9]="STRING",ScalarType2[ScalarType2.BYTES=12]="BYTES",ScalarType2[ScalarType2.UINT32=13]="UINT32",ScalarType2[ScalarType2.SFIXED32=15]="SFIXED32",ScalarType2[ScalarType2.SFIXED64=16]="SFIXED64",ScalarType2[ScalarType2.SINT32=17]="SINT32",ScalarType2[ScalarType2.SINT64=18]="SINT64"})(ScalarType||(ScalarType={}));function varint64read(){let lowBits=0,highBits=0;for(let shift=0;shift<28;shift+=7){let b=this.buf[this.pos++];if(lowBits|=(b&127)<<shift,(b&128)==0)return this.assertBounds(),[lowBits,highBits]}let middleByte=this.buf[this.pos++];if(lowBits|=(middleByte&15)<<28,highBits=(middleByte&112)>>4,(middleByte&128)==0)return this.assertBounds(),[lowBits,highBits];for(let shift=3;shift<=31;shift+=7){let b=this.buf[this.pos++];if(highBits|=(b&127)<<shift,(b&128)==0)return this.assertBounds(),[lowBits,highBits]}throw new Error("invalid varint")}function varint64write(lo,hi,bytes){for(let i=0;i<28;i=i+7){let shift=lo>>>i,hasNext=!(!(shift>>>7)&&hi==0),byte=(hasNext?shift|128:shift)&255;if(bytes.push(byte),!hasNext)return}let splitBits=lo>>>28&15|(hi&7)<<4,hasMoreBits=hi>>3!=0;if(bytes.push((hasMoreBits?splitBits|128:splitBits)&255),!!hasMoreBits){for(let i=3;i<31;i=i+7){let shift=hi>>>i,hasNext=!!(shift>>>7),byte=(hasNext?shift|128:shift)&255;if(bytes.push(byte),!hasNext)return}bytes.push(hi>>>31&1)}}var TWO_PWR_32_DBL=4294967296;function int64FromString(dec){let minus=dec[0]==="-";minus&&(dec=dec.slice(1));let base=1e6,lowBits=0,highBits=0;function add1e6digit(begin,end){let digit1e6=Number(dec.slice(begin,end));highBits*=base,lowBits=lowBits*base+digit1e6,lowBits>=TWO_PWR_32_DBL&&(highBits=highBits+(lowBits/TWO_PWR_32_DBL|0),lowBits=lowBits%TWO_PWR_32_DBL)}return add1e6digit(-24,-18),add1e6digit(-18,-12),add1e6digit(-12,-6),add1e6digit(-6),minus?negate(lowBits,highBits):newBits(lowBits,highBits)}function int64ToString(lo,hi){let bits=newBits(lo,hi),negative=bits.hi&2147483648;negative&&(bits=negate(bits.lo,bits.hi));let result=uInt64ToString(bits.lo,bits.hi);return negative?"-"+result:result}function uInt64ToString(lo,hi){if({lo,hi}=toUnsigned(lo,hi),hi<=2097151)return String(TWO_PWR_32_DBL*hi+lo);let low=lo&16777215,mid=(lo>>>24|hi<<8)&16777215,high=hi>>16&65535,digitA=low+mid*6777216+high*6710656,digitB=mid+high*8147497,digitC=high*2,base=1e7;return digitA>=base&&(digitB+=Math.floor(digitA/base),digitA%=base),digitB>=base&&(digitC+=Math.floor(digitB/base),digitB%=base),digitC.toString()+decimalFrom1e7WithLeadingZeros(digitB)+decimalFrom1e7WithLeadingZeros(digitA)}function toUnsigned(lo,hi){return{lo:lo>>>0,hi:hi>>>0}}function newBits(lo,hi){return{lo:lo|0,hi:hi|0}}function negate(lowBits,highBits){return highBits=~highBits,lowBits?lowBits=~lowBits+1:highBits+=1,newBits(lowBits,highBits)}var decimalFrom1e7WithLeadingZeros=digit1e7=>{let partial2=String(digit1e7);return"0000000".slice(partial2.length)+partial2};function varint32write(value,bytes){if(value>=0){for(;value>127;)bytes.push(value&127|128),value=value>>>7;bytes.push(value)}else{for(let i=0;i<9;i++)bytes.push(value&127|128),value=value>>7;bytes.push(1)}}function varint32read(){let b=this.buf[this.pos++],result=b&127;if((b&128)==0)return this.assertBounds(),result;if(b=this.buf[this.pos++],result|=(b&127)<<7,(b&128)==0)return this.assertBounds(),result;if(b=this.buf[this.pos++],result|=(b&127)<<14,(b&128)==0)return this.assertBounds(),result;if(b=this.buf[this.pos++],result|=(b&127)<<21,(b&128)==0)return this.assertBounds(),result;b=this.buf[this.pos++],result|=(b&15)<<28;for(let readBytes=5;(b&128)!==0&&readBytes<10;readBytes++)b=this.buf[this.pos++];if((b&128)!=0)throw new Error("invalid varint");return this.assertBounds(),result>>>0}var protoInt64=makeInt64Support();function makeInt64Support(){let dv=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof dv.getBigInt64=="function"&&typeof dv.getBigUint64=="function"&&typeof dv.setBigInt64=="function"&&typeof dv.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let MIN=BigInt("-9223372036854775808"),MAX=BigInt("9223372036854775807"),UMIN=BigInt("0"),UMAX=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>MAX||bi<MIN)throw new Error(`invalid int64: ${value}`);return bi},uParse(value){let bi=typeof value=="bigint"?value:BigInt(value);if(bi>UMAX||bi<UMIN)throw new Error(`invalid uint64: ${value}`);return bi},enc(value){return dv.setBigInt64(0,this.parse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},uEnc(value){return dv.setBigInt64(0,this.uParse(value),!0),{lo:dv.getInt32(0,!0),hi:dv.getInt32(4,!0)}},dec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigInt64(0,!0)},uDec(lo,hi){return dv.setInt32(0,lo,!0),dv.setInt32(4,hi,!0),dv.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(value){return typeof value!="string"&&(value=value.toString()),assertInt64String(value),value},uParse(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String(value),value},enc(value){return typeof value!="string"&&(value=value.toString()),assertInt64String(value),int64FromString(value)},uEnc(value){return typeof value!="string"&&(value=value.toString()),assertUInt64String(value),int64FromString(value)},dec(lo,hi){return int64ToString(lo,hi)},uDec(lo,hi){return uInt64ToString(lo,hi)}}}function assertInt64String(value){if(!/^-?[0-9]+$/.test(value))throw new Error("invalid int64: "+value)}function assertUInt64String(value){if(!/^[0-9]+$/.test(value))throw new Error("invalid uint64: "+value)}function scalarZeroValue(type,longAsString){switch(type){case ScalarType.STRING:return"";case ScalarType.BOOL:return!1;case ScalarType.DOUBLE:case ScalarType.FLOAT:return 0;case ScalarType.INT64:case ScalarType.UINT64:case ScalarType.SFIXED64:case ScalarType.FIXED64:case ScalarType.SINT64:return longAsString?"0":protoInt64.zero;case ScalarType.BYTES:return new Uint8Array(0);default:return 0}}function isScalarZeroValue(type,value){switch(type){case ScalarType.BOOL:return value===!1;case ScalarType.STRING:return value==="";case ScalarType.BYTES:return value instanceof Uint8Array&&!value.byteLength;default:return value==0}}var IMPLICIT=2,unsafeLocal=Symbol.for("reflect unsafe local");function unsafeOneofCase(target,oneof){let c=target[oneof.localName].case;return c===void 0?c:oneof.fields.find(f=>f.localName===c)}function unsafeIsSet(target,field){let name=field.localName;if(field.oneof)return target[field.oneof.localName].case===name;if(field.presence!=IMPLICIT)return target[name]!==void 0&&Object.prototype.hasOwnProperty.call(target,name);switch(field.fieldKind){case"list":return target[name].length>0;case"map":return Object.keys(target[name]).length>0;case"scalar":return!isScalarZeroValue(field.scalar,target[name]);case"enum":return target[name]!==field.enum.values[0].number}throw new Error("message field with implicit presence")}function unsafeIsSetExplicit(target,localName){return Object.prototype.hasOwnProperty.call(target,localName)&&target[localName]!==void 0}function unsafeGet(target,field){if(field.oneof){let oneof=target[field.oneof.localName];return oneof.case===field.localName?oneof.value:void 0}return target[field.localName]}function unsafeSet(target,field,value){field.oneof?target[field.oneof.localName]={case:field.localName,value}:target[field.localName]=value}function unsafeClear(target,field){let name=field.localName;if(field.oneof){let oneofLocalName=field.oneof.localName;target[oneofLocalName].case===name&&(target[oneofLocalName]={case:void 0})}else if(field.presence!=IMPLICIT)delete target[name];else switch(field.fieldKind){case"map":target[name]={};break;case"list":target[name]=[];break;case"enum":target[name]=field.enum.values[0].number;break;case"scalar":target[name]=scalarZeroValue(field.scalar,field.longAsString);break}}function isObject2(arg){return arg!==null&&typeof arg=="object"&&!Array.isArray(arg)}function isReflectList(arg,field){var _a,_b,_c,_d;if(isObject2(arg)&&unsafeLocal in arg&&"add"in arg&&"field"in arg&&typeof arg.field=="function"){if(field!==void 0){let a=field,b=arg.field();return a.listKind==b.listKind&&a.scalar===b.scalar&&((_a=a.message)===null||_a===void 0?void 0:_a.typeName)===((_b=b.message)===null||_b===void 0?void 0:_b.typeName)&&((_c=a.enum)===null||_c===void 0?void 0:_c.typeName)===((_d=b.enum)===null||_d===void 0?void 0:_d.typeName)}return!0}return!1}function isReflectMap(arg,field){var _a,_b,_c,_d;if(isObject2(arg)&&unsafeLocal in arg&&"has"in arg&&"field"in arg&&typeof arg.field=="function"){if(field!==void 0){let a=field,b=arg.field();return a.mapKey===b.mapKey&&a.mapKind==b.mapKind&&a.scalar===b.scalar&&((_a=a.message)===null||_a===void 0?void 0:_a.typeName)===((_b=b.message)===null||_b===void 0?void 0:_b.typeName)&&((_c=a.enum)===null||_c===void 0?void 0:_c.typeName)===((_d=b.enum)===null||_d===void 0?void 0:_d.typeName)}return!0}return!1}function isReflectMessage(arg,messageDesc3){return isObject2(arg)&&unsafeLocal in arg&&"desc"in arg&&isObject2(arg.desc)&&arg.desc.kind==="message"&&(messageDesc3===void 0||arg.desc.typeName==messageDesc3.typeName)}function isWrapper(arg){return isWrapperTypeName(arg.$typeName)}function isWrapperDesc(messageDesc3){let f=messageDesc3.fields[0];return isWrapperTypeName(messageDesc3.typeName)&&f!==void 0&&f.fieldKind=="scalar"&&f.name=="value"&&f.number==1}function hasCustomJsonRepresentation(desc){switch(desc.typeName){case"google.protobuf.Any":case"google.protobuf.Timestamp":case"google.protobuf.Duration":case"google.protobuf.FieldMask":case"google.protobuf.Struct":case"google.protobuf.Value":case"google.protobuf.ListValue":return!0;default:return isWrapperDesc(desc)}}function isWrapperTypeName(name){return name.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(name.substring(16))}var EDITION_PROTO3=999,EDITION_PROTO2=998,IMPLICIT2=2;function create(schema,init){if(isMessage(init,schema))return init;let message=createZeroMessage(schema);return init!==void 0&&initMessage(schema,message,init),message}function initMessage(messageDesc3,message,init){for(let member of messageDesc3.members){let value=init[member.localName];if(value==null)continue;let field;if(member.kind=="oneof"){let oneofField=unsafeOneofCase(init,member);if(!oneofField)continue;field=oneofField,value=unsafeGet(init,oneofField)}else field=member;switch(field.fieldKind){case"message":value=toMessage(field,value);break;case"scalar":value=initScalar(field,value);break;case"list":value=initList(field,value);break;case"map":value=initMap(field,value);break}unsafeSet(message,field,value)}return message}function initScalar(field,value){return field.scalar==ScalarType.BYTES?toU8Arr(value):value}function initMap(field,value){if(isObject2(value)){if(field.scalar==ScalarType.BYTES)return convertObjectValues(value,toU8Arr);if(field.mapKind=="message")return convertObjectValues(value,val=>toMessage(field,val))}return value}function initList(field,value){if(Array.isArray(value)){if(field.scalar==ScalarType.BYTES)return value.map(toU8Arr);if(field.listKind=="message")return value.map(item=>toMessage(field,item))}return value}function toMessage(field,value){if(field.fieldKind=="message"&&!field.oneof&&isWrapperDesc(field.message))return initScalar(field.message.fields[0],value);if(isObject2(value)){if(field.message.typeName=="google.protobuf.Struct"&&field.parent.typeName!=="google.protobuf.Value")return value;if(!isMessage(value,field.message))return create(field.message,value)}return value}function toU8Arr(value){return Array.isArray(value)?new Uint8Array(value):value}function convertObjectValues(obj,fn){let ret={};for(let entry of Object.entries(obj))ret[entry[0]]=fn(entry[1]);return ret}var tokenZeroMessageField=Symbol(),messagePrototypes=new WeakMap;function createZeroMessage(desc){let msg;if(needsPrototypeChain(desc)){let cached2=messagePrototypes.get(desc),prototype,members;if(cached2)({prototype,members}=cached2);else{prototype={},members=new Set;for(let member of desc.members)member.kind!="oneof"&&(member.fieldKind!="scalar"&&member.fieldKind!="enum"||member.presence!=IMPLICIT2&&(members.add(member),prototype[member.localName]=createZeroField(member)));messagePrototypes.set(desc,{prototype,members})}msg=Object.create(prototype),msg.$typeName=desc.typeName;for(let member of desc.members)members.has(member)||member.kind=="field"&&(member.fieldKind=="message"||(member.fieldKind=="scalar"||member.fieldKind=="enum")&&member.presence!=IMPLICIT2)||(msg[member.localName]=createZeroField(member))}else{msg={$typeName:desc.typeName};for(let member of desc.members)(member.kind=="oneof"||member.presence==IMPLICIT2)&&(msg[member.localName]=createZeroField(member))}return msg}function needsPrototypeChain(desc){switch(desc.file.edition){case EDITION_PROTO3:return!1;case EDITION_PROTO2:return!0;default:return desc.fields.some(f=>f.presence!=IMPLICIT2&&f.fieldKind!="message"&&!f.oneof)}}function createZeroField(field){if(field.kind=="oneof")return{case:void 0};if(field.fieldKind=="list")return[];if(field.fieldKind=="map")return{};if(field.fieldKind=="message")return tokenZeroMessageField;let defaultValue=field.getDefaultValue();return defaultValue!==void 0?field.fieldKind=="scalar"&&field.longAsString?defaultValue.toString():defaultValue:field.fieldKind=="scalar"?scalarZeroValue(field.scalar,field.longAsString):field.enum.values[0].number}var errorNames=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],FieldError=class extends Error{constructor(fieldOrOneof,message,name="FieldValueInvalidError"){super(message),this.name=name,this.field=()=>fieldOrOneof}};function isFieldError(arg){return arg instanceof Error&&errorNames.includes(arg.name)&&"field"in arg&&typeof arg.field=="function"}var symbol=Symbol.for("@bufbuild/protobuf/text-encoding");function getTextEncoding(){if(globalThis[symbol]==null){let te=new globalThis.TextEncoder,td=new globalThis.TextDecoder,tdStrict;globalThis[symbol]={encodeUtf8(text){return te.encode(text)},decodeUtf8(bytes,strict){return strict?(tdStrict===void 0&&(tdStrict=new globalThis.TextDecoder("utf-8",{fatal:!0})),tdStrict.decode(bytes)):td.decode(bytes)},checkUtf8(text){try{return encodeURIComponent(text),!0}catch{return!1}}}}return globalThis[symbol]}var WireType;(function(WireType2){WireType2[WireType2.Varint=0]="Varint",WireType2[WireType2.Bit64=1]="Bit64",WireType2[WireType2.LengthDelimited=2]="LengthDelimited",WireType2[WireType2.StartGroup=3]="StartGroup",WireType2[WireType2.EndGroup=4]="EndGroup",WireType2[WireType2.Bit32=5]="Bit32"})(WireType||(WireType={}));var FLOAT32_MAX=34028234663852886e22,FLOAT32_MIN=-34028234663852886e22,UINT32_MAX=4294967295,INT32_MAX=2147483647,INT32_MIN=-2147483648,BinaryWriter=class{constructor(encodeUtf8=getTextEncoding().encodeUtf8){this.encodeUtf8=encodeUtf8,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let len=0;for(let i=0;i<this.chunks.length;i++)len+=this.chunks[i].length;let bytes=new Uint8Array(len),offset=0;for(let i=0;i<this.chunks.length;i++)bytes.set(this.chunks[i],offset),offset+=this.chunks[i].length;return this.chunks=[],bytes}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let chunk=this.finish(),prev=this.stack.pop();if(!prev)throw new Error("invalid state, fork stack empty");return this.chunks=prev.chunks,this.buf=prev.buf,this.uint32(chunk.byteLength),this.raw(chunk)}tag(fieldNo,type){return this.uint32((fieldNo<<3|type)>>>0)}raw(chunk){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(chunk),this}uint32(value){for(assertUInt32(value);value>127;)this.buf.push(value&127|128),value=value>>>7;return this.buf.push(value),this}int32(value){return assertInt32(value),varint32write(value,this.buf),this}bool(value){return this.buf.push(value?1:0),this}bytes(value){return this.uint32(value.byteLength),this.raw(value)}string(value){let chunk=this.encodeUtf8(value);return this.uint32(chunk.byteLength),this.raw(chunk)}float(value){assertFloat32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setFloat32(0,value,!0),this.raw(chunk)}double(value){let chunk=new Uint8Array(8);return new DataView(chunk.buffer).setFloat64(0,value,!0),this.raw(chunk)}fixed32(value){assertUInt32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setUint32(0,value,!0),this.raw(chunk)}sfixed32(value){assertInt32(value);let chunk=new Uint8Array(4);return new DataView(chunk.buffer).setInt32(0,value,!0),this.raw(chunk)}sint32(value){return assertInt32(value),value=(value<<1^value>>31)>>>0,varint32write(value,this.buf),this}sfixed64(value){let chunk=new Uint8Array(8),view=new DataView(chunk.buffer),tc=protoInt64.enc(value);return view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),this.raw(chunk)}fixed64(value){let chunk=new Uint8Array(8),view=new DataView(chunk.buffer),tc=protoInt64.uEnc(value);return view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),this.raw(chunk)}int64(value){let tc=protoInt64.enc(value);return varint64write(tc.lo,tc.hi,this.buf),this}sint64(value){let tc=protoInt64.enc(value),sign=tc.hi>>31,lo=tc.lo<<1^sign,hi=(tc.hi<<1|tc.lo>>>31)^sign;return varint64write(lo,hi,this.buf),this}uint64(value){let tc=protoInt64.uEnc(value);return varint64write(tc.lo,tc.hi,this.buf),this}},BinaryReader=class{constructor(buf,decodeUtf8=getTextEncoding().decodeUtf8){this.decodeUtf8=decodeUtf8,this.varint64=varint64read,this.uint32=varint32read,this.buf=buf,this.len=buf.length,this.pos=0,this.view=new DataView(buf.buffer,buf.byteOffset,buf.byteLength)}tag(){let start=this.pos,tag=this.uint32(),bytesRead=this.pos-start;if(bytesRead>5||bytesRead==5&&this.buf[this.pos-1]>15)throw new Error("illegal tag: varint overflows uint32");let fieldNo=tag>>>3,wireType=tag&7;if(fieldNo<=0||wireType>5)throw new Error("illegal tag: field no "+fieldNo+" wire type "+wireType);return[fieldNo,wireType]}skip(wireType,fieldNo){let start=this.pos;switch(wireType){case WireType.Varint:for(;this.buf[this.pos++]&128;);break;case WireType.Bit64:this.pos+=4;case WireType.Bit32:this.pos+=4;break;case WireType.LengthDelimited:let len=this.uint32();this.pos+=len;break;case WireType.StartGroup:for(;;){let[fn,wt]=this.tag();if(wt===WireType.EndGroup){if(fieldNo!==void 0&&fn!==fieldNo)throw new Error("invalid end group tag");break}this.skip(wt,fn)}break;default:throw new Error("cant skip wire type "+wireType)}return this.assertBounds(),this.buf.subarray(start,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let zze=this.uint32();return zze>>>1^-(zze&1)}int64(){return protoInt64.dec(...this.varint64())}uint64(){return protoInt64.uDec(...this.varint64())}sint64(){let[lo,hi]=this.varint64(),s=-(lo&1);return lo=(lo>>>1|(hi&1)<<31)^s,hi=hi>>>1^s,protoInt64.dec(lo,hi)}bool(){let[lo,hi]=this.varint64();return lo!==0||hi!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return protoInt64.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return protoInt64.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let len=this.uint32(),start=this.pos;return this.pos+=len,this.assertBounds(),this.buf.subarray(start,start+len)}string(strict){return this.decodeUtf8(this.bytes(),strict)}};function assertInt32(arg){if(typeof arg=="string")arg=Number(arg);else if(typeof arg!="number")throw new Error("invalid int32: "+typeof arg);if(!Number.isInteger(arg)||arg>INT32_MAX||arg<INT32_MIN)throw new Error("invalid int32: "+arg)}function assertUInt32(arg){if(typeof arg=="string")arg=Number(arg);else if(typeof arg!="number")throw new Error("invalid uint32: "+typeof arg);if(!Number.isInteger(arg)||arg>UINT32_MAX||arg<0)throw new Error("invalid uint32: "+arg)}function assertFloat32(arg){if(typeof arg=="string"){let o=arg;if(arg=Number(arg),Number.isNaN(arg)&&o!=="NaN")throw new Error("invalid float32: "+o)}else if(typeof arg!="number")throw new Error("invalid float32: "+typeof arg);if(Number.isFinite(arg)&&(arg>FLOAT32_MAX||arg<FLOAT32_MIN))throw new Error("invalid float32: "+arg)}function checkField(field,value){let check2=field.fieldKind=="list"?isReflectList(value,field):field.fieldKind=="map"?isReflectMap(value,field):checkSingular(field,value);if(check2===!0)return;let reason;switch(field.fieldKind){case"list":reason=`expected ${formatReflectList(field)}, got ${formatVal(value)}`;break;case"map":reason=`expected ${formatReflectMap(field)}, got ${formatVal(value)}`;break;default:reason=reasonSingular(field,value,check2)}return new FieldError(field,reason)}function checkListItem(field,index,value){let check2=checkSingular(field,value);if(check2!==!0)return new FieldError(field,`list item #${index+1}: ${reasonSingular(field,value,check2)}`)}function checkMapEntry(field,key,value){let checkKey=checkScalarValue(key,field.mapKey);if(checkKey!==!0)return new FieldError(field,`invalid map key: ${reasonSingular({scalar:field.mapKey},key,checkKey)}`);let checkVal=checkSingular(field,value);if(checkVal!==!0)return new FieldError(field,`map entry ${formatVal(key)}: ${reasonSingular(field,value,checkVal)}`)}function checkSingular(field,value){return field.scalar!==void 0?checkScalarValue(value,field.scalar):field.enum!==void 0?field.enum.open?Number.isInteger(value):field.enum.values.some(v=>v.number===value):isReflectMessage(value,field.message)}function checkScalarValue(value,scalar2){switch(scalar2){case ScalarType.DOUBLE:return typeof value=="number";case ScalarType.FLOAT:return typeof value!="number"?!1:Number.isNaN(value)||!Number.isFinite(value)?!0:value>FLOAT32_MAX||value<FLOAT32_MIN?`${value.toFixed()} out of range`:!0;case ScalarType.INT32:case ScalarType.SFIXED32:case ScalarType.SINT32:return typeof value!="number"||!Number.isInteger(value)?!1:value>INT32_MAX||value<INT32_MIN?`${value.toFixed()} out of range`:!0;case ScalarType.FIXED32:case ScalarType.UINT32:return typeof value!="number"||!Number.isInteger(value)?!1:value>UINT32_MAX||value<0?`${value.toFixed()} out of range`:!0;case ScalarType.BOOL:return typeof value=="boolean";case ScalarType.STRING:return typeof value!="string"?!1:getTextEncoding().checkUtf8(value)||"invalid UTF8";case ScalarType.BYTES:return value instanceof Uint8Array;case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(typeof value=="bigint"||typeof value=="number"||typeof value=="string"&&value.length>0)try{return protoInt64.parse(value),!0}catch{return`${value} out of range`}return!1;case ScalarType.FIXED64:case ScalarType.UINT64:if(typeof value=="bigint"||typeof value=="number"||typeof value=="string"&&value.length>0)try{return protoInt64.uParse(value),!0}catch{return`${value} out of range`}return!1}}function reasonSingular(field,val,details){return details=typeof details=="string"?`: ${details}`:`, got ${formatVal(val)}`,field.scalar!==void 0?`expected ${scalarTypeDescription(field.scalar)}`+details:field.enum!==void 0?`expected ${field.enum.toString()}`+details:`expected ${formatReflectMessage(field.message)}`+details}function formatVal(val){switch(typeof val){case"object":return val===null?"null":val instanceof Uint8Array?`Uint8Array(${val.length})`:Array.isArray(val)?`Array(${val.length})`:isReflectList(val)?formatReflectList(val.field()):isReflectMap(val)?formatReflectMap(val.field()):isReflectMessage(val)?formatReflectMessage(val.desc):isMessage(val)?`message ${val.$typeName}`:"object";case"string":return val.length>30?"string":`"${val.split('"').join('\\"')}"`;case"boolean":return String(val);case"number":return String(val);case"bigint":return String(val)+"n";default:return typeof val}}function formatReflectMessage(desc){return`ReflectMessage (${desc.typeName})`}function formatReflectList(field){switch(field.listKind){case"message":return`ReflectList (${field.message.toString()})`;case"enum":return`ReflectList (${field.enum.toString()})`;case"scalar":return`ReflectList (${ScalarType[field.scalar]})`}}function formatReflectMap(field){switch(field.mapKind){case"message":return`ReflectMap (${ScalarType[field.mapKey]}, ${field.message.toString()})`;case"enum":return`ReflectMap (${ScalarType[field.mapKey]}, ${field.enum.toString()})`;case"scalar":return`ReflectMap (${ScalarType[field.mapKey]}, ${ScalarType[field.scalar]})`}}function scalarTypeDescription(scalar2){switch(scalar2){case ScalarType.STRING:return"string";case ScalarType.BOOL:return"boolean";case ScalarType.INT64:case ScalarType.SINT64:case ScalarType.SFIXED64:return"bigint (int64)";case ScalarType.UINT64:case ScalarType.FIXED64:return"bigint (uint64)";case ScalarType.BYTES:return"Uint8Array";case ScalarType.DOUBLE:return"number (float64)";case ScalarType.FLOAT:return"number (float32)";case ScalarType.FIXED32:case ScalarType.UINT32:return"number (uint32)";case ScalarType.INT32:case ScalarType.SFIXED32:case ScalarType.SINT32:return"number (int32)"}}function reflect(messageDesc3,message,check2=!0){return new ReflectMessageImpl(messageDesc3,message,check2)}var messageSortedFields=new WeakMap,ReflectMessageImpl=class{get sortedFields(){let cached2=messageSortedFields.get(this.desc);if(cached2)return cached2;let sortedFields=this.desc.fields.concat().sort((a,b)=>a.number-b.number);return messageSortedFields.set(this.desc,sortedFields),sortedFields}constructor(messageDesc3,message,check2=!0){this.lists=new Map,this.maps=new Map,this.check=check2,this.desc=messageDesc3,this.message=this[unsafeLocal]=message??create(messageDesc3),this.fields=messageDesc3.fields,this.oneofs=messageDesc3.oneofs,this.members=messageDesc3.members}findNumber(number3){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(f=>[f.number,f]))),this._fieldsByNumber.get(number3)}oneofCase(oneof){return assertOwn(this.message,oneof),unsafeOneofCase(this.message,oneof)}isSet(field){return assertOwn(this.message,field),unsafeIsSet(this.message,field)}clear(field){assertOwn(this.message,field),unsafeClear(this.message,field)}get(field){assertOwn(this.message,field);let value=unsafeGet(this.message,field);switch(field.fieldKind){case"list":let list=this.lists.get(field);return(!list||list[unsafeLocal]!==value)&&this.lists.set(field,list=new ReflectListImpl(field,value,this.check)),list;case"map":let map=this.maps.get(field);return(!map||map[unsafeLocal]!==value)&&this.maps.set(field,map=new ReflectMapImpl(field,value,this.check)),map;case"message":return messageToReflect(field,value,this.check);case"scalar":return value===void 0?scalarZeroValue(field.scalar,!1):longToReflect(field,value);case"enum":return value??field.enum.values[0].number}}set(field,value){if(assertOwn(this.message,field),this.check){let err=checkField(field,value);if(err)throw err}let local;field.fieldKind=="message"?local=messageToLocal(field,value):isReflectMap(value)||isReflectList(value)?local=value[unsafeLocal]:local=longToLocal(field,value),unsafeSet(this.message,field,local)}getUnknown(){return this.message.$unknown}setUnknown(value){this.message.$unknown=value}};function assertOwn(owner,member){if(member.parent.typeName!==owner.$typeName)throw new FieldError(member,`cannot use ${member.toString()} with message ${owner.$typeName}`,"ForeignFieldError")}var ReflectListImpl=class{field(){return this._field}get size(){return this._arr.length}constructor(field,unsafeInput,check2){this._field=field,this._arr=this[unsafeLocal]=unsafeInput,this.check=check2}get(index){let item=this._arr[index];return item===void 0?void 0:listItemToReflect(this._field,item,this.check)}set(index,item){if(index<0||index>=this._arr.length)throw new FieldError(this._field,`list item #${index+1}: out of range`);if(this.check){let err=checkListItem(this._field,index,item);if(err)throw err}this._arr[index]=listItemToLocal(this._field,item)}add(item){if(this.check){let err=checkListItem(this._field,this._arr.length,item);if(err)throw err}this._arr.push(listItemToLocal(this._field,item))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let item of this._arr)yield listItemToReflect(this._field,item,this.check)}*entries(){for(let i=0;i<this._arr.length;i++)yield[i,listItemToReflect(this._field,this._arr[i],this.check)]}};var ReflectMapImpl=class{constructor(field,unsafeInput,check2=!0){this.obj=this[unsafeLocal]=unsafeInput??{},this.check=check2,this._field=field}field(){return this._field}set(key,value){if(this.check){let err=checkMapEntry(this._field,key,value);if(err)throw err}return this.obj[mapKeyToLocal(key)]=mapValueToLocal(this._field,value),this}delete(key){let k=mapKeyToLocal(key),has=Object.prototype.hasOwnProperty.call(this.obj,k);return has&&delete this.obj[k],has}clear(){for(let key of Object.keys(this.obj))delete this.obj[key]}get(key){let val=this.obj[mapKeyToLocal(key)];return val!==void 0&&(val=mapValueToReflect(this._field,val,this.check)),val}has(key){return Object.prototype.hasOwnProperty.call(this.obj,mapKeyToLocal(key))}*keys(){for(let objKey of Object.keys(this.obj))yield mapKeyToReflect(objKey,this._field.mapKey)}*entries(){for(let objEntry of Object.entries(this.obj))yield[mapKeyToReflect(objEntry[0],this._field.mapKey),mapValueToReflect(this._field,objEntry[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let val of Object.values(this.obj))yield mapValueToReflect(this._field,val,this.check)}forEach(callbackfn,thisArg){for(let mapEntry of this.entries())callbackfn.call(thisArg,mapEntry[1],mapEntry[0],this)}};function messageToLocal(field,value){return isReflectMessage(value)?isWrapper(value.message)&&!field.oneof&&field.fieldKind=="message"?value.message.value:value.desc.typeName=="google.protobuf.Struct"&&field.parent.typeName!="google.protobuf.Value"?wktStructToLocal(value.message):value.message:value}function messageToReflect(field,value,check2){return value!==void 0&&(isWrapperDesc(field.message)&&!field.oneof&&field.fieldKind=="message"?value={$typeName:field.message.typeName,value:longToReflect(field.message.fields[0],value)}:field.message.typeName=="google.protobuf.Struct"&&field.parent.typeName!="google.protobuf.Value"&&isObject2(value)&&(value=wktStructToReflect(value))),new ReflectMessageImpl(field.message,value,check2)}function listItemToLocal(field,value){return field.listKind=="message"?messageToLocal(field,value):longToLocal(field,value)}function listItemToReflect(field,value,check2){return field.listKind=="message"?messageToReflect(field,value,check2):longToReflect(field,value)}function mapValueToLocal(field,value){return field.mapKind=="message"?messageToLocal(field,value):longToLocal(field,value)}function mapValueToReflect(field,value,check2){return field.mapKind=="message"?messageToReflect(field,value,check2):value}function mapKeyToLocal(key){return typeof key=="string"||typeof key=="number"?key:String(key)}function mapKeyToReflect(key,type){switch(type){case ScalarType.STRING:return key;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:{let n=Number.parseInt(key);if(Number.isFinite(n))return n;break}case ScalarType.BOOL:switch(key){case"true":return!0;case"false":return!1}break;case ScalarType.UINT64:case ScalarType.FIXED64:try{return protoInt64.uParse(key)}catch{}break;default:try{return protoInt64.parse(key)}catch{}break}return key}function longToReflect(field,value){switch(field.scalar){case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:"longAsString"in field&&field.longAsString&&typeof value=="string"&&(value=protoInt64.parse(value));break;case ScalarType.FIXED64:case ScalarType.UINT64:"longAsString"in field&&field.longAsString&&typeof value=="string"&&(value=protoInt64.uParse(value));break}return value}function longToLocal(field,value){switch(field.scalar){case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:"longAsString"in field&&field.longAsString?value=String(value):(typeof value=="string"||typeof value=="number")&&(value=protoInt64.parse(value));break;case ScalarType.FIXED64:case ScalarType.UINT64:"longAsString"in field&&field.longAsString?value=String(value):(typeof value=="string"||typeof value=="number")&&(value=protoInt64.uParse(value));break}return value}function wktStructToReflect(json){let struct={$typeName:"google.protobuf.Struct",fields:{}};if(isObject2(json))for(let[k,v]of Object.entries(json))struct.fields[k]=wktValueToReflect(v);return struct}function wktStructToLocal(val){let json={};for(let[k,v]of Object.entries(val.fields))json[k]=wktValueToLocal(v);return json}function wktValueToLocal(val){switch(val.kind.case){case"structValue":return wktStructToLocal(val.kind.value);case"listValue":return val.kind.value.values.map(wktValueToLocal);case"nullValue":case void 0:return null;default:return val.kind.value}}function wktValueToReflect(json){let value={$typeName:"google.protobuf.Value",kind:{case:void 0}};switch(typeof json){case"number":value.kind={case:"numberValue",value:json};break;case"string":value.kind={case:"stringValue",value:json};break;case"boolean":value.kind={case:"boolValue",value:json};break;case"object":if(json===null)value.kind={case:"nullValue",value:0};else if(Array.isArray(json)){let listValue={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(json))for(let e of json)listValue.values.push(wktValueToReflect(e));value.kind={case:"listValue",value:listValue}}else value.kind={case:"structValue",value:wktStructToReflect(json)};break}return value}function base64Decode(base64Str){let table=getDecodeTable(),es=base64Str.length*3/4;base64Str[base64Str.length-2]=="="?es-=2:base64Str[base64Str.length-1]=="="&&(es-=1);let bytes=new Uint8Array(es),bytePos=0,groupPos=0,b,p=0;for(let i=0;i<base64Str.length;i++){if(b=table[base64Str.charCodeAt(i)],b===void 0)switch(base64Str[i]){case"=":groupPos=0;case`
|
|
196
196
|
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(groupPos){case 0:p=b,groupPos=1;break;case 1:bytes[bytePos++]=p<<2|(b&48)>>4,p=b,groupPos=2;break;case 2:bytes[bytePos++]=(p&15)<<4|(b&60)>>2,p=b,groupPos=3;break;case 3:bytes[bytePos++]=(p&3)<<6|b,groupPos=0;break}}if(groupPos==1)throw Error("invalid base64 string");return bytes.subarray(0,bytePos)}function base64Encode(bytes,encoding="std"){let table=getEncodeTable(encoding),pad=encoding=="std",base642="",groupPos=0,b,p=0;for(let i=0;i<bytes.length;i++)switch(b=bytes[i],groupPos){case 0:base642+=table[b>>2],p=(b&3)<<4,groupPos=1;break;case 1:base642+=table[p|b>>4],p=(b&15)<<2,groupPos=2;break;case 2:base642+=table[p|b>>6],base642+=table[b&63],groupPos=0;break}return groupPos&&(base642+=table[p],pad&&(base642+="=",groupPos==1&&(base642+="="))),base642}var encodeTableStd,encodeTableUrl,decodeTable;function getEncodeTable(encoding){return encodeTableStd||(encodeTableStd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),encodeTableUrl=encodeTableStd.slice(0,-2).concat("-","_")),encoding=="url"?encodeTableUrl:encodeTableStd}function getDecodeTable(){if(!decodeTable){decodeTable=[];let encodeTable=getEncodeTable("std");for(let i=0;i<encodeTable.length;i++)decodeTable[encodeTable[i].charCodeAt(0)]=i;decodeTable[45]=encodeTable.indexOf("+"),decodeTable[95]=encodeTable.indexOf("/")}return decodeTable}function protoCamelCase(snakeCase){let capNext=!1,b=[];for(let i=0;i<snakeCase.length;i++){let c=snakeCase.charAt(i);switch(c){case"_":capNext=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":b.push(c),capNext=!1;break;default:capNext&&(capNext=!1,c=c.toUpperCase()),b.push(c);break}}return b.join("")}function protoSnakeCase(lowerCamelCase){return lowerCamelCase.replace(/[A-Z]/g,letter=>"_"+letter.toLowerCase())}var reservedObjectProperties=new Set(["constructor","toString","toJSON","valueOf"]);function safeObjectProperty(name){return reservedObjectProperties.has(name)?name+"$":name}function restoreJsonNames(message){for(let f of message.field)unsafeIsSetExplicit(f,"jsonName")||(f.jsonName=protoCamelCase(f.name));message.nestedType.forEach(restoreJsonNames)}function parseTextFormatEnumValue(descEnum,value){let enumValue=descEnum.values.find(v=>v.name===value);if(!enumValue)throw new Error(`cannot parse ${descEnum} default value: ${value}`);return enumValue.number}function parseTextFormatScalarValue(type,value){switch(type){case ScalarType.STRING:return value;case ScalarType.BYTES:{let u=unescapeBytesDefaultValue(value);if(u===!1)throw new Error(`cannot parse ${ScalarType[type]} default value: ${value}`);return u}case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:return protoInt64.parse(value);case ScalarType.UINT64:case ScalarType.FIXED64:return protoInt64.uParse(value);case ScalarType.DOUBLE:case ScalarType.FLOAT:switch(value){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(value)}case ScalarType.BOOL:return value==="true";case ScalarType.INT32:case ScalarType.UINT32:case ScalarType.SINT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:return parseInt(value,10)}}function unescapeBytesDefaultValue(str){let b=[],input={tail:str,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(n){if(this.tail.length>=n){let r=this.tail.substring(0,n);return this.tail=this.tail.substring(n),r}return!1}};for(;input.next();)switch(input.c){case"\\":if(input.next())switch(input.c){case"\\":b.push(input.c.charCodeAt(0));break;case"b":b.push(8);break;case"f":b.push(12);break;case"n":b.push(10);break;case"r":b.push(13);break;case"t":b.push(9);break;case"v":b.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let s=input.c,t=input.take(2);if(t===!1)return!1;let n=parseInt(s+t,8);if(Number.isNaN(n))return!1;b.push(n);break}case"x":{let s=input.c,t=input.take(2);if(t===!1)return!1;let n=parseInt(s+t,16);if(Number.isNaN(n))return!1;b.push(n);break}case"u":{let s=input.c,t=input.take(4);if(t===!1)return!1;let n=parseInt(s+t,16);if(Number.isNaN(n))return!1;let chunk=new Uint8Array(4);new DataView(chunk.buffer).setInt32(0,n,!0),b.push(chunk[0],chunk[1],chunk[2],chunk[3]);break}case"U":{let s=input.c,t=input.take(8);if(t===!1)return!1;let tc=protoInt64.uEnc(s+t),chunk=new Uint8Array(8),view=new DataView(chunk.buffer);view.setInt32(0,tc.lo,!0),view.setInt32(4,tc.hi,!0),b.push(chunk[0],chunk[1],chunk[2],chunk[3],chunk[4],chunk[5],chunk[6],chunk[7]);break}}break;default:b.push(input.c.charCodeAt(0))}return new Uint8Array(b)}function*nestedTypes(desc){switch(desc.kind){case"file":for(let message of desc.messages)yield message,yield*nestedTypes(message);yield*desc.enums,yield*desc.services,yield*desc.extensions;break;case"message":for(let message of desc.nestedMessages)yield message,yield*nestedTypes(message);yield*desc.nestedEnums,yield*desc.nestedExtensions;break}}function createFileRegistry(...args){let registry2=createBaseRegistry();if(!args.length)return registry2;if("$typeName"in args[0]&&args[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let file of args[0].file)addFile(file,registry2);return registry2}if("$typeName"in args[0]){let recurseDeps=function(file){let deps=[];for(let protoFileName of file.dependency){if(registry2.getFile(protoFileName)!=null||seen.has(protoFileName))continue;let dep=resolve(protoFileName);if(!dep)throw new Error(`Unable to resolve ${protoFileName}, imported by ${file.name}`);"kind"in dep?registry2.addFile(dep,!1,!0):(seen.add(dep.name),deps.push(dep))}return deps.concat(...deps.map(recurseDeps))},input=args[0],resolve=args[1],seen=new Set;for(let file of[input,...recurseDeps(input)].reverse())addFile(file,registry2)}else for(let fileReg of args)for(let file of fileReg.files)registry2.addFile(file);return registry2}function createBaseRegistry(){let types=new Map,extendees=new Map,files=new Map;return{kind:"registry",types,extendees,[Symbol.iterator](){return types.values()},get files(){return files.values()},addFile(file,skipTypes,withDeps){if(files.set(file.proto.name,file),!skipTypes)for(let type of nestedTypes(file))this.add(type);if(withDeps)for(let f of file.dependencies)this.addFile(f,skipTypes,withDeps)},add(desc){if(desc.kind=="extension"){let numberToExt=extendees.get(desc.extendee.typeName);numberToExt||extendees.set(desc.extendee.typeName,numberToExt=new Map),numberToExt.set(desc.number,desc)}types.set(desc.typeName,desc)},get(typeName){return types.get(typeName)},getFile(fileName){return files.get(fileName)},getMessage(typeName){let t=types.get(typeName);return t?.kind=="message"?t:void 0},getEnum(typeName){let t=types.get(typeName);return t?.kind=="enum"?t:void 0},getExtension(typeName){let t=types.get(typeName);return t?.kind=="extension"?t:void 0},getExtensionFor(extendee,no){var _a;return(_a=extendees.get(extendee.typeName))===null||_a===void 0?void 0:_a.get(no)},getService(typeName){let t=types.get(typeName);return t?.kind=="service"?t:void 0}}}var EDITION_PROTO22=998,EDITION_PROTO32=999,EDITION_UNSTABLE=9999,TYPE_STRING=9,TYPE_GROUP=10,TYPE_MESSAGE=11,TYPE_BYTES=12,TYPE_ENUM=14,LABEL_REPEATED=3,LABEL_REQUIRED=2,JS_STRING=1,IDEMPOTENCY_UNKNOWN=0,EXPLICIT=1,IMPLICIT3=2,LEGACY_REQUIRED=3,PACKED=1,DELIMITED=2,OPEN=1,VERIFY=2;var maximumEdition=1001,featureDefaults={998:{fieldPresence:1,enumType:2,repeatedFieldEncoding:2,utf8Validation:3,messageEncoding:1,jsonFormat:2,enforceNamingStyle:2,defaultSymbolVisibility:1},999:{fieldPresence:2,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1e3:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:2,defaultSymbolVisibility:1},1001:{fieldPresence:1,enumType:1,repeatedFieldEncoding:1,utf8Validation:2,messageEncoding:1,jsonFormat:1,enforceNamingStyle:1,defaultSymbolVisibility:2}};function addFile(proto,reg){var _a,_b;let file={kind:"file",proto,deprecated:(_b=(_a=proto.options)===null||_a===void 0?void 0:_a.deprecated)!==null&&_b!==void 0?_b:!1,edition:getFileEdition(proto),name:proto.name.replace(/\.proto$/,""),dependencies:findFileDependencies(proto,reg),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${proto.name}`}},mapEntriesStore=new Map,mapEntries={get(typeName){return mapEntriesStore.get(typeName)},add(desc){var _a2;assert2(((_a2=desc.proto.options)===null||_a2===void 0?void 0:_a2.mapEntry)===!0),mapEntriesStore.set(desc.typeName,desc)}};for(let enumProto of proto.enumType)addEnum(enumProto,file,void 0,reg);for(let messageProto of proto.messageType)addMessage(messageProto,file,void 0,reg,mapEntries);for(let serviceProto of proto.service)addService(serviceProto,file,reg);addExtensions(file,reg);for(let mapEntry of mapEntriesStore.values())addFields(mapEntry,reg,mapEntries);for(let message of file.messages)addFields(message,reg,mapEntries),addExtensions(message,reg);reg.addFile(file,!0)}function addExtensions(desc,reg){switch(desc.kind){case"file":for(let proto of desc.proto.extension){let ext=newField(proto,desc,reg);desc.extensions.push(ext),reg.add(ext)}break;case"message":for(let proto of desc.proto.extension){let ext=newField(proto,desc,reg);desc.nestedExtensions.push(ext),reg.add(ext)}for(let message of desc.nestedMessages)addExtensions(message,reg);break}}function addFields(message,reg,mapEntries){let allOneofs=message.proto.oneofDecl.map(proto=>newOneof(proto,message)),oneofsSeen=new Set;for(let proto of message.proto.field){let oneof=findOneof(proto,allOneofs),field=newField(proto,message,reg,oneof,mapEntries);message.fields.push(field),message.field[field.localName]=field,oneof===void 0?message.members.push(field):(oneof.fields.push(field),oneofsSeen.has(oneof)||(oneofsSeen.add(oneof),message.members.push(oneof)))}for(let oneof of allOneofs.filter(o=>oneofsSeen.has(o)))message.oneofs.push(oneof);for(let child of message.nestedMessages)addFields(child,reg,mapEntries)}function addEnum(proto,file,parent,reg){var _a,_b,_c,_d,_e;let sharedPrefix=findEnumSharedPrefix(proto.name,proto.value),desc={kind:"enum",proto,deprecated:(_b=(_a=proto.options)===null||_a===void 0?void 0:_a.deprecated)!==null&&_b!==void 0?_b:!1,file,parent,open:!0,name:proto.name,typeName:makeTypeName(proto,parent,file),value:{},values:[],sharedPrefix,toString(){return`enum ${this.typeName}`}};desc.open=isEnumOpen(desc),reg.add(desc);for(let p of proto.value){let name=p.name;desc.values.push(desc.value[p.number]={kind:"enum_value",proto:p,deprecated:(_d=(_c=p.options)===null||_c===void 0?void 0:_c.deprecated)!==null&&_d!==void 0?_d:!1,parent:desc,name,localName:safeObjectProperty(sharedPrefix==null?name:name.substring(sharedPrefix.length)),number:p.number,toString(){return`enum value ${desc.typeName}.${name}`}})}((_e=parent?.nestedEnums)!==null&&_e!==void 0?_e:file.enums).push(desc)}function addMessage(proto,file,parent,reg,mapEntries){var _a,_b,_c,_d;let desc={kind:"message",proto,deprecated:(_b=(_a=proto.options)===null||_a===void 0?void 0:_a.deprecated)!==null&&_b!==void 0?_b:!1,file,parent,name:proto.name,typeName:makeTypeName(proto,parent,file),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((_c=proto.options)===null||_c===void 0?void 0:_c.mapEntry)===!0?mapEntries.add(desc):(((_d=parent?.nestedMessages)!==null&&_d!==void 0?_d:file.messages).push(desc),reg.add(desc));for(let enumProto of proto.enumType)addEnum(enumProto,file,desc,reg);for(let messageProto of proto.nestedType)addMessage(messageProto,file,desc,reg,mapEntries)}function addService(proto,file,reg){var _a,_b;let desc={kind:"service",proto,deprecated:(_b=(_a=proto.options)===null||_a===void 0?void 0:_a.deprecated)!==null&&_b!==void 0?_b:!1,file,name:proto.name,typeName:makeTypeName(proto,void 0,file),methods:[],method:{},toString(){return`service ${this.typeName}`}};file.services.push(desc),reg.add(desc);for(let methodProto of proto.method){let method=newMethod(methodProto,desc,reg);desc.methods.push(method),desc.method[method.localName]=method}}function newMethod(proto,parent,reg){var _a,_b,_c,_d;let methodKind;proto.clientStreaming&&proto.serverStreaming?methodKind="bidi_streaming":proto.clientStreaming?methodKind="client_streaming":proto.serverStreaming?methodKind="server_streaming":methodKind="unary";let input=reg.getMessage(trimLeadingDot(proto.inputType)),output=reg.getMessage(trimLeadingDot(proto.outputType));assert2(input,`invalid MethodDescriptorProto: input_type ${proto.inputType} not found`),assert2(output,`invalid MethodDescriptorProto: output_type ${proto.inputType} not found`);let name=proto.name;return{kind:"rpc",proto,deprecated:(_b=(_a=proto.options)===null||_a===void 0?void 0:_a.deprecated)!==null&&_b!==void 0?_b:!1,parent,name,localName:safeObjectProperty(name.length?safeObjectProperty(name[0].toLowerCase()+name.substring(1)):name),methodKind,input,output,idempotency:(_d=(_c=proto.options)===null||_c===void 0?void 0:_c.idempotencyLevel)!==null&&_d!==void 0?_d:IDEMPOTENCY_UNKNOWN,toString(){return`rpc ${parent.typeName}.${name}`}}}function newOneof(proto,parent){return{kind:"oneof",proto,deprecated:!1,parent,fields:[],name:proto.name,localName:safeObjectProperty(protoCamelCase(proto.name)),toString(){return`oneof ${parent.typeName}.${this.name}`}}}function newField(proto,parentOrFile,reg,oneof,mapEntries){var _a,_b,_c;let isExtension=mapEntries===void 0,field={kind:"field",proto,deprecated:(_b=(_a=proto.options)===null||_a===void 0?void 0:_a.deprecated)!==null&&_b!==void 0?_b:!1,name:proto.name,number:proto.number,scalar:void 0,message:void 0,enum:void 0,presence:getFieldPresence(proto,oneof,isExtension,parentOrFile),utf8Validation:isUtf8Validated(proto,parentOrFile),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(isExtension){let file=parentOrFile.kind=="file"?parentOrFile:parentOrFile.file,parent=parentOrFile.kind=="file"?void 0:parentOrFile,typeName=makeTypeName(proto,parent,file);field.kind="extension",field.file=file,field.parent=parent,field.oneof=void 0,field.typeName=typeName,field.jsonName=`[${typeName}]`,field.toString=()=>`extension ${typeName}`;let extendee=reg.getMessage(trimLeadingDot(proto.extendee));assert2(extendee,`invalid FieldDescriptorProto: extendee ${proto.extendee} not found`),field.extendee=extendee}else{let parent=parentOrFile;assert2(parent.kind=="message"),field.parent=parent,field.oneof=oneof,field.localName=oneof?protoCamelCase(proto.name):safeObjectProperty(protoCamelCase(proto.name)),field.jsonName=proto.jsonName,field.toString=()=>`field ${parent.typeName}.${proto.name}`}let label=proto.label,type=proto.type,jstype=(_c=proto.options)===null||_c===void 0?void 0:_c.jstype;if(label===LABEL_REPEATED){let mapEntry=type==TYPE_MESSAGE?mapEntries?.get(trimLeadingDot(proto.typeName)):void 0;if(mapEntry){field.fieldKind="map";let{key,value}=findMapEntryFields(mapEntry);return field.mapKey=key.scalar,field.mapKind=value.fieldKind,field.message=value.message,field.delimitedEncoding=!1,field.enum=value.enum,field.scalar=value.scalar,field}switch(field.fieldKind="list",type){case TYPE_MESSAGE:case TYPE_GROUP:field.listKind="message",field.message=reg.getMessage(trimLeadingDot(proto.typeName)),assert2(field.message),field.delimitedEncoding=isDelimitedEncoding(proto,parentOrFile);break;case TYPE_ENUM:field.listKind="enum",field.enum=reg.getEnum(trimLeadingDot(proto.typeName)),assert2(field.enum);break;default:field.listKind="scalar",field.scalar=type,field.longAsString=jstype==JS_STRING;break}return field.packed=isPackedField(proto,parentOrFile),field}switch(type){case TYPE_MESSAGE:case TYPE_GROUP:field.fieldKind="message",field.message=reg.getMessage(trimLeadingDot(proto.typeName)),assert2(field.message,`invalid FieldDescriptorProto: type_name ${proto.typeName} not found`),field.delimitedEncoding=isDelimitedEncoding(proto,parentOrFile),field.getDefaultValue=()=>{};break;case TYPE_ENUM:{let enumeration=reg.getEnum(trimLeadingDot(proto.typeName));assert2(enumeration!==void 0,`invalid FieldDescriptorProto: type_name ${proto.typeName} not found`),field.fieldKind="enum",field.enum=reg.getEnum(trimLeadingDot(proto.typeName)),field.getDefaultValue=()=>unsafeIsSetExplicit(proto,"defaultValue")?parseTextFormatEnumValue(enumeration,proto.defaultValue):void 0;break}default:{field.fieldKind="scalar",field.scalar=type,field.longAsString=jstype==JS_STRING,field.getDefaultValue=()=>unsafeIsSetExplicit(proto,"defaultValue")?parseTextFormatScalarValue(type,proto.defaultValue):void 0;break}}return field}function getFileEdition(proto){switch(proto.syntax){case"":case"proto2":return EDITION_PROTO22;case"proto3":return EDITION_PROTO32;case"editions":if(proto.edition===EDITION_UNSTABLE)return maximumEdition;if(proto.edition in featureDefaults)return proto.edition;throw new Error(`${proto.name}: unsupported edition`);default:throw new Error(`${proto.name}: unsupported syntax "${proto.syntax}"`)}}function findFileDependencies(proto,reg){return proto.dependency.map(wantName=>{let dep=reg.getFile(wantName);if(!dep)throw new Error(`Cannot find ${wantName}, imported by ${proto.name}`);return dep})}function findEnumSharedPrefix(enumName,values){let prefix=camelToSnakeCase(enumName)+"_";for(let value of values){if(!value.name.toLowerCase().startsWith(prefix))return;let shortName=value.name.substring(prefix.length);if(shortName.length==0||/^\d/.test(shortName))return}return prefix}function camelToSnakeCase(camel){return(camel.substring(0,1)+camel.substring(1).replace(/[A-Z]/g,c=>"_"+c)).toLowerCase()}function makeTypeName(proto,parent,file){let typeName;return parent?typeName=`${parent.typeName}.${proto.name}`:file.proto.package.length>0?typeName=`${file.proto.package}.${proto.name}`:typeName=`${proto.name}`,typeName}function trimLeadingDot(typeName){return typeName.startsWith(".")?typeName.substring(1):typeName}function findOneof(proto,allOneofs){if(!unsafeIsSetExplicit(proto,"oneofIndex")||proto.proto3Optional)return;let oneof=allOneofs[proto.oneofIndex];return assert2(oneof,`invalid FieldDescriptorProto: oneof #${proto.oneofIndex} for field #${proto.number} not found`),oneof}function getFieldPresence(proto,oneof,isExtension,parent){if(proto.label==LABEL_REQUIRED)return LEGACY_REQUIRED;if(proto.label==LABEL_REPEATED)return IMPLICIT3;if(oneof||proto.proto3Optional||isExtension)return EXPLICIT;let resolved=resolveFeature("fieldPresence",{proto,parent});return resolved==IMPLICIT3&&(proto.type==TYPE_MESSAGE||proto.type==TYPE_GROUP)?EXPLICIT:resolved}function isPackedField(proto,parent){if(proto.label!=LABEL_REPEATED)return!1;switch(proto.type){case TYPE_STRING:case TYPE_BYTES:case TYPE_GROUP:case TYPE_MESSAGE:return!1}let o=proto.options;return o&&unsafeIsSetExplicit(o,"packed")?o.packed:PACKED==resolveFeature("repeatedFieldEncoding",{proto,parent})}function findMapEntryFields(mapEntry){let key=mapEntry.fields.find(f=>f.number===1),value=mapEntry.fields.find(f=>f.number===2);return assert2(key&&key.fieldKind=="scalar"&&key.scalar!=ScalarType.BYTES&&key.scalar!=ScalarType.FLOAT&&key.scalar!=ScalarType.DOUBLE&&value&&value.fieldKind!="list"&&value.fieldKind!="map"),{key,value}}function isEnumOpen(desc){var _a;return OPEN==resolveFeature("enumType",{proto:desc.proto,parent:(_a=desc.parent)!==null&&_a!==void 0?_a:desc.file})}function isDelimitedEncoding(proto,parent){return proto.type==TYPE_GROUP?!0:DELIMITED==resolveFeature("messageEncoding",{proto,parent})}function isUtf8Validated(proto,parent){return VERIFY==resolveFeature("utf8Validation",{proto,parent})}function resolveFeature(name,ref){var _a,_b;let featureSet=(_a=ref.proto.options)===null||_a===void 0?void 0:_a.features;if(featureSet){let val=featureSet[name];if(val!=0)return val}if("kind"in ref){if(ref.kind=="message")return resolveFeature(name,(_b=ref.parent)!==null&&_b!==void 0?_b:ref.file);let editionDefaults=featureDefaults[ref.edition];if(!editionDefaults)throw new Error(`feature default for edition ${ref.edition} not found`);return editionDefaults[name]}return resolveFeature(name,ref.parent)}function assert2(condition,msg){if(!condition)throw new Error(msg)}function boot(boot2){let root=bootFileDescriptorProto(boot2);return root.messageType.forEach(restoreJsonNames),createFileRegistry(root,()=>{}).getFile(root.name)}function bootFileDescriptorProto(init){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},init),{messageType:init.messageType.map(bootDescriptorProto),enumType:init.enumType.map(bootEnumDescriptorProto)}))}function bootDescriptorProto(init){var _a,_b,_c,_d,_e,_f,_g,_h;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:init.name,field:(_b=(_a=init.field)===null||_a===void 0?void 0:_a.map(bootFieldDescriptorProto))!==null&&_b!==void 0?_b:[],extension:[],nestedType:(_d=(_c=init.nestedType)===null||_c===void 0?void 0:_c.map(bootDescriptorProto))!==null&&_d!==void 0?_d:[],enumType:(_f=(_e=init.enumType)===null||_e===void 0?void 0:_e.map(bootEnumDescriptorProto))!==null&&_f!==void 0?_f:[],extensionRange:(_h=(_g=init.extensionRange)===null||_g===void 0?void 0:_g.map(e=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},e)))!==null&&_h!==void 0?_h:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function bootFieldDescriptorProto(init){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},init),{options:init.options?bootFieldOptions(init.options):void 0}))}function bootFieldOptions(init){var _a,_b,_c;return Object.assign(Object.create({ctype:0,packed:!1,jstype:0,lazy:!1,unverifiedLazy:!1,deprecated:!1,weak:!1,debugRedact:!1,retention:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldOptions"},init),{targets:(_a=init.targets)!==null&&_a!==void 0?_a:[],editionDefaults:(_c=(_b=init.editionDefaults)===null||_b===void 0?void 0:_b.map(e=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},e)))!==null&&_c!==void 0?_c:[],uninterpretedOption:[]}))}function bootEnumDescriptorProto(init){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:init.name,reservedName:[],reservedRange:[],value:init.value.map(e=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},e))})}function messageDesc(file,path,...paths){return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path])}var file_google_protobuf_descriptor=boot({name:"google/protobuf/descriptor.proto",package:"google.protobuf",messageType:[{name:"FileDescriptorSet",field:[{name:"file",number:1,type:11,label:3,typeName:".google.protobuf.FileDescriptorProto"}],extensionRange:[{start:536e6,end:536000001}]},{name:"FileDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"package",number:2,type:9,label:1},{name:"dependency",number:3,type:9,label:3},{name:"public_dependency",number:10,type:5,label:3},{name:"weak_dependency",number:11,type:5,label:3},{name:"option_dependency",number:15,type:9,label:3},{name:"message_type",number:4,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:5,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"service",number:6,type:11,label:3,typeName:".google.protobuf.ServiceDescriptorProto"},{name:"extension",number:7,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FileOptions"},{name:"source_code_info",number:9,type:11,label:1,typeName:".google.protobuf.SourceCodeInfo"},{name:"syntax",number:12,type:9,label:1},{name:"edition",number:14,type:14,label:1,typeName:".google.protobuf.Edition"}]},{name:"DescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"field",number:2,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"extension",number:6,type:11,label:3,typeName:".google.protobuf.FieldDescriptorProto"},{name:"nested_type",number:3,type:11,label:3,typeName:".google.protobuf.DescriptorProto"},{name:"enum_type",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto"},{name:"extension_range",number:5,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ExtensionRange"},{name:"oneof_decl",number:8,type:11,label:3,typeName:".google.protobuf.OneofDescriptorProto"},{name:"options",number:7,type:11,label:1,typeName:".google.protobuf.MessageOptions"},{name:"reserved_range",number:9,type:11,label:3,typeName:".google.protobuf.DescriptorProto.ReservedRange"},{name:"reserved_name",number:10,type:9,label:3},{name:"visibility",number:11,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"ExtensionRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ExtensionRangeOptions"}]},{name:"ReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"ExtensionRangeOptions",field:[{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"},{name:"declaration",number:2,type:11,label:3,typeName:".google.protobuf.ExtensionRangeOptions.Declaration",options:{retention:2}},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"verification",number:3,type:14,label:1,typeName:".google.protobuf.ExtensionRangeOptions.VerificationState",defaultValue:"UNVERIFIED",options:{retention:2}}],nestedType:[{name:"Declaration",field:[{name:"number",number:1,type:5,label:1},{name:"full_name",number:2,type:9,label:1},{name:"type",number:3,type:9,label:1},{name:"reserved",number:5,type:8,label:1},{name:"repeated",number:6,type:8,label:1}]}],enumType:[{name:"VerificationState",value:[{name:"DECLARATION",number:0},{name:"UNVERIFIED",number:1}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:3,type:5,label:1},{name:"label",number:4,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Label"},{name:"type",number:5,type:14,label:1,typeName:".google.protobuf.FieldDescriptorProto.Type"},{name:"type_name",number:6,type:9,label:1},{name:"extendee",number:2,type:9,label:1},{name:"default_value",number:7,type:9,label:1},{name:"oneof_index",number:9,type:5,label:1},{name:"json_name",number:10,type:9,label:1},{name:"options",number:8,type:11,label:1,typeName:".google.protobuf.FieldOptions"},{name:"proto3_optional",number:17,type:8,label:1}],enumType:[{name:"Type",value:[{name:"TYPE_DOUBLE",number:1},{name:"TYPE_FLOAT",number:2},{name:"TYPE_INT64",number:3},{name:"TYPE_UINT64",number:4},{name:"TYPE_INT32",number:5},{name:"TYPE_FIXED64",number:6},{name:"TYPE_FIXED32",number:7},{name:"TYPE_BOOL",number:8},{name:"TYPE_STRING",number:9},{name:"TYPE_GROUP",number:10},{name:"TYPE_MESSAGE",number:11},{name:"TYPE_BYTES",number:12},{name:"TYPE_UINT32",number:13},{name:"TYPE_ENUM",number:14},{name:"TYPE_SFIXED32",number:15},{name:"TYPE_SFIXED64",number:16},{name:"TYPE_SINT32",number:17},{name:"TYPE_SINT64",number:18}]},{name:"Label",value:[{name:"LABEL_OPTIONAL",number:1},{name:"LABEL_REPEATED",number:3},{name:"LABEL_REQUIRED",number:2}]}]},{name:"OneofDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"options",number:2,type:11,label:1,typeName:".google.protobuf.OneofOptions"}]},{name:"EnumDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"value",number:2,type:11,label:3,typeName:".google.protobuf.EnumValueDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumOptions"},{name:"reserved_range",number:4,type:11,label:3,typeName:".google.protobuf.EnumDescriptorProto.EnumReservedRange"},{name:"reserved_name",number:5,type:9,label:3},{name:"visibility",number:6,type:14,label:1,typeName:".google.protobuf.SymbolVisibility"}],nestedType:[{name:"EnumReservedRange",field:[{name:"start",number:1,type:5,label:1},{name:"end",number:2,type:5,label:1}]}]},{name:"EnumValueDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"number",number:2,type:5,label:1},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.EnumValueOptions"}]},{name:"ServiceDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"method",number:2,type:11,label:3,typeName:".google.protobuf.MethodDescriptorProto"},{name:"options",number:3,type:11,label:1,typeName:".google.protobuf.ServiceOptions"}]},{name:"MethodDescriptorProto",field:[{name:"name",number:1,type:9,label:1},{name:"input_type",number:2,type:9,label:1},{name:"output_type",number:3,type:9,label:1},{name:"options",number:4,type:11,label:1,typeName:".google.protobuf.MethodOptions"},{name:"client_streaming",number:5,type:8,label:1,defaultValue:"false"},{name:"server_streaming",number:6,type:8,label:1,defaultValue:"false"}]},{name:"FileOptions",field:[{name:"java_package",number:1,type:9,label:1},{name:"java_outer_classname",number:8,type:9,label:1},{name:"java_multiple_files",number:10,type:8,label:1,defaultValue:"false",options:{}},{name:"java_generate_equals_and_hash",number:20,type:8,label:1,options:{deprecated:!0}},{name:"java_string_check_utf8",number:27,type:8,label:1,defaultValue:"false"},{name:"optimize_for",number:9,type:14,label:1,typeName:".google.protobuf.FileOptions.OptimizeMode",defaultValue:"SPEED"},{name:"go_package",number:11,type:9,label:1},{name:"cc_generic_services",number:16,type:8,label:1,defaultValue:"false"},{name:"java_generic_services",number:17,type:8,label:1,defaultValue:"false"},{name:"py_generic_services",number:18,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:23,type:8,label:1,defaultValue:"false"},{name:"cc_enable_arenas",number:31,type:8,label:1,defaultValue:"true"},{name:"objc_class_prefix",number:36,type:9,label:1},{name:"csharp_namespace",number:37,type:9,label:1},{name:"swift_prefix",number:39,type:9,label:1},{name:"php_class_prefix",number:40,type:9,label:1},{name:"php_namespace",number:41,type:9,label:1},{name:"php_metadata_namespace",number:44,type:9,label:1},{name:"ruby_package",number:45,type:9,label:1},{name:"features",number:50,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"OptimizeMode",value:[{name:"SPEED",number:1},{name:"CODE_SIZE",number:2},{name:"LITE_RUNTIME",number:3}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"MessageOptions",field:[{name:"message_set_wire_format",number:1,type:8,label:1,defaultValue:"false"},{name:"no_standard_descriptor_accessor",number:2,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"map_entry",number:7,type:8,label:1},{name:"deprecated_legacy_json_field_conflicts",number:11,type:8,label:1,options:{deprecated:!0}},{name:"features",number:12,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"FieldOptions",field:[{name:"ctype",number:1,type:14,label:1,typeName:".google.protobuf.FieldOptions.CType",defaultValue:"STRING"},{name:"packed",number:2,type:8,label:1},{name:"jstype",number:6,type:14,label:1,typeName:".google.protobuf.FieldOptions.JSType",defaultValue:"JS_NORMAL"},{name:"lazy",number:5,type:8,label:1,defaultValue:"false"},{name:"unverified_lazy",number:15,type:8,label:1,defaultValue:"false"},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"weak",number:10,type:8,label:1,defaultValue:"false",options:{deprecated:!0}},{name:"debug_redact",number:16,type:8,label:1,defaultValue:"false"},{name:"retention",number:17,type:14,label:1,typeName:".google.protobuf.FieldOptions.OptionRetention"},{name:"targets",number:19,type:14,label:3,typeName:".google.protobuf.FieldOptions.OptionTargetType"},{name:"edition_defaults",number:20,type:11,label:3,typeName:".google.protobuf.FieldOptions.EditionDefault"},{name:"features",number:21,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"feature_support",number:22,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],nestedType:[{name:"EditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"value",number:2,type:9,label:1}]},{name:"FeatureSupport",field:[{name:"edition_introduced",number:1,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"edition_deprecated",number:2,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"deprecation_warning",number:3,type:9,label:1},{name:"edition_removed",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"removal_error",number:5,type:9,label:1}]}],enumType:[{name:"CType",value:[{name:"STRING",number:0},{name:"CORD",number:1},{name:"STRING_PIECE",number:2}]},{name:"JSType",value:[{name:"JS_NORMAL",number:0},{name:"JS_STRING",number:1},{name:"JS_NUMBER",number:2}]},{name:"OptionRetention",value:[{name:"RETENTION_UNKNOWN",number:0},{name:"RETENTION_RUNTIME",number:1},{name:"RETENTION_SOURCE",number:2}]},{name:"OptionTargetType",value:[{name:"TARGET_TYPE_UNKNOWN",number:0},{name:"TARGET_TYPE_FILE",number:1},{name:"TARGET_TYPE_EXTENSION_RANGE",number:2},{name:"TARGET_TYPE_MESSAGE",number:3},{name:"TARGET_TYPE_FIELD",number:4},{name:"TARGET_TYPE_ONEOF",number:5},{name:"TARGET_TYPE_ENUM",number:6},{name:"TARGET_TYPE_ENUM_ENTRY",number:7},{name:"TARGET_TYPE_SERVICE",number:8},{name:"TARGET_TYPE_METHOD",number:9}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"OneofOptions",field:[{name:"features",number:1,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumOptions",field:[{name:"allow_alias",number:2,type:8,label:1},{name:"deprecated",number:3,type:8,label:1,defaultValue:"false"},{name:"deprecated_legacy_json_field_conflicts",number:6,type:8,label:1,options:{deprecated:!0}},{name:"features",number:7,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"EnumValueOptions",field:[{name:"deprecated",number:1,type:8,label:1,defaultValue:"false"},{name:"features",number:2,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"debug_redact",number:3,type:8,label:1,defaultValue:"false"},{name:"feature_support",number:4,type:11,label:1,typeName:".google.protobuf.FieldOptions.FeatureSupport"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"ServiceOptions",field:[{name:"features",number:34,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],extensionRange:[{start:1e3,end:536870912}]},{name:"MethodOptions",field:[{name:"deprecated",number:33,type:8,label:1,defaultValue:"false"},{name:"idempotency_level",number:34,type:14,label:1,typeName:".google.protobuf.MethodOptions.IdempotencyLevel",defaultValue:"IDEMPOTENCY_UNKNOWN"},{name:"features",number:35,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"uninterpreted_option",number:999,type:11,label:3,typeName:".google.protobuf.UninterpretedOption"}],enumType:[{name:"IdempotencyLevel",value:[{name:"IDEMPOTENCY_UNKNOWN",number:0},{name:"NO_SIDE_EFFECTS",number:1},{name:"IDEMPOTENT",number:2}]}],extensionRange:[{start:1e3,end:536870912}]},{name:"UninterpretedOption",field:[{name:"name",number:2,type:11,label:3,typeName:".google.protobuf.UninterpretedOption.NamePart"},{name:"identifier_value",number:3,type:9,label:1},{name:"positive_int_value",number:4,type:4,label:1},{name:"negative_int_value",number:5,type:3,label:1},{name:"double_value",number:6,type:1,label:1},{name:"string_value",number:7,type:12,label:1},{name:"aggregate_value",number:8,type:9,label:1}],nestedType:[{name:"NamePart",field:[{name:"name_part",number:1,type:9,label:2},{name:"is_extension",number:2,type:8,label:2}]}]},{name:"FeatureSet",field:[{name:"field_presence",number:1,type:14,label:1,typeName:".google.protobuf.FeatureSet.FieldPresence",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPLICIT",edition:900},{value:"IMPLICIT",edition:999},{value:"EXPLICIT",edition:1e3}]}},{name:"enum_type",number:2,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnumType",options:{retention:1,targets:[6,1],editionDefaults:[{value:"CLOSED",edition:900},{value:"OPEN",edition:999}]}},{name:"repeated_field_encoding",number:3,type:14,label:1,typeName:".google.protobuf.FeatureSet.RepeatedFieldEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"EXPANDED",edition:900},{value:"PACKED",edition:999}]}},{name:"utf8_validation",number:4,type:14,label:1,typeName:".google.protobuf.FeatureSet.Utf8Validation",options:{retention:1,targets:[4,1],editionDefaults:[{value:"NONE",edition:900},{value:"VERIFY",edition:999}]}},{name:"message_encoding",number:5,type:14,label:1,typeName:".google.protobuf.FeatureSet.MessageEncoding",options:{retention:1,targets:[4,1],editionDefaults:[{value:"LENGTH_PREFIXED",edition:900}]}},{name:"json_format",number:6,type:14,label:1,typeName:".google.protobuf.FeatureSet.JsonFormat",options:{retention:1,targets:[3,6,1],editionDefaults:[{value:"LEGACY_BEST_EFFORT",edition:900},{value:"ALLOW",edition:999}]}},{name:"enforce_naming_style",number:7,type:14,label:1,typeName:".google.protobuf.FeatureSet.EnforceNamingStyle",options:{retention:2,targets:[1,2,3,4,5,6,7,8,9],editionDefaults:[{value:"STYLE_LEGACY",edition:900},{value:"STYLE2024",edition:1001}]}},{name:"default_symbol_visibility",number:8,type:14,label:1,typeName:".google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility",options:{retention:2,targets:[1],editionDefaults:[{value:"EXPORT_ALL",edition:900},{value:"EXPORT_TOP_LEVEL",edition:1001}]}}],nestedType:[{name:"VisibilityFeature",enumType:[{name:"DefaultSymbolVisibility",value:[{name:"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",number:0},{name:"EXPORT_ALL",number:1},{name:"EXPORT_TOP_LEVEL",number:2},{name:"LOCAL_ALL",number:3},{name:"STRICT",number:4}]}]}],enumType:[{name:"FieldPresence",value:[{name:"FIELD_PRESENCE_UNKNOWN",number:0},{name:"EXPLICIT",number:1},{name:"IMPLICIT",number:2},{name:"LEGACY_REQUIRED",number:3}]},{name:"EnumType",value:[{name:"ENUM_TYPE_UNKNOWN",number:0},{name:"OPEN",number:1},{name:"CLOSED",number:2}]},{name:"RepeatedFieldEncoding",value:[{name:"REPEATED_FIELD_ENCODING_UNKNOWN",number:0},{name:"PACKED",number:1},{name:"EXPANDED",number:2}]},{name:"Utf8Validation",value:[{name:"UTF8_VALIDATION_UNKNOWN",number:0},{name:"VERIFY",number:2},{name:"NONE",number:3}]},{name:"MessageEncoding",value:[{name:"MESSAGE_ENCODING_UNKNOWN",number:0},{name:"LENGTH_PREFIXED",number:1},{name:"DELIMITED",number:2}]},{name:"JsonFormat",value:[{name:"JSON_FORMAT_UNKNOWN",number:0},{name:"ALLOW",number:1},{name:"LEGACY_BEST_EFFORT",number:2}]},{name:"EnforceNamingStyle",value:[{name:"ENFORCE_NAMING_STYLE_UNKNOWN",number:0},{name:"STYLE2024",number:1},{name:"STYLE_LEGACY",number:2}]}],extensionRange:[{start:1e3,end:9995},{start:9995,end:1e4},{start:1e4,end:10001}]},{name:"FeatureSetDefaults",field:[{name:"defaults",number:1,type:11,label:3,typeName:".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault"},{name:"minimum_edition",number:4,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"maximum_edition",number:5,type:14,label:1,typeName:".google.protobuf.Edition"}],nestedType:[{name:"FeatureSetEditionDefault",field:[{name:"edition",number:3,type:14,label:1,typeName:".google.protobuf.Edition"},{name:"overridable_features",number:4,type:11,label:1,typeName:".google.protobuf.FeatureSet"},{name:"fixed_features",number:5,type:11,label:1,typeName:".google.protobuf.FeatureSet"}]}]},{name:"SourceCodeInfo",field:[{name:"location",number:1,type:11,label:3,typeName:".google.protobuf.SourceCodeInfo.Location"}],nestedType:[{name:"Location",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"span",number:2,type:5,label:3,options:{packed:!0}},{name:"leading_comments",number:3,type:9,label:1},{name:"trailing_comments",number:4,type:9,label:1},{name:"leading_detached_comments",number:6,type:9,label:3}]}],extensionRange:[{start:536e6,end:536000001}]},{name:"GeneratedCodeInfo",field:[{name:"annotation",number:1,type:11,label:3,typeName:".google.protobuf.GeneratedCodeInfo.Annotation"}],nestedType:[{name:"Annotation",field:[{name:"path",number:1,type:5,label:3,options:{packed:!0}},{name:"source_file",number:2,type:9,label:1},{name:"begin",number:3,type:5,label:1},{name:"end",number:4,type:5,label:1},{name:"semantic",number:5,type:14,label:1,typeName:".google.protobuf.GeneratedCodeInfo.Annotation.Semantic"}],enumType:[{name:"Semantic",value:[{name:"NONE",number:0},{name:"SET",number:1},{name:"ALIAS",number:2}]}]}]}],enumType:[{name:"Edition",value:[{name:"EDITION_UNKNOWN",number:0},{name:"EDITION_LEGACY",number:900},{name:"EDITION_PROTO2",number:998},{name:"EDITION_PROTO3",number:999},{name:"EDITION_2023",number:1e3},{name:"EDITION_2024",number:1001},{name:"EDITION_UNSTABLE",number:9999},{name:"EDITION_1_TEST_ONLY",number:1},{name:"EDITION_2_TEST_ONLY",number:2},{name:"EDITION_99997_TEST_ONLY",number:99997},{name:"EDITION_99998_TEST_ONLY",number:99998},{name:"EDITION_99999_TEST_ONLY",number:99999},{name:"EDITION_MAX",number:2147483647}]},{name:"SymbolVisibility",value:[{name:"VISIBILITY_UNSET",number:0},{name:"VISIBILITY_LOCAL",number:1},{name:"VISIBILITY_EXPORT",number:2}]}]});var FileDescriptorProtoSchema=messageDesc(file_google_protobuf_descriptor,1);var ExtensionRangeOptions_VerificationState;(function(ExtensionRangeOptions_VerificationState2){ExtensionRangeOptions_VerificationState2[ExtensionRangeOptions_VerificationState2.DECLARATION=0]="DECLARATION",ExtensionRangeOptions_VerificationState2[ExtensionRangeOptions_VerificationState2.UNVERIFIED=1]="UNVERIFIED"})(ExtensionRangeOptions_VerificationState||(ExtensionRangeOptions_VerificationState={}));var FieldDescriptorProto_Type;(function(FieldDescriptorProto_Type2){FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.DOUBLE=1]="DOUBLE",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.FLOAT=2]="FLOAT",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.INT64=3]="INT64",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.UINT64=4]="UINT64",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.INT32=5]="INT32",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.FIXED64=6]="FIXED64",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.FIXED32=7]="FIXED32",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.BOOL=8]="BOOL",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.STRING=9]="STRING",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.GROUP=10]="GROUP",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.MESSAGE=11]="MESSAGE",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.BYTES=12]="BYTES",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.UINT32=13]="UINT32",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.ENUM=14]="ENUM",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.SFIXED32=15]="SFIXED32",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.SFIXED64=16]="SFIXED64",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.SINT32=17]="SINT32",FieldDescriptorProto_Type2[FieldDescriptorProto_Type2.SINT64=18]="SINT64"})(FieldDescriptorProto_Type||(FieldDescriptorProto_Type={}));var FieldDescriptorProto_Label;(function(FieldDescriptorProto_Label2){FieldDescriptorProto_Label2[FieldDescriptorProto_Label2.OPTIONAL=1]="OPTIONAL",FieldDescriptorProto_Label2[FieldDescriptorProto_Label2.REPEATED=3]="REPEATED",FieldDescriptorProto_Label2[FieldDescriptorProto_Label2.REQUIRED=2]="REQUIRED"})(FieldDescriptorProto_Label||(FieldDescriptorProto_Label={}));var FileOptions_OptimizeMode;(function(FileOptions_OptimizeMode2){FileOptions_OptimizeMode2[FileOptions_OptimizeMode2.SPEED=1]="SPEED",FileOptions_OptimizeMode2[FileOptions_OptimizeMode2.CODE_SIZE=2]="CODE_SIZE",FileOptions_OptimizeMode2[FileOptions_OptimizeMode2.LITE_RUNTIME=3]="LITE_RUNTIME"})(FileOptions_OptimizeMode||(FileOptions_OptimizeMode={}));var FieldOptions_CType;(function(FieldOptions_CType2){FieldOptions_CType2[FieldOptions_CType2.STRING=0]="STRING",FieldOptions_CType2[FieldOptions_CType2.CORD=1]="CORD",FieldOptions_CType2[FieldOptions_CType2.STRING_PIECE=2]="STRING_PIECE"})(FieldOptions_CType||(FieldOptions_CType={}));var FieldOptions_JSType;(function(FieldOptions_JSType2){FieldOptions_JSType2[FieldOptions_JSType2.JS_NORMAL=0]="JS_NORMAL",FieldOptions_JSType2[FieldOptions_JSType2.JS_STRING=1]="JS_STRING",FieldOptions_JSType2[FieldOptions_JSType2.JS_NUMBER=2]="JS_NUMBER"})(FieldOptions_JSType||(FieldOptions_JSType={}));var FieldOptions_OptionRetention;(function(FieldOptions_OptionRetention2){FieldOptions_OptionRetention2[FieldOptions_OptionRetention2.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",FieldOptions_OptionRetention2[FieldOptions_OptionRetention2.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",FieldOptions_OptionRetention2[FieldOptions_OptionRetention2.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(FieldOptions_OptionRetention||(FieldOptions_OptionRetention={}));var FieldOptions_OptionTargetType;(function(FieldOptions_OptionTargetType2){FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",FieldOptions_OptionTargetType2[FieldOptions_OptionTargetType2.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(FieldOptions_OptionTargetType||(FieldOptions_OptionTargetType={}));var MethodOptions_IdempotencyLevel;(function(MethodOptions_IdempotencyLevel2){MethodOptions_IdempotencyLevel2[MethodOptions_IdempotencyLevel2.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",MethodOptions_IdempotencyLevel2[MethodOptions_IdempotencyLevel2.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",MethodOptions_IdempotencyLevel2[MethodOptions_IdempotencyLevel2.IDEMPOTENT=2]="IDEMPOTENT"})(MethodOptions_IdempotencyLevel||(MethodOptions_IdempotencyLevel={}));var FeatureSet_VisibilityFeature_DefaultSymbolVisibility;(function(FeatureSet_VisibilityFeature_DefaultSymbolVisibility2){FeatureSet_VisibilityFeature_DefaultSymbolVisibility2[FeatureSet_VisibilityFeature_DefaultSymbolVisibility2.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",FeatureSet_VisibilityFeature_DefaultSymbolVisibility2[FeatureSet_VisibilityFeature_DefaultSymbolVisibility2.EXPORT_ALL=1]="EXPORT_ALL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility2[FeatureSet_VisibilityFeature_DefaultSymbolVisibility2.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility2[FeatureSet_VisibilityFeature_DefaultSymbolVisibility2.LOCAL_ALL=3]="LOCAL_ALL",FeatureSet_VisibilityFeature_DefaultSymbolVisibility2[FeatureSet_VisibilityFeature_DefaultSymbolVisibility2.STRICT=4]="STRICT"})(FeatureSet_VisibilityFeature_DefaultSymbolVisibility||(FeatureSet_VisibilityFeature_DefaultSymbolVisibility={}));var FeatureSet_FieldPresence;(function(FeatureSet_FieldPresence2){FeatureSet_FieldPresence2[FeatureSet_FieldPresence2.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",FeatureSet_FieldPresence2[FeatureSet_FieldPresence2.EXPLICIT=1]="EXPLICIT",FeatureSet_FieldPresence2[FeatureSet_FieldPresence2.IMPLICIT=2]="IMPLICIT",FeatureSet_FieldPresence2[FeatureSet_FieldPresence2.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(FeatureSet_FieldPresence||(FeatureSet_FieldPresence={}));var FeatureSet_EnumType;(function(FeatureSet_EnumType2){FeatureSet_EnumType2[FeatureSet_EnumType2.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",FeatureSet_EnumType2[FeatureSet_EnumType2.OPEN=1]="OPEN",FeatureSet_EnumType2[FeatureSet_EnumType2.CLOSED=2]="CLOSED"})(FeatureSet_EnumType||(FeatureSet_EnumType={}));var FeatureSet_RepeatedFieldEncoding;(function(FeatureSet_RepeatedFieldEncoding2){FeatureSet_RepeatedFieldEncoding2[FeatureSet_RepeatedFieldEncoding2.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",FeatureSet_RepeatedFieldEncoding2[FeatureSet_RepeatedFieldEncoding2.PACKED=1]="PACKED",FeatureSet_RepeatedFieldEncoding2[FeatureSet_RepeatedFieldEncoding2.EXPANDED=2]="EXPANDED"})(FeatureSet_RepeatedFieldEncoding||(FeatureSet_RepeatedFieldEncoding={}));var FeatureSet_Utf8Validation;(function(FeatureSet_Utf8Validation2){FeatureSet_Utf8Validation2[FeatureSet_Utf8Validation2.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",FeatureSet_Utf8Validation2[FeatureSet_Utf8Validation2.VERIFY=2]="VERIFY",FeatureSet_Utf8Validation2[FeatureSet_Utf8Validation2.NONE=3]="NONE"})(FeatureSet_Utf8Validation||(FeatureSet_Utf8Validation={}));var FeatureSet_MessageEncoding;(function(FeatureSet_MessageEncoding2){FeatureSet_MessageEncoding2[FeatureSet_MessageEncoding2.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",FeatureSet_MessageEncoding2[FeatureSet_MessageEncoding2.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",FeatureSet_MessageEncoding2[FeatureSet_MessageEncoding2.DELIMITED=2]="DELIMITED"})(FeatureSet_MessageEncoding||(FeatureSet_MessageEncoding={}));var FeatureSet_JsonFormat;(function(FeatureSet_JsonFormat2){FeatureSet_JsonFormat2[FeatureSet_JsonFormat2.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",FeatureSet_JsonFormat2[FeatureSet_JsonFormat2.ALLOW=1]="ALLOW",FeatureSet_JsonFormat2[FeatureSet_JsonFormat2.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(FeatureSet_JsonFormat||(FeatureSet_JsonFormat={}));var FeatureSet_EnforceNamingStyle;(function(FeatureSet_EnforceNamingStyle2){FeatureSet_EnforceNamingStyle2[FeatureSet_EnforceNamingStyle2.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",FeatureSet_EnforceNamingStyle2[FeatureSet_EnforceNamingStyle2.STYLE2024=1]="STYLE2024",FeatureSet_EnforceNamingStyle2[FeatureSet_EnforceNamingStyle2.STYLE_LEGACY=2]="STYLE_LEGACY"})(FeatureSet_EnforceNamingStyle||(FeatureSet_EnforceNamingStyle={}));var GeneratedCodeInfo_Annotation_Semantic;(function(GeneratedCodeInfo_Annotation_Semantic2){GeneratedCodeInfo_Annotation_Semantic2[GeneratedCodeInfo_Annotation_Semantic2.NONE=0]="NONE",GeneratedCodeInfo_Annotation_Semantic2[GeneratedCodeInfo_Annotation_Semantic2.SET=1]="SET",GeneratedCodeInfo_Annotation_Semantic2[GeneratedCodeInfo_Annotation_Semantic2.ALIAS=2]="ALIAS"})(GeneratedCodeInfo_Annotation_Semantic||(GeneratedCodeInfo_Annotation_Semantic={}));var Edition;(function(Edition2){Edition2[Edition2.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",Edition2[Edition2.EDITION_LEGACY=900]="EDITION_LEGACY",Edition2[Edition2.EDITION_PROTO2=998]="EDITION_PROTO2",Edition2[Edition2.EDITION_PROTO3=999]="EDITION_PROTO3",Edition2[Edition2.EDITION_2023=1e3]="EDITION_2023",Edition2[Edition2.EDITION_2024=1001]="EDITION_2024",Edition2[Edition2.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",Edition2[Edition2.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",Edition2[Edition2.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",Edition2[Edition2.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",Edition2[Edition2.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",Edition2[Edition2.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",Edition2[Edition2.EDITION_MAX=2147483647]="EDITION_MAX"})(Edition||(Edition={}));var SymbolVisibility;(function(SymbolVisibility2){SymbolVisibility2[SymbolVisibility2.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",SymbolVisibility2[SymbolVisibility2.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",SymbolVisibility2[SymbolVisibility2.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(SymbolVisibility||(SymbolVisibility={}));var readDefaults={readUnknownFields:!0};function makeReadOptions(options){return options?Object.assign(Object.assign({},readDefaults),options):readDefaults}function fromBinary(schema,bytes,options){let msg=reflect(schema,void 0,!1);return readMessage(msg,new BinaryReader(bytes),makeReadOptions(options),!1,bytes.byteLength),msg.message}function readMessage(message,reader,options,delimited,lengthOrDelimitedFieldNo){var _a;let end=delimited?reader.len:reader.pos+lengthOrDelimitedFieldNo,fieldNo,wireType,unknownFields=(_a=message.getUnknown())!==null&&_a!==void 0?_a:[];for(;reader.pos<end&&([fieldNo,wireType]=reader.tag(),!(delimited&&wireType==WireType.EndGroup));){let field=message.findNumber(fieldNo);if(!field){let data=reader.skip(wireType,fieldNo);options.readUnknownFields&&unknownFields.push({no:fieldNo,wireType,data});continue}readField(message,reader,field,wireType,options)}if(delimited&&(wireType!=WireType.EndGroup||fieldNo!==lengthOrDelimitedFieldNo))throw new Error("invalid end group tag");unknownFields.length>0&&message.setUnknown(unknownFields)}function readField(message,reader,field,wireType,options){var _a;switch(field.fieldKind){case"scalar":message.set(field,readScalar(reader,field.scalar,field.utf8Validation));break;case"enum":let val=readScalar(reader,ScalarType.INT32);if(field.enum.open)message.set(field,val);else if(field.enum.values.some(v=>v.number===val))message.set(field,val);else if(options.readUnknownFields){let bytes=[];varint32write(val,bytes);let unknownFields=(_a=message.getUnknown())!==null&&_a!==void 0?_a:[];unknownFields.push({no:field.number,wireType,data:new Uint8Array(bytes)}),message.setUnknown(unknownFields)}break;case"message":message.set(field,readMessageField(reader,options,field,message.get(field)));break;case"list":readListField(reader,wireType,message.get(field),options);break;case"map":readMapEntry(reader,message.get(field),options);break}}function readMapEntry(reader,map,options){let field=map.field(),key,val,len=reader.uint32(),end=reader.pos+len;for(;reader.pos<end;){let[fieldNo]=reader.tag();switch(fieldNo){case 1:key=readScalar(reader,field.mapKey,field.utf8Validation);break;case 2:switch(field.mapKind){case"scalar":val=readScalar(reader,field.scalar,field.utf8Validation);break;case"enum":val=reader.int32();break;case"message":val=readMessageField(reader,options,field);break}break}}if(key===void 0&&(key=scalarZeroValue(field.mapKey,!1)),val===void 0)switch(field.mapKind){case"scalar":val=scalarZeroValue(field.scalar,!1);break;case"enum":val=field.enum.values[0].number;break;case"message":val=reflect(field.message,void 0,!1);break}map.set(key,val)}function readListField(reader,wireType,list,options){var _a;let field=list.field();if(field.listKind==="message"){list.add(readMessageField(reader,options,field));return}let scalarType=(_a=field.scalar)!==null&&_a!==void 0?_a:ScalarType.INT32;if(!(wireType==WireType.LengthDelimited&&scalarType!=ScalarType.STRING&&scalarType!=ScalarType.BYTES)){list.add(readScalar(reader,scalarType,field.utf8Validation));return}let e=reader.uint32()+reader.pos;for(;reader.pos<e;)list.add(readScalar(reader,scalarType,field.utf8Validation))}function readMessageField(reader,options,field,mergeMessage){let delimited=field.delimitedEncoding,message=mergeMessage??reflect(field.message,void 0,!1);return readMessage(message,reader,options,delimited,delimited?field.number:reader.uint32()),message}function readScalar(reader,type,validateUtf8=!1){switch(type){case ScalarType.STRING:return reader.string(validateUtf8);case ScalarType.BOOL:return reader.bool();case ScalarType.DOUBLE:return reader.double();case ScalarType.FLOAT:return reader.float();case ScalarType.INT32:return reader.int32();case ScalarType.INT64:return reader.int64();case ScalarType.UINT64:return reader.uint64();case ScalarType.FIXED64:return reader.fixed64();case ScalarType.BYTES:return reader.bytes();case ScalarType.FIXED32:return reader.fixed32();case ScalarType.SFIXED32:return reader.sfixed32();case ScalarType.SFIXED64:return reader.sfixed64();case ScalarType.SINT64:return reader.sint64();case ScalarType.UINT32:return reader.uint32();case ScalarType.SINT32:return reader.sint32()}}function fileDesc(b64,imports){var _a;let root=fromBinary(FileDescriptorProtoSchema,base64Decode(b64));return root.messageType.forEach(restoreJsonNames),root.dependency=(_a=imports?.map(f=>f.proto.name))!==null&&_a!==void 0?_a:[],createFileRegistry(root,protoFileName=>imports?.find(f=>f.proto.name===protoFileName)).getFile(root.name)}var file_google_protobuf_timestamp=fileDesc("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),TimestampSchema=messageDesc(file_google_protobuf_timestamp,0);function timestampFromDate(date3){return timestampFromMs(date3.getTime())}function timestampFromMs(timestampMs){let seconds=Math.floor(timestampMs/1e3);return create(TimestampSchema,{seconds:protoInt64.parse(seconds),nanos:(timestampMs-seconds*1e3)*1e6})}var file_google_protobuf_duration=fileDesc("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var file_google_protobuf_any=fileDesc("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),AnySchema=messageDesc(file_google_protobuf_any,0);var LEGACY_REQUIRED2=3,writeDefaults={writeUnknownFields:!0};function makeWriteOptions(options){return options?Object.assign(Object.assign({},writeDefaults),options):writeDefaults}function toBinary(schema,message,options){return writeFields(new BinaryWriter,makeWriteOptions(options),reflect(schema,message)).finish()}function writeFields(writer,opts,msg){var _a;for(let f of msg.sortedFields){if(!msg.isSet(f)){if(f.presence==LEGACY_REQUIRED2)throw new Error(`cannot encode ${f} to binary: required field not set`);continue}writeField(writer,opts,msg,f)}if(opts.writeUnknownFields)for(let{no,wireType,data}of(_a=msg.getUnknown())!==null&&_a!==void 0?_a:[])writer.tag(no,wireType).raw(data);return writer}function writeField(writer,opts,msg,field){var _a;switch(field.fieldKind){case"scalar":case"enum":writeScalar(writer,msg.desc.typeName,field.name,(_a=field.scalar)!==null&&_a!==void 0?_a:ScalarType.INT32,field.number,msg.get(field));break;case"list":writeListField(writer,opts,field,msg.get(field));break;case"message":writeMessageField(writer,opts,field,msg.get(field));break;case"map":for(let[key,val]of msg.get(field))writeMapEntry(writer,opts,field,key,val);break}}function writeScalar(writer,msgName,fieldName,scalarType,fieldNo,value){writeScalarValue(writer.tag(fieldNo,writeTypeOfScalar(scalarType)),msgName,fieldName,scalarType,value)}function writeMessageField(writer,opts,field,message){field.delimitedEncoding?writeFields(writer.tag(field.number,WireType.StartGroup),opts,message).tag(field.number,WireType.EndGroup):writeFields(writer.tag(field.number,WireType.LengthDelimited).fork(),opts,message).join()}function writeListField(writer,opts,field,list){var _a;if(field.listKind=="message"){for(let item of list)writeMessageField(writer,opts,field,item);return}let scalarType=(_a=field.scalar)!==null&&_a!==void 0?_a:ScalarType.INT32;if(field.packed){if(!list.size)return;writer.tag(field.number,WireType.LengthDelimited).fork();for(let item of list)writeScalarValue(writer,field.parent.typeName,field.name,scalarType,item);writer.join();return}for(let item of list)writeScalar(writer,field.parent.typeName,field.name,scalarType,field.number,item)}function writeMapEntry(writer,opts,field,key,value){var _a;switch(writer.tag(field.number,WireType.LengthDelimited).fork(),writeScalar(writer,field.parent.typeName,field.name,field.mapKey,1,key),field.mapKind){case"scalar":case"enum":writeScalar(writer,field.parent.typeName,field.name,(_a=field.scalar)!==null&&_a!==void 0?_a:ScalarType.INT32,2,value);break;case"message":writeFields(writer.tag(2,WireType.LengthDelimited).fork(),opts,value).join();break}writer.join()}function writeScalarValue(writer,msgName,fieldName,type,value){try{switch(type){case ScalarType.STRING:writer.string(value);break;case ScalarType.BOOL:writer.bool(value);break;case ScalarType.DOUBLE:writer.double(value);break;case ScalarType.FLOAT:writer.float(value);break;case ScalarType.INT32:writer.int32(value);break;case ScalarType.INT64:writer.int64(value);break;case ScalarType.UINT64:writer.uint64(value);break;case ScalarType.FIXED64:writer.fixed64(value);break;case ScalarType.BYTES:writer.bytes(value);break;case ScalarType.FIXED32:writer.fixed32(value);break;case ScalarType.SFIXED32:writer.sfixed32(value);break;case ScalarType.SFIXED64:writer.sfixed64(value);break;case ScalarType.SINT64:writer.sint64(value);break;case ScalarType.UINT32:writer.uint32(value);break;case ScalarType.SINT32:writer.sint32(value);break}}catch(e){throw e instanceof Error?new Error(`cannot encode field ${msgName}.${fieldName} to binary: ${e.message}`):e}}function writeTypeOfScalar(type){switch(type){case ScalarType.BYTES:case ScalarType.STRING:return WireType.LengthDelimited;case ScalarType.DOUBLE:case ScalarType.FIXED64:case ScalarType.SFIXED64:return WireType.Bit64;case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.FLOAT:return WireType.Bit32;default:return WireType.Varint}}function anyPack(schema,message,into){let ret=!1;return into||(into=create(AnySchema),ret=!0),into.value=toBinary(schema,message),into.typeUrl=typeNameToUrl(message.$typeName),ret?into:void 0}function anyIs(any,descOrTypeName){if(any.typeUrl==="")return!1;let want=typeof descOrTypeName=="string"?descOrTypeName:descOrTypeName.typeName,got=typeUrlToName(any.typeUrl);return want===got}function anyUnpack(any,registryOrMessageDesc){if(any.typeUrl==="")return;let desc=registryOrMessageDesc.kind=="message"?registryOrMessageDesc:registryOrMessageDesc.getMessage(typeUrlToName(any.typeUrl));if(!(!desc||!anyIs(any,desc)))return fromBinary(desc,any.value)}function typeNameToUrl(name){return`type.googleapis.com/${name}`}function typeUrlToName(url){let slash=url.lastIndexOf("/"),name=slash>=0?url.substring(slash+1):url;if(!name.length)throw new Error(`invalid type url: ${url}`);return name}var file_google_protobuf_field_mask=fileDesc("CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKFAQoTY29tLmdvb2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVoyZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZmllbGRtYXNrcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw");var file_google_protobuf_struct=fileDesc("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),StructSchema=messageDesc(file_google_protobuf_struct,0),ValueSchema=messageDesc(file_google_protobuf_struct,1),ListValueSchema=messageDesc(file_google_protobuf_struct,2),NullValue;(function(NullValue2){NullValue2[NullValue2.NULL_VALUE=0]="NULL_VALUE"})(NullValue||(NullValue={}));function getExtension(message,extension){assertExtendee(extension,message);let ufs=filterUnknownFields(message.$unknown,extension),[container,field,get]=createExtensionContainer(extension);for(let uf of ufs)readField(container,new BinaryReader(uf.data),field,uf.wireType,{readUnknownFields:!0});return get()}function setExtension(message,extension,value){var _a;assertExtendee(extension,message);let ufs=((_a=message.$unknown)!==null&&_a!==void 0?_a:[]).filter(uf=>uf.no!==extension.number),[container,field]=createExtensionContainer(extension,value),writer=new BinaryWriter;writeField(writer,{writeUnknownFields:!0},container,field);let reader=new BinaryReader(writer.finish());for(;reader.pos<reader.len;){let[no,wireType]=reader.tag(),data=reader.skip(wireType,no);ufs.push({no,wireType,data})}message.$unknown=ufs}function filterUnknownFields(unknownFields,extension){if(unknownFields===void 0)return[];if(extension.fieldKind==="enum"||extension.fieldKind==="scalar"){for(let i=unknownFields.length-1;i>=0;--i)if(unknownFields[i].no==extension.number)return[unknownFields[i]];return[]}return unknownFields.filter(uf=>uf.no===extension.number)}function createExtensionContainer(extension,value){let localName=extension.typeName,field=Object.assign(Object.assign({},extension),{kind:"field",parent:extension.extendee,localName}),desc=Object.assign(Object.assign({},extension.extendee),{fields:[field],members:[field],oneofs:[]}),container=create(desc,value!==void 0?{[localName]:value}:void 0);return[reflect(desc,container),field,()=>{let value2=container[localName];if(value2===void 0){let desc2=extension.message;return isWrapperDesc(desc2)?scalarZeroValue(desc2.fields[0].scalar,desc2.fields[0].longAsString):create(desc2)}return value2}]}function assertExtendee(extension,message){if(extension.extendee.typeName!=message.$typeName)throw new Error(`extension ${extension.typeName} can only be applied to message ${extension.extendee.typeName}`)}var LEGACY_REQUIRED3=3,IMPLICIT4=2,jsonWriteDefaults={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function makeWriteOptions2(options){return options?Object.assign(Object.assign({},jsonWriteDefaults),options):jsonWriteDefaults}function toJson(schema,message,options){return reflectToJson(reflect(schema,message),makeWriteOptions2(options))}function toJsonString(schema,message,options){var _a;let jsonValue=toJson(schema,message,options);return JSON.stringify(jsonValue,null,(_a=options?.prettySpaces)!==null&&_a!==void 0?_a:0)}function reflectToJson(msg,opts){var _a;let wktJson=tryWktToJson(msg,opts);if(wktJson!==void 0)return wktJson;let json={};for(let f of msg.sortedFields){if(!msg.isSet(f)){if(f.presence==LEGACY_REQUIRED3)throw new Error(`cannot encode ${f} to JSON: required field not set`);if(!opts.alwaysEmitImplicit||f.presence!==IMPLICIT4)continue}let jsonValue=fieldToJson(f,msg.get(f),opts);jsonValue!==void 0&&(json[jsonName(f,opts)]=jsonValue)}if(opts.registry){let tagSeen=new Set;for(let{no}of(_a=msg.getUnknown())!==null&&_a!==void 0?_a:[])if(!tagSeen.has(no)){tagSeen.add(no);let extension=opts.registry.getExtensionFor(msg.desc,no);if(!extension)continue;let value=getExtension(msg.message,extension),[container,field]=createExtensionContainer(extension,value),jsonValue=fieldToJson(field,container.get(field),opts);jsonValue!==void 0&&(json[extension.jsonName]=jsonValue)}}return json}function fieldToJson(f,val,opts){switch(f.fieldKind){case"scalar":return scalarToJson(f,val);case"message":return reflectToJson(val,opts);case"enum":return enumToJsonInternal(f.enum,val,opts.enumAsInteger);case"list":return listToJson(val,opts);case"map":return mapToJson(val,opts)}}function mapToJson(map,opts){let f=map.field(),jsonObj={};switch(f.mapKind){case"scalar":for(let[entryKey,entryValue]of map)jsonObj[entryKey]=scalarToJson(f,entryValue);break;case"message":for(let[entryKey,entryValue]of map)jsonObj[entryKey]=reflectToJson(entryValue,opts);break;case"enum":for(let[entryKey,entryValue]of map)jsonObj[entryKey]=enumToJsonInternal(f.enum,entryValue,opts.enumAsInteger);break}return opts.alwaysEmitImplicit||map.size>0?jsonObj:void 0}function listToJson(list,opts){let f=list.field(),jsonArr=[];switch(f.listKind){case"scalar":for(let item of list)jsonArr.push(scalarToJson(f,item));break;case"enum":for(let item of list)jsonArr.push(enumToJsonInternal(f.enum,item,opts.enumAsInteger));break;case"message":for(let item of list)jsonArr.push(reflectToJson(item,opts));break}return opts.alwaysEmitImplicit||jsonArr.length>0?jsonArr:void 0}function enumToJsonInternal(desc,value,enumAsInteger){var _a;if(typeof value!="number")throw new Error(`cannot encode ${desc} to JSON: expected number, got ${formatVal(value)}`);if(desc.typeName=="google.protobuf.NullValue")return null;if(enumAsInteger)return value;let val=desc.value[value];return(_a=val?.name)!==null&&_a!==void 0?_a:value}function scalarToJson(field,value){var _a,_b,_c,_d,_e,_f;switch(field.scalar){case ScalarType.INT32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.FIXED32:case ScalarType.UINT32:if(typeof value!="number")throw new Error(`cannot encode ${field} to JSON: ${(_a=checkField(field,value))===null||_a===void 0?void 0:_a.message}`);return value;case ScalarType.FLOAT:case ScalarType.DOUBLE:if(typeof value!="number")throw new Error(`cannot encode ${field} to JSON: ${(_b=checkField(field,value))===null||_b===void 0?void 0:_b.message}`);return Number.isNaN(value)?"NaN":value===Number.POSITIVE_INFINITY?"Infinity":value===Number.NEGATIVE_INFINITY?"-Infinity":value;case ScalarType.STRING:if(typeof value!="string")throw new Error(`cannot encode ${field} to JSON: ${(_c=checkField(field,value))===null||_c===void 0?void 0:_c.message}`);return value;case ScalarType.BOOL:if(typeof value!="boolean")throw new Error(`cannot encode ${field} to JSON: ${(_d=checkField(field,value))===null||_d===void 0?void 0:_d.message}`);return value;case ScalarType.UINT64:case ScalarType.FIXED64:case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(typeof value=="bigint"||typeof value=="string"||typeof value=="number"&&Number.isInteger(value))return value.toString();throw new Error(`cannot encode ${field} to JSON: ${(_e=checkField(field,value))===null||_e===void 0?void 0:_e.message}`);case ScalarType.BYTES:if(value instanceof Uint8Array)return base64Encode(value);throw new Error(`cannot encode ${field} to JSON: ${(_f=checkField(field,value))===null||_f===void 0?void 0:_f.message}`)}}function jsonName(f,opts){return opts.useProtoFieldName?f.name:f.jsonName}function tryWktToJson(msg,opts){if(msg.desc.typeName.startsWith("google.protobuf."))switch(msg.desc.typeName){case"google.protobuf.Any":return anyToJson(msg.message,opts);case"google.protobuf.Timestamp":return timestampToJson(msg.message);case"google.protobuf.Duration":return durationToJson(msg.message);case"google.protobuf.FieldMask":return fieldMaskToJson(msg.message);case"google.protobuf.Struct":return structToJson(msg.message);case"google.protobuf.Value":return valueToJson(msg.message);case"google.protobuf.ListValue":return listValueToJson(msg.message);default:if(isWrapperDesc(msg.desc)){let valueField=msg.desc.fields[0];return scalarToJson(valueField,msg.get(valueField))}return}}function anyToJson(val,opts){if(val.typeUrl==="")return{};let{registry:registry2}=opts,message,desc;if(registry2&&(message=anyUnpack(val,registry2),message&&(desc=registry2.getMessage(message.$typeName))),!desc||!message)throw new Error(`cannot encode message ${val.$typeName} to JSON: "${val.typeUrl}" is not in the type registry`);let reflected=reflect(desc,message),json=hasCustomJsonRepresentation(desc)?{value:tryWktToJson(reflected,opts)}:reflectToJson(reflected,opts);return json["@type"]=val.typeUrl,json}function durationToJson(val){let seconds=Number(val.seconds),nanos=val.nanos;if(seconds>315576e6||seconds<-315576e6)throw new Error(`cannot encode message ${val.$typeName} to JSON: value out of range`);if(seconds>0&&nanos<0||seconds<0&&nanos>0)throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos sign must match seconds sign`);let text=val.seconds.toString();if(nanos!==0){let nanosStr=Math.abs(nanos).toString();nanosStr="0".repeat(9-nanosStr.length)+nanosStr,nanosStr.substring(3)==="000000"?nanosStr=nanosStr.substring(0,3):nanosStr.substring(6)==="000"&&(nanosStr=nanosStr.substring(0,6)),text+="."+nanosStr,nanos<0&&seconds==0&&(text="-"+text)}return text+"s"}function fieldMaskToJson(val){return val.paths.map(p=>{if(protoSnakeCase(protoCamelCase(p))!==p)throw new Error(`cannot encode message ${val.$typeName} to JSON: lowerCamelCase of path name "${p}" is irreversible`);return protoCamelCase(p)}).join(",")}function structToJson(val){let json={};for(let[k,v]of Object.entries(val.fields))json[k]=valueToJson(v);return json}function valueToJson(val){switch(val.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(val.kind.value))throw new Error(`${val.$typeName} cannot be NaN or Infinity`);return val.kind.value;case"boolValue":return val.kind.value;case"stringValue":return val.kind.value;case"structValue":return structToJson(val.kind.value);case"listValue":return listValueToJson(val.kind.value);default:throw new Error(`${val.$typeName} must have a value`)}}function listValueToJson(val){return val.values.map(valueToJson)}function timestampToJson(val){let ms=Number(val.seconds)*1e3;if(ms<Date.parse("0001-01-01T00:00:00Z")||ms>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${val.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(val.nanos<0)throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos must not be negative`);if(val.nanos>999999999)throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos must not be greater than 99999999`);let z="Z";if(val.nanos>0){let nanosStr=(val.nanos+1e9).toString().substring(1);nanosStr.substring(3)==="000000"?z="."+nanosStr.substring(0,3)+"Z":nanosStr.substring(6)==="000"?z="."+nanosStr.substring(0,6)+"Z":z="."+nanosStr+"Z"}return new Date(ms).toISOString().replace(".000Z",z)}var jsonReadDefaults={ignoreUnknownFields:!1};function makeReadOptions2(options){return options?Object.assign(Object.assign({},jsonReadDefaults),options):jsonReadDefaults}function fromJsonString(schema,json,options){return fromJson(schema,parseJsonString(json,schema.typeName),options)}function fromJson(schema,json,options){let msg=reflect(schema);try{readMessage2(msg,json,makeReadOptions2(options))}catch(e){throw isFieldError(e)?new Error(`cannot decode ${e.field()} from JSON: ${e.message}`,{cause:e}):e}return msg.message}var messageJsonFields=new WeakMap;function getJsonField(desc,jsonKey){var _a;if(!messageJsonFields.has(desc)){let jsonNames=new Map;for(let field of desc.fields)jsonNames.set(field.name,field).set(field.jsonName,field);messageJsonFields.set(desc,jsonNames)}return(_a=messageJsonFields.get(desc))===null||_a===void 0?void 0:_a.get(jsonKey)}function readMessage2(msg,json,opts){var _a;if(tryWktFromJson(msg,json,opts))return;if(json==null||Array.isArray(json)||typeof json!="object")throw new Error(`cannot decode ${msg.desc} from JSON: ${formatVal(json)}`);let oneofSeen=new Map;for(let[jsonKey,jsonValue]of Object.entries(json)){let field=getJsonField(msg.desc,jsonKey);if(field){if(field.oneof){if(jsonValue===null&&field.fieldKind=="scalar")continue;let seen=oneofSeen.get(field.oneof);if(seen!==void 0)throw new FieldError(field.oneof,`oneof set multiple times by ${seen.name} and ${field.name}`);oneofSeen.set(field.oneof,field)}readField2(msg,field,jsonValue,opts)}else{let extension;if(jsonKey.startsWith("[")&&jsonKey.endsWith("]")&&(extension=(_a=opts.registry)===null||_a===void 0?void 0:_a.getExtension(jsonKey.substring(1,jsonKey.length-1)))&&extension.extendee.typeName===msg.desc.typeName){let[container,field2,get]=createExtensionContainer(extension);readField2(container,field2,jsonValue,opts),setExtension(msg.message,extension,get())}if(!extension&&!opts.ignoreUnknownFields)throw new Error(`cannot decode ${msg.desc} from JSON: key "${jsonKey}" is unknown`)}}}function readField2(msg,field,json,opts){switch(field.fieldKind){case"scalar":readScalarField(msg,field,json);break;case"enum":readEnumField(msg,field,json,opts);break;case"message":readMessageField2(msg,field,json,opts);break;case"list":readListField2(msg.get(field),json,opts);break;case"map":readMapField(msg.get(field),json,opts);break}}function readListOrMapItem(field,json,opts){if(field.scalar&&json!==null)return scalarFromJson(field,json);if(field.message&&!isResetSentinelNullValue(field,json)){let msgValue=reflect(field.message);return readMessage2(msgValue,json,opts),msgValue}if(field.enum&&!isResetSentinelNullValue(field,json))return readEnum(field.enum,json,opts.ignoreUnknownFields);throw new FieldError(field,`${field.fieldKind==="list"?"list item":"map value"} must not be null`)}function readMapField(map,json,opts){if(json===null)return;let field=map.field();if(typeof json!="object"||Array.isArray(json))throw new FieldError(field,"expected object, got "+formatVal(json));for(let[jsonMapKey,jsonMapValue]of Object.entries(json)){let key=mapKeyFromJson(field.mapKey,jsonMapKey),value=readListOrMapItem(field,jsonMapValue,opts);value!==tokenIgnoredUnknownEnum&&map.set(key,value)}}function readListField2(list,json,opts){if(json===null)return;let field=list.field();if(!Array.isArray(json))throw new FieldError(field,"expected Array, got "+formatVal(json));for(let jsonItem of json){let value=readListOrMapItem(field,jsonItem,opts);value!==tokenIgnoredUnknownEnum&&list.add(value)}}function readMessageField2(msg,field,json,opts){if(isResetSentinelNullValue(field,json)){msg.clear(field);return}let msgValue=msg.isSet(field)?msg.get(field):reflect(field.message);readMessage2(msgValue,json,opts),msg.set(field,msgValue)}function readEnumField(msg,field,json,opts){if(isResetSentinelNullValue(field,json)){msg.clear(field);return}let enumValue=readEnum(field.enum,json,opts.ignoreUnknownFields);enumValue!==tokenIgnoredUnknownEnum&&msg.set(field,enumValue)}function readScalarField(msg,field,json){json===null?msg.clear(field):msg.set(field,scalarFromJson(field,json))}function isResetSentinelNullValue(field,json){var _a,_b;return json===null&&((_a=field.message)===null||_a===void 0?void 0:_a.typeName)!="google.protobuf.Value"&&((_b=field.enum)===null||_b===void 0?void 0:_b.typeName)!="google.protobuf.NullValue"}var tokenIgnoredUnknownEnum=Symbol();function readEnum(desc,json,ignoreUnknownFields){if(json===null)return desc.values[0].number;switch(typeof json){case"number":if(Number.isInteger(json))return json;break;case"string":let value=desc.values.find(ev=>ev.name===json);if(value!==void 0)return value.number;if(ignoreUnknownFields)return tokenIgnoredUnknownEnum;break}throw new Error(`cannot decode ${desc} from JSON: ${formatVal(json)}`)}function scalarFromJson(field,json){switch(field.scalar){case ScalarType.DOUBLE:case ScalarType.FLOAT:if(json==="NaN")return NaN;if(json==="Infinity")return Number.POSITIVE_INFINITY;if(json==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof json=="number"){if(Number.isNaN(json))throw new FieldError(field,"unexpected NaN number");if(!Number.isFinite(json))throw new FieldError(field,"unexpected infinite number");break}if(typeof json=="string"){if(json===""||json.trim().length!==json.length)break;let float=Number(json);if(!Number.isFinite(float))break;return float}break;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.UINT32:return int32FromJson(json);case ScalarType.BYTES:if(typeof json=="string"){if(json==="")return new Uint8Array(0);try{return base64Decode(json)}catch(e){let message=e instanceof Error?e.message:String(e);throw new FieldError(field,message)}}break}return json}function mapKeyFromJson(type,jsonString){switch(type){case ScalarType.BOOL:switch(jsonString){case"true":return!0;case"false":return!1}return jsonString;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:return int32FromJson(jsonString);default:return jsonString}}function int32FromJson(json){if(typeof json=="string"){if(json===""||json.trim().length!==json.length)return json;let num=Number(json);return Number.isNaN(num)?json:num}return json}function parseJsonString(jsonString,typeName){try{return JSON.parse(jsonString)}catch(e){let message=e instanceof Error?e.message:String(e);throw new Error(`cannot decode message ${typeName} from JSON: ${message}`,{cause:e})}}function tryWktFromJson(msg,jsonValue,opts){if(!msg.desc.typeName.startsWith("google.protobuf."))return!1;switch(msg.desc.typeName){case"google.protobuf.Any":return anyFromJson(msg.message,jsonValue,opts),!0;case"google.protobuf.Timestamp":return timestampFromJson(msg.message,jsonValue),!0;case"google.protobuf.Duration":return durationFromJson(msg.message,jsonValue),!0;case"google.protobuf.FieldMask":return fieldMaskFromJson(msg.message,jsonValue),!0;case"google.protobuf.Struct":return structFromJson(msg.message,jsonValue),!0;case"google.protobuf.Value":return valueFromJson(msg.message,jsonValue),!0;case"google.protobuf.ListValue":return listValueFromJson(msg.message,jsonValue),!0;default:if(isWrapperDesc(msg.desc)){let valueField=msg.desc.fields[0];return jsonValue===null?msg.clear(valueField):msg.set(valueField,scalarFromJson(valueField,jsonValue)),!0}return!1}}function anyFromJson(any,json,opts){var _a;if(json===null||Array.isArray(json)||typeof json!="object")throw new Error(`cannot decode message ${any.$typeName} from JSON: expected object but got ${formatVal(json)}`);if(Object.keys(json).length==0)return;let typeUrl=json["@type"];if(typeof typeUrl!="string"||typeUrl=="")throw new Error(`cannot decode message ${any.$typeName} from JSON: "@type" is empty`);let typeName=typeUrl.includes("/")?typeUrl.substring(typeUrl.lastIndexOf("/")+1):typeUrl;if(!typeName.length)throw new Error(`cannot decode message ${any.$typeName} from JSON: "@type" is invalid`);let desc=(_a=opts.registry)===null||_a===void 0?void 0:_a.getMessage(typeName);if(!desc)throw new Error(`cannot decode message ${any.$typeName} from JSON: ${typeUrl} is not in the type registry`);let msg=reflect(desc);if(hasCustomJsonRepresentation(desc)&&Object.prototype.hasOwnProperty.call(json,"value")){let value=json.value;readMessage2(msg,value,opts)}else{let copy=Object.assign({},json);delete copy["@type"],readMessage2(msg,copy,opts)}anyPack(msg.desc,msg.message,any)}function timestampFromJson(timestamp,json){if(typeof json!="string")throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: ${formatVal(json)}`);let matches=json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!matches)throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: invalid RFC 3339 string`);let ms=Date.parse(matches[1]+"-"+matches[2]+"-"+matches[3]+"T"+matches[4]+":"+matches[5]+":"+matches[6]+(matches[8]?matches[8]:"Z"));if(Number.isNaN(ms))throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: invalid RFC 3339 string`);if(ms<Date.parse("0001-01-01T00:00:00Z")||ms>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);timestamp.seconds=protoInt64.parse(ms/1e3),timestamp.nanos=0,matches[7]&&(timestamp.nanos=parseInt("1"+matches[7]+"0".repeat(9-matches[7].length))-1e9)}function durationFromJson(duration3,json){if(typeof json!="string")throw new Error(`cannot decode message ${duration3.$typeName} from JSON: ${formatVal(json)}`);let match=json.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(match===null)throw new Error(`cannot decode message ${duration3.$typeName} from JSON: ${formatVal(json)}`);let longSeconds=Number(match[1]);if(longSeconds>315576e6||longSeconds<-315576e6)throw new Error(`cannot decode message ${duration3.$typeName} from JSON: ${formatVal(json)}`);if(duration3.seconds=protoInt64.parse(longSeconds),typeof match[2]!="string")return;let nanosStr=match[2]+"0".repeat(9-match[2].length);duration3.nanos=parseInt(nanosStr),(longSeconds<0||Object.is(longSeconds,-0))&&(duration3.nanos=-duration3.nanos)}function fieldMaskFromJson(fieldMask,json){if(typeof json!="string")throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: ${formatVal(json)}`);json!==""&&(fieldMask.paths=json.split(",").map(path=>{if(path.includes("_"))throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: path names must be lowerCamelCase`);return protoSnakeCase(path)}))}function structFromJson(struct,json){if(typeof json!="object"||json==null||Array.isArray(json))throw new Error(`cannot decode message ${struct.$typeName} from JSON ${formatVal(json)}`);for(let[k,v]of Object.entries(json)){let parsedV=create(ValueSchema);valueFromJson(parsedV,v),struct.fields[k]=parsedV}}function valueFromJson(value,json){switch(typeof json){case"number":value.kind={case:"numberValue",value:json};break;case"string":value.kind={case:"stringValue",value:json};break;case"boolean":value.kind={case:"boolValue",value:json};break;case"object":if(json===null)value.kind={case:"nullValue",value:NullValue.NULL_VALUE};else if(Array.isArray(json)){let listValue=create(ListValueSchema);listValueFromJson(listValue,json),value.kind={case:"listValue",value:listValue}}else{let struct=create(StructSchema);structFromJson(struct,json),value.kind={case:"structValue",value:struct}}break;default:throw new Error(`cannot decode message ${value.$typeName} from JSON ${formatVal(json)}`)}return value}function listValueFromJson(listValue,json){if(!Array.isArray(json))throw new Error(`cannot decode message ${listValue.$typeName} from JSON ${formatVal(json)}`);for(let e of json){let value=create(ValueSchema);valueFromJson(value,e),listValue.values.push(value)}}function codeToString(value){let name=Code[value];return typeof name!="string"?value.toString():name[0].toLowerCase()+name.substring(1).replace(/[A-Z]/g,c=>"_"+c.toLowerCase())}var ConnectError=class _ConnectError extends Error{constructor(message,code=Code.Unknown,metadata,outgoingDetails,cause){super(createMessage(message,code)),this.name="ConnectError",Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=message,this.code=code,this.metadata=new Headers(metadata??{}),this.details=outgoingDetails??[],this.cause=cause}static from(reason,code=Code.Unknown){return reason instanceof _ConnectError?reason:reason instanceof Error?reason.name=="AbortError"||reason.name=="TimeoutError"?new _ConnectError(reason.message,Code.Canceled):new _ConnectError(reason.message,code,void 0,void 0,reason):new _ConnectError(String(reason),code,void 0,void 0,reason)}static[Symbol.hasInstance](v){return v instanceof Error?Object.getPrototypeOf(v)===_ConnectError.prototype?!0:v.name==="ConnectError"&&"code"in v&&typeof v.code=="number"&&"metadata"in v&&"details"in v&&Array.isArray(v.details)&&"rawMessage"in v&&typeof v.rawMessage=="string"&&"cause"in v:!1}findDetails(typeOrRegistry){let registry2=typeOrRegistry.kind==="message"?{getMessage:typeName=>typeName===typeOrRegistry.typeName?typeOrRegistry:void 0}:typeOrRegistry,details=[];for(let data of this.details){if("desc"in data){registry2.getMessage(data.desc.typeName)&&details.push(create(data.desc,data.value));continue}let desc=registry2.getMessage(data.type);if(desc)try{details.push(fromBinary(desc,data.value))}catch{}}return details}};function createMessage(message,code){return message.length?`[${codeToString(code)}] ${message}`:`[${codeToString(code)}]`}function decodeBinaryHeader(value,desc,options){try{let bytes=base64Decode(value);return desc?fromBinary(desc,bytes,options):bytes}catch(e){throw ConnectError.from(e,Code.DataLoss)}}function makeAnyClient(service,createMethod){let client={};for(let desc of service.methods){let method=createMethod(desc);method!=null&&(client[desc.localName]=method)}return client}var compressedFlag=1;var maxReadMaxBytes=4294967295,maxWriteMaxBytes=maxReadMaxBytes,defaultCompressMinBytes=1024;function validateReadWriteMaxBytes(readMaxBytes,writeMaxBytes,compressMinBytes){if(writeMaxBytes??(writeMaxBytes=maxWriteMaxBytes),readMaxBytes??(readMaxBytes=maxReadMaxBytes),compressMinBytes??(compressMinBytes=defaultCompressMinBytes),writeMaxBytes<1||writeMaxBytes>maxWriteMaxBytes)throw new ConnectError(`writeMaxBytes ${writeMaxBytes} must be >= 1 and <= ${maxWriteMaxBytes}`,Code.Internal);if(readMaxBytes<1||readMaxBytes>maxReadMaxBytes)throw new ConnectError(`readMaxBytes ${readMaxBytes} must be >= 1 and <= ${maxReadMaxBytes}`,Code.Internal);return{readMaxBytes,writeMaxBytes,compressMinBytes}}function assertWriteMaxBytes(writeMaxBytes,bytesWritten){if(bytesWritten>writeMaxBytes)throw new ConnectError(`message size ${bytesWritten} is larger than configured writeMaxBytes ${writeMaxBytes}`,Code.ResourceExhausted)}function assertReadMaxBytes(readMaxBytes,bytesRead,totalSizeKnown=!1){if(bytesRead>readMaxBytes){let message=`message size is larger than configured readMaxBytes ${readMaxBytes}`;throw totalSizeKnown&&(message=`message size ${bytesRead} is larger than configured readMaxBytes ${readMaxBytes}`),new ConnectError(message,Code.ResourceExhausted)}}function createEnvelopeDecoder(readMaxBytes){return new EnvelopeDecoderImpl(readMaxBytes)}var EnvelopeDecoderImpl=class{constructor(readMaxBytes){this.readMaxBytes=readMaxBytes,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((a,b)=>a+b.byteLength,0)}decode(chunk){this.buf.push(chunk);let envs=[];for(;;){let env=this.pop();if(!env)break;envs.push(env)}return envs}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){let env=this.env;return this.env=void 0,env}}head(){if(!this.cons(this.header))return;let flags=this.headerView.getUint8(0),length=this.headerView.getUint32(1);return assertReadMaxBytes(this.readMaxBytes,length,!0),{flags,data:new Uint8Array(length)}}cons(target){let wantLength=target.byteLength;if(this.byteLength<wantLength)return!1;let offset=0;for(;offset<wantLength;){let chunk=this.buf.shift();chunk.byteLength>wantLength-offset?(target.set(chunk.subarray(0,wantLength-offset),offset),this.buf.unshift(chunk.subarray(wantLength-offset)),offset+=wantLength-offset):(target.set(chunk,offset),offset+=chunk.byteLength)}return!0}};async function envelopeCompress(envelope,compression,compressMinBytes){let{flags,data}=envelope;if((flags&compressedFlag)===compressedFlag)throw new ConnectError("invalid envelope, already compressed",Code.Internal);return compression&&data.byteLength>=compressMinBytes&&(data=await compression.compress(data),flags=flags|compressedFlag),{data,flags}}async function envelopeDecompress(envelope,compression,readMaxBytes){let{flags,data}=envelope;if((flags&compressedFlag)===compressedFlag){if(!compression)throw new ConnectError("received compressed envelope, but do not know how to decompress",Code.Internal);data=await compression.decompress(data,readMaxBytes),flags=flags^compressedFlag}return{data,flags}}function encodeEnvelope(flags,data){let bytes=new Uint8Array(data.length+5);bytes.set(data,5);let v=new DataView(bytes.buffer,bytes.byteOffset,bytes.byteLength);return v.setUint8(0,flags),v.setUint32(1,data.length),bytes}var __asyncValues=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i;return m?m.call(o):(o=typeof __values=="function"?__values(o):o[Symbol.iterator](),i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i);function verb(n){i[n]=o[n]&&function(v){return new Promise(function(resolve,reject){v=o[n](v),settle(resolve,reject,v.done,v.value)})}}function settle(resolve,reject,d,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d})},reject)}},__await=function(v){return this instanceof __await?(this.v=v,this):new __await(v)},__asyncGenerator=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i,q=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i[Symbol.asyncIterator]=function(){return this},i;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){g[n]&&(i[n]=function(v){return new Promise(function(a,b){q.push([n,v,a,b])>1||resume(n,v)})},f&&(i[n]=f(i[n])))}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){f(v),q.shift(),q.length&&resume(q[0][0],q[0][1])}},__asyncDelegator=function(o){var i,p;return i={},verb("next"),verb("throw",function(e){throw e}),verb("return"),i[Symbol.iterator]=function(){return this},i;function verb(n,f){i[n]=o[n]?function(v){return(p=!p)?{value:__await(o[n](v)),done:!1}:f?f(v):v}:f}};function pipeTo(source,...rest){let[transforms,sink,opt]=pickTransformsAndSink(rest),iterable=source,abortable;return opt?.propagateDownStreamError===!0&&(iterable=abortable=makeIterableAbortable(iterable)),iterable=pipe2(iterable,...transforms,{propagateDownStreamError:!1}),sink(iterable).catch(reason=>abortable?abortable.abort(reason).then(()=>Promise.reject(reason)):Promise.reject(reason))}function pickTransformsAndSink(rest){let opt;typeof rest[rest.length-1]!="function"&&(opt=rest.pop());let sink=rest.pop();return[rest,sink,opt]}function pipe2(source,...rest){return __asyncGenerator(this,arguments,function*(){var _a;let[transforms,opt]=pickTransforms(rest),abortable,sourceIt=source[Symbol.asyncIterator](),iterable={[Symbol.asyncIterator](){return sourceIt}};opt?.propagateDownStreamError===!0&&(iterable=abortable=makeIterableAbortable(iterable));for(let t of transforms)iterable=t(iterable);let it=iterable[Symbol.asyncIterator]();try{for(;;){let r=yield __await(it.next());if(r.done===!0)break;if(!abortable){yield yield __await(r.value);continue}try{yield yield __await(r.value)}catch(e){throw yield __await(abortable.abort(e)),e}}}finally{opt?.propagateDownStreamError===!0&&((_a=sourceIt.return)===null||_a===void 0||_a.call(sourceIt).catch(()=>{}))}})}function pickTransforms(rest){let opt;return typeof rest[rest.length-1]!="function"&&(opt=rest.pop()),[rest,opt]}function transformSerializeEnvelope(serialization,endStreamFlag,endSerialization){return endStreamFlag===void 0||endSerialization===void 0?function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_4,_b,_c;try{for(var _d=!0,iterable_4=__asyncValues(iterable),iterable_4_1;iterable_4_1=yield __await(iterable_4.next()),_a=iterable_4_1.done,!_a;_d=!0){_c=iterable_4_1.value,_d=!1;let chunk=_c,data=serialization.serialize(chunk);yield yield __await({flags:0,data})}}catch(e_4_1){e_4={error:e_4_1}}finally{try{!_d&&!_a&&(_b=iterable_4.return)&&(yield __await(_b.call(iterable_4)))}finally{if(e_4)throw e_4.error}}})}:function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_5,_b,_c;try{for(var _d=!0,iterable_5=__asyncValues(iterable),iterable_5_1;iterable_5_1=yield __await(iterable_5.next()),_a=iterable_5_1.done,!_a;_d=!0){_c=iterable_5_1.value,_d=!1;let chunk=_c,data,flags=0;chunk.end?(flags=flags|endStreamFlag,data=endSerialization.serialize(chunk.value)):data=serialization.serialize(chunk.value),yield yield __await({flags,data})}}catch(e_5_1){e_5={error:e_5_1}}finally{try{!_d&&!_a&&(_b=iterable_5.return)&&(yield __await(_b.call(iterable_5)))}finally{if(e_5)throw e_5.error}}})}}function transformParseEnvelope(serialization,endStreamFlag,endSerialization){return endSerialization&&endStreamFlag!==void 0?function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_6,_b,_c;try{for(var _d=!0,iterable_6=__asyncValues(iterable),iterable_6_1;iterable_6_1=yield __await(iterable_6.next()),_a=iterable_6_1.done,!_a;_d=!0){_c=iterable_6_1.value,_d=!1;let{flags,data}=_c;(flags&endStreamFlag)===endStreamFlag?yield yield __await({value:endSerialization.parse(data),end:!0}):yield yield __await({value:serialization.parse(data),end:!1})}}catch(e_6_1){e_6={error:e_6_1}}finally{try{!_d&&!_a&&(_b=iterable_6.return)&&(yield __await(_b.call(iterable_6)))}finally{if(e_6)throw e_6.error}}})}:function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_7,_b,_c;try{for(var _d=!0,iterable_7=__asyncValues(iterable),iterable_7_1;iterable_7_1=yield __await(iterable_7.next()),_a=iterable_7_1.done,!_a;_d=!0){_c=iterable_7_1.value,_d=!1;let{flags,data}=_c;if(endStreamFlag!==void 0&&(flags&endStreamFlag)===endStreamFlag){if(endSerialization===null)throw new ConnectError("unexpected end flag",Code.InvalidArgument);continue}yield yield __await(serialization.parse(data))}}catch(e_7_1){e_7={error:e_7_1}}finally{try{!_d&&!_a&&(_b=iterable_7.return)&&(yield __await(_b.call(iterable_7)))}finally{if(e_7)throw e_7.error}}})}}function transformCompressEnvelope(compression,compressMinBytes){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_8,_b,_c;try{for(var _d=!0,iterable_8=__asyncValues(iterable),iterable_8_1;iterable_8_1=yield __await(iterable_8.next()),_a=iterable_8_1.done,!_a;_d=!0)_c=iterable_8_1.value,_d=!1,yield yield __await(yield __await(envelopeCompress(_c,compression,compressMinBytes)))}catch(e_8_1){e_8={error:e_8_1}}finally{try{!_d&&!_a&&(_b=iterable_8.return)&&(yield __await(_b.call(iterable_8)))}finally{if(e_8)throw e_8.error}}})}}function transformDecompressEnvelope(compression,readMaxBytes){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_9,_b,_c;try{for(var _d=!0,iterable_9=__asyncValues(iterable),iterable_9_1;iterable_9_1=yield __await(iterable_9.next()),_a=iterable_9_1.done,!_a;_d=!0)_c=iterable_9_1.value,_d=!1,yield yield __await(yield __await(envelopeDecompress(_c,compression,readMaxBytes)))}catch(e_9_1){e_9={error:e_9_1}}finally{try{!_d&&!_a&&(_b=iterable_9.return)&&(yield __await(_b.call(iterable_9)))}finally{if(e_9)throw e_9.error}}})}}function transformJoinEnvelopes(){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_10,_b,_c;try{for(var _d=!0,iterable_10=__asyncValues(iterable),iterable_10_1;iterable_10_1=yield __await(iterable_10.next()),_a=iterable_10_1.done,!_a;_d=!0){_c=iterable_10_1.value,_d=!1;let{flags,data}=_c;yield yield __await(encodeEnvelope(flags,data))}}catch(e_10_1){e_10={error:e_10_1}}finally{try{!_d&&!_a&&(_b=iterable_10.return)&&(yield __await(_b.call(iterable_10)))}finally{if(e_10)throw e_10.error}}})}}function transformSplitEnvelope(readMaxBytes){return function(iterable){return __asyncGenerator(this,arguments,function*(){var _a,e_11,_b,_c;let buffer=createEnvelopeDecoder(readMaxBytes);try{for(var _d=!0,iterable_11=__asyncValues(iterable),iterable_11_1;iterable_11_1=yield __await(iterable_11.next()),_a=iterable_11_1.done,!_a;_d=!0){_c=iterable_11_1.value,_d=!1;let chunk=_c;for(let env of buffer.decode(chunk))yield yield __await(env)}}catch(e_11_1){e_11={error:e_11_1}}finally{try{!_d&&!_a&&(_b=iterable_11.return)&&(yield __await(_b.call(iterable_11)))}finally{if(e_11)throw e_11.error}}if(buffer.byteLength>0)throw new ConnectError("protocol error: incomplete envelope",Code.InvalidArgument)})}}function makeIterableAbortable(iterable){let innerCandidate=iterable[Symbol.asyncIterator]();if(innerCandidate.throw===void 0)throw new Error("AsyncIterable does not implement throw");let inner=innerCandidate,aborted2,resultPromise,it={next(){return resultPromise=inner.next().finally(()=>{resultPromise=void 0}),resultPromise},throw(e){return inner.throw(e)}};innerCandidate.return!==void 0&&(it=Object.assign(Object.assign({},it),{return(value){return inner.return(value)}}));let used=!1;return{abort(reason){if(aborted2)return aborted2.state;let f=()=>inner.throw(reason).then(r=>r.done===!0?"completed":"caught",()=>"rethrown");return resultPromise?(aborted2={reason,state:resultPromise.then(f,f)},aborted2.state):(aborted2={reason,state:f()},aborted2.state)},[Symbol.asyncIterator](){if(used)throw new Error("AsyncIterable cannot be re-used");return used=!0,it}}}function createAsyncIterable(items){return __asyncGenerator(this,arguments,function*(){yield __await(yield*__asyncDelegator(__asyncValues(items)))})}var __asyncValues2=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i;return m?m.call(o):(o=typeof __values=="function"?__values(o):o[Symbol.iterator](),i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i);function verb(n){i[n]=o[n]&&function(v){return new Promise(function(resolve,reject){v=o[n](v),settle(resolve,reject,v.done,v.value)})}}function settle(resolve,reject,d,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d})},reject)}},__await2=function(v){return this instanceof __await2?(this.v=v,this):new __await2(v)},__asyncDelegator2=function(o){var i,p;return i={},verb("next"),verb("throw",function(e){throw e}),verb("return"),i[Symbol.iterator]=function(){return this},i;function verb(n,f){i[n]=o[n]?function(v){return(p=!p)?{value:__await2(o[n](v)),done:!1}:f?f(v):v}:f}},__asyncGenerator2=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i,q=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i[Symbol.asyncIterator]=function(){return this},i;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){g[n]&&(i[n]=function(v){return new Promise(function(a,b){q.push([n,v,a,b])>1||resume(n,v)})},f&&(i[n]=f(i[n])))}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await2?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){f(v),q.shift(),q.length&&resume(q[0][0],q[0][1])}};function createClient(service,transport){return makeAnyClient(service,method=>{switch(method.methodKind){case"unary":return createUnaryFn(transport,method);case"server_streaming":return createServerStreamingFn(transport,method);case"client_streaming":return createClientStreamingFn(transport,method);case"bidi_streaming":return createBiDiStreamingFn(transport,method);default:return null}})}function createUnaryFn(transport,method){return async(input,options)=>{var _a,_b;let response=await transport.unary(method,options?.signal,options?.timeoutMs,options?.headers,input,options?.contextValues);return(_a=options?.onHeader)===null||_a===void 0||_a.call(options,response.header),(_b=options?.onTrailer)===null||_b===void 0||_b.call(options,response.trailer),response.message}}function createServerStreamingFn(transport,method){return(input,options)=>handleStreamResponse(transport.stream(method,options?.signal,options?.timeoutMs,options?.headers,createAsyncIterable([input]),options?.contextValues),options)}function createClientStreamingFn(transport,method){return async(request3,options)=>{var _a,e_1,_b,_c,_d,_e;let response=await transport.stream(method,options?.signal,options?.timeoutMs,options?.headers,request3,options?.contextValues);(_d=options?.onHeader)===null||_d===void 0||_d.call(options,response.header);let singleMessage,count=0;try{for(var _f=!0,_g=__asyncValues2(response.message),_h;_h=await _g.next(),_a=_h.done,!_a;_f=!0)_c=_h.value,_f=!1,singleMessage=_c,count++}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_f&&!_a&&(_b=_g.return)&&await _b.call(_g)}finally{if(e_1)throw e_1.error}}if(!singleMessage)throw new ConnectError("protocol error: missing response message",Code.Unimplemented);if(count>1)throw new ConnectError("protocol error: received extra messages for client streaming method",Code.Unimplemented);return(_e=options?.onTrailer)===null||_e===void 0||_e.call(options,response.trailer),singleMessage}}function createBiDiStreamingFn(transport,method){return(request3,options)=>handleStreamResponse(transport.stream(method,options?.signal,options?.timeoutMs,options?.headers,request3,options?.contextValues),options)}function handleStreamResponse(stream,options){let it=(function(){return __asyncGenerator2(this,arguments,function*(){var _a,_b;let response=yield __await2(stream);(_a=options?.onHeader)===null||_a===void 0||_a.call(options,response.header),yield __await2(yield*__asyncDelegator2(__asyncValues2(response.message))),(_b=options?.onTrailer)===null||_b===void 0||_b.call(options,response.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>it.next()})}}function createLinkedAbortController(...signals){let controller=new AbortController,sa=signals.filter(s=>s!==void 0).concat(controller.signal);for(let signal of sa){if(signal.aborted){onAbort.apply(signal);break}signal.addEventListener("abort",onAbort)}function onAbort(){controller.signal.aborted||controller.abort(getAbortSignalReason(this));for(let signal of sa)signal.removeEventListener("abort",onAbort)}return controller}function createDeadlineSignal(timeoutMs){let controller=new AbortController,listener=()=>{controller.abort(new ConnectError("the operation timed out",Code.DeadlineExceeded))},timeoutId;return timeoutMs!==void 0&&(timeoutMs<=0?listener():timeoutId=setTimeout(listener,timeoutMs)),{signal:controller.signal,cleanup:()=>clearTimeout(timeoutId)}}function getAbortSignalReason(signal){if(!signal.aborted)return;if(signal.reason!==void 0)return signal.reason;let e=new Error("This operation was aborted");return e.name="AbortError",e}function createContextValues(){return{get(key){return key.id in this?this[key.id]:key.defaultValue},set(key,value){return this[key.id]=value,this},delete(key){return delete this[key.id],this}}}function trailerParse(data){let headers=new Headers,lines=new TextDecoder().decode(data).split(`\r
|
|
197
197
|
`);for(let line of lines){if(line==="")continue;let i=line.indexOf(":");if(i>0){let name=line.substring(0,i).trim(),value=line.substring(i+1).trim();headers.append(name,value)}}return headers}function trailerSerialize(trailer){let lines=[];return trailer.forEach((value,key)=>{lines.push(`${key}: ${value}\r
|
|
198
|
-
`)}),new TextEncoder().encode(lines.join(""))}function createTrailerSerialization(){return{serialize:trailerSerialize,parse:trailerParse}}var headerContentType="Content-Type",headerEncoding="Grpc-Encoding",headerAcceptEncoding="Grpc-Accept-Encoding",headerTimeout="Grpc-Timeout",headerGrpcStatus="Grpc-Status",headerGrpcMessage="Grpc-Message",headerStatusDetailsBin="Grpc-Status-Details-Bin";var headerUserAgent="User-Agent";var headerXUserAgent="X-User-Agent",headerXGrpcWeb="X-Grpc-Web";var contentTypeProto="application/grpc-web+proto",contentTypeJson="application/grpc-web+json";var file_status=fileDesc("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[file_google_protobuf_any]),StatusSchema=messageDesc(file_status,0);var grpcStatusOk="0";function findTrailerError(headerOrTrailer){var _a;let statusBytes=headerOrTrailer.get(headerStatusDetailsBin);if(statusBytes!=null){let status=decodeBinaryHeader(statusBytes,StatusSchema);if(status.code==0)return;let error3=new ConnectError(status.message,status.code,headerOrTrailer);return error3.details=status.details.map(any=>({type:any.typeUrl.substring(any.typeUrl.lastIndexOf("/")+1),value:any.value})),error3}let grpcStatus=headerOrTrailer.get(headerGrpcStatus);if(grpcStatus!=null){if(grpcStatus===grpcStatusOk)return;let code=parseInt(grpcStatus,10);return code in Code?new ConnectError(decodeURIComponent((_a=headerOrTrailer.get(headerGrpcMessage))!==null&&_a!==void 0?_a:""),code,headerOrTrailer):new ConnectError(`invalid grpc-status: ${grpcStatus}`,Code.Internal,headerOrTrailer)}}function createMethodUrl(baseUrl,method){return baseUrl.toString().replace(/\/?$/,`/${method.parent.typeName}/${method.name}`)}function normalize(desc,message){return create(desc,message)}function normalizeIterable(desc,input){function transform2(result){return result.done===!0?result:{done:result.done,value:normalize(desc,result.value)}}return{[Symbol.asyncIterator](){let it=input[Symbol.asyncIterator](),res={next:()=>it.next().then(transform2)};return it.throw!==void 0&&(res.throw=e=>it.throw(e).then(transform2)),it.return!==void 0&&(res.return=v=>it.return(v).then(transform2)),res}}}function applyInterceptors(next,interceptors){if(!interceptors)return next;for(let i of interceptors.concat().reverse())next=i(next);return next}function getJsonOptions(options){var _a;let o=Object.assign({},options);return(_a=o.ignoreUnknownFields)!==null&&_a!==void 0||(o.ignoreUnknownFields=!0),o}function createMethodSerializationLookup(method,binaryOptions,jsonOptions,limitOptions){let inputBinary=limitSerialization(createBinarySerialization(method.input,binaryOptions),limitOptions),inputJson=limitSerialization(createJsonSerialization(method.input,jsonOptions),limitOptions),outputBinary=limitSerialization(createBinarySerialization(method.output,binaryOptions),limitOptions),outputJson=limitSerialization(createJsonSerialization(method.output,jsonOptions),limitOptions);return{getI(useBinaryFormat){return useBinaryFormat?inputBinary:inputJson},getO(useBinaryFormat){return useBinaryFormat?outputBinary:outputJson}}}function limitSerialization(serialization,limitOptions){return{serialize(data){let bytes=serialization.serialize(data);return assertWriteMaxBytes(limitOptions.writeMaxBytes,bytes.byteLength),bytes},parse(data){return assertReadMaxBytes(limitOptions.readMaxBytes,data.byteLength,!0),serialization.parse(data)}}}function createBinarySerialization(desc,options){return{parse(data){try{return fromBinary(desc,data,options)}catch(e){let m=e instanceof Error?e.message:String(e);throw new ConnectError(`parse binary: ${m}`,Code.Internal)}},serialize(data){try{return toBinary(desc,data,options)}catch(e){let m=e instanceof Error?e.message:String(e);throw new ConnectError(`serialize binary: ${m}`,Code.Internal)}}}}function createJsonSerialization(desc,options){var _a,_b;let textEncoder=(_a=options?.textEncoder)!==null&&_a!==void 0?_a:new TextEncoder,textDecoder=(_b=options?.textDecoder)!==null&&_b!==void 0?_b:new TextDecoder,o=getJsonOptions(options);return{parse(data){try{let json=textDecoder.decode(data);return fromJsonString(desc,json,o)}catch(e){throw ConnectError.from(e,Code.InvalidArgument)}},serialize(data){try{let json=toJsonString(desc,data,o);return textEncoder.encode(json)}catch(e){throw ConnectError.from(e,Code.Internal)}}}}var contentTypeRegExp=/^application\/grpc(?:\+(?:(json)(?:; ?charset=utf-?8)?|proto))?$/i,contentTypeProto2="application/grpc+proto",contentTypeJson2="application/grpc+json";function parseContentType(contentType){let match=contentType?.match(contentTypeRegExp);return match?{binary:!match[1]}:void 0}function runUnaryCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt),req=Object.assign(Object.assign({},opt.req),{message:normalize(opt.req.method.input,opt.req.message),signal});return next(req).then(res=>(done(),res),abort)}function runStreamingCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt),req=Object.assign(Object.assign({},opt.req),{message:normalizeIterable(opt.req.method.input,opt.req.message),signal}),doneCalled=!1;return signal.addEventListener("abort",function(){var _a,_b;let it=opt.req.message[Symbol.asyncIterator]();doneCalled||(_a=it.throw)===null||_a===void 0||_a.call(it,this.reason).catch(()=>{}),(_b=it.return)===null||_b===void 0||_b.call(it).catch(()=>{})}),next(req).then(res=>Object.assign(Object.assign({},res),{message:{[Symbol.asyncIterator](){let it=res.message[Symbol.asyncIterator]();return{next(){return it.next().then(r=>(r.done==!0&&(doneCalled=!0,done()),r),abort)}}}}}),abort)}function setupSignal(opt){let{signal,cleanup}=createDeadlineSignal(opt.timeoutMs),controller=createLinkedAbortController(opt.signal,signal);return[controller.signal,function(reason){let e=ConnectError.from(signal.aborted?getAbortSignalReason(signal):reason);return controller.abort(e),cleanup(),Promise.reject(e)},function(){cleanup(),controller.abort()}]}function validateTrailer(trailer,header){let err=findTrailerError(trailer);if(err)throw header.forEach((value,key)=>{err.metadata.append(key,value)}),err;if(!header.has(headerGrpcStatus)&&!trailer.has(headerGrpcStatus))throw new ConnectError("protocol error: missing status",Code.Internal)}function requestHeader(useBinaryFormat,timeoutMs,userProvidedHeaders,setUserAgent){var _a,_b;let result=new Headers(userProvidedHeaders??{});result.set(headerContentType,useBinaryFormat?contentTypeProto:contentTypeJson),result.set(headerXGrpcWeb,"1");let userAgent=(_b=(_a=result.get(headerUserAgent))!==null&&_a!==void 0?_a:result.get(headerXUserAgent))!==null&&_b!==void 0?_b:"connect-es/2.1.1";return result.set(headerXUserAgent,userAgent),setUserAgent&&result.set(headerUserAgent,userAgent),timeoutMs!==void 0&&result.set(headerTimeout,`${timeoutMs}m`),result}function requestHeaderWithCompression(useBinaryFormat,timeoutMs,userProvidedHeaders,acceptCompression,sendCompression,setUserAgent){let result=requestHeader(useBinaryFormat,timeoutMs,userProvidedHeaders,setUserAgent);return sendCompression!=null&&result.set(headerEncoding,sendCompression.name),acceptCompression.length>0&&result.set(headerAcceptEncoding,acceptCompression.map(c=>c.name).join(",")),result}function codeFromHttpStatus(httpStatus){switch(httpStatus){case 400:return Code.Internal;case 401:return Code.Unauthenticated;case 403:return Code.PermissionDenied;case 404:return Code.Unimplemented;case 429:return Code.Unavailable;case 502:return Code.Unavailable;case 503:return Code.Unavailable;case 504:return Code.Unavailable;default:return Code.Unknown}}function validateResponse(status,headers){var _a;if(status>=200&&status<300)return{foundStatus:headers.has(headerGrpcStatus),headerError:findTrailerError(headers)};throw new ConnectError(decodeURIComponent((_a=headers.get(headerGrpcMessage))!==null&&_a!==void 0?_a:`HTTP ${status}`),codeFromHttpStatus(status),headers)}function validateResponseWithCompression(acceptCompression,status,headers){let{foundStatus,headerError}=validateResponse(status,headers),compression,encoding=headers.get(headerEncoding);if(encoding!==null&&encoding.toLowerCase()!=="identity"&&(compression=acceptCompression.find(c=>c.name===encoding),!compression))throw new ConnectError(`unsupported response encoding "${encoding}"`,Code.Internal,headers);return{foundStatus,compression,headerError}}var __asyncValues3=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i;return m?m.call(o):(o=typeof __values=="function"?__values(o):o[Symbol.iterator](),i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i);function verb(n){i[n]=o[n]&&function(v){return new Promise(function(resolve,reject){v=o[n](v),settle(resolve,reject,v.done,v.value)})}}function settle(resolve,reject,d,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d})},reject)}},__await3=function(v){return this instanceof __await3?(this.v=v,this):new __await3(v)},__asyncGenerator3=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i,q=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i[Symbol.asyncIterator]=function(){return this},i;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){g[n]&&(i[n]=function(v){return new Promise(function(a,b){q.push([n,v,a,b])>1||resume(n,v)})},f&&(i[n]=f(i[n])))}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await3?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){f(v),q.shift(),q.length&&resume(q[0][0],q[0][1])}};function createTransport(opt){return{async unary(method,signal,timeoutMs,header,message,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runUnaryCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!1,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression,!0),contextValues:contextValues??createContextValues(),message},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:req.requestMethod,header:req.header,signal:req.signal,body:pipe2(createAsyncIterable([req.message]),transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,headerError}=validateResponseWithCompression(opt.acceptCompression,uRes.status,uRes.header),{trailer,message:message2}=await pipeTo(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat),128,createTrailerSerialization()),async iterable=>{var _a,e_1,_b,_c;let message3,trailer2;try{for(var _d=!0,iterable_1=__asyncValues3(iterable),iterable_1_1;iterable_1_1=await iterable_1.next(),_a=iterable_1_1.done,!_a;_d=!0){_c=iterable_1_1.value,_d=!1;let env=_c;if(env.end){if(trailer2!==void 0)throw new ConnectError("protocol error: received extra trailer",Code.Unimplemented);trailer2=env.value}else{if(message3!==void 0)throw new ConnectError("protocol error: received extra output message for unary method",Code.Unimplemented);message3=env.value}}}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_d&&!_a&&(_b=iterable_1.return)&&await _b.call(iterable_1)}finally{if(e_1)throw e_1.error}}return{trailer:trailer2,message:message3}},{propagateDownStreamError:!1});if(trailer===void 0)throw headerError??new ConnectError("protocol error: missing trailer",uRes.header.has(headerGrpcStatus)?Code.Unimplemented:Code.Unknown);if(validateTrailer(trailer,uRes.header),message2===void 0)throw new ConnectError("protocol error: missing output message for unary method",trailer.has(headerGrpcStatus)?Code.Unimplemented:Code.Unknown);return{stream:!1,service:method.parent,method,header:uRes.header,message:message2,trailer}}})},async stream(method,signal,timeoutMs,header,input,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,runStreamingCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!0,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression,!0),contextValues:contextValues??createContextValues(),message:input},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:req.requestMethod,header:req.header,signal:req.signal,body:pipe2(req.message,transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,foundStatus,headerError}=validateResponseWithCompression(opt.acceptCompression,uRes.status,uRes.header);if(headerError)throw headerError;let res=Object.assign(Object.assign({},req),{header:uRes.header,trailer:new Headers,message:pipe2(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat),128,createTrailerSerialization()),function(iterable){return __asyncGenerator3(this,arguments,function*(){var _a,e_2,_b,_c;if(foundStatus){if((yield __await3(iterable[Symbol.asyncIterator]().next())).done!==!0)throw new ConnectError("protocol error: extra data for trailers-only",Code.InvalidArgument);return yield __await3(void 0)}let trailerReceived=!1;try{for(var _d=!0,iterable_2=__asyncValues3(iterable),iterable_2_1;iterable_2_1=yield __await3(iterable_2.next()),_a=iterable_2_1.done,!_a;_d=!0){_c=iterable_2_1.value,_d=!1;let chunk=_c;if(chunk.end){if(trailerReceived)throw new ConnectError("protocol error: received extra trailer",Code.InvalidArgument);trailerReceived=!0,validateTrailer(chunk.value,uRes.header),chunk.value.forEach((value,key)=>res.trailer.set(key,value));continue}if(trailerReceived)throw new ConnectError("protocol error: received extra message after trailer",Code.InvalidArgument);yield yield __await3(chunk.value)}}catch(e_2_1){e_2={error:e_2_1}}finally{try{!_d&&!_a&&(_b=iterable_2.return)&&(yield __await3(_b.call(iterable_2)))}finally{if(e_2)throw e_2.error}}if(!trailerReceived)throw new ConnectError("protocol error: missing trailer",Code.Internal)})},{propagateDownStreamError:!0})});return res}})}}}function requestHeader2(useBinaryFormat,timeoutMs,userProvidedHeaders){let result=new Headers(userProvidedHeaders??{});return result.set(headerContentType,useBinaryFormat?contentTypeProto2:contentTypeJson2),result.has(headerUserAgent)||result.set(headerUserAgent,"connect-es/2.1.1"),timeoutMs!==void 0&&result.set(headerTimeout,`${timeoutMs}m`),result.set("Te","trailers"),result}function requestHeaderWithCompression2(useBinaryFormat,timeoutMs,userProvidedHeaders,acceptCompression,sendCompression){let result=requestHeader2(useBinaryFormat,timeoutMs,userProvidedHeaders);return sendCompression!=null&&result.set(headerEncoding,sendCompression.name),acceptCompression.length>0&&result.set(headerAcceptEncoding,acceptCompression.map(c=>c.name).join(",")),result}function validateResponse2(status,headers){if(status!=200)throw new ConnectError(`HTTP ${status}`,codeFromHttpStatus(status),headers);let mimeType=headers.get(headerContentType);if(parseContentType(mimeType)==null)throw new ConnectError(`unsupported content type ${mimeType}`,Code.Unknown);return{foundStatus:headers.has(headerGrpcStatus),headerError:findTrailerError(headers)}}function validateResponseWithCompression2(acceptCompression,status,headers){let{foundStatus,headerError}=validateResponse2(status,headers),compression,encoding=headers.get(headerEncoding);if(encoding!==null&&encoding.toLowerCase()!=="identity"&&(compression=acceptCompression.find(c=>c.name===encoding),!compression))throw new ConnectError(`unsupported response encoding "${encoding}"`,Code.Internal,headers);return{foundStatus,compression,headerError}}var __asyncValues4=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i;return m?m.call(o):(o=typeof __values=="function"?__values(o):o[Symbol.iterator](),i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i);function verb(n){i[n]=o[n]&&function(v){return new Promise(function(resolve,reject){v=o[n](v),settle(resolve,reject,v.done,v.value)})}}function settle(resolve,reject,d,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d})},reject)}},__await4=function(v){return this instanceof __await4?(this.v=v,this):new __await4(v)},__asyncDelegator3=function(o){var i,p;return i={},verb("next"),verb("throw",function(e){throw e}),verb("return"),i[Symbol.iterator]=function(){return this},i;function verb(n,f){i[n]=o[n]?function(v){return(p=!p)?{value:__await4(o[n](v)),done:!1}:f?f(v):v}:f}},__asyncGenerator4=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i,q=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i[Symbol.asyncIterator]=function(){return this},i;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){g[n]&&(i[n]=function(v){return new Promise(function(a,b){q.push([n,v,a,b])>1||resume(n,v)})},f&&(i[n]=f(i[n])))}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await4?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){f(v),q.shift(),q.length&&resume(q[0][0],q[0][1])}};function createTransport2(opt){return{async unary(method,signal,timeoutMs,header,message,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runUnaryCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!1,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression2(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression),contextValues:contextValues??createContextValues(),message},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:"POST",header:req.header,signal:req.signal,body:pipe2(createAsyncIterable([req.message]),transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,headerError}=validateResponseWithCompression2(opt.acceptCompression,uRes.status,uRes.header),message2=await pipeTo(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat)),async iterable=>{var _a,e_1,_b,_c;let message3;try{for(var _d=!0,iterable_1=__asyncValues4(iterable),iterable_1_1;iterable_1_1=await iterable_1.next(),_a=iterable_1_1.done,!_a;_d=!0){_c=iterable_1_1.value,_d=!1;let chunk=_c;if(message3!==void 0)throw new ConnectError("protocol error: received extra output message for unary method",Code.Unimplemented);message3=chunk}}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_d&&!_a&&(_b=iterable_1.return)&&await _b.call(iterable_1)}finally{if(e_1)throw e_1.error}}return message3},{propagateDownStreamError:!1});if(validateTrailer(uRes.trailer,uRes.header),message2===void 0)throw headerError||new ConnectError("protocol error: missing output message for unary method",uRes.trailer.has(headerGrpcStatus)?Code.Unimplemented:Code.Unknown);if(headerError)throw new ConnectError("protocol error: received output message for unary method with error status",Code.Unknown);return{stream:!1,service:method.parent,method,header:uRes.header,message:message2,trailer:uRes.trailer}}})},async stream(method,signal,timeoutMs,header,input,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,runStreamingCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!0,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression2(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression),contextValues:contextValues??createContextValues(),message:input},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:"POST",header:req.header,signal:req.signal,body:pipe2(req.message,transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,foundStatus,headerError}=validateResponseWithCompression2(opt.acceptCompression,uRes.status,uRes.header);if(headerError)throw headerError;return Object.assign(Object.assign({},req),{header:uRes.header,trailer:uRes.trailer,message:pipe2(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat)),function(iterable){return __asyncGenerator4(this,arguments,function*(){yield __await4(yield*__asyncDelegator3(__asyncValues4(iterable))),foundStatus||validateTrailer(uRes.trailer,uRes.header)})},{propagateDownStreamError:!0})})}})}}}import*as zlib from"node:zlib";import{promisify}from"node:util";function connectErrorFromNodeReason(reason){let code=Code.Internal,chain=unwrapNodeErrorChain(reason).map(getNodeErrorProps);chain.some(p=>p.code=="ERR_STREAM_WRITE_AFTER_END")?code=Code.Aborted:chain.some(p=>p.code=="ERR_STREAM_DESTROYED"||p.code=="ERR_HTTP2_INVALID_STREAM"||p.code=="ECONNRESET")?code=Code.Aborted:chain.some(p=>p.code=="ETIMEDOUT"||p.code=="ENOTFOUND"||p.code=="EAI_AGAIN"||p.code=="ECONNREFUSED")&&(code=Code.Unavailable);let ce=ConnectError.from(reason,code);return ce!==reason&&(ce.cause=reason),ce}function unwrapNodeErrorChain(reason){let chain=[];for(;!(!(reason instanceof Error)||chain.includes(reason)||(chain.push(reason),!("cause"in reason)));)reason=reason.cause;return chain}function getNodeErrorProps(reason){let props={};return reason instanceof Error&&("code"in reason&&typeof reason.code=="string"&&(props.code=reason.code),"syscall"in reason&&typeof reason.syscall=="string"&&(props.syscall=reason.syscall)),props}function connectErrorFromH2ResetCode(rstCode){switch(rstCode){case H2Code.PROTOCOL_ERROR:case H2Code.INTERNAL_ERROR:case H2Code.FLOW_CONTROL_ERROR:case H2Code.SETTINGS_TIMEOUT:case H2Code.FRAME_SIZE_ERROR:case H2Code.COMPRESSION_ERROR:case H2Code.CONNECT_ERROR:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.Internal);case H2Code.REFUSED_STREAM:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.Unavailable);case H2Code.CANCEL:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.Canceled);case H2Code.ENHANCE_YOUR_CALM:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.ResourceExhausted);case H2Code.INADEQUATE_SECURITY:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.PermissionDenied);case H2Code.HTTP_1_1_REQUIRED:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.PermissionDenied);default:break}}var H2Code;(function(H2Code2){H2Code2[H2Code2.PROTOCOL_ERROR=1]="PROTOCOL_ERROR",H2Code2[H2Code2.INTERNAL_ERROR=2]="INTERNAL_ERROR",H2Code2[H2Code2.FLOW_CONTROL_ERROR=3]="FLOW_CONTROL_ERROR",H2Code2[H2Code2.SETTINGS_TIMEOUT=4]="SETTINGS_TIMEOUT",H2Code2[H2Code2.STREAM_CLOSED=5]="STREAM_CLOSED",H2Code2[H2Code2.FRAME_SIZE_ERROR=6]="FRAME_SIZE_ERROR",H2Code2[H2Code2.REFUSED_STREAM=7]="REFUSED_STREAM",H2Code2[H2Code2.CANCEL=8]="CANCEL",H2Code2[H2Code2.COMPRESSION_ERROR=9]="COMPRESSION_ERROR",H2Code2[H2Code2.CONNECT_ERROR=10]="CONNECT_ERROR",H2Code2[H2Code2.ENHANCE_YOUR_CALM=11]="ENHANCE_YOUR_CALM",H2Code2[H2Code2.INADEQUATE_SECURITY=12]="INADEQUATE_SECURITY",H2Code2[H2Code2.HTTP_1_1_REQUIRED=13]="HTTP_1_1_REQUIRED"})(H2Code||(H2Code={}));var gzip2=promisify(zlib.gzip),gunzip2=promisify(zlib.gunzip),brotliCompress2=promisify(zlib.brotliCompress),brotliDecompress2=promisify(zlib.brotliDecompress),compressionGzip={name:"gzip",compress(bytes){return asUint8ArrayArrayBuffer(gzip2(bytes,{}))},decompress(bytes,readMaxBytes){return bytes.length==0?Promise.resolve(new Uint8Array(0)):asUint8ArrayArrayBuffer(wrapZLibErrors(gunzip2(bytes,{maxOutputLength:readMaxBytes}),readMaxBytes))}},compressionBrotli={name:"br",compress(bytes){return asUint8ArrayArrayBuffer(brotliCompress2(bytes,{}))},decompress(bytes,readMaxBytes){return bytes.length==0?Promise.resolve(new Uint8Array(0)):asUint8ArrayArrayBuffer(wrapZLibErrors(brotliDecompress2(bytes,{maxOutputLength:readMaxBytes}),readMaxBytes))}};function asUint8ArrayArrayBuffer(bytes){return bytes.then(b=>b.buffer instanceof ArrayBuffer?b:new Uint8Array(b))}function wrapZLibErrors(promise,readMaxBytes){return promise.catch(e=>{var _a;let props=getNodeErrorProps(e),code=Code.Internal,message="decompression failed";switch(props.code){case"ERR_BUFFER_TOO_LARGE":code=Code.ResourceExhausted,message=`message is larger than configured readMaxBytes ${readMaxBytes} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":code=Code.InvalidArgument;break;default:!((_a=props.code)===null||_a===void 0)&&_a.startsWith("ERR__ERROR_FORMAT_")&&(code=Code.InvalidArgument);break}return Promise.reject(new ConnectError(message,code,void 0,void 0,e))})}import*as http from"node:http";import*as https from"node:https";function nodeHeaderToWebHeader(nodeHeaders){let header=new Headers;for(let[k,v]of Object.entries(nodeHeaders))if(!k.startsWith(":")&&v!==void 0)if(typeof v=="string")header.append(k,v);else if(typeof v=="number")header.append(k,String(v));else for(let e of v)header.append(k,e);return header}function webHeaderToNodeHeaders(headersInit,defaultNodeHeaders){if(headersInit===void 0&&defaultNodeHeaders===void 0)return;let o=Object.create(null);if(defaultNodeHeaders!==void 0)if(Array.isArray(defaultNodeHeaders))for(let i=0;i+1<defaultNodeHeaders.length;i+=2){let key=defaultNodeHeaders[i],value=defaultNodeHeaders[i+1];Array.isArray(o[key])?o[key].push(value):typeof o[key]=="string"?o[key]=[o[key],value]:o[key]=value}else for(let[key,value]of Object.entries(defaultNodeHeaders))Array.isArray(value)?o[key]=value.concat():value!==void 0&&(o[key]=value);if(headersInit!==void 0)if(Array.isArray(headersInit))for(let[key,value]of headersInit)appendWebHeader(o,key,value);else if("forEach"in headersInit)typeof headersInit.forEach=="function"&&headersInit.forEach((value,key)=>{appendWebHeader(o,key,value)});else for(let[key,value]of Object.entries(headersInit))appendWebHeader(o,key,value);return o}function appendWebHeader(o,key,value){key=key.toLowerCase();let existing=o[key];Array.isArray(existing)?existing.push(value):existing===void 0?o[key]=value:o[key]=[existing.toString(),value]}import*as http2 from"node:http2";var Http2SessionManager=class{state(){return this.s.t=="ready"?this.verifying!==void 0?"verifying":this.s.streamCount()>0?"open":"idle":this.s.t}error(){if(this.s.t=="error")return this.s.reason}constructor(url,pingOptions,http2SessionOptions){var _a,_b,_c,_d;this.s=closed(),this.shuttingDown=[],this.authority=new URL(url).origin,this.http2SessionOptions=http2SessionOptions,this.options={pingIntervalMs:(_a=pingOptions?.pingIntervalMs)!==null&&_a!==void 0?_a:Number.POSITIVE_INFINITY,pingTimeoutMs:(_b=pingOptions?.pingTimeoutMs)!==null&&_b!==void 0?_b:1e3*15,pingIdleConnection:(_c=pingOptions?.pingIdleConnection)!==null&&_c!==void 0?_c:!1,idleConnectionTimeoutMs:(_d=pingOptions?.idleConnectionTimeoutMs)!==null&&_d!==void 0?_d:1e3*60*15}}async connect(){try{return(await this.gotoReady()).streamCount()>0?"open":"idle"}catch{return"error"}}async request(method,path,headers,options){for(;;){let ready2=await this.gotoReady();try{let stream=ready2.conn.request(Object.assign(Object.assign({},headers),{":method":method,":path":path}),options);return ready2.registerRequest(stream),stream}catch(e){if(ready2.conn.closed||ready2.conn.destroyed)continue;throw e}}}notifyResponseByteRead(stream){this.s.t=="ready"&&this.s.responseByteRead(stream);for(let s of this.shuttingDown)s.responseByteRead(stream)}abort(reason){var _a,_b,_c;let err=reason??new ConnectError("connection aborted",Code.Canceled);(_b=(_a=this.s).abort)===null||_b===void 0||_b.call(_a,err);for(let s of this.shuttingDown)(_c=s.abort)===null||_c===void 0||_c.call(s,err);this.setState(closedOrError(err))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(connect2(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(connect2(this.authority,this.http2SessionOptions));this.s.t!=="ready";){if(this.s.t==="error")throw this.s.reason;this.s.t==="connecting"&&await this.s.conn}return this.s}setState(state){var _a,_b;if((_b=(_a=this.s).onExitState)===null||_b===void 0||_b.call(_a),this.s.t=="ready"&&this.s.isShuttingDown()){let sd=this.s;this.shuttingDown.push(sd),sd.onClose=sd.onError=()=>{let i=this.shuttingDown.indexOf(sd);i!==-1&&this.shuttingDown.splice(i,1)}}switch(state.t){case"connecting":state.conn.then(value=>{this.setState(ready(value,this.options))},reason=>{this.setState(closedOrError(reason))});break;case"ready":state.onClose=()=>this.setState(closed()),state.onError=err=>this.setState(closedOrError(err));break;case"closed":break;case"error":break}this.s=state}verify(stateReady){return this.verifying!==void 0?this.verifying:(this.verifying=stateReady.verify().then(success=>{success||this.setState(connect2(this.authority,this.http2SessionOptions))},reason=>{this.setState(closedOrError(reason))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function closed(){return{t:"closed"}}function error2(reason){return{t:"error",reason}}function closedOrError(reason){return reason instanceof ConnectError&&ConnectError.from(reason).code==Code.Canceled?closed():error2(reason)}function connect2(authority,http2SessionOptions){let resolve,reject,conn=new Promise((res,rej)=>{resolve=res,reject=rej}),newConn=http2.connect(authority,http2SessionOptions);newConn.on("connect",onConnect),newConn.on("error",onError);function onConnect(){resolve?.(newConn),cleanup()}function onError(err){reject?.(connectErrorFromNodeReason(err)),cleanup()}function cleanup(){newConn.off("connect",onConnect),newConn.off("error",onError)}return{t:"connecting",conn,abort(reason){newConn.destroyed||newConn.destroy(void 0,http2.constants.NGHTTP2_CANCEL),reject?.(reason)},onExitState(){cleanup()}}}function ready(conn,options){assertSessionOpen(conn),conn.unref();let lastAliveAt=Date.now(),streamCount=0,pingIntervalId,pingTimeoutId,receivedGoAway=!1,receivedGoAwayEnhanceYourCalmTooManyPings=!1,idleTimeoutId;resetIdleTimeout();let state={t:"ready",conn,streamCount(){return streamCount},requiresVerify(){return Date.now()-lastAliveAt>options.pingIntervalMs},isShuttingDown(){return receivedGoAway},onClose:void 0,onError:void 0,registerRequest(stream){streamCount++,streamCount==1&&(conn.ref(),resetPingInterval(),stopIdleTimeout()),stream.once("response",()=>{lastAliveAt=Date.now(),resetPingInterval()}),stream.once("close",()=>{streamCount--,streamCount==0&&(conn.unref(),resetPingInterval(),resetIdleTimeout())})},responseByteRead(stream){stream.session===conn&&(conn.closed||conn.destroyed||streamCount<=0||(lastAliveAt=Date.now(),resetPingInterval()))},verify(){return conn.ref(),new Promise(resolve=>{let onError2=()=>{resolve(!1)};commonPing(()=>{streamCount==0&&conn.unref(),conn.off("error",onError2),resolve(!0)}),conn.once("error",onError2)})},abort(reason){conn.destroyed||(conn.once("error",()=>{}),conn.destroy(reason,http2.constants.NGHTTP2_CANCEL))},onExitState(){state.isShuttingDown()||(cleanup(),this.onError=void 0,this.onClose=void 0)}};function resetPingInterval(){stopPingInterval(),(streamCount>0||options.pingIdleConnection)&&(pingIntervalId=safeSetTimeout(onPingInterval,options.pingIntervalMs))}function stopPingInterval(){clearTimeout(pingIntervalId),clearTimeout(pingTimeoutId)}function onPingInterval(){commonPing(resetPingInterval)}function commonPing(onSuccess){clearTimeout(pingTimeoutId),pingTimeoutId=safeSetTimeout(()=>{conn.destroy(new ConnectError("PING timed out",Code.Unavailable),http2.constants.NGHTTP2_CANCEL)},options.pingTimeoutMs),conn.ping((err,duration3)=>{if(clearTimeout(pingTimeoutId),err===null){if(duration3>options.pingTimeoutMs){conn.destroy(new ConnectError("PING timed out",Code.Unavailable),http2.constants.NGHTTP2_CANCEL);return}lastAliveAt=Date.now(),onSuccess()}})}function stopIdleTimeout(){clearTimeout(idleTimeoutId)}function resetIdleTimeout(){idleTimeoutId=safeSetTimeout(onIdleTimeout,options.idleConnectionTimeoutMs)}function onIdleTimeout(){conn.close(),onClose()}function onGoaway(errorCode,lastStreamID,opaqueData){if(errorCode===http2.constants.NGHTTP2_NO_ERROR&&streamCount===0){conn.destroy(new ConnectError("received GOAWAY without any open streams",Code.Canceled),http2.constants.NGHTTP2_NO_ERROR);return}receivedGoAway=!0;let tooManyPingsAscii=Buffer.from("too_many_pings","ascii");opaqueData?.equals(tooManyPingsAscii)&&(options.pingIntervalMs=options.pingIntervalMs*2,receivedGoAwayEnhanceYourCalmTooManyPings=!0)}function onClose(){var _a;cleanup(),(_a=state.onClose)===null||_a===void 0||_a.call(state)}function onError(err){var _a,_b;if(cleanup(),receivedGoAwayEnhanceYourCalmTooManyPings){let ce=new ConnectError(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${http2.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,Code.ResourceExhausted);(_a=state.onError)===null||_a===void 0||_a.call(state,ce)}else(_b=state.onError)===null||_b===void 0||_b.call(state,connectErrorFromNodeReason(err))}function cleanup(){stopPingInterval(),stopIdleTimeout(),conn.off("error",onError),conn.off("close",onClose),conn.off("goaway",onGoaway)}return conn.on("error",onError),conn.on("close",onClose),conn.on("goaway",onGoaway),state}function safeSetTimeout(callback,ms){if(!(ms>2147483647))return setTimeout(callback,ms).unref()}function assertSessionOpen(conn){if(conn.connecting)throw new ConnectError("expected open session, but it is connecting",Code.Internal);if(conn.destroyed)throw new ConnectError("expected open session, but it is destroyed",Code.Internal);if(conn.closed)throw new ConnectError("expected open session, but it is closed",Code.Internal)}function createNodeHttpClient(options){var _a;if(options.httpVersion=="1.1")return createNodeHttp1Client(options.nodeOptions);let sessionProvider=(_a=options.sessionProvider)!==null&&_a!==void 0?_a:(url=>new Http2SessionManager(url));return createNodeHttp2Client(sessionProvider)}function createNodeHttp1Client(httpOptions){return async function(req){let sentinel=createSentinel(req.signal);return new Promise((resolve,reject)=>{sentinel.onError(e=>{reject(e)}),h1Request(sentinel,req.url,Object.assign(Object.assign({},httpOptions),{headers:webHeaderToNodeHeaders(req.header,httpOptions?.headers),method:req.method}),request4=>{sinkRequest(req,request4,sentinel),request4.on("response",response=>{var _a;response.on("error",sentinel.error),sentinel.onError(reason=>response.destroy(reason));let trailer=new Headers;resolve({status:(_a=response.statusCode)!==null&&_a!==void 0?_a:0,header:nodeHeaderToWebHeader(response.headers),body:h1ResponseIterable(sentinel,response,trailer),trailer})})})})}}function createNodeHttp2Client(sessionProvider){return function(req){let sentinel=createSentinel(req.signal),sessionManager=sessionProvider(req.url);return new Promise((resolve,reject)=>{sentinel.onError(e=>{reject(e)}),h2Request(sentinel,sessionManager,req.url,req.method,webHeaderToNodeHeaders(req.header),{},stream=>{sinkRequest(req,stream,sentinel),stream.on("response",headers=>{var _a;let response={status:(_a=headers[":status"])!==null&&_a!==void 0?_a:0,header:nodeHeaderToWebHeader(headers),body:h2ResponseIterable(sentinel,stream,sessionManager),trailer:h2ResponseTrailer(stream)};resolve(response)})})})}}function h1Request(sentinel,url,options,onRequest){let request3;new URL(url).protocol.startsWith("https")?request3=https.request(url,options):request3=http.request(url,options),sentinel.onError(reason=>request3.destroy(reason)),request3.flushHeaders(),request3.on("error",sentinel.error),request3.on("socket",function(socket){function onSocketConnect(){socket.off("connect",onSocketConnect),onRequest(request3)}socket.readyState==="open"?onRequest(request3):socket.on("connect",onSocketConnect)})}function h1ResponseIterable(sentinel,response,trailer){let inner=response[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){let r=await sentinel.race(inner.next());return r.done===!0&&(nodeHeaderToWebHeader(response.trailers).forEach((value,key)=>{trailer.set(key,value)}),sentinel.close()),r},throw(e){throw sentinel.error(e),e}}}}}function h2Request(sentinel,sm,url,method,headers,options,onStream){let requestUrl=new URL(url);if(requestUrl.origin!==sm.authority){let message=`cannot make a request to ${requestUrl.origin}: the http2 session is connected to ${sm.authority}`;sentinel.error(new ConnectError(message,Code.Internal));return}sm.request(method,requestUrl.pathname+requestUrl.search,headers,{}).then(stream=>{sentinel.onError(reason=>{if(stream.closed)return;let rstCode=reason.code==Code.Canceled?H2Code.CANCEL:H2Code.INTERNAL_ERROR;return new Promise(resolve=>stream.close(rstCode,resolve))}),stream.on("error",function(e){stream.writableEnded&&unwrapNodeErrorChain(e).map(getNodeErrorProps).some(p=>p.code=="ERR_STREAM_WRITE_AFTER_END")||sentinel.error(e)}),stream.on("close",function(){let err=connectErrorFromH2ResetCode(stream.rstCode);err&&sentinel.error(err)}),onStream(stream)},reason=>{sentinel.error(reason)})}function h2ResponseTrailer(response){let trailer=new Headers;return response.on("trailers",args=>{nodeHeaderToWebHeader(args).forEach((value,key)=>{trailer.set(key,value)})}),trailer}function h2ResponseIterable(sentinel,response,sm){let inner=response[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){let r=await sentinel.race(inner.next());return r.done===!0&&sentinel.close(),sm?.notifyResponseByteRead(response),r},throw(e){throw sentinel.error(e),e}}}}}async function sinkRequest(request3,nodeRequest,sentinel){if(request3.body===void 0){await new Promise(resolve=>nodeRequest.end(resolve));return}let it=request3.body[Symbol.asyncIterator]();return new Promise(resolve=>{writeNext();function writeNext(){sentinel.isClosed()||it.next().then(r=>{if(r.done===!0){nodeRequest.end(resolve);return}nodeRequest.write(r.value,"binary",e=>{if(e==null){writeNext();return}it.throw!==void 0&&it.throw(connectErrorFromNodeReason(e)).catch(()=>{}),!(nodeRequest.writableEnded&&unwrapNodeErrorChain(e).map(getNodeErrorProps).some(p=>p.code=="ERR_STREAM_WRITE_AFTER_END"))&&sentinel.error(e)})},e=>{sentinel.error(e)})}})}function createSentinel(signal){let rejectRace,closed2=!1,closedError,onErrorListeners=[],sentinel={error(error3){if(!closed2){closed2=!0,closedError=error3 instanceof ConnectError?error3:connectErrorFromNodeReason(error3),rejectRace?.(closedError);for(let onRejected of onErrorListeners)onRejected(closedError);cleanup()}},close(){closed2||(closed2=!0,rejectRace&&rejectRace(new ConnectError("sentinel completed early",Code.Internal)),cleanup())},isClosed(){return closed2},onError(onError){closed2?closedError!==void 0&&onError(closedError):onErrorListeners.push(onError)},race(promise){let resolveRace,race=new Promise((resolve,reject)=>{resolveRace=resolve,rejectRace=reject});return promise.then(value=>{resolveRace?.(value)},reason=>{rejectRace?.(reason)}),closed2&&rejectRace?.(closedError??new ConnectError("sentinel completed early",Code.Internal)),race}};function cleanup(){signal&&signal.removeEventListener("abort",onSignalAbort),onErrorListeners=[],rejectRace=void 0}function onSignalAbort(){sentinel.error(getAbortSignalReason(this))}return signal&&(signal.addEventListener("abort",onSignalAbort),signal.aborted&&sentinel.error(getAbortSignalReason(signal))),sentinel}function validateNodeTransportOptions(options){var _a,_b,_c,_d;let httpClient;if(options.httpVersion=="2"){let sessionManager;options.sessionManager?sessionManager=options.sessionManager:sessionManager=new Http2SessionManager(options.baseUrl,{pingIntervalMs:options.pingIntervalMs,pingIdleConnection:options.pingIdleConnection,pingTimeoutMs:options.pingTimeoutMs,idleConnectionTimeoutMs:options.idleConnectionTimeoutMs},options.nodeOptions),httpClient=createNodeHttpClient({httpVersion:"2",sessionProvider:()=>sessionManager})}else httpClient=createNodeHttpClient({httpVersion:"1.1",nodeOptions:options.nodeOptions});return Object.assign(Object.assign(Object.assign({},options),{httpClient,useBinaryFormat:(_a=options.useBinaryFormat)!==null&&_a!==void 0?_a:!0,interceptors:(_b=options.interceptors)!==null&&_b!==void 0?_b:[],sendCompression:(_c=options.sendCompression)!==null&&_c!==void 0?_c:null,acceptCompression:(_d=options.acceptCompression)!==null&&_d!==void 0?_d:[compressionGzip,compressionBrotli]}),validateReadWriteMaxBytes(options.readMaxBytes,options.writeMaxBytes,options.compressMinBytes))}function createGrpcWebTransport(options){return createTransport(validateNodeTransportOptions(options))}function createGrpcTransport(options){return createTransport2(validateNodeTransportOptions(Object.assign(Object.assign({},options),{httpVersion:"2"})))}function messageDesc2(file,path,...paths){return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path])}function serviceDesc(file,path,...paths){if(paths.length>0)throw new Error;return file.services[path]}var file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_group=fileDesc("CkdhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2FwaV9yZXNvdXJjZV9ncm91cC5wcm90bxIuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZCI8ChRBcGlSZXNvdXJjZUdyb3VwTWV0YRIOCgZkb21haW4YASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJKroBChBBcGlSZXNvdXJjZUdyb3VwEiIKHmFwaV9yZXNvdXJjZV9ncm91cF91bnNwZWNpZmllZBAAEi4KB2FnZW50aWMQARoh6r0sHQoSYWdlbnRpYy5zdGlnbWVyLmFpEgdBZ2VudGljEiIKA2lhbRACGhnqvSwVCg5pYW0uc3RpZ21lci5haRIDSUFNEi4KB3RlbmFuY3kQAxoh6r0sHQoSdGVuYW5jeS5zdGlnbWVyLmFpEgdUZW5hbmN5OogBCgpncm91cF9tZXRhEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMY3ccFIAEoCzJELmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuQXBpUmVzb3VyY2VHcm91cE1ldGFSCWdyb3VwTWV0YWIGcHJvdG8z",[file_google_protobuf_descriptor]);var ApiResourceGroup;(function(ApiResourceGroup2){ApiResourceGroup2[ApiResourceGroup2.api_resource_group_unspecified=0]="api_resource_group_unspecified",ApiResourceGroup2[ApiResourceGroup2.agentic=1]="agentic",ApiResourceGroup2[ApiResourceGroup2.iam=2]="iam",ApiResourceGroup2[ApiResourceGroup2.tenancy=3]="tenancy"})(ApiResourceGroup||(ApiResourceGroup={}));var file_ai_stigmer_iam_v1_enum=fileDesc("ChxhaS9zdGlnbWVyL2lhbS92MS9lbnVtLnByb3RvEhFhaS5zdGlnbWVyLmlhbS52MSrbBgoNSWFtUGVybWlzc2lvbhIPCgt1bnNwZWNpZmllZBAAEgwKCGNhbl92aWV3EAESDAoIY2FuX2VkaXQQAhIOCgpjYW5fZGVsZXRlEAMSFAoQY2FuX2dyYW50X2FjY2VzcxAEEhMKD2Nhbl92aWV3X2FjY2VzcxAFEhQKEGNhbl9jcmVhdGVfYWdlbnQQBhIXChNjYW5fY3JlYXRlX3dvcmtmbG93EAcSFgoSY2FuX2NyZWF0ZV9zZXNzaW9uEAgSFAoQY2FuX2NyZWF0ZV9za2lsbBAJEhYKEmNhbl9jcmVhdGVfcHJvamVjdBAKEhIKDmNhbl9jcmVhdGVfaWRwEAsSGgoWY2FuX2NyZWF0ZV9lbnZpcm9ubWVudBAMEh8KG2Nhbl9jcmVhdGVfaWRlbnRpdHlfYWNjb3VudBAVEhgKFGNhbl9jcmVhdGVfb2F1dGhfYXBwEBcSHgoaY2FuX2NyZWF0ZV9wbGF0Zm9ybV9jbGllbnQQGBIbChdjYW5fY3JlYXRlX2V4ZWN1dGlvbl9pbhANEhcKE2Nhbl9jcmVhdGVfaW5zdGFuY2UQDhIPCgtjYW5fZXhlY3V0ZRAPEhQKEGNhbl9yZWFkX3NlY3JldHMQEBIVChFjYW5fYm9vdHN0cmFwX2lhbRAREiAKHGNhbl9tYW5hZ2VfaWRlbnRpdHlfYWNjb3VudHMQEhIYChRsb2dpbl90b19iYWNrX29mZmljZRAUEg8KC2Nhbl9jb25uZWN0EBYSFQoRY2FuX2NyZWF0ZV9ydW5uZXIQGRIaChJjYW5fZGVsZXRlX3Nlc3Npb24QGhoCCAESFAoQY2FuX3ZpZXdfYmlsbGluZxAbEhYKEmNhbl9tYW5hZ2VfYmlsbGluZxAcEhsKF2Nhbl9leGVjdXRlX2JpbGxpbmdfb3BzEB0SGgoWY2FuX2NyZWF0ZV9hZ2VudF9zaGFyZRAeEhoKFmNhbl9jcmVhdGVfY2hhbm5lbF9hcHAQHxIcChhjYW5fbWFuYWdlX21vZGVsX3ByaWNpbmcQIBITCg9jYW5fdXNlX3JlY29yZHMQIRIYChRjYW5fY3JlYXRlX2RhdGFzdG9yZRAiEh4KGmNhbl9tYW5hZ2VfY3Vyc29yX2FjY291bnRzECMqUQoHSWFtUm9sZRIYChRpYW1fcm9sZV91bnNwZWNpZmllZBAAEgkKBW93bmVyEAESCQoFYWRtaW4QAhIKCgZtZW1iZXIQAxIKCgZ2aWV3ZXIQBGIGcHJvdG8z"),IamPermission;(function(IamPermission2){IamPermission2[IamPermission2.unspecified=0]="unspecified",IamPermission2[IamPermission2.can_view=1]="can_view",IamPermission2[IamPermission2.can_edit=2]="can_edit",IamPermission2[IamPermission2.can_delete=3]="can_delete",IamPermission2[IamPermission2.can_grant_access=4]="can_grant_access",IamPermission2[IamPermission2.can_view_access=5]="can_view_access",IamPermission2[IamPermission2.can_create_agent=6]="can_create_agent",IamPermission2[IamPermission2.can_create_workflow=7]="can_create_workflow",IamPermission2[IamPermission2.can_create_session=8]="can_create_session",IamPermission2[IamPermission2.can_create_skill=9]="can_create_skill",IamPermission2[IamPermission2.can_create_project=10]="can_create_project",IamPermission2[IamPermission2.can_create_idp=11]="can_create_idp",IamPermission2[IamPermission2.can_create_environment=12]="can_create_environment",IamPermission2[IamPermission2.can_create_identity_account=21]="can_create_identity_account",IamPermission2[IamPermission2.can_create_oauth_app=23]="can_create_oauth_app",IamPermission2[IamPermission2.can_create_platform_client=24]="can_create_platform_client",IamPermission2[IamPermission2.can_create_execution_in=13]="can_create_execution_in",IamPermission2[IamPermission2.can_create_instance=14]="can_create_instance",IamPermission2[IamPermission2.can_execute=15]="can_execute",IamPermission2[IamPermission2.can_read_secrets=16]="can_read_secrets",IamPermission2[IamPermission2.can_bootstrap_iam=17]="can_bootstrap_iam",IamPermission2[IamPermission2.can_manage_identity_accounts=18]="can_manage_identity_accounts",IamPermission2[IamPermission2.login_to_back_office=20]="login_to_back_office",IamPermission2[IamPermission2.can_connect=22]="can_connect",IamPermission2[IamPermission2.can_create_runner=25]="can_create_runner",IamPermission2[IamPermission2.can_delete_session=26]="can_delete_session",IamPermission2[IamPermission2.can_view_billing=27]="can_view_billing",IamPermission2[IamPermission2.can_manage_billing=28]="can_manage_billing",IamPermission2[IamPermission2.can_execute_billing_ops=29]="can_execute_billing_ops",IamPermission2[IamPermission2.can_create_agent_share=30]="can_create_agent_share",IamPermission2[IamPermission2.can_create_channel_app=31]="can_create_channel_app",IamPermission2[IamPermission2.can_manage_model_pricing=32]="can_manage_model_pricing",IamPermission2[IamPermission2.can_use_records=33]="can_use_records",IamPermission2[IamPermission2.can_create_datastore=34]="can_create_datastore",IamPermission2[IamPermission2.can_manage_cursor_accounts=35]="can_manage_cursor_accounts"})(IamPermission||(IamPermission={}));var IamRole;(function(IamRole2){IamRole2[IamRole2.iam_role_unspecified=0]="iam_role_unspecified",IamRole2[IamRole2.owner=1]="owner",IamRole2[IamRole2.admin=2]="admin",IamRole2[IamRole2.member=3]="member",IamRole2[IamRole2.viewer=4]="viewer"})(IamRole||(IamRole={}));var file_ai_stigmer_commons_apiresource_apiresourcekind_authorization_config=fileDesc("CklhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2F1dGhvcml6YXRpb25fY29uZmlnLnByb3RvEi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kIoABChBWaXNpYmlsaXR5Q29uZmlnEhcKD3N1cHBvcnRzX3B1YmxpYxgBIAEoCBIZChFzdXBwb3J0c19wbGF0Zm9ybRgCIAEoCBIUCgxzdXBwb3J0c19vcmcYAyABKAgSIgoaZGVmYXVsdHNfdG9fb3JnX3Zpc2liaWxpdHkYBCABKAgiSgoUUGFyZW50UmVsYXRpb25Db25maWcSDAoEa2luZBgBIAEoCRIQCghyZWxhdGlvbhgCIAEoCRISCgpzcGVjX2ZpZWxkGAMgASgJIq4EChNBdXRob3JpemF0aW9uQ29uZmlnEloKCnNjb3BlX3R5cGUYASABKA4yRi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkF1dGhvcml6YXRpb25TY29wZVR5cGUSWAoKb3duZXJfdHlwZRgCIAEoDjJELmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuT3duZXJBdHRyaWJ1dGlvblR5cGUSVAoGcGFyZW50GAMgASgLMkQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5QYXJlbnRSZWxhdGlvbkNvbmZpZxJgChJhZGRpdGlvbmFsX3BhcmVudHMYBCADKAsyRC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLlBhcmVudFJlbGF0aW9uQ29uZmlnElQKCnZpc2liaWxpdHkYBSABKAsyQC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLlZpc2liaWxpdHlDb25maWcSHgoWcmVxdWlyZXNfY3JlYXRvcl90dXBsZRgGIAEoCBIzCg9ncmFudGFibGVfcm9sZXMYByADKA4yGi5haS5zdGlnbWVyLmlhbS52MS5JYW1Sb2xlKoUCChZBdXRob3JpemF0aW9uU2NvcGVUeXBlEigKJEFVVEhPUklaQVRJT05fU0NPUEVfVFlQRV9VTlNQRUNJRklFRBAAEiUKIUFVVEhPUklaQVRJT05fU0NPUEVfVFlQRV9QTEFURk9STRABEikKJUFVVEhPUklaQVRJT05fU0NPUEVfVFlQRV9PUkdBTklaQVRJT04QAhIjCh9BVVRIT1JJWkFUSU9OX1NDT1BFX1RZUEVfUEFSRU5UEAMSJwojQVVUSE9SSVpBVElPTl9TQ09QRV9UWVBFX09XTkVSX09OTFkQBBIhCh1BVVRIT1JJWkFUSU9OX1NDT1BFX1RZUEVfTk9ORRAFKskBChRPd25lckF0dHJpYnV0aW9uVHlwZRImCiJPV05FUl9BVFRSSUJVVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIQodT1dORVJfQVRUUklCVVRJT05fVFlQRV9ESVJFQ1QQARIkCiBPV05FUl9BVFRSSUJVVElPTl9UWVBFX0lOSEVSSVRFRBACEh8KG09XTkVSX0FUVFJJQlVUSU9OX1RZUEVfU0VMRhADEh8KG09XTkVSX0FUVFJJQlVUSU9OX1RZUEVfTk9ORRAEQhpCGEF1dGhvcml6YXRpb25Db25maWdQcm90b2IGcHJvdG8z",[file_ai_stigmer_iam_v1_enum]);var AuthorizationScopeType;(function(AuthorizationScopeType2){AuthorizationScopeType2[AuthorizationScopeType2.UNSPECIFIED=0]="UNSPECIFIED",AuthorizationScopeType2[AuthorizationScopeType2.PLATFORM=1]="PLATFORM",AuthorizationScopeType2[AuthorizationScopeType2.ORGANIZATION=2]="ORGANIZATION",AuthorizationScopeType2[AuthorizationScopeType2.PARENT=3]="PARENT",AuthorizationScopeType2[AuthorizationScopeType2.OWNER_ONLY=4]="OWNER_ONLY",AuthorizationScopeType2[AuthorizationScopeType2.NONE=5]="NONE"})(AuthorizationScopeType||(AuthorizationScopeType={}));var OwnerAttributionType;(function(OwnerAttributionType2){OwnerAttributionType2[OwnerAttributionType2.UNSPECIFIED=0]="UNSPECIFIED",OwnerAttributionType2[OwnerAttributionType2.DIRECT=1]="DIRECT",OwnerAttributionType2[OwnerAttributionType2.INHERITED=2]="INHERITED",OwnerAttributionType2[OwnerAttributionType2.SELF=3]="SELF",OwnerAttributionType2[OwnerAttributionType2.NONE=4]="NONE"})(OwnerAttributionType||(OwnerAttributionType={}));var file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind=fileDesc("CkZhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2FwaV9yZXNvdXJjZV9raW5kLnByb3RvEi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kIswDChNBcGlSZXNvdXJjZUtpbmRNZXRhEk8KBWdyb3VwGAEgASgOMkAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUdyb3VwElMKB3ZlcnNpb24YAiABKA4yQi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlVmVyc2lvbhIMCgRuYW1lGAMgASgJEhQKDGRpc3BsYXlfbmFtZRgEIAEoCRIRCglpZF9wcmVmaXgYBSABKAkSFAoMaXNfdmVyc2lvbmVkGAYgASgIEhoKEm5vdF9zZWFyY2hfaW5kZXhlZBgHIAEoCBJKCgR0aWVyGAggASgOMjwuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5SZXNvdXJjZVRpZXISWgoNYXV0aG9yaXphdGlvbhgJIAEoCzJDLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuQXV0aG9yaXphdGlvbkNvbmZpZypCChJBcGlSZXNvdXJjZVZlcnNpb24SJAogYXBpX3Jlc291cmNlX3ZlcnNpb25fdW5zcGVjaWZpZWQQABIGCgJ2MRABKk4KDFJlc291cmNlVGllchIdChlyZXNvdXJjZV90aWVyX3Vuc3BlY2lmaWVkEAASDwoLb3Blbl9zb3VyY2UQARIOCgpjbG91ZF9vbmx5EAIqQQoPUGxhdGZvcm1JZFZhbHVlEiEKHXBsYXRmb3JtX2lkX3ZhbHVlX3Vuc3BlY2lmaWVkEAASCwoHc3RpZ21lchABKoURCg9BcGlSZXNvdXJjZUtpbmQSHQoZYXBpX3Jlc291cmNlX2tpbmRfdW5rbm93bhAAElsKFGFwaV9yZXNvdXJjZV92ZXJzaW9uEAEaQar/Kz0IARABGhJBcGlSZXNvdXJjZVZlcnNpb24iFEFQSSBSZXNvdXJjZSBWZXJzaW9uKgN2ZXI4AUACSgQIBRAEEj8KCmlhbV9wb2xpY3kQChovqv8rKwgCEAEaCUlhbVBvbGljeSIKSUFNIFBvbGljeSoEaWFtcDgBQAJKBAgCEAESTgoQaWRlbnRpdHlfYWNjb3VudBALGjiq/ys0CAIQARoPSWRlbnRpdHlBY2NvdW50IhBJZGVudGl0eSBBY2NvdW50KgNpZGFAAkoECAQQAxI1CgdhcGlfa2V5EAwaKKr/KyQIAhABGgZBcGlLZXkiB0FQSSBLZXkqA2tleTgBQAJKBAgEEAESPwoKaW52aXRhdGlvbhAUGi+q/ysrCAIQARoKSW52aXRhdGlvbiIKSW52aXRhdGlvbioDaW52OAFAAkoECAIQARJXChFpZGVudGl0eV9wcm92aWRlchAVGkCq/ys8CAIQARoQSWRlbnRpdHlQcm92aWRlciIRSWRlbnRpdHkgUHJvdmlkZXIqA2lkcDgBQAJKCAgCEAE6AgEEEkAKCW9hdXRoX2FwcBAWGjGq/ystCAIQARoIT0F1dGhBcHAiCU9BdXRoIEFwcCoEb2FwcDgBQAJKCAgCEAE6AgEEElEKD3BsYXRmb3JtX2NsaWVudBAXGjyq/ys4CAIQARoOUGxhdGZvcm1DbGllbnQiD1BsYXRmb3JtIENsaWVudCoDcGNsOAFAAkoICAIQAToCAQQSSQoMb3JnYW5pemF0aW9uEB4aN6r/KzMIAxABGgxPcmdhbml6YXRpb24iDE9yZ2FuaXphdGlvbioDb3JnQAFKCggEEAE6BAECAwQSOQoIcGxhdGZvcm0QHxorqv8rJwgDEAEaCFBsYXRmb3JtIghQbGF0Zm9ybSoDcGx0OAFAAkoECAUQBBI8CgVhZ2VudBAoGjGq/ystCAEQARoFQWdlbnQiBUFnZW50KgNhZ3RAAUoSCAIQASoICAEQARgBIAE6AgEEEmsKD2FnZW50X2V4ZWN1dGlvbhApGlaq/ytSCAEQARoOQWdlbnRFeGVjdXRpb24iD0FnZW50IEV4ZWN1dGlvbioDYWV4QAFKJAgDEAIaHgoHc2Vzc2lvbhIHc2Vzc2lvbhoKc2Vzc2lvbl9pZBI4CgdzZXNzaW9uECoaK6r/KycIARABGgdTZXNzaW9uIgdTZXNzaW9uKgNzZXNAAUoICAIQAToCAQQSPgoFc2tpbGwQKxozqv8rLwgBEAEaBVNraWxsIgVTa2lsbCoDc2tsMAFAAUoSCAIQASoICAEQARgBIAE6AgEEEkoKCm1jcF9zZXJ2ZXIQLBo6qv8rNggBEAEaCU1jcFNlcnZlciIKTUNQIFNlcnZlcioDbWNwQAFKEggCEAEqCAgBEAEYASABOgIBBBJsCg5hZ2VudF9pbnN0YW5jZRAtGliq/ytUCAEQARoNQWdlbnRJbnN0YW5jZSIOQWdlbnQgSW5zdGFuY2UqA2FpbkABSigIAhABIhgKBWFnZW50EgVhZ2VudBoIYWdlbnRfaWQqBAgBGAE6AgEEEkUKC2FnZW50X3NoYXJlEC4aNKr/KzAIARABGgpBZ2VudFNoYXJlIgtBZ2VudCBTaGFyZSoDYXNoOAFAAUoICAIQAToCAQQSSwoNYWdlbnRfY2hhbm5lbBAvGjiq/ys0CAEQARoMQWdlbnRDaGFubmVsIg1BZ2VudCBDaGFubmVsKgNhY2g4AUABSggIAhABOgIBBBJHCgtjaGFubmVsX2FwcBAwGjaq/ysyCAEQARoKQ2hhbm5lbEFwcCILQ2hhbm5lbCBBcHAqBWNoYXBwOAFAAUoICAIQAToCAQQSRAoJZGF0YXN0b3JlEDEaNar/KzEIARABGglEYXRhc3RvcmUiCURhdGFzdG9yZSoDZHN0QAFKDggCEAEqAhgBMAE6AgEEEkcKCHdvcmtmbG93EDIaOar/KzUIARABGghXb3JrZmxvdyIIV29ya2Zsb3cqA3dmbDABQAFKEggCEAEqCAgBEAEYASABOgIBBBJ+ChF3b3JrZmxvd19pbnN0YW5jZRAzGmeq/ytjCAEQARoQV29ya2Zsb3dJbnN0YW5jZSIRV29ya2Zsb3cgSW5zdGFuY2UqA3dpbkABSjEIAhABIiEKCHdvcmtmbG93Egh3b3JrZmxvdxoLd29ya2Zsb3dfaWQqBAgBGAE6AgEEEpYBChJ3b3JrZmxvd19leGVjdXRpb24QNBp+qv8reggBEAEaEVdvcmtmbG93RXhlY3V0aW9uIhJXb3JrZmxvdyBFeGVjdXRpb24qA3dleEABSkYIAhABIjwKEXdvcmtmbG93X2luc3RhbmNlEhF3b3JrZmxvd19pbnN0YW5jZRoUd29ya2Zsb3dfaW5zdGFuY2VfaWQ6AgEEEkoKC2Vudmlyb25tZW50EDUaOar/KzUIARABGgtFbnZpcm9ubWVudCILRW52aXJvbm1lbnQqA2VudkABSg4IAhABKgIYATABOgIBBBI7CghhcnRpZmFjdBA3Gi2q/yspCAEQARoIQXJ0aWZhY3QiCEFydGlmYWN0KgNhcnRAAUoICAIQAToCAQQSUgoRZXhlY3V0aW9uX2NvbnRleHQQNho7qv8rNwgBEAEaEEV4ZWN1dGlvbkNvbnRleHQiEUV4ZWN1dGlvbiBDb250ZXh0KgRlY3R4QAFKBAgEEAESOAoHcHJvamVjdBA8Giuq/ysnCAMQARoHUHJvamVjdCIHUHJvamVjdCoDcHJqQAFKCAgCEAE6AgEEOoUBCglraW5kX21ldGESIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxj1vwUgASgLMkMuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmRNZXRhUghraW5kTWV0YUIbQhlBcGlSZXNvdXJjZUtpbmRPdXRlckNsYXNzYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_group,file_ai_stigmer_commons_apiresource_apiresourcekind_authorization_config,file_google_protobuf_descriptor]);var ApiResourceVersion;(function(ApiResourceVersion2){ApiResourceVersion2[ApiResourceVersion2.api_resource_version_unspecified=0]="api_resource_version_unspecified",ApiResourceVersion2[ApiResourceVersion2.v1=1]="v1"})(ApiResourceVersion||(ApiResourceVersion={}));var ResourceTier;(function(ResourceTier2){ResourceTier2[ResourceTier2.resource_tier_unspecified=0]="resource_tier_unspecified",ResourceTier2[ResourceTier2.open_source=1]="open_source",ResourceTier2[ResourceTier2.cloud_only=2]="cloud_only"})(ResourceTier||(ResourceTier={}));var PlatformIdValue;(function(PlatformIdValue2){PlatformIdValue2[PlatformIdValue2.platform_id_value_unspecified=0]="platform_id_value_unspecified",PlatformIdValue2[PlatformIdValue2.stigmer=1]="stigmer"})(PlatformIdValue||(PlatformIdValue={}));var ApiResourceKind;(function(ApiResourceKind2){ApiResourceKind2[ApiResourceKind2.api_resource_kind_unknown=0]="api_resource_kind_unknown",ApiResourceKind2[ApiResourceKind2.api_resource_version=1]="api_resource_version",ApiResourceKind2[ApiResourceKind2.iam_policy=10]="iam_policy",ApiResourceKind2[ApiResourceKind2.identity_account=11]="identity_account",ApiResourceKind2[ApiResourceKind2.api_key=12]="api_key",ApiResourceKind2[ApiResourceKind2.invitation=20]="invitation",ApiResourceKind2[ApiResourceKind2.identity_provider=21]="identity_provider",ApiResourceKind2[ApiResourceKind2.oauth_app=22]="oauth_app",ApiResourceKind2[ApiResourceKind2.platform_client=23]="platform_client",ApiResourceKind2[ApiResourceKind2.organization=30]="organization",ApiResourceKind2[ApiResourceKind2.platform=31]="platform",ApiResourceKind2[ApiResourceKind2.agent=40]="agent",ApiResourceKind2[ApiResourceKind2.agent_execution=41]="agent_execution",ApiResourceKind2[ApiResourceKind2.session=42]="session",ApiResourceKind2[ApiResourceKind2.skill=43]="skill",ApiResourceKind2[ApiResourceKind2.mcp_server=44]="mcp_server",ApiResourceKind2[ApiResourceKind2.agent_instance=45]="agent_instance",ApiResourceKind2[ApiResourceKind2.agent_share=46]="agent_share",ApiResourceKind2[ApiResourceKind2.agent_channel=47]="agent_channel",ApiResourceKind2[ApiResourceKind2.channel_app=48]="channel_app",ApiResourceKind2[ApiResourceKind2.datastore=49]="datastore",ApiResourceKind2[ApiResourceKind2.workflow=50]="workflow",ApiResourceKind2[ApiResourceKind2.workflow_instance=51]="workflow_instance",ApiResourceKind2[ApiResourceKind2.workflow_execution=52]="workflow_execution",ApiResourceKind2[ApiResourceKind2.environment=53]="environment",ApiResourceKind2[ApiResourceKind2.artifact=55]="artifact",ApiResourceKind2[ApiResourceKind2.execution_context=54]="execution_context",ApiResourceKind2[ApiResourceKind2.project=60]="project"})(ApiResourceKind||(ApiResourceKind={}));var file_ai_stigmer_commons_rpc_authorization_config=fileDesc("CjFhaS9zdGlnbWVyL2NvbW1vbnMvcnBjL2F1dGhvcml6YXRpb25fY29uZmlnLnByb3RvEhZhaS5zdGlnbWVyLmNvbW1vbnMucnBjIv4BChZScGNBdXRob3JpemF0aW9uQ29uZmlnEjQKCnBlcm1pc3Npb24YASABKA4yIC5haS5zdGlnbWVyLmlhbS52MS5JYW1QZXJtaXNzaW9uElYKDXJlc291cmNlX2tpbmQYAiABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBIaChJyZXNvdXJjZV9raW5kX3BhdGgYAyABKAkSEgoKZmllbGRfcGF0aBgEIAEoCRIRCgllcnJvcl9tc2cYBSABKAkSEwoLcmVzb3VyY2VfaWQYBiABKAliBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_iam_v1_enum]);var file_ai_stigmer_commons_rpc_method_options=fileDesc("CithaS9zdGlnbWVyL2NvbW1vbnMvcnBjL21ldGhvZF9vcHRpb25zLnByb3RvEhZhaS5zdGlnbWVyLmNvbW1vbnMucnBjOmgKBmNvbmZpZxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGIiHAyABKAsyLi5haS5zdGlnbWVyLmNvbW1vbnMucnBjLlJwY0F1dGhvcml6YXRpb25Db25maWdSBmNvbmZpZzo9Cglpc19wdWJsaWMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiJhwMgASgIUghpc1B1YmxpYzpUChVpc19za2lwX2F1dGhvcml6YXRpb24SHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiKhwMgASgIUhNpc1NraXBBdXRob3JpemF0aW9uYgZwcm90bzM",[file_ai_stigmer_commons_rpc_authorization_config,file_google_protobuf_descriptor]);var file_ai_stigmer_agentic_agentexecution_v1_usage=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvdXNhZ2UucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSKxAwoKVG9rZW5Vc2FnZRIUCgxpbnB1dF90b2tlbnMYASABKAMSFQoNb3V0cHV0X3Rva2VucxgCIAEoAxIUCgx0b3RhbF90b2tlbnMYAyABKAMSIwobY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zGAQgASgDEh8KF2NhY2hlX3JlYWRfaW5wdXRfdG9rZW5zGAUgASgDEhgKEHJlYXNvbmluZ190b2tlbnMYBiABKAMSHgoWdG9vbF91c2VfcHJvbXB0X3Rva2VucxgHIAEoAxIaChJhdWRpb19pbnB1dF90b2tlbnMYCCABKAMSGwoTYXVkaW9fb3V0cHV0X3Rva2VucxgJIAEoAxJqChZwcm92aWRlcl90b2tlbl9kZXRhaWxzGBQgAygLMkouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRva2VuVXNhZ2UuUHJvdmlkZXJUb2tlbkRldGFpbHNFbnRyeRo7ChlQcm92aWRlclRva2VuRGV0YWlsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEiugMKD1ByaWNpbmdTbmFwc2hvdBIgChhwcmljaW5nX3JlZ2lzdHJ5X3ZlcnNpb24YASABKAkSOAoUcHJpY2luZ19lZmZlY3RpdmVfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCGN1cnJlbmN5GAMgASgJEiYKHmlucHV0X3ByaWNlX21pY3Jvc19wZXJfbWlsbGlvbhgKIAEoAxInCh9vdXRwdXRfcHJpY2VfbWljcm9zX3Blcl9taWxsaW9uGAsgASgDEi8KJ2NhY2hlX2NyZWF0aW9uX3ByaWNlX21pY3Jvc19wZXJfbWlsbGlvbhgMIAEoAxIrCiNjYWNoZV9yZWFkX3ByaWNlX21pY3Jvc19wZXJfbWlsbGlvbhgNIAEoAxIqCiJyZWFzb25pbmdfcHJpY2VfbWljcm9zX3Blcl9taWxsaW9uGA4gASgDEiwKJGN1cnNvcl90b2tlbl9yYXRlX21pY3Jvc19wZXJfbWlsbGlvbhgPIAEoAxIdChVtYXJrdXBfcG9saWN5X3ZlcnNpb24YHiABKAkSEQoJY29zdF90aWVyGB8gASgJIqkCCglDb3N0U3RhbXASEAoIY3VycmVuY3kYASABKAkSHAoUcHJvdmlkZXJfY29zdF9taWNyb3MYAiABKAMSJwofY3VzdG9tZXJfYmlsbGFibGVfYW1vdW50X21pY3JvcxgDIAEoAxJXChJjYWxjdWxhdGlvbl9zdGF0dXMYBCABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ29zdENhbGN1bGF0aW9uU3RhdHVzEkYKB3ByaWNpbmcYBSABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUHJpY2luZ1NuYXBzaG90EiIKGmN1cnNvcl9wbGF0Zm9ybV9mZWVfbWljcm9zGAYgASgDItQDCgtQcm94eVRpbWluZxI1ChFwcm94eV9yZWNlaXZlZF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPwobdXBzdHJlYW1fcmVxdWVzdF9zdGFydGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6ChZmaXJzdF9yZXNwb25zZV9ieXRlX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVsYXN0X3Jlc3BvbnNlX2J5dGVfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjYKEnByb3h5X2NvbXBsZXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQdXBzdHJlYW1fdHRmYl9tcxgKIAEoAxIYChB1cHN0cmVhbV90dGxiX21zGAsgASgDEhoKEnN0cmVhbV9kdXJhdGlvbl9tcxgMIAEoAxIfChdwcm94eV90b3RhbF9kdXJhdGlvbl9tcxgNIAEoAxIVCg1yZXF1ZXN0X2J5dGVzGBQgASgDEhYKDnJlc3BvbnNlX2J5dGVzGBUgASgDIvoBCgtCaWxsaW5nTGluaxJOCgxkZWJpdF9zdGF0dXMYASABKA4yOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQmlsbGluZ0RlYml0U3RhdHVzEhYKDnJlc2VydmF0aW9uX2lkGAIgASgJEhgKEGJpbGxpbmdfZGViaXRfaWQYAyABKAkSLgoKZGViaXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHQoVYmlsbGluZ19hdHRlbXB0X2NvdW50GAUgASgFEhoKEmxhc3RfYmlsbGluZ19lcnJvchgGIAEoCSLbCgoSTGxtQ2FsbFVzYWdlUmVjb3JkEhcKD3VzYWdlX3JlY29yZF9pZBgBIAEoCRIUCgxleGVjdXRpb25faWQYAiABKAkSGQoRcm9vdF9leGVjdXRpb25faWQYAyABKAkSEAoIc2VxdWVuY2UYBCABKAUSFwoPaWRlbXBvdGVuY3lfa2V5GAUgASgJEh4KFmNhbm9uaWNhbF9wYXlsb2FkX2hhc2gYBiABKAkSLwoLb2JzZXJ2ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wElIKD21ldGVyaW5nX3NvdXJjZRgUIAEoDjI5LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Vc2FnZU1ldGVyaW5nU291cmNlEkoKC3RydXN0X2xldmVsGBUgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlVzYWdlVHJ1c3RMZXZlbBJRCgx1c2FnZV9zdGF0dXMYFiABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXNhZ2VDb21wbGV0aW9uU3RhdHVzEhMKC2lzX2JpbGxhYmxlGBcgASgIEhAKCHByb3ZpZGVyGB4gASgJEhcKD3JlcXVlc3RlZF9tb2RlbBgfIAEoCRIWCg5yZXNvbHZlZF9tb2RlbBggIAEoCRIQCghlbmRwb2ludBghIAEoCRIRCglzdHJlYW1pbmcYIiABKAgSFAoMc2VydmljZV90aWVyGCMgASgJEhsKE3Byb3ZpZGVyX3JlcXVlc3RfaWQYJCABKAkSDwoHaGFybmVzcxglIAEoCRIZChFjdXJzb3JfYWNjb3VudF9pZBgmIAEoCRIVCg1jdXJzb3Jfa2V5X2lkGCcgASgJEhgKEGh0dHBfc3RhdHVzX2NvZGUYKCABKAUSFQoNZmluaXNoX3JlYXNvbhgpIAEoCRISCgplcnJvcl9jb2RlGCogASgJElAKEWN1cnNvcl9rZXlfc291cmNlGCsgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkN1cnNvcktleVNvdXJjZRJACgZ0b2tlbnMYMiABKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9rZW5Vc2FnZRI9CgRjb3N0GDMgASgLMi8uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkNvc3RTdGFtcBJHCgxwcm94eV90aW1pbmcYPCABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUHJveHlUaW1pbmcSGwoTcHJvdmlkZXJfdXNhZ2VfanNvbhhGIAEoCRJCCgdiaWxsaW5nGFAgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkJpbGxpbmdMaW5rEg4KBm9yZ19pZBgHIAEoCRISCgpzZXNzaW9uX2lkGAggASgJElQKBmxhYmVscxhaIAMoCzJELmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5MbG1DYWxsVXNhZ2VSZWNvcmQuTGFiZWxzRW50cnkaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK+AgoUVXNhZ2VSZXBvcnRBZ2dyZWdhdGUSFAoMaW5wdXRfdG9rZW5zGAEgASgDEhUKDW91dHB1dF90b2tlbnMYAiABKAMSFAoMdG90YWxfdG9rZW5zGAMgASgDEiMKG2NhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucxgEIAEoAxIfChdjYWNoZV9yZWFkX2lucHV0X3Rva2VucxgFIAEoAxIYChByZWFzb25pbmdfdG9rZW5zGAYgASgDEhYKDmxsbV9jYWxsX2NvdW50GAogASgFEhwKFGJpbGxhYmxlX2Nvc3RfbWljcm9zGBQgASgDEhwKFHByb3ZpZGVyX2Nvc3RfbWljcm9zGBUgASgDEhUKDXByaW1hcnlfbW9kZWwYHiABKAkSGAoQcHJpbWFyeV9wcm92aWRlchgfIAEoCSLwAQoKTW9kZWxVc2FnZRINCgVtb2RlbBgBIAEoCRIQCghwcm92aWRlchgCIAEoCRIUCgxpbnB1dF90b2tlbnMYAyABKAMSFQoNb3V0cHV0X3Rva2VucxgEIAEoAxIjChtjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMYBSABKAMSHwoXY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMYBiABKAMSEgoKY2FsbF9jb3VudBgHIAEoBRIcChRiaWxsYWJsZV9jb3N0X21pY3JvcxgIIAEoAxIcChRwcm92aWRlcl9jb3N0X21pY3JvcxgJIAEoAyLlAQoVU3RyZWFtaW5nVXNhZ2VTdW1tYXJ5EhQKDGlucHV0X3Rva2VucxgBIAEoAxIVCg1vdXRwdXRfdG9rZW5zGAIgASgDEhkKEWNhY2hlX3JlYWRfdG9rZW5zGAMgASgDEhoKEmNhY2hlX3dyaXRlX3Rva2VucxgEIAEoAxIUCgx0b3RhbF90b2tlbnMYBSABKAMSEgoKdHVybl9jb3VudBgGIAEoBRIaChJlc3RpbWF0ZWRfY29zdF91c2QYByABKAESDQoFbW9kZWwYCCABKAkSEwoLb2JzZXJ2ZWRfYXQYCSABKAkqrgIKE1VzYWdlTWV0ZXJpbmdTb3VyY2USJQohVVNBR0VfTUVURVJJTkdfU09VUkNFX1VOU1BFQ0lGSUVEEAASMQotVVNBR0VfTUVURVJJTkdfU09VUkNFX1BST1hZX1BST1ZJREVSX1JFUE9SVEVEEAESNgoyVVNBR0VfTUVURVJJTkdfU09VUkNFX1JVTk5FUl9QUk9WSURFUl9SRVBPUlRFRF9PU1MQAhIjCh9VU0FHRV9NRVRFUklOR19TT1VSQ0VfRVNUSU1BVEVEEAMSMwovVVNBR0VfTUVURVJJTkdfU09VUkNFX1BST1ZJREVSX0FETUlOX1JFQ09OQ0lMRUQQBBIrCidVU0FHRV9NRVRFUklOR19TT1VSQ0VfTUFOVUFMX0FESlVTVE1FTlQQBSqoAQoPVXNhZ2VUcnVzdExldmVsEiEKHVVTQUdFX1RSVVNUX0xFVkVMX1VOU1BFQ0lGSUVEEAASJwojVVNBR0VfVFJVU1RfTEVWRUxfQklMTElOR19BVVRIT1JJVFkQARIlCiFVU0FHRV9UUlVTVF9MRVZFTF9TRVJWRVJfT0JTRVJWRUQQAhIiCh5VU0FHRV9UUlVTVF9MRVZFTF9ESVNQTEFZX09OTFkQAyr8AgoVVXNhZ2VDb21wbGV0aW9uU3RhdHVzEicKI1VTQUdFX0NPTVBMRVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogVVNBR0VfQ09NUExFVElPTl9TVEFUVVNfQ09NUExFVEUQARIuCipVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19TVFJFQU1fSU5URVJSVVBURUQQAhI1CjFVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19QUk9WSURFUl9FUlJPUl9XSVRIX1VTQUdFEAMSMwovVVNBR0VfQ09NUExFVElPTl9TVEFUVVNfUFJPVklERVJfRVJST1JfTk9fVVNBR0UQBBIqCiZVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19FU1RJTUFURURfT05MWRAFEiYKIlVTQUdFX0NPTVBMRVRJT05fU1RBVFVTX1JFQ09OQ0lMRUQQBhIkCiBVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19DT05GTElDVBAHKp8CChJCaWxsaW5nRGViaXRTdGF0dXMSJAogQklMTElOR19ERUJJVF9TVEFUVVNfVU5TUEVDSUZJRUQQABInCiNCSUxMSU5HX0RFQklUX1NUQVRVU19OT1RfQVBQTElDQUJMRRABEiAKHEJJTExJTkdfREVCSVRfU1RBVFVTX1BFTkRJTkcQAhIgChxCSUxMSU5HX0RFQklUX1NUQVRVU19ERUJJVEVEEAMSKQolQklMTElOR19ERUJJVF9TVEFUVVNfRkFJTEVEX1JFVFJZQUJMRRAEEigKJEJJTExJTkdfREVCSVRfU1RBVFVTX0ZBSUxFRF9URVJNSU5BTBAFEiEKHUJJTExJTkdfREVCSVRfU1RBVFVTX0NPTkZMSUNUEAYqjwIKFUNvc3RDYWxjdWxhdGlvblN0YXR1cxInCiNDT1NUX0NBTENVTEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiQKIENPU1RfQ0FMQ1VMQVRJT05fU1RBVFVTX0NPTVBVVEVEEAESJQohQ09TVF9DQUxDVUxBVElPTl9TVEFUVVNfRVNUSU1BVEVEEAISKwonQ09TVF9DQUxDVUxBVElPTl9TVEFUVVNfUFJJQ0VfTk9UX0ZPVU5EEAMSJgoiQ09TVF9DQUxDVUxBVElPTl9TVEFUVVNfUkVDT05DSUxFRBAEEisKJ0NPU1RfQ0FMQ1VMQVRJT05fU1RBVFVTX01BTlVBTF9BREpVU1RFRBAFKlcKD0N1cnNvcktleVNvdXJjZRIhCh1DVVJTT1JfS0VZX1NPVVJDRV9VTlNQRUNJRklFRBAAEiEKHUNVUlNPUl9LRVlfU09VUkNFX01BTkFHRURfS0VZEAFiBnByb3RvMw",[file_google_protobuf_timestamp]);var UsageMeteringSource;(function(UsageMeteringSource2){UsageMeteringSource2[UsageMeteringSource2.UNSPECIFIED=0]="UNSPECIFIED",UsageMeteringSource2[UsageMeteringSource2.PROXY_PROVIDER_REPORTED=1]="PROXY_PROVIDER_REPORTED",UsageMeteringSource2[UsageMeteringSource2.RUNNER_PROVIDER_REPORTED_OSS=2]="RUNNER_PROVIDER_REPORTED_OSS",UsageMeteringSource2[UsageMeteringSource2.ESTIMATED=3]="ESTIMATED",UsageMeteringSource2[UsageMeteringSource2.PROVIDER_ADMIN_RECONCILED=4]="PROVIDER_ADMIN_RECONCILED",UsageMeteringSource2[UsageMeteringSource2.MANUAL_ADJUSTMENT=5]="MANUAL_ADJUSTMENT"})(UsageMeteringSource||(UsageMeteringSource={}));var UsageTrustLevel;(function(UsageTrustLevel2){UsageTrustLevel2[UsageTrustLevel2.UNSPECIFIED=0]="UNSPECIFIED",UsageTrustLevel2[UsageTrustLevel2.BILLING_AUTHORITY=1]="BILLING_AUTHORITY",UsageTrustLevel2[UsageTrustLevel2.SERVER_OBSERVED=2]="SERVER_OBSERVED",UsageTrustLevel2[UsageTrustLevel2.DISPLAY_ONLY=3]="DISPLAY_ONLY"})(UsageTrustLevel||(UsageTrustLevel={}));var UsageCompletionStatus;(function(UsageCompletionStatus2){UsageCompletionStatus2[UsageCompletionStatus2.UNSPECIFIED=0]="UNSPECIFIED",UsageCompletionStatus2[UsageCompletionStatus2.COMPLETE=1]="COMPLETE",UsageCompletionStatus2[UsageCompletionStatus2.STREAM_INTERRUPTED=2]="STREAM_INTERRUPTED",UsageCompletionStatus2[UsageCompletionStatus2.PROVIDER_ERROR_WITH_USAGE=3]="PROVIDER_ERROR_WITH_USAGE",UsageCompletionStatus2[UsageCompletionStatus2.PROVIDER_ERROR_NO_USAGE=4]="PROVIDER_ERROR_NO_USAGE",UsageCompletionStatus2[UsageCompletionStatus2.ESTIMATED_ONLY=5]="ESTIMATED_ONLY",UsageCompletionStatus2[UsageCompletionStatus2.RECONCILED=6]="RECONCILED",UsageCompletionStatus2[UsageCompletionStatus2.CONFLICT=7]="CONFLICT"})(UsageCompletionStatus||(UsageCompletionStatus={}));var BillingDebitStatus;(function(BillingDebitStatus2){BillingDebitStatus2[BillingDebitStatus2.UNSPECIFIED=0]="UNSPECIFIED",BillingDebitStatus2[BillingDebitStatus2.NOT_APPLICABLE=1]="NOT_APPLICABLE",BillingDebitStatus2[BillingDebitStatus2.PENDING=2]="PENDING",BillingDebitStatus2[BillingDebitStatus2.DEBITED=3]="DEBITED",BillingDebitStatus2[BillingDebitStatus2.FAILED_RETRYABLE=4]="FAILED_RETRYABLE",BillingDebitStatus2[BillingDebitStatus2.FAILED_TERMINAL=5]="FAILED_TERMINAL",BillingDebitStatus2[BillingDebitStatus2.CONFLICT=6]="CONFLICT"})(BillingDebitStatus||(BillingDebitStatus={}));var CostCalculationStatus;(function(CostCalculationStatus2){CostCalculationStatus2[CostCalculationStatus2.UNSPECIFIED=0]="UNSPECIFIED",CostCalculationStatus2[CostCalculationStatus2.COMPUTED=1]="COMPUTED",CostCalculationStatus2[CostCalculationStatus2.ESTIMATED=2]="ESTIMATED",CostCalculationStatus2[CostCalculationStatus2.PRICE_NOT_FOUND=3]="PRICE_NOT_FOUND",CostCalculationStatus2[CostCalculationStatus2.RECONCILED=4]="RECONCILED",CostCalculationStatus2[CostCalculationStatus2.MANUAL_ADJUSTED=5]="MANUAL_ADJUSTED"})(CostCalculationStatus||(CostCalculationStatus={}));var CursorKeySource;(function(CursorKeySource2){CursorKeySource2[CursorKeySource2.UNSPECIFIED=0]="UNSPECIFIED",CursorKeySource2[CursorKeySource2.MANAGED_KEY=1]="MANAGED_KEY"})(CursorKeySource||(CursorKeySource={}));var file_buf_validate_validate=fileDesc("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSL4FgoKRmxvYXRSdWxlcxJ9CgVjb25zdBgBIAEoAkJuwkhrCmkKC2Zsb2F0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSmQEKAmx0GAIgASgCQooBwkiGAQqDAQoIZmxvYXQubHQadyFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASqQEKA2x0ZRgDIAEoAkKZAcJIlQEKkgEKCWZsb2F0Lmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtAHCgJndBgEIAEoAkLBB8JIvQcKhgEKCGZsb2F0Lmd0GnohaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq9AQoLZmxvYXQuZ3RfbHQarQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrHAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKDGZsb2F0Lmd0X2x0ZRq8AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCtcBChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGrwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARKcCAoDZ3RlGAUgASgCQowIwkiICAqVAQoJZmxvYXQuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCswBCgxmbG9hdC5ndGVfbHQauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtYBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrcAQoNZmxvYXQuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5gEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGsoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygCQm3CSGoKaAoIZmxvYXQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoAkJgwkhdClsKDGZsb2F0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEm8KBmZpbml0ZRgIIAEoCEJfwkhcCloKDGZsb2F0LmZpbml0ZRpKcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAnbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIooXCgtEb3VibGVSdWxlcxJ+CgVjb25zdBgBIAEoAUJvwkhsCmoKDGRvdWJsZS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEpoBCgJsdBgCIAEoAUKLAcJIhwEKhAEKCWRvdWJsZS5sdBp3IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKqAQoDbHRlGAMgASgBQpoBwkiWAQqTAQoKZG91YmxlLmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtUHCgJndBgEIAEoAULGB8JIwgcKhwEKCWRvdWJsZS5ndBp6IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKvgEKDGRvdWJsZS5ndF9sdBqtAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsgBChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKDWRvdWJsZS5ndF9sdGUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrYAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEqEICgNndGUYBSABKAFCkQjCSI0ICpYBCgpkb3VibGUuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCs0BCg1kb3VibGUuZ3RlX2x0GrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrXAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BCg5kb3VibGUuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5wEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoAUJuwkhrCmkKCWRvdWJsZS5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygBQmHCSF4KXAoNZG91YmxlLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnAKBmZpbml0ZRgIIAEoCEJgwkhdClsKDWRvdWJsZS5maW5pdGUaSnJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ211c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4isBQKCkludDMyUnVsZXMSfQoFY29uc3QYASABKAVCbsJIawppCgtpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoQBCgJsdBgCIAEoBUJ2wkhzCnEKCGludDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpUBCgNsdGUYAyABKAVChQHCSIEBCn8KCWludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS+QYKAmd0GAQgASgFQuoGwkjmBgp0CghpbnQzMi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrQEKC2ludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq1AQoVaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKDGludDMyLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxQEKFmludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsUHCgNndGUYBSABKAVCtQfCSLEHCoIBCglpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq8AQoMaW50MzIuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsQBChZpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoNaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrUAQoXaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeQoCaW4YBiADKAVCbcJIagpoCghpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScAoGbm90X2luGAcgAygFQmDCSF0KWwoMaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIrAUCgpJbnQ2NFJ1bGVzEn0KBWNvbnN0GAEgASgDQm7CSGsKaQoLaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKEAQoCbHQYAiABKANCdsJIcwpxCghpbnQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKVAQoDbHRlGAMgASgDQoUBwkiBAQp/CglpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvkGCgJndBgEIAEoA0LqBsJI5gYKdAoIaW50NjQuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq0BCgtpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtQEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BCgxpbnQ2NC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsUBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLFBwoDZ3RlGAUgASgDQrUHwkixBwqCAQoJaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvAEKDGludDY0Lmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrEAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKDWludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1AEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygDQm3CSGoKaAoIaW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoA0JgwkhdClsKDGludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLVUludDMyUnVsZXMSfgoFY29uc3QYASABKA1Cb8JIbApqCgx1aW50MzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKA1Cd8JIdApyCgl1aW50MzIubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoDUKHAcJIgwEKgAEKCnVpbnQzMi5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoDULvBsJI6wYKdQoJdWludDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMdWludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg11aW50MzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXdWludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKA1CugfCSLYHCoMBCgp1aW50MzIuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXVpbnQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3VpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOdWludDMyLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHVpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoDUJuwkhrCmkKCXVpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygNQmHCSF4KXAoNdWludDMyLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwhQKC1VJbnQ2NFJ1bGVzEn4KBWNvbnN0GAEgASgEQm/CSGwKagoMdWludDY0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycShQEKAmx0GAIgASgEQnfCSHQKcgoJdWludDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpcBCgNsdGUYAyABKARChwHCSIMBCoABCgp1aW50NjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL+BgoCZ3QYBCABKARC7wbCSOsGCnUKCXVpbnQ2NC5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrgEKDHVpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtgEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoNdWludDY0Lmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxgEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLKBwoDZ3RlGAUgASgEQroHwki2BwqDAQoKdWludDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr0BCg11aW50NjQuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsUBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKDnVpbnQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtUBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESegoCaW4YBiADKARCbsJIawppCgl1aW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnEKBm5vdF9pbhgHIAMoBEJhwkheClwKDXVpbnQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygEQhvCSBgKFgoOdWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsIUCgtTSW50MzJSdWxlcxJ+CgVjb25zdBgBIAEoEUJvwkhsCmoKDHNpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoUBCgJsdBgCIAEoEUJ3wkh0CnIKCXNpbnQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKXAQoDbHRlGAMgASgRQocBwkiDAQqAAQoKc2ludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS/gYKAmd0GAQgASgRQu8GwkjrBgp1CglzaW50MzIuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq4BCgxzaW50MzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrYBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKDXNpbnQzMi5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsYBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESygcKA2d0ZRgFIAEoEUK6B8JItgcKgwEKCnNpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq9AQoNc2ludDMyLmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrFAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BCg5zaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrVAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnoKAmluGAYgAygRQm7CSGsKaQoJc2ludDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJxCgZub3RfaW4YByADKBFCYcJIXgpcCg1zaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLU0ludDY0UnVsZXMSfgoFY29uc3QYASABKBJCb8JIbApqCgxzaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKBJCd8JIdApyCglzaW50NjQubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoEkKHAcJIgwEKgAEKCnNpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoEkLvBsJI6wYKdQoJc2ludDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMc2ludDY0Lmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWc2ludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg1zaW50NjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKBJCugfCSLYHCoMBCgpzaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXNpbnQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3NpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOc2ludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHNpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoEkJuwkhrCmkKCXNpbnQ2NC5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygSQmHCSF4KXAoNc2ludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkMzJSdWxlcxJ/CgVjb25zdBgBIAEoB0JwwkhtCmsKDWZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAdCeMJIdQpzCgpmaXhlZDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAdCiAHCSIQBCoEBCgtmaXhlZDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgHQvQGwkjwBgp2CgpmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQzMi5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgHQr8Hwki7BwqEAQoLZml4ZWQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkMzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoB0JvwkhsCmoKCmZpeGVkMzIuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoB0JiwkhfCl0KDmZpeGVkMzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoB0IcwkgZChcKD2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkNjRSdWxlcxJ/CgVjb25zdBgBIAEoBkJwwkhtCmsKDWZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAZCeMJIdQpzCgpmaXhlZDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAZCiAHCSIQBCoEBCgtmaXhlZDY0Lmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgGQvQGwkjwBgp2CgpmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgGQr8Hwki7BwqEAQoLZml4ZWQ2NC5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkNjQuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoBkJvwkhsCmoKCmZpeGVkNjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoBkJiwkhfCl0KDmZpeGVkNjQubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDMyUnVsZXMSgAEKBWNvbnN0GAEgASgPQnHCSG4KbAoOc2ZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKA9CecJIdgp0CgtzZml4ZWQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgPQokBwkiFAQqCAQoMc2ZpeGVkMzIubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKA9C+QbCSPUGCncKC3NmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkMzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoD0LEB8JIwAcKhQEKDHNmaXhlZDMyLmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQzMi5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoD0JwwkhtCmsKC3NmaXhlZDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKA9CY8JIYApeCg9zZml4ZWQzMi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDY0UnVsZXMSgAEKBWNvbnN0GAEgASgQQnHCSG4KbAoOc2ZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKBBCecJIdgp0CgtzZml4ZWQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgQQokBwkiFAQqCAQoMc2ZpeGVkNjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKBBC+QbCSPUGCncKC3NmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkNjQuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoEELEB8JIwAcKhQEKDHNmaXhlZDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoEEJwwkhtCmsKC3NmaXhlZDY0LmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKBBCY8JIYApeCg9zZml4ZWQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwAEKCUJvb2xSdWxlcxJ8CgVjb25zdBgBIAEoCEJtwkhqCmgKCmJvb2wuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi6jwKC1N0cmluZ1J1bGVzEoABCgVjb25zdBgBIAEoCUJxwkhuCmwKDHN0cmluZy5jb25zdBpcdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycScQoDbGVuGBMgASgEQmTCSGEKXwoKc3RyaW5nLmxlbhpRdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ211c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEokBCgdtaW5fbGVuGAIgASgEQnjCSHUKcwoOc3RyaW5nLm1pbl9sZW4aYXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg5zdHJpbmcubWF4X2xlbhpgdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ211c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEosBCglsZW5fYnl0ZXMYFCABKARCeMJIdQpzChBzdHJpbmcubGVuX2J5dGVzGl91aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ211c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKUAQoJbWluX2J5dGVzGAQgASgEQoABwkh9CnsKEHN0cmluZy5taW5fYnl0ZXMaZ3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSkgEKCW1heF9ieXRlcxgFIAEoBEJ/wkh8CnoKEHN0cmluZy5tYXhfYnl0ZXMaZnVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2J5dGVzXSkgOiAnJxKHAQoHcGF0dGVybhgGIAEoCUJ2wkhzCnEKDnN0cmluZy5wYXR0ZXJuGl8hdGhpcy5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ2RvZXMgbm90IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxJ+CgZwcmVmaXgYByABKAlCbsJIawppCg1zdHJpbmcucHJlZml4GlghdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEnwKBnN1ZmZpeBgIIAEoCUJswkhpCmcKDXN0cmluZy5zdWZmaXgaViF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEooBCghjb250YWlucxgJIAEoCUJ4wkh1CnMKD3N0cmluZy5jb250YWlucxpgIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ2RvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpEBCgxub3RfY29udGFpbnMYFyABKAlCe8JIeAp2ChNzdHJpbmcubm90X2NvbnRhaW5zGl90aGlzLmNvbnRhaW5zKHJ1bGVzLm5vdF9jb250YWlucykgPyAnY29udGFpbnMgc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJxJ6CgJpbhgKIAMoCUJuwkhrCmkKCXN0cmluZy5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAsgAygJQmHCSF4KXAoNc3RyaW5nLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEtkBCgVlbWFpbBgMIAEoCELHAcJIwwEKWwoMc3RyaW5nLmVtYWlsEh1tdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLhAQoIaG9zdG5hbWUYDSABKAhCzAHCSMgBCl8KD3N0cmluZy5ob3N0bmFtZRIYbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLBAQoCaXAYDiABKAhCsgHCSK4BCk8KCXN0cmluZy5pcBIabXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS0AEKBGlwdjQYDyABKAhCvwHCSLsBClYKC3N0cmluZy5pcHY0EhxtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtABCgRpcHY2GBAgASgIQr8Bwki7AQpWCgtzdHJpbmcuaXB2NhIcbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK5AQoDdXJpGBEgASgIQqkBwkilAQpLCgpzdHJpbmcudXJpEhNtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmoKB3VyaV9yZWYYEiABKAhCV8JIVApSCg5zdHJpbmcudXJpX3JlZhIdbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEokCCgdhZGRyZXNzGBUgASgIQvUBwkjxAQp7Cg5zdHJpbmcuYWRkcmVzcxInbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKSAgoEdXVpZBgWIAEoCEKBAsJI/QEKnwEKC3N0cmluZy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS6gEKBXR1dWlkGCEgASgIQtgBwkjUAQptCgxzdHJpbmcudHV1aWQSHG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASkAIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvIBwkjuAQpyChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SGW11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLJAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKpAsJIpQIKjQEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEi9tdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEskCChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQqkCwkilAgqNAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SL211c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS7AEKCWlwX3ByZWZpeBgdIAEoCELWAcJI0gEKZgoQc3RyaW5nLmlwX3ByZWZpeBIZbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABL9AQoLaXB2NF9wcmVmaXgYHiABKAhC5QHCSOEBCm8KEnN0cmluZy5pcHY0X3ByZWZpeBIbbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAAS/QEKC2lwdjZfcHJlZml4GB8gASgIQuUBwkjhAQpvChJzdHJpbmcuaXB2Nl9wcmVmaXgSG211c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEq8CCg1ob3N0X2FuZF9wb3J0GCAgASgIQpUCwkiRAgqTAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSO211c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEu4BCgR1bGlkGCMgASgIQt0BwkjZAQp8CgtzdHJpbmcudWxpZBIUbXVzdCBiZSBhIHZhbGlkIFVMSUQaVyFydWxlcy51bGlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQnKQpZChFzdHJpbmcudWxpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVMSUQaGSFydWxlcy51bGlkIHx8IHRoaXMgIT0gJydIABLUAgoMcHJvdG9idWZfZnFuGCUgASgIQrsCwki3AgqvAQoTc3RyaW5nLnByb3RvYnVmX2ZxbhItbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lGmkhcnVsZXMucHJvdG9idWZfZnFuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeW0EtWmEtel9dW0EtWmEtel8wLTldKihcXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKSokJykKggEKGXN0cmluZy5wcm90b2J1Zl9mcW5fZW1wdHkSQnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZRohIXJ1bGVzLnByb3RvYnVmX2ZxbiB8fCB0aGlzICE9ICcnSAASkQMKEHByb3RvYnVmX2RvdF9mcW4YJiABKAhC9ALCSPACCs0BChdzdHJpbmcucHJvdG9idWZfZG90X2ZxbhJAbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lIHdpdGggYSBsZWFkaW5nIGRvdBpwIXJ1bGVzLnByb3RvYnVmX2RvdF9mcW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15cXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKFxcLltBLVphLXpfXVtBLVphLXpfMC05XSopKiQnKQqdAQodc3RyaW5nLnByb3RvYnVmX2RvdF9mcW5fZW1wdHkSVXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZSB3aXRoIGEgbGVhZGluZyBkb3QaJSFydWxlcy5wcm90b2J1Zl9kb3RfZnFuIHx8IHRoaXMgIT0gJydIABKcBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QuUEwkjhBArqAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrhAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEiFtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIt0RCgpCeXRlc1J1bGVzEnoKBWNvbnN0GAEgASgMQmvCSGgKZgoLYnl0ZXMuY29uc3QaV3RoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgYmUgJXgnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxJrCgNsZW4YDSABKARCXsJIWwpZCglieXRlcy5sZW4aTHVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICdtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSgwEKB21pbl9sZW4YAiABKARCcsJIbwptCg1ieXRlcy5taW5fbGVuGlx1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAnbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKCAQoHbWF4X2xlbhgDIAEoBEJxwkhuCmwKDWJ5dGVzLm1heF9sZW4aW3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSigEKB3BhdHRlcm4YBCABKAlCecJIdgp0Cg1ieXRlcy5wYXR0ZXJuGmMhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAnbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSewoGcHJlZml4GAUgASgMQmvCSGgKZgoMYnl0ZXMucHJlZml4GlYhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ5CgZzdWZmaXgYBiABKAxCacJIZgpkCgxieXRlcy5zdWZmaXgaVCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxJ9Cghjb250YWlucxgHIAEoDEJrwkhoCmYKDmJ5dGVzLmNvbnRhaW5zGlQhdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAnZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSoQEKAmluGAggAygMQpQBwkiQAQqNAQoIYnl0ZXMuaW4agAFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJwCgZub3RfaW4YCSADKAxCYMJIXQpbCgxieXRlcy5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLlAQoCaXAYCiABKAhC1gHCSNIBCm4KCGJ5dGVzLmlwEhptdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3gEKBGlwdjQYCyABKAhCzQHCSMkBCl8KCmJ5dGVzLmlwdjQSHG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3wEKBGlwdjYYDCABKAhCzgHCSMoBCmAKCmJ5dGVzLmlwdjYSHG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEs8BCgR1dWlkGA8gASgIQr4Bwki6AQpYCgpieXRlcy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLBAwoJRW51bVJ1bGVzEnwKBWNvbnN0GAEgASgFQm3CSGoKaAoKZW51bS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ4CgJpbhgDIAMoBUJswkhpCmcKB2VudW0uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEm8KBm5vdF9pbhgEIAMoBUJfwkhcCloKC2VudW0ubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIu0DCg1SZXBlYXRlZFJ1bGVzEpYBCgltaW5faXRlbXMYASABKARCggHCSH8KfQoScmVwZWF0ZWQubWluX2l0ZW1zGmd1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICdtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEpwBCgltYXhfaXRlbXMYAiABKARCiAHCSIQBCoEBChJyZXBlYXRlZC5tYXhfaXRlbXMaa3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ211c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIr8WCg1EdXJhdGlvblJ1bGVzEpsBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJxwkhuCmwKDmR1cmF0aW9uLmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSogEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnnCSHYKdAoLZHVyYXRpb24ubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAAStAEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKJAcJIhQEKggEKDGR1cmF0aW9uLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASowcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQvkGwkj1Bgp3CgtkdXJhdGlvbi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKsAEKDmR1cmF0aW9uLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq4AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwAEKD2R1cmF0aW9uLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKyAEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu8HCgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CxAfCSMAHCoUBCgxkdXJhdGlvbi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq/AQoPZHVyYXRpb24uZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCscBChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrPAQoQZHVyYXRpb24uZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrXAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESlwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnDCSG0KawoLZHVyYXRpb24uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEo4BCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CY8JIYApeCg9kdXJhdGlvbi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i6wUKDkZpZWxkTWFza1J1bGVzErkBCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCjQHCSIkBCoYBChBmaWVsZF9tYXNrLmNvbnN0GnJ0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICdtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS0wEKAmluGAIgAygJQsYBwkjCAQq/AQoNZmllbGRfbWFzay5pbhqtASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICdtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEu0BCgZub3RfaW4YAyADKAlC3AHCSNgBCtUBChFmaWVsZF9tYXNrLm5vdF9pbhq/ASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ211c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIisBcKDlRpbWVzdGFtcFJ1bGVzEp0BCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCcsJIbwptCg90aW1lc3RhbXAuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKkAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQnrCSHcKdQoMdGltZXN0YW1wLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErYBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQooBwkiGAQqDAQoNdGltZXN0YW1wLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASZgoGbHRfbm93GAcgASgIQlTCSFEKTwoQdGltZXN0YW1wLmx0X25vdxo7KHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICdtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABKpBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQv4Gwkj6Bgp4Cgx0aW1lc3RhbXAuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrEBCg90aW1lc3RhbXAuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrkBChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwQEKEHRpbWVzdGFtcC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCskBChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES9QcKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCyQfCSMUHCoYBCg10aW1lc3RhbXAuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwAEKEHRpbWVzdGFtcC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKyAEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrQAQoRdGltZXN0YW1wLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2AEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJpCgZndF9ub3cYCCABKAhCV8JIVApSChB0aW1lc3RhbXAuZ3Rfbm93Gj4ocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErEBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ChQHCSIEBCn8KEHRpbWVzdGFtcC53aXRoaW4aa3RoaXMgPCBub3ctcnVsZXMud2l0aGluIHx8IHRoaXMgPiBub3crcnVsZXMud2l0aGluID8gJ211c3QgYmUgd2l0aGluICVzIG9mIG5vdycuZm9ybWF0KFtydWxlcy53aXRoaW5dKSA6ICcnEksKB2V4YW1wbGUYCiADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQh7CSBsKGQoRdGltZXN0YW1wLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIjkKClZpb2xhdGlvbnMSKwoKdmlvbGF0aW9ucxgBIAMoCzIXLmJ1Zi52YWxpZGF0ZS5WaW9sYXRpb24inwEKCVZpb2xhdGlvbhImCgVmaWVsZBgFIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSJQoEcnVsZRgGIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSDwoHcnVsZV9pZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg8KB2Zvcl9rZXkYBCABKAhKBAgBEAJSCmZpZWxkX3BhdGgiPQoJRmllbGRQYXRoEjAKCGVsZW1lbnRzGAEgAygLMh4uYnVmLnZhbGlkYXRlLkZpZWxkUGF0aEVsZW1lbnQi6QIKEEZpZWxkUGF0aEVsZW1lbnQSFAoMZmllbGRfbnVtYmVyGAEgASgFEhIKCmZpZWxkX25hbWUYAiABKAkSPgoKZmllbGRfdHlwZRgDIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEjwKCGtleV90eXBlGAQgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPgoKdmFsdWVfdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEg8KBWluZGV4GAYgASgESAASEgoIYm9vbF9rZXkYByABKAhIABIRCgdpbnRfa2V5GAggASgDSAASEgoIdWludF9rZXkYCSABKARIABIUCgpzdHJpbmdfa2V5GAogASgJSABCCwoJc3Vic2NyaXB0KqEBCgZJZ25vcmUSFgoSSUdOT1JFX1VOU1BFQ0lGSUVEEAASGAoUSUdOT1JFX0lGX1pFUk9fVkFMVUUQARIRCg1JR05PUkVfQUxXQVlTEAMiBAgCEAIqDElHTk9SRV9FTVBUWSoOSUdOT1JFX0RFRkFVTFQqF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFKhVJR05PUkVfSUZfVU5QT1BVTEFURUQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlYKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMhouYnVmLnZhbGlkYXRlLk1lc3NhZ2VSdWxlc1IHbWVzc2FnZTpOCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLk9uZW9mUnVsZXNSBW9uZW9mOk4KBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlc1IFZmllbGQ6XQoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMh0uYnVmLnZhbGlkYXRlLlByZWRlZmluZWRSdWxlc1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU",[file_google_protobuf_descriptor,file_google_protobuf_duration,file_google_protobuf_field_mask,file_google_protobuf_timestamp]);var Ignore;(function(Ignore2){Ignore2[Ignore2.UNSPECIFIED=0]="UNSPECIFIED",Ignore2[Ignore2.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",Ignore2[Ignore2.ALWAYS=3]="ALWAYS"})(Ignore||(Ignore={}));var KnownRegex;(function(KnownRegex2){KnownRegex2[KnownRegex2.UNSPECIFIED=0]="UNSPECIFIED",KnownRegex2[KnownRegex2.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",KnownRegex2[KnownRegex2.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(KnownRegex||(KnownRegex={}));var file_ai_stigmer_commons_rpc_pagination=fileDesc("CidhaS9zdGlnbWVyL2NvbW1vbnMvcnBjL3BhZ2luYXRpb24ucHJvdG8SFmFpLnN0aWdtZXIuY29tbW9ucy5ycGMiJQoIUGFnZUluZm8SCwoDbnVtGAEgASgFEgwKBHNpemUYAiABKAUiMgoOR29vZ2xlUGFnZUluZm8SEgoKcGFnZV90b2tlbhgBIAEoCRIMCgRzaXplGAIgASgFYgZwcm90bzM");var file_ai_stigmer_agentic_environment_v1_spec=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvc3BlYy5wcm90bxIhYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxItQBCg9FbnZpcm9ubWVudFNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSSgoEZGF0YRgCIAMoCzI8LmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFNwZWMuRGF0YUVudHJ5GmAKCURhdGFFbnRyeRILCgNrZXkYASABKAkSQgoFdmFsdWUYAiABKAsyMy5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnRWYWx1ZToCOAEiSQoQRW52aXJvbm1lbnRWYWx1ZRINCgV2YWx1ZRgBIAEoCRIRCglpc19zZWNyZXQYAiABKAgSEwoLZGVzY3JpcHRpb24YAyABKAkiTQoRRW52VmFyRGVjbGFyYXRpb24SEQoJaXNfc2VjcmV0GAEgASgIEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhAKCG9wdGlvbmFsGAMgASgIYgZwcm90bzM"),EnvironmentSpecSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,0),EnvironmentValueSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,1),EnvVarDeclarationSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,2);var file_ai_stigmer_commons_apiresource_field_options=fileDesc("CjJhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvZmllbGRfb3B0aW9ucy5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlOjsKCGNvbXB1dGVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjZwAUgASgIUghjb21wdXRlZDo9CglpbW11dGFibGUSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNrABSABKAhSCWltbXV0YWJsZTpECg1pc19leHByZXNzaW9uEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjbwAUgASgIUgxpc0V4cHJlc3Npb246hwEKDnJlZmVyZW5jZV9raW5kEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjcwAUgASgOMj8uYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmRSDXJlZmVyZW5jZUtpbmQ6TQoQZGlzY3JpbWluYXRlZF9ieRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY3cAFIAEoCVIPZGlzY3JpbWluYXRlZEJ5iAEBOlUKE2Rpc2NyaW1pbmF0b3JfdmFsdWUSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYvcEFIAEoCVISZGlzY3JpbWluYXRvclZhbHVliAEBYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_google_protobuf_descriptor]);var file_ai_stigmer_commons_apiresource_enum=fileDesc("CilhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvZW51bS5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlKnYKFEFwaVJlc291cmNlRXZlbnRUeXBlEg8KC3Vuc3BlY2lmaWVkEAASCwoHY3JlYXRlZBABEgsKB3VwZGF0ZWQQAhILCgdkZWxldGVkEAMSCwoHcmVuYW1lZBAEEhkKFXN0YWNrX291dHB1dHNfdXBkYXRlZBAFKowBCh1BcGlSZXNvdXJjZVN0YXRlT3BlcmF0aW9uVHlwZRIxCi1hcGlfcmVzb3VyY2Vfc3RhdGVfb3BlcmF0aW9uX3R5cGVfdW5zcGVjaWZpZWQQABIKCgZjcmVhdGUQARIKCgZ1cGRhdGUQAhIKCgZkZWxldGUQAxIICgRyZWFkEAQSCgoGc3RyZWFtEAUqnAEKFUFwaVJlc291cmNlVmlzaWJpbGl0eRInCiNhcGlfcmVzb3VyY2VfdmlzaWJpbGl0eV91bnNwZWNpZmllZBAAEhYKEnZpc2liaWxpdHlfcHJpdmF0ZRABEhUKEXZpc2liaWxpdHlfcHVibGljEAISEgoOdmlzaWJpbGl0eV9vcmcQAxIXChN2aXNpYmlsaXR5X3BsYXRmb3JtEARiBnByb3RvMw"),ApiResourceEventType;(function(ApiResourceEventType2){ApiResourceEventType2[ApiResourceEventType2.unspecified=0]="unspecified",ApiResourceEventType2[ApiResourceEventType2.created=1]="created",ApiResourceEventType2[ApiResourceEventType2.updated=2]="updated",ApiResourceEventType2[ApiResourceEventType2.deleted=3]="deleted",ApiResourceEventType2[ApiResourceEventType2.renamed=4]="renamed",ApiResourceEventType2[ApiResourceEventType2.stack_outputs_updated=5]="stack_outputs_updated"})(ApiResourceEventType||(ApiResourceEventType={}));var ApiResourceStateOperationType;(function(ApiResourceStateOperationType2){ApiResourceStateOperationType2[ApiResourceStateOperationType2.api_resource_state_operation_type_unspecified=0]="api_resource_state_operation_type_unspecified",ApiResourceStateOperationType2[ApiResourceStateOperationType2.create=1]="create",ApiResourceStateOperationType2[ApiResourceStateOperationType2.update=2]="update",ApiResourceStateOperationType2[ApiResourceStateOperationType2.delete=3]="delete",ApiResourceStateOperationType2[ApiResourceStateOperationType2.read=4]="read",ApiResourceStateOperationType2[ApiResourceStateOperationType2.stream=5]="stream"})(ApiResourceStateOperationType||(ApiResourceStateOperationType={}));var ApiResourceVisibility;(function(ApiResourceVisibility2){ApiResourceVisibility2[ApiResourceVisibility2.api_resource_visibility_unspecified=0]="api_resource_visibility_unspecified",ApiResourceVisibility2[ApiResourceVisibility2.visibility_private=1]="visibility_private",ApiResourceVisibility2[ApiResourceVisibility2.visibility_public=2]="visibility_public",ApiResourceVisibility2[ApiResourceVisibility2.visibility_org=3]="visibility_org",ApiResourceVisibility2[ApiResourceVisibility2.visibility_platform=4]="visibility_platform"})(ApiResourceVisibility||(ApiResourceVisibility={}));var file_ai_stigmer_commons_apiresource_io=fileDesc("CidhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvaW8ucHJvdG8SHmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZSImCg1BcGlSZXNvdXJjZUlkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiXQoWQXBpUmVzb3VyY2VEZWxldGVJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhcKD3ZlcnNpb25fbWVzc2FnZRgCIAEoCRINCgVmb3JjZRgDIAEoCCJKCh1BcGlSZXNvdXJjZUJ5T3JnQnlTbHVnUmVxdWVzdBITCgNvcmcYASABKAlCBrpIA8gBARIUCgRzbHVnGAIgASgJQga6SAPIAQEilAEKF0ZpbmRBcGlSZXNvdXJjZXNSZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEgwKBGtpbmQYAyABKAkSLgoEcGFnZRgEIAEoCzIgLmFpLnN0aWdtZXIuY29tbW9ucy5ycGMuUGFnZUluZm8SEwoLcGFnZV9udW1iZXIYBSABKAUSEQoJcGFnZV9zaXplGAYgASgFIosBChVVcGRhdGVWaXNpYmlsaXR5SW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARJVCgp2aXNpYmlsaXR5GAIgASgOMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlVmlzaWJpbGl0eUIKukgHggEEEAEgACKWAgoUQXBpUmVzb3VyY2VSZWZlcmVuY2USMgoDb3JnGAEgASgJQiW6SCJyIBg/MhxeJHxeW2Etel1bYS16MC05LV0qW2EtejAtOV0kEk0KBGtpbmQYAiABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBI1CgRzbHVnGAMgASgJQie6SCTIAQFyHxACGD8yGV5bYS16XVthLXowLTktXSpbYS16MC05XSQSRAoHdmVyc2lvbhgEIAEoCUIzukgwci4yLF4kfF5sYXRlc3QkfF5bYS16QS1aMC05Ll8tXSskfF5bYS1mMC05XXs2NH0kYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_commons_apiresource_enum,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]);var ApiResourceReferenceSchema=messageDesc2(file_ai_stigmer_commons_apiresource_io,5);var file_ai_stigmer_agentic_agent_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxIooHCglBZ2VudFNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSEAoIaWNvbl91cmwYAiABKAkSHQoMaW5zdHJ1Y3Rpb25zGAMgASgJQge6SARyAhAKEs4BChFtY3Bfc2VydmVyX3VzYWdlcxgEIAMoCzIrLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5NY3BTZXJ2ZXJVc2FnZUKFAbpIgQGSAX4ifLoBeQoWbWNwX3NlcnZlcl91c2FnZXMua2luZBI/bWNwX3NlcnZlcl91c2FnZXMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1tY3Bfc2VydmVyGh50aGlzLm1jcF9zZXJ2ZXJfcmVmLmtpbmQgPT0gNDQSsAEKCnNraWxsX3JlZnMYBSADKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2VCZrpIX5IBXCJaugFXCg9za2lsbF9yZWZzLmtpbmQSM3NraWxsX3JlZnMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1za2lsbBoPdGhpcy5raW5kID09IDQz4IUsKxI5CgpzdWJfYWdlbnRzGAYgAygLMiUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLlN1YkFnZW50EjwKA2VudhgHIAMoCzIvLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudFNwZWMuRW52RW50cnkSyAEKEGRhdGFzdG9yZV91c2FnZXMYCSADKAsyKy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuRGF0YXN0b3JlVXNhZ2VCgAG6SH2SAXoieLoBdQoVZGF0YXN0b3JlX3VzYWdlcy5raW5kEj1kYXRhc3RvcmVfdXNhZ2VzIG11c3QgcmVmZXJlbmNlIHJlc291cmNlcyB3aXRoIGtpbmQ9ZGF0YXN0b3JlGh10aGlzLmRhdGFzdG9yZV9yZWYua2luZCA9PSA0ORpgCghFbnZFbnRyeRILCgNrZXkYASABKAkSQwoFdmFsdWUYAiABKAsyNC5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52VmFyRGVjbGFyYXRpb246AjgBSgQICBAJUgdzaGFyaW5nItsCCghTdWJBZ2VudBIUCgRuYW1lGAEgASgJQga6SAPIAQESEwoLZGVzY3JpcHRpb24YAiABKAkSHQoMaW5zdHJ1Y3Rpb25zGAMgASgJQge6SARyAhAKEjoKCm1jcF9hY2Nlc3MYBCADKAsyJi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuTWNwQWNjZXNzErABCgpza2lsbF9yZWZzGAUgAygLMjQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlUmVmZXJlbmNlQma6SF+SAVwiWroBVwoPc2tpbGxfcmVmcy5raW5kEjNza2lsbF9yZWZzIG11c3QgcmVmZXJlbmNlIHJlc291cmNlcyB3aXRoIGtpbmQ9c2tpbGwaD3RoaXMua2luZCA9PSA0M+CFLCsSFgoObW9kZWxfb3ZlcnJpZGUYBiABKAki1QEKDk1jcFNlcnZlclVzYWdlElgKDm1jcF9zZXJ2ZXJfcmVmGAEgASgLMjQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlUmVmZXJlbmNlQgq6SAPIAQHghSwsEhUKDWVuYWJsZWRfdG9vbHMYAiADKAkSUgoXdG9vbF9hcHByb3ZhbF9vdmVycmlkZXMYAyADKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuVG9vbEFwcHJvdmFsT3ZlcnJpZGUiaQoORGF0YXN0b3JlVXNhZ2USVwoNZGF0YXN0b3JlX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUIKukgDyAEB4IUsMSI+CglNY3BBY2Nlc3MSGgoKbWNwX3NlcnZlchgBIAEoCUIGukgDyAEBEhUKDWVuYWJsZWRfdG9vbHMYAiADKAkiXgoUVG9vbEFwcHJvdmFsT3ZlcnJpZGUSGgoJdG9vbF9uYW1lGAEgASgJQge6SARyAhABEhkKEXJlcXVpcmVzX2FwcHJvdmFsGAIgASgIEg8KB21lc3NhZ2UYAyABKAliBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]),AgentSpecSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,0),SubAgentSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,1),McpServerUsageSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,2),DatastoreUsageSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,3),McpAccessSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,4),ToolApprovalOverrideSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,5);var file_ai_stigmer_commons_apiresource_status=fileDesc("CithaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2Uvc3RhdHVzLnByb3RvEh5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UiWQoWQXBpUmVzb3VyY2VBdWRpdFN0YXR1cxI/CgVhdWRpdBhjIAEoCzIwLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0IqgBChBBcGlSZXNvdXJjZUF1ZGl0EkgKCnNwZWNfYXVkaXQYASABKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VBdWRpdEluZm8SSgoMc3RhdHVzX2F1ZGl0GAIgASgLMjQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRJbmZvIpsCChRBcGlSZXNvdXJjZUF1ZGl0SW5mbxJJCgpjcmVhdGVkX2J5GAEgASgLMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRBY3RvchIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgp1cGRhdGVkX2J5GAMgASgLMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRBY3RvchIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVldmVudBgFIAEoCSJYChVBcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCgoCaWQYASABKAkSDgoGYXZhdGFyGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRINCgVlbWFpbBgEIAEoCWIGcHJvdG8z",[file_google_protobuf_timestamp]);var file_ai_stigmer_agentic_agent_v1_status=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvc3RhdHVzLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEigwEKC0FnZW50U3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSGwoTZGVmYXVsdF9pbnN0YW5jZV9pZBgBIAEoCUoECAIQA1IQc2hhcmVfbGlua190b2tlbmIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_status]);var file_ai_stigmer_commons_apiresource_metadata=fileDesc("Ci1haS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvbWV0YWRhdGEucHJvdG8SHmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZSK4BAoTQXBpUmVzb3VyY2VNZXRhZGF0YRIUCgRuYW1lGAEgASgJQga6SAPYAQESMwoEc2x1ZxgCIAEoCUIlukgi2AEBch0QAjIZXlthLXpdW2EtejAtOS1dKlthLXowLTldJBIKCgJpZBgDIAEoCRILCgNvcmcYBCABKAkSUwoKdmlzaWJpbGl0eRgFIAEoDjI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVZpc2liaWxpdHlCCLpIBYIBAhABEk8KBmxhYmVscxgGIAMoCzI/LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhLkxhYmVsc0VudHJ5ElkKC2Fubm90YXRpb25zGAcgAygLMkQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlTWV0YWRhdGEuQW5ub3RhdGlvbnNFbnRyeRIMCgR0YWdzGAggAygJEksKB3ZlcnNpb24YCSABKAsyOi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YVZlcnNpb24aLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoyChBBbm5vdGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiYwoaQXBpUmVzb3VyY2VNZXRhZGF0YVZlcnNpb24SCgoCaWQYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIbChNwcmV2aW91c192ZXJzaW9uX2lkGAMgASgJEgsKA3RhZxgEIAEoCWIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_enum,file_buf_validate_validate]),ApiResourceMetadataSchema=messageDesc2(file_ai_stigmer_commons_apiresource_metadata,0);var file_ai_stigmer_agentic_agent_v1_api=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvYXBpLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEilQIKBUFnZW50EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEhoKBGtpbmQYAiABKAlCDLpICXIHCgVBZ2VudBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESNAoEc3BlYxgEIAEoCzImLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudFNwZWMSOAoGc3RhdHVzGAUgASgLMiguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50U3RhdHVzYgZwcm90bzM",[file_ai_stigmer_agentic_agent_v1_spec,file_ai_stigmer_agentic_agent_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),AgentSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_api,0);var file_ai_stigmer_agentic_agent_v1_io=fileDesc("CiRhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvaW8ucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MSIgCgdBZ2VudElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiLgoWR2V0RGVmYXVsdEFnZW50UmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAFiBnByb3RvMw",[file_buf_validate_validate]);var file_ai_stigmer_commons_apiresource_rpc_service_options=fileDesc("CjhhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvcnBjX3NlcnZpY2Vfb3B0aW9ucy5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlOo4BChFhcGlfcmVzb3VyY2Vfa2luZBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxj0vwUgASgOMj8uYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmRSD2FwaVJlc291cmNlS2luZGIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_google_protobuf_descriptor]);var file_ai_stigmer_agentic_agent_v1_command=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvY29tbWFuZC5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxMskFChZBZ2VudENvbW1hbmRDb250cm9sbGVyEk8KBWFwcGx5EiIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50GiIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50EpsBCgZjcmVhdGUSIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQaIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQiScK4GEUIBhAeIgxtZXRhZGF0YS5vcmcqMXVuYXV0aG9yaXplZCB0byBjcmVhdGUgYWdlbnQgaW4gdGhpcyBvcmdhbml6YXRpb24ShQEKBnVwZGF0ZRIiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudBoiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudCIzwrgYLwgCECgiC21ldGFkYXRhLmlkKhx1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGFnZW50Eq0BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBoiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudCI+wrgYOggCECgiC3Jlc291cmNlX2lkKid1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGFnZW50IHZpc2liaWxpdHkSgQEKBmRlbGV0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudElkGiIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50Ii3CuBgpCAMQKCIFdmFsdWUqHHVuYXV0aG9yaXplZCB0byBkZWxldGUgYWdlbnQaBKD/KyhiBnByb3RvMw",[file_ai_stigmer_agentic_agent_v1_api,file_ai_stigmer_agentic_agent_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentCommandController=serviceDesc(file_ai_stigmer_agentic_agent_v1_command,0);var file_ai_stigmer_agentic_agent_v1_query=fileDesc("CidhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvcXVlcnkucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MTL4AgoUQWdlbnRRdWVyeUNvbnRyb2xsZXISewoDZ2V0EiQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50SWQaIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQiKsK4GCYIARAoIgV2YWx1ZSoZdW5hdXRob3JpemVkIHRvIGdldCBhZ2VudBJwCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudCIE0LgYARJrCgpnZXREZWZhdWx0EjMuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkdldERlZmF1bHRBZ2VudFJlcXVlc3QaIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQiBNC4GAEaBKD/KyhiBnByb3RvMw",[file_ai_stigmer_agentic_agent_v1_api,file_ai_stigmer_agentic_agent_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentQueryController=serviceDesc(file_ai_stigmer_agentic_agent_v1_query,0);var file_ai_stigmer_search_v1_io=fileDesc("Ch1haS9zdGlnbWVyL3NlYXJjaC92MS9pby5wcm90bxIUYWkuc3RpZ21lci5zZWFyY2gudjEilQIKDVNlYXJjaFJlcXVlc3QSXQoFa2luZHMYASADKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZEINukgKkgEHIgWCAQIQARIXCgVxdWVyeRgCIAEoCUIIukgFcgMY9AMSKgoDb3JnGAMgASgJQh26SBpyGBg/MhReJHxeW2Etel1bYS16MC05LV0qJBIWCg5leGNsdWRlX3B1YmxpYxgEIAEoCBIuCgRwYWdlGAUgASgLMiAuYWkuc3RpZ21lci5jb21tb25zLnJwYy5QYWdlSW5mbxIYChBjcm9zc19vcmdfcHVibGljGAYgASgIIvQBCg5TZWFyY2hSZXNwb25zZRIzCgdlbnRyaWVzGAEgAygLMiIuYWkuc3RpZ21lci5zZWFyY2gudjEuU2VhcmNoUmVzdWx0Ek4KDmNvdW50c19ieV9raW5kGAIgAygLMjYuYWkuc3RpZ21lci5zZWFyY2gudjEuU2VhcmNoUmVzcG9uc2UuQ291bnRzQnlLaW5kRW50cnkSEwoLdG90YWxfY291bnQYAyABKAUSEwoLdG90YWxfcGFnZXMYBCABKAUaMwoRQ291bnRzQnlLaW5kRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASKZAwoMU2VhcmNoUmVzdWx0Ek0KBGtpbmQYASABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHNsdWcYBCABKAkSFgoOcXVhbGlmaWVkX3NsdWcYBSABKAkSCwoDb3JnGAYgASgJEhMKC2Rlc2NyaXB0aW9uGAcgASgJEkkKCnZpc2liaWxpdHkYCCABKA4yNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VWaXNpYmlsaXR5EgwKBHRhZ3MYCSADKAkSLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFc2NvcmUYDCABKAISEAoIaWNvbl91cmwYDSABKAliBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_commons_apiresource_enum,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate,file_google_protobuf_timestamp]);var SearchResponseSchema=messageDesc2(file_ai_stigmer_search_v1_io,1);var file_ai_stigmer_search_v1_query=fileDesc("CiBhaS9zdGlnbWVyL3NlYXJjaC92MS9xdWVyeS5wcm90bxIUYWkuc3RpZ21lci5zZWFyY2gudjEyagoNU2VhcmNoU2VydmljZRJZCgZzZWFyY2gSIy5haS5zdGlnbWVyLnNlYXJjaC52MS5TZWFyY2hSZXF1ZXN0GiQuYWkuc3RpZ21lci5zZWFyY2gudjEuU2VhcmNoUmVzcG9uc2UiBNC4GAFiBnByb3RvMw",[file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_search_v1_io]),SearchService=serviceDesc(file_ai_stigmer_search_v1_query,0);var file_ai_stigmer_agentic_agentexecution_v1_enum=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvZW51bS5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxKv8BCg5FeGVjdXRpb25QaGFzZRIfChtFWEVDVVRJT05fUEhBU0VfVU5TUEVDSUZJRUQQABIVChFFWEVDVVRJT05fUEVORElORxABEhkKFUVYRUNVVElPTl9JTl9QUk9HUkVTUxACEhcKE0VYRUNVVElPTl9DT01QTEVURUQQAxIUChBFWEVDVVRJT05fRkFJTEVEEAQSFwoTRVhFQ1VUSU9OX0NBTkNFTExFRBAFEhgKFEVYRUNVVElPTl9URVJNSU5BVEVEEAgSIgoeRVhFQ1VUSU9OX1dBSVRJTkdfRk9SX0FQUFJPVkFMEAYSFAoQRVhFQ1VUSU9OX1BBVVNFRBAHKooBCgtNZXNzYWdlVHlwZRIcChhNRVNTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABIRCg1NRVNTQUdFX0hVTUFOEAESDgoKTUVTU0FHRV9BSRACEhAKDE1FU1NBR0VfVE9PTBADEhIKDk1FU1NBR0VfU1lTVEVNEAQSFAoQTUVTU0FHRV9USElOS0lORxAFKuEBCg5Ub29sQ2FsbFN0YXR1cxIgChxUT09MX0NBTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFQoRVE9PTF9DQUxMX1BFTkRJTkcQARIVChFUT09MX0NBTExfUlVOTklORxACEhcKE1RPT0xfQ0FMTF9DT01QTEVURUQQAxIUChBUT09MX0NBTExfRkFJTEVEEAQSHgoaVE9PTF9DQUxMX1dBSVRJTkdfQVBQUk9WQUwQBRIVChFUT09MX0NBTExfU0tJUFBFRBAGEhkKFVRPT0xfQ0FMTF9JTlRFUlJVUFRFRBAHKs4CCghUb29sS2luZBIZChVUT09MX0tJTkRfVU5TUEVDSUZJRUQQABIXChNUT09MX0tJTkRfRklMRV9SRUFEEAESGAoUVE9PTF9LSU5EX0ZJTEVfV1JJVEUQAhIXChNUT09MX0tJTkRfRklMRV9FRElUEAMSGQoVVE9PTF9LSU5EX0ZJTEVfREVMRVRFEAQSEwoPVE9PTF9LSU5EX1NIRUxMEAUSFAoQVE9PTF9LSU5EX1NFQVJDSBAGEhIKDlRPT0xfS0lORF9MSVNUEAcSEwoPVE9PTF9LSU5EX0ZFVENIEAgSGAoUVE9PTF9LSU5EX1dFQl9TRUFSQ0gQCRITCg9UT09MX0tJTkRfVEhJTksQChISCg5UT09MX0tJTkRfVE9ETxALEhYKElRPT0xfS0lORF9TVUJBR0VOVBAMEhEKDVRPT0xfS0lORF9NQ1AQDSp5CgpUb2RvU3RhdHVzEhsKF1RPRE9fU1RBVFVTX1VOU1BFQ0lGSUVEEAASEAoMVE9ET19QRU5ESU5HEAESFAoQVE9ET19JTl9QUk9HUkVTUxACEhIKDlRPRE9fQ09NUExFVEVEEAMSEgoOVE9ET19DQU5DRUxMRUQQBCqsAQoOU3ViQWdlbnRTdGF0dXMSIAocU1VCX0FHRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEhUKEVNVQl9BR0VOVF9QRU5ESU5HEAESGQoVU1VCX0FHRU5UX0lOX1BST0dSRVNTEAISFwoTU1VCX0FHRU5UX0NPTVBMRVRFRBADEhQKEFNVQl9BR0VOVF9GQUlMRUQQBBIXChNTVUJfQUdFTlRfQ0FOQ0VMTEVEEAUqiQEKFUV4ZWN1dGlvbkFydGlmYWN0S2luZBInCiNFWEVDVVRJT05fQVJUSUZBQ1RfS0lORF9VTlNQRUNJRklFRBAAEiAKHEVYRUNVVElPTl9BUlRJRkFDVF9LSU5EX0ZJTEUQARIlCiFFWEVDVVRJT05fQVJUSUZBQ1RfS0lORF9ESVJFQ1RPUlkQAipfChNTdW1tYXJpemF0aW9uU291cmNlEiQKIFNVTU1BUklaQVRJT05fU09VUkNFX1VOU1BFQ0lGSUVEEAASDwoLZ3JhcGhfc3RhcnQQARIRCg1taWRfZXhlY3V0aW9uEAIqkgEKF1Rvb2xDYWxsU3RyZWFtaW5nU291cmNlEioKJlRPT0xfQ0FMTF9TVFJFQU1JTkdfU09VUkNFX1VOU1BFQ0lGSUVEEAASJAogVE9PTF9DQUxMX1NUUkVBTUlOR19TT1VSQ0VfSU5QVVQQARIlCiFUT09MX0NBTExfU1RSRUFNSU5HX1NPVVJDRV9PVVRQVVQQAiqLAQoWRXhlY3V0aW9uQ29udHJvbFNpZ25hbBIoCiRFWEVDVVRJT05fQ09OVFJPTF9TSUdOQUxfVU5TUEVDSUZJRUQQABIhCh1FWEVDVVRJT05fQ09OVFJPTF9TSUdOQUxfU1RPUBABEiQKIEVYRUNVVElPTl9DT05UUk9MX1NJR05BTF9XQVJOSU5HEAIqpQEKDkFwcHJvdmFsQWN0aW9uEh8KG0FQUFJPVkFMX0FDVElPTl9VTlNQRUNJRklFRBAAEhsKF0FQUFJPVkFMX0FDVElPTl9BUFBST1ZFEAESGAoUQVBQUk9WQUxfQUNUSU9OX1NLSVAQAhIaChZBUFBST1ZBTF9BQ1RJT05fUkVKRUNUEAMSHwobQVBQUk9WQUxfQUNUSU9OX0FQUFJPVkVfQUxMEAQqsAMKFEFwcHJvdmFsUG9saWN5U291cmNlEiYKIkFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfVU5TUEVDSUZJRUQQABItCilBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0NMQVNTSUZJRVJfREVGQVVMVBABEioKJkFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfUElOTkVEX09WRVJSSURFEAISKQolQVBQUk9WQUxfUE9MSUNZX1NPVVJDRV9BR0VOVF9PVkVSUklERRADEisKJ0FQUFJPVkFMX1BPTElDWV9TT1VSQ0VfQVVUT19BUFBST1ZFX0FMTBAEEikKJUFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfQVBQUk9WQUxfTEVBU0UQBRIrCidBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0JVSUxUSU5fQ0FURUdPUlkQBhI5CjVBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0FOTk9UQVRJT05fREVTVFJVQ1RJVkVfVElHSFRFThAHEioKJkFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfVU5BVFRFTkRFRF9TS0lQEAgq4wEKEUFwcHJvdmFsRXZlbnRUeXBlEiMKH0FQUFJPVkFMX0VWRU5UX1RZUEVfVU5TUEVDSUZJRUQQABIhCh1BUFBST1ZBTF9FVkVOVF9UWVBFX1JFUVVFU1RFRBABEiAKHEFQUFJPVkFMX0VWRU5UX1RZUEVfQVBQUk9WRUQQAhIgChxBUFBST1ZBTF9FVkVOVF9UWVBFX1JFSkVDVEVEEAMSHwobQVBQUk9WQUxfRVZFTlRfVFlQRV9TS0lQUEVEEAQSIQodQVBQUk9WQUxfRVZFTlRfVFlQRV9SRVRSQUNURUQQBSqkAQoYQXBwcm92YWxSZXRyYWN0aW9uUmVhc29uEioKJkFQUFJPVkFMX1JFVFJBQ1RJT05fUkVBU09OX1VOU1BFQ0lGSUVEEAASMQotQVBQUk9WQUxfUkVUUkFDVElPTl9SRUFTT05fU1VCX0FHRU5UX1RFUk1JTkFMEAESKQolQVBQUk9WQUxfUkVUUkFDVElPTl9SRUFTT05fU1VQRVJTRURFRBACKmoKD0ludGVyYWN0aW9uTW9kZRIgChxJTlRFUkFDVElPTl9NT0RFX1VOU1BFQ0lGSUVEEAASGgoWSU5URVJBQ1RJT05fTU9ERV9BR0VOVBABEhkKFUlOVEVSQUNUSU9OX01PREVfUExBThACKmoKDEFwcHJvdmFsTW9kZRIdChlBUFBST1ZBTF9NT0RFX1VOU1BFQ0lGSUVEEAASHQoZQVBQUk9WQUxfTU9ERV9JTlRFUkFDVElWRRABEhwKGEFQUFJPVkFMX01PREVfVU5BVFRFTkRFRBACKqYBCg5GaWxlQ2hhbmdlVHlwZRIgChxGSUxFX0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASGwoXRklMRV9DSEFOR0VfVFlQRV9DUkVBVEUQARIbChdGSUxFX0NIQU5HRV9UWVBFX01PRElGWRACEhsKF0ZJTEVfQ0hBTkdFX1RZUEVfREVMRVRFEAMSGwoXRklMRV9DSEFOR0VfVFlQRV9SRU5BTUUQBCqWAQoWRmlsZUNoYW5nZUNhcHR1cmVMZXZlbBIpCiVGSUxFX0NIQU5HRV9DQVBUVVJFX0xFVkVMX1VOU1BFQ0lGSUVEEAASKAokRklMRV9DSEFOR0VfQ0FQVFVSRV9MRVZFTF9XSE9MRV9GSUxFEAESJwojRklMRV9DSEFOR0VfQ0FQVFVSRV9MRVZFTF9IVU5LX09OTFkQAir9AQoTRmlsZUNoYW5nZVNldFN0YXR1cxImCiJGSUxFX0NIQU5HRV9TRVRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogRklMRV9DSEFOR0VfU0VUX1NUQVRVU19DQVBUVVJJTkcQARIqCiZGSUxFX0NIQU5HRV9TRVRfU1RBVFVTX0FXQUlUSU5HX1JFVklFVxACEiIKHkZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfREVDSURFRBADEiUKIUZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfUkVDT05DSUxFRBAEEiEKHUZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfRkFJTEVEEAUqxwEKDkZpbGVDaGFuZ2VLaW5kEiAKHEZJTEVfQ0hBTkdFX0tJTkRfVU5TUEVDSUZJRUQQABIYChRGSUxFX0NIQU5HRV9LSU5EX0FERBABEhsKF0ZJTEVfQ0hBTkdFX0tJTkRfTU9ESUZZEAISGwoXRklMRV9DSEFOR0VfS0lORF9ERUxFVEUQAxIbChdGSUxFX0NIQU5HRV9LSU5EX1JFTkFNRRAEEiIKHkZJTEVfQ0hBTkdFX0tJTkRfQklOQVJZX0NIQU5HRRAFKtoBChBGaWxlQ2FwdHVyZUNsYXNzEiIKHkZJTEVfQ0FQVFVSRV9DTEFTU19VTlNQRUNJRklFRBAAEiIKHkZJTEVfQ0FQVFVSRV9DTEFTU19HSVRfVFJBQ0tFRBABEi0KKUZJTEVfQ0FQVFVSRV9DTEFTU19HSVRfVU5UUkFDS0VEX0NBUFRVUkVEEAISKwonRklMRV9DQVBUVVJFX0NMQVNTX0dJVF9JR05PUkVEX0NBUFRVUkVEEAMSIgoeRklMRV9DQVBUVVJFX0NMQVNTX05PTl9HSVRfQ0FTEAQqpwEKEERpZmZDb21wbGV0ZW5lc3MSIQodRElGRl9DT01QTEVURU5FU1NfVU5TUEVDSUZJRUQQABIeChpESUZGX0NPTVBMRVRFTkVTU19DT01QTEVURRABEiUKIURJRkZfQ09NUExFVEVORVNTX1BBUlRJQUxfQkxPQ0tFRBACEikKJURJRkZfQ09NUExFVEVORVNTX0JJTkFSWV9TVU1NQVJZX09OTFkQAyqHAQoMU25hcHNob3RLaW5kEh0KGVNOQVBTSE9UX0tJTkRfVU5TUEVDSUZJRUQQABIeChpTTkFQU0hPVF9LSU5EX0dJVF9UUkVFX1JFRhABEh4KGlNOQVBTSE9UX0tJTkRfQ0FTX01BTklGRVNUEAISGAoUU05BUFNIT1RfS0lORF9IWUJSSUQQAyp6ChFGaWxlRGVjaXNpb25TY29wZRIjCh9GSUxFX0RFQ0lTSU9OX1NDT1BFX1VOU1BFQ0lGSUVEEAASIgoeRklMRV9ERUNJU0lPTl9TQ09QRV9DSEFOR0VfU0VUEAESHAoYRklMRV9ERUNJU0lPTl9TQ09QRV9GSUxFEAIqfQoSRmlsZURlY2lzaW9uQWN0aW9uEiQKIEZJTEVfREVDSVNJT05fQUNUSU9OX1VOU1BFQ0lGSUVEEAASIAocRklMRV9ERUNJU0lPTl9BQ1RJT05fQVBQUk9WRRABEh8KG0ZJTEVfREVDSVNJT05fQUNUSU9OX1JFSkVDVBACKosBChJGaWxlRGVjaXNpb25PcmlnaW4SJAogRklMRV9ERUNJU0lPTl9PUklHSU5fVU5TUEVDSUZJRUQQABIdChlGSUxFX0RFQ0lTSU9OX09SSUdJTl9VU0VSEAESMAosRklMRV9ERUNJU0lPTl9PUklHSU5fUE9MSUNZX0FQUFJPVkVEX0NPTU1BTkQQAiqNAgoTRmlsZVJldmlld0V2ZW50VHlwZRImCiJGSUxFX1JFVklFV19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASLAooRklMRV9SRVZJRVdfRVZFTlRfVFlQRV9CQVNFTElORV9DQVBUVVJFRBABEi0KKUZJTEVfUkVWSUVXX0VWRU5UX1RZUEVfQ0FORElEQVRFX0NBUFRVUkVEEAISJwojRklMRV9SRVZJRVdfRVZFTlRfVFlQRV9GSUxFX0RFQ0lERUQQAxIlCiFGSUxFX1JFVklFV19FVkVOVF9UWVBFX1JFQ09OQ0lMRUQQBBIhCh1GSUxFX1JFVklFV19FVkVOVF9UWVBFX0ZBSUxFRBAFKvkBChVGaWxlUmV2aWV3RmFpbHVyZUtpbmQSKAokRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX1VOU1BFQ0lGSUVEEAASKwonRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX0NBUFRVUkVfRkFJTEVEEAESLgoqRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX0RJRkZfVU5SRVZJRVdBQkxFEAISLQopRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX1JFQ09OQ0lMRV9GQUlMRUQQAxIqCiZGSUxFX1JFVklFV19GQUlMVVJFX0tJTkRfSEFTSF9NSVNNQVRDSBAEKsQBChVGaWxlUmV2aWV3QmxvY2tSZWFzb24SKAokRklMRV9SRVZJRVdfQkxPQ0tfUkVBU09OX1VOU1BFQ0lGSUVEEAASLAooRklMRV9SRVZJRVdfQkxPQ0tfUkVBU09OX1NFQ1JFVF9XSVRISEVMRBABEigKJEZJTEVfUkVWSUVXX0JMT0NLX1JFQVNPTl9TSVpFX0VMSURFRBACEikKJUZJTEVfUkVWSUVXX0JMT0NLX1JFQVNPTl9VTlJFVklFV0FCTEUQA2IGcHJvdG8z"),ExecutionPhase;(function(ExecutionPhase3){ExecutionPhase3[ExecutionPhase3.EXECUTION_PHASE_UNSPECIFIED=0]="EXECUTION_PHASE_UNSPECIFIED",ExecutionPhase3[ExecutionPhase3.EXECUTION_PENDING=1]="EXECUTION_PENDING",ExecutionPhase3[ExecutionPhase3.EXECUTION_IN_PROGRESS=2]="EXECUTION_IN_PROGRESS",ExecutionPhase3[ExecutionPhase3.EXECUTION_COMPLETED=3]="EXECUTION_COMPLETED",ExecutionPhase3[ExecutionPhase3.EXECUTION_FAILED=4]="EXECUTION_FAILED",ExecutionPhase3[ExecutionPhase3.EXECUTION_CANCELLED=5]="EXECUTION_CANCELLED",ExecutionPhase3[ExecutionPhase3.EXECUTION_TERMINATED=8]="EXECUTION_TERMINATED",ExecutionPhase3[ExecutionPhase3.EXECUTION_WAITING_FOR_APPROVAL=6]="EXECUTION_WAITING_FOR_APPROVAL",ExecutionPhase3[ExecutionPhase3.EXECUTION_PAUSED=7]="EXECUTION_PAUSED"})(ExecutionPhase||(ExecutionPhase={}));var MessageType;(function(MessageType2){MessageType2[MessageType2.MESSAGE_TYPE_UNSPECIFIED=0]="MESSAGE_TYPE_UNSPECIFIED",MessageType2[MessageType2.MESSAGE_HUMAN=1]="MESSAGE_HUMAN",MessageType2[MessageType2.MESSAGE_AI=2]="MESSAGE_AI",MessageType2[MessageType2.MESSAGE_TOOL=3]="MESSAGE_TOOL",MessageType2[MessageType2.MESSAGE_SYSTEM=4]="MESSAGE_SYSTEM",MessageType2[MessageType2.MESSAGE_THINKING=5]="MESSAGE_THINKING"})(MessageType||(MessageType={}));var ToolCallStatus;(function(ToolCallStatus2){ToolCallStatus2[ToolCallStatus2.TOOL_CALL_STATUS_UNSPECIFIED=0]="TOOL_CALL_STATUS_UNSPECIFIED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_PENDING=1]="TOOL_CALL_PENDING",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_RUNNING=2]="TOOL_CALL_RUNNING",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_COMPLETED=3]="TOOL_CALL_COMPLETED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_FAILED=4]="TOOL_CALL_FAILED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_WAITING_APPROVAL=5]="TOOL_CALL_WAITING_APPROVAL",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_SKIPPED=6]="TOOL_CALL_SKIPPED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_INTERRUPTED=7]="TOOL_CALL_INTERRUPTED"})(ToolCallStatus||(ToolCallStatus={}));var ToolKind;(function(ToolKind2){ToolKind2[ToolKind2.UNSPECIFIED=0]="UNSPECIFIED",ToolKind2[ToolKind2.FILE_READ=1]="FILE_READ",ToolKind2[ToolKind2.FILE_WRITE=2]="FILE_WRITE",ToolKind2[ToolKind2.FILE_EDIT=3]="FILE_EDIT",ToolKind2[ToolKind2.FILE_DELETE=4]="FILE_DELETE",ToolKind2[ToolKind2.SHELL=5]="SHELL",ToolKind2[ToolKind2.SEARCH=6]="SEARCH",ToolKind2[ToolKind2.LIST=7]="LIST",ToolKind2[ToolKind2.FETCH=8]="FETCH",ToolKind2[ToolKind2.WEB_SEARCH=9]="WEB_SEARCH",ToolKind2[ToolKind2.THINK=10]="THINK",ToolKind2[ToolKind2.TODO=11]="TODO",ToolKind2[ToolKind2.SUBAGENT=12]="SUBAGENT",ToolKind2[ToolKind2.MCP=13]="MCP"})(ToolKind||(ToolKind={}));var TodoStatus;(function(TodoStatus2){TodoStatus2[TodoStatus2.TODO_STATUS_UNSPECIFIED=0]="TODO_STATUS_UNSPECIFIED",TodoStatus2[TodoStatus2.TODO_PENDING=1]="TODO_PENDING",TodoStatus2[TodoStatus2.TODO_IN_PROGRESS=2]="TODO_IN_PROGRESS",TodoStatus2[TodoStatus2.TODO_COMPLETED=3]="TODO_COMPLETED",TodoStatus2[TodoStatus2.TODO_CANCELLED=4]="TODO_CANCELLED"})(TodoStatus||(TodoStatus={}));var SubAgentStatus;(function(SubAgentStatus2){SubAgentStatus2[SubAgentStatus2.SUB_AGENT_STATUS_UNSPECIFIED=0]="SUB_AGENT_STATUS_UNSPECIFIED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_PENDING=1]="SUB_AGENT_PENDING",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_IN_PROGRESS=2]="SUB_AGENT_IN_PROGRESS",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_COMPLETED=3]="SUB_AGENT_COMPLETED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_FAILED=4]="SUB_AGENT_FAILED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_CANCELLED=5]="SUB_AGENT_CANCELLED"})(SubAgentStatus||(SubAgentStatus={}));var ExecutionArtifactKind;(function(ExecutionArtifactKind2){ExecutionArtifactKind2[ExecutionArtifactKind2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionArtifactKind2[ExecutionArtifactKind2.FILE=1]="FILE",ExecutionArtifactKind2[ExecutionArtifactKind2.DIRECTORY=2]="DIRECTORY"})(ExecutionArtifactKind||(ExecutionArtifactKind={}));var SummarizationSource;(function(SummarizationSource2){SummarizationSource2[SummarizationSource2.SUMMARIZATION_SOURCE_UNSPECIFIED=0]="SUMMARIZATION_SOURCE_UNSPECIFIED",SummarizationSource2[SummarizationSource2.graph_start=1]="graph_start",SummarizationSource2[SummarizationSource2.mid_execution=2]="mid_execution"})(SummarizationSource||(SummarizationSource={}));var ToolCallStreamingSource;(function(ToolCallStreamingSource2){ToolCallStreamingSource2[ToolCallStreamingSource2.UNSPECIFIED=0]="UNSPECIFIED",ToolCallStreamingSource2[ToolCallStreamingSource2.INPUT=1]="INPUT",ToolCallStreamingSource2[ToolCallStreamingSource2.OUTPUT=2]="OUTPUT"})(ToolCallStreamingSource||(ToolCallStreamingSource={}));var ExecutionControlSignal;(function(ExecutionControlSignal2){ExecutionControlSignal2[ExecutionControlSignal2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionControlSignal2[ExecutionControlSignal2.STOP=1]="STOP",ExecutionControlSignal2[ExecutionControlSignal2.WARNING=2]="WARNING"})(ExecutionControlSignal||(ExecutionControlSignal={}));var ApprovalAction;(function(ApprovalAction2){ApprovalAction2[ApprovalAction2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalAction2[ApprovalAction2.APPROVE=1]="APPROVE",ApprovalAction2[ApprovalAction2.SKIP=2]="SKIP",ApprovalAction2[ApprovalAction2.REJECT=3]="REJECT",ApprovalAction2[ApprovalAction2.APPROVE_ALL=4]="APPROVE_ALL"})(ApprovalAction||(ApprovalAction={}));var ApprovalPolicySource;(function(ApprovalPolicySource2){ApprovalPolicySource2[ApprovalPolicySource2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalPolicySource2[ApprovalPolicySource2.CLASSIFIER_DEFAULT=1]="CLASSIFIER_DEFAULT",ApprovalPolicySource2[ApprovalPolicySource2.PINNED_OVERRIDE=2]="PINNED_OVERRIDE",ApprovalPolicySource2[ApprovalPolicySource2.AGENT_OVERRIDE=3]="AGENT_OVERRIDE",ApprovalPolicySource2[ApprovalPolicySource2.AUTO_APPROVE_ALL=4]="AUTO_APPROVE_ALL",ApprovalPolicySource2[ApprovalPolicySource2.APPROVAL_LEASE=5]="APPROVAL_LEASE",ApprovalPolicySource2[ApprovalPolicySource2.BUILTIN_CATEGORY=6]="BUILTIN_CATEGORY",ApprovalPolicySource2[ApprovalPolicySource2.ANNOTATION_DESTRUCTIVE_TIGHTEN=7]="ANNOTATION_DESTRUCTIVE_TIGHTEN",ApprovalPolicySource2[ApprovalPolicySource2.UNATTENDED_SKIP=8]="UNATTENDED_SKIP"})(ApprovalPolicySource||(ApprovalPolicySource={}));var ApprovalEventType;(function(ApprovalEventType2){ApprovalEventType2[ApprovalEventType2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalEventType2[ApprovalEventType2.REQUESTED=1]="REQUESTED",ApprovalEventType2[ApprovalEventType2.APPROVED=2]="APPROVED",ApprovalEventType2[ApprovalEventType2.REJECTED=3]="REJECTED",ApprovalEventType2[ApprovalEventType2.SKIPPED=4]="SKIPPED",ApprovalEventType2[ApprovalEventType2.RETRACTED=5]="RETRACTED"})(ApprovalEventType||(ApprovalEventType={}));var ApprovalRetractionReason;(function(ApprovalRetractionReason2){ApprovalRetractionReason2[ApprovalRetractionReason2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalRetractionReason2[ApprovalRetractionReason2.SUB_AGENT_TERMINAL=1]="SUB_AGENT_TERMINAL",ApprovalRetractionReason2[ApprovalRetractionReason2.SUPERSEDED=2]="SUPERSEDED"})(ApprovalRetractionReason||(ApprovalRetractionReason={}));var InteractionMode;(function(InteractionMode2){InteractionMode2[InteractionMode2.UNSPECIFIED=0]="UNSPECIFIED",InteractionMode2[InteractionMode2.AGENT=1]="AGENT",InteractionMode2[InteractionMode2.PLAN=2]="PLAN"})(InteractionMode||(InteractionMode={}));var ApprovalMode;(function(ApprovalMode2){ApprovalMode2[ApprovalMode2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalMode2[ApprovalMode2.INTERACTIVE=1]="INTERACTIVE",ApprovalMode2[ApprovalMode2.UNATTENDED=2]="UNATTENDED"})(ApprovalMode||(ApprovalMode={}));var FileChangeType;(function(FileChangeType2){FileChangeType2[FileChangeType2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeType2[FileChangeType2.CREATE=1]="CREATE",FileChangeType2[FileChangeType2.MODIFY=2]="MODIFY",FileChangeType2[FileChangeType2.DELETE=3]="DELETE",FileChangeType2[FileChangeType2.RENAME=4]="RENAME"})(FileChangeType||(FileChangeType={}));var FileChangeCaptureLevel;(function(FileChangeCaptureLevel2){FileChangeCaptureLevel2[FileChangeCaptureLevel2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeCaptureLevel2[FileChangeCaptureLevel2.WHOLE_FILE=1]="WHOLE_FILE",FileChangeCaptureLevel2[FileChangeCaptureLevel2.HUNK_ONLY=2]="HUNK_ONLY"})(FileChangeCaptureLevel||(FileChangeCaptureLevel={}));var FileChangeSetStatus;(function(FileChangeSetStatus2){FileChangeSetStatus2[FileChangeSetStatus2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeSetStatus2[FileChangeSetStatus2.CAPTURING=1]="CAPTURING",FileChangeSetStatus2[FileChangeSetStatus2.AWAITING_REVIEW=2]="AWAITING_REVIEW",FileChangeSetStatus2[FileChangeSetStatus2.DECIDED=3]="DECIDED",FileChangeSetStatus2[FileChangeSetStatus2.RECONCILED=4]="RECONCILED",FileChangeSetStatus2[FileChangeSetStatus2.FAILED=5]="FAILED"})(FileChangeSetStatus||(FileChangeSetStatus={}));var FileChangeKind;(function(FileChangeKind2){FileChangeKind2[FileChangeKind2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeKind2[FileChangeKind2.ADD=1]="ADD",FileChangeKind2[FileChangeKind2.MODIFY=2]="MODIFY",FileChangeKind2[FileChangeKind2.DELETE=3]="DELETE",FileChangeKind2[FileChangeKind2.RENAME=4]="RENAME",FileChangeKind2[FileChangeKind2.BINARY_CHANGE=5]="BINARY_CHANGE"})(FileChangeKind||(FileChangeKind={}));var FileCaptureClass;(function(FileCaptureClass2){FileCaptureClass2[FileCaptureClass2.UNSPECIFIED=0]="UNSPECIFIED",FileCaptureClass2[FileCaptureClass2.GIT_TRACKED=1]="GIT_TRACKED",FileCaptureClass2[FileCaptureClass2.GIT_UNTRACKED_CAPTURED=2]="GIT_UNTRACKED_CAPTURED",FileCaptureClass2[FileCaptureClass2.GIT_IGNORED_CAPTURED=3]="GIT_IGNORED_CAPTURED",FileCaptureClass2[FileCaptureClass2.NON_GIT_CAS=4]="NON_GIT_CAS"})(FileCaptureClass||(FileCaptureClass={}));var DiffCompleteness;(function(DiffCompleteness2){DiffCompleteness2[DiffCompleteness2.UNSPECIFIED=0]="UNSPECIFIED",DiffCompleteness2[DiffCompleteness2.COMPLETE=1]="COMPLETE",DiffCompleteness2[DiffCompleteness2.PARTIAL_BLOCKED=2]="PARTIAL_BLOCKED",DiffCompleteness2[DiffCompleteness2.BINARY_SUMMARY_ONLY=3]="BINARY_SUMMARY_ONLY"})(DiffCompleteness||(DiffCompleteness={}));var SnapshotKind;(function(SnapshotKind2){SnapshotKind2[SnapshotKind2.UNSPECIFIED=0]="UNSPECIFIED",SnapshotKind2[SnapshotKind2.GIT_TREE_REF=1]="GIT_TREE_REF",SnapshotKind2[SnapshotKind2.CAS_MANIFEST=2]="CAS_MANIFEST",SnapshotKind2[SnapshotKind2.HYBRID=3]="HYBRID"})(SnapshotKind||(SnapshotKind={}));var FileDecisionScope;(function(FileDecisionScope2){FileDecisionScope2[FileDecisionScope2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionScope2[FileDecisionScope2.CHANGE_SET=1]="CHANGE_SET",FileDecisionScope2[FileDecisionScope2.FILE=2]="FILE"})(FileDecisionScope||(FileDecisionScope={}));var FileDecisionAction;(function(FileDecisionAction2){FileDecisionAction2[FileDecisionAction2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionAction2[FileDecisionAction2.APPROVE=1]="APPROVE",FileDecisionAction2[FileDecisionAction2.REJECT=2]="REJECT"})(FileDecisionAction||(FileDecisionAction={}));var FileDecisionOrigin;(function(FileDecisionOrigin2){FileDecisionOrigin2[FileDecisionOrigin2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionOrigin2[FileDecisionOrigin2.USER=1]="USER",FileDecisionOrigin2[FileDecisionOrigin2.POLICY_APPROVED_COMMAND=2]="POLICY_APPROVED_COMMAND"})(FileDecisionOrigin||(FileDecisionOrigin={}));var FileReviewEventType;(function(FileReviewEventType2){FileReviewEventType2[FileReviewEventType2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewEventType2[FileReviewEventType2.BASELINE_CAPTURED=1]="BASELINE_CAPTURED",FileReviewEventType2[FileReviewEventType2.CANDIDATE_CAPTURED=2]="CANDIDATE_CAPTURED",FileReviewEventType2[FileReviewEventType2.FILE_DECIDED=3]="FILE_DECIDED",FileReviewEventType2[FileReviewEventType2.RECONCILED=4]="RECONCILED",FileReviewEventType2[FileReviewEventType2.FAILED=5]="FAILED"})(FileReviewEventType||(FileReviewEventType={}));var FileReviewFailureKind;(function(FileReviewFailureKind2){FileReviewFailureKind2[FileReviewFailureKind2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewFailureKind2[FileReviewFailureKind2.CAPTURE_FAILED=1]="CAPTURE_FAILED",FileReviewFailureKind2[FileReviewFailureKind2.DIFF_UNREVIEWABLE=2]="DIFF_UNREVIEWABLE",FileReviewFailureKind2[FileReviewFailureKind2.RECONCILE_FAILED=3]="RECONCILE_FAILED",FileReviewFailureKind2[FileReviewFailureKind2.HASH_MISMATCH=4]="HASH_MISMATCH"})(FileReviewFailureKind||(FileReviewFailureKind={}));var FileReviewBlockReason;(function(FileReviewBlockReason2){FileReviewBlockReason2[FileReviewBlockReason2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewBlockReason2[FileReviewBlockReason2.SECRET_WITHHELD=1]="SECRET_WITHHELD",FileReviewBlockReason2[FileReviewBlockReason2.SIZE_ELIDED=2]="SIZE_ELIDED",FileReviewBlockReason2[FileReviewBlockReason2.UNREVIEWABLE=3]="UNREVIEWABLE"})(FileReviewBlockReason||(FileReviewBlockReason={}));var file_ai_stigmer_agentic_agentexecution_v1_approval=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvYXBwcm92YWwucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSLLAwoPUGVuZGluZ0FwcHJvdmFsEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIRCgl0b29sX25hbWUYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIUCgxhcmdzX3ByZXZpZXcYBCABKAkSFAoMcmVxdWVzdGVkX2F0GAUgASgJEhYKDmZyb21fc3ViX2FnZW50GAYgASgIEhYKDnN1Yl9hZ2VudF9uYW1lGAcgASgJEhcKD21jcF9zZXJ2ZXJfc2x1ZxgIIAEoCRIZChFzdWJfYWdlbnRfc3ViamVjdBgJIAEoCRIXCg9hZ2VudF9yYXRpb25hbGUYCiABKAkSFgoOYnJhbmNoX2F0X2RlbnkYCyABKAkSGAoQaGVhZF9zaGFfYXRfZGVueRgMIAEoCRJBCgl0b29sX2tpbmQYDSABKA4yLi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9vbEtpbmQSWgoWYXBwcm92YWxfcG9saWN5X3NvdXJjZRgPIAEoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFBvbGljeVNvdXJjZUoECA4QDyKDAQoZQ2hpbGRBcHByb3ZhbE5vdGlmaWNhdGlvbhIUCgxleGVjdXRpb25faWQYASABKAkSUAoRcGVuZGluZ19hcHByb3ZhbHMYAiADKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUGVuZGluZ0FwcHJvdmFsIp0DCg9BcHByb3ZhbFJlcXVlc3QSGwoTYXBwcm92YWxfcmVxdWVzdF9pZBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkSFAoMcmVxdWVzdGVkX2F0GAMgASgJEhEKCXRvb2xfbmFtZRgEIAEoCRIPCgdtZXNzYWdlGAUgASgJEhQKDGFyZ3NfcHJldmlldxgGIAEoCRIWCg5mcm9tX3N1Yl9hZ2VudBgHIAEoCBIWCg5zdWJfYWdlbnRfbmFtZRgIIAEoCRIZChFzdWJfYWdlbnRfc3ViamVjdBgJIAEoCRIXCg9tY3Bfc2VydmVyX3NsdWcYCiABKAkSQQoJdG9vbF9raW5kGAsgASgOMi4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xLaW5kEloKFmFwcHJvdmFsX3BvbGljeV9zb3VyY2UYDSABKA4yOi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXBwcm92YWxQb2xpY3lTb3VyY2VKBAgMEA0ilwEKEkFwcHJvdmFsUmV0cmFjdGlvbhIbChNhcHByb3ZhbF9yZXF1ZXN0X2lkGAEgASgJEk4KBnJlYXNvbhgCIAEoDjI+LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFJldHJhY3Rpb25SZWFzb24SFAoMcmV0cmFjdGVkX2F0GAMgASgJIq4BChBBcHByb3ZhbERlY2lzaW9uEhsKE2FwcHJvdmFsX3JlcXVlc3RfaWQYASABKAkSRAoGYWN0aW9uGAIgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uEhIKCmRlY2lkZWRfYXQYAyABKAkSEgoKZGVjaWRlZF9ieRgEIAEoCRIPCgdjb21tZW50GAUgASgJIp4DCg1BcHByb3ZhbEV2ZW50EhAKCGV2ZW50X2lkGAEgASgJEhsKE2FwcHJvdmFsX3JlcXVlc3RfaWQYAiABKAkSSwoKZXZlbnRfdHlwZRgDIAEoDjI3LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbEV2ZW50VHlwZRIRCgl0aW1lc3RhbXAYBCABKAkSDQoFYWN0b3IYBSABKAkSSgoJcmVxdWVzdGVkGAYgASgLMjUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsUmVxdWVzdEgAEkkKB2RlY2lkZWQYByABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXBwcm92YWxEZWNpc2lvbkgAEk0KCXJldHJhY3RlZBgIIAEoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFJldHJhY3Rpb25IAEIJCgdwYXlsb2FkInAKE0FwcHJvdmFsRXZlbnRTdHJlYW0SFAoMZXhlY3V0aW9uX2lkGAEgASgJEkMKBmV2ZW50cxgCIAMoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbEV2ZW50YgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_enum]);var file_ai_stigmer_agentic_agentexecution_v1_artifact=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvYXJ0aWZhY3QucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSKEAgoRRXhlY3V0aW9uQXJ0aWZhY3QSDAoEbmFtZRgBIAEoCRIUCgxzYW5kYm94X3BhdGgYAiABKAkSUwoEa2luZBgDIAEoDjI7LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25BcnRpZmFjdEtpbmRCCLpIBYIBAhABEhIKCnNpemVfYnl0ZXMYBCABKAMSEwoLc3RvcmFnZV9rZXkYBSABKAkSEgoKY3JlYXRlZF9hdBgHIAEoCRISCgpleHBpcmVzX2F0GAggASgJEg8KB2VudHJpZXMYCSADKAkSFAoMY29udGVudF9oYXNoGAogASgJYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_buf_validate_validate]);var file_ai_stigmer_agentic_agentexecution_v1_context=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvY29udGV4dC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIsACChhSZXNvbHZlZEV4ZWN1dGlvbkNvbnRleHQSGAoQZW52aXJvbm1lbnRfa2V5cxgBIAMoCRJjCgttY3Bfc2VydmVycxgCIAMoCzJOLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5SZXNvbHZlZEV4ZWN1dGlvbkNvbnRleHQuTWNwU2VydmVyc0VudHJ5EhMKC3NraWxsX25hbWVzGAMgAygJEhwKFGV4Y2x1ZGVkX3NraWxsX25hbWVzGAQgAygJGnIKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSTgoFdmFsdWUYAiABKAsyPy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuTWNwU2VydmVyUmVzb2x1dGlvblN0YXR1czoCOAEiWgoZTWNwU2VydmVyUmVzb2x1dGlvblN0YXR1cxIQCghyZXNvbHZlZBgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEhoKEmVuYWJsZWRfdG9vbF9jb3VudBgDIAEoBSKGAwoSU3VtbWFyaXphdGlvbkV2ZW50EhEKCXRpbWVzdGFtcBgBIAEoCRIVCg10b2tlbnNfYmVmb3JlGAIgASgFEhQKDHRva2Vuc19hZnRlchgDIAEoBRIZChFjb21wcmVzc2lvbl9yYXRpbxgEIAEoAhITCgtkdXJhdGlvbl9tcxgFIAEoBRIbChNzdW1tYXJpemF0aW9uX21vZGVsGAYgASgJEhcKD21lc3NhZ2VzX2JlZm9yZRgHIAEoBRIWCg5tZXNzYWdlc19hZnRlchgIIAEoBRJJCgZzb3VyY2UYCSABKA4yOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VtbWFyaXphdGlvblNvdXJjZRIiChpzdW1tYXJpemF0aW9uX2lucHV0X3Rva2VucxgKIAEoBRIjChtzdW1tYXJpemF0aW9uX291dHB1dF90b2tlbnMYCyABKAUSHgoWc3VtbWFyaXphdGlvbl9jb3N0X3VzZBgMIAEoASKqAgoLQ29udGV4dEluZm8SGwoTY3VycmVudF90b2tlbl9jb3VudBgBIAEoBRIcChRjb250ZXh0X3dpbmRvd19saW1pdBgCIAEoBRInCh9zdW1tYXJpemF0aW9uX3RyaWdnZXJfdGhyZXNob2xkGAMgASgFEiMKG3N1bW1hcml6YXRpb25fdGFyZ2V0X3Rva2VucxgEIAEoBRIdChVzdW1tYXJpemF0aW9uX2VuYWJsZWQYBSABKAgSVgoUc3VtbWFyaXphdGlvbl9ldmVudHMYBiADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VtbWFyaXphdGlvbkV2ZW50EhsKE3V0aWxpemF0aW9uX3BlcmNlbnQYByABKAJiBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum]);var file_ai_stigmer_agentic_agentexecution_v1_message=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvbWVzc2FnZS5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIoICCgxBZ2VudE1lc3NhZ2USSQoEdHlwZRgBIAEoDjIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5NZXNzYWdlVHlwZUIIukgFggECEAESDwoHY29udGVudBgCIAEoCRIRCgl0aW1lc3RhbXAYAyABKAkSQgoKdG9vbF9jYWxscxgEIAMoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Ub29sQ2FsbBIpCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMaXNfc3RyZWFtaW5nGAYgASgIIqUHCghUb29sQ2FsbBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEiUKBGFyZ3MYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg4KBnJlc3VsdBgEIAEoCRJOCgZzdGF0dXMYBSABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9vbENhbGxTdGF0dXNCCLpIBYIBAhABEhIKCnN0YXJ0ZWRfYXQYByABKAkSFAoMY29tcGxldGVkX2F0GAggASgJEg0KBWVycm9yGAkgASgJEhkKEXJlcXVpcmVzX2FwcHJvdmFsGAogASgIEhgKEGFwcHJvdmFsX21lc3NhZ2UYCyABKAkSHQoVYXBwcm92YWxfcmVxdWVzdGVkX2F0GAwgASgJEhsKE2FwcHJvdmFsX2RlY2lkZWRfYXQYDSABKAkSEwoLYXBwcm92ZWRfYnkYDiABKAkSTQoPYXBwcm92YWxfYWN0aW9uGA8gASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uEhQKDGlzX3N0cmVhbWluZxgQIAEoCBJXChBzdHJlYW1pbmdfc291cmNlGBMgASgOMj0uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xDYWxsU3RyZWFtaW5nU291cmNlEhcKD21jcF9zZXJ2ZXJfc2x1ZxgRIAEoCRIUCgxhcmdzX3ByZXZpZXcYEiABKAkSQQoJdG9vbF9raW5kGBQgASgOMi4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xLaW5kEksKCm91dHB1dF9yZWYYFSABKAsyNy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9vbENhbGxPdXRwdXRSZWYSWgoWYXBwcm92YWxfcG9saWN5X3NvdXJjZRgXIAEoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFBvbGljeVNvdXJjZRIdChVwb2xpY3lfZW5naW5lX3ZlcnNpb24YGCABKAkSHwoXYXBwcm92YWxfY29udGVudF9kaWdlc3QYGSABKAkSGgoSZmlsZV9jaGFuZ2Vfc2V0X2lkGBogASgJSgQIFhAXIpIBChFUb29sQ2FsbE91dHB1dFJlZhITCgtzdG9yYWdlX2tleRgBIAEoCRISCgpzaXplX2J5dGVzGAMgASgDEhQKDGNvbnRlbnRfaGFzaBgEIAEoCRIRCgltaW1lX3R5cGUYBSABKAkSEAoIaXNfaW1hZ2UYBiABKAgSGQoRdHJ1bmNhdGVkX3ByZXZpZXcYByABKAkiwQMKCkZpbGVDaGFuZ2USDAoEcGF0aBgBIAEoCRIVCg1hYnNvbHV0ZV9wYXRoGAIgASgJElMKC2NoYW5nZV90eXBlGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVDaGFuZ2VUeXBlQgi6SAWCAQIQARJdCg1jYXB0dXJlX2xldmVsGAQgASgOMjwuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVDaGFuZ2VDYXB0dXJlTGV2ZWxCCLpIBYIBAhABEkEKBmJlZm9yZRgFIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ29udGVudBJACgVhZnRlchgGIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ29udGVudBIUCgx1bmlmaWVkX2RpZmYYByABKAkSEwoLbGluZXNfYWRkZWQYCCABKAUSFQoNbGluZXNfcmVtb3ZlZBgJIAEoBRITCgtyZW5hbWVfZnJvbRgKIAEoCSKCAQoLRmlsZUNvbnRlbnQSEAoGaW5saW5lGAEgASgJSAASRgoDcmVmGAIgASgLMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xDYWxsT3V0cHV0UmVmSAASEQoJaXNfYmluYXJ5GAMgASgIQgYKBGJvZHliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_buf_validate_validate,file_google_protobuf_struct]);var file_ai_stigmer_agentic_agentexecution_v1_filereview=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvZmlsZXJldmlldy5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIokFCg1GaWxlQ2hhbmdlU2V0EgoKAmlkGAEgASgJEg8KB3R1cm5faWQYAiABKAkSEgoKaGFybmVzc19pZBgDIAEoCRJTCgZzdGF0dXMYBCABKA4yOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNoYW5nZVNldFN0YXR1c0IIukgFggECEAESTAoRYmFzZWxpbmVfc25hcHNob3QYBSABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU25hcHNob3RSZWYSTQoSY2FuZGlkYXRlX3NuYXBzaG90GAYgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmEkwKEWFwcHJvdmVkX3NuYXBzaG90GAcgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmEkkKB2NoYW5nZXMYCCADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ2FwdHVyZWRGaWxlQ2hhbmdlEhgKEGFnZ3JlZ2F0ZV9kaWdlc3QYCSABKAkSWwoRZGlmZl9jb21wbGV0ZW5lc3MYCiABKA4yNi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRGlmZkNvbXBsZXRlbmVzc0IIukgFggECEAESRQoJZGVjaXNpb25zGAsgAygLMjIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVEZWNpc2lvbiKoBQoSQ2FwdHVyZWRGaWxlQ2hhbmdlEgoKAmlkGAEgASgJEhMKC3BhdGhfYmVmb3JlGAIgASgJEhIKCnBhdGhfYWZ0ZXIYAyABKAkSTAoEa2luZBgEIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ2hhbmdlS2luZEIIukgFggECEAESVwoNY2FwdHVyZV9jbGFzcxgFIAEoDjI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ2FwdHVyZUNsYXNzQgi6SAWCAQIQARJBCgZiZWZvcmUYBiABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNvbnRlbnQSQAoFYWZ0ZXIYByABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNvbnRlbnQSFQoNYmVmb3JlX3NoYTI1NhgIIAEoCRIUCgxhZnRlcl9zaGEyNTYYCSABKAkSTQoMdW5pZmllZF9kaWZmGAogASgLMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xDYWxsT3V0cHV0UmVmEhUKDWRpZmZfY29tcGxldGUYCyABKAgSEwoLZmlsZV9kaWdlc3QYDCABKAkSXQoOYmxvY2tlZF9yZWFzb24YDSABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZVJldmlld0Jsb2NrUmVhc29uQgi6SAWCAQIQARITCgtsaW5lc19hZGRlZBgOIAEoBRIVCg1saW5lc19yZW1vdmVkGA8gASgFItsBCgtTbmFwc2hvdFJlZhJKCgRraW5kGAEgASgOMjIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90S2luZEIIukgFggECEAESPQoDZ2l0GAIgASgLMjAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdpdFRyZWVSZWYSQQoDY2FzGAMgASgLMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkNhc01hbmlmZXN0UmVmIisKCkdpdFRyZWVSZWYSEAoIdHJlZV9vaWQYASABKAkSCwoDcmVmGAIgASgJIj8KDkNhc01hbmlmZXN0UmVmEhcKD21hbmlmZXN0X2RpZ2VzdBgBIAEoCRIUCgxhcnRpZmFjdF91cmkYAiABKAkitwMKDEZpbGVEZWNpc2lvbhIKCgJpZBgBIAEoCRIVCg1jaGFuZ2Vfc2V0X2lkGAIgASgJElAKBXNjb3BlGAMgASgOMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVEZWNpc2lvblNjb3BlQgi6SAWCAQIQARIWCg5maWxlX2NoYW5nZV9pZBgEIAEoCRJSCgZhY3Rpb24YBSABKA4yOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZURlY2lzaW9uQWN0aW9uQgi6SAWCAQIQARIXCg9leHBlY3RlZF9kaWdlc3QYBiABKAkSEwoLcmV2aWV3ZXJfaWQYByABKAkSEgoKZGVjaWRlZF9hdBgIIAEoCRIOCgZyZWFzb24YCSABKAkSIAoYYWNrbm93bGVkZ2VfdW5yZXZpZXdhYmxlGAogASgIElIKBm9yaWdpbhgLIAEoDjI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25PcmlnaW5CCLpIBYIBAhABIqYBChpGaWxlUmV2aWV3QmFzZWxpbmVDYXB0dXJlZBIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJEg8KB3R1cm5faWQYAiABKAkSEgoKaGFybmVzc19pZBgDIAEoCRJMChFiYXNlbGluZV9zbmFwc2hvdBgEIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5TbmFwc2hvdFJlZiJeChVUdXJuQ29tbWFuZFByb3ZlbmFuY2USHQoVY29uc2VudF90b29sX2NhbGxfaWRzGAEgAygJEiYKHmF1dGhvcml6ZWRfYnlfYXV0b19hcHByb3ZlX2FsbBgCIAEoCCKeAwobRmlsZVJldmlld0NhbmRpZGF0ZUNhcHR1cmVkEhUKDWNoYW5nZV9zZXRfaWQYASABKAkSTQoSY2FuZGlkYXRlX3NuYXBzaG90GAIgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmEkkKB2NoYW5nZXMYAyADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ2FwdHVyZWRGaWxlQ2hhbmdlEhgKEGFnZ3JlZ2F0ZV9kaWdlc3QYBCABKAkSWwoRZGlmZl9jb21wbGV0ZW5lc3MYBSABKA4yNi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRGlmZkNvbXBsZXRlbmVzc0IIukgFggECEAESVwoSY29tbWFuZF9wcm92ZW5hbmNlGAYgASgLMjsuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlR1cm5Db21tYW5kUHJvdmVuYW5jZSJ7ChRGaWxlUmV2aWV3UmVjb25jaWxlZBIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJEkwKEWFwcHJvdmVkX3NuYXBzaG90GAIgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmIo8BChFGaWxlUmV2aWV3RmFpbHVyZRIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJElMKBGtpbmQYAiABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZVJldmlld0ZhaWx1cmVLaW5kQgi6SAWCAQIQARIOCgZkZXRhaWwYAyABKAki6QQKD0ZpbGVSZXZpZXdFdmVudBIQCghldmVudF9pZBgBIAEoCRIVCg1jaGFuZ2Vfc2V0X2lkGAIgASgJElcKCmV2ZW50X3R5cGUYAyABKA4yOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZVJldmlld0V2ZW50VHlwZUIIukgFggECEAESEQoJdGltZXN0YW1wGAQgASgJEg0KBWFjdG9yGAUgASgJEl0KEWJhc2VsaW5lX2NhcHR1cmVkGAYgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdCYXNlbGluZUNhcHR1cmVkSAASXwoSY2FuZGlkYXRlX2NhcHR1cmVkGAcgASgLMkEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdDYW5kaWRhdGVDYXB0dXJlZEgAEkoKDGZpbGVfZGVjaWRlZBgIIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25IABJQCgpyZWNvbmNpbGVkGAkgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdSZWNvbmNpbGVkSAASSQoGZmFpbGVkGAogASgLMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdGYWlsdXJlSABCCQoHcGF5bG9hZCJ0ChVGaWxlUmV2aWV3RXZlbnRTdHJlYW0SFAoMZXhlY3V0aW9uX2lkGAEgASgJEkUKBmV2ZW50cxgCIAMoCzI1LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlUmV2aWV3RXZlbnQi0wEKEkZpbGVDaGFuZ2VQcm9ncmVzcxIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJEhUKDWZpbGVzX2NoYW5nZWQYAiABKAUSEwoLbGluZXNfYWRkZWQYAyABKAUSFQoNbGluZXNfcmVtb3ZlZBgEIAEoBRJOCgdlbnRyaWVzGAUgAygLMj0uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVDaGFuZ2VQcm9ncmVzc0VudHJ5EhMKC2NhcHR1cmVkX2F0GAYgASgJIrwBChdGaWxlQ2hhbmdlUHJvZ3Jlc3NFbnRyeRITCgtwYXRoX2JlZm9yZRgBIAEoCRISCgpwYXRoX2FmdGVyGAIgASgJEkwKBGtpbmQYAyABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNoYW5nZUtpbmRCCLpIBYIBAhABEhMKC2xpbmVzX2FkZGVkGAQgASgFEhUKDWxpbmVzX3JlbW92ZWQYBSABKAViBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_message,file_buf_validate_validate]);var file_ai_stigmer_agentic_executioncontext_v1_spec=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9zcGVjLnByb3RvEiZhaS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MSLwAQoURXhlY3V0aW9uQ29udGV4dFNwZWMSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABElQKBGRhdGEYAiADKAsyRi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0U3BlYy5EYXRhRW50cnkaYwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRJFCgV2YWx1ZRgCIAEoCzI2LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvblZhbHVlOgI4ASIyCg5FeGVjdXRpb25WYWx1ZRINCgV2YWx1ZRgBIAEoCRIRCglpc19zZWNyZXQYAiABKAhiBnByb3RvMw",[file_buf_validate_validate]);var ExecutionValueSchema=messageDesc2(file_ai_stigmer_agentic_executioncontext_v1_spec,1);var file_ai_stigmer_agentic_session_v1_enum=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9lbnVtLnByb3RvEh1haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MSpZChBHaXRXcml0ZUJhY2tNb2RlEiMKH0dJVF9XUklURV9CQUNLX01PREVfVU5TUEVDSUZJRUQQABIgChxHSVRfV1JJVEVfQkFDS19CUkFOQ0hfQU5EX1BSEAEqSgoHSGFybmVzcxIXChNIQVJORVNTX1VOU1BFQ0lGSUVEEAASEgoOSEFSTkVTU19OQVRJVkUQARISCg5IQVJORVNTX0NVUlNPUhACKmsKD0V4ZWN1dGlvblRhcmdldBIgChxFWEVDVVRJT05fVEFSR0VUX1VOU1BFQ0lGSUVEEAASGgoWRVhFQ1VUSU9OX1RBUkdFVF9MT0NBTBABEhoKFkVYRUNVVElPTl9UQVJHRVRfQ0xPVUQQAipXCgpDdXJzb3JNb2RlEhsKF0NVUlNPUl9NT0RFX1VOU1BFQ0lGSUVEEAASFQoRQ1VSU09SX01PREVfTE9DQUwQARIVChFDVVJTT1JfTU9ERV9DTE9VRBACYgZwcm90bzM"),GitWriteBackMode;(function(GitWriteBackMode2){GitWriteBackMode2[GitWriteBackMode2.GIT_WRITE_BACK_MODE_UNSPECIFIED=0]="GIT_WRITE_BACK_MODE_UNSPECIFIED",GitWriteBackMode2[GitWriteBackMode2.GIT_WRITE_BACK_BRANCH_AND_PR=1]="GIT_WRITE_BACK_BRANCH_AND_PR"})(GitWriteBackMode||(GitWriteBackMode={}));var Harness;(function(Harness2){Harness2[Harness2.UNSPECIFIED=0]="UNSPECIFIED",Harness2[Harness2.NATIVE=1]="NATIVE",Harness2[Harness2.CURSOR=2]="CURSOR"})(Harness||(Harness={}));var ExecutionTarget;(function(ExecutionTarget2){ExecutionTarget2[ExecutionTarget2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionTarget2[ExecutionTarget2.LOCAL=1]="LOCAL",ExecutionTarget2[ExecutionTarget2.CLOUD=2]="CLOUD"})(ExecutionTarget||(ExecutionTarget={}));var CursorMode;(function(CursorMode2){CursorMode2[CursorMode2.UNSPECIFIED=0]="UNSPECIFIED",CursorMode2[CursorMode2.LOCAL=1]="LOCAL",CursorMode2[CursorMode2.CLOUD=2]="CLOUD"})(CursorMode||(CursorMode={}));var file_ai_stigmer_agentic_session_v1_workspace=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS93b3Jrc3BhY2UucHJvdG8SHWFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxIqoBCg9Xb3Jrc3BhY2VTb3VyY2USQAoIZ2l0X3JlcG8YASABKAsyLC5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5HaXRSZXBvU291cmNlSAASRAoKbG9jYWxfcGF0aBgCIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkxvY2FsUGF0aFNvdXJjZUgAQg8KBnNvdXJjZRIFukgCCAEibwoOV29ya3NwYWNlRW50cnkSFQoEbmFtZRgBIAEoCUIHukgEcgIQARJGCgZzb3VyY2UYAiABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5Xb3Jrc3BhY2VTb3VyY2VCBrpIA8gBASIoCg9Mb2NhbFBhdGhTb3VyY2USFQoEcGF0aBgBIAEoCUIHukgEcgIQASLIAgoNR2l0UmVwb1NvdXJjZRKlAQoDdXJsGAEgASgJQpcBukiTAboBjAEKGWdpdF9yZXBvX3NvdXJjZS51cmwuaHR0cHMSUnVybCBtdXN0IHVzZSBIVFRQUyAoZS5nLiBodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG8pLiBTU0ggVVJMcyBhcmUgbm90IHN1cHBvcnRlZC4aG3RoaXMuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKcgBARIOCgZicmFuY2gYAiABKAkSDgoGY29tbWl0GAMgASgJEhsKBWRlcHRoGAQgASgFQge6SAQaAigASACIAQESSAoPd3JpdGVfYmFja19tb2RlGAUgASgOMi8uYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuR2l0V3JpdGVCYWNrTW9kZUIICgZfZGVwdGhiBnByb3RvMw",[file_ai_stigmer_agentic_session_v1_enum,file_buf_validate_validate]);var file_ai_stigmer_agentic_session_v1_spec=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9zcGVjLnByb3RvEh1haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MSKWBwoLU2Vzc2lvblNwZWMSGQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAkSDwoHc3ViamVjdBgCIAEoCRIYChBoYXJuZXNzX3N0YXRlX2lkGAMgASgJEiAKGGhhcm5lc3Nfc3RhdGVfaWRfaGlzdG9yeRgNIAMoCRJKCghtZXRhZGF0YRgFIAMoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb25TcGVjLk1ldGFkYXRhRW50cnkSSAoRd29ya3NwYWNlX2VudHJpZXMYBiADKAsyLS5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5Xb3Jrc3BhY2VFbnRyeRLZAQoRbWNwX3NlcnZlcl91c2FnZXMYByADKAsyKy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuTWNwU2VydmVyVXNhZ2VCkAG6SIwBkgGIASKFAboBgQEKHnNlc3Npb25fbWNwX3NlcnZlcl91c2FnZXMua2luZBI/bWNwX3NlcnZlcl91c2FnZXMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1tY3Bfc2VydmVyGh50aGlzLm1jcF9zZXJ2ZXJfcmVmLmtpbmQgPT0gNDQSuAEKCnNraWxsX3JlZnMYCCADKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2VCbrpIZ5IBZCJiugFfChdzZXNzaW9uX3NraWxsX3JlZnMua2luZBIzc2tpbGxfcmVmcyBtdXN0IHJlZmVyZW5jZSByZXNvdXJjZXMgd2l0aCBraW5kPXNraWxsGg90aGlzLmtpbmQgPT0gNDPghSwrEjcKB2hhcm5lc3MYCiABKA4yJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5IYXJuZXNzEj4KC2N1cnNvcl9tb2RlGAsgASgOMikuYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuQ3Vyc29yTW9kZRJIChBleGVjdXRpb25fdGFyZ2V0GAwgASgOMi4uYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuRXhlY3V0aW9uVGFyZ2V0Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AWIGcHJvdG8z",[file_ai_stigmer_agentic_agent_v1_spec,file_ai_stigmer_agentic_session_v1_enum,file_ai_stigmer_agentic_session_v1_workspace,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]);var file_ai_stigmer_agentic_agentexecution_v1_spec=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvc3BlYy5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxItwIChJBZ2VudEV4ZWN1dGlvblNwZWMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghhZ2VudF9pZBgCIAEoCRJACgxzZXNzaW9uX3NwZWMYDSABKAsyKi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uU3BlYxIYCgdtZXNzYWdlGAMgASgJQge6SARyAhABEk8KEGV4ZWN1dGlvbl9jb25maWcYBCABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRXhlY3V0aW9uQ29uZmlnEl0KC3J1bnRpbWVfZW52GAUgAygLMkguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uU3BlYy5SdW50aW1lRW52RW50cnkSFgoOY2FsbGJhY2tfdG9rZW4YBiABKAwSGAoQYXV0b19hcHByb3ZlX2FsbBgHIAEoCBIaChJwYXJlbnRfd29ya2Zsb3dfaWQYCCABKAkSRQoLYXR0YWNobWVudHMYCSADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXR0YWNobWVudBIbChN3b3Jrc3BhY2VfZmlsZV9yZWZzGAogAygJEhsKE2FjdGl2aXR5X3Rhc2tfcXVldWUYCyABKAkSHwoXc3VwZXJzZWRlc19leGVjdXRpb25faWQYDCABKAkaaQoPUnVudGltZUVudkVudHJ5EgsKA2tleRgBIAEoCRJFCgV2YWx1ZRgCIAEoCzI2LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvblZhbHVlOgI4ATq4A7pItAMaywEKIWFnZW50X2V4ZWN1dGlvbi5zZXNzaW9uX2V4Y2x1c2l2ZRJyc2Vzc2lvbl9pZCBhbmQgc2Vzc2lvbl9zcGVjIGFyZSBtdXR1YWxseSBleGNsdXNpdmUg4oCUIHJlZmVyZW5jZSBhbiBleGlzdGluZyBzZXNzaW9uIG9yIGRlZmluZSBhIG5ldyBvbmUsIG5vdCBib3RoGjIhKHRoaXMuc2Vzc2lvbl9pZCAhPSAnJyAmJiBoYXModGhpcy5zZXNzaW9uX3NwZWMpKRrjAQoqYWdlbnRfZXhlY3V0aW9uLnNlc3Npb25fc3BlY19oYXJuZXNzX3N0YXRlEnBzZXNzaW9uX3NwZWMuaGFybmVzc19zdGF0ZV9pZCBtdXN0IGJlIGVtcHR5IOKAlCBoYXJuZXNzIHN0YXRlIGlzIGNyZWF0ZWQgYnkgdGhlIHJ1bm5lciBhZnRlciB0aGUgZmlyc3QgZXhlY3V0aW9uGkMhaGFzKHRoaXMuc2Vzc2lvbl9zcGVjKSB8fCB0aGlzLnNlc3Npb25fc3BlYy5oYXJuZXNzX3N0YXRlX2lkID09ICcnItIDCg9FeGVjdXRpb25Db25maWcSEgoKbW9kZWxfbmFtZRgBIAEoCRJZChJjb250ZXh0X21hbmFnZW1lbnQYAiABKAsyPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ29udGV4dE1hbmFnZW1lbnRDb25maWcSFwoPbWF4X3Rvb2xfcm91bmRzGAMgASgFEh0KFW1heF90b29sX3Jlc3VsdF9jaGFycxgEIAEoBRIUCgxtYXhfY29zdF91c2QYBSABKAESWQoQaW50ZXJhY3Rpb25fbW9kZRgGIAEoDjI1LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5JbnRlcmFjdGlvbk1vZGVCCLpIBYIBAhABEjkKGHN0cnVjdHVyZWRfb3V0cHV0X3NjaGVtYRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPYnVpbGRfZnJvbV9wbGFuGAggASgIElMKDWFwcHJvdmFsX21vZGUYCSABKA4yMi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXBwcm92YWxNb2RlQgi6SAWCAQIQASKKAQoXQ29udGV4dE1hbmFnZW1lbnRDb25maWcSHQoVZGlzYWJsZV9zdW1tYXJpemF0aW9uGAEgASgIEikKGGN1c3RvbV90cmlnZ2VyX3RocmVzaG9sZBgCIAEoBUIHukgEGgIoABIlChRjdXN0b21fdGFyZ2V0X3Rva2VucxgDIAEoBUIHukgEGgIoACKUAQoKQXR0YWNobWVudBIZCghmaWxlbmFtZRgBIAEoCUIHukgEcgIQARIcCgtzdG9yYWdlX2tleRgCIAEoCUIHukgEcgIQARISCgptb3VudF9wYXRoGAMgASgJEhQKDGNvbnRlbnRfdHlwZRgEIAEoCRIPCgdleHRyYWN0GAUgASgIEhIKCmxvY2FsX3BhdGgYBiABKAliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_executioncontext_v1_spec,file_ai_stigmer_agentic_session_v1_spec,file_buf_validate_validate,file_google_protobuf_struct]),AgentExecutionSpecSchema=messageDesc2(file_ai_stigmer_agentic_agentexecution_v1_spec,0);var ContextManagementConfigSchema=messageDesc2(file_ai_stigmer_agentic_agentexecution_v1_spec,2);var file_ai_stigmer_agentic_agentexecution_v1_todo=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvdG9kby5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIpEBCghUb2RvSXRlbRIKCgJpZBgBIAEoCRIPCgdjb250ZW50GAIgASgJEkAKBnN0YXR1cxgDIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Ub2RvU3RhdHVzEhIKCmNyZWF0ZWRfYXQYBCABKAkSEgoKdXBkYXRlZF9hdBgFIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_agentexecution_v1_enum]);var file_ai_stigmer_agentic_agentexecution_v1_subagent=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvc3ViYWdlbnQucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSKIBAoRU3ViQWdlbnRFeGVjdXRpb24SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVpbnB1dBgDIAEoCRIOCgZvdXRwdXQYBCABKAkSTgoGc3RhdHVzGAUgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlN1YkFnZW50U3RhdHVzQgi6SAWCAQIQARISCgpzdGFydGVkX2F0GAYgASgJEhQKDGNvbXBsZXRlZF9hdBgHIAEoCRINCgVlcnJvchgIIAEoCRIpCghtZXRhZGF0YRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSRAoIbWVzc2FnZXMYCyADKAsyMi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRNZXNzYWdlEg8KB3N1YmplY3QYDSABKAkSUQoFdG9kb3MYDiADKAsyQi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3ViQWdlbnRFeGVjdXRpb24uVG9kb3NFbnRyeRpcCgpUb2Rvc0VudHJ5EgsKA2tleRgBIAEoCRI9CgV2YWx1ZRgCIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Ub2RvSXRlbToCOAFiBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_message,file_ai_stigmer_agentic_agentexecution_v1_todo,file_buf_validate_validate,file_google_protobuf_struct]);var file_ai_stigmer_agentic_agentexecution_v1_writeback=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvd3JpdGViYWNrLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEimgIKEldvcmtzcGFjZVdyaXRlQmFjaxIcChR3b3Jrc3BhY2VfZW50cnlfbmFtZRgBIAEoCRITCgticmFuY2hfbmFtZRgCIAEoCRITCgtiYXNlX2JyYW5jaBgDIAEoCRISCgpjb21taXRfc2hhGAQgASgJEhgKEHB1bGxfcmVxdWVzdF91cmwYBSABKAkSGwoTcHVsbF9yZXF1ZXN0X251bWJlchgGIAEoBRIUCgxkaWZmX3N1bW1hcnkYByABKAkSTAoFcGhhc2UYCCABKA4yPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuV29ya3NwYWNlV3JpdGVCYWNrUGhhc2USDQoFZXJyb3IYCSABKAkq0AEKF1dvcmtzcGFjZVdyaXRlQmFja1BoYXNlEioKJldPUktTUEFDRV9XUklURV9CQUNLX1BIQVNFX1VOU1BFQ0lGSUVEEAASIgoeV09SS1NQQUNFX1dSSVRFX0JBQ0tfQ09NTUlUVEVEEAESHwobV09SS1NQQUNFX1dSSVRFX0JBQ0tfUFVTSEVEEAISIwofV09SS1NQQUNFX1dSSVRFX0JBQ0tfUFJfQ1JFQVRFRBADEh8KG1dPUktTUEFDRV9XUklURV9CQUNLX0ZBSUxFRBAEYgZwcm90bzM");var WorkspaceWriteBackPhase;(function(WorkspaceWriteBackPhase2){WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_PHASE_UNSPECIFIED=0]="WORKSPACE_WRITE_BACK_PHASE_UNSPECIFIED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_COMMITTED=1]="WORKSPACE_WRITE_BACK_COMMITTED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_PUSHED=2]="WORKSPACE_WRITE_BACK_PUSHED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_PR_CREATED=3]="WORKSPACE_WRITE_BACK_PR_CREATED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_FAILED=4]="WORKSPACE_WRITE_BACK_FAILED"})(WorkspaceWriteBackPhase||(WorkspaceWriteBackPhase={}));var file_ai_stigmer_agentic_agentexecution_v1_api=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvYXBpLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEiywIKDkFnZW50RXhlY3V0aW9uEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEiMKBGtpbmQYAiABKAlCFbpIEnIQCg5BZ2VudEV4ZWN1dGlvbhJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESRgoEc3BlYxgEIAEoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvblNwZWMSSgoGc3RhdHVzGAUgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uU3RhdHVzIpkMChRBZ2VudEV4ZWN1dGlvblN0YXR1cxI/CgVhdWRpdBhjIAEoCzIwLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0EkQKCG1lc3NhZ2VzGAEgAygLMjIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50TWVzc2FnZRJNCgVwaGFzZRgCIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25QaGFzZUIIukgFggECEAESVQoUc3ViX2FnZW50X2V4ZWN1dGlvbnMYBCADKAsyNy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3ViQWdlbnRFeGVjdXRpb24SDQoFZXJyb3IYBiABKAkSEgoKc3RhcnRlZF9hdBgHIAEoCRIUCgxjb21wbGV0ZWRfYXQYCCABKAkSVAoFdG9kb3MYCSADKAsyRS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb25TdGF0dXMuVG9kb3NFbnRyeRIWCg5jYWxsYmFja190b2tlbhgKIAEoDBJYChByZXNvbHZlZF9jb250ZXh0GAwgASgLMj4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlJlc29sdmVkRXhlY3V0aW9uQ29udGV4dBJQChFwZW5kaW5nX2FwcHJvdmFscxgQIAMoCzI1LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5QZW5kaW5nQXBwcm92YWwSWAoVYXBwcm92YWxfZXZlbnRfc3RyZWFtGBYgASgLMjkuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsRXZlbnRTdHJlYW0SRwoMY29udGV4dF9pbmZvGA4gASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkNvbnRleHRJbmZvEkoKCWFydGlmYWN0cxgPIAMoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25BcnRpZmFjdBJXChV3b3Jrc3BhY2Vfd3JpdGVfYmFja3MYESADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuV29ya3NwYWNlV3JpdGVCYWNrEksKDnNldHVwX3Byb2dyZXNzGBIgASgLMjMuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNldHVwUHJvZ3Jlc3MSVAoPc3RyZWFtaW5nX3VzYWdlGBQgASgLMjsuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlN0cmVhbWluZ1VzYWdlU3VtbWFyeRIyChFzdHJ1Y3R1cmVkX291dHB1dBgVIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSTQoQZmlsZV9jaGFuZ2Vfc2V0cxgXIAMoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ2hhbmdlU2V0El0KGGZpbGVfcmV2aWV3X2V2ZW50X3N0cmVhbRgYIAEoCzI7LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlUmV2aWV3RXZlbnRTdHJlYW0SVgoUZmlsZV9jaGFuZ2VfcHJvZ3Jlc3MYGSABKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNoYW5nZVByb2dyZXNzGlwKClRvZG9zRW50cnkSCwoDa2V5GAEgASgJEj0KBXZhbHVlGAIgASgLMi4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvZG9JdGVtOgI4ASImCg1TZXR1cFByb2dyZXNzEhUKDWN1cnJlbnRfcGhhc2UYASABKAliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_approval,file_ai_stigmer_agentic_agentexecution_v1_artifact,file_ai_stigmer_agentic_agentexecution_v1_context,file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_filereview,file_ai_stigmer_agentic_agentexecution_v1_message,file_ai_stigmer_agentic_agentexecution_v1_spec,file_ai_stigmer_agentic_agentexecution_v1_subagent,file_ai_stigmer_agentic_agentexecution_v1_todo,file_ai_stigmer_agentic_agentexecution_v1_usage,file_ai_stigmer_agentic_agentexecution_v1_writeback,file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_struct]),AgentExecutionSchema=messageDesc2(file_ai_stigmer_agentic_agentexecution_v1_api,0);var file_ai_stigmer_agentic_agentexecution_v1_io=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvaW8ucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSIpChBBZ2VudEV4ZWN1dGlvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiIgoJU2Vzc2lvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEicAoSQWdlbnRFeGVjdXRpb25MaXN0EhMKC3RvdGFsX3BhZ2VzGAEgASgFEkUKB2VudHJpZXMYAiADKAsyNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24ilgEKGkxpc3RBZ2VudEV4ZWN1dGlvbnNSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJEkMKBXBoYXNlGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblBoYXNlEgwKBHRhZ3MYBCADKAkiaAojTGlzdEFnZW50RXhlY3V0aW9uc0J5U2Vzc2lvblJlcXVlc3QSGgoKc2Vzc2lvbl9pZBgBIAEoCUIGukgDyAEBEhEKCXBhZ2Vfc2l6ZRgCIAEoBRISCgpwYWdlX3Rva2VuGAMgASgJIpQBCh9BZ2VudEV4ZWN1dGlvblVwZGF0ZVN0YXR1c0lucHV0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARJSCgZzdGF0dXMYAiABKAsyOi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb25TdGF0dXNCBrpIA8gBASJ7ChRVcGRhdGVTdGF0dXNSZXNwb25zZRJMCgZzaWduYWwYASABKA4yPC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRXhlY3V0aW9uQ29udHJvbFNpZ25hbBIVCg1zaWduYWxfcmVhc29uGAIgASgJIrwBChNTdWJtaXRBcHByb3ZhbElucHV0EiMKEmFnZW50X2V4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIdCgx0b29sX2NhbGxfaWQYAiABKAlCB7pIBHICEAESUAoGYWN0aW9uGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uQgq6SAeCAQQQASAAEg8KB2NvbW1lbnQYBCABKAkiZAoUQXBwcm92YWxEZWNpc2lvbkxpc3QSTAoJZGVjaXNpb25zGAEgAygLMjkuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlN1Ym1pdEFwcHJvdmFsSW5wdXQi9AIKF1N1Ym1pdEZpbGVEZWNpc2lvbklucHV0EiMKEmFnZW50X2V4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIeCg1jaGFuZ2Vfc2V0X2lkGAIgASgJQge6SARyAhABElIKBXNjb3BlGAMgASgOMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVEZWNpc2lvblNjb3BlQgq6SAeCAQQQASAAEhYKDmZpbGVfY2hhbmdlX2lkGAQgASgJElQKBmFjdGlvbhgFIAEoDjI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25BY3Rpb25CCrpIB4IBBBABIAASIAoPZXhwZWN0ZWRfZGlnZXN0GAYgASgJQge6SARyAhABEg4KBnJlYXNvbhgHIAEoCRIgChhhY2tub3dsZWRnZV91bnJldmlld2FibGUYCCABKAgiQAoZQ2FuY2VsQWdlbnRFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQARIOCgZyZWFzb24YAiABKAkiQwocVGVybWluYXRlQWdlbnRFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQARIOCgZyZWFzb24YAiABKAkiMQoaUmVjb3ZlckFnZW50RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAEiPwoYUGF1c2VBZ2VudEV4ZWN1dGlvbklucHV0EhMKAmlkGAEgASgJQge6SARyAhABEg4KBnJlYXNvbhgCIAEoCSIwChlSZXN1bWVBZ2VudEV4ZWN1dGlvbklucHV0EhMKAmlkGAEgASgJQge6SARyAhABImMKF1VwbG9hZEF0dGFjaG1lbnRSZXF1ZXN0EhkKCGZpbGVuYW1lGAEgASgJQge6SARyAhABEhcKB2NvbnRlbnQYAiABKAxCBrpIA8gBARIUCgxjb250ZW50X3R5cGUYAyABKAkiLwoYVXBsb2FkQXR0YWNobWVudFJlc3BvbnNlEhMKC3N0b3JhZ2Vfa2V5GAEgASgJInMKHUdldEFydGlmYWN0RG93bmxvYWRVcmxSZXF1ZXN0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIcCgtzdG9yYWdlX2tleRgCIAEoCUIHukgEcgIQARIVCg1hc19hdHRhY2htZW50GAMgASgIIkoKHkdldEFydGlmYWN0RG93bmxvYWRVcmxSZXNwb25zZRIUCgxkb3dubG9hZF91cmwYASABKAkSEgoKZXhwaXJlc19hdBgCIAEoCSJ/ChlHZXRBcnRpZmFjdENvbnRlbnRSZXF1ZXN0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIcCgtzdG9yYWdlX2tleRgCIAEoCUIHukgEcgIQARIRCgltYXhfYnl0ZXMYAyABKAMSEgoKZW50cnlfcGF0aBgEIAEoCSJwChpHZXRBcnRpZmFjdENvbnRlbnRSZXNwb25zZRIPCgdjb250ZW50GAEgASgMEhQKDGNvbnRlbnRfdHlwZRgCIAEoCRIYChB0b3RhbF9zaXplX2J5dGVzGAMgASgDEhEKCXRydW5jYXRlZBgEIAEoCCI9ChxHZXRFeGVjdXRpb25Vc2FnZVJlcG9ydElucHV0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQASK5AQodR2V0RXhlY3V0aW9uVXNhZ2VSZXBvcnRPdXRwdXQSTQoJYWdncmVnYXRlGAEgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlVzYWdlUmVwb3J0QWdncmVnYXRlEkkKD21vZGVsX2JyZWFrZG93bhgCIAMoCzIwLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Nb2RlbFVzYWdlIjkKGkdldFNlc3Npb25Vc2FnZVJlcG9ydElucHV0EhsKCnNlc3Npb25faWQYASABKAlCB7pIBHICEAEihAMKG0dldFNlc3Npb25Vc2FnZVJlcG9ydE91dHB1dBISCgpzZXNzaW9uX2lkGAEgASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgCIAEoBRJPCgt0b3RhbF91c2FnZRgDIAEoCzI6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Vc2FnZVJlcG9ydEFnZ3JlZ2F0ZRJPCgpleGVjdXRpb25zGAQgAygLMjsuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblVzYWdlU3VtbWFyeRJJCg9tb2RlbF9icmVha2Rvd24YBSADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuTW9kZWxVc2FnZRIaChJmaXJzdF9leGVjdXRpb25fYXQYBiABKAkSGQoRbGFzdF9leGVjdXRpb25fYXQYByABKAkSFAoMaXNfZXN0aW1hdGVkGAggASgIIoABChhHZXRBZ2VudFVzYWdlUmVwb3J0SW5wdXQSGQoIYWdlbnRfaWQYASABKAlCB7pIBHICEAESEQoJZnJvbV9kYXRlGAIgASgJEg8KB3RvX2RhdGUYAyABKAkSEQoJcGFnZV9zaXplGAQgASgFEhIKCnBhZ2VfdG9rZW4YBSABKAkimQMKGUdldEFnZW50VXNhZ2VSZXBvcnRPdXRwdXQSEAoIYWdlbnRfaWQYASABKAkSEgoKYWdlbnRfbmFtZRgCIAEoCRJPCgt0b3RhbF91c2FnZRgDIAEoCzI6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Vc2FnZVJlcG9ydEFnZ3JlZ2F0ZRJJCg9tb2RlbF9icmVha2Rvd24YBCADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuTW9kZWxVc2FnZRJLCghzZXNzaW9ucxgFIAMoCzI5LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5TZXNzaW9uVXNhZ2VTdW1tYXJ5EhYKDnRvdGFsX3Nlc3Npb25zGAYgASgFEhgKEHRvdGFsX2V4ZWN1dGlvbnMYByABKAUSIgoadG90YWxfYmlsbGFibGVfY29zdF9taWNyb3MYCCABKAMSFwoPbmV4dF9wYWdlX3Rva2VuGAkgASgJImcKFkdldE9yZ1VzYWdlUmVwb3J0SW5wdXQSFwoGb3JnX2lkGAEgASgJQge6SARyAhABEhoKCWZyb21fZGF0ZRgCIAEoCUIHukgEcgIQARIYCgd0b19kYXRlGAMgASgJQge6SARyAhABItUDChdHZXRPcmdVc2FnZVJlcG9ydE91dHB1dBIOCgZvcmdfaWQYASABKAkSFAoMdG90YWxfYWdlbnRzGAIgASgFEhYKDnRvdGFsX3Nlc3Npb25zGAMgASgFEhgKEHRvdGFsX2V4ZWN1dGlvbnMYBCABKAUSIgoadG90YWxfYmlsbGFibGVfY29zdF9taWNyb3MYBSABKAMSSQoPbW9kZWxfYnJlYWtkb3duGAYgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLk1vZGVsVXNhZ2USUwoSdG9wX2FnZW50c19ieV9jb3N0GAcgAygLMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50VXNhZ2VTdW1tYXJ5EkkKC2RhaWx5X2Nvc3RzGAggAygLMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkRhaWx5Q29zdEVudHJ5ElMKEWhhcm5lc3NfYnJlYWtkb3duGAkgAygLMjguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkhhcm5lc3NDb3N0U3VtbWFyeSLOAgoVRXhlY3V0aW9uVXNhZ2VTdW1tYXJ5EhQKDGV4ZWN1dGlvbl9pZBgBIAEoCRISCgpzdGFydGVkX2F0GAIgASgJEhQKDGNvbXBsZXRlZF9hdBgDIAEoCRIUCgxpbnB1dF90b2tlbnMYBCABKAMSFQoNb3V0cHV0X3Rva2VucxgFIAEoAxIfChdjYWNoZV9yZWFkX2lucHV0X3Rva2VucxgGIAEoAxIcChRiaWxsYWJsZV9jb3N0X21pY3JvcxgHIAEoAxIVCg1wcmltYXJ5X21vZGVsGAggASgJEhcKD3N1Yl9hZ2VudF9jb3VudBgJIAEoBRJDCgVwaGFzZRgKIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25QaGFzZRIUCgxpc19lc3RpbWF0ZWQYCyABKAgirQEKE1Nlc3Npb25Vc2FnZVN1bW1hcnkSEgoKc2Vzc2lvbl9pZBgBIAEoCRIXCg9leGVjdXRpb25fY291bnQYAiABKAUSFAoMdG90YWxfdG9rZW5zGAMgASgDEhwKFGJpbGxhYmxlX2Nvc3RfbWljcm9zGAQgASgDEhoKEmZpcnN0X2V4ZWN1dGlvbl9hdBgFIAEoCRIZChFsYXN0X2V4ZWN1dGlvbl9hdBgGIAEoCSKGAQoRQWdlbnRVc2FnZVN1bW1hcnkSEAoIYWdlbnRfaWQYASABKAkSEgoKYWdlbnRfbmFtZRgCIAEoCRIXCg9leGVjdXRpb25fY291bnQYAyABKAUSFAoMdG90YWxfdG9rZW5zGAQgASgDEhwKFGJpbGxhYmxlX2Nvc3RfbWljcm9zGAUgASgDImsKDkRhaWx5Q29zdEVudHJ5EgwKBGRhdGUYASABKAkSFwoPZXhlY3V0aW9uX2NvdW50GAIgASgFEhQKDHRvdGFsX3Rva2VucxgDIAEoAxIcChRiaWxsYWJsZV9jb3N0X21pY3JvcxgEIAEoAyJwChJIYXJuZXNzQ29zdFN1bW1hcnkSDwoHaGFybmVzcxgBIAEoCRIcChRiaWxsYWJsZV9jb3N0X21pY3JvcxgCIAEoAxISCgpjYWxsX2NvdW50GAMgASgFEhcKD2V4ZWN1dGlvbl9jb3VudBgEIAEoBSKTAQofR2V0QWdlbnRFeGVjdXRpb25TdW1tYXJ5UmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAESWgoLdGltZV93aW5kb3cYAiABKA4yRS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb25TdW1tYXJ5VGltZVdpbmRvdyLKAgoVQWdlbnRFeGVjdXRpb25TdW1tYXJ5EhQKDGFjdGl2ZV9jb3VudBgBIAEoBRJiCgxwaGFzZV9jb3VudHMYAiADKAsyTC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb25TdW1tYXJ5LlBoYXNlQ291bnRzRW50cnkSLwoMYXZnX2R1cmF0aW9uGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uElIKEnRvcF9mYWlsaW5nX2FnZW50cxgEIAMoCzI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEZhaWx1cmVSYW5rGjIKEFBoYXNlQ291bnRzRW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASJRChBBZ2VudEZhaWx1cmVSYW5rEhIKCmFnZW50X3NsdWcYASABKAkSEgoKYWdlbnRfbmFtZRgCIAEoCRIVCg1mYWlsdXJlX2NvdW50GAMgASgFKp0CCh9BZ2VudEV4ZWN1dGlvblN1bW1hcnlUaW1lV2luZG93EjMKL0FHRU5UX0VYRUNVVElPTl9TVU1NQVJZX1RJTUVfV0lORE9XX1VOU1BFQ0lGSUVEEAASMAosQUdFTlRfRVhFQ1VUSU9OX1NVTU1BUllfVElNRV9XSU5ET1dfTEFTVF8yNEgQARIvCitBR0VOVF9FWEVDVVRJT05fU1VNTUFSWV9USU1FX1dJTkRPV19MQVNUXzdEEAISMAosQUdFTlRfRVhFQ1VUSU9OX1NVTU1BUllfVElNRV9XSU5ET1dfTEFTVF8zMEQQAxIwCixBR0VOVF9FWEVDVVRJT05fU1VNTUFSWV9USU1FX1dJTkRPV19BTExfVElNRRAEYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_api,file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_usage,file_buf_validate_validate,file_google_protobuf_duration]);var AgentExecutionSummaryTimeWindow;(function(AgentExecutionSummaryTimeWindow2){AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.UNSPECIFIED=0]="UNSPECIFIED",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.LAST_24H=1]="LAST_24H",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.LAST_7D=2]="LAST_7D",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.LAST_30D=3]="LAST_30D",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.ALL_TIME=4]="ALL_TIME"})(AgentExecutionSummaryTimeWindow||(AgentExecutionSummaryTimeWindow={}));var file_ai_stigmer_agentic_agentexecution_v1_command=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvY29tbWFuZC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxMtMRCh9BZ2VudEV4ZWN1dGlvbkNvbW1hbmRDb250cm9sbGVyEnoKBmNyZWF0ZRI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbho0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiIE0LgYARKzAQoGdXBkYXRlEjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uGjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uIj3CuBg5CAIQKSILbWV0YWRhdGEuaWQqJnVuYXV0aG9yaXplZCB0byB1cGRhdGUgYWdlbnQgZXhlY3V0aW9uEtgBCgx1cGRhdGVTdGF0dXMSRS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb25VcGRhdGVTdGF0dXNJbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5VcGRhdGVTdGF0dXNSZXNwb25zZSJFwrgYQQgCECkiDGV4ZWN1dGlvbl9pZCotdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBhZ2VudCBleGVjdXRpb24gc3RhdHVzEqYBCgZkZWxldGUSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBo0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiI3wrgYMwgCECkiBXZhbHVlKiZ1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIGFnZW50IGV4ZWN1dGlvbhLUAQoOc3VibWl0QXBwcm92YWwSOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VibWl0QXBwcm92YWxJbnB1dBo0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiJRwrgYTQgCECkiEmFnZW50X2V4ZWN1dGlvbl9pZCozdW5hdXRob3JpemVkIHRvIHN1Ym1pdCBhcHByb3ZhbCBmb3IgYWdlbnQgZXhlY3V0aW9uEuEBChJzdWJtaXRGaWxlRGVjaXNpb24SPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VibWl0RmlsZURlY2lzaW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iVsK4GFIIAhApIhJhZ2VudF9leGVjdXRpb25faWQqOHVuYXV0aG9yaXplZCB0byBzdWJtaXQgZmlsZSBkZWNpc2lvbiBmb3IgYWdlbnQgZXhlY3V0aW9uErUBCgZjYW5jZWwSPy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ2FuY2VsQWdlbnRFeGVjdXRpb25JbnB1dBo0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiI0wrgYMAgCECkiAmlkKiZ1bmF1dGhvcml6ZWQgdG8gY2FuY2VsIGFnZW50IGV4ZWN1dGlvbhK+AQoJdGVybWluYXRlEkIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRlcm1pbmF0ZUFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iN8K4GDMIAhApIgJpZCopdW5hdXRob3JpemVkIHRvIHRlcm1pbmF0ZSBhZ2VudCBleGVjdXRpb24SuAEKB3JlY292ZXISQC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUmVjb3ZlckFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iNcK4GDEIAhApIgJpZCondW5hdXRob3JpemVkIHRvIHJlY292ZXIgYWdlbnQgZXhlY3V0aW9uErIBCgVwYXVzZRI+LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5QYXVzZUFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iM8K4GC8IAhApIgJpZColdW5hdXRob3JpemVkIHRvIHBhdXNlIGFnZW50IGV4ZWN1dGlvbhK1AQoGcmVzdW1lEj8uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlJlc3VtZUFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iNMK4GDAIAhApIgJpZComdW5hdXRob3JpemVkIHRvIHJlc3VtZSBhZ2VudCBleGVjdXRpb24SlwEKEHVwbG9hZEF0dGFjaG1lbnQSPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXBsb2FkQXR0YWNobWVudFJlcXVlc3QaPi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXBsb2FkQXR0YWNobWVudFJlc3BvbnNlIgTQuBgBGgSg/yspYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_api,file_ai_stigmer_agentic_agentexecution_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentExecutionCommandController=serviceDesc(file_ai_stigmer_agentic_agentexecution_v1_command,0);var file_ai_stigmer_agentic_agentexecution_v1_query=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvcXVlcnkucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MTL6EAodQWdlbnRFeGVjdXRpb25RdWVyeUNvbnRyb2xsZXISqQEKA2dldBI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbklkGjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uIjTCuBgwCAEQKSIFdmFsdWUqI3VuYXV0aG9yaXplZCB0byBnZXQgYWdlbnQgZXhlY3V0aW9uEogBCgRsaXN0EkAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkxpc3RBZ2VudEV4ZWN1dGlvbnNSZXF1ZXN0GjguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uTGlzdCIE0LgYARKaAQoNbGlzdEJ5U2Vzc2lvbhJJLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5MaXN0QWdlbnRFeGVjdXRpb25zQnlTZXNzaW9uUmVxdWVzdBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbkxpc3QiBNC4GAESugEKCXN1YnNjcmliZRI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbklkGjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uIj3CuBg5CAEQKSIFdmFsdWUqLHVuYXV0aG9yaXplZCB0byBzdWJzY3JpYmUgdG8gYWdlbnQgZXhlY3V0aW9uMAES8wEKFmdldEFydGlmYWN0RG93bmxvYWRVcmwSQy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QXJ0aWZhY3REb3dubG9hZFVybFJlcXVlc3QaRC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QXJ0aWZhY3REb3dubG9hZFVybFJlc3BvbnNlIk7CuBhKCAEQKSIMZXhlY3V0aW9uX2lkKjZ1bmF1dGhvcml6ZWQgdG8gZG93bmxvYWQgYXJ0aWZhY3QgZnJvbSBhZ2VudCBleGVjdXRpb24S6wEKEmdldEFydGlmYWN0Q29udGVudBI/LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5HZXRBcnRpZmFjdENvbnRlbnRSZXF1ZXN0GkAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldEFydGlmYWN0Q29udGVudFJlc3BvbnNlIlLCuBhOCAEQKSIMZXhlY3V0aW9uX2lkKjp1bmF1dGhvcml6ZWQgdG8gcmVhZCBhcnRpZmFjdCBjb250ZW50IGZyb20gYWdlbnQgZXhlY3V0aW9uEucBChdnZXRFeGVjdXRpb25Vc2FnZVJlcG9ydBJCLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5HZXRFeGVjdXRpb25Vc2FnZVJlcG9ydElucHV0GkMuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldEV4ZWN1dGlvblVzYWdlUmVwb3J0T3V0cHV0IkPCuBg/CAEQKSIMZXhlY3V0aW9uX2lkKit1bmF1dGhvcml6ZWQgdG8gdmlldyBleGVjdXRpb24gdXNhZ2UgcmVwb3J0Et0BChVnZXRTZXNzaW9uVXNhZ2VSZXBvcnQSQC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0U2Vzc2lvblVzYWdlUmVwb3J0SW5wdXQaQS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0U2Vzc2lvblVzYWdlUmVwb3J0T3V0cHV0Ij/CuBg7CAEQKiIKc2Vzc2lvbl9pZCopdW5hdXRob3JpemVkIHRvIHZpZXcgc2Vzc2lvbiB1c2FnZSByZXBvcnQSnAEKE2dldEFnZW50VXNhZ2VSZXBvcnQSPi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QWdlbnRVc2FnZVJlcG9ydElucHV0Gj8uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldEFnZW50VXNhZ2VSZXBvcnRPdXRwdXQiBNC4GAES0gEKEWdldE9yZ1VzYWdlUmVwb3J0EjwuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldE9yZ1VzYWdlUmVwb3J0SW5wdXQaPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0T3JnVXNhZ2VSZXBvcnRPdXRwdXQiQMK4GDwIARAeIgZvcmdfaWQqLnVuYXV0aG9yaXplZCB0byB2aWV3IG9yZ2FuaXphdGlvbiB1c2FnZSByZXBvcnQSnwEKE2dldEV4ZWN1dGlvblN1bW1hcnkSRS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QWdlbnRFeGVjdXRpb25TdW1tYXJ5UmVxdWVzdBo7LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvblN1bW1hcnkiBNC4GAEaBKD/KyliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_api,file_ai_stigmer_agentic_agentexecution_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentExecutionQueryController=serviceDesc(file_ai_stigmer_agentic_agentexecution_v1_query,0);var file_ai_stigmer_iam_iampolicy_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2lhbS9pYW1wb2xpY3kvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5pYW0uaWFtcG9saWN5LnYxIr4BCg1JYW1Qb2xpY3lTcGVjEkYKCXByaW5jaXBhbBgBIAEoCzIrLmFpLnN0aWdtZXIuaWFtLmlhbXBvbGljeS52MS5BcGlSZXNvdXJjZVJlZkIGukgDyAEBEkUKCHJlc291cmNlGAIgASgLMisuYWkuc3RpZ21lci5pYW0uaWFtcG9saWN5LnYxLkFwaVJlc291cmNlUmVmQga6SAPIAQESHgoIcmVsYXRpb24YAyABKAlCDLpICcgBAXIEEAEYQCJkCg5BcGlSZXNvdXJjZVJlZhIbCgRraW5kGAEgASgJQg26SArIAQFyBRABGIACEhkKAmlkGAIgASgJQg26SArIAQFyBRABGIACEhoKCHJlbGF0aW9uGAMgASgJQgi6SAVyAxiAAmIGcHJvdG8z",[file_buf_validate_validate]);var ApiResourceRefSchema=messageDesc2(file_ai_stigmer_iam_iampolicy_v1_spec,1);var file_ai_stigmer_agentic_datastore_v1_spec=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3NwZWMucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEi5gEKDURhdGFzdG9yZVNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSGQoIdGltZXpvbmUYAiABKAlCB7pIBHICGEASTgoNYXV0aG9yaXphdGlvbhgDIAEoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRGF0YXN0b3JlQXV0aG9yaXphdGlvbhJVCgtjb2xsZWN0aW9ucxgEIAMoCzI2LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuQ29sbGVjdGlvbkRlY2xhcmF0aW9uQgi6SAWSAQIQMiK/BAoVQ29sbGVjdGlvbkRlY2xhcmF0aW9uEisKBG5hbWUYASABKAlCHbpIGsgBAXIVGD8yEV5bYS16XVthLXowLTlfXSokEhMKC2Rlc2NyaXB0aW9uGAIgASgJEk0KBmZpZWxkcxgDIAMoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRmllbGREZWNsYXJhdGlvbkIKukgHkgEECAEQZBJMCgd1bmlxdWVzGAQgAygLMjEuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5VbmlxdWVDb25zdHJhaW50Qgi6SAWSAQIQFBJKCgZjaGVja3MYBSADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNoZWNrQ29uc3RyYWludEIIukgFkgECEBQSSwoGZXhpc3RzGAYgAygLMjEuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5FeGlzdHNDb25zdHJhaW50Qgi6SAWSAQIQFBJPCgpub3RfZXhpc3RzGAcgAygLMjEuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5FeGlzdHNDb25zdHJhaW50Qgi6SAWSAQIQFBJJCgZncmFudHMYCCADKAsyLy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZUdyYW50Qgi6SAWSAQIQFEoECAkQClIMc2VlZF9yZWNvcmRzItcEChBGaWVsZERlY2xhcmF0aW9uEoACCgRuYW1lGAEgASgJQvEBukjtAboBzwEKE2ZpZWxkLm5hbWUucmVzZXJ2ZWQSZ2ZpZWxkIG5hbWUgaXMgcmVzZXJ2ZWQgZm9yIHRoZSByZWNvcmQgZW52ZWxvcGUgKGlkLCBjcmVhdGVkX2F0LCB1cGRhdGVkX2F0LCBjcmVhdGVkX2J5LCBvcmcsIHBhcnRpdGlvbikaTyEodGhpcyBpbiBbJ2lkJywgJ2NyZWF0ZWRfYXQnLCAndXBkYXRlZF9hdCcsICdjcmVhdGVkX2J5JywgJ29yZycsICdwYXJ0aXRpb24nXSnIAQFyFRg/MhFeW2Etel1bYS16MC05X10qJBJFCgR0eXBlGAIgASgOMiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5GaWVsZFR5cGVCC7pICMgBAYIBAhABEhAKCHJlcXVpcmVkGAMgASgIEicKB2RlZmF1bHQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSHQoLZW51bV92YWx1ZXMYBSADKAlCCLpIBZIBAhBkEhMKC2Rlc2NyaXB0aW9uGAYgASgJOokBukiFARqCAQodZmllbGQuZW51bV92YWx1ZXMuc3RyaW5nX29ubHkSMWVudW1fdmFsdWVzIG1heSBvbmx5IGJlIGRlY2xhcmVkIG9uIHN0cmluZyBmaWVsZHMaLnRoaXMuZW51bV92YWx1ZXMuc2l6ZSgpID09IDAgfHwgdGhpcy50eXBlID09IDEirwEKEFVuaXF1ZUNvbnN0cmFpbnQSKwoEbmFtZRgBIAEoCUIdukgayAEBchUYPzIRXlthLXpdW2EtejAtOV9dKiQSGAoGZmllbGRzGAIgAygJQgi6SAWSAQIIARI7CgV3aGVyZRgDIAEoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuVW5pcXVlV2hlcmUSFwoHbWVzc2FnZRgEIAEoCUIGukgDyAEBIlQKC1VuaXF1ZVdoZXJlEhUKBWZpZWxkGAEgASgJQga6SAPIAQESLgoGZXF1YWxzGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQga6SAPIAQEigQEKD0NoZWNrQ29uc3RyYWludBIrCgRuYW1lGAEgASgJQh26SBrIAQFyFRg/MhFeW2Etel1bYS16MC05X10qJBIaCgpleHByZXNzaW9uGAIgASgJQga6SAPIAQESDAoEd2hlbhgDIAEoCRIXCgdtZXNzYWdlGAQgASgJQga6SAPIAQEimQEKEEV4aXN0c0NvbnN0cmFpbnQSKwoEbmFtZRgBIAEoCUIdukgayAEBchUYPzIRXlthLXpdW2EtejAtOV9dKiQSGgoKY29sbGVjdGlvbhgCIAEoCUIGukgDyAEBEhUKBXdoZXJlGAMgASgJQga6SAPIAQESDAoEd2hlbhgEIAEoCRIXCgdtZXNzYWdlGAUgASgJQga6SAPIAQEiywEKFkRhdGFzdG9yZUF1dGhvcml6YXRpb24SRwoFcm9sZXMYASADKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVJvbGVCCLpIBZIBAhAUElIKCGJpbmRpbmdzGAIgAygLMjUuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVSb2xlQmluZGluZ0IJukgGkgEDEMgBEhQKDGRlZmF1bHRfcm9sZRgDIAEoCSI8Cg1EYXRhc3RvcmVSb2xlEisKBG5hbWUYASABKAlCHbpIGsgBAXIVGD8yEV5bYS16XVthLXowLTlfXSokIngKFERhdGFzdG9yZVJvbGVCaW5kaW5nEkoKB3N1YmplY3QYASABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVN1YmplY3RCBrpIA8gBARIUCgRyb2xlGAIgASgJQga6SAPIAQEitAEKEERhdGFzdG9yZVN1YmplY3QSTwoOY2hhbm5lbF9zZW5kZXIYASABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNoYW5uZWxTZW5kZXJTdWJqZWN0SAASQAoJcHJpbmNpcGFsGAIgASgLMisuYWkuc3RpZ21lci5pYW0uaWFtcG9saWN5LnYxLkFwaVJlc291cmNlUmVmSABCDQoEa2luZBIFukgCCAEiSgoUQ2hhbm5lbFNlbmRlclN1YmplY3QSGwoLc2VuZGVyX2tpbmQYASABKAlCBrpIA8gBARIVCgV2YWx1ZRgCIAEoCUIGukgDyAEBIv8BCg5EYXRhc3RvcmVHcmFudBIUCgRyb2xlGAEgASgJQga6SAPIAQESUAoFdmVyYnMYAiADKA4yLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVZlcmJCEbpIDpIBCwgBIgeCAQQQASAAEk0KBXNjb3BlGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVHcmFudFNjb3BlQgi6SAWCAQIQARI2CgtyZWFkX2ZpZWxkcxgEIAMoCUIhukgekgEbEGQiF3IVGD8yEV5bYS16XVthLXowLTlfXSokKoMBCglGaWVsZFR5cGUSGgoWZmllbGRfdHlwZV91bnNwZWNpZmllZBAAEgoKBnN0cmluZxABEgsKB2ludGVnZXIQAhIKCgZudW1iZXIQAxIICgRib29sEAQSDQoJdGltZXN0YW1wEAUSCAoEZGF0ZRAGEggKBHRpbWUQBxIICgRqc29uEAgqXQoNRGF0YXN0b3JlVmVyYhIeChpkYXRhc3RvcmVfdmVyYl91bnNwZWNpZmllZBAAEggKBHJlYWQQARIKCgZpbnNlcnQQAhIKCgZ1cGRhdGUQAxIKCgZkZWxldGUQBCpOChNEYXRhc3RvcmVHcmFudFNjb3BlEiUKIWRhdGFzdG9yZV9ncmFudF9zY29wZV91bnNwZWNpZmllZBAAEgcKA2FsbBABEgcKA293bhACYgZwcm90bzM",[file_ai_stigmer_iam_iampolicy_v1_spec,file_buf_validate_validate,file_google_protobuf_struct]),DatastoreSpecSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,0),CollectionDeclarationSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,1),FieldDeclarationSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,2),UniqueConstraintSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,3),UniqueWhereSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,4),CheckConstraintSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,5),ExistsConstraintSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,6),DatastoreAuthorizationSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,7),DatastoreRoleSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,8),DatastoreRoleBindingSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,9),DatastoreSubjectSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,10),ChannelSenderSubjectSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,11),DatastoreGrantSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,12),FieldType;(function(FieldType2){FieldType2[FieldType2.field_type_unspecified=0]="field_type_unspecified",FieldType2[FieldType2.string=1]="string",FieldType2[FieldType2.integer=2]="integer",FieldType2[FieldType2.number=3]="number",FieldType2[FieldType2.bool=4]="bool",FieldType2[FieldType2.timestamp=5]="timestamp",FieldType2[FieldType2.date=6]="date",FieldType2[FieldType2.time=7]="time",FieldType2[FieldType2.json=8]="json"})(FieldType||(FieldType={}));var DatastoreVerb;(function(DatastoreVerb2){DatastoreVerb2[DatastoreVerb2.datastore_verb_unspecified=0]="datastore_verb_unspecified",DatastoreVerb2[DatastoreVerb2.read=1]="read",DatastoreVerb2[DatastoreVerb2.insert=2]="insert",DatastoreVerb2[DatastoreVerb2.update=3]="update",DatastoreVerb2[DatastoreVerb2.delete=4]="delete"})(DatastoreVerb||(DatastoreVerb={}));var DatastoreGrantScope;(function(DatastoreGrantScope2){DatastoreGrantScope2[DatastoreGrantScope2.datastore_grant_scope_unspecified=0]="datastore_grant_scope_unspecified",DatastoreGrantScope2[DatastoreGrantScope2.all=1]="all",DatastoreGrantScope2[DatastoreGrantScope2.own=2]="own"})(DatastoreGrantScope||(DatastoreGrantScope={}));var file_ai_stigmer_agentic_datastore_v1_status=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3N0YXR1cy5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MSKgAgoPRGF0YXN0b3JlU3RhdHVzElAKEWxhc3Rfc3luY19vdXRjb21lGAEgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVTeW5jT3V0Y29tZRIyCg5sYXN0X3N5bmNlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRgoLY29sbGVjdGlvbnMYAyADKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbGxlY3Rpb25TdGF0dXMSPwoFYXVkaXQYYyABKAsyMC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VBdWRpdCLVAQoQQ29sbGVjdGlvblN0YXR1cxIMCgRuYW1lGAEgASgJEk4KBXN0YXRlGAIgASgOMj8uYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5Db2xsZWN0aW9uTWF0ZXJpYWxpemF0aW9uU3RhdGUSFAoMcmVjb3JkX2NvdW50GAMgASgDEjMKD21hdGVyaWFsaXplZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBKBAgEEAVSEmlnbm9yZWRfc2VlZF9jb3VudCpYChREYXRhc3RvcmVTeW5jT3V0Y29tZRImCiJkYXRhc3RvcmVfc3luY19vdXRjb21lX3Vuc3BlY2lmaWVkEAASCgoGc3luY2VkEAESDAoIcmVqZWN0ZWQQAip4Ch5Db2xsZWN0aW9uTWF0ZXJpYWxpemF0aW9uU3RhdGUSMAosY29sbGVjdGlvbl9tYXRlcmlhbGl6YXRpb25fc3RhdGVfdW5zcGVjaWZpZWQQABILCgdwZW5kaW5nEAESCgoGYWN0aXZlEAISCwoHcmVtb3ZlZBADYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_status,file_google_protobuf_timestamp]);var DatastoreSyncOutcome;(function(DatastoreSyncOutcome2){DatastoreSyncOutcome2[DatastoreSyncOutcome2.datastore_sync_outcome_unspecified=0]="datastore_sync_outcome_unspecified",DatastoreSyncOutcome2[DatastoreSyncOutcome2.synced=1]="synced",DatastoreSyncOutcome2[DatastoreSyncOutcome2.rejected=2]="rejected"})(DatastoreSyncOutcome||(DatastoreSyncOutcome={}));var CollectionMaterializationState;(function(CollectionMaterializationState2){CollectionMaterializationState2[CollectionMaterializationState2.collection_materialization_state_unspecified=0]="collection_materialization_state_unspecified",CollectionMaterializationState2[CollectionMaterializationState2.pending=1]="pending",CollectionMaterializationState2[CollectionMaterializationState2.active=2]="active",CollectionMaterializationState2[CollectionMaterializationState2.removed=3]="removed"})(CollectionMaterializationState||(CollectionMaterializationState={}));var file_ai_stigmer_agentic_datastore_v1_api=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL2FwaS5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MSKtAgoJRGF0YXN0b3JlEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh4KBGtpbmQYAiABKAlCELpIDXILCglEYXRhc3RvcmUSTQoIbWV0YWRhdGEYAyABKAsyMy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YUIGukgDyAEBEjwKBHNwZWMYBCABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVNwZWMSQAoGc3RhdHVzGAUgASgLMjAuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVTdGF0dXNiBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_spec,file_ai_stigmer_agentic_datastore_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),DatastoreSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_api,0);var file_ai_stigmer_agentic_datastore_v1_command=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL2NvbW1hbmQucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEytQYKGkRhdGFzdG9yZUNvbW1hbmRDb250cm9sbGVyEl8KBWFwcGx5EiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZRKvAQoGY3JlYXRlEiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZSJNwrgYSQgiEB4iDG1ldGFkYXRhLm9yZyo1dW5hdXRob3JpemVkIHRvIGNyZWF0ZSBkYXRhc3RvcmUgaW4gdGhpcyBvcmdhbml6YXRpb24SmQEKBnVwZGF0ZRIqLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRGF0YXN0b3JlGiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUiN8K4GDMIAhAxIgttZXRhZGF0YS5pZCogdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBkYXRhc3RvcmUSuQEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUiQsK4GD4IAhAxIgtyZXNvdXJjZV9pZCordW5hdXRob3JpemVkIHRvIHVwZGF0ZSBkYXRhc3RvcmUgdmlzaWJpbGl0eRKlAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZSI3wrgYMwgCEDEiC3Jlc291cmNlX2lkKiB1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIGRhdGFzdG9yZRoEoP8rMWIGcHJvdG8z",[file_ai_stigmer_agentic_datastore_v1_api,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreCommandController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_command,0);var file_ai_stigmer_agentic_datastore_v1_io=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL2lvLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxIuUBChVMaXN0RGF0YXN0b3Jlc1JlcXVlc3QSFAoDb3JnGAEgASgJQge6SARyAhABElIKBmxhYmVscxgCIAMoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuTGlzdERhdGFzdG9yZXNSZXF1ZXN0LkxhYmVsc0VudHJ5EjMKCXBhZ2VfaW5mbxgDIAEoCzIgLmFpLnN0aWdtZXIuY29tbW9ucy5ycGMuUGFnZUluZm8aLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJfCg1EYXRhc3RvcmVMaXN0EhMKC3RvdGFsX2NvdW50GAEgASgFEjkKBWl0ZW1zGAIgAygLMiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmViBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_api,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]);var file_ai_stigmer_agentic_datastore_v1_query=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3F1ZXJ5LnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxMqMDChhEYXRhc3RvcmVRdWVyeUNvbnRyb2xsZXISkAEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUiLsK4GCoIARAxIgV2YWx1ZSoddW5hdXRob3JpemVkIHRvIGdldCBkYXRhc3RvcmUSeAoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZSIE0LgYARJ0CgRsaXN0EjYuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5MaXN0RGF0YXN0b3Jlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZUxpc3QiBNC4GAEaBKD/KzFiBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_api,file_ai_stigmer_agentic_datastore_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreQueryController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_query,0);var file_ai_stigmer_agentic_datastore_v1_record_io=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3JlY29yZF9pby5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MSLsAQoOUmVjb3JkRW52ZWxvcGUSCgoCaWQYASABKAkSLgoKY3JlYXRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRQoKY3JlYXRlZF9ieRgEIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRGF0YXN0b3JlU3ViamVjdBInCgZmaWVsZHMYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0InwKClJlY29yZExpc3QSQAoHcmVjb3JkcxgBIAMoCzIvLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkRW52ZWxvcGUSDQoFdG90YWwYAiABKAUSDQoFbGltaXQYAyABKAUSDgoGb2Zmc2V0GAQgASgFIl4KDFJlY29yZEZpbHRlchJOCgpjb25kaXRpb25zGAEgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5SZWNvcmRDb25kaXRpb25CCLpIBZIBAhAUIs4BCg9SZWNvcmRDb25kaXRpb24SFQoFZmllbGQYASABKAlCBrpIA8gBARJLCgJvcBgCIAEoDjIyLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkQ29uZGl0aW9uT3BCC7pICMgBAYIBAhABEiUKBXZhbHVlGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjAKBnZhbHVlcxgEIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIIukgFkgECEGQieQoNUmVjb3JkT3JkZXJCeRIVCgVmaWVsZBgBIAEoCUIGukgDyAEBElEKCWRpcmVjdGlvbhgCIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkU29ydERpcmVjdGlvbkIIukgFggECEAEizwIKEkZpbmRSZWNvcmRzUmVxdWVzdBIZCglkYXRhc3RvcmUYASABKAlCBrpIA8gBARIaCgpjb2xsZWN0aW9uGAIgASgJQga6SAPIAQESPQoGZmlsdGVyGAMgASgLMi0uYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5SZWNvcmRGaWx0ZXISQAoIb3JkZXJfYnkYBCABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlJlY29yZE9yZGVyQnkSGAoFbGltaXQYBSABKAVCCbpIBhoEGGQoABIXCgZvZmZzZXQYBiABKAVCB7pIBBoCKAASOAoJcGFydGl0aW9uGAcgASgJQiW6SCJyIBg/MhxeJHxeW2Etel1bYS16MC05LV0qW2EtejAtOV0kEhQKA29yZxgIIAEoCUIHukgEcgIYPyLNAQoTSW5zZXJ0UmVjb3JkUmVxdWVzdBIZCglkYXRhc3RvcmUYASABKAlCBrpIA8gBARIaCgpjb2xsZWN0aW9uGAIgASgJQga6SAPIAQESLwoGcmVjb3JkGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIGukgDyAEBEjgKCXBhcnRpdGlvbhgEIAEoCUIlukgiciAYPzIcXiR8XlthLXpdW2EtejAtOS1dKlthLXowLTldJBIUCgNvcmcYBSABKAlCB7pIBHICGD8i4QEKE1VwZGF0ZVJlY29yZFJlcXVlc3QSGQoJZGF0YXN0b3JlGAEgASgJQga6SAPIAQESGgoKY29sbGVjdGlvbhgCIAEoCUIGukgDyAEBEhIKAmlkGAMgASgJQga6SAPIAQESLwoGZmllbGRzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIGukgDyAEBEjgKCXBhcnRpdGlvbhgFIAEoCUIlukgiciAYPzIcXiR8XlthLXpdW2EtejAtOS1dKlthLXowLTldJBIUCgNvcmcYBiABKAlCB7pIBHICGD8isAEKE0RlbGV0ZVJlY29yZFJlcXVlc3QSGQoJZGF0YXN0b3JlGAEgASgJQga6SAPIAQESGgoKY29sbGVjdGlvbhgCIAEoCUIGukgDyAEBEhIKAmlkGAMgASgJQga6SAPIAQESOAoJcGFydGl0aW9uGAQgASgJQiW6SCJyIBg/MhxeJHxeW2Etel1bYS16MC05LV0qW2EtejAtOV0kEhQKA29yZxgFIAEoCUIHukgEcgIYPyJLChhEZXNjcmliZURhdGFzdG9yZVJlcXVlc3QSGQoJZGF0YXN0b3JlGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhg/IrEBChREYXRhc3RvcmVEZXNjcmlwdGlvbhIRCglkYXRhc3RvcmUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEAoIdGltZXpvbmUYAyABKAkSSwoLY29sbGVjdGlvbnMYBCADKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbGxlY3Rpb25EZXNjcmlwdGlvbhISCgpwYXJ0aXRpb25zGAUgAygJIpECChVDb2xsZWN0aW9uRGVzY3JpcHRpb24SDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRJBCgZmaWVsZHMYAyADKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkZpZWxkRGVjbGFyYXRpb24SSwoLY29uc3RyYWludHMYBCADKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbnN0cmFpbnREZXNjcmlwdGlvbhJFCgZhY2Nlc3MYBSADKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlZlcmJHcmFudERlc2NyaXB0aW9uInUKFUNvbnN0cmFpbnREZXNjcmlwdGlvbhIMCgRuYW1lGAEgASgJEj0KBGtpbmQYAiABKA4yLy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbnN0cmFpbnRLaW5kEg8KB21lc3NhZ2UYAyABKAkigAEKFFZlcmJHcmFudERlc2NyaXB0aW9uEjwKBHZlcmIYASABKA4yLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVZlcmISEQoJb3duX3Njb3BlGAIgASgIEhcKD3JlYWRhYmxlX2ZpZWxkcxgDIAMoCSqdAQoRUmVjb3JkQ29uZGl0aW9uT3ASIwofcmVjb3JkX2NvbmRpdGlvbl9vcF91bnNwZWNpZmllZBAAEgYKAmVxEAESBwoDbmVxEAISBgoCZ3QQAxIHCgNndGUQBBIGCgJsdBAFEgcKA2x0ZRAGEgkKBWlzX2luEAcSCgoGbm90X2luEAgSCwoHaXNfbnVsbBAJEgwKCG5vdF9udWxsEAoqTwoTUmVjb3JkU29ydERpcmVjdGlvbhIlCiFyZWNvcmRfc29ydF9kaXJlY3Rpb25fdW5zcGVjaWZpZWQQABIHCgNhc2MQARIICgRkZXNjEAIqZAoOQ29uc3RyYWludEtpbmQSHwobY29uc3RyYWludF9raW5kX3Vuc3BlY2lmaWVkEAASCgoGdW5pcXVlEAESCQoFY2hlY2sQAhIKCgZleGlzdHMQAxIOCgpub3RfZXhpc3RzEARiBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_spec,file_buf_validate_validate,file_google_protobuf_struct,file_google_protobuf_timestamp]),RecordEnvelopeSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,0),RecordListSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,1),RecordFilterSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,2),RecordConditionSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,3),RecordOrderBySchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,4),FindRecordsRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,5),InsertRecordRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,6),UpdateRecordRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,7),DeleteRecordRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,8),DescribeDatastoreRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,9),DatastoreDescriptionSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,10);var RecordConditionOp;(function(RecordConditionOp2){RecordConditionOp2[RecordConditionOp2.record_condition_op_unspecified=0]="record_condition_op_unspecified",RecordConditionOp2[RecordConditionOp2.eq=1]="eq",RecordConditionOp2[RecordConditionOp2.neq=2]="neq",RecordConditionOp2[RecordConditionOp2.gt=3]="gt",RecordConditionOp2[RecordConditionOp2.gte=4]="gte",RecordConditionOp2[RecordConditionOp2.lt=5]="lt",RecordConditionOp2[RecordConditionOp2.lte=6]="lte",RecordConditionOp2[RecordConditionOp2.is_in=7]="is_in",RecordConditionOp2[RecordConditionOp2.not_in=8]="not_in",RecordConditionOp2[RecordConditionOp2.is_null=9]="is_null",RecordConditionOp2[RecordConditionOp2.not_null=10]="not_null"})(RecordConditionOp||(RecordConditionOp={}));var RecordSortDirection;(function(RecordSortDirection2){RecordSortDirection2[RecordSortDirection2.record_sort_direction_unspecified=0]="record_sort_direction_unspecified",RecordSortDirection2[RecordSortDirection2.asc=1]="asc",RecordSortDirection2[RecordSortDirection2.desc=2]="desc"})(RecordSortDirection||(RecordSortDirection={}));var ConstraintKind;(function(ConstraintKind2){ConstraintKind2[ConstraintKind2.constraint_kind_unspecified=0]="constraint_kind_unspecified",ConstraintKind2[ConstraintKind2.unique=1]="unique",ConstraintKind2[ConstraintKind2.check=2]="check",ConstraintKind2[ConstraintKind2.exists=3]="exists",ConstraintKind2[ConstraintKind2.not_exists=4]="not_exists"})(ConstraintKind||(ConstraintKind={}));var file_ai_stigmer_agentic_datastore_v1_record_command=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3JlY29yZF9jb21tYW5kLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxMp8DCiBEYXRhc3RvcmVSZWNvcmRDb21tYW5kQ29udHJvbGxlchJ7CgxpbnNlcnRSZWNvcmQSNC5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkluc2VydFJlY29yZFJlcXVlc3QaLy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlJlY29yZEVudmVsb3BlIgTQuBgBEnsKDHVwZGF0ZVJlY29yZBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuVXBkYXRlUmVjb3JkUmVxdWVzdBovLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkRW52ZWxvcGUiBNC4GAESewoMZGVsZXRlUmVjb3JkEjQuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EZWxldGVSZWNvcmRSZXF1ZXN0Gi8uYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5SZWNvcmRFbnZlbG9wZSIE0LgYARoEoP8rMWIGcHJvdG8z",[file_ai_stigmer_agentic_datastore_v1_record_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreRecordCommandController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_record_command,0);var file_ai_stigmer_agentic_datastore_v1_record_query=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3JlY29yZF9xdWVyeS5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MTKrAgoeRGF0YXN0b3JlUmVjb3JkUXVlcnlDb250cm9sbGVyEnUKC2ZpbmRSZWNvcmRzEjMuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5GaW5kUmVjb3Jkc1JlcXVlc3QaKy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlJlY29yZExpc3QiBNC4GAESiwEKEWRlc2NyaWJlRGF0YXN0b3JlEjkuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EZXNjcmliZURhdGFzdG9yZVJlcXVlc3QaNS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZURlc2NyaXB0aW9uIgTQuBgBGgSg/ysxYgZwcm90bzM",[file_ai_stigmer_agentic_datastore_v1_record_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreRecordQueryController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_record_query,0);var file_ai_stigmer_agentic_environment_v1_api=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvYXBpLnByb3RvEiFhaS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEiuwIKC0Vudmlyb25tZW50EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEiAKBGtpbmQYAiABKAlCErpID3INCgtFbnZpcm9ubWVudBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESQAoEc3BlYxgEIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFNwZWMSRgoGc3RhdHVzGAUgASgLMjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRTdGF0dXNiBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate]),EnvironmentSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_api,0);var file_ai_stigmer_agentic_environment_v1_io=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvaW8ucHJvdG8SIWFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MSImCg1FbnZpcm9ubWVudElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiVAobRW52aXJvbm1lbnRTZWNyZXRWYWx1ZUlucHV0Eh8KDmVudmlyb25tZW50X2lkGAEgASgJQge6SARyAhABEhQKA2tleRgCIAEoCUIHukgEcgIQASLrAQoXTGlzdEVudmlyb25tZW50c1JlcXVlc3QSFAoDb3JnGAEgASgJQge6SARyAhABElYKBmxhYmVscxgCIAMoCzJGLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5MaXN0RW52aXJvbm1lbnRzUmVxdWVzdC5MYWJlbHNFbnRyeRIzCglwYWdlX2luZm8YAyABKAsyIC5haS5zdGlnbWVyLmNvbW1vbnMucnBjLlBhZ2VJbmZvGi0KC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiZQoPRW52aXJvbm1lbnRMaXN0EhMKC3RvdGFsX2NvdW50GAEgASgFEj0KBWl0ZW1zGAIgAygLMi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IpMCCiFVcGRhdGVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QSHwoOZW52aXJvbm1lbnRfaWQYASABKAlCB7pIBHICEAESZgoJdmFyaWFibGVzGAIgAygLMlMuYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLlVwZGF0ZUVudmlyb25tZW50VmFyaWFibGVzUmVxdWVzdC5WYXJpYWJsZXNFbnRyeRplCg5WYXJpYWJsZXNFbnRyeRILCgNrZXkYASABKAkSQgoFdmFsdWUYAiABKAsyMy5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnRWYWx1ZToCOAEiXAohUmVtb3ZlRW52aXJvbm1lbnRWYXJpYWJsZXNSZXF1ZXN0Eh8KDmVudmlyb25tZW50X2lkGAEgASgJQge6SARyAhABEhYKBGtleXMYAiADKAlCCLpIBZIBAggBYgZwcm90bzM",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]);var file_ai_stigmer_agentic_environment_v1_command=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvY29tbWFuZC5wcm90bxIhYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxMoMKChxFbnZpcm9ubWVudENvbW1hbmRDb250cm9sbGVyEmcKBWFwcGx5Ei4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50ErkBCgZjcmVhdGUSLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiT8K4GEsIDBAeIgxtZXRhZGF0YS5vcmcqN3VuYXV0aG9yaXplZCB0byBjcmVhdGUgZW52aXJvbm1lbnQgaW4gdGhpcyBvcmdhbml6YXRpb24SowEKBnVwZGF0ZRIuLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCI5wrgYNQgCEDUiC21ldGFkYXRhLmlkKiJ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50Er8BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCJEwrgYQAgCEDUiC3Jlc291cmNlX2lkKi11bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50IHZpc2liaWxpdHkSqwEKBmRlbGV0ZRI2LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZURlbGV0ZUlucHV0Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjnCuBg1CAIQNSILcmVzb3VyY2VfaWQqInVuYXV0aG9yaXplZCB0byBkZWxldGUgZW52aXJvbm1lbnQSzwEKD3VwZGF0ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5VcGRhdGVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMSzwEKD3JlbW92ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5SZW1vdmVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHJlbW92ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentCommandController=serviceDesc(file_ai_stigmer_agentic_environment_v1_command,0);var file_ai_stigmer_agentic_environment_v1_query=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvcXVlcnkucHJvdG8SIWFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MTKMBQoaRW52aXJvbm1lbnRRdWVyeUNvbnRyb2xsZXISlgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjDCuBgsCAEQNSIFdmFsdWUqH3VuYXV0aG9yaXplZCB0byBnZXQgZW52aXJvbm1lbnQSfAoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiBNC4GAES0gEKDmdldFNlY3JldFZhbHVlEj4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50U2VjcmV0VmFsdWVJbnB1dBozLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFZhbHVlIkvCuBhHCBAQNSIOZW52aXJvbm1lbnRfaWQqMXVuYXV0aG9yaXplZCB0byByZWFkIHNlY3JldCB2YWx1ZXMgKGNyZWF0b3Itb25seSkSfAoEbGlzdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5MaXN0RW52aXJvbm1lbnRzUmVxdWVzdBoyLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudExpc3QiBNC4GAEaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentQueryController=serviceDesc(file_ai_stigmer_agentic_environment_v1_query,0);var file_ai_stigmer_agentic_mcpserver_v1_spec=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3NwZWMucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEi6QQKDU1jcFNlcnZlclNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSEAoIaWNvbl91cmwYAiABKAkSDAoEdGFncxgDIAMoCRJDCgVzdGRpbxgEIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuU3RkaW9TZXJ2ZXJDb25maWdIABJBCgRodHRwGAUgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5IdHRwU2VydmVyQ29uZmlnSAASHQoVZGVmYXVsdF9lbmFibGVkX3Rvb2xzGAcgAygJEkQKA2VudhgIIAMoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyU3BlYy5FbnZFbnRyeRJSChVwaW5uZWRfdG9vbF9hcHByb3ZhbHMYCyADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlRvb2xBcHByb3ZhbFBvbGljeRIWCg5yZXBvc2l0b3J5X3VybBgMIAEoCRIUCgxnaXRodWJfc3RhcnMYDSABKAUSPAoEYXV0aBgOIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyQXV0aBpgCghFbnZFbnRyeRILCgNrZXkYASABKAkSQwoFdmFsdWUYAiABKAsyNC5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52VmFyRGVjbGFyYXRpb246AjgBQhQKC3NlcnZlcl90eXBlEgW6SAIIASJPChFTdGRpb1NlcnZlckNvbmZpZxIXCgdjb21tYW5kGAEgASgJQga6SAPIAQESDAoEYXJncxgCIAMoCRITCgt3b3JraW5nX2RpchgDIAEoCSLgAgoQSHR0cFNlcnZlckNvbmZpZxIYCgN1cmwYASABKAlCC7pICMgBAXIDiAEBEk8KB2hlYWRlcnMYAiADKAsyPi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkh0dHBTZXJ2ZXJDb25maWcuSGVhZGVyc0VudHJ5ElgKDHF1ZXJ5X3BhcmFtcxgDIAMoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuSHR0cFNlcnZlckNvbmZpZy5RdWVyeVBhcmFtc0VudHJ5EiMKD3RpbWVvdXRfc2Vjb25kcxgEIAEoBUIKukgHGgUYrAIoABouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoyChBRdWVyeVBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiYAoSVG9vbEFwcHJvdmFsUG9saWN5EhoKCXRvb2xfbmFtZRgBIAEoCUIHukgEcgIQARIPCgdtZXNzYWdlGAIgASgJEh0KFWZyb21fZGVzdHJ1Y3RpdmVfaGludBgDIAEoCCL0AgoNTWNwU2VydmVyQXV0aBLMAQoNb2F1dGhfYXBwX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUJ/ukh4ugF1ChJvYXV0aF9hcHBfcmVmLmtpbmQSO29hdXRoX2FwcF9yZWYgbXVzdCByZWZlcmVuY2UgYSByZXNvdXJjZSB3aXRoIGtpbmQ9b2F1dGhfYXBwGiJ0aGlzLnNsdWcgPT0gJycgfHwgdGhpcy5raW5kID09IDIy4IUsFhIfCg50YXJnZXRfZW52X3ZhchgCIAEoCUIHukgEcgIQARIbChN0b2tlbl9saWZldGltZV9oaW50GAMgASgJEhMKC3Njb3BlX2hpbnRzGAQgAygJEhUKDWRpc2NvdmVyeV91cmwYByABKAkSEgoKb2F1dGhfb25seRgKIAEoCEoECAUQBkoECAYQB0oECAgQCUoECAkQCmIGcHJvdG8z",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]),McpServerSpecSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,0),StdioServerConfigSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,1),HttpServerConfigSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,2),ToolApprovalPolicySchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,3),McpServerAuthSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,4);var file_ai_stigmer_iam_oauthapp_v1_spec=fileDesc("CiVhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9zcGVjLnByb3RvEhphaS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MSLWAgoMT0F1dGhBcHBTcGVjEhAKCHByb3ZpZGVyGAEgASgJEhoKCWNsaWVudF9pZBgCIAEoCUIHukgEcgIQARIeCg1jbGllbnRfc2VjcmV0GAMgASgJQge6SARyAhABEiMKEWF1dGhvcml6YXRpb25fdXJsGAQgASgJQgi6SAVyA4gBARIbCgl0b2tlbl91cmwYBSABKAlCCLpIBXIDiAEBEg4KBnNjb3BlcxgGIAMoCRIUCgx1c2VyaW5mb191cmwYByABKAkSHAoUc2NvcGVfcGFyYW1ldGVyX25hbWUYCCABKAkSUAoWdmVuZG9yX2FwcHJvdmFsX3N0YXR1cxgJIAEoDjIwLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLlZlbmRvckFwcHJvdmFsU3RhdHVzEiAKGHZlbmRvcl9hcHByb3ZhbF9kb2NzX3VybBgKIAEoCSqsAQoUVmVuZG9yQXBwcm92YWxTdGF0dXMSJgoiVkVORE9SX0FQUFJPVkFMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHlZFTkRPUl9BUFBST1ZBTF9TVEFUVVNfUEVORElORxABEiMKH1ZFTkRPUl9BUFBST1ZBTF9TVEFUVVNfQVBQUk9WRUQQAhIjCh9WRU5ET1JfQVBQUk9WQUxfU1RBVFVTX1JFSkVDVEVEEANiBnByb3RvMw",[file_buf_validate_validate]);var VendorApprovalStatus;(function(VendorApprovalStatus2){VendorApprovalStatus2[VendorApprovalStatus2.UNSPECIFIED=0]="UNSPECIFIED",VendorApprovalStatus2[VendorApprovalStatus2.PENDING=1]="PENDING",VendorApprovalStatus2[VendorApprovalStatus2.APPROVED=2]="APPROVED",VendorApprovalStatus2[VendorApprovalStatus2.REJECTED=3]="REJECTED"})(VendorApprovalStatus||(VendorApprovalStatus={}));var file_ai_stigmer_agentic_mcpserver_v1_status=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3N0YXR1cy5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MSKlAwoPTWNwU2VydmVyU3RhdHVzEkoKEHZhbGlkYXRpb25fc3RhdGUYASABKA4yMC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlZhbGlkYXRpb25TdGF0ZRIaChJ2YWxpZGF0aW9uX21lc3NhZ2UYAiABKAkSWAoXZGlzY292ZXJlZF9jYXBhYmlsaXRpZXMYAyABKAsyNy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2NvdmVyZWRDYXBhYmlsaXRpZXMSSwoOdG9vbF9hcHByb3ZhbHMYBCADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlRvb2xBcHByb3ZhbFBvbGljeRJCCgxvYXV0aF9zdGF0dXMYBSABKAsyLC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk9BdXRoU3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQi6QEKFkRpc2NvdmVyZWRDYXBhYmlsaXRpZXMSPgoFdG9vbHMYASADKAsyLy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2NvdmVyZWRUb29sElcKEnJlc291cmNlX3RlbXBsYXRlcxgCIAMoCzI7LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGlzY292ZXJlZFJlc291cmNlVGVtcGxhdGUSNgoSbGFzdF9kaXNjb3ZlcmVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJiCg5EaXNjb3ZlcmVkVG9vbBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEi0KDGlucHV0X3NjaGVtYRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiaAoaRGlzY292ZXJlZFJlc291cmNlVGVtcGxhdGUSFAoMdXJpX3RlbXBsYXRlGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEQoJbWltZV90eXBlGAQgASgJIvIBCgtPQXV0aFN0YXR1cxJQChZ2ZW5kb3JfYXBwcm92YWxfc3RhdHVzGAEgASgOMjAuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuVmVuZG9yQXBwcm92YWxTdGF0dXMSIAoYdmVuZG9yX2FwcHJvdmFsX2RvY3NfdXJsGAIgASgJEk8KFmVmZmVjdGl2ZV9vYXV0aF9zb3VyY2UYAyABKA4yLy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk9BdXRoQXBwU291cmNlEh4KFmVmZmVjdGl2ZV9vYXV0aF9hcHBfaWQYBCABKAkqSwoPVmFsaWRhdGlvblN0YXRlEiAKHHZhbGlkYXRpb25fc3RhdGVfdW5zcGVjaWZpZWQQABIJCgV2YWxpZBABEgsKB2ludmFsaWQQAiqPAQoOT0F1dGhBcHBTb3VyY2USIAocT0FVVEhfQVBQX1NPVVJDRV9VTlNQRUNJRklFRBAAEh0KGU9BVVRIX0FQUF9TT1VSQ0VfUExBVEZPUk0QARIhCh1PQVVUSF9BUFBfU09VUkNFX09SR19PVkVSUklERRACEhkKFU9BVVRIX0FQUF9TT1VSQ0VfTk9ORRADYgZwcm90bzM",[file_ai_stigmer_agentic_mcpserver_v1_spec,file_ai_stigmer_commons_apiresource_status,file_ai_stigmer_iam_oauthapp_v1_spec,file_google_protobuf_struct,file_google_protobuf_timestamp]);var ValidationState;(function(ValidationState3){ValidationState3[ValidationState3.validation_state_unspecified=0]="validation_state_unspecified",ValidationState3[ValidationState3.valid=1]="valid",ValidationState3[ValidationState3.invalid=2]="invalid"})(ValidationState||(ValidationState={}));var OAuthAppSource;(function(OAuthAppSource2){OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_UNSPECIFIED=0]="OAUTH_APP_SOURCE_UNSPECIFIED",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_PLATFORM=1]="OAUTH_APP_SOURCE_PLATFORM",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_ORG_OVERRIDE=2]="OAUTH_APP_SOURCE_ORG_OVERRIDE",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_NONE=3]="OAUTH_APP_SOURCE_NONE"})(OAuthAppSource||(OAuthAppSource={}));var file_ai_stigmer_agentic_mcpserver_v1_api=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2FwaS5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MSKtAgoJTWNwU2VydmVyEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh4KBGtpbmQYAiABKAlCELpIDXILCglNY3BTZXJ2ZXISTQoIbWV0YWRhdGEYAyABKAsyMy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YUIGukgDyAEBEjwKBHNwZWMYBCABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlclNwZWMSQAoGc3RhdHVzGAUgASgLMjAuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXJTdGF0dXMibQoNTWNwU2VydmVyTGlzdBITCgthcGlfdmVyc2lvbhgBIAEoCRIMCgRraW5kGAIgASgJEjkKBWl0ZW1zGAMgAygLMiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXJiBnByb3RvMw",[file_ai_stigmer_agentic_mcpserver_v1_spec,file_ai_stigmer_agentic_mcpserver_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),McpServerSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_api,0);var file_ai_stigmer_agentic_mcpserver_v1_io=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2lvLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxIiQKC01jcFNlcnZlcklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiggIKDENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESUgoLcnVudGltZV9lbnYYAiADKAsyPS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dC5SdW50aW1lRW52RW50cnkSFAoDb3JnGAMgASgJQge6SARyAhABGmkKD1J1bnRpbWVFbnZFbnRyeRILCgNrZXkYASABKAkSRQoFdmFsdWUYAiABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25WYWx1ZToCOAEiUAoZSW5pdGlhdGVPQXV0aENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIm0KGkluaXRpYXRlT0F1dGhDb25uZWN0T3V0cHV0EhkKEWF1dGhvcml6YXRpb25fdXJsGAEgASgJEg0KBXN0YXRlGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1wcm92aWRlcl9uYW1lGAQgASgJIncKGUNvbXBsZXRlT0F1dGhDb25uZWN0SW5wdXQSHQoNbWNwX3NlcnZlcl9pZBgBIAEoCUIGukgDyAEBEiMKEmF1dGhvcml6YXRpb25fY29kZRgCIAEoCUIHukgEcgIQARIWCgVzdGF0ZRgDIAEoCUIHukgEcgIQASJkChpDb21wbGV0ZU9BdXRoQ29ubmVjdE91dHB1dBIRCgljb25uZWN0ZWQYASABKAgSFgoOdGFyZ2V0X2Vudl92YXIYAiABKAkSGwoTdG9rZW5fbGlmZXRpbWVfaGludBgDIAEoCSJNChhHZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEizwEKGUdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQSEQoJY29ubmVjdGVkGAEgASgIEh8KF2FjY2Vzc190b2tlbl9leHBpcmVzX2F0GAIgASgDEhYKDnRhcmdldF9lbnZfdmFyGAMgASgJEhMKC2F1dGhfbWV0aG9kGAQgASgJElEKEWNvbm5lY3Rpb25faGVhbHRoGAUgASgOMjYuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5PQXV0aENvbm5lY3Rpb25IZWFsdGgiSQoURGlzY29ubmVjdE9BdXRoSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEiLQoVRGlzY29ubmVjdE9BdXRoT3V0cHV0EhQKDGRpc2Nvbm5lY3RlZBgBIAEoCCKEAQoTU2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQARIaCgljbGllbnRfaWQYAyABKAlCB7pIBHICEAESHgoNY2xpZW50X3NlY3JldBgEIAEoCUIHukgEcgIQASIsChRTZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxvYXV0aF9hcHBfaWQYASABKAkiSAoTR2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQASJVChRHZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxoYXNfb3ZlcnJpZGUYASABKAgSFAoMb2F1dGhfYXBwX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCSJLChZEZWxldGVPcmdPQXV0aEFwcElucHV0EhsKC3Jlc291cmNlX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIioKF0RlbGV0ZU9yZ09BdXRoQXBwT3V0cHV0Eg8KB2RlbGV0ZWQYASABKAgq7QEKFU9BdXRoQ29ubmVjdGlvbkhlYWx0aBInCiNPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9VTlNQRUNJRklFRBAAEiMKH09BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX0hFQUxUSFkQARIpCiVPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9UT0tFTl9FWFBJUkVEEAISNQoxT0FVVEhfQ09OTkVDVElPTl9IRUFMVEhfVE9LRU5fRVhQSVJFRF9SRUZSRVNIQUJMRRADEiQKIE9BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX05PX0dSQU5UEARiBnByb3RvMw",[file_ai_stigmer_agentic_executioncontext_v1_spec,file_buf_validate_validate]);var OAuthConnectionHealth;(function(OAuthConnectionHealth2){OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_UNSPECIFIED=0]="OAUTH_CONNECTION_HEALTH_UNSPECIFIED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_HEALTHY=1]="OAUTH_CONNECTION_HEALTH_HEALTHY",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED=2]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE=3]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_NO_GRANT=4]="OAUTH_CONNECTION_HEALTH_NO_GRANT"})(OAuthConnectionHealth||(OAuthConnectionHealth={}));var file_ai_stigmer_agentic_mcpserver_v1_command=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2NvbW1hbmQucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEypg8KGk1jcFNlcnZlckNvbW1hbmRDb250cm9sbGVyEl8KBWFwcGx5EiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchJmCgZjcmVhdGUSKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIgTQuBgBEpoBCgZ1cGRhdGUSKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIjjCuBg0CAIQLCILbWV0YWRhdGEuaWQqIXVuYXV0aG9yaXplZCB0byB1cGRhdGUgbWNwIHNlcnZlchKmAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciI4wrgYNAgDECwiC3Jlc291cmNlX2lkKiF1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG1jcCBzZXJ2ZXISugEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiQ8K4GD8IAhAsIgtyZXNvdXJjZV9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBtY3Agc2VydmVyIHZpc2liaWxpdHkSpAEKB2Nvbm5lY3QSLS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dBoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIj7CuBg6CBYQLCINbWNwX3NlcnZlcl9pZColdW5hdXRob3JpemVkIHRvIGNvbm5lY3QgdG8gbWNwIHNlcnZlchLfAQoUaW5pdGlhdGVPQXV0aENvbm5lY3QSOi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkluaXRpYXRlT0F1dGhDb25uZWN0SW5wdXQaOy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkluaXRpYXRlT0F1dGhDb25uZWN0T3V0cHV0Ik7CuBhKCBYQLCINbWNwX3NlcnZlcl9pZCo1dW5hdXRob3JpemVkIHRvIGluaXRpYXRlIG9hdXRoIGNvbm5lY3QgZm9yIG1jcCBzZXJ2ZXIS3wEKFGNvbXBsZXRlT0F1dGhDb25uZWN0EjouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Db21wbGV0ZU9BdXRoQ29ubmVjdElucHV0GjsuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Db21wbGV0ZU9BdXRoQ29ubmVjdE91dHB1dCJOwrgYSggWECwiDW1jcF9zZXJ2ZXJfaWQqNXVuYXV0aG9yaXplZCB0byBjb21wbGV0ZSBvYXV0aCBjb25uZWN0IGZvciBtY3Agc2VydmVyEsgBCg9kaXNjb25uZWN0T0F1dGgSNS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2Nvbm5lY3RPQXV0aElucHV0GjYuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5EaXNjb25uZWN0T0F1dGhPdXRwdXQiRsK4GEIIFhAsIgtyZXNvdXJjZV9pZCovdW5hdXRob3JpemVkIHRvIGRpc2Nvbm5lY3Qgb2F1dGggZm9yIG1jcCBzZXJ2ZXISuAEKDnNldE9yZ09BdXRoQXBwEjQuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5TZXRPcmdPQXV0aEFwcElucHV0GjUuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5TZXRPcmdPQXV0aEFwcE91dHB1dCI5wrgYNQgXEB4iA29yZyoqdW5hdXRob3JpemVkIHRvIHNldCBvcmcgb2F1dGggYXBwIG92ZXJyaWRlEsQBChFkZWxldGVPcmdPQXV0aEFwcBI3LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGVsZXRlT3JnT0F1dGhBcHBJbnB1dBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGVsZXRlT3JnT0F1dGhBcHBPdXRwdXQiPMK4GDgIFxAeIgNvcmcqLXVuYXV0aG9yaXplZCB0byBkZWxldGUgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRoEoP8rLGIGcHJvdG8z",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerCommandController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_command,0);var file_ai_stigmer_agentic_mcpserver_v1_query=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3F1ZXJ5LnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxMssFChhNY3BTZXJ2ZXJRdWVyeUNvbnRyb2xsZXISkgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiMMK4GCwIARAsIgV2YWx1ZSofdW5hdXRob3JpemVkIHRvIHZpZXcgbWNwIHNlcnZlchJ4Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIgTQuBgBEtUBChNnZXRPQXV0aEdyYW50U3RhdHVzEjkuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5HZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQiR8K4GEMIARAsIgtyZXNvdXJjZV9pZCowdW5hdXRob3JpemVkIHRvIHZpZXcgb2F1dGggc3RhdHVzIGZvciBtY3Agc2VydmVyEsEBCg5nZXRPcmdPQXV0aEFwcBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBJbnB1dBo1LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBPdXRwdXQiQsK4GD4IARAsIgtyZXNvdXJjZV9pZCordW5hdXRob3JpemVkIHRvIHZpZXcgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRoEoP8rLGIGcHJvdG8z",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerQueryController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_query,0);var file_ai_stigmer_agentic_skill_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxIp0BCglTa2lsbFNwZWMSGQoIc2tpbGxfbWQYASABKAlCB7pIBHICEAESKAoDdGFnGAIgASgJQhu6SBhyFjIUXiR8XlthLXpBLVowLTkuXy1dKyQSMAoEbmFtZRgDIAEoCUIiukgfch0yG15bYS16MC05XSsoWy4tXVthLXowLTldKykqJBITCgtkZXNjcmlwdGlvbhgFIAEoCUoECAQQBWIGcHJvdG8z",[file_buf_validate_validate]);var file_ai_stigmer_agentic_skill_v1_status=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvc3RhdHVzLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEilQIKC1NraWxsU3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSKwoMdmVyc2lvbl9oYXNoGAEgASgJQhW6SBJyEDIOXlthLWYwLTldezY0fSQSHAoUYXJ0aWZhY3Rfc3RvcmFnZV9rZXkYAiABKAkSNgoFc3RhdGUYAyABKA4yJy5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGxTdGF0ZRJCCg5naXRfcHJvdmVuYW5jZRgEIAEoCzIqLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5HaXRQcm92ZW5hbmNlImIKDUdpdFByb3ZlbmFuY2USGwoKcmVtb3RlX3VybBgBIAEoCUIHukgEcgIQARILCgNyZWYYAiABKAkSFwoGY29tbWl0GAMgASgJQge6SARyAhABEg4KBnN1YmRpchgEIAEoCSpzCgpTa2lsbFN0YXRlEhsKF1NLSUxMX1NUQVRFX1VOU1BFQ0lGSUVEEAASGQoVU0tJTExfU1RBVEVfVVBMT0FESU5HEAESFQoRU0tJTExfU1RBVEVfUkVBRFkQAhIWChJTS0lMTF9TVEFURV9GQUlMRUQQA2IGcHJvdG8z",[file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate]);var SkillState;(function(SkillState2){SkillState2[SkillState2.UNSPECIFIED=0]="UNSPECIFIED",SkillState2[SkillState2.UPLOADING=1]="UPLOADING",SkillState2[SkillState2.READY=2]="READY",SkillState2[SkillState2.FAILED=3]="FAILED"})(SkillState||(SkillState={}));var file_ai_stigmer_agentic_skill_v1_api=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvYXBpLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEilQIKBVNraWxsEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEhoKBGtpbmQYAiABKAlCDLpICXIHCgVTa2lsbBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESNAoEc3BlYxgEIAEoCzImLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbFNwZWMSOAoGc3RhdHVzGAUgASgLMiguYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsU3RhdHVzImEKCVNraWxsTGlzdBITCgthcGlfdmVyc2lvbhgBIAEoCRIMCgRraW5kGAIgASgJEjEKBWl0ZW1zGAMgAygLMiIuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsYgZwcm90bzM",[file_ai_stigmer_agentic_skill_v1_spec,file_ai_stigmer_agentic_skill_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),SkillSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_api,0);var file_ai_stigmer_agentic_skill_v1_io=fileDesc("CiRhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvaW8ucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MSIgCgdTa2lsbElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEixgEKEFB1c2hTa2lsbFJlcXVlc3QSEwoDb3JnGAEgASgJQga6SAPIAQESGAoIYXJ0aWZhY3QYAiABKAxCBrpIA8gBARIoCgN0YWcYAyABKAlCG7pIGHIWMhReJHxeW2EtekEtWjAtOS5fLV0rJBJCCg5naXRfcHJvdmVuYW5jZRgEIAEoCzIqLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5HaXRQcm92ZW5hbmNlEg8KB21lc3NhZ2UYBiABKAlKBAgFEAYiowEKJVB1c2hTa2lsbEZyb21FeGVjdXRpb25BcnRpZmFjdFJlcXVlc3QSEwoDb3JnGAEgASgJQga6SAPIAQESHQoMZXhlY3V0aW9uX2lkGAIgASgJQge6SARyAhABEhwKC3N0b3JhZ2Vfa2V5GAMgASgJQge6SARyAhABEigKA3RhZxgEIAEoCUIbukgYchYyFF4kfF5bYS16QS1aMC05Ll8tXSskIjoKEkdldEFydGlmYWN0UmVxdWVzdBIkChRhcnRpZmFjdF9zdG9yYWdlX2tleRgBIAEoCUIGukgDyAEBIicKE0dldEFydGlmYWN0UmVzcG9uc2USEAoIYXJ0aWZhY3QYASABKAwiagoWTGlzdFNraWxsVmVyc2lvbnNJbnB1dBITCgNvcmcYASABKAlCBrpIA8gBARIUCgRzbHVnGAIgASgJQga6SAPIAQESEgoKcGFnZV90b2tlbhgDIAEoCRIRCglwYWdlX3NpemUYBCABKAUitgIKEVNraWxsVmVyc2lvbkVudHJ5EhQKDHZlcnNpb25faGFzaBgBIAEoCRItCglwdXNoZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkgKCXB1c2hlZF9ieRgDIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCwoDdGFnGAQgASgJEhIKCmlzX2N1cnJlbnQYBSABKAgSQgoOZ2l0X3Byb3ZlbmFuY2UYBiABKAsyKi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuR2l0UHJvdmVuYW5jZRIPCgdtZXNzYWdlGAcgASgJEhwKFGFydGlmYWN0X3N0b3JhZ2Vfa2V5GAggASgJIosBChlMaXN0U2tpbGxWZXJzaW9uc1Jlc3BvbnNlEkAKCHZlcnNpb25zGAEgAygLMi4uYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsVmVyc2lvbkVudHJ5EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoBWIGcHJvdG8z",[file_ai_stigmer_agentic_skill_v1_status,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_timestamp]);var ListSkillVersionsResponseSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,7);var file_ai_stigmer_agentic_skill_v1_command=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvY29tbWFuZC5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxMrQFChZTa2lsbENvbW1hbmRDb250cm9sbGVyEpkBCgRwdXNoEi0uYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlB1c2hTa2lsbFJlcXVlc3QaIi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGwiPsK4GDoICRAeIgNvcmcqL3VuYXV0aG9yaXplZCB0byBwdXNoIHNraWxsIGluIHRoaXMgb3JnYW5pemF0aW9uEsMBChlwdXNoRnJvbUV4ZWN1dGlvbkFydGlmYWN0EkIuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlB1c2hTa2lsbEZyb21FeGVjdXRpb25BcnRpZmFjdFJlcXVlc3QaIi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGwiPsK4GDoICRAeIgNvcmcqL3VuYXV0aG9yaXplZCB0byBwdXNoIHNraWxsIGluIHRoaXMgb3JnYW5pemF0aW9uEq0BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBoiLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbCI+wrgYOggCECsiC3Jlc291cmNlX2lkKid1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHNraWxsIHZpc2liaWxpdHkSgQEKBmRlbGV0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbElkGiIuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsIi3CuBgpCAMQKyIFdmFsdWUqHHVuYXV0aG9yaXplZCB0byBkZWxldGUgc2tpbGwaBKD/KytiBnByb3RvMw",[file_ai_stigmer_agentic_skill_v1_api,file_ai_stigmer_agentic_skill_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SkillCommandController=serviceDesc(file_ai_stigmer_agentic_skill_v1_command,0);var file_ai_stigmer_agentic_skill_v1_query=fileDesc("CidhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvcXVlcnkucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MTKHBAoUU2tpbGxRdWVyeUNvbnRyb2xsZXISewoDZ2V0EiQuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsSWQaIi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGwiKsK4GCYIARArIgV2YWx1ZSoZdW5hdXRob3JpemVkIHRvIGdldCBza2lsbBJwCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoiLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbCIE0LgYARJ2CgtnZXRBcnRpZmFjdBIvLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5HZXRBcnRpZmFjdFJlcXVlc3QaMC5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuR2V0QXJ0aWZhY3RSZXNwb25zZSIE0LgYARKBAQoMbGlzdFZlcnNpb25zEjMuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLkxpc3RTa2lsbFZlcnNpb25zSW5wdXQaNi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuTGlzdFNraWxsVmVyc2lvbnNSZXNwb25zZSIE0LgYARoEoP8rK2IGcHJvdG8z",[file_ai_stigmer_agentic_skill_v1_api,file_ai_stigmer_agentic_skill_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SkillQueryController=serviceDesc(file_ai_stigmer_agentic_skill_v1_query,0);var file_ai_stigmer_agentic_workflow_v1_enum=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvZW51bS5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxKt4CChBXb3JrZmxvd1Rhc2tLaW5kEiIKHndvcmtmbG93X3Rhc2tfa2luZF91bnNwZWNpZmllZBAAEgwKCHNldF92YXJzEAESDQoJaHR0cF9jYWxsEAISDQoJZ3JwY19jYWxsEAMSEQoNYWN0aXZpdHlfY2FsbBAEEg8KC3N3aXRjaF9jYXNlEAUSDAoIZm9yX2VhY2gQBhIICgRmb3JrEAcSDQoJdHJ5X2NhdGNoEAgSCgoGbGlzdGVuEAkSCAoEd2FpdBAKEg8KC3JhaXNlX2Vycm9yEAsSEAoMcnVuX3dvcmtmbG93EAwSDgoKYWdlbnRfY2FsbBANEgwKCGxsbV9jYWxsEA4SDQoJdHJhbnNmb3JtEA8SDwoLaHVtYW5faW5wdXQQEBIMCgh2YWxpZGF0ZRAREg4KCmVtaXRfZXZlbnQQEhIQCgxub3RpZmljYXRpb24QExIICgRldmFsEBQqmQEKFEJ1ZGdldEV4Y2VlZGVkUG9saWN5EiYKImJ1ZGdldF9leGNlZWRlZF9wb2xpY3lfdW5zcGVjaWZpZWQQABIdChlidWRnZXRfZXhjZWVkZWRfdGVybWluYXRlEAESIAocYnVkZ2V0X2V4Y2VlZGVkX2h1bWFuX3JldmlldxACEhgKFGJ1ZGdldF9leGNlZWRlZF93YXJuEANiBnByb3RvMw"),WorkflowTaskKind;(function(WorkflowTaskKind2){WorkflowTaskKind2[WorkflowTaskKind2.workflow_task_kind_unspecified=0]="workflow_task_kind_unspecified",WorkflowTaskKind2[WorkflowTaskKind2.set_vars=1]="set_vars",WorkflowTaskKind2[WorkflowTaskKind2.http_call=2]="http_call",WorkflowTaskKind2[WorkflowTaskKind2.grpc_call=3]="grpc_call",WorkflowTaskKind2[WorkflowTaskKind2.activity_call=4]="activity_call",WorkflowTaskKind2[WorkflowTaskKind2.switch_case=5]="switch_case",WorkflowTaskKind2[WorkflowTaskKind2.for_each=6]="for_each",WorkflowTaskKind2[WorkflowTaskKind2.fork=7]="fork",WorkflowTaskKind2[WorkflowTaskKind2.try_catch=8]="try_catch",WorkflowTaskKind2[WorkflowTaskKind2.listen=9]="listen",WorkflowTaskKind2[WorkflowTaskKind2.wait=10]="wait",WorkflowTaskKind2[WorkflowTaskKind2.raise_error=11]="raise_error",WorkflowTaskKind2[WorkflowTaskKind2.run_workflow=12]="run_workflow",WorkflowTaskKind2[WorkflowTaskKind2.agent_call=13]="agent_call",WorkflowTaskKind2[WorkflowTaskKind2.llm_call=14]="llm_call",WorkflowTaskKind2[WorkflowTaskKind2.transform=15]="transform",WorkflowTaskKind2[WorkflowTaskKind2.human_input=16]="human_input",WorkflowTaskKind2[WorkflowTaskKind2.validate=17]="validate",WorkflowTaskKind2[WorkflowTaskKind2.emit_event=18]="emit_event",WorkflowTaskKind2[WorkflowTaskKind2.notification=19]="notification",WorkflowTaskKind2[WorkflowTaskKind2.eval=20]="eval"})(WorkflowTaskKind||(WorkflowTaskKind={}));var BudgetExceededPolicy;(function(BudgetExceededPolicy2){BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_policy_unspecified=0]="budget_exceeded_policy_unspecified",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_terminate=1]="budget_exceeded_terminate",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_human_review=2]="budget_exceeded_human_review",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_warn=3]="budget_exceeded_warn"})(BudgetExceededPolicy||(BudgetExceededPolicy={}));var file_ai_stigmer_agentic_workflow_v1_spec=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc3BlYy5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxIpwDCgxXb3JrZmxvd1NwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSSgoIZG9jdW1lbnQYAiABKAsyMC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dEb2N1bWVudEIGukgDyAEBEkUKBXRhc2tzGAMgAygLMiwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0IIukgFkgECCAESQgoDZW52GAQgAygLMjUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93U3BlYy5FbnZFbnRyeRI+CgZidWRnZXQYBSABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dCdWRnZXQaYAoIRW52RW50cnkSCwoDa2V5GAEgASgJEkMKBXZhbHVlGAIgASgLMjQuYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudlZhckRlY2xhcmF0aW9uOgI4ASKsAQoOV29ya2Zsb3dCdWRnZXQSFwoPbWF4X2Nvc3RfbWljcm9zGAEgASgDEhgKEG1heF90b3RhbF90b2tlbnMYAiABKAMSHAoUbWF4X2R1cmF0aW9uX3NlY29uZHMYAyABKAUSSQoLb25fZXhjZWVkZWQYBCABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuQnVkZ2V0RXhjZWVkZWRQb2xpY3kikAEKEFdvcmtmbG93RG9jdW1lbnQSHQoDZHNsGAEgASgJQhC6SA1yCzIJXjFcLjBcLjAkEhkKCW5hbWVzcGFjZRgCIAEoCUIGukgDyAEBEhQKBG5hbWUYAyABKAlCBrpIA8gBARIXCgd2ZXJzaW9uGAQgASgJQga6SAPIAQESEwoLZGVzY3JpcHRpb24YBSABKAki+gIKDFdvcmtmbG93VGFzaxIvCgRuYW1lGAEgASgJQiG6SB5yHBABMhheW2EtekEtWl9dW2EtekEtWjAtOV9dKiQSRgoEa2luZBgCIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tLaW5kQga6SAPIAQESPAoLdGFza19jb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Qg66SAPIAQHqhSwEa2luZBI2CgZleHBvcnQYBCABKAsyJi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuRXhwb3J0EjkKBGZsb3cYBSABKAsyKy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuRmxvd0NvbnRyb2wSQAoKY29tcGVuc2F0ZRgGIAMoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2siHQoGRXhwb3J0EhMKAmFzGAEgASgJQge6SARyAhABIhsKC0Zsb3dDb250cm9sEgwKBHRoZW4YASABKAliBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_agentic_workflow_v1_enum,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),WorkflowSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,0),WorkflowBudgetSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,1),WorkflowDocumentSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,2),WorkflowTaskSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,3),ExportSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,4),FlowControlSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,5);var file_ai_stigmer_agentic_workflow_v1_serverless_validation=fileDesc("CjphaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc2VydmVybGVzcy92YWxpZGF0aW9uLnByb3RvEilhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuc2VydmVybGVzcyLrAQocU2VydmVybGVzc1dvcmtmbG93VmFsaWRhdGlvbhJJCgVzdGF0ZRgBIAEoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5zZXJ2ZXJsZXNzLlZhbGlkYXRpb25TdGF0ZRIMCgR5YW1sGAIgASgJEg4KBmVycm9ycxgDIAMoCRIQCgh3YXJuaW5ncxgEIAMoCRIwCgx2YWxpZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh4KFnZhbGlkYXRpb25fd29ya2Zsb3dfaWQYBiABKAkqZAoPVmFsaWRhdGlvblN0YXRlEiAKHFZBTElEQVRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABILCgdQRU5ESU5HEAESCQoFVkFMSUQQAhILCgdJTlZBTElEEAMSCgoGRkFJTEVEEARiBnByb3RvMw",[file_google_protobuf_timestamp]),ServerlessWorkflowValidationSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_serverless_validation,0),ValidationState2;(function(ValidationState3){ValidationState3[ValidationState3.VALIDATION_STATE_UNSPECIFIED=0]="VALIDATION_STATE_UNSPECIFIED",ValidationState3[ValidationState3.PENDING=1]="PENDING",ValidationState3[ValidationState3.VALID=2]="VALID",ValidationState3[ValidationState3.INVALID=3]="INVALID",ValidationState3[ValidationState3.FAILED=4]="FAILED"})(ValidationState2||(ValidationState2={}));var file_ai_stigmer_agentic_workflow_v1_status=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc3RhdHVzLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEi9QEKDldvcmtmbG93U3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSGwoTZGVmYXVsdF9pbnN0YW5jZV9pZBgBIAEoCRJvCh5zZXJ2ZXJsZXNzX3dvcmtmbG93X3ZhbGlkYXRpb24YAiABKAsyRy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuc2VydmVybGVzcy5TZXJ2ZXJsZXNzV29ya2Zsb3dWYWxpZGF0aW9uEhQKDHZlcnNpb25faGFzaBgDIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_workflow_v1_serverless_validation,file_ai_stigmer_commons_apiresource_status]);var file_ai_stigmer_agentic_workflow_v1_api=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvYXBpLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEipwIKCFdvcmtmbG93EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh0KBGtpbmQYAiABKAlCD7pIDHIKCghXb3JrZmxvdxJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESOgoEc3BlYxgEIAEoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1NwZWMSPgoGc3RhdHVzGAUgASgLMi4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93U3RhdHVzYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_agentic_workflow_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),WorkflowSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_api,0);var file_ai_stigmer_agentic_workflow_v1_io=fileDesc("CidhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvaW8ucHJvdG8SHmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MSIjCgpXb3JrZmxvd0lkEhUKBXZhbHVlGAEgASgJQga6SAPIAQFiBnByb3RvMw",[file_buf_validate_validate]);var file_ai_stigmer_agentic_workflow_v1_version=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdmVyc2lvbi5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxIrgCChRXb3JrZmxvd1ZlcnNpb25FbnRyeRIUCgx2ZXJzaW9uX2hhc2gYASABKAkSLgoKYXBwbGllZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoKYXBwbGllZF9ieRgDIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCwoDdGFnGAQgASgJEhIKCmlzX2N1cnJlbnQYBSABKAgSDwoHbWVzc2FnZRgGIAEoCRIWCg52YWxpZGF0ZWRfeWFtbBgHIAEoCRJFCg5naXRfcHJvdmVuYW5jZRgIIAEoCzItLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5HaXRQcm92ZW5hbmNlIlAKDUdpdFByb3ZlbmFuY2USEgoKcmVtb3RlX3VybBgBIAEoCRILCgNyZWYYAiABKAkSDgoGY29tbWl0GAMgASgJEg4KBnN1YmRpchgEIAEoCSJtChlMaXN0V29ya2Zsb3dWZXJzaW9uc0lucHV0EhMKA29yZxgBIAEoCUIGukgDyAEBEhQKBHNsdWcYAiABKAlCBrpIA8gBARISCgpwYWdlX3Rva2VuGAMgASgJEhEKCXBhZ2Vfc2l6ZRgEIAEoBSKUAQocTGlzdFdvcmtmbG93VmVyc2lvbnNSZXNwb25zZRJGCgh2ZXJzaW9ucxgBIAMoCzI0LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1ZlcnNpb25FbnRyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAUiYwoXR2V0V29ya2Zsb3dWZXJzaW9uSW5wdXQSGwoLd29ya2Zsb3dfaWQYASABKAlCBrpIA8gBARIrCgx2ZXJzaW9uX2hhc2gYAiABKAlCFbpIEnIQMg5eW2EtZjAtOV17NjR9JCKMAQoXVGFnV29ya2Zsb3dWZXJzaW9uSW5wdXQSGwoLd29ya2Zsb3dfaWQYASABKAlCBrpIA8gBARIrCgx2ZXJzaW9uX2hhc2gYAiABKAlCFbpIEnIQMg5eW2EtZjAtOV17NjR9JBInCgN0YWcYAyABKAlCGrpIF3IVEAEyEV5bYS16QS1aMC05Ll8tXSskYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_timestamp]),WorkflowVersionEntrySchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_version,0);var ListWorkflowVersionsResponseSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_version,3);var file_ai_stigmer_agentic_workflow_v1_command=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvY29tbWFuZC5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxMpEJChlXb3JrZmxvd0NvbW1hbmRDb250cm9sbGVyElsKBWFwcGx5EiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93GiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93EqoBCgZjcmVhdGUSKC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3caKC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3ciTMK4GEgIBxAeIgxtZXRhZGF0YS5vcmcqNHVuYXV0aG9yaXplZCB0byBjcmVhdGUgd29ya2Zsb3cgaW4gdGhpcyBvcmdhbml6YXRpb24SlAEKBnVwZGF0ZRIoLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdxooLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdyI2wrgYMggCEDIiC21ldGFkYXRhLmlkKh91bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHdvcmtmbG93ErYBChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBooLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdyJBwrgYPQgCEDIiC3Jlc291cmNlX2lkKip1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHdvcmtmbG93IHZpc2liaWxpdHkSkAEKBmRlbGV0ZRIqLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd0lkGiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93IjDCuBgsCAMQMiIFdmFsdWUqH3VuYXV0aG9yaXplZCB0byBkZWxldGUgd29ya2Zsb3cS0QEKDHZhbGlkYXRlU3BlYxIoLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdxpHLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5zZXJ2ZXJsZXNzLlNlcnZlcmxlc3NXb3JrZmxvd1ZhbGlkYXRpb24iTsK4GEoIBxAeIgxtZXRhZGF0YS5vcmcqNnVuYXV0aG9yaXplZCB0byB2YWxpZGF0ZSB3b3JrZmxvdyBpbiB0aGlzIG9yZ2FuaXphdGlvbhKsAQoKdGFnVmVyc2lvbhI3LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5UYWdXb3JrZmxvd1ZlcnNpb25JbnB1dBooLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdyI7wrgYNwgCEDIiC3dvcmtmbG93X2lkKiR1bmF1dGhvcml6ZWQgdG8gdGFnIHdvcmtmbG93IHZlcnNpb24aBKD/KzJiBnByb3RvMw",[file_ai_stigmer_agentic_workflow_v1_api,file_ai_stigmer_agentic_workflow_v1_io,file_ai_stigmer_agentic_workflow_v1_serverless_validation,file_ai_stigmer_agentic_workflow_v1_version,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowCommandController=serviceDesc(file_ai_stigmer_agentic_workflow_v1_command,0);var file_ai_stigmer_agentic_workflow_v1_query=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvcXVlcnkucHJvdG8SHmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MTLvBAoXV29ya2Zsb3dRdWVyeUNvbnRyb2xsZXISigEKA2dldBIqLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd0lkGiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93Ii3CuBgpCAEQMiIFdmFsdWUqHHVuYXV0aG9yaXplZCB0byBnZXQgd29ya2Zsb3cSdgoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaKC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3ciBNC4GAESjQEKDGxpc3RWZXJzaW9ucxI5LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5MaXN0V29ya2Zsb3dWZXJzaW9uc0lucHV0GjwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLkxpc3RXb3JrZmxvd1ZlcnNpb25zUmVzcG9uc2UiBNC4GAESuAEKCmdldFZlcnNpb24SNy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuR2V0V29ya2Zsb3dWZXJzaW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dWZXJzaW9uRW50cnkiO8K4GDcIARAyIgt3b3JrZmxvd19pZCokdW5hdXRob3JpemVkIHRvIGdldCB3b3JrZmxvdyB2ZXJzaW9uGgSg/ysyYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_api,file_ai_stigmer_agentic_workflow_v1_io,file_ai_stigmer_agentic_workflow_v1_version,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowQueryController=serviceDesc(file_ai_stigmer_agentic_workflow_v1_query,0);var file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor=fileDesc("CjlhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza19raW5kX2Rlc2NyaXB0b3IucHJvdG8SHmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MSJHCg5UYXNrRmllbGRHcm91cBIKCgJpZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAki1gIKE1Rhc2tGaWVsZERlc2NyaXB0b3ISDAoEbmFtZRgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSOwoEdHlwZRgEIAEoDjItLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5UYXNrRmllbGRUeXBlEhAKCHJlcXVpcmVkGAUgASgIEhUKDWlzX2V4cHJlc3Npb24YBiABKAgSFQoNZGVmYXVsdF92YWx1ZRgHIAEoCRITCgtlbnVtX3ZhbHVlcxgIIAMoCRIcChRqc29uX3NjaGVtYV9mcmFnbWVudBgJIAEoCRIQCghncm91cF9pZBgKIAEoCRIUCgxmaWVsZF9udW1iZXIYCyABKAUSFAoMZWxlbWVudF90eXBlGAwgASgJEhgKEHZhbGlkYXRpb25faGludHMYDSADKAkimgQKElRhc2tLaW5kRGVzY3JpcHRvchI+CgRraW5kGAEgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0tpbmQSFAoMZGlzcGxheV9uYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEkIKCGNhdGVnb3J5GAQgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLlRhc2tLaW5kQ2F0ZWdvcnkSDAoEaWNvbhgFIAEoCRIZChFjb25maWdfcHJvdG9fdHlwZRgGIAEoCRJDCgZmaWVsZHMYByADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuVGFza0ZpZWxkRGVzY3JpcHRvchJECgxmaWVsZF9ncm91cHMYCCADKAsyLi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuVGFza0ZpZWxkR3JvdXASGgoSY29uZmlnX2pzb25fc2NoZW1hGAkgASgJEhoKEm91dHB1dF9qc29uX3NjaGVtYRgKIAEoCRIVCg15YW1sX2V4YW1wbGVzGAsgAygJEhkKEWRvY3VtZW50YXRpb25fdXJsGAwgASgJEhQKDGlzX2FpX25hdGl2ZRgNIAEoCBIhChlyZXF1aXJlc19leHRlcm5hbF9zZXJ2aWNlGA4gASgIIhwKGkdldFRhc2tLaW5kUmVnaXN0cnlSZXF1ZXN0ImYKG0dldFRhc2tLaW5kUmVnaXN0cnlSZXNwb25zZRJHCgtkZXNjcmlwdG9ycxgBIAMoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5UYXNrS2luZERlc2NyaXB0b3Iq9wEKEFRhc2tLaW5kQ2F0ZWdvcnkSIgoeVEFTS19LSU5EX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAASIwofVEFTS19LSU5EX0NBVEVHT1JZX0NPTlRST0xfRkxPVxABEiEKHVRBU0tfS0lORF9DQVRFR09SWV9JTlZPQ0FUSU9OEAISGQoVVEFTS19LSU5EX0NBVEVHT1JZX0FJEAMSGwoXVEFTS19LSU5EX0NBVEVHT1JZX0RBVEEQBBIhCh1UQVNLX0tJTkRfQ0FURUdPUllfR09WRVJOQU5DRRAFEhwKGFRBU0tfS0lORF9DQVRFR09SWV9FVkVOVBAGKqYCCg1UYXNrRmllbGRUeXBlEh8KG1RBU0tfRklFTERfVFlQRV9VTlNQRUNJRklFRBAAEhoKFlRBU0tfRklFTERfVFlQRV9TVFJJTkcQARIZChVUQVNLX0ZJRUxEX1RZUEVfSU5UMzIQAhIZChVUQVNLX0ZJRUxEX1RZUEVfRkxPQVQQAxIYChRUQVNLX0ZJRUxEX1RZUEVfQk9PTBAEEhgKFFRBU0tfRklFTERfVFlQRV9FTlVNEAUSGgoWVEFTS19GSUVMRF9UWVBFX1NUUlVDVBAGEhwKGFRBU0tfRklFTERfVFlQRV9SRVBFQVRFRBAHEhcKE1RBU0tfRklFTERfVFlQRV9NQVAQCBIbChdUQVNLX0ZJRUxEX1RZUEVfTUVTU0FHRRAJYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_enum]);var TaskKindDescriptorSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor,2);var GetTaskKindRegistryResponseSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor,4),TaskKindCategory;(function(TaskKindCategory2){TaskKindCategory2[TaskKindCategory2.UNSPECIFIED=0]="UNSPECIFIED",TaskKindCategory2[TaskKindCategory2.CONTROL_FLOW=1]="CONTROL_FLOW",TaskKindCategory2[TaskKindCategory2.INVOCATION=2]="INVOCATION",TaskKindCategory2[TaskKindCategory2.AI=3]="AI",TaskKindCategory2[TaskKindCategory2.DATA=4]="DATA",TaskKindCategory2[TaskKindCategory2.GOVERNANCE=5]="GOVERNANCE",TaskKindCategory2[TaskKindCategory2.EVENT=6]="EVENT"})(TaskKindCategory||(TaskKindCategory={}));var TaskFieldType;(function(TaskFieldType2){TaskFieldType2[TaskFieldType2.UNSPECIFIED=0]="UNSPECIFIED",TaskFieldType2[TaskFieldType2.STRING=1]="STRING",TaskFieldType2[TaskFieldType2.INT32=2]="INT32",TaskFieldType2[TaskFieldType2.FLOAT=3]="FLOAT",TaskFieldType2[TaskFieldType2.BOOL=4]="BOOL",TaskFieldType2[TaskFieldType2.ENUM=5]="ENUM",TaskFieldType2[TaskFieldType2.STRUCT=6]="STRUCT",TaskFieldType2[TaskFieldType2.REPEATED=7]="REPEATED",TaskFieldType2[TaskFieldType2.MAP=8]="MAP",TaskFieldType2[TaskFieldType2.MESSAGE=9]="MESSAGE"})(TaskFieldType||(TaskFieldType={}));var file_ai_stigmer_agentic_workflow_v1_task_kind_registry_query=fileDesc("Cj1haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza19raW5kX3JlZ2lzdHJ5X3F1ZXJ5LnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEysgEKH1Rhc2tLaW5kUmVnaXN0cnlRdWVyeUNvbnRyb2xsZXISjgEKE2dldFRhc2tLaW5kUmVnaXN0cnkSOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuR2V0VGFza0tpbmRSZWdpc3RyeVJlcXVlc3QaOy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuR2V0VGFza0tpbmRSZWdpc3RyeVJlc3BvbnNlYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor]),TaskKindRegistryQueryController=serviceDesc(file_ai_stigmer_agentic_workflow_v1_task_kind_registry_query,0);var file_ai_stigmer_agentic_workflowexecution_v1_enum=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvZW51bS5wcm90bxInYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxKtsBCg5FeGVjdXRpb25QaGFzZRIfChtFWEVDVVRJT05fUEhBU0VfVU5TUEVDSUZJRUQQABIVChFFWEVDVVRJT05fUEVORElORxABEhkKFUVYRUNVVElPTl9JTl9QUk9HUkVTUxACEhcKE0VYRUNVVElPTl9DT01QTEVURUQQAxIUChBFWEVDVVRJT05fRkFJTEVEEAQSFwoTRVhFQ1VUSU9OX0NBTkNFTExFRBAFEhgKFEVYRUNVVElPTl9URVJNSU5BVEVEEAYSFAoQRVhFQ1VUSU9OX1BBVVNFRBAHKoQCChBXb3JrZmxvd1Rhc2tUeXBlEiIKHldPUktGTE9XX1RBU0tfVFlQRV9VTlNQRUNJRklFRBAAEiIKHldPUktGTE9XX1RBU0tfQUdFTlRfSU5WT0NBVElPThABEhoKFldPUktGTE9XX1RBU0tfQVBQUk9WQUwQAhIaChZXT1JLRkxPV19UQVNLX0FQSV9DQUxMEAMSHQoZV09SS0ZMT1dfVEFTS19DT05ESVRJT05BTBAEEhoKFldPUktGTE9XX1RBU0tfUEFSQUxMRUwQBRIbChdXT1JLRkxPV19UQVNLX1RSQU5TRk9STRAGEhgKFFdPUktGTE9XX1RBU0tfQ1VTVE9NEAcq6gEKEldvcmtmbG93VGFza1N0YXR1cxIkCiBXT1JLRkxPV19UQVNLX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVdPUktGTE9XX1RBU0tfUEVORElORxABEh0KGVdPUktGTE9XX1RBU0tfSU5fUFJPR1JFU1MQAhIbChdXT1JLRkxPV19UQVNLX0NPTVBMRVRFRBADEhgKFFdPUktGTE9XX1RBU0tfRkFJTEVEEAQSGQoVV09SS0ZMT1dfVEFTS19TS0lQUEVEEAUSIgoeV09SS0ZMT1dfVEFTS19XQUlUSU5HX0FQUFJPVkFMEAZiBnByb3RvMw"),ExecutionPhase2;(function(ExecutionPhase3){ExecutionPhase3[ExecutionPhase3.EXECUTION_PHASE_UNSPECIFIED=0]="EXECUTION_PHASE_UNSPECIFIED",ExecutionPhase3[ExecutionPhase3.EXECUTION_PENDING=1]="EXECUTION_PENDING",ExecutionPhase3[ExecutionPhase3.EXECUTION_IN_PROGRESS=2]="EXECUTION_IN_PROGRESS",ExecutionPhase3[ExecutionPhase3.EXECUTION_COMPLETED=3]="EXECUTION_COMPLETED",ExecutionPhase3[ExecutionPhase3.EXECUTION_FAILED=4]="EXECUTION_FAILED",ExecutionPhase3[ExecutionPhase3.EXECUTION_CANCELLED=5]="EXECUTION_CANCELLED",ExecutionPhase3[ExecutionPhase3.EXECUTION_TERMINATED=6]="EXECUTION_TERMINATED",ExecutionPhase3[ExecutionPhase3.EXECUTION_PAUSED=7]="EXECUTION_PAUSED"})(ExecutionPhase2||(ExecutionPhase2={}));var WorkflowTaskType;(function(WorkflowTaskType2){WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_TYPE_UNSPECIFIED=0]="WORKFLOW_TASK_TYPE_UNSPECIFIED",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_AGENT_INVOCATION=1]="WORKFLOW_TASK_AGENT_INVOCATION",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_APPROVAL=2]="WORKFLOW_TASK_APPROVAL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_API_CALL=3]="WORKFLOW_TASK_API_CALL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_CONDITIONAL=4]="WORKFLOW_TASK_CONDITIONAL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_PARALLEL=5]="WORKFLOW_TASK_PARALLEL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_TRANSFORM=6]="WORKFLOW_TASK_TRANSFORM",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_CUSTOM=7]="WORKFLOW_TASK_CUSTOM"})(WorkflowTaskType||(WorkflowTaskType={}));var WorkflowTaskStatus;(function(WorkflowTaskStatus2){WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_STATUS_UNSPECIFIED=0]="WORKFLOW_TASK_STATUS_UNSPECIFIED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_PENDING=1]="WORKFLOW_TASK_PENDING",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_IN_PROGRESS=2]="WORKFLOW_TASK_IN_PROGRESS",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_COMPLETED=3]="WORKFLOW_TASK_COMPLETED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_FAILED=4]="WORKFLOW_TASK_FAILED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_SKIPPED=5]="WORKFLOW_TASK_SKIPPED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_WAITING_APPROVAL=6]="WORKFLOW_TASK_WAITING_APPROVAL"})(WorkflowTaskStatus||(WorkflowTaskStatus={}));var file_ai_stigmer_agentic_workflowexecution_v1_spec=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvc3BlYy5wcm90bxInYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxIrwEChVXb3JrZmxvd0V4ZWN1dGlvblNwZWMSHAoUd29ya2Zsb3dfaW5zdGFuY2VfaWQYASABKAkSEwoLd29ya2Zsb3dfaWQYBiABKAkSFwoPdHJpZ2dlcl9tZXNzYWdlGAMgASgJEm0KEHRyaWdnZXJfbWV0YWRhdGEYBCADKAsyUy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb25TcGVjLlRyaWdnZXJNZXRhZGF0YUVudHJ5EmMKC3J1bnRpbWVfZW52GAUgAygLMk4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uU3BlYy5SdW50aW1lRW52RW50cnkSFgoOY2FsbGJhY2tfdG9rZW4YByABKAwSSAoQZXhlY3V0aW9uX3RhcmdldBgIIAEoDjIuLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkV4ZWN1dGlvblRhcmdldBo2ChRUcmlnZ2VyTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGmkKD1J1bnRpbWVFbnZFbnRyeRILCgNrZXkYASABKAkSRQoFdmFsdWUYAiABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25WYWx1ZToCOAFiBnByb3RvMw",[file_ai_stigmer_agentic_executioncontext_v1_spec,file_ai_stigmer_agentic_session_v1_enum]),WorkflowExecutionSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_spec,0);var file_ai_stigmer_agentic_workflowexecution_v1_api=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvYXBpLnByb3RvEidhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEi3QIKEVdvcmtmbG93RXhlY3V0aW9uEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEiYKBGtpbmQYAiABKAlCGLpIFXITChFXb3JrZmxvd0V4ZWN1dGlvbhJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESTAoEc3BlYxgEIAEoCzI+LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvblNwZWMSUAoGc3RhdHVzGAUgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uU3RhdHVzIqQFChdXb3JrZmxvd0V4ZWN1dGlvblN0YXR1cxI/CgVhdWRpdBhjIAEoCzIwLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0ElAKBXBoYXNlGAEgASgOMjcuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblBoYXNlQgi6SAWCAQIQARJECgV0YXNrcxgCIAMoCzI1LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd1Rhc2sSJwoGb3V0cHV0GAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBINCgVlcnJvchgEIAEoCRISCgpzdGFydGVkX2F0GAUgASgJEhQKDGNvbXBsZXRlZF9hdBgGIAEoCRIcChR0ZW1wb3JhbF93b3JrZmxvd19pZBgHIAEoCRJbChFwZW5kaW5nX2FwcHJvdmFscxgJIAMoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd1BlbmRpbmdBcHByb3ZhbBIZChF0b3RhbF9jb3N0X21pY3JvcxgKIAEoAxIaChJ0b3RhbF9pbnB1dF90b2tlbnMYCyABKAMSGwoTdG90YWxfb3V0cHV0X3Rva2VucxgMIAEoAxIdChV3b3JrZmxvd192ZXJzaW9uX2hhc2gYDSABKAkSYAoUcGVuZGluZ19maWxlX3Jldmlld3MYDiADKAsyQi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dQZW5kaW5nRmlsZVJldmlldyKEAQoXV29ya2Zsb3dQZW5kaW5nQXBwcm92YWwSRwoIYXBwcm92YWwYASABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUGVuZGluZ0FwcHJvdmFsEiAKGGNoaWxkX2FnZW50X2V4ZWN1dGlvbl9pZBgCIAEoCSJUChlXb3JrZmxvd1BlbmRpbmdGaWxlUmV2aWV3EiAKGGNoaWxkX2FnZW50X2V4ZWN1dGlvbl9pZBgBIAEoCRIVCg1jaGFuZ2Vfc2V0X2lkGAIgAygJIv8DCgxXb3JrZmxvd1Rhc2sSDwoHdGFza19pZBgBIAEoCRIRCgl0YXNrX25hbWUYAiABKAkSVgoJdGFza190eXBlGAMgASgOMjkuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93VGFza1R5cGVCCLpIBYIBAhABEiYKBWlucHV0GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgZvdXRwdXQYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0ElUKBnN0YXR1cxgGIAEoDjI7LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd1Rhc2tTdGF0dXNCCLpIBYIBAhABEhIKCnN0YXJ0ZWRfYXQYByABKAkSFAoMY29tcGxldGVkX2F0GAggASgJEg0KBWVycm9yGAkgASgJEikKCG1ldGFkYXRhGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxhcnRpZmFjdF9pZHMYCyADKAkSEwoLY29zdF9taWNyb3MYDCABKAMSFAoMaW5wdXRfdG9rZW5zGA0gASgDEhUKDW91dHB1dF90b2tlbnMYDiABKAMSDwoHdWlfaGludBgPIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_agentexecution_v1_approval,file_ai_stigmer_agentic_workflowexecution_v1_enum,file_ai_stigmer_agentic_workflowexecution_v1_spec,file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_struct]),WorkflowExecutionSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_api,0);var file_ai_stigmer_agentic_workflowexecution_v1_event=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvZXZlbnQucHJvdG8SJ2FpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MSKGEQoWV29ya2Zsb3dFeGVjdXRpb25FdmVudBIZCghldmVudF9pZBgBIAEoCUIHukgEcgIQARJYCgpldmVudF90eXBlGAIgASgOMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXZlbnRUeXBlQgi6SAWCAQIQARIXCg9zZXF1ZW5jZV9udW1iZXIYAyABKAQSHAoLb2NjdXJyZWRfYXQYBCABKAlCB7pIBHICEAESEQoJdGFza19uYW1lGAUgASgJEl0KEWV4ZWN1dGlvbl9zdGFydGVkGAogASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblN0YXJ0ZWRQYXlsb2FkSAASYQoTZXhlY3V0aW9uX2NvbXBsZXRlZBgLIAEoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25Db21wbGV0ZWRQYXlsb2FkSAASWwoQZXhlY3V0aW9uX2ZhaWxlZBgMIAEoCzI/LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25GYWlsZWRQYXlsb2FkSAASWwoQZXhlY3V0aW9uX3BhdXNlZBgNIAEoCzI/LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25QYXVzZWRQYXlsb2FkSAASXQoRZXhlY3V0aW9uX3Jlc3VtZWQYDiABKAsyQC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuRXhlY3V0aW9uUmVzdW1lZFBheWxvYWRIABJhChNleGVjdXRpb25fY2FuY2VsbGVkGA8gASgLMkIuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvbkNhbmNlbGxlZFBheWxvYWRIABJjChRleGVjdXRpb25fdGVybWluYXRlZBgQIAEoCzJDLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25UZXJtaW5hdGVkUGF5bG9hZEgAElMKDHRhc2tfc3RhcnRlZBgUIAEoCzI7LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5UYXNrU3RhcnRlZFBheWxvYWRIABJXCg50YXNrX2NvbXBsZXRlZBgVIAEoCzI9LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5UYXNrQ29tcGxldGVkUGF5bG9hZEgAElEKC3Rhc2tfZmFpbGVkGBYgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlRhc2tGYWlsZWRQYXlsb2FkSAASUwoMdGFza19za2lwcGVkGBcgASgLMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlRhc2tTa2lwcGVkUGF5bG9hZEgAElUKDXRhc2tfcmV0cnlpbmcYGCABKAsyPC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuVGFza1JldHJ5aW5nUGF5bG9hZEgAEl4KEmFnZW50X2NhbGxfc3RhcnRlZBgeIAEoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5BZ2VudENhbGxTdGFydGVkUGF5bG9hZEgAEmAKE2FnZW50X2NhbGxfcHJvZ3Jlc3MYHyABKAsyQS5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuQWdlbnRDYWxsUHJvZ3Jlc3NQYXlsb2FkSAASYgoUYWdlbnRfY2FsbF9jb21wbGV0ZWQYICABKAsyQi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuQWdlbnRDYWxsQ29tcGxldGVkUGF5bG9hZEgAEl8KEmFwcHJvdmFsX3JlcXVlc3RlZBgoIAEoCzJBLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5BcHByb3ZhbFJlcXVlc3RlZFBheWxvYWRIABJdChFhcHByb3ZhbF9yZXNvbHZlZBgpIAEoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5BcHByb3ZhbFJlc29sdmVkUGF5bG9hZEgAEl0KEWJ1ZGdldF9jaGVja3BvaW50GDIgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkJ1ZGdldENoZWNrcG9pbnRQYXlsb2FkSAASWQoPc2lnbmFsX3JlY2VpdmVkGDwgASgLMj4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlNpZ25hbFJlY2VpdmVkUGF5bG9hZEgAElUKDWV2ZW50X2VtaXR0ZWQYPSABKAsyPC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuRXZlbnRFbWl0dGVkUGF5bG9hZEgAElsKEGFydGlmYWN0X2NyZWF0ZWQYRiABKAsyPy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuQXJ0aWZhY3RDcmVhdGVkUGF5bG9hZEgAQgkKB3BheWxvYWQiYQoXRXhlY3V0aW9uU3RhcnRlZFBheWxvYWQSEwoLdG90YWxfdGFza3MYASABKAUSEwoLd29ya2Zsb3dfaWQYAiABKAkSHAoUd29ya2Zsb3dfaW5zdGFuY2VfaWQYAyABKAkikgEKGUV4ZWN1dGlvbkNvbXBsZXRlZFBheWxvYWQSLwoOb3V0cHV0X3N1bW1hcnkYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhMKC2R1cmF0aW9uX21zGAIgASgDEhkKEXRvdGFsX2Nvc3RfbWljcm9zGAMgASgDEhQKDHRvdGFsX3Rva2VucxgEIAEoAyJWChZFeGVjdXRpb25GYWlsZWRQYXlsb2FkEg0KBWVycm9yGAEgASgJEhgKEGZhaWxlZF90YXNrX25hbWUYAiABKAkSEwoLZHVyYXRpb25fbXMYAyABKAMiOwoWRXhlY3V0aW9uUGF1c2VkUGF5bG9hZBIOCgZyZWFzb24YASABKAkSEQoJcGF1c2VkX2J5GAIgASgJIi0KF0V4ZWN1dGlvblJlc3VtZWRQYXlsb2FkEhIKCnJlc3VtZWRfYnkYASABKAkiQQoZRXhlY3V0aW9uQ2FuY2VsbGVkUGF5bG9hZBIOCgZyZWFzb24YASABKAkSFAoMY2FuY2VsbGVkX2J5GAIgASgJIkMKGkV4ZWN1dGlvblRlcm1pbmF0ZWRQYXlsb2FkEg4KBnJlYXNvbhgBIAEoCRIVCg10ZXJtaW5hdGVkX2J5GAIgASgJIqEBChJUYXNrU3RhcnRlZFBheWxvYWQSQwoJdGFza19raW5kGAEgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0tpbmQSLgoNaW5wdXRfc3VtbWFyeRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoOYXR0ZW1wdF9udW1iZXIYAyABKAUiywEKFFRhc2tDb21wbGV0ZWRQYXlsb2FkEkMKCXRhc2tfa2luZBgBIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tLaW5kEhMKC2R1cmF0aW9uX21zGAIgASgDEi8KDm91dHB1dF9zdW1tYXJ5GAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBITCgtjb3N0X21pY3JvcxgEIAEoAxITCgt0b2tlbnNfdXNlZBgFIAEoAyK+AQoRVGFza0ZhaWxlZFBheWxvYWQSQwoJdGFza19raW5kGAEgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0tpbmQSDQoFZXJyb3IYAiABKAkSFgoOYXR0ZW1wdF9udW1iZXIYAyABKAUSFAoMbWF4X2F0dGVtcHRzGAQgASgFEhIKCndpbGxfcmV0cnkYBSABKAgSEwoLZHVyYXRpb25fbXMYBiABKAMiaQoSVGFza1NraXBwZWRQYXlsb2FkEkMKCXRhc2tfa2luZBgBIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tLaW5kEg4KBnJlYXNvbhgCIAEoCSJVChNUYXNrUmV0cnlpbmdQYXlsb2FkEhYKDmZhaWxlZF9hdHRlbXB0GAEgASgFEhQKDG5leHRfYXR0ZW1wdBgCIAEoBRIQCghkZWxheV9tcxgDIAEoAyJiChdBZ2VudENhbGxTdGFydGVkUGF5bG9hZBIaChJjaGlsZF9leGVjdXRpb25faWQYASABKAkSEgoKYWdlbnRfc2x1ZxgCIAEoCRIXCg9tZXNzYWdlX3N1bW1hcnkYAyABKAki5wEKGEFnZW50Q2FsbFByb2dyZXNzUGF5bG9hZBIaChJjaGlsZF9leGVjdXRpb25faWQYASABKAkSSQoLYWdlbnRfcGhhc2UYAiABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRXhlY3V0aW9uUGhhc2USGQoRY3VycmVudF90b29sX25hbWUYAyABKAkSFwoPdG9rZW5zX2NvbnN1bWVkGAQgASgDEhYKDm1lc3NhZ2VzX2NvdW50GAUgASgFEhgKEHRvb2xfY2FsbHNfY291bnQYBiABKAUi1AEKGUFnZW50Q2FsbENvbXBsZXRlZFBheWxvYWQSGgoSY2hpbGRfZXhlY3V0aW9uX2lkGAEgASgJEkkKC2FnZW50X3BoYXNlGAIgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblBoYXNlEhMKC2R1cmF0aW9uX21zGAMgASgDEhcKD3Rva2Vuc19jb25zdW1lZBgEIAEoAxITCgtjb3N0X21pY3JvcxgFIAEoAxINCgVlcnJvchgGIAEoCSI0ChVIdW1hbklucHV0T3V0Y29tZUluZm8SDAoEbmFtZRgBIAEoCRINCgVsYWJlbBgCIAEoCSLfAgoYQXBwcm92YWxSZXF1ZXN0ZWRQYXlsb2FkEg4KBnByb21wdBgBIAEoCRIRCglhcHByb3ZlcnMYAiADKAkSFwoPdGltZW91dF9zZWNvbmRzGAMgASgFEhQKDHRvb2xfY2FsbF9pZBgEIAEoCRIaChJjaGlsZF9leGVjdXRpb25faWQYBSABKAkSUAoIb3V0Y29tZXMYBiADKAsyPi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuSHVtYW5JbnB1dE91dGNvbWVJbmZvEiwKC2Zvcm1fc2NoZW1hGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgdwYXlsb2FkGAggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg8KB3VpX2hpbnQYCSABKAkSGwoTcGF5bG9hZF9hcnRpZmFjdF9pZBgKIAEoCSLxAQoXQXBwcm92YWxSZXNvbHZlZFBheWxvYWQSRAoGYWN0aW9uGAEgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uEhMKC3Jlc29sdmVkX2J5GAIgASgJEg8KB2NvbW1lbnQYAyABKAkSGAoQd2FpdF9kdXJhdGlvbl9tcxgEIAEoAxJQChFyZXNvbHZlZF9ieV9hY3RvchgFIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3Ii9wEKF0J1ZGdldENoZWNrcG9pbnRQYXlsb2FkEhwKFGNvc3RfY29uc3VtZWRfbWljcm9zGAEgASgDEh0KFWNvc3RfcmVtYWluaW5nX21pY3JvcxgCIAEoAxIXCg90b2tlbnNfY29uc3VtZWQYAyABKAMSGAoQdG9rZW5zX3JlbWFpbmluZxgEIAEoAxIaChJ0aHJlc2hvbGRfYnJlYWNoZWQYBSABKAgSUAoSb25fZXhjZWVkZWRfcG9saWN5GAYgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLkJ1ZGdldEV4Y2VlZGVkUG9saWN5Il4KFVNpZ25hbFJlY2VpdmVkUGF5bG9hZBITCgtzaWduYWxfbmFtZRgBIAEoCRIwCg9wYXlsb2FkX3N1bW1hcnkYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IlYKE0V2ZW50RW1pdHRlZFBheWxvYWQSEgoKZXZlbnRfdHlwZRgBIAEoCRIUCgxldmVudF9zb3VyY2UYAiABKAkSFQoNZXZlbnRfc3ViamVjdBgDIAEoCSJtChZBcnRpZmFjdENyZWF0ZWRQYXlsb2FkEhMKC2FydGlmYWN0X2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIUCgxjb250ZW50X3R5cGUYAyABKAkSEgoKc2l6ZV9ieXRlcxgEIAEoAyqJBAoRV29ya2Zsb3dFdmVudFR5cGUSIwofd29ya2Zsb3dfZXZlbnRfdHlwZV91bnNwZWNpZmllZBAAEhUKEWV4ZWN1dGlvbl9zdGFydGVkEAESFwoTZXhlY3V0aW9uX2NvbXBsZXRlZBACEhQKEGV4ZWN1dGlvbl9mYWlsZWQQAxIUChBleGVjdXRpb25fcGF1c2VkEAQSFQoRZXhlY3V0aW9uX3Jlc3VtZWQQBRIXChNleGVjdXRpb25fY2FuY2VsbGVkEAYSGAoUZXhlY3V0aW9uX3Rlcm1pbmF0ZWQQBxIQCgx0YXNrX3N0YXJ0ZWQQCxISCg50YXNrX2NvbXBsZXRlZBAMEg8KC3Rhc2tfZmFpbGVkEA0SEAoMdGFza19za2lwcGVkEA4SEQoNdGFza19yZXRyeWluZxAPEhYKEmFnZW50X2NhbGxfc3RhcnRlZBAVEhcKE2FnZW50X2NhbGxfcHJvZ3Jlc3MQFhIYChRhZ2VudF9jYWxsX2NvbXBsZXRlZBAXEhYKEmFwcHJvdmFsX3JlcXVlc3RlZBAfEhUKEWFwcHJvdmFsX3Jlc29sdmVkECASFQoRYnVkZ2V0X2NoZWNrcG9pbnQQKRITCg9zaWduYWxfcmVjZWl2ZWQQMxIRCg1ldmVudF9lbWl0dGVkEDQSFAoQYXJ0aWZhY3RfY3JlYXRlZBA1YgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_workflow_v1_enum,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_struct]);var WorkflowEventType;(function(WorkflowEventType2){WorkflowEventType2[WorkflowEventType2.workflow_event_type_unspecified=0]="workflow_event_type_unspecified",WorkflowEventType2[WorkflowEventType2.execution_started=1]="execution_started",WorkflowEventType2[WorkflowEventType2.execution_completed=2]="execution_completed",WorkflowEventType2[WorkflowEventType2.execution_failed=3]="execution_failed",WorkflowEventType2[WorkflowEventType2.execution_paused=4]="execution_paused",WorkflowEventType2[WorkflowEventType2.execution_resumed=5]="execution_resumed",WorkflowEventType2[WorkflowEventType2.execution_cancelled=6]="execution_cancelled",WorkflowEventType2[WorkflowEventType2.execution_terminated=7]="execution_terminated",WorkflowEventType2[WorkflowEventType2.task_started=11]="task_started",WorkflowEventType2[WorkflowEventType2.task_completed=12]="task_completed",WorkflowEventType2[WorkflowEventType2.task_failed=13]="task_failed",WorkflowEventType2[WorkflowEventType2.task_skipped=14]="task_skipped",WorkflowEventType2[WorkflowEventType2.task_retrying=15]="task_retrying",WorkflowEventType2[WorkflowEventType2.agent_call_started=21]="agent_call_started",WorkflowEventType2[WorkflowEventType2.agent_call_progress=22]="agent_call_progress",WorkflowEventType2[WorkflowEventType2.agent_call_completed=23]="agent_call_completed",WorkflowEventType2[WorkflowEventType2.approval_requested=31]="approval_requested",WorkflowEventType2[WorkflowEventType2.approval_resolved=32]="approval_resolved",WorkflowEventType2[WorkflowEventType2.budget_checkpoint=41]="budget_checkpoint",WorkflowEventType2[WorkflowEventType2.signal_received=51]="signal_received",WorkflowEventType2[WorkflowEventType2.event_emitted=52]="event_emitted",WorkflowEventType2[WorkflowEventType2.artifact_created=53]="artifact_created"})(WorkflowEventType||(WorkflowEventType={}));var file_ai_stigmer_agentic_workflowexecution_v1_io=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvaW8ucHJvdG8SJ2FpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MSIsChNXb3JrZmxvd0V4ZWN1dGlvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiIwoKV29ya2Zsb3dJZBIVCgV2YWx1ZRgBIAEoCUIGukgDyAEBInkKFVdvcmtmbG93RXhlY3V0aW9uTGlzdBITCgt0b3RhbF9wYWdlcxgBIAEoBRJLCgdlbnRyaWVzGAIgAygLMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uItcCCh1MaXN0V29ya2Zsb3dFeGVjdXRpb25zUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCRJGCgVwaGFzZRgDIAEoDjI3LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25QaGFzZRIMCgR0YWdzGAQgAygJElAKBmZpbHRlchgFIAEoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25GaWx0ZXJDcml0ZXJpYRJPCgpzb3J0X2ZpZWxkGAYgASgOMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblNvcnRGaWVsZBIWCg5zb3J0X2FzY2VuZGluZxgHIAEoCCKoAgonTGlzdFdvcmtmbG93RXhlY3V0aW9uc0J5V29ya2Zsb3dSZXF1ZXN0EhsKC3dvcmtmbG93X2lkGAEgASgJQga6SAPIAQESEQoJcGFnZV9zaXplGAIgASgFEhIKCnBhZ2VfdG9rZW4YAyABKAkSUAoGZmlsdGVyGAQgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvbkZpbHRlckNyaXRlcmlhEk8KCnNvcnRfZmllbGQYBSABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuRXhlY3V0aW9uU29ydEZpZWxkEhYKDnNvcnRfYXNjZW5kaW5nGAYgASgIIuYCCiJXb3JrZmxvd0V4ZWN1dGlvblVwZGF0ZVN0YXR1c0lucHV0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARJYCgZzdGF0dXMYAiABKAsyQC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb25TdGF0dXNCBrpIA8gBARJPCgZldmVudHMYCiADKAsyPy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb25FdmVudBIgChh1cGRhdGVfcGVuZGluZ19hcHByb3ZhbHMYCyABKAgSIwobdXBkYXRlX3BlbmRpbmdfZmlsZV9yZXZpZXdzGAwgASgIEi8KJ3BlbmRpbmdfdXBkYXRlX2NoaWxkX2FnZW50X2V4ZWN1dGlvbl9pZBgNIAEoCSK+AQobU3VibWl0V29ya2Zsb3dBcHByb3ZhbElucHV0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIdCgx0b29sX2NhbGxfaWQYAiABKAlCB7pIBHICEAESUAoGYWN0aW9uGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uQgq6SAeCAQQQASAAEg8KB2NvbW1lbnQYBCABKAkioQMKH1N1Ym1pdFdvcmtmbG93RmlsZURlY2lzaW9uSW5wdXQSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABEikKGGNoaWxkX2FnZW50X2V4ZWN1dGlvbl9pZBgCIAEoCUIHukgEcgIQARIeCg1jaGFuZ2Vfc2V0X2lkGAMgASgJQge6SARyAhABElIKBXNjb3BlGAQgASgOMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVEZWNpc2lvblNjb3BlQgq6SAeCAQQQASAAEhYKDmZpbGVfY2hhbmdlX2lkGAUgASgJElQKBmFjdGlvbhgGIAEoDjI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25BY3Rpb25CCrpIB4IBBBABIAASIAoPZXhwZWN0ZWRfZGlnZXN0GAcgASgJQge6SARyAhABEg4KBnJlYXNvbhgIIAEoCRIgChhhY2tub3dsZWRnZV91bnJldmlld2FibGUYCSABKAgixQEKH1N1Ym1pdFdvcmtmbG93VGFza0FwcHJvdmFsSW5wdXQSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABEhoKCXRhc2tfbmFtZRgCIAEoCUIHukgEcgIQARIYCgdvdXRjb21lGAMgASgJQge6SARyAhABEioKCWZvcm1fZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEAoIcmV2aWV3ZXIYBSABKAkSDwoHY29tbWVudBgGIAEoCSJBCiFTdWJzY3JpYmVXb3JrZmxvd0V4ZWN1dGlvblJlcXVlc3QSHAoMZXhlY3V0aW9uX2lkGAEgASgJQga6SAPIAQEiQwocQ2FuY2VsV29ya2Zsb3dFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQARIOCgZyZWFzb24YAiABKAkiRgofVGVybWluYXRlV29ya2Zsb3dFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQARIOCgZyZWFzb24YAiABKAkiRAodUmVjb3ZlcldvcmtmbG93RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAESDgoGcmVhc29uGAIgASgJIkIKG1BhdXNlV29ya2Zsb3dFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQARIOCgZyZWFzb24YAiABKAkiMwocUmVzdW1lV29ya2Zsb3dFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQASKRAQoPU2VuZFNpZ25hbElucHV0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIcCgtzaWduYWxfbmFtZRgCIAEoCUIHukgEcgIQARIoCgdwYXlsb2FkGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIXCg9pZGVtcG90ZW5jeV9rZXkYBCABKAkiwgEKEkdldEV2ZW50TG9nUmVxdWVzdBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAESFgoOYWZ0ZXJfc2VxdWVuY2UYAiABKAQSTwoLZXZlbnRfdHlwZXMYAyADKA4yOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFdmVudFR5cGUSEQoJdGFza19uYW1lGAQgASgJEhEKCXBhZ2Vfc2l6ZRgFIAEoBSKRAQoTR2V0RXZlbnRMb2dSZXNwb25zZRJPCgZldmVudHMYASADKAsyPy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb25FdmVudBIQCghoYXNfbW9yZRgCIAEoCBIXCg9sYXRlc3Rfc2VxdWVuY2UYAyABKAQioAEKFlN1YnNjcmliZUV2ZW50c1JlcXVlc3QSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABEhYKDmFmdGVyX3NlcXVlbmNlGAIgASgEEk8KC2V2ZW50X3R5cGVzGAMgAygOMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXZlbnRUeXBlIowDChdFeGVjdXRpb25GaWx0ZXJDcml0ZXJpYRJHCgZwaGFzZXMYASADKA4yNy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuRXhlY3V0aW9uUGhhc2USMQoNc3RhcnRlZF9hZnRlchgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMgoOc3RhcnRlZF9iZWZvcmUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KDG1pbl9kdXJhdGlvbhgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIvCgxtYXhfZHVyYXRpb24YBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SFwoPbWluX2Nvc3RfbWljcm9zGAYgASgDEhcKD21heF9jb3N0X21pY3JvcxgHIAEoAxIYChBmYWlsZWRfdGFza19uYW1lGAggASgJEhMKC2hhc19yZXRyaWVzGAkgASgIIpgBChpHZXRFeGVjdXRpb25TdW1tYXJ5UmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAESTwoLdGltZV93aW5kb3cYAiABKA4yOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuU3VtbWFyeVRpbWVXaW5kb3cSEwoLd29ya2Zsb3dfaWQYAyABKAkiowQKEEV4ZWN1dGlvblN1bW1hcnkSFAoMYWN0aXZlX2NvdW50GAEgASgFEmAKDHBoYXNlX2NvdW50cxgCIAMoCzJKLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25TdW1tYXJ5LlBoYXNlQ291bnRzRW50cnkSUAoKdG90YWxfY29zdBgDIAEoCzI8LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0Nvc3RTdW1tYXJ5Ei8KDGF2Z19kdXJhdGlvbhgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhJbChV0b3BfZmFpbGluZ193b3JrZmxvd3MYBSADKAsyPC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dGYWlsdXJlUmFuaxJYChBjb3N0X2J5X3dvcmtmbG93GAYgAygLMj4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93Q29zdEJyZWFrZG93bhITCgt0b3RhbF9jb3VudBgHIAEoBRIUCgxzdWNjZXNzX3JhdGUYCCABKAEaMgoQUGhhc2VDb3VudHNFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBImYKE1dvcmtmbG93Q29zdFN1bW1hcnkSFgoOdG90YWxfY29zdF91c2QYASABKAESGgoSdG90YWxfaW5wdXRfdG9rZW5zGAIgASgDEhsKE3RvdGFsX291dHB1dF90b2tlbnMYAyABKAMiWgoTV29ya2Zsb3dGYWlsdXJlUmFuaxIVCg13b3JrZmxvd19zbHVnGAEgASgJEhUKDXdvcmtmbG93X25hbWUYAiABKAkSFQoNZmFpbHVyZV9jb3VudBgDIAEoBSJ2ChVXb3JrZmxvd0Nvc3RCcmVha2Rvd24SFQoNd29ya2Zsb3dfc2x1ZxgBIAEoCRIVCg13b3JrZmxvd19uYW1lGAIgASgJEhYKDnRvdGFsX2Nvc3RfdXNkGAMgASgBEhcKD2V4ZWN1dGlvbl9jb3VudBgEIAEoBSJaChtMaXN0UGVuZGluZ0FwcHJvdmFsc1JlcXVlc3QSFAoDb3JnGAEgASgJQge6SARyAhABEhEKCXBhZ2Vfc2l6ZRgCIAEoBRISCgpwYWdlX3Rva2VuGAMgASgJIoUCCg9QZW5kaW5nQXBwcm92YWwSFAoMZXhlY3V0aW9uX2lkGAEgASgJEhUKDXdvcmtmbG93X25hbWUYAiABKAkSEQoJdGFza19uYW1lGAMgASgJEhEKCXJlcXVlc3RlchgEIAEoCRIwCgxyZXF1ZXN0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnRpbWVvdXRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKC2Zvcm1fc2NoZW1hGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgd1aV9oaW50GAggASgJIo8BChRQZW5kaW5nQXBwcm92YWxzTGlzdBJJCgdlbnRyaWVzGAEgAygLMjguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlBlbmRpbmdBcHByb3ZhbBITCgt0b3RhbF9jb3VudBgCIAEoBRIXCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAkqwgEKEkV4ZWN1dGlvblNvcnRGaWVsZBIkCiBFWEVDVVRJT05fU09SVF9GSUVMRF9VTlNQRUNJRklFRBAAEiMKH0VYRUNVVElPTl9TT1JUX0ZJRUxEX1NUQVJURURfQVQQARIhCh1FWEVDVVRJT05fU09SVF9GSUVMRF9EVVJBVElPThACEh0KGUVYRUNVVElPTl9TT1JUX0ZJRUxEX0NPU1QQAxIfChtFWEVDVVRJT05fU09SVF9GSUVMRF9TVEFUVVMQBCq/AQoRU3VtbWFyeVRpbWVXaW5kb3cSIwofU1VNTUFSWV9USU1FX1dJTkRPV19VTlNQRUNJRklFRBAAEiAKHFNVTU1BUllfVElNRV9XSU5ET1dfTEFTVF8yNEgQARIfChtTVU1NQVJZX1RJTUVfV0lORE9XX0xBU1RfN0QQAhIgChxTVU1NQVJZX1RJTUVfV0lORE9XX0xBU1RfMzBEEAMSIAocU1VNTUFSWV9USU1FX1dJTkRPV19BTExfVElNRRAEYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_workflowexecution_v1_api,file_ai_stigmer_agentic_workflowexecution_v1_enum,file_ai_stigmer_agentic_workflowexecution_v1_event,file_buf_validate_validate,file_google_protobuf_duration,file_google_protobuf_struct,file_google_protobuf_timestamp]);var GetEventLogResponseSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_io,17);var PendingApprovalsListSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_io,27),ExecutionSortField;(function(ExecutionSortField2){ExecutionSortField2[ExecutionSortField2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionSortField2[ExecutionSortField2.STARTED_AT=1]="STARTED_AT",ExecutionSortField2[ExecutionSortField2.DURATION=2]="DURATION",ExecutionSortField2[ExecutionSortField2.COST=3]="COST",ExecutionSortField2[ExecutionSortField2.STATUS=4]="STATUS"})(ExecutionSortField||(ExecutionSortField={}));var SummaryTimeWindow;(function(SummaryTimeWindow2){SummaryTimeWindow2[SummaryTimeWindow2.UNSPECIFIED=0]="UNSPECIFIED",SummaryTimeWindow2[SummaryTimeWindow2.LAST_24H=1]="LAST_24H",SummaryTimeWindow2[SummaryTimeWindow2.LAST_7D=2]="LAST_7D",SummaryTimeWindow2[SummaryTimeWindow2.LAST_30D=3]="LAST_30D",SummaryTimeWindow2[SummaryTimeWindow2.ALL_TIME=4]="ALL_TIME"})(SummaryTimeWindow||(SummaryTimeWindow={}));var file_ai_stigmer_agentic_workflowexecution_v1_command=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvY29tbWFuZC5wcm90bxInYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxMo0VCiJXb3JrZmxvd0V4ZWN1dGlvbkNvbW1hbmRDb250cm9sbGVyEoYBCgZjcmVhdGUSOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24aOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24iBNC4GAESwgEKBnVwZGF0ZRI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbho6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiJAwrgYPAgCEDQiC21ldGFkYXRhLmlkKil1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHdvcmtmbG93IGV4ZWN1dGlvbhLhAQoMdXBkYXRlU3RhdHVzEksuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uVXBkYXRlU3RhdHVzSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24iSMK4GEQIAhA0IgxleGVjdXRpb25faWQqMHVuYXV0aG9yaXplZCB0byB1cGRhdGUgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXR1cxLiAQoOc3VibWl0QXBwcm92YWwSRC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuU3VibWl0V29ya2Zsb3dBcHByb3ZhbElucHV0GjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIk7CuBhKCAIQNCIMZXhlY3V0aW9uX2lkKjZ1bmF1dGhvcml6ZWQgdG8gc3VibWl0IGFwcHJvdmFsIGZvciB3b3JrZmxvdyBleGVjdXRpb24S7wEKEnN1Ym1pdEZpbGVEZWNpc2lvbhJILmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5TdWJtaXRXb3JrZmxvd0ZpbGVEZWNpc2lvbklucHV0GjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIlPCuBhPCAIQNCIMZXhlY3V0aW9uX2lkKjt1bmF1dGhvcml6ZWQgdG8gc3VibWl0IGZpbGUgZGVjaXNpb24gZm9yIHdvcmtmbG93IGV4ZWN1dGlvbhLpAQoac3VibWl0V29ya2Zsb3dUYXNrQXBwcm92YWwSSC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuU3VibWl0V29ya2Zsb3dUYXNrQXBwcm92YWxJbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiJFwrgYQQgCEDQiDGV4ZWN1dGlvbl9pZCotdW5hdXRob3JpemVkIHRvIHN1Ym1pdCB3b3JrZmxvdyB0YXNrIGFwcHJvdmFsEq8BCgZkZWxldGUSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI6wrgYNggCEDQiBXZhbHVlKil1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIHdvcmtmbG93IGV4ZWN1dGlvbhLNAQoKc2VuZFNpZ25hbBI4LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5TZW5kU2lnbmFsSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24iScK4GEUIAhA0IgxleGVjdXRpb25faWQqMXVuYXV0aG9yaXplZCB0byBzZW5kIHNpZ25hbCB0byB3b3JrZmxvdyBleGVjdXRpb24SxAEKBmNhbmNlbBJFLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5DYW5jZWxXb3JrZmxvd0V4ZWN1dGlvbklucHV0GjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIjfCuBgzCAIQNCICaWQqKXVuYXV0aG9yaXplZCB0byBjYW5jZWwgd29ya2Zsb3cgZXhlY3V0aW9uEs0BCgl0ZXJtaW5hdGUSSC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuVGVybWluYXRlV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI6wrgYNggCEDQiAmlkKix1bmF1dGhvcml6ZWQgdG8gdGVybWluYXRlIHdvcmtmbG93IGV4ZWN1dGlvbhLHAQoHcmVjb3ZlchJGLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5SZWNvdmVyV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI4wrgYNAgCEDQiAmlkKip1bmF1dGhvcml6ZWQgdG8gcmVjb3ZlciB3b3JrZmxvdyBleGVjdXRpb24SwQEKBXBhdXNlEkQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlBhdXNlV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI2wrgYMggCEDQiAmlkKih1bmF1dGhvcml6ZWQgdG8gcGF1c2Ugd29ya2Zsb3cgZXhlY3V0aW9uEsQBCgZyZXN1bWUSRS5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuUmVzdW1lV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI3wrgYMwgCEDQiAmlkKil1bmF1dGhvcml6ZWQgdG8gcmVzdW1lIHdvcmtmbG93IGV4ZWN1dGlvbhoEoP8rNGIGcHJvdG8z",[file_ai_stigmer_agentic_workflowexecution_v1_api,file_ai_stigmer_agentic_workflowexecution_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowExecutionCommandController=serviceDesc(file_ai_stigmer_agentic_workflowexecution_v1_command,0);var file_ai_stigmer_agentic_workflowexecution_v1_query=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvcXVlcnkucHJvdG8SJ2FpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MTKDDAogV29ya2Zsb3dFeGVjdXRpb25RdWVyeUNvbnRyb2xsZXISuAEKA2dldBI8LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbklkGjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIjfCuBgzCAEQNCIFdmFsdWUqJnVuYXV0aG9yaXplZCB0byBnZXQgd29ya2Zsb3cgZXhlY3V0aW9uEpQBCgRsaXN0EkYuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkxpc3RXb3JrZmxvd0V4ZWN1dGlvbnNSZXF1ZXN0Gj4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uTGlzdCIE0LgYARKoAQoObGlzdEJ5V29ya2Zsb3cSUC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuTGlzdFdvcmtmbG93RXhlY3V0aW9uc0J5V29ya2Zsb3dSZXF1ZXN0Gj4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uTGlzdCIE0LgYARLcAQoJc3Vic2NyaWJlEkouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlN1YnNjcmliZVdvcmtmbG93RXhlY3V0aW9uUmVxdWVzdBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiJFwrgYQQgBEDQiDGV4ZWN1dGlvbl9pZCotdW5hdXRob3JpemVkIHRvIGdldCB3b3JrZmxvdyBleGVjdXRpb24gc3RyZWFtMAES0gEKC2dldEV2ZW50TG9nEjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkdldEV2ZW50TG9nUmVxdWVzdBo8LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5HZXRFdmVudExvZ1Jlc3BvbnNlIkjCuBhECAEQNCIMZXhlY3V0aW9uX2lkKjB1bmF1dGhvcml6ZWQgdG8gZ2V0IHdvcmtmbG93IGV4ZWN1dGlvbiBldmVudCBsb2cS5QEKD3N1YnNjcmliZUV2ZW50cxI/LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5TdWJzY3JpYmVFdmVudHNSZXF1ZXN0Gj8uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uRXZlbnQiTsK4GEoIARA0IgxleGVjdXRpb25faWQqNnVuYXV0aG9yaXplZCB0byBzdWJzY3JpYmUgdG8gd29ya2Zsb3cgZXhlY3V0aW9uIGV2ZW50czABEpsBChNnZXRFeGVjdXRpb25TdW1tYXJ5EkMuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkdldEV4ZWN1dGlvblN1bW1hcnlSZXF1ZXN0GjkuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblN1bW1hcnkiBNC4GAESoQEKFGxpc3RQZW5kaW5nQXBwcm92YWxzEkQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkxpc3RQZW5kaW5nQXBwcm92YWxzUmVxdWVzdBo9LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5QZW5kaW5nQXBwcm92YWxzTGlzdCIE0LgYARoEoP8rNGIGcHJvdG8z",[file_ai_stigmer_agentic_workflowexecution_v1_api,file_ai_stigmer_agentic_workflowexecution_v1_event,file_ai_stigmer_agentic_workflowexecution_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowExecutionQueryController=serviceDesc(file_ai_stigmer_agentic_workflowexecution_v1_query,0);var file_google_rpc_error_details=fileDesc("Ch5nb29nbGUvcnBjL2Vycm9yX2RldGFpbHMucHJvdG8SCmdvb2dsZS5ycGMikwEKCUVycm9ySW5mbxIOCgZyZWFzb24YASABKAkSDgoGZG9tYWluGAIgASgJEjUKCG1ldGFkYXRhGAMgAygLMiMuZ29vZ2xlLnJwYy5FcnJvckluZm8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOwoJUmV0cnlJbmZvEi4KC3JldHJ5X2RlbGF5GAEgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIjIKCURlYnVnSW5mbxIVCg1zdGFja19lbnRyaWVzGAEgAygJEg4KBmRldGFpbBgCIAEoCSKPAwoMUXVvdGFGYWlsdXJlEjYKCnZpb2xhdGlvbnMYASADKAsyIi5nb29nbGUucnBjLlF1b3RhRmFpbHVyZS5WaW9sYXRpb24axgIKCVZpb2xhdGlvbhIPCgdzdWJqZWN0GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhMKC2FwaV9zZXJ2aWNlGAMgASgJEhQKDHF1b3RhX21ldHJpYxgEIAEoCRIQCghxdW90YV9pZBgFIAEoCRJRChBxdW90YV9kaW1lbnNpb25zGAYgAygLMjcuZ29vZ2xlLnJwYy5RdW90YUZhaWx1cmUuVmlvbGF0aW9uLlF1b3RhRGltZW5zaW9uc0VudHJ5EhMKC3F1b3RhX3ZhbHVlGAcgASgDEh8KEmZ1dHVyZV9xdW90YV92YWx1ZRgIIAEoA0gAiAEBGjYKFFF1b3RhRGltZW5zaW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCFQoTX2Z1dHVyZV9xdW90YV92YWx1ZSKVAQoTUHJlY29uZGl0aW9uRmFpbHVyZRI9Cgp2aW9sYXRpb25zGAEgAygLMikuZ29vZ2xlLnJwYy5QcmVjb25kaXRpb25GYWlsdXJlLlZpb2xhdGlvbho/CglWaW9sYXRpb24SDAoEdHlwZRgBIAEoCRIPCgdzdWJqZWN0GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIswBCgpCYWRSZXF1ZXN0Ej8KEGZpZWxkX3Zpb2xhdGlvbnMYASADKAsyJS5nb29nbGUucnBjLkJhZFJlcXVlc3QuRmllbGRWaW9sYXRpb24afQoORmllbGRWaW9sYXRpb24SDQoFZmllbGQYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDgoGcmVhc29uGAMgASgJEjcKEWxvY2FsaXplZF9tZXNzYWdlGAQgASgLMhwuZ29vZ2xlLnJwYy5Mb2NhbGl6ZWRNZXNzYWdlIjcKC1JlcXVlc3RJbmZvEhIKCnJlcXVlc3RfaWQYASABKAkSFAoMc2VydmluZ19kYXRhGAIgASgJImAKDFJlc291cmNlSW5mbxIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhUKDXJlc291cmNlX25hbWUYAiABKAkSDQoFb3duZXIYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkiVgoESGVscBIkCgVsaW5rcxgBIAMoCzIVLmdvb2dsZS5ycGMuSGVscC5MaW5rGigKBExpbmsSEwoLZGVzY3JpcHRpb24YASABKAkSCwoDdXJsGAIgASgJIjMKEExvY2FsaXplZE1lc3NhZ2USDgoGbG9jYWxlGAEgASgJEg8KB21lc3NhZ2UYAiABKAlCbAoOY29tLmdvb2dsZS5ycGNCEUVycm9yRGV0YWlsc1Byb3RvUAFaP2dvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvcnBjL2VycmRldGFpbHM7ZXJyZGV0YWlsc6ICA1JQQ2IGcHJvdG8z",[file_google_protobuf_duration]),ErrorInfoSchema=messageDesc2(file_google_rpc_error_details,0);var CONNECT_CODE_TO_CATEGORY={[Code.Unauthenticated]:"auth",[Code.PermissionDenied]:"permission",[Code.NotFound]:"not-found",[Code.InvalidArgument]:"validation",[Code.FailedPrecondition]:"validation",[Code.OutOfRange]:"validation",[Code.AlreadyExists]:"validation",[Code.Aborted]:"validation",[Code.Internal]:"server",[Code.Unknown]:"server",[Code.DataLoss]:"server",[Code.Unimplemented]:"server",[Code.Unavailable]:"unavailable",[Code.DeadlineExceeded]:"unavailable",[Code.ResourceExhausted]:"unavailable",[Code.Canceled]:"cancelled"};var rpcMetadataStore=new WeakMap;function annotateRpcError(error3,metadata){rpcMetadataStore.set(error3,metadata)}function createAuthInterceptor(getAccessToken){return next=>async request3=>{let token=await getAccessToken();return token&&request3.header.set("Authorization",`Bearer ${token}`),next(request3)}}var rpcMetadataInterceptor=next=>async request3=>{try{return await next(request3)}catch(error3){if(error3!==null&&typeof error3=="object"){let segments=request3.url.split("/"),method=segments.at(-1)??"",service=segments.at(-2)??"";annotateRpcError(error3,{method:method.charAt(0).toLowerCase()+method.slice(1),path:`/${service}/${method}`})}throw error3}},errorStripInterceptor=next=>async request3=>{try{return await next(request3)}catch(error3){throw error3 instanceof Error&&error3.message&&(error3.message=error3.message.replace(/^\[.*?]\s*/,"")),error3}};function createNodeTransport(config2){let tokenProvider=config2.apiKey?()=>config2.apiKey:config2.getAccessToken??(()=>null),interceptors=[createAuthInterceptor(tokenProvider),rpcMetadataInterceptor,errorStripInterceptor];return config2.protocol==="grpc"?createGrpcTransport({baseUrl:config2.baseUrl,interceptors}):createGrpcWebTransport({baseUrl:config2.baseUrl,httpVersion:"2",interceptors})}function normalizeEndpoint(raw){let endpoint=raw.trim();if(endpoint==="")throw new Error("normalizeEndpoint: endpoint must not be empty");if(endpoint=endpoint.replace(/^https?:\/\//i,"").replace(/\/+$/,""),endpoint==="")throw new Error("normalizeEndpoint: endpoint has no host");let{host,port}=splitHostPort(endpoint);return port!==""?`${port==="443"?"https":"http"}://${endpoint}`:isLoopbackHost(host)?`http://${endpoint}`:`https://${endpoint}:443`}function splitHostPort(authority){if(authority.startsWith("[")){let close=authority.indexOf("]");if(close===-1)return{host:authority,port:""};let host=authority.slice(0,close+1),rest=authority.slice(close+1);return rest.startsWith(":")?{host,port:rest.slice(1)}:{host,port:""}}let lastColon=authority.lastIndexOf(":");return lastColon===-1||authority.indexOf(":")!==lastColon?{host:authority,port:""}:{host:authority.slice(0,lastColon),port:authority.slice(lastColon+1)}}function isLoopbackHost(host){return host==="localhost"||host==="127.0.0.1"||host==="::1"||host==="[::1]"}var DEFAULT_RPC_TIMEOUT_MS=3e4;function resolveToken(extra,fallback){let token=extra?.authInfo?.token;return token!==void 0&&token!==""?token:fallback}function transportForToken(serverAddress,token){return createNodeTransport({baseUrl:normalizeEndpoint(serverAddress),apiKey:token===""?void 0:token,protocol:"grpc"})}async function withTransport(serverAddress,token,fn){return fn(transportForToken(serverAddress,token),{timeoutMs:DEFAULT_RPC_TIMEOUT_MS})}async function withClient(service,serverAddress,token,fn){return withTransport(serverAddress,token,(transport,callOptions)=>fn(createClient(service,transport),callOptions))}function textResult(text){return{content:[{type:"text",text}]}}function errorResult(err){return{content:[{type:"text",text:err instanceof Error?err.message:String(err)}],isError:!0}}async function textOrError(produce){try{return textResult(await produce())}catch(err){return errorResult(err)}}function rpcError(err,resourceDescription){let ce=ConnectError.from(err);return log.warn("rpc call failed",{resource:resourceDescription,code:Code[ce.code],grpc_message:ce.rawMessage}),new Error(classifyCode(ce,resourceDescription))}function classifyCode(ce,resourceDescription){switch(ce.code){case Code.NotFound:return`${resourceDescription} not found. Verify the org and slug are correct.`;case Code.PermissionDenied:return`Permission denied for ${resourceDescription}. Check your API key permissions.`;case Code.Unauthenticated:return"Authentication failed. Check your API key.";case Code.Unavailable:return"Stigmer server is unavailable. Ensure it is running and reachable.";case Code.DeadlineExceeded:return"Request timed out contacting stigmer-server.";case Code.InvalidArgument:return ce.rawMessage;default:return`unexpected error: ${ce.rawMessage}`}}function toProtoJson(schema,message){return JSON.stringify(toJson(schema,message,{useProtoFieldName:!0}),null,2)}var DEFAULT_MESSAGE_LIMIT=5,COMPACT_PRUNED_STATUS_FIELDS=["resolved_context","approval_events","callback_token","sub_agent_executions"];async function fetchAgentExecution(serverAddress,token,executionId,view,messageLimit){if(executionId==="")throw new Error("execution_id is required");return withClient(AgentExecutionQueryController,serverAddress,token,async(client,callOptions)=>{let execution;try{execution=await client.get({value:executionId},callOptions)}catch(err){throw rpcError(err,`agent execution "${executionId}"`)}return view==="full"?toProtoJson(AgentExecutionSchema,execution):compactExecutionJson(execution,messageLimit)})}function compactExecution(execution,messageLimit){let data=JSON.parse(toProtoJson(AgentExecutionSchema,execution)),totalMessages=0,status=data.status;if(status!==void 0){let messages=Array.isArray(status.messages)?status.messages:[];totalMessages=messages.length,messages.length>messageLimit&&(status.messages=messages.slice(-messageLimit));for(let field of COMPACT_PRUNED_STATUS_FIELDS)delete status[field]}return{totalMessages,data}}function compactExecutionJson(execution,messageLimit){let{totalMessages,data}=compactExecution(execution,messageLimit);return JSON.stringify({view:"compact",total_messages:totalMessages,execution:data},null,2)}var APPROVAL_ACTIONS={approve:ApprovalAction.APPROVE,skip:ApprovalAction.SKIP,reject:ApprovalAction.REJECT};async function submitAgentApproval(serverAddress,token,args){let action=APPROVAL_ACTIONS[args.action];if(action===void 0)throw new Error(`unknown action "${args.action}"; valid actions: approve, skip, reject`);return withClient(AgentExecutionCommandController,serverAddress,token,async(client,callOptions)=>{try{let execution=await client.submitApproval({agentExecutionId:args.executionId,toolCallId:args.toolCallId,action,comment:args.comment??""},callOptions);return compactExecutionJson(execution,DEFAULT_MESSAGE_LIMIT)}catch(err){throw rpcError(err,`approval for agent execution "${args.executionId}"`)}})}var API_VERSION="agentic.stigmer.ai/v1";async function runAgent(serverAddress,token,args){let desc=`agent "${args.agent}" in org "${args.org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(AgentQueryController,transport),agentId;try{agentId=(await query.getByReference({org:args.org,kind:ApiResourceKind.agent,slug:args.agent},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let execution=create(AgentExecutionSchema,{apiVersion:API_VERSION,kind:"AgentExecution",metadata:create(ApiResourceMetadataSchema,{name:executionName(),org:args.org}),spec:create(AgentExecutionSpecSchema,{message:args.message===""?"execute":args.message,runtimeEnv:toExecutionValues(args.runtimeEnv),sessionId:args.sessionId??"",agentId})}),command=createClient(AgentExecutionCommandController,transport);try{let created=await command.create(execution,callOptions);return toProtoJson(AgentExecutionSchema,created)}catch(err){throw rpcError(err,`execution of ${desc}`)}})}function toExecutionValues(env){let out={};for(let[key,value]of Object.entries(env??{}))out[key]=create(ExecutionValueSchema,{value,isSecret:!1});return out}function executionName(){return`execution-${Date.now()*1e3}`}function registerAgentExecutionTools(server,target){return server.registerTool("run_agent",{description:"Start an agent execution (asynchronous). Returns immediately with the created execution (aex_* ID) while the run continues in the background \u2014 poll get_agent_execution to observe progress, pending approvals, and the final result. Omit session_id to start a fresh conversation; pass one to send a follow-up message into an existing session.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the agent (e.g. stigmer)."),agent:external_exports.string().describe("Agent slug \u2014 the unique identifier within the org (e.g. code-reviewer)."),message:external_exports.string().describe("The instruction or message for the agent to act on."),session_id:external_exports.string().optional().describe("Existing session ID to continue a conversation (from a previous execution's spec.session_id). Omit to start a new session."),runtime_env:external_exports.record(external_exports.string()).optional().describe("Non-secret runtime environment values (name \u2192 value) injected into the run. Secrets must come from Environments attached to the agent, never through this tool.")}},(args,extra)=>textOrError(()=>runAgent(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,agent:args.agent,message:args.message,sessionId:args.session_id,runtimeEnv:args.runtime_env}))),server.registerTool("get_agent_execution",{description:"Get an agent execution's status: phase, messages, pending approvals, errors, timing. Agent executions have no event log \u2014 poll this tool to track a run started with run_agent (terminal phases: completed, failed, cancelled, terminated). The default compact view returns the last few messages and omits bulky bookkeeping fields (resolved context, approval ledger, sub-agent transcripts); total_messages tells you when the tail is a window. Use view=full for the complete record.",inputSchema:{execution_id:external_exports.string().describe("Agent execution ID (aex_* format)."),view:external_exports.enum(["compact","full"]).optional().describe("Response shape: compact (default, bounded message tail) or full protojson."),message_limit:external_exports.number().int().min(1).optional().describe(`Compact view only: number of trailing messages to return (default ${DEFAULT_MESSAGE_LIMIT}).`)}},(args,extra)=>textOrError(()=>fetchAgentExecution(target.serverAddress,resolveToken(extra,target.apiKey),args.execution_id,args.view??"compact",args.message_limit??DEFAULT_MESSAGE_LIMIT))),server.registerTool("submit_agent_execution_approval",{description:"Approve, skip, or reject a tool call an agent execution is waiting on (phase waiting-for-approval). Find pending requests in get_agent_execution's status.pending_approvals \u2014 tool_call_id must match exactly. reject denies the single tool call and feeds your comment back to the agent, which then continues; to stop the whole run use cancel_execution instead.",inputSchema:{execution_id:external_exports.string().describe("Agent execution ID (aex_* format)."),tool_call_id:external_exports.string().describe("Tool call awaiting the decision (status.pending_approvals[].tool_call_id)."),action:external_exports.enum(["approve","skip","reject"]).describe("approve: execute the tool. skip: don't execute, agent proceeds without it. reject: don't execute, agent is told why (see comment) and adapts."),comment:external_exports.string().optional().describe("Reason for the decision; on reject it is fed back to the agent.")}},(args,extra)=>textOrError(()=>submitAgentApproval(target.serverAddress,resolveToken(extra,target.apiKey),{executionId:args.execution_id,toolCallId:args.tool_call_id,action:args.action,comment:args.comment}))),["run_agent","get_agent_execution","submit_agent_execution_approval"]}function parseResourceURI(uri){let segments=pathSegments(uri);if(segments.length!==2)throw new Error(`expected URI path with 2 segments (org/slug), got ${segments.length} in "${uri}"`);let org=segments[0]??"",slug=segments[1]??"";if(org===""||slug==="")throw new Error(`org and slug must be non-empty in "${uri}"`);return{org,slug}}function parseVersionedResourceURI(uri){let segments=pathSegments(uri),org="",slug="",version2="";switch(segments.length){case 2:org=segments[0]??"",slug=segments[1]??"";break;case 3:if(org=segments[0]??"",slug=segments[1]??"",version2=segments[2]??"",version2==="")throw new Error(`version segment must be non-empty in "${uri}"`);break;default:throw new Error(`expected URI path with 2 or 3 segments (org/slug[/version]), got ${segments.length} in "${uri}"`)}if(org===""||slug==="")throw new Error(`org and slug must be non-empty in "${uri}"`);return{org,slug,version:version2}}var kindToAuthority={agent:"agents",datastore:"datastores",environment:"environments",mcp_server:"mcp-servers",skill:"skills",workflow:"workflows"};function buildResourceURI(kind,org,slug){let authority=kindToAuthority[kind];return authority===void 0||org===""||slug===""?"":`stigmer://${authority}/${org}/${slug}`}function pathSegments(uri){let parsed;try{parsed=new URL(uri)}catch(err){throw new Error(`malformed resource URI "${uri}": ${err instanceof Error?err.message:err}`)}if(parsed.protocol!=="stigmer:")throw new Error(`unexpected URI scheme "${parsed.protocol.replace(/:$/,"")}", expected "stigmer"`);let trimmed=parsed.pathname.replace(/^\/+/,"").replace(/\/+$/,"");return trimmed===""?[]:trimmed.split("/")}function registerResource(server,target,opts){server.registerResource(opts.name,new ResourceTemplate(opts.template,{list:void 0}),{title:opts.title,description:opts.description,mimeType:"application/json"},async(uri,_vars,extra)=>{let{org,slug}=parseResourceURI(uri.href),text=await opts.fetch(target.serverAddress,resolveToken(extra,target.apiKey),org,slug);return jsonResource(uri.href,text)})}function registerVersionedResource(server,target,opts){server.registerResource(opts.name,new ResourceTemplate(opts.template,{list:void 0}),{title:opts.title,description:opts.description,mimeType:"application/json"},async(uri,_vars,extra)=>{let{org,slug,version:version2}=parseVersionedResourceURI(uri.href),text=await opts.fetch(target.serverAddress,resolveToken(extra,target.apiKey),org,slug,version2);return jsonResource(uri.href,text)})}function jsonResource(uri,text){return{contents:[{uri,mimeType:"application/json",text}]}}async function fetchAgent(serverAddress,token,org,slug){return withClient(AgentQueryController,serverAddress,token,async(client,callOptions)=>{try{let agent=await client.getByReference({org,kind:ApiResourceKind.agent,slug},callOptions);return toProtoJson(AgentSchema,agent)}catch(err){throw rpcError(err,`agent "${slug}" in org "${org}"`)}})}function registerAgentResources(server,target){return registerResource(server,target,{name:"stigmer_agent",title:"Stigmer Agent",description:"Full definition of a Stigmer agent, identified by organization and slug.",template:"stigmer://agents/{org}/{slug}",fetch:fetchAgent}),["stigmer_agent"]}function generateSlug(name){if(!name)return"";let out="",lastHyphen=!1;for(let ch of name.toLowerCase())ch>="a"&&ch<="z"||ch>="0"&&ch<="9"?(out+=ch,lastHyphen=!1):lastHyphen||(out+="-",lastHyphen=!0);return out.replace(/^-+/,"").replace(/-+$/,"")}function visibilityFromString(s){return s&&s.toUpperCase()==="PUBLIC"?ApiResourceVisibility.visibility_public:s&&s.toUpperCase()==="PRIVATE"?ApiResourceVisibility.visibility_private:ApiResourceVisibility.api_resource_visibility_unspecified}function enumFromString(enumObj,value){if(value===void 0)return 0;let v=enumObj[value];return typeof v=="number"?v:0}function toTimestamp(value){return timestampFromDate(new Date(value))}var AgentInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for UI and marketplace display."),icon_url:external_exports.string().optional().describe("Icon URL for marketplace and UI display. Must be a publicly accessible URL to an image (SVG, PNG, or JPEG)."),instructions:external_exports.string().optional().describe("System prompt defining the agent's behavior and personality."),mcp_server_usages:external_exports.array(external_exports.lazy(()=>McpServerUsageInputSchema)).optional().describe("MCP servers this agent can use. Each entry must reference a unique McpServer resource by slug."),skill_refs:external_exports.array(external_exports.lazy(()=>SkillRefInputSchema)).optional().describe("Skill resources providing additional knowledge to the agent."),sub_agents:external_exports.array(external_exports.lazy(()=>SubAgentInputSchema)).optional().describe("Sub-agents that can be delegated to. Sub-agents can access a subset of the parent's MCP servers and tools."),env:external_exports.record(external_exports.lazy(()=>EnvVarDeclarationInputSchema)).optional().describe("Environment variable declarations for this agent. Keys are variable names; values describe their metadata and optionality."),datastore_usages:external_exports.array(external_exports.lazy(()=>DatastoreUsageInputSchema)).optional().describe("Datastores this agent can use. Each entry must reference a Datastore resource by slug.")},AgentInputSchema=external_exports.object(AgentInputShape),McpServerRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters.")}),ToolApprovalOverrideInputSchema=external_exports.object({tool_name:external_exports.string().optional().describe("Name of the tool to override."),requires_approval:external_exports.boolean().optional().describe("Whether this tool requires approval for this agent."),message:external_exports.string().optional().describe("Custom approval message shown to the reviewer. Supports {{args.field}} placeholders. When empty, falls back to the McpServer default or auto-generates 'Execute tool: {tool_name}'.")}),McpServerUsageInputSchema=external_exports.object({mcp_server_ref:external_exports.lazy(()=>McpServerRefInputSchema).describe("Reference to the McpServer resource."),enabled_tools:external_exports.array(external_exports.string()).optional().describe("Tools to enable from this MCP server for this agent. Empty list uses the McpServer's default_enabled_tools. Sub-agents can only restrict this set further, not expand it. @internal Tool names must match exactly what the MCP server reports via tools/list. Only names from discovered_capabilities.tools are valid here. Do NOT include names from discovered_capabilities.resource_templates \u2014 resource templates are read-only data endpoints, not callable tools. Including a resource template name here causes a fatal runtime error."),tool_approval_overrides:external_exports.array(external_exports.lazy(()=>ToolApprovalOverrideInputSchema)).optional().describe("Override approval requirements for specific tools. Takes precedence over McpServerSpec.pinned_tool_approvals and McpServerStatus.tool_approvals.")}),SkillRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters."),version:external_exports.string().optional().describe("Version of the resource (optional, only applicable to versioned resources like Skills). Supports three formats: 1. Empty/unset \u2192 Resolves to 'latest' (most recent version) 2. Tag name \u2192 Resolves to version with this tag (e.g., 'stable', 'v1.0') 3. Exact hash \u2192 Immutable reference to specific version (e.g., 'abc123...') Default behavior: Empty means 'latest' (current version). This field is ignored for non-versioned resources. Examples: - version: '' \u2192 Use latest version - version: 'latest' \u2192 Use latest version (explicit) - version: 'stable' \u2192 Use version tagged as 'stable' - version: 'v1.0' \u2192 Use version tagged as 'v1.0' - version: 'abc123...' \u2192 Use exact version with this hash (immutable)")}),McpAccessInputSchema=external_exports.object({mcp_server:external_exports.string().describe("Slug of the McpServer to grant access to. Must match a mcp_server_ref.slug from the parent's mcp_server_usages."),enabled_tools:external_exports.array(external_exports.string()).optional().describe("Tools this sub-agent can use from this MCP server. Must be a subset of the parent's enabled_tools for this server. Empty list grants access to all tools the parent has enabled.")}),SubAgentInputSchema=external_exports.object({name:external_exports.string().describe("Unique name of the sub-agent within the parent agent."),description:external_exports.string().optional().describe("What this sub-agent specializes in."),instructions:external_exports.string().optional().describe("System prompt for this sub-agent."),mcp_access:external_exports.array(external_exports.lazy(()=>McpAccessInputSchema)).optional().describe("MCP server access grants for this sub-agent. Each entry references a parent McpServerUsage by slug and optionally restricts which tools are available."),skill_refs:external_exports.array(external_exports.lazy(()=>SkillRefInputSchema)).optional().describe("Skill resources for this sub-agent."),model_override:external_exports.string().optional().describe("Model override for this sub-agent. When set, uses this model instead of the parent's model. When empty, inherits the parent agent's model.")}),EnvVarDeclarationInputSchema=external_exports.object({is_secret:external_exports.boolean().optional().describe("Whether the resolved value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs and Temporal history. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description shown in the UI credential form. Should explain what the variable is used for and where to obtain it."),optional:external_exports.boolean().optional().describe("Whether this variable is optional. @internal When false (default): the execution pipeline rejects a run if this variable is missing from the user's environment. When true: a missing value is acceptable (the MCP server or agent degrades gracefully without it).")}),DatastoreRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters.")}),DatastoreUsageInputSchema=external_exports.object({datastore_ref:external_exports.lazy(()=>DatastoreRefInputSchema).describe("Reference to the Datastore resource.")});function agentInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(AgentSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.icon_url!==void 0&&(spec.iconUrl=input.icon_url),input.instructions!==void 0&&(spec.instructions=input.instructions),input.mcp_server_usages!==void 0&&(spec.mcpServerUsages=input.mcp_server_usages.map(mcpServerUsageInputToProto)),input.skill_refs!==void 0&&(spec.skillRefs=input.skill_refs.map(skillRefInputToProto)),input.sub_agents!==void 0&&(spec.subAgents=input.sub_agents.map(subAgentInputToProto)),input.env!==void 0)for(let[k,v]of Object.entries(input.env))spec.env[k]=envVarDeclarationInputToProto(v);return input.datastore_usages!==void 0&&(spec.datastoreUsages=input.datastore_usages.map(datastoreUsageInputToProto)),Object.assign(create(AgentSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Agent",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function mcpServerRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.mcp_server})}function toolApprovalOverrideInputToProto(input){let result=create(ToolApprovalOverrideSchema);return input.tool_name!==void 0&&(result.toolName=input.tool_name),input.requires_approval!==void 0&&(result.requiresApproval=input.requires_approval),input.message!==void 0&&(result.message=input.message),result}function mcpServerUsageInputToProto(input){let result=create(McpServerUsageSchema);return input.mcp_server_ref!==void 0&&(result.mcpServerRef=mcpServerRefInputToProto(input.mcp_server_ref)),input.enabled_tools!==void 0&&(result.enabledTools=input.enabled_tools),input.tool_approval_overrides!==void 0&&(result.toolApprovalOverrides=input.tool_approval_overrides.map(toolApprovalOverrideInputToProto)),result}function skillRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.skill,version:input.version})}function mcpAccessInputToProto(input){let result=create(McpAccessSchema);return input.mcp_server!==void 0&&(result.mcpServer=input.mcp_server),input.enabled_tools!==void 0&&(result.enabledTools=input.enabled_tools),result}function subAgentInputToProto(input){let result=create(SubAgentSchema);return input.name!==void 0&&(result.name=input.name),input.description!==void 0&&(result.description=input.description),input.instructions!==void 0&&(result.instructions=input.instructions),input.mcp_access!==void 0&&(result.mcpAccess=input.mcp_access.map(mcpAccessInputToProto)),input.skill_refs!==void 0&&(result.skillRefs=input.skill_refs.map(skillRefInputToProto)),input.model_override!==void 0&&(result.modelOverride=input.model_override),result}function envVarDeclarationInputToProto(input){let result=create(EnvVarDeclarationSchema);return input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),input.optional!==void 0&&(result.optional=input.optional),result}function datastoreRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.datastore})}function datastoreUsageInputToProto(input){let result=create(DatastoreUsageSchema);return input.datastore_ref!==void 0&&(result.datastoreRef=datastoreRefInputToProto(input.datastore_ref)),result}async function applyAgent(serverAddress,token,input){let agent=agentInputToProto(input),desc=`agent "${agent.metadata?.slug??""}" in org "${agent.metadata?.org??""}"`;return withClient(AgentCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(agent,callOptions);return toProtoJson(AgentSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteAgent(serverAddress,token,org,slug){let desc=`agent "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(AgentQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.agent,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(AgentCommandController,transport);try{let deleted=await command.delete({value:id},callOptions);return toProtoJson(AgentSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerAgentTools(server,target){return server.registerTool("get_agent",{description:"Get full details of a Stigmer agent by its org and slug (e.g. org=stigmer slug=code-reviewer).",inputSchema:{org:external_exports.string().describe("Organization slug that owns the agent (e.g. stigmer)."),slug:external_exports.string().describe("Agent slug \u2014 the unique identifier within the org (e.g. code-reviewer).")}},(args,extra)=>textOrError(()=>fetchAgent(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_agent",{description:"Create or update a Stigmer agent (idempotent). Provide identity fields (name, org) and agent configuration (instructions, skills, MCP servers, etc.).",inputSchema:AgentInputShape},(args,extra)=>textOrError(()=>applyAgent(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_agent",{description:"Delete a Stigmer agent by its org and slug. Returns the deleted agent.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the agent (e.g. stigmer)."),slug:external_exports.string().describe("Agent slug \u2014 the unique identifier within the org (e.g. code-reviewer).")}},(args,extra)=>textOrError(()=>deleteAgent(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_agent","apply_agent","delete_agent"]}async function fetchDatastore(serverAddress,token,org,slug){return withClient(DatastoreQueryController,serverAddress,token,async(client,callOptions)=>{try{let datastore=await client.getByReference({org,kind:ApiResourceKind.datastore,slug},callOptions);return toProtoJson(DatastoreSchema,datastore)}catch(err){throw rpcError(err,`datastore "${slug}" in org "${org}"`)}})}function registerDatastoreResources(server,target){return registerResource(server,target,{name:"stigmer_datastore",title:"Stigmer Datastore",description:"Full definition of a Stigmer datastore (collections, constraints, grants), identified by organization and slug.",template:"stigmer://datastores/{org}/{slug}",fetch:fetchDatastore}),["stigmer_datastore"]}var DatastoreInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description of what this datastore holds."),timezone:external_exports.string().optional().describe("IANA timezone (e.g. 'Asia/Kolkata') for constraint evaluation. Bound as the constant 'tz' in check and exists constraint expressions. Optional; when unset, expressions that reference 'tz' are rejected at apply time. @internal IANA-name validity is domain validation (the proto layer cannot carry a timezone database)."),authorization:external_exports.lazy(()=>DatastoreAuthorizationInputSchema).optional().describe("Record-layer authorization: roles, subject bindings, and the default role for unbound callers."),collections:external_exports.array(external_exports.lazy(()=>CollectionDeclarationInputSchema)).optional().describe("Record collections declared by this datastore. @internal Collection-name uniqueness within the datastore is domain validation (protovalidate CEL has no portable uniqueness check over message lists).")},DatastoreInputSchema=external_exports.object(DatastoreInputShape),DatastoreRoleInputSchema=external_exports.object({name:external_exports.string().describe("Role name, referenced by bindings, grants, and default_role.")}),ChannelSenderSubjectInputSchema=external_exports.object({sender_kind:external_exports.string().describe("Sender identity namespace. Must be a namespace the platform's channel brokers can stamp \u2014 today 'whatsapp_phone'; unrecognized namespaces are refused at apply time (they could never match)."),value:external_exports.string().describe("Sender identity value within the namespace, in the exact wire shape the channel broker stamps. For 'whatsapp_phone' this is Meta's wa_id: DIGITS ONLY, no '+', no separators (e.g. '919800000001' \u2014 NOT the '+'-prefixed E.164 form). Apply-time validation refuses any other shape, because subject matching is exact string equality and a mis-shaped value would bind and silently never match. @internal Bearer-adjacent: never logged raw, never filterable, never echoed into validation error strings, and only ever compared against broker-stamped session metadata.")}),ApiResourceRefInputSchema=external_exports.object({kind:external_exports.string().describe("Type of the API resource being referenced This should be the resource kind as defined in ApiResourceKind enum. Examples: 'identity_account', 'team', 'organization', 'environment', 'cloud_resource', 'service', etc."),id:external_exports.string().describe("Unique identifier of the resource This is the resource's ID field (e.g., ia-01HQUSER123, tm-01HQTEAM456)"),relation:external_exports.string().optional().describe("Optional relation qualifier for the resource reference. Used when the reference needs additional context about the relationship. Primary use case: For team principals, this specifies the relation of the user to the team (e.g., 'member', 'admin'). Example: principal { kind: 'team', id: 'tm-123', relation: 'member' } means 'members of team tm-123' This field qualifies HOW the principal relates to this resource reference, NOT the permission being granted (that's IamPolicySpec.relation). @internal In OpenFGA tuple notation: team:tm-123#member (as the subject of the tuple)")}),DatastoreSubjectInputSchema=external_exports.object({channel_sender:external_exports.lazy(()=>ChannelSenderSubjectInputSchema).optional().describe("Channel sender identity, matched against the session metadata stamped by the channel broker."),principal:external_exports.lazy(()=>ApiResourceRefInputSchema).optional().describe("Platform principal (an identity account today; teams later without schema change). @internal Matched by exact kind+id equality against the caller-derived subject; the relation qualifier is excluded from identity and rejected at apply. The id is the account id, never a slug or email \u2014 apply-time validation refuses unresolvable values with a membership-gated did-you-mean instead of letting them bind nothing silently (dont-dos/001).")}),DatastoreRoleBindingInputSchema=external_exports.object({subject:external_exports.lazy(()=>DatastoreSubjectInputSchema).describe("The caller identity this binding matches."),role:external_exports.string().describe("Name of a declared role.")}),DatastoreAuthorizationInputSchema=external_exports.object({roles:external_exports.array(external_exports.lazy(()=>DatastoreRoleInputSchema)).optional().describe("Role names referenced by bindings and grants (e.g. 'admin', 'patient')."),bindings:external_exports.array(external_exports.lazy(()=>DatastoreRoleBindingInputSchema)).optional().describe("Subject-to-role bindings. @internal Role-reference integrity (every binding names a declared role) is domain validation."),default_role:external_exports.string().optional().describe("Role an unbound caller resolves to. Applies to channel senders with no binding and platform principals with no binding. When empty, unbound callers are denied every verb.")}),FieldDeclarationInputSchema=external_exports.object({name:external_exports.string().describe("Field name, unique within the collection. Format: lowercase snake_case. The record envelope's system field names (id, created_at, updated_at, created_by), 'org', and 'partition' are reserved."),type:external_exports.string().describe("Value type for this field. Allowed values: string, integer, number, bool, timestamp, date, time, json."),required:external_exports.boolean().optional().describe("Whether a value must be present on every record. Absent optional fields evaluate as null in constraint expressions."),default:external_exports.unknown().optional().describe("Default value applied when the field is absent on insert. @internal Type compatibility between the default and the declared type is domain validation (google.protobuf.Value is untyped here)."),enum_values:external_exports.array(external_exports.string()).optional().describe("Allowed values for string fields. Declaring enum_values on a non-string field is rejected."),description:external_exports.string().optional().describe("Human-readable description, surfaced to agents via describe_datastore.")}),UniqueWhereInputSchema=external_exports.object({field:external_exports.string().describe("Declared field the condition tests."),equals:external_exports.unknown().describe("Value the field must equal for the constraint to apply.")}),UniqueConstraintInputSchema=external_exports.object({name:external_exports.string().describe("Constraint name, unique within the collection."),fields:external_exports.array(external_exports.string()).optional().describe("Declared fields whose combined values must be unique."),where:external_exports.lazy(()=>UniqueWhereInputSchema).optional().describe("Limits the constraint to records matching this condition (e.g. only 'status == 'confirmed'' bookings must be unique per slot). @internal Structured, never an expression \u2014 it must compile to the substrate's partial-index dialect in both editions."),message:external_exports.string().describe("Error message returned on violation, written to be relayed to an end user by an agent (e.g. 'that slot is already booked').")}),CheckConstraintInputSchema=external_exports.object({name:external_exports.string().describe("Constraint name, unique within the collection."),expression:external_exports.string().describe("CEL expression that must evaluate true for the record to be written."),when:external_exports.string().optional().describe("Optional CEL gate: the check applies only when this evaluates true."),message:external_exports.string().describe("Error message returned on violation, written to be relayed to an end user by an agent.")}),ExistsConstraintInputSchema=external_exports.object({name:external_exports.string().describe("Constraint name, unique within the collection."),collection:external_exports.string().describe("Target collection in the same datastore."),where:external_exports.string().describe("CEL condition matching candidate ('this') against target records ('that')."),when:external_exports.string().optional().describe("Optional CEL gate: the constraint applies only when this evaluates true."),message:external_exports.string().describe("Error message returned on violation, written to be relayed to an end user by an agent.")}),DatastoreGrantInputSchema=external_exports.object({role:external_exports.string().describe("Name of a declared role."),verbs:external_exports.array(external_exports.string()).optional().describe("Verbs granted to the role on this collection. Allowed values: read, insert, update, delete."),scope:external_exports.string().optional().describe("Row scope of the grant. Defaults to all records. 'own' limits update and delete (and read) to records whose server-stamped created_by matches the caller. Allowed values: all, own."),read_fields:external_exports.array(external_exports.string()).optional().describe("Field allowlist for the read verb: when set, reads by this role return only these fields, and filter conditions and order_by may reference only these fields. Empty means every field is readable. Entries name declared fields of the collection, or 'created_by' to expose the attribution subject. The system fields id, created_at, and updated_at are always readable. @internal The column-level GRANT SELECT of the record layer, closing the scope-all-reads-carry-PII residual (dont-dos/002): every record RPC response \u2014 find results AND write echoes \u2014 is projected to the caller's read-grant field set, and created_by is included only when listed (for channel senders it is the phone number, the most direct PII in the envelope). A caller with no read grant at all receives envelopes with id and timestamps only (write-only access). Empty = unrestricted is forced by proto3 repeated-field semantics (no presence) and mirrors 'scope' unset = all. Requires 'read' among the grant's verbs \u2014 read_fields on a write-only grant is declared intent with no effect and is refused at apply, same posture as the binding relation qualifier. Entry-to-declared-field resolution is domain validation (both editions, byte-identical messages).")}),CollectionDeclarationInputSchema=external_exports.object({name:external_exports.string().describe("Collection name, unique within the datastore. Format: lowercase snake_case (e.g. 'bookings', 'schedule_exceptions')."),description:external_exports.string().optional().describe("Human-readable description of what records in this collection represent."),fields:external_exports.array(external_exports.lazy(()=>FieldDeclarationInputSchema)).optional().describe("Typed field declarations for records in this collection."),uniques:external_exports.array(external_exports.lazy(()=>UniqueConstraintInputSchema)).optional().describe("Uniqueness constraints, enforced by substrate indexes."),checks:external_exports.array(external_exports.lazy(()=>CheckConstraintInputSchema)).optional().describe("Single-record check constraints, evaluated on every insert and update."),exists:external_exports.array(external_exports.lazy(()=>ExistsConstraintInputSchema)).optional().describe("Cross-collection constraints requiring a matching record to exist."),not_exists:external_exports.array(external_exports.lazy(()=>ExistsConstraintInputSchema)).optional().describe("Cross-collection constraints requiring no matching record to exist."),grants:external_exports.array(external_exports.lazy(()=>DatastoreGrantInputSchema)).optional().describe("Per-role access grants for records in this collection. Deny by default: a role with no grant on a collection has no access to it.")});function datastoreInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(DatastoreSpecSchema);return input.description!==void 0&&(spec.description=input.description),input.timezone!==void 0&&(spec.timezone=input.timezone),input.authorization!==void 0&&(spec.authorization=datastoreAuthorizationInputToProto(input.authorization)),input.collections!==void 0&&(spec.collections=input.collections.map(collectionDeclarationInputToProto)),Object.assign(create(DatastoreSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Datastore",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function datastoreRoleInputToProto(input){let result=create(DatastoreRoleSchema);return input.name!==void 0&&(result.name=input.name),result}function channelSenderSubjectInputToProto(input){let result=create(ChannelSenderSubjectSchema);return input.sender_kind!==void 0&&(result.senderKind=input.sender_kind),input.value!==void 0&&(result.value=input.value),result}function apiResourceRefInputToProto(input){let result=create(ApiResourceRefSchema);return input.kind!==void 0&&(result.kind=input.kind),input.id!==void 0&&(result.id=input.id),input.relation!==void 0&&(result.relation=input.relation),result}function datastoreSubjectInputToProto(input){let result=create(DatastoreSubjectSchema);return input.channel_sender!==void 0&&(result.kind={case:"channelSender",value:channelSenderSubjectInputToProto(input.channel_sender)}),input.principal!==void 0&&(result.kind={case:"principal",value:apiResourceRefInputToProto(input.principal)}),result}function datastoreRoleBindingInputToProto(input){let result=create(DatastoreRoleBindingSchema);return input.subject!==void 0&&(result.subject=datastoreSubjectInputToProto(input.subject)),input.role!==void 0&&(result.role=input.role),result}function datastoreAuthorizationInputToProto(input){let result=create(DatastoreAuthorizationSchema);return input.roles!==void 0&&(result.roles=input.roles.map(datastoreRoleInputToProto)),input.bindings!==void 0&&(result.bindings=input.bindings.map(datastoreRoleBindingInputToProto)),input.default_role!==void 0&&(result.defaultRole=input.default_role),result}function fieldDeclarationInputToProto(input){let result=create(FieldDeclarationSchema);return input.name!==void 0&&(result.name=input.name),result.type=enumFromString(FieldType,input.type),input.required!==void 0&&(result.required=input.required),input.default!==void 0&&(result.default=fromJson(ValueSchema,input.default)),input.enum_values!==void 0&&(result.enumValues=input.enum_values),input.description!==void 0&&(result.description=input.description),result}function uniqueWhereInputToProto(input){let result=create(UniqueWhereSchema);return input.field!==void 0&&(result.field=input.field),input.equals!==void 0&&(result.equals=fromJson(ValueSchema,input.equals)),result}function uniqueConstraintInputToProto(input){let result=create(UniqueConstraintSchema);return input.name!==void 0&&(result.name=input.name),input.fields!==void 0&&(result.fields=input.fields),input.where!==void 0&&(result.where=uniqueWhereInputToProto(input.where)),input.message!==void 0&&(result.message=input.message),result}function checkConstraintInputToProto(input){let result=create(CheckConstraintSchema);return input.name!==void 0&&(result.name=input.name),input.expression!==void 0&&(result.expression=input.expression),input.when!==void 0&&(result.when=input.when),input.message!==void 0&&(result.message=input.message),result}function existsConstraintInputToProto(input){let result=create(ExistsConstraintSchema);return input.name!==void 0&&(result.name=input.name),input.collection!==void 0&&(result.collection=input.collection),input.where!==void 0&&(result.where=input.where),input.when!==void 0&&(result.when=input.when),input.message!==void 0&&(result.message=input.message),result}function datastoreGrantInputToProto(input){let result=create(DatastoreGrantSchema);return input.role!==void 0&&(result.role=input.role),input.verbs!==void 0&&(result.verbs=input.verbs.map(v=>enumFromString(DatastoreVerb,v))),result.scope=enumFromString(DatastoreGrantScope,input.scope),input.read_fields!==void 0&&(result.readFields=input.read_fields),result}function collectionDeclarationInputToProto(input){let result=create(CollectionDeclarationSchema);return input.name!==void 0&&(result.name=input.name),input.description!==void 0&&(result.description=input.description),input.fields!==void 0&&(result.fields=input.fields.map(fieldDeclarationInputToProto)),input.uniques!==void 0&&(result.uniques=input.uniques.map(uniqueConstraintInputToProto)),input.checks!==void 0&&(result.checks=input.checks.map(checkConstraintInputToProto)),input.exists!==void 0&&(result.exists=input.exists.map(existsConstraintInputToProto)),input.not_exists!==void 0&&(result.notExists=input.not_exists.map(existsConstraintInputToProto)),input.grants!==void 0&&(result.grants=input.grants.map(datastoreGrantInputToProto)),result}async function applyDatastore(serverAddress,token,input){let datastore=datastoreInputToProto(input),desc=`datastore "${datastore.metadata?.slug??""}" in org "${datastore.metadata?.org??""}"`;return withClient(DatastoreCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(datastore,callOptions);return toProtoJson(DatastoreSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteDatastore(serverAddress,token,org,slug){let desc=`datastore "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(DatastoreQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.datastore,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(DatastoreCommandController,transport);try{let deleted=await command.delete({resourceId:id},callOptions);return toProtoJson(DatastoreSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerDatastoreTools(server,target){return server.registerTool("get_datastore",{description:"Get the full definition of a Stigmer datastore by its org and slug: collections, field declarations, constraints, roles, and grants. For the record-facing view of the same structure (allowed verbs, readable fields), use describe_datastore; for the data itself, use the record tools.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the datastore (e.g. stigmer)."),slug:external_exports.string().describe("Datastore slug \u2014 the unique identifier within the org (e.g. clinic-bookings).")}},(args,extra)=>textOrError(()=>fetchDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_datastore",{description:"Create or update a Stigmer datastore definition (idempotent). The manifest is authoritative for structure only \u2014 schema changes sync on apply (the server enforces its additive-plus change rules), and records are never touched; use the record tools to manage data.",inputSchema:DatastoreInputShape},(args,extra)=>textOrError(()=>applyDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_datastore",{description:"Delete a Stigmer datastore by its org and slug, destroying its collections and all records in them. This is irreversible. Returns the deleted datastore definition.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the datastore (e.g. stigmer)."),slug:external_exports.string().describe("Datastore slug \u2014 the unique identifier within the org (e.g. clinic-bookings).")}},(args,extra)=>textOrError(()=>deleteDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_datastore","apply_datastore","delete_datastore"]}async function fetchEnvironment(serverAddress,token,org,slug){return withClient(EnvironmentQueryController,serverAddress,token,async(client,callOptions)=>{try{let environment=await client.getByReference({org,kind:ApiResourceKind.environment,slug},callOptions);return toProtoJson(EnvironmentSchema,environment)}catch(err){throw rpcError(err,`environment "${slug}" in org "${org}"`)}})}function registerEnvironmentResources(server,target){return registerResource(server,target,{name:"stigmer_environment",title:"Stigmer Environment",description:"Full definition of a Stigmer environment, identified by organization and slug. Secret values are redacted.",template:"stigmer://environments/{org}/{slug}",fetch:fetchEnvironment}),["stigmer_environment"]}var EnvironmentInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for UI and listing display."),data:external_exports.record(external_exports.lazy(()=>EnvironmentValueInputSchema)).optional().describe("Key-value pairs containing configuration and secrets. Each value includes a flag indicating whether it is a secret.")},EnvironmentInputSchema=external_exports.object(EnvironmentInputShape),EnvironmentValueInputSchema=external_exports.object({value:external_exports.string().optional().describe("The configuration or secret string. @internal When is_secret is true the value is encrypted at rest and redacted in logs. When is_secret is false the value is stored as plaintext. Value can be empty when pre-declaring keys whose values are injected at runtime."),is_secret:external_exports.boolean().optional().describe("Whether this value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs, requires can_read_secrets to reveal. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description of what this value is used for.")});function environmentInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(EnvironmentSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.data!==void 0)for(let[k,v]of Object.entries(input.data))spec.data[k]=environmentValueInputToProto(v);return Object.assign(create(EnvironmentSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Environment",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function environmentValueInputToProto(input){let result=create(EnvironmentValueSchema);return input.value!==void 0&&(result.value=input.value),input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),result}async function applyEnvironment(serverAddress,token,input){let environment=environmentInputToProto(input),desc=`environment "${environment.metadata?.slug??""}" in org "${environment.metadata?.org??""}"`;return withClient(EnvironmentCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(environment,callOptions);return toProtoJson(EnvironmentSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteEnvironment(serverAddress,token,org,slug){let desc=`environment "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(EnvironmentQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.environment,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(EnvironmentCommandController,transport);try{let deleted=await command.delete({resourceId:id},callOptions);return toProtoJson(EnvironmentSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerEnvironmentTools(server,target){return server.registerTool("get_environment",{description:"Get full details of a Stigmer environment by its org and slug, including its variable declarations. Secret values are redacted to ***REDACTED*** \u2014 they can never be read back through this tool.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the environment (e.g. stigmer)."),slug:external_exports.string().describe("Environment slug \u2014 the unique identifier within the org (e.g. github-creds).")}},(args,extra)=>textOrError(()=>fetchEnvironment(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_environment",{description:"Create or update a Stigmer environment (idempotent). The spec is applied in full, so include every variable the environment should keep. When updating, secret values read back as ***REDACTED*** \u2014 echoing that marker preserves the existing secret, so a get \u2192 edit \u2192 apply round-trip never destroys secrets; send a real value only to set or rotate one.",inputSchema:EnvironmentInputShape},(args,extra)=>textOrError(()=>applyEnvironment(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_environment",{description:"Delete a Stigmer environment by its org and slug. Returns the deleted environment. Agents and workflows referencing it will fail to resolve their variables at run time.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the environment (e.g. stigmer)."),slug:external_exports.string().describe("Environment slug \u2014 the unique identifier within the org (e.g. github-creds).")}},(args,extra)=>textOrError(()=>deleteEnvironment(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_environment","apply_environment","delete_environment"]}var TERMINAL_AGENT_PHASES=new Set([ExecutionPhase.EXECUTION_COMPLETED,ExecutionPhase.EXECUTION_FAILED,ExecutionPhase.EXECUTION_CANCELLED,ExecutionPhase.EXECUTION_TERMINATED]),TERMINAL_WORKFLOW_PHASES=new Set([ExecutionPhase2.EXECUTION_COMPLETED,ExecutionPhase2.EXECUTION_FAILED,ExecutionPhase2.EXECUTION_CANCELLED,ExecutionPhase2.EXECUTION_TERMINATED]);function resolveExecutionType(id){let trimmed=id.trim();if(trimmed.startsWith("aex_")||trimmed.startsWith("aex-"))return"agent";if(trimmed.startsWith("wex_")||trimmed.startsWith("wex-"))return"workflow";throw new Error(`unrecognized execution ID format: ${id}
|
|
198
|
+
`)}),new TextEncoder().encode(lines.join(""))}function createTrailerSerialization(){return{serialize:trailerSerialize,parse:trailerParse}}var headerContentType="Content-Type",headerEncoding="Grpc-Encoding",headerAcceptEncoding="Grpc-Accept-Encoding",headerTimeout="Grpc-Timeout",headerGrpcStatus="Grpc-Status",headerGrpcMessage="Grpc-Message",headerStatusDetailsBin="Grpc-Status-Details-Bin";var headerUserAgent="User-Agent";var headerXUserAgent="X-User-Agent",headerXGrpcWeb="X-Grpc-Web";var contentTypeProto="application/grpc-web+proto",contentTypeJson="application/grpc-web+json";var file_status=fileDesc("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[file_google_protobuf_any]),StatusSchema=messageDesc(file_status,0);var grpcStatusOk="0";function findTrailerError(headerOrTrailer){var _a;let statusBytes=headerOrTrailer.get(headerStatusDetailsBin);if(statusBytes!=null){let status=decodeBinaryHeader(statusBytes,StatusSchema);if(status.code==0)return;let error3=new ConnectError(status.message,status.code,headerOrTrailer);return error3.details=status.details.map(any=>({type:any.typeUrl.substring(any.typeUrl.lastIndexOf("/")+1),value:any.value})),error3}let grpcStatus=headerOrTrailer.get(headerGrpcStatus);if(grpcStatus!=null){if(grpcStatus===grpcStatusOk)return;let code=parseInt(grpcStatus,10);return code in Code?new ConnectError(decodeURIComponent((_a=headerOrTrailer.get(headerGrpcMessage))!==null&&_a!==void 0?_a:""),code,headerOrTrailer):new ConnectError(`invalid grpc-status: ${grpcStatus}`,Code.Internal,headerOrTrailer)}}function createMethodUrl(baseUrl,method){return baseUrl.toString().replace(/\/?$/,`/${method.parent.typeName}/${method.name}`)}function normalize(desc,message){return create(desc,message)}function normalizeIterable(desc,input){function transform2(result){return result.done===!0?result:{done:result.done,value:normalize(desc,result.value)}}return{[Symbol.asyncIterator](){let it=input[Symbol.asyncIterator](),res={next:()=>it.next().then(transform2)};return it.throw!==void 0&&(res.throw=e=>it.throw(e).then(transform2)),it.return!==void 0&&(res.return=v=>it.return(v).then(transform2)),res}}}function applyInterceptors(next,interceptors){if(!interceptors)return next;for(let i of interceptors.concat().reverse())next=i(next);return next}function getJsonOptions(options){var _a;let o=Object.assign({},options);return(_a=o.ignoreUnknownFields)!==null&&_a!==void 0||(o.ignoreUnknownFields=!0),o}function createMethodSerializationLookup(method,binaryOptions,jsonOptions,limitOptions){let inputBinary=limitSerialization(createBinarySerialization(method.input,binaryOptions),limitOptions),inputJson=limitSerialization(createJsonSerialization(method.input,jsonOptions),limitOptions),outputBinary=limitSerialization(createBinarySerialization(method.output,binaryOptions),limitOptions),outputJson=limitSerialization(createJsonSerialization(method.output,jsonOptions),limitOptions);return{getI(useBinaryFormat){return useBinaryFormat?inputBinary:inputJson},getO(useBinaryFormat){return useBinaryFormat?outputBinary:outputJson}}}function limitSerialization(serialization,limitOptions){return{serialize(data){let bytes=serialization.serialize(data);return assertWriteMaxBytes(limitOptions.writeMaxBytes,bytes.byteLength),bytes},parse(data){return assertReadMaxBytes(limitOptions.readMaxBytes,data.byteLength,!0),serialization.parse(data)}}}function createBinarySerialization(desc,options){return{parse(data){try{return fromBinary(desc,data,options)}catch(e){let m=e instanceof Error?e.message:String(e);throw new ConnectError(`parse binary: ${m}`,Code.Internal)}},serialize(data){try{return toBinary(desc,data,options)}catch(e){let m=e instanceof Error?e.message:String(e);throw new ConnectError(`serialize binary: ${m}`,Code.Internal)}}}}function createJsonSerialization(desc,options){var _a,_b;let textEncoder=(_a=options?.textEncoder)!==null&&_a!==void 0?_a:new TextEncoder,textDecoder=(_b=options?.textDecoder)!==null&&_b!==void 0?_b:new TextDecoder,o=getJsonOptions(options);return{parse(data){try{let json=textDecoder.decode(data);return fromJsonString(desc,json,o)}catch(e){throw ConnectError.from(e,Code.InvalidArgument)}},serialize(data){try{let json=toJsonString(desc,data,o);return textEncoder.encode(json)}catch(e){throw ConnectError.from(e,Code.Internal)}}}}var contentTypeRegExp=/^application\/grpc(?:\+(?:(json)(?:; ?charset=utf-?8)?|proto))?$/i,contentTypeProto2="application/grpc+proto",contentTypeJson2="application/grpc+json";function parseContentType(contentType){let match=contentType?.match(contentTypeRegExp);return match?{binary:!match[1]}:void 0}function runUnaryCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt),req=Object.assign(Object.assign({},opt.req),{message:normalize(opt.req.method.input,opt.req.message),signal});return next(req).then(res=>(done(),res),abort)}function runStreamingCall(opt){let next=applyInterceptors(opt.next,opt.interceptors),[signal,abort,done]=setupSignal(opt),req=Object.assign(Object.assign({},opt.req),{message:normalizeIterable(opt.req.method.input,opt.req.message),signal}),doneCalled=!1;return signal.addEventListener("abort",function(){var _a,_b;let it=opt.req.message[Symbol.asyncIterator]();doneCalled||(_a=it.throw)===null||_a===void 0||_a.call(it,this.reason).catch(()=>{}),(_b=it.return)===null||_b===void 0||_b.call(it).catch(()=>{})}),next(req).then(res=>Object.assign(Object.assign({},res),{message:{[Symbol.asyncIterator](){let it=res.message[Symbol.asyncIterator]();return{next(){return it.next().then(r=>(r.done==!0&&(doneCalled=!0,done()),r),abort)}}}}}),abort)}function setupSignal(opt){let{signal,cleanup}=createDeadlineSignal(opt.timeoutMs),controller=createLinkedAbortController(opt.signal,signal);return[controller.signal,function(reason){let e=ConnectError.from(signal.aborted?getAbortSignalReason(signal):reason);return controller.abort(e),cleanup(),Promise.reject(e)},function(){cleanup(),controller.abort()}]}function validateTrailer(trailer,header){let err=findTrailerError(trailer);if(err)throw header.forEach((value,key)=>{err.metadata.append(key,value)}),err;if(!header.has(headerGrpcStatus)&&!trailer.has(headerGrpcStatus))throw new ConnectError("protocol error: missing status",Code.Internal)}function requestHeader(useBinaryFormat,timeoutMs,userProvidedHeaders,setUserAgent){var _a,_b;let result=new Headers(userProvidedHeaders??{});result.set(headerContentType,useBinaryFormat?contentTypeProto:contentTypeJson),result.set(headerXGrpcWeb,"1");let userAgent=(_b=(_a=result.get(headerUserAgent))!==null&&_a!==void 0?_a:result.get(headerXUserAgent))!==null&&_b!==void 0?_b:"connect-es/2.1.1";return result.set(headerXUserAgent,userAgent),setUserAgent&&result.set(headerUserAgent,userAgent),timeoutMs!==void 0&&result.set(headerTimeout,`${timeoutMs}m`),result}function requestHeaderWithCompression(useBinaryFormat,timeoutMs,userProvidedHeaders,acceptCompression,sendCompression,setUserAgent){let result=requestHeader(useBinaryFormat,timeoutMs,userProvidedHeaders,setUserAgent);return sendCompression!=null&&result.set(headerEncoding,sendCompression.name),acceptCompression.length>0&&result.set(headerAcceptEncoding,acceptCompression.map(c=>c.name).join(",")),result}function codeFromHttpStatus(httpStatus){switch(httpStatus){case 400:return Code.Internal;case 401:return Code.Unauthenticated;case 403:return Code.PermissionDenied;case 404:return Code.Unimplemented;case 429:return Code.Unavailable;case 502:return Code.Unavailable;case 503:return Code.Unavailable;case 504:return Code.Unavailable;default:return Code.Unknown}}function validateResponse(status,headers){var _a;if(status>=200&&status<300)return{foundStatus:headers.has(headerGrpcStatus),headerError:findTrailerError(headers)};throw new ConnectError(decodeURIComponent((_a=headers.get(headerGrpcMessage))!==null&&_a!==void 0?_a:`HTTP ${status}`),codeFromHttpStatus(status),headers)}function validateResponseWithCompression(acceptCompression,status,headers){let{foundStatus,headerError}=validateResponse(status,headers),compression,encoding=headers.get(headerEncoding);if(encoding!==null&&encoding.toLowerCase()!=="identity"&&(compression=acceptCompression.find(c=>c.name===encoding),!compression))throw new ConnectError(`unsupported response encoding "${encoding}"`,Code.Internal,headers);return{foundStatus,compression,headerError}}var __asyncValues3=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i;return m?m.call(o):(o=typeof __values=="function"?__values(o):o[Symbol.iterator](),i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i);function verb(n){i[n]=o[n]&&function(v){return new Promise(function(resolve,reject){v=o[n](v),settle(resolve,reject,v.done,v.value)})}}function settle(resolve,reject,d,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d})},reject)}},__await3=function(v){return this instanceof __await3?(this.v=v,this):new __await3(v)},__asyncGenerator3=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i,q=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i[Symbol.asyncIterator]=function(){return this},i;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){g[n]&&(i[n]=function(v){return new Promise(function(a,b){q.push([n,v,a,b])>1||resume(n,v)})},f&&(i[n]=f(i[n])))}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await3?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){f(v),q.shift(),q.length&&resume(q[0][0],q[0][1])}};function createTransport(opt){return{async unary(method,signal,timeoutMs,header,message,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runUnaryCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!1,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression,!0),contextValues:contextValues??createContextValues(),message},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:req.requestMethod,header:req.header,signal:req.signal,body:pipe2(createAsyncIterable([req.message]),transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,headerError}=validateResponseWithCompression(opt.acceptCompression,uRes.status,uRes.header),{trailer,message:message2}=await pipeTo(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat),128,createTrailerSerialization()),async iterable=>{var _a,e_1,_b,_c;let message3,trailer2;try{for(var _d=!0,iterable_1=__asyncValues3(iterable),iterable_1_1;iterable_1_1=await iterable_1.next(),_a=iterable_1_1.done,!_a;_d=!0){_c=iterable_1_1.value,_d=!1;let env=_c;if(env.end){if(trailer2!==void 0)throw new ConnectError("protocol error: received extra trailer",Code.Unimplemented);trailer2=env.value}else{if(message3!==void 0)throw new ConnectError("protocol error: received extra output message for unary method",Code.Unimplemented);message3=env.value}}}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_d&&!_a&&(_b=iterable_1.return)&&await _b.call(iterable_1)}finally{if(e_1)throw e_1.error}}return{trailer:trailer2,message:message3}},{propagateDownStreamError:!1});if(trailer===void 0)throw headerError??new ConnectError("protocol error: missing trailer",uRes.header.has(headerGrpcStatus)?Code.Unimplemented:Code.Unknown);if(validateTrailer(trailer,uRes.header),message2===void 0)throw new ConnectError("protocol error: missing output message for unary method",trailer.has(headerGrpcStatus)?Code.Unimplemented:Code.Unknown);return{stream:!1,service:method.parent,method,header:uRes.header,message:message2,trailer}}})},async stream(method,signal,timeoutMs,header,input,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,runStreamingCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!0,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression,!0),contextValues:contextValues??createContextValues(),message:input},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:req.requestMethod,header:req.header,signal:req.signal,body:pipe2(req.message,transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,foundStatus,headerError}=validateResponseWithCompression(opt.acceptCompression,uRes.status,uRes.header);if(headerError)throw headerError;let res=Object.assign(Object.assign({},req),{header:uRes.header,trailer:new Headers,message:pipe2(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat),128,createTrailerSerialization()),function(iterable){return __asyncGenerator3(this,arguments,function*(){var _a,e_2,_b,_c;if(foundStatus){if((yield __await3(iterable[Symbol.asyncIterator]().next())).done!==!0)throw new ConnectError("protocol error: extra data for trailers-only",Code.InvalidArgument);return yield __await3(void 0)}let trailerReceived=!1;try{for(var _d=!0,iterable_2=__asyncValues3(iterable),iterable_2_1;iterable_2_1=yield __await3(iterable_2.next()),_a=iterable_2_1.done,!_a;_d=!0){_c=iterable_2_1.value,_d=!1;let chunk=_c;if(chunk.end){if(trailerReceived)throw new ConnectError("protocol error: received extra trailer",Code.InvalidArgument);trailerReceived=!0,validateTrailer(chunk.value,uRes.header),chunk.value.forEach((value,key)=>res.trailer.set(key,value));continue}if(trailerReceived)throw new ConnectError("protocol error: received extra message after trailer",Code.InvalidArgument);yield yield __await3(chunk.value)}}catch(e_2_1){e_2={error:e_2_1}}finally{try{!_d&&!_a&&(_b=iterable_2.return)&&(yield __await3(_b.call(iterable_2)))}finally{if(e_2)throw e_2.error}}if(!trailerReceived)throw new ConnectError("protocol error: missing trailer",Code.Internal)})},{propagateDownStreamError:!0})});return res}})}}}function requestHeader2(useBinaryFormat,timeoutMs,userProvidedHeaders){let result=new Headers(userProvidedHeaders??{});return result.set(headerContentType,useBinaryFormat?contentTypeProto2:contentTypeJson2),result.has(headerUserAgent)||result.set(headerUserAgent,"connect-es/2.1.1"),timeoutMs!==void 0&&result.set(headerTimeout,`${timeoutMs}m`),result.set("Te","trailers"),result}function requestHeaderWithCompression2(useBinaryFormat,timeoutMs,userProvidedHeaders,acceptCompression,sendCompression){let result=requestHeader2(useBinaryFormat,timeoutMs,userProvidedHeaders);return sendCompression!=null&&result.set(headerEncoding,sendCompression.name),acceptCompression.length>0&&result.set(headerAcceptEncoding,acceptCompression.map(c=>c.name).join(",")),result}function validateResponse2(status,headers){if(status!=200)throw new ConnectError(`HTTP ${status}`,codeFromHttpStatus(status),headers);let mimeType=headers.get(headerContentType);if(parseContentType(mimeType)==null)throw new ConnectError(`unsupported content type ${mimeType}`,Code.Unknown);return{foundStatus:headers.has(headerGrpcStatus),headerError:findTrailerError(headers)}}function validateResponseWithCompression2(acceptCompression,status,headers){let{foundStatus,headerError}=validateResponse2(status,headers),compression,encoding=headers.get(headerEncoding);if(encoding!==null&&encoding.toLowerCase()!=="identity"&&(compression=acceptCompression.find(c=>c.name===encoding),!compression))throw new ConnectError(`unsupported response encoding "${encoding}"`,Code.Internal,headers);return{foundStatus,compression,headerError}}var __asyncValues4=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m=o[Symbol.asyncIterator],i;return m?m.call(o):(o=typeof __values=="function"?__values(o):o[Symbol.iterator](),i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i);function verb(n){i[n]=o[n]&&function(v){return new Promise(function(resolve,reject){v=o[n](v),settle(resolve,reject,v.done,v.value)})}}function settle(resolve,reject,d,v){Promise.resolve(v).then(function(v2){resolve({value:v2,done:d})},reject)}},__await4=function(v){return this instanceof __await4?(this.v=v,this):new __await4(v)},__asyncDelegator3=function(o){var i,p;return i={},verb("next"),verb("throw",function(e){throw e}),verb("return"),i[Symbol.iterator]=function(){return this},i;function verb(n,f){i[n]=o[n]?function(v){return(p=!p)?{value:__await4(o[n](v)),done:!1}:f?f(v):v}:f}},__asyncGenerator4=function(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i,q=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),verb("next"),verb("throw"),verb("return",awaitReturn),i[Symbol.asyncIterator]=function(){return this},i;function awaitReturn(f){return function(v){return Promise.resolve(v).then(f,reject)}}function verb(n,f){g[n]&&(i[n]=function(v){return new Promise(function(a,b){q.push([n,v,a,b])>1||resume(n,v)})},f&&(i[n]=f(i[n])))}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await4?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next",value)}function reject(value){resume("throw",value)}function settle(f,v){f(v),q.shift(),q.length&&resume(q[0][0],q[0][1])}};function createTransport2(opt){return{async unary(method,signal,timeoutMs,header,message,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,await runUnaryCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!1,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression2(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression),contextValues:contextValues??createContextValues(),message},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:"POST",header:req.header,signal:req.signal,body:pipe2(createAsyncIterable([req.message]),transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,headerError}=validateResponseWithCompression2(opt.acceptCompression,uRes.status,uRes.header),message2=await pipeTo(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat)),async iterable=>{var _a,e_1,_b,_c;let message3;try{for(var _d=!0,iterable_1=__asyncValues4(iterable),iterable_1_1;iterable_1_1=await iterable_1.next(),_a=iterable_1_1.done,!_a;_d=!0){_c=iterable_1_1.value,_d=!1;let chunk=_c;if(message3!==void 0)throw new ConnectError("protocol error: received extra output message for unary method",Code.Unimplemented);message3=chunk}}catch(e_1_1){e_1={error:e_1_1}}finally{try{!_d&&!_a&&(_b=iterable_1.return)&&await _b.call(iterable_1)}finally{if(e_1)throw e_1.error}}return message3},{propagateDownStreamError:!1});if(validateTrailer(uRes.trailer,uRes.header),message2===void 0)throw headerError||new ConnectError("protocol error: missing output message for unary method",uRes.trailer.has(headerGrpcStatus)?Code.Unimplemented:Code.Unknown);if(headerError)throw new ConnectError("protocol error: received output message for unary method with error status",Code.Unknown);return{stream:!1,service:method.parent,method,header:uRes.header,message:message2,trailer:uRes.trailer}}})},async stream(method,signal,timeoutMs,header,input,contextValues){let serialization=createMethodSerializationLookup(method,opt.binaryOptions,opt.jsonOptions,opt);return timeoutMs=timeoutMs===void 0?opt.defaultTimeoutMs:timeoutMs<=0?void 0:timeoutMs,runStreamingCall({interceptors:opt.interceptors,signal,timeoutMs,req:{stream:!0,service:method.parent,method,requestMethod:"POST",url:createMethodUrl(opt.baseUrl,method),header:requestHeaderWithCompression2(opt.useBinaryFormat,timeoutMs,header,opt.acceptCompression,opt.sendCompression),contextValues:contextValues??createContextValues(),message:input},next:async req=>{let uRes=await opt.httpClient({url:req.url,method:"POST",header:req.header,signal:req.signal,body:pipe2(req.message,transformSerializeEnvelope(serialization.getI(opt.useBinaryFormat)),transformCompressEnvelope(opt.sendCompression,opt.compressMinBytes),transformJoinEnvelopes(),{propagateDownStreamError:!0})}),{compression,foundStatus,headerError}=validateResponseWithCompression2(opt.acceptCompression,uRes.status,uRes.header);if(headerError)throw headerError;return Object.assign(Object.assign({},req),{header:uRes.header,trailer:uRes.trailer,message:pipe2(uRes.body,transformSplitEnvelope(opt.readMaxBytes),transformDecompressEnvelope(compression??null,opt.readMaxBytes),transformParseEnvelope(serialization.getO(opt.useBinaryFormat)),function(iterable){return __asyncGenerator4(this,arguments,function*(){yield __await4(yield*__asyncDelegator3(__asyncValues4(iterable))),foundStatus||validateTrailer(uRes.trailer,uRes.header)})},{propagateDownStreamError:!0})})}})}}}import*as zlib from"node:zlib";import{promisify}from"node:util";function connectErrorFromNodeReason(reason){let code=Code.Internal,chain=unwrapNodeErrorChain(reason).map(getNodeErrorProps);chain.some(p=>p.code=="ERR_STREAM_WRITE_AFTER_END")?code=Code.Aborted:chain.some(p=>p.code=="ERR_STREAM_DESTROYED"||p.code=="ERR_HTTP2_INVALID_STREAM"||p.code=="ECONNRESET")?code=Code.Aborted:chain.some(p=>p.code=="ETIMEDOUT"||p.code=="ENOTFOUND"||p.code=="EAI_AGAIN"||p.code=="ECONNREFUSED")&&(code=Code.Unavailable);let ce=ConnectError.from(reason,code);return ce!==reason&&(ce.cause=reason),ce}function unwrapNodeErrorChain(reason){let chain=[];for(;!(!(reason instanceof Error)||chain.includes(reason)||(chain.push(reason),!("cause"in reason)));)reason=reason.cause;return chain}function getNodeErrorProps(reason){let props={};return reason instanceof Error&&("code"in reason&&typeof reason.code=="string"&&(props.code=reason.code),"syscall"in reason&&typeof reason.syscall=="string"&&(props.syscall=reason.syscall)),props}function connectErrorFromH2ResetCode(rstCode){switch(rstCode){case H2Code.PROTOCOL_ERROR:case H2Code.INTERNAL_ERROR:case H2Code.FLOW_CONTROL_ERROR:case H2Code.SETTINGS_TIMEOUT:case H2Code.FRAME_SIZE_ERROR:case H2Code.COMPRESSION_ERROR:case H2Code.CONNECT_ERROR:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.Internal);case H2Code.REFUSED_STREAM:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.Unavailable);case H2Code.CANCEL:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.Canceled);case H2Code.ENHANCE_YOUR_CALM:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.ResourceExhausted);case H2Code.INADEQUATE_SECURITY:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.PermissionDenied);case H2Code.HTTP_1_1_REQUIRED:return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`,Code.PermissionDenied);default:break}}var H2Code;(function(H2Code2){H2Code2[H2Code2.PROTOCOL_ERROR=1]="PROTOCOL_ERROR",H2Code2[H2Code2.INTERNAL_ERROR=2]="INTERNAL_ERROR",H2Code2[H2Code2.FLOW_CONTROL_ERROR=3]="FLOW_CONTROL_ERROR",H2Code2[H2Code2.SETTINGS_TIMEOUT=4]="SETTINGS_TIMEOUT",H2Code2[H2Code2.STREAM_CLOSED=5]="STREAM_CLOSED",H2Code2[H2Code2.FRAME_SIZE_ERROR=6]="FRAME_SIZE_ERROR",H2Code2[H2Code2.REFUSED_STREAM=7]="REFUSED_STREAM",H2Code2[H2Code2.CANCEL=8]="CANCEL",H2Code2[H2Code2.COMPRESSION_ERROR=9]="COMPRESSION_ERROR",H2Code2[H2Code2.CONNECT_ERROR=10]="CONNECT_ERROR",H2Code2[H2Code2.ENHANCE_YOUR_CALM=11]="ENHANCE_YOUR_CALM",H2Code2[H2Code2.INADEQUATE_SECURITY=12]="INADEQUATE_SECURITY",H2Code2[H2Code2.HTTP_1_1_REQUIRED=13]="HTTP_1_1_REQUIRED"})(H2Code||(H2Code={}));var gzip2=promisify(zlib.gzip),gunzip2=promisify(zlib.gunzip),brotliCompress2=promisify(zlib.brotliCompress),brotliDecompress2=promisify(zlib.brotliDecompress),compressionGzip={name:"gzip",compress(bytes){return asUint8ArrayArrayBuffer(gzip2(bytes,{}))},decompress(bytes,readMaxBytes){return bytes.length==0?Promise.resolve(new Uint8Array(0)):asUint8ArrayArrayBuffer(wrapZLibErrors(gunzip2(bytes,{maxOutputLength:readMaxBytes}),readMaxBytes))}},compressionBrotli={name:"br",compress(bytes){return asUint8ArrayArrayBuffer(brotliCompress2(bytes,{}))},decompress(bytes,readMaxBytes){return bytes.length==0?Promise.resolve(new Uint8Array(0)):asUint8ArrayArrayBuffer(wrapZLibErrors(brotliDecompress2(bytes,{maxOutputLength:readMaxBytes}),readMaxBytes))}};function asUint8ArrayArrayBuffer(bytes){return bytes.then(b=>b.buffer instanceof ArrayBuffer?b:new Uint8Array(b))}function wrapZLibErrors(promise,readMaxBytes){return promise.catch(e=>{var _a;let props=getNodeErrorProps(e),code=Code.Internal,message="decompression failed";switch(props.code){case"ERR_BUFFER_TOO_LARGE":code=Code.ResourceExhausted,message=`message is larger than configured readMaxBytes ${readMaxBytes} after decompression`;break;case"Z_DATA_ERROR":case"ERR_PADDING_2":code=Code.InvalidArgument;break;default:!((_a=props.code)===null||_a===void 0)&&_a.startsWith("ERR__ERROR_FORMAT_")&&(code=Code.InvalidArgument);break}return Promise.reject(new ConnectError(message,code,void 0,void 0,e))})}import*as http from"node:http";import*as https from"node:https";function nodeHeaderToWebHeader(nodeHeaders){let header=new Headers;for(let[k,v]of Object.entries(nodeHeaders))if(!k.startsWith(":")&&v!==void 0)if(typeof v=="string")header.append(k,v);else if(typeof v=="number")header.append(k,String(v));else for(let e of v)header.append(k,e);return header}function webHeaderToNodeHeaders(headersInit,defaultNodeHeaders){if(headersInit===void 0&&defaultNodeHeaders===void 0)return;let o=Object.create(null);if(defaultNodeHeaders!==void 0)if(Array.isArray(defaultNodeHeaders))for(let i=0;i+1<defaultNodeHeaders.length;i+=2){let key=defaultNodeHeaders[i],value=defaultNodeHeaders[i+1];Array.isArray(o[key])?o[key].push(value):typeof o[key]=="string"?o[key]=[o[key],value]:o[key]=value}else for(let[key,value]of Object.entries(defaultNodeHeaders))Array.isArray(value)?o[key]=value.concat():value!==void 0&&(o[key]=value);if(headersInit!==void 0)if(Array.isArray(headersInit))for(let[key,value]of headersInit)appendWebHeader(o,key,value);else if("forEach"in headersInit)typeof headersInit.forEach=="function"&&headersInit.forEach((value,key)=>{appendWebHeader(o,key,value)});else for(let[key,value]of Object.entries(headersInit))appendWebHeader(o,key,value);return o}function appendWebHeader(o,key,value){key=key.toLowerCase();let existing=o[key];Array.isArray(existing)?existing.push(value):existing===void 0?o[key]=value:o[key]=[existing.toString(),value]}import*as http2 from"node:http2";var Http2SessionManager=class{state(){return this.s.t=="ready"?this.verifying!==void 0?"verifying":this.s.streamCount()>0?"open":"idle":this.s.t}error(){if(this.s.t=="error")return this.s.reason}constructor(url,pingOptions,http2SessionOptions){var _a,_b,_c,_d;this.s=closed(),this.shuttingDown=[],this.authority=new URL(url).origin,this.http2SessionOptions=http2SessionOptions,this.options={pingIntervalMs:(_a=pingOptions?.pingIntervalMs)!==null&&_a!==void 0?_a:Number.POSITIVE_INFINITY,pingTimeoutMs:(_b=pingOptions?.pingTimeoutMs)!==null&&_b!==void 0?_b:1e3*15,pingIdleConnection:(_c=pingOptions?.pingIdleConnection)!==null&&_c!==void 0?_c:!1,idleConnectionTimeoutMs:(_d=pingOptions?.idleConnectionTimeoutMs)!==null&&_d!==void 0?_d:1e3*60*15}}async connect(){try{return(await this.gotoReady()).streamCount()>0?"open":"idle"}catch{return"error"}}async request(method,path,headers,options){for(;;){let ready2=await this.gotoReady();try{let stream=ready2.conn.request(Object.assign(Object.assign({},headers),{":method":method,":path":path}),options);return ready2.registerRequest(stream),stream}catch(e){if(ready2.conn.closed||ready2.conn.destroyed)continue;throw e}}}notifyResponseByteRead(stream){this.s.t=="ready"&&this.s.responseByteRead(stream);for(let s of this.shuttingDown)s.responseByteRead(stream)}abort(reason){var _a,_b,_c;let err=reason??new ConnectError("connection aborted",Code.Canceled);(_b=(_a=this.s).abort)===null||_b===void 0||_b.call(_a,err);for(let s of this.shuttingDown)(_c=s.abort)===null||_c===void 0||_c.call(s,err);this.setState(closedOrError(err))}async gotoReady(){for(this.s.t=="ready"?this.s.isShuttingDown()||this.s.conn.closed||this.s.conn.destroyed?this.setState(connect2(this.authority,this.http2SessionOptions)):this.s.requiresVerify()&&await this.verify(this.s):(this.s.t=="closed"||this.s.t=="error")&&this.setState(connect2(this.authority,this.http2SessionOptions));this.s.t!=="ready";){if(this.s.t==="error")throw this.s.reason;this.s.t==="connecting"&&await this.s.conn}return this.s}setState(state){var _a,_b;if((_b=(_a=this.s).onExitState)===null||_b===void 0||_b.call(_a),this.s.t=="ready"&&this.s.isShuttingDown()){let sd=this.s;this.shuttingDown.push(sd),sd.onClose=sd.onError=()=>{let i=this.shuttingDown.indexOf(sd);i!==-1&&this.shuttingDown.splice(i,1)}}switch(state.t){case"connecting":state.conn.then(value=>{this.setState(ready(value,this.options))},reason=>{this.setState(closedOrError(reason))});break;case"ready":state.onClose=()=>this.setState(closed()),state.onError=err=>this.setState(closedOrError(err));break;case"closed":break;case"error":break}this.s=state}verify(stateReady){return this.verifying!==void 0?this.verifying:(this.verifying=stateReady.verify().then(success=>{success||this.setState(connect2(this.authority,this.http2SessionOptions))},reason=>{this.setState(closedOrError(reason))}).finally(()=>{this.verifying=void 0}),this.verifying)}};function closed(){return{t:"closed"}}function error2(reason){return{t:"error",reason}}function closedOrError(reason){return reason instanceof ConnectError&&ConnectError.from(reason).code==Code.Canceled?closed():error2(reason)}function connect2(authority,http2SessionOptions){let resolve,reject,conn=new Promise((res,rej)=>{resolve=res,reject=rej}),newConn=http2.connect(authority,http2SessionOptions);newConn.on("connect",onConnect),newConn.on("error",onError);function onConnect(){resolve?.(newConn),cleanup()}function onError(err){reject?.(connectErrorFromNodeReason(err)),cleanup()}function cleanup(){newConn.off("connect",onConnect),newConn.off("error",onError)}return{t:"connecting",conn,abort(reason){newConn.destroyed||newConn.destroy(void 0,http2.constants.NGHTTP2_CANCEL),reject?.(reason)},onExitState(){cleanup()}}}function ready(conn,options){assertSessionOpen(conn),conn.unref();let lastAliveAt=Date.now(),streamCount=0,pingIntervalId,pingTimeoutId,receivedGoAway=!1,receivedGoAwayEnhanceYourCalmTooManyPings=!1,idleTimeoutId;resetIdleTimeout();let state={t:"ready",conn,streamCount(){return streamCount},requiresVerify(){return Date.now()-lastAliveAt>options.pingIntervalMs},isShuttingDown(){return receivedGoAway},onClose:void 0,onError:void 0,registerRequest(stream){streamCount++,streamCount==1&&(conn.ref(),resetPingInterval(),stopIdleTimeout()),stream.once("response",()=>{lastAliveAt=Date.now(),resetPingInterval()}),stream.once("close",()=>{streamCount--,streamCount==0&&(conn.unref(),resetPingInterval(),resetIdleTimeout())})},responseByteRead(stream){stream.session===conn&&(conn.closed||conn.destroyed||streamCount<=0||(lastAliveAt=Date.now(),resetPingInterval()))},verify(){return conn.ref(),new Promise(resolve=>{let onError2=()=>{resolve(!1)};commonPing(()=>{streamCount==0&&conn.unref(),conn.off("error",onError2),resolve(!0)}),conn.once("error",onError2)})},abort(reason){conn.destroyed||(conn.once("error",()=>{}),conn.destroy(reason,http2.constants.NGHTTP2_CANCEL))},onExitState(){state.isShuttingDown()||(cleanup(),this.onError=void 0,this.onClose=void 0)}};function resetPingInterval(){stopPingInterval(),(streamCount>0||options.pingIdleConnection)&&(pingIntervalId=safeSetTimeout(onPingInterval,options.pingIntervalMs))}function stopPingInterval(){clearTimeout(pingIntervalId),clearTimeout(pingTimeoutId)}function onPingInterval(){commonPing(resetPingInterval)}function commonPing(onSuccess){clearTimeout(pingTimeoutId),pingTimeoutId=safeSetTimeout(()=>{conn.destroy(new ConnectError("PING timed out",Code.Unavailable),http2.constants.NGHTTP2_CANCEL)},options.pingTimeoutMs),conn.ping((err,duration3)=>{if(clearTimeout(pingTimeoutId),err===null){if(duration3>options.pingTimeoutMs){conn.destroy(new ConnectError("PING timed out",Code.Unavailable),http2.constants.NGHTTP2_CANCEL);return}lastAliveAt=Date.now(),onSuccess()}})}function stopIdleTimeout(){clearTimeout(idleTimeoutId)}function resetIdleTimeout(){idleTimeoutId=safeSetTimeout(onIdleTimeout,options.idleConnectionTimeoutMs)}function onIdleTimeout(){conn.close(),onClose()}function onGoaway(errorCode,lastStreamID,opaqueData){if(errorCode===http2.constants.NGHTTP2_NO_ERROR&&streamCount===0){conn.destroy(new ConnectError("received GOAWAY without any open streams",Code.Canceled),http2.constants.NGHTTP2_NO_ERROR);return}receivedGoAway=!0;let tooManyPingsAscii=Buffer.from("too_many_pings","ascii");opaqueData?.equals(tooManyPingsAscii)&&(options.pingIntervalMs=options.pingIntervalMs*2,receivedGoAwayEnhanceYourCalmTooManyPings=!0)}function onClose(){var _a;cleanup(),(_a=state.onClose)===null||_a===void 0||_a.call(state)}function onError(err){var _a,_b;if(cleanup(),receivedGoAwayEnhanceYourCalmTooManyPings){let ce=new ConnectError(`http/2 connection closed with error code ENHANCE_YOUR_CALM (0x${http2.constants.NGHTTP2_ENHANCE_YOUR_CALM.toString(16)}), too_many_pings, doubled the interval`,Code.ResourceExhausted);(_a=state.onError)===null||_a===void 0||_a.call(state,ce)}else(_b=state.onError)===null||_b===void 0||_b.call(state,connectErrorFromNodeReason(err))}function cleanup(){stopPingInterval(),stopIdleTimeout(),conn.off("error",onError),conn.off("close",onClose),conn.off("goaway",onGoaway)}return conn.on("error",onError),conn.on("close",onClose),conn.on("goaway",onGoaway),state}function safeSetTimeout(callback,ms){if(!(ms>2147483647))return setTimeout(callback,ms).unref()}function assertSessionOpen(conn){if(conn.connecting)throw new ConnectError("expected open session, but it is connecting",Code.Internal);if(conn.destroyed)throw new ConnectError("expected open session, but it is destroyed",Code.Internal);if(conn.closed)throw new ConnectError("expected open session, but it is closed",Code.Internal)}function createNodeHttpClient(options){var _a;if(options.httpVersion=="1.1")return createNodeHttp1Client(options.nodeOptions);let sessionProvider=(_a=options.sessionProvider)!==null&&_a!==void 0?_a:(url=>new Http2SessionManager(url));return createNodeHttp2Client(sessionProvider)}function createNodeHttp1Client(httpOptions){return async function(req){let sentinel=createSentinel(req.signal);return new Promise((resolve,reject)=>{sentinel.onError(e=>{reject(e)}),h1Request(sentinel,req.url,Object.assign(Object.assign({},httpOptions),{headers:webHeaderToNodeHeaders(req.header,httpOptions?.headers),method:req.method}),request4=>{sinkRequest(req,request4,sentinel),request4.on("response",response=>{var _a;response.on("error",sentinel.error),sentinel.onError(reason=>response.destroy(reason));let trailer=new Headers;resolve({status:(_a=response.statusCode)!==null&&_a!==void 0?_a:0,header:nodeHeaderToWebHeader(response.headers),body:h1ResponseIterable(sentinel,response,trailer),trailer})})})})}}function createNodeHttp2Client(sessionProvider){return function(req){let sentinel=createSentinel(req.signal),sessionManager=sessionProvider(req.url);return new Promise((resolve,reject)=>{sentinel.onError(e=>{reject(e)}),h2Request(sentinel,sessionManager,req.url,req.method,webHeaderToNodeHeaders(req.header),{},stream=>{sinkRequest(req,stream,sentinel),stream.on("response",headers=>{var _a;let response={status:(_a=headers[":status"])!==null&&_a!==void 0?_a:0,header:nodeHeaderToWebHeader(headers),body:h2ResponseIterable(sentinel,stream,sessionManager),trailer:h2ResponseTrailer(stream)};resolve(response)})})})}}function h1Request(sentinel,url,options,onRequest){let request3;new URL(url).protocol.startsWith("https")?request3=https.request(url,options):request3=http.request(url,options),sentinel.onError(reason=>request3.destroy(reason)),request3.flushHeaders(),request3.on("error",sentinel.error),request3.on("socket",function(socket){function onSocketConnect(){socket.off("connect",onSocketConnect),onRequest(request3)}socket.readyState==="open"?onRequest(request3):socket.on("connect",onSocketConnect)})}function h1ResponseIterable(sentinel,response,trailer){let inner=response[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){let r=await sentinel.race(inner.next());return r.done===!0&&(nodeHeaderToWebHeader(response.trailers).forEach((value,key)=>{trailer.set(key,value)}),sentinel.close()),r},throw(e){throw sentinel.error(e),e}}}}}function h2Request(sentinel,sm,url,method,headers,options,onStream){let requestUrl=new URL(url);if(requestUrl.origin!==sm.authority){let message=`cannot make a request to ${requestUrl.origin}: the http2 session is connected to ${sm.authority}`;sentinel.error(new ConnectError(message,Code.Internal));return}sm.request(method,requestUrl.pathname+requestUrl.search,headers,{}).then(stream=>{sentinel.onError(reason=>{if(stream.closed)return;let rstCode=reason.code==Code.Canceled?H2Code.CANCEL:H2Code.INTERNAL_ERROR;return new Promise(resolve=>stream.close(rstCode,resolve))}),stream.on("error",function(e){stream.writableEnded&&unwrapNodeErrorChain(e).map(getNodeErrorProps).some(p=>p.code=="ERR_STREAM_WRITE_AFTER_END")||sentinel.error(e)}),stream.on("close",function(){let err=connectErrorFromH2ResetCode(stream.rstCode);err&&sentinel.error(err)}),onStream(stream)},reason=>{sentinel.error(reason)})}function h2ResponseTrailer(response){let trailer=new Headers;return response.on("trailers",args=>{nodeHeaderToWebHeader(args).forEach((value,key)=>{trailer.set(key,value)})}),trailer}function h2ResponseIterable(sentinel,response,sm){let inner=response[Symbol.asyncIterator]();return{[Symbol.asyncIterator](){return{async next(){let r=await sentinel.race(inner.next());return r.done===!0&&sentinel.close(),sm?.notifyResponseByteRead(response),r},throw(e){throw sentinel.error(e),e}}}}}async function sinkRequest(request3,nodeRequest,sentinel){if(request3.body===void 0){await new Promise(resolve=>nodeRequest.end(resolve));return}let it=request3.body[Symbol.asyncIterator]();return new Promise(resolve=>{writeNext();function writeNext(){sentinel.isClosed()||it.next().then(r=>{if(r.done===!0){nodeRequest.end(resolve);return}nodeRequest.write(r.value,"binary",e=>{if(e==null){writeNext();return}it.throw!==void 0&&it.throw(connectErrorFromNodeReason(e)).catch(()=>{}),!(nodeRequest.writableEnded&&unwrapNodeErrorChain(e).map(getNodeErrorProps).some(p=>p.code=="ERR_STREAM_WRITE_AFTER_END"))&&sentinel.error(e)})},e=>{sentinel.error(e)})}})}function createSentinel(signal){let rejectRace,closed2=!1,closedError,onErrorListeners=[],sentinel={error(error3){if(!closed2){closed2=!0,closedError=error3 instanceof ConnectError?error3:connectErrorFromNodeReason(error3),rejectRace?.(closedError);for(let onRejected of onErrorListeners)onRejected(closedError);cleanup()}},close(){closed2||(closed2=!0,rejectRace&&rejectRace(new ConnectError("sentinel completed early",Code.Internal)),cleanup())},isClosed(){return closed2},onError(onError){closed2?closedError!==void 0&&onError(closedError):onErrorListeners.push(onError)},race(promise){let resolveRace,race=new Promise((resolve,reject)=>{resolveRace=resolve,rejectRace=reject});return promise.then(value=>{resolveRace?.(value)},reason=>{rejectRace?.(reason)}),closed2&&rejectRace?.(closedError??new ConnectError("sentinel completed early",Code.Internal)),race}};function cleanup(){signal&&signal.removeEventListener("abort",onSignalAbort),onErrorListeners=[],rejectRace=void 0}function onSignalAbort(){sentinel.error(getAbortSignalReason(this))}return signal&&(signal.addEventListener("abort",onSignalAbort),signal.aborted&&sentinel.error(getAbortSignalReason(signal))),sentinel}function validateNodeTransportOptions(options){var _a,_b,_c,_d;let httpClient;if(options.httpVersion=="2"){let sessionManager;options.sessionManager?sessionManager=options.sessionManager:sessionManager=new Http2SessionManager(options.baseUrl,{pingIntervalMs:options.pingIntervalMs,pingIdleConnection:options.pingIdleConnection,pingTimeoutMs:options.pingTimeoutMs,idleConnectionTimeoutMs:options.idleConnectionTimeoutMs},options.nodeOptions),httpClient=createNodeHttpClient({httpVersion:"2",sessionProvider:()=>sessionManager})}else httpClient=createNodeHttpClient({httpVersion:"1.1",nodeOptions:options.nodeOptions});return Object.assign(Object.assign(Object.assign({},options),{httpClient,useBinaryFormat:(_a=options.useBinaryFormat)!==null&&_a!==void 0?_a:!0,interceptors:(_b=options.interceptors)!==null&&_b!==void 0?_b:[],sendCompression:(_c=options.sendCompression)!==null&&_c!==void 0?_c:null,acceptCompression:(_d=options.acceptCompression)!==null&&_d!==void 0?_d:[compressionGzip,compressionBrotli]}),validateReadWriteMaxBytes(options.readMaxBytes,options.writeMaxBytes,options.compressMinBytes))}function createGrpcWebTransport(options){return createTransport(validateNodeTransportOptions(options))}function createGrpcTransport(options){return createTransport2(validateNodeTransportOptions(Object.assign(Object.assign({},options),{httpVersion:"2"})))}function messageDesc2(file,path,...paths){return paths.reduce((acc,cur)=>acc.nestedMessages[cur],file.messages[path])}function serviceDesc(file,path,...paths){if(paths.length>0)throw new Error;return file.services[path]}var file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_group=fileDesc("CkdhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2FwaV9yZXNvdXJjZV9ncm91cC5wcm90bxIuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZCI8ChRBcGlSZXNvdXJjZUdyb3VwTWV0YRIOCgZkb21haW4YASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJKroBChBBcGlSZXNvdXJjZUdyb3VwEiIKHmFwaV9yZXNvdXJjZV9ncm91cF91bnNwZWNpZmllZBAAEi4KB2FnZW50aWMQARoh6r0sHQoSYWdlbnRpYy5zdGlnbWVyLmFpEgdBZ2VudGljEiIKA2lhbRACGhnqvSwVCg5pYW0uc3RpZ21lci5haRIDSUFNEi4KB3RlbmFuY3kQAxoh6r0sHQoSdGVuYW5jeS5zdGlnbWVyLmFpEgdUZW5hbmN5OogBCgpncm91cF9tZXRhEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMY3ccFIAEoCzJELmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuQXBpUmVzb3VyY2VHcm91cE1ldGFSCWdyb3VwTWV0YWIGcHJvdG8z",[file_google_protobuf_descriptor]);var ApiResourceGroup;(function(ApiResourceGroup2){ApiResourceGroup2[ApiResourceGroup2.api_resource_group_unspecified=0]="api_resource_group_unspecified",ApiResourceGroup2[ApiResourceGroup2.agentic=1]="agentic",ApiResourceGroup2[ApiResourceGroup2.iam=2]="iam",ApiResourceGroup2[ApiResourceGroup2.tenancy=3]="tenancy"})(ApiResourceGroup||(ApiResourceGroup={}));var file_ai_stigmer_iam_v1_enum=fileDesc("ChxhaS9zdGlnbWVyL2lhbS92MS9lbnVtLnByb3RvEhFhaS5zdGlnbWVyLmlhbS52MSrbBgoNSWFtUGVybWlzc2lvbhIPCgt1bnNwZWNpZmllZBAAEgwKCGNhbl92aWV3EAESDAoIY2FuX2VkaXQQAhIOCgpjYW5fZGVsZXRlEAMSFAoQY2FuX2dyYW50X2FjY2VzcxAEEhMKD2Nhbl92aWV3X2FjY2VzcxAFEhQKEGNhbl9jcmVhdGVfYWdlbnQQBhIXChNjYW5fY3JlYXRlX3dvcmtmbG93EAcSFgoSY2FuX2NyZWF0ZV9zZXNzaW9uEAgSFAoQY2FuX2NyZWF0ZV9za2lsbBAJEhYKEmNhbl9jcmVhdGVfcHJvamVjdBAKEhIKDmNhbl9jcmVhdGVfaWRwEAsSGgoWY2FuX2NyZWF0ZV9lbnZpcm9ubWVudBAMEh8KG2Nhbl9jcmVhdGVfaWRlbnRpdHlfYWNjb3VudBAVEhgKFGNhbl9jcmVhdGVfb2F1dGhfYXBwEBcSHgoaY2FuX2NyZWF0ZV9wbGF0Zm9ybV9jbGllbnQQGBIbChdjYW5fY3JlYXRlX2V4ZWN1dGlvbl9pbhANEhcKE2Nhbl9jcmVhdGVfaW5zdGFuY2UQDhIPCgtjYW5fZXhlY3V0ZRAPEhQKEGNhbl9yZWFkX3NlY3JldHMQEBIVChFjYW5fYm9vdHN0cmFwX2lhbRAREiAKHGNhbl9tYW5hZ2VfaWRlbnRpdHlfYWNjb3VudHMQEhIYChRsb2dpbl90b19iYWNrX29mZmljZRAUEg8KC2Nhbl9jb25uZWN0EBYSFQoRY2FuX2NyZWF0ZV9ydW5uZXIQGRIaChJjYW5fZGVsZXRlX3Nlc3Npb24QGhoCCAESFAoQY2FuX3ZpZXdfYmlsbGluZxAbEhYKEmNhbl9tYW5hZ2VfYmlsbGluZxAcEhsKF2Nhbl9leGVjdXRlX2JpbGxpbmdfb3BzEB0SGgoWY2FuX2NyZWF0ZV9hZ2VudF9zaGFyZRAeEhoKFmNhbl9jcmVhdGVfY2hhbm5lbF9hcHAQHxIcChhjYW5fbWFuYWdlX21vZGVsX3ByaWNpbmcQIBITCg9jYW5fdXNlX3JlY29yZHMQIRIYChRjYW5fY3JlYXRlX2RhdGFzdG9yZRAiEh4KGmNhbl9tYW5hZ2VfY3Vyc29yX2FjY291bnRzECMqUQoHSWFtUm9sZRIYChRpYW1fcm9sZV91bnNwZWNpZmllZBAAEgkKBW93bmVyEAESCQoFYWRtaW4QAhIKCgZtZW1iZXIQAxIKCgZ2aWV3ZXIQBGIGcHJvdG8z"),IamPermission;(function(IamPermission2){IamPermission2[IamPermission2.unspecified=0]="unspecified",IamPermission2[IamPermission2.can_view=1]="can_view",IamPermission2[IamPermission2.can_edit=2]="can_edit",IamPermission2[IamPermission2.can_delete=3]="can_delete",IamPermission2[IamPermission2.can_grant_access=4]="can_grant_access",IamPermission2[IamPermission2.can_view_access=5]="can_view_access",IamPermission2[IamPermission2.can_create_agent=6]="can_create_agent",IamPermission2[IamPermission2.can_create_workflow=7]="can_create_workflow",IamPermission2[IamPermission2.can_create_session=8]="can_create_session",IamPermission2[IamPermission2.can_create_skill=9]="can_create_skill",IamPermission2[IamPermission2.can_create_project=10]="can_create_project",IamPermission2[IamPermission2.can_create_idp=11]="can_create_idp",IamPermission2[IamPermission2.can_create_environment=12]="can_create_environment",IamPermission2[IamPermission2.can_create_identity_account=21]="can_create_identity_account",IamPermission2[IamPermission2.can_create_oauth_app=23]="can_create_oauth_app",IamPermission2[IamPermission2.can_create_platform_client=24]="can_create_platform_client",IamPermission2[IamPermission2.can_create_execution_in=13]="can_create_execution_in",IamPermission2[IamPermission2.can_create_instance=14]="can_create_instance",IamPermission2[IamPermission2.can_execute=15]="can_execute",IamPermission2[IamPermission2.can_read_secrets=16]="can_read_secrets",IamPermission2[IamPermission2.can_bootstrap_iam=17]="can_bootstrap_iam",IamPermission2[IamPermission2.can_manage_identity_accounts=18]="can_manage_identity_accounts",IamPermission2[IamPermission2.login_to_back_office=20]="login_to_back_office",IamPermission2[IamPermission2.can_connect=22]="can_connect",IamPermission2[IamPermission2.can_create_runner=25]="can_create_runner",IamPermission2[IamPermission2.can_delete_session=26]="can_delete_session",IamPermission2[IamPermission2.can_view_billing=27]="can_view_billing",IamPermission2[IamPermission2.can_manage_billing=28]="can_manage_billing",IamPermission2[IamPermission2.can_execute_billing_ops=29]="can_execute_billing_ops",IamPermission2[IamPermission2.can_create_agent_share=30]="can_create_agent_share",IamPermission2[IamPermission2.can_create_channel_app=31]="can_create_channel_app",IamPermission2[IamPermission2.can_manage_model_pricing=32]="can_manage_model_pricing",IamPermission2[IamPermission2.can_use_records=33]="can_use_records",IamPermission2[IamPermission2.can_create_datastore=34]="can_create_datastore",IamPermission2[IamPermission2.can_manage_cursor_accounts=35]="can_manage_cursor_accounts"})(IamPermission||(IamPermission={}));var IamRole;(function(IamRole2){IamRole2[IamRole2.iam_role_unspecified=0]="iam_role_unspecified",IamRole2[IamRole2.owner=1]="owner",IamRole2[IamRole2.admin=2]="admin",IamRole2[IamRole2.member=3]="member",IamRole2[IamRole2.viewer=4]="viewer"})(IamRole||(IamRole={}));var file_ai_stigmer_commons_apiresource_apiresourcekind_authorization_config=fileDesc("CklhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2F1dGhvcml6YXRpb25fY29uZmlnLnByb3RvEi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kIoABChBWaXNpYmlsaXR5Q29uZmlnEhcKD3N1cHBvcnRzX3B1YmxpYxgBIAEoCBIZChFzdXBwb3J0c19wbGF0Zm9ybRgCIAEoCBIUCgxzdXBwb3J0c19vcmcYAyABKAgSIgoaZGVmYXVsdHNfdG9fb3JnX3Zpc2liaWxpdHkYBCABKAgiSgoUUGFyZW50UmVsYXRpb25Db25maWcSDAoEa2luZBgBIAEoCRIQCghyZWxhdGlvbhgCIAEoCRISCgpzcGVjX2ZpZWxkGAMgASgJIq4EChNBdXRob3JpemF0aW9uQ29uZmlnEloKCnNjb3BlX3R5cGUYASABKA4yRi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkF1dGhvcml6YXRpb25TY29wZVR5cGUSWAoKb3duZXJfdHlwZRgCIAEoDjJELmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuT3duZXJBdHRyaWJ1dGlvblR5cGUSVAoGcGFyZW50GAMgASgLMkQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5QYXJlbnRSZWxhdGlvbkNvbmZpZxJgChJhZGRpdGlvbmFsX3BhcmVudHMYBCADKAsyRC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLlBhcmVudFJlbGF0aW9uQ29uZmlnElQKCnZpc2liaWxpdHkYBSABKAsyQC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLlZpc2liaWxpdHlDb25maWcSHgoWcmVxdWlyZXNfY3JlYXRvcl90dXBsZRgGIAEoCBIzCg9ncmFudGFibGVfcm9sZXMYByADKA4yGi5haS5zdGlnbWVyLmlhbS52MS5JYW1Sb2xlKoUCChZBdXRob3JpemF0aW9uU2NvcGVUeXBlEigKJEFVVEhPUklaQVRJT05fU0NPUEVfVFlQRV9VTlNQRUNJRklFRBAAEiUKIUFVVEhPUklaQVRJT05fU0NPUEVfVFlQRV9QTEFURk9STRABEikKJUFVVEhPUklaQVRJT05fU0NPUEVfVFlQRV9PUkdBTklaQVRJT04QAhIjCh9BVVRIT1JJWkFUSU9OX1NDT1BFX1RZUEVfUEFSRU5UEAMSJwojQVVUSE9SSVpBVElPTl9TQ09QRV9UWVBFX09XTkVSX09OTFkQBBIhCh1BVVRIT1JJWkFUSU9OX1NDT1BFX1RZUEVfTk9ORRAFKskBChRPd25lckF0dHJpYnV0aW9uVHlwZRImCiJPV05FUl9BVFRSSUJVVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIQodT1dORVJfQVRUUklCVVRJT05fVFlQRV9ESVJFQ1QQARIkCiBPV05FUl9BVFRSSUJVVElPTl9UWVBFX0lOSEVSSVRFRBACEh8KG09XTkVSX0FUVFJJQlVUSU9OX1RZUEVfU0VMRhADEh8KG09XTkVSX0FUVFJJQlVUSU9OX1RZUEVfTk9ORRAEQhpCGEF1dGhvcml6YXRpb25Db25maWdQcm90b2IGcHJvdG8z",[file_ai_stigmer_iam_v1_enum]);var AuthorizationScopeType;(function(AuthorizationScopeType2){AuthorizationScopeType2[AuthorizationScopeType2.UNSPECIFIED=0]="UNSPECIFIED",AuthorizationScopeType2[AuthorizationScopeType2.PLATFORM=1]="PLATFORM",AuthorizationScopeType2[AuthorizationScopeType2.ORGANIZATION=2]="ORGANIZATION",AuthorizationScopeType2[AuthorizationScopeType2.PARENT=3]="PARENT",AuthorizationScopeType2[AuthorizationScopeType2.OWNER_ONLY=4]="OWNER_ONLY",AuthorizationScopeType2[AuthorizationScopeType2.NONE=5]="NONE"})(AuthorizationScopeType||(AuthorizationScopeType={}));var OwnerAttributionType;(function(OwnerAttributionType2){OwnerAttributionType2[OwnerAttributionType2.UNSPECIFIED=0]="UNSPECIFIED",OwnerAttributionType2[OwnerAttributionType2.DIRECT=1]="DIRECT",OwnerAttributionType2[OwnerAttributionType2.INHERITED=2]="INHERITED",OwnerAttributionType2[OwnerAttributionType2.SELF=3]="SELF",OwnerAttributionType2[OwnerAttributionType2.NONE=4]="NONE"})(OwnerAttributionType||(OwnerAttributionType={}));var file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind=fileDesc("CkZhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvYXBpcmVzb3VyY2VraW5kL2FwaV9yZXNvdXJjZV9raW5kLnByb3RvEi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kIswDChNBcGlSZXNvdXJjZUtpbmRNZXRhEk8KBWdyb3VwGAEgASgOMkAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUdyb3VwElMKB3ZlcnNpb24YAiABKA4yQi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlVmVyc2lvbhIMCgRuYW1lGAMgASgJEhQKDGRpc3BsYXlfbmFtZRgEIAEoCRIRCglpZF9wcmVmaXgYBSABKAkSFAoMaXNfdmVyc2lvbmVkGAYgASgIEhoKEm5vdF9zZWFyY2hfaW5kZXhlZBgHIAEoCBJKCgR0aWVyGAggASgOMjwuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5SZXNvdXJjZVRpZXISWgoNYXV0aG9yaXphdGlvbhgJIAEoCzJDLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5hcGlyZXNvdXJjZWtpbmQuQXV0aG9yaXphdGlvbkNvbmZpZypCChJBcGlSZXNvdXJjZVZlcnNpb24SJAogYXBpX3Jlc291cmNlX3ZlcnNpb25fdW5zcGVjaWZpZWQQABIGCgJ2MRABKk4KDFJlc291cmNlVGllchIdChlyZXNvdXJjZV90aWVyX3Vuc3BlY2lmaWVkEAASDwoLb3Blbl9zb3VyY2UQARIOCgpjbG91ZF9vbmx5EAIqQQoPUGxhdGZvcm1JZFZhbHVlEiEKHXBsYXRmb3JtX2lkX3ZhbHVlX3Vuc3BlY2lmaWVkEAASCwoHc3RpZ21lchABKsQRCg9BcGlSZXNvdXJjZUtpbmQSHQoZYXBpX3Jlc291cmNlX2tpbmRfdW5rbm93bhAAElsKFGFwaV9yZXNvdXJjZV92ZXJzaW9uEAEaQar/Kz0IARABGhJBcGlSZXNvdXJjZVZlcnNpb24iFEFQSSBSZXNvdXJjZSBWZXJzaW9uKgN2ZXI4AUACSgQIBRAEEj8KCmlhbV9wb2xpY3kQChovqv8rKwgCEAEaCUlhbVBvbGljeSIKSUFNIFBvbGljeSoEaWFtcDgBQAJKBAgCEAESTgoQaWRlbnRpdHlfYWNjb3VudBALGjiq/ys0CAIQARoPSWRlbnRpdHlBY2NvdW50IhBJZGVudGl0eSBBY2NvdW50KgNpZGFAAkoECAQQAxI1CgdhcGlfa2V5EAwaKKr/KyQIAhABGgZBcGlLZXkiB0FQSSBLZXkqA2tleTgBQAJKBAgEEAESPwoKaW52aXRhdGlvbhAUGi+q/ysrCAIQARoKSW52aXRhdGlvbiIKSW52aXRhdGlvbioDaW52OAFAAkoECAIQARJXChFpZGVudGl0eV9wcm92aWRlchAVGkCq/ys8CAIQARoQSWRlbnRpdHlQcm92aWRlciIRSWRlbnRpdHkgUHJvdmlkZXIqA2lkcDgBQAJKCAgCEAE6AgEEEkAKCW9hdXRoX2FwcBAWGjGq/ystCAIQARoIT0F1dGhBcHAiCU9BdXRoIEFwcCoEb2FwcDgBQAJKCAgCEAE6AgEEElEKD3BsYXRmb3JtX2NsaWVudBAXGjyq/ys4CAIQARoOUGxhdGZvcm1DbGllbnQiD1BsYXRmb3JtIENsaWVudCoDcGNsOAFAAkoICAIQAToCAQQSSQoMb3JnYW5pemF0aW9uEB4aN6r/KzMIAxABGgxPcmdhbml6YXRpb24iDE9yZ2FuaXphdGlvbioDb3JnQAFKCggEEAE6BAECAwQSOQoIcGxhdGZvcm0QHxorqv8rJwgDEAEaCFBsYXRmb3JtIghQbGF0Zm9ybSoDcGx0OAFAAkoECAUQBBI8CgVhZ2VudBAoGjGq/ystCAEQARoFQWdlbnQiBUFnZW50KgNhZ3RAAUoSCAIQASoICAEQARgBIAE6AgEEEmsKD2FnZW50X2V4ZWN1dGlvbhApGlaq/ytSCAEQARoOQWdlbnRFeGVjdXRpb24iD0FnZW50IEV4ZWN1dGlvbioDYWV4QAFKJAgDEAIaHgoHc2Vzc2lvbhIHc2Vzc2lvbhoKc2Vzc2lvbl9pZBI4CgdzZXNzaW9uECoaK6r/KycIARABGgdTZXNzaW9uIgdTZXNzaW9uKgNzZXNAAUoICAIQAToCAQQSPgoFc2tpbGwQKxozqv8rLwgBEAEaBVNraWxsIgVTa2lsbCoDc2tsMAFAAUoSCAIQASoICAEQARgBIAE6AgEEEkoKCm1jcF9zZXJ2ZXIQLBo6qv8rNggBEAEaCU1jcFNlcnZlciIKTUNQIFNlcnZlcioDbWNwQAFKEggCEAEqCAgBEAEYASABOgIBBBJsCg5hZ2VudF9pbnN0YW5jZRAtGliq/ytUCAEQARoNQWdlbnRJbnN0YW5jZSIOQWdlbnQgSW5zdGFuY2UqA2FpbkABSigIAhABIhgKBWFnZW50EgVhZ2VudBoIYWdlbnRfaWQqBAgBGAE6AgEEEkUKC2FnZW50X3NoYXJlEC4aNKr/KzAIARABGgpBZ2VudFNoYXJlIgtBZ2VudCBTaGFyZSoDYXNoOAFAAUoICAIQAToCAQQSSwoNYWdlbnRfY2hhbm5lbBAvGjiq/ys0CAEQARoMQWdlbnRDaGFubmVsIg1BZ2VudCBDaGFubmVsKgNhY2g4AUABSggIAhABOgIBBBJHCgtjaGFubmVsX2FwcBAwGjaq/ysyCAEQARoKQ2hhbm5lbEFwcCILQ2hhbm5lbCBBcHAqBWNoYXBwOAFAAUoICAIQAToCAQQSRAoJZGF0YXN0b3JlEDEaNar/KzEIARABGglEYXRhc3RvcmUiCURhdGFzdG9yZSoDZHN0QAFKDggCEAEqAhgBMAE6AgEEEkcKCHdvcmtmbG93EDIaOar/KzUIARABGghXb3JrZmxvdyIIV29ya2Zsb3cqA3dmbDABQAFKEggCEAEqCAgBEAEYASABOgIBBBJ+ChF3b3JrZmxvd19pbnN0YW5jZRAzGmeq/ytjCAEQARoQV29ya2Zsb3dJbnN0YW5jZSIRV29ya2Zsb3cgSW5zdGFuY2UqA3dpbkABSjEIAhABIiEKCHdvcmtmbG93Egh3b3JrZmxvdxoLd29ya2Zsb3dfaWQqBAgBGAE6AgEEEpYBChJ3b3JrZmxvd19leGVjdXRpb24QNBp+qv8reggBEAEaEVdvcmtmbG93RXhlY3V0aW9uIhJXb3JrZmxvdyBFeGVjdXRpb24qA3dleEABSkYIAhABIjwKEXdvcmtmbG93X2luc3RhbmNlEhF3b3JrZmxvd19pbnN0YW5jZRoUd29ya2Zsb3dfaW5zdGFuY2VfaWQ6AgEEEkoKC2Vudmlyb25tZW50EDUaOar/KzUIARABGgtFbnZpcm9ubWVudCILRW52aXJvbm1lbnQqA2VudkABSg4IAhABKgIYATABOgIBBBI7CghhcnRpZmFjdBA3Gi2q/yspCAEQARoIQXJ0aWZhY3QiCEFydGlmYWN0KgNhcnRAAUoICAIQAToCAQQSUgoRZXhlY3V0aW9uX2NvbnRleHQQNho7qv8rNwgBEAEaEEV4ZWN1dGlvbkNvbnRleHQiEUV4ZWN1dGlvbiBDb250ZXh0KgRlY3R4QAFKBAgEEAESPQoIc2NoZWR1bGUQOBovqv8rKwgBEAEaCFNjaGVkdWxlIghTY2hlZHVsZSoDc2NoOAFAAUoICAIQAToCAQQSOAoHcHJvamVjdBA8Giuq/ysnCAMQARoHUHJvamVjdCIHUHJvamVjdCoDcHJqQAFKCAgCEAE6AgEEOoUBCglraW5kX21ldGESIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxj1vwUgASgLMkMuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmRNZXRhUghraW5kTWV0YUIbQhlBcGlSZXNvdXJjZUtpbmRPdXRlckNsYXNzYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_group,file_ai_stigmer_commons_apiresource_apiresourcekind_authorization_config,file_google_protobuf_descriptor]);var ApiResourceVersion;(function(ApiResourceVersion2){ApiResourceVersion2[ApiResourceVersion2.api_resource_version_unspecified=0]="api_resource_version_unspecified",ApiResourceVersion2[ApiResourceVersion2.v1=1]="v1"})(ApiResourceVersion||(ApiResourceVersion={}));var ResourceTier;(function(ResourceTier2){ResourceTier2[ResourceTier2.resource_tier_unspecified=0]="resource_tier_unspecified",ResourceTier2[ResourceTier2.open_source=1]="open_source",ResourceTier2[ResourceTier2.cloud_only=2]="cloud_only"})(ResourceTier||(ResourceTier={}));var PlatformIdValue;(function(PlatformIdValue2){PlatformIdValue2[PlatformIdValue2.platform_id_value_unspecified=0]="platform_id_value_unspecified",PlatformIdValue2[PlatformIdValue2.stigmer=1]="stigmer"})(PlatformIdValue||(PlatformIdValue={}));var ApiResourceKind;(function(ApiResourceKind2){ApiResourceKind2[ApiResourceKind2.api_resource_kind_unknown=0]="api_resource_kind_unknown",ApiResourceKind2[ApiResourceKind2.api_resource_version=1]="api_resource_version",ApiResourceKind2[ApiResourceKind2.iam_policy=10]="iam_policy",ApiResourceKind2[ApiResourceKind2.identity_account=11]="identity_account",ApiResourceKind2[ApiResourceKind2.api_key=12]="api_key",ApiResourceKind2[ApiResourceKind2.invitation=20]="invitation",ApiResourceKind2[ApiResourceKind2.identity_provider=21]="identity_provider",ApiResourceKind2[ApiResourceKind2.oauth_app=22]="oauth_app",ApiResourceKind2[ApiResourceKind2.platform_client=23]="platform_client",ApiResourceKind2[ApiResourceKind2.organization=30]="organization",ApiResourceKind2[ApiResourceKind2.platform=31]="platform",ApiResourceKind2[ApiResourceKind2.agent=40]="agent",ApiResourceKind2[ApiResourceKind2.agent_execution=41]="agent_execution",ApiResourceKind2[ApiResourceKind2.session=42]="session",ApiResourceKind2[ApiResourceKind2.skill=43]="skill",ApiResourceKind2[ApiResourceKind2.mcp_server=44]="mcp_server",ApiResourceKind2[ApiResourceKind2.agent_instance=45]="agent_instance",ApiResourceKind2[ApiResourceKind2.agent_share=46]="agent_share",ApiResourceKind2[ApiResourceKind2.agent_channel=47]="agent_channel",ApiResourceKind2[ApiResourceKind2.channel_app=48]="channel_app",ApiResourceKind2[ApiResourceKind2.datastore=49]="datastore",ApiResourceKind2[ApiResourceKind2.workflow=50]="workflow",ApiResourceKind2[ApiResourceKind2.workflow_instance=51]="workflow_instance",ApiResourceKind2[ApiResourceKind2.workflow_execution=52]="workflow_execution",ApiResourceKind2[ApiResourceKind2.environment=53]="environment",ApiResourceKind2[ApiResourceKind2.artifact=55]="artifact",ApiResourceKind2[ApiResourceKind2.execution_context=54]="execution_context",ApiResourceKind2[ApiResourceKind2.schedule=56]="schedule",ApiResourceKind2[ApiResourceKind2.project=60]="project"})(ApiResourceKind||(ApiResourceKind={}));var file_ai_stigmer_commons_rpc_authorization_config=fileDesc("CjFhaS9zdGlnbWVyL2NvbW1vbnMvcnBjL2F1dGhvcml6YXRpb25fY29uZmlnLnByb3RvEhZhaS5zdGlnbWVyLmNvbW1vbnMucnBjIv4BChZScGNBdXRob3JpemF0aW9uQ29uZmlnEjQKCnBlcm1pc3Npb24YASABKA4yIC5haS5zdGlnbWVyLmlhbS52MS5JYW1QZXJtaXNzaW9uElYKDXJlc291cmNlX2tpbmQYAiABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBIaChJyZXNvdXJjZV9raW5kX3BhdGgYAyABKAkSEgoKZmllbGRfcGF0aBgEIAEoCRIRCgllcnJvcl9tc2cYBSABKAkSEwoLcmVzb3VyY2VfaWQYBiABKAliBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_iam_v1_enum]);var file_ai_stigmer_commons_rpc_method_options=fileDesc("CithaS9zdGlnbWVyL2NvbW1vbnMvcnBjL21ldGhvZF9vcHRpb25zLnByb3RvEhZhaS5zdGlnbWVyLmNvbW1vbnMucnBjOmgKBmNvbmZpZxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGIiHAyABKAsyLi5haS5zdGlnbWVyLmNvbW1vbnMucnBjLlJwY0F1dGhvcml6YXRpb25Db25maWdSBmNvbmZpZzo9Cglpc19wdWJsaWMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiJhwMgASgIUghpc1B1YmxpYzpUChVpc19za2lwX2F1dGhvcml6YXRpb24SHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiKhwMgASgIUhNpc1NraXBBdXRob3JpemF0aW9uYgZwcm90bzM",[file_ai_stigmer_commons_rpc_authorization_config,file_google_protobuf_descriptor]);var file_ai_stigmer_agentic_agentexecution_v1_usage=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvdXNhZ2UucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSKxAwoKVG9rZW5Vc2FnZRIUCgxpbnB1dF90b2tlbnMYASABKAMSFQoNb3V0cHV0X3Rva2VucxgCIAEoAxIUCgx0b3RhbF90b2tlbnMYAyABKAMSIwobY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zGAQgASgDEh8KF2NhY2hlX3JlYWRfaW5wdXRfdG9rZW5zGAUgASgDEhgKEHJlYXNvbmluZ190b2tlbnMYBiABKAMSHgoWdG9vbF91c2VfcHJvbXB0X3Rva2VucxgHIAEoAxIaChJhdWRpb19pbnB1dF90b2tlbnMYCCABKAMSGwoTYXVkaW9fb3V0cHV0X3Rva2VucxgJIAEoAxJqChZwcm92aWRlcl90b2tlbl9kZXRhaWxzGBQgAygLMkouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRva2VuVXNhZ2UuUHJvdmlkZXJUb2tlbkRldGFpbHNFbnRyeRo7ChlQcm92aWRlclRva2VuRGV0YWlsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEiugMKD1ByaWNpbmdTbmFwc2hvdBIgChhwcmljaW5nX3JlZ2lzdHJ5X3ZlcnNpb24YASABKAkSOAoUcHJpY2luZ19lZmZlY3RpdmVfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCGN1cnJlbmN5GAMgASgJEiYKHmlucHV0X3ByaWNlX21pY3Jvc19wZXJfbWlsbGlvbhgKIAEoAxInCh9vdXRwdXRfcHJpY2VfbWljcm9zX3Blcl9taWxsaW9uGAsgASgDEi8KJ2NhY2hlX2NyZWF0aW9uX3ByaWNlX21pY3Jvc19wZXJfbWlsbGlvbhgMIAEoAxIrCiNjYWNoZV9yZWFkX3ByaWNlX21pY3Jvc19wZXJfbWlsbGlvbhgNIAEoAxIqCiJyZWFzb25pbmdfcHJpY2VfbWljcm9zX3Blcl9taWxsaW9uGA4gASgDEiwKJGN1cnNvcl90b2tlbl9yYXRlX21pY3Jvc19wZXJfbWlsbGlvbhgPIAEoAxIdChVtYXJrdXBfcG9saWN5X3ZlcnNpb24YHiABKAkSEQoJY29zdF90aWVyGB8gASgJIqkCCglDb3N0U3RhbXASEAoIY3VycmVuY3kYASABKAkSHAoUcHJvdmlkZXJfY29zdF9taWNyb3MYAiABKAMSJwofY3VzdG9tZXJfYmlsbGFibGVfYW1vdW50X21pY3JvcxgDIAEoAxJXChJjYWxjdWxhdGlvbl9zdGF0dXMYBCABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ29zdENhbGN1bGF0aW9uU3RhdHVzEkYKB3ByaWNpbmcYBSABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUHJpY2luZ1NuYXBzaG90EiIKGmN1cnNvcl9wbGF0Zm9ybV9mZWVfbWljcm9zGAYgASgDItQDCgtQcm94eVRpbWluZxI1ChFwcm94eV9yZWNlaXZlZF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPwobdXBzdHJlYW1fcmVxdWVzdF9zdGFydGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6ChZmaXJzdF9yZXNwb25zZV9ieXRlX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVsYXN0X3Jlc3BvbnNlX2J5dGVfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjYKEnByb3h5X2NvbXBsZXRlZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGAoQdXBzdHJlYW1fdHRmYl9tcxgKIAEoAxIYChB1cHN0cmVhbV90dGxiX21zGAsgASgDEhoKEnN0cmVhbV9kdXJhdGlvbl9tcxgMIAEoAxIfChdwcm94eV90b3RhbF9kdXJhdGlvbl9tcxgNIAEoAxIVCg1yZXF1ZXN0X2J5dGVzGBQgASgDEhYKDnJlc3BvbnNlX2J5dGVzGBUgASgDIvoBCgtCaWxsaW5nTGluaxJOCgxkZWJpdF9zdGF0dXMYASABKA4yOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQmlsbGluZ0RlYml0U3RhdHVzEhYKDnJlc2VydmF0aW9uX2lkGAIgASgJEhgKEGJpbGxpbmdfZGViaXRfaWQYAyABKAkSLgoKZGViaXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHQoVYmlsbGluZ19hdHRlbXB0X2NvdW50GAUgASgFEhoKEmxhc3RfYmlsbGluZ19lcnJvchgGIAEoCSLbCgoSTGxtQ2FsbFVzYWdlUmVjb3JkEhcKD3VzYWdlX3JlY29yZF9pZBgBIAEoCRIUCgxleGVjdXRpb25faWQYAiABKAkSGQoRcm9vdF9leGVjdXRpb25faWQYAyABKAkSEAoIc2VxdWVuY2UYBCABKAUSFwoPaWRlbXBvdGVuY3lfa2V5GAUgASgJEh4KFmNhbm9uaWNhbF9wYXlsb2FkX2hhc2gYBiABKAkSLwoLb2JzZXJ2ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wElIKD21ldGVyaW5nX3NvdXJjZRgUIAEoDjI5LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Vc2FnZU1ldGVyaW5nU291cmNlEkoKC3RydXN0X2xldmVsGBUgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlVzYWdlVHJ1c3RMZXZlbBJRCgx1c2FnZV9zdGF0dXMYFiABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXNhZ2VDb21wbGV0aW9uU3RhdHVzEhMKC2lzX2JpbGxhYmxlGBcgASgIEhAKCHByb3ZpZGVyGB4gASgJEhcKD3JlcXVlc3RlZF9tb2RlbBgfIAEoCRIWCg5yZXNvbHZlZF9tb2RlbBggIAEoCRIQCghlbmRwb2ludBghIAEoCRIRCglzdHJlYW1pbmcYIiABKAgSFAoMc2VydmljZV90aWVyGCMgASgJEhsKE3Byb3ZpZGVyX3JlcXVlc3RfaWQYJCABKAkSDwoHaGFybmVzcxglIAEoCRIZChFjdXJzb3JfYWNjb3VudF9pZBgmIAEoCRIVCg1jdXJzb3Jfa2V5X2lkGCcgASgJEhgKEGh0dHBfc3RhdHVzX2NvZGUYKCABKAUSFQoNZmluaXNoX3JlYXNvbhgpIAEoCRISCgplcnJvcl9jb2RlGCogASgJElAKEWN1cnNvcl9rZXlfc291cmNlGCsgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkN1cnNvcktleVNvdXJjZRJACgZ0b2tlbnMYMiABKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9rZW5Vc2FnZRI9CgRjb3N0GDMgASgLMi8uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkNvc3RTdGFtcBJHCgxwcm94eV90aW1pbmcYPCABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUHJveHlUaW1pbmcSGwoTcHJvdmlkZXJfdXNhZ2VfanNvbhhGIAEoCRJCCgdiaWxsaW5nGFAgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkJpbGxpbmdMaW5rEg4KBm9yZ19pZBgHIAEoCRISCgpzZXNzaW9uX2lkGAggASgJElQKBmxhYmVscxhaIAMoCzJELmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5MbG1DYWxsVXNhZ2VSZWNvcmQuTGFiZWxzRW50cnkaLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK+AgoUVXNhZ2VSZXBvcnRBZ2dyZWdhdGUSFAoMaW5wdXRfdG9rZW5zGAEgASgDEhUKDW91dHB1dF90b2tlbnMYAiABKAMSFAoMdG90YWxfdG9rZW5zGAMgASgDEiMKG2NhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucxgEIAEoAxIfChdjYWNoZV9yZWFkX2lucHV0X3Rva2VucxgFIAEoAxIYChByZWFzb25pbmdfdG9rZW5zGAYgASgDEhYKDmxsbV9jYWxsX2NvdW50GAogASgFEhwKFGJpbGxhYmxlX2Nvc3RfbWljcm9zGBQgASgDEhwKFHByb3ZpZGVyX2Nvc3RfbWljcm9zGBUgASgDEhUKDXByaW1hcnlfbW9kZWwYHiABKAkSGAoQcHJpbWFyeV9wcm92aWRlchgfIAEoCSLwAQoKTW9kZWxVc2FnZRINCgVtb2RlbBgBIAEoCRIQCghwcm92aWRlchgCIAEoCRIUCgxpbnB1dF90b2tlbnMYAyABKAMSFQoNb3V0cHV0X3Rva2VucxgEIAEoAxIjChtjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMYBSABKAMSHwoXY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMYBiABKAMSEgoKY2FsbF9jb3VudBgHIAEoBRIcChRiaWxsYWJsZV9jb3N0X21pY3JvcxgIIAEoAxIcChRwcm92aWRlcl9jb3N0X21pY3JvcxgJIAEoAyLlAQoVU3RyZWFtaW5nVXNhZ2VTdW1tYXJ5EhQKDGlucHV0X3Rva2VucxgBIAEoAxIVCg1vdXRwdXRfdG9rZW5zGAIgASgDEhkKEWNhY2hlX3JlYWRfdG9rZW5zGAMgASgDEhoKEmNhY2hlX3dyaXRlX3Rva2VucxgEIAEoAxIUCgx0b3RhbF90b2tlbnMYBSABKAMSEgoKdHVybl9jb3VudBgGIAEoBRIaChJlc3RpbWF0ZWRfY29zdF91c2QYByABKAESDQoFbW9kZWwYCCABKAkSEwoLb2JzZXJ2ZWRfYXQYCSABKAkqrgIKE1VzYWdlTWV0ZXJpbmdTb3VyY2USJQohVVNBR0VfTUVURVJJTkdfU09VUkNFX1VOU1BFQ0lGSUVEEAASMQotVVNBR0VfTUVURVJJTkdfU09VUkNFX1BST1hZX1BST1ZJREVSX1JFUE9SVEVEEAESNgoyVVNBR0VfTUVURVJJTkdfU09VUkNFX1JVTk5FUl9QUk9WSURFUl9SRVBPUlRFRF9PU1MQAhIjCh9VU0FHRV9NRVRFUklOR19TT1VSQ0VfRVNUSU1BVEVEEAMSMwovVVNBR0VfTUVURVJJTkdfU09VUkNFX1BST1ZJREVSX0FETUlOX1JFQ09OQ0lMRUQQBBIrCidVU0FHRV9NRVRFUklOR19TT1VSQ0VfTUFOVUFMX0FESlVTVE1FTlQQBSqoAQoPVXNhZ2VUcnVzdExldmVsEiEKHVVTQUdFX1RSVVNUX0xFVkVMX1VOU1BFQ0lGSUVEEAASJwojVVNBR0VfVFJVU1RfTEVWRUxfQklMTElOR19BVVRIT1JJVFkQARIlCiFVU0FHRV9UUlVTVF9MRVZFTF9TRVJWRVJfT0JTRVJWRUQQAhIiCh5VU0FHRV9UUlVTVF9MRVZFTF9ESVNQTEFZX09OTFkQAyr8AgoVVXNhZ2VDb21wbGV0aW9uU3RhdHVzEicKI1VTQUdFX0NPTVBMRVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogVVNBR0VfQ09NUExFVElPTl9TVEFUVVNfQ09NUExFVEUQARIuCipVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19TVFJFQU1fSU5URVJSVVBURUQQAhI1CjFVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19QUk9WSURFUl9FUlJPUl9XSVRIX1VTQUdFEAMSMwovVVNBR0VfQ09NUExFVElPTl9TVEFUVVNfUFJPVklERVJfRVJST1JfTk9fVVNBR0UQBBIqCiZVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19FU1RJTUFURURfT05MWRAFEiYKIlVTQUdFX0NPTVBMRVRJT05fU1RBVFVTX1JFQ09OQ0lMRUQQBhIkCiBVU0FHRV9DT01QTEVUSU9OX1NUQVRVU19DT05GTElDVBAHKp8CChJCaWxsaW5nRGViaXRTdGF0dXMSJAogQklMTElOR19ERUJJVF9TVEFUVVNfVU5TUEVDSUZJRUQQABInCiNCSUxMSU5HX0RFQklUX1NUQVRVU19OT1RfQVBQTElDQUJMRRABEiAKHEJJTExJTkdfREVCSVRfU1RBVFVTX1BFTkRJTkcQAhIgChxCSUxMSU5HX0RFQklUX1NUQVRVU19ERUJJVEVEEAMSKQolQklMTElOR19ERUJJVF9TVEFUVVNfRkFJTEVEX1JFVFJZQUJMRRAEEigKJEJJTExJTkdfREVCSVRfU1RBVFVTX0ZBSUxFRF9URVJNSU5BTBAFEiEKHUJJTExJTkdfREVCSVRfU1RBVFVTX0NPTkZMSUNUEAYqjwIKFUNvc3RDYWxjdWxhdGlvblN0YXR1cxInCiNDT1NUX0NBTENVTEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiQKIENPU1RfQ0FMQ1VMQVRJT05fU1RBVFVTX0NPTVBVVEVEEAESJQohQ09TVF9DQUxDVUxBVElPTl9TVEFUVVNfRVNUSU1BVEVEEAISKwonQ09TVF9DQUxDVUxBVElPTl9TVEFUVVNfUFJJQ0VfTk9UX0ZPVU5EEAMSJgoiQ09TVF9DQUxDVUxBVElPTl9TVEFUVVNfUkVDT05DSUxFRBAEEisKJ0NPU1RfQ0FMQ1VMQVRJT05fU1RBVFVTX01BTlVBTF9BREpVU1RFRBAFKlcKD0N1cnNvcktleVNvdXJjZRIhCh1DVVJTT1JfS0VZX1NPVVJDRV9VTlNQRUNJRklFRBAAEiEKHUNVUlNPUl9LRVlfU09VUkNFX01BTkFHRURfS0VZEAFiBnByb3RvMw",[file_google_protobuf_timestamp]);var UsageMeteringSource;(function(UsageMeteringSource2){UsageMeteringSource2[UsageMeteringSource2.UNSPECIFIED=0]="UNSPECIFIED",UsageMeteringSource2[UsageMeteringSource2.PROXY_PROVIDER_REPORTED=1]="PROXY_PROVIDER_REPORTED",UsageMeteringSource2[UsageMeteringSource2.RUNNER_PROVIDER_REPORTED_OSS=2]="RUNNER_PROVIDER_REPORTED_OSS",UsageMeteringSource2[UsageMeteringSource2.ESTIMATED=3]="ESTIMATED",UsageMeteringSource2[UsageMeteringSource2.PROVIDER_ADMIN_RECONCILED=4]="PROVIDER_ADMIN_RECONCILED",UsageMeteringSource2[UsageMeteringSource2.MANUAL_ADJUSTMENT=5]="MANUAL_ADJUSTMENT"})(UsageMeteringSource||(UsageMeteringSource={}));var UsageTrustLevel;(function(UsageTrustLevel2){UsageTrustLevel2[UsageTrustLevel2.UNSPECIFIED=0]="UNSPECIFIED",UsageTrustLevel2[UsageTrustLevel2.BILLING_AUTHORITY=1]="BILLING_AUTHORITY",UsageTrustLevel2[UsageTrustLevel2.SERVER_OBSERVED=2]="SERVER_OBSERVED",UsageTrustLevel2[UsageTrustLevel2.DISPLAY_ONLY=3]="DISPLAY_ONLY"})(UsageTrustLevel||(UsageTrustLevel={}));var UsageCompletionStatus;(function(UsageCompletionStatus2){UsageCompletionStatus2[UsageCompletionStatus2.UNSPECIFIED=0]="UNSPECIFIED",UsageCompletionStatus2[UsageCompletionStatus2.COMPLETE=1]="COMPLETE",UsageCompletionStatus2[UsageCompletionStatus2.STREAM_INTERRUPTED=2]="STREAM_INTERRUPTED",UsageCompletionStatus2[UsageCompletionStatus2.PROVIDER_ERROR_WITH_USAGE=3]="PROVIDER_ERROR_WITH_USAGE",UsageCompletionStatus2[UsageCompletionStatus2.PROVIDER_ERROR_NO_USAGE=4]="PROVIDER_ERROR_NO_USAGE",UsageCompletionStatus2[UsageCompletionStatus2.ESTIMATED_ONLY=5]="ESTIMATED_ONLY",UsageCompletionStatus2[UsageCompletionStatus2.RECONCILED=6]="RECONCILED",UsageCompletionStatus2[UsageCompletionStatus2.CONFLICT=7]="CONFLICT"})(UsageCompletionStatus||(UsageCompletionStatus={}));var BillingDebitStatus;(function(BillingDebitStatus2){BillingDebitStatus2[BillingDebitStatus2.UNSPECIFIED=0]="UNSPECIFIED",BillingDebitStatus2[BillingDebitStatus2.NOT_APPLICABLE=1]="NOT_APPLICABLE",BillingDebitStatus2[BillingDebitStatus2.PENDING=2]="PENDING",BillingDebitStatus2[BillingDebitStatus2.DEBITED=3]="DEBITED",BillingDebitStatus2[BillingDebitStatus2.FAILED_RETRYABLE=4]="FAILED_RETRYABLE",BillingDebitStatus2[BillingDebitStatus2.FAILED_TERMINAL=5]="FAILED_TERMINAL",BillingDebitStatus2[BillingDebitStatus2.CONFLICT=6]="CONFLICT"})(BillingDebitStatus||(BillingDebitStatus={}));var CostCalculationStatus;(function(CostCalculationStatus2){CostCalculationStatus2[CostCalculationStatus2.UNSPECIFIED=0]="UNSPECIFIED",CostCalculationStatus2[CostCalculationStatus2.COMPUTED=1]="COMPUTED",CostCalculationStatus2[CostCalculationStatus2.ESTIMATED=2]="ESTIMATED",CostCalculationStatus2[CostCalculationStatus2.PRICE_NOT_FOUND=3]="PRICE_NOT_FOUND",CostCalculationStatus2[CostCalculationStatus2.RECONCILED=4]="RECONCILED",CostCalculationStatus2[CostCalculationStatus2.MANUAL_ADJUSTED=5]="MANUAL_ADJUSTED"})(CostCalculationStatus||(CostCalculationStatus={}));var CursorKeySource;(function(CursorKeySource2){CursorKeySource2[CursorKeySource2.UNSPECIFIED=0]="UNSPECIFIED",CursorKeySource2[CursorKeySource2.MANAGED_KEY=1]="MANAGED_KEY"})(CursorKeySource||(CursorKeySource={}));var file_buf_validate_validate=fileDesc("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSL4FgoKRmxvYXRSdWxlcxJ9CgVjb25zdBgBIAEoAkJuwkhrCmkKC2Zsb2F0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSmQEKAmx0GAIgASgCQooBwkiGAQqDAQoIZmxvYXQubHQadyFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASqQEKA2x0ZRgDIAEoAkKZAcJIlQEKkgEKCWZsb2F0Lmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtAHCgJndBgEIAEoAkLBB8JIvQcKhgEKCGZsb2F0Lmd0GnohaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq9AQoLZmxvYXQuZ3RfbHQarQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrHAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKDGZsb2F0Lmd0X2x0ZRq8AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCtcBChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGrwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARKcCAoDZ3RlGAUgASgCQowIwkiICAqVAQoJZmxvYXQuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCswBCgxmbG9hdC5ndGVfbHQauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtYBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrcAQoNZmxvYXQuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5gEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGsoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygCQm3CSGoKaAoIZmxvYXQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoAkJgwkhdClsKDGZsb2F0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEm8KBmZpbml0ZRgIIAEoCEJfwkhcCloKDGZsb2F0LmZpbml0ZRpKcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAnbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIooXCgtEb3VibGVSdWxlcxJ+CgVjb25zdBgBIAEoAUJvwkhsCmoKDGRvdWJsZS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEpoBCgJsdBgCIAEoAUKLAcJIhwEKhAEKCWRvdWJsZS5sdBp3IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKqAQoDbHRlGAMgASgBQpoBwkiWAQqTAQoKZG91YmxlLmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtUHCgJndBgEIAEoAULGB8JIwgcKhwEKCWRvdWJsZS5ndBp6IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKvgEKDGRvdWJsZS5ndF9sdBqtAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsgBChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKDWRvdWJsZS5ndF9sdGUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrYAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEqEICgNndGUYBSABKAFCkQjCSI0ICpYBCgpkb3VibGUuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCs0BCg1kb3VibGUuZ3RlX2x0GrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrXAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BCg5kb3VibGUuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5wEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoAUJuwkhrCmkKCWRvdWJsZS5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygBQmHCSF4KXAoNZG91YmxlLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnAKBmZpbml0ZRgIIAEoCEJgwkhdClsKDWRvdWJsZS5maW5pdGUaSnJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ211c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4isBQKCkludDMyUnVsZXMSfQoFY29uc3QYASABKAVCbsJIawppCgtpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoQBCgJsdBgCIAEoBUJ2wkhzCnEKCGludDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpUBCgNsdGUYAyABKAVChQHCSIEBCn8KCWludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS+QYKAmd0GAQgASgFQuoGwkjmBgp0CghpbnQzMi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrQEKC2ludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq1AQoVaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKDGludDMyLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxQEKFmludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsUHCgNndGUYBSABKAVCtQfCSLEHCoIBCglpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq8AQoMaW50MzIuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsQBChZpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoNaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrUAQoXaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeQoCaW4YBiADKAVCbcJIagpoCghpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScAoGbm90X2luGAcgAygFQmDCSF0KWwoMaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIrAUCgpJbnQ2NFJ1bGVzEn0KBWNvbnN0GAEgASgDQm7CSGsKaQoLaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKEAQoCbHQYAiABKANCdsJIcwpxCghpbnQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKVAQoDbHRlGAMgASgDQoUBwkiBAQp/CglpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvkGCgJndBgEIAEoA0LqBsJI5gYKdAoIaW50NjQuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq0BCgtpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtQEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BCgxpbnQ2NC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsUBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLFBwoDZ3RlGAUgASgDQrUHwkixBwqCAQoJaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvAEKDGludDY0Lmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrEAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKDWludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1AEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygDQm3CSGoKaAoIaW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoA0JgwkhdClsKDGludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLVUludDMyUnVsZXMSfgoFY29uc3QYASABKA1Cb8JIbApqCgx1aW50MzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKA1Cd8JIdApyCgl1aW50MzIubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoDUKHAcJIgwEKgAEKCnVpbnQzMi5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoDULvBsJI6wYKdQoJdWludDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMdWludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg11aW50MzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXdWludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKA1CugfCSLYHCoMBCgp1aW50MzIuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXVpbnQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3VpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOdWludDMyLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHVpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoDUJuwkhrCmkKCXVpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygNQmHCSF4KXAoNdWludDMyLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwhQKC1VJbnQ2NFJ1bGVzEn4KBWNvbnN0GAEgASgEQm/CSGwKagoMdWludDY0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycShQEKAmx0GAIgASgEQnfCSHQKcgoJdWludDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpcBCgNsdGUYAyABKARChwHCSIMBCoABCgp1aW50NjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL+BgoCZ3QYBCABKARC7wbCSOsGCnUKCXVpbnQ2NC5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrgEKDHVpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtgEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoNdWludDY0Lmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxgEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLKBwoDZ3RlGAUgASgEQroHwki2BwqDAQoKdWludDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr0BCg11aW50NjQuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsUBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKDnVpbnQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtUBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESegoCaW4YBiADKARCbsJIawppCgl1aW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnEKBm5vdF9pbhgHIAMoBEJhwkheClwKDXVpbnQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygEQhvCSBgKFgoOdWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsIUCgtTSW50MzJSdWxlcxJ+CgVjb25zdBgBIAEoEUJvwkhsCmoKDHNpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoUBCgJsdBgCIAEoEUJ3wkh0CnIKCXNpbnQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKXAQoDbHRlGAMgASgRQocBwkiDAQqAAQoKc2ludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS/gYKAmd0GAQgASgRQu8GwkjrBgp1CglzaW50MzIuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq4BCgxzaW50MzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrYBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKDXNpbnQzMi5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsYBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESygcKA2d0ZRgFIAEoEUK6B8JItgcKgwEKCnNpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq9AQoNc2ludDMyLmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrFAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BCg5zaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrVAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnoKAmluGAYgAygRQm7CSGsKaQoJc2ludDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJxCgZub3RfaW4YByADKBFCYcJIXgpcCg1zaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLU0ludDY0UnVsZXMSfgoFY29uc3QYASABKBJCb8JIbApqCgxzaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKBJCd8JIdApyCglzaW50NjQubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoEkKHAcJIgwEKgAEKCnNpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoEkLvBsJI6wYKdQoJc2ludDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMc2ludDY0Lmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWc2ludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg1zaW50NjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKBJCugfCSLYHCoMBCgpzaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXNpbnQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3NpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOc2ludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHNpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoEkJuwkhrCmkKCXNpbnQ2NC5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygSQmHCSF4KXAoNc2ludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkMzJSdWxlcxJ/CgVjb25zdBgBIAEoB0JwwkhtCmsKDWZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAdCeMJIdQpzCgpmaXhlZDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAdCiAHCSIQBCoEBCgtmaXhlZDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgHQvQGwkjwBgp2CgpmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQzMi5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgHQr8Hwki7BwqEAQoLZml4ZWQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkMzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoB0JvwkhsCmoKCmZpeGVkMzIuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoB0JiwkhfCl0KDmZpeGVkMzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoB0IcwkgZChcKD2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkNjRSdWxlcxJ/CgVjb25zdBgBIAEoBkJwwkhtCmsKDWZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAZCeMJIdQpzCgpmaXhlZDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAZCiAHCSIQBCoEBCgtmaXhlZDY0Lmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgGQvQGwkjwBgp2CgpmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgGQr8Hwki7BwqEAQoLZml4ZWQ2NC5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkNjQuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoBkJvwkhsCmoKCmZpeGVkNjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoBkJiwkhfCl0KDmZpeGVkNjQubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDMyUnVsZXMSgAEKBWNvbnN0GAEgASgPQnHCSG4KbAoOc2ZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKA9CecJIdgp0CgtzZml4ZWQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgPQokBwkiFAQqCAQoMc2ZpeGVkMzIubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKA9C+QbCSPUGCncKC3NmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkMzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoD0LEB8JIwAcKhQEKDHNmaXhlZDMyLmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQzMi5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoD0JwwkhtCmsKC3NmaXhlZDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKA9CY8JIYApeCg9zZml4ZWQzMi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDY0UnVsZXMSgAEKBWNvbnN0GAEgASgQQnHCSG4KbAoOc2ZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKBBCecJIdgp0CgtzZml4ZWQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgQQokBwkiFAQqCAQoMc2ZpeGVkNjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKBBC+QbCSPUGCncKC3NmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkNjQuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoEELEB8JIwAcKhQEKDHNmaXhlZDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoEEJwwkhtCmsKC3NmaXhlZDY0LmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKBBCY8JIYApeCg9zZml4ZWQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwAEKCUJvb2xSdWxlcxJ8CgVjb25zdBgBIAEoCEJtwkhqCmgKCmJvb2wuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi6jwKC1N0cmluZ1J1bGVzEoABCgVjb25zdBgBIAEoCUJxwkhuCmwKDHN0cmluZy5jb25zdBpcdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycScQoDbGVuGBMgASgEQmTCSGEKXwoKc3RyaW5nLmxlbhpRdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ211c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEokBCgdtaW5fbGVuGAIgASgEQnjCSHUKcwoOc3RyaW5nLm1pbl9sZW4aYXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg5zdHJpbmcubWF4X2xlbhpgdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ211c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEosBCglsZW5fYnl0ZXMYFCABKARCeMJIdQpzChBzdHJpbmcubGVuX2J5dGVzGl91aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ211c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKUAQoJbWluX2J5dGVzGAQgASgEQoABwkh9CnsKEHN0cmluZy5taW5fYnl0ZXMaZ3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSkgEKCW1heF9ieXRlcxgFIAEoBEJ/wkh8CnoKEHN0cmluZy5tYXhfYnl0ZXMaZnVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2J5dGVzXSkgOiAnJxKHAQoHcGF0dGVybhgGIAEoCUJ2wkhzCnEKDnN0cmluZy5wYXR0ZXJuGl8hdGhpcy5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ2RvZXMgbm90IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxJ+CgZwcmVmaXgYByABKAlCbsJIawppCg1zdHJpbmcucHJlZml4GlghdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEnwKBnN1ZmZpeBgIIAEoCUJswkhpCmcKDXN0cmluZy5zdWZmaXgaViF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEooBCghjb250YWlucxgJIAEoCUJ4wkh1CnMKD3N0cmluZy5jb250YWlucxpgIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ2RvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpEBCgxub3RfY29udGFpbnMYFyABKAlCe8JIeAp2ChNzdHJpbmcubm90X2NvbnRhaW5zGl90aGlzLmNvbnRhaW5zKHJ1bGVzLm5vdF9jb250YWlucykgPyAnY29udGFpbnMgc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJxJ6CgJpbhgKIAMoCUJuwkhrCmkKCXN0cmluZy5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAsgAygJQmHCSF4KXAoNc3RyaW5nLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEtkBCgVlbWFpbBgMIAEoCELHAcJIwwEKWwoMc3RyaW5nLmVtYWlsEh1tdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLhAQoIaG9zdG5hbWUYDSABKAhCzAHCSMgBCl8KD3N0cmluZy5ob3N0bmFtZRIYbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLBAQoCaXAYDiABKAhCsgHCSK4BCk8KCXN0cmluZy5pcBIabXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS0AEKBGlwdjQYDyABKAhCvwHCSLsBClYKC3N0cmluZy5pcHY0EhxtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtABCgRpcHY2GBAgASgIQr8Bwki7AQpWCgtzdHJpbmcuaXB2NhIcbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK5AQoDdXJpGBEgASgIQqkBwkilAQpLCgpzdHJpbmcudXJpEhNtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmoKB3VyaV9yZWYYEiABKAhCV8JIVApSCg5zdHJpbmcudXJpX3JlZhIdbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEokCCgdhZGRyZXNzGBUgASgIQvUBwkjxAQp7Cg5zdHJpbmcuYWRkcmVzcxInbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKSAgoEdXVpZBgWIAEoCEKBAsJI/QEKnwEKC3N0cmluZy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS6gEKBXR1dWlkGCEgASgIQtgBwkjUAQptCgxzdHJpbmcudHV1aWQSHG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASkAIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvIBwkjuAQpyChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SGW11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLJAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKpAsJIpQIKjQEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEi9tdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEskCChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQqkCwkilAgqNAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SL211c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS7AEKCWlwX3ByZWZpeBgdIAEoCELWAcJI0gEKZgoQc3RyaW5nLmlwX3ByZWZpeBIZbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABL9AQoLaXB2NF9wcmVmaXgYHiABKAhC5QHCSOEBCm8KEnN0cmluZy5pcHY0X3ByZWZpeBIbbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAAS/QEKC2lwdjZfcHJlZml4GB8gASgIQuUBwkjhAQpvChJzdHJpbmcuaXB2Nl9wcmVmaXgSG211c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEq8CCg1ob3N0X2FuZF9wb3J0GCAgASgIQpUCwkiRAgqTAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSO211c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEu4BCgR1bGlkGCMgASgIQt0BwkjZAQp8CgtzdHJpbmcudWxpZBIUbXVzdCBiZSBhIHZhbGlkIFVMSUQaVyFydWxlcy51bGlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQnKQpZChFzdHJpbmcudWxpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVMSUQaGSFydWxlcy51bGlkIHx8IHRoaXMgIT0gJydIABLUAgoMcHJvdG9idWZfZnFuGCUgASgIQrsCwki3AgqvAQoTc3RyaW5nLnByb3RvYnVmX2ZxbhItbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lGmkhcnVsZXMucHJvdG9idWZfZnFuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeW0EtWmEtel9dW0EtWmEtel8wLTldKihcXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKSokJykKggEKGXN0cmluZy5wcm90b2J1Zl9mcW5fZW1wdHkSQnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZRohIXJ1bGVzLnByb3RvYnVmX2ZxbiB8fCB0aGlzICE9ICcnSAASkQMKEHByb3RvYnVmX2RvdF9mcW4YJiABKAhC9ALCSPACCs0BChdzdHJpbmcucHJvdG9idWZfZG90X2ZxbhJAbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lIHdpdGggYSBsZWFkaW5nIGRvdBpwIXJ1bGVzLnByb3RvYnVmX2RvdF9mcW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15cXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKFxcLltBLVphLXpfXVtBLVphLXpfMC05XSopKiQnKQqdAQodc3RyaW5nLnByb3RvYnVmX2RvdF9mcW5fZW1wdHkSVXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZSB3aXRoIGEgbGVhZGluZyBkb3QaJSFydWxlcy5wcm90b2J1Zl9kb3RfZnFuIHx8IHRoaXMgIT0gJydIABKcBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QuUEwkjhBArqAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrhAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEiFtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIt0RCgpCeXRlc1J1bGVzEnoKBWNvbnN0GAEgASgMQmvCSGgKZgoLYnl0ZXMuY29uc3QaV3RoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgYmUgJXgnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxJrCgNsZW4YDSABKARCXsJIWwpZCglieXRlcy5sZW4aTHVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICdtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSgwEKB21pbl9sZW4YAiABKARCcsJIbwptCg1ieXRlcy5taW5fbGVuGlx1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAnbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKCAQoHbWF4X2xlbhgDIAEoBEJxwkhuCmwKDWJ5dGVzLm1heF9sZW4aW3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSigEKB3BhdHRlcm4YBCABKAlCecJIdgp0Cg1ieXRlcy5wYXR0ZXJuGmMhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAnbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSewoGcHJlZml4GAUgASgMQmvCSGgKZgoMYnl0ZXMucHJlZml4GlYhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ5CgZzdWZmaXgYBiABKAxCacJIZgpkCgxieXRlcy5zdWZmaXgaVCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxJ9Cghjb250YWlucxgHIAEoDEJrwkhoCmYKDmJ5dGVzLmNvbnRhaW5zGlQhdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAnZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSoQEKAmluGAggAygMQpQBwkiQAQqNAQoIYnl0ZXMuaW4agAFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJwCgZub3RfaW4YCSADKAxCYMJIXQpbCgxieXRlcy5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLlAQoCaXAYCiABKAhC1gHCSNIBCm4KCGJ5dGVzLmlwEhptdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3gEKBGlwdjQYCyABKAhCzQHCSMkBCl8KCmJ5dGVzLmlwdjQSHG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3wEKBGlwdjYYDCABKAhCzgHCSMoBCmAKCmJ5dGVzLmlwdjYSHG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEs8BCgR1dWlkGA8gASgIQr4Bwki6AQpYCgpieXRlcy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLBAwoJRW51bVJ1bGVzEnwKBWNvbnN0GAEgASgFQm3CSGoKaAoKZW51bS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ4CgJpbhgDIAMoBUJswkhpCmcKB2VudW0uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEm8KBm5vdF9pbhgEIAMoBUJfwkhcCloKC2VudW0ubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIu0DCg1SZXBlYXRlZFJ1bGVzEpYBCgltaW5faXRlbXMYASABKARCggHCSH8KfQoScmVwZWF0ZWQubWluX2l0ZW1zGmd1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICdtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEpwBCgltYXhfaXRlbXMYAiABKARCiAHCSIQBCoEBChJyZXBlYXRlZC5tYXhfaXRlbXMaa3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ211c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIr8WCg1EdXJhdGlvblJ1bGVzEpsBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJxwkhuCmwKDmR1cmF0aW9uLmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSogEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnnCSHYKdAoLZHVyYXRpb24ubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAAStAEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKJAcJIhQEKggEKDGR1cmF0aW9uLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASowcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQvkGwkj1Bgp3CgtkdXJhdGlvbi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKsAEKDmR1cmF0aW9uLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq4AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwAEKD2R1cmF0aW9uLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKyAEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu8HCgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CxAfCSMAHCoUBCgxkdXJhdGlvbi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq/AQoPZHVyYXRpb24uZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCscBChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrPAQoQZHVyYXRpb24uZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrXAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESlwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnDCSG0KawoLZHVyYXRpb24uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEo4BCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CY8JIYApeCg9kdXJhdGlvbi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i6wUKDkZpZWxkTWFza1J1bGVzErkBCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCjQHCSIkBCoYBChBmaWVsZF9tYXNrLmNvbnN0GnJ0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICdtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS0wEKAmluGAIgAygJQsYBwkjCAQq/AQoNZmllbGRfbWFzay5pbhqtASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICdtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEu0BCgZub3RfaW4YAyADKAlC3AHCSNgBCtUBChFmaWVsZF9tYXNrLm5vdF9pbhq/ASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ211c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIisBcKDlRpbWVzdGFtcFJ1bGVzEp0BCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCcsJIbwptCg90aW1lc3RhbXAuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKkAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQnrCSHcKdQoMdGltZXN0YW1wLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErYBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQooBwkiGAQqDAQoNdGltZXN0YW1wLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASZgoGbHRfbm93GAcgASgIQlTCSFEKTwoQdGltZXN0YW1wLmx0X25vdxo7KHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICdtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABKpBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQv4Gwkj6Bgp4Cgx0aW1lc3RhbXAuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrEBCg90aW1lc3RhbXAuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrkBChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwQEKEHRpbWVzdGFtcC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCskBChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES9QcKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCyQfCSMUHCoYBCg10aW1lc3RhbXAuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwAEKEHRpbWVzdGFtcC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKyAEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrQAQoRdGltZXN0YW1wLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2AEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJpCgZndF9ub3cYCCABKAhCV8JIVApSChB0aW1lc3RhbXAuZ3Rfbm93Gj4ocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErEBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ChQHCSIEBCn8KEHRpbWVzdGFtcC53aXRoaW4aa3RoaXMgPCBub3ctcnVsZXMud2l0aGluIHx8IHRoaXMgPiBub3crcnVsZXMud2l0aGluID8gJ211c3QgYmUgd2l0aGluICVzIG9mIG5vdycuZm9ybWF0KFtydWxlcy53aXRoaW5dKSA6ICcnEksKB2V4YW1wbGUYCiADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQh7CSBsKGQoRdGltZXN0YW1wLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIjkKClZpb2xhdGlvbnMSKwoKdmlvbGF0aW9ucxgBIAMoCzIXLmJ1Zi52YWxpZGF0ZS5WaW9sYXRpb24inwEKCVZpb2xhdGlvbhImCgVmaWVsZBgFIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSJQoEcnVsZRgGIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSDwoHcnVsZV9pZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg8KB2Zvcl9rZXkYBCABKAhKBAgBEAJSCmZpZWxkX3BhdGgiPQoJRmllbGRQYXRoEjAKCGVsZW1lbnRzGAEgAygLMh4uYnVmLnZhbGlkYXRlLkZpZWxkUGF0aEVsZW1lbnQi6QIKEEZpZWxkUGF0aEVsZW1lbnQSFAoMZmllbGRfbnVtYmVyGAEgASgFEhIKCmZpZWxkX25hbWUYAiABKAkSPgoKZmllbGRfdHlwZRgDIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEjwKCGtleV90eXBlGAQgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPgoKdmFsdWVfdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEg8KBWluZGV4GAYgASgESAASEgoIYm9vbF9rZXkYByABKAhIABIRCgdpbnRfa2V5GAggASgDSAASEgoIdWludF9rZXkYCSABKARIABIUCgpzdHJpbmdfa2V5GAogASgJSABCCwoJc3Vic2NyaXB0KqEBCgZJZ25vcmUSFgoSSUdOT1JFX1VOU1BFQ0lGSUVEEAASGAoUSUdOT1JFX0lGX1pFUk9fVkFMVUUQARIRCg1JR05PUkVfQUxXQVlTEAMiBAgCEAIqDElHTk9SRV9FTVBUWSoOSUdOT1JFX0RFRkFVTFQqF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFKhVJR05PUkVfSUZfVU5QT1BVTEFURUQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlYKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMhouYnVmLnZhbGlkYXRlLk1lc3NhZ2VSdWxlc1IHbWVzc2FnZTpOCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLk9uZW9mUnVsZXNSBW9uZW9mOk4KBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlc1IFZmllbGQ6XQoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMh0uYnVmLnZhbGlkYXRlLlByZWRlZmluZWRSdWxlc1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU",[file_google_protobuf_descriptor,file_google_protobuf_duration,file_google_protobuf_field_mask,file_google_protobuf_timestamp]);var Ignore;(function(Ignore2){Ignore2[Ignore2.UNSPECIFIED=0]="UNSPECIFIED",Ignore2[Ignore2.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",Ignore2[Ignore2.ALWAYS=3]="ALWAYS"})(Ignore||(Ignore={}));var KnownRegex;(function(KnownRegex2){KnownRegex2[KnownRegex2.UNSPECIFIED=0]="UNSPECIFIED",KnownRegex2[KnownRegex2.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",KnownRegex2[KnownRegex2.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(KnownRegex||(KnownRegex={}));var file_ai_stigmer_commons_rpc_pagination=fileDesc("CidhaS9zdGlnbWVyL2NvbW1vbnMvcnBjL3BhZ2luYXRpb24ucHJvdG8SFmFpLnN0aWdtZXIuY29tbW9ucy5ycGMiJQoIUGFnZUluZm8SCwoDbnVtGAEgASgFEgwKBHNpemUYAiABKAUiMgoOR29vZ2xlUGFnZUluZm8SEgoKcGFnZV90b2tlbhgBIAEoCRIMCgRzaXplGAIgASgFYgZwcm90bzM");var file_ai_stigmer_agentic_environment_v1_spec=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvc3BlYy5wcm90bxIhYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxItQBCg9FbnZpcm9ubWVudFNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSSgoEZGF0YRgCIAMoCzI8LmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFNwZWMuRGF0YUVudHJ5GmAKCURhdGFFbnRyeRILCgNrZXkYASABKAkSQgoFdmFsdWUYAiABKAsyMy5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnRWYWx1ZToCOAEiSQoQRW52aXJvbm1lbnRWYWx1ZRINCgV2YWx1ZRgBIAEoCRIRCglpc19zZWNyZXQYAiABKAgSEwoLZGVzY3JpcHRpb24YAyABKAkiTQoRRW52VmFyRGVjbGFyYXRpb24SEQoJaXNfc2VjcmV0GAEgASgIEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhAKCG9wdGlvbmFsGAMgASgIYgZwcm90bzM"),EnvironmentSpecSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,0),EnvironmentValueSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,1),EnvVarDeclarationSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_spec,2);var file_ai_stigmer_commons_apiresource_field_options=fileDesc("CjJhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvZmllbGRfb3B0aW9ucy5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlOjsKCGNvbXB1dGVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjZwAUgASgIUghjb21wdXRlZDo9CglpbW11dGFibGUSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNrABSABKAhSCWltbXV0YWJsZTpECg1pc19leHByZXNzaW9uEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjbwAUgASgIUgxpc0V4cHJlc3Npb246hwEKDnJlZmVyZW5jZV9raW5kEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjcwAUgASgOMj8uYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmRSDXJlZmVyZW5jZUtpbmQ6TQoQZGlzY3JpbWluYXRlZF9ieRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY3cAFIAEoCVIPZGlzY3JpbWluYXRlZEJ5iAEBOlUKE2Rpc2NyaW1pbmF0b3JfdmFsdWUSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYvcEFIAEoCVISZGlzY3JpbWluYXRvclZhbHVliAEBYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_google_protobuf_descriptor]);var file_ai_stigmer_commons_apiresource_enum=fileDesc("CilhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvZW51bS5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlKnYKFEFwaVJlc291cmNlRXZlbnRUeXBlEg8KC3Vuc3BlY2lmaWVkEAASCwoHY3JlYXRlZBABEgsKB3VwZGF0ZWQQAhILCgdkZWxldGVkEAMSCwoHcmVuYW1lZBAEEhkKFXN0YWNrX291dHB1dHNfdXBkYXRlZBAFKowBCh1BcGlSZXNvdXJjZVN0YXRlT3BlcmF0aW9uVHlwZRIxCi1hcGlfcmVzb3VyY2Vfc3RhdGVfb3BlcmF0aW9uX3R5cGVfdW5zcGVjaWZpZWQQABIKCgZjcmVhdGUQARIKCgZ1cGRhdGUQAhIKCgZkZWxldGUQAxIICgRyZWFkEAQSCgoGc3RyZWFtEAUqnAEKFUFwaVJlc291cmNlVmlzaWJpbGl0eRInCiNhcGlfcmVzb3VyY2VfdmlzaWJpbGl0eV91bnNwZWNpZmllZBAAEhYKEnZpc2liaWxpdHlfcHJpdmF0ZRABEhUKEXZpc2liaWxpdHlfcHVibGljEAISEgoOdmlzaWJpbGl0eV9vcmcQAxIXChN2aXNpYmlsaXR5X3BsYXRmb3JtEARiBnByb3RvMw"),ApiResourceEventType;(function(ApiResourceEventType2){ApiResourceEventType2[ApiResourceEventType2.unspecified=0]="unspecified",ApiResourceEventType2[ApiResourceEventType2.created=1]="created",ApiResourceEventType2[ApiResourceEventType2.updated=2]="updated",ApiResourceEventType2[ApiResourceEventType2.deleted=3]="deleted",ApiResourceEventType2[ApiResourceEventType2.renamed=4]="renamed",ApiResourceEventType2[ApiResourceEventType2.stack_outputs_updated=5]="stack_outputs_updated"})(ApiResourceEventType||(ApiResourceEventType={}));var ApiResourceStateOperationType;(function(ApiResourceStateOperationType2){ApiResourceStateOperationType2[ApiResourceStateOperationType2.api_resource_state_operation_type_unspecified=0]="api_resource_state_operation_type_unspecified",ApiResourceStateOperationType2[ApiResourceStateOperationType2.create=1]="create",ApiResourceStateOperationType2[ApiResourceStateOperationType2.update=2]="update",ApiResourceStateOperationType2[ApiResourceStateOperationType2.delete=3]="delete",ApiResourceStateOperationType2[ApiResourceStateOperationType2.read=4]="read",ApiResourceStateOperationType2[ApiResourceStateOperationType2.stream=5]="stream"})(ApiResourceStateOperationType||(ApiResourceStateOperationType={}));var ApiResourceVisibility;(function(ApiResourceVisibility2){ApiResourceVisibility2[ApiResourceVisibility2.api_resource_visibility_unspecified=0]="api_resource_visibility_unspecified",ApiResourceVisibility2[ApiResourceVisibility2.visibility_private=1]="visibility_private",ApiResourceVisibility2[ApiResourceVisibility2.visibility_public=2]="visibility_public",ApiResourceVisibility2[ApiResourceVisibility2.visibility_org=3]="visibility_org",ApiResourceVisibility2[ApiResourceVisibility2.visibility_platform=4]="visibility_platform"})(ApiResourceVisibility||(ApiResourceVisibility={}));var file_ai_stigmer_commons_apiresource_io=fileDesc("CidhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvaW8ucHJvdG8SHmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZSImCg1BcGlSZXNvdXJjZUlkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiXQoWQXBpUmVzb3VyY2VEZWxldGVJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhcKD3ZlcnNpb25fbWVzc2FnZRgCIAEoCRINCgVmb3JjZRgDIAEoCCJKCh1BcGlSZXNvdXJjZUJ5T3JnQnlTbHVnUmVxdWVzdBITCgNvcmcYASABKAlCBrpIA8gBARIUCgRzbHVnGAIgASgJQga6SAPIAQEilAEKF0ZpbmRBcGlSZXNvdXJjZXNSZXF1ZXN0EhMKA29yZxgBIAEoCUIGukgDyAEBEgwKBGtpbmQYAyABKAkSLgoEcGFnZRgEIAEoCzIgLmFpLnN0aWdtZXIuY29tbW9ucy5ycGMuUGFnZUluZm8SEwoLcGFnZV9udW1iZXIYBSABKAUSEQoJcGFnZV9zaXplGAYgASgFIosBChVVcGRhdGVWaXNpYmlsaXR5SW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARJVCgp2aXNpYmlsaXR5GAIgASgOMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlVmlzaWJpbGl0eUIKukgHggEEEAEgACKWAgoUQXBpUmVzb3VyY2VSZWZlcmVuY2USMgoDb3JnGAEgASgJQiW6SCJyIBg/MhxeJHxeW2Etel1bYS16MC05LV0qW2EtejAtOV0kEk0KBGtpbmQYAiABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBI1CgRzbHVnGAMgASgJQie6SCTIAQFyHxACGD8yGV5bYS16XVthLXowLTktXSpbYS16MC05XSQSRAoHdmVyc2lvbhgEIAEoCUIzukgwci4yLF4kfF5sYXRlc3QkfF5bYS16QS1aMC05Ll8tXSskfF5bYS1mMC05XXs2NH0kYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_commons_apiresource_enum,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]);var ApiResourceReferenceSchema=messageDesc2(file_ai_stigmer_commons_apiresource_io,5);var file_ai_stigmer_agentic_agent_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxIooHCglBZ2VudFNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSEAoIaWNvbl91cmwYAiABKAkSHQoMaW5zdHJ1Y3Rpb25zGAMgASgJQge6SARyAhAKEs4BChFtY3Bfc2VydmVyX3VzYWdlcxgEIAMoCzIrLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5NY3BTZXJ2ZXJVc2FnZUKFAbpIgQGSAX4ifLoBeQoWbWNwX3NlcnZlcl91c2FnZXMua2luZBI/bWNwX3NlcnZlcl91c2FnZXMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1tY3Bfc2VydmVyGh50aGlzLm1jcF9zZXJ2ZXJfcmVmLmtpbmQgPT0gNDQSsAEKCnNraWxsX3JlZnMYBSADKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2VCZrpIX5IBXCJaugFXCg9za2lsbF9yZWZzLmtpbmQSM3NraWxsX3JlZnMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1za2lsbBoPdGhpcy5raW5kID09IDQz4IUsKxI5CgpzdWJfYWdlbnRzGAYgAygLMiUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLlN1YkFnZW50EjwKA2VudhgHIAMoCzIvLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudFNwZWMuRW52RW50cnkSyAEKEGRhdGFzdG9yZV91c2FnZXMYCSADKAsyKy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuRGF0YXN0b3JlVXNhZ2VCgAG6SH2SAXoieLoBdQoVZGF0YXN0b3JlX3VzYWdlcy5raW5kEj1kYXRhc3RvcmVfdXNhZ2VzIG11c3QgcmVmZXJlbmNlIHJlc291cmNlcyB3aXRoIGtpbmQ9ZGF0YXN0b3JlGh10aGlzLmRhdGFzdG9yZV9yZWYua2luZCA9PSA0ORpgCghFbnZFbnRyeRILCgNrZXkYASABKAkSQwoFdmFsdWUYAiABKAsyNC5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52VmFyRGVjbGFyYXRpb246AjgBSgQICBAJUgdzaGFyaW5nItsCCghTdWJBZ2VudBIUCgRuYW1lGAEgASgJQga6SAPIAQESEwoLZGVzY3JpcHRpb24YAiABKAkSHQoMaW5zdHJ1Y3Rpb25zGAMgASgJQge6SARyAhAKEjoKCm1jcF9hY2Nlc3MYBCADKAsyJi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuTWNwQWNjZXNzErABCgpza2lsbF9yZWZzGAUgAygLMjQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlUmVmZXJlbmNlQma6SF+SAVwiWroBVwoPc2tpbGxfcmVmcy5raW5kEjNza2lsbF9yZWZzIG11c3QgcmVmZXJlbmNlIHJlc291cmNlcyB3aXRoIGtpbmQ9c2tpbGwaD3RoaXMua2luZCA9PSA0M+CFLCsSFgoObW9kZWxfb3ZlcnJpZGUYBiABKAki1QEKDk1jcFNlcnZlclVzYWdlElgKDm1jcF9zZXJ2ZXJfcmVmGAEgASgLMjQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlUmVmZXJlbmNlQgq6SAPIAQHghSwsEhUKDWVuYWJsZWRfdG9vbHMYAiADKAkSUgoXdG9vbF9hcHByb3ZhbF9vdmVycmlkZXMYAyADKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuVG9vbEFwcHJvdmFsT3ZlcnJpZGUiaQoORGF0YXN0b3JlVXNhZ2USVwoNZGF0YXN0b3JlX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUIKukgDyAEB4IUsMSI+CglNY3BBY2Nlc3MSGgoKbWNwX3NlcnZlchgBIAEoCUIGukgDyAEBEhUKDWVuYWJsZWRfdG9vbHMYAiADKAkiXgoUVG9vbEFwcHJvdmFsT3ZlcnJpZGUSGgoJdG9vbF9uYW1lGAEgASgJQge6SARyAhABEhkKEXJlcXVpcmVzX2FwcHJvdmFsGAIgASgIEg8KB21lc3NhZ2UYAyABKAliBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]),AgentSpecSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,0),SubAgentSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,1),McpServerUsageSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,2),DatastoreUsageSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,3),McpAccessSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,4),ToolApprovalOverrideSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_spec,5);var file_ai_stigmer_commons_apiresource_status=fileDesc("CithaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2Uvc3RhdHVzLnByb3RvEh5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UiWQoWQXBpUmVzb3VyY2VBdWRpdFN0YXR1cxI/CgVhdWRpdBhjIAEoCzIwLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0IqgBChBBcGlSZXNvdXJjZUF1ZGl0EkgKCnNwZWNfYXVkaXQYASABKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VBdWRpdEluZm8SSgoMc3RhdHVzX2F1ZGl0GAIgASgLMjQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRJbmZvIpsCChRBcGlSZXNvdXJjZUF1ZGl0SW5mbxJJCgpjcmVhdGVkX2J5GAEgASgLMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRBY3RvchIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJJCgp1cGRhdGVkX2J5GAMgASgLMjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRBY3RvchIuCgp1cGRhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgVldmVudBgFIAEoCSJYChVBcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCgoCaWQYASABKAkSDgoGYXZhdGFyGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRINCgVlbWFpbBgEIAEoCWIGcHJvdG8z",[file_google_protobuf_timestamp]);var file_ai_stigmer_agentic_agent_v1_status=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvc3RhdHVzLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEigwEKC0FnZW50U3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSGwoTZGVmYXVsdF9pbnN0YW5jZV9pZBgBIAEoCUoECAIQA1IQc2hhcmVfbGlua190b2tlbmIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_status]);var file_ai_stigmer_commons_apiresource_metadata=fileDesc("Ci1haS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvbWV0YWRhdGEucHJvdG8SHmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZSK4BAoTQXBpUmVzb3VyY2VNZXRhZGF0YRIUCgRuYW1lGAEgASgJQga6SAPYAQESMwoEc2x1ZxgCIAEoCUIlukgi2AEBch0QAjIZXlthLXpdW2EtejAtOS1dKlthLXowLTldJBIKCgJpZBgDIAEoCRILCgNvcmcYBCABKAkSUwoKdmlzaWJpbGl0eRgFIAEoDjI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVZpc2liaWxpdHlCCLpIBYIBAhABEk8KBmxhYmVscxgGIAMoCzI/LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhLkxhYmVsc0VudHJ5ElkKC2Fubm90YXRpb25zGAcgAygLMkQuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlTWV0YWRhdGEuQW5ub3RhdGlvbnNFbnRyeRIMCgR0YWdzGAggAygJEksKB3ZlcnNpb24YCSABKAsyOi5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YVZlcnNpb24aLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoyChBBbm5vdGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiYwoaQXBpUmVzb3VyY2VNZXRhZGF0YVZlcnNpb24SCgoCaWQYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIbChNwcmV2aW91c192ZXJzaW9uX2lkGAMgASgJEgsKA3RhZxgEIAEoCWIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_enum,file_buf_validate_validate]),ApiResourceMetadataSchema=messageDesc2(file_ai_stigmer_commons_apiresource_metadata,0);var file_ai_stigmer_agentic_agent_v1_api=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvYXBpLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEilQIKBUFnZW50EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEhoKBGtpbmQYAiABKAlCDLpICXIHCgVBZ2VudBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESNAoEc3BlYxgEIAEoCzImLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudFNwZWMSOAoGc3RhdHVzGAUgASgLMiguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50U3RhdHVzYgZwcm90bzM",[file_ai_stigmer_agentic_agent_v1_spec,file_ai_stigmer_agentic_agent_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),AgentSchema=messageDesc2(file_ai_stigmer_agentic_agent_v1_api,0);var file_ai_stigmer_agentic_agent_v1_io=fileDesc("CiRhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvaW8ucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MSIgCgdBZ2VudElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiLgoWR2V0RGVmYXVsdEFnZW50UmVxdWVzdBIUCgNvcmcYASABKAlCB7pIBHICEAFiBnByb3RvMw",[file_buf_validate_validate]);var file_ai_stigmer_commons_apiresource_rpc_service_options=fileDesc("CjhhaS9zdGlnbWVyL2NvbW1vbnMvYXBpcmVzb3VyY2UvcnBjX3NlcnZpY2Vfb3B0aW9ucy5wcm90bxIeYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlOo4BChFhcGlfcmVzb3VyY2Vfa2luZBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxj0vwUgASgOMj8uYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLmFwaXJlc291cmNla2luZC5BcGlSZXNvdXJjZUtpbmRSD2FwaVJlc291cmNlS2luZGIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_google_protobuf_descriptor]);var file_ai_stigmer_agentic_agent_v1_command=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvY29tbWFuZC5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxMskFChZBZ2VudENvbW1hbmRDb250cm9sbGVyEk8KBWFwcGx5EiIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50GiIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50EpsBCgZjcmVhdGUSIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQaIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQiScK4GEUIBhAeIgxtZXRhZGF0YS5vcmcqMXVuYXV0aG9yaXplZCB0byBjcmVhdGUgYWdlbnQgaW4gdGhpcyBvcmdhbml6YXRpb24ShQEKBnVwZGF0ZRIiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudBoiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudCIzwrgYLwgCECgiC21ldGFkYXRhLmlkKhx1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGFnZW50Eq0BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBoiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudCI+wrgYOggCECgiC3Jlc291cmNlX2lkKid1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGFnZW50IHZpc2liaWxpdHkSgQEKBmRlbGV0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudElkGiIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50Ii3CuBgpCAMQKCIFdmFsdWUqHHVuYXV0aG9yaXplZCB0byBkZWxldGUgYWdlbnQaBKD/KyhiBnByb3RvMw",[file_ai_stigmer_agentic_agent_v1_api,file_ai_stigmer_agentic_agent_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentCommandController=serviceDesc(file_ai_stigmer_agentic_agent_v1_command,0);var file_ai_stigmer_agentic_agent_v1_query=fileDesc("CidhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnQvdjEvcXVlcnkucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MTL4AgoUQWdlbnRRdWVyeUNvbnRyb2xsZXISewoDZ2V0EiQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkFnZW50SWQaIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQiKsK4GCYIARAoIgV2YWx1ZSoZdW5hdXRob3JpemVkIHRvIGdldCBhZ2VudBJwCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoiLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudC52MS5BZ2VudCIE0LgYARJrCgpnZXREZWZhdWx0EjMuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50LnYxLkdldERlZmF1bHRBZ2VudFJlcXVlc3QaIi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuQWdlbnQiBNC4GAEaBKD/KyhiBnByb3RvMw",[file_ai_stigmer_agentic_agent_v1_api,file_ai_stigmer_agentic_agent_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentQueryController=serviceDesc(file_ai_stigmer_agentic_agent_v1_query,0);var file_ai_stigmer_search_v1_io=fileDesc("Ch1haS9zdGlnbWVyL3NlYXJjaC92MS9pby5wcm90bxIUYWkuc3RpZ21lci5zZWFyY2gudjEilQIKDVNlYXJjaFJlcXVlc3QSXQoFa2luZHMYASADKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZEINukgKkgEHIgWCAQIQARIXCgVxdWVyeRgCIAEoCUIIukgFcgMY9AMSKgoDb3JnGAMgASgJQh26SBpyGBg/MhReJHxeW2Etel1bYS16MC05LV0qJBIWCg5leGNsdWRlX3B1YmxpYxgEIAEoCBIuCgRwYWdlGAUgASgLMiAuYWkuc3RpZ21lci5jb21tb25zLnJwYy5QYWdlSW5mbxIYChBjcm9zc19vcmdfcHVibGljGAYgASgIIvQBCg5TZWFyY2hSZXNwb25zZRIzCgdlbnRyaWVzGAEgAygLMiIuYWkuc3RpZ21lci5zZWFyY2gudjEuU2VhcmNoUmVzdWx0Ek4KDmNvdW50c19ieV9raW5kGAIgAygLMjYuYWkuc3RpZ21lci5zZWFyY2gudjEuU2VhcmNoUmVzcG9uc2UuQ291bnRzQnlLaW5kRW50cnkSEwoLdG90YWxfY291bnQYAyABKAUSEwoLdG90YWxfcGFnZXMYBCABKAUaMwoRQ291bnRzQnlLaW5kRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASKZAwoMU2VhcmNoUmVzdWx0Ek0KBGtpbmQYASABKA4yPy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuYXBpcmVzb3VyY2VraW5kLkFwaVJlc291cmNlS2luZBIKCgJpZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHNsdWcYBCABKAkSFgoOcXVhbGlmaWVkX3NsdWcYBSABKAkSCwoDb3JnGAYgASgJEhMKC2Rlc2NyaXB0aW9uGAcgASgJEkkKCnZpc2liaWxpdHkYCCABKA4yNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VWaXNpYmlsaXR5EgwKBHRhZ3MYCSADKAkSLgoKY3JlYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFc2NvcmUYDCABKAISEAoIaWNvbl91cmwYDSABKAliBnByb3RvMw",[file_ai_stigmer_commons_apiresource_apiresourcekind_api_resource_kind,file_ai_stigmer_commons_apiresource_enum,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate,file_google_protobuf_timestamp]);var SearchResponseSchema=messageDesc2(file_ai_stigmer_search_v1_io,1);var file_ai_stigmer_search_v1_query=fileDesc("CiBhaS9zdGlnbWVyL3NlYXJjaC92MS9xdWVyeS5wcm90bxIUYWkuc3RpZ21lci5zZWFyY2gudjEyagoNU2VhcmNoU2VydmljZRJZCgZzZWFyY2gSIy5haS5zdGlnbWVyLnNlYXJjaC52MS5TZWFyY2hSZXF1ZXN0GiQuYWkuc3RpZ21lci5zZWFyY2gudjEuU2VhcmNoUmVzcG9uc2UiBNC4GAFiBnByb3RvMw",[file_ai_stigmer_commons_rpc_method_options,file_ai_stigmer_search_v1_io]),SearchService=serviceDesc(file_ai_stigmer_search_v1_query,0);var file_ai_stigmer_agentic_agentchannel_v1_message_io=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRjaGFubmVsL3YxL21lc3NhZ2VfaW8ucHJvdG8SImFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGNoYW5uZWwudjEivQEKF1NlbmRDaGFubmVsTWVzc2FnZUlucHV0EhgKB2NoYW5uZWwYASABKAlCB7pIBHICGD8SFAoDb3JnGAIgASgJQge6SARyAhg/Eh0KCXJlY2lwaWVudBgDIAEoCUIKukgHcgUQARiAARJTCgdwYXlsb2FkGAQgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50Y2hhbm5lbC52MS5DaGFubmVsT3V0Ym91bmRQYXlsb2FkQga6SAPIAQEisQEKFkNoYW5uZWxPdXRib3VuZFBheWxvYWQSPwoEdGV4dBgBIAEoCzIvLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGNoYW5uZWwudjEuVGV4dFBheWxvYWRIABJHCgh0ZW1wbGF0ZRgCIAEoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGNoYW5uZWwudjEuVGVtcGxhdGVQYXlsb2FkSABCDQoEa2luZBIFukgCCAEiJwoLVGV4dFBheWxvYWQSGAoEYm9keRgBIAEoCUIKukgHcgUQARiAICKBAgoPVGVtcGxhdGVQYXlsb2FkEhgKBG5hbWUYASABKAlCCrpIB3IFEAEYgAQSGQoIbGFuZ3VhZ2UYAiABKAlCB7pIBHICGBASYQoKcGFyYW1ldGVycxgDIAMoCzJDLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGNoYW5uZWwudjEuVGVtcGxhdGVQYXlsb2FkLlBhcmFtZXRlcnNFbnRyeUIIukgFmgECEDISIwoRaGVhZGVyX2ltYWdlX2xpbmsYBCABKAlCCLpIBXIDGIAQGjEKD1BhcmFtZXRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIq0BChhTZW5kQ2hhbm5lbE1lc3NhZ2VPdXRwdXQSRwoHb3V0Y29tZRgBIAEoDjI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGNoYW5uZWwudjEuQ2hhbm5lbFNlbmRPdXRjb21lEhsKE291dGJvdW5kX21lc3NhZ2VfaWQYAiABKAkSGwoTcHJvdmlkZXJfbWVzc2FnZV9pZBgDIAEoCRIOCgZkZXRhaWwYBCABKAkiYgoZTGlzdENoYW5uZWxUZW1wbGF0ZXNJbnB1dBIYCgdjaGFubmVsGAEgASgJQge6SARyAhg/EhQKA29yZxgCIAEoCUIHukgEcgIYPxIVCg1hcHByb3ZlZF9vbmx5GAMgASgIIlgKEENoYW5uZWxUZW1wbGF0ZXMSRAoHZW50cmllcxgBIAMoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGNoYW5uZWwudjEuQ2hhbm5lbFRlbXBsYXRlIuYBCg9DaGFubmVsVGVtcGxhdGUSDAoEbmFtZRgBIAEoCRIQCghsYW5ndWFnZRgCIAEoCRIQCghjYXRlZ29yeRgDIAEoCRIOCgZzdGF0dXMYBCABKAkSGAoQcGFyYW1ldGVyX2Zvcm1hdBgFIAEoCRIXCg9wYXJhbWV0ZXJfbmFtZXMYBiADKAkSEQoJYm9keV90ZXh0GAcgASgJEhUKDWhlYWRlcl9mb3JtYXQYCCABKAkSGAoQcmVqZWN0aW9uX3JlYXNvbhgJIAEoCRIaChJ1bnN1cHBvcnRlZF9yZWFzb24YCiABKAkiHAoaTGlzdE1lc3NhZ2luZ0NoYW5uZWxzSW5wdXQiWgoRTWVzc2FnaW5nQ2hhbm5lbHMSRQoHZW50cmllcxgBIAMoCzI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGNoYW5uZWwudjEuTWVzc2FnaW5nQ2hhbm5lbCI1ChBNZXNzYWdpbmdDaGFubmVsEg8KB2NoYW5uZWwYASABKAkSEAoIcHJvdmlkZXIYAiABKAkqYQoSQ2hhbm5lbFNlbmRPdXRjb21lEiQKIGNoYW5uZWxfc2VuZF9vdXRjb21lX3Vuc3BlY2lmaWVkEAASDAoIYWNjZXB0ZWQQARIKCgZxdWV1ZWQQAhILCgdyZWZ1c2VkEANiBnByb3RvMw",[file_buf_validate_validate]),SendChannelMessageInputSchema=messageDesc2(file_ai_stigmer_agentic_agentchannel_v1_message_io,0),ChannelOutboundPayloadSchema=messageDesc2(file_ai_stigmer_agentic_agentchannel_v1_message_io,1),TextPayloadSchema=messageDesc2(file_ai_stigmer_agentic_agentchannel_v1_message_io,2),TemplatePayloadSchema=messageDesc2(file_ai_stigmer_agentic_agentchannel_v1_message_io,3),SendChannelMessageOutputSchema=messageDesc2(file_ai_stigmer_agentic_agentchannel_v1_message_io,4);var ChannelSendOutcome;(function(ChannelSendOutcome2){ChannelSendOutcome2[ChannelSendOutcome2.channel_send_outcome_unspecified=0]="channel_send_outcome_unspecified",ChannelSendOutcome2[ChannelSendOutcome2.accepted=1]="accepted",ChannelSendOutcome2[ChannelSendOutcome2.queued=2]="queued",ChannelSendOutcome2[ChannelSendOutcome2.refused=3]="refused"})(ChannelSendOutcome||(ChannelSendOutcome={}));var file_ai_stigmer_agentic_agentchannel_v1_message_command=fileDesc("CjhhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRjaGFubmVsL3YxL21lc3NhZ2VfY29tbWFuZC5wcm90bxIiYWkuc3RpZ21lci5hZ2VudGljLmFnZW50Y2hhbm5lbC52MTK4AQofQ2hhbm5lbE1lc3NhZ2VDb21tYW5kQ29udHJvbGxlchKOAQoLc2VuZE1lc3NhZ2USOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRjaGFubmVsLnYxLlNlbmRDaGFubmVsTWVzc2FnZUlucHV0GjwuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50Y2hhbm5lbC52MS5TZW5kQ2hhbm5lbE1lc3NhZ2VPdXRwdXQiBNC4GAEaBKD/Ky9iBnByb3RvMw",[file_ai_stigmer_agentic_agentchannel_v1_message_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),ChannelMessageCommandController=serviceDesc(file_ai_stigmer_agentic_agentchannel_v1_message_command,0);var file_ai_stigmer_agentic_agentexecution_v1_enum=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvZW51bS5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxKv8BCg5FeGVjdXRpb25QaGFzZRIfChtFWEVDVVRJT05fUEhBU0VfVU5TUEVDSUZJRUQQABIVChFFWEVDVVRJT05fUEVORElORxABEhkKFUVYRUNVVElPTl9JTl9QUk9HUkVTUxACEhcKE0VYRUNVVElPTl9DT01QTEVURUQQAxIUChBFWEVDVVRJT05fRkFJTEVEEAQSFwoTRVhFQ1VUSU9OX0NBTkNFTExFRBAFEhgKFEVYRUNVVElPTl9URVJNSU5BVEVEEAgSIgoeRVhFQ1VUSU9OX1dBSVRJTkdfRk9SX0FQUFJPVkFMEAYSFAoQRVhFQ1VUSU9OX1BBVVNFRBAHKooBCgtNZXNzYWdlVHlwZRIcChhNRVNTQUdFX1RZUEVfVU5TUEVDSUZJRUQQABIRCg1NRVNTQUdFX0hVTUFOEAESDgoKTUVTU0FHRV9BSRACEhAKDE1FU1NBR0VfVE9PTBADEhIKDk1FU1NBR0VfU1lTVEVNEAQSFAoQTUVTU0FHRV9USElOS0lORxAFKuEBCg5Ub29sQ2FsbFN0YXR1cxIgChxUT09MX0NBTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFQoRVE9PTF9DQUxMX1BFTkRJTkcQARIVChFUT09MX0NBTExfUlVOTklORxACEhcKE1RPT0xfQ0FMTF9DT01QTEVURUQQAxIUChBUT09MX0NBTExfRkFJTEVEEAQSHgoaVE9PTF9DQUxMX1dBSVRJTkdfQVBQUk9WQUwQBRIVChFUT09MX0NBTExfU0tJUFBFRBAGEhkKFVRPT0xfQ0FMTF9JTlRFUlJVUFRFRBAHKs4CCghUb29sS2luZBIZChVUT09MX0tJTkRfVU5TUEVDSUZJRUQQABIXChNUT09MX0tJTkRfRklMRV9SRUFEEAESGAoUVE9PTF9LSU5EX0ZJTEVfV1JJVEUQAhIXChNUT09MX0tJTkRfRklMRV9FRElUEAMSGQoVVE9PTF9LSU5EX0ZJTEVfREVMRVRFEAQSEwoPVE9PTF9LSU5EX1NIRUxMEAUSFAoQVE9PTF9LSU5EX1NFQVJDSBAGEhIKDlRPT0xfS0lORF9MSVNUEAcSEwoPVE9PTF9LSU5EX0ZFVENIEAgSGAoUVE9PTF9LSU5EX1dFQl9TRUFSQ0gQCRITCg9UT09MX0tJTkRfVEhJTksQChISCg5UT09MX0tJTkRfVE9ETxALEhYKElRPT0xfS0lORF9TVUJBR0VOVBAMEhEKDVRPT0xfS0lORF9NQ1AQDSp5CgpUb2RvU3RhdHVzEhsKF1RPRE9fU1RBVFVTX1VOU1BFQ0lGSUVEEAASEAoMVE9ET19QRU5ESU5HEAESFAoQVE9ET19JTl9QUk9HUkVTUxACEhIKDlRPRE9fQ09NUExFVEVEEAMSEgoOVE9ET19DQU5DRUxMRUQQBCqsAQoOU3ViQWdlbnRTdGF0dXMSIAocU1VCX0FHRU5UX1NUQVRVU19VTlNQRUNJRklFRBAAEhUKEVNVQl9BR0VOVF9QRU5ESU5HEAESGQoVU1VCX0FHRU5UX0lOX1BST0dSRVNTEAISFwoTU1VCX0FHRU5UX0NPTVBMRVRFRBADEhQKEFNVQl9BR0VOVF9GQUlMRUQQBBIXChNTVUJfQUdFTlRfQ0FOQ0VMTEVEEAUqiQEKFUV4ZWN1dGlvbkFydGlmYWN0S2luZBInCiNFWEVDVVRJT05fQVJUSUZBQ1RfS0lORF9VTlNQRUNJRklFRBAAEiAKHEVYRUNVVElPTl9BUlRJRkFDVF9LSU5EX0ZJTEUQARIlCiFFWEVDVVRJT05fQVJUSUZBQ1RfS0lORF9ESVJFQ1RPUlkQAipfChNTdW1tYXJpemF0aW9uU291cmNlEiQKIFNVTU1BUklaQVRJT05fU09VUkNFX1VOU1BFQ0lGSUVEEAASDwoLZ3JhcGhfc3RhcnQQARIRCg1taWRfZXhlY3V0aW9uEAIqkgEKF1Rvb2xDYWxsU3RyZWFtaW5nU291cmNlEioKJlRPT0xfQ0FMTF9TVFJFQU1JTkdfU09VUkNFX1VOU1BFQ0lGSUVEEAASJAogVE9PTF9DQUxMX1NUUkVBTUlOR19TT1VSQ0VfSU5QVVQQARIlCiFUT09MX0NBTExfU1RSRUFNSU5HX1NPVVJDRV9PVVRQVVQQAiqLAQoWRXhlY3V0aW9uQ29udHJvbFNpZ25hbBIoCiRFWEVDVVRJT05fQ09OVFJPTF9TSUdOQUxfVU5TUEVDSUZJRUQQABIhCh1FWEVDVVRJT05fQ09OVFJPTF9TSUdOQUxfU1RPUBABEiQKIEVYRUNVVElPTl9DT05UUk9MX1NJR05BTF9XQVJOSU5HEAIqpQEKDkFwcHJvdmFsQWN0aW9uEh8KG0FQUFJPVkFMX0FDVElPTl9VTlNQRUNJRklFRBAAEhsKF0FQUFJPVkFMX0FDVElPTl9BUFBST1ZFEAESGAoUQVBQUk9WQUxfQUNUSU9OX1NLSVAQAhIaChZBUFBST1ZBTF9BQ1RJT05fUkVKRUNUEAMSHwobQVBQUk9WQUxfQUNUSU9OX0FQUFJPVkVfQUxMEAQqsAMKFEFwcHJvdmFsUG9saWN5U291cmNlEiYKIkFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfVU5TUEVDSUZJRUQQABItCilBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0NMQVNTSUZJRVJfREVGQVVMVBABEioKJkFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfUElOTkVEX09WRVJSSURFEAISKQolQVBQUk9WQUxfUE9MSUNZX1NPVVJDRV9BR0VOVF9PVkVSUklERRADEisKJ0FQUFJPVkFMX1BPTElDWV9TT1VSQ0VfQVVUT19BUFBST1ZFX0FMTBAEEikKJUFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfQVBQUk9WQUxfTEVBU0UQBRIrCidBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0JVSUxUSU5fQ0FURUdPUlkQBhI5CjVBUFBST1ZBTF9QT0xJQ1lfU09VUkNFX0FOTk9UQVRJT05fREVTVFJVQ1RJVkVfVElHSFRFThAHEioKJkFQUFJPVkFMX1BPTElDWV9TT1VSQ0VfVU5BVFRFTkRFRF9TS0lQEAgq4wEKEUFwcHJvdmFsRXZlbnRUeXBlEiMKH0FQUFJPVkFMX0VWRU5UX1RZUEVfVU5TUEVDSUZJRUQQABIhCh1BUFBST1ZBTF9FVkVOVF9UWVBFX1JFUVVFU1RFRBABEiAKHEFQUFJPVkFMX0VWRU5UX1RZUEVfQVBQUk9WRUQQAhIgChxBUFBST1ZBTF9FVkVOVF9UWVBFX1JFSkVDVEVEEAMSHwobQVBQUk9WQUxfRVZFTlRfVFlQRV9TS0lQUEVEEAQSIQodQVBQUk9WQUxfRVZFTlRfVFlQRV9SRVRSQUNURUQQBSqkAQoYQXBwcm92YWxSZXRyYWN0aW9uUmVhc29uEioKJkFQUFJPVkFMX1JFVFJBQ1RJT05fUkVBU09OX1VOU1BFQ0lGSUVEEAASMQotQVBQUk9WQUxfUkVUUkFDVElPTl9SRUFTT05fU1VCX0FHRU5UX1RFUk1JTkFMEAESKQolQVBQUk9WQUxfUkVUUkFDVElPTl9SRUFTT05fU1VQRVJTRURFRBACKmoKD0ludGVyYWN0aW9uTW9kZRIgChxJTlRFUkFDVElPTl9NT0RFX1VOU1BFQ0lGSUVEEAASGgoWSU5URVJBQ1RJT05fTU9ERV9BR0VOVBABEhkKFUlOVEVSQUNUSU9OX01PREVfUExBThACKmoKDEFwcHJvdmFsTW9kZRIdChlBUFBST1ZBTF9NT0RFX1VOU1BFQ0lGSUVEEAASHQoZQVBQUk9WQUxfTU9ERV9JTlRFUkFDVElWRRABEhwKGEFQUFJPVkFMX01PREVfVU5BVFRFTkRFRBACKqYBCg5GaWxlQ2hhbmdlVHlwZRIgChxGSUxFX0NIQU5HRV9UWVBFX1VOU1BFQ0lGSUVEEAASGwoXRklMRV9DSEFOR0VfVFlQRV9DUkVBVEUQARIbChdGSUxFX0NIQU5HRV9UWVBFX01PRElGWRACEhsKF0ZJTEVfQ0hBTkdFX1RZUEVfREVMRVRFEAMSGwoXRklMRV9DSEFOR0VfVFlQRV9SRU5BTUUQBCqWAQoWRmlsZUNoYW5nZUNhcHR1cmVMZXZlbBIpCiVGSUxFX0NIQU5HRV9DQVBUVVJFX0xFVkVMX1VOU1BFQ0lGSUVEEAASKAokRklMRV9DSEFOR0VfQ0FQVFVSRV9MRVZFTF9XSE9MRV9GSUxFEAESJwojRklMRV9DSEFOR0VfQ0FQVFVSRV9MRVZFTF9IVU5LX09OTFkQAir9AQoTRmlsZUNoYW5nZVNldFN0YXR1cxImCiJGSUxFX0NIQU5HRV9TRVRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJAogRklMRV9DSEFOR0VfU0VUX1NUQVRVU19DQVBUVVJJTkcQARIqCiZGSUxFX0NIQU5HRV9TRVRfU1RBVFVTX0FXQUlUSU5HX1JFVklFVxACEiIKHkZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfREVDSURFRBADEiUKIUZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfUkVDT05DSUxFRBAEEiEKHUZJTEVfQ0hBTkdFX1NFVF9TVEFUVVNfRkFJTEVEEAUqxwEKDkZpbGVDaGFuZ2VLaW5kEiAKHEZJTEVfQ0hBTkdFX0tJTkRfVU5TUEVDSUZJRUQQABIYChRGSUxFX0NIQU5HRV9LSU5EX0FERBABEhsKF0ZJTEVfQ0hBTkdFX0tJTkRfTU9ESUZZEAISGwoXRklMRV9DSEFOR0VfS0lORF9ERUxFVEUQAxIbChdGSUxFX0NIQU5HRV9LSU5EX1JFTkFNRRAEEiIKHkZJTEVfQ0hBTkdFX0tJTkRfQklOQVJZX0NIQU5HRRAFKtoBChBGaWxlQ2FwdHVyZUNsYXNzEiIKHkZJTEVfQ0FQVFVSRV9DTEFTU19VTlNQRUNJRklFRBAAEiIKHkZJTEVfQ0FQVFVSRV9DTEFTU19HSVRfVFJBQ0tFRBABEi0KKUZJTEVfQ0FQVFVSRV9DTEFTU19HSVRfVU5UUkFDS0VEX0NBUFRVUkVEEAISKwonRklMRV9DQVBUVVJFX0NMQVNTX0dJVF9JR05PUkVEX0NBUFRVUkVEEAMSIgoeRklMRV9DQVBUVVJFX0NMQVNTX05PTl9HSVRfQ0FTEAQqpwEKEERpZmZDb21wbGV0ZW5lc3MSIQodRElGRl9DT01QTEVURU5FU1NfVU5TUEVDSUZJRUQQABIeChpESUZGX0NPTVBMRVRFTkVTU19DT01QTEVURRABEiUKIURJRkZfQ09NUExFVEVORVNTX1BBUlRJQUxfQkxPQ0tFRBACEikKJURJRkZfQ09NUExFVEVORVNTX0JJTkFSWV9TVU1NQVJZX09OTFkQAyqHAQoMU25hcHNob3RLaW5kEh0KGVNOQVBTSE9UX0tJTkRfVU5TUEVDSUZJRUQQABIeChpTTkFQU0hPVF9LSU5EX0dJVF9UUkVFX1JFRhABEh4KGlNOQVBTSE9UX0tJTkRfQ0FTX01BTklGRVNUEAISGAoUU05BUFNIT1RfS0lORF9IWUJSSUQQAyp6ChFGaWxlRGVjaXNpb25TY29wZRIjCh9GSUxFX0RFQ0lTSU9OX1NDT1BFX1VOU1BFQ0lGSUVEEAASIgoeRklMRV9ERUNJU0lPTl9TQ09QRV9DSEFOR0VfU0VUEAESHAoYRklMRV9ERUNJU0lPTl9TQ09QRV9GSUxFEAIqfQoSRmlsZURlY2lzaW9uQWN0aW9uEiQKIEZJTEVfREVDSVNJT05fQUNUSU9OX1VOU1BFQ0lGSUVEEAASIAocRklMRV9ERUNJU0lPTl9BQ1RJT05fQVBQUk9WRRABEh8KG0ZJTEVfREVDSVNJT05fQUNUSU9OX1JFSkVDVBACKosBChJGaWxlRGVjaXNpb25PcmlnaW4SJAogRklMRV9ERUNJU0lPTl9PUklHSU5fVU5TUEVDSUZJRUQQABIdChlGSUxFX0RFQ0lTSU9OX09SSUdJTl9VU0VSEAESMAosRklMRV9ERUNJU0lPTl9PUklHSU5fUE9MSUNZX0FQUFJPVkVEX0NPTU1BTkQQAiqNAgoTRmlsZVJldmlld0V2ZW50VHlwZRImCiJGSUxFX1JFVklFV19FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEEAASLAooRklMRV9SRVZJRVdfRVZFTlRfVFlQRV9CQVNFTElORV9DQVBUVVJFRBABEi0KKUZJTEVfUkVWSUVXX0VWRU5UX1RZUEVfQ0FORElEQVRFX0NBUFRVUkVEEAISJwojRklMRV9SRVZJRVdfRVZFTlRfVFlQRV9GSUxFX0RFQ0lERUQQAxIlCiFGSUxFX1JFVklFV19FVkVOVF9UWVBFX1JFQ09OQ0lMRUQQBBIhCh1GSUxFX1JFVklFV19FVkVOVF9UWVBFX0ZBSUxFRBAFKvkBChVGaWxlUmV2aWV3RmFpbHVyZUtpbmQSKAokRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX1VOU1BFQ0lGSUVEEAASKwonRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX0NBUFRVUkVfRkFJTEVEEAESLgoqRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX0RJRkZfVU5SRVZJRVdBQkxFEAISLQopRklMRV9SRVZJRVdfRkFJTFVSRV9LSU5EX1JFQ09OQ0lMRV9GQUlMRUQQAxIqCiZGSUxFX1JFVklFV19GQUlMVVJFX0tJTkRfSEFTSF9NSVNNQVRDSBAEKsQBChVGaWxlUmV2aWV3QmxvY2tSZWFzb24SKAokRklMRV9SRVZJRVdfQkxPQ0tfUkVBU09OX1VOU1BFQ0lGSUVEEAASLAooRklMRV9SRVZJRVdfQkxPQ0tfUkVBU09OX1NFQ1JFVF9XSVRISEVMRBABEigKJEZJTEVfUkVWSUVXX0JMT0NLX1JFQVNPTl9TSVpFX0VMSURFRBACEikKJUZJTEVfUkVWSUVXX0JMT0NLX1JFQVNPTl9VTlJFVklFV0FCTEUQA2IGcHJvdG8z"),ExecutionPhase;(function(ExecutionPhase3){ExecutionPhase3[ExecutionPhase3.EXECUTION_PHASE_UNSPECIFIED=0]="EXECUTION_PHASE_UNSPECIFIED",ExecutionPhase3[ExecutionPhase3.EXECUTION_PENDING=1]="EXECUTION_PENDING",ExecutionPhase3[ExecutionPhase3.EXECUTION_IN_PROGRESS=2]="EXECUTION_IN_PROGRESS",ExecutionPhase3[ExecutionPhase3.EXECUTION_COMPLETED=3]="EXECUTION_COMPLETED",ExecutionPhase3[ExecutionPhase3.EXECUTION_FAILED=4]="EXECUTION_FAILED",ExecutionPhase3[ExecutionPhase3.EXECUTION_CANCELLED=5]="EXECUTION_CANCELLED",ExecutionPhase3[ExecutionPhase3.EXECUTION_TERMINATED=8]="EXECUTION_TERMINATED",ExecutionPhase3[ExecutionPhase3.EXECUTION_WAITING_FOR_APPROVAL=6]="EXECUTION_WAITING_FOR_APPROVAL",ExecutionPhase3[ExecutionPhase3.EXECUTION_PAUSED=7]="EXECUTION_PAUSED"})(ExecutionPhase||(ExecutionPhase={}));var MessageType;(function(MessageType2){MessageType2[MessageType2.MESSAGE_TYPE_UNSPECIFIED=0]="MESSAGE_TYPE_UNSPECIFIED",MessageType2[MessageType2.MESSAGE_HUMAN=1]="MESSAGE_HUMAN",MessageType2[MessageType2.MESSAGE_AI=2]="MESSAGE_AI",MessageType2[MessageType2.MESSAGE_TOOL=3]="MESSAGE_TOOL",MessageType2[MessageType2.MESSAGE_SYSTEM=4]="MESSAGE_SYSTEM",MessageType2[MessageType2.MESSAGE_THINKING=5]="MESSAGE_THINKING"})(MessageType||(MessageType={}));var ToolCallStatus;(function(ToolCallStatus2){ToolCallStatus2[ToolCallStatus2.TOOL_CALL_STATUS_UNSPECIFIED=0]="TOOL_CALL_STATUS_UNSPECIFIED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_PENDING=1]="TOOL_CALL_PENDING",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_RUNNING=2]="TOOL_CALL_RUNNING",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_COMPLETED=3]="TOOL_CALL_COMPLETED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_FAILED=4]="TOOL_CALL_FAILED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_WAITING_APPROVAL=5]="TOOL_CALL_WAITING_APPROVAL",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_SKIPPED=6]="TOOL_CALL_SKIPPED",ToolCallStatus2[ToolCallStatus2.TOOL_CALL_INTERRUPTED=7]="TOOL_CALL_INTERRUPTED"})(ToolCallStatus||(ToolCallStatus={}));var ToolKind;(function(ToolKind2){ToolKind2[ToolKind2.UNSPECIFIED=0]="UNSPECIFIED",ToolKind2[ToolKind2.FILE_READ=1]="FILE_READ",ToolKind2[ToolKind2.FILE_WRITE=2]="FILE_WRITE",ToolKind2[ToolKind2.FILE_EDIT=3]="FILE_EDIT",ToolKind2[ToolKind2.FILE_DELETE=4]="FILE_DELETE",ToolKind2[ToolKind2.SHELL=5]="SHELL",ToolKind2[ToolKind2.SEARCH=6]="SEARCH",ToolKind2[ToolKind2.LIST=7]="LIST",ToolKind2[ToolKind2.FETCH=8]="FETCH",ToolKind2[ToolKind2.WEB_SEARCH=9]="WEB_SEARCH",ToolKind2[ToolKind2.THINK=10]="THINK",ToolKind2[ToolKind2.TODO=11]="TODO",ToolKind2[ToolKind2.SUBAGENT=12]="SUBAGENT",ToolKind2[ToolKind2.MCP=13]="MCP"})(ToolKind||(ToolKind={}));var TodoStatus;(function(TodoStatus2){TodoStatus2[TodoStatus2.TODO_STATUS_UNSPECIFIED=0]="TODO_STATUS_UNSPECIFIED",TodoStatus2[TodoStatus2.TODO_PENDING=1]="TODO_PENDING",TodoStatus2[TodoStatus2.TODO_IN_PROGRESS=2]="TODO_IN_PROGRESS",TodoStatus2[TodoStatus2.TODO_COMPLETED=3]="TODO_COMPLETED",TodoStatus2[TodoStatus2.TODO_CANCELLED=4]="TODO_CANCELLED"})(TodoStatus||(TodoStatus={}));var SubAgentStatus;(function(SubAgentStatus2){SubAgentStatus2[SubAgentStatus2.SUB_AGENT_STATUS_UNSPECIFIED=0]="SUB_AGENT_STATUS_UNSPECIFIED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_PENDING=1]="SUB_AGENT_PENDING",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_IN_PROGRESS=2]="SUB_AGENT_IN_PROGRESS",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_COMPLETED=3]="SUB_AGENT_COMPLETED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_FAILED=4]="SUB_AGENT_FAILED",SubAgentStatus2[SubAgentStatus2.SUB_AGENT_CANCELLED=5]="SUB_AGENT_CANCELLED"})(SubAgentStatus||(SubAgentStatus={}));var ExecutionArtifactKind;(function(ExecutionArtifactKind2){ExecutionArtifactKind2[ExecutionArtifactKind2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionArtifactKind2[ExecutionArtifactKind2.FILE=1]="FILE",ExecutionArtifactKind2[ExecutionArtifactKind2.DIRECTORY=2]="DIRECTORY"})(ExecutionArtifactKind||(ExecutionArtifactKind={}));var SummarizationSource;(function(SummarizationSource2){SummarizationSource2[SummarizationSource2.SUMMARIZATION_SOURCE_UNSPECIFIED=0]="SUMMARIZATION_SOURCE_UNSPECIFIED",SummarizationSource2[SummarizationSource2.graph_start=1]="graph_start",SummarizationSource2[SummarizationSource2.mid_execution=2]="mid_execution"})(SummarizationSource||(SummarizationSource={}));var ToolCallStreamingSource;(function(ToolCallStreamingSource2){ToolCallStreamingSource2[ToolCallStreamingSource2.UNSPECIFIED=0]="UNSPECIFIED",ToolCallStreamingSource2[ToolCallStreamingSource2.INPUT=1]="INPUT",ToolCallStreamingSource2[ToolCallStreamingSource2.OUTPUT=2]="OUTPUT"})(ToolCallStreamingSource||(ToolCallStreamingSource={}));var ExecutionControlSignal;(function(ExecutionControlSignal2){ExecutionControlSignal2[ExecutionControlSignal2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionControlSignal2[ExecutionControlSignal2.STOP=1]="STOP",ExecutionControlSignal2[ExecutionControlSignal2.WARNING=2]="WARNING"})(ExecutionControlSignal||(ExecutionControlSignal={}));var ApprovalAction;(function(ApprovalAction2){ApprovalAction2[ApprovalAction2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalAction2[ApprovalAction2.APPROVE=1]="APPROVE",ApprovalAction2[ApprovalAction2.SKIP=2]="SKIP",ApprovalAction2[ApprovalAction2.REJECT=3]="REJECT",ApprovalAction2[ApprovalAction2.APPROVE_ALL=4]="APPROVE_ALL"})(ApprovalAction||(ApprovalAction={}));var ApprovalPolicySource;(function(ApprovalPolicySource2){ApprovalPolicySource2[ApprovalPolicySource2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalPolicySource2[ApprovalPolicySource2.CLASSIFIER_DEFAULT=1]="CLASSIFIER_DEFAULT",ApprovalPolicySource2[ApprovalPolicySource2.PINNED_OVERRIDE=2]="PINNED_OVERRIDE",ApprovalPolicySource2[ApprovalPolicySource2.AGENT_OVERRIDE=3]="AGENT_OVERRIDE",ApprovalPolicySource2[ApprovalPolicySource2.AUTO_APPROVE_ALL=4]="AUTO_APPROVE_ALL",ApprovalPolicySource2[ApprovalPolicySource2.APPROVAL_LEASE=5]="APPROVAL_LEASE",ApprovalPolicySource2[ApprovalPolicySource2.BUILTIN_CATEGORY=6]="BUILTIN_CATEGORY",ApprovalPolicySource2[ApprovalPolicySource2.ANNOTATION_DESTRUCTIVE_TIGHTEN=7]="ANNOTATION_DESTRUCTIVE_TIGHTEN",ApprovalPolicySource2[ApprovalPolicySource2.UNATTENDED_SKIP=8]="UNATTENDED_SKIP"})(ApprovalPolicySource||(ApprovalPolicySource={}));var ApprovalEventType;(function(ApprovalEventType2){ApprovalEventType2[ApprovalEventType2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalEventType2[ApprovalEventType2.REQUESTED=1]="REQUESTED",ApprovalEventType2[ApprovalEventType2.APPROVED=2]="APPROVED",ApprovalEventType2[ApprovalEventType2.REJECTED=3]="REJECTED",ApprovalEventType2[ApprovalEventType2.SKIPPED=4]="SKIPPED",ApprovalEventType2[ApprovalEventType2.RETRACTED=5]="RETRACTED"})(ApprovalEventType||(ApprovalEventType={}));var ApprovalRetractionReason;(function(ApprovalRetractionReason2){ApprovalRetractionReason2[ApprovalRetractionReason2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalRetractionReason2[ApprovalRetractionReason2.SUB_AGENT_TERMINAL=1]="SUB_AGENT_TERMINAL",ApprovalRetractionReason2[ApprovalRetractionReason2.SUPERSEDED=2]="SUPERSEDED"})(ApprovalRetractionReason||(ApprovalRetractionReason={}));var InteractionMode;(function(InteractionMode2){InteractionMode2[InteractionMode2.UNSPECIFIED=0]="UNSPECIFIED",InteractionMode2[InteractionMode2.AGENT=1]="AGENT",InteractionMode2[InteractionMode2.PLAN=2]="PLAN"})(InteractionMode||(InteractionMode={}));var ApprovalMode;(function(ApprovalMode2){ApprovalMode2[ApprovalMode2.UNSPECIFIED=0]="UNSPECIFIED",ApprovalMode2[ApprovalMode2.INTERACTIVE=1]="INTERACTIVE",ApprovalMode2[ApprovalMode2.UNATTENDED=2]="UNATTENDED"})(ApprovalMode||(ApprovalMode={}));var FileChangeType;(function(FileChangeType2){FileChangeType2[FileChangeType2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeType2[FileChangeType2.CREATE=1]="CREATE",FileChangeType2[FileChangeType2.MODIFY=2]="MODIFY",FileChangeType2[FileChangeType2.DELETE=3]="DELETE",FileChangeType2[FileChangeType2.RENAME=4]="RENAME"})(FileChangeType||(FileChangeType={}));var FileChangeCaptureLevel;(function(FileChangeCaptureLevel2){FileChangeCaptureLevel2[FileChangeCaptureLevel2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeCaptureLevel2[FileChangeCaptureLevel2.WHOLE_FILE=1]="WHOLE_FILE",FileChangeCaptureLevel2[FileChangeCaptureLevel2.HUNK_ONLY=2]="HUNK_ONLY"})(FileChangeCaptureLevel||(FileChangeCaptureLevel={}));var FileChangeSetStatus;(function(FileChangeSetStatus2){FileChangeSetStatus2[FileChangeSetStatus2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeSetStatus2[FileChangeSetStatus2.CAPTURING=1]="CAPTURING",FileChangeSetStatus2[FileChangeSetStatus2.AWAITING_REVIEW=2]="AWAITING_REVIEW",FileChangeSetStatus2[FileChangeSetStatus2.DECIDED=3]="DECIDED",FileChangeSetStatus2[FileChangeSetStatus2.RECONCILED=4]="RECONCILED",FileChangeSetStatus2[FileChangeSetStatus2.FAILED=5]="FAILED"})(FileChangeSetStatus||(FileChangeSetStatus={}));var FileChangeKind;(function(FileChangeKind2){FileChangeKind2[FileChangeKind2.UNSPECIFIED=0]="UNSPECIFIED",FileChangeKind2[FileChangeKind2.ADD=1]="ADD",FileChangeKind2[FileChangeKind2.MODIFY=2]="MODIFY",FileChangeKind2[FileChangeKind2.DELETE=3]="DELETE",FileChangeKind2[FileChangeKind2.RENAME=4]="RENAME",FileChangeKind2[FileChangeKind2.BINARY_CHANGE=5]="BINARY_CHANGE"})(FileChangeKind||(FileChangeKind={}));var FileCaptureClass;(function(FileCaptureClass2){FileCaptureClass2[FileCaptureClass2.UNSPECIFIED=0]="UNSPECIFIED",FileCaptureClass2[FileCaptureClass2.GIT_TRACKED=1]="GIT_TRACKED",FileCaptureClass2[FileCaptureClass2.GIT_UNTRACKED_CAPTURED=2]="GIT_UNTRACKED_CAPTURED",FileCaptureClass2[FileCaptureClass2.GIT_IGNORED_CAPTURED=3]="GIT_IGNORED_CAPTURED",FileCaptureClass2[FileCaptureClass2.NON_GIT_CAS=4]="NON_GIT_CAS"})(FileCaptureClass||(FileCaptureClass={}));var DiffCompleteness;(function(DiffCompleteness2){DiffCompleteness2[DiffCompleteness2.UNSPECIFIED=0]="UNSPECIFIED",DiffCompleteness2[DiffCompleteness2.COMPLETE=1]="COMPLETE",DiffCompleteness2[DiffCompleteness2.PARTIAL_BLOCKED=2]="PARTIAL_BLOCKED",DiffCompleteness2[DiffCompleteness2.BINARY_SUMMARY_ONLY=3]="BINARY_SUMMARY_ONLY"})(DiffCompleteness||(DiffCompleteness={}));var SnapshotKind;(function(SnapshotKind2){SnapshotKind2[SnapshotKind2.UNSPECIFIED=0]="UNSPECIFIED",SnapshotKind2[SnapshotKind2.GIT_TREE_REF=1]="GIT_TREE_REF",SnapshotKind2[SnapshotKind2.CAS_MANIFEST=2]="CAS_MANIFEST",SnapshotKind2[SnapshotKind2.HYBRID=3]="HYBRID"})(SnapshotKind||(SnapshotKind={}));var FileDecisionScope;(function(FileDecisionScope2){FileDecisionScope2[FileDecisionScope2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionScope2[FileDecisionScope2.CHANGE_SET=1]="CHANGE_SET",FileDecisionScope2[FileDecisionScope2.FILE=2]="FILE"})(FileDecisionScope||(FileDecisionScope={}));var FileDecisionAction;(function(FileDecisionAction2){FileDecisionAction2[FileDecisionAction2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionAction2[FileDecisionAction2.APPROVE=1]="APPROVE",FileDecisionAction2[FileDecisionAction2.REJECT=2]="REJECT"})(FileDecisionAction||(FileDecisionAction={}));var FileDecisionOrigin;(function(FileDecisionOrigin2){FileDecisionOrigin2[FileDecisionOrigin2.UNSPECIFIED=0]="UNSPECIFIED",FileDecisionOrigin2[FileDecisionOrigin2.USER=1]="USER",FileDecisionOrigin2[FileDecisionOrigin2.POLICY_APPROVED_COMMAND=2]="POLICY_APPROVED_COMMAND"})(FileDecisionOrigin||(FileDecisionOrigin={}));var FileReviewEventType;(function(FileReviewEventType2){FileReviewEventType2[FileReviewEventType2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewEventType2[FileReviewEventType2.BASELINE_CAPTURED=1]="BASELINE_CAPTURED",FileReviewEventType2[FileReviewEventType2.CANDIDATE_CAPTURED=2]="CANDIDATE_CAPTURED",FileReviewEventType2[FileReviewEventType2.FILE_DECIDED=3]="FILE_DECIDED",FileReviewEventType2[FileReviewEventType2.RECONCILED=4]="RECONCILED",FileReviewEventType2[FileReviewEventType2.FAILED=5]="FAILED"})(FileReviewEventType||(FileReviewEventType={}));var FileReviewFailureKind;(function(FileReviewFailureKind2){FileReviewFailureKind2[FileReviewFailureKind2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewFailureKind2[FileReviewFailureKind2.CAPTURE_FAILED=1]="CAPTURE_FAILED",FileReviewFailureKind2[FileReviewFailureKind2.DIFF_UNREVIEWABLE=2]="DIFF_UNREVIEWABLE",FileReviewFailureKind2[FileReviewFailureKind2.RECONCILE_FAILED=3]="RECONCILE_FAILED",FileReviewFailureKind2[FileReviewFailureKind2.HASH_MISMATCH=4]="HASH_MISMATCH"})(FileReviewFailureKind||(FileReviewFailureKind={}));var FileReviewBlockReason;(function(FileReviewBlockReason2){FileReviewBlockReason2[FileReviewBlockReason2.UNSPECIFIED=0]="UNSPECIFIED",FileReviewBlockReason2[FileReviewBlockReason2.SECRET_WITHHELD=1]="SECRET_WITHHELD",FileReviewBlockReason2[FileReviewBlockReason2.SIZE_ELIDED=2]="SIZE_ELIDED",FileReviewBlockReason2[FileReviewBlockReason2.UNREVIEWABLE=3]="UNREVIEWABLE"})(FileReviewBlockReason||(FileReviewBlockReason={}));var file_ai_stigmer_agentic_agentexecution_v1_approval=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvYXBwcm92YWwucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSLLAwoPUGVuZGluZ0FwcHJvdmFsEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIRCgl0b29sX25hbWUYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIUCgxhcmdzX3ByZXZpZXcYBCABKAkSFAoMcmVxdWVzdGVkX2F0GAUgASgJEhYKDmZyb21fc3ViX2FnZW50GAYgASgIEhYKDnN1Yl9hZ2VudF9uYW1lGAcgASgJEhcKD21jcF9zZXJ2ZXJfc2x1ZxgIIAEoCRIZChFzdWJfYWdlbnRfc3ViamVjdBgJIAEoCRIXCg9hZ2VudF9yYXRpb25hbGUYCiABKAkSFgoOYnJhbmNoX2F0X2RlbnkYCyABKAkSGAoQaGVhZF9zaGFfYXRfZGVueRgMIAEoCRJBCgl0b29sX2tpbmQYDSABKA4yLi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9vbEtpbmQSWgoWYXBwcm92YWxfcG9saWN5X3NvdXJjZRgPIAEoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFBvbGljeVNvdXJjZUoECA4QDyKDAQoZQ2hpbGRBcHByb3ZhbE5vdGlmaWNhdGlvbhIUCgxleGVjdXRpb25faWQYASABKAkSUAoRcGVuZGluZ19hcHByb3ZhbHMYAiADKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUGVuZGluZ0FwcHJvdmFsIp0DCg9BcHByb3ZhbFJlcXVlc3QSGwoTYXBwcm92YWxfcmVxdWVzdF9pZBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkSFAoMcmVxdWVzdGVkX2F0GAMgASgJEhEKCXRvb2xfbmFtZRgEIAEoCRIPCgdtZXNzYWdlGAUgASgJEhQKDGFyZ3NfcHJldmlldxgGIAEoCRIWCg5mcm9tX3N1Yl9hZ2VudBgHIAEoCBIWCg5zdWJfYWdlbnRfbmFtZRgIIAEoCRIZChFzdWJfYWdlbnRfc3ViamVjdBgJIAEoCRIXCg9tY3Bfc2VydmVyX3NsdWcYCiABKAkSQQoJdG9vbF9raW5kGAsgASgOMi4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xLaW5kEloKFmFwcHJvdmFsX3BvbGljeV9zb3VyY2UYDSABKA4yOi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXBwcm92YWxQb2xpY3lTb3VyY2VKBAgMEA0ilwEKEkFwcHJvdmFsUmV0cmFjdGlvbhIbChNhcHByb3ZhbF9yZXF1ZXN0X2lkGAEgASgJEk4KBnJlYXNvbhgCIAEoDjI+LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFJldHJhY3Rpb25SZWFzb24SFAoMcmV0cmFjdGVkX2F0GAMgASgJIq4BChBBcHByb3ZhbERlY2lzaW9uEhsKE2FwcHJvdmFsX3JlcXVlc3RfaWQYASABKAkSRAoGYWN0aW9uGAIgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uEhIKCmRlY2lkZWRfYXQYAyABKAkSEgoKZGVjaWRlZF9ieRgEIAEoCRIPCgdjb21tZW50GAUgASgJIp4DCg1BcHByb3ZhbEV2ZW50EhAKCGV2ZW50X2lkGAEgASgJEhsKE2FwcHJvdmFsX3JlcXVlc3RfaWQYAiABKAkSSwoKZXZlbnRfdHlwZRgDIAEoDjI3LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbEV2ZW50VHlwZRIRCgl0aW1lc3RhbXAYBCABKAkSDQoFYWN0b3IYBSABKAkSSgoJcmVxdWVzdGVkGAYgASgLMjUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsUmVxdWVzdEgAEkkKB2RlY2lkZWQYByABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXBwcm92YWxEZWNpc2lvbkgAEk0KCXJldHJhY3RlZBgIIAEoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFJldHJhY3Rpb25IAEIJCgdwYXlsb2FkInAKE0FwcHJvdmFsRXZlbnRTdHJlYW0SFAoMZXhlY3V0aW9uX2lkGAEgASgJEkMKBmV2ZW50cxgCIAMoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbEV2ZW50YgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_enum]);var file_ai_stigmer_agentic_agentexecution_v1_artifact=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvYXJ0aWZhY3QucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSKEAgoRRXhlY3V0aW9uQXJ0aWZhY3QSDAoEbmFtZRgBIAEoCRIUCgxzYW5kYm94X3BhdGgYAiABKAkSUwoEa2luZBgDIAEoDjI7LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25BcnRpZmFjdEtpbmRCCLpIBYIBAhABEhIKCnNpemVfYnl0ZXMYBCABKAMSEwoLc3RvcmFnZV9rZXkYBSABKAkSEgoKY3JlYXRlZF9hdBgHIAEoCRISCgpleHBpcmVzX2F0GAggASgJEg8KB2VudHJpZXMYCSADKAkSFAoMY29udGVudF9oYXNoGAogASgJYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_buf_validate_validate]);var file_ai_stigmer_agentic_agentexecution_v1_context=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvY29udGV4dC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIsACChhSZXNvbHZlZEV4ZWN1dGlvbkNvbnRleHQSGAoQZW52aXJvbm1lbnRfa2V5cxgBIAMoCRJjCgttY3Bfc2VydmVycxgCIAMoCzJOLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5SZXNvbHZlZEV4ZWN1dGlvbkNvbnRleHQuTWNwU2VydmVyc0VudHJ5EhMKC3NraWxsX25hbWVzGAMgAygJEhwKFGV4Y2x1ZGVkX3NraWxsX25hbWVzGAQgAygJGnIKD01jcFNlcnZlcnNFbnRyeRILCgNrZXkYASABKAkSTgoFdmFsdWUYAiABKAsyPy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuTWNwU2VydmVyUmVzb2x1dGlvblN0YXR1czoCOAEiWgoZTWNwU2VydmVyUmVzb2x1dGlvblN0YXR1cxIQCghyZXNvbHZlZBgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEhoKEmVuYWJsZWRfdG9vbF9jb3VudBgDIAEoBSKGAwoSU3VtbWFyaXphdGlvbkV2ZW50EhEKCXRpbWVzdGFtcBgBIAEoCRIVCg10b2tlbnNfYmVmb3JlGAIgASgFEhQKDHRva2Vuc19hZnRlchgDIAEoBRIZChFjb21wcmVzc2lvbl9yYXRpbxgEIAEoAhITCgtkdXJhdGlvbl9tcxgFIAEoBRIbChNzdW1tYXJpemF0aW9uX21vZGVsGAYgASgJEhcKD21lc3NhZ2VzX2JlZm9yZRgHIAEoBRIWCg5tZXNzYWdlc19hZnRlchgIIAEoBRJJCgZzb3VyY2UYCSABKA4yOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VtbWFyaXphdGlvblNvdXJjZRIiChpzdW1tYXJpemF0aW9uX2lucHV0X3Rva2VucxgKIAEoBRIjChtzdW1tYXJpemF0aW9uX291dHB1dF90b2tlbnMYCyABKAUSHgoWc3VtbWFyaXphdGlvbl9jb3N0X3VzZBgMIAEoASKqAgoLQ29udGV4dEluZm8SGwoTY3VycmVudF90b2tlbl9jb3VudBgBIAEoBRIcChRjb250ZXh0X3dpbmRvd19saW1pdBgCIAEoBRInCh9zdW1tYXJpemF0aW9uX3RyaWdnZXJfdGhyZXNob2xkGAMgASgFEiMKG3N1bW1hcml6YXRpb25fdGFyZ2V0X3Rva2VucxgEIAEoBRIdChVzdW1tYXJpemF0aW9uX2VuYWJsZWQYBSABKAgSVgoUc3VtbWFyaXphdGlvbl9ldmVudHMYBiADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VtbWFyaXphdGlvbkV2ZW50EhsKE3V0aWxpemF0aW9uX3BlcmNlbnQYByABKAJiBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum]);var file_ai_stigmer_agentic_agentexecution_v1_message=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvbWVzc2FnZS5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIoICCgxBZ2VudE1lc3NhZ2USSQoEdHlwZRgBIAEoDjIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5NZXNzYWdlVHlwZUIIukgFggECEAESDwoHY29udGVudBgCIAEoCRIRCgl0aW1lc3RhbXAYAyABKAkSQgoKdG9vbF9jYWxscxgEIAMoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Ub29sQ2FsbBIpCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMaXNfc3RyZWFtaW5nGAYgASgIIqUHCghUb29sQ2FsbBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEiUKBGFyZ3MYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg4KBnJlc3VsdBgEIAEoCRJOCgZzdGF0dXMYBSABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9vbENhbGxTdGF0dXNCCLpIBYIBAhABEhIKCnN0YXJ0ZWRfYXQYByABKAkSFAoMY29tcGxldGVkX2F0GAggASgJEg0KBWVycm9yGAkgASgJEhkKEXJlcXVpcmVzX2FwcHJvdmFsGAogASgIEhgKEGFwcHJvdmFsX21lc3NhZ2UYCyABKAkSHQoVYXBwcm92YWxfcmVxdWVzdGVkX2F0GAwgASgJEhsKE2FwcHJvdmFsX2RlY2lkZWRfYXQYDSABKAkSEwoLYXBwcm92ZWRfYnkYDiABKAkSTQoPYXBwcm92YWxfYWN0aW9uGA8gASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uEhQKDGlzX3N0cmVhbWluZxgQIAEoCBJXChBzdHJlYW1pbmdfc291cmNlGBMgASgOMj0uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xDYWxsU3RyZWFtaW5nU291cmNlEhcKD21jcF9zZXJ2ZXJfc2x1ZxgRIAEoCRIUCgxhcmdzX3ByZXZpZXcYEiABKAkSQQoJdG9vbF9raW5kGBQgASgOMi4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xLaW5kEksKCm91dHB1dF9yZWYYFSABKAsyNy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVG9vbENhbGxPdXRwdXRSZWYSWgoWYXBwcm92YWxfcG9saWN5X3NvdXJjZRgXIAEoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbFBvbGljeVNvdXJjZRIdChVwb2xpY3lfZW5naW5lX3ZlcnNpb24YGCABKAkSHwoXYXBwcm92YWxfY29udGVudF9kaWdlc3QYGSABKAkSGgoSZmlsZV9jaGFuZ2Vfc2V0X2lkGBogASgJSgQIFhAXIpIBChFUb29sQ2FsbE91dHB1dFJlZhITCgtzdG9yYWdlX2tleRgBIAEoCRISCgpzaXplX2J5dGVzGAMgASgDEhQKDGNvbnRlbnRfaGFzaBgEIAEoCRIRCgltaW1lX3R5cGUYBSABKAkSEAoIaXNfaW1hZ2UYBiABKAgSGQoRdHJ1bmNhdGVkX3ByZXZpZXcYByABKAkiwQMKCkZpbGVDaGFuZ2USDAoEcGF0aBgBIAEoCRIVCg1hYnNvbHV0ZV9wYXRoGAIgASgJElMKC2NoYW5nZV90eXBlGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVDaGFuZ2VUeXBlQgi6SAWCAQIQARJdCg1jYXB0dXJlX2xldmVsGAQgASgOMjwuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVDaGFuZ2VDYXB0dXJlTGV2ZWxCCLpIBYIBAhABEkEKBmJlZm9yZRgFIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ29udGVudBJACgVhZnRlchgGIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ29udGVudBIUCgx1bmlmaWVkX2RpZmYYByABKAkSEwoLbGluZXNfYWRkZWQYCCABKAUSFQoNbGluZXNfcmVtb3ZlZBgJIAEoBRITCgtyZW5hbWVfZnJvbRgKIAEoCSKCAQoLRmlsZUNvbnRlbnQSEAoGaW5saW5lGAEgASgJSAASRgoDcmVmGAIgASgLMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xDYWxsT3V0cHV0UmVmSAASEQoJaXNfYmluYXJ5GAMgASgIQgYKBGJvZHliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_buf_validate_validate,file_google_protobuf_struct]);var file_ai_stigmer_agentic_agentexecution_v1_filereview=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvZmlsZXJldmlldy5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIokFCg1GaWxlQ2hhbmdlU2V0EgoKAmlkGAEgASgJEg8KB3R1cm5faWQYAiABKAkSEgoKaGFybmVzc19pZBgDIAEoCRJTCgZzdGF0dXMYBCABKA4yOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNoYW5nZVNldFN0YXR1c0IIukgFggECEAESTAoRYmFzZWxpbmVfc25hcHNob3QYBSABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU25hcHNob3RSZWYSTQoSY2FuZGlkYXRlX3NuYXBzaG90GAYgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmEkwKEWFwcHJvdmVkX3NuYXBzaG90GAcgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmEkkKB2NoYW5nZXMYCCADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ2FwdHVyZWRGaWxlQ2hhbmdlEhgKEGFnZ3JlZ2F0ZV9kaWdlc3QYCSABKAkSWwoRZGlmZl9jb21wbGV0ZW5lc3MYCiABKA4yNi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRGlmZkNvbXBsZXRlbmVzc0IIukgFggECEAESRQoJZGVjaXNpb25zGAsgAygLMjIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVEZWNpc2lvbiKoBQoSQ2FwdHVyZWRGaWxlQ2hhbmdlEgoKAmlkGAEgASgJEhMKC3BhdGhfYmVmb3JlGAIgASgJEhIKCnBhdGhfYWZ0ZXIYAyABKAkSTAoEa2luZBgEIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ2hhbmdlS2luZEIIukgFggECEAESVwoNY2FwdHVyZV9jbGFzcxgFIAEoDjI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ2FwdHVyZUNsYXNzQgi6SAWCAQIQARJBCgZiZWZvcmUYBiABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNvbnRlbnQSQAoFYWZ0ZXIYByABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNvbnRlbnQSFQoNYmVmb3JlX3NoYTI1NhgIIAEoCRIUCgxhZnRlcl9zaGEyNTYYCSABKAkSTQoMdW5pZmllZF9kaWZmGAogASgLMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvb2xDYWxsT3V0cHV0UmVmEhUKDWRpZmZfY29tcGxldGUYCyABKAgSEwoLZmlsZV9kaWdlc3QYDCABKAkSXQoOYmxvY2tlZF9yZWFzb24YDSABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZVJldmlld0Jsb2NrUmVhc29uQgi6SAWCAQIQARITCgtsaW5lc19hZGRlZBgOIAEoBRIVCg1saW5lc19yZW1vdmVkGA8gASgFItsBCgtTbmFwc2hvdFJlZhJKCgRraW5kGAEgASgOMjIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90S2luZEIIukgFggECEAESPQoDZ2l0GAIgASgLMjAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdpdFRyZWVSZWYSQQoDY2FzGAMgASgLMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkNhc01hbmlmZXN0UmVmIisKCkdpdFRyZWVSZWYSEAoIdHJlZV9vaWQYASABKAkSCwoDcmVmGAIgASgJIj8KDkNhc01hbmlmZXN0UmVmEhcKD21hbmlmZXN0X2RpZ2VzdBgBIAEoCRIUCgxhcnRpZmFjdF91cmkYAiABKAkitwMKDEZpbGVEZWNpc2lvbhIKCgJpZBgBIAEoCRIVCg1jaGFuZ2Vfc2V0X2lkGAIgASgJElAKBXNjb3BlGAMgASgOMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVEZWNpc2lvblNjb3BlQgi6SAWCAQIQARIWCg5maWxlX2NoYW5nZV9pZBgEIAEoCRJSCgZhY3Rpb24YBSABKA4yOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZURlY2lzaW9uQWN0aW9uQgi6SAWCAQIQARIXCg9leHBlY3RlZF9kaWdlc3QYBiABKAkSEwoLcmV2aWV3ZXJfaWQYByABKAkSEgoKZGVjaWRlZF9hdBgIIAEoCRIOCgZyZWFzb24YCSABKAkSIAoYYWNrbm93bGVkZ2VfdW5yZXZpZXdhYmxlGAogASgIElIKBm9yaWdpbhgLIAEoDjI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25PcmlnaW5CCLpIBYIBAhABIqYBChpGaWxlUmV2aWV3QmFzZWxpbmVDYXB0dXJlZBIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJEg8KB3R1cm5faWQYAiABKAkSEgoKaGFybmVzc19pZBgDIAEoCRJMChFiYXNlbGluZV9zbmFwc2hvdBgEIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5TbmFwc2hvdFJlZiJeChVUdXJuQ29tbWFuZFByb3ZlbmFuY2USHQoVY29uc2VudF90b29sX2NhbGxfaWRzGAEgAygJEiYKHmF1dGhvcml6ZWRfYnlfYXV0b19hcHByb3ZlX2FsbBgCIAEoCCKeAwobRmlsZVJldmlld0NhbmRpZGF0ZUNhcHR1cmVkEhUKDWNoYW5nZV9zZXRfaWQYASABKAkSTQoSY2FuZGlkYXRlX3NuYXBzaG90GAIgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmEkkKB2NoYW5nZXMYAyADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ2FwdHVyZWRGaWxlQ2hhbmdlEhgKEGFnZ3JlZ2F0ZV9kaWdlc3QYBCABKAkSWwoRZGlmZl9jb21wbGV0ZW5lc3MYBSABKA4yNi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRGlmZkNvbXBsZXRlbmVzc0IIukgFggECEAESVwoSY29tbWFuZF9wcm92ZW5hbmNlGAYgASgLMjsuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlR1cm5Db21tYW5kUHJvdmVuYW5jZSJ7ChRGaWxlUmV2aWV3UmVjb25jaWxlZBIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJEkwKEWFwcHJvdmVkX3NuYXBzaG90GAIgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNuYXBzaG90UmVmIo8BChFGaWxlUmV2aWV3RmFpbHVyZRIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJElMKBGtpbmQYAiABKA4yOy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZVJldmlld0ZhaWx1cmVLaW5kQgi6SAWCAQIQARIOCgZkZXRhaWwYAyABKAki6QQKD0ZpbGVSZXZpZXdFdmVudBIQCghldmVudF9pZBgBIAEoCRIVCg1jaGFuZ2Vfc2V0X2lkGAIgASgJElcKCmV2ZW50X3R5cGUYAyABKA4yOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZVJldmlld0V2ZW50VHlwZUIIukgFggECEAESEQoJdGltZXN0YW1wGAQgASgJEg0KBWFjdG9yGAUgASgJEl0KEWJhc2VsaW5lX2NhcHR1cmVkGAYgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdCYXNlbGluZUNhcHR1cmVkSAASXwoSY2FuZGlkYXRlX2NhcHR1cmVkGAcgASgLMkEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdDYW5kaWRhdGVDYXB0dXJlZEgAEkoKDGZpbGVfZGVjaWRlZBgIIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25IABJQCgpyZWNvbmNpbGVkGAkgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdSZWNvbmNpbGVkSAASSQoGZmFpbGVkGAogASgLMjcuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVSZXZpZXdGYWlsdXJlSABCCQoHcGF5bG9hZCJ0ChVGaWxlUmV2aWV3RXZlbnRTdHJlYW0SFAoMZXhlY3V0aW9uX2lkGAEgASgJEkUKBmV2ZW50cxgCIAMoCzI1LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlUmV2aWV3RXZlbnQi0wEKEkZpbGVDaGFuZ2VQcm9ncmVzcxIVCg1jaGFuZ2Vfc2V0X2lkGAEgASgJEhUKDWZpbGVzX2NoYW5nZWQYAiABKAUSEwoLbGluZXNfYWRkZWQYAyABKAUSFQoNbGluZXNfcmVtb3ZlZBgEIAEoBRJOCgdlbnRyaWVzGAUgAygLMj0uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkZpbGVDaGFuZ2VQcm9ncmVzc0VudHJ5EhMKC2NhcHR1cmVkX2F0GAYgASgJIrwBChdGaWxlQ2hhbmdlUHJvZ3Jlc3NFbnRyeRITCgtwYXRoX2JlZm9yZRgBIAEoCRISCgpwYXRoX2FmdGVyGAIgASgJEkwKBGtpbmQYAyABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNoYW5nZUtpbmRCCLpIBYIBAhABEhMKC2xpbmVzX2FkZGVkGAQgASgFEhUKDWxpbmVzX3JlbW92ZWQYBSABKAViBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_message,file_buf_validate_validate]);var file_ai_stigmer_agentic_executioncontext_v1_spec=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvZXhlY3V0aW9uY29udGV4dC92MS9zcGVjLnByb3RvEiZhaS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MSLwAQoURXhlY3V0aW9uQ29udGV4dFNwZWMSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABElQKBGRhdGEYAiADKAsyRi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25Db250ZXh0U3BlYy5EYXRhRW50cnkaYwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRJFCgV2YWx1ZRgCIAEoCzI2LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvblZhbHVlOgI4ASIyCg5FeGVjdXRpb25WYWx1ZRINCgV2YWx1ZRgBIAEoCRIRCglpc19zZWNyZXQYAiABKAhiBnByb3RvMw",[file_buf_validate_validate]);var ExecutionValueSchema=messageDesc2(file_ai_stigmer_agentic_executioncontext_v1_spec,1);var file_ai_stigmer_agentic_session_v1_enum=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9lbnVtLnByb3RvEh1haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MSpZChBHaXRXcml0ZUJhY2tNb2RlEiMKH0dJVF9XUklURV9CQUNLX01PREVfVU5TUEVDSUZJRUQQABIgChxHSVRfV1JJVEVfQkFDS19CUkFOQ0hfQU5EX1BSEAEqSgoHSGFybmVzcxIXChNIQVJORVNTX1VOU1BFQ0lGSUVEEAASEgoOSEFSTkVTU19OQVRJVkUQARISCg5IQVJORVNTX0NVUlNPUhACKmsKD0V4ZWN1dGlvblRhcmdldBIgChxFWEVDVVRJT05fVEFSR0VUX1VOU1BFQ0lGSUVEEAASGgoWRVhFQ1VUSU9OX1RBUkdFVF9MT0NBTBABEhoKFkVYRUNVVElPTl9UQVJHRVRfQ0xPVUQQAipXCgpDdXJzb3JNb2RlEhsKF0NVUlNPUl9NT0RFX1VOU1BFQ0lGSUVEEAASFQoRQ1VSU09SX01PREVfTE9DQUwQARIVChFDVVJTT1JfTU9ERV9DTE9VRBACYgZwcm90bzM"),GitWriteBackMode;(function(GitWriteBackMode2){GitWriteBackMode2[GitWriteBackMode2.GIT_WRITE_BACK_MODE_UNSPECIFIED=0]="GIT_WRITE_BACK_MODE_UNSPECIFIED",GitWriteBackMode2[GitWriteBackMode2.GIT_WRITE_BACK_BRANCH_AND_PR=1]="GIT_WRITE_BACK_BRANCH_AND_PR"})(GitWriteBackMode||(GitWriteBackMode={}));var Harness;(function(Harness2){Harness2[Harness2.UNSPECIFIED=0]="UNSPECIFIED",Harness2[Harness2.NATIVE=1]="NATIVE",Harness2[Harness2.CURSOR=2]="CURSOR"})(Harness||(Harness={}));var ExecutionTarget;(function(ExecutionTarget2){ExecutionTarget2[ExecutionTarget2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionTarget2[ExecutionTarget2.LOCAL=1]="LOCAL",ExecutionTarget2[ExecutionTarget2.CLOUD=2]="CLOUD"})(ExecutionTarget||(ExecutionTarget={}));var CursorMode;(function(CursorMode2){CursorMode2[CursorMode2.UNSPECIFIED=0]="UNSPECIFIED",CursorMode2[CursorMode2.LOCAL=1]="LOCAL",CursorMode2[CursorMode2.CLOUD=2]="CLOUD"})(CursorMode||(CursorMode={}));var file_ai_stigmer_agentic_session_v1_workspace=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS93b3Jrc3BhY2UucHJvdG8SHWFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxIqoBCg9Xb3Jrc3BhY2VTb3VyY2USQAoIZ2l0X3JlcG8YASABKAsyLC5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5HaXRSZXBvU291cmNlSAASRAoKbG9jYWxfcGF0aBgCIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkxvY2FsUGF0aFNvdXJjZUgAQg8KBnNvdXJjZRIFukgCCAEibwoOV29ya3NwYWNlRW50cnkSFQoEbmFtZRgBIAEoCUIHukgEcgIQARJGCgZzb3VyY2UYAiABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5Xb3Jrc3BhY2VTb3VyY2VCBrpIA8gBASIoCg9Mb2NhbFBhdGhTb3VyY2USFQoEcGF0aBgBIAEoCUIHukgEcgIQASLIAgoNR2l0UmVwb1NvdXJjZRKlAQoDdXJsGAEgASgJQpcBukiTAboBjAEKGWdpdF9yZXBvX3NvdXJjZS51cmwuaHR0cHMSUnVybCBtdXN0IHVzZSBIVFRQUyAoZS5nLiBodHRwczovL2dpdGh1Yi5jb20vb3JnL3JlcG8pLiBTU0ggVVJMcyBhcmUgbm90IHN1cHBvcnRlZC4aG3RoaXMuc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKcgBARIOCgZicmFuY2gYAiABKAkSDgoGY29tbWl0GAMgASgJEhsKBWRlcHRoGAQgASgFQge6SAQaAigASACIAQESSAoPd3JpdGVfYmFja19tb2RlGAUgASgOMi8uYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuR2l0V3JpdGVCYWNrTW9kZUIICgZfZGVwdGhiBnByb3RvMw",[file_ai_stigmer_agentic_session_v1_enum,file_buf_validate_validate]);var file_ai_stigmer_agentic_session_v1_spec=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2Vzc2lvbi92MS9zcGVjLnByb3RvEh1haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MSKWBwoLU2Vzc2lvblNwZWMSGQoRYWdlbnRfaW5zdGFuY2VfaWQYASABKAkSDwoHc3ViamVjdBgCIAEoCRIYChBoYXJuZXNzX3N0YXRlX2lkGAMgASgJEiAKGGhhcm5lc3Nfc3RhdGVfaWRfaGlzdG9yeRgNIAMoCRJKCghtZXRhZGF0YRgFIAMoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLlNlc3Npb25TcGVjLk1ldGFkYXRhRW50cnkSSAoRd29ya3NwYWNlX2VudHJpZXMYBiADKAsyLS5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5Xb3Jrc3BhY2VFbnRyeRLZAQoRbWNwX3NlcnZlcl91c2FnZXMYByADKAsyKy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnQudjEuTWNwU2VydmVyVXNhZ2VCkAG6SIwBkgGIASKFAboBgQEKHnNlc3Npb25fbWNwX3NlcnZlcl91c2FnZXMua2luZBI/bWNwX3NlcnZlcl91c2FnZXMgbXVzdCByZWZlcmVuY2UgcmVzb3VyY2VzIHdpdGgga2luZD1tY3Bfc2VydmVyGh50aGlzLm1jcF9zZXJ2ZXJfcmVmLmtpbmQgPT0gNDQSuAEKCnNraWxsX3JlZnMYCCADKAsyNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2VCbrpIZ5IBZCJiugFfChdzZXNzaW9uX3NraWxsX3JlZnMua2luZBIzc2tpbGxfcmVmcyBtdXN0IHJlZmVyZW5jZSByZXNvdXJjZXMgd2l0aCBraW5kPXNraWxsGg90aGlzLmtpbmQgPT0gNDPghSwrEjcKB2hhcm5lc3MYCiABKA4yJi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5IYXJuZXNzEj4KC2N1cnNvcl9tb2RlGAsgASgOMikuYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuQ3Vyc29yTW9kZRJIChBleGVjdXRpb25fdGFyZ2V0GAwgASgOMi4uYWkuc3RpZ21lci5hZ2VudGljLnNlc3Npb24udjEuRXhlY3V0aW9uVGFyZ2V0Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AWIGcHJvdG8z",[file_ai_stigmer_agentic_agent_v1_spec,file_ai_stigmer_agentic_session_v1_enum,file_ai_stigmer_agentic_session_v1_workspace,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]);var file_ai_stigmer_agentic_agentexecution_v1_spec=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvc3BlYy5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxItwIChJBZ2VudEV4ZWN1dGlvblNwZWMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIQCghhZ2VudF9pZBgCIAEoCRJACgxzZXNzaW9uX3NwZWMYDSABKAsyKi5haS5zdGlnbWVyLmFnZW50aWMuc2Vzc2lvbi52MS5TZXNzaW9uU3BlYxIYCgdtZXNzYWdlGAMgASgJQge6SARyAhABEk8KEGV4ZWN1dGlvbl9jb25maWcYBCABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRXhlY3V0aW9uQ29uZmlnEl0KC3J1bnRpbWVfZW52GAUgAygLMkguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uU3BlYy5SdW50aW1lRW52RW50cnkSFgoOY2FsbGJhY2tfdG9rZW4YBiABKAwSGAoQYXV0b19hcHByb3ZlX2FsbBgHIAEoCBIaChJwYXJlbnRfd29ya2Zsb3dfaWQYCCABKAkSRQoLYXR0YWNobWVudHMYCSADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXR0YWNobWVudBIbChN3b3Jrc3BhY2VfZmlsZV9yZWZzGAogAygJEhsKE2FjdGl2aXR5X3Rhc2tfcXVldWUYCyABKAkSHwoXc3VwZXJzZWRlc19leGVjdXRpb25faWQYDCABKAkaaQoPUnVudGltZUVudkVudHJ5EgsKA2tleRgBIAEoCRJFCgV2YWx1ZRgCIAEoCzI2LmFpLnN0aWdtZXIuYWdlbnRpYy5leGVjdXRpb25jb250ZXh0LnYxLkV4ZWN1dGlvblZhbHVlOgI4ATq4A7pItAMaywEKIWFnZW50X2V4ZWN1dGlvbi5zZXNzaW9uX2V4Y2x1c2l2ZRJyc2Vzc2lvbl9pZCBhbmQgc2Vzc2lvbl9zcGVjIGFyZSBtdXR1YWxseSBleGNsdXNpdmUg4oCUIHJlZmVyZW5jZSBhbiBleGlzdGluZyBzZXNzaW9uIG9yIGRlZmluZSBhIG5ldyBvbmUsIG5vdCBib3RoGjIhKHRoaXMuc2Vzc2lvbl9pZCAhPSAnJyAmJiBoYXModGhpcy5zZXNzaW9uX3NwZWMpKRrjAQoqYWdlbnRfZXhlY3V0aW9uLnNlc3Npb25fc3BlY19oYXJuZXNzX3N0YXRlEnBzZXNzaW9uX3NwZWMuaGFybmVzc19zdGF0ZV9pZCBtdXN0IGJlIGVtcHR5IOKAlCBoYXJuZXNzIHN0YXRlIGlzIGNyZWF0ZWQgYnkgdGhlIHJ1bm5lciBhZnRlciB0aGUgZmlyc3QgZXhlY3V0aW9uGkMhaGFzKHRoaXMuc2Vzc2lvbl9zcGVjKSB8fCB0aGlzLnNlc3Npb25fc3BlYy5oYXJuZXNzX3N0YXRlX2lkID09ICcnItIDCg9FeGVjdXRpb25Db25maWcSEgoKbW9kZWxfbmFtZRgBIAEoCRJZChJjb250ZXh0X21hbmFnZW1lbnQYAiABKAsyPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ29udGV4dE1hbmFnZW1lbnRDb25maWcSFwoPbWF4X3Rvb2xfcm91bmRzGAMgASgFEh0KFW1heF90b29sX3Jlc3VsdF9jaGFycxgEIAEoBRIUCgxtYXhfY29zdF91c2QYBSABKAESWQoQaW50ZXJhY3Rpb25fbW9kZRgGIAEoDjI1LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5JbnRlcmFjdGlvbk1vZGVCCLpIBYIBAhABEjkKGHN0cnVjdHVyZWRfb3V0cHV0X3NjaGVtYRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPYnVpbGRfZnJvbV9wbGFuGAggASgIElMKDWFwcHJvdmFsX21vZGUYCSABKA4yMi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQXBwcm92YWxNb2RlQgi6SAWCAQIQASKKAQoXQ29udGV4dE1hbmFnZW1lbnRDb25maWcSHQoVZGlzYWJsZV9zdW1tYXJpemF0aW9uGAEgASgIEikKGGN1c3RvbV90cmlnZ2VyX3RocmVzaG9sZBgCIAEoBUIHukgEGgIoABIlChRjdXN0b21fdGFyZ2V0X3Rva2VucxgDIAEoBUIHukgEGgIoACKUAQoKQXR0YWNobWVudBIZCghmaWxlbmFtZRgBIAEoCUIHukgEcgIQARIcCgtzdG9yYWdlX2tleRgCIAEoCUIHukgEcgIQARISCgptb3VudF9wYXRoGAMgASgJEhQKDGNvbnRlbnRfdHlwZRgEIAEoCRIPCgdleHRyYWN0GAUgASgIEhIKCmxvY2FsX3BhdGgYBiABKAliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_executioncontext_v1_spec,file_ai_stigmer_agentic_session_v1_spec,file_buf_validate_validate,file_google_protobuf_struct]),AgentExecutionSpecSchema=messageDesc2(file_ai_stigmer_agentic_agentexecution_v1_spec,0);var ContextManagementConfigSchema=messageDesc2(file_ai_stigmer_agentic_agentexecution_v1_spec,2);var file_ai_stigmer_agentic_agentexecution_v1_todo=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvdG9kby5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxIpEBCghUb2RvSXRlbRIKCgJpZBgBIAEoCRIPCgdjb250ZW50GAIgASgJEkAKBnN0YXR1cxgDIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Ub2RvU3RhdHVzEhIKCmNyZWF0ZWRfYXQYBCABKAkSEgoKdXBkYXRlZF9hdBgFIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_agentexecution_v1_enum]);var file_ai_stigmer_agentic_agentexecution_v1_subagent=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvc3ViYWdlbnQucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSKIBAoRU3ViQWdlbnRFeGVjdXRpb24SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVpbnB1dBgDIAEoCRIOCgZvdXRwdXQYBCABKAkSTgoGc3RhdHVzGAUgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlN1YkFnZW50U3RhdHVzQgi6SAWCAQIQARISCgpzdGFydGVkX2F0GAYgASgJEhQKDGNvbXBsZXRlZF9hdBgHIAEoCRINCgVlcnJvchgIIAEoCRIpCghtZXRhZGF0YRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSRAoIbWVzc2FnZXMYCyADKAsyMi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRNZXNzYWdlEg8KB3N1YmplY3QYDSABKAkSUQoFdG9kb3MYDiADKAsyQi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3ViQWdlbnRFeGVjdXRpb24uVG9kb3NFbnRyeRpcCgpUb2Rvc0VudHJ5EgsKA2tleRgBIAEoCRI9CgV2YWx1ZRgCIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Ub2RvSXRlbToCOAFiBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_message,file_ai_stigmer_agentic_agentexecution_v1_todo,file_buf_validate_validate,file_google_protobuf_struct]);var file_ai_stigmer_agentic_agentexecution_v1_writeback=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvd3JpdGViYWNrLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEimgIKEldvcmtzcGFjZVdyaXRlQmFjaxIcChR3b3Jrc3BhY2VfZW50cnlfbmFtZRgBIAEoCRITCgticmFuY2hfbmFtZRgCIAEoCRITCgtiYXNlX2JyYW5jaBgDIAEoCRISCgpjb21taXRfc2hhGAQgASgJEhgKEHB1bGxfcmVxdWVzdF91cmwYBSABKAkSGwoTcHVsbF9yZXF1ZXN0X251bWJlchgGIAEoBRIUCgxkaWZmX3N1bW1hcnkYByABKAkSTAoFcGhhc2UYCCABKA4yPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuV29ya3NwYWNlV3JpdGVCYWNrUGhhc2USDQoFZXJyb3IYCSABKAkq0AEKF1dvcmtzcGFjZVdyaXRlQmFja1BoYXNlEioKJldPUktTUEFDRV9XUklURV9CQUNLX1BIQVNFX1VOU1BFQ0lGSUVEEAASIgoeV09SS1NQQUNFX1dSSVRFX0JBQ0tfQ09NTUlUVEVEEAESHwobV09SS1NQQUNFX1dSSVRFX0JBQ0tfUFVTSEVEEAISIwofV09SS1NQQUNFX1dSSVRFX0JBQ0tfUFJfQ1JFQVRFRBADEh8KG1dPUktTUEFDRV9XUklURV9CQUNLX0ZBSUxFRBAEYgZwcm90bzM");var WorkspaceWriteBackPhase;(function(WorkspaceWriteBackPhase2){WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_PHASE_UNSPECIFIED=0]="WORKSPACE_WRITE_BACK_PHASE_UNSPECIFIED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_COMMITTED=1]="WORKSPACE_WRITE_BACK_COMMITTED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_PUSHED=2]="WORKSPACE_WRITE_BACK_PUSHED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_PR_CREATED=3]="WORKSPACE_WRITE_BACK_PR_CREATED",WorkspaceWriteBackPhase2[WorkspaceWriteBackPhase2.WORKSPACE_WRITE_BACK_FAILED=4]="WORKSPACE_WRITE_BACK_FAILED"})(WorkspaceWriteBackPhase||(WorkspaceWriteBackPhase={}));var file_ai_stigmer_agentic_agentexecution_v1_api=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvYXBpLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEiywIKDkFnZW50RXhlY3V0aW9uEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEiMKBGtpbmQYAiABKAlCFbpIEnIQCg5BZ2VudEV4ZWN1dGlvbhJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESRgoEc3BlYxgEIAEoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvblNwZWMSSgoGc3RhdHVzGAUgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uU3RhdHVzIpkMChRBZ2VudEV4ZWN1dGlvblN0YXR1cxI/CgVhdWRpdBhjIAEoCzIwLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0EkQKCG1lc3NhZ2VzGAEgAygLMjIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50TWVzc2FnZRJNCgVwaGFzZRgCIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25QaGFzZUIIukgFggECEAESVQoUc3ViX2FnZW50X2V4ZWN1dGlvbnMYBCADKAsyNy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3ViQWdlbnRFeGVjdXRpb24SDQoFZXJyb3IYBiABKAkSEgoKc3RhcnRlZF9hdBgHIAEoCRIUCgxjb21wbGV0ZWRfYXQYCCABKAkSVAoFdG9kb3MYCSADKAsyRS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb25TdGF0dXMuVG9kb3NFbnRyeRIWCg5jYWxsYmFja190b2tlbhgKIAEoDBJYChByZXNvbHZlZF9jb250ZXh0GAwgASgLMj4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlJlc29sdmVkRXhlY3V0aW9uQ29udGV4dBJQChFwZW5kaW5nX2FwcHJvdmFscxgQIAMoCzI1LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5QZW5kaW5nQXBwcm92YWwSWAoVYXBwcm92YWxfZXZlbnRfc3RyZWFtGBYgASgLMjkuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsRXZlbnRTdHJlYW0SRwoMY29udGV4dF9pbmZvGA4gASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkNvbnRleHRJbmZvEkoKCWFydGlmYWN0cxgPIAMoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25BcnRpZmFjdBJXChV3b3Jrc3BhY2Vfd3JpdGVfYmFja3MYESADKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuV29ya3NwYWNlV3JpdGVCYWNrEksKDnNldHVwX3Byb2dyZXNzGBIgASgLMjMuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlNldHVwUHJvZ3Jlc3MSVAoPc3RyZWFtaW5nX3VzYWdlGBQgASgLMjsuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlN0cmVhbWluZ1VzYWdlU3VtbWFyeRIyChFzdHJ1Y3R1cmVkX291dHB1dBgVIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSTQoQZmlsZV9jaGFuZ2Vfc2V0cxgXIAMoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlQ2hhbmdlU2V0El0KGGZpbGVfcmV2aWV3X2V2ZW50X3N0cmVhbRgYIAEoCzI7LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlUmV2aWV3RXZlbnRTdHJlYW0SVgoUZmlsZV9jaGFuZ2VfcHJvZ3Jlc3MYGSABKAsyOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZUNoYW5nZVByb2dyZXNzGlwKClRvZG9zRW50cnkSCwoDa2V5GAEgASgJEj0KBXZhbHVlGAIgASgLMi4uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRvZG9JdGVtOgI4ASImCg1TZXR1cFByb2dyZXNzEhUKDWN1cnJlbnRfcGhhc2UYASABKAliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_approval,file_ai_stigmer_agentic_agentexecution_v1_artifact,file_ai_stigmer_agentic_agentexecution_v1_context,file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_filereview,file_ai_stigmer_agentic_agentexecution_v1_message,file_ai_stigmer_agentic_agentexecution_v1_spec,file_ai_stigmer_agentic_agentexecution_v1_subagent,file_ai_stigmer_agentic_agentexecution_v1_todo,file_ai_stigmer_agentic_agentexecution_v1_usage,file_ai_stigmer_agentic_agentexecution_v1_writeback,file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_struct]),AgentExecutionSchema=messageDesc2(file_ai_stigmer_agentic_agentexecution_v1_api,0);var file_ai_stigmer_agentic_agentexecution_v1_io=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvaW8ucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MSIpChBBZ2VudEV4ZWN1dGlvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiIgoJU2Vzc2lvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEicAoSQWdlbnRFeGVjdXRpb25MaXN0EhMKC3RvdGFsX3BhZ2VzGAEgASgFEkUKB2VudHJpZXMYAiADKAsyNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iowEKGkxpc3RBZ2VudEV4ZWN1dGlvbnNSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJEkMKBXBoYXNlGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblBoYXNlEgwKBHRhZ3MYBCADKAkSCwoDb3JnGAUgASgJImgKI0xpc3RBZ2VudEV4ZWN1dGlvbnNCeVNlc3Npb25SZXF1ZXN0EhoKCnNlc3Npb25faWQYASABKAlCBrpIA8gBARIRCglwYWdlX3NpemUYAiABKAUSEgoKcGFnZV90b2tlbhgDIAEoCSKUAQofQWdlbnRFeGVjdXRpb25VcGRhdGVTdGF0dXNJbnB1dBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAESUgoGc3RhdHVzGAIgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uU3RhdHVzQga6SAPIAQEiewoUVXBkYXRlU3RhdHVzUmVzcG9uc2USTAoGc2lnbmFsGAEgASgOMjwuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvbkNvbnRyb2xTaWduYWwSFQoNc2lnbmFsX3JlYXNvbhgCIAEoCSK8AQoTU3VibWl0QXBwcm92YWxJbnB1dBIjChJhZ2VudF9leGVjdXRpb25faWQYASABKAlCB7pIBHICEAESHQoMdG9vbF9jYWxsX2lkGAIgASgJQge6SARyAhABElAKBmFjdGlvbhgDIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbEFjdGlvbkIKukgHggEEEAEgABIPCgdjb21tZW50GAQgASgJImQKFEFwcHJvdmFsRGVjaXNpb25MaXN0EkwKCWRlY2lzaW9ucxgBIAMoCzI5LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5TdWJtaXRBcHByb3ZhbElucHV0IvQCChdTdWJtaXRGaWxlRGVjaXNpb25JbnB1dBIjChJhZ2VudF9leGVjdXRpb25faWQYASABKAlCB7pIBHICEAESHgoNY2hhbmdlX3NldF9pZBgCIAEoCUIHukgEcgIQARJSCgVzY29wZRgDIAEoDjI3LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25TY29wZUIKukgHggEEEAEgABIWCg5maWxlX2NoYW5nZV9pZBgEIAEoCRJUCgZhY3Rpb24YBSABKA4yOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZURlY2lzaW9uQWN0aW9uQgq6SAeCAQQQASAAEiAKD2V4cGVjdGVkX2RpZ2VzdBgGIAEoCUIHukgEcgIQARIOCgZyZWFzb24YByABKAkSIAoYYWNrbm93bGVkZ2VfdW5yZXZpZXdhYmxlGAggASgIIkAKGUNhbmNlbEFnZW50RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAESDgoGcmVhc29uGAIgASgJIkMKHFRlcm1pbmF0ZUFnZW50RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAESDgoGcmVhc29uGAIgASgJIjEKGlJlY292ZXJBZ2VudEV4ZWN1dGlvbklucHV0EhMKAmlkGAEgASgJQge6SARyAhABIj8KGFBhdXNlQWdlbnRFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQARIOCgZyZWFzb24YAiABKAkiMAoZUmVzdW1lQWdlbnRFeGVjdXRpb25JbnB1dBITCgJpZBgBIAEoCUIHukgEcgIQASJjChdVcGxvYWRBdHRhY2htZW50UmVxdWVzdBIZCghmaWxlbmFtZRgBIAEoCUIHukgEcgIQARIXCgdjb250ZW50GAIgASgMQga6SAPIAQESFAoMY29udGVudF90eXBlGAMgASgJIi8KGFVwbG9hZEF0dGFjaG1lbnRSZXNwb25zZRITCgtzdG9yYWdlX2tleRgBIAEoCSJzCh1HZXRBcnRpZmFjdERvd25sb2FkVXJsUmVxdWVzdBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAESHAoLc3RvcmFnZV9rZXkYAiABKAlCB7pIBHICEAESFQoNYXNfYXR0YWNobWVudBgDIAEoCCJKCh5HZXRBcnRpZmFjdERvd25sb2FkVXJsUmVzcG9uc2USFAoMZG93bmxvYWRfdXJsGAEgASgJEhIKCmV4cGlyZXNfYXQYAiABKAkifwoZR2V0QXJ0aWZhY3RDb250ZW50UmVxdWVzdBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAESHAoLc3RvcmFnZV9rZXkYAiABKAlCB7pIBHICEAESEQoJbWF4X2J5dGVzGAMgASgDEhIKCmVudHJ5X3BhdGgYBCABKAkicAoaR2V0QXJ0aWZhY3RDb250ZW50UmVzcG9uc2USDwoHY29udGVudBgBIAEoDBIUCgxjb250ZW50X3R5cGUYAiABKAkSGAoQdG90YWxfc2l6ZV9ieXRlcxgDIAEoAxIRCgl0cnVuY2F0ZWQYBCABKAgiPQocR2V0RXhlY3V0aW9uVXNhZ2VSZXBvcnRJbnB1dBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAEiuQEKHUdldEV4ZWN1dGlvblVzYWdlUmVwb3J0T3V0cHV0Ek0KCWFnZ3JlZ2F0ZRgBIAEoCzI6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Vc2FnZVJlcG9ydEFnZ3JlZ2F0ZRJJCg9tb2RlbF9icmVha2Rvd24YAiADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuTW9kZWxVc2FnZSI5ChpHZXRTZXNzaW9uVXNhZ2VSZXBvcnRJbnB1dBIbCgpzZXNzaW9uX2lkGAEgASgJQge6SARyAhABIoQDChtHZXRTZXNzaW9uVXNhZ2VSZXBvcnRPdXRwdXQSEgoKc2Vzc2lvbl9pZBgBIAEoCRIXCg9leGVjdXRpb25fY291bnQYAiABKAUSTwoLdG90YWxfdXNhZ2UYAyABKAsyOi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXNhZ2VSZXBvcnRBZ2dyZWdhdGUSTwoKZXhlY3V0aW9ucxgEIAMoCzI7LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5FeGVjdXRpb25Vc2FnZVN1bW1hcnkSSQoPbW9kZWxfYnJlYWtkb3duGAUgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLk1vZGVsVXNhZ2USGgoSZmlyc3RfZXhlY3V0aW9uX2F0GAYgASgJEhkKEWxhc3RfZXhlY3V0aW9uX2F0GAcgASgJEhQKDGlzX2VzdGltYXRlZBgIIAEoCCKAAQoYR2V0QWdlbnRVc2FnZVJlcG9ydElucHV0EhkKCGFnZW50X2lkGAEgASgJQge6SARyAhABEhEKCWZyb21fZGF0ZRgCIAEoCRIPCgd0b19kYXRlGAMgASgJEhEKCXBhZ2Vfc2l6ZRgEIAEoBRISCgpwYWdlX3Rva2VuGAUgASgJIpkDChlHZXRBZ2VudFVzYWdlUmVwb3J0T3V0cHV0EhAKCGFnZW50X2lkGAEgASgJEhIKCmFnZW50X25hbWUYAiABKAkSTwoLdG90YWxfdXNhZ2UYAyABKAsyOi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXNhZ2VSZXBvcnRBZ2dyZWdhdGUSSQoPbW9kZWxfYnJlYWtkb3duGAQgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLk1vZGVsVXNhZ2USSwoIc2Vzc2lvbnMYBSADKAsyOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU2Vzc2lvblVzYWdlU3VtbWFyeRIWCg50b3RhbF9zZXNzaW9ucxgGIAEoBRIYChB0b3RhbF9leGVjdXRpb25zGAcgASgFEiIKGnRvdGFsX2JpbGxhYmxlX2Nvc3RfbWljcm9zGAggASgDEhcKD25leHRfcGFnZV90b2tlbhgJIAEoCSJnChZHZXRPcmdVc2FnZVJlcG9ydElucHV0EhcKBm9yZ19pZBgBIAEoCUIHukgEcgIQARIaCglmcm9tX2RhdGUYAiABKAlCB7pIBHICEAESGAoHdG9fZGF0ZRgDIAEoCUIHukgEcgIQASLVAwoXR2V0T3JnVXNhZ2VSZXBvcnRPdXRwdXQSDgoGb3JnX2lkGAEgASgJEhQKDHRvdGFsX2FnZW50cxgCIAEoBRIWCg50b3RhbF9zZXNzaW9ucxgDIAEoBRIYChB0b3RhbF9leGVjdXRpb25zGAQgASgFEiIKGnRvdGFsX2JpbGxhYmxlX2Nvc3RfbWljcm9zGAUgASgDEkkKD21vZGVsX2JyZWFrZG93bhgGIAMoCzIwLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5Nb2RlbFVzYWdlElMKEnRvcF9hZ2VudHNfYnlfY29zdBgHIAMoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudFVzYWdlU3VtbWFyeRJJCgtkYWlseV9jb3N0cxgIIAMoCzI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5EYWlseUNvc3RFbnRyeRJTChFoYXJuZXNzX2JyZWFrZG93bhgJIAMoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5IYXJuZXNzQ29zdFN1bW1hcnkizgIKFUV4ZWN1dGlvblVzYWdlU3VtbWFyeRIUCgxleGVjdXRpb25faWQYASABKAkSEgoKc3RhcnRlZF9hdBgCIAEoCRIUCgxjb21wbGV0ZWRfYXQYAyABKAkSFAoMaW5wdXRfdG9rZW5zGAQgASgDEhUKDW91dHB1dF90b2tlbnMYBSABKAMSHwoXY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMYBiABKAMSHAoUYmlsbGFibGVfY29zdF9taWNyb3MYByABKAMSFQoNcHJpbWFyeV9tb2RlbBgIIAEoCRIXCg9zdWJfYWdlbnRfY291bnQYCSABKAUSQwoFcGhhc2UYCiABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRXhlY3V0aW9uUGhhc2USFAoMaXNfZXN0aW1hdGVkGAsgASgIIq0BChNTZXNzaW9uVXNhZ2VTdW1tYXJ5EhIKCnNlc3Npb25faWQYASABKAkSFwoPZXhlY3V0aW9uX2NvdW50GAIgASgFEhQKDHRvdGFsX3Rva2VucxgDIAEoAxIcChRiaWxsYWJsZV9jb3N0X21pY3JvcxgEIAEoAxIaChJmaXJzdF9leGVjdXRpb25fYXQYBSABKAkSGQoRbGFzdF9leGVjdXRpb25fYXQYBiABKAkihgEKEUFnZW50VXNhZ2VTdW1tYXJ5EhAKCGFnZW50X2lkGAEgASgJEhIKCmFnZW50X25hbWUYAiABKAkSFwoPZXhlY3V0aW9uX2NvdW50GAMgASgFEhQKDHRvdGFsX3Rva2VucxgEIAEoAxIcChRiaWxsYWJsZV9jb3N0X21pY3JvcxgFIAEoAyJrCg5EYWlseUNvc3RFbnRyeRIMCgRkYXRlGAEgASgJEhcKD2V4ZWN1dGlvbl9jb3VudBgCIAEoBRIUCgx0b3RhbF90b2tlbnMYAyABKAMSHAoUYmlsbGFibGVfY29zdF9taWNyb3MYBCABKAMicAoSSGFybmVzc0Nvc3RTdW1tYXJ5Eg8KB2hhcm5lc3MYASABKAkSHAoUYmlsbGFibGVfY29zdF9taWNyb3MYAiABKAMSEgoKY2FsbF9jb3VudBgDIAEoBRIXCg9leGVjdXRpb25fY291bnQYBCABKAUikwEKH0dldEFnZW50RXhlY3V0aW9uU3VtbWFyeVJlcXVlc3QSFAoDb3JnGAEgASgJQge6SARyAhABEloKC3RpbWVfd2luZG93GAIgASgOMkUuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uU3VtbWFyeVRpbWVXaW5kb3ciygIKFUFnZW50RXhlY3V0aW9uU3VtbWFyeRIUCgxhY3RpdmVfY291bnQYASABKAUSYgoMcGhhc2VfY291bnRzGAIgAygLMkwuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uU3VtbWFyeS5QaGFzZUNvdW50c0VudHJ5Ei8KDGF2Z19kdXJhdGlvbhgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhJSChJ0b3BfZmFpbGluZ19hZ2VudHMYBCADKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRGYWlsdXJlUmFuaxoyChBQaGFzZUNvdW50c0VudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiUQoQQWdlbnRGYWlsdXJlUmFuaxISCgphZ2VudF9zbHVnGAEgASgJEhIKCmFnZW50X25hbWUYAiABKAkSFQoNZmFpbHVyZV9jb3VudBgDIAEoBSqdAgofQWdlbnRFeGVjdXRpb25TdW1tYXJ5VGltZVdpbmRvdxIzCi9BR0VOVF9FWEVDVVRJT05fU1VNTUFSWV9USU1FX1dJTkRPV19VTlNQRUNJRklFRBAAEjAKLEFHRU5UX0VYRUNVVElPTl9TVU1NQVJZX1RJTUVfV0lORE9XX0xBU1RfMjRIEAESLworQUdFTlRfRVhFQ1VUSU9OX1NVTU1BUllfVElNRV9XSU5ET1dfTEFTVF83RBACEjAKLEFHRU5UX0VYRUNVVElPTl9TVU1NQVJZX1RJTUVfV0lORE9XX0xBU1RfMzBEEAMSMAosQUdFTlRfRVhFQ1VUSU9OX1NVTU1BUllfVElNRV9XSU5ET1dfQUxMX1RJTUUQBGIGcHJvdG8z",[file_ai_stigmer_agentic_agentexecution_v1_api,file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_agentexecution_v1_usage,file_buf_validate_validate,file_google_protobuf_duration]);var AgentExecutionSummaryTimeWindow;(function(AgentExecutionSummaryTimeWindow2){AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.UNSPECIFIED=0]="UNSPECIFIED",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.LAST_24H=1]="LAST_24H",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.LAST_7D=2]="LAST_7D",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.LAST_30D=3]="LAST_30D",AgentExecutionSummaryTimeWindow2[AgentExecutionSummaryTimeWindow2.ALL_TIME=4]="ALL_TIME"})(AgentExecutionSummaryTimeWindow||(AgentExecutionSummaryTimeWindow={}));var file_ai_stigmer_agentic_agentexecution_v1_command=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvY29tbWFuZC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxMtMRCh9BZ2VudEV4ZWN1dGlvbkNvbW1hbmRDb250cm9sbGVyEnoKBmNyZWF0ZRI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbho0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiIE0LgYARKzAQoGdXBkYXRlEjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uGjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uIj3CuBg5CAIQKSILbWV0YWRhdGEuaWQqJnVuYXV0aG9yaXplZCB0byB1cGRhdGUgYWdlbnQgZXhlY3V0aW9uEtgBCgx1cGRhdGVTdGF0dXMSRS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb25VcGRhdGVTdGF0dXNJbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5VcGRhdGVTdGF0dXNSZXNwb25zZSJFwrgYQQgCECkiDGV4ZWN1dGlvbl9pZCotdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBhZ2VudCBleGVjdXRpb24gc3RhdHVzEqYBCgZkZWxldGUSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBo0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiI3wrgYMwgCECkiBXZhbHVlKiZ1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIGFnZW50IGV4ZWN1dGlvbhLUAQoOc3VibWl0QXBwcm92YWwSOS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VibWl0QXBwcm92YWxJbnB1dBo0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiJRwrgYTQgCECkiEmFnZW50X2V4ZWN1dGlvbl9pZCozdW5hdXRob3JpemVkIHRvIHN1Ym1pdCBhcHByb3ZhbCBmb3IgYWdlbnQgZXhlY3V0aW9uEuEBChJzdWJtaXRGaWxlRGVjaXNpb24SPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuU3VibWl0RmlsZURlY2lzaW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iVsK4GFIIAhApIhJhZ2VudF9leGVjdXRpb25faWQqOHVuYXV0aG9yaXplZCB0byBzdWJtaXQgZmlsZSBkZWNpc2lvbiBmb3IgYWdlbnQgZXhlY3V0aW9uErUBCgZjYW5jZWwSPy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ2FuY2VsQWdlbnRFeGVjdXRpb25JbnB1dBo0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbiI0wrgYMAgCECkiAmlkKiZ1bmF1dGhvcml6ZWQgdG8gY2FuY2VsIGFnZW50IGV4ZWN1dGlvbhK+AQoJdGVybWluYXRlEkIuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlRlcm1pbmF0ZUFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iN8K4GDMIAhApIgJpZCopdW5hdXRob3JpemVkIHRvIHRlcm1pbmF0ZSBhZ2VudCBleGVjdXRpb24SuAEKB3JlY292ZXISQC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUmVjb3ZlckFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iNcK4GDEIAhApIgJpZCondW5hdXRob3JpemVkIHRvIHJlY292ZXIgYWdlbnQgZXhlY3V0aW9uErIBCgVwYXVzZRI+LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5QYXVzZUFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iM8K4GC8IAhApIgJpZColdW5hdXRob3JpemVkIHRvIHBhdXNlIGFnZW50IGV4ZWN1dGlvbhK1AQoGcmVzdW1lEj8uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLlJlc3VtZUFnZW50RXhlY3V0aW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQWdlbnRFeGVjdXRpb24iNMK4GDAIAhApIgJpZComdW5hdXRob3JpemVkIHRvIHJlc3VtZSBhZ2VudCBleGVjdXRpb24SlwEKEHVwbG9hZEF0dGFjaG1lbnQSPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXBsb2FkQXR0YWNobWVudFJlcXVlc3QaPi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuVXBsb2FkQXR0YWNobWVudFJlc3BvbnNlIgTQuBgBGgSg/yspYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_api,file_ai_stigmer_agentic_agentexecution_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentExecutionCommandController=serviceDesc(file_ai_stigmer_agentic_agentexecution_v1_command,0);var file_ai_stigmer_agentic_agentexecution_v1_query=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvYWdlbnRleGVjdXRpb24vdjEvcXVlcnkucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MTL6EAodQWdlbnRFeGVjdXRpb25RdWVyeUNvbnRyb2xsZXISqQEKA2dldBI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbklkGjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uIjTCuBgwCAEQKSIFdmFsdWUqI3VuYXV0aG9yaXplZCB0byBnZXQgYWdlbnQgZXhlY3V0aW9uEogBCgRsaXN0EkAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkxpc3RBZ2VudEV4ZWN1dGlvbnNSZXF1ZXN0GjguYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uTGlzdCIE0LgYARKaAQoNbGlzdEJ5U2Vzc2lvbhJJLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5MaXN0QWdlbnRFeGVjdXRpb25zQnlTZXNzaW9uUmVxdWVzdBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbkxpc3QiBNC4GAESugEKCXN1YnNjcmliZRI2LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvbklkGjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFnZW50RXhlY3V0aW9uIj3CuBg5CAEQKSIFdmFsdWUqLHVuYXV0aG9yaXplZCB0byBzdWJzY3JpYmUgdG8gYWdlbnQgZXhlY3V0aW9uMAES8wEKFmdldEFydGlmYWN0RG93bmxvYWRVcmwSQy5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QXJ0aWZhY3REb3dubG9hZFVybFJlcXVlc3QaRC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QXJ0aWZhY3REb3dubG9hZFVybFJlc3BvbnNlIk7CuBhKCAEQKSIMZXhlY3V0aW9uX2lkKjZ1bmF1dGhvcml6ZWQgdG8gZG93bmxvYWQgYXJ0aWZhY3QgZnJvbSBhZ2VudCBleGVjdXRpb24S6wEKEmdldEFydGlmYWN0Q29udGVudBI/LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5HZXRBcnRpZmFjdENvbnRlbnRSZXF1ZXN0GkAuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldEFydGlmYWN0Q29udGVudFJlc3BvbnNlIlLCuBhOCAEQKSIMZXhlY3V0aW9uX2lkKjp1bmF1dGhvcml6ZWQgdG8gcmVhZCBhcnRpZmFjdCBjb250ZW50IGZyb20gYWdlbnQgZXhlY3V0aW9uEucBChdnZXRFeGVjdXRpb25Vc2FnZVJlcG9ydBJCLmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5HZXRFeGVjdXRpb25Vc2FnZVJlcG9ydElucHV0GkMuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldEV4ZWN1dGlvblVzYWdlUmVwb3J0T3V0cHV0IkPCuBg/CAEQKSIMZXhlY3V0aW9uX2lkKit1bmF1dGhvcml6ZWQgdG8gdmlldyBleGVjdXRpb24gdXNhZ2UgcmVwb3J0Et0BChVnZXRTZXNzaW9uVXNhZ2VSZXBvcnQSQC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0U2Vzc2lvblVzYWdlUmVwb3J0SW5wdXQaQS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0U2Vzc2lvblVzYWdlUmVwb3J0T3V0cHV0Ij/CuBg7CAEQKiIKc2Vzc2lvbl9pZCopdW5hdXRob3JpemVkIHRvIHZpZXcgc2Vzc2lvbiB1c2FnZSByZXBvcnQSnAEKE2dldEFnZW50VXNhZ2VSZXBvcnQSPi5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QWdlbnRVc2FnZVJlcG9ydElucHV0Gj8uYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldEFnZW50VXNhZ2VSZXBvcnRPdXRwdXQiBNC4GAES0gEKEWdldE9yZ1VzYWdlUmVwb3J0EjwuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkdldE9yZ1VzYWdlUmVwb3J0SW5wdXQaPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0T3JnVXNhZ2VSZXBvcnRPdXRwdXQiQMK4GDwIARAeIgZvcmdfaWQqLnVuYXV0aG9yaXplZCB0byB2aWV3IG9yZ2FuaXphdGlvbiB1c2FnZSByZXBvcnQSnwEKE2dldEV4ZWN1dGlvblN1bW1hcnkSRS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuR2V0QWdlbnRFeGVjdXRpb25TdW1tYXJ5UmVxdWVzdBo7LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BZ2VudEV4ZWN1dGlvblN1bW1hcnkiBNC4GAEaBKD/KyliBnByb3RvMw",[file_ai_stigmer_agentic_agentexecution_v1_api,file_ai_stigmer_agentic_agentexecution_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),AgentExecutionQueryController=serviceDesc(file_ai_stigmer_agentic_agentexecution_v1_query,0);var file_ai_stigmer_iam_iampolicy_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2lhbS9pYW1wb2xpY3kvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5pYW0uaWFtcG9saWN5LnYxIr4BCg1JYW1Qb2xpY3lTcGVjEkYKCXByaW5jaXBhbBgBIAEoCzIrLmFpLnN0aWdtZXIuaWFtLmlhbXBvbGljeS52MS5BcGlSZXNvdXJjZVJlZkIGukgDyAEBEkUKCHJlc291cmNlGAIgASgLMisuYWkuc3RpZ21lci5pYW0uaWFtcG9saWN5LnYxLkFwaVJlc291cmNlUmVmQga6SAPIAQESHgoIcmVsYXRpb24YAyABKAlCDLpICcgBAXIEEAEYQCJkCg5BcGlSZXNvdXJjZVJlZhIbCgRraW5kGAEgASgJQg26SArIAQFyBRABGIACEhkKAmlkGAIgASgJQg26SArIAQFyBRABGIACEhoKCHJlbGF0aW9uGAMgASgJQgi6SAVyAxiAAmIGcHJvdG8z",[file_buf_validate_validate]);var ApiResourceRefSchema=messageDesc2(file_ai_stigmer_iam_iampolicy_v1_spec,1);var file_ai_stigmer_agentic_datastore_v1_spec=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3NwZWMucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEi5gEKDURhdGFzdG9yZVNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSGQoIdGltZXpvbmUYAiABKAlCB7pIBHICGEASTgoNYXV0aG9yaXphdGlvbhgDIAEoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRGF0YXN0b3JlQXV0aG9yaXphdGlvbhJVCgtjb2xsZWN0aW9ucxgEIAMoCzI2LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuQ29sbGVjdGlvbkRlY2xhcmF0aW9uQgi6SAWSAQIQMiK/BAoVQ29sbGVjdGlvbkRlY2xhcmF0aW9uEisKBG5hbWUYASABKAlCHbpIGsgBAXIVGD8yEV5bYS16XVthLXowLTlfXSokEhMKC2Rlc2NyaXB0aW9uGAIgASgJEk0KBmZpZWxkcxgDIAMoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRmllbGREZWNsYXJhdGlvbkIKukgHkgEECAEQZBJMCgd1bmlxdWVzGAQgAygLMjEuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5VbmlxdWVDb25zdHJhaW50Qgi6SAWSAQIQFBJKCgZjaGVja3MYBSADKAsyMC5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNoZWNrQ29uc3RyYWludEIIukgFkgECEBQSSwoGZXhpc3RzGAYgAygLMjEuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5FeGlzdHNDb25zdHJhaW50Qgi6SAWSAQIQFBJPCgpub3RfZXhpc3RzGAcgAygLMjEuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5FeGlzdHNDb25zdHJhaW50Qgi6SAWSAQIQFBJJCgZncmFudHMYCCADKAsyLy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZUdyYW50Qgi6SAWSAQIQFEoECAkQClIMc2VlZF9yZWNvcmRzItcEChBGaWVsZERlY2xhcmF0aW9uEoACCgRuYW1lGAEgASgJQvEBukjtAboBzwEKE2ZpZWxkLm5hbWUucmVzZXJ2ZWQSZ2ZpZWxkIG5hbWUgaXMgcmVzZXJ2ZWQgZm9yIHRoZSByZWNvcmQgZW52ZWxvcGUgKGlkLCBjcmVhdGVkX2F0LCB1cGRhdGVkX2F0LCBjcmVhdGVkX2J5LCBvcmcsIHBhcnRpdGlvbikaTyEodGhpcyBpbiBbJ2lkJywgJ2NyZWF0ZWRfYXQnLCAndXBkYXRlZF9hdCcsICdjcmVhdGVkX2J5JywgJ29yZycsICdwYXJ0aXRpb24nXSnIAQFyFRg/MhFeW2Etel1bYS16MC05X10qJBJFCgR0eXBlGAIgASgOMiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5GaWVsZFR5cGVCC7pICMgBAYIBAhABEhAKCHJlcXVpcmVkGAMgASgIEicKB2RlZmF1bHQYBCABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSHQoLZW51bV92YWx1ZXMYBSADKAlCCLpIBZIBAhBkEhMKC2Rlc2NyaXB0aW9uGAYgASgJOokBukiFARqCAQodZmllbGQuZW51bV92YWx1ZXMuc3RyaW5nX29ubHkSMWVudW1fdmFsdWVzIG1heSBvbmx5IGJlIGRlY2xhcmVkIG9uIHN0cmluZyBmaWVsZHMaLnRoaXMuZW51bV92YWx1ZXMuc2l6ZSgpID09IDAgfHwgdGhpcy50eXBlID09IDEirwEKEFVuaXF1ZUNvbnN0cmFpbnQSKwoEbmFtZRgBIAEoCUIdukgayAEBchUYPzIRXlthLXpdW2EtejAtOV9dKiQSGAoGZmllbGRzGAIgAygJQgi6SAWSAQIIARI7CgV3aGVyZRgDIAEoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuVW5pcXVlV2hlcmUSFwoHbWVzc2FnZRgEIAEoCUIGukgDyAEBIlQKC1VuaXF1ZVdoZXJlEhUKBWZpZWxkGAEgASgJQga6SAPIAQESLgoGZXF1YWxzGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlQga6SAPIAQEigQEKD0NoZWNrQ29uc3RyYWludBIrCgRuYW1lGAEgASgJQh26SBrIAQFyFRg/MhFeW2Etel1bYS16MC05X10qJBIaCgpleHByZXNzaW9uGAIgASgJQga6SAPIAQESDAoEd2hlbhgDIAEoCRIXCgdtZXNzYWdlGAQgASgJQga6SAPIAQEimQEKEEV4aXN0c0NvbnN0cmFpbnQSKwoEbmFtZRgBIAEoCUIdukgayAEBchUYPzIRXlthLXpdW2EtejAtOV9dKiQSGgoKY29sbGVjdGlvbhgCIAEoCUIGukgDyAEBEhUKBXdoZXJlGAMgASgJQga6SAPIAQESDAoEd2hlbhgEIAEoCRIXCgdtZXNzYWdlGAUgASgJQga6SAPIAQEiywEKFkRhdGFzdG9yZUF1dGhvcml6YXRpb24SRwoFcm9sZXMYASADKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVJvbGVCCLpIBZIBAhAUElIKCGJpbmRpbmdzGAIgAygLMjUuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVSb2xlQmluZGluZ0IJukgGkgEDEMgBEhQKDGRlZmF1bHRfcm9sZRgDIAEoCSI8Cg1EYXRhc3RvcmVSb2xlEisKBG5hbWUYASABKAlCHbpIGsgBAXIVGD8yEV5bYS16XVthLXowLTlfXSokIngKFERhdGFzdG9yZVJvbGVCaW5kaW5nEkoKB3N1YmplY3QYASABKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVN1YmplY3RCBrpIA8gBARIUCgRyb2xlGAIgASgJQga6SAPIAQEitAEKEERhdGFzdG9yZVN1YmplY3QSTwoOY2hhbm5lbF9zZW5kZXIYASABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNoYW5uZWxTZW5kZXJTdWJqZWN0SAASQAoJcHJpbmNpcGFsGAIgASgLMisuYWkuc3RpZ21lci5pYW0uaWFtcG9saWN5LnYxLkFwaVJlc291cmNlUmVmSABCDQoEa2luZBIFukgCCAEiSgoUQ2hhbm5lbFNlbmRlclN1YmplY3QSGwoLc2VuZGVyX2tpbmQYASABKAlCBrpIA8gBARIVCgV2YWx1ZRgCIAEoCUIGukgDyAEBIv8BCg5EYXRhc3RvcmVHcmFudBIUCgRyb2xlGAEgASgJQga6SAPIAQESUAoFdmVyYnMYAiADKA4yLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVZlcmJCEbpIDpIBCwgBIgeCAQQQASAAEk0KBXNjb3BlGAMgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVHcmFudFNjb3BlQgi6SAWCAQIQARI2CgtyZWFkX2ZpZWxkcxgEIAMoCUIhukgekgEbEGQiF3IVGD8yEV5bYS16XVthLXowLTlfXSokKoMBCglGaWVsZFR5cGUSGgoWZmllbGRfdHlwZV91bnNwZWNpZmllZBAAEgoKBnN0cmluZxABEgsKB2ludGVnZXIQAhIKCgZudW1iZXIQAxIICgRib29sEAQSDQoJdGltZXN0YW1wEAUSCAoEZGF0ZRAGEggKBHRpbWUQBxIICgRqc29uEAgqXQoNRGF0YXN0b3JlVmVyYhIeChpkYXRhc3RvcmVfdmVyYl91bnNwZWNpZmllZBAAEggKBHJlYWQQARIKCgZpbnNlcnQQAhIKCgZ1cGRhdGUQAxIKCgZkZWxldGUQBCpOChNEYXRhc3RvcmVHcmFudFNjb3BlEiUKIWRhdGFzdG9yZV9ncmFudF9zY29wZV91bnNwZWNpZmllZBAAEgcKA2FsbBABEgcKA293bhACYgZwcm90bzM",[file_ai_stigmer_iam_iampolicy_v1_spec,file_buf_validate_validate,file_google_protobuf_struct]),DatastoreSpecSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,0),CollectionDeclarationSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,1),FieldDeclarationSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,2),UniqueConstraintSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,3),UniqueWhereSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,4),CheckConstraintSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,5),ExistsConstraintSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,6),DatastoreAuthorizationSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,7),DatastoreRoleSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,8),DatastoreRoleBindingSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,9),DatastoreSubjectSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,10),ChannelSenderSubjectSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,11),DatastoreGrantSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_spec,12),FieldType;(function(FieldType2){FieldType2[FieldType2.field_type_unspecified=0]="field_type_unspecified",FieldType2[FieldType2.string=1]="string",FieldType2[FieldType2.integer=2]="integer",FieldType2[FieldType2.number=3]="number",FieldType2[FieldType2.bool=4]="bool",FieldType2[FieldType2.timestamp=5]="timestamp",FieldType2[FieldType2.date=6]="date",FieldType2[FieldType2.time=7]="time",FieldType2[FieldType2.json=8]="json"})(FieldType||(FieldType={}));var DatastoreVerb;(function(DatastoreVerb2){DatastoreVerb2[DatastoreVerb2.datastore_verb_unspecified=0]="datastore_verb_unspecified",DatastoreVerb2[DatastoreVerb2.read=1]="read",DatastoreVerb2[DatastoreVerb2.insert=2]="insert",DatastoreVerb2[DatastoreVerb2.update=3]="update",DatastoreVerb2[DatastoreVerb2.delete=4]="delete"})(DatastoreVerb||(DatastoreVerb={}));var DatastoreGrantScope;(function(DatastoreGrantScope2){DatastoreGrantScope2[DatastoreGrantScope2.datastore_grant_scope_unspecified=0]="datastore_grant_scope_unspecified",DatastoreGrantScope2[DatastoreGrantScope2.all=1]="all",DatastoreGrantScope2[DatastoreGrantScope2.own=2]="own"})(DatastoreGrantScope||(DatastoreGrantScope={}));var file_ai_stigmer_agentic_datastore_v1_status=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3N0YXR1cy5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MSKgAgoPRGF0YXN0b3JlU3RhdHVzElAKEWxhc3Rfc3luY19vdXRjb21lGAEgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVTeW5jT3V0Y29tZRIyCg5sYXN0X3N5bmNlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRgoLY29sbGVjdGlvbnMYAyADKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbGxlY3Rpb25TdGF0dXMSPwoFYXVkaXQYYyABKAsyMC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VBdWRpdCLVAQoQQ29sbGVjdGlvblN0YXR1cxIMCgRuYW1lGAEgASgJEk4KBXN0YXRlGAIgASgOMj8uYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5Db2xsZWN0aW9uTWF0ZXJpYWxpemF0aW9uU3RhdGUSFAoMcmVjb3JkX2NvdW50GAMgASgDEjMKD21hdGVyaWFsaXplZF9hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBKBAgEEAVSEmlnbm9yZWRfc2VlZF9jb3VudCpYChREYXRhc3RvcmVTeW5jT3V0Y29tZRImCiJkYXRhc3RvcmVfc3luY19vdXRjb21lX3Vuc3BlY2lmaWVkEAASCgoGc3luY2VkEAESDAoIcmVqZWN0ZWQQAip4Ch5Db2xsZWN0aW9uTWF0ZXJpYWxpemF0aW9uU3RhdGUSMAosY29sbGVjdGlvbl9tYXRlcmlhbGl6YXRpb25fc3RhdGVfdW5zcGVjaWZpZWQQABILCgdwZW5kaW5nEAESCgoGYWN0aXZlEAISCwoHcmVtb3ZlZBADYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_status,file_google_protobuf_timestamp]);var DatastoreSyncOutcome;(function(DatastoreSyncOutcome2){DatastoreSyncOutcome2[DatastoreSyncOutcome2.datastore_sync_outcome_unspecified=0]="datastore_sync_outcome_unspecified",DatastoreSyncOutcome2[DatastoreSyncOutcome2.synced=1]="synced",DatastoreSyncOutcome2[DatastoreSyncOutcome2.rejected=2]="rejected"})(DatastoreSyncOutcome||(DatastoreSyncOutcome={}));var CollectionMaterializationState;(function(CollectionMaterializationState2){CollectionMaterializationState2[CollectionMaterializationState2.collection_materialization_state_unspecified=0]="collection_materialization_state_unspecified",CollectionMaterializationState2[CollectionMaterializationState2.pending=1]="pending",CollectionMaterializationState2[CollectionMaterializationState2.active=2]="active",CollectionMaterializationState2[CollectionMaterializationState2.removed=3]="removed"})(CollectionMaterializationState||(CollectionMaterializationState={}));var file_ai_stigmer_agentic_datastore_v1_api=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL2FwaS5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MSKtAgoJRGF0YXN0b3JlEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh4KBGtpbmQYAiABKAlCELpIDXILCglEYXRhc3RvcmUSTQoIbWV0YWRhdGEYAyABKAsyMy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YUIGukgDyAEBEjwKBHNwZWMYBCABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVNwZWMSQAoGc3RhdHVzGAUgASgLMjAuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmVTdGF0dXNiBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_spec,file_ai_stigmer_agentic_datastore_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),DatastoreSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_api,0);var file_ai_stigmer_agentic_datastore_v1_command=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL2NvbW1hbmQucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEytQYKGkRhdGFzdG9yZUNvbW1hbmRDb250cm9sbGVyEl8KBWFwcGx5EiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZRKvAQoGY3JlYXRlEiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZSJNwrgYSQgiEB4iDG1ldGFkYXRhLm9yZyo1dW5hdXRob3JpemVkIHRvIGNyZWF0ZSBkYXRhc3RvcmUgaW4gdGhpcyBvcmdhbml6YXRpb24SmQEKBnVwZGF0ZRIqLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRGF0YXN0b3JlGiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUiN8K4GDMIAhAxIgttZXRhZGF0YS5pZCogdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBkYXRhc3RvcmUSuQEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUiQsK4GD4IAhAxIgtyZXNvdXJjZV9pZCordW5hdXRob3JpemVkIHRvIHVwZGF0ZSBkYXRhc3RvcmUgdmlzaWJpbGl0eRKlAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZSI3wrgYMwgCEDEiC3Jlc291cmNlX2lkKiB1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIGRhdGFzdG9yZRoEoP8rMWIGcHJvdG8z",[file_ai_stigmer_agentic_datastore_v1_api,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreCommandController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_command,0);var file_ai_stigmer_agentic_datastore_v1_io=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL2lvLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxIuUBChVMaXN0RGF0YXN0b3Jlc1JlcXVlc3QSFAoDb3JnGAEgASgJQge6SARyAhABElIKBmxhYmVscxgCIAMoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuTGlzdERhdGFzdG9yZXNSZXF1ZXN0LkxhYmVsc0VudHJ5EjMKCXBhZ2VfaW5mbxgDIAEoCzIgLmFpLnN0aWdtZXIuY29tbW9ucy5ycGMuUGFnZUluZm8aLQoLTGFiZWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJfCg1EYXRhc3RvcmVMaXN0EhMKC3RvdGFsX2NvdW50GAEgASgFEjkKBWl0ZW1zGAIgAygLMiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmViBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_api,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]);var file_ai_stigmer_agentic_datastore_v1_query=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3F1ZXJ5LnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxMqMDChhEYXRhc3RvcmVRdWVyeUNvbnRyb2xsZXISkAEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiouYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EYXRhc3RvcmUiLsK4GCoIARAxIgV2YWx1ZSoddW5hdXRob3JpemVkIHRvIGdldCBkYXRhc3RvcmUSeAoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaKi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZSIE0LgYARJ0CgRsaXN0EjYuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5MaXN0RGF0YXN0b3Jlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZUxpc3QiBNC4GAEaBKD/KzFiBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_api,file_ai_stigmer_agentic_datastore_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreQueryController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_query,0);var file_ai_stigmer_agentic_datastore_v1_record_io=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3JlY29yZF9pby5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MSLsAQoOUmVjb3JkRW52ZWxvcGUSCgoCaWQYASABKAkSLgoKY3JlYXRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASRQoKY3JlYXRlZF9ieRgEIAEoCzIxLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuRGF0YXN0b3JlU3ViamVjdBInCgZmaWVsZHMYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0InwKClJlY29yZExpc3QSQAoHcmVjb3JkcxgBIAMoCzIvLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkRW52ZWxvcGUSDQoFdG90YWwYAiABKAUSDQoFbGltaXQYAyABKAUSDgoGb2Zmc2V0GAQgASgFIl4KDFJlY29yZEZpbHRlchJOCgpjb25kaXRpb25zGAEgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5SZWNvcmRDb25kaXRpb25CCLpIBZIBAhAUIs4BCg9SZWNvcmRDb25kaXRpb24SFQoFZmllbGQYASABKAlCBrpIA8gBARJLCgJvcBgCIAEoDjIyLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkQ29uZGl0aW9uT3BCC7pICMgBAYIBAhABEiUKBXZhbHVlGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjAKBnZhbHVlcxgEIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUIIukgFkgECEGQieQoNUmVjb3JkT3JkZXJCeRIVCgVmaWVsZBgBIAEoCUIGukgDyAEBElEKCWRpcmVjdGlvbhgCIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkU29ydERpcmVjdGlvbkIIukgFggECEAEizwIKEkZpbmRSZWNvcmRzUmVxdWVzdBIZCglkYXRhc3RvcmUYASABKAlCBrpIA8gBARIaCgpjb2xsZWN0aW9uGAIgASgJQga6SAPIAQESPQoGZmlsdGVyGAMgASgLMi0uYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5SZWNvcmRGaWx0ZXISQAoIb3JkZXJfYnkYBCABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlJlY29yZE9yZGVyQnkSGAoFbGltaXQYBSABKAVCCbpIBhoEGGQoABIXCgZvZmZzZXQYBiABKAVCB7pIBBoCKAASOAoJcGFydGl0aW9uGAcgASgJQiW6SCJyIBg/MhxeJHxeW2Etel1bYS16MC05LV0qW2EtejAtOV0kEhQKA29yZxgIIAEoCUIHukgEcgIYPyLNAQoTSW5zZXJ0UmVjb3JkUmVxdWVzdBIZCglkYXRhc3RvcmUYASABKAlCBrpIA8gBARIaCgpjb2xsZWN0aW9uGAIgASgJQga6SAPIAQESLwoGcmVjb3JkGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIGukgDyAEBEjgKCXBhcnRpdGlvbhgEIAEoCUIlukgiciAYPzIcXiR8XlthLXpdW2EtejAtOS1dKlthLXowLTldJBIUCgNvcmcYBSABKAlCB7pIBHICGD8i4QEKE1VwZGF0ZVJlY29yZFJlcXVlc3QSGQoJZGF0YXN0b3JlGAEgASgJQga6SAPIAQESGgoKY29sbGVjdGlvbhgCIAEoCUIGukgDyAEBEhIKAmlkGAMgASgJQga6SAPIAQESLwoGZmllbGRzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEIGukgDyAEBEjgKCXBhcnRpdGlvbhgFIAEoCUIlukgiciAYPzIcXiR8XlthLXpdW2EtejAtOS1dKlthLXowLTldJBIUCgNvcmcYBiABKAlCB7pIBHICGD8isAEKE0RlbGV0ZVJlY29yZFJlcXVlc3QSGQoJZGF0YXN0b3JlGAEgASgJQga6SAPIAQESGgoKY29sbGVjdGlvbhgCIAEoCUIGukgDyAEBEhIKAmlkGAMgASgJQga6SAPIAQESOAoJcGFydGl0aW9uGAQgASgJQiW6SCJyIBg/MhxeJHxeW2Etel1bYS16MC05LV0qW2EtejAtOV0kEhQKA29yZxgFIAEoCUIHukgEcgIYPyJLChhEZXNjcmliZURhdGFzdG9yZVJlcXVlc3QSGQoJZGF0YXN0b3JlGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhg/IrEBChREYXRhc3RvcmVEZXNjcmlwdGlvbhIRCglkYXRhc3RvcmUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEAoIdGltZXpvbmUYAyABKAkSSwoLY29sbGVjdGlvbnMYBCADKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbGxlY3Rpb25EZXNjcmlwdGlvbhISCgpwYXJ0aXRpb25zGAUgAygJIpECChVDb2xsZWN0aW9uRGVzY3JpcHRpb24SDAoEbmFtZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCRJBCgZmaWVsZHMYAyADKAsyMS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkZpZWxkRGVjbGFyYXRpb24SSwoLY29uc3RyYWludHMYBCADKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbnN0cmFpbnREZXNjcmlwdGlvbhJFCgZhY2Nlc3MYBSADKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlZlcmJHcmFudERlc2NyaXB0aW9uInUKFUNvbnN0cmFpbnREZXNjcmlwdGlvbhIMCgRuYW1lGAEgASgJEj0KBGtpbmQYAiABKA4yLy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkNvbnN0cmFpbnRLaW5kEg8KB21lc3NhZ2UYAyABKAkigAEKFFZlcmJHcmFudERlc2NyaXB0aW9uEjwKBHZlcmIYASABKA4yLi5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZVZlcmISEQoJb3duX3Njb3BlGAIgASgIEhcKD3JlYWRhYmxlX2ZpZWxkcxgDIAMoCSqdAQoRUmVjb3JkQ29uZGl0aW9uT3ASIwofcmVjb3JkX2NvbmRpdGlvbl9vcF91bnNwZWNpZmllZBAAEgYKAmVxEAESBwoDbmVxEAISBgoCZ3QQAxIHCgNndGUQBBIGCgJsdBAFEgcKA2x0ZRAGEgkKBWlzX2luEAcSCgoGbm90X2luEAgSCwoHaXNfbnVsbBAJEgwKCG5vdF9udWxsEAoqTwoTUmVjb3JkU29ydERpcmVjdGlvbhIlCiFyZWNvcmRfc29ydF9kaXJlY3Rpb25fdW5zcGVjaWZpZWQQABIHCgNhc2MQARIICgRkZXNjEAIqZAoOQ29uc3RyYWludEtpbmQSHwobY29uc3RyYWludF9raW5kX3Vuc3BlY2lmaWVkEAASCgoGdW5pcXVlEAESCQoFY2hlY2sQAhIKCgZleGlzdHMQAxIOCgpub3RfZXhpc3RzEARiBnByb3RvMw",[file_ai_stigmer_agentic_datastore_v1_spec,file_buf_validate_validate,file_google_protobuf_struct,file_google_protobuf_timestamp]),RecordEnvelopeSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,0),RecordListSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,1),RecordFilterSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,2),RecordConditionSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,3),RecordOrderBySchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,4),FindRecordsRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,5),InsertRecordRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,6),UpdateRecordRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,7),DeleteRecordRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,8),DescribeDatastoreRequestSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,9),DatastoreDescriptionSchema=messageDesc2(file_ai_stigmer_agentic_datastore_v1_record_io,10);var RecordConditionOp;(function(RecordConditionOp2){RecordConditionOp2[RecordConditionOp2.record_condition_op_unspecified=0]="record_condition_op_unspecified",RecordConditionOp2[RecordConditionOp2.eq=1]="eq",RecordConditionOp2[RecordConditionOp2.neq=2]="neq",RecordConditionOp2[RecordConditionOp2.gt=3]="gt",RecordConditionOp2[RecordConditionOp2.gte=4]="gte",RecordConditionOp2[RecordConditionOp2.lt=5]="lt",RecordConditionOp2[RecordConditionOp2.lte=6]="lte",RecordConditionOp2[RecordConditionOp2.is_in=7]="is_in",RecordConditionOp2[RecordConditionOp2.not_in=8]="not_in",RecordConditionOp2[RecordConditionOp2.is_null=9]="is_null",RecordConditionOp2[RecordConditionOp2.not_null=10]="not_null"})(RecordConditionOp||(RecordConditionOp={}));var RecordSortDirection;(function(RecordSortDirection2){RecordSortDirection2[RecordSortDirection2.record_sort_direction_unspecified=0]="record_sort_direction_unspecified",RecordSortDirection2[RecordSortDirection2.asc=1]="asc",RecordSortDirection2[RecordSortDirection2.desc=2]="desc"})(RecordSortDirection||(RecordSortDirection={}));var ConstraintKind;(function(ConstraintKind2){ConstraintKind2[ConstraintKind2.constraint_kind_unspecified=0]="constraint_kind_unspecified",ConstraintKind2[ConstraintKind2.unique=1]="unique",ConstraintKind2[ConstraintKind2.check=2]="check",ConstraintKind2[ConstraintKind2.exists=3]="exists",ConstraintKind2[ConstraintKind2.not_exists=4]="not_exists"})(ConstraintKind||(ConstraintKind={}));var file_ai_stigmer_agentic_datastore_v1_record_command=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3JlY29yZF9jb21tYW5kLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxMp8DCiBEYXRhc3RvcmVSZWNvcmRDb21tYW5kQ29udHJvbGxlchJ7CgxpbnNlcnRSZWNvcmQSNC5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkluc2VydFJlY29yZFJlcXVlc3QaLy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlJlY29yZEVudmVsb3BlIgTQuBgBEnsKDHVwZGF0ZVJlY29yZBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuVXBkYXRlUmVjb3JkUmVxdWVzdBovLmFpLnN0aWdtZXIuYWdlbnRpYy5kYXRhc3RvcmUudjEuUmVjb3JkRW52ZWxvcGUiBNC4GAESewoMZGVsZXRlUmVjb3JkEjQuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EZWxldGVSZWNvcmRSZXF1ZXN0Gi8uYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5SZWNvcmRFbnZlbG9wZSIE0LgYARoEoP8rMWIGcHJvdG8z",[file_ai_stigmer_agentic_datastore_v1_record_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreRecordCommandController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_record_command,0);var file_ai_stigmer_agentic_datastore_v1_record_query=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvZGF0YXN0b3JlL3YxL3JlY29yZF9xdWVyeS5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MTKrAgoeRGF0YXN0b3JlUmVjb3JkUXVlcnlDb250cm9sbGVyEnUKC2ZpbmRSZWNvcmRzEjMuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5GaW5kUmVjb3Jkc1JlcXVlc3QaKy5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLlJlY29yZExpc3QiBNC4GAESiwEKEWRlc2NyaWJlRGF0YXN0b3JlEjkuYWkuc3RpZ21lci5hZ2VudGljLmRhdGFzdG9yZS52MS5EZXNjcmliZURhdGFzdG9yZVJlcXVlc3QaNS5haS5zdGlnbWVyLmFnZW50aWMuZGF0YXN0b3JlLnYxLkRhdGFzdG9yZURlc2NyaXB0aW9uIgTQuBgBGgSg/ysxYgZwcm90bzM",[file_ai_stigmer_agentic_datastore_v1_record_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),DatastoreRecordQueryController=serviceDesc(file_ai_stigmer_agentic_datastore_v1_record_query,0);var file_ai_stigmer_agentic_environment_v1_api=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvYXBpLnByb3RvEiFhaS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEiuwIKC0Vudmlyb25tZW50EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEiAKBGtpbmQYAiABKAlCErpID3INCgtFbnZpcm9ubWVudBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESQAoEc3BlYxgEIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFNwZWMSRgoGc3RhdHVzGAUgASgLMjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXRTdGF0dXNiBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate]),EnvironmentSchema=messageDesc2(file_ai_stigmer_agentic_environment_v1_api,0);var file_ai_stigmer_agentic_environment_v1_io=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvaW8ucHJvdG8SIWFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MSImCg1FbnZpcm9ubWVudElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiVAobRW52aXJvbm1lbnRTZWNyZXRWYWx1ZUlucHV0Eh8KDmVudmlyb25tZW50X2lkGAEgASgJQge6SARyAhABEhQKA2tleRgCIAEoCUIHukgEcgIQASLrAQoXTGlzdEVudmlyb25tZW50c1JlcXVlc3QSFAoDb3JnGAEgASgJQge6SARyAhABElYKBmxhYmVscxgCIAMoCzJGLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5MaXN0RW52aXJvbm1lbnRzUmVxdWVzdC5MYWJlbHNFbnRyeRIzCglwYWdlX2luZm8YAyABKAsyIC5haS5zdGlnbWVyLmNvbW1vbnMucnBjLlBhZ2VJbmZvGi0KC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiZQoPRW52aXJvbm1lbnRMaXN0EhMKC3RvdGFsX2NvdW50GAEgASgFEj0KBWl0ZW1zGAIgAygLMi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IpMCCiFVcGRhdGVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QSHwoOZW52aXJvbm1lbnRfaWQYASABKAlCB7pIBHICEAESZgoJdmFyaWFibGVzGAIgAygLMlMuYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLlVwZGF0ZUVudmlyb25tZW50VmFyaWFibGVzUmVxdWVzdC5WYXJpYWJsZXNFbnRyeRplCg5WYXJpYWJsZXNFbnRyeRILCgNrZXkYASABKAkSQgoFdmFsdWUYAiABKAsyMy5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnRWYWx1ZToCOAEiXAohUmVtb3ZlRW52aXJvbm1lbnRWYXJpYWJsZXNSZXF1ZXN0Eh8KDmVudmlyb25tZW50X2lkGAEgASgJQge6SARyAhABEhYKBGtleXMYAiADKAlCCLpIBZIBAggBYgZwcm90bzM",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_rpc_pagination,file_buf_validate_validate]);var file_ai_stigmer_agentic_environment_v1_command=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvY29tbWFuZC5wcm90bxIhYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxMoMKChxFbnZpcm9ubWVudENvbW1hbmRDb250cm9sbGVyEmcKBWFwcGx5Ei4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50ErkBCgZjcmVhdGUSLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiT8K4GEsIDBAeIgxtZXRhZGF0YS5vcmcqN3VuYXV0aG9yaXplZCB0byBjcmVhdGUgZW52aXJvbm1lbnQgaW4gdGhpcyBvcmdhbml6YXRpb24SowEKBnVwZGF0ZRIuLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCI5wrgYNQgCEDUiC21ldGFkYXRhLmlkKiJ1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50Er8BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBouLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudCJEwrgYQAgCEDUiC3Jlc291cmNlX2lkKi11bmF1dGhvcml6ZWQgdG8gdXBkYXRlIGVudmlyb25tZW50IHZpc2liaWxpdHkSqwEKBmRlbGV0ZRI2LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZURlbGV0ZUlucHV0Gi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjnCuBg1CAIQNSILcmVzb3VyY2VfaWQqInVuYXV0aG9yaXplZCB0byBkZWxldGUgZW52aXJvbm1lbnQSzwEKD3VwZGF0ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5VcGRhdGVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMSzwEKD3JlbW92ZVZhcmlhYmxlcxJELmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5SZW1vdmVFbnZpcm9ubWVudFZhcmlhYmxlc1JlcXVlc3QaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiRsK4GEIIAhA1Ig5lbnZpcm9ubWVudF9pZCosdW5hdXRob3JpemVkIHRvIHJlbW92ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentCommandController=serviceDesc(file_ai_stigmer_agentic_environment_v1_command,0);var file_ai_stigmer_agentic_environment_v1_query=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvZW52aXJvbm1lbnQvdjEvcXVlcnkucHJvdG8SIWFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MTKMBQoaRW52aXJvbm1lbnRRdWVyeUNvbnRyb2xsZXISlgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGi4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50IjDCuBgsCAEQNSIFdmFsdWUqH3VuYXV0aG9yaXplZCB0byBnZXQgZW52aXJvbm1lbnQSfAoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaLi5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52aXJvbm1lbnQiBNC4GAES0gEKDmdldFNlY3JldFZhbHVlEj4uYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudmlyb25tZW50U2VjcmV0VmFsdWVJbnB1dBozLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudFZhbHVlIkvCuBhHCBAQNSIOZW52aXJvbm1lbnRfaWQqMXVuYXV0aG9yaXplZCB0byByZWFkIHNlY3JldCB2YWx1ZXMgKGNyZWF0b3Itb25seSkSfAoEbGlzdBI6LmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5MaXN0RW52aXJvbm1lbnRzUmVxdWVzdBoyLmFpLnN0aWdtZXIuYWdlbnRpYy5lbnZpcm9ubWVudC52MS5FbnZpcm9ubWVudExpc3QiBNC4GAEaBKD/KzViBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_api,file_ai_stigmer_agentic_environment_v1_io,file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),EnvironmentQueryController=serviceDesc(file_ai_stigmer_agentic_environment_v1_query,0);var file_ai_stigmer_agentic_mcpserver_v1_spec=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3NwZWMucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEi6QQKDU1jcFNlcnZlclNwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSEAoIaWNvbl91cmwYAiABKAkSDAoEdGFncxgDIAMoCRJDCgVzdGRpbxgEIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuU3RkaW9TZXJ2ZXJDb25maWdIABJBCgRodHRwGAUgASgLMjEuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5IdHRwU2VydmVyQ29uZmlnSAASHQoVZGVmYXVsdF9lbmFibGVkX3Rvb2xzGAcgAygJEkQKA2VudhgIIAMoCzI3LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyU3BlYy5FbnZFbnRyeRJSChVwaW5uZWRfdG9vbF9hcHByb3ZhbHMYCyADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlRvb2xBcHByb3ZhbFBvbGljeRIWCg5yZXBvc2l0b3J5X3VybBgMIAEoCRIUCgxnaXRodWJfc3RhcnMYDSABKAUSPAoEYXV0aBgOIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyQXV0aBpgCghFbnZFbnRyeRILCgNrZXkYASABKAkSQwoFdmFsdWUYAiABKAsyNC5haS5zdGlnbWVyLmFnZW50aWMuZW52aXJvbm1lbnQudjEuRW52VmFyRGVjbGFyYXRpb246AjgBQhQKC3NlcnZlcl90eXBlEgW6SAIIASJPChFTdGRpb1NlcnZlckNvbmZpZxIXCgdjb21tYW5kGAEgASgJQga6SAPIAQESDAoEYXJncxgCIAMoCRITCgt3b3JraW5nX2RpchgDIAEoCSLgAgoQSHR0cFNlcnZlckNvbmZpZxIYCgN1cmwYASABKAlCC7pICMgBAXIDiAEBEk8KB2hlYWRlcnMYAiADKAsyPi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkh0dHBTZXJ2ZXJDb25maWcuSGVhZGVyc0VudHJ5ElgKDHF1ZXJ5X3BhcmFtcxgDIAMoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuSHR0cFNlcnZlckNvbmZpZy5RdWVyeVBhcmFtc0VudHJ5EiMKD3RpbWVvdXRfc2Vjb25kcxgEIAEoBUIKukgHGgUYrAIoABouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoyChBRdWVyeVBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiYAoSVG9vbEFwcHJvdmFsUG9saWN5EhoKCXRvb2xfbmFtZRgBIAEoCUIHukgEcgIQARIPCgdtZXNzYWdlGAIgASgJEh0KFWZyb21fZGVzdHJ1Y3RpdmVfaGludBgDIAEoCCL0AgoNTWNwU2VydmVyQXV0aBLMAQoNb2F1dGhfYXBwX3JlZhgBIAEoCzI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZUJ/ukh4ugF1ChJvYXV0aF9hcHBfcmVmLmtpbmQSO29hdXRoX2FwcF9yZWYgbXVzdCByZWZlcmVuY2UgYSByZXNvdXJjZSB3aXRoIGtpbmQ9b2F1dGhfYXBwGiJ0aGlzLnNsdWcgPT0gJycgfHwgdGhpcy5raW5kID09IDIy4IUsFhIfCg50YXJnZXRfZW52X3ZhchgCIAEoCUIHukgEcgIQARIbChN0b2tlbl9saWZldGltZV9oaW50GAMgASgJEhMKC3Njb3BlX2hpbnRzGAQgAygJEhUKDWRpc2NvdmVyeV91cmwYByABKAkSEgoKb2F1dGhfb25seRgKIAEoCEoECAUQBkoECAYQB0oECAgQCUoECAkQCmIGcHJvdG8z",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_ai_stigmer_commons_apiresource_io,file_buf_validate_validate]),McpServerSpecSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,0),StdioServerConfigSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,1),HttpServerConfigSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,2),ToolApprovalPolicySchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,3),McpServerAuthSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_spec,4);var file_ai_stigmer_iam_oauthapp_v1_spec=fileDesc("CiVhaS9zdGlnbWVyL2lhbS9vYXV0aGFwcC92MS9zcGVjLnByb3RvEhphaS5zdGlnbWVyLmlhbS5vYXV0aGFwcC52MSLWAgoMT0F1dGhBcHBTcGVjEhAKCHByb3ZpZGVyGAEgASgJEhoKCWNsaWVudF9pZBgCIAEoCUIHukgEcgIQARIeCg1jbGllbnRfc2VjcmV0GAMgASgJQge6SARyAhABEiMKEWF1dGhvcml6YXRpb25fdXJsGAQgASgJQgi6SAVyA4gBARIbCgl0b2tlbl91cmwYBSABKAlCCLpIBXIDiAEBEg4KBnNjb3BlcxgGIAMoCRIUCgx1c2VyaW5mb191cmwYByABKAkSHAoUc2NvcGVfcGFyYW1ldGVyX25hbWUYCCABKAkSUAoWdmVuZG9yX2FwcHJvdmFsX3N0YXR1cxgJIAEoDjIwLmFpLnN0aWdtZXIuaWFtLm9hdXRoYXBwLnYxLlZlbmRvckFwcHJvdmFsU3RhdHVzEiAKGHZlbmRvcl9hcHByb3ZhbF9kb2NzX3VybBgKIAEoCSqsAQoUVmVuZG9yQXBwcm92YWxTdGF0dXMSJgoiVkVORE9SX0FQUFJPVkFMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHlZFTkRPUl9BUFBST1ZBTF9TVEFUVVNfUEVORElORxABEiMKH1ZFTkRPUl9BUFBST1ZBTF9TVEFUVVNfQVBQUk9WRUQQAhIjCh9WRU5ET1JfQVBQUk9WQUxfU1RBVFVTX1JFSkVDVEVEEANiBnByb3RvMw",[file_buf_validate_validate]);var VendorApprovalStatus;(function(VendorApprovalStatus2){VendorApprovalStatus2[VendorApprovalStatus2.UNSPECIFIED=0]="UNSPECIFIED",VendorApprovalStatus2[VendorApprovalStatus2.PENDING=1]="PENDING",VendorApprovalStatus2[VendorApprovalStatus2.APPROVED=2]="APPROVED",VendorApprovalStatus2[VendorApprovalStatus2.REJECTED=3]="REJECTED"})(VendorApprovalStatus||(VendorApprovalStatus={}));var file_ai_stigmer_agentic_mcpserver_v1_status=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3N0YXR1cy5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MSKlAwoPTWNwU2VydmVyU3RhdHVzEkoKEHZhbGlkYXRpb25fc3RhdGUYASABKA4yMC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlZhbGlkYXRpb25TdGF0ZRIaChJ2YWxpZGF0aW9uX21lc3NhZ2UYAiABKAkSWAoXZGlzY292ZXJlZF9jYXBhYmlsaXRpZXMYAyABKAsyNy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2NvdmVyZWRDYXBhYmlsaXRpZXMSSwoOdG9vbF9hcHByb3ZhbHMYBCADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLlRvb2xBcHByb3ZhbFBvbGljeRJCCgxvYXV0aF9zdGF0dXMYBSABKAsyLC5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk9BdXRoU3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQi6QEKFkRpc2NvdmVyZWRDYXBhYmlsaXRpZXMSPgoFdG9vbHMYASADKAsyLy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2NvdmVyZWRUb29sElcKEnJlc291cmNlX3RlbXBsYXRlcxgCIAMoCzI7LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGlzY292ZXJlZFJlc291cmNlVGVtcGxhdGUSNgoSbGFzdF9kaXNjb3ZlcmVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJiCg5EaXNjb3ZlcmVkVG9vbBIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEi0KDGlucHV0X3NjaGVtYRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiaAoaRGlzY292ZXJlZFJlc291cmNlVGVtcGxhdGUSFAoMdXJpX3RlbXBsYXRlGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEQoJbWltZV90eXBlGAQgASgJIvIBCgtPQXV0aFN0YXR1cxJQChZ2ZW5kb3JfYXBwcm92YWxfc3RhdHVzGAEgASgOMjAuYWkuc3RpZ21lci5pYW0ub2F1dGhhcHAudjEuVmVuZG9yQXBwcm92YWxTdGF0dXMSIAoYdmVuZG9yX2FwcHJvdmFsX2RvY3NfdXJsGAIgASgJEk8KFmVmZmVjdGl2ZV9vYXV0aF9zb3VyY2UYAyABKA4yLy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk9BdXRoQXBwU291cmNlEh4KFmVmZmVjdGl2ZV9vYXV0aF9hcHBfaWQYBCABKAkqSwoPVmFsaWRhdGlvblN0YXRlEiAKHHZhbGlkYXRpb25fc3RhdGVfdW5zcGVjaWZpZWQQABIJCgV2YWxpZBABEgsKB2ludmFsaWQQAiqPAQoOT0F1dGhBcHBTb3VyY2USIAocT0FVVEhfQVBQX1NPVVJDRV9VTlNQRUNJRklFRBAAEh0KGU9BVVRIX0FQUF9TT1VSQ0VfUExBVEZPUk0QARIhCh1PQVVUSF9BUFBfU09VUkNFX09SR19PVkVSUklERRACEhkKFU9BVVRIX0FQUF9TT1VSQ0VfTk9ORRADYgZwcm90bzM",[file_ai_stigmer_agentic_mcpserver_v1_spec,file_ai_stigmer_commons_apiresource_status,file_ai_stigmer_iam_oauthapp_v1_spec,file_google_protobuf_struct,file_google_protobuf_timestamp]);var ValidationState;(function(ValidationState3){ValidationState3[ValidationState3.validation_state_unspecified=0]="validation_state_unspecified",ValidationState3[ValidationState3.valid=1]="valid",ValidationState3[ValidationState3.invalid=2]="invalid"})(ValidationState||(ValidationState={}));var OAuthAppSource;(function(OAuthAppSource2){OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_UNSPECIFIED=0]="OAUTH_APP_SOURCE_UNSPECIFIED",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_PLATFORM=1]="OAUTH_APP_SOURCE_PLATFORM",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_ORG_OVERRIDE=2]="OAUTH_APP_SOURCE_ORG_OVERRIDE",OAuthAppSource2[OAuthAppSource2.OAUTH_APP_SOURCE_NONE=3]="OAUTH_APP_SOURCE_NONE"})(OAuthAppSource||(OAuthAppSource={}));var file_ai_stigmer_agentic_mcpserver_v1_api=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2FwaS5wcm90bxIfYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MSKtAgoJTWNwU2VydmVyEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh4KBGtpbmQYAiABKAlCELpIDXILCglNY3BTZXJ2ZXISTQoIbWV0YWRhdGEYAyABKAsyMy5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VNZXRhZGF0YUIGukgDyAEBEjwKBHNwZWMYBCABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlclNwZWMSQAoGc3RhdHVzGAUgASgLMjAuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXJTdGF0dXMibQoNTWNwU2VydmVyTGlzdBITCgthcGlfdmVyc2lvbhgBIAEoCRIMCgRraW5kGAIgASgJEjkKBWl0ZW1zGAMgAygLMiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXJiBnByb3RvMw",[file_ai_stigmer_agentic_mcpserver_v1_spec,file_ai_stigmer_agentic_mcpserver_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),McpServerSchema=messageDesc2(file_ai_stigmer_agentic_mcpserver_v1_api,0);var file_ai_stigmer_agentic_mcpserver_v1_io=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2lvLnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxIiQKC01jcFNlcnZlcklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiggIKDENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESUgoLcnVudGltZV9lbnYYAiADKAsyPS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dC5SdW50aW1lRW52RW50cnkSFAoDb3JnGAMgASgJQge6SARyAhABGmkKD1J1bnRpbWVFbnZFbnRyeRILCgNrZXkYASABKAkSRQoFdmFsdWUYAiABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25WYWx1ZToCOAEiUAoZSW5pdGlhdGVPQXV0aENvbm5lY3RJbnB1dBIdCg1tY3Bfc2VydmVyX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIm0KGkluaXRpYXRlT0F1dGhDb25uZWN0T3V0cHV0EhkKEWF1dGhvcml6YXRpb25fdXJsGAEgASgJEg0KBXN0YXRlGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1wcm92aWRlcl9uYW1lGAQgASgJIncKGUNvbXBsZXRlT0F1dGhDb25uZWN0SW5wdXQSHQoNbWNwX3NlcnZlcl9pZBgBIAEoCUIGukgDyAEBEiMKEmF1dGhvcml6YXRpb25fY29kZRgCIAEoCUIHukgEcgIQARIWCgVzdGF0ZRgDIAEoCUIHukgEcgIQASJkChpDb21wbGV0ZU9BdXRoQ29ubmVjdE91dHB1dBIRCgljb25uZWN0ZWQYASABKAgSFgoOdGFyZ2V0X2Vudl92YXIYAiABKAkSGwoTdG9rZW5fbGlmZXRpbWVfaGludBgDIAEoCSJNChhHZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEizwEKGUdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQSEQoJY29ubmVjdGVkGAEgASgIEh8KF2FjY2Vzc190b2tlbl9leHBpcmVzX2F0GAIgASgDEhYKDnRhcmdldF9lbnZfdmFyGAMgASgJEhMKC2F1dGhfbWV0aG9kGAQgASgJElEKEWNvbm5lY3Rpb25faGVhbHRoGAUgASgOMjYuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5PQXV0aENvbm5lY3Rpb25IZWFsdGgiSQoURGlzY29ubmVjdE9BdXRoSW5wdXQSGwoLcmVzb3VyY2VfaWQYASABKAlCBrpIA8gBARIUCgNvcmcYAiABKAlCB7pIBHICEAEiLQoVRGlzY29ubmVjdE9BdXRoT3V0cHV0EhQKDGRpc2Nvbm5lY3RlZBgBIAEoCCKEAQoTU2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQARIaCgljbGllbnRfaWQYAyABKAlCB7pIBHICEAESHgoNY2xpZW50X3NlY3JldBgEIAEoCUIHukgEcgIQASIsChRTZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxvYXV0aF9hcHBfaWQYASABKAkiSAoTR2V0T3JnT0F1dGhBcHBJbnB1dBIbCgtyZXNvdXJjZV9pZBgBIAEoCUIGukgDyAEBEhQKA29yZxgCIAEoCUIHukgEcgIQASJVChRHZXRPcmdPQXV0aEFwcE91dHB1dBIUCgxoYXNfb3ZlcnJpZGUYASABKAgSFAoMb2F1dGhfYXBwX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCSJLChZEZWxldGVPcmdPQXV0aEFwcElucHV0EhsKC3Jlc291cmNlX2lkGAEgASgJQga6SAPIAQESFAoDb3JnGAIgASgJQge6SARyAhABIioKF0RlbGV0ZU9yZ09BdXRoQXBwT3V0cHV0Eg8KB2RlbGV0ZWQYASABKAgq7QEKFU9BdXRoQ29ubmVjdGlvbkhlYWx0aBInCiNPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9VTlNQRUNJRklFRBAAEiMKH09BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX0hFQUxUSFkQARIpCiVPQVVUSF9DT05ORUNUSU9OX0hFQUxUSF9UT0tFTl9FWFBJUkVEEAISNQoxT0FVVEhfQ09OTkVDVElPTl9IRUFMVEhfVE9LRU5fRVhQSVJFRF9SRUZSRVNIQUJMRRADEiQKIE9BVVRIX0NPTk5FQ1RJT05fSEVBTFRIX05PX0dSQU5UEARiBnByb3RvMw",[file_ai_stigmer_agentic_executioncontext_v1_spec,file_buf_validate_validate]);var OAuthConnectionHealth;(function(OAuthConnectionHealth2){OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_UNSPECIFIED=0]="OAUTH_CONNECTION_HEALTH_UNSPECIFIED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_HEALTHY=1]="OAUTH_CONNECTION_HEALTH_HEALTHY",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED=2]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE=3]="OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE",OAuthConnectionHealth2[OAuthConnectionHealth2.OAUTH_CONNECTION_HEALTH_NO_GRANT=4]="OAUTH_CONNECTION_HEALTH_NO_GRANT"})(OAuthConnectionHealth||(OAuthConnectionHealth={}));var file_ai_stigmer_agentic_mcpserver_v1_command=fileDesc("Ci1haS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL2NvbW1hbmQucHJvdG8SH2FpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEypg8KGk1jcFNlcnZlckNvbW1hbmRDb250cm9sbGVyEl8KBWFwcGx5EiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchJmCgZjcmVhdGUSKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIgTQuBgBEpoBCgZ1cGRhdGUSKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlchoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIjjCuBg0CAIQLCILbWV0YWRhdGEuaWQqIXVuYXV0aG9yaXplZCB0byB1cGRhdGUgbWNwIHNlcnZlchKmAQoGZGVsZXRlEjYuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlRGVsZXRlSW5wdXQaKi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLk1jcFNlcnZlciI4wrgYNAgDECwiC3Jlc291cmNlX2lkKiF1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIG1jcCBzZXJ2ZXISugEKEHVwZGF0ZVZpc2liaWxpdHkSNS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuVXBkYXRlVmlzaWJpbGl0eUlucHV0GiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiQ8K4GD8IAhAsIgtyZXNvdXJjZV9pZCosdW5hdXRob3JpemVkIHRvIHVwZGF0ZSBtY3Agc2VydmVyIHZpc2liaWxpdHkSpAEKB2Nvbm5lY3QSLS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkNvbm5lY3RJbnB1dBoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIj7CuBg6CBYQLCINbWNwX3NlcnZlcl9pZColdW5hdXRob3JpemVkIHRvIGNvbm5lY3QgdG8gbWNwIHNlcnZlchLfAQoUaW5pdGlhdGVPQXV0aENvbm5lY3QSOi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkluaXRpYXRlT0F1dGhDb25uZWN0SW5wdXQaOy5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkluaXRpYXRlT0F1dGhDb25uZWN0T3V0cHV0Ik7CuBhKCBYQLCINbWNwX3NlcnZlcl9pZCo1dW5hdXRob3JpemVkIHRvIGluaXRpYXRlIG9hdXRoIGNvbm5lY3QgZm9yIG1jcCBzZXJ2ZXIS3wEKFGNvbXBsZXRlT0F1dGhDb25uZWN0EjouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Db21wbGV0ZU9BdXRoQ29ubmVjdElucHV0GjsuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5Db21wbGV0ZU9BdXRoQ29ubmVjdE91dHB1dCJOwrgYSggWECwiDW1jcF9zZXJ2ZXJfaWQqNXVuYXV0aG9yaXplZCB0byBjb21wbGV0ZSBvYXV0aCBjb25uZWN0IGZvciBtY3Agc2VydmVyEsgBCg9kaXNjb25uZWN0T0F1dGgSNS5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkRpc2Nvbm5lY3RPQXV0aElucHV0GjYuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5EaXNjb25uZWN0T0F1dGhPdXRwdXQiRsK4GEIIFhAsIgtyZXNvdXJjZV9pZCovdW5hdXRob3JpemVkIHRvIGRpc2Nvbm5lY3Qgb2F1dGggZm9yIG1jcCBzZXJ2ZXISuAEKDnNldE9yZ09BdXRoQXBwEjQuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5TZXRPcmdPQXV0aEFwcElucHV0GjUuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5TZXRPcmdPQXV0aEFwcE91dHB1dCI5wrgYNQgXEB4iA29yZyoqdW5hdXRob3JpemVkIHRvIHNldCBvcmcgb2F1dGggYXBwIG92ZXJyaWRlEsQBChFkZWxldGVPcmdPQXV0aEFwcBI3LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGVsZXRlT3JnT0F1dGhBcHBJbnB1dBo4LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuRGVsZXRlT3JnT0F1dGhBcHBPdXRwdXQiPMK4GDgIFxAeIgNvcmcqLXVuYXV0aG9yaXplZCB0byBkZWxldGUgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRoEoP8rLGIGcHJvdG8z",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerCommandController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_command,0);var file_ai_stigmer_agentic_mcpserver_v1_query=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvbWNwc2VydmVyL3YxL3F1ZXJ5LnByb3RvEh9haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxMssFChhNY3BTZXJ2ZXJRdWVyeUNvbnRyb2xsZXISkgEKA2dldBItLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUlkGiouYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5NY3BTZXJ2ZXIiMMK4GCwIARAsIgV2YWx1ZSofdW5hdXRob3JpemVkIHRvIHZpZXcgbWNwIHNlcnZlchJ4Cg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoqLmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuTWNwU2VydmVyIgTQuBgBEtUBChNnZXRPQXV0aEdyYW50U3RhdHVzEjkuYWkuc3RpZ21lci5hZ2VudGljLm1jcHNlcnZlci52MS5HZXRPQXV0aEdyYW50U3RhdHVzSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMubWNwc2VydmVyLnYxLkdldE9BdXRoR3JhbnRTdGF0dXNPdXRwdXQiR8K4GEMIARAsIgtyZXNvdXJjZV9pZCowdW5hdXRob3JpemVkIHRvIHZpZXcgb2F1dGggc3RhdHVzIGZvciBtY3Agc2VydmVyEsEBCg5nZXRPcmdPQXV0aEFwcBI0LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBJbnB1dBo1LmFpLnN0aWdtZXIuYWdlbnRpYy5tY3BzZXJ2ZXIudjEuR2V0T3JnT0F1dGhBcHBPdXRwdXQiQsK4GD4IARAsIgtyZXNvdXJjZV9pZCordW5hdXRob3JpemVkIHRvIHZpZXcgb3JnIG9hdXRoIGFwcCBvdmVycmlkZRoEoP8rLGIGcHJvdG8z",[file_ai_stigmer_agentic_mcpserver_v1_api,file_ai_stigmer_agentic_mcpserver_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),McpServerQueryController=serviceDesc(file_ai_stigmer_agentic_mcpserver_v1_query,0);var file_ai_stigmer_agentic_skill_v1_spec=fileDesc("CiZhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvc3BlYy5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxIp0BCglTa2lsbFNwZWMSGQoIc2tpbGxfbWQYASABKAlCB7pIBHICEAESKAoDdGFnGAIgASgJQhu6SBhyFjIUXiR8XlthLXpBLVowLTkuXy1dKyQSMAoEbmFtZRgDIAEoCUIiukgfch0yG15bYS16MC05XSsoWy4tXVthLXowLTldKykqJBITCgtkZXNjcmlwdGlvbhgFIAEoCUoECAQQBWIGcHJvdG8z",[file_buf_validate_validate]);var file_ai_stigmer_agentic_skill_v1_status=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvc3RhdHVzLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEilQIKC1NraWxsU3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSKwoMdmVyc2lvbl9oYXNoGAEgASgJQhW6SBJyEDIOXlthLWYwLTldezY0fSQSHAoUYXJ0aWZhY3Rfc3RvcmFnZV9rZXkYAiABKAkSNgoFc3RhdGUYAyABKA4yJy5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGxTdGF0ZRJCCg5naXRfcHJvdmVuYW5jZRgEIAEoCzIqLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5HaXRQcm92ZW5hbmNlImIKDUdpdFByb3ZlbmFuY2USGwoKcmVtb3RlX3VybBgBIAEoCUIHukgEcgIQARILCgNyZWYYAiABKAkSFwoGY29tbWl0GAMgASgJQge6SARyAhABEg4KBnN1YmRpchgEIAEoCSpzCgpTa2lsbFN0YXRlEhsKF1NLSUxMX1NUQVRFX1VOU1BFQ0lGSUVEEAASGQoVU0tJTExfU1RBVEVfVVBMT0FESU5HEAESFQoRU0tJTExfU1RBVEVfUkVBRFkQAhIWChJTS0lMTF9TVEFURV9GQUlMRUQQA2IGcHJvdG8z",[file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate]);var SkillState;(function(SkillState2){SkillState2[SkillState2.UNSPECIFIED=0]="UNSPECIFIED",SkillState2[SkillState2.UPLOADING=1]="UPLOADING",SkillState2[SkillState2.READY=2]="READY",SkillState2[SkillState2.FAILED=3]="FAILED"})(SkillState||(SkillState={}));var file_ai_stigmer_agentic_skill_v1_api=fileDesc("CiVhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvYXBpLnByb3RvEhthaS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEilQIKBVNraWxsEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEhoKBGtpbmQYAiABKAlCDLpICXIHCgVTa2lsbBJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESNAoEc3BlYxgEIAEoCzImLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbFNwZWMSOAoGc3RhdHVzGAUgASgLMiguYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsU3RhdHVzImEKCVNraWxsTGlzdBITCgthcGlfdmVyc2lvbhgBIAEoCRIMCgRraW5kGAIgASgJEjEKBWl0ZW1zGAMgAygLMiIuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsYgZwcm90bzM",[file_ai_stigmer_agentic_skill_v1_spec,file_ai_stigmer_agentic_skill_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),SkillSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_api,0);var file_ai_stigmer_agentic_skill_v1_io=fileDesc("CiRhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvaW8ucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MSIgCgdTa2lsbElkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEixgEKEFB1c2hTa2lsbFJlcXVlc3QSEwoDb3JnGAEgASgJQga6SAPIAQESGAoIYXJ0aWZhY3QYAiABKAxCBrpIA8gBARIoCgN0YWcYAyABKAlCG7pIGHIWMhReJHxeW2EtekEtWjAtOS5fLV0rJBJCCg5naXRfcHJvdmVuYW5jZRgEIAEoCzIqLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5HaXRQcm92ZW5hbmNlEg8KB21lc3NhZ2UYBiABKAlKBAgFEAYiowEKJVB1c2hTa2lsbEZyb21FeGVjdXRpb25BcnRpZmFjdFJlcXVlc3QSEwoDb3JnGAEgASgJQga6SAPIAQESHQoMZXhlY3V0aW9uX2lkGAIgASgJQge6SARyAhABEhwKC3N0b3JhZ2Vfa2V5GAMgASgJQge6SARyAhABEigKA3RhZxgEIAEoCUIbukgYchYyFF4kfF5bYS16QS1aMC05Ll8tXSskIjoKEkdldEFydGlmYWN0UmVxdWVzdBIkChRhcnRpZmFjdF9zdG9yYWdlX2tleRgBIAEoCUIGukgDyAEBIicKE0dldEFydGlmYWN0UmVzcG9uc2USEAoIYXJ0aWZhY3QYASABKAwiagoWTGlzdFNraWxsVmVyc2lvbnNJbnB1dBITCgNvcmcYASABKAlCBrpIA8gBARIUCgRzbHVnGAIgASgJQga6SAPIAQESEgoKcGFnZV90b2tlbhgDIAEoCRIRCglwYWdlX3NpemUYBCABKAUitgIKEVNraWxsVmVyc2lvbkVudHJ5EhQKDHZlcnNpb25faGFzaBgBIAEoCRItCglwdXNoZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkgKCXB1c2hlZF9ieRgDIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCwoDdGFnGAQgASgJEhIKCmlzX2N1cnJlbnQYBSABKAgSQgoOZ2l0X3Byb3ZlbmFuY2UYBiABKAsyKi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuR2l0UHJvdmVuYW5jZRIPCgdtZXNzYWdlGAcgASgJEhwKFGFydGlmYWN0X3N0b3JhZ2Vfa2V5GAggASgJIosBChlMaXN0U2tpbGxWZXJzaW9uc1Jlc3BvbnNlEkAKCHZlcnNpb25zGAEgAygLMi4uYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsVmVyc2lvbkVudHJ5EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRITCgt0b3RhbF9jb3VudBgDIAEoBWIGcHJvdG8z",[file_ai_stigmer_agentic_skill_v1_status,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_timestamp]);var ListSkillVersionsResponseSchema=messageDesc2(file_ai_stigmer_agentic_skill_v1_io,7);var file_ai_stigmer_agentic_skill_v1_command=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvY29tbWFuZC5wcm90bxIbYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxMrQFChZTa2lsbENvbW1hbmRDb250cm9sbGVyEpkBCgRwdXNoEi0uYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlB1c2hTa2lsbFJlcXVlc3QaIi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGwiPsK4GDoICRAeIgNvcmcqL3VuYXV0aG9yaXplZCB0byBwdXNoIHNraWxsIGluIHRoaXMgb3JnYW5pemF0aW9uEsMBChlwdXNoRnJvbUV4ZWN1dGlvbkFydGlmYWN0EkIuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlB1c2hTa2lsbEZyb21FeGVjdXRpb25BcnRpZmFjdFJlcXVlc3QaIi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGwiPsK4GDoICRAeIgNvcmcqL3VuYXV0aG9yaXplZCB0byBwdXNoIHNraWxsIGluIHRoaXMgb3JnYW5pemF0aW9uEq0BChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBoiLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbCI+wrgYOggCECsiC3Jlc291cmNlX2lkKid1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHNraWxsIHZpc2liaWxpdHkSgQEKBmRlbGV0ZRIkLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbElkGiIuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsIi3CuBgpCAMQKyIFdmFsdWUqHHVuYXV0aG9yaXplZCB0byBkZWxldGUgc2tpbGwaBKD/KytiBnByb3RvMw",[file_ai_stigmer_agentic_skill_v1_api,file_ai_stigmer_agentic_skill_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SkillCommandController=serviceDesc(file_ai_stigmer_agentic_skill_v1_command,0);var file_ai_stigmer_agentic_skill_v1_query=fileDesc("CidhaS9zdGlnbWVyL2FnZW50aWMvc2tpbGwvdjEvcXVlcnkucHJvdG8SG2FpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MTKHBAoUU2tpbGxRdWVyeUNvbnRyb2xsZXISewoDZ2V0EiQuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLlNraWxsSWQaIi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuU2tpbGwiKsK4GCYIARArIgV2YWx1ZSoZdW5hdXRob3JpemVkIHRvIGdldCBza2lsbBJwCg5nZXRCeVJlZmVyZW5jZRI0LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZVJlZmVyZW5jZRoiLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5Ta2lsbCIE0LgYARJ2CgtnZXRBcnRpZmFjdBIvLmFpLnN0aWdtZXIuYWdlbnRpYy5za2lsbC52MS5HZXRBcnRpZmFjdFJlcXVlc3QaMC5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuR2V0QXJ0aWZhY3RSZXNwb25zZSIE0LgYARKBAQoMbGlzdFZlcnNpb25zEjMuYWkuc3RpZ21lci5hZ2VudGljLnNraWxsLnYxLkxpc3RTa2lsbFZlcnNpb25zSW5wdXQaNi5haS5zdGlnbWVyLmFnZW50aWMuc2tpbGwudjEuTGlzdFNraWxsVmVyc2lvbnNSZXNwb25zZSIE0LgYARoEoP8rK2IGcHJvdG8z",[file_ai_stigmer_agentic_skill_v1_api,file_ai_stigmer_agentic_skill_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),SkillQueryController=serviceDesc(file_ai_stigmer_agentic_skill_v1_query,0);var file_ai_stigmer_agentic_workflow_v1_enum=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvZW51bS5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxKt4CChBXb3JrZmxvd1Rhc2tLaW5kEiIKHndvcmtmbG93X3Rhc2tfa2luZF91bnNwZWNpZmllZBAAEgwKCHNldF92YXJzEAESDQoJaHR0cF9jYWxsEAISDQoJZ3JwY19jYWxsEAMSEQoNYWN0aXZpdHlfY2FsbBAEEg8KC3N3aXRjaF9jYXNlEAUSDAoIZm9yX2VhY2gQBhIICgRmb3JrEAcSDQoJdHJ5X2NhdGNoEAgSCgoGbGlzdGVuEAkSCAoEd2FpdBAKEg8KC3JhaXNlX2Vycm9yEAsSEAoMcnVuX3dvcmtmbG93EAwSDgoKYWdlbnRfY2FsbBANEgwKCGxsbV9jYWxsEA4SDQoJdHJhbnNmb3JtEA8SDwoLaHVtYW5faW5wdXQQEBIMCgh2YWxpZGF0ZRAREg4KCmVtaXRfZXZlbnQQEhIQCgxub3RpZmljYXRpb24QExIICgRldmFsEBQqmQEKFEJ1ZGdldEV4Y2VlZGVkUG9saWN5EiYKImJ1ZGdldF9leGNlZWRlZF9wb2xpY3lfdW5zcGVjaWZpZWQQABIdChlidWRnZXRfZXhjZWVkZWRfdGVybWluYXRlEAESIAocYnVkZ2V0X2V4Y2VlZGVkX2h1bWFuX3JldmlldxACEhgKFGJ1ZGdldF9leGNlZWRlZF93YXJuEANiBnByb3RvMw"),WorkflowTaskKind;(function(WorkflowTaskKind2){WorkflowTaskKind2[WorkflowTaskKind2.workflow_task_kind_unspecified=0]="workflow_task_kind_unspecified",WorkflowTaskKind2[WorkflowTaskKind2.set_vars=1]="set_vars",WorkflowTaskKind2[WorkflowTaskKind2.http_call=2]="http_call",WorkflowTaskKind2[WorkflowTaskKind2.grpc_call=3]="grpc_call",WorkflowTaskKind2[WorkflowTaskKind2.activity_call=4]="activity_call",WorkflowTaskKind2[WorkflowTaskKind2.switch_case=5]="switch_case",WorkflowTaskKind2[WorkflowTaskKind2.for_each=6]="for_each",WorkflowTaskKind2[WorkflowTaskKind2.fork=7]="fork",WorkflowTaskKind2[WorkflowTaskKind2.try_catch=8]="try_catch",WorkflowTaskKind2[WorkflowTaskKind2.listen=9]="listen",WorkflowTaskKind2[WorkflowTaskKind2.wait=10]="wait",WorkflowTaskKind2[WorkflowTaskKind2.raise_error=11]="raise_error",WorkflowTaskKind2[WorkflowTaskKind2.run_workflow=12]="run_workflow",WorkflowTaskKind2[WorkflowTaskKind2.agent_call=13]="agent_call",WorkflowTaskKind2[WorkflowTaskKind2.llm_call=14]="llm_call",WorkflowTaskKind2[WorkflowTaskKind2.transform=15]="transform",WorkflowTaskKind2[WorkflowTaskKind2.human_input=16]="human_input",WorkflowTaskKind2[WorkflowTaskKind2.validate=17]="validate",WorkflowTaskKind2[WorkflowTaskKind2.emit_event=18]="emit_event",WorkflowTaskKind2[WorkflowTaskKind2.notification=19]="notification",WorkflowTaskKind2[WorkflowTaskKind2.eval=20]="eval"})(WorkflowTaskKind||(WorkflowTaskKind={}));var BudgetExceededPolicy;(function(BudgetExceededPolicy2){BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_policy_unspecified=0]="budget_exceeded_policy_unspecified",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_terminate=1]="budget_exceeded_terminate",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_human_review=2]="budget_exceeded_human_review",BudgetExceededPolicy2[BudgetExceededPolicy2.budget_exceeded_warn=3]="budget_exceeded_warn"})(BudgetExceededPolicy||(BudgetExceededPolicy={}));var file_ai_stigmer_agentic_workflow_v1_spec=fileDesc("CilhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc3BlYy5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxIpwDCgxXb3JrZmxvd1NwZWMSEwoLZGVzY3JpcHRpb24YASABKAkSSgoIZG9jdW1lbnQYAiABKAsyMC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dEb2N1bWVudEIGukgDyAEBEkUKBXRhc2tzGAMgAygLMiwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0IIukgFkgECCAESQgoDZW52GAQgAygLMjUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93U3BlYy5FbnZFbnRyeRI+CgZidWRnZXQYBSABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dCdWRnZXQaYAoIRW52RW50cnkSCwoDa2V5GAEgASgJEkMKBXZhbHVlGAIgASgLMjQuYWkuc3RpZ21lci5hZ2VudGljLmVudmlyb25tZW50LnYxLkVudlZhckRlY2xhcmF0aW9uOgI4ASKsAQoOV29ya2Zsb3dCdWRnZXQSFwoPbWF4X2Nvc3RfbWljcm9zGAEgASgDEhgKEG1heF90b3RhbF90b2tlbnMYAiABKAMSHAoUbWF4X2R1cmF0aW9uX3NlY29uZHMYAyABKAUSSQoLb25fZXhjZWVkZWQYBCABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuQnVkZ2V0RXhjZWVkZWRQb2xpY3kikAEKEFdvcmtmbG93RG9jdW1lbnQSHQoDZHNsGAEgASgJQhC6SA1yCzIJXjFcLjBcLjAkEhkKCW5hbWVzcGFjZRgCIAEoCUIGukgDyAEBEhQKBG5hbWUYAyABKAlCBrpIA8gBARIXCgd2ZXJzaW9uGAQgASgJQga6SAPIAQESEwoLZGVzY3JpcHRpb24YBSABKAki+gIKDFdvcmtmbG93VGFzaxIvCgRuYW1lGAEgASgJQiG6SB5yHBABMhheW2EtekEtWl9dW2EtekEtWjAtOV9dKiQSRgoEa2luZBgCIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tLaW5kQga6SAPIAQESPAoLdGFza19jb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Qg66SAPIAQHqhSwEa2luZBI2CgZleHBvcnQYBCABKAsyJi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuRXhwb3J0EjkKBGZsb3cYBSABKAsyKy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuRmxvd0NvbnRyb2wSQAoKY29tcGVuc2F0ZRgGIAMoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2siHQoGRXhwb3J0EhMKAmFzGAEgASgJQge6SARyAhABIhsKC0Zsb3dDb250cm9sEgwKBHRoZW4YASABKAliBnByb3RvMw",[file_ai_stigmer_agentic_environment_v1_spec,file_ai_stigmer_agentic_workflow_v1_enum,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),WorkflowSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,0),WorkflowBudgetSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,1),WorkflowDocumentSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,2),WorkflowTaskSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,3),ExportSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,4),FlowControlSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_spec,5);var file_ai_stigmer_agentic_workflow_v1_serverless_validation=fileDesc("CjphaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc2VydmVybGVzcy92YWxpZGF0aW9uLnByb3RvEilhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuc2VydmVybGVzcyLrAQocU2VydmVybGVzc1dvcmtmbG93VmFsaWRhdGlvbhJJCgVzdGF0ZRgBIAEoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5zZXJ2ZXJsZXNzLlZhbGlkYXRpb25TdGF0ZRIMCgR5YW1sGAIgASgJEg4KBmVycm9ycxgDIAMoCRIQCgh3YXJuaW5ncxgEIAMoCRIwCgx2YWxpZGF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh4KFnZhbGlkYXRpb25fd29ya2Zsb3dfaWQYBiABKAkqZAoPVmFsaWRhdGlvblN0YXRlEiAKHFZBTElEQVRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABILCgdQRU5ESU5HEAESCQoFVkFMSUQQAhILCgdJTlZBTElEEAMSCgoGRkFJTEVEEARiBnByb3RvMw",[file_google_protobuf_timestamp]),ServerlessWorkflowValidationSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_serverless_validation,0),ValidationState2;(function(ValidationState3){ValidationState3[ValidationState3.VALIDATION_STATE_UNSPECIFIED=0]="VALIDATION_STATE_UNSPECIFIED",ValidationState3[ValidationState3.PENDING=1]="PENDING",ValidationState3[ValidationState3.VALID=2]="VALID",ValidationState3[ValidationState3.INVALID=3]="INVALID",ValidationState3[ValidationState3.FAILED=4]="FAILED"})(ValidationState2||(ValidationState2={}));var file_ai_stigmer_agentic_workflow_v1_status=fileDesc("CithaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvc3RhdHVzLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEi9QEKDldvcmtmbG93U3RhdHVzEj8KBWF1ZGl0GGMgASgLMjAuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLkFwaVJlc291cmNlQXVkaXQSGwoTZGVmYXVsdF9pbnN0YW5jZV9pZBgBIAEoCRJvCh5zZXJ2ZXJsZXNzX3dvcmtmbG93X3ZhbGlkYXRpb24YAiABKAsyRy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuc2VydmVybGVzcy5TZXJ2ZXJsZXNzV29ya2Zsb3dWYWxpZGF0aW9uEhQKDHZlcnNpb25faGFzaBgDIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_workflow_v1_serverless_validation,file_ai_stigmer_commons_apiresource_status]);var file_ai_stigmer_agentic_workflow_v1_api=fileDesc("CihhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvYXBpLnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEipwIKCFdvcmtmbG93EjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEh0KBGtpbmQYAiABKAlCD7pIDHIKCghXb3JrZmxvdxJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESOgoEc3BlYxgEIAEoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1NwZWMSPgoGc3RhdHVzGAUgASgLMi4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93U3RhdHVzYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_agentic_workflow_v1_status,file_ai_stigmer_commons_apiresource_metadata,file_buf_validate_validate]),WorkflowSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_api,0);var file_ai_stigmer_agentic_workflow_v1_io=fileDesc("CidhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvaW8ucHJvdG8SHmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MSIjCgpXb3JrZmxvd0lkEhUKBXZhbHVlGAEgASgJQga6SAPIAQFiBnByb3RvMw",[file_buf_validate_validate]);var file_ai_stigmer_agentic_workflow_v1_version=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdmVyc2lvbi5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxIrgCChRXb3JrZmxvd1ZlcnNpb25FbnRyeRIUCgx2ZXJzaW9uX2hhc2gYASABKAkSLgoKYXBwbGllZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASSQoKYXBwbGllZF9ieRgDIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3ISCwoDdGFnGAQgASgJEhIKCmlzX2N1cnJlbnQYBSABKAgSDwoHbWVzc2FnZRgGIAEoCRIWCg52YWxpZGF0ZWRfeWFtbBgHIAEoCRJFCg5naXRfcHJvdmVuYW5jZRgIIAEoCzItLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5HaXRQcm92ZW5hbmNlIlAKDUdpdFByb3ZlbmFuY2USEgoKcmVtb3RlX3VybBgBIAEoCRILCgNyZWYYAiABKAkSDgoGY29tbWl0GAMgASgJEg4KBnN1YmRpchgEIAEoCSJtChlMaXN0V29ya2Zsb3dWZXJzaW9uc0lucHV0EhMKA29yZxgBIAEoCUIGukgDyAEBEhQKBHNsdWcYAiABKAlCBrpIA8gBARISCgpwYWdlX3Rva2VuGAMgASgJEhEKCXBhZ2Vfc2l6ZRgEIAEoBSKUAQocTGlzdFdvcmtmbG93VmVyc2lvbnNSZXNwb25zZRJGCgh2ZXJzaW9ucxgBIAMoCzI0LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1ZlcnNpb25FbnRyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkSEwoLdG90YWxfY291bnQYAyABKAUiYwoXR2V0V29ya2Zsb3dWZXJzaW9uSW5wdXQSGwoLd29ya2Zsb3dfaWQYASABKAlCBrpIA8gBARIrCgx2ZXJzaW9uX2hhc2gYAiABKAlCFbpIEnIQMg5eW2EtZjAtOV17NjR9JCKMAQoXVGFnV29ya2Zsb3dWZXJzaW9uSW5wdXQSGwoLd29ya2Zsb3dfaWQYASABKAlCBrpIA8gBARIrCgx2ZXJzaW9uX2hhc2gYAiABKAlCFbpIEnIQMg5eW2EtZjAtOV17NjR9JBInCgN0YWcYAyABKAlCGrpIF3IVEAEyEV5bYS16QS1aMC05Ll8tXSskYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_timestamp]),WorkflowVersionEntrySchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_version,0);var ListWorkflowVersionsResponseSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_version,3);var file_ai_stigmer_agentic_workflow_v1_command=fileDesc("CixhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvY29tbWFuZC5wcm90bxIeYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxMpEJChlXb3JrZmxvd0NvbW1hbmRDb250cm9sbGVyElsKBWFwcGx5EiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93GiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93EqoBCgZjcmVhdGUSKC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3caKC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3ciTMK4GEgIBxAeIgxtZXRhZGF0YS5vcmcqNHVuYXV0aG9yaXplZCB0byBjcmVhdGUgd29ya2Zsb3cgaW4gdGhpcyBvcmdhbml6YXRpb24SlAEKBnVwZGF0ZRIoLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdxooLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdyI2wrgYMggCEDIiC21ldGFkYXRhLmlkKh91bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHdvcmtmbG93ErYBChB1cGRhdGVWaXNpYmlsaXR5EjUuYWkuc3RpZ21lci5jb21tb25zLmFwaXJlc291cmNlLlVwZGF0ZVZpc2liaWxpdHlJbnB1dBooLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdyJBwrgYPQgCEDIiC3Jlc291cmNlX2lkKip1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHdvcmtmbG93IHZpc2liaWxpdHkSkAEKBmRlbGV0ZRIqLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd0lkGiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93IjDCuBgsCAMQMiIFdmFsdWUqH3VuYXV0aG9yaXplZCB0byBkZWxldGUgd29ya2Zsb3cS0QEKDHZhbGlkYXRlU3BlYxIoLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdxpHLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5zZXJ2ZXJsZXNzLlNlcnZlcmxlc3NXb3JrZmxvd1ZhbGlkYXRpb24iTsK4GEoIBxAeIgxtZXRhZGF0YS5vcmcqNnVuYXV0aG9yaXplZCB0byB2YWxpZGF0ZSB3b3JrZmxvdyBpbiB0aGlzIG9yZ2FuaXphdGlvbhKsAQoKdGFnVmVyc2lvbhI3LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5UYWdXb3JrZmxvd1ZlcnNpb25JbnB1dBooLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvdyI7wrgYNwgCEDIiC3dvcmtmbG93X2lkKiR1bmF1dGhvcml6ZWQgdG8gdGFnIHdvcmtmbG93IHZlcnNpb24aBKD/KzJiBnByb3RvMw",[file_ai_stigmer_agentic_workflow_v1_api,file_ai_stigmer_agentic_workflow_v1_io,file_ai_stigmer_agentic_workflow_v1_serverless_validation,file_ai_stigmer_agentic_workflow_v1_version,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowCommandController=serviceDesc(file_ai_stigmer_agentic_workflow_v1_command,0);var file_ai_stigmer_agentic_workflow_v1_query=fileDesc("CiphaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvcXVlcnkucHJvdG8SHmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MTLvBAoXV29ya2Zsb3dRdWVyeUNvbnRyb2xsZXISigEKA2dldBIqLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd0lkGiguYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93Ii3CuBgpCAEQMiIFdmFsdWUqHHVuYXV0aG9yaXplZCB0byBnZXQgd29ya2Zsb3cSdgoOZ2V0QnlSZWZlcmVuY2USNC5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VSZWZlcmVuY2UaKC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3ciBNC4GAESjQEKDGxpc3RWZXJzaW9ucxI5LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5MaXN0V29ya2Zsb3dWZXJzaW9uc0lucHV0GjwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLkxpc3RXb3JrZmxvd1ZlcnNpb25zUmVzcG9uc2UiBNC4GAESuAEKCmdldFZlcnNpb24SNy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuR2V0V29ya2Zsb3dWZXJzaW9uSW5wdXQaNC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dWZXJzaW9uRW50cnkiO8K4GDcIARAyIgt3b3JrZmxvd19pZCokdW5hdXRob3JpemVkIHRvIGdldCB3b3JrZmxvdyB2ZXJzaW9uGgSg/ysyYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_api,file_ai_stigmer_agentic_workflow_v1_io,file_ai_stigmer_agentic_workflow_v1_version,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowQueryController=serviceDesc(file_ai_stigmer_agentic_workflow_v1_query,0);var file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor=fileDesc("CjlhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza19raW5kX2Rlc2NyaXB0b3IucHJvdG8SHmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MSJHCg5UYXNrRmllbGRHcm91cBIKCgJpZBgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAki1gIKE1Rhc2tGaWVsZERlc2NyaXB0b3ISDAoEbmFtZRgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSOwoEdHlwZRgEIAEoDjItLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5UYXNrRmllbGRUeXBlEhAKCHJlcXVpcmVkGAUgASgIEhUKDWlzX2V4cHJlc3Npb24YBiABKAgSFQoNZGVmYXVsdF92YWx1ZRgHIAEoCRITCgtlbnVtX3ZhbHVlcxgIIAMoCRIcChRqc29uX3NjaGVtYV9mcmFnbWVudBgJIAEoCRIQCghncm91cF9pZBgKIAEoCRIUCgxmaWVsZF9udW1iZXIYCyABKAUSFAoMZWxlbWVudF90eXBlGAwgASgJEhgKEHZhbGlkYXRpb25faGludHMYDSADKAkimgQKElRhc2tLaW5kRGVzY3JpcHRvchI+CgRraW5kGAEgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0tpbmQSFAoMZGlzcGxheV9uYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEkIKCGNhdGVnb3J5GAQgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLlRhc2tLaW5kQ2F0ZWdvcnkSDAoEaWNvbhgFIAEoCRIZChFjb25maWdfcHJvdG9fdHlwZRgGIAEoCRJDCgZmaWVsZHMYByADKAsyMy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuVGFza0ZpZWxkRGVzY3JpcHRvchJECgxmaWVsZF9ncm91cHMYCCADKAsyLi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuVGFza0ZpZWxkR3JvdXASGgoSY29uZmlnX2pzb25fc2NoZW1hGAkgASgJEhoKEm91dHB1dF9qc29uX3NjaGVtYRgKIAEoCRIVCg15YW1sX2V4YW1wbGVzGAsgAygJEhkKEWRvY3VtZW50YXRpb25fdXJsGAwgASgJEhQKDGlzX2FpX25hdGl2ZRgNIAEoCBIhChlyZXF1aXJlc19leHRlcm5hbF9zZXJ2aWNlGA4gASgIIhwKGkdldFRhc2tLaW5kUmVnaXN0cnlSZXF1ZXN0ImYKG0dldFRhc2tLaW5kUmVnaXN0cnlSZXNwb25zZRJHCgtkZXNjcmlwdG9ycxgBIAMoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5UYXNrS2luZERlc2NyaXB0b3Iq9wEKEFRhc2tLaW5kQ2F0ZWdvcnkSIgoeVEFTS19LSU5EX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAASIwofVEFTS19LSU5EX0NBVEVHT1JZX0NPTlRST0xfRkxPVxABEiEKHVRBU0tfS0lORF9DQVRFR09SWV9JTlZPQ0FUSU9OEAISGQoVVEFTS19LSU5EX0NBVEVHT1JZX0FJEAMSGwoXVEFTS19LSU5EX0NBVEVHT1JZX0RBVEEQBBIhCh1UQVNLX0tJTkRfQ0FURUdPUllfR09WRVJOQU5DRRAFEhwKGFRBU0tfS0lORF9DQVRFR09SWV9FVkVOVBAGKqYCCg1UYXNrRmllbGRUeXBlEh8KG1RBU0tfRklFTERfVFlQRV9VTlNQRUNJRklFRBAAEhoKFlRBU0tfRklFTERfVFlQRV9TVFJJTkcQARIZChVUQVNLX0ZJRUxEX1RZUEVfSU5UMzIQAhIZChVUQVNLX0ZJRUxEX1RZUEVfRkxPQVQQAxIYChRUQVNLX0ZJRUxEX1RZUEVfQk9PTBAEEhgKFFRBU0tfRklFTERfVFlQRV9FTlVNEAUSGgoWVEFTS19GSUVMRF9UWVBFX1NUUlVDVBAGEhwKGFRBU0tfRklFTERfVFlQRV9SRVBFQVRFRBAHEhcKE1RBU0tfRklFTERfVFlQRV9NQVAQCBIbChdUQVNLX0ZJRUxEX1RZUEVfTUVTU0FHRRAJYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_enum]);var TaskKindDescriptorSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor,2);var GetTaskKindRegistryResponseSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor,4),TaskKindCategory;(function(TaskKindCategory2){TaskKindCategory2[TaskKindCategory2.UNSPECIFIED=0]="UNSPECIFIED",TaskKindCategory2[TaskKindCategory2.CONTROL_FLOW=1]="CONTROL_FLOW",TaskKindCategory2[TaskKindCategory2.INVOCATION=2]="INVOCATION",TaskKindCategory2[TaskKindCategory2.AI=3]="AI",TaskKindCategory2[TaskKindCategory2.DATA=4]="DATA",TaskKindCategory2[TaskKindCategory2.GOVERNANCE=5]="GOVERNANCE",TaskKindCategory2[TaskKindCategory2.EVENT=6]="EVENT"})(TaskKindCategory||(TaskKindCategory={}));var TaskFieldType;(function(TaskFieldType2){TaskFieldType2[TaskFieldType2.UNSPECIFIED=0]="UNSPECIFIED",TaskFieldType2[TaskFieldType2.STRING=1]="STRING",TaskFieldType2[TaskFieldType2.INT32=2]="INT32",TaskFieldType2[TaskFieldType2.FLOAT=3]="FLOAT",TaskFieldType2[TaskFieldType2.BOOL=4]="BOOL",TaskFieldType2[TaskFieldType2.ENUM=5]="ENUM",TaskFieldType2[TaskFieldType2.STRUCT=6]="STRUCT",TaskFieldType2[TaskFieldType2.REPEATED=7]="REPEATED",TaskFieldType2[TaskFieldType2.MAP=8]="MAP",TaskFieldType2[TaskFieldType2.MESSAGE=9]="MESSAGE"})(TaskFieldType||(TaskFieldType={}));var file_ai_stigmer_agentic_workflow_v1_task_kind_registry_query=fileDesc("Cj1haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza19raW5kX3JlZ2lzdHJ5X3F1ZXJ5LnByb3RvEh5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEysgEKH1Rhc2tLaW5kUmVnaXN0cnlRdWVyeUNvbnRyb2xsZXISjgEKE2dldFRhc2tLaW5kUmVnaXN0cnkSOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuR2V0VGFza0tpbmRSZWdpc3RyeVJlcXVlc3QaOy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuR2V0VGFza0tpbmRSZWdpc3RyeVJlc3BvbnNlYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_task_kind_descriptor]),TaskKindRegistryQueryController=serviceDesc(file_ai_stigmer_agentic_workflow_v1_task_kind_registry_query,0);var file_ai_stigmer_agentic_workflowexecution_v1_enum=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvZW51bS5wcm90bxInYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxKtsBCg5FeGVjdXRpb25QaGFzZRIfChtFWEVDVVRJT05fUEhBU0VfVU5TUEVDSUZJRUQQABIVChFFWEVDVVRJT05fUEVORElORxABEhkKFUVYRUNVVElPTl9JTl9QUk9HUkVTUxACEhcKE0VYRUNVVElPTl9DT01QTEVURUQQAxIUChBFWEVDVVRJT05fRkFJTEVEEAQSFwoTRVhFQ1VUSU9OX0NBTkNFTExFRBAFEhgKFEVYRUNVVElPTl9URVJNSU5BVEVEEAYSFAoQRVhFQ1VUSU9OX1BBVVNFRBAHKoQCChBXb3JrZmxvd1Rhc2tUeXBlEiIKHldPUktGTE9XX1RBU0tfVFlQRV9VTlNQRUNJRklFRBAAEiIKHldPUktGTE9XX1RBU0tfQUdFTlRfSU5WT0NBVElPThABEhoKFldPUktGTE9XX1RBU0tfQVBQUk9WQUwQAhIaChZXT1JLRkxPV19UQVNLX0FQSV9DQUxMEAMSHQoZV09SS0ZMT1dfVEFTS19DT05ESVRJT05BTBAEEhoKFldPUktGTE9XX1RBU0tfUEFSQUxMRUwQBRIbChdXT1JLRkxPV19UQVNLX1RSQU5TRk9STRAGEhgKFFdPUktGTE9XX1RBU0tfQ1VTVE9NEAcq6gEKEldvcmtmbG93VGFza1N0YXR1cxIkCiBXT1JLRkxPV19UQVNLX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVdPUktGTE9XX1RBU0tfUEVORElORxABEh0KGVdPUktGTE9XX1RBU0tfSU5fUFJPR1JFU1MQAhIbChdXT1JLRkxPV19UQVNLX0NPTVBMRVRFRBADEhgKFFdPUktGTE9XX1RBU0tfRkFJTEVEEAQSGQoVV09SS0ZMT1dfVEFTS19TS0lQUEVEEAUSIgoeV09SS0ZMT1dfVEFTS19XQUlUSU5HX0FQUFJPVkFMEAZiBnByb3RvMw"),ExecutionPhase2;(function(ExecutionPhase3){ExecutionPhase3[ExecutionPhase3.EXECUTION_PHASE_UNSPECIFIED=0]="EXECUTION_PHASE_UNSPECIFIED",ExecutionPhase3[ExecutionPhase3.EXECUTION_PENDING=1]="EXECUTION_PENDING",ExecutionPhase3[ExecutionPhase3.EXECUTION_IN_PROGRESS=2]="EXECUTION_IN_PROGRESS",ExecutionPhase3[ExecutionPhase3.EXECUTION_COMPLETED=3]="EXECUTION_COMPLETED",ExecutionPhase3[ExecutionPhase3.EXECUTION_FAILED=4]="EXECUTION_FAILED",ExecutionPhase3[ExecutionPhase3.EXECUTION_CANCELLED=5]="EXECUTION_CANCELLED",ExecutionPhase3[ExecutionPhase3.EXECUTION_TERMINATED=6]="EXECUTION_TERMINATED",ExecutionPhase3[ExecutionPhase3.EXECUTION_PAUSED=7]="EXECUTION_PAUSED"})(ExecutionPhase2||(ExecutionPhase2={}));var WorkflowTaskType;(function(WorkflowTaskType2){WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_TYPE_UNSPECIFIED=0]="WORKFLOW_TASK_TYPE_UNSPECIFIED",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_AGENT_INVOCATION=1]="WORKFLOW_TASK_AGENT_INVOCATION",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_APPROVAL=2]="WORKFLOW_TASK_APPROVAL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_API_CALL=3]="WORKFLOW_TASK_API_CALL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_CONDITIONAL=4]="WORKFLOW_TASK_CONDITIONAL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_PARALLEL=5]="WORKFLOW_TASK_PARALLEL",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_TRANSFORM=6]="WORKFLOW_TASK_TRANSFORM",WorkflowTaskType2[WorkflowTaskType2.WORKFLOW_TASK_CUSTOM=7]="WORKFLOW_TASK_CUSTOM"})(WorkflowTaskType||(WorkflowTaskType={}));var WorkflowTaskStatus;(function(WorkflowTaskStatus2){WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_STATUS_UNSPECIFIED=0]="WORKFLOW_TASK_STATUS_UNSPECIFIED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_PENDING=1]="WORKFLOW_TASK_PENDING",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_IN_PROGRESS=2]="WORKFLOW_TASK_IN_PROGRESS",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_COMPLETED=3]="WORKFLOW_TASK_COMPLETED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_FAILED=4]="WORKFLOW_TASK_FAILED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_SKIPPED=5]="WORKFLOW_TASK_SKIPPED",WorkflowTaskStatus2[WorkflowTaskStatus2.WORKFLOW_TASK_WAITING_APPROVAL=6]="WORKFLOW_TASK_WAITING_APPROVAL"})(WorkflowTaskStatus||(WorkflowTaskStatus={}));var file_ai_stigmer_agentic_workflowexecution_v1_spec=fileDesc("CjJhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvc3BlYy5wcm90bxInYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxIrwEChVXb3JrZmxvd0V4ZWN1dGlvblNwZWMSHAoUd29ya2Zsb3dfaW5zdGFuY2VfaWQYASABKAkSEwoLd29ya2Zsb3dfaWQYBiABKAkSFwoPdHJpZ2dlcl9tZXNzYWdlGAMgASgJEm0KEHRyaWdnZXJfbWV0YWRhdGEYBCADKAsyUy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb25TcGVjLlRyaWdnZXJNZXRhZGF0YUVudHJ5EmMKC3J1bnRpbWVfZW52GAUgAygLMk4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uU3BlYy5SdW50aW1lRW52RW50cnkSFgoOY2FsbGJhY2tfdG9rZW4YByABKAwSSAoQZXhlY3V0aW9uX3RhcmdldBgIIAEoDjIuLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkV4ZWN1dGlvblRhcmdldBo2ChRUcmlnZ2VyTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGmkKD1J1bnRpbWVFbnZFbnRyeRILCgNrZXkYASABKAkSRQoFdmFsdWUYAiABKAsyNi5haS5zdGlnbWVyLmFnZW50aWMuZXhlY3V0aW9uY29udGV4dC52MS5FeGVjdXRpb25WYWx1ZToCOAFiBnByb3RvMw",[file_ai_stigmer_agentic_executioncontext_v1_spec,file_ai_stigmer_agentic_session_v1_enum]),WorkflowExecutionSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_spec,0);var file_ai_stigmer_agentic_workflowexecution_v1_api=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvYXBpLnByb3RvEidhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEi3QIKEVdvcmtmbG93RXhlY3V0aW9uEjEKC2FwaV92ZXJzaW9uGAEgASgJQhy6SBlyFwoVYWdlbnRpYy5zdGlnbWVyLmFpL3YxEiYKBGtpbmQYAiABKAlCGLpIFXITChFXb3JrZmxvd0V4ZWN1dGlvbhJNCghtZXRhZGF0YRgDIAEoCzIzLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZU1ldGFkYXRhQga6SAPIAQESTAoEc3BlYxgEIAEoCzI+LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvblNwZWMSUAoGc3RhdHVzGAUgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uU3RhdHVzIqQFChdXb3JrZmxvd0V4ZWN1dGlvblN0YXR1cxI/CgVhdWRpdBhjIAEoCzIwLmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0ElAKBXBoYXNlGAEgASgOMjcuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblBoYXNlQgi6SAWCAQIQARJECgV0YXNrcxgCIAMoCzI1LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd1Rhc2sSJwoGb3V0cHV0GAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBINCgVlcnJvchgEIAEoCRISCgpzdGFydGVkX2F0GAUgASgJEhQKDGNvbXBsZXRlZF9hdBgGIAEoCRIcChR0ZW1wb3JhbF93b3JrZmxvd19pZBgHIAEoCRJbChFwZW5kaW5nX2FwcHJvdmFscxgJIAMoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd1BlbmRpbmdBcHByb3ZhbBIZChF0b3RhbF9jb3N0X21pY3JvcxgKIAEoAxIaChJ0b3RhbF9pbnB1dF90b2tlbnMYCyABKAMSGwoTdG90YWxfb3V0cHV0X3Rva2VucxgMIAEoAxIdChV3b3JrZmxvd192ZXJzaW9uX2hhc2gYDSABKAkSYAoUcGVuZGluZ19maWxlX3Jldmlld3MYDiADKAsyQi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dQZW5kaW5nRmlsZVJldmlldyKEAQoXV29ya2Zsb3dQZW5kaW5nQXBwcm92YWwSRwoIYXBwcm92YWwYASABKAsyNS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuUGVuZGluZ0FwcHJvdmFsEiAKGGNoaWxkX2FnZW50X2V4ZWN1dGlvbl9pZBgCIAEoCSJUChlXb3JrZmxvd1BlbmRpbmdGaWxlUmV2aWV3EiAKGGNoaWxkX2FnZW50X2V4ZWN1dGlvbl9pZBgBIAEoCRIVCg1jaGFuZ2Vfc2V0X2lkGAIgAygJIv8DCgxXb3JrZmxvd1Rhc2sSDwoHdGFza19pZBgBIAEoCRIRCgl0YXNrX25hbWUYAiABKAkSVgoJdGFza190eXBlGAMgASgOMjkuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93VGFza1R5cGVCCLpIBYIBAhABEiYKBWlucHV0GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgZvdXRwdXQYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0ElUKBnN0YXR1cxgGIAEoDjI7LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd1Rhc2tTdGF0dXNCCLpIBYIBAhABEhIKCnN0YXJ0ZWRfYXQYByABKAkSFAoMY29tcGxldGVkX2F0GAggASgJEg0KBWVycm9yGAkgASgJEikKCG1ldGFkYXRhGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxhcnRpZmFjdF9pZHMYCyADKAkSEwoLY29zdF9taWNyb3MYDCABKAMSFAoMaW5wdXRfdG9rZW5zGA0gASgDEhUKDW91dHB1dF90b2tlbnMYDiABKAMSDwoHdWlfaGludBgPIAEoCWIGcHJvdG8z",[file_ai_stigmer_agentic_agentexecution_v1_approval,file_ai_stigmer_agentic_workflowexecution_v1_enum,file_ai_stigmer_agentic_workflowexecution_v1_spec,file_ai_stigmer_commons_apiresource_metadata,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_struct]),WorkflowExecutionSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_api,0);var file_ai_stigmer_agentic_workflowexecution_v1_event=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvZXZlbnQucHJvdG8SJ2FpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MSKGEQoWV29ya2Zsb3dFeGVjdXRpb25FdmVudBIZCghldmVudF9pZBgBIAEoCUIHukgEcgIQARJYCgpldmVudF90eXBlGAIgASgOMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXZlbnRUeXBlQgi6SAWCAQIQARIXCg9zZXF1ZW5jZV9udW1iZXIYAyABKAQSHAoLb2NjdXJyZWRfYXQYBCABKAlCB7pIBHICEAESEQoJdGFza19uYW1lGAUgASgJEl0KEWV4ZWN1dGlvbl9zdGFydGVkGAogASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblN0YXJ0ZWRQYXlsb2FkSAASYQoTZXhlY3V0aW9uX2NvbXBsZXRlZBgLIAEoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25Db21wbGV0ZWRQYXlsb2FkSAASWwoQZXhlY3V0aW9uX2ZhaWxlZBgMIAEoCzI/LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25GYWlsZWRQYXlsb2FkSAASWwoQZXhlY3V0aW9uX3BhdXNlZBgNIAEoCzI/LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25QYXVzZWRQYXlsb2FkSAASXQoRZXhlY3V0aW9uX3Jlc3VtZWQYDiABKAsyQC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuRXhlY3V0aW9uUmVzdW1lZFBheWxvYWRIABJhChNleGVjdXRpb25fY2FuY2VsbGVkGA8gASgLMkIuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvbkNhbmNlbGxlZFBheWxvYWRIABJjChRleGVjdXRpb25fdGVybWluYXRlZBgQIAEoCzJDLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25UZXJtaW5hdGVkUGF5bG9hZEgAElMKDHRhc2tfc3RhcnRlZBgUIAEoCzI7LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5UYXNrU3RhcnRlZFBheWxvYWRIABJXCg50YXNrX2NvbXBsZXRlZBgVIAEoCzI9LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5UYXNrQ29tcGxldGVkUGF5bG9hZEgAElEKC3Rhc2tfZmFpbGVkGBYgASgLMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlRhc2tGYWlsZWRQYXlsb2FkSAASUwoMdGFza19za2lwcGVkGBcgASgLMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlRhc2tTa2lwcGVkUGF5bG9hZEgAElUKDXRhc2tfcmV0cnlpbmcYGCABKAsyPC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuVGFza1JldHJ5aW5nUGF5bG9hZEgAEl4KEmFnZW50X2NhbGxfc3RhcnRlZBgeIAEoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5BZ2VudENhbGxTdGFydGVkUGF5bG9hZEgAEmAKE2FnZW50X2NhbGxfcHJvZ3Jlc3MYHyABKAsyQS5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuQWdlbnRDYWxsUHJvZ3Jlc3NQYXlsb2FkSAASYgoUYWdlbnRfY2FsbF9jb21wbGV0ZWQYICABKAsyQi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuQWdlbnRDYWxsQ29tcGxldGVkUGF5bG9hZEgAEl8KEmFwcHJvdmFsX3JlcXVlc3RlZBgoIAEoCzJBLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5BcHByb3ZhbFJlcXVlc3RlZFBheWxvYWRIABJdChFhcHByb3ZhbF9yZXNvbHZlZBgpIAEoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5BcHByb3ZhbFJlc29sdmVkUGF5bG9hZEgAEl0KEWJ1ZGdldF9jaGVja3BvaW50GDIgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkJ1ZGdldENoZWNrcG9pbnRQYXlsb2FkSAASWQoPc2lnbmFsX3JlY2VpdmVkGDwgASgLMj4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlNpZ25hbFJlY2VpdmVkUGF5bG9hZEgAElUKDWV2ZW50X2VtaXR0ZWQYPSABKAsyPC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuRXZlbnRFbWl0dGVkUGF5bG9hZEgAElsKEGFydGlmYWN0X2NyZWF0ZWQYRiABKAsyPy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuQXJ0aWZhY3RDcmVhdGVkUGF5bG9hZEgAQgkKB3BheWxvYWQiYQoXRXhlY3V0aW9uU3RhcnRlZFBheWxvYWQSEwoLdG90YWxfdGFza3MYASABKAUSEwoLd29ya2Zsb3dfaWQYAiABKAkSHAoUd29ya2Zsb3dfaW5zdGFuY2VfaWQYAyABKAkikgEKGUV4ZWN1dGlvbkNvbXBsZXRlZFBheWxvYWQSLwoOb3V0cHV0X3N1bW1hcnkYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhMKC2R1cmF0aW9uX21zGAIgASgDEhkKEXRvdGFsX2Nvc3RfbWljcm9zGAMgASgDEhQKDHRvdGFsX3Rva2VucxgEIAEoAyJWChZFeGVjdXRpb25GYWlsZWRQYXlsb2FkEg0KBWVycm9yGAEgASgJEhgKEGZhaWxlZF90YXNrX25hbWUYAiABKAkSEwoLZHVyYXRpb25fbXMYAyABKAMiOwoWRXhlY3V0aW9uUGF1c2VkUGF5bG9hZBIOCgZyZWFzb24YASABKAkSEQoJcGF1c2VkX2J5GAIgASgJIi0KF0V4ZWN1dGlvblJlc3VtZWRQYXlsb2FkEhIKCnJlc3VtZWRfYnkYASABKAkiQQoZRXhlY3V0aW9uQ2FuY2VsbGVkUGF5bG9hZBIOCgZyZWFzb24YASABKAkSFAoMY2FuY2VsbGVkX2J5GAIgASgJIkMKGkV4ZWN1dGlvblRlcm1pbmF0ZWRQYXlsb2FkEg4KBnJlYXNvbhgBIAEoCRIVCg10ZXJtaW5hdGVkX2J5GAIgASgJIqEBChJUYXNrU3RhcnRlZFBheWxvYWQSQwoJdGFza19raW5kGAEgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0tpbmQSLgoNaW5wdXRfc3VtbWFyeRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoOYXR0ZW1wdF9udW1iZXIYAyABKAUiywEKFFRhc2tDb21wbGV0ZWRQYXlsb2FkEkMKCXRhc2tfa2luZBgBIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tLaW5kEhMKC2R1cmF0aW9uX21zGAIgASgDEi8KDm91dHB1dF9zdW1tYXJ5GAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBITCgtjb3N0X21pY3JvcxgEIAEoAxITCgt0b2tlbnNfdXNlZBgFIAEoAyK+AQoRVGFza0ZhaWxlZFBheWxvYWQSQwoJdGFza19raW5kGAEgASgOMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0tpbmQSDQoFZXJyb3IYAiABKAkSFgoOYXR0ZW1wdF9udW1iZXIYAyABKAUSFAoMbWF4X2F0dGVtcHRzGAQgASgFEhIKCndpbGxfcmV0cnkYBSABKAgSEwoLZHVyYXRpb25fbXMYBiABKAMiaQoSVGFza1NraXBwZWRQYXlsb2FkEkMKCXRhc2tfa2luZBgBIAEoDjIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tLaW5kEg4KBnJlYXNvbhgCIAEoCSJVChNUYXNrUmV0cnlpbmdQYXlsb2FkEhYKDmZhaWxlZF9hdHRlbXB0GAEgASgFEhQKDG5leHRfYXR0ZW1wdBgCIAEoBRIQCghkZWxheV9tcxgDIAEoAyJiChdBZ2VudENhbGxTdGFydGVkUGF5bG9hZBIaChJjaGlsZF9leGVjdXRpb25faWQYASABKAkSEgoKYWdlbnRfc2x1ZxgCIAEoCRIXCg9tZXNzYWdlX3N1bW1hcnkYAyABKAki5wEKGEFnZW50Q2FsbFByb2dyZXNzUGF5bG9hZBIaChJjaGlsZF9leGVjdXRpb25faWQYASABKAkSSQoLYWdlbnRfcGhhc2UYAiABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRXhlY3V0aW9uUGhhc2USGQoRY3VycmVudF90b29sX25hbWUYAyABKAkSFwoPdG9rZW5zX2NvbnN1bWVkGAQgASgDEhYKDm1lc3NhZ2VzX2NvdW50GAUgASgFEhgKEHRvb2xfY2FsbHNfY291bnQYBiABKAUi1AEKGUFnZW50Q2FsbENvbXBsZXRlZFBheWxvYWQSGgoSY2hpbGRfZXhlY3V0aW9uX2lkGAEgASgJEkkKC2FnZW50X3BoYXNlGAIgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblBoYXNlEhMKC2R1cmF0aW9uX21zGAMgASgDEhcKD3Rva2Vuc19jb25zdW1lZBgEIAEoAxITCgtjb3N0X21pY3JvcxgFIAEoAxINCgVlcnJvchgGIAEoCSI0ChVIdW1hbklucHV0T3V0Y29tZUluZm8SDAoEbmFtZRgBIAEoCRINCgVsYWJlbBgCIAEoCSLfAgoYQXBwcm92YWxSZXF1ZXN0ZWRQYXlsb2FkEg4KBnByb21wdBgBIAEoCRIRCglhcHByb3ZlcnMYAiADKAkSFwoPdGltZW91dF9zZWNvbmRzGAMgASgFEhQKDHRvb2xfY2FsbF9pZBgEIAEoCRIaChJjaGlsZF9leGVjdXRpb25faWQYBSABKAkSUAoIb3V0Y29tZXMYBiADKAsyPi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuSHVtYW5JbnB1dE91dGNvbWVJbmZvEiwKC2Zvcm1fc2NoZW1hGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBInCgdwYXlsb2FkGAggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEg8KB3VpX2hpbnQYCSABKAkSGwoTcGF5bG9hZF9hcnRpZmFjdF9pZBgKIAEoCSLxAQoXQXBwcm92YWxSZXNvbHZlZFBheWxvYWQSRAoGYWN0aW9uGAEgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLmFnZW50ZXhlY3V0aW9uLnYxLkFwcHJvdmFsQWN0aW9uEhMKC3Jlc29sdmVkX2J5GAIgASgJEg8KB2NvbW1lbnQYAyABKAkSGAoQd2FpdF9kdXJhdGlvbl9tcxgEIAEoAxJQChFyZXNvbHZlZF9ieV9hY3RvchgFIAEoCzI1LmFpLnN0aWdtZXIuY29tbW9ucy5hcGlyZXNvdXJjZS5BcGlSZXNvdXJjZUF1ZGl0QWN0b3Ii9wEKF0J1ZGdldENoZWNrcG9pbnRQYXlsb2FkEhwKFGNvc3RfY29uc3VtZWRfbWljcm9zGAEgASgDEh0KFWNvc3RfcmVtYWluaW5nX21pY3JvcxgCIAEoAxIXCg90b2tlbnNfY29uc3VtZWQYAyABKAMSGAoQdG9rZW5zX3JlbWFpbmluZxgEIAEoAxIaChJ0aHJlc2hvbGRfYnJlYWNoZWQYBSABKAgSUAoSb25fZXhjZWVkZWRfcG9saWN5GAYgASgOMjQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLkJ1ZGdldEV4Y2VlZGVkUG9saWN5Il4KFVNpZ25hbFJlY2VpdmVkUGF5bG9hZBITCgtzaWduYWxfbmFtZRgBIAEoCRIwCg9wYXlsb2FkX3N1bW1hcnkYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IlYKE0V2ZW50RW1pdHRlZFBheWxvYWQSEgoKZXZlbnRfdHlwZRgBIAEoCRIUCgxldmVudF9zb3VyY2UYAiABKAkSFQoNZXZlbnRfc3ViamVjdBgDIAEoCSJtChZBcnRpZmFjdENyZWF0ZWRQYXlsb2FkEhMKC2FydGlmYWN0X2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIUCgxjb250ZW50X3R5cGUYAyABKAkSEgoKc2l6ZV9ieXRlcxgEIAEoAyqJBAoRV29ya2Zsb3dFdmVudFR5cGUSIwofd29ya2Zsb3dfZXZlbnRfdHlwZV91bnNwZWNpZmllZBAAEhUKEWV4ZWN1dGlvbl9zdGFydGVkEAESFwoTZXhlY3V0aW9uX2NvbXBsZXRlZBACEhQKEGV4ZWN1dGlvbl9mYWlsZWQQAxIUChBleGVjdXRpb25fcGF1c2VkEAQSFQoRZXhlY3V0aW9uX3Jlc3VtZWQQBRIXChNleGVjdXRpb25fY2FuY2VsbGVkEAYSGAoUZXhlY3V0aW9uX3Rlcm1pbmF0ZWQQBxIQCgx0YXNrX3N0YXJ0ZWQQCxISCg50YXNrX2NvbXBsZXRlZBAMEg8KC3Rhc2tfZmFpbGVkEA0SEAoMdGFza19za2lwcGVkEA4SEQoNdGFza19yZXRyeWluZxAPEhYKEmFnZW50X2NhbGxfc3RhcnRlZBAVEhcKE2FnZW50X2NhbGxfcHJvZ3Jlc3MQFhIYChRhZ2VudF9jYWxsX2NvbXBsZXRlZBAXEhYKEmFwcHJvdmFsX3JlcXVlc3RlZBAfEhUKEWFwcHJvdmFsX3Jlc29sdmVkECASFQoRYnVkZ2V0X2NoZWNrcG9pbnQQKRITCg9zaWduYWxfcmVjZWl2ZWQQMxIRCg1ldmVudF9lbWl0dGVkEDQSFAoQYXJ0aWZhY3RfY3JlYXRlZBA1YgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_workflow_v1_enum,file_ai_stigmer_commons_apiresource_status,file_buf_validate_validate,file_google_protobuf_struct]);var WorkflowEventType;(function(WorkflowEventType2){WorkflowEventType2[WorkflowEventType2.workflow_event_type_unspecified=0]="workflow_event_type_unspecified",WorkflowEventType2[WorkflowEventType2.execution_started=1]="execution_started",WorkflowEventType2[WorkflowEventType2.execution_completed=2]="execution_completed",WorkflowEventType2[WorkflowEventType2.execution_failed=3]="execution_failed",WorkflowEventType2[WorkflowEventType2.execution_paused=4]="execution_paused",WorkflowEventType2[WorkflowEventType2.execution_resumed=5]="execution_resumed",WorkflowEventType2[WorkflowEventType2.execution_cancelled=6]="execution_cancelled",WorkflowEventType2[WorkflowEventType2.execution_terminated=7]="execution_terminated",WorkflowEventType2[WorkflowEventType2.task_started=11]="task_started",WorkflowEventType2[WorkflowEventType2.task_completed=12]="task_completed",WorkflowEventType2[WorkflowEventType2.task_failed=13]="task_failed",WorkflowEventType2[WorkflowEventType2.task_skipped=14]="task_skipped",WorkflowEventType2[WorkflowEventType2.task_retrying=15]="task_retrying",WorkflowEventType2[WorkflowEventType2.agent_call_started=21]="agent_call_started",WorkflowEventType2[WorkflowEventType2.agent_call_progress=22]="agent_call_progress",WorkflowEventType2[WorkflowEventType2.agent_call_completed=23]="agent_call_completed",WorkflowEventType2[WorkflowEventType2.approval_requested=31]="approval_requested",WorkflowEventType2[WorkflowEventType2.approval_resolved=32]="approval_resolved",WorkflowEventType2[WorkflowEventType2.budget_checkpoint=41]="budget_checkpoint",WorkflowEventType2[WorkflowEventType2.signal_received=51]="signal_received",WorkflowEventType2[WorkflowEventType2.event_emitted=52]="event_emitted",WorkflowEventType2[WorkflowEventType2.artifact_created=53]="artifact_created"})(WorkflowEventType||(WorkflowEventType={}));var file_ai_stigmer_agentic_workflowexecution_v1_io=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvaW8ucHJvdG8SJ2FpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MSIsChNXb3JrZmxvd0V4ZWN1dGlvbklkEhUKBXZhbHVlGAEgASgJQga6SAPIAQEiIwoKV29ya2Zsb3dJZBIVCgV2YWx1ZRgBIAEoCUIGukgDyAEBInkKFVdvcmtmbG93RXhlY3V0aW9uTGlzdBITCgt0b3RhbF9wYWdlcxgBIAEoBRJLCgdlbnRyaWVzGAIgAygLMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIuQCCh1MaXN0V29ya2Zsb3dFeGVjdXRpb25zUmVxdWVzdBIRCglwYWdlX3NpemUYASABKAUSEgoKcGFnZV90b2tlbhgCIAEoCRJGCgVwaGFzZRgDIAEoDjI3LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25QaGFzZRIMCgR0YWdzGAQgAygJElAKBmZpbHRlchgFIAEoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25GaWx0ZXJDcml0ZXJpYRJPCgpzb3J0X2ZpZWxkGAYgASgOMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblNvcnRGaWVsZBIWCg5zb3J0X2FzY2VuZGluZxgHIAEoCBILCgNvcmcYCCABKAkiqAIKJ0xpc3RXb3JrZmxvd0V4ZWN1dGlvbnNCeVdvcmtmbG93UmVxdWVzdBIbCgt3b3JrZmxvd19pZBgBIAEoCUIGukgDyAEBEhEKCXBhZ2Vfc2l6ZRgCIAEoBRISCgpwYWdlX3Rva2VuGAMgASgJElAKBmZpbHRlchgEIAEoCzJALmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5FeGVjdXRpb25GaWx0ZXJDcml0ZXJpYRJPCgpzb3J0X2ZpZWxkGAUgASgOMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblNvcnRGaWVsZBIWCg5zb3J0X2FzY2VuZGluZxgGIAEoCCLmAgoiV29ya2Zsb3dFeGVjdXRpb25VcGRhdGVTdGF0dXNJbnB1dBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAESWAoGc3RhdHVzGAIgASgLMkAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uU3RhdHVzQga6SAPIAQESTwoGZXZlbnRzGAogAygLMj8uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uRXZlbnQSIAoYdXBkYXRlX3BlbmRpbmdfYXBwcm92YWxzGAsgASgIEiMKG3VwZGF0ZV9wZW5kaW5nX2ZpbGVfcmV2aWV3cxgMIAEoCBIvCidwZW5kaW5nX3VwZGF0ZV9jaGlsZF9hZ2VudF9leGVjdXRpb25faWQYDSABKAkivgEKG1N1Ym1pdFdvcmtmbG93QXBwcm92YWxJbnB1dBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAESHQoMdG9vbF9jYWxsX2lkGAIgASgJQge6SARyAhABElAKBmFjdGlvbhgDIAEoDjI0LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5BcHByb3ZhbEFjdGlvbkIKukgHggEEEAEgABIPCgdjb21tZW50GAQgASgJIqEDCh9TdWJtaXRXb3JrZmxvd0ZpbGVEZWNpc2lvbklucHV0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIpChhjaGlsZF9hZ2VudF9leGVjdXRpb25faWQYAiABKAlCB7pIBHICEAESHgoNY2hhbmdlX3NldF9pZBgDIAEoCUIHukgEcgIQARJSCgVzY29wZRgEIAEoDjI3LmFpLnN0aWdtZXIuYWdlbnRpYy5hZ2VudGV4ZWN1dGlvbi52MS5GaWxlRGVjaXNpb25TY29wZUIKukgHggEEEAEgABIWCg5maWxlX2NoYW5nZV9pZBgFIAEoCRJUCgZhY3Rpb24YBiABKA4yOC5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuRmlsZURlY2lzaW9uQWN0aW9uQgq6SAeCAQQQASAAEiAKD2V4cGVjdGVkX2RpZ2VzdBgHIAEoCUIHukgEcgIQARIOCgZyZWFzb24YCCABKAkSIAoYYWNrbm93bGVkZ2VfdW5yZXZpZXdhYmxlGAkgASgIIsUBCh9TdWJtaXRXb3JrZmxvd1Rhc2tBcHByb3ZhbElucHV0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIaCgl0YXNrX25hbWUYAiABKAlCB7pIBHICEAESGAoHb3V0Y29tZRgDIAEoCUIHukgEcgIQARIqCglmb3JtX2RhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhAKCHJldmlld2VyGAUgASgJEg8KB2NvbW1lbnQYBiABKAkiQQohU3Vic2NyaWJlV29ya2Zsb3dFeGVjdXRpb25SZXF1ZXN0EhwKDGV4ZWN1dGlvbl9pZBgBIAEoCUIGukgDyAEBIkMKHENhbmNlbFdvcmtmbG93RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAESDgoGcmVhc29uGAIgASgJIkYKH1Rlcm1pbmF0ZVdvcmtmbG93RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAESDgoGcmVhc29uGAIgASgJIkQKHVJlY292ZXJXb3JrZmxvd0V4ZWN1dGlvbklucHV0EhMKAmlkGAEgASgJQge6SARyAhABEg4KBnJlYXNvbhgCIAEoCSJCChtQYXVzZVdvcmtmbG93RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAESDgoGcmVhc29uGAIgASgJIjMKHFJlc3VtZVdvcmtmbG93RXhlY3V0aW9uSW5wdXQSEwoCaWQYASABKAlCB7pIBHICEAEikQEKD1NlbmRTaWduYWxJbnB1dBIdCgxleGVjdXRpb25faWQYASABKAlCB7pIBHICEAESHAoLc2lnbmFsX25hbWUYAiABKAlCB7pIBHICEAESKAoHcGF5bG9hZBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPaWRlbXBvdGVuY3lfa2V5GAQgASgJIsIBChJHZXRFdmVudExvZ1JlcXVlc3QSHQoMZXhlY3V0aW9uX2lkGAEgASgJQge6SARyAhABEhYKDmFmdGVyX3NlcXVlbmNlGAIgASgEEk8KC2V2ZW50X3R5cGVzGAMgAygOMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXZlbnRUeXBlEhEKCXRhc2tfbmFtZRgEIAEoCRIRCglwYWdlX3NpemUYBSABKAUikQEKE0dldEV2ZW50TG9nUmVzcG9uc2USTwoGZXZlbnRzGAEgAygLMj8uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uRXZlbnQSEAoIaGFzX21vcmUYAiABKAgSFwoPbGF0ZXN0X3NlcXVlbmNlGAMgASgEIqABChZTdWJzY3JpYmVFdmVudHNSZXF1ZXN0Eh0KDGV4ZWN1dGlvbl9pZBgBIAEoCUIHukgEcgIQARIWCg5hZnRlcl9zZXF1ZW5jZRgCIAEoBBJPCgtldmVudF90eXBlcxgDIAMoDjI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V2ZW50VHlwZSKMAwoXRXhlY3V0aW9uRmlsdGVyQ3JpdGVyaWESRwoGcGhhc2VzGAEgAygOMjcuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblBoYXNlEjEKDXN0YXJ0ZWRfYWZ0ZXIYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjIKDnN0YXJ0ZWRfYmVmb3JlGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgxtaW5fZHVyYXRpb24YBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SLwoMbWF4X2R1cmF0aW9uGAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEhcKD21pbl9jb3N0X21pY3JvcxgGIAEoAxIXCg9tYXhfY29zdF9taWNyb3MYByABKAMSGAoQZmFpbGVkX3Rhc2tfbmFtZRgIIAEoCRITCgtoYXNfcmV0cmllcxgJIAEoCCKYAQoaR2V0RXhlY3V0aW9uU3VtbWFyeVJlcXVlc3QSFAoDb3JnGAEgASgJQge6SARyAhABEk8KC3RpbWVfd2luZG93GAIgASgOMjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlN1bW1hcnlUaW1lV2luZG93EhMKC3dvcmtmbG93X2lkGAMgASgJIqMEChBFeGVjdXRpb25TdW1tYXJ5EhQKDGFjdGl2ZV9jb3VudBgBIAEoBRJgCgxwaGFzZV9jb3VudHMYAiADKAsySi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuRXhlY3V0aW9uU3VtbWFyeS5QaGFzZUNvdW50c0VudHJ5ElAKCnRvdGFsX2Nvc3QYAyABKAsyPC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dDb3N0U3VtbWFyeRIvCgxhdmdfZHVyYXRpb24YBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SWwoVdG9wX2ZhaWxpbmdfd29ya2Zsb3dzGAUgAygLMjwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RmFpbHVyZVJhbmsSWAoQY29zdF9ieV93b3JrZmxvdxgGIAMoCzI+LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0Nvc3RCcmVha2Rvd24SEwoLdG90YWxfY291bnQYByABKAUSFAoMc3VjY2Vzc19yYXRlGAggASgBGjIKEFBoYXNlQ291bnRzRW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASJmChNXb3JrZmxvd0Nvc3RTdW1tYXJ5EhYKDnRvdGFsX2Nvc3RfdXNkGAEgASgBEhoKEnRvdGFsX2lucHV0X3Rva2VucxgCIAEoAxIbChN0b3RhbF9vdXRwdXRfdG9rZW5zGAMgASgDIloKE1dvcmtmbG93RmFpbHVyZVJhbmsSFQoNd29ya2Zsb3dfc2x1ZxgBIAEoCRIVCg13b3JrZmxvd19uYW1lGAIgASgJEhUKDWZhaWx1cmVfY291bnQYAyABKAUidgoVV29ya2Zsb3dDb3N0QnJlYWtkb3duEhUKDXdvcmtmbG93X3NsdWcYASABKAkSFQoNd29ya2Zsb3dfbmFtZRgCIAEoCRIWCg50b3RhbF9jb3N0X3VzZBgDIAEoARIXCg9leGVjdXRpb25fY291bnQYBCABKAUiWgobTGlzdFBlbmRpbmdBcHByb3ZhbHNSZXF1ZXN0EhQKA29yZxgBIAEoCUIHukgEcgIQARIRCglwYWdlX3NpemUYAiABKAUSEgoKcGFnZV90b2tlbhgDIAEoCSKFAgoPUGVuZGluZ0FwcHJvdmFsEhQKDGV4ZWN1dGlvbl9pZBgBIAEoCRIVCg13b3JrZmxvd19uYW1lGAIgASgJEhEKCXRhc2tfbmFtZRgDIAEoCRIRCglyZXF1ZXN0ZXIYBCABKAkSMAoMcmVxdWVzdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp0aW1lb3V0X2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgtmb3JtX3NjaGVtYRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHdWlfaGludBgIIAEoCSKPAQoUUGVuZGluZ0FwcHJvdmFsc0xpc3QSSQoHZW50cmllcxgBIAMoCzI4LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5QZW5kaW5nQXBwcm92YWwSEwoLdG90YWxfY291bnQYAiABKAUSFwoPbmV4dF9wYWdlX3Rva2VuGAMgASgJKsIBChJFeGVjdXRpb25Tb3J0RmllbGQSJAogRVhFQ1VUSU9OX1NPUlRfRklFTERfVU5TUEVDSUZJRUQQABIjCh9FWEVDVVRJT05fU09SVF9GSUVMRF9TVEFSVEVEX0FUEAESIQodRVhFQ1VUSU9OX1NPUlRfRklFTERfRFVSQVRJT04QAhIdChlFWEVDVVRJT05fU09SVF9GSUVMRF9DT1NUEAMSHwobRVhFQ1VUSU9OX1NPUlRfRklFTERfU1RBVFVTEAQqvwEKEVN1bW1hcnlUaW1lV2luZG93EiMKH1NVTU1BUllfVElNRV9XSU5ET1dfVU5TUEVDSUZJRUQQABIgChxTVU1NQVJZX1RJTUVfV0lORE9XX0xBU1RfMjRIEAESHwobU1VNTUFSWV9USU1FX1dJTkRPV19MQVNUXzdEEAISIAocU1VNTUFSWV9USU1FX1dJTkRPV19MQVNUXzMwRBADEiAKHFNVTU1BUllfVElNRV9XSU5ET1dfQUxMX1RJTUUQBGIGcHJvdG8z",[file_ai_stigmer_agentic_agentexecution_v1_enum,file_ai_stigmer_agentic_workflowexecution_v1_api,file_ai_stigmer_agentic_workflowexecution_v1_enum,file_ai_stigmer_agentic_workflowexecution_v1_event,file_buf_validate_validate,file_google_protobuf_duration,file_google_protobuf_struct,file_google_protobuf_timestamp]);var GetEventLogResponseSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_io,17);var PendingApprovalsListSchema=messageDesc2(file_ai_stigmer_agentic_workflowexecution_v1_io,27),ExecutionSortField;(function(ExecutionSortField2){ExecutionSortField2[ExecutionSortField2.UNSPECIFIED=0]="UNSPECIFIED",ExecutionSortField2[ExecutionSortField2.STARTED_AT=1]="STARTED_AT",ExecutionSortField2[ExecutionSortField2.DURATION=2]="DURATION",ExecutionSortField2[ExecutionSortField2.COST=3]="COST",ExecutionSortField2[ExecutionSortField2.STATUS=4]="STATUS"})(ExecutionSortField||(ExecutionSortField={}));var SummaryTimeWindow;(function(SummaryTimeWindow2){SummaryTimeWindow2[SummaryTimeWindow2.UNSPECIFIED=0]="UNSPECIFIED",SummaryTimeWindow2[SummaryTimeWindow2.LAST_24H=1]="LAST_24H",SummaryTimeWindow2[SummaryTimeWindow2.LAST_7D=2]="LAST_7D",SummaryTimeWindow2[SummaryTimeWindow2.LAST_30D=3]="LAST_30D",SummaryTimeWindow2[SummaryTimeWindow2.ALL_TIME=4]="ALL_TIME"})(SummaryTimeWindow||(SummaryTimeWindow={}));var file_ai_stigmer_agentic_workflowexecution_v1_command=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvY29tbWFuZC5wcm90bxInYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxMo0VCiJXb3JrZmxvd0V4ZWN1dGlvbkNvbW1hbmRDb250cm9sbGVyEoYBCgZjcmVhdGUSOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24aOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24iBNC4GAESwgEKBnVwZGF0ZRI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbho6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiJAwrgYPAgCEDQiC21ldGFkYXRhLmlkKil1bmF1dGhvcml6ZWQgdG8gdXBkYXRlIHdvcmtmbG93IGV4ZWN1dGlvbhLhAQoMdXBkYXRlU3RhdHVzEksuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uVXBkYXRlU3RhdHVzSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24iSMK4GEQIAhA0IgxleGVjdXRpb25faWQqMHVuYXV0aG9yaXplZCB0byB1cGRhdGUgd29ya2Zsb3cgZXhlY3V0aW9uIHN0YXR1cxLiAQoOc3VibWl0QXBwcm92YWwSRC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuU3VibWl0V29ya2Zsb3dBcHByb3ZhbElucHV0GjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIk7CuBhKCAIQNCIMZXhlY3V0aW9uX2lkKjZ1bmF1dGhvcml6ZWQgdG8gc3VibWl0IGFwcHJvdmFsIGZvciB3b3JrZmxvdyBleGVjdXRpb24S7wEKEnN1Ym1pdEZpbGVEZWNpc2lvbhJILmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5TdWJtaXRXb3JrZmxvd0ZpbGVEZWNpc2lvbklucHV0GjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIlPCuBhPCAIQNCIMZXhlY3V0aW9uX2lkKjt1bmF1dGhvcml6ZWQgdG8gc3VibWl0IGZpbGUgZGVjaXNpb24gZm9yIHdvcmtmbG93IGV4ZWN1dGlvbhLpAQoac3VibWl0V29ya2Zsb3dUYXNrQXBwcm92YWwSSC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuU3VibWl0V29ya2Zsb3dUYXNrQXBwcm92YWxJbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiJFwrgYQQgCEDQiDGV4ZWN1dGlvbl9pZCotdW5hdXRob3JpemVkIHRvIHN1Ym1pdCB3b3JrZmxvdyB0YXNrIGFwcHJvdmFsEq8BCgZkZWxldGUSLS5haS5zdGlnbWVyLmNvbW1vbnMuYXBpcmVzb3VyY2UuQXBpUmVzb3VyY2VJZBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI6wrgYNggCEDQiBXZhbHVlKil1bmF1dGhvcml6ZWQgdG8gZGVsZXRlIHdvcmtmbG93IGV4ZWN1dGlvbhLNAQoKc2VuZFNpZ25hbBI4LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5TZW5kU2lnbmFsSW5wdXQaOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuV29ya2Zsb3dFeGVjdXRpb24iScK4GEUIAhA0IgxleGVjdXRpb25faWQqMXVuYXV0aG9yaXplZCB0byBzZW5kIHNpZ25hbCB0byB3b3JrZmxvdyBleGVjdXRpb24SxAEKBmNhbmNlbBJFLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5DYW5jZWxXb3JrZmxvd0V4ZWN1dGlvbklucHV0GjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIjfCuBgzCAIQNCICaWQqKXVuYXV0aG9yaXplZCB0byBjYW5jZWwgd29ya2Zsb3cgZXhlY3V0aW9uEs0BCgl0ZXJtaW5hdGUSSC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuVGVybWluYXRlV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI6wrgYNggCEDQiAmlkKix1bmF1dGhvcml6ZWQgdG8gdGVybWluYXRlIHdvcmtmbG93IGV4ZWN1dGlvbhLHAQoHcmVjb3ZlchJGLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5SZWNvdmVyV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI4wrgYNAgCEDQiAmlkKip1bmF1dGhvcml6ZWQgdG8gcmVjb3ZlciB3b3JrZmxvdyBleGVjdXRpb24SwQEKBXBhdXNlEkQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlBhdXNlV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI2wrgYMggCEDQiAmlkKih1bmF1dGhvcml6ZWQgdG8gcGF1c2Ugd29ya2Zsb3cgZXhlY3V0aW9uEsQBCgZyZXN1bWUSRS5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuUmVzdW1lV29ya2Zsb3dFeGVjdXRpb25JbnB1dBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiI3wrgYMwgCEDQiAmlkKil1bmF1dGhvcml6ZWQgdG8gcmVzdW1lIHdvcmtmbG93IGV4ZWN1dGlvbhoEoP8rNGIGcHJvdG8z",[file_ai_stigmer_agentic_workflowexecution_v1_api,file_ai_stigmer_agentic_workflowexecution_v1_io,file_ai_stigmer_commons_apiresource_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowExecutionCommandController=serviceDesc(file_ai_stigmer_agentic_workflowexecution_v1_command,0);var file_ai_stigmer_agentic_workflowexecution_v1_query=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3dleGVjdXRpb24vdjEvcXVlcnkucHJvdG8SJ2FpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MTKDDAogV29ya2Zsb3dFeGVjdXRpb25RdWVyeUNvbnRyb2xsZXISuAEKA2dldBI8LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbklkGjouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uIjfCuBgzCAEQNCIFdmFsdWUqJnVuYXV0aG9yaXplZCB0byBnZXQgd29ya2Zsb3cgZXhlY3V0aW9uEpQBCgRsaXN0EkYuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkxpc3RXb3JrZmxvd0V4ZWN1dGlvbnNSZXF1ZXN0Gj4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uTGlzdCIE0LgYARKoAQoObGlzdEJ5V29ya2Zsb3cSUC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3dleGVjdXRpb24udjEuTGlzdFdvcmtmbG93RXhlY3V0aW9uc0J5V29ya2Zsb3dSZXF1ZXN0Gj4uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uTGlzdCIE0LgYARLcAQoJc3Vic2NyaWJlEkouYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLlN1YnNjcmliZVdvcmtmbG93RXhlY3V0aW9uUmVxdWVzdBo6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5Xb3JrZmxvd0V4ZWN1dGlvbiJFwrgYQQgBEDQiDGV4ZWN1dGlvbl9pZCotdW5hdXRob3JpemVkIHRvIGdldCB3b3JrZmxvdyBleGVjdXRpb24gc3RyZWFtMAES0gEKC2dldEV2ZW50TG9nEjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkdldEV2ZW50TG9nUmVxdWVzdBo8LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5HZXRFdmVudExvZ1Jlc3BvbnNlIkjCuBhECAEQNCIMZXhlY3V0aW9uX2lkKjB1bmF1dGhvcml6ZWQgdG8gZ2V0IHdvcmtmbG93IGV4ZWN1dGlvbiBldmVudCBsb2cS5QEKD3N1YnNjcmliZUV2ZW50cxI/LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5TdWJzY3JpYmVFdmVudHNSZXF1ZXN0Gj8uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLldvcmtmbG93RXhlY3V0aW9uRXZlbnQiTsK4GEoIARA0IgxleGVjdXRpb25faWQqNnVuYXV0aG9yaXplZCB0byBzdWJzY3JpYmUgdG8gd29ya2Zsb3cgZXhlY3V0aW9uIGV2ZW50czABEpsBChNnZXRFeGVjdXRpb25TdW1tYXJ5EkMuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkdldEV4ZWN1dGlvblN1bW1hcnlSZXF1ZXN0GjkuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkV4ZWN1dGlvblN1bW1hcnkiBNC4GAESoQEKFGxpc3RQZW5kaW5nQXBwcm92YWxzEkQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93ZXhlY3V0aW9uLnYxLkxpc3RQZW5kaW5nQXBwcm92YWxzUmVxdWVzdBo9LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvd2V4ZWN1dGlvbi52MS5QZW5kaW5nQXBwcm92YWxzTGlzdCIE0LgYARoEoP8rNGIGcHJvdG8z",[file_ai_stigmer_agentic_workflowexecution_v1_api,file_ai_stigmer_agentic_workflowexecution_v1_event,file_ai_stigmer_agentic_workflowexecution_v1_io,file_ai_stigmer_commons_apiresource_rpc_service_options,file_ai_stigmer_commons_rpc_method_options]),WorkflowExecutionQueryController=serviceDesc(file_ai_stigmer_agentic_workflowexecution_v1_query,0);var file_google_rpc_error_details=fileDesc("Ch5nb29nbGUvcnBjL2Vycm9yX2RldGFpbHMucHJvdG8SCmdvb2dsZS5ycGMikwEKCUVycm9ySW5mbxIOCgZyZWFzb24YASABKAkSDgoGZG9tYWluGAIgASgJEjUKCG1ldGFkYXRhGAMgAygLMiMuZ29vZ2xlLnJwYy5FcnJvckluZm8uTWV0YWRhdGFFbnRyeRovCg1NZXRhZGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOwoJUmV0cnlJbmZvEi4KC3JldHJ5X2RlbGF5GAEgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIjIKCURlYnVnSW5mbxIVCg1zdGFja19lbnRyaWVzGAEgAygJEg4KBmRldGFpbBgCIAEoCSKPAwoMUXVvdGFGYWlsdXJlEjYKCnZpb2xhdGlvbnMYASADKAsyIi5nb29nbGUucnBjLlF1b3RhRmFpbHVyZS5WaW9sYXRpb24axgIKCVZpb2xhdGlvbhIPCgdzdWJqZWN0GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhMKC2FwaV9zZXJ2aWNlGAMgASgJEhQKDHF1b3RhX21ldHJpYxgEIAEoCRIQCghxdW90YV9pZBgFIAEoCRJRChBxdW90YV9kaW1lbnNpb25zGAYgAygLMjcuZ29vZ2xlLnJwYy5RdW90YUZhaWx1cmUuVmlvbGF0aW9uLlF1b3RhRGltZW5zaW9uc0VudHJ5EhMKC3F1b3RhX3ZhbHVlGAcgASgDEh8KEmZ1dHVyZV9xdW90YV92YWx1ZRgIIAEoA0gAiAEBGjYKFFF1b3RhRGltZW5zaW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCFQoTX2Z1dHVyZV9xdW90YV92YWx1ZSKVAQoTUHJlY29uZGl0aW9uRmFpbHVyZRI9Cgp2aW9sYXRpb25zGAEgAygLMikuZ29vZ2xlLnJwYy5QcmVjb25kaXRpb25GYWlsdXJlLlZpb2xhdGlvbho/CglWaW9sYXRpb24SDAoEdHlwZRgBIAEoCRIPCgdzdWJqZWN0GAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIswBCgpCYWRSZXF1ZXN0Ej8KEGZpZWxkX3Zpb2xhdGlvbnMYASADKAsyJS5nb29nbGUucnBjLkJhZFJlcXVlc3QuRmllbGRWaW9sYXRpb24afQoORmllbGRWaW9sYXRpb24SDQoFZmllbGQYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDgoGcmVhc29uGAMgASgJEjcKEWxvY2FsaXplZF9tZXNzYWdlGAQgASgLMhwuZ29vZ2xlLnJwYy5Mb2NhbGl6ZWRNZXNzYWdlIjcKC1JlcXVlc3RJbmZvEhIKCnJlcXVlc3RfaWQYASABKAkSFAoMc2VydmluZ19kYXRhGAIgASgJImAKDFJlc291cmNlSW5mbxIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhUKDXJlc291cmNlX25hbWUYAiABKAkSDQoFb3duZXIYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkiVgoESGVscBIkCgVsaW5rcxgBIAMoCzIVLmdvb2dsZS5ycGMuSGVscC5MaW5rGigKBExpbmsSEwoLZGVzY3JpcHRpb24YASABKAkSCwoDdXJsGAIgASgJIjMKEExvY2FsaXplZE1lc3NhZ2USDgoGbG9jYWxlGAEgASgJEg8KB21lc3NhZ2UYAiABKAlCbAoOY29tLmdvb2dsZS5ycGNCEUVycm9yRGV0YWlsc1Byb3RvUAFaP2dvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvcnBjL2VycmRldGFpbHM7ZXJyZGV0YWlsc6ICA1JQQ2IGcHJvdG8z",[file_google_protobuf_duration]),ErrorInfoSchema=messageDesc2(file_google_rpc_error_details,0);var CONNECT_CODE_TO_CATEGORY={[Code.Unauthenticated]:"auth",[Code.PermissionDenied]:"permission",[Code.NotFound]:"not-found",[Code.InvalidArgument]:"validation",[Code.FailedPrecondition]:"validation",[Code.OutOfRange]:"validation",[Code.AlreadyExists]:"validation",[Code.Aborted]:"validation",[Code.Internal]:"server",[Code.Unknown]:"server",[Code.DataLoss]:"server",[Code.Unimplemented]:"server",[Code.Unavailable]:"unavailable",[Code.DeadlineExceeded]:"unavailable",[Code.ResourceExhausted]:"unavailable",[Code.Canceled]:"cancelled"};var rpcMetadataStore=new WeakMap;function annotateRpcError(error3,metadata){rpcMetadataStore.set(error3,metadata)}function createAuthInterceptor(getAccessToken){return next=>async request3=>{let token=await getAccessToken();return token&&request3.header.set("Authorization",`Bearer ${token}`),next(request3)}}var rpcMetadataInterceptor=next=>async request3=>{try{return await next(request3)}catch(error3){if(error3!==null&&typeof error3=="object"){let segments=request3.url.split("/"),method=segments.at(-1)??"",service=segments.at(-2)??"";annotateRpcError(error3,{method:method.charAt(0).toLowerCase()+method.slice(1),path:`/${service}/${method}`})}throw error3}},errorStripInterceptor=next=>async request3=>{try{return await next(request3)}catch(error3){throw error3 instanceof Error&&error3.message&&(error3.message=error3.message.replace(/^\[.*?]\s*/,"")),error3}};function createNodeTransport(config2){let tokenProvider=config2.apiKey?()=>config2.apiKey:config2.getAccessToken??(()=>null),interceptors=[createAuthInterceptor(tokenProvider),rpcMetadataInterceptor,errorStripInterceptor];return config2.protocol==="grpc"?createGrpcTransport({baseUrl:config2.baseUrl,interceptors}):createGrpcWebTransport({baseUrl:config2.baseUrl,httpVersion:"2",interceptors})}function normalizeEndpoint(raw){let endpoint=raw.trim();if(endpoint==="")throw new Error("normalizeEndpoint: endpoint must not be empty");if(endpoint=endpoint.replace(/^https?:\/\//i,"").replace(/\/+$/,""),endpoint==="")throw new Error("normalizeEndpoint: endpoint has no host");let{host,port}=splitHostPort(endpoint);return port!==""?`${port==="443"?"https":"http"}://${endpoint}`:isLoopbackHost(host)?`http://${endpoint}`:`https://${endpoint}:443`}function splitHostPort(authority){if(authority.startsWith("[")){let close=authority.indexOf("]");if(close===-1)return{host:authority,port:""};let host=authority.slice(0,close+1),rest=authority.slice(close+1);return rest.startsWith(":")?{host,port:rest.slice(1)}:{host,port:""}}let lastColon=authority.lastIndexOf(":");return lastColon===-1||authority.indexOf(":")!==lastColon?{host:authority,port:""}:{host:authority.slice(0,lastColon),port:authority.slice(lastColon+1)}}function isLoopbackHost(host){return host==="localhost"||host==="127.0.0.1"||host==="::1"||host==="[::1]"}var DEFAULT_RPC_TIMEOUT_MS=3e4;function resolveToken(extra,fallback){let token=extra?.authInfo?.token;return token!==void 0&&token!==""?token:fallback}function transportForToken(serverAddress,token){return createNodeTransport({baseUrl:normalizeEndpoint(serverAddress),apiKey:token===""?void 0:token,protocol:"grpc"})}async function withTransport(serverAddress,token,fn){return fn(transportForToken(serverAddress,token),{timeoutMs:DEFAULT_RPC_TIMEOUT_MS})}async function withClient(service,serverAddress,token,fn){return withTransport(serverAddress,token,(transport,callOptions)=>fn(createClient(service,transport),callOptions))}function textResult(text){return{content:[{type:"text",text}]}}function errorResult(err){return{content:[{type:"text",text:err instanceof Error?err.message:String(err)}],isError:!0}}async function textOrError(produce){try{return textResult(await produce())}catch(err){return errorResult(err)}}function rpcError(err,resourceDescription){let ce=ConnectError.from(err);return log.warn("rpc call failed",{resource:resourceDescription,code:Code[ce.code],grpc_message:ce.rawMessage}),new Error(classifyCode(ce,resourceDescription))}function classifyCode(ce,resourceDescription){switch(ce.code){case Code.NotFound:return`${resourceDescription} not found. Verify the org and slug are correct.`;case Code.PermissionDenied:return`Permission denied for ${resourceDescription}. Check your API key permissions.`;case Code.Unauthenticated:return"Authentication failed. Check your API key.";case Code.Unavailable:return"Stigmer server is unavailable. Ensure it is running and reachable.";case Code.DeadlineExceeded:return"Request timed out contacting stigmer-server.";case Code.InvalidArgument:return ce.rawMessage;default:return`unexpected error: ${ce.rawMessage}`}}function toProtoJson(schema,message){return JSON.stringify(toJson(schema,message,{useProtoFieldName:!0}),null,2)}var DEFAULT_MESSAGE_LIMIT=5,COMPACT_PRUNED_STATUS_FIELDS=["resolved_context","approval_events","callback_token","sub_agent_executions"];async function fetchAgentExecution(serverAddress,token,executionId,view,messageLimit){if(executionId==="")throw new Error("execution_id is required");return withClient(AgentExecutionQueryController,serverAddress,token,async(client,callOptions)=>{let execution;try{execution=await client.get({value:executionId},callOptions)}catch(err){throw rpcError(err,`agent execution "${executionId}"`)}return view==="full"?toProtoJson(AgentExecutionSchema,execution):compactExecutionJson(execution,messageLimit)})}function compactExecution(execution,messageLimit){let data=JSON.parse(toProtoJson(AgentExecutionSchema,execution)),totalMessages=0,status=data.status;if(status!==void 0){let messages=Array.isArray(status.messages)?status.messages:[];totalMessages=messages.length,messages.length>messageLimit&&(status.messages=messages.slice(-messageLimit));for(let field of COMPACT_PRUNED_STATUS_FIELDS)delete status[field]}return{totalMessages,data}}function compactExecutionJson(execution,messageLimit){let{totalMessages,data}=compactExecution(execution,messageLimit);return JSON.stringify({view:"compact",total_messages:totalMessages,execution:data},null,2)}var APPROVAL_ACTIONS={approve:ApprovalAction.APPROVE,skip:ApprovalAction.SKIP,reject:ApprovalAction.REJECT};async function submitAgentApproval(serverAddress,token,args){let action=APPROVAL_ACTIONS[args.action];if(action===void 0)throw new Error(`unknown action "${args.action}"; valid actions: approve, skip, reject`);return withClient(AgentExecutionCommandController,serverAddress,token,async(client,callOptions)=>{try{let execution=await client.submitApproval({agentExecutionId:args.executionId,toolCallId:args.toolCallId,action,comment:args.comment??""},callOptions);return compactExecutionJson(execution,DEFAULT_MESSAGE_LIMIT)}catch(err){throw rpcError(err,`approval for agent execution "${args.executionId}"`)}})}var API_VERSION="agentic.stigmer.ai/v1";async function runAgent(serverAddress,token,args){let desc=`agent "${args.agent}" in org "${args.org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(AgentQueryController,transport),agentId;try{agentId=(await query.getByReference({org:args.org,kind:ApiResourceKind.agent,slug:args.agent},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let execution=create(AgentExecutionSchema,{apiVersion:API_VERSION,kind:"AgentExecution",metadata:create(ApiResourceMetadataSchema,{name:executionName(),org:args.org}),spec:create(AgentExecutionSpecSchema,{message:args.message===""?"execute":args.message,runtimeEnv:toExecutionValues(args.runtimeEnv),sessionId:args.sessionId??"",agentId})}),command=createClient(AgentExecutionCommandController,transport);try{let created=await command.create(execution,callOptions);return toProtoJson(AgentExecutionSchema,created)}catch(err){throw rpcError(err,`execution of ${desc}`)}})}function toExecutionValues(env){let out={};for(let[key,value]of Object.entries(env??{}))out[key]=create(ExecutionValueSchema,{value,isSecret:!1});return out}function executionName(){return`execution-${Date.now()*1e3}`}function registerAgentExecutionTools(server,target){return server.registerTool("run_agent",{description:"Start an agent execution (asynchronous). Returns immediately with the created execution (aex_* ID) while the run continues in the background \u2014 poll get_agent_execution to observe progress, pending approvals, and the final result. Omit session_id to start a fresh conversation; pass one to send a follow-up message into an existing session.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the agent (e.g. stigmer)."),agent:external_exports.string().describe("Agent slug \u2014 the unique identifier within the org (e.g. code-reviewer)."),message:external_exports.string().describe("The instruction or message for the agent to act on."),session_id:external_exports.string().optional().describe("Existing session ID to continue a conversation (from a previous execution's spec.session_id). Omit to start a new session."),runtime_env:external_exports.record(external_exports.string()).optional().describe("Non-secret runtime environment values (name \u2192 value) injected into the run. Secrets must come from Environments attached to the agent, never through this tool.")}},(args,extra)=>textOrError(()=>runAgent(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,agent:args.agent,message:args.message,sessionId:args.session_id,runtimeEnv:args.runtime_env}))),server.registerTool("get_agent_execution",{description:"Get an agent execution's status: phase, messages, pending approvals, errors, timing. Agent executions have no event log \u2014 poll this tool to track a run started with run_agent (terminal phases: completed, failed, cancelled, terminated). The default compact view returns the last few messages and omits bulky bookkeeping fields (resolved context, approval ledger, sub-agent transcripts); total_messages tells you when the tail is a window. Use view=full for the complete record.",inputSchema:{execution_id:external_exports.string().describe("Agent execution ID (aex_* format)."),view:external_exports.enum(["compact","full"]).optional().describe("Response shape: compact (default, bounded message tail) or full protojson."),message_limit:external_exports.number().int().min(1).optional().describe(`Compact view only: number of trailing messages to return (default ${DEFAULT_MESSAGE_LIMIT}).`)}},(args,extra)=>textOrError(()=>fetchAgentExecution(target.serverAddress,resolveToken(extra,target.apiKey),args.execution_id,args.view??"compact",args.message_limit??DEFAULT_MESSAGE_LIMIT))),server.registerTool("submit_agent_execution_approval",{description:"Approve, skip, or reject a tool call an agent execution is waiting on (phase waiting-for-approval). Find pending requests in get_agent_execution's status.pending_approvals \u2014 tool_call_id must match exactly. reject denies the single tool call and feeds your comment back to the agent, which then continues; to stop the whole run use cancel_execution instead.",inputSchema:{execution_id:external_exports.string().describe("Agent execution ID (aex_* format)."),tool_call_id:external_exports.string().describe("Tool call awaiting the decision (status.pending_approvals[].tool_call_id)."),action:external_exports.enum(["approve","skip","reject"]).describe("approve: execute the tool. skip: don't execute, agent proceeds without it. reject: don't execute, agent is told why (see comment) and adapts."),comment:external_exports.string().optional().describe("Reason for the decision; on reject it is fed back to the agent.")}},(args,extra)=>textOrError(()=>submitAgentApproval(target.serverAddress,resolveToken(extra,target.apiKey),{executionId:args.execution_id,toolCallId:args.tool_call_id,action:args.action,comment:args.comment}))),["run_agent","get_agent_execution","submit_agent_execution_approval"]}function parseResourceURI(uri){let segments=pathSegments(uri);if(segments.length!==2)throw new Error(`expected URI path with 2 segments (org/slug), got ${segments.length} in "${uri}"`);let org=segments[0]??"",slug=segments[1]??"";if(org===""||slug==="")throw new Error(`org and slug must be non-empty in "${uri}"`);return{org,slug}}function parseVersionedResourceURI(uri){let segments=pathSegments(uri),org="",slug="",version2="";switch(segments.length){case 2:org=segments[0]??"",slug=segments[1]??"";break;case 3:if(org=segments[0]??"",slug=segments[1]??"",version2=segments[2]??"",version2==="")throw new Error(`version segment must be non-empty in "${uri}"`);break;default:throw new Error(`expected URI path with 2 or 3 segments (org/slug[/version]), got ${segments.length} in "${uri}"`)}if(org===""||slug==="")throw new Error(`org and slug must be non-empty in "${uri}"`);return{org,slug,version:version2}}var kindToAuthority={agent:"agents",datastore:"datastores",environment:"environments",mcp_server:"mcp-servers",skill:"skills",workflow:"workflows"};function buildResourceURI(kind,org,slug){let authority=kindToAuthority[kind];return authority===void 0||org===""||slug===""?"":`stigmer://${authority}/${org}/${slug}`}function pathSegments(uri){let parsed;try{parsed=new URL(uri)}catch(err){throw new Error(`malformed resource URI "${uri}": ${err instanceof Error?err.message:err}`)}if(parsed.protocol!=="stigmer:")throw new Error(`unexpected URI scheme "${parsed.protocol.replace(/:$/,"")}", expected "stigmer"`);let trimmed=parsed.pathname.replace(/^\/+/,"").replace(/\/+$/,"");return trimmed===""?[]:trimmed.split("/")}function registerResource(server,target,opts){server.registerResource(opts.name,new ResourceTemplate(opts.template,{list:void 0}),{title:opts.title,description:opts.description,mimeType:"application/json"},async(uri,_vars,extra)=>{let{org,slug}=parseResourceURI(uri.href),text=await opts.fetch(target.serverAddress,resolveToken(extra,target.apiKey),org,slug);return jsonResource(uri.href,text)})}function registerVersionedResource(server,target,opts){server.registerResource(opts.name,new ResourceTemplate(opts.template,{list:void 0}),{title:opts.title,description:opts.description,mimeType:"application/json"},async(uri,_vars,extra)=>{let{org,slug,version:version2}=parseVersionedResourceURI(uri.href),text=await opts.fetch(target.serverAddress,resolveToken(extra,target.apiKey),org,slug,version2);return jsonResource(uri.href,text)})}function jsonResource(uri,text){return{contents:[{uri,mimeType:"application/json",text}]}}async function fetchAgent(serverAddress,token,org,slug){return withClient(AgentQueryController,serverAddress,token,async(client,callOptions)=>{try{let agent=await client.getByReference({org,kind:ApiResourceKind.agent,slug},callOptions);return toProtoJson(AgentSchema,agent)}catch(err){throw rpcError(err,`agent "${slug}" in org "${org}"`)}})}function registerAgentResources(server,target){return registerResource(server,target,{name:"stigmer_agent",title:"Stigmer Agent",description:"Full definition of a Stigmer agent, identified by organization and slug.",template:"stigmer://agents/{org}/{slug}",fetch:fetchAgent}),["stigmer_agent"]}function generateSlug(name){if(!name)return"";let out="",lastHyphen=!1;for(let ch of name.toLowerCase())ch>="a"&&ch<="z"||ch>="0"&&ch<="9"?(out+=ch,lastHyphen=!1):lastHyphen||(out+="-",lastHyphen=!0);return out.replace(/^-+/,"").replace(/-+$/,"")}function visibilityFromString(s){return s&&s.toUpperCase()==="PUBLIC"?ApiResourceVisibility.visibility_public:s&&s.toUpperCase()==="PRIVATE"?ApiResourceVisibility.visibility_private:ApiResourceVisibility.api_resource_visibility_unspecified}function enumFromString(enumObj,value){if(value===void 0)return 0;let v=enumObj[value];return typeof v=="number"?v:0}function toTimestamp(value){return timestampFromDate(new Date(value))}var AgentInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for UI and marketplace display."),icon_url:external_exports.string().optional().describe("Icon URL for marketplace and UI display. Must be a publicly accessible URL to an image (SVG, PNG, or JPEG)."),instructions:external_exports.string().optional().describe("System prompt defining the agent's behavior and personality."),mcp_server_usages:external_exports.array(external_exports.lazy(()=>McpServerUsageInputSchema)).optional().describe("MCP servers this agent can use. Each entry must reference a unique McpServer resource by slug."),skill_refs:external_exports.array(external_exports.lazy(()=>SkillRefInputSchema)).optional().describe("Skill resources providing additional knowledge to the agent."),sub_agents:external_exports.array(external_exports.lazy(()=>SubAgentInputSchema)).optional().describe("Sub-agents that can be delegated to. Sub-agents can access a subset of the parent's MCP servers and tools."),env:external_exports.record(external_exports.lazy(()=>EnvVarDeclarationInputSchema)).optional().describe("Environment variable declarations for this agent. Keys are variable names; values describe their metadata and optionality."),datastore_usages:external_exports.array(external_exports.lazy(()=>DatastoreUsageInputSchema)).optional().describe("Datastores this agent can use. Each entry must reference a Datastore resource by slug.")},AgentInputSchema=external_exports.object(AgentInputShape),McpServerRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters.")}),ToolApprovalOverrideInputSchema=external_exports.object({tool_name:external_exports.string().optional().describe("Name of the tool to override."),requires_approval:external_exports.boolean().optional().describe("Whether this tool requires approval for this agent."),message:external_exports.string().optional().describe("Custom approval message shown to the reviewer. Supports {{args.field}} placeholders. When empty, falls back to the McpServer default or auto-generates 'Execute tool: {tool_name}'.")}),McpServerUsageInputSchema=external_exports.object({mcp_server_ref:external_exports.lazy(()=>McpServerRefInputSchema).describe("Reference to the McpServer resource."),enabled_tools:external_exports.array(external_exports.string()).optional().describe("Tools to enable from this MCP server for this agent. Empty list uses the McpServer's default_enabled_tools. Sub-agents can only restrict this set further, not expand it. @internal Tool names must match exactly what the MCP server reports via tools/list. Only names from discovered_capabilities.tools are valid here. Do NOT include names from discovered_capabilities.resource_templates \u2014 resource templates are read-only data endpoints, not callable tools. Including a resource template name here causes a fatal runtime error."),tool_approval_overrides:external_exports.array(external_exports.lazy(()=>ToolApprovalOverrideInputSchema)).optional().describe("Override approval requirements for specific tools. Takes precedence over McpServerSpec.pinned_tool_approvals and McpServerStatus.tool_approvals.")}),SkillRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters."),version:external_exports.string().optional().describe("Version of the resource (optional, only applicable to versioned resources like Skills). Supports three formats: 1. Empty/unset \u2192 Resolves to 'latest' (most recent version) 2. Tag name \u2192 Resolves to version with this tag (e.g., 'stable', 'v1.0') 3. Exact hash \u2192 Immutable reference to specific version (e.g., 'abc123...') Default behavior: Empty means 'latest' (current version). This field is ignored for non-versioned resources. Examples: - version: '' \u2192 Use latest version - version: 'latest' \u2192 Use latest version (explicit) - version: 'stable' \u2192 Use version tagged as 'stable' - version: 'v1.0' \u2192 Use version tagged as 'v1.0' - version: 'abc123...' \u2192 Use exact version with this hash (immutable)")}),McpAccessInputSchema=external_exports.object({mcp_server:external_exports.string().describe("Slug of the McpServer to grant access to. Must match a mcp_server_ref.slug from the parent's mcp_server_usages."),enabled_tools:external_exports.array(external_exports.string()).optional().describe("Tools this sub-agent can use from this MCP server. Must be a subset of the parent's enabled_tools for this server. Empty list grants access to all tools the parent has enabled.")}),SubAgentInputSchema=external_exports.object({name:external_exports.string().describe("Unique name of the sub-agent within the parent agent."),description:external_exports.string().optional().describe("What this sub-agent specializes in."),instructions:external_exports.string().optional().describe("System prompt for this sub-agent."),mcp_access:external_exports.array(external_exports.lazy(()=>McpAccessInputSchema)).optional().describe("MCP server access grants for this sub-agent. Each entry references a parent McpServerUsage by slug and optionally restricts which tools are available."),skill_refs:external_exports.array(external_exports.lazy(()=>SkillRefInputSchema)).optional().describe("Skill resources for this sub-agent."),model_override:external_exports.string().optional().describe("Model override for this sub-agent. When set, uses this model instead of the parent's model. When empty, inherits the parent agent's model.")}),EnvVarDeclarationInputSchema=external_exports.object({is_secret:external_exports.boolean().optional().describe("Whether the resolved value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs and Temporal history. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description shown in the UI credential form. Should explain what the variable is used for and where to obtain it."),optional:external_exports.boolean().optional().describe("Whether this variable is optional. @internal When false (default): the execution pipeline rejects a run if this variable is missing from the user's environment. When true: a missing value is acceptable (the MCP server or agent degrades gracefully without it).")}),DatastoreRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters.")}),DatastoreUsageInputSchema=external_exports.object({datastore_ref:external_exports.lazy(()=>DatastoreRefInputSchema).describe("Reference to the Datastore resource.")});function agentInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(AgentSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.icon_url!==void 0&&(spec.iconUrl=input.icon_url),input.instructions!==void 0&&(spec.instructions=input.instructions),input.mcp_server_usages!==void 0&&(spec.mcpServerUsages=input.mcp_server_usages.map(mcpServerUsageInputToProto)),input.skill_refs!==void 0&&(spec.skillRefs=input.skill_refs.map(skillRefInputToProto)),input.sub_agents!==void 0&&(spec.subAgents=input.sub_agents.map(subAgentInputToProto)),input.env!==void 0)for(let[k,v]of Object.entries(input.env))spec.env[k]=envVarDeclarationInputToProto(v);return input.datastore_usages!==void 0&&(spec.datastoreUsages=input.datastore_usages.map(datastoreUsageInputToProto)),Object.assign(create(AgentSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Agent",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function mcpServerRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.mcp_server})}function toolApprovalOverrideInputToProto(input){let result=create(ToolApprovalOverrideSchema);return input.tool_name!==void 0&&(result.toolName=input.tool_name),input.requires_approval!==void 0&&(result.requiresApproval=input.requires_approval),input.message!==void 0&&(result.message=input.message),result}function mcpServerUsageInputToProto(input){let result=create(McpServerUsageSchema);return input.mcp_server_ref!==void 0&&(result.mcpServerRef=mcpServerRefInputToProto(input.mcp_server_ref)),input.enabled_tools!==void 0&&(result.enabledTools=input.enabled_tools),input.tool_approval_overrides!==void 0&&(result.toolApprovalOverrides=input.tool_approval_overrides.map(toolApprovalOverrideInputToProto)),result}function skillRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.skill,version:input.version})}function mcpAccessInputToProto(input){let result=create(McpAccessSchema);return input.mcp_server!==void 0&&(result.mcpServer=input.mcp_server),input.enabled_tools!==void 0&&(result.enabledTools=input.enabled_tools),result}function subAgentInputToProto(input){let result=create(SubAgentSchema);return input.name!==void 0&&(result.name=input.name),input.description!==void 0&&(result.description=input.description),input.instructions!==void 0&&(result.instructions=input.instructions),input.mcp_access!==void 0&&(result.mcpAccess=input.mcp_access.map(mcpAccessInputToProto)),input.skill_refs!==void 0&&(result.skillRefs=input.skill_refs.map(skillRefInputToProto)),input.model_override!==void 0&&(result.modelOverride=input.model_override),result}function envVarDeclarationInputToProto(input){let result=create(EnvVarDeclarationSchema);return input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),input.optional!==void 0&&(result.optional=input.optional),result}function datastoreRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.datastore})}function datastoreUsageInputToProto(input){let result=create(DatastoreUsageSchema);return input.datastore_ref!==void 0&&(result.datastoreRef=datastoreRefInputToProto(input.datastore_ref)),result}async function applyAgent(serverAddress,token,input){let agent=agentInputToProto(input),desc=`agent "${agent.metadata?.slug??""}" in org "${agent.metadata?.org??""}"`;return withClient(AgentCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(agent,callOptions);return toProtoJson(AgentSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteAgent(serverAddress,token,org,slug){let desc=`agent "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(AgentQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.agent,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(AgentCommandController,transport);try{let deleted=await command.delete({value:id},callOptions);return toProtoJson(AgentSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerAgentTools(server,target){return server.registerTool("get_agent",{description:"Get full details of a Stigmer agent by its org and slug (e.g. org=stigmer slug=code-reviewer).",inputSchema:{org:external_exports.string().describe("Organization slug that owns the agent (e.g. stigmer)."),slug:external_exports.string().describe("Agent slug \u2014 the unique identifier within the org (e.g. code-reviewer).")}},(args,extra)=>textOrError(()=>fetchAgent(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_agent",{description:"Create or update a Stigmer agent (idempotent). Provide identity fields (name, org) and agent configuration (instructions, skills, MCP servers, etc.).",inputSchema:AgentInputShape},(args,extra)=>textOrError(()=>applyAgent(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_agent",{description:"Delete a Stigmer agent by its org and slug. Returns the deleted agent.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the agent (e.g. stigmer)."),slug:external_exports.string().describe("Agent slug \u2014 the unique identifier within the org (e.g. code-reviewer).")}},(args,extra)=>textOrError(()=>deleteAgent(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_agent","apply_agent","delete_agent"]}async function sendChannelMessage(serverAddress,token,args){let request3=create(SendChannelMessageInputSchema,{channel:args.channel??"",recipient:args.recipient,payload:buildPayload(args)});return withClient(ChannelMessageCommandController,serverAddress,token,async(client,opts)=>toProtoJson(SendChannelMessageOutputSchema,await client.sendMessage(request3,opts)))}function buildPayload(args){return args.template!==void 0?create(ChannelOutboundPayloadSchema,{kind:{case:"template",value:create(TemplatePayloadSchema,{name:args.template.name,language:args.template.language??"",parameters:args.template.parameters??{},headerImageLink:args.template.header_image_link??""})}}):create(ChannelOutboundPayloadSchema,{kind:{case:"text",value:create(TextPayloadSchema,{body:args.text??""})}})}var DOMAIN_CODES=new Set([Code.PermissionDenied,Code.InvalidArgument,Code.FailedPrecondition]);async function channelResult(toolContext,produce){try{return textResult(await produce())}catch(err){let ce=ConnectError.from(err);return DOMAIN_CODES.has(ce.code)?{content:[{type:"text",text:JSON.stringify(domainError(ce))}],isError:!0}:errorResult(rpcError(ce,toolContext))}}function domainError(ce){let payload={error:ce.rawMessage,code:grpcStatusName(ce.code)},details=ce.findDetails(ErrorInfoSchema);return details.length>0&&details[0].reason!==""&&(payload.reason=details[0].reason),payload}function grpcStatusName(code){return Code[code].replace(/([a-z0-9])([A-Z])/g,"$1_$2").toUpperCase()}var templateShape=external_exports.object({name:external_exports.string().describe("Approved template name on the channel's provider registry."),language:external_exports.string().optional().describe("Template language code (e.g. en, en_US). Omit when the template exists in exactly one language."),parameters:external_exports.record(external_exports.string()).optional().describe('Placeholder values. Positional templates key by position ("1", "2", \u2026); named templates key by parameter name ("member_name").'),header_image_link:external_exports.string().optional().describe("Public HTTPS URL for the image header. Required exactly when the template declares an image header.")});function registerChannelTools(server,target){return server.registerTool("send_channel_message",{description:"Send a business-initiated message to a recipient on this agent's messaging channel (e.g. WhatsApp). Exactly one of text | template. Outside a 24-hour customer-service window the provider only accepts a pre-approved template, so prefer a template from <available_channel_templates>. The result carries a typed outcome: accepted (sent), queued (the platform retries in the background \u2014 do not resend), or refused (terminal; detail says why \u2014 adapt, never retry the same send).",inputSchema:{recipient:external_exports.string().describe("Recipient's key on the channel's provider (WhatsApp: the wa_id / phone number)."),text:external_exports.string().optional().describe("Plain text body. Only deliverable inside an open 24-hour customer-service window."),template:templateShape.optional().describe("Pre-approved template send \u2014 required outside a 24-hour window."),channel:external_exports.string().optional().describe("Channel slug. Only needed when this agent serves more than one proactive-messaging channel (a refusal will list them).")}},(args,extra)=>{let hasText=args.text!==void 0&&args.text!=="",hasTemplate=args.template!==void 0;return hasText===hasTemplate?Promise.resolve(errorResult(hasText?"supply exactly one of text | template, not both":"supply exactly one of text | template \u2014 text for an open 24-hour window, template otherwise")):channelResult(`message to "${args.recipient}"`,()=>sendChannelMessage(target.serverAddress,resolveToken(extra,target.apiKey),{recipient:args.recipient,text:args.text,template:args.template,channel:args.channel}))}),["send_channel_message"]}async function fetchDatastore(serverAddress,token,org,slug){return withClient(DatastoreQueryController,serverAddress,token,async(client,callOptions)=>{try{let datastore=await client.getByReference({org,kind:ApiResourceKind.datastore,slug},callOptions);return toProtoJson(DatastoreSchema,datastore)}catch(err){throw rpcError(err,`datastore "${slug}" in org "${org}"`)}})}function registerDatastoreResources(server,target){return registerResource(server,target,{name:"stigmer_datastore",title:"Stigmer Datastore",description:"Full definition of a Stigmer datastore (collections, constraints, grants), identified by organization and slug.",template:"stigmer://datastores/{org}/{slug}",fetch:fetchDatastore}),["stigmer_datastore"]}var DatastoreInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description of what this datastore holds."),timezone:external_exports.string().optional().describe("IANA timezone (e.g. 'Asia/Kolkata') for constraint evaluation. Bound as the constant 'tz' in check and exists constraint expressions. Optional; when unset, expressions that reference 'tz' are rejected at apply time. @internal IANA-name validity is domain validation (the proto layer cannot carry a timezone database)."),authorization:external_exports.lazy(()=>DatastoreAuthorizationInputSchema).optional().describe("Record-layer authorization: roles, subject bindings, and the default role for unbound callers."),collections:external_exports.array(external_exports.lazy(()=>CollectionDeclarationInputSchema)).optional().describe("Record collections declared by this datastore. @internal Collection-name uniqueness within the datastore is domain validation (protovalidate CEL has no portable uniqueness check over message lists).")},DatastoreInputSchema=external_exports.object(DatastoreInputShape),DatastoreRoleInputSchema=external_exports.object({name:external_exports.string().describe("Role name, referenced by bindings, grants, and default_role.")}),ChannelSenderSubjectInputSchema=external_exports.object({sender_kind:external_exports.string().describe("Sender identity namespace. Must be a namespace the platform's channel brokers can stamp \u2014 today 'whatsapp_phone'; unrecognized namespaces are refused at apply time (they could never match)."),value:external_exports.string().describe("Sender identity value within the namespace, in the exact wire shape the channel broker stamps. For 'whatsapp_phone' this is Meta's wa_id: DIGITS ONLY, no '+', no separators (e.g. '919800000001' \u2014 NOT the '+'-prefixed E.164 form). Apply-time validation refuses any other shape, because subject matching is exact string equality and a mis-shaped value would bind and silently never match. @internal Bearer-adjacent: never logged raw, never filterable, never echoed into validation error strings, and only ever compared against broker-stamped session metadata.")}),ApiResourceRefInputSchema=external_exports.object({kind:external_exports.string().describe("Type of the API resource being referenced This should be the resource kind as defined in ApiResourceKind enum. Examples: 'identity_account', 'team', 'organization', 'environment', 'cloud_resource', 'service', etc."),id:external_exports.string().describe("Unique identifier of the resource This is the resource's ID field (e.g., ia-01HQUSER123, tm-01HQTEAM456)"),relation:external_exports.string().optional().describe("Optional relation qualifier for the resource reference. Used when the reference needs additional context about the relationship. Primary use case: For team principals, this specifies the relation of the user to the team (e.g., 'member', 'admin'). Example: principal { kind: 'team', id: 'tm-123', relation: 'member' } means 'members of team tm-123' This field qualifies HOW the principal relates to this resource reference, NOT the permission being granted (that's IamPolicySpec.relation). @internal In OpenFGA tuple notation: team:tm-123#member (as the subject of the tuple)")}),DatastoreSubjectInputSchema=external_exports.object({channel_sender:external_exports.lazy(()=>ChannelSenderSubjectInputSchema).optional().describe("Channel sender identity, matched against the session metadata stamped by the channel broker."),principal:external_exports.lazy(()=>ApiResourceRefInputSchema).optional().describe("Platform principal (an identity account today; teams later without schema change). @internal Matched by exact kind+id equality against the caller-derived subject; the relation qualifier is excluded from identity and rejected at apply. The id is the account id, never a slug or email \u2014 apply-time validation refuses unresolvable values with a membership-gated did-you-mean instead of letting them bind nothing silently (dont-dos/001).")}),DatastoreRoleBindingInputSchema=external_exports.object({subject:external_exports.lazy(()=>DatastoreSubjectInputSchema).describe("The caller identity this binding matches."),role:external_exports.string().describe("Name of a declared role.")}),DatastoreAuthorizationInputSchema=external_exports.object({roles:external_exports.array(external_exports.lazy(()=>DatastoreRoleInputSchema)).optional().describe("Role names referenced by bindings and grants (e.g. 'admin', 'patient')."),bindings:external_exports.array(external_exports.lazy(()=>DatastoreRoleBindingInputSchema)).optional().describe("Subject-to-role bindings. @internal Role-reference integrity (every binding names a declared role) is domain validation."),default_role:external_exports.string().optional().describe("Role an unbound caller resolves to. Applies to channel senders with no binding and platform principals with no binding. When empty, unbound callers are denied every verb.")}),FieldDeclarationInputSchema=external_exports.object({name:external_exports.string().describe("Field name, unique within the collection. Format: lowercase snake_case. The record envelope's system field names (id, created_at, updated_at, created_by), 'org', and 'partition' are reserved."),type:external_exports.string().describe("Value type for this field. Allowed values: string, integer, number, bool, timestamp, date, time, json."),required:external_exports.boolean().optional().describe("Whether a value must be present on every record. Absent optional fields evaluate as null in constraint expressions."),default:external_exports.unknown().optional().describe("Default value applied when the field is absent on insert. @internal Type compatibility between the default and the declared type is domain validation (google.protobuf.Value is untyped here)."),enum_values:external_exports.array(external_exports.string()).optional().describe("Allowed values for string fields. Declaring enum_values on a non-string field is rejected."),description:external_exports.string().optional().describe("Human-readable description, surfaced to agents via describe_datastore.")}),UniqueWhereInputSchema=external_exports.object({field:external_exports.string().describe("Declared field the condition tests."),equals:external_exports.unknown().describe("Value the field must equal for the constraint to apply.")}),UniqueConstraintInputSchema=external_exports.object({name:external_exports.string().describe("Constraint name, unique within the collection."),fields:external_exports.array(external_exports.string()).optional().describe("Declared fields whose combined values must be unique."),where:external_exports.lazy(()=>UniqueWhereInputSchema).optional().describe("Limits the constraint to records matching this condition (e.g. only 'status == 'confirmed'' bookings must be unique per slot). @internal Structured, never an expression \u2014 it must compile to the substrate's partial-index dialect in both editions."),message:external_exports.string().describe("Error message returned on violation, written to be relayed to an end user by an agent (e.g. 'that slot is already booked').")}),CheckConstraintInputSchema=external_exports.object({name:external_exports.string().describe("Constraint name, unique within the collection."),expression:external_exports.string().describe("CEL expression that must evaluate true for the record to be written."),when:external_exports.string().optional().describe("Optional CEL gate: the check applies only when this evaluates true."),message:external_exports.string().describe("Error message returned on violation, written to be relayed to an end user by an agent.")}),ExistsConstraintInputSchema=external_exports.object({name:external_exports.string().describe("Constraint name, unique within the collection."),collection:external_exports.string().describe("Target collection in the same datastore."),where:external_exports.string().describe("CEL condition matching candidate ('this') against target records ('that')."),when:external_exports.string().optional().describe("Optional CEL gate: the constraint applies only when this evaluates true."),message:external_exports.string().describe("Error message returned on violation, written to be relayed to an end user by an agent.")}),DatastoreGrantInputSchema=external_exports.object({role:external_exports.string().describe("Name of a declared role."),verbs:external_exports.array(external_exports.string()).optional().describe("Verbs granted to the role on this collection. Allowed values: read, insert, update, delete."),scope:external_exports.string().optional().describe("Row scope of the grant. Defaults to all records. 'own' limits update and delete (and read) to records whose server-stamped created_by matches the caller. Allowed values: all, own."),read_fields:external_exports.array(external_exports.string()).optional().describe("Field allowlist for the read verb: when set, reads by this role return only these fields, and filter conditions and order_by may reference only these fields. Empty means every field is readable. Entries name declared fields of the collection, or 'created_by' to expose the attribution subject. The system fields id, created_at, and updated_at are always readable. @internal The column-level GRANT SELECT of the record layer, closing the scope-all-reads-carry-PII residual (dont-dos/002): every record RPC response \u2014 find results AND write echoes \u2014 is projected to the caller's read-grant field set, and created_by is included only when listed (for channel senders it is the phone number, the most direct PII in the envelope). A caller with no read grant at all receives envelopes with id and timestamps only (write-only access). Empty = unrestricted is forced by proto3 repeated-field semantics (no presence) and mirrors 'scope' unset = all. Requires 'read' among the grant's verbs \u2014 read_fields on a write-only grant is declared intent with no effect and is refused at apply, same posture as the binding relation qualifier. Entry-to-declared-field resolution is domain validation (both editions, byte-identical messages).")}),CollectionDeclarationInputSchema=external_exports.object({name:external_exports.string().describe("Collection name, unique within the datastore. Format: lowercase snake_case (e.g. 'bookings', 'schedule_exceptions')."),description:external_exports.string().optional().describe("Human-readable description of what records in this collection represent."),fields:external_exports.array(external_exports.lazy(()=>FieldDeclarationInputSchema)).optional().describe("Typed field declarations for records in this collection."),uniques:external_exports.array(external_exports.lazy(()=>UniqueConstraintInputSchema)).optional().describe("Uniqueness constraints, enforced by substrate indexes."),checks:external_exports.array(external_exports.lazy(()=>CheckConstraintInputSchema)).optional().describe("Single-record check constraints, evaluated on every insert and update."),exists:external_exports.array(external_exports.lazy(()=>ExistsConstraintInputSchema)).optional().describe("Cross-collection constraints requiring a matching record to exist."),not_exists:external_exports.array(external_exports.lazy(()=>ExistsConstraintInputSchema)).optional().describe("Cross-collection constraints requiring no matching record to exist."),grants:external_exports.array(external_exports.lazy(()=>DatastoreGrantInputSchema)).optional().describe("Per-role access grants for records in this collection. Deny by default: a role with no grant on a collection has no access to it.")});function datastoreInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(DatastoreSpecSchema);return input.description!==void 0&&(spec.description=input.description),input.timezone!==void 0&&(spec.timezone=input.timezone),input.authorization!==void 0&&(spec.authorization=datastoreAuthorizationInputToProto(input.authorization)),input.collections!==void 0&&(spec.collections=input.collections.map(collectionDeclarationInputToProto)),Object.assign(create(DatastoreSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Datastore",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function datastoreRoleInputToProto(input){let result=create(DatastoreRoleSchema);return input.name!==void 0&&(result.name=input.name),result}function channelSenderSubjectInputToProto(input){let result=create(ChannelSenderSubjectSchema);return input.sender_kind!==void 0&&(result.senderKind=input.sender_kind),input.value!==void 0&&(result.value=input.value),result}function apiResourceRefInputToProto(input){let result=create(ApiResourceRefSchema);return input.kind!==void 0&&(result.kind=input.kind),input.id!==void 0&&(result.id=input.id),input.relation!==void 0&&(result.relation=input.relation),result}function datastoreSubjectInputToProto(input){let result=create(DatastoreSubjectSchema);return input.channel_sender!==void 0&&(result.kind={case:"channelSender",value:channelSenderSubjectInputToProto(input.channel_sender)}),input.principal!==void 0&&(result.kind={case:"principal",value:apiResourceRefInputToProto(input.principal)}),result}function datastoreRoleBindingInputToProto(input){let result=create(DatastoreRoleBindingSchema);return input.subject!==void 0&&(result.subject=datastoreSubjectInputToProto(input.subject)),input.role!==void 0&&(result.role=input.role),result}function datastoreAuthorizationInputToProto(input){let result=create(DatastoreAuthorizationSchema);return input.roles!==void 0&&(result.roles=input.roles.map(datastoreRoleInputToProto)),input.bindings!==void 0&&(result.bindings=input.bindings.map(datastoreRoleBindingInputToProto)),input.default_role!==void 0&&(result.defaultRole=input.default_role),result}function fieldDeclarationInputToProto(input){let result=create(FieldDeclarationSchema);return input.name!==void 0&&(result.name=input.name),result.type=enumFromString(FieldType,input.type),input.required!==void 0&&(result.required=input.required),input.default!==void 0&&(result.default=fromJson(ValueSchema,input.default)),input.enum_values!==void 0&&(result.enumValues=input.enum_values),input.description!==void 0&&(result.description=input.description),result}function uniqueWhereInputToProto(input){let result=create(UniqueWhereSchema);return input.field!==void 0&&(result.field=input.field),input.equals!==void 0&&(result.equals=fromJson(ValueSchema,input.equals)),result}function uniqueConstraintInputToProto(input){let result=create(UniqueConstraintSchema);return input.name!==void 0&&(result.name=input.name),input.fields!==void 0&&(result.fields=input.fields),input.where!==void 0&&(result.where=uniqueWhereInputToProto(input.where)),input.message!==void 0&&(result.message=input.message),result}function checkConstraintInputToProto(input){let result=create(CheckConstraintSchema);return input.name!==void 0&&(result.name=input.name),input.expression!==void 0&&(result.expression=input.expression),input.when!==void 0&&(result.when=input.when),input.message!==void 0&&(result.message=input.message),result}function existsConstraintInputToProto(input){let result=create(ExistsConstraintSchema);return input.name!==void 0&&(result.name=input.name),input.collection!==void 0&&(result.collection=input.collection),input.where!==void 0&&(result.where=input.where),input.when!==void 0&&(result.when=input.when),input.message!==void 0&&(result.message=input.message),result}function datastoreGrantInputToProto(input){let result=create(DatastoreGrantSchema);return input.role!==void 0&&(result.role=input.role),input.verbs!==void 0&&(result.verbs=input.verbs.map(v=>enumFromString(DatastoreVerb,v))),result.scope=enumFromString(DatastoreGrantScope,input.scope),input.read_fields!==void 0&&(result.readFields=input.read_fields),result}function collectionDeclarationInputToProto(input){let result=create(CollectionDeclarationSchema);return input.name!==void 0&&(result.name=input.name),input.description!==void 0&&(result.description=input.description),input.fields!==void 0&&(result.fields=input.fields.map(fieldDeclarationInputToProto)),input.uniques!==void 0&&(result.uniques=input.uniques.map(uniqueConstraintInputToProto)),input.checks!==void 0&&(result.checks=input.checks.map(checkConstraintInputToProto)),input.exists!==void 0&&(result.exists=input.exists.map(existsConstraintInputToProto)),input.not_exists!==void 0&&(result.notExists=input.not_exists.map(existsConstraintInputToProto)),input.grants!==void 0&&(result.grants=input.grants.map(datastoreGrantInputToProto)),result}async function applyDatastore(serverAddress,token,input){let datastore=datastoreInputToProto(input),desc=`datastore "${datastore.metadata?.slug??""}" in org "${datastore.metadata?.org??""}"`;return withClient(DatastoreCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(datastore,callOptions);return toProtoJson(DatastoreSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteDatastore(serverAddress,token,org,slug){let desc=`datastore "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(DatastoreQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.datastore,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(DatastoreCommandController,transport);try{let deleted=await command.delete({resourceId:id},callOptions);return toProtoJson(DatastoreSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerDatastoreTools(server,target){return server.registerTool("get_datastore",{description:"Get the full definition of a Stigmer datastore by its org and slug: collections, field declarations, constraints, roles, and grants. For the record-facing view of the same structure (allowed verbs, readable fields), use describe_datastore; for the data itself, use the record tools.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the datastore (e.g. stigmer)."),slug:external_exports.string().describe("Datastore slug \u2014 the unique identifier within the org (e.g. clinic-bookings).")}},(args,extra)=>textOrError(()=>fetchDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_datastore",{description:"Create or update a Stigmer datastore definition (idempotent). The manifest is authoritative for structure only \u2014 schema changes sync on apply (the server enforces its additive-plus change rules), and records are never touched; use the record tools to manage data.",inputSchema:DatastoreInputShape},(args,extra)=>textOrError(()=>applyDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_datastore",{description:"Delete a Stigmer datastore by its org and slug, destroying its collections and all records in them. This is irreversible. Returns the deleted datastore definition.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the datastore (e.g. stigmer)."),slug:external_exports.string().describe("Datastore slug \u2014 the unique identifier within the org (e.g. clinic-bookings).")}},(args,extra)=>textOrError(()=>deleteDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_datastore","apply_datastore","delete_datastore"]}async function fetchEnvironment(serverAddress,token,org,slug){return withClient(EnvironmentQueryController,serverAddress,token,async(client,callOptions)=>{try{let environment=await client.getByReference({org,kind:ApiResourceKind.environment,slug},callOptions);return toProtoJson(EnvironmentSchema,environment)}catch(err){throw rpcError(err,`environment "${slug}" in org "${org}"`)}})}function registerEnvironmentResources(server,target){return registerResource(server,target,{name:"stigmer_environment",title:"Stigmer Environment",description:"Full definition of a Stigmer environment, identified by organization and slug. Secret values are redacted.",template:"stigmer://environments/{org}/{slug}",fetch:fetchEnvironment}),["stigmer_environment"]}var EnvironmentInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for UI and listing display."),data:external_exports.record(external_exports.lazy(()=>EnvironmentValueInputSchema)).optional().describe("Key-value pairs containing configuration and secrets. Each value includes a flag indicating whether it is a secret.")},EnvironmentInputSchema=external_exports.object(EnvironmentInputShape),EnvironmentValueInputSchema=external_exports.object({value:external_exports.string().optional().describe("The configuration or secret string. @internal When is_secret is true the value is encrypted at rest and redacted in logs. When is_secret is false the value is stored as plaintext. Value can be empty when pre-declaring keys whose values are injected at runtime."),is_secret:external_exports.boolean().optional().describe("Whether this value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs, requires can_read_secrets to reveal. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description of what this value is used for.")});function environmentInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(EnvironmentSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.data!==void 0)for(let[k,v]of Object.entries(input.data))spec.data[k]=environmentValueInputToProto(v);return Object.assign(create(EnvironmentSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Environment",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function environmentValueInputToProto(input){let result=create(EnvironmentValueSchema);return input.value!==void 0&&(result.value=input.value),input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),result}async function applyEnvironment(serverAddress,token,input){let environment=environmentInputToProto(input),desc=`environment "${environment.metadata?.slug??""}" in org "${environment.metadata?.org??""}"`;return withClient(EnvironmentCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(environment,callOptions);return toProtoJson(EnvironmentSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteEnvironment(serverAddress,token,org,slug){let desc=`environment "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(EnvironmentQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.environment,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(EnvironmentCommandController,transport);try{let deleted=await command.delete({resourceId:id},callOptions);return toProtoJson(EnvironmentSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerEnvironmentTools(server,target){return server.registerTool("get_environment",{description:"Get full details of a Stigmer environment by its org and slug, including its variable declarations. Secret values are redacted to ***REDACTED*** \u2014 they can never be read back through this tool.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the environment (e.g. stigmer)."),slug:external_exports.string().describe("Environment slug \u2014 the unique identifier within the org (e.g. github-creds).")}},(args,extra)=>textOrError(()=>fetchEnvironment(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_environment",{description:"Create or update a Stigmer environment (idempotent). The spec is applied in full, so include every variable the environment should keep. When updating, secret values read back as ***REDACTED*** \u2014 echoing that marker preserves the existing secret, so a get \u2192 edit \u2192 apply round-trip never destroys secrets; send a real value only to set or rotate one.",inputSchema:EnvironmentInputShape},(args,extra)=>textOrError(()=>applyEnvironment(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_environment",{description:"Delete a Stigmer environment by its org and slug. Returns the deleted environment. Agents and workflows referencing it will fail to resolve their variables at run time.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the environment (e.g. stigmer)."),slug:external_exports.string().describe("Environment slug \u2014 the unique identifier within the org (e.g. github-creds).")}},(args,extra)=>textOrError(()=>deleteEnvironment(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_environment","apply_environment","delete_environment"]}var TERMINAL_AGENT_PHASES=new Set([ExecutionPhase.EXECUTION_COMPLETED,ExecutionPhase.EXECUTION_FAILED,ExecutionPhase.EXECUTION_CANCELLED,ExecutionPhase.EXECUTION_TERMINATED]),TERMINAL_WORKFLOW_PHASES=new Set([ExecutionPhase2.EXECUTION_COMPLETED,ExecutionPhase2.EXECUTION_FAILED,ExecutionPhase2.EXECUTION_CANCELLED,ExecutionPhase2.EXECUTION_TERMINATED]);function resolveExecutionType(id){let trimmed=id.trim();if(trimmed.startsWith("aex_")||trimmed.startsWith("aex-"))return"agent";if(trimmed.startsWith("wex_")||trimmed.startsWith("wex-"))return"workflow";throw new Error(`unrecognized execution ID format: ${id}
|
|
199
199
|
|
|
200
200
|
Expected formats:
|
|
201
201
|
Agent execution: aex_<26-char-ulid>
|
|
202
|
-
Workflow execution: wex_<26-char-ulid>`)}async function cancelExecution(serverAddress,token,executionId,reason){return resolveExecutionType(executionId)==="agent"?cancelAgentExecution(serverAddress,token,executionId,reason):cancelWorkflowExecution(serverAddress,token,executionId,reason)}async function cancelAgentExecution(serverAddress,token,id,reason){let desc=`agent execution "${id}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{try{let current=await createClient(AgentExecutionQueryController,transport).get({value:id},callOptions),phase=current.status?.phase??ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;if(TERMINAL_AGENT_PHASES.has(phase))return wrapAgent(current,!0);let cancelled=await createClient(AgentExecutionCommandController,transport).cancel({id,reason},callOptions);return wrapAgent(cancelled,!1)}catch(err){throw rpcError(err,desc)}})}async function cancelWorkflowExecution(serverAddress,token,id,reason){let desc=`workflow execution "${id}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{try{let current=await createClient(WorkflowExecutionQueryController,transport).get({value:id},callOptions),phase=current.status?.phase??ExecutionPhase2.EXECUTION_PHASE_UNSPECIFIED;if(TERMINAL_WORKFLOW_PHASES.has(phase))return wrapWorkflow(current,!0);let cancelled=await createClient(WorkflowExecutionCommandController,transport).cancel({id,reason},callOptions);return wrapWorkflow(cancelled,!1)}catch(err){throw rpcError(err,desc)}})}function wrapAgent(execution,alreadyTerminal){let{totalMessages,data}=compactExecution(execution,DEFAULT_MESSAGE_LIMIT);return JSON.stringify({already_terminal:alreadyTerminal,view:"compact",total_messages:totalMessages,execution:data},null,2)}function wrapWorkflow(execution,alreadyTerminal){return JSON.stringify({already_terminal:alreadyTerminal,execution:JSON.parse(toProtoJson(WorkflowExecutionSchema,execution))},null,2)}function registerExecutionControlTools(server,target){return server.registerTool("cancel_execution",{description:"Gracefully cancel a running agent (aex_*) or workflow (wex_*) execution \u2014 the kind is inferred from the ID prefix. Cancellation is terminal: the run stops after cleanup and cannot be resumed. Executions already in a terminal phase are returned with already_terminal=true instead of an error.",inputSchema:{execution_id:external_exports.string().describe("Execution ID to cancel (aex_* or wex_* format)."),reason:external_exports.string().optional().describe("Human-readable reason for the cancellation, stored in the audit trail.")}},(args,extra)=>textOrError(()=>cancelExecution(target.serverAddress,resolveToken(extra,target.apiKey),args.execution_id,args.reason??""))),["cancel_execution"]}async function fetchMcpServer(serverAddress,token,org,slug){return withClient(McpServerQueryController,serverAddress,token,async(client,callOptions)=>{try{let mcpServer=await client.getByReference({org,kind:ApiResourceKind.mcp_server,slug},callOptions);return toProtoJson(McpServerSchema,mcpServer)}catch(err){throw rpcError(err,`MCP server "${slug}" in org "${org}"`)}})}function registerMcpServerResources(server,target){return registerResource(server,target,{name:"stigmer_mcp_server",title:"Stigmer MCP Server",description:"Full definition of a Stigmer MCP server, identified by organization and slug.",template:"stigmer://mcp-servers/{org}/{slug}",fetch:fetchMcpServer}),["stigmer_mcp_server"]}var McpServerInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for marketplace display and documentation. Should explain what this MCP server does and its primary use cases. Example: 'GitHub MCP server for repository operations, code search, and PR management'"),icon_url:external_exports.string().optional().describe("Icon URL for UI display in marketplace and agent configuration screens. Should be a publicly accessible URL to an image (SVG, PNG, or JPEG). Example: 'https://github.githubassets.com/favicons/favicon.svg'"),stdio:external_exports.lazy(()=>StdioServerConfigInputSchema).optional().describe("stdio-based server (subprocess with stdin/stdout communication). Most common type - used for Node.js, Python, and other CLI-based MCP servers."),http:external_exports.lazy(()=>HttpServerConfigInputSchema).optional().describe("HTTP-based server (HTTP + Server-Sent Events communication). Used for remote/managed MCP services accessible over the network."),default_enabled_tools:external_exports.array(external_exports.string()).optional().describe("Default tools to enable from this MCP server. Empty list means all tools are enabled by default. @internal Tool names must match exactly what the MCP server reports via tools/list. Only names from discovered_capabilities.tools are valid here. Do NOT include names from discovered_capabilities.resource_templates \u2014 resource templates are read-only data endpoints, not callable tools. Including a resource template name here causes a fatal runtime error."),env:external_exports.record(external_exports.lazy(()=>EnvVarDeclarationInputSchema2)).optional().describe("Environment variable declarations for this MCP server. Keys are variable names; values describe their metadata and optionality."),pinned_tool_approvals:external_exports.array(external_exports.lazy(()=>ToolApprovalPolicyInputSchema)).optional().describe("Manual tool approval overrides set by the MCP server owner. @internal These take precedence over system-generated 'McpServerStatus.tool_approvals'. Never auto-modified \u2014 only changed by explicit user action (apply/update). Use cases: - Force approval for a tool the classifier marked as auto-approve - Exempt a safe tool the classifier flagged as needing approval - Establish organization-wide safety policies for dangerous tools Policy chain (lowest to highest priority): 1. McpServerStatus.tool_approvals - System-generated defaults 2. McpServerSpec.pinned_tool_approvals - Manual overrides (this field) 3. Agent.McpServerUsage.tool_approval_overrides - Per-agent customization 4. AgentExecution.auto_approve_all - Runtime bypass"),repository_url:external_exports.string().optional().describe("URL of the upstream source repository for this MCP server. Shown in the marketplace so users can inspect the implementation for trust and transparency. Example: 'https://github.com/modelcontextprotocol/servers'"),github_stars:external_exports.number().optional().describe("GitHub star count at the time of curation. Used as a popularity signal in marketplace display. 0 if unknown or non-GitHub repository."),auth:external_exports.lazy(()=>McpServerAuthInputSchema).optional().describe("OAuth authentication configuration for automated credential acquisition. When set, the MCP server's Connect page offers an OAuth flow instead of (or in addition to) manual credential entry. The acquired access token is stored in a system-managed environment (identified by grant.environment_id) as the env var named by auth.target_env_var. That env var must also be declared in env so the execution pipeline knows about it.")},McpServerInputSchema=external_exports.object(McpServerInputShape),StdioServerConfigInputSchema=external_exports.object({command:external_exports.string().describe("Command to execute the MCP server. This is the executable name or path. Examples: 'npx', 'python', 'node', './custom-mcp-server'"),args:external_exports.array(external_exports.string()).optional().describe("Arguments to pass to the command. Argument values can reference environment variables using ${VAR_NAME} syntax. These placeholders are resolved at runtime from the execution environment (same source as HTTP header/query param placeholders). This enables MCP servers that take core configuration as positional CLI arguments (e.g. database connection URLs, directory paths) to be parameterized per-user through env declarations. Resolution uses strict mode: missing variables produce a clear error rather than passing a literal '${VAR}' to the subprocess. Note: resolved values appear in the subprocess argv, which is visible via /proc/<pid>/cmdline within the container. In the containerized agent-runner environment this is not a practical concern, but callers should be aware when debugging. Examples: ['-y', '@modelcontextprotocol/server-github'] ['-y', '@modelcontextprotocol/server-postgres', '${POSTGRES_CONNECTION_URL}'] ['-m', 'mcp_server_sqlite', '--db-path', '${DB_PATH}/data.sqlite']"),working_dir:external_exports.string().optional().describe("Working directory for the process. If not specified, the process inherits the agent runner's working directory. Use absolute paths or paths relative to the agent runner's context.")}),HttpServerConfigInputSchema=external_exports.object({url:external_exports.string().describe("Base URL of the MCP server endpoint. Must be a valid HTTP or HTTPS URL. Examples: - 'http://localhost:3000/mcp' - 'https://mcp.example.com/v1' - 'https://api.company.com/mcp/github'"),headers:external_exports.record(external_exports.string()).optional().describe("HTTP headers to include with every request. Use for authentication, API versioning, or custom routing. Header values can reference environment variables using ${VAR_NAME} syntax. These placeholders are resolved at runtime from AgentInstance's environment. Examples: 'Authorization': 'Bearer ${API_TOKEN}' 'X-API-Version': '2024-01' 'X-Tenant-ID': '${TENANT_ID}'"),query_params:external_exports.record(external_exports.string()).optional().describe("Query parameters to append to the URL. Values can reference environment variables using ${VAR_NAME} syntax. Examples: 'region': '${AWS_REGION}' 'version': 'v1'"),timeout_seconds:external_exports.number().optional().describe("Timeout for HTTP requests in seconds. Applies to both the initial connection and response streaming. Default: 30 seconds if not specified. Set higher values for MCP servers that perform long-running operations.")}),EnvVarDeclarationInputSchema2=external_exports.object({is_secret:external_exports.boolean().optional().describe("Whether the resolved value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs and Temporal history. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description shown in the UI credential form. Should explain what the variable is used for and where to obtain it."),optional:external_exports.boolean().optional().describe("Whether this variable is optional. @internal When false (default): the execution pipeline rejects a run if this variable is missing from the user's environment. When true: a missing value is acceptable (the MCP server or agent degrades gracefully without it).")}),ToolApprovalPolicyInputSchema=external_exports.object({tool_name:external_exports.string().optional().describe("Name of the tool (must match tools/list from MCP server exactly). Case-sensitive matching against tool names reported by the MCP server. Example: 'delete_repository', 'send_email', 'execute_sql'"),message:external_exports.string().optional().describe("Human-readable message shown to user when approval is requested. Supports {{args.field}} placeholders for dynamic content. If empty, a default message is generated: 'Execute tool: {tool_name}' Guidelines for effective messages: - Be specific about what will happen - Include the most important argument values using placeholders - Keep under 100 characters for UI display - Use action verbs: 'Delete', 'Send', 'Execute', 'Create'"),from_destructive_hint:external_exports.boolean().optional().describe("True when the connect-time fail-closed tightener force-gated this tool because the server's own MCP annotation declared destructiveHint=true, rather than the classifier (or a human) gating it. Lets the runner attribute a tightened tool to its true provenance (ApprovalPolicySource.APPROVAL_POLICY_SOURCE_ANNOTATION_DESTRUCTIVE_TIGHTEN) instead of collapsing it into the classifier default. Carries no enforcement weight \u2014 gating is decided by presence in this list \u2014 so an absent/false value simply means 'not attributed to the destructiveHint tightener'. Set only on entries written to McpServerStatus.tool_approvals (the classifier layer). It is meaningless on McpServerSpec.pinned_tool_approvals (a human pin is, by definition, a pinned override) and left false there.")}),OauthAppRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters.")}),McpServerAuthInputSchema=external_exports.object({oauth_app_ref:external_exports.lazy(()=>OauthAppRefInputSchema).optional().describe("Reference to an OAuthApp for vendor-specific OAuth. When empty: the server supports the MCP Authorization spec (DCR + PKCE). Stigmer discovers the authorization server metadata, registers a client via DCR, and performs the authorization code flow with PKCE \u2014 all automatically at connect time. When set: Stigmer uses the referenced OAuthApp's client credentials to perform the OAuth authorization code flow with the vendor on behalf of the user. The OAuthApp must belong to the same organization as the McpServer (or be accessible via cross-org reference)."),target_env_var:external_exports.string().optional().describe("The env var where the acquired access token is stored. Must correspond to an entry in env so the execution pipeline resolves it. The refresh token is stored as {target_env_var}_REFRESH_TOKEN by convention. Both are written to the grant's managed environment."),token_lifetime_hint:external_exports.string().optional().describe("Informational hint about expected token lifetime for UI display. Helps users understand when re-authentication may be needed. Empty means unknown. Examples: '1h', '2h', '90d', 'never'."),scope_hints:external_exports.array(external_exports.string()).optional().describe("Optional scope hints for UI display before the OAuth flow starts. For DCR servers: shown to the user since actual scopes are discovered at connect time during authorization server metadata retrieval. For vendor OAuth: informational (scopes are defined on the OAuthApp)."),discovery_url:external_exports.string().optional().describe("Optional URL for OAuth authorization server discovery on stdio servers. HTTP servers do not need this: the platform derives the discovery endpoint from http.url (fetching /.well-known/oauth-authorization-server relative to the server URL). Stdio servers have no URL, so DCR discovery has nothing to derive from. Set this field to the base URL of the vendor's OAuth authorization server to enable DCR for a stdio-based MCP server. Resolution priority: 1. discovery_url (if set \u2014 used for both stdio and HTTP) 2. http.url (default for HTTP servers) Ignored when oauth_app_ref is set (vendor OAuth uses OAuthApp endpoints directly, no discovery needed)."),oauth_only:external_exports.boolean().optional().describe("Whether the server's endpoint rejects manually-entered static tokens. Some hosted MCP endpoints (e.g. Notion, Monday) only accept an access token obtained through their OAuth flow \u2014 a personal API token or PAT pasted into the credential form is rejected with a 401. For these servers OAuth is not merely the preferred path, it is the only path that works. When true, the connect surfaces present OAuth as the sole credential option and suppress the 'enter token manually' affordance, so users are never sent down a path that cannot succeed. When false (the default), a static token remains a valid alternative \u2014 appropriate for API-key servers (e.g. Tavily) and for vendor endpoints that also accept a PAT (e.g. GitHub). This is a structural fact about the endpoint, not observable from the spec shape alone (an OAuth-only server and a PAT-capable server can have identical auth blocks), so it must be declared explicitly.")});function mcpServerInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(McpServerSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.icon_url!==void 0&&(spec.iconUrl=input.icon_url),input.stdio!==void 0&&(spec.serverType={case:"stdio",value:stdioServerConfigInputToProto(input.stdio)}),input.http!==void 0&&(spec.serverType={case:"http",value:httpServerConfigInputToProto(input.http)}),input.default_enabled_tools!==void 0&&(spec.defaultEnabledTools=input.default_enabled_tools),input.env!==void 0)for(let[k,v]of Object.entries(input.env))spec.env[k]=envVarDeclarationInputToProto2(v);return input.pinned_tool_approvals!==void 0&&(spec.pinnedToolApprovals=input.pinned_tool_approvals.map(toolApprovalPolicyInputToProto)),input.repository_url!==void 0&&(spec.repositoryUrl=input.repository_url),input.github_stars!==void 0&&(spec.githubStars=input.github_stars),input.auth!==void 0&&(spec.auth=mcpServerAuthInputToProto(input.auth)),Object.assign(create(McpServerSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"McpServer",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function stdioServerConfigInputToProto(input){let result=create(StdioServerConfigSchema);return input.command!==void 0&&(result.command=input.command),input.args!==void 0&&(result.args=input.args),input.working_dir!==void 0&&(result.workingDir=input.working_dir),result}function httpServerConfigInputToProto(input){let result=create(HttpServerConfigSchema);return input.url!==void 0&&(result.url=input.url),input.headers!==void 0&&(result.headers=input.headers),input.query_params!==void 0&&(result.queryParams=input.query_params),input.timeout_seconds!==void 0&&(result.timeoutSeconds=input.timeout_seconds),result}function envVarDeclarationInputToProto2(input){let result=create(EnvVarDeclarationSchema);return input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),input.optional!==void 0&&(result.optional=input.optional),result}function toolApprovalPolicyInputToProto(input){let result=create(ToolApprovalPolicySchema);return input.tool_name!==void 0&&(result.toolName=input.tool_name),input.message!==void 0&&(result.message=input.message),input.from_destructive_hint!==void 0&&(result.fromDestructiveHint=input.from_destructive_hint),result}function oauthAppRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.oauth_app})}function mcpServerAuthInputToProto(input){let result=create(McpServerAuthSchema);return input.oauth_app_ref!==void 0&&(result.oauthAppRef=oauthAppRefInputToProto(input.oauth_app_ref)),input.target_env_var!==void 0&&(result.targetEnvVar=input.target_env_var),input.token_lifetime_hint!==void 0&&(result.tokenLifetimeHint=input.token_lifetime_hint),input.scope_hints!==void 0&&(result.scopeHints=input.scope_hints),input.discovery_url!==void 0&&(result.discoveryUrl=input.discovery_url),input.oauth_only!==void 0&&(result.oauthOnly=input.oauth_only),result}async function applyMcpServer(serverAddress,token,input){let server=mcpServerInputToProto(input),desc=`mcp server "${server.metadata?.slug??""}" in org "${server.metadata?.org??""}"`;return withClient(McpServerCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(server,callOptions);return toProtoJson(McpServerSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteMcpServer(serverAddress,token,org,slug){let desc=`MCP server "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(McpServerQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.mcp_server,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(McpServerCommandController,transport);try{let deleted=await command.delete({resourceId:id},callOptions);return toProtoJson(McpServerSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerMcpServerTools(server,target){return server.registerTool("get_mcp_server",{description:"Get full details of a Stigmer MCP server by its org and slug (e.g. org=acme slug=my-server).",inputSchema:{org:external_exports.string().describe("Organization slug that owns the MCP server (e.g. acme)."),slug:external_exports.string().describe("MCP server slug \u2014 the unique identifier within the org (e.g. my-server).")}},(args,extra)=>textOrError(()=>fetchMcpServer(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_mcp_server",{description:"Create or update a Stigmer MCP server definition (idempotent). Provide identity fields (name, org) and server configuration (stdio/http, tools, env, etc.).",inputSchema:McpServerInputShape},(args,extra)=>textOrError(()=>applyMcpServer(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_mcp_server",{description:"Delete a Stigmer MCP server definition by its org and slug. Returns the deleted MCP server.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the MCP server (e.g. acme)."),slug:external_exports.string().describe("MCP server slug \u2014 the unique identifier within the org (e.g. github).")}},(args,extra)=>textOrError(()=>deleteMcpServer(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_mcp_server","apply_mcp_server","delete_mcp_server"]}var CONDITION_OPS={eq:RecordConditionOp.eq,neq:RecordConditionOp.neq,gt:RecordConditionOp.gt,gte:RecordConditionOp.gte,lt:RecordConditionOp.lt,lte:RecordConditionOp.lte,in:RecordConditionOp.is_in,not_in:RecordConditionOp.not_in,is_null:RecordConditionOp.is_null,not_null:RecordConditionOp.not_null};async function findRecords(serverAddress,token,args){let request3=create(FindRecordsRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,filter:buildFilter(args.conditions),orderBy:buildOrderBy(args.order_by),limit:args.limit??0,offset:args.offset??0});return withClient(DatastoreRecordQueryController,serverAddress,token,async(client,opts)=>toProtoJson(RecordListSchema,await client.findRecords(request3,opts)))}async function insertRecord(serverAddress,token,args){let request3=create(InsertRecordRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,record:args.record});return withClient(DatastoreRecordCommandController,serverAddress,token,async(client,opts)=>toProtoJson(RecordEnvelopeSchema,await client.insertRecord(request3,opts)))}async function updateRecord(serverAddress,token,args){let request3=create(UpdateRecordRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,id:args.id,fields:args.fields});return withClient(DatastoreRecordCommandController,serverAddress,token,async(client,opts)=>toProtoJson(RecordEnvelopeSchema,await client.updateRecord(request3,opts)))}async function deleteRecord(serverAddress,token,args){let request3=create(DeleteRecordRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,id:args.id});return withClient(DatastoreRecordCommandController,serverAddress,token,async(client,opts)=>toProtoJson(RecordEnvelopeSchema,await client.deleteRecord(request3,opts)))}async function describeDatastore(serverAddress,token,args){let request3=create(DescribeDatastoreRequestSchema,{datastore:args.datastore,org:args.org??""});return withClient(DatastoreRecordQueryController,serverAddress,token,async(client,opts)=>toProtoJson(DatastoreDescriptionSchema,await client.describeDatastore(request3,opts)))}function buildFilter(conditions){if(!(conditions===void 0||conditions.length===0))return create(RecordFilterSchema,{conditions:conditions.map(buildCondition)})}function buildCondition(arg){return create(RecordConditionSchema,{field:arg.field,op:CONDITION_OPS[arg.op]??RecordConditionOp.record_condition_op_unspecified,value:arg.value!==void 0?scalarValue(arg.value):void 0,values:(arg.values??[]).map(scalarValue)})}function buildOrderBy(orderBy){if(orderBy!==void 0)return create(RecordOrderBySchema,{field:orderBy.field,direction:orderBy.direction==="desc"?RecordSortDirection.desc:orderBy.direction==="asc"?RecordSortDirection.asc:RecordSortDirection.record_sort_direction_unspecified})}function scalarValue(v){return fromJson(ValueSchema,v)}var DOMAIN_CODES=new Set([Code.PermissionDenied,Code.AlreadyExists,Code.FailedPrecondition,Code.InvalidArgument,Code.NotFound]);async function recordResult(toolContext,produce){try{return textResult(await produce())}catch(err){let ce=ConnectError.from(err);return DOMAIN_CODES.has(ce.code)?{content:[{type:"text",text:JSON.stringify(domainError(ce))}],isError:!0}:errorResult(rpcError(ce,toolContext))}}function domainError(ce){let payload={error:ce.rawMessage,code:grpcStatusName(ce.code)},details=ce.findDetails(ErrorInfoSchema);if(details.length>0){let info=details[0];info.reason!==""&&(payload.reason=info.reason);let constraint=info.metadata.constraint;constraint!==void 0&&constraint!==""&&(payload.constraint=constraint)}return payload}function grpcStatusName(code){return Code[code].replace(/([a-z0-9])([A-Z])/g,"$1_$2").toUpperCase()}var ENCODINGS="Field value encodings: date YYYY-MM-DD, time HH:MM[:SS], timestamp RFC 3339 UTC (e.g. 2026-07-21T04:30:00Z).",scalar=external_exports.union([external_exports.string(),external_exports.number(),external_exports.boolean()]),conditionShape=external_exports.object({field:external_exports.string().describe("Declared field name, or a filterable system field (id, created_at, updated_at)."),op:external_exports.enum(["eq","neq","gt","gte","lt","lte","in","not_in","is_null","not_null"]).describe("Comparison operator. eq/neq/in/not_in for string and enum fields; gt/gte/lt/lte for numeric and temporal fields; is_null/not_null for optional fields."),value:scalar.nullable().optional().describe("Comparison value for scalar operators, in the field's canonical encoding."),values:external_exports.array(scalar).optional().describe("Comparison values for in / not_in.")});function registerRecordTools(server,target,audience){let orgShape={};return audience==="direct"&&(orgShape.org=external_exports.string().optional().describe("Organization that owns the datastore. Required on Stigmer Cloud; omit against a local backend.")),server.registerTool("describe_datastore",{description:`Describe a datastore: its collections, field declarations and encodings, constraint messages, data partitions, and the verbs you are allowed to use per collection (empty access means you are not allowed to touch that collection). A read verb may carry readable_fields: reads then return only those fields, and only they may appear in filter conditions and order_by (empty readable_fields means every field). Call this before the first record operation against an unfamiliar datastore. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape},annotations:{readOnlyHint:!0}},(args,extra)=>recordResult(`datastore "${args.datastore}"`,()=>describeDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("find_records",{description:`Find records in a datastore collection with a typed filter (conditions are AND-combined). Returns records plus total/limit/offset for paging. Results are ordered by created_at descending unless order_by is given. Records carry only the fields your grant allows (describe_datastore lists them as readable_fields); conditions and order_by on other fields are rejected. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection to query (e.g. bookings)."),conditions:external_exports.array(conditionShape).optional().describe("Filter conditions, AND-combined. Omit to list all readable records."),order_by:external_exports.object({field:external_exports.string().describe("Field to sort by."),direction:external_exports.enum(["asc","desc"]).optional().describe("Sort direction (default asc).")}).optional().describe("Sort order. Omit for created_at descending with id tiebreak."),limit:external_exports.number().int().optional().describe("Page size (default 25, max 100)."),offset:external_exports.number().int().optional().describe("Records to skip for paging.")},annotations:{readOnlyHint:!0}},(args,extra)=>recordResult(`records in "${args.datastore}/${args.collection}"`,()=>findRecords(target.serverAddress,resolveToken(extra,target.apiKey),{...args,conditions:args.conditions}))),server.registerTool("insert_record",{description:`Insert one record into a datastore collection. System fields (id, created_at, updated_at, created_by) are server-stamped \u2014 never include them. Declared constraints are enforced by the store; a violation returns the constraint's message verbatim (e.g. a taken slot returns ALREADY_EXISTS \u2014 pick another, do not retry the same one). When uncertain whether a record already exists, find first. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection to insert into (e.g. bookings)."),record:external_exports.record(external_exports.unknown()).describe("Declared fields for the new record, in canonical encodings.")}},(args,extra)=>recordResult(`record in "${args.datastore}/${args.collection}"`,()=>insertRecord(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("update_record",{description:`Update one record by id with a partial merge: only the supplied fields change, and an explicit null clears a field. Constraints are re-evaluated on the merged result. Returns the full updated record. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection holding the record."),id:external_exports.string().describe("Record id (from a previous find or insert)."),fields:external_exports.record(external_exports.unknown()).describe("Fields to merge. Explicit null clears a field; omitted fields keep their values.")},annotations:{idempotentHint:!0}},(args,extra)=>recordResult(`record "${args.id}" in "${args.datastore}/${args.collection}"`,()=>updateRecord(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_record",{description:"Delete one record by id. Returns the deleted record. Record tools never delete collections or datastores.",inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection holding the record."),id:external_exports.string().describe("Record id (from a previous find or insert).")},annotations:{destructiveHint:!0,idempotentHint:!0}},(args,extra)=>recordResult(`record "${args.id}" in "${args.datastore}/${args.collection}"`,()=>deleteRecord(target.serverAddress,resolveToken(extra,target.apiKey),args))),["describe_datastore","find_records","insert_record","update_record","delete_record"]}var knownKinds={agent:ApiResourceKind.agent,datastore:ApiResourceKind.datastore,environment:ApiResourceKind.environment,skill:ApiResourceKind.skill,mcp_server:ApiResourceKind.mcp_server,workflow:ApiResourceKind.workflow};function registerSearchTools(server,target){return server.registerTool("search",{description:"Search and list Stigmer resources (agents, skills, MCP servers, workflows, environments, datastores). Set 'kinds' to filter by resource type. Set 'query' for full-text search. Set 'org' to scope to an organization. Omit 'query' to list all accessible resources.",inputSchema:{kinds:external_exports.array(external_exports.string()).optional().describe("Resource kinds to search. Valid: agent, skill, mcp_server, workflow, environment, datastore. Empty searches all."),query:external_exports.string().optional().describe("Full-text search query. Empty lists all accessible resources."),org:external_exports.string().optional().describe("Organization slug to scope the search. Empty searches all accessible orgs."),exclude_public:external_exports.boolean().optional().describe("Exclude public/platform resources from results."),page_size:external_exports.number().int().optional().describe("Results per page (default 20, max 100)."),page_num:external_exports.number().int().optional().describe("Page number (1-indexed, default 1).")}},(args,extra)=>textOrError(()=>search(target.serverAddress,resolveToken(extra,target.apiKey),{kinds:args.kinds,query:args.query,org:args.org,excludePublic:args.exclude_public,pageSize:args.page_size,pageNum:args.page_num}))),["search"]}async function search(serverAddress,token,args){let kinds=parseKinds(args.kinds);return withClient(SearchService,serverAddress,token,async(client,callOptions)=>{let req={kinds,query:args.query??"",org:args.org??"",excludePublic:args.excludePublic??!1};((args.pageSize??0)>0||(args.pageNum??0)>0)&&(req.page={size:args.pageSize??0,num:args.pageNum??0});let resp;try{resp=await client.search(req,callOptions)}catch(err){throw rpcError(err,args.org?`search results in org "${args.org}"`:"search results")}return enrichSearchResponse(resp)})}function parseKinds(raw){return!raw||raw.length===0?[]:raw.map(s=>{let kind=knownKinds[s];if(kind===void 0)throw new Error(`unknown resource kind "${s}"; valid kinds: agent, skill, mcp_server, workflow, environment, datastore`);return kind})}function enrichSearchResponse(resp){if(resp.entries.length===0)return toProtoJson(SearchResponseSchema,resp);let data=toJson(SearchResponseSchema,resp,{useProtoFieldName:!0}),entries=Array.isArray(data.entries)?data.entries:[];for(let i=0;i<entries.length&&i<resp.entries.length;i++){let r=resp.entries[i],uri=buildResourceURI(ApiResourceKind[r.kind]??"",r.org,r.slug);uri!==""&&(entries[i].resource_uri=uri)}return JSON.stringify(data,null,2)}async function fetchSkill(serverAddress,token,org,slug,version2){return withClient(SkillQueryController,serverAddress,token,async(client,callOptions)=>{try{let skill=await client.getByReference({org,kind:ApiResourceKind.skill,slug,version:version2},callOptions);return toProtoJson(SkillSchema,skill)}catch(err){throw rpcError(err,`skill "${slug}" in org "${org}"`)}})}function registerSkillResources(server,target){return registerResource(server,target,{name:"stigmer_skill",title:"Stigmer Skill",description:"Full definition of a Stigmer skill (latest version), identified by organization and slug.",template:"stigmer://skills/{org}/{slug}",fetch:(serverAddress,token,org,slug)=>fetchSkill(serverAddress,token,org,slug,"")}),registerVersionedResource(server,target,{name:"stigmer_skill_version",title:"Stigmer Skill (versioned)",description:"Full definition of a Stigmer skill at a specific version, identified by organization, slug, and version (tag name or SHA-256 hash).",template:"stigmer://skills/{org}/{slug}/{version}",fetch:fetchSkill}),["stigmer_skill","stigmer_skill_version"]}async function deleteSkill(serverAddress,token,org,slug){let desc=`skill "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(SkillQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.skill,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(SkillCommandController,transport);try{let deleted=await command.delete({value:id},callOptions);return toProtoJson(SkillSchema,deleted)}catch(err){throw rpcError(err,desc)}})}async function listSkillVersions(serverAddress,token,args){return withClient(SkillQueryController,serverAddress,token,async(client,callOptions)=>{let req={org:args.org,slug:args.slug,pageToken:args.pageToken??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.listVersions(req,callOptions);return toProtoJson(ListSkillVersionsResponseSchema,resp)}catch(err){throw rpcError(err,`versions of skill "${args.slug}" in org "${args.org}"`)}})}function registerSkillTools(server,target){return server.registerTool("get_skill",{description:"Get full details of a Stigmer skill by org and slug, optionally at a specific version. Omit 'version' for the latest.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the skill."),slug:external_exports.string().describe("Skill slug \u2014 unique identifier within the org."),version:external_exports.string().optional().describe("Version to retrieve: tag name (e.g. stable) or SHA-256 hash. Omit for latest.")}},(args,extra)=>textOrError(()=>fetchSkill(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug,args.version??""))),server.registerTool("delete_skill",{description:"Delete a Stigmer skill and all its versions by org and slug. To create or update skills, use the 'stigmer skill push' CLI command. Returns the deleted skill.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the skill (e.g. stigmer)."),slug:external_exports.string().describe("Skill slug \u2014 the unique identifier within the org (e.g. code-review-best-practices). Deletes the skill and all its versions.")}},(args,extra)=>textOrError(()=>deleteSkill(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("list_skill_versions",{description:"List a skill's version history (newest first): version hash, tag, who pushed it and when, and which version is current. Fetch one version's full content with get_skill and its hash or tag.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the skill."),slug:external_exports.string().describe("Skill slug \u2014 unique identifier within the org."),page_size:external_exports.number().int().optional().describe("Maximum versions per page (default 50)."),page_token:external_exports.string().optional().describe("Pagination token from a previous response's next_page_token.")}},(args,extra)=>textOrError(()=>listSkillVersions(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,slug:args.slug,pageSize:args.page_size,pageToken:args.page_token}))),["get_skill","delete_skill","list_skill_versions"]}async function listPendingApprovals(serverAddress,token,args){return withClient(WorkflowExecutionQueryController,serverAddress,token,async(client,callOptions)=>{let req={org:args.org,pageToken:args.pageToken??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.listPendingApprovals(req,callOptions);return toProtoJson(PendingApprovalsListSchema,resp)}catch(err){throw rpcError(err,`pending approvals in org "${args.org}"`)}})}async function submitWorkflowTaskApproval(serverAddress,token,args){return withClient(WorkflowExecutionCommandController,serverAddress,token,async(client,callOptions)=>{let req={executionId:args.executionId,taskName:args.taskName,outcome:args.outcome,comment:args.comment??""};args.formData!==void 0&&(req.formData=args.formData);try{let execution=await client.submitWorkflowTaskApproval(req,callOptions);return toProtoJson(WorkflowExecutionSchema,execution)}catch(err){throw rpcError(err,`approval for task "${args.taskName}" in workflow execution "${args.executionId}"`)}})}var API_VERSION2="agentic.stigmer.ai/v1";async function runWorkflow(serverAddress,token,args){let desc=`workflow "${args.workflow}" in org "${args.org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport),workflowId;try{workflowId=(await query.getByReference({org:args.org,kind:ApiResourceKind.workflow,slug:args.workflow},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let runtimeEnv=toExecutionValues(args.runtimeEnv);runtimeEnv.STIGMER_ORG_ID===void 0&&(runtimeEnv.STIGMER_ORG_ID=create(ExecutionValueSchema,{value:args.org,isSecret:!1}));let execution=create(WorkflowExecutionSchema,{apiVersion:API_VERSION2,kind:"WorkflowExecution",metadata:create(ApiResourceMetadataSchema,{name:executionName(),org:args.org}),spec:create(WorkflowExecutionSpecSchema,{workflowId,triggerMessage:(args.message??"")===""?"execute":args.message,runtimeEnv})}),command=createClient(WorkflowExecutionCommandController,transport);try{let created=await command.create(execution,callOptions);return toProtoJson(WorkflowExecutionSchema,created)}catch(err){throw rpcError(err,`execution of ${desc}`)}})}function registerWorkflowExecutionTools(server,target){return server.registerTool("run_workflow",{description:"Start a workflow execution (asynchronous). Returns immediately with the created execution (wex_* ID) while the run continues in the background \u2014 poll get_workflow_execution and get_workflow_execution_events to observe progress and diagnose failures.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow (e.g. stigmer)."),workflow:external_exports.string().describe("Workflow slug \u2014 the unique identifier within the org (e.g. release-notes)."),message:external_exports.string().optional().describe("Trigger message passed to the workflow. Omit to run with the default trigger."),runtime_env:external_exports.record(external_exports.string()).optional().describe("Non-secret runtime environment values (name \u2192 value) injected into the run. Secrets must come from Environments referenced by the workflow, never through this tool.")}},(args,extra)=>textOrError(()=>runWorkflow(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,workflow:args.workflow,message:args.message,runtimeEnv:args.runtime_env}))),server.registerTool("get_workflow_execution",{description:"Get a workflow execution's full status including phase, tasks, errors, cost, and timing. Use for diagnosing failed or running executions.",inputSchema:{execution_id:external_exports.string().describe("Workflow execution ID (wex_* format).")}},(args,extra)=>textOrError(()=>getWorkflowExecution(target.serverAddress,resolveToken(extra,target.apiKey),args.execution_id))),server.registerTool("get_workflow_execution_events",{description:"Get the event log for a workflow execution. Returns task transitions, errors, cost checkpoints, and approval events. Use for deep diagnosis of execution failures.",inputSchema:{execution_id:external_exports.string().describe("Workflow execution ID (wex_* format)."),task_name:external_exports.string().optional().describe("Filter events by task name."),page_size:external_exports.number().int().optional().describe("Number of events per page (default 100, max 500).")}},(args,extra)=>textOrError(()=>getWorkflowExecutionEvents(target.serverAddress,resolveToken(extra,target.apiKey),{executionId:args.execution_id,taskName:args.task_name,pageSize:args.page_size}))),server.registerTool("list_pending_approvals",{description:"List workflow tasks waiting for a human decision across an organization \u2014 an approvals inbox. Each entry carries the execution ID, task name, requester, timeout, and the form schema when the task defines one; respond with submit_workflow_task_approval. (Agent-execution approvals are not listed here \u2014 they surface in get_agent_execution's status.pending_approvals.)",inputSchema:{org:external_exports.string().describe("Organization slug to scope the query (e.g. stigmer)."),page_size:external_exports.number().int().optional().describe("Maximum entries per page (default 20, max 100)."),page_token:external_exports.string().optional().describe("Pagination token from a previous response's next_page_token.")}},(args,extra)=>textOrError(()=>listPendingApprovals(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,pageSize:args.page_size,pageToken:args.page_token}))),server.registerTool("submit_workflow_task_approval",{description:"Submit a reviewer decision for a workflow human_input task that is waiting for a signal. outcome must match one of the task's configured outcome names (default: approve or deny). When the task defines a form_schema (see list_pending_approvals), provide matching form_data. Returns the updated workflow execution.",inputSchema:{execution_id:external_exports.string().describe("Workflow execution ID (wex_* format)."),task_name:external_exports.string().describe("Name of the waiting human_input task."),outcome:external_exports.string().describe("Decision outcome. Must match a configured outcome name of the task (e.g. approve, deny, needs_revision); approve/deny when none are configured."),comment:external_exports.string().optional().describe("Reviewer comment, stored in the audit trail."),form_data:external_exports.record(external_exports.unknown()).optional().describe("Response form data conforming to the task's form_schema, when it defines one.")}},(args,extra)=>textOrError(()=>submitWorkflowTaskApproval(target.serverAddress,resolveToken(extra,target.apiKey),{executionId:args.execution_id,taskName:args.task_name,outcome:args.outcome,comment:args.comment,formData:args.form_data}))),["run_workflow","get_workflow_execution","get_workflow_execution_events","list_pending_approvals","submit_workflow_task_approval"]}async function getWorkflowExecution(serverAddress,token,executionId){if(executionId==="")throw new Error("execution_id is required");return withClient(WorkflowExecutionQueryController,serverAddress,token,async(client,callOptions)=>{try{let execution=await client.get({value:executionId},callOptions);return toProtoJson(WorkflowExecutionSchema,execution)}catch(err){throw rpcError(err,`workflow execution "${executionId}"`)}})}async function getWorkflowExecutionEvents(serverAddress,token,args){if(args.executionId==="")throw new Error("execution_id is required");return withClient(WorkflowExecutionQueryController,serverAddress,token,async(client,callOptions)=>{let req={executionId:args.executionId,taskName:args.taskName??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.getEventLog(req,callOptions);return toProtoJson(GetEventLogResponseSchema,resp)}catch(err){throw rpcError(err,`event log for execution "${args.executionId}"`)}})}function registerTaskKindTools(server,target){return server.registerTool("get_task_kind_registry",{description:"Get the complete workflow task kind registry with all 20 task kind descriptors, field schemas, JSON Schemas, categories, examples, and output shapes.",inputSchema:{}},(_args,extra)=>textOrError(()=>getTaskKindRegistry(target.serverAddress,resolveToken(extra,target.apiKey)))),server.registerTool("get_task_kind",{description:"Get a single workflow task kind descriptor by name with field schemas, JSON Schema, examples, and output shape.",inputSchema:{kind:external_exports.string().describe("Task kind name (one of: set_vars, http_call, grpc_call, activity_call, switch_case, for_each, fork, try_catch, listen, wait, raise_error, run_workflow, agent_call, llm_call, transform, human_input, validate, emit_event, notification, eval).")}},(args,extra)=>textOrError(()=>getTaskKind(target.serverAddress,resolveToken(extra,target.apiKey),args.kind))),["get_task_kind_registry","get_task_kind"]}async function getTaskKindRegistry(serverAddress,token){return withClient(TaskKindRegistryQueryController,serverAddress,token,async(client,callOptions)=>{try{let resp=await client.getTaskKindRegistry({},callOptions);return toProtoJson(GetTaskKindRegistryResponseSchema,resp)}catch(err){throw rpcError(err,"task kind registry")}})}async function getTaskKind(serverAddress,token,kind){if(kind==="")throw new Error("kind is required");return withClient(TaskKindRegistryQueryController,serverAddress,token,async(client,callOptions)=>{let resp;try{resp=await client.getTaskKindRegistry({},callOptions)}catch(err){throw rpcError(err,"task kind registry")}let normalized=kind.trim().toLowerCase();for(let desc of resp.descriptors)if((WorkflowTaskKind[desc.kind]??"").toLowerCase()===normalized)return toProtoJson(TaskKindDescriptorSchema,desc);throw new Error(`task kind "${kind}" not found in registry; use get_task_kind_registry to see all available kinds`)})}async function fetchWorkflow(serverAddress,token,org,slug){return withClient(WorkflowQueryController,serverAddress,token,async(client,callOptions)=>{try{let workflow=await client.getByReference({org,kind:ApiResourceKind.workflow,slug},callOptions);return toProtoJson(WorkflowSchema,workflow)}catch(err){throw rpcError(err,`workflow "${slug}" in org "${org}"`)}})}function registerWorkflowResources(server,target){return registerResource(server,target,{name:"stigmer_workflow",title:"Stigmer Workflow",description:"Full definition of a Stigmer workflow, identified by organization and slug.",template:"stigmer://workflows/{org}/{slug}",fetch:fetchWorkflow}),["stigmer_workflow"]}var file_ai_stigmer_agentic_workflow_v1_tasks_common=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvY29tbW9uLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MqfgoVT25JbnZhbGlkT3V0cHV0UG9saWN5EiEKHU9OX0lOVkFMSURfUE9MSUNZX1VOU1BFQ0lGSUVEEAASEwoPT05fSU5WQUxJRF9GQUlMEAESFAoQT05fSU5WQUxJRF9SRVRSWRACEhcKE09OX0lOVkFMSURfRkFMTEJBQ0sQA2IGcHJvdG8z"),OnInvalidOutputPolicy;(function(OnInvalidOutputPolicy2){OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_POLICY_UNSPECIFIED=0]="ON_INVALID_POLICY_UNSPECIFIED",OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_FAIL=1]="ON_INVALID_FAIL",OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_RETRY=2]="ON_INVALID_RETRY",OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_FALLBACK=3]="ON_INVALID_FALLBACK"})(OnInvalidOutputPolicy||(OnInvalidOutputPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_agent_call=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvYWdlbnRfY2FsbC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIsEDChNBZ2VudENhbGxUYXNrQ29uZmlnEhsKBWFnZW50GAEgASgJQgy6SAnIAQFyBBABGH8SCwoDb3JnGAIgASgJEh8KB21lc3NhZ2UYAyABKAlCDrpIB8gBAXICEAHYhSwBEk8KA2VudhgEIAMoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5BZ2VudENhbGxUYXNrQ29uZmlnLkVudkVudHJ5EkoKBmNvbmZpZxgFIAEoCzI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5BZ2VudEV4ZWN1dGlvbkNvbmZpZxJNCgZvdXRwdXQYBiABKAsyPS5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuQWdlbnRDYWxsT3V0cHV0Q29udHJhY3QSNwoHaGFybmVzcxgHIAEoDjImLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkhhcm5lc3MaKgoIRW52RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AToO6ossCmFnZW50X2NhbGwi0gEKF0FnZW50Q2FsbE91dHB1dENvbnRyYWN0Ei8KBnNjaGVtYRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCBrpIA8gBARJPCgpvbl9pbnZhbGlkGAIgASgOMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLk9uSW52YWxpZE91dHB1dFBvbGljeRIeCgttYXhfcmV0cmllcxgDIAEoBUIJukgGGgQYBSgBEhUKDWZhbGxiYWNrX3Rhc2sYBCABKAki3AEKFEFnZW50RXhlY3V0aW9uQ29uZmlnEg0KBW1vZGVsGAEgASgJEhsKB3RpbWVvdXQYAiABKAVCCrpIBxoFGJAcKAESJAoLdGVtcGVyYXR1cmUYAyABKAJCD7pIDAoKHQAAgD8tAAAAABJZChJjb250ZXh0X21hbmFnZW1lbnQYBCABKAsyPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ29udGV4dE1hbmFnZW1lbnRDb25maWcSFwoPbWF4X2Nvc3RfbWljcm9zGAUgASgDYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_spec,file_ai_stigmer_agentic_session_v1_enum,file_ai_stigmer_agentic_workflow_v1_tasks_common,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),AgentCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_agent_call,0),AgentCallOutputContractSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_agent_call,1),AgentExecutionConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_agent_call,2);var file_ai_stigmer_agentic_workflow_v1_tasks_call_activity=fileDesc("CjhhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvY2FsbF9hY3Rpdml0eS5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzInEKFkNhbGxBY3Rpdml0eVRhc2tDb25maWcSHAoIYWN0aXZpdHkYASABKAlCCrpIB8gBAXICEAESJgoFaW5wdXQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OhHqiywNYWN0aXZpdHlfY2FsbGIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),CallActivityTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_call_activity,0);var file_ai_stigmer_agentic_workflow_v1_tasks_emit_event=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZW1pdF9ldmVudC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIoABCg1FbWl0RXZlbnRTcGVjEhsKBHR5cGUYASABKAlCDbpICsgBAXIFEAEY/wESFAoGc291cmNlGAIgASgJQgTYhSwBEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhUKB3N1YmplY3QYBCABKAlCBNiFLAEicQoTRW1pdEV2ZW50VGFza0NvbmZpZxJKCgVldmVudBgBIAEoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5FbWl0RXZlbnRTcGVjQga6SAPIAQE6DuqLLAplbWl0X2V2ZW50YgZwcm90bzM",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),EmitEventSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_emit_event,0),EmitEventTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_emit_event,1);var file_ai_stigmer_agentic_workflow_v1_tasks_eval=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZXZhbC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIlwKDUV2YWxDcml0ZXJpb24SGgoEbmFtZRgBIAEoCUIMukgJyAEBcgQQARh/Eh8KC2Rlc2NyaXB0aW9uGAIgASgJQgq6SAfIAQFyAhABEg4KBndlaWdodBgDIAEoASLIAwoORXZhbFRhc2tDb25maWcSGwoFbW9kZWwYASABKAlCDLpICcgBAXIEEAEYfxIfCgdzdWJqZWN0GAIgASgJQg66SAfIAQFyAhAB2IUsARIaCgZydWJyaWMYAyABKAlCCrpIB8gBAXICEAESSwoMc2NvcmluZ19tb2RlGAQgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkV2YWxTY29yaW5nTW9kZRIqCgl0aHJlc2hvbGQYBSABKAFCF7pIFBISGQAAAAAAAPA/KQAAAAAAAAAAEkUKB29uX2ZhaWwYBiABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuRXZhbEZhaWxQb2xpY3kSFQoNZmFsbGJhY2tfdGFzaxgHIAEoCRIbCg1zeXN0ZW1fcHJvbXB0GAggASgJQgTYhSwBEkUKCGNyaXRlcmlhGAkgAygLMjMuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkV2YWxDcml0ZXJpb24SFwoPbWF4X2Nvc3RfbWljcm9zGAogASgDOgjqiywEZXZhbCpxCg5FdmFsRmFpbFBvbGljeRIgChxFVkFMX0ZBSUxfUE9MSUNZX1VOU1BFQ0lGSUVEEAASEwoPRVZBTF9GQUlMX1JBSVNFEAESFAoQRVZBTF9GQUlMX0JSQU5DSBACEhIKDkVWQUxfRkFJTF9XQVJOEAMqeQoPRXZhbFNjb3JpbmdNb2RlEiEKHUVWQUxfU0NPUklOR19NT0RFX1VOU1BFQ0lGSUVEEAASEgoORVZBTF9QQVNTX0ZBSUwQARIWChJFVkFMX05VTUVSSUNfU0NPUkUQAhIXChNFVkFMX01VTFRJX0NSSVRFUklBEANiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),EvalCriterionSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_eval,0),EvalTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_eval,1),EvalFailPolicy;(function(EvalFailPolicy2){EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_POLICY_UNSPECIFIED=0]="EVAL_FAIL_POLICY_UNSPECIFIED",EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_RAISE=1]="EVAL_FAIL_RAISE",EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_BRANCH=2]="EVAL_FAIL_BRANCH",EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_WARN=3]="EVAL_FAIL_WARN"})(EvalFailPolicy||(EvalFailPolicy={}));var EvalScoringMode;(function(EvalScoringMode2){EvalScoringMode2[EvalScoringMode2.EVAL_SCORING_MODE_UNSPECIFIED=0]="EVAL_SCORING_MODE_UNSPECIFIED",EvalScoringMode2[EvalScoringMode2.EVAL_PASS_FAIL=1]="EVAL_PASS_FAIL",EvalScoringMode2[EvalScoringMode2.EVAL_NUMERIC_SCORE=2]="EVAL_NUMERIC_SCORE",EvalScoringMode2[EvalScoringMode2.EVAL_MULTI_CRITERIA=3]="EVAL_MULTI_CRITERIA"})(EvalScoringMode||(EvalScoringMode={}));var file_ai_stigmer_agentic_workflow_v1_tasks_for=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZm9yLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MiogIKDUZvclRhc2tDb25maWcSGAoEZWFjaBgBIAEoCUIKukgHyAEBcgIQARIaCgJpbhgCIAEoCUIOukgHyAEBcgIQAdiFLAESQgoCZG8YAyADKAsyLC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dUYXNrQgi6SAWSAQIIARIgCg9tYXhfcGFyYWxsZWxpc20YBCABKAVCB7pIBBoCKAASGwoKYmF0Y2hfc2l6ZRgFIAEoBUIHukgEGgIoABJKCghvbl9lcnJvchgGIAEoDjI4LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5Gb3JFYWNoRXJyb3JQb2xpY3k6DOqLLAhmb3JfZWFjaCp9ChJGb3JFYWNoRXJyb3JQb2xpY3kSJQohRk9SX0VBQ0hfRVJST1JfUE9MSUNZX1VOU1BFQ0lGSUVEEAASFgoSRk9SX0VBQ0hfRkFJTF9GQVNUEAESFQoRRk9SX0VBQ0hfQ09OVElOVUUQAhIRCg1GT1JfRUFDSF9TS0lQEANiBnByb3RvMw",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),ForTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_for,0),ForEachErrorPolicy;(function(ForEachErrorPolicy2){ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_ERROR_POLICY_UNSPECIFIED=0]="FOR_EACH_ERROR_POLICY_UNSPECIFIED",ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_FAIL_FAST=1]="FOR_EACH_FAIL_FAST",ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_CONTINUE=2]="FOR_EACH_CONTINUE",ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_SKIP=3]="FOR_EACH_SKIP"})(ForEachErrorPolicy||(ForEachErrorPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_fork=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZm9yay5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzInkKDkZvcmtUYXNrQ29uZmlnEkwKCGJyYW5jaGVzGAEgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkZvcmtCcmFuY2hCCLpIBZIBAggCEg8KB2NvbXBldGUYAiABKAg6COqLLARmb3JrImoKCkZvcmtCcmFuY2gSGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQARJCCgJkbxgCIAMoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tCCLpIBZIBAggBYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),ForkTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_fork,0),ForkBranchSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_fork,1);var file_ai_stigmer_agentic_workflow_v1_tasks_grpc_call=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZ3JwY19jYWxsLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MihgEKEkdycGNDYWxsVGFza0NvbmZpZxIbCgdzZXJ2aWNlGAEgASgJQgq6SAfIAQFyAhABEhoKBm1ldGhvZBgCIAEoCUIKukgHyAEBcgIQARIoCgdyZXF1ZXN0GAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdDoN6ossCWdycGNfY2FsbGIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),GrpcCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_grpc_call,0);var file_ai_stigmer_agentic_workflow_v1_tasks_http_call=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvaHR0cF9jYWxsLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3Mi/gIKEkh0dHBDYWxsVGFza0NvbmZpZxI3CgZtZXRob2QYASABKAlCJ7pIJMgBAXIfUgNHRVRSBFBPU1RSA1BVVFIGREVMRVRFUgVQQVRDSBJMCghlbmRwb2ludBgCIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5IdHRwRW5kcG9pbnRCBrpIA8gBARJWCgdoZWFkZXJzGAMgAygLMkUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkh0dHBDYWxsVGFza0NvbmZpZy5IZWFkZXJzRW50cnkSJQoEYm9keRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSIwoPdGltZW91dF9zZWNvbmRzGAUgASgFQgq6SAcaBRisAigBGi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBOg3qiywJaHR0cF9jYWxsIisKDEh0dHBFbmRwb2ludBIbCgN1cmkYASABKAlCDrpIB8gBAXICEAHYhSwBYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),HttpCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_http_call,0),HttpEndpointSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_http_call,1);var file_ai_stigmer_agentic_workflow_v1_tasks_human_input=fileDesc("CjZhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvaHVtYW5faW5wdXQucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyJMChFIdW1hbklucHV0T3V0Y29tZRIaCgRuYW1lGAEgASgJQgy6SAnIAQFyBBABGD8SDQoFbGFiZWwYAiABKAkSDAoEdGhlbhgDIAEoCSKnAwoUSHVtYW5JbnB1dFRhc2tDb25maWcSHgoGcHJvbXB0GAEgASgJQg66SAfIAQFyAhAB2IUsARIsCgtmb3JtX3NjaGVtYRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSSQoIb3V0Y29tZXMYAyADKAsyNy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuSHVtYW5JbnB1dE91dGNvbWUSEQoJYXBwcm92ZXJzGAQgAygJEh0KB3RpbWVvdXQYBSABKAVCDLpICRoHGICangEoABJRCgpvbl90aW1lb3V0GAYgASgOMj0uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkh1bWFuSW5wdXRUaW1lb3V0UG9saWN5Eh0KFW5vdGlmaWNhdGlvbl9jaGFubmVscxgHIAMoCRInCgdwYXlsb2FkGAggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhgKB3VpX2hpbnQYCSABKAlCB7pIBHICGD86D+qLLAtodW1hbl9pbnB1dCrEAQoXSHVtYW5JbnB1dFRpbWVvdXRQb2xpY3kSKgomSFVNQU5fSU5QVVRfVElNRU9VVF9QT0xJQ1lfVU5TUEVDSUZJRUQQABIcChhIVU1BTl9JTlBVVF9USU1FT1VUX0ZBSUwQARIfChtIVU1BTl9JTlBVVF9USU1FT1VUX0FQUFJPVkUQAhIcChhIVU1BTl9JTlBVVF9USU1FT1VUX0RFTlkQAxIgChxIVU1BTl9JTlBVVF9USU1FT1VUX0VTQ0FMQVRFEARiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),HumanInputOutcomeSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_human_input,0),HumanInputTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_human_input,1),HumanInputTimeoutPolicy;(function(HumanInputTimeoutPolicy2){HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_POLICY_UNSPECIFIED=0]="HUMAN_INPUT_TIMEOUT_POLICY_UNSPECIFIED",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_FAIL=1]="HUMAN_INPUT_TIMEOUT_FAIL",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_APPROVE=2]="HUMAN_INPUT_TIMEOUT_APPROVE",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_DENY=3]="HUMAN_INPUT_TIMEOUT_DENY",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_ESCALATE=4]="HUMAN_INPUT_TIMEOUT_ESCALATE"})(HumanInputTimeoutPolicy||(HumanInputTimeoutPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_listen=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvbGlzdGVuLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MiYgoQTGlzdGVuVGFza0NvbmZpZxJCCgJ0bxgBIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5MaXN0ZW5Ub0IGukgDyAEBOgrqiywGbGlzdGVuInkKCExpc3RlblRvEiAKBG1vZGUYASABKAlCErpID8gBAXIKUgNvbmVSA2FsbBJLCgdzaWduYWxzGAIgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlNpZ25hbFNwZWNCCLpIBZIBAggBIlMKClNpZ25hbFNwZWMSFgoCaWQYASABKAlCCrpIB8gBAXICEAESLQoEdHlwZRgCIAEoCUIfukgcyAEBchdSBnNpZ25hbFIFcXVlcnlSBnVwZGF0ZWIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),ListenTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_listen,0),ListenToSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_listen,1),SignalSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_listen,2);var file_ai_stigmer_agentic_workflow_v1_tasks_llm_call=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvbGxtX2NhbGwucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyLIAwoRTGxtQ2FsbFRhc2tDb25maWcSGwoFbW9kZWwYASABKAlCDLpICcgBAXIEEAEYfxIbCg1zeXN0ZW1fcHJvbXB0GAIgASgJQgTYhSwBEh4KBnByb21wdBgDIAEoCUIOukgHyAEBcgIQAdiFLAESMAoPcmVzcG9uc2Vfc2NoZW1hGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIkCgt0ZW1wZXJhdHVyZRgFIAEoAkIPukgMCgodAAAAQC0AAAAAEhsKCm1heF90b2tlbnMYBiABKAVCB7pIBBoCKAESGwoHdGltZW91dBgHIAEoBUIKukgHGgUY2AQoARJPCgpvbl9pbnZhbGlkGAggASgOMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLk9uSW52YWxpZE91dHB1dFBvbGljeRIeCgttYXhfcmV0cmllcxgJIAEoBUIJukgGGgQYBSgBEhUKDWZhbGxiYWNrX3Rhc2sYCiABKAkSFwoPbWF4X2Nvc3RfbWljcm9zGAsgASgDEhgKEG1heF90b3RhbF90b2tlbnMYDCABKAM6DOqLLAhsbG1fY2FsbGIGcHJvdG8z",[file_ai_stigmer_agentic_workflow_v1_tasks_common,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),LlmCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_llm_call,0);var file_ai_stigmer_agentic_workflow_v1_tasks_notification=fileDesc("CjdhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvbm90aWZpY2F0aW9uLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MivQIKFk5vdGlmaWNhdGlvblRhc2tDb25maWcSHQoHY2hhbm5lbBgBIAEoCUIMukgJyAEBcgQQARg/EhwKCnJlY2lwaWVudHMYAiADKAlCCLpIBZIBAggBEhUKB3N1YmplY3QYAyABKAlCBNiFLAESHAoEYm9keRgEIAEoCUIOukgHyAEBcgIQAdiFLAESEAoIdGVtcGxhdGUYBSABKAkSXAoIbWV0YWRhdGEYBiADKAsySi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuTm90aWZpY2F0aW9uVGFza0NvbmZpZy5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AToQ6ossDG5vdGlmaWNhdGlvbmIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),NotificationTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_notification,0);var file_ai_stigmer_agentic_workflow_v1_tasks_raise=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvcmFpc2UucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyJiCg9SYWlzZVRhc2tDb25maWcSHQoFZXJyb3IYASABKAlCDrpIB8gBAXICEAHYhSwBEh8KB21lc3NhZ2UYAiABKAlCDrpIB8gBAXICEAHYhSwBOg/qiywLcmFpc2VfZXJyb3JiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),RaiseTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_raise,0);var file_ai_stigmer_agentic_workflow_v1_tasks_run=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvcnVuLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MiZwoNUnVuVGFza0NvbmZpZxIcCgh3b3JrZmxvdxgBIAEoCUIKukgHyAEBcgIQARImCgVpbnB1dBgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Q6EOqLLAxydW5fd29ya2Zsb3diBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),RunTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_run,0);var file_ai_stigmer_agentic_workflow_v1_tasks_set=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvc2V0LnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MirgEKDVNldFRhc2tDb25maWcSXQoJdmFyaWFibGVzGAEgAygLMkIuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlNldFRhc2tDb25maWcuVmFyaWFibGVzRW50cnlCBrpIA8gBARowCg5WYXJpYWJsZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBOgzqiywIc2V0X3ZhcnNiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),SetTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_set,0);var file_ai_stigmer_agentic_workflow_v1_tasks_switch=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvc3dpdGNoLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MibgoQU3dpdGNoVGFza0NvbmZpZxJJCgVjYXNlcxgBIAMoCzIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5Td2l0Y2hDYXNlQgi6SAWSAQIIAToP6ossC3N3aXRjaF9jYXNlIk4KClN3aXRjaENhc2USGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQARIMCgR3aGVuGAIgASgJEhgKBHRoZW4YAyABKAlCCrpIB8gBAXICEAFiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),SwitchTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_switch,0),SwitchCaseSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_switch,1);var file_ai_stigmer_agentic_workflow_v1_tasks_transform=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvdHJhbnNmb3JtLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MirwEKE1RyYW5zZm9ybVRhc2tDb25maWcSVAoGZW5naW5lGAEgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlRyYW5zZm9ybUVuZ2luZUINukgKyAEBggEEEAEgABIeCgpleHByZXNzaW9uGAIgASgJQgq6SAfIAQFyAhABEhMKBWlucHV0GAMgASgJQgTYhSwBOg3qiywJdHJhbnNmb3JtKokBCg9UcmFuc2Zvcm1FbmdpbmUSIAocVFJBTlNGT1JNX0VOR0lORV9VTlNQRUNJRklFRBAAEhcKE1RSQU5TRk9STV9FTkdJTkVfSlEQARIcChhUUkFOU0ZPUk1fRU5HSU5FX0pTT05BVEEQAhIdChlUUkFOU0ZPUk1fRU5HSU5FX1RFTVBMQVRFEANiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),TransformTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_transform,0),TransformEngine;(function(TransformEngine2){TransformEngine2[TransformEngine2.UNSPECIFIED=0]="UNSPECIFIED",TransformEngine2[TransformEngine2.JQ=1]="JQ",TransformEngine2[TransformEngine2.JSONATA=2]="JSONATA",TransformEngine2[TransformEngine2.TEMPLATE=3]="TEMPLATE"})(TransformEngine||(TransformEngine={}));var file_ai_stigmer_agentic_workflow_v1_tasks_try=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvdHJ5LnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MipAEKDVRyeVRhc2tDb25maWcSQwoDdHJ5GAEgAygLMiwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0IIukgFkgECCAESPwoFY2F0Y2gYAiABKAsyMC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuQ2F0Y2hCbG9jazoN6ossCXRyeV9jYXRjaCJwCgpDYXRjaEJsb2NrEgoKAmFzGAEgASgJEkIKAmRvGAIgAygLMiwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0IIukgFkgECCAESEgoKY29tcGVuc2F0ZRgDIAEoCGIGcHJvdG8z",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),TryTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_try,0),CatchBlockSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_try,1);var file_ai_stigmer_agentic_workflow_v1_tasks_validate=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvdmFsaWRhdGUucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyJnCg5WYWxpZGF0aW9uUnVsZRIaCgRuYW1lGAEgASgJQgy6SAnIAQFyBBABGH8SIgoKZXhwcmVzc2lvbhgCIAEoCUIOukgHyAEBcgIQAdiFLAESFQoHbWVzc2FnZRgDIAEoCUIE2IUsASKTAgoSVmFsaWRhdGVUYXNrQ29uZmlnEh0KBWlucHV0GAEgASgJQg66SAfIAQFyAhAB2IUsARInCgZzY2hlbWEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EkMKBXJ1bGVzGAMgAygLMjQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlZhbGlkYXRpb25SdWxlEksKB29uX2ZhaWwYBCABKA4yOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuVmFsaWRhdGlvbkZhaWxQb2xpY3kSFQoNZmFsbGJhY2tfdGFzaxgFIAEoCToM6ossCHZhbGlkYXRlKo8BChRWYWxpZGF0aW9uRmFpbFBvbGljeRImCiJWQUxJREFUSU9OX0ZBSUxfUE9MSUNZX1VOU1BFQ0lGSUVEEAASGQoVVkFMSURBVElPTl9GQUlMX1JBSVNFEAESGgoWVkFMSURBVElPTl9GQUlMX0JSQU5DSBACEhgKFFZBTElEQVRJT05fRkFJTF9XQVJOEANiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),ValidationRuleSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_validate,0),ValidateTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_validate,1),ValidationFailPolicy;(function(ValidationFailPolicy2){ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_POLICY_UNSPECIFIED=0]="VALIDATION_FAIL_POLICY_UNSPECIFIED",ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_RAISE=1]="VALIDATION_FAIL_RAISE",ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_BRANCH=2]="VALIDATION_FAIL_BRANCH",ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_WARN=3]="VALIDATION_FAIL_WARN"})(ValidationFailPolicy||(ValidationFailPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_wait=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvd2FpdC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIowCCghEdXJhdGlvbhIMCgRkYXlzGAEgASgNEg0KBWhvdXJzGAIgASgNEg8KB21pbnV0ZXMYAyABKA0SDwoHc2Vjb25kcxgEIAEoDRIUCgxtaWxsaXNlY29uZHMYBSABKA06qgG6SKYBGqMBChFkdXJhdGlvbi5ub25femVybxIsYXQgbGVhc3Qgb25lIGR1cmF0aW9uIGZpZWxkIG11c3QgYmUgbm9uLXplcm8aYHRoaXMuZGF5cyA+IDAgfHwgdGhpcy5ob3VycyA+IDAgfHwgdGhpcy5taW51dGVzID4gMCB8fCB0aGlzLnNlY29uZHMgPiAwIHx8IHRoaXMubWlsbGlzZWNvbmRzID4gMCKYAQoOV2FpdFRhc2tDb25maWcSQgoIZHVyYXRpb24YASABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuRHVyYXRpb25IABIrCgV1bnRpbBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIADoI6ossBHdhaXRCCwoJd2FpdF90eXBlYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_timestamp]),DurationSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_wait,0),WaitTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_wait,1);var WorkflowInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for UI and marketplace display."),document:external_exports.lazy(()=>WorkflowDocumentInputSchema).describe("Workflow document metadata including DSL version, namespace, name, and version."),tasks:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Ordered list of tasks that make up this workflow. Tasks execute sequentially unless fork/parallel is used."),env:external_exports.record(external_exports.lazy(()=>EnvVarDeclarationInputSchema3)).optional().describe("Environment variable declarations for this workflow. Keys are variable names; values describe their metadata and optionality."),budget:external_exports.lazy(()=>WorkflowBudgetInputSchema).optional().describe("Budget limits for this workflow execution. When set, the runtime (T13) enforces cost, token, and duration limits across all tasks. The existing org-level billing reservation system (AuthorizeExecution / ExecutionBillingSignal) remains the safety net for overall credit exhaustion; workflow budgets prevent individual workflows from consuming more than intended. Optional \u2014 when not set, no workflow-level budget is enforced.")},WorkflowInputSchema=external_exports.object(WorkflowInputShape),WorkflowDocumentInputSchema=external_exports.object({dsl:external_exports.string().optional().describe("Workflow DSL version (semver). Must be '1.0.0' for the current specification."),namespace:external_exports.string().describe("Workflow namespace (organization/categorization)."),name:external_exports.string().describe("Workflow name (unique identifier within namespace)."),version:external_exports.string().describe("Workflow version (semver)."),description:external_exports.string().optional().describe("Human-readable description.")}),ContextManagementConfigInputSchema=external_exports.object({disable_summarization:external_exports.boolean().optional().describe("Disable automatic context summarization for this execution. When true, the agent will never trigger automatic summarization, even if the context window approaches the model's limit. Use cases: - Short-lived executions that won't approach context limits - Debugging context-related issues - Workflows that manage their own context externally Warning: Disabling summarization may cause execution failure if context exceeds model limits. Default: false (summarization enabled based on model defaults)"),custom_trigger_threshold:external_exports.number().optional().describe("Custom token threshold to trigger summarization. When the context token count exceeds this threshold, summarization is triggered to reduce context size. Set to 0 to use model default. The default trigger threshold from Model Registry is typically 90% of the model's context window (e.g., 180K for 200K context models). Must be greater than custom_target_tokens if both are specified. Default: 0 (use model default from Model Registry)"),custom_target_tokens:external_exports.number().optional().describe("Custom target token count after summarization. Summarization aims to reduce context to approximately this size. Set to 0 to use model default. The default target from Model Registry is typically 80% of the model's context window (e.g., 160K for 200K context models). Must be less than custom_trigger_threshold if both are specified. Default: 0 (use model default from Model Registry)")}),AgentExecutionConfigInputSchema=external_exports.object({model:external_exports.string().optional().describe("LLM model to use for this invocation. Example: 'claude-3-5-sonnet', 'gpt-4', 'claude-3-opus' Optional - uses agent's default model if not specified."),timeout:external_exports.number().optional().describe("Timeout for agent execution in seconds. Default: 300 (5 minutes) Optional."),temperature:external_exports.number().optional().describe("Temperature for LLM sampling (0.0 to 1.0). Lower = more deterministic, Higher = more creative Default: 0.7 Optional."),context_management:external_exports.lazy(()=>ContextManagementConfigInputSchema).optional().describe("Context management configuration for this agent invocation. Controls automatic summarization behavior for long-running conversations. When specified, overrides model defaults from the Model Registry. @internal @since Phase 3 (Context Summarization Architecture) Use cases: - Disable summarization for short-lived agents - Custom thresholds for agents with specific context requirements - Fine-tune summarization behavior per workflow task Example YAML: config: model: 'claude-sonnet-4.5' context_management: custom_trigger_threshold: 150000 custom_target_tokens: 120000"),max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-agent-call cost cap in micro-USD (1 USD = 1,000,000 micros). When set, the runtime terminates this agent call if its accumulated cost exceeds this limit. This uses the workflow domain's micro-USD convention and provides per-task cost control at the workflow level. The runtime checks both: per-task limit first, then workflow remaining budget. Optional \u2014 when 0, no per-task cost limit is enforced. @since T05 (Workflow-Level Budget Primitives)")}),AgentCallOutputContractInputSchema=external_exports.object({schema:external_exports.record(external_exports.unknown()).describe("JSON Schema that the agent's structured output must conform to. Standard JSON Schema (draft 2020-12 or compatible). The workflow runner extracts JSON from the agent's final response and validates it against this schema. If validation fails, the on_invalid policy determines what happens next. The schema is carried as a google.protobuf.Struct to preserve the existing kind+Struct envelope pattern and allow YAML authors to write standard JSON Schema inline without a Stigmer-specific schema language."),on_invalid:external_exports.string().optional().describe("Policy when agent output fails schema validation. Default: ON_INVALID_FAIL (task fails immediately). Allowed values: ON_INVALID_FAIL, ON_INVALID_RETRY, ON_INVALID_FALLBACK."),max_retries:external_exports.number().optional().describe("Maximum retry attempts when on_invalid is ON_INVALID_RETRY. Each retry re-prompts the agent with the specific validation errors and the expected schema, giving the agent an opportunity to self-correct. Only meaningful when on_invalid is ON_INVALID_RETRY; ignored otherwise. Default: 1. Valid range: 1-5."),fallback_task:external_exports.string().optional().describe("Target task to branch to when schema validation cannot be resolved. Used in two scenarios: 1. on_invalid is ON_INVALID_RETRY and all retries are exhausted 2. on_invalid is ON_INVALID_FALLBACK (immediate branch, no retry) Must reference a valid task name in the same workflow. When empty and retries are exhausted, the task fails.")}),AgentCallTaskConfigInputSchema=external_exports.object({agent:external_exports.string().describe("Agent reference in 'org/slug' or 'slug' format. - 'slug' only: uses the workflow's organization - 'org/slug': explicit organization reference Examples: 'code-reviewer', 'stigmer/code-reviewer', 'acme/data-analyst' Required field."),org:external_exports.string().optional().describe("Explicit organization for agent resolution. Optional. If empty, the org is parsed from the agent field or defaults to workflow's org. Use this when you need to override the parsed org."),message:external_exports.string().describe("Instructions/prompt to send to the agent. Supports interpolation of workflow variables using JQ expressions. Example: 'Analyze this code: ${ $context.fetchCode.body }' Required field."),env:external_exports.record(external_exports.string()).optional().describe("Runtime environment variables to pass to the agent. Values can be literal strings or JQ expressions that reference workflow context or secrets. Example: {'GITHUB_TOKEN': '${ .secrets.GH_TOKEN }'} Optional."),config:external_exports.lazy(()=>AgentExecutionConfigInputSchema).optional().describe("Execution configuration for the agent invocation. Optional - defaults are applied if not specified."),output:external_exports.lazy(()=>AgentCallOutputContractInputSchema).optional().describe("Structured output contract for this agent call. When set, the workflow runner extracts structured JSON from the agent's final response and validates it against the declared schema. The validated JSON is placed in the task output under the 'structured' key, enabling reliable downstream routing via switch_case expressions. When not set, the task output contains the agent's raw text response (backward compatible with existing workflows). @since T02 (Structured Agent Output Model)"),harness:external_exports.string().optional().describe("Execution harness for the agent invocation. Determines which execution engine processes the agent call: - HARNESS_UNSPECIFIED / HARNESS_NATIVE: Stigmer native engine (Python/LangGraph) - HARNESS_CURSOR: Cursor SDK engine (TypeScript/Cursor) The workflow-runner creates a Session with this harness before creating the AgentExecution. The harness is a session-level concern \u2014 it determines tool availability, state management, model access, and billing tier. When unspecified, defaults to HARNESS_NATIVE for backward compatibility. YAML Example: - code_review: call: agent with: agent: 'code-reviewer' harness: cursor message: 'Review this PR' Allowed values: HARNESS_NATIVE, HARNESS_CURSOR.")}),CallActivityTaskConfigInputSchema=external_exports.object({activity:external_exports.string().describe("Activity name to execute. @internal Must match a registered Temporal activity."),input:external_exports.record(external_exports.unknown()).optional().describe("Activity input (optional). Can be any JSON structure. Supports expressions in string values.")}),EmitEventInputSchema=external_exports.object({type:external_exports.string().describe("CloudEvents type identifier. A reverse-DNS string that categorizes the event for routing and filtering. Examples: 'stigmer.workflow.ticket.classified', 'acme.order.completed'"),source:external_exports.string().optional().describe("CloudEvents source identifier. URI or URI-reference that identifies the context in which the event happened. Supports ${ } expression interpolation. When empty, the runtime defaults to the workflow execution URI (e.g., '/workflows/{workflow_id}/executions/{execution_id}')."),data:external_exports.record(external_exports.unknown()).optional().describe("Event payload data. Arbitrary JSON object carried as the CloudEvents data attribute. Values within the Struct can contain ${ } expressions that the runtime evaluates before emission. Unlike other Struct fields in the workflow domain (response_schema, form_schema, schema) which carry JSON Schema definitions, this field carries the actual event payload \u2014 not a schema."),subject:external_exports.string().optional().describe("CloudEvents subject identifier. Describes the subject of the event in the context of the event producer. Supports ${ } expression interpolation. Examples: '${ $context.ticket.id }', '${ $context.order.number }'")}),EmitEventTaskConfigInputSchema=external_exports.object({event:external_exports.lazy(()=>EmitEventInputSchema).describe("The event specification to emit. Contains the CloudEvents envelope fields (type, source, data, subject). Required field.")}),EvalCriterionInputSchema=external_exports.object({name:external_exports.string().describe("Name of this evaluation dimension. Used in the judge prompt and appears in the output. Examples: 'accuracy', 'completeness', 'safety', 'relevance'"),description:external_exports.string().describe("Description of what this criterion measures. Included in the judge prompt to guide the LLM's assessment. Example: 'Does the response accurately reflect the source data without hallucinations?'"),weight:external_exports.number().optional().describe("Relative weight for computing the weighted average overall score. When all weights are equal (or all zero), criteria are averaged uniformly. Example: accuracy=3.0, formatting=1.0 means accuracy counts 3x more.")}),EvalTaskConfigInputSchema=external_exports.object({model:external_exports.string().describe("LLM model used as the judge. Resolved via the Stigmer model registry. Examples: 'gpt-4o', 'claude-sonnet-4-5'"),subject:external_exports.string().describe("Expression selecting the data to evaluate. Supports ${ } expression interpolation. Example: '${ $context.summarize.text }' to evaluate a summary task's output."),rubric:external_exports.string().describe("Evaluation criteria in natural language. Tells the judge LLM what to assess and what 'good' looks like. For pass_fail: describe what constitutes a pass. For numeric_score: describe the scoring scale. For multi_criteria: provide overall context (per-criterion detail goes in criteria field)."),scoring_mode:external_exports.string().optional().describe("How the judge scores the subject. Default: EVAL_PASS_FAIL. Allowed values: EVAL_PASS_FAIL, EVAL_NUMERIC_SCORE, EVAL_MULTI_CRITERIA."),threshold:external_exports.number().optional().describe("Pass threshold for numeric_score and multi_criteria modes. The subject passes if score >= threshold. Ignored for pass_fail mode (the judge's binary decision is used directly). Valid range: 0.0 to 1.0. Default: 0.5."),on_fail:external_exports.string().optional().describe("Policy applied when the subject fails evaluation. Default: EVAL_FAIL_RAISE (task fails with evaluation error). Allowed values: EVAL_FAIL_RAISE, EVAL_FAIL_BRANCH, EVAL_FAIL_WARN."),fallback_task:external_exports.string().optional().describe("Target task to branch to when on_fail is EVAL_FAIL_BRANCH. Must reference a valid task name in the same workflow. Only meaningful when on_fail is EVAL_FAIL_BRANCH; ignored otherwise."),system_prompt:external_exports.string().optional().describe("Optional custom system prompt override for the judge LLM. When set, replaces the auto-generated judge system prompt entirely. Use only when the default judge prompt template does not fit your needs. When empty, the runtime constructs a judge-appropriate system prompt from the rubric, scoring_mode, and criteria."),criteria:external_exports.array(external_exports.lazy(()=>EvalCriterionInputSchema)).optional().describe("Evaluation criteria for multi_criteria mode. Required when scoring_mode is EVAL_MULTI_CRITERIA; ignored otherwise. Each criterion is scored independently, and the overall score is the weighted average (uniform if all weights are equal or zero)."),max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-task cost cap in micro-USD (1 USD = 1,000,000 micros). When set, the runtime terminates this eval call if its cost exceeds this limit, independent of the workflow-level budget. Optional \u2014 when 0, no per-task cost limit is enforced. @since T05 (Workflow-Level Budget Primitives)")}),ForTaskConfigInputSchema=external_exports.lazy(()=>external_exports.object({each:external_exports.string().describe("Variable name for each item in the iteration. Accessible via ${ $data.item } in expressions."),in:external_exports.string().describe("Expression evaluating to the collection to iterate over. Example: '${ $data.items }' or '${ [1, 2, 3] }'"),do:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to execute for each iteration. Loop variables available: ${ $data.item }, ${ $data.index }"),max_parallelism:external_exports.number().optional().describe("Maximum number of iterations to execute concurrently. 0 (default): sequential execution \u2014 iterations run one at a time in input order. This preserves pre-T17 behavior. 1: effectively sequential (one at a time, but uses the parallel execution path \u2014 useful for testing). N > 1: up to N iterations run concurrently using Temporal workflow goroutines with a semaphore-based concurrency limiter. Results are always reassembled in original input order regardless of completion order. @since T17 (Advanced Agentic Orchestration)"),batch_size:external_exports.number().optional().describe("Number of items to process in each batch before moving to the next. 0 (default): no batching \u2014 all items are available for parallel execution (up to max_parallelism concurrent). N > 0: items are chunked into groups of N. Each chunk is fully processed before the next chunk begins. Within each chunk, up to max_parallelism iterations run concurrently. Only meaningful when max_parallelism > 0; ignored in sequential mode. @since T17 (Advanced Agentic Orchestration)"),on_error:external_exports.string().optional().describe("Policy for handling individual iteration failures. Default: FOR_EACH_FAIL_FAST (stop on first error). Only meaningful when max_parallelism > 0; in sequential mode, any failure stops the loop regardless of this setting (pre-T17 behavior). @since T17 (Advanced Agentic Orchestration) Allowed values: FOR_EACH_FAIL_FAST, FOR_EACH_CONTINUE, FOR_EACH_SKIP.")})),ForkBranchInputSchema=external_exports.lazy(()=>external_exports.object({name:external_exports.string().describe("Branch name/identifier."),do:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to execute in this branch.")})),ForkTaskConfigInputSchema=external_exports.lazy(()=>external_exports.object({branches:external_exports.array(external_exports.lazy(()=>ForkBranchInputSchema)).optional().describe("Branches to execute in parallel (at least 2 required)."),compete:external_exports.boolean().optional().describe("If true, first branch to complete wins (race mode). If false, all branches must complete (default).")})),GrpcCallTaskConfigInputSchema=external_exports.object({service:external_exports.string().describe("Fully qualified service name. Example: 'com.example.UserService'"),method:external_exports.string().describe("Method name to call. Example: 'GetUser'"),request:external_exports.record(external_exports.unknown()).optional().describe("Request message (optional). Can be any JSON structure matching the proto schema. Supports expressions in string values.")}),HttpEndpointInputSchema=external_exports.object({uri:external_exports.string().describe("URI of the endpoint. Can contain expressions: 'https://api.example.com/${.resource}'")}),HttpCallTaskConfigInputSchema=external_exports.object({method:external_exports.string().describe("HTTP method (GET, POST, PUT, DELETE, PATCH). Allowed values: GET, POST, PUT, DELETE, PATCH."),endpoint:external_exports.lazy(()=>HttpEndpointInputSchema).describe("HTTP endpoint configuration."),headers:external_exports.record(external_exports.string()).optional().describe("HTTP headers (optional). Values can contain expressions: 'Bearer ${TOKEN}'"),body:external_exports.record(external_exports.unknown()).optional().describe("Request body (optional). Can be any JSON structure. Supports expressions in string values."),timeout_seconds:external_exports.number().optional().describe("Request timeout in seconds (optional, default: 30).")}),HumanInputOutcomeInputSchema=external_exports.object({name:external_exports.string().describe("Outcome identifier used in task output and routing. Examples: 'approve', 'deny', 'needs_revision', 'escalate', 'defer' Must be unique within the outcomes list."),label:external_exports.string().optional().describe("Human-readable label for the button/action in the approval UI. When empty, the UI displays the capitalized name. Examples: 'Approve Escalation', 'Reject \u2014 Not Customer-Impacting'"),then:external_exports.string().optional().describe("Task to branch to when this outcome is selected. Must reference a valid task name in the same workflow. When empty, the workflow continues to the next task in sequence.")}),HumanInputTaskConfigInputSchema=external_exports.object({prompt:external_exports.string().describe("Message shown to the reviewer explaining what needs approval or input. Supports ${ } expression interpolation for injecting workflow context. Example: 'Approve escalation for ticket ${ $context.ticket.id }?'"),form_schema:external_exports.record(external_exports.unknown()).optional().describe("JSON Schema defining the input form rendered to the reviewer. When set, the approval UI renders a typed form based on this schema. The reviewer's form response is validated against the schema before the task completes, and the validated data appears in the task output under the 'form_data' key. When not set, the reviewer sees only the outcome buttons (approve/deny or custom outcomes) without a data entry form. Uses the same google.protobuf.Struct + JSON Schema pattern as AgentCallOutputContract.schema and LlmCallTaskConfig.response_schema."),outcomes:external_exports.array(external_exports.lazy(()=>HumanInputOutcomeInputSchema)).optional().describe("Named outcomes that the reviewer can select. Each outcome represents a decision the reviewer can make, with optional routing to a different downstream task. This enables rich branching beyond binary approve/deny. When empty, the task defaults to binary behavior: - 'approve': task completes, workflow continues to next task - 'deny': task fails (enters try_catch or EXECUTION_FAILED) When custom outcomes are defined, the first outcome is used as the default for HUMAN_INPUT_TIMEOUT_APPROVE, and the last outcome is used as the default for HUMAN_INPUT_TIMEOUT_DENY."),approvers:external_exports.array(external_exports.string()).optional().describe("Approver identifiers \u2014 who is allowed to respond to this task. Supports user IDs, team slugs, and role names. Format examples: - 'user:jane@acme.com' \u2014 specific user - 'team:engineering-leads' \u2014 any member of the team - 'role:content-admin' \u2014 any user with the role When empty, any authenticated user can respond. Resolution of these identifiers is a runtime concern (T13)."),timeout:external_exports.number().optional().describe("Timeout in seconds before the on_timeout policy applies. Default: 0 (no timeout \u2014 the task waits indefinitely). Max: 2592000 (30 days). A timeout of 0 means the workflow will wait until a human responds. For production workflows, setting a timeout with an appropriate on_timeout policy is strongly recommended."),on_timeout:external_exports.string().optional().describe("Policy applied when the timeout expires without a response. Only meaningful when timeout > 0; ignored when timeout is 0. Default: HUMAN_INPUT_TIMEOUT_FAIL (task fails with timeout error). Allowed values: HUMAN_INPUT_TIMEOUT_FAIL, HUMAN_INPUT_TIMEOUT_APPROVE, HUMAN_INPUT_TIMEOUT_DENY, HUMAN_INPUT_TIMEOUT_ESCALATE."),notification_channels:external_exports.array(external_exports.string()).optional().describe("Channel identifiers for sending approval request notifications. When the task starts, the runtime sends notifications through these channels to alert potential approvers. Format examples: - 'slack:#approvals' \u2014 Slack channel - 'email:ops@acme.com' \u2014 email address - 'teams:#incident-response' \u2014 Microsoft Teams channel The format and routing of notifications is a runtime concern (T13). The proto carries the identifiers; the runtime resolves them to actual notification providers configured in the workflow instance's environment."),payload:external_exports.unknown().optional().describe("Structured material for the reviewer to examine before deciding. Supports ${ } expression interpolation: the whole value can be a single expression string ('${ $context.draft_revision }') or an inline object/array whose nested strings carry embedded expressions. The runtime resolves expressions when the gate activates and attaches the resolved payload to the approval_requested event, so the approval record is permanently bound to exactly what the reviewer saw. Distinct from prompt (the instruction to the reviewer) and form_schema (the shape of the reviewer's response): payload is the thing under review \u2014 an article diff, a proposed record set, a generated plan. @internal Resolved payloads at or above the artifact promotion threshold (256KB) are stored in the artifact store; the approval_requested event then carries payload_artifact_id instead of the inline value. See ApprovalRequestedPayload in workflowexecution/v1/event.proto. Expression support is documented here rather than via the is_expression option, which annotates string fields only \u2014 matching how other Struct/Value-typed expression-bearing configs are handled. @since Review Payloads (stigmer/stigmer#234)"),ui_hint:external_exports.string().optional().describe("Hint identifying which UI should present the payload. A plain discriminator string (e.g. 'article-diff', 'infra-proposal') that embedding applications match against their registered review renderers. When no renderer is registered for the hint \u2014 or the gate is viewed from a surface without custom renderers (CLI, plain console) \u2014 the payload is shown as structured data by the built-in approval card, so workflows stay portable across surfaces. @internal Deliberately a hint, not a contract: an unrecognized value must never block the gate. Not expression-valued \u2014 the hint is workflow design, not runtime data. @since Review Payloads (stigmer/stigmer#234)")}),SignalInputSchema=external_exports.object({id:external_exports.string().describe("Signal identifier."),type:external_exports.string().describe("Signal type: 'signal', 'query', or 'update'. Allowed values: signal, query, update.")}),ListenToInputSchema=external_exports.object({mode:external_exports.string().describe("Listening mode: - 'one': Wait for any one signal - 'all': Wait for all signals Allowed values: one, all."),signals:external_exports.array(external_exports.lazy(()=>SignalInputSchema)).optional().describe("Signals to listen for.")}),ListenTaskConfigInputSchema=external_exports.object({to:external_exports.lazy(()=>ListenToInputSchema).describe("Signal listening configuration.")}),LlmCallTaskConfigInputSchema=external_exports.object({model:external_exports.string().describe("Model reference resolved via the Stigmer model registry. Examples: 'gpt-4o', 'gpt-4o-mini', 'claude-sonnet-4-5', 'claude-haiku-3-5' Required field."),system_prompt:external_exports.string().optional().describe("System prompt that sets the LLM's role and constraints. Supports ${ } expression interpolation for dynamic system prompts. Optional \u2014 omit for tasks where the user prompt is self-contained."),prompt:external_exports.string().describe("User prompt / instruction sent to the LLM. Supports ${ } expression interpolation for injecting workflow context. Example: 'Classify this ticket: ${ $context.ticket.description }' Required field."),response_schema:external_exports.record(external_exports.unknown()).optional().describe("JSON Schema for structured output. When set, the runner requests structured output from the provider (e.g., OpenAI's response_format, Anthropic's tool_use extraction) and validates the response against this schema. Uses the same google.protobuf.Struct + JSON Schema pattern as AgentCallOutputContract.schema for consistency across the workflow domain. When not set, the task output is the LLM's raw text response."),temperature:external_exports.number().optional().describe("Sampling temperature (0.0 to 2.0). Lower = more deterministic, higher = more creative. Range is 0.0-2.0 to accommodate all major providers (OpenAI supports up to 2.0; others clamp to their supported range at runtime). Optional \u2014 uses the provider's default when not set."),max_tokens:external_exports.number().optional().describe("Maximum tokens in the LLM response. Optional \u2014 uses the provider's default when not set."),timeout:external_exports.number().optional().describe("Timeout for the LLM call in seconds. Default: 60. Max: 600 (10 minutes). Optional."),on_invalid:external_exports.string().optional().describe("Policy when the LLM response fails schema validation. Only meaningful when response_schema is set; ignored otherwise. Default: ON_INVALID_FAIL (task fails immediately). Allowed values: ON_INVALID_FAIL, ON_INVALID_RETRY, ON_INVALID_FALLBACK."),max_retries:external_exports.number().optional().describe("Maximum schema-validation retry attempts when on_invalid is ON_INVALID_RETRY. Each retry re-prompts the LLM with the validation errors and expected schema, giving it an opportunity to self-correct. Only meaningful when on_invalid is ON_INVALID_RETRY; ignored otherwise. Default: 1. Valid range: 1-5."),fallback_task:external_exports.string().optional().describe("Target task to branch to when schema validation cannot be resolved. Used in two scenarios: 1. on_invalid is ON_INVALID_RETRY and all retries are exhausted 2. on_invalid is ON_INVALID_FALLBACK (immediate branch, no retry) Must reference a valid task name in the same workflow. When empty and retries are exhausted, the task fails."),max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-task cost cap in micro-USD (1 USD = 1,000,000 micros). When set, the runtime terminates this specific LLM call if its cost exceeds this limit, independent of the workflow-level budget. The runtime checks both: per-task limit first, then workflow remaining budget. Optional \u2014 when 0, no per-task cost limit is enforced. @since T05 (Workflow-Level Budget Primitives)"),max_total_tokens:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-task token cap (input + output tokens combined). When set, the runtime terminates this specific LLM call if total tokens exceed this limit. Complements max_tokens (field 6), which limits only the output token count as a generation parameter. Optional \u2014 when 0, no per-task total token limit is enforced. @since T05 (Workflow-Level Budget Primitives)")}),NotificationTaskConfigInputSchema=external_exports.object({channel:external_exports.string().describe("Notification channel identifier. Determines which notification provider processes this message. Common values: 'slack', 'email', 'discord', 'teams', 'webhook' This is a string (not an enum) for extensibility \u2014 new channels can be added without proto changes. The runtime resolves the channel to its configured provider in the workflow instance's environment."),recipients:external_exports.array(external_exports.string()).optional().describe("Recipient identifiers for the notification. Format depends on the channel: - slack: '#channel-name', '@username', or Slack user IDs - email: 'user@example.com' - discord: '#channel-name', '@role' - teams: '#channel-name' - webhook: URL or webhook identifier At least one recipient is required. Individual values may contain ${ } expressions that the runtime evaluates before delivery (e.g., '${ $context.customer.email }')."),subject:external_exports.string().optional().describe("Notification subject or title. Supports ${ } expression interpolation. Used as: email subject line, Slack message title, webhook payload title. Optional \u2014 some channels (e.g., simple Slack messages) may not use it."),body:external_exports.string().describe("Notification body / message content. Supports ${ } expression interpolation. The primary content of the notification. Formatting depends on channel (e.g., Slack Markdown, HTML for email, plain text for SMS). When template is also set, body serves as the fallback content if the template cannot be resolved."),template:external_exports.string().optional().describe("Named template reference for rendering the notification. When set, the runtime looks up this template in the workflow instance's environment and uses it for rendering, with the workflow context as template data. The body field is used as fallback if the template cannot be resolved. Examples: 'incident-alert', 'order-confirmation', 'approval-request' Template resolution and rendering is a runtime concern (T13)."),metadata:external_exports.record(external_exports.string()).optional().describe("Channel-specific metadata as key-value pairs. Provides additional configuration that varies by notification channel: - slack: {'thread_ts': '...', 'unfurl_links': 'false'} - email: {'priority': 'high', 'reply_to': '...', 'cc': '...'} - webhook: {'method': 'POST', 'content_type': 'application/json'} Values may contain ${ } expressions that the runtime evaluates before delivery.")}),RaiseTaskConfigInputSchema=external_exports.object({error:external_exports.string().describe("Error type/name."),message:external_exports.string().describe("Error message. Can contain expressions: '${ .errorMessage }'")}),RunTaskConfigInputSchema=external_exports.object({workflow:external_exports.string().describe("Sub-workflow name/identifier to execute."),input:external_exports.record(external_exports.unknown()).optional().describe("Sub-workflow input (optional). Can be any JSON structure. Supports expressions in string values.")}),SetTaskConfigInputSchema=external_exports.object({variables:external_exports.record(external_exports.string()).describe("Variables to set in workflow state. Keys are variable names, values can be literals or expressions. Expressions use ${...} syntax, e.g., '${.a + .b}' or '${now}'")}),SwitchCaseInputSchema=external_exports.object({name:external_exports.string().describe("Case name/identifier."),when:external_exports.string().optional().describe("Condition expression (optional). If empty, this is the default case. Example: '${ $context.value > 5 }'"),then:external_exports.string().describe("Target task name to execute if condition matches.")}),SwitchTaskConfigInputSchema=external_exports.object({cases:external_exports.array(external_exports.lazy(()=>SwitchCaseInputSchema)).optional().describe("List of switch cases (at least one required). Cases are evaluated in order. First matching case executes. If no 'when' is specified, the case acts as default.")}),TransformTaskConfigInputSchema=external_exports.object({engine:external_exports.string().describe("Transformation engine to use. Required \u2014 must be explicitly set (not UNSPECIFIED). Allowed values: TRANSFORM_ENGINE_JQ, TRANSFORM_ENGINE_JSONATA, TRANSFORM_ENGINE_TEMPLATE."),expression:external_exports.string().describe("Transformation expression in the chosen engine's syntax. For JQ: a JQ filter expression (e.g., '{name: .full_name}') For JSONata: a JSONata expression (e.g., '{'name': full_name}') For TEMPLATE: a Go text/template string with {{ }} placeholders Required field."),input:external_exports.string().optional().describe("Expression selecting the input data for the transformation. Supports ${ } expression interpolation. When omitted, the entire workflow context is used as input. Example: '${ $context.triage }' to transform just the triage output.")}),CatchBlockInputSchema=external_exports.lazy(()=>external_exports.object({as:external_exports.string().optional().describe("Variable name to store the error (optional). Accessible via ${ .error } in catch tasks."),do:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to execute when error is caught."),compensate:external_exports.boolean().optional().describe("Whether to run compensation tasks for already-completed try tasks before executing the catch do block. When true, the runtime walks the compensation stack (completed tasks that declared a 'compensate' block) in reverse order and executes each task's compensation actions. After all compensations complete (or fail), the catch 'do' block runs as normal. Compensation failures do not prevent the catch block from running. They are logged and included in the task output for diagnostics. Default: false (no compensation \u2014 preserves pre-T17 behavior). @since T17 (Advanced Agentic Orchestration)")})),TryTaskConfigInputSchema=external_exports.lazy(()=>external_exports.object({try:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to attempt (at least one required). If any task fails, execution jumps to catch block."),catch:external_exports.lazy(()=>CatchBlockInputSchema).optional().describe("Catch block for error handling (optional). If not provided, errors propagate to parent.")})),ValidationRuleInputSchema=external_exports.object({name:external_exports.string().describe("Rule identifier for error reporting and debugging. Appears in validation error output so operators can identify which specific rule failed. Examples: 'critical_needs_rationale', 'customer_impact_requires_high_severity'"),expression:external_exports.string().describe("Boolean expression that must evaluate to true for the rule to pass. Supports ${ } expression interpolation. The expression receives the validate task's input data as its context. Example: '${ .severity != 'critical' || (.rationale != null && .rationale != '') }'"),message:external_exports.string().optional().describe("Error message included in validation output when the rule fails. Supports ${ } expression interpolation for dynamic error messages. When empty, a generic message is generated from the rule name. Example: 'Critical severity requires a rationale'")}),ValidateTaskConfigInputSchema=external_exports.object({input:external_exports.string().describe("Expression selecting the data to validate. Supports ${ } expression interpolation. Example: '${ $context.triage }' to validate the triage task's output."),schema:external_exports.record(external_exports.unknown()).optional().describe("JSON Schema to validate the input data against. Standard JSON Schema (draft 2020-12 or compatible). The runtime validates the input data against this schema and reports detailed errors for any constraint violations. Uses the same google.protobuf.Struct + JSON Schema pattern as AgentCallOutputContract.schema, LlmCallTaskConfig.response_schema, and HumanInputTaskConfig.form_schema. At least one of schema or rules must be set."),rules:external_exports.array(external_exports.lazy(()=>ValidationRuleInputSchema)).optional().describe("Business rules to evaluate against the input data. Each rule is a boolean expression that must evaluate to true. Rules complement schema validation by expressing constraints that JSON Schema cannot: cross-field dependencies, conditional requirements, and domain-specific invariants. At least one of schema or rules must be set."),on_fail:external_exports.string().optional().describe("Policy applied when validation fails. Default: VALIDATION_FAIL_RAISE (task fails with validation error). Allowed values: VALIDATION_FAIL_RAISE, VALIDATION_FAIL_BRANCH, VALIDATION_FAIL_WARN."),fallback_task:external_exports.string().optional().describe("Target task to branch to when on_fail is VALIDATION_FAIL_BRANCH. Must reference a valid task name in the same workflow. Only meaningful when on_fail is VALIDATION_FAIL_BRANCH; ignored otherwise. When on_fail is BRANCH and fallback_task is empty, the task fails.")}),DurationInputSchema=external_exports.object({days:external_exports.number().optional().describe("Number of days to wait (24 hours each)."),hours:external_exports.number().optional().describe("Number of hours to wait."),minutes:external_exports.number().optional().describe("Number of minutes to wait."),seconds:external_exports.number().optional().describe("Number of seconds to wait."),milliseconds:external_exports.number().optional().describe("Number of milliseconds to wait.")}),WaitTaskConfigInputSchema=external_exports.object({duration:external_exports.lazy(()=>DurationInputSchema).optional().describe("Relative duration to wait from now. Use this when you want to wait for a specific amount of time regardless of when the workflow reaches this task. Example: { days: 7 } = wait 1 week from now"),until:external_exports.string().optional().describe("Absolute timestamp to wait until. Use this when you want to wait until a specific point in time. If the timestamp is in the past, the task completes immediately. Example: '2026-03-01T09:00:00Z' = wait until March 1st, 2026 at 9am UTC")}),ExportInputSchema=external_exports.object({as:external_exports.string().optional().describe("Expression defining how to export output using ${...} syntax.")}),FlowControlInputSchema=external_exports.object({then:external_exports.string().optional().describe("Target task name or 'end' to terminate workflow.")}),WorkflowTaskInputSchema=external_exports.lazy(()=>external_exports.object({name:external_exports.string().optional().describe("Task name/identifier (must be unique within workflow). Must be a valid C-style identifier: starts with a letter or underscore, followed by letters, digits, or underscores."),kind:external_exports.string().describe("Task type. Set the matching config field (e.g. kind='http_call' -> populate http_call). Allowed values: set_vars, http_call, grpc_call, activity_call, switch_case, for_each, fork, try_catch, listen, wait, raise_error, run_workflow, agent_call, llm_call, transform, human_input, validate, emit_event, notification, eval."),agent_call:external_exports.lazy(()=>AgentCallTaskConfigInputSchema).optional().describe("Required when kind='agent_call'. AgentCallTaskConfig defines the configuration for agent_call tasks that invoke AI agents. @internal The agent is referenced by org/slug format (e.g., 'stigmer/code-reviewer'). Resolution order: 1. If org is specified: look in that org's agents 2. If org is empty: use the workflow's org 3. Before external lookup, check manifest (current deployment) The workflow's execution context (environment variables, secrets) is passed to the agent invocation, allowing agents to access workflow state. YAML Example (without structured output): - analyze: call: agent with: agent: 'code-reviewer' message: 'Review this code: ${ $context.fetchCode.body }' env: GITHUB_TOKEN: '${ .secrets.GH_TOKEN }' config: model: 'claude-3-5-sonnet' timeout: 300 YAML Example (with structured output): - triage_ticket: call: agent with: agent: 'support-triage' message: '${ .ticket.description }' output: schema: type: object required: [severity, category, customer_impact] properties: severity: type: string enum: [low, medium, high, critical] category: type: string customer_impact: type: boolean rationale: type: string on_invalid: ON_INVALID_RETRY max_retries: 2 fallback_task: human_review export: as: '${ .structured }' Reference: design doc at stigmer/_cursor/add-agent-config-to-workflow.md"),activity_call:external_exports.lazy(()=>CallActivityTaskConfigInputSchema).optional().describe("Required when kind='activity_call'. CallActivityTaskConfig defines the configuration for activity_call tasks that execute activities. @internal Executes Temporal activities. YAML Example: - taskName: call: activity with: activity: 'ProcessDataActivity' input: data: ${ .data } Reference: zigflow-dsl-pattern-catalog.md - Task Type 10"),emit_event:external_exports.lazy(()=>EmitEventTaskConfigInputSchema).optional().describe("Required when kind='emit_event'. EmitEventTaskConfig defines the configuration for emit_event tasks that publish CloudEvents to external consumers, other workflows, audit trails, and metrics systems. @internal emit_event is the complement to listen. While listen waits for Temporal signals (internal workflow primitives), emit_event publishes business events using the CloudEvents envelope (a standard external contract). The runtime (T13) bridges the two: an emitted CloudEvent can be delivered as a Temporal signal to another workflow's listen task, or routed to external consumers via message queues, webhooks, or event buses. The task output is the fully-resolved CloudEvents envelope with runtime-generated fields populated: { 'id': '<generated UUID>', 'specversion': '1.0', 'type': 'stigmer.workflow.ticket.classified', 'source': '/workflows/triage/executions/abc-123', 'time': '2026-05-12T14:30:00Z', 'subject': 'TICKET-456', 'datacontenttype': 'application/json', 'data': { <resolved payload> } } YAML Example (emit a classification event): - notify_classified: emit_event: event: type: 'stigmer.workflow.ticket.classified' subject: '${ $context.ticket.id }' data: ticket_id: '${ $context.ticket.id }' severity: '${ $context.triage.severity }' category: '${ $context.triage.category }' classified_by: '${ $context.workflow_instance_id }' export: as: '${ . }' YAML Example (emit with explicit source): - publish_completion: emit_event: event: type: 'acme.order.fulfilled' source: 'urn:acme:fulfillment-service' subject: '${ $context.order.number }' data: order_id: '${ $context.order.id }' status: 'fulfilled' fulfilled_at: '${ $context.timestamp }' export: as: '${ . }'"),eval:external_exports.lazy(()=>EvalTaskConfigInputSchema).optional().describe("Required when kind='eval'. EvalTaskConfig defines the configuration for eval tasks that use an LLM judge to assess the semantic quality of workflow data. @internal Use eval when you need to assess quality, correctness, safety, or completeness of LLM-generated or agent-produced content. This fills the gap between structural validation (validate task \u2014 JSON Schema, business rules) and human review (human_input task \u2014 manual inspection). The eval task constructs a judge prompt from the rubric and subject, calls the specified LLM with structured output enforcement, parses the judge's response, and applies the threshold to determine pass/fail. Key differences from validate: - validate checks deterministic structural properties (schema, rules) - eval checks semantic quality via an LLM judge (hallucination, relevance, safety) Key differences from llm_call: - llm_call is a general-purpose LLM invocation - eval has built-in judge prompt construction, scoring semantics, threshold application, and on_fail branching Task output structure: { 'pass': true/false, 'score': 0.85, // present for numeric_score and multi_criteria 'reasoning': 'The response...', 'criteria': [ // present only for multi_criteria {'name': 'accuracy', 'score': 0.9, 'reasoning': '...'}, {'name': 'safety', 'score': 0.8, 'reasoning': '...'} ], 'model_used': 'gpt-4o', 'subject': <original subject data> } YAML Example (binary pass/fail evaluation): - check_summary_quality: call: eval with: model: 'gpt-4o' subject: '${ $context.summarize.text }' rubric: | Evaluate whether this summary accurately captures the key points of the source document without hallucinations or omissions. The summary should be concise (under 3 sentences) and factually correct. scoring_mode: EVAL_PASS_FAIL on_fail: EVAL_FAIL_BRANCH fallback_task: regenerate_summary export: as: '${ . }' YAML Example (numeric score with threshold): - score_translation: call: eval with: model: 'gpt-4o' subject: '${ $context.translate.text }' rubric: | Rate the quality of this translation on accuracy, fluency, and preservation of meaning. Score 0.0 (unusable) to 1.0 (perfect). scoring_mode: EVAL_NUMERIC_SCORE threshold: 0.7 on_fail: EVAL_FAIL_WARN export: as: '${ . }' YAML Example (multi-criteria evaluation): - evaluate_response: call: eval with: model: 'gpt-4o' subject: '${ $context.agent_response }' rubric: 'Evaluate this customer support response.' scoring_mode: EVAL_MULTI_CRITERIA threshold: 0.75 criteria: - name: accuracy description: 'Is the information factually correct?' weight: 3.0 - name: helpfulness description: 'Does it address the customer's actual question?' weight: 2.0 - name: tone description: 'Is the tone professional and empathetic?' weight: 1.0 on_fail: EVAL_FAIL_RAISE export: as: '${ . }'"),for_each:external_exports.lazy(()=>ForTaskConfigInputSchema).optional().describe("Required when kind='for_each'. ForTaskConfig defines the configuration for for_each tasks that iterate over collections. @internal Supports both sequential (default) and parallel execution modes. When max_parallelism is set, iterations run concurrently using Temporal workflow goroutines with bounded concurrency. Backward compatibility: all new fields default to values that preserve the pre-T17 sequential behavior. Existing workflows require no changes. YAML Example (sequential, unchanged from pre-T17): - taskName: for: each: item in: ${ $data.items } do: - processItem: call: http with: method: POST body: item: ${ $data.item } index: ${ $data.index } YAML Example (parallel with bounded concurrency): - batchProcess: for: each: item in: ${ $data.items } max_parallelism: 5 on_error: FOR_EACH_CONTINUE do: - callApi: call: http with: method: POST endpoint: uri: 'https://api.example.com/process' body: item: ${ $data.item } Reference: zigflow-dsl-pattern-catalog.md - Task Type 4 @since max_parallelism, batch_size, on_error: T17 (Advanced Agentic Orchestration)"),fork:external_exports.lazy(()=>ForkTaskConfigInputSchema).optional().describe("Required when kind='fork'. ForkTaskConfig defines the configuration for fork tasks that execute branches in parallel. @internal YAML Example: - taskName: fork: branches: - branch1: do: - task1: call: http with: method: POST endpoint: uri: https://api.example.com/branch1 - branch2: do: - task2: call: http Reference: zigflow-dsl-pattern-catalog.md - Task Type 5"),grpc_call:external_exports.lazy(()=>GrpcCallTaskConfigInputSchema).optional().describe("Required when kind='grpc_call'. GrpcCallTaskConfig defines the configuration for grpc_call tasks that make gRPC requests. @internal YAML Example: - taskName: call: grpc with: service: 'com.example.UserService' method: 'GetUser' request: userId: ${ .userId } Reference: zigflow-dsl-pattern-catalog.md - Task Type 9"),http_call:external_exports.lazy(()=>HttpCallTaskConfigInputSchema).optional().describe("Required when kind='http_call'. HttpCallTaskConfig defines the configuration for http_call tasks that make HTTP requests. @internal YAML Example: - taskName: call: http with: method: POST endpoint: uri: https://api.example.com/data headers: Authorization: 'Bearer ${TOKEN}' body: field1: value Reference: zigflow-dsl-pattern-catalog.md - Task Type 2"),human_input:external_exports.lazy(()=>HumanInputTaskConfigInputSchema).optional().describe("Required when kind='human_input'. HumanInputTaskConfig defines the configuration for human_input tasks that pause workflow execution to collect typed input or approval from a human reviewer, then resume based on the reviewer's response. @internal Use human_input when a workflow needs human judgment before proceeding: approvals before API calls, sign-off before publishing, confirmation before customer-impacting actions, or structured data collection from a human operator. This is a workflow-level approval gate \u2014 distinct from agent-level HITL (tool approval inside an agent session). Workflow-level gates are visible in the execution viewer as explicit tasks with input/output/timing, and they can route to different branches based on the reviewer's decision. Runtime implementation (T13) will use Temporal signals for workflow resumption. The proto definition is intentionally runtime-agnostic. The reviewer's response (selected outcome + form data) becomes the task output, accessible via export: { 'outcome': 'approve', 'form_data': { <validated form response if form_schema is set> }, 'reviewer': '<canonical identity of the user who responded>', 'reviewer_actor': { 'id': '<canonical identity>', 'display_name': '<human-readable name, empty when unknown>', 'email': '<email address, empty when unknown>', 'avatar': '<avatar URL, empty when unknown>' }, 'responded_at': '<ISO 8601 timestamp>' } 'reviewer' is the stable audit key (use it in switch conditions and audit joins); 'reviewer_actor' is a display snapshot stamped server-side at decision time (use it in notifications and UIs). Both are absent when the gate resolves without attribution (timeout policies, OSS single-user edition). YAML Example (approval gate with custom outcomes): - manager_approval: human_input: prompt: 'Customer-impacting incident classified as ${ $context.triage.severity }. Approve escalation?' form_schema: type: object properties: notes: type: string description: 'Optional notes for the engineering team' priority_override: type: string enum: [P1, P2, P3] outcomes: - name: approve label: 'Approve Escalation' - name: deny label: 'Reject \u2014 Not Customer-Impacting' then: re_classify - name: needs_revision label: 'Needs More Info' then: gather_more_context approvers: - 'team:engineering-leads' timeout: 86400 on_timeout: HUMAN_INPUT_TIMEOUT_ESCALATE notification_channels: - 'slack:#incident-approvals' export: as: '${ . }' YAML Example (simple binary approval, no form): - confirm_publish: human_input: prompt: 'Ready to publish ${ $context.document.title } to production?' approvers: - 'role:content-admin' timeout: 3600 on_timeout: HUMAN_INPUT_TIMEOUT_FAIL export: as: '${ . }'"),listen:external_exports.lazy(()=>ListenTaskConfigInputSchema).optional().describe("Required when kind='listen'. ListenTaskConfig defines the configuration for listen tasks that wait for external signals. @internal Implemented via Temporal signals. YAML Example: - taskName: listen: to: one: with: id: approval_signal type: signal Reference: zigflow-dsl-pattern-catalog.md - Task Type 7"),llm_call:external_exports.lazy(()=>LlmCallTaskConfigInputSchema).optional().describe("Required when kind='llm_call'. LlmCallTaskConfig defines the configuration for llm_call tasks that make direct LLM API calls without the overhead of a full agent invocation. @internal Use llm_call when the task is focused and deterministic: classification, extraction, scoring, summarization, moderation, or routing. An agent_call carries setup overhead (system prompt, tool resolution, MCP server setup, session management) that is unnecessary when all you need is a single prompt-response cycle with optional structured output. When response_schema is set, the runner requests structured output from the provider and validates the response against the schema. The on_invalid / max_retries / fallback_task fields control what happens when validation fails, using the same OnInvalidOutputPolicy enum as agent_call's output contract. YAML Example (classification with structured output): - classify_severity: call: llm with: model: 'gpt-4o-mini' system_prompt: 'You are a support ticket classifier.' prompt: 'Classify this ticket: ${ $context.ticket.description }' response_schema: type: object required: [severity, category] properties: severity: type: string enum: [low, medium, high, critical] category: type: string on_invalid: ON_INVALID_RETRY max_retries: 2 export: as: '${ . }' YAML Example (simple summarization, no schema): - summarize: call: llm with: model: 'claude-sonnet-4-5' prompt: 'Summarize in 2 sentences: ${ $context.document.text }' temperature: 0.3 max_tokens: 200 export: as: '${ . }'"),notification:external_exports.lazy(()=>NotificationTaskConfigInputSchema).optional().describe("Required when kind='notification'. NotificationTaskConfig defines the configuration for notification tasks that send messages to humans through channels like Slack, email, Discord, Microsoft Teams, or webhooks. @internal notification is a convenience abstraction for 'send a message to humans' \u2014 simpler and more intuitive than emit_event for common operational notification patterns. While emit_event publishes system-level CloudEvents for machine consumption, notification is purpose-built for human-readable messages with channel routing and recipient targeting. Key distinction from related task types: emit_event = system-to-system (CloudEvents, consumed by workflows/services) notification = system-to-human (Slack, email, Discord \u2014 read by people) human_input = system-to-human-to-system (waits for a response; notification is fire-and-forget) Notifications are fire-and-forget by default. The task output confirms delivery was attempted but does not wait for acknowledgment: { 'channel': 'slack', 'recipients': ['#incident-response'], 'delivered': true, 'delivered_at': '<ISO 8601 timestamp>' } For notifications that require acknowledgment or a response, use human_input instead \u2014 it pauses the workflow until a human responds. The channel field is a string (not an enum) to allow extensibility: new notification channels can be added without proto changes. The runtime (T13) resolves channel identifiers to actual notification providers configured in the workflow instance's environment. YAML Example (Slack notification): - alert_slack: notification: channel: 'slack' recipients: - '#incident-response' - '@oncall-lead' subject: 'P${ $context.triage.severity } Incident: ${ $context.ticket.title }' body: | *Severity*: ${ $context.triage.severity } *Category*: ${ $context.triage.category } *Customer Impact*: ${ $context.triage.customer_impact } *Summary*: ${ $context.agent_analysis.structured.summary } metadata: thread_ts: '${ $context.slack_thread_id }' export: as: '${ . }' YAML Example (email with template): - send_confirmation: notification: channel: 'email' recipients: - '${ $context.customer.email }' subject: 'Order ${ $context.order.number } Confirmed' body: 'Your order has been confirmed. You will receive tracking information shortly.' template: 'order-confirmation' metadata: priority: 'high' reply_to: 'support@acme.com' export: as: '${ . }'"),raise_error:external_exports.lazy(()=>RaiseTaskConfigInputSchema).optional().describe("Required when kind='raise_error'. RaiseTaskConfig defines the configuration for raise_error tasks that raise errors. @internal YAML Example: - taskName: raise: error: ValidationError message: ${ .errorMessage } Reference: zigflow-dsl-pattern-catalog.md - Task Type 11"),run_workflow:external_exports.lazy(()=>RunTaskConfigInputSchema).optional().describe("Required when kind='run_workflow'. RunTaskConfig defines the configuration for run_workflow tasks that execute sub-workflows. @internal Implemented via Temporal child workflows. YAML Example: - taskName: run: workflow: 'sub-workflow-name' input: data: ${ .data } Reference: zigflow-dsl-pattern-catalog.md - Task Type 12"),set_vars:external_exports.lazy(()=>SetTaskConfigInputSchema).optional().describe("Required when kind='set_vars'. SetTaskConfig defines the configuration for set_vars tasks that assign variables in workflow state. @internal YAML Example: - taskName: set: variable1: value variable2: ${ expression } computed: ${ .a + .b } Reference: zigflow-dsl-pattern-catalog.md - Task Type 1"),switch_case:external_exports.lazy(()=>SwitchTaskConfigInputSchema).optional().describe("Required when kind='switch_case'. SwitchTaskConfig defines the configuration for switch_case tasks that branch conditionally. @internal YAML Example: - taskName: switch: - case1: when: ${ $context.value > 5 } then: highValueTask - defaultCase: then: unknownTask Reference: zigflow-dsl-pattern-catalog.md - Task Type 3"),transform:external_exports.lazy(()=>TransformTaskConfigInputSchema).optional().describe("Required when kind='transform'. TransformTaskConfig defines the configuration for transform tasks that perform deterministic data transformation without LLM calls. @internal Use transform when you need to reshape data between tasks: projecting fields, joining objects, converting formats, or building API payloads. Unlike set_vars (which mutates workflow state variables as a side effect), transform produces an explicit output that flows through export like any other task \u2014 visible and inspectable in the execution viewer. The distinction from set_vars: set_vars = imperative assignment ('set X to Y'), mutates workflow context transform = functional transformation ('reshape this data'), produces output YAML Example (JQ \u2014 reshape data for an API call): - build_api_payload: transform: engine: jq expression: '{name: .customer.full_name, severity: .triage.severity, summary: .agent_analysis.structured.summary}' input: '${ $context }' export: as: '${ . }' YAML Example (template \u2014 render a notification message): - render_notification: transform: engine: template expression: 'Ticket {{ .ticket_id }} classified as {{ .severity }} \u2014 {{ .summary }}' input: '${ $context.build_api_payload }' export: as: '${ . }'"),try_catch:external_exports.lazy(()=>TryTaskConfigInputSchema).optional().describe("Required when kind='try_catch'. TryTaskConfig defines the configuration for try_catch tasks that handle errors. @internal YAML Example: - taskName: try: - attemptTask: call: http with: method: POST endpoint: uri: https://api.example.com/flaky catch: as: error do: - errorHandler: call: http with: body: error: ${ .error } Reference: zigflow-dsl-pattern-catalog.md - Task Type 6"),validate:external_exports.lazy(()=>ValidateTaskConfigInputSchema).optional().describe("Required when kind='validate'. ValidateTaskConfig defines the configuration for validate tasks that perform explicit schema and business-rule validation on workflow data. @internal Use validate when you need an explicit validation checkpoint before downstream actions. This is how you distinguish 'the API call succeeded' from 'the data is safe and complete enough to continue.' While switch_case + raise_error can approximate validation, a dedicated validate task makes the intent explicit, the error messages richer, and the execution trace clearer. In the execution viewer (T09), a validate task shows exactly what was checked, what passed, and what failed \u2014 visible as a distinct verification step. The task supports two complementary validation modes: - schema: JSON Schema validation for structural correctness - rules: business-rule expressions for domain-specific constraints At least one of schema or rules must be set. Both can be used together for comprehensive validation (schema checks structure, rules check business logic). This cross-field constraint is enforced at runtime validation since buf.validate cannot express it on individual fields. Task output includes the full validation result: { 'valid': true/false, 'errors': [ {'rule': 'critical_needs_rationale', 'message': 'Critical severity requires a rationale'}, {'path': '$.category', 'message': 'must have at least 1 character'} ], 'data': <original input data> } YAML Example (schema + business rules): - check_triage_quality: validate: input: '${ $context.triage }' schema: type: object required: [severity, category, customer_impact] properties: severity: type: string enum: [low, medium, high, critical] category: type: string minLength: 1 customer_impact: type: boolean rules: - name: critical_needs_rationale expression: '${ .severity != 'critical' || (.rationale != null && .rationale != '') }' message: 'Critical severity requires a rationale' - name: customer_impact_needs_severity expression: '${ .customer_impact != true || .severity in ['high', 'critical'] }' message: 'Customer-impacting issues must be high or critical severity' on_fail: VALIDATION_FAIL_BRANCH fallback_task: human_review export: as: '${ . }' YAML Example (schema-only validation with warn policy): - check_payload_shape: validate: input: '${ $context.api_payload }' schema: type: object required: [name, email] properties: name: type: string email: type: string format: email on_fail: VALIDATION_FAIL_WARN export: as: '${ . }'"),wait:external_exports.lazy(()=>WaitTaskConfigInputSchema).optional().describe("Required when kind='wait'. WaitTaskConfig defines the configuration for wait tasks that pause workflow execution. Supports both relative durations and absolute timestamps. @internal Implemented via Temporal timers. YAML Examples: Relative duration: - waitForApproval: wait: duration: days: 7 Absolute timestamp: - waitUntilMarketOpen: wait: until: '2026-03-02T09:30:00Z' Reference: zigflow-dsl-pattern-catalog.md - Task Type 8"),export:external_exports.lazy(()=>ExportInputSchema).optional().describe("Export configuration (how to save task output to context). Optional - if not set, output is not saved."),flow:external_exports.lazy(()=>FlowControlInputSchema).optional().describe("Flow control (which task executes next). Optional - if not set, continues to next task in sequence."),compensate:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Compensation tasks to execute if this task needs to be 'undone.' @internal Saga-style compensation for workflows with side effects. When a try_catch block catches an error, it can optionally run the compensation tasks for all already-completed tasks in reverse order. The compensation tasks receive the original task's output in their input context, allowing them to construct the appropriate undo operation (e.g., cancel an API call, delete a created resource, send a reversal notification). Only executed when: 1. The task completed successfully (failed tasks are not compensated) 2. A subsequent task within the same try_catch scope fails 3. The catch block is configured to run compensations YAML Example: try: - create_order: call: http with: method: POST endpoint: { uri: 'https://api.example.com/orders' } body: { ... } compensate: - cancel_order: call: http with: method: DELETE endpoint: { uri: 'https://api.example.com/orders/${ $context.create_order.id }' } export: as: '${ . }' - charge_payment: call: http with: method: POST endpoint: { uri: 'https://api.example.com/payments' } catch: as: error compensate: true do: - log_failure: call: notification with: ... Optional - when empty, this task has no compensation action. @since T17 (Advanced Agentic Orchestration)")})),EnvVarDeclarationInputSchema3=external_exports.object({is_secret:external_exports.boolean().optional().describe("Whether the resolved value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs and Temporal history. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description shown in the UI credential form. Should explain what the variable is used for and where to obtain it."),optional:external_exports.boolean().optional().describe("Whether this variable is optional. @internal When false (default): the execution pipeline rejects a run if this variable is missing from the user's environment. When true: a missing value is acceptable (the MCP server or agent degrades gracefully without it).")}),WorkflowBudgetInputSchema=external_exports.object({max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Maximum total cost for this workflow execution in micro-USD. 1 USD = 1,000,000 micros. Example: 2000000 = $2.00. When exceeded, the on_exceeded policy is applied. Optional \u2014 when 0, no cost limit is enforced."),max_total_tokens:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Maximum total tokens (input + output) across all LLM/agent tasks. Optional \u2014 when 0, no token limit is enforced."),max_duration_seconds:external_exports.number().optional().describe("Maximum wall-clock duration for the entire workflow execution in seconds. Optional \u2014 when 0, no duration limit is enforced (Temporal's own workflow execution timeout still applies)."),on_exceeded:external_exports.string().optional().describe("Policy when any budget limit is exceeded. Allowed values: budget_exceeded_terminate, budget_exceeded_human_review, budget_exceeded_warn.")});function workflowInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(WorkflowSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.document!==void 0&&(spec.document=workflowDocumentInputToProto(input.document)),input.tasks!==void 0&&(spec.tasks=input.tasks.map(workflowTaskInputToProto)),input.env!==void 0)for(let[k,v]of Object.entries(input.env))spec.env[k]=envVarDeclarationInputToProto3(v);return input.budget!==void 0&&(spec.budget=workflowBudgetInputToProto(input.budget)),Object.assign(create(WorkflowSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Workflow",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function workflowDocumentInputToProto(input){let result=create(WorkflowDocumentSchema);return input.dsl!==void 0&&(result.dsl=input.dsl),input.namespace!==void 0&&(result.namespace=input.namespace),input.name!==void 0&&(result.name=input.name),input.version!==void 0&&(result.version=input.version),input.description!==void 0&&(result.description=input.description),result}function contextManagementConfigInputToProto(input){let result=create(ContextManagementConfigSchema);return input.disable_summarization!==void 0&&(result.disableSummarization=input.disable_summarization),input.custom_trigger_threshold!==void 0&&(result.customTriggerThreshold=input.custom_trigger_threshold),input.custom_target_tokens!==void 0&&(result.customTargetTokens=input.custom_target_tokens),result}function agentExecutionConfigInputToProto(input){let result=create(AgentExecutionConfigSchema);return input.model!==void 0&&(result.model=input.model),input.timeout!==void 0&&(result.timeout=input.timeout),input.temperature!==void 0&&(result.temperature=input.temperature),input.context_management!==void 0&&(result.contextManagement=contextManagementConfigInputToProto(input.context_management)),input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),result}function agentCallOutputContractInputToProto(input){let result=create(AgentCallOutputContractSchema);return input.schema!==void 0&&(result.schema=input.schema),result.onInvalid=enumFromString(OnInvalidOutputPolicy,input.on_invalid),input.max_retries!==void 0&&(result.maxRetries=input.max_retries),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),result}function agentCallTaskConfigInputToProto(input){let result=create(AgentCallTaskConfigSchema);return input.agent!==void 0&&(result.agent=input.agent),input.org!==void 0&&(result.org=input.org),input.message!==void 0&&(result.message=input.message),input.env!==void 0&&(result.env=input.env),input.config!==void 0&&(result.config=agentExecutionConfigInputToProto(input.config)),input.output!==void 0&&(result.output=agentCallOutputContractInputToProto(input.output)),result.harness=enumFromString(Harness,input.harness),result}function callActivityTaskConfigInputToProto(input){let result=create(CallActivityTaskConfigSchema);return input.activity!==void 0&&(result.activity=input.activity),input.input!==void 0&&(result.input=input.input),result}function emitEventInputToProto(input){let result=create(EmitEventSpecSchema);return input.type!==void 0&&(result.type=input.type),input.source!==void 0&&(result.source=input.source),input.data!==void 0&&(result.data=input.data),input.subject!==void 0&&(result.subject=input.subject),result}function emitEventTaskConfigInputToProto(input){let result=create(EmitEventTaskConfigSchema);return input.event!==void 0&&(result.event=emitEventInputToProto(input.event)),result}function evalCriterionInputToProto(input){let result=create(EvalCriterionSchema);return input.name!==void 0&&(result.name=input.name),input.description!==void 0&&(result.description=input.description),input.weight!==void 0&&(result.weight=input.weight),result}function evalTaskConfigInputToProto(input){let result=create(EvalTaskConfigSchema);return input.model!==void 0&&(result.model=input.model),input.subject!==void 0&&(result.subject=input.subject),input.rubric!==void 0&&(result.rubric=input.rubric),result.scoringMode=enumFromString(EvalScoringMode,input.scoring_mode),input.threshold!==void 0&&(result.threshold=input.threshold),result.onFail=enumFromString(EvalFailPolicy,input.on_fail),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),input.system_prompt!==void 0&&(result.systemPrompt=input.system_prompt),input.criteria!==void 0&&(result.criteria=input.criteria.map(evalCriterionInputToProto)),input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),result}function forTaskConfigInputToProto(input){let result=create(ForTaskConfigSchema);return input.each!==void 0&&(result.each=input.each),input.in!==void 0&&(result.in=input.in),input.do!==void 0&&(result.do=input.do.map(workflowTaskInputToProto)),input.max_parallelism!==void 0&&(result.maxParallelism=input.max_parallelism),input.batch_size!==void 0&&(result.batchSize=input.batch_size),result.onError=enumFromString(ForEachErrorPolicy,input.on_error),result}function forkBranchInputToProto(input){let result=create(ForkBranchSchema);return input.name!==void 0&&(result.name=input.name),input.do!==void 0&&(result.do=input.do.map(workflowTaskInputToProto)),result}function forkTaskConfigInputToProto(input){let result=create(ForkTaskConfigSchema);return input.branches!==void 0&&(result.branches=input.branches.map(forkBranchInputToProto)),input.compete!==void 0&&(result.compete=input.compete),result}function grpcCallTaskConfigInputToProto(input){let result=create(GrpcCallTaskConfigSchema);return input.service!==void 0&&(result.service=input.service),input.method!==void 0&&(result.method=input.method),input.request!==void 0&&(result.request=input.request),result}function httpEndpointInputToProto(input){let result=create(HttpEndpointSchema);return input.uri!==void 0&&(result.uri=input.uri),result}function httpCallTaskConfigInputToProto(input){let result=create(HttpCallTaskConfigSchema);return input.method!==void 0&&(result.method=input.method),input.endpoint!==void 0&&(result.endpoint=httpEndpointInputToProto(input.endpoint)),input.headers!==void 0&&(result.headers=input.headers),input.body!==void 0&&(result.body=input.body),input.timeout_seconds!==void 0&&(result.timeoutSeconds=input.timeout_seconds),result}function humanInputOutcomeInputToProto(input){let result=create(HumanInputOutcomeSchema);return input.name!==void 0&&(result.name=input.name),input.label!==void 0&&(result.label=input.label),input.then!==void 0&&(result.then=input.then),result}function humanInputTaskConfigInputToProto(input){let result=create(HumanInputTaskConfigSchema);return input.prompt!==void 0&&(result.prompt=input.prompt),input.form_schema!==void 0&&(result.formSchema=input.form_schema),input.outcomes!==void 0&&(result.outcomes=input.outcomes.map(humanInputOutcomeInputToProto)),input.approvers!==void 0&&(result.approvers=input.approvers),input.timeout!==void 0&&(result.timeout=input.timeout),result.onTimeout=enumFromString(HumanInputTimeoutPolicy,input.on_timeout),input.notification_channels!==void 0&&(result.notificationChannels=input.notification_channels),input.payload!==void 0&&(result.payload=fromJson(ValueSchema,input.payload)),input.ui_hint!==void 0&&(result.uiHint=input.ui_hint),result}function signalInputToProto(input){let result=create(SignalSpecSchema);return input.id!==void 0&&(result.id=input.id),input.type!==void 0&&(result.type=input.type),result}function listenToInputToProto(input){let result=create(ListenToSchema);return input.mode!==void 0&&(result.mode=input.mode),input.signals!==void 0&&(result.signals=input.signals.map(signalInputToProto)),result}function listenTaskConfigInputToProto(input){let result=create(ListenTaskConfigSchema);return input.to!==void 0&&(result.to=listenToInputToProto(input.to)),result}function llmCallTaskConfigInputToProto(input){let result=create(LlmCallTaskConfigSchema);return input.model!==void 0&&(result.model=input.model),input.system_prompt!==void 0&&(result.systemPrompt=input.system_prompt),input.prompt!==void 0&&(result.prompt=input.prompt),input.response_schema!==void 0&&(result.responseSchema=input.response_schema),input.temperature!==void 0&&(result.temperature=input.temperature),input.max_tokens!==void 0&&(result.maxTokens=input.max_tokens),input.timeout!==void 0&&(result.timeout=input.timeout),result.onInvalid=enumFromString(OnInvalidOutputPolicy,input.on_invalid),input.max_retries!==void 0&&(result.maxRetries=input.max_retries),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),input.max_total_tokens!==void 0&&(result.maxTotalTokens=BigInt(input.max_total_tokens)),result}function notificationTaskConfigInputToProto(input){let result=create(NotificationTaskConfigSchema);return input.channel!==void 0&&(result.channel=input.channel),input.recipients!==void 0&&(result.recipients=input.recipients),input.subject!==void 0&&(result.subject=input.subject),input.body!==void 0&&(result.body=input.body),input.template!==void 0&&(result.template=input.template),input.metadata!==void 0&&(result.metadata=input.metadata),result}function raiseTaskConfigInputToProto(input){let result=create(RaiseTaskConfigSchema);return input.error!==void 0&&(result.error=input.error),input.message!==void 0&&(result.message=input.message),result}function runTaskConfigInputToProto(input){let result=create(RunTaskConfigSchema);return input.workflow!==void 0&&(result.workflow=input.workflow),input.input!==void 0&&(result.input=input.input),result}function setTaskConfigInputToProto(input){let result=create(SetTaskConfigSchema);return input.variables!==void 0&&(result.variables=input.variables),result}function switchCaseInputToProto(input){let result=create(SwitchCaseSchema);return input.name!==void 0&&(result.name=input.name),input.when!==void 0&&(result.when=input.when),input.then!==void 0&&(result.then=input.then),result}function switchTaskConfigInputToProto(input){let result=create(SwitchTaskConfigSchema);return input.cases!==void 0&&(result.cases=input.cases.map(switchCaseInputToProto)),result}function transformTaskConfigInputToProto(input){let result=create(TransformTaskConfigSchema);return result.engine=enumFromString(TransformEngine,input.engine),input.expression!==void 0&&(result.expression=input.expression),input.input!==void 0&&(result.input=input.input),result}function catchBlockInputToProto(input){let result=create(CatchBlockSchema);return input.as!==void 0&&(result.as=input.as),input.do!==void 0&&(result.do=input.do.map(workflowTaskInputToProto)),input.compensate!==void 0&&(result.compensate=input.compensate),result}function tryTaskConfigInputToProto(input){let result=create(TryTaskConfigSchema);return input.try!==void 0&&(result.try=input.try.map(workflowTaskInputToProto)),input.catch!==void 0&&(result.catch=catchBlockInputToProto(input.catch)),result}function validationRuleInputToProto(input){let result=create(ValidationRuleSchema);return input.name!==void 0&&(result.name=input.name),input.expression!==void 0&&(result.expression=input.expression),input.message!==void 0&&(result.message=input.message),result}function validateTaskConfigInputToProto(input){let result=create(ValidateTaskConfigSchema);return input.input!==void 0&&(result.input=input.input),input.schema!==void 0&&(result.schema=input.schema),input.rules!==void 0&&(result.rules=input.rules.map(validationRuleInputToProto)),result.onFail=enumFromString(ValidationFailPolicy,input.on_fail),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),result}function durationInputToProto(input){let result=create(DurationSchema);return input.days!==void 0&&(result.days=input.days),input.hours!==void 0&&(result.hours=input.hours),input.minutes!==void 0&&(result.minutes=input.minutes),input.seconds!==void 0&&(result.seconds=input.seconds),input.milliseconds!==void 0&&(result.milliseconds=input.milliseconds),result}function waitTaskConfigInputToProto(input){let result=create(WaitTaskConfigSchema);return input.duration!==void 0&&(result.waitType={case:"duration",value:durationInputToProto(input.duration)}),input.until!==void 0&&(result.waitType={case:"until",value:toTimestamp(input.until)}),result}function exportInputToProto(input){let result=create(ExportSchema);return input.as!==void 0&&(result.as=input.as),result}function flowControlInputToProto(input){let result=create(FlowControlSchema);return input.then!==void 0&&(result.then=input.then),result}function workflowTaskInputToProto(input){let result=create(WorkflowTaskSchema);switch(input.name!==void 0&&(result.name=input.name),result.kind=enumFromString(WorkflowTaskKind,input.kind),input.export!==void 0&&(result.export=exportInputToProto(input.export)),input.flow!==void 0&&(result.flow=flowControlInputToProto(input.flow)),input.compensate!==void 0&&(result.compensate=input.compensate.map(workflowTaskInputToProto)),input.kind){case"agent_call":input.agent_call!==void 0&&(result.taskConfig=toJson(AgentCallTaskConfigSchema,agentCallTaskConfigInputToProto(input.agent_call)));break;case"activity_call":input.activity_call!==void 0&&(result.taskConfig=toJson(CallActivityTaskConfigSchema,callActivityTaskConfigInputToProto(input.activity_call)));break;case"emit_event":input.emit_event!==void 0&&(result.taskConfig=toJson(EmitEventTaskConfigSchema,emitEventTaskConfigInputToProto(input.emit_event)));break;case"eval":input.eval!==void 0&&(result.taskConfig=toJson(EvalTaskConfigSchema,evalTaskConfigInputToProto(input.eval)));break;case"for_each":input.for_each!==void 0&&(result.taskConfig=toJson(ForTaskConfigSchema,forTaskConfigInputToProto(input.for_each)));break;case"fork":input.fork!==void 0&&(result.taskConfig=toJson(ForkTaskConfigSchema,forkTaskConfigInputToProto(input.fork)));break;case"grpc_call":input.grpc_call!==void 0&&(result.taskConfig=toJson(GrpcCallTaskConfigSchema,grpcCallTaskConfigInputToProto(input.grpc_call)));break;case"http_call":input.http_call!==void 0&&(result.taskConfig=toJson(HttpCallTaskConfigSchema,httpCallTaskConfigInputToProto(input.http_call)));break;case"human_input":input.human_input!==void 0&&(result.taskConfig=toJson(HumanInputTaskConfigSchema,humanInputTaskConfigInputToProto(input.human_input)));break;case"listen":input.listen!==void 0&&(result.taskConfig=toJson(ListenTaskConfigSchema,listenTaskConfigInputToProto(input.listen)));break;case"llm_call":input.llm_call!==void 0&&(result.taskConfig=toJson(LlmCallTaskConfigSchema,llmCallTaskConfigInputToProto(input.llm_call)));break;case"notification":input.notification!==void 0&&(result.taskConfig=toJson(NotificationTaskConfigSchema,notificationTaskConfigInputToProto(input.notification)));break;case"raise_error":input.raise_error!==void 0&&(result.taskConfig=toJson(RaiseTaskConfigSchema,raiseTaskConfigInputToProto(input.raise_error)));break;case"run_workflow":input.run_workflow!==void 0&&(result.taskConfig=toJson(RunTaskConfigSchema,runTaskConfigInputToProto(input.run_workflow)));break;case"set_vars":input.set_vars!==void 0&&(result.taskConfig=toJson(SetTaskConfigSchema,setTaskConfigInputToProto(input.set_vars)));break;case"switch_case":input.switch_case!==void 0&&(result.taskConfig=toJson(SwitchTaskConfigSchema,switchTaskConfigInputToProto(input.switch_case)));break;case"transform":input.transform!==void 0&&(result.taskConfig=toJson(TransformTaskConfigSchema,transformTaskConfigInputToProto(input.transform)));break;case"try_catch":input.try_catch!==void 0&&(result.taskConfig=toJson(TryTaskConfigSchema,tryTaskConfigInputToProto(input.try_catch)));break;case"validate":input.validate!==void 0&&(result.taskConfig=toJson(ValidateTaskConfigSchema,validateTaskConfigInputToProto(input.validate)));break;case"wait":input.wait!==void 0&&(result.taskConfig=toJson(WaitTaskConfigSchema,waitTaskConfigInputToProto(input.wait)));break;default:if(input.kind!==void 0&&input.kind!=="")throw new Error(`unknown task kind: ${input.kind}`)}return result}function envVarDeclarationInputToProto3(input){let result=create(EnvVarDeclarationSchema);return input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),input.optional!==void 0&&(result.optional=input.optional),result}function workflowBudgetInputToProto(input){let result=create(WorkflowBudgetSchema);return input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),input.max_total_tokens!==void 0&&(result.maxTotalTokens=BigInt(input.max_total_tokens)),input.max_duration_seconds!==void 0&&(result.maxDurationSeconds=input.max_duration_seconds),result.onExceeded=enumFromString(BudgetExceededPolicy,input.on_exceeded),result}async function applyWorkflow(serverAddress,token,input){let workflow=workflowInputToProto(input),desc=`workflow "${workflow.metadata?.slug??""}" in org "${workflow.metadata?.org??""}"`;return withClient(WorkflowCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(workflow,callOptions);return toProtoJson(WorkflowSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteWorkflow(serverAddress,token,org,slug){let desc=`workflow "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.workflow,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(WorkflowCommandController,transport);try{let deleted=await command.delete({value:id},callOptions);return toProtoJson(WorkflowSchema,deleted)}catch(err){throw rpcError(err,desc)}})}async function listWorkflowVersions(serverAddress,token,args){return withClient(WorkflowQueryController,serverAddress,token,async(client,callOptions)=>{let req={org:args.org,slug:args.slug,pageToken:args.pageToken??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.listVersions(req,callOptions),data=JSON.parse(toProtoJson(ListWorkflowVersionsResponseSchema,resp));if(Array.isArray(data.versions))for(let entry of data.versions)delete entry.validated_yaml;return JSON.stringify(data,null,2)}catch(err){throw rpcError(err,`versions of workflow "${args.slug}" in org "${args.org}"`)}})}async function fetchWorkflowVersion(serverAddress,token,org,slug,versionHash){let desc=`version "${versionHash}" of workflow "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport);try{let workflow=await query.getByReference({org,kind:ApiResourceKind.workflow,slug},callOptions),entry=await query.getVersion({workflowId:workflow.metadata?.id??"",versionHash},callOptions);return toProtoJson(WorkflowVersionEntrySchema,entry)}catch(err){throw rpcError(err,desc)}})}async function tagWorkflowVersion(serverAddress,token,args){let desc=`tag "${args.tag}" on workflow "${args.slug}" in org "${args.org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport),id;try{id=(await query.getByReference({org:args.org,kind:ApiResourceKind.workflow,slug:args.slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(WorkflowCommandController,transport);try{let workflow=await command.tagVersion({workflowId:id,versionHash:args.versionHash,tag:args.tag},callOptions);return toProtoJson(WorkflowSchema,workflow)}catch(err){throw rpcError(err,desc)}})}function registerWorkflowTools(server,target){return server.registerTool("get_workflow",{description:"Get full details of a Stigmer workflow by its org and slug. Pass 'version' (a full SHA-256 version hash from list_workflow_versions) to fetch a historical version instead \u2014 that returns the version entry with its validated YAML rather than the live workflow. Tags are not accepted here; resolve a tag to its hash via list_workflow_versions first.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org."),version:external_exports.string().optional().describe("Full 64-character SHA-256 version hash of a historical version. Omit for the live workflow.")}},(args,extra)=>textOrError(()=>{let token=resolveToken(extra,target.apiKey);return args.version!==void 0&&args.version!==""?fetchWorkflowVersion(target.serverAddress,token,args.org,args.slug,args.version):fetchWorkflow(target.serverAddress,token,args.org,args.slug)})),server.registerTool("apply_workflow",{description:"Create or update a Stigmer workflow (idempotent). Provide identity fields (name, org) and workflow configuration (document, tasks, env, etc.).",inputSchema:WorkflowInputShape},(args,extra)=>textOrError(()=>applyWorkflow(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_workflow",{description:"Delete a Stigmer workflow by its org and slug. Returns the deleted workflow.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org.")}},(args,extra)=>textOrError(()=>deleteWorkflow(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("list_workflow_versions",{description:"List a workflow's version history (newest first): version hash, tag, who applied it and when, and which version is current. Every apply that changes the workflow creates a new immutable version identified by its content hash. Entries omit the version YAML \u2014 fetch one version's full content with get_workflow and its hash.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org."),page_size:external_exports.number().int().optional().describe("Maximum versions per page (default 50, max 100)."),page_token:external_exports.string().optional().describe("Pagination token from a previous response's next_page_token.")}},(args,extra)=>textOrError(()=>listWorkflowVersions(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,slug:args.slug,pageSize:args.page_size,pageToken:args.page_token}))),server.registerTool("tag_workflow_version",{description:"Assign a tag (e.g. stable, production) to a specific workflow version. Tags are mutable pointers: re-tagging with an existing name moves it from its previous version, and a version holds at most one tag. Get version hashes from list_workflow_versions. Returns the updated workflow.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org."),version:external_exports.string().describe("Full 64-character SHA-256 hash of the version to tag."),tag:external_exports.string().describe("Tag to assign: alphanumeric with dots, hyphens, or underscores (e.g. stable, v1.0).")}},(args,extra)=>textOrError(()=>tagWorkflowVersion(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,slug:args.slug,versionHash:args.version,tag:args.tag}))),["get_workflow","apply_workflow","delete_workflow","list_workflow_versions","tag_workflow_version"]}var import_yaml=__toESM(require_dist2(),1);var acceptedTaskKinds=new Set(Object.values(WorkflowTaskKind).filter(v=>typeof v=="string"&&v!=="workflow_task_kind_unspecified"));function registerValidateWorkflowYamlTool(server,target){return server.registerTool("validate_workflow_yaml",{description:"Validate a Stigmer workflow YAML for structural and semantic correctness. Uses the same Temporal-based validation pipeline as workflow create/update. Returns validation state (VALID/INVALID/FAILED), errors, warnings, and the generated internal YAML.",inputSchema:{yaml:external_exports.string().describe("Complete Stigmer workflow YAML content to validate (apiVersion, kind, metadata, spec).")}},(args,extra)=>textOrError(()=>validateWorkflowYaml(target.serverAddress,resolveToken(extra,target.apiKey),args.yaml))),["validate_workflow_yaml"]}async function validateWorkflowYaml(serverAddress,token,yamlContent){if(yamlContent.trim()==="")throw new Error("yaml is required");let workflow;try{workflow=parseWorkflowYaml(yamlContent)}catch(err){throw new Error(`failed to parse workflow YAML: ${errMessage(err)}`)}return withClient(WorkflowCommandController,serverAddress,token,async(client,callOptions)=>{try{let validation=await client.validateSpec(workflow,callOptions);return toProtoJson(ServerlessWorkflowValidationSchema,validation)}catch(err){throw rpcError(err,"workflow validation")}})}function parseWorkflowYaml(yamlContent){let raw;try{raw=(0,import_yaml.parse)(yamlContent)}catch(err){throw new Error(`invalid YAML syntax: ${errMessage(err)}`)}if(!isObject3(raw))throw new Error("missing or invalid 'spec' field");let spec=raw.spec;if(!isObject3(spec))throw new Error("missing or invalid 'spec' field");let tasks=spec.tasks;Array.isArray(tasks)&&tasks.forEach((task,i)=>{if(!isObject3(task))return;let kind=task.kind;if(typeof kind=="string"&&kind!==""&&!acceptedTaskKinds.has(kind))throw new Error(`unknown task kind "${kind}" at tasks[${i}]`)});try{return fromJson(WorkflowSchema,raw,{ignoreUnknownFields:!0})}catch(err){throw new Error(`failed to unmarshal into Workflow proto: ${errMessage(err)}`)}}function isObject3(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function errMessage(err){return err instanceof Error?err.message:String(err)}var SERVER_VERSION=process.env.STIGMER_MCP_VERSION||"dev",HTTP_SHUTDOWN_GRACE_MS=5e3,PROTECTED_RESOURCE_METADATA_PATH="/.well-known/oauth-protected-resource";function createServer(target){let server=new McpServer({name:"mcp-server-stigmer",version:SERVER_VERSION});return registerTools(server,target),registerResources(server,target),server}function createRecordsServer(target){let server=new McpServer({name:"mcp-server-stigmer-records",version:SERVER_VERSION}),tools=registerRecordTools(server,target,"agent");return log.info("tools registered (records roster)",{count:tools.length,tools}),server}function registerTools(server,target){let tools=[...registerSearchTools(server,target),...registerAgentTools(server,target),...registerAgentExecutionTools(server,target),...registerMcpServerTools(server,target),...registerSkillTools(server,target),...registerWorkflowTools(server,target),...registerValidateWorkflowYamlTool(server,target),...registerTaskKindTools(server,target),...registerWorkflowExecutionTools(server,target),...registerExecutionControlTools(server,target),...registerEnvironmentTools(server,target),...registerDatastoreTools(server,target),...registerRecordTools(server,target,"direct")];log.info("tools registered",{count:tools.length,tools})}function registerResources(server,target){let resources=[...registerAgentResources(server,target),...registerMcpServerResources(server,target),...registerSkillResources(server,target),...registerWorkflowResources(server,target),...registerEnvironmentResources(server,target),...registerDatastoreResources(server,target)];log.info("resources registered",{count:resources.length,resources})}async function serveStdio(server,signal){let transport=new StdioServerTransport;return await server.connect(transport),new Promise(resolve=>{let onAbort=()=>{server.close()};signal.addEventListener("abort",onAbort,{once:!0}),server.server.onclose=()=>{signal.removeEventListener("abort",onAbort),resolve()},server.server.onerror=err=>log.error("mcp protocol error",{error:err.message})})}var RECORDS_ROUTE="/records";function routedServerFactory(target){return path=>path===RECORDS_ROUTE?createRecordsServer(target):createServer(target)}async function serveHttp(makeServer,cfg,signal){let sessions=new Map,httpServer=createHttpServer((req,res)=>{logAccess(req,res),routeRequest(req,res,sessions,makeServer,cfg)}),addr=`:${cfg.httpPort}`;return new Promise((resolve,reject)=>{httpServer.on("error",reject),httpServer.listen(Number(cfg.httpPort),()=>{log.info("HTTP transport listening",{addr,auth_enabled:cfg.httpAuthEnabled})}),signal.addEventListener("abort",()=>{log.info("HTTP server shutting down",{grace_period_ms:HTTP_SHUTDOWN_GRACE_MS});let force=setTimeout(()=>httpServer.closeAllConnections?.(),HTTP_SHUTDOWN_GRACE_MS);httpServer.close(err=>{clearTimeout(force);for(let transport of sessions.values())transport.close();sessions.clear(),err?reject(err):resolve()})},{once:!0})})}async function serveBoth(target,cfg,signal){let linked=new AbortController,onParentAbort=()=>linked.abort();signal.addEventListener("abort",onParentAbort,{once:!0});let tasks=[serveStdio(stdioServer(target,cfg),linked.signal),serveHttp(routedServerFactory(target),cfg,linked.signal)];try{await Promise.race(tasks)}finally{linked.abort(),await Promise.allSettled(tasks),signal.removeEventListener("abort",onParentAbort)}}async function routeRequest(req,res,sessions,makeServer,cfg){if(req.method==="GET"&&req.url==="/health"){res.writeHead(200,{"Content-Type":"application/json"}),res.end(`{"status":"ok"}
|
|
203
|
-
`);return}if(cfg.oauth.enabled&&requestPath(req)===PROTECTED_RESOURCE_METADATA_PATH){serveProtectedResourceMetadata(req,res,cfg);return}if(cfg.httpAuthEnabled){let token=extractBearerToken(req);if(token===""){let headers={"Content-Type":"text/plain"};cfg.oauth.enabled&&(headers["WWW-Authenticate"]=bearerChallenge(cfg)),res.writeHead(401,headers),res.end("missing or malformed Authorization: Bearer header");return}req.auth={token,clientId:"stigmer-mcp-passthrough",scopes:[]}}let path=requestPath(req),sessionId=headerValue(req,"mcp-session-id");if(sessionId!==void 0){let transport2=sessions.get(sessionId);if(transport2===void 0){res.writeHead(404,{"Content-Type":"text/plain"}),res.end("unknown or expired MCP session");return}await transport2.handleRequest(req,res);return}if(req.method!=="POST"){res.writeHead(400,{"Content-Type":"text/plain"}),res.end("missing Mcp-Session-Id header");return}let body=await readJsonBody(req);if(!isInitializeRequest(body)){res.writeHead(400,{"Content-Type":"text/plain"}),res.end("Bad Request: an initialize request is required to open a session");return}let transport=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),onsessioninitialized:id=>{sessions.set(id,transport)},onsessionclosed:id=>{sessions.delete(id)}});transport.onclose=()=>{transport.sessionId!==void 0&&sessions.delete(transport.sessionId)},await makeServer(path).connect(transport),await transport.handleRequest(req,res,body)}function stdioServer(target,cfg){return cfg.roster==="records"?createRecordsServer(target):createServer(target)}function headerValue(req,name){let v=req.headers[name];return Array.isArray(v)?v[0]:v}function readJsonBody(req){return new Promise((resolve,reject)=>{let chunks=[];req.on("data",chunk=>chunks.push(chunk)),req.on("end",()=>{let raw=Buffer.concat(chunks).toString("utf8");try{resolve(raw===""?null:JSON.parse(raw))}catch(err){reject(err)}}),req.on("error",reject)})}function requestPath(req){let url=req.url??"/",q=url.indexOf("?");return q===-1?url:url.slice(0,q)}function logAccess(req,res){let start=Date.now(),requestId=randomBytes(8).toString("hex");res.on("finish",()=>{log.info("http request",{request_id:requestId,method:req.method,path:requestPath(req),status:res.statusCode,duration_ms:Date.now()-start})})}function serveProtectedResourceMetadata(req,res,cfg){if(res.setHeader("Access-Control-Allow-Origin","*"),req.method==="OPTIONS"){res.setHeader("Access-Control-Allow-Methods","GET, OPTIONS"),res.setHeader("Access-Control-Allow-Headers","*"),res.writeHead(204),res.end();return}let metadata={resource:cfg.oauth.resource,authorization_servers:cfg.oauth.authorizationServers,bearer_methods_supported:["header"],resource_name:"Stigmer MCP Server"};cfg.oauth.scopesSupported.length>0&&(metadata.scopes_supported=cfg.oauth.scopesSupported),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify(metadata))}function bearerChallenge(cfg){let params=['realm="stigmer"',`resource_metadata="${cfg.oauth.resource.replace(/\/+$/,"")+PROTECTED_RESOURCE_METADATA_PATH}"`];return cfg.oauth.scopesSupported.length>0&¶ms.push(`scope="${cfg.oauth.scopesSupported.join(" ")}"`),"Bearer "+params.join(", ")}function extractBearerToken(req){let header=req.headers.authorization;if(!header)return"";let prefix="Bearer ";return header.startsWith(prefix)?header.slice(prefix.length).trim():""}function isNormalShutdown(err){if(err==null||err.name==="AbortError")return!0;let code=err.code;if(code==="EPIPE"||code==="ABORT_ERR"||code==="ECONNRESET")return!0;let message=err instanceof Error?err.message:String(err);return message.includes("EOF")||message.includes("broken pipe")}function defaultConfig(){return loadConfigFromEnv()}async function run(cfg,signal){configureLogger({level:cfg.logLevel,format:cfg.logFormat}),validateConfig(cfg),log.info("mcp-server-stigmer starting",{transport:cfg.transport});let target={serverAddress:cfg.stigmerServerAddress,apiKey:cfg.apiKey};try{switch(cfg.transport){case"stdio":await serveStdio(stdioServer(target,cfg),signal);break;case"http":await serveHttp(routedServerFactory(target),cfg,signal);break;case"both":await serveBoth(target,cfg,signal);break}}catch(err){if(!isNormalShutdown(err))throw log.error("mcp-server-stigmer stopped",{error:err instanceof Error?err.message:String(err)}),err}log.info("mcp-server-stigmer stopped")}var VALID_TRANSPORTS2=["stdio","http","both"];async function main(){let cfg=defaultConfig(),sub=process.argv[2];sub!==void 0&&(VALID_TRANSPORTS2.includes(sub)||(process.stderr.write(`unknown subcommand "${sub}" (expected stdio, http, or both)
|
|
202
|
+
Workflow execution: wex_<26-char-ulid>`)}async function cancelExecution(serverAddress,token,executionId,reason){return resolveExecutionType(executionId)==="agent"?cancelAgentExecution(serverAddress,token,executionId,reason):cancelWorkflowExecution(serverAddress,token,executionId,reason)}async function cancelAgentExecution(serverAddress,token,id,reason){let desc=`agent execution "${id}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{try{let current=await createClient(AgentExecutionQueryController,transport).get({value:id},callOptions),phase=current.status?.phase??ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;if(TERMINAL_AGENT_PHASES.has(phase))return wrapAgent(current,!0);let cancelled=await createClient(AgentExecutionCommandController,transport).cancel({id,reason},callOptions);return wrapAgent(cancelled,!1)}catch(err){throw rpcError(err,desc)}})}async function cancelWorkflowExecution(serverAddress,token,id,reason){let desc=`workflow execution "${id}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{try{let current=await createClient(WorkflowExecutionQueryController,transport).get({value:id},callOptions),phase=current.status?.phase??ExecutionPhase2.EXECUTION_PHASE_UNSPECIFIED;if(TERMINAL_WORKFLOW_PHASES.has(phase))return wrapWorkflow(current,!0);let cancelled=await createClient(WorkflowExecutionCommandController,transport).cancel({id,reason},callOptions);return wrapWorkflow(cancelled,!1)}catch(err){throw rpcError(err,desc)}})}function wrapAgent(execution,alreadyTerminal){let{totalMessages,data}=compactExecution(execution,DEFAULT_MESSAGE_LIMIT);return JSON.stringify({already_terminal:alreadyTerminal,view:"compact",total_messages:totalMessages,execution:data},null,2)}function wrapWorkflow(execution,alreadyTerminal){return JSON.stringify({already_terminal:alreadyTerminal,execution:JSON.parse(toProtoJson(WorkflowExecutionSchema,execution))},null,2)}function registerExecutionControlTools(server,target){return server.registerTool("cancel_execution",{description:"Gracefully cancel a running agent (aex_*) or workflow (wex_*) execution \u2014 the kind is inferred from the ID prefix. Cancellation is terminal: the run stops after cleanup and cannot be resumed. Executions already in a terminal phase are returned with already_terminal=true instead of an error.",inputSchema:{execution_id:external_exports.string().describe("Execution ID to cancel (aex_* or wex_* format)."),reason:external_exports.string().optional().describe("Human-readable reason for the cancellation, stored in the audit trail.")}},(args,extra)=>textOrError(()=>cancelExecution(target.serverAddress,resolveToken(extra,target.apiKey),args.execution_id,args.reason??""))),["cancel_execution"]}async function fetchMcpServer(serverAddress,token,org,slug){return withClient(McpServerQueryController,serverAddress,token,async(client,callOptions)=>{try{let mcpServer=await client.getByReference({org,kind:ApiResourceKind.mcp_server,slug},callOptions);return toProtoJson(McpServerSchema,mcpServer)}catch(err){throw rpcError(err,`MCP server "${slug}" in org "${org}"`)}})}function registerMcpServerResources(server,target){return registerResource(server,target,{name:"stigmer_mcp_server",title:"Stigmer MCP Server",description:"Full definition of a Stigmer MCP server, identified by organization and slug.",template:"stigmer://mcp-servers/{org}/{slug}",fetch:fetchMcpServer}),["stigmer_mcp_server"]}var McpServerInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for marketplace display and documentation. Should explain what this MCP server does and its primary use cases. Example: 'GitHub MCP server for repository operations, code search, and PR management'"),icon_url:external_exports.string().optional().describe("Icon URL for UI display in marketplace and agent configuration screens. Should be a publicly accessible URL to an image (SVG, PNG, or JPEG). Example: 'https://github.githubassets.com/favicons/favicon.svg'"),stdio:external_exports.lazy(()=>StdioServerConfigInputSchema).optional().describe("stdio-based server (subprocess with stdin/stdout communication). Most common type - used for Node.js, Python, and other CLI-based MCP servers."),http:external_exports.lazy(()=>HttpServerConfigInputSchema).optional().describe("HTTP-based server (HTTP + Server-Sent Events communication). Used for remote/managed MCP services accessible over the network."),default_enabled_tools:external_exports.array(external_exports.string()).optional().describe("Default tools to enable from this MCP server. Empty list means all tools are enabled by default. @internal Tool names must match exactly what the MCP server reports via tools/list. Only names from discovered_capabilities.tools are valid here. Do NOT include names from discovered_capabilities.resource_templates \u2014 resource templates are read-only data endpoints, not callable tools. Including a resource template name here causes a fatal runtime error."),env:external_exports.record(external_exports.lazy(()=>EnvVarDeclarationInputSchema2)).optional().describe("Environment variable declarations for this MCP server. Keys are variable names; values describe their metadata and optionality. @internal Reserved platform keys \u2014 declared here like any other variable, but their values are injected by the runner per resolution context and are authoritative over same-named user env entries: STIGMER_CALLER_IDENTITY_KIND \u2014 the verified caller's kind token ('whatsapp_phone', 'slack_user_id', 'stigmer_user', 'anonymous') STIGMER_CALLER_IDENTITY_VALUE \u2014 the identity value (wa_id, user id, email); empty for anonymous STIGMER_SESSION_ID \u2014 the session the identity was resolved for; empty outside a session Reserved keys MUST be declared 'optional: true': they have no value at execution-create time, and a required declaration fails the pipeline's env-completeness validation before the runner ever injects them. Discovery (the connect workflow) runs with no session and injects the anonymous sentinel \u2014 a server consuming these keys must answer tools/list for anonymous callers and gate tool CALLS instead. The injected header is runner-asserted, not signed: pair it with a shared secret and treat it as trustworthy only for servers you operate."),pinned_tool_approvals:external_exports.array(external_exports.lazy(()=>ToolApprovalPolicyInputSchema)).optional().describe("Manual tool approval overrides set by the MCP server owner. @internal These take precedence over system-generated 'McpServerStatus.tool_approvals'. Never auto-modified \u2014 only changed by explicit user action (apply/update). Use cases: - Force approval for a tool the classifier marked as auto-approve - Exempt a safe tool the classifier flagged as needing approval - Establish organization-wide safety policies for dangerous tools Policy chain (lowest to highest priority): 1. McpServerStatus.tool_approvals - System-generated defaults 2. McpServerSpec.pinned_tool_approvals - Manual overrides (this field) 3. Agent.McpServerUsage.tool_approval_overrides - Per-agent customization 4. AgentExecution.auto_approve_all - Runtime bypass"),repository_url:external_exports.string().optional().describe("URL of the upstream source repository for this MCP server. Shown in the marketplace so users can inspect the implementation for trust and transparency. Example: 'https://github.com/modelcontextprotocol/servers'"),github_stars:external_exports.number().optional().describe("GitHub star count at the time of curation. Used as a popularity signal in marketplace display. 0 if unknown or non-GitHub repository."),auth:external_exports.lazy(()=>McpServerAuthInputSchema).optional().describe("OAuth authentication configuration for automated credential acquisition. When set, the MCP server's Connect page offers an OAuth flow instead of (or in addition to) manual credential entry. The acquired access token is stored in a system-managed environment (identified by grant.environment_id) as the env var named by auth.target_env_var. That env var must also be declared in env so the execution pipeline knows about it.")},McpServerInputSchema=external_exports.object(McpServerInputShape),StdioServerConfigInputSchema=external_exports.object({command:external_exports.string().describe("Command to execute the MCP server. This is the executable name or path. Examples: 'npx', 'python', 'node', './custom-mcp-server'"),args:external_exports.array(external_exports.string()).optional().describe("Arguments to pass to the command. Argument values can reference environment variables using ${VAR_NAME} syntax. These placeholders are resolved at runtime from the execution environment (same source as HTTP header/query param placeholders). This enables MCP servers that take core configuration as positional CLI arguments (e.g. database connection URLs, directory paths) to be parameterized per-user through env declarations. Resolution uses strict mode: missing variables produce a clear error rather than passing a literal '${VAR}' to the subprocess. Note: resolved values appear in the subprocess argv, which is visible via /proc/<pid>/cmdline within the container. In the containerized agent-runner environment this is not a practical concern, but callers should be aware when debugging. Examples: ['-y', '@modelcontextprotocol/server-github'] ['-y', '@modelcontextprotocol/server-postgres', '${POSTGRES_CONNECTION_URL}'] ['-m', 'mcp_server_sqlite', '--db-path', '${DB_PATH}/data.sqlite']"),working_dir:external_exports.string().optional().describe("Working directory for the process. If not specified, the process inherits the agent runner's working directory. Use absolute paths or paths relative to the agent runner's context.")}),HttpServerConfigInputSchema=external_exports.object({url:external_exports.string().describe("Base URL of the MCP server endpoint. Must be a valid HTTP or HTTPS URL. Examples: - 'http://localhost:3000/mcp' - 'https://mcp.example.com/v1' - 'https://api.company.com/mcp/github'"),headers:external_exports.record(external_exports.string()).optional().describe("HTTP headers to include with every request. Use for authentication, API versioning, or custom routing. Header values can reference environment variables using ${VAR_NAME} syntax. These placeholders are resolved at runtime from AgentInstance's environment. Examples: 'Authorization': 'Bearer ${API_TOKEN}' 'X-API-Version': '2024-01' 'X-Tenant-ID': '${TENANT_ID}' @internal Templates may also reference the reserved caller-identity keys (STIGMER_CALLER_IDENTITY_KIND / _VALUE, STIGMER_SESSION_ID) when the server declares them in spec.env \u2014 see the env field's reserved-key contract. Placeholders resolve against the env FILTERED to declared keys, so an undeclared reserved key in a template fails resolution."),query_params:external_exports.record(external_exports.string()).optional().describe("Query parameters to append to the URL. Values can reference environment variables using ${VAR_NAME} syntax. Examples: 'region': '${AWS_REGION}' 'version': 'v1'"),timeout_seconds:external_exports.number().optional().describe("Timeout for HTTP requests in seconds. Applies to both the initial connection and response streaming. Default: 30 seconds if not specified. Set higher values for MCP servers that perform long-running operations.")}),EnvVarDeclarationInputSchema2=external_exports.object({is_secret:external_exports.boolean().optional().describe("Whether the resolved value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs and Temporal history. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description shown in the UI credential form. Should explain what the variable is used for and where to obtain it."),optional:external_exports.boolean().optional().describe("Whether this variable is optional. @internal When false (default): the execution pipeline rejects a run if this variable is missing from the user's environment. When true: a missing value is acceptable (the MCP server or agent degrades gracefully without it).")}),ToolApprovalPolicyInputSchema=external_exports.object({tool_name:external_exports.string().optional().describe("Name of the tool (must match tools/list from MCP server exactly). Case-sensitive matching against tool names reported by the MCP server. Example: 'delete_repository', 'send_email', 'execute_sql'"),message:external_exports.string().optional().describe("Human-readable message shown to user when approval is requested. Supports {{args.field}} placeholders for dynamic content. If empty, a default message is generated: 'Execute tool: {tool_name}' Guidelines for effective messages: - Be specific about what will happen - Include the most important argument values using placeholders - Keep under 100 characters for UI display - Use action verbs: 'Delete', 'Send', 'Execute', 'Create'"),from_destructive_hint:external_exports.boolean().optional().describe("True when the connect-time fail-closed tightener force-gated this tool because the server's own MCP annotation declared destructiveHint=true, rather than the classifier (or a human) gating it. Lets the runner attribute a tightened tool to its true provenance (ApprovalPolicySource.APPROVAL_POLICY_SOURCE_ANNOTATION_DESTRUCTIVE_TIGHTEN) instead of collapsing it into the classifier default. Carries no enforcement weight \u2014 gating is decided by presence in this list \u2014 so an absent/false value simply means 'not attributed to the destructiveHint tightener'. Set only on entries written to McpServerStatus.tool_approvals (the classifier layer). It is meaningless on McpServerSpec.pinned_tool_approvals (a human pin is, by definition, a pinned override) and left false there.")}),OauthAppRefInputSchema=external_exports.object({org:external_exports.string().optional().describe("Organization that owns the referenced resource. When non-empty: must be a valid org slug (lowercase alphanumeric with hyphens, starts with a letter, 1-63 characters). Example: 'stigmer', 'acme-corp'. When empty: the reference is relative \u2014 the server resolves it to the parent resource's organization at write time. All stored and returned references always have org populated (absolute form). Use empty org for same-org references (the common case). Use explicit org for cross-org references (e.g., marketplace resources)."),slug:external_exports.string().describe("Resource slug (user-friendly identifier, unique within org). Format: lowercase alphanumeric with hyphens, must start with a letter and end with a letter or digit (e.g., 'web-search', 'code-reviewer'). Length: 2-63 characters.")}),McpServerAuthInputSchema=external_exports.object({oauth_app_ref:external_exports.lazy(()=>OauthAppRefInputSchema).optional().describe("Reference to an OAuthApp for vendor-specific OAuth. When empty: the server supports the MCP Authorization spec (DCR + PKCE). Stigmer discovers the authorization server metadata, registers a client via DCR, and performs the authorization code flow with PKCE \u2014 all automatically at connect time. When set: Stigmer uses the referenced OAuthApp's client credentials to perform the OAuth authorization code flow with the vendor on behalf of the user. The OAuthApp must belong to the same organization as the McpServer (or be accessible via cross-org reference)."),target_env_var:external_exports.string().optional().describe("The env var where the acquired access token is stored. Must correspond to an entry in env so the execution pipeline resolves it. The refresh token is stored as {target_env_var}_REFRESH_TOKEN by convention. Both are written to the grant's managed environment."),token_lifetime_hint:external_exports.string().optional().describe("Informational hint about expected token lifetime for UI display. Helps users understand when re-authentication may be needed. Empty means unknown. Examples: '1h', '2h', '90d', 'never'."),scope_hints:external_exports.array(external_exports.string()).optional().describe("Optional scope hints for UI display before the OAuth flow starts. For DCR servers: shown to the user since actual scopes are discovered at connect time during authorization server metadata retrieval. For vendor OAuth: informational (scopes are defined on the OAuthApp)."),discovery_url:external_exports.string().optional().describe("Optional URL for OAuth authorization server discovery on stdio servers. HTTP servers do not need this: the platform derives the discovery endpoint from http.url (fetching /.well-known/oauth-authorization-server relative to the server URL). Stdio servers have no URL, so DCR discovery has nothing to derive from. Set this field to the base URL of the vendor's OAuth authorization server to enable DCR for a stdio-based MCP server. Resolution priority: 1. discovery_url (if set \u2014 used for both stdio and HTTP) 2. http.url (default for HTTP servers) Ignored when oauth_app_ref is set (vendor OAuth uses OAuthApp endpoints directly, no discovery needed)."),oauth_only:external_exports.boolean().optional().describe("Whether the server's endpoint rejects manually-entered static tokens. Some hosted MCP endpoints (e.g. Notion, Monday) only accept an access token obtained through their OAuth flow \u2014 a personal API token or PAT pasted into the credential form is rejected with a 401. For these servers OAuth is not merely the preferred path, it is the only path that works. When true, the connect surfaces present OAuth as the sole credential option and suppress the 'enter token manually' affordance, so users are never sent down a path that cannot succeed. When false (the default), a static token remains a valid alternative \u2014 appropriate for API-key servers (e.g. Tavily) and for vendor endpoints that also accept a PAT (e.g. GitHub). This is a structural fact about the endpoint, not observable from the spec shape alone (an OAuth-only server and a PAT-capable server can have identical auth blocks), so it must be declared explicitly.")});function mcpServerInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(McpServerSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.icon_url!==void 0&&(spec.iconUrl=input.icon_url),input.stdio!==void 0&&(spec.serverType={case:"stdio",value:stdioServerConfigInputToProto(input.stdio)}),input.http!==void 0&&(spec.serverType={case:"http",value:httpServerConfigInputToProto(input.http)}),input.default_enabled_tools!==void 0&&(spec.defaultEnabledTools=input.default_enabled_tools),input.env!==void 0)for(let[k,v]of Object.entries(input.env))spec.env[k]=envVarDeclarationInputToProto2(v);return input.pinned_tool_approvals!==void 0&&(spec.pinnedToolApprovals=input.pinned_tool_approvals.map(toolApprovalPolicyInputToProto)),input.repository_url!==void 0&&(spec.repositoryUrl=input.repository_url),input.github_stars!==void 0&&(spec.githubStars=input.github_stars),input.auth!==void 0&&(spec.auth=mcpServerAuthInputToProto(input.auth)),Object.assign(create(McpServerSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"McpServer",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function stdioServerConfigInputToProto(input){let result=create(StdioServerConfigSchema);return input.command!==void 0&&(result.command=input.command),input.args!==void 0&&(result.args=input.args),input.working_dir!==void 0&&(result.workingDir=input.working_dir),result}function httpServerConfigInputToProto(input){let result=create(HttpServerConfigSchema);return input.url!==void 0&&(result.url=input.url),input.headers!==void 0&&(result.headers=input.headers),input.query_params!==void 0&&(result.queryParams=input.query_params),input.timeout_seconds!==void 0&&(result.timeoutSeconds=input.timeout_seconds),result}function envVarDeclarationInputToProto2(input){let result=create(EnvVarDeclarationSchema);return input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),input.optional!==void 0&&(result.optional=input.optional),result}function toolApprovalPolicyInputToProto(input){let result=create(ToolApprovalPolicySchema);return input.tool_name!==void 0&&(result.toolName=input.tool_name),input.message!==void 0&&(result.message=input.message),input.from_destructive_hint!==void 0&&(result.fromDestructiveHint=input.from_destructive_hint),result}function oauthAppRefInputToProto(input){return create(ApiResourceReferenceSchema,{org:input.org,slug:input.slug,kind:ApiResourceKind.oauth_app})}function mcpServerAuthInputToProto(input){let result=create(McpServerAuthSchema);return input.oauth_app_ref!==void 0&&(result.oauthAppRef=oauthAppRefInputToProto(input.oauth_app_ref)),input.target_env_var!==void 0&&(result.targetEnvVar=input.target_env_var),input.token_lifetime_hint!==void 0&&(result.tokenLifetimeHint=input.token_lifetime_hint),input.scope_hints!==void 0&&(result.scopeHints=input.scope_hints),input.discovery_url!==void 0&&(result.discoveryUrl=input.discovery_url),input.oauth_only!==void 0&&(result.oauthOnly=input.oauth_only),result}async function applyMcpServer(serverAddress,token,input){let server=mcpServerInputToProto(input),desc=`mcp server "${server.metadata?.slug??""}" in org "${server.metadata?.org??""}"`;return withClient(McpServerCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(server,callOptions);return toProtoJson(McpServerSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteMcpServer(serverAddress,token,org,slug){let desc=`MCP server "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(McpServerQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.mcp_server,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(McpServerCommandController,transport);try{let deleted=await command.delete({resourceId:id},callOptions);return toProtoJson(McpServerSchema,deleted)}catch(err){throw rpcError(err,desc)}})}function registerMcpServerTools(server,target){return server.registerTool("get_mcp_server",{description:"Get full details of a Stigmer MCP server by its org and slug (e.g. org=acme slug=my-server).",inputSchema:{org:external_exports.string().describe("Organization slug that owns the MCP server (e.g. acme)."),slug:external_exports.string().describe("MCP server slug \u2014 the unique identifier within the org (e.g. my-server).")}},(args,extra)=>textOrError(()=>fetchMcpServer(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("apply_mcp_server",{description:"Create or update a Stigmer MCP server definition (idempotent). Provide identity fields (name, org) and server configuration (stdio/http, tools, env, etc.).",inputSchema:McpServerInputShape},(args,extra)=>textOrError(()=>applyMcpServer(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_mcp_server",{description:"Delete a Stigmer MCP server definition by its org and slug. Returns the deleted MCP server.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the MCP server (e.g. acme)."),slug:external_exports.string().describe("MCP server slug \u2014 the unique identifier within the org (e.g. github).")}},(args,extra)=>textOrError(()=>deleteMcpServer(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),["get_mcp_server","apply_mcp_server","delete_mcp_server"]}var CONDITION_OPS={eq:RecordConditionOp.eq,neq:RecordConditionOp.neq,gt:RecordConditionOp.gt,gte:RecordConditionOp.gte,lt:RecordConditionOp.lt,lte:RecordConditionOp.lte,in:RecordConditionOp.is_in,not_in:RecordConditionOp.not_in,is_null:RecordConditionOp.is_null,not_null:RecordConditionOp.not_null};async function findRecords(serverAddress,token,args){let request3=create(FindRecordsRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,filter:buildFilter(args.conditions),orderBy:buildOrderBy(args.order_by),limit:args.limit??0,offset:args.offset??0});return withClient(DatastoreRecordQueryController,serverAddress,token,async(client,opts)=>toProtoJson(RecordListSchema,await client.findRecords(request3,opts)))}async function insertRecord(serverAddress,token,args){let request3=create(InsertRecordRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,record:args.record});return withClient(DatastoreRecordCommandController,serverAddress,token,async(client,opts)=>toProtoJson(RecordEnvelopeSchema,await client.insertRecord(request3,opts)))}async function updateRecord(serverAddress,token,args){let request3=create(UpdateRecordRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,id:args.id,fields:args.fields});return withClient(DatastoreRecordCommandController,serverAddress,token,async(client,opts)=>toProtoJson(RecordEnvelopeSchema,await client.updateRecord(request3,opts)))}async function deleteRecord(serverAddress,token,args){let request3=create(DeleteRecordRequestSchema,{datastore:args.datastore,org:args.org??"",collection:args.collection,id:args.id});return withClient(DatastoreRecordCommandController,serverAddress,token,async(client,opts)=>toProtoJson(RecordEnvelopeSchema,await client.deleteRecord(request3,opts)))}async function describeDatastore(serverAddress,token,args){let request3=create(DescribeDatastoreRequestSchema,{datastore:args.datastore,org:args.org??""});return withClient(DatastoreRecordQueryController,serverAddress,token,async(client,opts)=>toProtoJson(DatastoreDescriptionSchema,await client.describeDatastore(request3,opts)))}function buildFilter(conditions){if(!(conditions===void 0||conditions.length===0))return create(RecordFilterSchema,{conditions:conditions.map(buildCondition)})}function buildCondition(arg){return create(RecordConditionSchema,{field:arg.field,op:CONDITION_OPS[arg.op]??RecordConditionOp.record_condition_op_unspecified,value:arg.value!==void 0?scalarValue(arg.value):void 0,values:(arg.values??[]).map(scalarValue)})}function buildOrderBy(orderBy){if(orderBy!==void 0)return create(RecordOrderBySchema,{field:orderBy.field,direction:orderBy.direction==="desc"?RecordSortDirection.desc:orderBy.direction==="asc"?RecordSortDirection.asc:RecordSortDirection.record_sort_direction_unspecified})}function scalarValue(v){return fromJson(ValueSchema,v)}var DOMAIN_CODES2=new Set([Code.PermissionDenied,Code.AlreadyExists,Code.FailedPrecondition,Code.InvalidArgument,Code.NotFound]);async function recordResult(toolContext,produce){try{return textResult(await produce())}catch(err){let ce=ConnectError.from(err);return DOMAIN_CODES2.has(ce.code)?{content:[{type:"text",text:JSON.stringify(domainError2(ce))}],isError:!0}:errorResult(rpcError(ce,toolContext))}}function domainError2(ce){let payload={error:ce.rawMessage,code:grpcStatusName2(ce.code)},details=ce.findDetails(ErrorInfoSchema);if(details.length>0){let info=details[0];info.reason!==""&&(payload.reason=info.reason);let constraint=info.metadata.constraint;constraint!==void 0&&constraint!==""&&(payload.constraint=constraint)}return payload}function grpcStatusName2(code){return Code[code].replace(/([a-z0-9])([A-Z])/g,"$1_$2").toUpperCase()}var ENCODINGS="Field value encodings: date YYYY-MM-DD, time HH:MM[:SS], timestamp RFC 3339 UTC (e.g. 2026-07-21T04:30:00Z).",scalar=external_exports.union([external_exports.string(),external_exports.number(),external_exports.boolean()]),conditionShape=external_exports.object({field:external_exports.string().describe("Declared field name, or a filterable system field (id, created_at, updated_at)."),op:external_exports.enum(["eq","neq","gt","gte","lt","lte","in","not_in","is_null","not_null"]).describe("Comparison operator. eq/neq/in/not_in for string and enum fields; gt/gte/lt/lte for numeric and temporal fields; is_null/not_null for optional fields."),value:scalar.nullable().optional().describe("Comparison value for scalar operators, in the field's canonical encoding."),values:external_exports.array(scalar).optional().describe("Comparison values for in / not_in.")});function registerRecordTools(server,target,audience){let orgShape={};return audience==="direct"&&(orgShape.org=external_exports.string().optional().describe("Organization that owns the datastore. Required on Stigmer Cloud; omit against a local backend.")),server.registerTool("describe_datastore",{description:`Describe a datastore: its collections, field declarations and encodings, constraint messages, data partitions, and the verbs you are allowed to use per collection (empty access means you are not allowed to touch that collection). A read verb may carry readable_fields: reads then return only those fields, and only they may appear in filter conditions and order_by (empty readable_fields means every field). Call this before the first record operation against an unfamiliar datastore. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape},annotations:{readOnlyHint:!0}},(args,extra)=>recordResult(`datastore "${args.datastore}"`,()=>describeDatastore(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("find_records",{description:`Find records in a datastore collection with a typed filter (conditions are AND-combined). Returns records plus total/limit/offset for paging. Results are ordered by created_at descending unless order_by is given. Records carry only the fields your grant allows (describe_datastore lists them as readable_fields); conditions and order_by on other fields are rejected. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection to query (e.g. bookings)."),conditions:external_exports.array(conditionShape).optional().describe("Filter conditions, AND-combined. Omit to list all readable records."),order_by:external_exports.object({field:external_exports.string().describe("Field to sort by."),direction:external_exports.enum(["asc","desc"]).optional().describe("Sort direction (default asc).")}).optional().describe("Sort order. Omit for created_at descending with id tiebreak."),limit:external_exports.number().int().optional().describe("Page size (default 25, max 100)."),offset:external_exports.number().int().optional().describe("Records to skip for paging.")},annotations:{readOnlyHint:!0}},(args,extra)=>recordResult(`records in "${args.datastore}/${args.collection}"`,()=>findRecords(target.serverAddress,resolveToken(extra,target.apiKey),{...args,conditions:args.conditions}))),server.registerTool("insert_record",{description:`Insert one record into a datastore collection. System fields (id, created_at, updated_at, created_by) are server-stamped \u2014 never include them. Declared constraints are enforced by the store; a violation returns the constraint's message verbatim (e.g. a taken slot returns ALREADY_EXISTS \u2014 pick another, do not retry the same one). When uncertain whether a record already exists, find first. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection to insert into (e.g. bookings)."),record:external_exports.record(external_exports.unknown()).describe("Declared fields for the new record, in canonical encodings.")}},(args,extra)=>recordResult(`record in "${args.datastore}/${args.collection}"`,()=>insertRecord(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("update_record",{description:`Update one record by id with a partial merge: only the supplied fields change, and an explicit null clears a field. Constraints are re-evaluated on the merged result. Returns the full updated record. ${ENCODINGS}`,inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection holding the record."),id:external_exports.string().describe("Record id (from a previous find or insert)."),fields:external_exports.record(external_exports.unknown()).describe("Fields to merge. Explicit null clears a field; omitted fields keep their values.")},annotations:{idempotentHint:!0}},(args,extra)=>recordResult(`record "${args.id}" in "${args.datastore}/${args.collection}"`,()=>updateRecord(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_record",{description:"Delete one record by id. Returns the deleted record. Record tools never delete collections or datastores.",inputSchema:{datastore:external_exports.string().describe("Datastore slug (e.g. clinic)."),...orgShape,collection:external_exports.string().describe("Collection holding the record."),id:external_exports.string().describe("Record id (from a previous find or insert).")},annotations:{destructiveHint:!0,idempotentHint:!0}},(args,extra)=>recordResult(`record "${args.id}" in "${args.datastore}/${args.collection}"`,()=>deleteRecord(target.serverAddress,resolveToken(extra,target.apiKey),args))),["describe_datastore","find_records","insert_record","update_record","delete_record"]}var knownKinds={agent:ApiResourceKind.agent,datastore:ApiResourceKind.datastore,environment:ApiResourceKind.environment,skill:ApiResourceKind.skill,mcp_server:ApiResourceKind.mcp_server,workflow:ApiResourceKind.workflow};function registerSearchTools(server,target){return server.registerTool("search",{description:"Search and list Stigmer resources (agents, skills, MCP servers, workflows, environments, datastores). Set 'kinds' to filter by resource type. Set 'query' for full-text search. Set 'org' to scope to an organization. Omit 'query' to list all accessible resources.",inputSchema:{kinds:external_exports.array(external_exports.string()).optional().describe("Resource kinds to search. Valid: agent, skill, mcp_server, workflow, environment, datastore. Empty searches all."),query:external_exports.string().optional().describe("Full-text search query. Empty lists all accessible resources."),org:external_exports.string().optional().describe("Organization slug to scope the search. Empty searches all accessible orgs."),exclude_public:external_exports.boolean().optional().describe("Exclude public/platform resources from results."),page_size:external_exports.number().int().optional().describe("Results per page (default 20, max 100)."),page_num:external_exports.number().int().optional().describe("Page number (1-indexed, default 1).")}},(args,extra)=>textOrError(()=>search(target.serverAddress,resolveToken(extra,target.apiKey),{kinds:args.kinds,query:args.query,org:args.org,excludePublic:args.exclude_public,pageSize:args.page_size,pageNum:args.page_num}))),["search"]}async function search(serverAddress,token,args){let kinds=parseKinds(args.kinds);return withClient(SearchService,serverAddress,token,async(client,callOptions)=>{let req={kinds,query:args.query??"",org:args.org??"",excludePublic:args.excludePublic??!1};((args.pageSize??0)>0||(args.pageNum??0)>0)&&(req.page={size:args.pageSize??0,num:args.pageNum??0});let resp;try{resp=await client.search(req,callOptions)}catch(err){throw rpcError(err,args.org?`search results in org "${args.org}"`:"search results")}return enrichSearchResponse(resp)})}function parseKinds(raw){return!raw||raw.length===0?[]:raw.map(s=>{let kind=knownKinds[s];if(kind===void 0)throw new Error(`unknown resource kind "${s}"; valid kinds: agent, skill, mcp_server, workflow, environment, datastore`);return kind})}function enrichSearchResponse(resp){if(resp.entries.length===0)return toProtoJson(SearchResponseSchema,resp);let data=toJson(SearchResponseSchema,resp,{useProtoFieldName:!0}),entries=Array.isArray(data.entries)?data.entries:[];for(let i=0;i<entries.length&&i<resp.entries.length;i++){let r=resp.entries[i],uri=buildResourceURI(ApiResourceKind[r.kind]??"",r.org,r.slug);uri!==""&&(entries[i].resource_uri=uri)}return JSON.stringify(data,null,2)}async function fetchSkill(serverAddress,token,org,slug,version2){return withClient(SkillQueryController,serverAddress,token,async(client,callOptions)=>{try{let skill=await client.getByReference({org,kind:ApiResourceKind.skill,slug,version:version2},callOptions);return toProtoJson(SkillSchema,skill)}catch(err){throw rpcError(err,`skill "${slug}" in org "${org}"`)}})}function registerSkillResources(server,target){return registerResource(server,target,{name:"stigmer_skill",title:"Stigmer Skill",description:"Full definition of a Stigmer skill (latest version), identified by organization and slug.",template:"stigmer://skills/{org}/{slug}",fetch:(serverAddress,token,org,slug)=>fetchSkill(serverAddress,token,org,slug,"")}),registerVersionedResource(server,target,{name:"stigmer_skill_version",title:"Stigmer Skill (versioned)",description:"Full definition of a Stigmer skill at a specific version, identified by organization, slug, and version (tag name or SHA-256 hash).",template:"stigmer://skills/{org}/{slug}/{version}",fetch:fetchSkill}),["stigmer_skill","stigmer_skill_version"]}async function deleteSkill(serverAddress,token,org,slug){let desc=`skill "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(SkillQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.skill,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(SkillCommandController,transport);try{let deleted=await command.delete({value:id},callOptions);return toProtoJson(SkillSchema,deleted)}catch(err){throw rpcError(err,desc)}})}async function listSkillVersions(serverAddress,token,args){return withClient(SkillQueryController,serverAddress,token,async(client,callOptions)=>{let req={org:args.org,slug:args.slug,pageToken:args.pageToken??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.listVersions(req,callOptions);return toProtoJson(ListSkillVersionsResponseSchema,resp)}catch(err){throw rpcError(err,`versions of skill "${args.slug}" in org "${args.org}"`)}})}function registerSkillTools(server,target){return server.registerTool("get_skill",{description:"Get full details of a Stigmer skill by org and slug, optionally at a specific version. Omit 'version' for the latest.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the skill."),slug:external_exports.string().describe("Skill slug \u2014 unique identifier within the org."),version:external_exports.string().optional().describe("Version to retrieve: tag name (e.g. stable) or SHA-256 hash. Omit for latest.")}},(args,extra)=>textOrError(()=>fetchSkill(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug,args.version??""))),server.registerTool("delete_skill",{description:"Delete a Stigmer skill and all its versions by org and slug. To create or update skills, use the 'stigmer skill push' CLI command. Returns the deleted skill.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the skill (e.g. stigmer)."),slug:external_exports.string().describe("Skill slug \u2014 the unique identifier within the org (e.g. code-review-best-practices). Deletes the skill and all its versions.")}},(args,extra)=>textOrError(()=>deleteSkill(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("list_skill_versions",{description:"List a skill's version history (newest first): version hash, tag, who pushed it and when, and which version is current. Fetch one version's full content with get_skill and its hash or tag.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the skill."),slug:external_exports.string().describe("Skill slug \u2014 unique identifier within the org."),page_size:external_exports.number().int().optional().describe("Maximum versions per page (default 50)."),page_token:external_exports.string().optional().describe("Pagination token from a previous response's next_page_token.")}},(args,extra)=>textOrError(()=>listSkillVersions(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,slug:args.slug,pageSize:args.page_size,pageToken:args.page_token}))),["get_skill","delete_skill","list_skill_versions"]}async function listPendingApprovals(serverAddress,token,args){return withClient(WorkflowExecutionQueryController,serverAddress,token,async(client,callOptions)=>{let req={org:args.org,pageToken:args.pageToken??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.listPendingApprovals(req,callOptions);return toProtoJson(PendingApprovalsListSchema,resp)}catch(err){throw rpcError(err,`pending approvals in org "${args.org}"`)}})}async function submitWorkflowTaskApproval(serverAddress,token,args){return withClient(WorkflowExecutionCommandController,serverAddress,token,async(client,callOptions)=>{let req={executionId:args.executionId,taskName:args.taskName,outcome:args.outcome,comment:args.comment??""};args.formData!==void 0&&(req.formData=args.formData);try{let execution=await client.submitWorkflowTaskApproval(req,callOptions);return toProtoJson(WorkflowExecutionSchema,execution)}catch(err){throw rpcError(err,`approval for task "${args.taskName}" in workflow execution "${args.executionId}"`)}})}var API_VERSION2="agentic.stigmer.ai/v1";async function runWorkflow(serverAddress,token,args){let desc=`workflow "${args.workflow}" in org "${args.org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport),workflowId;try{workflowId=(await query.getByReference({org:args.org,kind:ApiResourceKind.workflow,slug:args.workflow},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let runtimeEnv=toExecutionValues(args.runtimeEnv);runtimeEnv.STIGMER_ORG_ID===void 0&&(runtimeEnv.STIGMER_ORG_ID=create(ExecutionValueSchema,{value:args.org,isSecret:!1}));let execution=create(WorkflowExecutionSchema,{apiVersion:API_VERSION2,kind:"WorkflowExecution",metadata:create(ApiResourceMetadataSchema,{name:executionName(),org:args.org}),spec:create(WorkflowExecutionSpecSchema,{workflowId,triggerMessage:(args.message??"")===""?"execute":args.message,runtimeEnv})}),command=createClient(WorkflowExecutionCommandController,transport);try{let created=await command.create(execution,callOptions);return toProtoJson(WorkflowExecutionSchema,created)}catch(err){throw rpcError(err,`execution of ${desc}`)}})}function registerWorkflowExecutionTools(server,target){return server.registerTool("run_workflow",{description:"Start a workflow execution (asynchronous). Returns immediately with the created execution (wex_* ID) while the run continues in the background \u2014 poll get_workflow_execution and get_workflow_execution_events to observe progress and diagnose failures.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow (e.g. stigmer)."),workflow:external_exports.string().describe("Workflow slug \u2014 the unique identifier within the org (e.g. release-notes)."),message:external_exports.string().optional().describe("Trigger message passed to the workflow. Omit to run with the default trigger."),runtime_env:external_exports.record(external_exports.string()).optional().describe("Non-secret runtime environment values (name \u2192 value) injected into the run. Secrets must come from Environments referenced by the workflow, never through this tool.")}},(args,extra)=>textOrError(()=>runWorkflow(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,workflow:args.workflow,message:args.message,runtimeEnv:args.runtime_env}))),server.registerTool("get_workflow_execution",{description:"Get a workflow execution's full status including phase, tasks, errors, cost, and timing. Use for diagnosing failed or running executions.",inputSchema:{execution_id:external_exports.string().describe("Workflow execution ID (wex_* format).")}},(args,extra)=>textOrError(()=>getWorkflowExecution(target.serverAddress,resolveToken(extra,target.apiKey),args.execution_id))),server.registerTool("get_workflow_execution_events",{description:"Get the event log for a workflow execution. Returns task transitions, errors, cost checkpoints, and approval events. Use for deep diagnosis of execution failures.",inputSchema:{execution_id:external_exports.string().describe("Workflow execution ID (wex_* format)."),task_name:external_exports.string().optional().describe("Filter events by task name."),page_size:external_exports.number().int().optional().describe("Number of events per page (default 100, max 500).")}},(args,extra)=>textOrError(()=>getWorkflowExecutionEvents(target.serverAddress,resolveToken(extra,target.apiKey),{executionId:args.execution_id,taskName:args.task_name,pageSize:args.page_size}))),server.registerTool("list_pending_approvals",{description:"List workflow tasks waiting for a human decision across an organization \u2014 an approvals inbox. Each entry carries the execution ID, task name, requester, timeout, and the form schema when the task defines one; respond with submit_workflow_task_approval. (Agent-execution approvals are not listed here \u2014 they surface in get_agent_execution's status.pending_approvals.)",inputSchema:{org:external_exports.string().describe("Organization slug to scope the query (e.g. stigmer)."),page_size:external_exports.number().int().optional().describe("Maximum entries per page (default 20, max 100)."),page_token:external_exports.string().optional().describe("Pagination token from a previous response's next_page_token.")}},(args,extra)=>textOrError(()=>listPendingApprovals(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,pageSize:args.page_size,pageToken:args.page_token}))),server.registerTool("submit_workflow_task_approval",{description:"Submit a reviewer decision for a workflow human_input task that is waiting for a signal. outcome must match one of the task's configured outcome names (default: approve or deny). When the task defines a form_schema (see list_pending_approvals), provide matching form_data. Returns the updated workflow execution.",inputSchema:{execution_id:external_exports.string().describe("Workflow execution ID (wex_* format)."),task_name:external_exports.string().describe("Name of the waiting human_input task."),outcome:external_exports.string().describe("Decision outcome. Must match a configured outcome name of the task (e.g. approve, deny, needs_revision); approve/deny when none are configured."),comment:external_exports.string().optional().describe("Reviewer comment, stored in the audit trail."),form_data:external_exports.record(external_exports.unknown()).optional().describe("Response form data conforming to the task's form_schema, when it defines one.")}},(args,extra)=>textOrError(()=>submitWorkflowTaskApproval(target.serverAddress,resolveToken(extra,target.apiKey),{executionId:args.execution_id,taskName:args.task_name,outcome:args.outcome,comment:args.comment,formData:args.form_data}))),["run_workflow","get_workflow_execution","get_workflow_execution_events","list_pending_approvals","submit_workflow_task_approval"]}async function getWorkflowExecution(serverAddress,token,executionId){if(executionId==="")throw new Error("execution_id is required");return withClient(WorkflowExecutionQueryController,serverAddress,token,async(client,callOptions)=>{try{let execution=await client.get({value:executionId},callOptions);return toProtoJson(WorkflowExecutionSchema,execution)}catch(err){throw rpcError(err,`workflow execution "${executionId}"`)}})}async function getWorkflowExecutionEvents(serverAddress,token,args){if(args.executionId==="")throw new Error("execution_id is required");return withClient(WorkflowExecutionQueryController,serverAddress,token,async(client,callOptions)=>{let req={executionId:args.executionId,taskName:args.taskName??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.getEventLog(req,callOptions);return toProtoJson(GetEventLogResponseSchema,resp)}catch(err){throw rpcError(err,`event log for execution "${args.executionId}"`)}})}function registerTaskKindTools(server,target){return server.registerTool("get_task_kind_registry",{description:"Get the complete workflow task kind registry with all 20 task kind descriptors, field schemas, JSON Schemas, categories, examples, and output shapes.",inputSchema:{}},(_args,extra)=>textOrError(()=>getTaskKindRegistry(target.serverAddress,resolveToken(extra,target.apiKey)))),server.registerTool("get_task_kind",{description:"Get a single workflow task kind descriptor by name with field schemas, JSON Schema, examples, and output shape.",inputSchema:{kind:external_exports.string().describe("Task kind name (one of: set_vars, http_call, grpc_call, activity_call, switch_case, for_each, fork, try_catch, listen, wait, raise_error, run_workflow, agent_call, llm_call, transform, human_input, validate, emit_event, notification, eval).")}},(args,extra)=>textOrError(()=>getTaskKind(target.serverAddress,resolveToken(extra,target.apiKey),args.kind))),["get_task_kind_registry","get_task_kind"]}async function getTaskKindRegistry(serverAddress,token){return withClient(TaskKindRegistryQueryController,serverAddress,token,async(client,callOptions)=>{try{let resp=await client.getTaskKindRegistry({},callOptions);return toProtoJson(GetTaskKindRegistryResponseSchema,resp)}catch(err){throw rpcError(err,"task kind registry")}})}async function getTaskKind(serverAddress,token,kind){if(kind==="")throw new Error("kind is required");return withClient(TaskKindRegistryQueryController,serverAddress,token,async(client,callOptions)=>{let resp;try{resp=await client.getTaskKindRegistry({},callOptions)}catch(err){throw rpcError(err,"task kind registry")}let normalized=kind.trim().toLowerCase();for(let desc of resp.descriptors)if((WorkflowTaskKind[desc.kind]??"").toLowerCase()===normalized)return toProtoJson(TaskKindDescriptorSchema,desc);throw new Error(`task kind "${kind}" not found in registry; use get_task_kind_registry to see all available kinds`)})}async function fetchWorkflow(serverAddress,token,org,slug){return withClient(WorkflowQueryController,serverAddress,token,async(client,callOptions)=>{try{let workflow=await client.getByReference({org,kind:ApiResourceKind.workflow,slug},callOptions);return toProtoJson(WorkflowSchema,workflow)}catch(err){throw rpcError(err,`workflow "${slug}" in org "${org}"`)}})}function registerWorkflowResources(server,target){return registerResource(server,target,{name:"stigmer_workflow",title:"Stigmer Workflow",description:"Full definition of a Stigmer workflow, identified by organization and slug.",template:"stigmer://workflows/{org}/{slug}",fetch:fetchWorkflow}),["stigmer_workflow"]}var file_ai_stigmer_agentic_workflow_v1_tasks_common=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvY29tbW9uLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MqfgoVT25JbnZhbGlkT3V0cHV0UG9saWN5EiEKHU9OX0lOVkFMSURfUE9MSUNZX1VOU1BFQ0lGSUVEEAASEwoPT05fSU5WQUxJRF9GQUlMEAESFAoQT05fSU5WQUxJRF9SRVRSWRACEhcKE09OX0lOVkFMSURfRkFMTEJBQ0sQA2IGcHJvdG8z"),OnInvalidOutputPolicy;(function(OnInvalidOutputPolicy2){OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_POLICY_UNSPECIFIED=0]="ON_INVALID_POLICY_UNSPECIFIED",OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_FAIL=1]="ON_INVALID_FAIL",OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_RETRY=2]="ON_INVALID_RETRY",OnInvalidOutputPolicy2[OnInvalidOutputPolicy2.ON_INVALID_FALLBACK=3]="ON_INVALID_FALLBACK"})(OnInvalidOutputPolicy||(OnInvalidOutputPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_agent_call=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvYWdlbnRfY2FsbC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIsEDChNBZ2VudENhbGxUYXNrQ29uZmlnEhsKBWFnZW50GAEgASgJQgy6SAnIAQFyBBABGH8SCwoDb3JnGAIgASgJEh8KB21lc3NhZ2UYAyABKAlCDrpIB8gBAXICEAHYhSwBEk8KA2VudhgEIAMoCzJCLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5BZ2VudENhbGxUYXNrQ29uZmlnLkVudkVudHJ5EkoKBmNvbmZpZxgFIAEoCzI6LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5BZ2VudEV4ZWN1dGlvbkNvbmZpZxJNCgZvdXRwdXQYBiABKAsyPS5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuQWdlbnRDYWxsT3V0cHV0Q29udHJhY3QSNwoHaGFybmVzcxgHIAEoDjImLmFpLnN0aWdtZXIuYWdlbnRpYy5zZXNzaW9uLnYxLkhhcm5lc3MaKgoIRW52RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AToO6ossCmFnZW50X2NhbGwi0gEKF0FnZW50Q2FsbE91dHB1dENvbnRyYWN0Ei8KBnNjaGVtYRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCBrpIA8gBARJPCgpvbl9pbnZhbGlkGAIgASgOMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLk9uSW52YWxpZE91dHB1dFBvbGljeRIeCgttYXhfcmV0cmllcxgDIAEoBUIJukgGGgQYBSgBEhUKDWZhbGxiYWNrX3Rhc2sYBCABKAki3AEKFEFnZW50RXhlY3V0aW9uQ29uZmlnEg0KBW1vZGVsGAEgASgJEhsKB3RpbWVvdXQYAiABKAVCCrpIBxoFGJAcKAESJAoLdGVtcGVyYXR1cmUYAyABKAJCD7pIDAoKHQAAgD8tAAAAABJZChJjb250ZXh0X21hbmFnZW1lbnQYBCABKAsyPS5haS5zdGlnbWVyLmFnZW50aWMuYWdlbnRleGVjdXRpb24udjEuQ29udGV4dE1hbmFnZW1lbnRDb25maWcSFwoPbWF4X2Nvc3RfbWljcm9zGAUgASgDYgZwcm90bzM",[file_ai_stigmer_agentic_agentexecution_v1_spec,file_ai_stigmer_agentic_session_v1_enum,file_ai_stigmer_agentic_workflow_v1_tasks_common,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),AgentCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_agent_call,0),AgentCallOutputContractSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_agent_call,1),AgentExecutionConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_agent_call,2);var file_ai_stigmer_agentic_workflow_v1_tasks_call_activity=fileDesc("CjhhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvY2FsbF9hY3Rpdml0eS5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzInEKFkNhbGxBY3Rpdml0eVRhc2tDb25maWcSHAoIYWN0aXZpdHkYASABKAlCCrpIB8gBAXICEAESJgoFaW5wdXQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OhHqiywNYWN0aXZpdHlfY2FsbGIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),CallActivityTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_call_activity,0);var file_ai_stigmer_agentic_workflow_v1_tasks_emit_event=fileDesc("CjVhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZW1pdF9ldmVudC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIoABCg1FbWl0RXZlbnRTcGVjEhsKBHR5cGUYASABKAlCDbpICsgBAXIFEAEY/wESFAoGc291cmNlGAIgASgJQgTYhSwBEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhUKB3N1YmplY3QYBCABKAlCBNiFLAEicQoTRW1pdEV2ZW50VGFza0NvbmZpZxJKCgVldmVudBgBIAEoCzIzLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5FbWl0RXZlbnRTcGVjQga6SAPIAQE6DuqLLAplbWl0X2V2ZW50YgZwcm90bzM",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),EmitEventSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_emit_event,0),EmitEventTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_emit_event,1);var file_ai_stigmer_agentic_workflow_v1_tasks_eval=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZXZhbC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIlwKDUV2YWxDcml0ZXJpb24SGgoEbmFtZRgBIAEoCUIMukgJyAEBcgQQARh/Eh8KC2Rlc2NyaXB0aW9uGAIgASgJQgq6SAfIAQFyAhABEg4KBndlaWdodBgDIAEoASLIAwoORXZhbFRhc2tDb25maWcSGwoFbW9kZWwYASABKAlCDLpICcgBAXIEEAEYfxIfCgdzdWJqZWN0GAIgASgJQg66SAfIAQFyAhAB2IUsARIaCgZydWJyaWMYAyABKAlCCrpIB8gBAXICEAESSwoMc2NvcmluZ19tb2RlGAQgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkV2YWxTY29yaW5nTW9kZRIqCgl0aHJlc2hvbGQYBSABKAFCF7pIFBISGQAAAAAAAPA/KQAAAAAAAAAAEkUKB29uX2ZhaWwYBiABKA4yNC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuRXZhbEZhaWxQb2xpY3kSFQoNZmFsbGJhY2tfdGFzaxgHIAEoCRIbCg1zeXN0ZW1fcHJvbXB0GAggASgJQgTYhSwBEkUKCGNyaXRlcmlhGAkgAygLMjMuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkV2YWxDcml0ZXJpb24SFwoPbWF4X2Nvc3RfbWljcm9zGAogASgDOgjqiywEZXZhbCpxCg5FdmFsRmFpbFBvbGljeRIgChxFVkFMX0ZBSUxfUE9MSUNZX1VOU1BFQ0lGSUVEEAASEwoPRVZBTF9GQUlMX1JBSVNFEAESFAoQRVZBTF9GQUlMX0JSQU5DSBACEhIKDkVWQUxfRkFJTF9XQVJOEAMqeQoPRXZhbFNjb3JpbmdNb2RlEiEKHUVWQUxfU0NPUklOR19NT0RFX1VOU1BFQ0lGSUVEEAASEgoORVZBTF9QQVNTX0ZBSUwQARIWChJFVkFMX05VTUVSSUNfU0NPUkUQAhIXChNFVkFMX01VTFRJX0NSSVRFUklBEANiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),EvalCriterionSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_eval,0),EvalTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_eval,1),EvalFailPolicy;(function(EvalFailPolicy2){EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_POLICY_UNSPECIFIED=0]="EVAL_FAIL_POLICY_UNSPECIFIED",EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_RAISE=1]="EVAL_FAIL_RAISE",EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_BRANCH=2]="EVAL_FAIL_BRANCH",EvalFailPolicy2[EvalFailPolicy2.EVAL_FAIL_WARN=3]="EVAL_FAIL_WARN"})(EvalFailPolicy||(EvalFailPolicy={}));var EvalScoringMode;(function(EvalScoringMode2){EvalScoringMode2[EvalScoringMode2.EVAL_SCORING_MODE_UNSPECIFIED=0]="EVAL_SCORING_MODE_UNSPECIFIED",EvalScoringMode2[EvalScoringMode2.EVAL_PASS_FAIL=1]="EVAL_PASS_FAIL",EvalScoringMode2[EvalScoringMode2.EVAL_NUMERIC_SCORE=2]="EVAL_NUMERIC_SCORE",EvalScoringMode2[EvalScoringMode2.EVAL_MULTI_CRITERIA=3]="EVAL_MULTI_CRITERIA"})(EvalScoringMode||(EvalScoringMode={}));var file_ai_stigmer_agentic_workflow_v1_tasks_for=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZm9yLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MiogIKDUZvclRhc2tDb25maWcSGAoEZWFjaBgBIAEoCUIKukgHyAEBcgIQARIaCgJpbhgCIAEoCUIOukgHyAEBcgIQAdiFLAESQgoCZG8YAyADKAsyLC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEuV29ya2Zsb3dUYXNrQgi6SAWSAQIIARIgCg9tYXhfcGFyYWxsZWxpc20YBCABKAVCB7pIBBoCKAASGwoKYmF0Y2hfc2l6ZRgFIAEoBUIHukgEGgIoABJKCghvbl9lcnJvchgGIAEoDjI4LmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5Gb3JFYWNoRXJyb3JQb2xpY3k6DOqLLAhmb3JfZWFjaCp9ChJGb3JFYWNoRXJyb3JQb2xpY3kSJQohRk9SX0VBQ0hfRVJST1JfUE9MSUNZX1VOU1BFQ0lGSUVEEAASFgoSRk9SX0VBQ0hfRkFJTF9GQVNUEAESFQoRRk9SX0VBQ0hfQ09OVElOVUUQAhIRCg1GT1JfRUFDSF9TS0lQEANiBnByb3RvMw",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),ForTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_for,0),ForEachErrorPolicy;(function(ForEachErrorPolicy2){ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_ERROR_POLICY_UNSPECIFIED=0]="FOR_EACH_ERROR_POLICY_UNSPECIFIED",ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_FAIL_FAST=1]="FOR_EACH_FAIL_FAST",ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_CONTINUE=2]="FOR_EACH_CONTINUE",ForEachErrorPolicy2[ForEachErrorPolicy2.FOR_EACH_SKIP=3]="FOR_EACH_SKIP"})(ForEachErrorPolicy||(ForEachErrorPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_fork=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZm9yay5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzInkKDkZvcmtUYXNrQ29uZmlnEkwKCGJyYW5jaGVzGAEgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkZvcmtCcmFuY2hCCLpIBZIBAggCEg8KB2NvbXBldGUYAiABKAg6COqLLARmb3JrImoKCkZvcmtCcmFuY2gSGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQARJCCgJkbxgCIAMoCzIsLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS5Xb3JrZmxvd1Rhc2tCCLpIBZIBAggBYgZwcm90bzM",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),ForkTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_fork,0),ForkBranchSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_fork,1);var file_ai_stigmer_agentic_workflow_v1_tasks_grpc_call=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvZ3JwY19jYWxsLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MihgEKEkdycGNDYWxsVGFza0NvbmZpZxIbCgdzZXJ2aWNlGAEgASgJQgq6SAfIAQFyAhABEhoKBm1ldGhvZBgCIAEoCUIKukgHyAEBcgIQARIoCgdyZXF1ZXN0GAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdDoN6ossCWdycGNfY2FsbGIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),GrpcCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_grpc_call,0);var file_ai_stigmer_agentic_workflow_v1_tasks_http_call=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvaHR0cF9jYWxsLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3Mi/gIKEkh0dHBDYWxsVGFza0NvbmZpZxI3CgZtZXRob2QYASABKAlCJ7pIJMgBAXIfUgNHRVRSBFBPU1RSA1BVVFIGREVMRVRFUgVQQVRDSBJMCghlbmRwb2ludBgCIAEoCzIyLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5IdHRwRW5kcG9pbnRCBrpIA8gBARJWCgdoZWFkZXJzGAMgAygLMkUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkh0dHBDYWxsVGFza0NvbmZpZy5IZWFkZXJzRW50cnkSJQoEYm9keRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSIwoPdGltZW91dF9zZWNvbmRzGAUgASgFQgq6SAcaBRisAigBGi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBOg3qiywJaHR0cF9jYWxsIisKDEh0dHBFbmRwb2ludBIbCgN1cmkYASABKAlCDrpIB8gBAXICEAHYhSwBYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),HttpCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_http_call,0),HttpEndpointSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_http_call,1);var file_ai_stigmer_agentic_workflow_v1_tasks_human_input=fileDesc("CjZhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvaHVtYW5faW5wdXQucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyJMChFIdW1hbklucHV0T3V0Y29tZRIaCgRuYW1lGAEgASgJQgy6SAnIAQFyBBABGD8SDQoFbGFiZWwYAiABKAkSDAoEdGhlbhgDIAEoCSKnAwoUSHVtYW5JbnB1dFRhc2tDb25maWcSHgoGcHJvbXB0GAEgASgJQg66SAfIAQFyAhAB2IUsARIsCgtmb3JtX3NjaGVtYRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSSQoIb3V0Y29tZXMYAyADKAsyNy5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuSHVtYW5JbnB1dE91dGNvbWUSEQoJYXBwcm92ZXJzGAQgAygJEh0KB3RpbWVvdXQYBSABKAVCDLpICRoHGICangEoABJRCgpvbl90aW1lb3V0GAYgASgOMj0uYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLkh1bWFuSW5wdXRUaW1lb3V0UG9saWN5Eh0KFW5vdGlmaWNhdGlvbl9jaGFubmVscxgHIAMoCRInCgdwYXlsb2FkGAggASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEhgKB3VpX2hpbnQYCSABKAlCB7pIBHICGD86D+qLLAtodW1hbl9pbnB1dCrEAQoXSHVtYW5JbnB1dFRpbWVvdXRQb2xpY3kSKgomSFVNQU5fSU5QVVRfVElNRU9VVF9QT0xJQ1lfVU5TUEVDSUZJRUQQABIcChhIVU1BTl9JTlBVVF9USU1FT1VUX0ZBSUwQARIfChtIVU1BTl9JTlBVVF9USU1FT1VUX0FQUFJPVkUQAhIcChhIVU1BTl9JTlBVVF9USU1FT1VUX0RFTlkQAxIgChxIVU1BTl9JTlBVVF9USU1FT1VUX0VTQ0FMQVRFEARiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),HumanInputOutcomeSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_human_input,0),HumanInputTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_human_input,1),HumanInputTimeoutPolicy;(function(HumanInputTimeoutPolicy2){HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_POLICY_UNSPECIFIED=0]="HUMAN_INPUT_TIMEOUT_POLICY_UNSPECIFIED",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_FAIL=1]="HUMAN_INPUT_TIMEOUT_FAIL",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_APPROVE=2]="HUMAN_INPUT_TIMEOUT_APPROVE",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_DENY=3]="HUMAN_INPUT_TIMEOUT_DENY",HumanInputTimeoutPolicy2[HumanInputTimeoutPolicy2.HUMAN_INPUT_TIMEOUT_ESCALATE=4]="HUMAN_INPUT_TIMEOUT_ESCALATE"})(HumanInputTimeoutPolicy||(HumanInputTimeoutPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_listen=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvbGlzdGVuLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MiYgoQTGlzdGVuVGFza0NvbmZpZxJCCgJ0bxgBIAEoCzIuLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5MaXN0ZW5Ub0IGukgDyAEBOgrqiywGbGlzdGVuInkKCExpc3RlblRvEiAKBG1vZGUYASABKAlCErpID8gBAXIKUgNvbmVSA2FsbBJLCgdzaWduYWxzGAIgAygLMjAuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlNpZ25hbFNwZWNCCLpIBZIBAggBIlMKClNpZ25hbFNwZWMSFgoCaWQYASABKAlCCrpIB8gBAXICEAESLQoEdHlwZRgCIAEoCUIfukgcyAEBchdSBnNpZ25hbFIFcXVlcnlSBnVwZGF0ZWIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),ListenTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_listen,0),ListenToSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_listen,1),SignalSpecSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_listen,2);var file_ai_stigmer_agentic_workflow_v1_tasks_llm_call=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvbGxtX2NhbGwucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyLIAwoRTGxtQ2FsbFRhc2tDb25maWcSGwoFbW9kZWwYASABKAlCDLpICcgBAXIEEAEYfxIbCg1zeXN0ZW1fcHJvbXB0GAIgASgJQgTYhSwBEh4KBnByb21wdBgDIAEoCUIOukgHyAEBcgIQAdiFLAESMAoPcmVzcG9uc2Vfc2NoZW1hGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIkCgt0ZW1wZXJhdHVyZRgFIAEoAkIPukgMCgodAAAAQC0AAAAAEhsKCm1heF90b2tlbnMYBiABKAVCB7pIBBoCKAESGwoHdGltZW91dBgHIAEoBUIKukgHGgUY2AQoARJPCgpvbl9pbnZhbGlkGAggASgOMjsuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLk9uSW52YWxpZE91dHB1dFBvbGljeRIeCgttYXhfcmV0cmllcxgJIAEoBUIJukgGGgQYBSgBEhUKDWZhbGxiYWNrX3Rhc2sYCiABKAkSFwoPbWF4X2Nvc3RfbWljcm9zGAsgASgDEhgKEG1heF90b3RhbF90b2tlbnMYDCABKAM6DOqLLAhsbG1fY2FsbGIGcHJvdG8z",[file_ai_stigmer_agentic_workflow_v1_tasks_common,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),LlmCallTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_llm_call,0);var file_ai_stigmer_agentic_workflow_v1_tasks_notification=fileDesc("CjdhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvbm90aWZpY2F0aW9uLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MivQIKFk5vdGlmaWNhdGlvblRhc2tDb25maWcSHQoHY2hhbm5lbBgBIAEoCUIMukgJyAEBcgQQARg/EhwKCnJlY2lwaWVudHMYAiADKAlCCLpIBZIBAggBEhUKB3N1YmplY3QYAyABKAlCBNiFLAESHAoEYm9keRgEIAEoCUIOukgHyAEBcgIQAdiFLAESEAoIdGVtcGxhdGUYBSABKAkSXAoIbWV0YWRhdGEYBiADKAsySi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuTm90aWZpY2F0aW9uVGFza0NvbmZpZy5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AToQ6ossDG5vdGlmaWNhdGlvbmIGcHJvdG8z",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),NotificationTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_notification,0);var file_ai_stigmer_agentic_workflow_v1_tasks_raise=fileDesc("CjBhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvcmFpc2UucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyJiCg9SYWlzZVRhc2tDb25maWcSHQoFZXJyb3IYASABKAlCDrpIB8gBAXICEAHYhSwBEh8KB21lc3NhZ2UYAiABKAlCDrpIB8gBAXICEAHYhSwBOg/qiywLcmFpc2VfZXJyb3JiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),RaiseTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_raise,0);var file_ai_stigmer_agentic_workflow_v1_tasks_run=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvcnVuLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MiZwoNUnVuVGFza0NvbmZpZxIcCgh3b3JrZmxvdxgBIAEoCUIKukgHyAEBcgIQARImCgVpbnB1dBgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Q6EOqLLAxydW5fd29ya2Zsb3diBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),RunTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_run,0);var file_ai_stigmer_agentic_workflow_v1_tasks_set=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvc2V0LnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MirgEKDVNldFRhc2tDb25maWcSXQoJdmFyaWFibGVzGAEgAygLMkIuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlNldFRhc2tDb25maWcuVmFyaWFibGVzRW50cnlCBrpIA8gBARowCg5WYXJpYWJsZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBOgzqiywIc2V0X3ZhcnNiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),SetTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_set,0);var file_ai_stigmer_agentic_workflow_v1_tasks_switch=fileDesc("CjFhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvc3dpdGNoLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MibgoQU3dpdGNoVGFza0NvbmZpZxJJCgVjYXNlcxgBIAMoCzIwLmFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcy5Td2l0Y2hDYXNlQgi6SAWSAQIIAToP6ossC3N3aXRjaF9jYXNlIk4KClN3aXRjaENhc2USGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQARIMCgR3aGVuGAIgASgJEhgKBHRoZW4YAyABKAlCCrpIB8gBAXICEAFiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),SwitchTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_switch,0),SwitchCaseSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_switch,1);var file_ai_stigmer_agentic_workflow_v1_tasks_transform=fileDesc("CjRhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvdHJhbnNmb3JtLnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MirwEKE1RyYW5zZm9ybVRhc2tDb25maWcSVAoGZW5naW5lGAEgASgOMjUuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlRyYW5zZm9ybUVuZ2luZUINukgKyAEBggEEEAEgABIeCgpleHByZXNzaW9uGAIgASgJQgq6SAfIAQFyAhABEhMKBWlucHV0GAMgASgJQgTYhSwBOg3qiywJdHJhbnNmb3JtKokBCg9UcmFuc2Zvcm1FbmdpbmUSIAocVFJBTlNGT1JNX0VOR0lORV9VTlNQRUNJRklFRBAAEhcKE1RSQU5TRk9STV9FTkdJTkVfSlEQARIcChhUUkFOU0ZPUk1fRU5HSU5FX0pTT05BVEEQAhIdChlUUkFOU0ZPUk1fRU5HSU5FX1RFTVBMQVRFEANiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),TransformTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_transform,0),TransformEngine;(function(TransformEngine2){TransformEngine2[TransformEngine2.UNSPECIFIED=0]="UNSPECIFIED",TransformEngine2[TransformEngine2.JQ=1]="JQ",TransformEngine2[TransformEngine2.JSONATA=2]="JSONATA",TransformEngine2[TransformEngine2.TEMPLATE=3]="TEMPLATE"})(TransformEngine||(TransformEngine={}));var file_ai_stigmer_agentic_workflow_v1_tasks_try=fileDesc("Ci5haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvdHJ5LnByb3RvEiRhaS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MipAEKDVRyeVRhc2tDb25maWcSQwoDdHJ5GAEgAygLMiwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0IIukgFkgECCAESPwoFY2F0Y2gYAiABKAsyMC5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuQ2F0Y2hCbG9jazoN6ossCXRyeV9jYXRjaCJwCgpDYXRjaEJsb2NrEgoKAmFzGAEgASgJEkIKAmRvGAIgAygLMiwuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLldvcmtmbG93VGFza0IIukgFkgECCAESEgoKY29tcGVuc2F0ZRgDIAEoCGIGcHJvdG8z",[file_ai_stigmer_agentic_workflow_v1_spec,file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate]),TryTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_try,0),CatchBlockSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_try,1);var file_ai_stigmer_agentic_workflow_v1_tasks_validate=fileDesc("CjNhaS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3MvdmFsaWRhdGUucHJvdG8SJGFpLnN0aWdtZXIuYWdlbnRpYy53b3JrZmxvdy52MS50YXNrcyJnCg5WYWxpZGF0aW9uUnVsZRIaCgRuYW1lGAEgASgJQgy6SAnIAQFyBBABGH8SIgoKZXhwcmVzc2lvbhgCIAEoCUIOukgHyAEBcgIQAdiFLAESFQoHbWVzc2FnZRgDIAEoCUIE2IUsASKTAgoSVmFsaWRhdGVUYXNrQ29uZmlnEh0KBWlucHV0GAEgASgJQg66SAfIAQFyAhAB2IUsARInCgZzY2hlbWEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EkMKBXJ1bGVzGAMgAygLMjQuYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzLlZhbGlkYXRpb25SdWxlEksKB29uX2ZhaWwYBCABKA4yOi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuVmFsaWRhdGlvbkZhaWxQb2xpY3kSFQoNZmFsbGJhY2tfdGFzaxgFIAEoCToM6ossCHZhbGlkYXRlKo8BChRWYWxpZGF0aW9uRmFpbFBvbGljeRImCiJWQUxJREFUSU9OX0ZBSUxfUE9MSUNZX1VOU1BFQ0lGSUVEEAASGQoVVkFMSURBVElPTl9GQUlMX1JBSVNFEAESGgoWVkFMSURBVElPTl9GQUlMX0JSQU5DSBACEhgKFFZBTElEQVRJT05fRkFJTF9XQVJOEANiBnByb3RvMw",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_struct]),ValidationRuleSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_validate,0),ValidateTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_validate,1),ValidationFailPolicy;(function(ValidationFailPolicy2){ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_POLICY_UNSPECIFIED=0]="VALIDATION_FAIL_POLICY_UNSPECIFIED",ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_RAISE=1]="VALIDATION_FAIL_RAISE",ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_BRANCH=2]="VALIDATION_FAIL_BRANCH",ValidationFailPolicy2[ValidationFailPolicy2.VALIDATION_FAIL_WARN=3]="VALIDATION_FAIL_WARN"})(ValidationFailPolicy||(ValidationFailPolicy={}));var file_ai_stigmer_agentic_workflow_v1_tasks_wait=fileDesc("Ci9haS9zdGlnbWVyL2FnZW50aWMvd29ya2Zsb3cvdjEvdGFza3Mvd2FpdC5wcm90bxIkYWkuc3RpZ21lci5hZ2VudGljLndvcmtmbG93LnYxLnRhc2tzIowCCghEdXJhdGlvbhIMCgRkYXlzGAEgASgNEg0KBWhvdXJzGAIgASgNEg8KB21pbnV0ZXMYAyABKA0SDwoHc2Vjb25kcxgEIAEoDRIUCgxtaWxsaXNlY29uZHMYBSABKA06qgG6SKYBGqMBChFkdXJhdGlvbi5ub25femVybxIsYXQgbGVhc3Qgb25lIGR1cmF0aW9uIGZpZWxkIG11c3QgYmUgbm9uLXplcm8aYHRoaXMuZGF5cyA+IDAgfHwgdGhpcy5ob3VycyA+IDAgfHwgdGhpcy5taW51dGVzID4gMCB8fCB0aGlzLnNlY29uZHMgPiAwIHx8IHRoaXMubWlsbGlzZWNvbmRzID4gMCKYAQoOV2FpdFRhc2tDb25maWcSQgoIZHVyYXRpb24YASABKAsyLi5haS5zdGlnbWVyLmFnZW50aWMud29ya2Zsb3cudjEudGFza3MuRHVyYXRpb25IABIrCgV1bnRpbBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIADoI6ossBHdhaXRCCwoJd2FpdF90eXBlYgZwcm90bzM",[file_ai_stigmer_commons_apiresource_field_options,file_buf_validate_validate,file_google_protobuf_timestamp]),DurationSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_wait,0),WaitTaskConfigSchema=messageDesc2(file_ai_stigmer_agentic_workflow_v1_tasks_wait,1);var WorkflowInputShape={name:external_exports.string().describe("Human-readable name of the resource."),slug:external_exports.string().optional().describe("URL-friendly identifier (lowercase alphanumeric with hyphens). Auto-generated from name if omitted."),org:external_exports.string().describe("Organization that owns this resource (e.g. acme)."),visibility:external_exports.string().optional().describe("Resource visibility: PRIVATE or PUBLIC. Omit to leave unchanged on updates."),labels:external_exports.record(external_exports.string()).optional().describe("Key-value labels for organization and filtering."),tags:external_exports.array(external_exports.string()).optional().describe("Tags for categorization and discovery."),description:external_exports.string().optional().describe("Human-readable description for UI and marketplace display."),document:external_exports.lazy(()=>WorkflowDocumentInputSchema).describe("Workflow document metadata including DSL version, namespace, name, and version."),tasks:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Ordered list of tasks that make up this workflow. Tasks execute sequentially unless fork/parallel is used."),env:external_exports.record(external_exports.lazy(()=>EnvVarDeclarationInputSchema3)).optional().describe("Environment variable declarations for this workflow. Keys are variable names; values describe their metadata and optionality."),budget:external_exports.lazy(()=>WorkflowBudgetInputSchema).optional().describe("Budget limits for this workflow execution. When set, the runtime (T13) enforces cost, token, and duration limits across all tasks. The existing org-level billing reservation system (AuthorizeExecution / ExecutionBillingSignal) remains the safety net for overall credit exhaustion; workflow budgets prevent individual workflows from consuming more than intended. Optional \u2014 when not set, no workflow-level budget is enforced.")},WorkflowInputSchema=external_exports.object(WorkflowInputShape),WorkflowDocumentInputSchema=external_exports.object({dsl:external_exports.string().optional().describe("Workflow DSL version (semver). Must be '1.0.0' for the current specification."),namespace:external_exports.string().describe("Workflow namespace (organization/categorization)."),name:external_exports.string().describe("Workflow name (unique identifier within namespace)."),version:external_exports.string().describe("Workflow version (semver)."),description:external_exports.string().optional().describe("Human-readable description.")}),ContextManagementConfigInputSchema=external_exports.object({disable_summarization:external_exports.boolean().optional().describe("Disable automatic context summarization for this execution. When true, the agent will never trigger automatic summarization, even if the context window approaches the model's limit. Use cases: - Short-lived executions that won't approach context limits - Debugging context-related issues - Workflows that manage their own context externally Warning: Disabling summarization may cause execution failure if context exceeds model limits. Default: false (summarization enabled based on model defaults)"),custom_trigger_threshold:external_exports.number().optional().describe("Custom token threshold to trigger summarization. When the context token count exceeds this threshold, summarization is triggered to reduce context size. Set to 0 to use model default. The default trigger threshold from Model Registry is typically 90% of the model's context window (e.g., 180K for 200K context models). Must be greater than custom_target_tokens if both are specified. Default: 0 (use model default from Model Registry)"),custom_target_tokens:external_exports.number().optional().describe("Custom target token count after summarization. Summarization aims to reduce context to approximately this size. Set to 0 to use model default. The default target from Model Registry is typically 80% of the model's context window (e.g., 160K for 200K context models). Must be less than custom_trigger_threshold if both are specified. Default: 0 (use model default from Model Registry)")}),AgentExecutionConfigInputSchema=external_exports.object({model:external_exports.string().optional().describe("LLM model to use for this invocation. Example: 'claude-3-5-sonnet', 'gpt-4', 'claude-3-opus' Optional - uses agent's default model if not specified."),timeout:external_exports.number().optional().describe("Timeout for agent execution in seconds. Default: 300 (5 minutes) Optional."),temperature:external_exports.number().optional().describe("Temperature for LLM sampling (0.0 to 1.0). Lower = more deterministic, Higher = more creative Default: 0.7 Optional."),context_management:external_exports.lazy(()=>ContextManagementConfigInputSchema).optional().describe("Context management configuration for this agent invocation. Controls automatic summarization behavior for long-running conversations. When specified, overrides model defaults from the Model Registry. @internal @since Phase 3 (Context Summarization Architecture) Use cases: - Disable summarization for short-lived agents - Custom thresholds for agents with specific context requirements - Fine-tune summarization behavior per workflow task Example YAML: config: model: 'claude-sonnet-4.5' context_management: custom_trigger_threshold: 150000 custom_target_tokens: 120000"),max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-agent-call cost cap in micro-USD (1 USD = 1,000,000 micros). When set, the runtime terminates this agent call if its accumulated cost exceeds this limit. This uses the workflow domain's micro-USD convention and provides per-task cost control at the workflow level. The runtime checks both: per-task limit first, then workflow remaining budget. Optional \u2014 when 0, no per-task cost limit is enforced. @since T05 (Workflow-Level Budget Primitives)")}),AgentCallOutputContractInputSchema=external_exports.object({schema:external_exports.record(external_exports.unknown()).describe("JSON Schema that the agent's structured output must conform to. Standard JSON Schema (draft 2020-12 or compatible). The workflow runner extracts JSON from the agent's final response and validates it against this schema. If validation fails, the on_invalid policy determines what happens next. The schema is carried as a google.protobuf.Struct to preserve the existing kind+Struct envelope pattern and allow YAML authors to write standard JSON Schema inline without a Stigmer-specific schema language."),on_invalid:external_exports.string().optional().describe("Policy when agent output fails schema validation. Default: ON_INVALID_FAIL (task fails immediately). Allowed values: ON_INVALID_FAIL, ON_INVALID_RETRY, ON_INVALID_FALLBACK."),max_retries:external_exports.number().optional().describe("Maximum retry attempts when on_invalid is ON_INVALID_RETRY. Each retry re-prompts the agent with the specific validation errors and the expected schema, giving the agent an opportunity to self-correct. Only meaningful when on_invalid is ON_INVALID_RETRY; ignored otherwise. Default: 1. Valid range: 1-5."),fallback_task:external_exports.string().optional().describe("Target task to branch to when schema validation cannot be resolved. Used in two scenarios: 1. on_invalid is ON_INVALID_RETRY and all retries are exhausted 2. on_invalid is ON_INVALID_FALLBACK (immediate branch, no retry) Must reference a valid task name in the same workflow. When empty and retries are exhausted, the task fails.")}),AgentCallTaskConfigInputSchema=external_exports.object({agent:external_exports.string().describe("Agent reference in 'org/slug' or 'slug' format. - 'slug' only: uses the workflow's organization - 'org/slug': explicit organization reference Examples: 'code-reviewer', 'stigmer/code-reviewer', 'acme/data-analyst' Required field."),org:external_exports.string().optional().describe("Explicit organization for agent resolution. Optional. If empty, the org is parsed from the agent field or defaults to workflow's org. Use this when you need to override the parsed org."),message:external_exports.string().describe("Instructions/prompt to send to the agent. Supports interpolation of workflow variables using JQ expressions. Example: 'Analyze this code: ${ $context.fetchCode.body }' Required field."),env:external_exports.record(external_exports.string()).optional().describe("Runtime environment variables to pass to the agent. Values can be literal strings or JQ expressions that reference workflow context or secrets. Example: {'GITHUB_TOKEN': '${ .secrets.GH_TOKEN }'} Optional."),config:external_exports.lazy(()=>AgentExecutionConfigInputSchema).optional().describe("Execution configuration for the agent invocation. Optional - defaults are applied if not specified."),output:external_exports.lazy(()=>AgentCallOutputContractInputSchema).optional().describe("Structured output contract for this agent call. When set, the workflow runner extracts structured JSON from the agent's final response and validates it against the declared schema. The validated JSON is placed in the task output under the 'structured' key, enabling reliable downstream routing via switch_case expressions. When not set, the task output contains the agent's raw text response (backward compatible with existing workflows). @since T02 (Structured Agent Output Model)"),harness:external_exports.string().optional().describe("Execution harness for the agent invocation. Determines which execution engine processes the agent call: - HARNESS_UNSPECIFIED / HARNESS_NATIVE: Stigmer native engine (Python/LangGraph) - HARNESS_CURSOR: Cursor SDK engine (TypeScript/Cursor) The workflow-runner creates a Session with this harness before creating the AgentExecution. The harness is a session-level concern \u2014 it determines tool availability, state management, model access, and billing tier. When unspecified, defaults to HARNESS_NATIVE for backward compatibility. YAML Example: - code_review: call: agent with: agent: 'code-reviewer' harness: cursor message: 'Review this PR' Allowed values: HARNESS_NATIVE, HARNESS_CURSOR.")}),CallActivityTaskConfigInputSchema=external_exports.object({activity:external_exports.string().describe("Activity name to execute. @internal Must match a registered Temporal activity."),input:external_exports.record(external_exports.unknown()).optional().describe("Activity input (optional). Can be any JSON structure. Supports expressions in string values.")}),EmitEventInputSchema=external_exports.object({type:external_exports.string().describe("CloudEvents type identifier. A reverse-DNS string that categorizes the event for routing and filtering. Examples: 'stigmer.workflow.ticket.classified', 'acme.order.completed'"),source:external_exports.string().optional().describe("CloudEvents source identifier. URI or URI-reference that identifies the context in which the event happened. Supports ${ } expression interpolation. When empty, the runtime defaults to the workflow execution URI (e.g., '/workflows/{workflow_id}/executions/{execution_id}')."),data:external_exports.record(external_exports.unknown()).optional().describe("Event payload data. Arbitrary JSON object carried as the CloudEvents data attribute. Values within the Struct can contain ${ } expressions that the runtime evaluates before emission. Unlike other Struct fields in the workflow domain (response_schema, form_schema, schema) which carry JSON Schema definitions, this field carries the actual event payload \u2014 not a schema."),subject:external_exports.string().optional().describe("CloudEvents subject identifier. Describes the subject of the event in the context of the event producer. Supports ${ } expression interpolation. Examples: '${ $context.ticket.id }', '${ $context.order.number }'")}),EmitEventTaskConfigInputSchema=external_exports.object({event:external_exports.lazy(()=>EmitEventInputSchema).describe("The event specification to emit. Contains the CloudEvents envelope fields (type, source, data, subject). Required field.")}),EvalCriterionInputSchema=external_exports.object({name:external_exports.string().describe("Name of this evaluation dimension. Used in the judge prompt and appears in the output. Examples: 'accuracy', 'completeness', 'safety', 'relevance'"),description:external_exports.string().describe("Description of what this criterion measures. Included in the judge prompt to guide the LLM's assessment. Example: 'Does the response accurately reflect the source data without hallucinations?'"),weight:external_exports.number().optional().describe("Relative weight for computing the weighted average overall score. When all weights are equal (or all zero), criteria are averaged uniformly. Example: accuracy=3.0, formatting=1.0 means accuracy counts 3x more.")}),EvalTaskConfigInputSchema=external_exports.object({model:external_exports.string().describe("LLM model used as the judge. Resolved via the Stigmer model registry. Examples: 'gpt-4o', 'claude-sonnet-4-5'"),subject:external_exports.string().describe("Expression selecting the data to evaluate. Supports ${ } expression interpolation. Example: '${ $context.summarize.text }' to evaluate a summary task's output."),rubric:external_exports.string().describe("Evaluation criteria in natural language. Tells the judge LLM what to assess and what 'good' looks like. For pass_fail: describe what constitutes a pass. For numeric_score: describe the scoring scale. For multi_criteria: provide overall context (per-criterion detail goes in criteria field)."),scoring_mode:external_exports.string().optional().describe("How the judge scores the subject. Default: EVAL_PASS_FAIL. Allowed values: EVAL_PASS_FAIL, EVAL_NUMERIC_SCORE, EVAL_MULTI_CRITERIA."),threshold:external_exports.number().optional().describe("Pass threshold for numeric_score and multi_criteria modes. The subject passes if score >= threshold. Ignored for pass_fail mode (the judge's binary decision is used directly). Valid range: 0.0 to 1.0. Default: 0.5."),on_fail:external_exports.string().optional().describe("Policy applied when the subject fails evaluation. Default: EVAL_FAIL_RAISE (task fails with evaluation error). Allowed values: EVAL_FAIL_RAISE, EVAL_FAIL_BRANCH, EVAL_FAIL_WARN."),fallback_task:external_exports.string().optional().describe("Target task to branch to when on_fail is EVAL_FAIL_BRANCH. Must reference a valid task name in the same workflow. Only meaningful when on_fail is EVAL_FAIL_BRANCH; ignored otherwise."),system_prompt:external_exports.string().optional().describe("Optional custom system prompt override for the judge LLM. When set, replaces the auto-generated judge system prompt entirely. Use only when the default judge prompt template does not fit your needs. When empty, the runtime constructs a judge-appropriate system prompt from the rubric, scoring_mode, and criteria."),criteria:external_exports.array(external_exports.lazy(()=>EvalCriterionInputSchema)).optional().describe("Evaluation criteria for multi_criteria mode. Required when scoring_mode is EVAL_MULTI_CRITERIA; ignored otherwise. Each criterion is scored independently, and the overall score is the weighted average (uniform if all weights are equal or zero)."),max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-task cost cap in micro-USD (1 USD = 1,000,000 micros). When set, the runtime terminates this eval call if its cost exceeds this limit, independent of the workflow-level budget. Optional \u2014 when 0, no per-task cost limit is enforced. @since T05 (Workflow-Level Budget Primitives)")}),ForTaskConfigInputSchema=external_exports.lazy(()=>external_exports.object({each:external_exports.string().describe("Variable name for each item in the iteration. Accessible via ${ $data.item } in expressions."),in:external_exports.string().describe("Expression evaluating to the collection to iterate over. Example: '${ $data.items }' or '${ [1, 2, 3] }'"),do:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to execute for each iteration. Loop variables available: ${ $data.item }, ${ $data.index }"),max_parallelism:external_exports.number().optional().describe("Maximum number of iterations to execute concurrently. 0 (default): sequential execution \u2014 iterations run one at a time in input order. This preserves pre-T17 behavior. 1: effectively sequential (one at a time, but uses the parallel execution path \u2014 useful for testing). N > 1: up to N iterations run concurrently using Temporal workflow goroutines with a semaphore-based concurrency limiter. Results are always reassembled in original input order regardless of completion order. @since T17 (Advanced Agentic Orchestration)"),batch_size:external_exports.number().optional().describe("Number of items to process in each batch before moving to the next. 0 (default): no batching \u2014 all items are available for parallel execution (up to max_parallelism concurrent). N > 0: items are chunked into groups of N. Each chunk is fully processed before the next chunk begins. Within each chunk, up to max_parallelism iterations run concurrently. Only meaningful when max_parallelism > 0; ignored in sequential mode. @since T17 (Advanced Agentic Orchestration)"),on_error:external_exports.string().optional().describe("Policy for handling individual iteration failures. Default: FOR_EACH_FAIL_FAST (stop on first error). Only meaningful when max_parallelism > 0; in sequential mode, any failure stops the loop regardless of this setting (pre-T17 behavior). @since T17 (Advanced Agentic Orchestration) Allowed values: FOR_EACH_FAIL_FAST, FOR_EACH_CONTINUE, FOR_EACH_SKIP.")})),ForkBranchInputSchema=external_exports.lazy(()=>external_exports.object({name:external_exports.string().describe("Branch name/identifier."),do:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to execute in this branch.")})),ForkTaskConfigInputSchema=external_exports.lazy(()=>external_exports.object({branches:external_exports.array(external_exports.lazy(()=>ForkBranchInputSchema)).optional().describe("Branches to execute in parallel (at least 2 required)."),compete:external_exports.boolean().optional().describe("If true, first branch to complete wins (race mode). If false, all branches must complete (default).")})),GrpcCallTaskConfigInputSchema=external_exports.object({service:external_exports.string().describe("Fully qualified service name. Example: 'com.example.UserService'"),method:external_exports.string().describe("Method name to call. Example: 'GetUser'"),request:external_exports.record(external_exports.unknown()).optional().describe("Request message (optional). Can be any JSON structure matching the proto schema. Supports expressions in string values.")}),HttpEndpointInputSchema=external_exports.object({uri:external_exports.string().describe("URI of the endpoint. Can contain expressions: 'https://api.example.com/${.resource}'")}),HttpCallTaskConfigInputSchema=external_exports.object({method:external_exports.string().describe("HTTP method (GET, POST, PUT, DELETE, PATCH). Allowed values: GET, POST, PUT, DELETE, PATCH."),endpoint:external_exports.lazy(()=>HttpEndpointInputSchema).describe("HTTP endpoint configuration."),headers:external_exports.record(external_exports.string()).optional().describe("HTTP headers (optional). Values can contain expressions: 'Bearer ${TOKEN}'"),body:external_exports.record(external_exports.unknown()).optional().describe("Request body (optional). Can be any JSON structure. Supports expressions in string values."),timeout_seconds:external_exports.number().optional().describe("Request timeout in seconds (optional, default: 30).")}),HumanInputOutcomeInputSchema=external_exports.object({name:external_exports.string().describe("Outcome identifier used in task output and routing. Examples: 'approve', 'deny', 'needs_revision', 'escalate', 'defer' Must be unique within the outcomes list."),label:external_exports.string().optional().describe("Human-readable label for the button/action in the approval UI. When empty, the UI displays the capitalized name. Examples: 'Approve Escalation', 'Reject \u2014 Not Customer-Impacting'"),then:external_exports.string().optional().describe("Task to branch to when this outcome is selected. Must reference a valid task name in the same workflow. When empty, the workflow continues to the next task in sequence.")}),HumanInputTaskConfigInputSchema=external_exports.object({prompt:external_exports.string().describe("Message shown to the reviewer explaining what needs approval or input. Supports ${ } expression interpolation for injecting workflow context. Example: 'Approve escalation for ticket ${ $context.ticket.id }?'"),form_schema:external_exports.record(external_exports.unknown()).optional().describe("JSON Schema defining the input form rendered to the reviewer. When set, the approval UI renders a typed form based on this schema. The reviewer's form response is validated against the schema before the task completes, and the validated data appears in the task output under the 'form_data' key. When not set, the reviewer sees only the outcome buttons (approve/deny or custom outcomes) without a data entry form. Uses the same google.protobuf.Struct + JSON Schema pattern as AgentCallOutputContract.schema and LlmCallTaskConfig.response_schema."),outcomes:external_exports.array(external_exports.lazy(()=>HumanInputOutcomeInputSchema)).optional().describe("Named outcomes that the reviewer can select. Each outcome represents a decision the reviewer can make, with optional routing to a different downstream task. This enables rich branching beyond binary approve/deny. When empty, the task defaults to binary behavior: - 'approve': task completes, workflow continues to next task - 'deny': task fails (enters try_catch or EXECUTION_FAILED) When custom outcomes are defined, the first outcome is used as the default for HUMAN_INPUT_TIMEOUT_APPROVE, and the last outcome is used as the default for HUMAN_INPUT_TIMEOUT_DENY."),approvers:external_exports.array(external_exports.string()).optional().describe("Approver identifiers \u2014 who is allowed to respond to this task. Supports user IDs, team slugs, and role names. Format examples: - 'user:jane@acme.com' \u2014 specific user - 'team:engineering-leads' \u2014 any member of the team - 'role:content-admin' \u2014 any user with the role When empty, any authenticated user can respond. Resolution of these identifiers is a runtime concern (T13)."),timeout:external_exports.number().optional().describe("Timeout in seconds before the on_timeout policy applies. Default: 0 (no timeout \u2014 the task waits indefinitely). Max: 2592000 (30 days). A timeout of 0 means the workflow will wait until a human responds. For production workflows, setting a timeout with an appropriate on_timeout policy is strongly recommended."),on_timeout:external_exports.string().optional().describe("Policy applied when the timeout expires without a response. Only meaningful when timeout > 0; ignored when timeout is 0. Default: HUMAN_INPUT_TIMEOUT_FAIL (task fails with timeout error). Allowed values: HUMAN_INPUT_TIMEOUT_FAIL, HUMAN_INPUT_TIMEOUT_APPROVE, HUMAN_INPUT_TIMEOUT_DENY, HUMAN_INPUT_TIMEOUT_ESCALATE."),notification_channels:external_exports.array(external_exports.string()).optional().describe("Channel identifiers for sending approval request notifications. When the task starts, the runtime sends notifications through these channels to alert potential approvers. Format examples: - 'slack:#approvals' \u2014 Slack channel - 'email:ops@acme.com' \u2014 email address - 'teams:#incident-response' \u2014 Microsoft Teams channel The format and routing of notifications is a runtime concern (T13). The proto carries the identifiers; the runtime resolves them to actual notification providers configured in the workflow instance's environment."),payload:external_exports.unknown().optional().describe("Structured material for the reviewer to examine before deciding. Supports ${ } expression interpolation: the whole value can be a single expression string ('${ $context.draft_revision }') or an inline object/array whose nested strings carry embedded expressions. The runtime resolves expressions when the gate activates and attaches the resolved payload to the approval_requested event, so the approval record is permanently bound to exactly what the reviewer saw. Distinct from prompt (the instruction to the reviewer) and form_schema (the shape of the reviewer's response): payload is the thing under review \u2014 an article diff, a proposed record set, a generated plan. @internal Resolved payloads at or above the artifact promotion threshold (256KB) are stored in the artifact store; the approval_requested event then carries payload_artifact_id instead of the inline value. See ApprovalRequestedPayload in workflowexecution/v1/event.proto. Expression support is documented here rather than via the is_expression option, which annotates string fields only \u2014 matching how other Struct/Value-typed expression-bearing configs are handled. @since Review Payloads (stigmer/stigmer#234)"),ui_hint:external_exports.string().optional().describe("Hint identifying which UI should present the payload. A plain discriminator string (e.g. 'article-diff', 'infra-proposal') that embedding applications match against their registered review renderers. When no renderer is registered for the hint \u2014 or the gate is viewed from a surface without custom renderers (CLI, plain console) \u2014 the payload is shown as structured data by the built-in approval card, so workflows stay portable across surfaces. @internal Deliberately a hint, not a contract: an unrecognized value must never block the gate. Not expression-valued \u2014 the hint is workflow design, not runtime data. @since Review Payloads (stigmer/stigmer#234)")}),SignalInputSchema=external_exports.object({id:external_exports.string().describe("Signal identifier."),type:external_exports.string().describe("Signal type: 'signal', 'query', or 'update'. Allowed values: signal, query, update.")}),ListenToInputSchema=external_exports.object({mode:external_exports.string().describe("Listening mode: - 'one': Wait for any one signal - 'all': Wait for all signals Allowed values: one, all."),signals:external_exports.array(external_exports.lazy(()=>SignalInputSchema)).optional().describe("Signals to listen for.")}),ListenTaskConfigInputSchema=external_exports.object({to:external_exports.lazy(()=>ListenToInputSchema).describe("Signal listening configuration.")}),LlmCallTaskConfigInputSchema=external_exports.object({model:external_exports.string().describe("Model reference resolved via the Stigmer model registry. Examples: 'gpt-4o', 'gpt-4o-mini', 'claude-sonnet-4-5', 'claude-haiku-3-5' Required field."),system_prompt:external_exports.string().optional().describe("System prompt that sets the LLM's role and constraints. Supports ${ } expression interpolation for dynamic system prompts. Optional \u2014 omit for tasks where the user prompt is self-contained."),prompt:external_exports.string().describe("User prompt / instruction sent to the LLM. Supports ${ } expression interpolation for injecting workflow context. Example: 'Classify this ticket: ${ $context.ticket.description }' Required field."),response_schema:external_exports.record(external_exports.unknown()).optional().describe("JSON Schema for structured output. When set, the runner requests structured output from the provider (e.g., OpenAI's response_format, Anthropic's tool_use extraction) and validates the response against this schema. Uses the same google.protobuf.Struct + JSON Schema pattern as AgentCallOutputContract.schema for consistency across the workflow domain. When not set, the task output is the LLM's raw text response."),temperature:external_exports.number().optional().describe("Sampling temperature (0.0 to 2.0). Lower = more deterministic, higher = more creative. Range is 0.0-2.0 to accommodate all major providers (OpenAI supports up to 2.0; others clamp to their supported range at runtime). Optional \u2014 uses the provider's default when not set."),max_tokens:external_exports.number().optional().describe("Maximum tokens in the LLM response. Optional \u2014 uses the provider's default when not set."),timeout:external_exports.number().optional().describe("Timeout for the LLM call in seconds. Default: 60. Max: 600 (10 minutes). Optional."),on_invalid:external_exports.string().optional().describe("Policy when the LLM response fails schema validation. Only meaningful when response_schema is set; ignored otherwise. Default: ON_INVALID_FAIL (task fails immediately). Allowed values: ON_INVALID_FAIL, ON_INVALID_RETRY, ON_INVALID_FALLBACK."),max_retries:external_exports.number().optional().describe("Maximum schema-validation retry attempts when on_invalid is ON_INVALID_RETRY. Each retry re-prompts the LLM with the validation errors and expected schema, giving it an opportunity to self-correct. Only meaningful when on_invalid is ON_INVALID_RETRY; ignored otherwise. Default: 1. Valid range: 1-5."),fallback_task:external_exports.string().optional().describe("Target task to branch to when schema validation cannot be resolved. Used in two scenarios: 1. on_invalid is ON_INVALID_RETRY and all retries are exhausted 2. on_invalid is ON_INVALID_FALLBACK (immediate branch, no retry) Must reference a valid task name in the same workflow. When empty and retries are exhausted, the task fails."),max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-task cost cap in micro-USD (1 USD = 1,000,000 micros). When set, the runtime terminates this specific LLM call if its cost exceeds this limit, independent of the workflow-level budget. The runtime checks both: per-task limit first, then workflow remaining budget. Optional \u2014 when 0, no per-task cost limit is enforced. @since T05 (Workflow-Level Budget Primitives)"),max_total_tokens:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Per-task token cap (input + output tokens combined). When set, the runtime terminates this specific LLM call if total tokens exceed this limit. Complements max_tokens (field 6), which limits only the output token count as a generation parameter. Optional \u2014 when 0, no per-task total token limit is enforced. @since T05 (Workflow-Level Budget Primitives)")}),NotificationTaskConfigInputSchema=external_exports.object({channel:external_exports.string().describe("Notification channel identifier. Determines which notification provider processes this message. Common values: 'slack', 'email', 'discord', 'teams', 'webhook' This is a string (not an enum) for extensibility \u2014 new channels can be added without proto changes. The runtime resolves the channel to its configured provider in the workflow instance's environment."),recipients:external_exports.array(external_exports.string()).optional().describe("Recipient identifiers for the notification. Format depends on the channel: - slack: '#channel-name', '@username', or Slack user IDs - email: 'user@example.com' - discord: '#channel-name', '@role' - teams: '#channel-name' - webhook: URL or webhook identifier At least one recipient is required. Individual values may contain ${ } expressions that the runtime evaluates before delivery (e.g., '${ $context.customer.email }')."),subject:external_exports.string().optional().describe("Notification subject or title. Supports ${ } expression interpolation. Used as: email subject line, Slack message title, webhook payload title. Optional \u2014 some channels (e.g., simple Slack messages) may not use it."),body:external_exports.string().describe("Notification body / message content. Supports ${ } expression interpolation. The primary content of the notification. Formatting depends on channel (e.g., Slack Markdown, HTML for email, plain text for SMS). When template is also set, body serves as the fallback content if the template cannot be resolved."),template:external_exports.string().optional().describe("Named template reference for rendering the notification. When set, the runtime looks up this template in the workflow instance's environment and uses it for rendering, with the workflow context as template data. The body field is used as fallback if the template cannot be resolved. Examples: 'incident-alert', 'order-confirmation', 'approval-request' Template resolution and rendering is a runtime concern (T13)."),metadata:external_exports.record(external_exports.string()).optional().describe("Channel-specific metadata as key-value pairs. Provides additional configuration that varies by notification channel: - slack: {'thread_ts': '...', 'unfurl_links': 'false'} - email: {'priority': 'high', 'reply_to': '...', 'cc': '...'} - webhook: {'method': 'POST', 'content_type': 'application/json'} Values may contain ${ } expressions that the runtime evaluates before delivery.")}),RaiseTaskConfigInputSchema=external_exports.object({error:external_exports.string().describe("Error type/name."),message:external_exports.string().describe("Error message. Can contain expressions: '${ .errorMessage }'")}),RunTaskConfigInputSchema=external_exports.object({workflow:external_exports.string().describe("Sub-workflow name/identifier to execute."),input:external_exports.record(external_exports.unknown()).optional().describe("Sub-workflow input (optional). Can be any JSON structure. Supports expressions in string values.")}),SetTaskConfigInputSchema=external_exports.object({variables:external_exports.record(external_exports.string()).describe("Variables to set in workflow state. Keys are variable names, values can be literals or expressions. Expressions use ${...} syntax, e.g., '${.a + .b}' or '${now}'")}),SwitchCaseInputSchema=external_exports.object({name:external_exports.string().describe("Case name/identifier."),when:external_exports.string().optional().describe("Condition expression (optional). If empty, this is the default case. Example: '${ $context.value > 5 }'"),then:external_exports.string().describe("Target task name to execute if condition matches.")}),SwitchTaskConfigInputSchema=external_exports.object({cases:external_exports.array(external_exports.lazy(()=>SwitchCaseInputSchema)).optional().describe("List of switch cases (at least one required). Cases are evaluated in order. First matching case executes. If no 'when' is specified, the case acts as default.")}),TransformTaskConfigInputSchema=external_exports.object({engine:external_exports.string().describe("Transformation engine to use. Required \u2014 must be explicitly set (not UNSPECIFIED). Allowed values: TRANSFORM_ENGINE_JQ, TRANSFORM_ENGINE_JSONATA, TRANSFORM_ENGINE_TEMPLATE."),expression:external_exports.string().describe("Transformation expression in the chosen engine's syntax. For JQ: a JQ filter expression (e.g., '{name: .full_name}') For JSONata: a JSONata expression (e.g., '{'name': full_name}') For TEMPLATE: a Go text/template string with {{ }} placeholders Required field."),input:external_exports.string().optional().describe("Expression selecting the input data for the transformation. Supports ${ } expression interpolation. When omitted, the entire workflow context is used as input. Example: '${ $context.triage }' to transform just the triage output.")}),CatchBlockInputSchema=external_exports.lazy(()=>external_exports.object({as:external_exports.string().optional().describe("Variable name to store the error (optional). Accessible via ${ .error } in catch tasks."),do:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to execute when error is caught."),compensate:external_exports.boolean().optional().describe("Whether to run compensation tasks for already-completed try tasks before executing the catch do block. When true, the runtime walks the compensation stack (completed tasks that declared a 'compensate' block) in reverse order and executes each task's compensation actions. After all compensations complete (or fail), the catch 'do' block runs as normal. Compensation failures do not prevent the catch block from running. They are logged and included in the task output for diagnostics. Default: false (no compensation \u2014 preserves pre-T17 behavior). @since T17 (Advanced Agentic Orchestration)")})),TryTaskConfigInputSchema=external_exports.lazy(()=>external_exports.object({try:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Tasks to attempt (at least one required). If any task fails, execution jumps to catch block."),catch:external_exports.lazy(()=>CatchBlockInputSchema).optional().describe("Catch block for error handling (optional). If not provided, errors propagate to parent.")})),ValidationRuleInputSchema=external_exports.object({name:external_exports.string().describe("Rule identifier for error reporting and debugging. Appears in validation error output so operators can identify which specific rule failed. Examples: 'critical_needs_rationale', 'customer_impact_requires_high_severity'"),expression:external_exports.string().describe("Boolean expression that must evaluate to true for the rule to pass. Supports ${ } expression interpolation. The expression receives the validate task's input data as its context. Example: '${ .severity != 'critical' || (.rationale != null && .rationale != '') }'"),message:external_exports.string().optional().describe("Error message included in validation output when the rule fails. Supports ${ } expression interpolation for dynamic error messages. When empty, a generic message is generated from the rule name. Example: 'Critical severity requires a rationale'")}),ValidateTaskConfigInputSchema=external_exports.object({input:external_exports.string().describe("Expression selecting the data to validate. Supports ${ } expression interpolation. Example: '${ $context.triage }' to validate the triage task's output."),schema:external_exports.record(external_exports.unknown()).optional().describe("JSON Schema to validate the input data against. Standard JSON Schema (draft 2020-12 or compatible). The runtime validates the input data against this schema and reports detailed errors for any constraint violations. Uses the same google.protobuf.Struct + JSON Schema pattern as AgentCallOutputContract.schema, LlmCallTaskConfig.response_schema, and HumanInputTaskConfig.form_schema. At least one of schema or rules must be set."),rules:external_exports.array(external_exports.lazy(()=>ValidationRuleInputSchema)).optional().describe("Business rules to evaluate against the input data. Each rule is a boolean expression that must evaluate to true. Rules complement schema validation by expressing constraints that JSON Schema cannot: cross-field dependencies, conditional requirements, and domain-specific invariants. At least one of schema or rules must be set."),on_fail:external_exports.string().optional().describe("Policy applied when validation fails. Default: VALIDATION_FAIL_RAISE (task fails with validation error). Allowed values: VALIDATION_FAIL_RAISE, VALIDATION_FAIL_BRANCH, VALIDATION_FAIL_WARN."),fallback_task:external_exports.string().optional().describe("Target task to branch to when on_fail is VALIDATION_FAIL_BRANCH. Must reference a valid task name in the same workflow. Only meaningful when on_fail is VALIDATION_FAIL_BRANCH; ignored otherwise. When on_fail is BRANCH and fallback_task is empty, the task fails.")}),DurationInputSchema=external_exports.object({days:external_exports.number().optional().describe("Number of days to wait (24 hours each)."),hours:external_exports.number().optional().describe("Number of hours to wait."),minutes:external_exports.number().optional().describe("Number of minutes to wait."),seconds:external_exports.number().optional().describe("Number of seconds to wait."),milliseconds:external_exports.number().optional().describe("Number of milliseconds to wait.")}),WaitTaskConfigInputSchema=external_exports.object({duration:external_exports.lazy(()=>DurationInputSchema).optional().describe("Relative duration to wait from now. Use this when you want to wait for a specific amount of time regardless of when the workflow reaches this task. Example: { days: 7 } = wait 1 week from now"),until:external_exports.string().optional().describe("Absolute timestamp to wait until. Use this when you want to wait until a specific point in time. If the timestamp is in the past, the task completes immediately. Example: '2026-03-01T09:00:00Z' = wait until March 1st, 2026 at 9am UTC")}),ExportInputSchema=external_exports.object({as:external_exports.string().optional().describe("Expression defining how to export output using ${...} syntax.")}),FlowControlInputSchema=external_exports.object({then:external_exports.string().optional().describe("Target task name or 'end' to terminate workflow.")}),WorkflowTaskInputSchema=external_exports.lazy(()=>external_exports.object({name:external_exports.string().optional().describe("Task name/identifier (must be unique within workflow). Must be a valid C-style identifier: starts with a letter or underscore, followed by letters, digits, or underscores."),kind:external_exports.string().describe("Task type. Set the matching config field (e.g. kind='http_call' -> populate http_call). Allowed values: set_vars, http_call, grpc_call, activity_call, switch_case, for_each, fork, try_catch, listen, wait, raise_error, run_workflow, agent_call, llm_call, transform, human_input, validate, emit_event, notification, eval."),agent_call:external_exports.lazy(()=>AgentCallTaskConfigInputSchema).optional().describe("Required when kind='agent_call'. AgentCallTaskConfig defines the configuration for agent_call tasks that invoke AI agents. @internal The agent is referenced by org/slug format (e.g., 'stigmer/code-reviewer'). Resolution order: 1. If org is specified: look in that org's agents 2. If org is empty: use the workflow's org 3. Before external lookup, check manifest (current deployment) The workflow's execution context (environment variables, secrets) is passed to the agent invocation, allowing agents to access workflow state. YAML Example (without structured output): - analyze: call: agent with: agent: 'code-reviewer' message: 'Review this code: ${ $context.fetchCode.body }' env: GITHUB_TOKEN: '${ .secrets.GH_TOKEN }' config: model: 'claude-3-5-sonnet' timeout: 300 YAML Example (with structured output): - triage_ticket: call: agent with: agent: 'support-triage' message: '${ .ticket.description }' output: schema: type: object required: [severity, category, customer_impact] properties: severity: type: string enum: [low, medium, high, critical] category: type: string customer_impact: type: boolean rationale: type: string on_invalid: ON_INVALID_RETRY max_retries: 2 fallback_task: human_review export: as: '${ .structured }' Reference: design doc at stigmer/_cursor/add-agent-config-to-workflow.md"),activity_call:external_exports.lazy(()=>CallActivityTaskConfigInputSchema).optional().describe("Required when kind='activity_call'. CallActivityTaskConfig defines the configuration for activity_call tasks that execute activities. @internal Executes Temporal activities. YAML Example: - taskName: call: activity with: activity: 'ProcessDataActivity' input: data: ${ .data } Reference: zigflow-dsl-pattern-catalog.md - Task Type 10"),emit_event:external_exports.lazy(()=>EmitEventTaskConfigInputSchema).optional().describe("Required when kind='emit_event'. EmitEventTaskConfig defines the configuration for emit_event tasks that publish CloudEvents to external consumers, other workflows, audit trails, and metrics systems. @internal emit_event is the complement to listen. While listen waits for Temporal signals (internal workflow primitives), emit_event publishes business events using the CloudEvents envelope (a standard external contract). The runtime (T13) bridges the two: an emitted CloudEvent can be delivered as a Temporal signal to another workflow's listen task, or routed to external consumers via message queues, webhooks, or event buses. The task output is the fully-resolved CloudEvents envelope with runtime-generated fields populated: { 'id': '<generated UUID>', 'specversion': '1.0', 'type': 'stigmer.workflow.ticket.classified', 'source': '/workflows/triage/executions/abc-123', 'time': '2026-05-12T14:30:00Z', 'subject': 'TICKET-456', 'datacontenttype': 'application/json', 'data': { <resolved payload> } } YAML Example (emit a classification event): - notify_classified: emit_event: event: type: 'stigmer.workflow.ticket.classified' subject: '${ $context.ticket.id }' data: ticket_id: '${ $context.ticket.id }' severity: '${ $context.triage.severity }' category: '${ $context.triage.category }' classified_by: '${ $context.workflow_instance_id }' export: as: '${ . }' YAML Example (emit with explicit source): - publish_completion: emit_event: event: type: 'acme.order.fulfilled' source: 'urn:acme:fulfillment-service' subject: '${ $context.order.number }' data: order_id: '${ $context.order.id }' status: 'fulfilled' fulfilled_at: '${ $context.timestamp }' export: as: '${ . }'"),eval:external_exports.lazy(()=>EvalTaskConfigInputSchema).optional().describe("Required when kind='eval'. EvalTaskConfig defines the configuration for eval tasks that use an LLM judge to assess the semantic quality of workflow data. @internal Use eval when you need to assess quality, correctness, safety, or completeness of LLM-generated or agent-produced content. This fills the gap between structural validation (validate task \u2014 JSON Schema, business rules) and human review (human_input task \u2014 manual inspection). The eval task constructs a judge prompt from the rubric and subject, calls the specified LLM with structured output enforcement, parses the judge's response, and applies the threshold to determine pass/fail. Key differences from validate: - validate checks deterministic structural properties (schema, rules) - eval checks semantic quality via an LLM judge (hallucination, relevance, safety) Key differences from llm_call: - llm_call is a general-purpose LLM invocation - eval has built-in judge prompt construction, scoring semantics, threshold application, and on_fail branching Task output structure: { 'pass': true/false, 'score': 0.85, // present for numeric_score and multi_criteria 'reasoning': 'The response...', 'criteria': [ // present only for multi_criteria {'name': 'accuracy', 'score': 0.9, 'reasoning': '...'}, {'name': 'safety', 'score': 0.8, 'reasoning': '...'} ], 'model_used': 'gpt-4o', 'subject': <original subject data> } YAML Example (binary pass/fail evaluation): - check_summary_quality: call: eval with: model: 'gpt-4o' subject: '${ $context.summarize.text }' rubric: | Evaluate whether this summary accurately captures the key points of the source document without hallucinations or omissions. The summary should be concise (under 3 sentences) and factually correct. scoring_mode: EVAL_PASS_FAIL on_fail: EVAL_FAIL_BRANCH fallback_task: regenerate_summary export: as: '${ . }' YAML Example (numeric score with threshold): - score_translation: call: eval with: model: 'gpt-4o' subject: '${ $context.translate.text }' rubric: | Rate the quality of this translation on accuracy, fluency, and preservation of meaning. Score 0.0 (unusable) to 1.0 (perfect). scoring_mode: EVAL_NUMERIC_SCORE threshold: 0.7 on_fail: EVAL_FAIL_WARN export: as: '${ . }' YAML Example (multi-criteria evaluation): - evaluate_response: call: eval with: model: 'gpt-4o' subject: '${ $context.agent_response }' rubric: 'Evaluate this customer support response.' scoring_mode: EVAL_MULTI_CRITERIA threshold: 0.75 criteria: - name: accuracy description: 'Is the information factually correct?' weight: 3.0 - name: helpfulness description: 'Does it address the customer's actual question?' weight: 2.0 - name: tone description: 'Is the tone professional and empathetic?' weight: 1.0 on_fail: EVAL_FAIL_RAISE export: as: '${ . }'"),for_each:external_exports.lazy(()=>ForTaskConfigInputSchema).optional().describe("Required when kind='for_each'. ForTaskConfig defines the configuration for for_each tasks that iterate over collections. @internal Supports both sequential (default) and parallel execution modes. When max_parallelism is set, iterations run concurrently using Temporal workflow goroutines with bounded concurrency. Backward compatibility: all new fields default to values that preserve the pre-T17 sequential behavior. Existing workflows require no changes. YAML Example (sequential, unchanged from pre-T17): - taskName: for: each: item in: ${ $data.items } do: - processItem: call: http with: method: POST body: item: ${ $data.item } index: ${ $data.index } YAML Example (parallel with bounded concurrency): - batchProcess: for: each: item in: ${ $data.items } max_parallelism: 5 on_error: FOR_EACH_CONTINUE do: - callApi: call: http with: method: POST endpoint: uri: 'https://api.example.com/process' body: item: ${ $data.item } Reference: zigflow-dsl-pattern-catalog.md - Task Type 4 @since max_parallelism, batch_size, on_error: T17 (Advanced Agentic Orchestration)"),fork:external_exports.lazy(()=>ForkTaskConfigInputSchema).optional().describe("Required when kind='fork'. ForkTaskConfig defines the configuration for fork tasks that execute branches in parallel. @internal YAML Example: - taskName: fork: branches: - branch1: do: - task1: call: http with: method: POST endpoint: uri: https://api.example.com/branch1 - branch2: do: - task2: call: http Reference: zigflow-dsl-pattern-catalog.md - Task Type 5"),grpc_call:external_exports.lazy(()=>GrpcCallTaskConfigInputSchema).optional().describe("Required when kind='grpc_call'. GrpcCallTaskConfig defines the configuration for grpc_call tasks that make gRPC requests. @internal YAML Example: - taskName: call: grpc with: service: 'com.example.UserService' method: 'GetUser' request: userId: ${ .userId } Reference: zigflow-dsl-pattern-catalog.md - Task Type 9"),http_call:external_exports.lazy(()=>HttpCallTaskConfigInputSchema).optional().describe("Required when kind='http_call'. HttpCallTaskConfig defines the configuration for http_call tasks that make HTTP requests. @internal YAML Example: - taskName: call: http with: method: POST endpoint: uri: https://api.example.com/data headers: Authorization: 'Bearer ${TOKEN}' body: field1: value Reference: zigflow-dsl-pattern-catalog.md - Task Type 2"),human_input:external_exports.lazy(()=>HumanInputTaskConfigInputSchema).optional().describe("Required when kind='human_input'. HumanInputTaskConfig defines the configuration for human_input tasks that pause workflow execution to collect typed input or approval from a human reviewer, then resume based on the reviewer's response. @internal Use human_input when a workflow needs human judgment before proceeding: approvals before API calls, sign-off before publishing, confirmation before customer-impacting actions, or structured data collection from a human operator. This is a workflow-level approval gate \u2014 distinct from agent-level HITL (tool approval inside an agent session). Workflow-level gates are visible in the execution viewer as explicit tasks with input/output/timing, and they can route to different branches based on the reviewer's decision. Runtime implementation (T13) will use Temporal signals for workflow resumption. The proto definition is intentionally runtime-agnostic. The reviewer's response (selected outcome + form data) becomes the task output, accessible via export: { 'outcome': 'approve', 'form_data': { <validated form response if form_schema is set> }, 'reviewer': '<canonical identity of the user who responded>', 'reviewer_actor': { 'id': '<canonical identity>', 'display_name': '<human-readable name, empty when unknown>', 'email': '<email address, empty when unknown>', 'avatar': '<avatar URL, empty when unknown>' }, 'responded_at': '<ISO 8601 timestamp>' } 'reviewer' is the stable audit key (use it in switch conditions and audit joins); 'reviewer_actor' is a display snapshot stamped server-side at decision time (use it in notifications and UIs). Both are absent when the gate resolves without attribution (timeout policies, OSS single-user edition). YAML Example (approval gate with custom outcomes): - manager_approval: human_input: prompt: 'Customer-impacting incident classified as ${ $context.triage.severity }. Approve escalation?' form_schema: type: object properties: notes: type: string description: 'Optional notes for the engineering team' priority_override: type: string enum: [P1, P2, P3] outcomes: - name: approve label: 'Approve Escalation' - name: deny label: 'Reject \u2014 Not Customer-Impacting' then: re_classify - name: needs_revision label: 'Needs More Info' then: gather_more_context approvers: - 'team:engineering-leads' timeout: 86400 on_timeout: HUMAN_INPUT_TIMEOUT_ESCALATE notification_channels: - 'slack:#incident-approvals' export: as: '${ . }' YAML Example (simple binary approval, no form): - confirm_publish: human_input: prompt: 'Ready to publish ${ $context.document.title } to production?' approvers: - 'role:content-admin' timeout: 3600 on_timeout: HUMAN_INPUT_TIMEOUT_FAIL export: as: '${ . }'"),listen:external_exports.lazy(()=>ListenTaskConfigInputSchema).optional().describe("Required when kind='listen'. ListenTaskConfig defines the configuration for listen tasks that wait for external signals. @internal Implemented via Temporal signals. YAML Example: - taskName: listen: to: one: with: id: approval_signal type: signal Reference: zigflow-dsl-pattern-catalog.md - Task Type 7"),llm_call:external_exports.lazy(()=>LlmCallTaskConfigInputSchema).optional().describe("Required when kind='llm_call'. LlmCallTaskConfig defines the configuration for llm_call tasks that make direct LLM API calls without the overhead of a full agent invocation. @internal Use llm_call when the task is focused and deterministic: classification, extraction, scoring, summarization, moderation, or routing. An agent_call carries setup overhead (system prompt, tool resolution, MCP server setup, session management) that is unnecessary when all you need is a single prompt-response cycle with optional structured output. When response_schema is set, the runner requests structured output from the provider and validates the response against the schema. The on_invalid / max_retries / fallback_task fields control what happens when validation fails, using the same OnInvalidOutputPolicy enum as agent_call's output contract. YAML Example (classification with structured output): - classify_severity: call: llm with: model: 'gpt-4o-mini' system_prompt: 'You are a support ticket classifier.' prompt: 'Classify this ticket: ${ $context.ticket.description }' response_schema: type: object required: [severity, category] properties: severity: type: string enum: [low, medium, high, critical] category: type: string on_invalid: ON_INVALID_RETRY max_retries: 2 export: as: '${ . }' YAML Example (simple summarization, no schema): - summarize: call: llm with: model: 'claude-sonnet-4-5' prompt: 'Summarize in 2 sentences: ${ $context.document.text }' temperature: 0.3 max_tokens: 200 export: as: '${ . }'"),notification:external_exports.lazy(()=>NotificationTaskConfigInputSchema).optional().describe("Required when kind='notification'. NotificationTaskConfig defines the configuration for notification tasks that send messages to humans through channels like Slack, email, Discord, Microsoft Teams, or webhooks. @internal notification is a convenience abstraction for 'send a message to humans' \u2014 simpler and more intuitive than emit_event for common operational notification patterns. While emit_event publishes system-level CloudEvents for machine consumption, notification is purpose-built for human-readable messages with channel routing and recipient targeting. Key distinction from related task types: emit_event = system-to-system (CloudEvents, consumed by workflows/services) notification = system-to-human (Slack, email, Discord \u2014 read by people) human_input = system-to-human-to-system (waits for a response; notification is fire-and-forget) Notifications are fire-and-forget by default. The task output confirms delivery was attempted but does not wait for acknowledgment: { 'channel': 'slack', 'recipients': ['#incident-response'], 'delivered': true, 'delivered_at': '<ISO 8601 timestamp>' } For notifications that require acknowledgment or a response, use human_input instead \u2014 it pauses the workflow until a human responds. The channel field is a string (not an enum) to allow extensibility: new notification channels can be added without proto changes. The runtime (T13) resolves channel identifiers to actual notification providers configured in the workflow instance's environment. YAML Example (Slack notification): - alert_slack: notification: channel: 'slack' recipients: - '#incident-response' - '@oncall-lead' subject: 'P${ $context.triage.severity } Incident: ${ $context.ticket.title }' body: | *Severity*: ${ $context.triage.severity } *Category*: ${ $context.triage.category } *Customer Impact*: ${ $context.triage.customer_impact } *Summary*: ${ $context.agent_analysis.structured.summary } metadata: thread_ts: '${ $context.slack_thread_id }' export: as: '${ . }' YAML Example (email with template): - send_confirmation: notification: channel: 'email' recipients: - '${ $context.customer.email }' subject: 'Order ${ $context.order.number } Confirmed' body: 'Your order has been confirmed. You will receive tracking information shortly.' template: 'order-confirmation' metadata: priority: 'high' reply_to: 'support@acme.com' export: as: '${ . }'"),raise_error:external_exports.lazy(()=>RaiseTaskConfigInputSchema).optional().describe("Required when kind='raise_error'. RaiseTaskConfig defines the configuration for raise_error tasks that raise errors. @internal YAML Example: - taskName: raise: error: ValidationError message: ${ .errorMessage } Reference: zigflow-dsl-pattern-catalog.md - Task Type 11"),run_workflow:external_exports.lazy(()=>RunTaskConfigInputSchema).optional().describe("Required when kind='run_workflow'. RunTaskConfig defines the configuration for run_workflow tasks that execute sub-workflows. @internal Implemented via Temporal child workflows. YAML Example: - taskName: run: workflow: 'sub-workflow-name' input: data: ${ .data } Reference: zigflow-dsl-pattern-catalog.md - Task Type 12"),set_vars:external_exports.lazy(()=>SetTaskConfigInputSchema).optional().describe("Required when kind='set_vars'. SetTaskConfig defines the configuration for set_vars tasks that assign variables in workflow state. @internal YAML Example: - taskName: set: variable1: value variable2: ${ expression } computed: ${ .a + .b } Reference: zigflow-dsl-pattern-catalog.md - Task Type 1"),switch_case:external_exports.lazy(()=>SwitchTaskConfigInputSchema).optional().describe("Required when kind='switch_case'. SwitchTaskConfig defines the configuration for switch_case tasks that branch conditionally. @internal YAML Example: - taskName: switch: - case1: when: ${ $context.value > 5 } then: highValueTask - defaultCase: then: unknownTask Reference: zigflow-dsl-pattern-catalog.md - Task Type 3"),transform:external_exports.lazy(()=>TransformTaskConfigInputSchema).optional().describe("Required when kind='transform'. TransformTaskConfig defines the configuration for transform tasks that perform deterministic data transformation without LLM calls. @internal Use transform when you need to reshape data between tasks: projecting fields, joining objects, converting formats, or building API payloads. Unlike set_vars (which mutates workflow state variables as a side effect), transform produces an explicit output that flows through export like any other task \u2014 visible and inspectable in the execution viewer. The distinction from set_vars: set_vars = imperative assignment ('set X to Y'), mutates workflow context transform = functional transformation ('reshape this data'), produces output YAML Example (JQ \u2014 reshape data for an API call): - build_api_payload: transform: engine: jq expression: '{name: .customer.full_name, severity: .triage.severity, summary: .agent_analysis.structured.summary}' input: '${ $context }' export: as: '${ . }' YAML Example (template \u2014 render a notification message): - render_notification: transform: engine: template expression: 'Ticket {{ .ticket_id }} classified as {{ .severity }} \u2014 {{ .summary }}' input: '${ $context.build_api_payload }' export: as: '${ . }'"),try_catch:external_exports.lazy(()=>TryTaskConfigInputSchema).optional().describe("Required when kind='try_catch'. TryTaskConfig defines the configuration for try_catch tasks that handle errors. @internal YAML Example: - taskName: try: - attemptTask: call: http with: method: POST endpoint: uri: https://api.example.com/flaky catch: as: error do: - errorHandler: call: http with: body: error: ${ .error } Reference: zigflow-dsl-pattern-catalog.md - Task Type 6"),validate:external_exports.lazy(()=>ValidateTaskConfigInputSchema).optional().describe("Required when kind='validate'. ValidateTaskConfig defines the configuration for validate tasks that perform explicit schema and business-rule validation on workflow data. @internal Use validate when you need an explicit validation checkpoint before downstream actions. This is how you distinguish 'the API call succeeded' from 'the data is safe and complete enough to continue.' While switch_case + raise_error can approximate validation, a dedicated validate task makes the intent explicit, the error messages richer, and the execution trace clearer. In the execution viewer (T09), a validate task shows exactly what was checked, what passed, and what failed \u2014 visible as a distinct verification step. The task supports two complementary validation modes: - schema: JSON Schema validation for structural correctness - rules: business-rule expressions for domain-specific constraints At least one of schema or rules must be set. Both can be used together for comprehensive validation (schema checks structure, rules check business logic). This cross-field constraint is enforced at runtime validation since buf.validate cannot express it on individual fields. Task output includes the full validation result: { 'valid': true/false, 'errors': [ {'rule': 'critical_needs_rationale', 'message': 'Critical severity requires a rationale'}, {'path': '$.category', 'message': 'must have at least 1 character'} ], 'data': <original input data> } YAML Example (schema + business rules): - check_triage_quality: validate: input: '${ $context.triage }' schema: type: object required: [severity, category, customer_impact] properties: severity: type: string enum: [low, medium, high, critical] category: type: string minLength: 1 customer_impact: type: boolean rules: - name: critical_needs_rationale expression: '${ .severity != 'critical' || (.rationale != null && .rationale != '') }' message: 'Critical severity requires a rationale' - name: customer_impact_needs_severity expression: '${ .customer_impact != true || .severity in ['high', 'critical'] }' message: 'Customer-impacting issues must be high or critical severity' on_fail: VALIDATION_FAIL_BRANCH fallback_task: human_review export: as: '${ . }' YAML Example (schema-only validation with warn policy): - check_payload_shape: validate: input: '${ $context.api_payload }' schema: type: object required: [name, email] properties: name: type: string email: type: string format: email on_fail: VALIDATION_FAIL_WARN export: as: '${ . }'"),wait:external_exports.lazy(()=>WaitTaskConfigInputSchema).optional().describe("Required when kind='wait'. WaitTaskConfig defines the configuration for wait tasks that pause workflow execution. Supports both relative durations and absolute timestamps. @internal Implemented via Temporal timers. YAML Examples: Relative duration: - waitForApproval: wait: duration: days: 7 Absolute timestamp: - waitUntilMarketOpen: wait: until: '2026-03-02T09:30:00Z' Reference: zigflow-dsl-pattern-catalog.md - Task Type 8"),export:external_exports.lazy(()=>ExportInputSchema).optional().describe("Export configuration (how to save task output to context). Optional - if not set, output is not saved."),flow:external_exports.lazy(()=>FlowControlInputSchema).optional().describe("Flow control (which task executes next). Optional - if not set, continues to next task in sequence."),compensate:external_exports.array(external_exports.lazy(()=>WorkflowTaskInputSchema)).optional().describe("Compensation tasks to execute if this task needs to be 'undone.' @internal Saga-style compensation for workflows with side effects. When a try_catch block catches an error, it can optionally run the compensation tasks for all already-completed tasks in reverse order. The compensation tasks receive the original task's output in their input context, allowing them to construct the appropriate undo operation (e.g., cancel an API call, delete a created resource, send a reversal notification). Only executed when: 1. The task completed successfully (failed tasks are not compensated) 2. A subsequent task within the same try_catch scope fails 3. The catch block is configured to run compensations YAML Example: try: - create_order: call: http with: method: POST endpoint: { uri: 'https://api.example.com/orders' } body: { ... } compensate: - cancel_order: call: http with: method: DELETE endpoint: { uri: 'https://api.example.com/orders/${ $context.create_order.id }' } export: as: '${ . }' - charge_payment: call: http with: method: POST endpoint: { uri: 'https://api.example.com/payments' } catch: as: error compensate: true do: - log_failure: call: notification with: ... Optional - when empty, this task has no compensation action. @since T17 (Advanced Agentic Orchestration)")})),EnvVarDeclarationInputSchema3=external_exports.object({is_secret:external_exports.boolean().optional().describe("Whether the resolved value should be treated as a secret. @internal When true: encrypted at rest, redacted in logs and Temporal history. When false: stored as plaintext, visible in audit logs."),description:external_exports.string().optional().describe("Human-readable description shown in the UI credential form. Should explain what the variable is used for and where to obtain it."),optional:external_exports.boolean().optional().describe("Whether this variable is optional. @internal When false (default): the execution pipeline rejects a run if this variable is missing from the user's environment. When true: a missing value is acceptable (the MCP server or agent degrades gracefully without it).")}),WorkflowBudgetInputSchema=external_exports.object({max_cost_micros:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Maximum total cost for this workflow execution in micro-USD. 1 USD = 1,000,000 micros. Example: 2000000 = $2.00. When exceeded, the on_exceeded policy is applied. Optional \u2014 when 0, no cost limit is enforced."),max_total_tokens:external_exports.union([external_exports.number(),external_exports.string()]).optional().describe("Maximum total tokens (input + output) across all LLM/agent tasks. Optional \u2014 when 0, no token limit is enforced."),max_duration_seconds:external_exports.number().optional().describe("Maximum wall-clock duration for the entire workflow execution in seconds. Optional \u2014 when 0, no duration limit is enforced (Temporal's own workflow execution timeout still applies)."),on_exceeded:external_exports.string().optional().describe("Policy when any budget limit is exceeded. Allowed values: budget_exceeded_terminate, budget_exceeded_human_review, budget_exceeded_warn.")});function workflowInputToProto(input){let slug=input.slug&&input.slug.length>0?input.slug:generateSlug(input.name),spec=create(WorkflowSpecSchema);if(input.description!==void 0&&(spec.description=input.description),input.document!==void 0&&(spec.document=workflowDocumentInputToProto(input.document)),input.tasks!==void 0&&(spec.tasks=input.tasks.map(workflowTaskInputToProto)),input.env!==void 0)for(let[k,v]of Object.entries(input.env))spec.env[k]=envVarDeclarationInputToProto3(v);return input.budget!==void 0&&(spec.budget=workflowBudgetInputToProto(input.budget)),Object.assign(create(WorkflowSchema),{apiVersion:"agentic.stigmer.ai/v1",kind:"Workflow",metadata:Object.assign(create(ApiResourceMetadataSchema),{name:input.name,slug,org:input.org,...input.visibility!==void 0&&{visibility:visibilityFromString(input.visibility)},...input.labels!==void 0&&{labels:input.labels},...input.tags!==void 0&&{tags:input.tags}}),spec})}function workflowDocumentInputToProto(input){let result=create(WorkflowDocumentSchema);return input.dsl!==void 0&&(result.dsl=input.dsl),input.namespace!==void 0&&(result.namespace=input.namespace),input.name!==void 0&&(result.name=input.name),input.version!==void 0&&(result.version=input.version),input.description!==void 0&&(result.description=input.description),result}function contextManagementConfigInputToProto(input){let result=create(ContextManagementConfigSchema);return input.disable_summarization!==void 0&&(result.disableSummarization=input.disable_summarization),input.custom_trigger_threshold!==void 0&&(result.customTriggerThreshold=input.custom_trigger_threshold),input.custom_target_tokens!==void 0&&(result.customTargetTokens=input.custom_target_tokens),result}function agentExecutionConfigInputToProto(input){let result=create(AgentExecutionConfigSchema);return input.model!==void 0&&(result.model=input.model),input.timeout!==void 0&&(result.timeout=input.timeout),input.temperature!==void 0&&(result.temperature=input.temperature),input.context_management!==void 0&&(result.contextManagement=contextManagementConfigInputToProto(input.context_management)),input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),result}function agentCallOutputContractInputToProto(input){let result=create(AgentCallOutputContractSchema);return input.schema!==void 0&&(result.schema=input.schema),result.onInvalid=enumFromString(OnInvalidOutputPolicy,input.on_invalid),input.max_retries!==void 0&&(result.maxRetries=input.max_retries),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),result}function agentCallTaskConfigInputToProto(input){let result=create(AgentCallTaskConfigSchema);return input.agent!==void 0&&(result.agent=input.agent),input.org!==void 0&&(result.org=input.org),input.message!==void 0&&(result.message=input.message),input.env!==void 0&&(result.env=input.env),input.config!==void 0&&(result.config=agentExecutionConfigInputToProto(input.config)),input.output!==void 0&&(result.output=agentCallOutputContractInputToProto(input.output)),result.harness=enumFromString(Harness,input.harness),result}function callActivityTaskConfigInputToProto(input){let result=create(CallActivityTaskConfigSchema);return input.activity!==void 0&&(result.activity=input.activity),input.input!==void 0&&(result.input=input.input),result}function emitEventInputToProto(input){let result=create(EmitEventSpecSchema);return input.type!==void 0&&(result.type=input.type),input.source!==void 0&&(result.source=input.source),input.data!==void 0&&(result.data=input.data),input.subject!==void 0&&(result.subject=input.subject),result}function emitEventTaskConfigInputToProto(input){let result=create(EmitEventTaskConfigSchema);return input.event!==void 0&&(result.event=emitEventInputToProto(input.event)),result}function evalCriterionInputToProto(input){let result=create(EvalCriterionSchema);return input.name!==void 0&&(result.name=input.name),input.description!==void 0&&(result.description=input.description),input.weight!==void 0&&(result.weight=input.weight),result}function evalTaskConfigInputToProto(input){let result=create(EvalTaskConfigSchema);return input.model!==void 0&&(result.model=input.model),input.subject!==void 0&&(result.subject=input.subject),input.rubric!==void 0&&(result.rubric=input.rubric),result.scoringMode=enumFromString(EvalScoringMode,input.scoring_mode),input.threshold!==void 0&&(result.threshold=input.threshold),result.onFail=enumFromString(EvalFailPolicy,input.on_fail),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),input.system_prompt!==void 0&&(result.systemPrompt=input.system_prompt),input.criteria!==void 0&&(result.criteria=input.criteria.map(evalCriterionInputToProto)),input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),result}function forTaskConfigInputToProto(input){let result=create(ForTaskConfigSchema);return input.each!==void 0&&(result.each=input.each),input.in!==void 0&&(result.in=input.in),input.do!==void 0&&(result.do=input.do.map(workflowTaskInputToProto)),input.max_parallelism!==void 0&&(result.maxParallelism=input.max_parallelism),input.batch_size!==void 0&&(result.batchSize=input.batch_size),result.onError=enumFromString(ForEachErrorPolicy,input.on_error),result}function forkBranchInputToProto(input){let result=create(ForkBranchSchema);return input.name!==void 0&&(result.name=input.name),input.do!==void 0&&(result.do=input.do.map(workflowTaskInputToProto)),result}function forkTaskConfigInputToProto(input){let result=create(ForkTaskConfigSchema);return input.branches!==void 0&&(result.branches=input.branches.map(forkBranchInputToProto)),input.compete!==void 0&&(result.compete=input.compete),result}function grpcCallTaskConfigInputToProto(input){let result=create(GrpcCallTaskConfigSchema);return input.service!==void 0&&(result.service=input.service),input.method!==void 0&&(result.method=input.method),input.request!==void 0&&(result.request=input.request),result}function httpEndpointInputToProto(input){let result=create(HttpEndpointSchema);return input.uri!==void 0&&(result.uri=input.uri),result}function httpCallTaskConfigInputToProto(input){let result=create(HttpCallTaskConfigSchema);return input.method!==void 0&&(result.method=input.method),input.endpoint!==void 0&&(result.endpoint=httpEndpointInputToProto(input.endpoint)),input.headers!==void 0&&(result.headers=input.headers),input.body!==void 0&&(result.body=input.body),input.timeout_seconds!==void 0&&(result.timeoutSeconds=input.timeout_seconds),result}function humanInputOutcomeInputToProto(input){let result=create(HumanInputOutcomeSchema);return input.name!==void 0&&(result.name=input.name),input.label!==void 0&&(result.label=input.label),input.then!==void 0&&(result.then=input.then),result}function humanInputTaskConfigInputToProto(input){let result=create(HumanInputTaskConfigSchema);return input.prompt!==void 0&&(result.prompt=input.prompt),input.form_schema!==void 0&&(result.formSchema=input.form_schema),input.outcomes!==void 0&&(result.outcomes=input.outcomes.map(humanInputOutcomeInputToProto)),input.approvers!==void 0&&(result.approvers=input.approvers),input.timeout!==void 0&&(result.timeout=input.timeout),result.onTimeout=enumFromString(HumanInputTimeoutPolicy,input.on_timeout),input.notification_channels!==void 0&&(result.notificationChannels=input.notification_channels),input.payload!==void 0&&(result.payload=fromJson(ValueSchema,input.payload)),input.ui_hint!==void 0&&(result.uiHint=input.ui_hint),result}function signalInputToProto(input){let result=create(SignalSpecSchema);return input.id!==void 0&&(result.id=input.id),input.type!==void 0&&(result.type=input.type),result}function listenToInputToProto(input){let result=create(ListenToSchema);return input.mode!==void 0&&(result.mode=input.mode),input.signals!==void 0&&(result.signals=input.signals.map(signalInputToProto)),result}function listenTaskConfigInputToProto(input){let result=create(ListenTaskConfigSchema);return input.to!==void 0&&(result.to=listenToInputToProto(input.to)),result}function llmCallTaskConfigInputToProto(input){let result=create(LlmCallTaskConfigSchema);return input.model!==void 0&&(result.model=input.model),input.system_prompt!==void 0&&(result.systemPrompt=input.system_prompt),input.prompt!==void 0&&(result.prompt=input.prompt),input.response_schema!==void 0&&(result.responseSchema=input.response_schema),input.temperature!==void 0&&(result.temperature=input.temperature),input.max_tokens!==void 0&&(result.maxTokens=input.max_tokens),input.timeout!==void 0&&(result.timeout=input.timeout),result.onInvalid=enumFromString(OnInvalidOutputPolicy,input.on_invalid),input.max_retries!==void 0&&(result.maxRetries=input.max_retries),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),input.max_total_tokens!==void 0&&(result.maxTotalTokens=BigInt(input.max_total_tokens)),result}function notificationTaskConfigInputToProto(input){let result=create(NotificationTaskConfigSchema);return input.channel!==void 0&&(result.channel=input.channel),input.recipients!==void 0&&(result.recipients=input.recipients),input.subject!==void 0&&(result.subject=input.subject),input.body!==void 0&&(result.body=input.body),input.template!==void 0&&(result.template=input.template),input.metadata!==void 0&&(result.metadata=input.metadata),result}function raiseTaskConfigInputToProto(input){let result=create(RaiseTaskConfigSchema);return input.error!==void 0&&(result.error=input.error),input.message!==void 0&&(result.message=input.message),result}function runTaskConfigInputToProto(input){let result=create(RunTaskConfigSchema);return input.workflow!==void 0&&(result.workflow=input.workflow),input.input!==void 0&&(result.input=input.input),result}function setTaskConfigInputToProto(input){let result=create(SetTaskConfigSchema);return input.variables!==void 0&&(result.variables=input.variables),result}function switchCaseInputToProto(input){let result=create(SwitchCaseSchema);return input.name!==void 0&&(result.name=input.name),input.when!==void 0&&(result.when=input.when),input.then!==void 0&&(result.then=input.then),result}function switchTaskConfigInputToProto(input){let result=create(SwitchTaskConfigSchema);return input.cases!==void 0&&(result.cases=input.cases.map(switchCaseInputToProto)),result}function transformTaskConfigInputToProto(input){let result=create(TransformTaskConfigSchema);return result.engine=enumFromString(TransformEngine,input.engine),input.expression!==void 0&&(result.expression=input.expression),input.input!==void 0&&(result.input=input.input),result}function catchBlockInputToProto(input){let result=create(CatchBlockSchema);return input.as!==void 0&&(result.as=input.as),input.do!==void 0&&(result.do=input.do.map(workflowTaskInputToProto)),input.compensate!==void 0&&(result.compensate=input.compensate),result}function tryTaskConfigInputToProto(input){let result=create(TryTaskConfigSchema);return input.try!==void 0&&(result.try=input.try.map(workflowTaskInputToProto)),input.catch!==void 0&&(result.catch=catchBlockInputToProto(input.catch)),result}function validationRuleInputToProto(input){let result=create(ValidationRuleSchema);return input.name!==void 0&&(result.name=input.name),input.expression!==void 0&&(result.expression=input.expression),input.message!==void 0&&(result.message=input.message),result}function validateTaskConfigInputToProto(input){let result=create(ValidateTaskConfigSchema);return input.input!==void 0&&(result.input=input.input),input.schema!==void 0&&(result.schema=input.schema),input.rules!==void 0&&(result.rules=input.rules.map(validationRuleInputToProto)),result.onFail=enumFromString(ValidationFailPolicy,input.on_fail),input.fallback_task!==void 0&&(result.fallbackTask=input.fallback_task),result}function durationInputToProto(input){let result=create(DurationSchema);return input.days!==void 0&&(result.days=input.days),input.hours!==void 0&&(result.hours=input.hours),input.minutes!==void 0&&(result.minutes=input.minutes),input.seconds!==void 0&&(result.seconds=input.seconds),input.milliseconds!==void 0&&(result.milliseconds=input.milliseconds),result}function waitTaskConfigInputToProto(input){let result=create(WaitTaskConfigSchema);return input.duration!==void 0&&(result.waitType={case:"duration",value:durationInputToProto(input.duration)}),input.until!==void 0&&(result.waitType={case:"until",value:toTimestamp(input.until)}),result}function exportInputToProto(input){let result=create(ExportSchema);return input.as!==void 0&&(result.as=input.as),result}function flowControlInputToProto(input){let result=create(FlowControlSchema);return input.then!==void 0&&(result.then=input.then),result}function workflowTaskInputToProto(input){let result=create(WorkflowTaskSchema);switch(input.name!==void 0&&(result.name=input.name),result.kind=enumFromString(WorkflowTaskKind,input.kind),input.export!==void 0&&(result.export=exportInputToProto(input.export)),input.flow!==void 0&&(result.flow=flowControlInputToProto(input.flow)),input.compensate!==void 0&&(result.compensate=input.compensate.map(workflowTaskInputToProto)),input.kind){case"agent_call":input.agent_call!==void 0&&(result.taskConfig=toJson(AgentCallTaskConfigSchema,agentCallTaskConfigInputToProto(input.agent_call)));break;case"activity_call":input.activity_call!==void 0&&(result.taskConfig=toJson(CallActivityTaskConfigSchema,callActivityTaskConfigInputToProto(input.activity_call)));break;case"emit_event":input.emit_event!==void 0&&(result.taskConfig=toJson(EmitEventTaskConfigSchema,emitEventTaskConfigInputToProto(input.emit_event)));break;case"eval":input.eval!==void 0&&(result.taskConfig=toJson(EvalTaskConfigSchema,evalTaskConfigInputToProto(input.eval)));break;case"for_each":input.for_each!==void 0&&(result.taskConfig=toJson(ForTaskConfigSchema,forTaskConfigInputToProto(input.for_each)));break;case"fork":input.fork!==void 0&&(result.taskConfig=toJson(ForkTaskConfigSchema,forkTaskConfigInputToProto(input.fork)));break;case"grpc_call":input.grpc_call!==void 0&&(result.taskConfig=toJson(GrpcCallTaskConfigSchema,grpcCallTaskConfigInputToProto(input.grpc_call)));break;case"http_call":input.http_call!==void 0&&(result.taskConfig=toJson(HttpCallTaskConfigSchema,httpCallTaskConfigInputToProto(input.http_call)));break;case"human_input":input.human_input!==void 0&&(result.taskConfig=toJson(HumanInputTaskConfigSchema,humanInputTaskConfigInputToProto(input.human_input)));break;case"listen":input.listen!==void 0&&(result.taskConfig=toJson(ListenTaskConfigSchema,listenTaskConfigInputToProto(input.listen)));break;case"llm_call":input.llm_call!==void 0&&(result.taskConfig=toJson(LlmCallTaskConfigSchema,llmCallTaskConfigInputToProto(input.llm_call)));break;case"notification":input.notification!==void 0&&(result.taskConfig=toJson(NotificationTaskConfigSchema,notificationTaskConfigInputToProto(input.notification)));break;case"raise_error":input.raise_error!==void 0&&(result.taskConfig=toJson(RaiseTaskConfigSchema,raiseTaskConfigInputToProto(input.raise_error)));break;case"run_workflow":input.run_workflow!==void 0&&(result.taskConfig=toJson(RunTaskConfigSchema,runTaskConfigInputToProto(input.run_workflow)));break;case"set_vars":input.set_vars!==void 0&&(result.taskConfig=toJson(SetTaskConfigSchema,setTaskConfigInputToProto(input.set_vars)));break;case"switch_case":input.switch_case!==void 0&&(result.taskConfig=toJson(SwitchTaskConfigSchema,switchTaskConfigInputToProto(input.switch_case)));break;case"transform":input.transform!==void 0&&(result.taskConfig=toJson(TransformTaskConfigSchema,transformTaskConfigInputToProto(input.transform)));break;case"try_catch":input.try_catch!==void 0&&(result.taskConfig=toJson(TryTaskConfigSchema,tryTaskConfigInputToProto(input.try_catch)));break;case"validate":input.validate!==void 0&&(result.taskConfig=toJson(ValidateTaskConfigSchema,validateTaskConfigInputToProto(input.validate)));break;case"wait":input.wait!==void 0&&(result.taskConfig=toJson(WaitTaskConfigSchema,waitTaskConfigInputToProto(input.wait)));break;default:if(input.kind!==void 0&&input.kind!=="")throw new Error(`unknown task kind: ${input.kind}`)}return result}function envVarDeclarationInputToProto3(input){let result=create(EnvVarDeclarationSchema);return input.is_secret!==void 0&&(result.isSecret=input.is_secret),input.description!==void 0&&(result.description=input.description),input.optional!==void 0&&(result.optional=input.optional),result}function workflowBudgetInputToProto(input){let result=create(WorkflowBudgetSchema);return input.max_cost_micros!==void 0&&(result.maxCostMicros=BigInt(input.max_cost_micros)),input.max_total_tokens!==void 0&&(result.maxTotalTokens=BigInt(input.max_total_tokens)),input.max_duration_seconds!==void 0&&(result.maxDurationSeconds=input.max_duration_seconds),result.onExceeded=enumFromString(BudgetExceededPolicy,input.on_exceeded),result}async function applyWorkflow(serverAddress,token,input){let workflow=workflowInputToProto(input),desc=`workflow "${workflow.metadata?.slug??""}" in org "${workflow.metadata?.org??""}"`;return withClient(WorkflowCommandController,serverAddress,token,async(client,callOptions)=>{try{let result=await client.apply(workflow,callOptions);return toProtoJson(WorkflowSchema,result)}catch(err){throw rpcError(err,desc)}})}async function deleteWorkflow(serverAddress,token,org,slug){let desc=`workflow "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport),id;try{id=(await query.getByReference({org,kind:ApiResourceKind.workflow,slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(WorkflowCommandController,transport);try{let deleted=await command.delete({value:id},callOptions);return toProtoJson(WorkflowSchema,deleted)}catch(err){throw rpcError(err,desc)}})}async function listWorkflowVersions(serverAddress,token,args){return withClient(WorkflowQueryController,serverAddress,token,async(client,callOptions)=>{let req={org:args.org,slug:args.slug,pageToken:args.pageToken??""};(args.pageSize??0)>0&&(req.pageSize=args.pageSize);try{let resp=await client.listVersions(req,callOptions),data=JSON.parse(toProtoJson(ListWorkflowVersionsResponseSchema,resp));if(Array.isArray(data.versions))for(let entry of data.versions)delete entry.validated_yaml;return JSON.stringify(data,null,2)}catch(err){throw rpcError(err,`versions of workflow "${args.slug}" in org "${args.org}"`)}})}async function fetchWorkflowVersion(serverAddress,token,org,slug,versionHash){let desc=`version "${versionHash}" of workflow "${slug}" in org "${org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport);try{let workflow=await query.getByReference({org,kind:ApiResourceKind.workflow,slug},callOptions),entry=await query.getVersion({workflowId:workflow.metadata?.id??"",versionHash},callOptions);return toProtoJson(WorkflowVersionEntrySchema,entry)}catch(err){throw rpcError(err,desc)}})}async function tagWorkflowVersion(serverAddress,token,args){let desc=`tag "${args.tag}" on workflow "${args.slug}" in org "${args.org}"`;return withTransport(serverAddress,token,async(transport,callOptions)=>{let query=createClient(WorkflowQueryController,transport),id;try{id=(await query.getByReference({org:args.org,kind:ApiResourceKind.workflow,slug:args.slug},callOptions)).metadata?.id??""}catch(err){throw rpcError(err,desc)}let command=createClient(WorkflowCommandController,transport);try{let workflow=await command.tagVersion({workflowId:id,versionHash:args.versionHash,tag:args.tag},callOptions);return toProtoJson(WorkflowSchema,workflow)}catch(err){throw rpcError(err,desc)}})}function registerWorkflowTools(server,target){return server.registerTool("get_workflow",{description:"Get full details of a Stigmer workflow by its org and slug. Pass 'version' (a full SHA-256 version hash from list_workflow_versions) to fetch a historical version instead \u2014 that returns the version entry with its validated YAML rather than the live workflow. Tags are not accepted here; resolve a tag to its hash via list_workflow_versions first.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org."),version:external_exports.string().optional().describe("Full 64-character SHA-256 version hash of a historical version. Omit for the live workflow.")}},(args,extra)=>textOrError(()=>{let token=resolveToken(extra,target.apiKey);return args.version!==void 0&&args.version!==""?fetchWorkflowVersion(target.serverAddress,token,args.org,args.slug,args.version):fetchWorkflow(target.serverAddress,token,args.org,args.slug)})),server.registerTool("apply_workflow",{description:"Create or update a Stigmer workflow (idempotent). Provide identity fields (name, org) and workflow configuration (document, tasks, env, etc.).",inputSchema:WorkflowInputShape},(args,extra)=>textOrError(()=>applyWorkflow(target.serverAddress,resolveToken(extra,target.apiKey),args))),server.registerTool("delete_workflow",{description:"Delete a Stigmer workflow by its org and slug. Returns the deleted workflow.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org.")}},(args,extra)=>textOrError(()=>deleteWorkflow(target.serverAddress,resolveToken(extra,target.apiKey),args.org,args.slug))),server.registerTool("list_workflow_versions",{description:"List a workflow's version history (newest first): version hash, tag, who applied it and when, and which version is current. Every apply that changes the workflow creates a new immutable version identified by its content hash. Entries omit the version YAML \u2014 fetch one version's full content with get_workflow and its hash.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org."),page_size:external_exports.number().int().optional().describe("Maximum versions per page (default 50, max 100)."),page_token:external_exports.string().optional().describe("Pagination token from a previous response's next_page_token.")}},(args,extra)=>textOrError(()=>listWorkflowVersions(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,slug:args.slug,pageSize:args.page_size,pageToken:args.page_token}))),server.registerTool("tag_workflow_version",{description:"Assign a tag (e.g. stable, production) to a specific workflow version. Tags are mutable pointers: re-tagging with an existing name moves it from its previous version, and a version holds at most one tag. Get version hashes from list_workflow_versions. Returns the updated workflow.",inputSchema:{org:external_exports.string().describe("Organization slug that owns the workflow."),slug:external_exports.string().describe("Workflow slug \u2014 unique identifier within the org."),version:external_exports.string().describe("Full 64-character SHA-256 hash of the version to tag."),tag:external_exports.string().describe("Tag to assign: alphanumeric with dots, hyphens, or underscores (e.g. stable, v1.0).")}},(args,extra)=>textOrError(()=>tagWorkflowVersion(target.serverAddress,resolveToken(extra,target.apiKey),{org:args.org,slug:args.slug,versionHash:args.version,tag:args.tag}))),["get_workflow","apply_workflow","delete_workflow","list_workflow_versions","tag_workflow_version"]}var import_yaml=__toESM(require_dist2(),1);var acceptedTaskKinds=new Set(Object.values(WorkflowTaskKind).filter(v=>typeof v=="string"&&v!=="workflow_task_kind_unspecified"));function registerValidateWorkflowYamlTool(server,target){return server.registerTool("validate_workflow_yaml",{description:"Validate a Stigmer workflow YAML for structural and semantic correctness. Uses the same Temporal-based validation pipeline as workflow create/update. Returns validation state (VALID/INVALID/FAILED), errors, warnings, and the generated internal YAML.",inputSchema:{yaml:external_exports.string().describe("Complete Stigmer workflow YAML content to validate (apiVersion, kind, metadata, spec).")}},(args,extra)=>textOrError(()=>validateWorkflowYaml(target.serverAddress,resolveToken(extra,target.apiKey),args.yaml))),["validate_workflow_yaml"]}async function validateWorkflowYaml(serverAddress,token,yamlContent){if(yamlContent.trim()==="")throw new Error("yaml is required");let workflow;try{workflow=parseWorkflowYaml(yamlContent)}catch(err){throw new Error(`failed to parse workflow YAML: ${errMessage(err)}`)}return withClient(WorkflowCommandController,serverAddress,token,async(client,callOptions)=>{try{let validation=await client.validateSpec(workflow,callOptions);return toProtoJson(ServerlessWorkflowValidationSchema,validation)}catch(err){throw rpcError(err,"workflow validation")}})}function parseWorkflowYaml(yamlContent){let raw;try{raw=(0,import_yaml.parse)(yamlContent)}catch(err){throw new Error(`invalid YAML syntax: ${errMessage(err)}`)}if(!isObject3(raw))throw new Error("missing or invalid 'spec' field");let spec=raw.spec;if(!isObject3(spec))throw new Error("missing or invalid 'spec' field");let tasks=spec.tasks;Array.isArray(tasks)&&tasks.forEach((task,i)=>{if(!isObject3(task))return;let kind=task.kind;if(typeof kind=="string"&&kind!==""&&!acceptedTaskKinds.has(kind))throw new Error(`unknown task kind "${kind}" at tasks[${i}]`)});try{return fromJson(WorkflowSchema,raw,{ignoreUnknownFields:!0})}catch(err){throw new Error(`failed to unmarshal into Workflow proto: ${errMessage(err)}`)}}function isObject3(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function errMessage(err){return err instanceof Error?err.message:String(err)}var SERVER_VERSION=process.env.STIGMER_MCP_VERSION||"dev",HTTP_SHUTDOWN_GRACE_MS=5e3,PROTECTED_RESOURCE_METADATA_PATH="/.well-known/oauth-protected-resource";function createServer(target){let server=new McpServer({name:"mcp-server-stigmer",version:SERVER_VERSION});return registerTools(server,target),registerResources(server,target),server}function createRecordsServer(target){let server=new McpServer({name:"mcp-server-stigmer-records",version:SERVER_VERSION}),tools=registerRecordTools(server,target,"agent");return log.info("tools registered (records roster)",{count:tools.length,tools}),server}function createChannelsServer(target){let server=new McpServer({name:"mcp-server-stigmer-channels",version:SERVER_VERSION}),tools=registerChannelTools(server,target);return log.info("tools registered (channels roster)",{count:tools.length,tools}),server}function registerTools(server,target){let tools=[...registerSearchTools(server,target),...registerAgentTools(server,target),...registerAgentExecutionTools(server,target),...registerMcpServerTools(server,target),...registerSkillTools(server,target),...registerWorkflowTools(server,target),...registerValidateWorkflowYamlTool(server,target),...registerTaskKindTools(server,target),...registerWorkflowExecutionTools(server,target),...registerExecutionControlTools(server,target),...registerEnvironmentTools(server,target),...registerDatastoreTools(server,target),...registerRecordTools(server,target,"direct")];log.info("tools registered",{count:tools.length,tools})}function registerResources(server,target){let resources=[...registerAgentResources(server,target),...registerMcpServerResources(server,target),...registerSkillResources(server,target),...registerWorkflowResources(server,target),...registerEnvironmentResources(server,target),...registerDatastoreResources(server,target)];log.info("resources registered",{count:resources.length,resources})}async function serveStdio(server,signal){let transport=new StdioServerTransport;return await server.connect(transport),new Promise(resolve=>{let onAbort=()=>{server.close()};signal.addEventListener("abort",onAbort,{once:!0}),server.server.onclose=()=>{signal.removeEventListener("abort",onAbort),resolve()},server.server.onerror=err=>log.error("mcp protocol error",{error:err.message})})}var RECORDS_ROUTE="/records",CHANNELS_ROUTE="/channels";function routedServerFactory(target){return path=>path===RECORDS_ROUTE?createRecordsServer(target):path===CHANNELS_ROUTE?createChannelsServer(target):createServer(target)}async function serveHttp(makeServer,cfg,signal){let sessions=new Map,httpServer=createHttpServer((req,res)=>{logAccess(req,res),routeRequest(req,res,sessions,makeServer,cfg)}),addr=`:${cfg.httpPort}`;return new Promise((resolve,reject)=>{httpServer.on("error",reject),httpServer.listen(Number(cfg.httpPort),()=>{log.info("HTTP transport listening",{addr,auth_enabled:cfg.httpAuthEnabled})}),signal.addEventListener("abort",()=>{log.info("HTTP server shutting down",{grace_period_ms:HTTP_SHUTDOWN_GRACE_MS});let force=setTimeout(()=>httpServer.closeAllConnections?.(),HTTP_SHUTDOWN_GRACE_MS);httpServer.close(err=>{clearTimeout(force);for(let transport of sessions.values())transport.close();sessions.clear(),err?reject(err):resolve()})},{once:!0})})}async function serveBoth(target,cfg,signal){let linked=new AbortController,onParentAbort=()=>linked.abort();signal.addEventListener("abort",onParentAbort,{once:!0});let tasks=[serveStdio(stdioServer(target,cfg),linked.signal),serveHttp(routedServerFactory(target),cfg,linked.signal)];try{await Promise.race(tasks)}finally{linked.abort(),await Promise.allSettled(tasks),signal.removeEventListener("abort",onParentAbort)}}async function routeRequest(req,res,sessions,makeServer,cfg){if(req.method==="GET"&&req.url==="/health"){res.writeHead(200,{"Content-Type":"application/json"}),res.end(`{"status":"ok"}
|
|
203
|
+
`);return}if(cfg.oauth.enabled&&requestPath(req)===PROTECTED_RESOURCE_METADATA_PATH){serveProtectedResourceMetadata(req,res,cfg);return}if(cfg.httpAuthEnabled){let token=extractBearerToken(req);if(token===""){let headers={"Content-Type":"text/plain"};cfg.oauth.enabled&&(headers["WWW-Authenticate"]=bearerChallenge(cfg)),res.writeHead(401,headers),res.end("missing or malformed Authorization: Bearer header");return}req.auth={token,clientId:"stigmer-mcp-passthrough",scopes:[]}}let path=requestPath(req),sessionId=headerValue(req,"mcp-session-id");if(sessionId!==void 0){let transport2=sessions.get(sessionId);if(transport2===void 0){res.writeHead(404,{"Content-Type":"text/plain"}),res.end("unknown or expired MCP session");return}await transport2.handleRequest(req,res);return}if(req.method!=="POST"){res.writeHead(400,{"Content-Type":"text/plain"}),res.end("missing Mcp-Session-Id header");return}let body=await readJsonBody(req);if(!isInitializeRequest(body)){res.writeHead(400,{"Content-Type":"text/plain"}),res.end("Bad Request: an initialize request is required to open a session");return}let transport=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),onsessioninitialized:id=>{sessions.set(id,transport)},onsessionclosed:id=>{sessions.delete(id)}});transport.onclose=()=>{transport.sessionId!==void 0&&sessions.delete(transport.sessionId)},await makeServer(path).connect(transport),await transport.handleRequest(req,res,body)}function stdioServer(target,cfg){return cfg.roster==="records"?createRecordsServer(target):cfg.roster==="channels"?createChannelsServer(target):createServer(target)}function headerValue(req,name){let v=req.headers[name];return Array.isArray(v)?v[0]:v}function readJsonBody(req){return new Promise((resolve,reject)=>{let chunks=[];req.on("data",chunk=>chunks.push(chunk)),req.on("end",()=>{let raw=Buffer.concat(chunks).toString("utf8");try{resolve(raw===""?null:JSON.parse(raw))}catch(err){reject(err)}}),req.on("error",reject)})}function requestPath(req){let url=req.url??"/",q=url.indexOf("?");return q===-1?url:url.slice(0,q)}function logAccess(req,res){let start=Date.now(),requestId=randomBytes(8).toString("hex");res.on("finish",()=>{log.info("http request",{request_id:requestId,method:req.method,path:requestPath(req),status:res.statusCode,duration_ms:Date.now()-start})})}function serveProtectedResourceMetadata(req,res,cfg){if(res.setHeader("Access-Control-Allow-Origin","*"),req.method==="OPTIONS"){res.setHeader("Access-Control-Allow-Methods","GET, OPTIONS"),res.setHeader("Access-Control-Allow-Headers","*"),res.writeHead(204),res.end();return}let metadata={resource:cfg.oauth.resource,authorization_servers:cfg.oauth.authorizationServers,bearer_methods_supported:["header"],resource_name:"Stigmer MCP Server"};cfg.oauth.scopesSupported.length>0&&(metadata.scopes_supported=cfg.oauth.scopesSupported),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify(metadata))}function bearerChallenge(cfg){let params=['realm="stigmer"',`resource_metadata="${cfg.oauth.resource.replace(/\/+$/,"")+PROTECTED_RESOURCE_METADATA_PATH}"`];return cfg.oauth.scopesSupported.length>0&¶ms.push(`scope="${cfg.oauth.scopesSupported.join(" ")}"`),"Bearer "+params.join(", ")}function extractBearerToken(req){let header=req.headers.authorization;if(!header)return"";let prefix="Bearer ";return header.startsWith(prefix)?header.slice(prefix.length).trim():""}function isNormalShutdown(err){if(err==null||err.name==="AbortError")return!0;let code=err.code;if(code==="EPIPE"||code==="ABORT_ERR"||code==="ECONNRESET")return!0;let message=err instanceof Error?err.message:String(err);return message.includes("EOF")||message.includes("broken pipe")}function defaultConfig(){return loadConfigFromEnv()}async function run(cfg,signal){configureLogger({level:cfg.logLevel,format:cfg.logFormat}),validateConfig(cfg),log.info("mcp-server-stigmer starting",{transport:cfg.transport});let target={serverAddress:cfg.stigmerServerAddress,apiKey:cfg.apiKey};try{switch(cfg.transport){case"stdio":await serveStdio(stdioServer(target,cfg),signal);break;case"http":await serveHttp(routedServerFactory(target),cfg,signal);break;case"both":await serveBoth(target,cfg,signal);break}}catch(err){if(!isNormalShutdown(err))throw log.error("mcp-server-stigmer stopped",{error:err instanceof Error?err.message:String(err)}),err}log.info("mcp-server-stigmer stopped")}var VALID_TRANSPORTS2=["stdio","http","both"];async function main(){let cfg=defaultConfig(),sub=process.argv[2];sub!==void 0&&(VALID_TRANSPORTS2.includes(sub)||(process.stderr.write(`unknown subcommand "${sub}" (expected stdio, http, or both)
|
|
204
204
|
`),process.exit(1)),cfg={...cfg,transport:sub});let controller=new AbortController,shutdown=()=>controller.abort();process.once("SIGINT",shutdown),process.once("SIGTERM",shutdown),await run(cfg,controller.signal)}main().catch(err=>{process.stderr.write(`fatal: ${err instanceof Error?err.message:String(err)}
|
|
205
205
|
`),process.exit(1)});
|