@skyramp/testbot-core 0.13.0-v3.184 → 0.13.0-v3.185
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/VERSION.json +1 -1
- package/dist/main.js +1 -1
- package/dist/post.js +1 -1
- package/package.json +1 -1
package/dist/VERSION.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.13.0-v3.
|
|
1
|
+
{"version":"0.13.0-v3.185","commit":"0263a7144589c7b1e074e77bfb8eb8cfb9e2c59a"}
|
package/dist/main.js
CHANGED
|
@@ -235,7 +235,7 @@ If the error persists, please check whether Actions and API requests are operati
|
|
|
235
235
|
`+w.slice(j,J),j=J+1),W=Z;return te+=`
|
|
236
236
|
`,w.length-j>M&&W>j?te+=w.slice(j,W)+`
|
|
237
237
|
`+w.slice(W+1):te+=w.slice(j),te.slice(1)}function Ve(w){let M="",H=0;for(let G=0;G<w.length;H>=65536?G+=2:G++){H=hr(w,G);let j=q[H];!j&&Ke(H)?(M+=w[G],H>=65536&&(M+=w[G+1])):M+=j||ie(H)}return M}function xt(w,M,H){let G="",j=w.tag;for(let J=0,W=H.length;J<W;J+=1){let Z=H[J];w.replacer&&(Z=w.replacer.call(H,String(J),Z)),(v(w,M,Z,!1,!1)||typeof Z>"u"&&v(w,M,null,!1,!1))&&(G!==""&&(G+=","+(w.condenseFlow?"":" ")),G+=w.dump)}w.tag=j,w.dump="["+G+"]"}function Cn(w,M,H,G){let j="",J=w.tag;for(let W=0,Z=H.length;W<Z;W+=1){let te=H[W];w.replacer&&(te=w.replacer.call(H,String(W),te)),(v(w,M+1,te,!0,!0,!1,!0)||typeof te>"u"&&v(w,M+1,null,!0,!0,!1,!0))&&((!G||j!=="")&&(j+=Je(w,M)),w.dump&&a===w.dump.charCodeAt(0)?j+="-":j+="- ",j+=w.dump)}w.tag=J,w.dump=j||"[]"}function js(w,M,H){let G="",j=w.tag,J=Object.keys(H);for(let W=0,Z=J.length;W<Z;W+=1){let te="";G!==""&&(te+=", "),w.condenseFlow&&(te+='"');let oe=J[W],ae=H[oe];w.replacer&&(ae=w.replacer.call(H,oe,ae)),v(w,M,oe,!1,!1)&&(w.dump.length>1024&&(te+="? "),te+=w.dump+(w.condenseFlow?'"':"")+":"+(w.condenseFlow?"":" "),v(w,M,ae,!1,!1)&&(te+=w.dump,G+=te))}w.tag=j,w.dump="{"+G+"}"}function x(w,M,H,G){let j="",J=w.tag,W=Object.keys(H);if(w.sortKeys===!0)W.sort();else if(typeof w.sortKeys=="function")W.sort(w.sortKeys);else if(w.sortKeys)throw new e("sortKeys must be a boolean or a function");for(let Z=0,te=W.length;Z<te;Z+=1){let oe="";(!G||j!=="")&&(oe+=Je(w,M));let ae=W[Z],be=H[ae];if(w.replacer&&(be=w.replacer.call(H,ae,be)),!v(w,M+1,ae,!0,!0,!0))continue;let Ue=w.tag!==null&&w.tag!=="?"||w.dump&&w.dump.length>1024;Ue&&(w.dump&&a===w.dump.charCodeAt(0)?oe+="?":oe+="? "),oe+=w.dump,Ue&&(oe+=Je(w,M)),v(w,M+1,be,!0,Ue)&&(w.dump&&a===w.dump.charCodeAt(0)?oe+=":":oe+=": ",oe+=w.dump,j+=oe)}w.tag=J,w.dump=j||"{}"}function g(w,M,H){let G=H?w.explicitTypes:w.implicitTypes;for(let j=0,J=G.length;j<J;j+=1){let W=G[j];if((W.instanceOf||W.predicate)&&(!W.instanceOf||typeof M=="object"&&M instanceof W.instanceOf)&&(!W.predicate||W.predicate(M))){if(H?W.multi&&W.representName?w.tag=W.representName(M):w.tag=W.tag:w.tag="?",W.represent){let Z=w.styleMap[W.tag]||W.defaultStyle,te;if(n.call(W.represent)==="[object Function]")te=W.represent(M,Z);else if(s.call(W.represent,Z))te=W.represent[Z](M,Z);else throw new e("!<"+W.tag+'> tag resolver accepts not "'+Z+'" style');w.dump=te}return!0}}return!1}function v(w,M,H,G,j,J,W){w.tag=null,w.dump=H,g(w,H,!1)||g(w,H,!0);let Z=n.call(w.dump),te=G;G&&(G=w.flowLevel<0||w.flowLevel>M);let oe=Z==="[object Object]"||Z==="[object Array]",ae,be;if(oe&&(ae=w.duplicates.indexOf(H),be=ae!==-1),(w.tag!==null&&w.tag!=="?"||be||w.indent!==2&&M>0)&&(j=!1),be&&w.usedDuplicates[ae])w.dump="*ref_"+ae;else{if(oe&&be&&!w.usedDuplicates[ae]&&(w.usedDuplicates[ae]=!0),Z==="[object Object]")G&&Object.keys(w.dump).length!==0?(x(w,M,w.dump,j),be&&(w.dump="&ref_"+ae+w.dump)):(js(w,M,w.dump),be&&(w.dump="&ref_"+ae+" "+w.dump));else if(Z==="[object Array]")G&&w.dump.length!==0?(w.noArrayIndent&&!W&&M>0?Cn(w,M-1,w.dump,j):Cn(w,M,w.dump,j),be&&(w.dump="&ref_"+ae+w.dump)):(xt(w,M,w.dump),be&&(w.dump="&ref_"+ae+" "+w.dump));else if(Z==="[object String]")w.tag!=="?"&&di(w,w.dump,M,J,te);else{if(Z==="[object Undefined]")return!1;if(w.skipInvalid)return!1;throw new e("unacceptable kind of an object to dump "+Z)}if(w.tag!==null&&w.tag!=="?"){let Ue=encodeURI(w.tag[0]==="!"?w.tag.slice(1):w.tag).replace(/!/g,"%21");w.tag[0]==="!"?Ue="!"+Ue:Ue.slice(0,18)==="tag:yaml.org,2002:"?Ue="!!"+Ue.slice(18):Ue="!<"+Ue+">",w.dump=Ue+" "+w.dump}}return!0}function D(w,M){let H=[],G=[];O(w,H,G);let j=G.length;for(let J=0;J<j;J+=1)M.duplicates.push(H[G[J]]);M.usedDuplicates=new Array(j)}function O(w,M,H){if(w!==null&&typeof w=="object"){let G=M.indexOf(w);if(G!==-1)H.indexOf(G)===-1&&H.push(G);else if(M.push(w),Array.isArray(w))for(let j=0,J=w.length;j<J;j+=1)O(w[j],M,H);else{let j=Object.keys(w);for(let J=0,W=j.length;J<W;J+=1)O(w[j[J]],M,H)}}}function L(w,M){M=M||{};let H=new fe(M);H.noRefs||D(w,H);let G=w;return H.replacer&&(G=H.replacer.call({"":G},"",G)),v(H,0,G,!0,!0)?H.dump+`
|
|
238
|
-
`:""}return I9.dump=L,I9}var NLe;function yMt(){if(NLe)return fo;NLe=1;let t=gMt(),e=AMt();function r(n,s){return function(){throw new Error("Function yaml."+n+" is removed in js-yaml 4. Use yaml."+s+" instead, which is now safe by default.")}}return fo.Type=Go(),fo.Schema=TLe(),fo.FAILSAFE_SCHEMA=_Le(),fo.JSON_SCHEMA=LLe(),fo.CORE_SCHEMA=FLe(),fo.DEFAULT_SCHEMA=v9(),fo.load=t.load,fo.loadAll=t.loadAll,fo.dump=e.dump,fo.YAMLException=CT(),fo.types={binary:qLe(),float:QLe(),map:BLe(),null:DLe(),pairs:zLe(),set:GLe(),timestamp:ULe(),bool:OLe(),int:MLe(),merge:$Le(),omap:HLe(),seq:PLe(),str:kLe()},fo.safeLoad=r("safeLoad","load"),fo.safeLoadAll=r("safeLoadAll","loadAll"),fo.safeDump=r("safeDump","dump"),fo}var bMt=yMt(),EMt=fMt(bMt),{Type:Tjr,Schema:kjr,FAILSAFE_SCHEMA:Pjr,JSON_SCHEMA:jLe,CORE_SCHEMA:Bjr,DEFAULT_SCHEMA:_jr,load:vu,loadAll:VLe,dump:Djr,YAMLException:Ojr,types:Mjr,safeLoad:Qjr,safeLoadAll:Ljr,safeDump:Fjr}=EMt;var mf=t=>typeof t=="string"?t:void 0;function YLe(t){let e={services:[]},r;try{let c=WLe.readFileSync(t,"utf8");r=vu(c,{schema:jLe})}catch(c){return le(`Lenient parse: failed to read/parse ${t}: ${c.message}`),e}if(!r||typeof r!="object"||Array.isArray(r))return le(`Lenient parse: ${t} did not contain a YAML object`),e;let n=r,s=n.metadata&&typeof n.metadata=="object"?n.metadata:void 0,i=s?{executorVersion:mf(s.executorVersion),mcpVersion:mf(s.mcpVersion)}:void 0,a=(Array.isArray(n.services)?n.services:[]).reduce((c,l,u)=>{if(!l||typeof l!="object"||Array.isArray(l))return le(`Lenient parse: services[${u}] is not an object \u2014 skipping`),c;let d=l,p=mf(d.serviceName);if(!p)return le(`Lenient parse: services[${u}] missing or non-string serviceName \u2014 skipping`),c;let m=d.api&&typeof d.api=="object"?d.api:void 0,f=d.runtimeDetails&&typeof d.runtimeDetails=="object"?d.runtimeDetails:void 0;return c.push({serviceName:p,language:mf(d.language),framework:mf(d.framework),testDirectory:mf(d.testDirectory),api:m?{baseUrl:mf(m.baseUrl)}:void 0,runtimeDetails:f?{serverStartCommand:mf(f.serverStartCommand),serverTeardownCommand:mf(f.serverTeardownCommand)}:void 0}),c},[]);return{metadata:i,services:a}}async function KLe(t){let e=JLe.resolve(t.workingDirectory),r=new qF(e),n=[],s=t.targetSetupCommand,i=t.targetTeardownCommand,o=t.skyrampExecutorVersion,a=t.skyrampMcpVersion;if(await r.exists()){se(`Found ${r.getConfigPath()}, loading workspace configuration...`);try{let l;try{l=await r.read()}catch(d){le(`${r.getConfigPath()} failed strict validation: ${d.message}. Re-reading with per-field lenient parse \u2014 invalid fields will fall back to action input defaults.`),l=YLe(r.getConfigPath())}l.metadata&&(!o&&l.metadata.executorVersion&&(o=l.metadata.executorVersion),!a&&l.metadata.mcpVersion&&(a=l.metadata.mcpVersion));for(let d of l.services??[])n.push({serviceName:d.serviceName,language:d.language,framework:d.framework,baseUrl:d.api?.baseUrl,testDirectory:d.testDirectory});let u=(l.services??[])[0];if(u){!s&&u.runtimeDetails?.serverStartCommand&&(s=u.runtimeDetails.serverStartCommand);let d=u.runtimeDetails?.serverTeardownCommand;!i&&typeof d=="string"&&(i=d)}}catch(l){le(`Failed to parse ${r.getConfigPath()}: ${l.message} \u2014 falling back to action input defaults`)}}else Ea("No .skyramp/workspace.yml found, using action input defaults");o||(o="v1.3.53"),a||(a="latest"),s||(s="docker compose up -d --build");let c={targetSetupCommand:s,authTokenCommand:t.authTokenCommand,targetTeardownCommand:i,skipTargetTeardown:t.skipTargetTeardown,skyrampExecutorVersion:o,skyrampMcpVersion:a,skyrampMcpSource:t.skyrampMcpSource,skyrampMcpGithubRef:t.skyrampMcpGithubRef,nodeVersion:t.nodeVersion,skipTargetSetup:t.skipTargetSetup,targetReadyCheckCommand:t.targetReadyCheckCommand,targetReadyCheckTimeout:t.targetReadyCheckTimeout,targetReadyCheckInterval:t.targetReadyCheckInterval,targetReadyCheckDiagnosticsCommand:t.targetReadyCheckDiagnosticsCommand,autoCommit:t.autoCommit,commitMessage:t.commitMessage,generatedTestsMode:t.generatedTestsMode,postPrComment:t.postPrComment,testExecutionTimeout:t.testExecutionTimeout,maxRecommendations:t.maxRecommendations,maxGenerate:t.maxGenerate,perTestMaxFixAttempts:t.perTestMaxFixAttempts,testbotMaxRetries:t.testbotMaxRetries,testbotRetryDelay:t.testbotRetryDelay,testbotTimeout:t.testbotTimeout,targetSetupRetries:t.targetSetupRetries,targetSetupRetryDelay:t.targetSetupRetryDelay,authTokenRetries:t.authTokenRetries,authTokenRetryDelay:t.authTokenRetryDelay,reportCollapsed:t.reportCollapsed,language:t.language,enableDebug:t.enableDebug,testRepoPath:t.testRepoPath,relatedRepoPaths:t.relatedRepoPaths,services:n};SS("Resolved configuration");for(let[l,u]of Object.entries(c))l==="authTokenCommand"?se(` ${l}: [REDACTED]`):l==="services"?se(` ${l}: ${JSON.stringify(u)}`):se(` ${l}: ${u}`);return CS(),c}ft();var LE=F(require("fs")),Zo=F(require("path"));ft();var aP=F(require("path"),1);ft();b0();ft();var pC=F(require("fs"),1);ft();function R9(t){let e={followSymbolicLinks:!0,implicitDescendants:!0,matchDirectories:!0,omitBrokenSymbolicLinks:!0,excludeHiddenFiles:!1};return t&&(typeof t.followSymbolicLinks=="boolean"&&(e.followSymbolicLinks=t.followSymbolicLinks,re(`followSymbolicLinks '${e.followSymbolicLinks}'`)),typeof t.implicitDescendants=="boolean"&&(e.implicitDescendants=t.implicitDescendants,re(`implicitDescendants '${e.implicitDescendants}'`)),typeof t.matchDirectories=="boolean"&&(e.matchDirectories=t.matchDirectories,re(`matchDirectories '${e.matchDirectories}'`)),typeof t.omitBrokenSymbolicLinks=="boolean"&&(e.omitBrokenSymbolicLinks=t.omitBrokenSymbolicLinks,re(`omitBrokenSymbolicLinks '${e.omitBrokenSymbolicLinks}'`)),typeof t.excludeHiddenFiles=="boolean"&&(e.excludeHiddenFiles=t.excludeHiddenFiles,re(`excludeHiddenFiles '${e.excludeHiddenFiles}'`))),e}var YF=F(require("path"),1);var lC=F(require("path"),1),Ng=F(require("assert"),1),Tg=process.platform==="win32";function hf(t){if(t=ff(t),Tg&&/^\\\\[^\\]+(\\[^\\]+)?$/.test(t))return t;let e=lC.dirname(t);return Tg&&/^\\\\[^\\]+\\[^\\]+\\$/.test(e)&&(e=ff(e)),e}function zF(t,e){if((0,Ng.default)(t,"ensureAbsoluteRoot parameter 'root' must not be empty"),(0,Ng.default)(e,"ensureAbsoluteRoot parameter 'itemPath' must not be empty"),vT(e))return e;if(Tg){if(e.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)){let r=process.cwd();return(0,Ng.default)(r.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${r}'`),e[0].toUpperCase()===r[0].toUpperCase()?e.length===2?`${e[0]}:\\${r.substr(3)}`:(r.endsWith("\\")||(r+="\\"),`${e[0]}:\\${r.substr(3)}${e.substr(2)}`):`${e[0]}:\\${e.substr(2)}`}else if(Ru(e).match(/^\\$|^\\[^\\]/)){let r=process.cwd();return(0,Ng.default)(r.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${r}'`),`${r[0]}:\\${e.substr(1)}`}}return(0,Ng.default)(vT(t),"ensureAbsoluteRoot parameter 'root' must have an absolute root"),t.endsWith("/")||Tg&&t.endsWith("\\")||(t+=lC.sep),t+e}function vT(t){return(0,Ng.default)(t,"hasAbsoluteRoot parameter 'itemPath' must not be empty"),t=Ru(t),Tg?t.startsWith("\\\\")||/^[A-Z]:\\/i.test(t):t.startsWith("/")}function RT(t){return(0,Ng.default)(t,"isRooted parameter 'itemPath' must not be empty"),t=Ru(t),Tg?t.startsWith("\\")||/^[A-Z]:/i.test(t):t.startsWith("/")}function Ru(t){return t=t||"",Tg?(t=t.replace(/\//g,"\\"),(/^\\\\+[^\\]/.test(t)?"\\":"")+t.replace(/\\\\+/g,"\\")):t.replace(/\/\/+/g,"/")}function ff(t){return t?(t=Ru(t),!t.endsWith(lC.sep)||t===lC.sep||Tg&&/^[A-Z]:\\$/i.test(t)?t:t.substr(0,t.length-1)):""}var Nu;(function(t){t[t.None=0]="None",t[t.Directory=1]="Directory",t[t.File=2]="File",t[t.All=3]="All"})(Nu||(Nu={}));var XLe=process.platform==="win32";function T9(t){t=t.filter(n=>!n.negate);let e={};for(let n of t){let s=XLe?n.searchPath.toUpperCase():n.searchPath;e[s]="candidate"}let r=[];for(let n of t){let s=XLe?n.searchPath.toUpperCase():n.searchPath;if(e[s]==="included")continue;let i=!1,o=s,a=hf(o);for(;a!==o;){if(e[a]){i=!0;break}o=a,a=hf(o)}i||(r.push(n.searchPath),e[s]="included")}return r}function ZLe(t,e){let r=Nu.None;for(let n of t)n.negate?r&=~n.match(e):r|=n.match(e);return r}function eFe(t,e){return t.some(r=>!r.negate&&r.partialMatch(e))}var EFe=F(require("os"),1),dC=F(require("path"),1);var Pg=F(require("assert"),1),wFe=F(bFe(),1);var Zb=F(require("path"),1);var uC=F(require("assert"),1),YMt=process.platform==="win32",eE=class{constructor(e){if(this.segments=[],typeof e=="string")if((0,uC.default)(e,"Parameter 'itemPath' must not be empty"),e=ff(e),!RT(e))this.segments=e.split(Zb.sep);else{let r=e,n=hf(r);for(;n!==r;){let s=Zb.basename(r);this.segments.unshift(s),r=n,n=hf(r)}this.segments.unshift(r)}else{(0,uC.default)(e.length>0,"Parameter 'itemPath' must not be an empty array");for(let r=0;r<e.length;r++){let n=e[r];(0,uC.default)(n,"Parameter 'itemPath' must not contain any empty segments"),n=Ru(e[r]),r===0&&RT(n)?(n=ff(n),(0,uC.default)(n===hf(n),"Parameter 'itemPath' root segment contains information for multiple segments"),this.segments.push(n)):((0,uC.default)(!n.includes(Zb.sep),"Parameter 'itemPath' contains unexpected path separators"),this.segments.push(n))}}}toString(){let e=this.segments[0],r=e.endsWith(Zb.sep)||YMt&&/^[A-Z]:$/i.test(e);for(let n=1;n<this.segments.length;n++)r?r=!1:e+=Zb.sep,e+=this.segments[n];return e}};var{Minimatch:JMt}=wFe.default,gf=process.platform==="win32",kT=class t{constructor(e,r=!1,n,s){this.negate=!1;let i;if(typeof e=="string")i=e.trim();else{n=n||[],(0,Pg.default)(n.length,"Parameter 'segments' must not empty");let l=t.getLiteral(n[0]);(0,Pg.default)(l&&vT(l),"Parameter 'segments' first element must be a root path"),i=new eE(n).toString().trim(),e&&(i=`!${i}`)}for(;i.startsWith("!");)this.negate=!this.negate,i=i.substr(1).trim();i=t.fixupPattern(i,s),this.segments=new eE(i).segments,this.trailingSeparator=Ru(i).endsWith(dC.sep),i=ff(i);let o=!1,a=this.segments.map(l=>t.getLiteral(l)).filter(l=>!o&&!(o=l===""));this.searchPath=new eE(a).toString(),this.rootRegExp=new RegExp(t.regExpEscape(a[0]),gf?"i":""),this.isImplicitPattern=r;let c={dot:!0,nobrace:!0,nocase:gf,nocomment:!0,noext:!0,nonegate:!0};i=gf?i.replace(/\\/g,"/"):i,this.minimatch=new JMt(i,c)}match(e){return this.segments[this.segments.length-1]==="**"?(e=Ru(e),!e.endsWith(dC.sep)&&this.isImplicitPattern===!1&&(e=`${e}${dC.sep}`)):e=ff(e),this.minimatch.match(e)?this.trailingSeparator?Nu.Directory:Nu.All:Nu.None}partialMatch(e){return e=ff(e),hf(e)===e?this.rootRegExp.test(e):this.minimatch.matchOne(e.split(gf?/\\+/:/\/+/),this.minimatch.set[0],!0)}static globEscape(e){return(gf?e:e.replace(/\\/g,"\\\\")).replace(/(\[)(?=[^/]+\])/g,"[[]").replace(/\?/g,"[?]").replace(/\*/g,"[*]")}static fixupPattern(e,r){(0,Pg.default)(e,"pattern cannot be empty");let n=new eE(e).segments.map(s=>t.getLiteral(s));if((0,Pg.default)(n.every((s,i)=>(s!=="."||i===0)&&s!==".."),`Invalid pattern '${e}'. Relative pathing '.' and '..' is not allowed.`),(0,Pg.default)(!RT(e)||n[0],`Invalid pattern '${e}'. Root segment must not contain globs.`),e=Ru(e),e==="."||e.startsWith(`.${dC.sep}`))e=t.globEscape(process.cwd())+e.substr(1);else if(e==="~"||e.startsWith(`~${dC.sep}`))r=r||EFe.homedir(),(0,Pg.default)(r,"Unable to determine HOME directory"),(0,Pg.default)(vT(r),`Expected HOME directory to be a rooted path. Actual '${r}'`),e=t.globEscape(r)+e.substr(1);else if(gf&&(e.match(/^[A-Z]:$/i)||e.match(/^[A-Z]:[^\\]/i))){let s=zF("C:\\dummy-root",e.substr(0,2));e.length>2&&!s.endsWith("\\")&&(s+="\\"),e=t.globEscape(s)+e.substr(2)}else if(gf&&(e==="\\"||e.match(/^\\[^\\]/))){let s=zF("C:\\dummy-root","\\");s.endsWith("\\")||(s+="\\"),e=t.globEscape(s)+e.substr(1)}else e=zF(t.globEscape(process.cwd()),e);return Ru(e)}static getLiteral(e){let r="";for(let n=0;n<e.length;n++){let s=e[n];if(s==="\\"&&!gf&&n+1<e.length){r+=e[++n];continue}else{if(s==="*"||s==="?")return"";if(s==="["&&n+1<e.length){let i="",o=-1;for(let a=n+1;a<e.length;a++){let c=e[a];if(c==="\\"&&!gf&&a+1<e.length){i+=e[++a];continue}else if(c==="]"){o=a;break}else i+=c}if(o>=0){if(i.length>1)return"";if(i){r+=i,n=o;continue}}}}r+=s}return r}static regExpEscape(e){return e.replace(/[[\\^$.|?*+()]/g,"\\$&")}};var PT=class{constructor(e,r){this.path=e,this.level=r}};var M9=function(t,e,r,n){function s(i){return i instanceof r?i:new r(function(o){o(i)})}return new(r||(r=Promise))(function(i,o){function a(u){try{l(n.next(u))}catch(d){o(d)}}function c(u){try{l(n.throw(u))}catch(d){o(d)}}function l(u){u.done?i(u.value):s(u.value).then(a,c)}l((n=n.apply(t,e||[])).next())})},KMt=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=t[i]&&function(o){return new Promise(function(a,c){o=t[i](o),s(a,c,o.done,o.value)})}}function s(i,o,a,c){Promise.resolve(c).then(function(l){i({value:l,done:a})},o)}},Bg=function(t){return this instanceof Bg?(this.v=t,this):new Bg(t)},XMt=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),s,i=[];return s=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),s[Symbol.asyncIterator]=function(){return this},s;function o(m){return function(f){return Promise.resolve(f).then(m,d)}}function a(m,f){n[m]&&(s[m]=function(h){return new Promise(function(E,b){i.push([m,h,E,b])>1||c(m,h)})},f&&(s[m]=f(s[m])))}function c(m,f){try{l(n[m](f))}catch(h){p(i[0][3],h)}}function l(m){m.value instanceof Bg?Promise.resolve(m.value.v).then(u,d):p(i[0][2],m)}function u(m){c("next",m)}function d(m){c("throw",m)}function p(m,f){m(f),i.shift(),i.length&&c(i[0][0],i[0][1])}},ZMt=process.platform==="win32",WF=class t{constructor(e){this.patterns=[],this.searchPaths=[],this.options=R9(e)}getSearchPaths(){return this.searchPaths.slice()}glob(){return M9(this,void 0,void 0,function*(){var e,r,n,s;let i=[];try{for(var o=!0,a=KMt(this.globGenerator()),c;c=yield a.next(),e=c.done,!e;o=!0){s=c.value,o=!1;let l=s;i.push(l)}}catch(l){r={error:l}}finally{try{!o&&!e&&(n=a.return)&&(yield n.call(a))}finally{if(r)throw r.error}}return i})}globGenerator(){return XMt(this,arguments,function*(){let r=R9(this.options),n=[];for(let o of this.patterns)n.push(o),r.implicitDescendants&&(o.trailingSeparator||o.segments[o.segments.length-1]!=="**")&&n.push(new kT(o.negate,!0,o.segments.concat("**")));let s=[];for(let o of T9(n)){re(`Search path '${o}'`);try{yield Bg(pC.promises.lstat(o))}catch(a){if(a.code==="ENOENT")continue;throw a}s.unshift(new PT(o,1))}let i=[];for(;s.length;){let o=s.pop(),a=ZLe(n,o.path),c=!!a||eFe(n,o.path);if(!a&&!c)continue;let l=yield Bg(t.stat(o,r,i));if(l&&!(r.excludeHiddenFiles&&YF.basename(o.path).match(/^\./)))if(l.isDirectory()){if(a&Nu.Directory&&r.matchDirectories)yield yield Bg(o.path);else if(!c)continue;let u=o.level+1,d=(yield Bg(pC.promises.readdir(o.path))).map(p=>new PT(YF.join(o.path,p),u));s.push(...d.reverse())}else a&Nu.File&&(yield yield Bg(o.path))}})}static create(e,r){return M9(this,void 0,void 0,function*(){let n=new t(r);ZMt&&(e=e.replace(/\r\n/g,`
|
|
238
|
+
`:""}return I9.dump=L,I9}var NLe;function yMt(){if(NLe)return fo;NLe=1;let t=gMt(),e=AMt();function r(n,s){return function(){throw new Error("Function yaml."+n+" is removed in js-yaml 4. Use yaml."+s+" instead, which is now safe by default.")}}return fo.Type=Go(),fo.Schema=TLe(),fo.FAILSAFE_SCHEMA=_Le(),fo.JSON_SCHEMA=LLe(),fo.CORE_SCHEMA=FLe(),fo.DEFAULT_SCHEMA=v9(),fo.load=t.load,fo.loadAll=t.loadAll,fo.dump=e.dump,fo.YAMLException=CT(),fo.types={binary:qLe(),float:QLe(),map:BLe(),null:DLe(),pairs:zLe(),set:GLe(),timestamp:ULe(),bool:OLe(),int:MLe(),merge:$Le(),omap:HLe(),seq:PLe(),str:kLe()},fo.safeLoad=r("safeLoad","load"),fo.safeLoadAll=r("safeLoadAll","loadAll"),fo.safeDump=r("safeDump","dump"),fo}var bMt=yMt(),EMt=fMt(bMt),{Type:Tjr,Schema:kjr,FAILSAFE_SCHEMA:Pjr,JSON_SCHEMA:jLe,CORE_SCHEMA:Bjr,DEFAULT_SCHEMA:_jr,load:vu,loadAll:VLe,dump:Djr,YAMLException:Ojr,types:Mjr,safeLoad:Qjr,safeLoadAll:Ljr,safeDump:Fjr}=EMt;var mf=t=>typeof t=="string"?t:void 0;function YLe(t){let e={services:[]},r;try{let c=WLe.readFileSync(t,"utf8");r=vu(c,{schema:jLe})}catch(c){return le(`Lenient parse: failed to read/parse ${t}: ${c.message}`),e}if(!r||typeof r!="object"||Array.isArray(r))return le(`Lenient parse: ${t} did not contain a YAML object`),e;let n=r,s=n.metadata&&typeof n.metadata=="object"?n.metadata:void 0,i=s?{executorVersion:mf(s.executorVersion),mcpVersion:mf(s.mcpVersion)}:void 0,a=(Array.isArray(n.services)?n.services:[]).reduce((c,l,u)=>{if(!l||typeof l!="object"||Array.isArray(l))return le(`Lenient parse: services[${u}] is not an object \u2014 skipping`),c;let d=l,p=mf(d.serviceName);if(!p)return le(`Lenient parse: services[${u}] missing or non-string serviceName \u2014 skipping`),c;let m=d.api&&typeof d.api=="object"?d.api:void 0,f=d.runtimeDetails&&typeof d.runtimeDetails=="object"?d.runtimeDetails:void 0;return c.push({serviceName:p,language:mf(d.language),framework:mf(d.framework),testDirectory:mf(d.testDirectory),api:m?{baseUrl:mf(m.baseUrl)}:void 0,runtimeDetails:f?{serverStartCommand:mf(f.serverStartCommand),serverTeardownCommand:mf(f.serverTeardownCommand)}:void 0}),c},[]);return{metadata:i,services:a}}async function KLe(t){let e=JLe.resolve(t.workingDirectory),r=new qF(e),n=[],s=t.targetSetupCommand,i=t.targetTeardownCommand,o=t.skyrampExecutorVersion,a=t.skyrampMcpVersion;if(await r.exists()){se(`Found ${r.getConfigPath()}, loading workspace configuration...`);try{let l;try{l=await r.read()}catch(d){le(`${r.getConfigPath()} failed strict validation: ${d.message}. Re-reading with per-field lenient parse \u2014 invalid fields will fall back to action input defaults.`),l=YLe(r.getConfigPath())}l.metadata&&(!o&&l.metadata.executorVersion&&(o=l.metadata.executorVersion),!a&&l.metadata.mcpVersion&&(a=l.metadata.mcpVersion));for(let d of l.services??[])n.push({serviceName:d.serviceName,language:d.language,framework:d.framework,baseUrl:d.api?.baseUrl,testDirectory:d.testDirectory});let u=(l.services??[])[0];if(u){!s&&u.runtimeDetails?.serverStartCommand&&(s=u.runtimeDetails.serverStartCommand);let d=u.runtimeDetails?.serverTeardownCommand;!i&&typeof d=="string"&&(i=d)}}catch(l){le(`Failed to parse ${r.getConfigPath()}: ${l.message} \u2014 falling back to action input defaults`)}}else Ea("No .skyramp/workspace.yml found, using action input defaults");o||(o="v1.3.54"),a||(a="latest"),s||(s="docker compose up -d --build");let c={targetSetupCommand:s,authTokenCommand:t.authTokenCommand,targetTeardownCommand:i,skipTargetTeardown:t.skipTargetTeardown,skyrampExecutorVersion:o,skyrampMcpVersion:a,skyrampMcpSource:t.skyrampMcpSource,skyrampMcpGithubRef:t.skyrampMcpGithubRef,nodeVersion:t.nodeVersion,skipTargetSetup:t.skipTargetSetup,targetReadyCheckCommand:t.targetReadyCheckCommand,targetReadyCheckTimeout:t.targetReadyCheckTimeout,targetReadyCheckInterval:t.targetReadyCheckInterval,targetReadyCheckDiagnosticsCommand:t.targetReadyCheckDiagnosticsCommand,autoCommit:t.autoCommit,commitMessage:t.commitMessage,generatedTestsMode:t.generatedTestsMode,postPrComment:t.postPrComment,testExecutionTimeout:t.testExecutionTimeout,maxRecommendations:t.maxRecommendations,maxGenerate:t.maxGenerate,perTestMaxFixAttempts:t.perTestMaxFixAttempts,testbotMaxRetries:t.testbotMaxRetries,testbotRetryDelay:t.testbotRetryDelay,testbotTimeout:t.testbotTimeout,targetSetupRetries:t.targetSetupRetries,targetSetupRetryDelay:t.targetSetupRetryDelay,authTokenRetries:t.authTokenRetries,authTokenRetryDelay:t.authTokenRetryDelay,reportCollapsed:t.reportCollapsed,language:t.language,enableDebug:t.enableDebug,testRepoPath:t.testRepoPath,relatedRepoPaths:t.relatedRepoPaths,services:n};SS("Resolved configuration");for(let[l,u]of Object.entries(c))l==="authTokenCommand"?se(` ${l}: [REDACTED]`):l==="services"?se(` ${l}: ${JSON.stringify(u)}`):se(` ${l}: ${u}`);return CS(),c}ft();var LE=F(require("fs")),Zo=F(require("path"));ft();var aP=F(require("path"),1);ft();b0();ft();var pC=F(require("fs"),1);ft();function R9(t){let e={followSymbolicLinks:!0,implicitDescendants:!0,matchDirectories:!0,omitBrokenSymbolicLinks:!0,excludeHiddenFiles:!1};return t&&(typeof t.followSymbolicLinks=="boolean"&&(e.followSymbolicLinks=t.followSymbolicLinks,re(`followSymbolicLinks '${e.followSymbolicLinks}'`)),typeof t.implicitDescendants=="boolean"&&(e.implicitDescendants=t.implicitDescendants,re(`implicitDescendants '${e.implicitDescendants}'`)),typeof t.matchDirectories=="boolean"&&(e.matchDirectories=t.matchDirectories,re(`matchDirectories '${e.matchDirectories}'`)),typeof t.omitBrokenSymbolicLinks=="boolean"&&(e.omitBrokenSymbolicLinks=t.omitBrokenSymbolicLinks,re(`omitBrokenSymbolicLinks '${e.omitBrokenSymbolicLinks}'`)),typeof t.excludeHiddenFiles=="boolean"&&(e.excludeHiddenFiles=t.excludeHiddenFiles,re(`excludeHiddenFiles '${e.excludeHiddenFiles}'`))),e}var YF=F(require("path"),1);var lC=F(require("path"),1),Ng=F(require("assert"),1),Tg=process.platform==="win32";function hf(t){if(t=ff(t),Tg&&/^\\\\[^\\]+(\\[^\\]+)?$/.test(t))return t;let e=lC.dirname(t);return Tg&&/^\\\\[^\\]+\\[^\\]+\\$/.test(e)&&(e=ff(e)),e}function zF(t,e){if((0,Ng.default)(t,"ensureAbsoluteRoot parameter 'root' must not be empty"),(0,Ng.default)(e,"ensureAbsoluteRoot parameter 'itemPath' must not be empty"),vT(e))return e;if(Tg){if(e.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)){let r=process.cwd();return(0,Ng.default)(r.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${r}'`),e[0].toUpperCase()===r[0].toUpperCase()?e.length===2?`${e[0]}:\\${r.substr(3)}`:(r.endsWith("\\")||(r+="\\"),`${e[0]}:\\${r.substr(3)}${e.substr(2)}`):`${e[0]}:\\${e.substr(2)}`}else if(Ru(e).match(/^\\$|^\\[^\\]/)){let r=process.cwd();return(0,Ng.default)(r.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${r}'`),`${r[0]}:\\${e.substr(1)}`}}return(0,Ng.default)(vT(t),"ensureAbsoluteRoot parameter 'root' must have an absolute root"),t.endsWith("/")||Tg&&t.endsWith("\\")||(t+=lC.sep),t+e}function vT(t){return(0,Ng.default)(t,"hasAbsoluteRoot parameter 'itemPath' must not be empty"),t=Ru(t),Tg?t.startsWith("\\\\")||/^[A-Z]:\\/i.test(t):t.startsWith("/")}function RT(t){return(0,Ng.default)(t,"isRooted parameter 'itemPath' must not be empty"),t=Ru(t),Tg?t.startsWith("\\")||/^[A-Z]:/i.test(t):t.startsWith("/")}function Ru(t){return t=t||"",Tg?(t=t.replace(/\//g,"\\"),(/^\\\\+[^\\]/.test(t)?"\\":"")+t.replace(/\\\\+/g,"\\")):t.replace(/\/\/+/g,"/")}function ff(t){return t?(t=Ru(t),!t.endsWith(lC.sep)||t===lC.sep||Tg&&/^[A-Z]:\\$/i.test(t)?t:t.substr(0,t.length-1)):""}var Nu;(function(t){t[t.None=0]="None",t[t.Directory=1]="Directory",t[t.File=2]="File",t[t.All=3]="All"})(Nu||(Nu={}));var XLe=process.platform==="win32";function T9(t){t=t.filter(n=>!n.negate);let e={};for(let n of t){let s=XLe?n.searchPath.toUpperCase():n.searchPath;e[s]="candidate"}let r=[];for(let n of t){let s=XLe?n.searchPath.toUpperCase():n.searchPath;if(e[s]==="included")continue;let i=!1,o=s,a=hf(o);for(;a!==o;){if(e[a]){i=!0;break}o=a,a=hf(o)}i||(r.push(n.searchPath),e[s]="included")}return r}function ZLe(t,e){let r=Nu.None;for(let n of t)n.negate?r&=~n.match(e):r|=n.match(e);return r}function eFe(t,e){return t.some(r=>!r.negate&&r.partialMatch(e))}var EFe=F(require("os"),1),dC=F(require("path"),1);var Pg=F(require("assert"),1),wFe=F(bFe(),1);var Zb=F(require("path"),1);var uC=F(require("assert"),1),YMt=process.platform==="win32",eE=class{constructor(e){if(this.segments=[],typeof e=="string")if((0,uC.default)(e,"Parameter 'itemPath' must not be empty"),e=ff(e),!RT(e))this.segments=e.split(Zb.sep);else{let r=e,n=hf(r);for(;n!==r;){let s=Zb.basename(r);this.segments.unshift(s),r=n,n=hf(r)}this.segments.unshift(r)}else{(0,uC.default)(e.length>0,"Parameter 'itemPath' must not be an empty array");for(let r=0;r<e.length;r++){let n=e[r];(0,uC.default)(n,"Parameter 'itemPath' must not contain any empty segments"),n=Ru(e[r]),r===0&&RT(n)?(n=ff(n),(0,uC.default)(n===hf(n),"Parameter 'itemPath' root segment contains information for multiple segments"),this.segments.push(n)):((0,uC.default)(!n.includes(Zb.sep),"Parameter 'itemPath' contains unexpected path separators"),this.segments.push(n))}}}toString(){let e=this.segments[0],r=e.endsWith(Zb.sep)||YMt&&/^[A-Z]:$/i.test(e);for(let n=1;n<this.segments.length;n++)r?r=!1:e+=Zb.sep,e+=this.segments[n];return e}};var{Minimatch:JMt}=wFe.default,gf=process.platform==="win32",kT=class t{constructor(e,r=!1,n,s){this.negate=!1;let i;if(typeof e=="string")i=e.trim();else{n=n||[],(0,Pg.default)(n.length,"Parameter 'segments' must not empty");let l=t.getLiteral(n[0]);(0,Pg.default)(l&&vT(l),"Parameter 'segments' first element must be a root path"),i=new eE(n).toString().trim(),e&&(i=`!${i}`)}for(;i.startsWith("!");)this.negate=!this.negate,i=i.substr(1).trim();i=t.fixupPattern(i,s),this.segments=new eE(i).segments,this.trailingSeparator=Ru(i).endsWith(dC.sep),i=ff(i);let o=!1,a=this.segments.map(l=>t.getLiteral(l)).filter(l=>!o&&!(o=l===""));this.searchPath=new eE(a).toString(),this.rootRegExp=new RegExp(t.regExpEscape(a[0]),gf?"i":""),this.isImplicitPattern=r;let c={dot:!0,nobrace:!0,nocase:gf,nocomment:!0,noext:!0,nonegate:!0};i=gf?i.replace(/\\/g,"/"):i,this.minimatch=new JMt(i,c)}match(e){return this.segments[this.segments.length-1]==="**"?(e=Ru(e),!e.endsWith(dC.sep)&&this.isImplicitPattern===!1&&(e=`${e}${dC.sep}`)):e=ff(e),this.minimatch.match(e)?this.trailingSeparator?Nu.Directory:Nu.All:Nu.None}partialMatch(e){return e=ff(e),hf(e)===e?this.rootRegExp.test(e):this.minimatch.matchOne(e.split(gf?/\\+/:/\/+/),this.minimatch.set[0],!0)}static globEscape(e){return(gf?e:e.replace(/\\/g,"\\\\")).replace(/(\[)(?=[^/]+\])/g,"[[]").replace(/\?/g,"[?]").replace(/\*/g,"[*]")}static fixupPattern(e,r){(0,Pg.default)(e,"pattern cannot be empty");let n=new eE(e).segments.map(s=>t.getLiteral(s));if((0,Pg.default)(n.every((s,i)=>(s!=="."||i===0)&&s!==".."),`Invalid pattern '${e}'. Relative pathing '.' and '..' is not allowed.`),(0,Pg.default)(!RT(e)||n[0],`Invalid pattern '${e}'. Root segment must not contain globs.`),e=Ru(e),e==="."||e.startsWith(`.${dC.sep}`))e=t.globEscape(process.cwd())+e.substr(1);else if(e==="~"||e.startsWith(`~${dC.sep}`))r=r||EFe.homedir(),(0,Pg.default)(r,"Unable to determine HOME directory"),(0,Pg.default)(vT(r),`Expected HOME directory to be a rooted path. Actual '${r}'`),e=t.globEscape(r)+e.substr(1);else if(gf&&(e.match(/^[A-Z]:$/i)||e.match(/^[A-Z]:[^\\]/i))){let s=zF("C:\\dummy-root",e.substr(0,2));e.length>2&&!s.endsWith("\\")&&(s+="\\"),e=t.globEscape(s)+e.substr(2)}else if(gf&&(e==="\\"||e.match(/^\\[^\\]/))){let s=zF("C:\\dummy-root","\\");s.endsWith("\\")||(s+="\\"),e=t.globEscape(s)+e.substr(1)}else e=zF(t.globEscape(process.cwd()),e);return Ru(e)}static getLiteral(e){let r="";for(let n=0;n<e.length;n++){let s=e[n];if(s==="\\"&&!gf&&n+1<e.length){r+=e[++n];continue}else{if(s==="*"||s==="?")return"";if(s==="["&&n+1<e.length){let i="",o=-1;for(let a=n+1;a<e.length;a++){let c=e[a];if(c==="\\"&&!gf&&a+1<e.length){i+=e[++a];continue}else if(c==="]"){o=a;break}else i+=c}if(o>=0){if(i.length>1)return"";if(i){r+=i,n=o;continue}}}}r+=s}return r}static regExpEscape(e){return e.replace(/[[\\^$.|?*+()]/g,"\\$&")}};var PT=class{constructor(e,r){this.path=e,this.level=r}};var M9=function(t,e,r,n){function s(i){return i instanceof r?i:new r(function(o){o(i)})}return new(r||(r=Promise))(function(i,o){function a(u){try{l(n.next(u))}catch(d){o(d)}}function c(u){try{l(n.throw(u))}catch(d){o(d)}}function l(u){u.done?i(u.value):s(u.value).then(a,c)}l((n=n.apply(t,e||[])).next())})},KMt=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=t[i]&&function(o){return new Promise(function(a,c){o=t[i](o),s(a,c,o.done,o.value)})}}function s(i,o,a,c){Promise.resolve(c).then(function(l){i({value:l,done:a})},o)}},Bg=function(t){return this instanceof Bg?(this.v=t,this):new Bg(t)},XMt=function(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),s,i=[];return s=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),s[Symbol.asyncIterator]=function(){return this},s;function o(m){return function(f){return Promise.resolve(f).then(m,d)}}function a(m,f){n[m]&&(s[m]=function(h){return new Promise(function(E,b){i.push([m,h,E,b])>1||c(m,h)})},f&&(s[m]=f(s[m])))}function c(m,f){try{l(n[m](f))}catch(h){p(i[0][3],h)}}function l(m){m.value instanceof Bg?Promise.resolve(m.value.v).then(u,d):p(i[0][2],m)}function u(m){c("next",m)}function d(m){c("throw",m)}function p(m,f){m(f),i.shift(),i.length&&c(i[0][0],i[0][1])}},ZMt=process.platform==="win32",WF=class t{constructor(e){this.patterns=[],this.searchPaths=[],this.options=R9(e)}getSearchPaths(){return this.searchPaths.slice()}glob(){return M9(this,void 0,void 0,function*(){var e,r,n,s;let i=[];try{for(var o=!0,a=KMt(this.globGenerator()),c;c=yield a.next(),e=c.done,!e;o=!0){s=c.value,o=!1;let l=s;i.push(l)}}catch(l){r={error:l}}finally{try{!o&&!e&&(n=a.return)&&(yield n.call(a))}finally{if(r)throw r.error}}return i})}globGenerator(){return XMt(this,arguments,function*(){let r=R9(this.options),n=[];for(let o of this.patterns)n.push(o),r.implicitDescendants&&(o.trailingSeparator||o.segments[o.segments.length-1]!=="**")&&n.push(new kT(o.negate,!0,o.segments.concat("**")));let s=[];for(let o of T9(n)){re(`Search path '${o}'`);try{yield Bg(pC.promises.lstat(o))}catch(a){if(a.code==="ENOENT")continue;throw a}s.unshift(new PT(o,1))}let i=[];for(;s.length;){let o=s.pop(),a=ZLe(n,o.path),c=!!a||eFe(n,o.path);if(!a&&!c)continue;let l=yield Bg(t.stat(o,r,i));if(l&&!(r.excludeHiddenFiles&&YF.basename(o.path).match(/^\./)))if(l.isDirectory()){if(a&Nu.Directory&&r.matchDirectories)yield yield Bg(o.path);else if(!c)continue;let u=o.level+1,d=(yield Bg(pC.promises.readdir(o.path))).map(p=>new PT(YF.join(o.path,p),u));s.push(...d.reverse())}else a&Nu.File&&(yield yield Bg(o.path))}})}static create(e,r){return M9(this,void 0,void 0,function*(){let n=new t(r);ZMt&&(e=e.replace(/\r\n/g,`
|
|
239
239
|
`),e=e.replace(/\r/g,`
|
|
240
240
|
`));let s=e.split(`
|
|
241
241
|
`).map(i=>i.trim());for(let i of s)!i||i.startsWith("#")||n.patterns.push(new kT(i));return n.searchPaths.push(...T9(n.patterns)),n})}static stat(e,r,n){return M9(this,void 0,void 0,function*(){let s;if(r.followSymbolicLinks)try{s=yield pC.promises.stat(e.path)}catch(i){if(i.code==="ENOENT"){if(r.omitBrokenSymbolicLinks){re(`Broken symlink '${e.path}'`);return}throw new Error(`No information found for the path '${e.path}'. This may indicate a broken symbolic link.`)}throw i}else s=yield pC.promises.lstat(e.path);if(s.isDirectory()&&r.followSymbolicLinks){let i=yield pC.promises.realpath(e.path);for(;n.length>=e.level;)n.pop();if(n.some(o=>o===i)){re(`Symlink cycle detected for path '${e.path}' and realpath '${i}'`);return}n.push(i)}return s})}};ft();var eQt=function(t,e,r,n){function s(i){return i instanceof r?i:new r(function(o){o(i)})}return new(r||(r=Promise))(function(i,o){function a(u){try{l(n.next(u))}catch(d){o(d)}}function c(u){try{l(n.throw(u))}catch(d){o(d)}}function l(u){u.done?i(u.value):s(u.value).then(a,c)}l((n=n.apply(t,e||[])).next())})};function xFe(t,e){return eQt(this,void 0,void 0,function*(){return yield WF.create(t,e)})}GQ();var uU=F(require("crypto"),1),gC=F(require("fs"),1),tE=F(require("path"),1),h1e=F(m1e(),1),g1e=F(require("util"),1);var QT;(function(t){t.Gzip="cache.tgz",t.Zstd="cache.tzst"})(QT||(QT={}));var Vo;(function(t){t.Gzip="gzip",t.ZstdWithoutLong="zstd-without-long",t.Zstd="zstd"})(Vo||(Vo={}));var mc;(function(t){t.GNU="gnu",t.BSD="bsd"})(mc||(mc={}));var cU=2,lU=5e3,nX=5e3,sX=`${process.env.PROGRAMFILES}\\Git\\usr\\bin\\tar.exe`,f1e=`${process.env.SYSTEMDRIVE}\\Windows\\System32\\tar.exe`,LT="cache.tar",iX="manifest.txt",tWr=10*Math.pow(1024,3);var hC=function(t,e,r,n){function s(i){return i instanceof r?i:new r(function(o){o(i)})}return new(r||(r=Promise))(function(i,o){function a(u){try{l(n.next(u))}catch(d){o(d)}}function c(u){try{l(n.throw(u))}catch(d){o(d)}}function l(u){u.done?i(u.value):s(u.value).then(a,c)}l((n=n.apply(t,e||[])).next())})},lUt=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=t[i]&&function(o){return new Promise(function(a,c){o=t[i](o),s(a,c,o.done,o.value)})}}function s(i,o,a,c){Promise.resolve(c).then(function(l){i({value:l,done:a})},o)}},uUt="1.0";function FT(){return hC(this,void 0,void 0,function*(){let t=process.platform==="win32",e=process.env.RUNNER_TEMP||"";if(!e){let n;t?n=process.env.USERPROFILE||"C:\\":process.platform==="darwin"?n="/Users":n="/home",e=tE.join(n,"actions","temp")}let r=tE.join(e,uU.randomUUID());return yield zQ(r),r})}function Gd(t){return gC.statSync(t).size}function oX(t){return hC(this,void 0,void 0,function*(){var e,r,n,s,i;let o=[],a=(i=process.env.GITHUB_WORKSPACE)!==null&&i!==void 0?i:process.cwd(),c=yield xFe(t.join(`
|
package/dist/post.js
CHANGED
|
@@ -116,7 +116,7 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}fun
|
|
|
116
116
|
`+m.slice(U,$),U=$+1),_=H;return K+=`
|
|
117
117
|
`,m.length-U>R&&_>U?K+=m.slice(U,_)+`
|
|
118
118
|
`+m.slice(_+1):K+=m.slice(U),K.slice(1)}function ls(m){let R="",D=0;for(let M=0;M<m.length;D>=65536?M+=2:M++){D=Jt(m,M);let U=G[D];!U&&En(D)?(R+=m[M],D>=65536&&(R+=m[M+1])):R+=U||ae(D)}return R}function oa(m,R,D){let M="",U=m.tag;for(let $=0,_=D.length;$<_;$+=1){let H=D[$];m.replacer&&(H=m.replacer.call(D,String($),H)),(Q(m,R,H,!1,!1)||typeof H>"u"&&Q(m,R,null,!1,!1))&&(M!==""&&(M+=","+(m.condenseFlow?"":" ")),M+=m.dump)}m.tag=U,m.dump="["+M+"]"}function Ei(m,R,D,M){let U="",$=m.tag;for(let _=0,H=D.length;_<H;_+=1){let K=D[_];m.replacer&&(K=m.replacer.call(D,String(_),K)),(Q(m,R+1,K,!0,!0,!1,!0)||typeof K>"u"&&Q(m,R+1,null,!0,!0,!1,!0))&&((!M||U!=="")&&(U+=vr(m,R)),m.dump&&a===m.dump.charCodeAt(0)?U+="-":U+="- ",U+=m.dump)}m.tag=$,m.dump=U||"[]"}function mc(m,R,D){let M="",U=m.tag,$=Object.keys(D);for(let _=0,H=$.length;_<H;_+=1){let K="";M!==""&&(K+=", "),m.condenseFlow&&(K+='"');let Z=$[_],X=D[Z];m.replacer&&(X=m.replacer.call(D,Z,X)),Q(m,R,Z,!1,!1)&&(m.dump.length>1024&&(K+="? "),K+=m.dump+(m.condenseFlow?'"':"")+":"+(m.condenseFlow?"":" "),Q(m,R,X,!1,!1)&&(K+=m.dump,M+=K))}m.tag=U,m.dump="{"+M+"}"}function y(m,R,D,M){let U="",$=m.tag,_=Object.keys(D);if(m.sortKeys===!0)_.sort();else if(typeof m.sortKeys=="function")_.sort(m.sortKeys);else if(m.sortKeys)throw new t("sortKeys must be a boolean or a function");for(let H=0,K=_.length;H<K;H+=1){let Z="";(!M||U!=="")&&(Z+=vr(m,R));let X=_[H],ie=D[X];if(m.replacer&&(ie=m.replacer.call(D,X,ie)),!Q(m,R+1,X,!0,!0,!0))continue;let le=m.tag!==null&&m.tag!=="?"||m.dump&&m.dump.length>1024;le&&(m.dump&&a===m.dump.charCodeAt(0)?Z+="?":Z+="? "),Z+=m.dump,le&&(Z+=vr(m,R)),Q(m,R+1,ie,!0,le)&&(m.dump&&a===m.dump.charCodeAt(0)?Z+=":":Z+=": ",Z+=m.dump,U+=Z)}m.tag=$,m.dump=U||"{}"}function f(m,R,D){let M=D?m.explicitTypes:m.implicitTypes;for(let U=0,$=M.length;U<$;U+=1){let _=M[U];if((_.instanceOf||_.predicate)&&(!_.instanceOf||typeof R=="object"&&R instanceof _.instanceOf)&&(!_.predicate||_.predicate(R))){if(D?_.multi&&_.representName?m.tag=_.representName(R):m.tag=_.tag:m.tag="?",_.represent){let H=m.styleMap[_.tag]||_.defaultStyle,K;if(r.call(_.represent)==="[object Function]")K=_.represent(R,H);else if(s.call(_.represent,H))K=_.represent[H](R,H);else throw new t("!<"+_.tag+'> tag resolver accepts not "'+H+'" style');m.dump=K}return!0}}return!1}function Q(m,R,D,M,U,$,_){m.tag=null,m.dump=D,f(m,D,!1)||f(m,D,!0);let H=r.call(m.dump),K=M;M&&(M=m.flowLevel<0||m.flowLevel>R);let Z=H==="[object Object]"||H==="[object Array]",X,ie;if(Z&&(X=m.duplicates.indexOf(D),ie=X!==-1),(m.tag!==null&&m.tag!=="?"||ie||m.indent!==2&&R>0)&&(U=!1),ie&&m.usedDuplicates[X])m.dump="*ref_"+X;else{if(Z&&ie&&!m.usedDuplicates[X]&&(m.usedDuplicates[X]=!0),H==="[object Object]")M&&Object.keys(m.dump).length!==0?(y(m,R,m.dump,U),ie&&(m.dump="&ref_"+X+m.dump)):(mc(m,R,m.dump),ie&&(m.dump="&ref_"+X+" "+m.dump));else if(H==="[object Array]")M&&m.dump.length!==0?(m.noArrayIndent&&!_&&R>0?Ei(m,R-1,m.dump,U):Ei(m,R,m.dump,U),ie&&(m.dump="&ref_"+X+m.dump)):(oa(m,R,m.dump),ie&&(m.dump="&ref_"+X+" "+m.dump));else if(H==="[object String]")m.tag!=="?"&&ia(m,m.dump,R,$,K);else{if(H==="[object Undefined]")return!1;if(m.skipInvalid)return!1;throw new t("unacceptable kind of an object to dump "+H)}if(m.tag!==null&&m.tag!=="?"){let le=encodeURI(m.tag[0]==="!"?m.tag.slice(1):m.tag).replace(/!/g,"%21");m.tag[0]==="!"?le="!"+le:le.slice(0,18)==="tag:yaml.org,2002:"?le="!!"+le.slice(18):le="!<"+le+">",m.dump=le+" "+m.dump}}return!0}function F(m,R){let D=[],M=[];N(m,D,M);let U=M.length;for(let $=0;$<U;$+=1)R.duplicates.push(D[M[$]]);R.usedDuplicates=new Array(U)}function N(m,R,D){if(m!==null&&typeof m=="object"){let M=R.indexOf(m);if(M!==-1)D.indexOf(M)===-1&&D.push(M);else if(R.push(m),Array.isArray(m))for(let U=0,$=m.length;U<$;U+=1)N(m[U],R,D);else{let U=Object.keys(m);for(let $=0,_=U.length;$<_;$+=1)N(m[U[$]],R,D)}}}function P(m,R){R=R||{};let D=new en(R);D.noRefs||F(m,D);let M=m;return D.replacer&&(M=D.replacer.call({"":M},"",M)),Q(D,0,M,!0,!0)?D.dump+`
|
|
119
|
-
`:""}return Hk.dump=P,Hk}var ZL;function Nae(){if(ZL)return Fn;ZL=1;let e=Tae(),t=xae();function n(r,s){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+s+" instead, which is now safe by default.")}}return Fn.Type=Kn(),Fn.Schema=XL(),Fn.FAILSAFE_SCHEMA=r1(),Fn.JSON_SCHEMA=c1(),Fn.CORE_SCHEMA=u1(),Fn.DEFAULT_SCHEMA=Yk(),Fn.load=e.load,Fn.loadAll=e.loadAll,Fn.dump=t.dump,Fn.YAMLException=dA(),Fn.types={binary:p1(),float:a1(),map:n1(),null:s1(),pairs:A1(),set:f1(),timestamp:l1(),bool:i1(),int:o1(),merge:d1(),omap:h1(),seq:t1(),str:e1()},Fn.safeLoad=n("safeLoad","load"),Fn.safeLoadAll=n("safeLoadAll","loadAll"),Fn.safeDump=n("safeDump","dump"),Fn}var Dae=Nae(),Fae=Rae(Dae),{Type:LQe,Schema:jQe,FAILSAFE_SCHEMA:GQe,JSON_SCHEMA:g1,CORE_SCHEMA:qQe,DEFAULT_SCHEMA:VQe,load:ei,loadAll:m1,dump:HQe,YAMLException:YQe,types:JQe,safeLoad:WQe,safeLoadAll:zQe,safeDump:KQe}=Fae;var Fo=e=>typeof e=="string"?e:void 0;function E1(e){let t={services:[]},n;try{let c=y1.readFileSync(e,"utf8");n=ei(c,{schema:g1})}catch(c){return ut(`Lenient parse: failed to read/parse ${e}: ${c.message}`),t}if(!n||typeof n!="object"||Array.isArray(n))return ut(`Lenient parse: ${e} did not contain a YAML object`),t;let r=n,s=r.metadata&&typeof r.metadata=="object"?r.metadata:void 0,i=s?{executorVersion:Fo(s.executorVersion),mcpVersion:Fo(s.mcpVersion)}:void 0,a=(Array.isArray(r.services)?r.services:[]).reduce((c,u,l)=>{if(!u||typeof u!="object"||Array.isArray(u))return ut(`Lenient parse: services[${l}] is not an object \u2014 skipping`),c;let d=u,p=Fo(d.serviceName);if(!p)return ut(`Lenient parse: services[${l}] missing or non-string serviceName \u2014 skipping`),c;let A=d.api&&typeof d.api=="object"?d.api:void 0,g=d.runtimeDetails&&typeof d.runtimeDetails=="object"?d.runtimeDetails:void 0;return c.push({serviceName:p,language:Fo(d.language),framework:Fo(d.framework),testDirectory:Fo(d.testDirectory),api:A?{baseUrl:Fo(A.baseUrl)}:void 0,runtimeDetails:g?{serverStartCommand:Fo(g.serverStartCommand),serverTeardownCommand:Fo(g.serverTeardownCommand)}:void 0}),c},[]);return{metadata:i,services:a}}async function C1(e){let t=w1.resolve(e.workingDirectory),n=new Oy(t),r=[],s=e.targetSetupCommand,i=e.targetTeardownCommand,o=e.skyrampExecutorVersion,a=e.skyrampMcpVersion;if(await n.exists()){ms(`Found ${n.getConfigPath()}, loading workspace configuration...`);try{let u;try{u=await n.read()}catch(d){ut(`${n.getConfigPath()} failed strict validation: ${d.message}. Re-reading with per-field lenient parse \u2014 invalid fields will fall back to action input defaults.`),u=E1(n.getConfigPath())}u.metadata&&(!o&&u.metadata.executorVersion&&(o=u.metadata.executorVersion),!a&&u.metadata.mcpVersion&&(a=u.metadata.mcpVersion));for(let d of u.services??[])r.push({serviceName:d.serviceName,language:d.language,framework:d.framework,baseUrl:d.api?.baseUrl,testDirectory:d.testDirectory});let l=(u.services??[])[0];if(l){!s&&l.runtimeDetails?.serverStartCommand&&(s=l.runtimeDetails.serverStartCommand);let d=l.runtimeDetails?.serverTeardownCommand;!i&&typeof d=="string"&&(i=d)}}catch(u){ut(`Failed to parse ${n.getConfigPath()}: ${u.message} \u2014 falling back to action input defaults`)}}else tA("No .skyramp/workspace.yml found, using action input defaults");o||(o="v1.3.53"),a||(a="latest"),s||(s="docker compose up -d --build");let c={targetSetupCommand:s,authTokenCommand:e.authTokenCommand,targetTeardownCommand:i,skipTargetTeardown:e.skipTargetTeardown,skyrampExecutorVersion:o,skyrampMcpVersion:a,skyrampMcpSource:e.skyrampMcpSource,skyrampMcpGithubRef:e.skyrampMcpGithubRef,nodeVersion:e.nodeVersion,skipTargetSetup:e.skipTargetSetup,targetReadyCheckCommand:e.targetReadyCheckCommand,targetReadyCheckTimeout:e.targetReadyCheckTimeout,targetReadyCheckInterval:e.targetReadyCheckInterval,targetReadyCheckDiagnosticsCommand:e.targetReadyCheckDiagnosticsCommand,autoCommit:e.autoCommit,commitMessage:e.commitMessage,generatedTestsMode:e.generatedTestsMode,postPrComment:e.postPrComment,testExecutionTimeout:e.testExecutionTimeout,maxRecommendations:e.maxRecommendations,maxGenerate:e.maxGenerate,perTestMaxFixAttempts:e.perTestMaxFixAttempts,testbotMaxRetries:e.testbotMaxRetries,testbotRetryDelay:e.testbotRetryDelay,testbotTimeout:e.testbotTimeout,targetSetupRetries:e.targetSetupRetries,targetSetupRetryDelay:e.targetSetupRetryDelay,authTokenRetries:e.authTokenRetries,authTokenRetryDelay:e.authTokenRetryDelay,reportCollapsed:e.reportCollapsed,language:e.language,enableDebug:e.enableDebug,testRepoPath:e.testRepoPath,relatedRepoPaths:e.relatedRepoPaths,services:r};Iy("Resolved configuration");for(let[u,l]of Object.entries(c))u==="authTokenCommand"?ms(` ${u}: [REDACTED]`):u==="services"?ms(` ${u}: ${JSON.stringify(l)}`):ms(` ${u}: ${l}`);return by(),c}Wn();Wn();Ov();var b1=L(require("child_process")),Jk=class extends Error{constructor(t){super(t),this.name="ExecTimeoutError"}},jy=class extends Error{constructor(t){super(t),this.name="ExecAbortedError"}};function I1(e,t){if(!(!e||e.destroyed||e.writableEnded))try{e.write(t)}catch(n){ut(`stream write failed: ${n instanceof Error?n.message:String(n)}`)}}async function S1(e,t=[],n={}){let r="",s="",i={cwd:n.cwd,silent:n.silent??!1,ignoreReturnCode:n.ignoreReturnCode??!1,env:n.env?{...process.env,...n.env}:void 0,input:n.input,listeners:{stdout:a=>{r+=a.toString(),I1(n.stdoutStream,a)},stderr:a=>{s+=a.toString()}}};if(n.timeout||n.signal){let a=n.signal;return a?.aborted?Promise.reject(new jy(`Command aborted before start: ${e}`)):new Promise((c,u)=>{let l=b1.spawn(e,t,{cwd:n.cwd,env:n.env?{...process.env,...n.env}:process.env,stdio:["pipe","pipe","pipe"],shell:!1});l.stdout?.on("data",E=>{r+=E.toString(),n.silent||process.stdout.write(E),I1(n.stdoutStream,E)}),l.stderr?.on("data",E=>{s+=E.toString(),n.silent||process.stderr.write(E)}),n.input&&l.stdin?.end(n.input);let d=()=>{g&&clearTimeout(g),a?.removeEventListener("abort",A)},p=E=>{d();try{l.kill("SIGTERM")}catch{}u(E)},A=()=>p(new jy(`Command aborted: ${e}`)),g=n.timeout?setTimeout(()=>p(new Jk(`Command timed out after ${Math.round(n.timeout/6e4)}m: ${e}`)),n.timeout):void 0;a?.addEventListener("abort",A,{once:!0}),l.on("close",E=>{d();let I=E??1;I!==0&&!n.ignoreReturnCode?u(new Error(`The process '${e}' failed with exit code ${I}`)):c({exitCode:I,stdout:r,stderr:s})}),l.on("error",E=>{d(),u(E)})})}return{exitCode:await nO(e,t,i),stdout:r,stderr:s}}async function v1(e,t){Iy(e);try{return await t()}finally{by()}}var k1=e=>e.replace(/[.[\]^$*+?(){}|\\]/g,"\\$&");async function B1(e,t){await v1("Tearing down services",async()=>{if(e.skipTargetTeardown){tA("Skipping service teardown (skipTargetTeardown=true)");return}if(!e.targetTeardownCommand){ms("No targetTeardownCommand configured, skipping teardown");return}ms(`Running teardown command: ${e.targetTeardownCommand}`);try{await S1("bash",["-c",e.targetTeardownCommand],{cwd:t}),tA("Services torn down successfully")}catch(n){let r=n instanceof Error?n.message:String(n);ut(`Service teardown command failed (non-fatal): ${r}`)}})}Wn();Wn();var lu=(i=>(i.NotFound="not_found",i.NoAccess="no_access",i.Unavailable="unavailable",i.AccessLost="access_lost",i.CannotOpen="cannot_open",i))(lu||{}),du=e=>e.source==="other"?{source:e.source,key:e.key}:{source:e.source,site:e.site,key:e.key},ti=e=>`${e.source}:${e.site??""}:${e.key}`;var hA=/^pasted-[0-9a-f]{16}$/,od=/^file-[0-9a-f]{16}$/,ad=(s=>(s.Pdf="application/pdf",s.Csv="text/csv",s.Docx="application/vnd.openxmlformats-officedocument.wordprocessingml.document",s.Xlsx="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",s))(ad||{}),dn=e=>e.trim().toUpperCase(),id=(e,t)=>{let n=e.trim();return hA.test(n.toLowerCase())?"Pasted text":od.test(n.toLowerCase())?t?.get(dn(n))??"Uploaded document":/^\d+$/.test(n)?`Confluence page ${n}`:n.toUpperCase()},ni=(e,t,n)=>t?`${id(e,n)} AC${t}`:id(e,n),cd=(n=>(n.Sufficient="sufficient",n.Insufficient="insufficient",n))(cd||{}),ud=(p=>(p.RelatedChangeConflict="related_change_conflict",p.ReferenceOutsideTarget="reference_outside_target",p.SourceAccessLost="source_access_lost",p.ConfigurationIncomplete="configuration_incomplete",p.CredentialUnavailable="credential_unavailable",p.WorkflowBindingUnverified="workflow_binding_unverified",p.WorkflowRefUnprotected="workflow_ref_unprotected",p.BedrockWorkflowRequired="bedrock_workflow_required",p.DeploymentReview="deployment_review",p.SutRevisionMismatch="sut_revision_mismatch",p.IsolationUnavailable="isolation_unavailable",p.EvidenceInsufficient="evidence_insufficient",p))(ud||{}),Pa=(i=>(i.CiCheck="ci_check",i.TestReport="test_report",i.StaticAnalysis="static_analysis",i.CodeReview="code_review",i.Other="other",i))(Pa||{}),AA=(r=>(r.Application="application",r.Environment="environment",r.TestDefect="test_defect",r))(AA||{}),Gy=(a=>(a.AuthToken="auth_token",a.Secret="secret",a.DataConnection="data_connection",a.AppNotStarted="app_not_started",a.Login="login",a.ExternalDependency="external_dependency",a.RecordingReplay="recording_replay",a))(Gy||{});var fA=(n=>(n.Probe="probe",n.Agent="agent",n))(fA||{}),qy=(r=>(r.Seed="seed",r.RuntimeMock="runtime_mock",r.EnvOverride="env_override",r))(qy||{}),Vy=(r=>(r.TestCode="test_code",r.SkyrampMocker="skyramp_mocker",r.RecipeOverride="recipe_override",r))(Vy||{});var pn=e=>e.slice(0,12);var _ae=["generate-unit","native-run"],Mae=["preflight","plan","write",..._ae,"report","deliver"];var pu=(r=>(r.Unit="unit",r.Integration="integration",r.E2e="e2e",r))(pu||{});var Hy=1440;var hp=L(require("fs")),pp=L(require("path"));var R1=L(require("fs")),Yy=L(require("path"));function _o(e,t,n={}){let r=n.maxDepth??1/0,s=!1,i=(o,a)=>{let c;try{c=R1.readdirSync(o,{withFileTypes:!0})}catch{return}for(let u of c){if(s)return;let l=Yy.join(o,u.name);if(u.isDirectory())!n.skip?.has(u.name)&&a<r&&i(l,a+1);else if(t(l,Yy.relative(e,l))===!1){s=!0;return}}};i(e,0)}var Uae=4,Jy="\xABredacted\xBB";function mA(e){let t=new Set;for(let n of e){let r=(n??"").trim();r.length>=Uae&&t.add(r)}return[...t].sort((n,r)=>r.length-n.length)}function $ae(e){return e.replace(/AUTHORIZATION: (basic|bearer) \S+/gi,"AUTHORIZATION: $1 ***").replace(/x-access-token:[^@\s]+@/gi,"x-access-token:***@")}function wt(e,t){if(!e||t.length===0)return e;let n=e;for(let r of t)!r||!n.includes(r)||(n=n.split(r).join(Jy));return n}function Wy(e,t){return wt($ae(e),t)}function Oae(e,t){let n=r=>typeof r=="string"?t(r):Array.isArray(r)?r.map(n):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([s,i])=>[s,n(i)])):r;return n(e)}function gt(e,t){return t.length===0?e:Oae(e,n=>wt(n,t))}var hTe=new TextDecoder("utf-8",{fatal:!0});function lt(e,t=[]){let n=e.trim();if(!n)return{error:"session produced no output"};let r=c=>{try{let u=JSON.parse(c);return typeof u=="object"&&u!==null&&!Array.isArray(u)?u:void 0}catch{return}},s=r(n);if(s!==void 0)return{value:s};let i;if(n.startsWith("{")&&n.endsWith("}"))try{JSON.parse(n)}catch(c){i=c instanceof Error?c.message:String(c)}let o=[...n.matchAll(/```(?:json)?\s*\n([\s\S]*?)```/g)];for(let c=o.length-1;c>=0;c--){let u=r(o[c][1].trim());if(u!==void 0)return{value:u}}let a;for(let c=n.indexOf("{");c!==-1;c=n.indexOf("{",c+1)){let u=0,l=!1,d=!1;for(let p=c;p<n.length;p++){let A=n[p];if(d){d=!1;continue}if(A==="\\"){d=l;continue}if(A==='"'){l=!l;continue}if(!l){if(A==="{")u++;else if(A==="}"&&(u--,u===0)){let g=r(n.slice(c,p+1));g!==void 0&&Object.keys(g).length>0&&(a=g,c=p);break}}}}return i&&(a===void 0||Object.keys(a).length<3)?{error:`final message is not valid JSON \u2014 ${i}. Most often an unescaped double quote inside a string (e.g. in "summary" or "evidence"): escape it as \\" or use single quotes in prose`}:a!==void 0?{value:a}:i?{error:`final message is not valid JSON \u2014 ${i}. Most often an unescaped double quote inside a string (e.g. in "summary" or "evidence"): escape it as \\" or use single quotes in prose`}:{error:`no parseable JSON object found in session output \u2014 the final message was: "${Lae(wt(n,t))}"`}}var Q1=240;function Lae(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Q1?t:`\u2026${t.slice(-Q1)}`}var ld=L(require("fs")),_i=L(require("path"));function dd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jae=8;function se(e,t,n={}){let r=t.slice(0,jae),s=t.length-r.length;return{name:e,passed:!1,details:r.join("; ")+(s>0?`; \u2026and ${s} more`:""),...n.fatal?{fatal:!0}:{}}}function Mi(e){if(ld.existsSync(e))try{return JSON.parse(ld.readFileSync(e,"utf-8"))}catch{return}}function W(e,t){return Mi(_i.join(e.outputsDir,t))}function Fe(e,t,n,r){if(!n)throw new Error(`${t}.json unexpectedly invalid at artifact time: ${r[0]}`);let s=_i.join(e.outputsDir,`${t}.json`);return ld.writeFileSync(s,JSON.stringify(n,null,2)+`
|
|
119
|
+
`:""}return Hk.dump=P,Hk}var ZL;function Nae(){if(ZL)return Fn;ZL=1;let e=Tae(),t=xae();function n(r,s){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+s+" instead, which is now safe by default.")}}return Fn.Type=Kn(),Fn.Schema=XL(),Fn.FAILSAFE_SCHEMA=r1(),Fn.JSON_SCHEMA=c1(),Fn.CORE_SCHEMA=u1(),Fn.DEFAULT_SCHEMA=Yk(),Fn.load=e.load,Fn.loadAll=e.loadAll,Fn.dump=t.dump,Fn.YAMLException=dA(),Fn.types={binary:p1(),float:a1(),map:n1(),null:s1(),pairs:A1(),set:f1(),timestamp:l1(),bool:i1(),int:o1(),merge:d1(),omap:h1(),seq:t1(),str:e1()},Fn.safeLoad=n("safeLoad","load"),Fn.safeLoadAll=n("safeLoadAll","loadAll"),Fn.safeDump=n("safeDump","dump"),Fn}var Dae=Nae(),Fae=Rae(Dae),{Type:LQe,Schema:jQe,FAILSAFE_SCHEMA:GQe,JSON_SCHEMA:g1,CORE_SCHEMA:qQe,DEFAULT_SCHEMA:VQe,load:ei,loadAll:m1,dump:HQe,YAMLException:YQe,types:JQe,safeLoad:WQe,safeLoadAll:zQe,safeDump:KQe}=Fae;var Fo=e=>typeof e=="string"?e:void 0;function E1(e){let t={services:[]},n;try{let c=y1.readFileSync(e,"utf8");n=ei(c,{schema:g1})}catch(c){return ut(`Lenient parse: failed to read/parse ${e}: ${c.message}`),t}if(!n||typeof n!="object"||Array.isArray(n))return ut(`Lenient parse: ${e} did not contain a YAML object`),t;let r=n,s=r.metadata&&typeof r.metadata=="object"?r.metadata:void 0,i=s?{executorVersion:Fo(s.executorVersion),mcpVersion:Fo(s.mcpVersion)}:void 0,a=(Array.isArray(r.services)?r.services:[]).reduce((c,u,l)=>{if(!u||typeof u!="object"||Array.isArray(u))return ut(`Lenient parse: services[${l}] is not an object \u2014 skipping`),c;let d=u,p=Fo(d.serviceName);if(!p)return ut(`Lenient parse: services[${l}] missing or non-string serviceName \u2014 skipping`),c;let A=d.api&&typeof d.api=="object"?d.api:void 0,g=d.runtimeDetails&&typeof d.runtimeDetails=="object"?d.runtimeDetails:void 0;return c.push({serviceName:p,language:Fo(d.language),framework:Fo(d.framework),testDirectory:Fo(d.testDirectory),api:A?{baseUrl:Fo(A.baseUrl)}:void 0,runtimeDetails:g?{serverStartCommand:Fo(g.serverStartCommand),serverTeardownCommand:Fo(g.serverTeardownCommand)}:void 0}),c},[]);return{metadata:i,services:a}}async function C1(e){let t=w1.resolve(e.workingDirectory),n=new Oy(t),r=[],s=e.targetSetupCommand,i=e.targetTeardownCommand,o=e.skyrampExecutorVersion,a=e.skyrampMcpVersion;if(await n.exists()){ms(`Found ${n.getConfigPath()}, loading workspace configuration...`);try{let u;try{u=await n.read()}catch(d){ut(`${n.getConfigPath()} failed strict validation: ${d.message}. Re-reading with per-field lenient parse \u2014 invalid fields will fall back to action input defaults.`),u=E1(n.getConfigPath())}u.metadata&&(!o&&u.metadata.executorVersion&&(o=u.metadata.executorVersion),!a&&u.metadata.mcpVersion&&(a=u.metadata.mcpVersion));for(let d of u.services??[])r.push({serviceName:d.serviceName,language:d.language,framework:d.framework,baseUrl:d.api?.baseUrl,testDirectory:d.testDirectory});let l=(u.services??[])[0];if(l){!s&&l.runtimeDetails?.serverStartCommand&&(s=l.runtimeDetails.serverStartCommand);let d=l.runtimeDetails?.serverTeardownCommand;!i&&typeof d=="string"&&(i=d)}}catch(u){ut(`Failed to parse ${n.getConfigPath()}: ${u.message} \u2014 falling back to action input defaults`)}}else tA("No .skyramp/workspace.yml found, using action input defaults");o||(o="v1.3.54"),a||(a="latest"),s||(s="docker compose up -d --build");let c={targetSetupCommand:s,authTokenCommand:e.authTokenCommand,targetTeardownCommand:i,skipTargetTeardown:e.skipTargetTeardown,skyrampExecutorVersion:o,skyrampMcpVersion:a,skyrampMcpSource:e.skyrampMcpSource,skyrampMcpGithubRef:e.skyrampMcpGithubRef,nodeVersion:e.nodeVersion,skipTargetSetup:e.skipTargetSetup,targetReadyCheckCommand:e.targetReadyCheckCommand,targetReadyCheckTimeout:e.targetReadyCheckTimeout,targetReadyCheckInterval:e.targetReadyCheckInterval,targetReadyCheckDiagnosticsCommand:e.targetReadyCheckDiagnosticsCommand,autoCommit:e.autoCommit,commitMessage:e.commitMessage,generatedTestsMode:e.generatedTestsMode,postPrComment:e.postPrComment,testExecutionTimeout:e.testExecutionTimeout,maxRecommendations:e.maxRecommendations,maxGenerate:e.maxGenerate,perTestMaxFixAttempts:e.perTestMaxFixAttempts,testbotMaxRetries:e.testbotMaxRetries,testbotRetryDelay:e.testbotRetryDelay,testbotTimeout:e.testbotTimeout,targetSetupRetries:e.targetSetupRetries,targetSetupRetryDelay:e.targetSetupRetryDelay,authTokenRetries:e.authTokenRetries,authTokenRetryDelay:e.authTokenRetryDelay,reportCollapsed:e.reportCollapsed,language:e.language,enableDebug:e.enableDebug,testRepoPath:e.testRepoPath,relatedRepoPaths:e.relatedRepoPaths,services:r};Iy("Resolved configuration");for(let[u,l]of Object.entries(c))u==="authTokenCommand"?ms(` ${u}: [REDACTED]`):u==="services"?ms(` ${u}: ${JSON.stringify(l)}`):ms(` ${u}: ${l}`);return by(),c}Wn();Wn();Ov();var b1=L(require("child_process")),Jk=class extends Error{constructor(t){super(t),this.name="ExecTimeoutError"}},jy=class extends Error{constructor(t){super(t),this.name="ExecAbortedError"}};function I1(e,t){if(!(!e||e.destroyed||e.writableEnded))try{e.write(t)}catch(n){ut(`stream write failed: ${n instanceof Error?n.message:String(n)}`)}}async function S1(e,t=[],n={}){let r="",s="",i={cwd:n.cwd,silent:n.silent??!1,ignoreReturnCode:n.ignoreReturnCode??!1,env:n.env?{...process.env,...n.env}:void 0,input:n.input,listeners:{stdout:a=>{r+=a.toString(),I1(n.stdoutStream,a)},stderr:a=>{s+=a.toString()}}};if(n.timeout||n.signal){let a=n.signal;return a?.aborted?Promise.reject(new jy(`Command aborted before start: ${e}`)):new Promise((c,u)=>{let l=b1.spawn(e,t,{cwd:n.cwd,env:n.env?{...process.env,...n.env}:process.env,stdio:["pipe","pipe","pipe"],shell:!1});l.stdout?.on("data",E=>{r+=E.toString(),n.silent||process.stdout.write(E),I1(n.stdoutStream,E)}),l.stderr?.on("data",E=>{s+=E.toString(),n.silent||process.stderr.write(E)}),n.input&&l.stdin?.end(n.input);let d=()=>{g&&clearTimeout(g),a?.removeEventListener("abort",A)},p=E=>{d();try{l.kill("SIGTERM")}catch{}u(E)},A=()=>p(new jy(`Command aborted: ${e}`)),g=n.timeout?setTimeout(()=>p(new Jk(`Command timed out after ${Math.round(n.timeout/6e4)}m: ${e}`)),n.timeout):void 0;a?.addEventListener("abort",A,{once:!0}),l.on("close",E=>{d();let I=E??1;I!==0&&!n.ignoreReturnCode?u(new Error(`The process '${e}' failed with exit code ${I}`)):c({exitCode:I,stdout:r,stderr:s})}),l.on("error",E=>{d(),u(E)})})}return{exitCode:await nO(e,t,i),stdout:r,stderr:s}}async function v1(e,t){Iy(e);try{return await t()}finally{by()}}var k1=e=>e.replace(/[.[\]^$*+?(){}|\\]/g,"\\$&");async function B1(e,t){await v1("Tearing down services",async()=>{if(e.skipTargetTeardown){tA("Skipping service teardown (skipTargetTeardown=true)");return}if(!e.targetTeardownCommand){ms("No targetTeardownCommand configured, skipping teardown");return}ms(`Running teardown command: ${e.targetTeardownCommand}`);try{await S1("bash",["-c",e.targetTeardownCommand],{cwd:t}),tA("Services torn down successfully")}catch(n){let r=n instanceof Error?n.message:String(n);ut(`Service teardown command failed (non-fatal): ${r}`)}})}Wn();Wn();var lu=(i=>(i.NotFound="not_found",i.NoAccess="no_access",i.Unavailable="unavailable",i.AccessLost="access_lost",i.CannotOpen="cannot_open",i))(lu||{}),du=e=>e.source==="other"?{source:e.source,key:e.key}:{source:e.source,site:e.site,key:e.key},ti=e=>`${e.source}:${e.site??""}:${e.key}`;var hA=/^pasted-[0-9a-f]{16}$/,od=/^file-[0-9a-f]{16}$/,ad=(s=>(s.Pdf="application/pdf",s.Csv="text/csv",s.Docx="application/vnd.openxmlformats-officedocument.wordprocessingml.document",s.Xlsx="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",s))(ad||{}),dn=e=>e.trim().toUpperCase(),id=(e,t)=>{let n=e.trim();return hA.test(n.toLowerCase())?"Pasted text":od.test(n.toLowerCase())?t?.get(dn(n))??"Uploaded document":/^\d+$/.test(n)?`Confluence page ${n}`:n.toUpperCase()},ni=(e,t,n)=>t?`${id(e,n)} AC${t}`:id(e,n),cd=(n=>(n.Sufficient="sufficient",n.Insufficient="insufficient",n))(cd||{}),ud=(p=>(p.RelatedChangeConflict="related_change_conflict",p.ReferenceOutsideTarget="reference_outside_target",p.SourceAccessLost="source_access_lost",p.ConfigurationIncomplete="configuration_incomplete",p.CredentialUnavailable="credential_unavailable",p.WorkflowBindingUnverified="workflow_binding_unverified",p.WorkflowRefUnprotected="workflow_ref_unprotected",p.BedrockWorkflowRequired="bedrock_workflow_required",p.DeploymentReview="deployment_review",p.SutRevisionMismatch="sut_revision_mismatch",p.IsolationUnavailable="isolation_unavailable",p.EvidenceInsufficient="evidence_insufficient",p))(ud||{}),Pa=(i=>(i.CiCheck="ci_check",i.TestReport="test_report",i.StaticAnalysis="static_analysis",i.CodeReview="code_review",i.Other="other",i))(Pa||{}),AA=(r=>(r.Application="application",r.Environment="environment",r.TestDefect="test_defect",r))(AA||{}),Gy=(a=>(a.AuthToken="auth_token",a.Secret="secret",a.DataConnection="data_connection",a.AppNotStarted="app_not_started",a.Login="login",a.ExternalDependency="external_dependency",a.RecordingReplay="recording_replay",a))(Gy||{});var fA=(n=>(n.Probe="probe",n.Agent="agent",n))(fA||{}),qy=(r=>(r.Seed="seed",r.RuntimeMock="runtime_mock",r.EnvOverride="env_override",r))(qy||{}),Vy=(r=>(r.TestCode="test_code",r.SkyrampMocker="skyramp_mocker",r.RecipeOverride="recipe_override",r))(Vy||{});var pn=e=>e.slice(0,12);var _ae=["generate-unit","native-run"],Mae=["preflight","plan","write",..._ae,"report","deliver"];var pu=(r=>(r.Unit="unit",r.Integration="integration",r.E2e="e2e",r))(pu||{});var Hy=1440;var hp=L(require("fs")),pp=L(require("path"));var R1=L(require("fs")),Yy=L(require("path"));function _o(e,t,n={}){let r=n.maxDepth??1/0,s=!1,i=(o,a)=>{let c;try{c=R1.readdirSync(o,{withFileTypes:!0})}catch{return}for(let u of c){if(s)return;let l=Yy.join(o,u.name);if(u.isDirectory())!n.skip?.has(u.name)&&a<r&&i(l,a+1);else if(t(l,Yy.relative(e,l))===!1){s=!0;return}}};i(e,0)}var Uae=4,Jy="\xABredacted\xBB";function mA(e){let t=new Set;for(let n of e){let r=(n??"").trim();r.length>=Uae&&t.add(r)}return[...t].sort((n,r)=>r.length-n.length)}function $ae(e){return e.replace(/AUTHORIZATION: (basic|bearer) \S+/gi,"AUTHORIZATION: $1 ***").replace(/x-access-token:[^@\s]+@/gi,"x-access-token:***@")}function wt(e,t){if(!e||t.length===0)return e;let n=e;for(let r of t)!r||!n.includes(r)||(n=n.split(r).join(Jy));return n}function Wy(e,t){return wt($ae(e),t)}function Oae(e,t){let n=r=>typeof r=="string"?t(r):Array.isArray(r)?r.map(n):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).map(([s,i])=>[s,n(i)])):r;return n(e)}function gt(e,t){return t.length===0?e:Oae(e,n=>wt(n,t))}var hTe=new TextDecoder("utf-8",{fatal:!0});function lt(e,t=[]){let n=e.trim();if(!n)return{error:"session produced no output"};let r=c=>{try{let u=JSON.parse(c);return typeof u=="object"&&u!==null&&!Array.isArray(u)?u:void 0}catch{return}},s=r(n);if(s!==void 0)return{value:s};let i;if(n.startsWith("{")&&n.endsWith("}"))try{JSON.parse(n)}catch(c){i=c instanceof Error?c.message:String(c)}let o=[...n.matchAll(/```(?:json)?\s*\n([\s\S]*?)```/g)];for(let c=o.length-1;c>=0;c--){let u=r(o[c][1].trim());if(u!==void 0)return{value:u}}let a;for(let c=n.indexOf("{");c!==-1;c=n.indexOf("{",c+1)){let u=0,l=!1,d=!1;for(let p=c;p<n.length;p++){let A=n[p];if(d){d=!1;continue}if(A==="\\"){d=l;continue}if(A==='"'){l=!l;continue}if(!l){if(A==="{")u++;else if(A==="}"&&(u--,u===0)){let g=r(n.slice(c,p+1));g!==void 0&&Object.keys(g).length>0&&(a=g,c=p);break}}}}return i&&(a===void 0||Object.keys(a).length<3)?{error:`final message is not valid JSON \u2014 ${i}. Most often an unescaped double quote inside a string (e.g. in "summary" or "evidence"): escape it as \\" or use single quotes in prose`}:a!==void 0?{value:a}:i?{error:`final message is not valid JSON \u2014 ${i}. Most often an unescaped double quote inside a string (e.g. in "summary" or "evidence"): escape it as \\" or use single quotes in prose`}:{error:`no parseable JSON object found in session output \u2014 the final message was: "${Lae(wt(n,t))}"`}}var Q1=240;function Lae(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Q1?t:`\u2026${t.slice(-Q1)}`}var ld=L(require("fs")),_i=L(require("path"));function dd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jae=8;function se(e,t,n={}){let r=t.slice(0,jae),s=t.length-r.length;return{name:e,passed:!1,details:r.join("; ")+(s>0?`; \u2026and ${s} more`:""),...n.fatal?{fatal:!0}:{}}}function Mi(e){if(ld.existsSync(e))try{return JSON.parse(ld.readFileSync(e,"utf-8"))}catch{return}}function W(e,t){return Mi(_i.join(e.outputsDir,t))}function Fe(e,t,n,r){if(!n)throw new Error(`${t}.json unexpectedly invalid at artifact time: ${r[0]}`);let s=_i.join(e.outputsDir,`${t}.json`);return ld.writeFileSync(s,JSON.stringify(n,null,2)+`
|
|
120
120
|
`),{[t]:_i.relative(e.runDir,s)}}function hn(e,t){return{name:e,verify(n,r){let{errors:s}=t(n,r);return s.length===0?{name:this.name,passed:!0}:se(this.name,s,{fatal:!0})}}}function T1(e,t){return{...e,name:t}}function et(e,t){return _i.relative(e,_i.resolve(e,t)).replace(/\/+$/,"")}function yA(e){return e.replace(/\s+/g," ").trim()}function _a(e){return _i.basename(e).replace(/\.[^.]+$/,"").toLowerCase()}var bn=new RegExp("(^|/)("+["test_[^/]+\\.py","[^/]+_test\\.py","[^/]+\\.(spec|test)\\.[cm]?[jt]sx?","[^/]+\\.e2e-(spec|test)\\.[cm]?[jt]sx?","[^/]+_test\\.go","[^/]+Tests?\\.(java|kts?)","[^/]+_(test|spec)\\.rb","[^/]+\\.feature","[^/]+Tests?\\.cs","[^/]+_test\\.rs","tests/[^/]+\\.rs","[^/]+Test\\.php","[^/]+(Test|Spec|Suite)\\.scala","[^/]+Tests?\\.swift","[^/]+_test\\.exs","[^/]+_test\\.dart","[^/]+_test\\.(c|cc|cpp|cxx)","test_[^/]+\\.(c|cc|cpp|cxx)","[^/]+(Spec|Test)\\.groovy"].join("|")+")$","i");function Mo(e){if(!e.inputs.skyrampMcp?.command)return!1;for(let t of Object.values(e.state.stages))for(let n of t.attempts??[]){let r=n.mcpServers?.skyramp;if(r!==void 0&&r!=="connected")return!1}return!0}function Ct(e,t=0,n=new Set){return EA(e,t,n)}var x1=e=>" ".repeat(e);function EA(e,t,n){let r=Gae(e);switch(r._def.typeName){case"ZodObject":{let i=r.shape,o=Object.keys(i).filter(c=>!n.has(c)&&!i[c].description?.startsWith("[derived]"));return o.length===0?"{}":`{
|
|
121
121
|
${o.map((c,u)=>{let l=i[c],d=l.isOptional()?" (optional)":"",p=l.description?` // ${l.description}`:"",A=EA(l,t+2,n);return`${x1(t+2)}"${c}": ${A}${u<o.length-1?",":""}${d}${p}`}).join(`
|
|
122
122
|
`)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyramp/testbot-core",
|
|
3
|
-
"version": "0.13.0-v3.
|
|
3
|
+
"version": "0.13.0-v3.185",
|
|
4
4
|
"description": "Skyramp Testbot engine: AI-powered deterministic test generation, execution and maintenance",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"//files": "An explicit allowlist, never a glob. `dist/` is gitignored, so without this key npm's .gitignore fallback would publish a package with no engine in it; with a glob it would publish the sourcemaps, whose sourcesContent embeds every src/*.ts verbatim. dist/VERSION.json exists only in a release-engine.yml build. assets/gen-reference/ is the staged codegen reference corpus, which generate.ts finds at ../assets from dist/.",
|