@voiden/runner 2.3.0-beta.18 → 2.3.0-beta.19

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/CHANGELOG.md CHANGED
@@ -3,6 +3,19 @@
3
3
  All notable changes to `@voiden/runner` are documented here. This package is
4
4
  versioned and released independently of the Voiden desktop app.
5
5
 
6
+ ## v2.3.0-beta.19 - 2026-09-10
7
+
8
+ ### Fixed
9
+ - A plugin's runner failing to load (a thrown error during its dynamic `import()` or `onload()`,
10
+ as opposed to simply being disabled or never installed) was silently swallowed unless the caller
11
+ passed `verbose: true` — no error surfaced anywhere, including to `install_plugin`'s own response,
12
+ which only showed `active: false` with no indication why. Root-caused against a real case
13
+ (`voiden-scripting`'s standalone-downloaded bundle crashing on an unresolvable `@voiden/sdk`
14
+ import — fixed in that plugin's own `v1.1.8`) that was effectively invisible without manually
15
+ re-running with `--verbose`. This failure is now always logged to stderr, matching the existing
16
+ "plugin not installed" message a few lines above it, which was never gated behind `--verbose`
17
+ either.
18
+
6
19
  ## v2.3.0-beta.18 - 2026-09-10
7
20
 
8
21
  ### Added
@@ -1 +1 @@
1
- "use strict";var y=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var A=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>{for(var t in e)y(r,t,{get:e[t],enumerable:!0})},D=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of R(e))!T.call(r,s)&&s!==t&&y(r,s,{get:()=>e[s],enumerable:!(n=C(e,s))||n.enumerable});return r};var W=r=>D(y({},"__esModule",{value:!0}),r);function v(r,e){let t=r.trim();if(t==="status"||t==="statusCode")return e.response.status;if(t==="statusText")return e.response.statusText;if(t==="responseTime"||t==="duration")return e.response.timing?.duration||0;if(t.startsWith("requestHeader.")||t.startsWith("requestHeaders.")){let s=t.split(".")[1];return e.request?.headers.find(i=>i.key.toLowerCase()===s.toLowerCase())?.value}if(t.startsWith("header.")||t.startsWith("headers.")){let n=t.split("."),s=n[1];if(s.toLowerCase()==="set-cookie"){let i=(0,x.parseCookies)(e.response.headers);if(n.length===2)return i;let c=n.slice(2).join(".");return l(i,c)}return e.response.headers.find(i=>i.key.toLowerCase()===s.toLowerCase())?.value}if(t==="body"||t==="response.body")return e.response.body;if(t.startsWith("body.")||t.startsWith("response.body.")){let n=t.replace(/^(response\.)?body\./,"");return l(e.response.body,n)}if(t.startsWith("response.")){let n=t.replace(/^response\./,"");return l(e.response,n)}return l(e.response.body,t)}function l(r,e){if(!r)return;let t=e.split(/\.|\[/).map(s=>s.replace(/\]$/,"")),n=r;for(let s of t){if(n==null)return;/^\d+$/.test(s)?n=n[parseInt(s,10)]:n=n[s]}return n}function E(r,e){try{if(r.enabled===!1)return{assertion:r,passed:!0,actualValue:null,error:"Skipped (disabled)"};let t=F(r.field),n=t.field,s=t.operator||r.operator||"equals",o=r.expectedValue,i=v(n,e),c=L(s,i,o);return{assertion:r,passed:c,actualValue:i}}catch(t){return{assertion:r,passed:!1,actualValue:null,error:t.message||String(t)}}}function F(r){let e=["equals","eq","==","===","not-equals","ne","!=","!==","contains","includes","not-contains","not-includes","starts-with","startswith","ends-with","endswith","matches","regex","exists","is-defined","not-exists","is-null","is-undefined","greater-than","gt",">","less-than","lt","<","greater-equal","gte",">=","less-equal","lte","<=","is-empty","empty","not-empty","is-truthy","truthy","is-falsy","falsy","type-is","typeof"],t=r.trim().split(/\s+/);if(t.length>=2){let n=t[t.length-1].toLowerCase();if(e.includes(n))return{field:t.slice(0,-1).join(" "),operator:n}}return{field:r.trim(),operator:null}}function L(r,e,t){switch(r.toLowerCase().trim()){case"equals":case"eq":case"==":case"===":return e==null?!1:String(e)===t;case"not-equals":case"ne":case"!=":case"!==":return e==null?!1:String(e)!==t;case"contains":case"includes":return e==null?!1:String(e).includes(t);case"not-contains":case"not-includes":return e==null?!1:!String(e).includes(t);case"starts-with":case"startswith":return e==null?!1:String(e).startsWith(t);case"ends-with":case"endswith":return e==null?!1:String(e).endsWith(t);case"matches":case"regex":if(e==null)return!1;try{return new RegExp(t).test(String(e))}catch{return!1}case"exists":case"is-defined":return e!=null;case"not-exists":case"is-null":case"is-undefined":return e==null;case"greater-than":case"gt":case">":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s>o}case"less-than":case"lt":case"<":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s<o}case"greater-equal":case"gte":case">=":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s>=o}case"less-equal":case"lte":case"<=":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s<=o}case"is-empty":case"empty":return e==null?!1:Array.isArray(e)?e.length===0:typeof e=="string"?e==="":typeof e=="object"?Object.keys(e).length===0:!1;case"not-empty":return e==null?!1:Array.isArray(e)?e.length>0:typeof e=="string"?e!=="":typeof e=="object"?Object.keys(e).length>0:!0;case"is-truthy":case"truthy":return!!e;case"is-falsy":case"falsy":return!e;case"type-is":case"typeof":return typeof e===t.toLowerCase();default:throw new Error(`Unknown operator: ${r}`)}}function S(r,e){return r.map(t=>E(t,e))}var x,q=A(()=>{"use strict";x=require("@voiden/sdk/shared")});var N={};w(N,{postProcessAssertionsHook:()=>P});function O(r){let e=[];if(!r||!r.content)return e;function t(n){if(n.type==="assertions-table"){let s=j(n);e.push(...s)}n.content&&Array.isArray(n.content)&&n.content.forEach(s=>t(s))}return t(r),e}function j(r){let e=[];try{if(r.attrs&&Array.isArray(r.attrs.rows)){let s=r.attrs.rows;for(let o of s)!o.description&&!o.field&&!o.operator&&!o.expectedValue||o.enabled!==!1&&e.push({description:o.description||"",field:o.field||"",operator:o.operator||"equals",expectedValue:o.expectedValue||"",enabled:!0});return e}let t=Array.isArray(r.content)?r.content.find(s=>s.type==="table"||s.type==="assertions-table"):null;if(!t)return e;let n=t.rows||t.content||[];for(let s=0;s<n.length;s++){let o=n[s];if(Array.isArray(o.row)){if(o.attrs?.disabled===!0)continue;let[a,h,g,b]=o.row;if(!a&&!h&&!g&&!b)continue;e.push({description:String(a||"").trim(),field:String(h||"").trim(),operator:String(g||"equals").trim()||"equals",expectedValue:String(b||"").trim(),enabled:!0});continue}if(o.type!=="tableRow"||o.attrs&&o.attrs.disabled===!0)continue;let i=o.content||[];if(i.length<4)continue;let c=f(i[0]).trim(),p=f(i[1]).trim(),d=f(i[2]).trim(),u=f(i[3]).trim();!c&&!p&&!d&&!u||!(!(i.length>=5)||H(i[4]))||e.push({description:c,field:p,operator:d||"equals",expectedValue:u,enabled:!0})}}catch(t){console.error("Error extracting assertions from table:",t)}return e}function f(r){return r?r.type==="text"?r.text||"":r.content&&Array.isArray(r.content)?r.content.map(e=>f(e)).join(""):"":""}function H(r){if(!r||!r.content)return!0;let e=r.content.find(t=>t.type==="checkbox");return e&&e.attrs?e.attrs.checked!==!1:!0}async function P(r){let{requestState:e,responseState:t,metadata:n}=r;try{let s=e?.metadata?.editorDocument||n?.requestDocument||n?.editorDocument;if(!s)return;let o=O(s);if(o.length===0)return;let i=(typeof window<"u"?window:void 0)?.electron?.env?.replaceVariables;if(i)for(let a of o)a.expectedValue&&a.expectedValue.includes("{{")&&(a.expectedValue=await i(a.expectedValue)),a.field&&a.field.includes("{{")&&(a.field=await i(a.field));let c=t.body;if(typeof c=="string"&&c.trim())try{c=JSON.parse(c)}catch{}let p={response:{status:t.status,statusText:t.statusText,headers:t.headers||[],body:c,contentType:t.contentType,timing:t.timing},request:{headers:t.requestMeta?.headers||[]}},d=S(o,p),u=d.filter(a=>a.passed).length,m=d.filter(a=>!a.passed).length;t.metadata||(t.metadata={}),t.metadata.assertionResults={results:d,totalAssertions:o.length,passedAssertions:u,failedAssertions:m}}catch(s){console.error("[Simple Assertions] Error in post-process assertions hook:",s)}}var k=A(()=>{"use strict";q()});var J={};w(J,{default:()=>z});module.exports=W(J);var $=r=>({onload(){r.pipeline.registerHook("pre-processing",async e=>{e.editor&&(e.requestState.metadata||(e.requestState.metadata={}),e.requestState.metadata.editorDocument=e.editor.getJSON())},5),r.pipeline.registerHook("post-processing",async e=>{let{postProcessAssertionsHook:t}=await Promise.resolve().then(()=>(k(),N));await t(e)},15),r.pipeline.registerHook("post-processing",async e=>{let t=e.responseState?.metadata?.assertionResults;if(t?.results?.length){e.responseState.metadata||(e.responseState.metadata={}),Array.isArray(e.responseState.metadata.reportEntries)||(e.responseState.metadata.reportEntries=[]);for(let n of t.results){let s=n.assertion?.description?.trim()||`${n.assertion?.field??""} ${n.assertion?.operator??""} ${n.assertion?.expectedValue??""}`.trim();e.responseState.metadata.reportEntries.push({type:"assertion",message:s||"Assertion",passed:n.passed,actual:n.actualValue,expected:n.assertion?.expectedValue,operator:n.assertion?.operator})}}},50)}}),z=$;
1
+ "use strict";var y=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var A=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>{for(var t in e)y(r,t,{get:e[t],enumerable:!0})},W=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of R(e))!T.call(r,s)&&s!==t&&y(r,s,{get:()=>e[s],enumerable:!(n=C(e,s))||n.enumerable});return r};var D=r=>W(y({},"__esModule",{value:!0}),r);function v(r,e){let t=r.trim();if(t==="status"||t==="statusCode")return e.response.status;if(t==="statusText")return e.response.statusText;if(t==="responseTime"||t==="duration")return e.response.timing?.duration||0;if(t.startsWith("requestHeader.")||t.startsWith("requestHeaders.")){let s=t.split(".")[1];return e.request?.headers.find(i=>i.key.toLowerCase()===s.toLowerCase())?.value}if(t.startsWith("header.")||t.startsWith("headers.")){let n=t.split("."),s=n[1];if(s.toLowerCase()==="set-cookie"){let i=(0,x.parseCookies)(e.response.headers);if(n.length===2)return i;let c=n.slice(2).join(".");return l(i,c)}return e.response.headers.find(i=>i.key.toLowerCase()===s.toLowerCase())?.value}if(t==="body"||t==="response.body")return e.response.body;if(t.startsWith("body.")||t.startsWith("body[")||t.startsWith("response.body.")||t.startsWith("response.body[")){let n=t.replace(/^(response\.)?body\.?/,"");return l(e.response.body,n)}if(t.startsWith("response.")){let n=t.replace(/^response\./,"");return l(e.response,n)}return l(e.response.body,t)}function l(r,e){if(!r)return;let t=e.split(/\.|\[/).map(s=>s.replace(/\]$/,"").replace(/^(["'])(.*)\1$/,"$2")).filter(Boolean),n=r;for(let s of t){if(n==null)return;/^\d+$/.test(s)?n=n[parseInt(s,10)]:n=n[s]}return n}function E(r,e){try{if(r.enabled===!1)return{assertion:r,passed:!0,actualValue:null,error:"Skipped (disabled)"};let t=F(r.field),n=t.field,s=t.operator||r.operator||"equals",o=r.expectedValue,i=v(n,e),c=L(s,i,o);return{assertion:r,passed:c,actualValue:i}}catch(t){return{assertion:r,passed:!1,actualValue:null,error:t.message||String(t)}}}function F(r){let e=["equals","eq","==","===","not-equals","ne","!=","!==","contains","includes","not-contains","not-includes","starts-with","startswith","ends-with","endswith","matches","regex","exists","is-defined","not-exists","is-null","is-undefined","greater-than","gt",">","less-than","lt","<","greater-equal","gte",">=","less-equal","lte","<=","is-empty","empty","not-empty","is-truthy","truthy","is-falsy","falsy","type-is","typeof"],t=r.trim().split(/\s+/);if(t.length>=2){let n=t[t.length-1].toLowerCase();if(e.includes(n))return{field:t.slice(0,-1).join(" "),operator:n}}return{field:r.trim(),operator:null}}function L(r,e,t){switch(r.toLowerCase().trim()){case"equals":case"eq":case"==":case"===":return e==null?!1:String(e)===t;case"not-equals":case"ne":case"!=":case"!==":return e==null?!1:String(e)!==t;case"contains":case"includes":return e==null?!1:String(e).includes(t);case"not-contains":case"not-includes":return e==null?!1:!String(e).includes(t);case"starts-with":case"startswith":return e==null?!1:String(e).startsWith(t);case"ends-with":case"endswith":return e==null?!1:String(e).endsWith(t);case"matches":case"regex":if(e==null)return!1;try{return new RegExp(t).test(String(e))}catch{return!1}case"exists":case"is-defined":return e!=null;case"not-exists":case"is-null":case"is-undefined":return e==null;case"greater-than":case"gt":case">":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s>o}case"less-than":case"lt":case"<":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s<o}case"greater-equal":case"gte":case">=":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s>=o}case"less-equal":case"lte":case"<=":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s<=o}case"is-empty":case"empty":return e==null?!1:Array.isArray(e)?e.length===0:typeof e=="string"?e==="":typeof e=="object"?Object.keys(e).length===0:!1;case"not-empty":return e==null?!1:Array.isArray(e)?e.length>0:typeof e=="string"?e!=="":typeof e=="object"?Object.keys(e).length>0:!0;case"is-truthy":case"truthy":return!!e;case"is-falsy":case"falsy":return!e;case"type-is":case"typeof":return typeof e===t.toLowerCase();default:throw new Error(`Unknown operator: ${r}`)}}function S(r,e){return r.map(t=>E(t,e))}var x,q=A(()=>{"use strict";x=require("@voiden/sdk/shared")});var N={};w(N,{postProcessAssertionsHook:()=>H});function O(r){let e=[];if(!r||!r.content)return e;function t(n){if(n.type==="assertions-table"){let s=$(n);e.push(...s)}n.content&&Array.isArray(n.content)&&n.content.forEach(s=>t(s))}return t(r),e}function $(r){let e=[];try{if(r.attrs&&Array.isArray(r.attrs.rows)){let s=r.attrs.rows;for(let o of s)!o.description&&!o.field&&!o.operator&&!o.expectedValue||o.enabled!==!1&&e.push({description:o.description||"",field:o.field||"",operator:o.operator||"equals",expectedValue:o.expectedValue||"",enabled:!0});return e}let t=Array.isArray(r.content)?r.content.find(s=>s.type==="table"||s.type==="assertions-table"):null;if(!t)return e;let n=t.rows||t.content||[];for(let s=0;s<n.length;s++){let o=n[s];if(Array.isArray(o.row)){if(o.attrs?.disabled===!0)continue;let[a,m,g,b]=o.row;if(!a&&!m&&!g&&!b)continue;e.push({description:String(a||"").trim(),field:String(m||"").trim(),operator:String(g||"equals").trim()||"equals",expectedValue:String(b||"").trim(),enabled:!0});continue}if(o.type!=="tableRow"||o.attrs&&o.attrs.disabled===!0)continue;let i=o.content||[];if(i.length<4)continue;let c=f(i[0]).trim(),p=f(i[1]).trim(),d=f(i[2]).trim(),u=f(i[3]).trim();!c&&!p&&!d&&!u||!(!(i.length>=5)||j(i[4]))||e.push({description:c,field:p,operator:d||"equals",expectedValue:u,enabled:!0})}}catch(t){console.error("Error extracting assertions from table:",t)}return e}function f(r){return r?r.type==="text"?r.text||"":r.content&&Array.isArray(r.content)?r.content.map(e=>f(e)).join(""):"":""}function j(r){if(!r||!r.content)return!0;let e=r.content.find(t=>t.type==="checkbox");return e&&e.attrs?e.attrs.checked!==!1:!0}async function H(r){let{requestState:e,responseState:t,metadata:n}=r;try{let s=e?.metadata?.editorDocument||n?.requestDocument||n?.editorDocument;if(!s)return;let o=O(s);if(o.length===0)return;let i=(typeof window<"u"?window:void 0)?.electron?.env?.replaceVariables;if(i)for(let a of o)a.expectedValue&&a.expectedValue.includes("{{")&&(a.expectedValue=await i(a.expectedValue)),a.field&&a.field.includes("{{")&&(a.field=await i(a.field));let c=t.body;if(typeof c=="string"&&c.trim())try{c=JSON.parse(c)}catch{}let p={response:{status:t.status,statusText:t.statusText,headers:t.headers||[],body:c,contentType:t.contentType,timing:t.timing},request:{headers:t.requestMeta?.headers||[]}},d=S(o,p),u=d.filter(a=>a.passed).length,h=d.filter(a=>!a.passed).length;t.metadata||(t.metadata={}),t.metadata.assertionResults={results:d,totalAssertions:o.length,passedAssertions:u,failedAssertions:h}}catch(s){console.error("[Simple Assertions] Error in post-process assertions hook:",s)}}var k=A(()=>{"use strict";q()});var B={};w(B,{default:()=>z});module.exports=D(B);var P=r=>({onload(){r.pipeline.registerHook("pre-processing",async e=>{e.editor&&(e.requestState.metadata||(e.requestState.metadata={}),e.requestState.metadata.editorDocument=e.editor.getJSON())},5),r.pipeline.registerHook("post-processing",async e=>{let{postProcessAssertionsHook:t}=await Promise.resolve().then(()=>(k(),N));await t(e)},15),r.pipeline.registerHook("post-processing",async e=>{let t=e.responseState?.metadata?.assertionResults;if(t?.results?.length){e.responseState.metadata||(e.responseState.metadata={}),Array.isArray(e.responseState.metadata.reportEntries)||(e.responseState.metadata.reportEntries=[]);for(let n of t.results){let s=n.assertion?.description?.trim()||`${n.assertion?.field??""} ${n.assertion?.operator??""} ${n.assertion?.expectedValue??""}`.trim();e.responseState.metadata.reportEntries.push({type:"assertion",message:s||"Assertion",passed:n.passed,actual:n.actualValue,expected:n.assertion?.expectedValue,operator:n.assertion?.operator})}}},50)}}),z=P;
@@ -2,10 +2,10 @@
2
2
  "simple-assertions": "1.1.0",
3
3
  "voiden-advanced-auth": "2.0.8",
4
4
  "voiden-faker": "1.1.1",
5
- "voiden-graphql": "1.0.7",
6
- "voiden-mcp-client": "0.1.1",
7
- "voiden-mcp-tool": "0.1.1",
5
+ "voiden-graphql": "1.0.8",
6
+ "voiden-mcp-client": "0.1.2",
7
+ "voiden-mcp-tool": "0.1.2",
8
8
  "voiden-rest-api": "1.4.13",
9
- "voiden-scripting": "1.1.6",
9
+ "voiden-scripting": "1.1.8",
10
10
  "voiden-sockets-grpcs": "1.1.7"
11
11
  }
@@ -1,7 +1,7 @@
1
- "use strict";var O=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.prototype.hasOwnProperty;var q=(e,r)=>()=>(e&&(r=e(e=0)),r);var P=(e,r)=>{for(var n in r)O(e,n,{get:r[n],enumerable:!0})},ne=(e,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of re(r))!se.call(e,t)&&t!==n&&O(e,t,{get:()=>r[t],enumerable:!(s=te(r,t))||s.enumerable});return e};var ae=e=>ne(O({},"__esModule",{value:!0}),e);function T(e){return"'"+String(e).replace(/'/g,"'\\''")+"'"}function F(e){let{request:r,response:n,envVars:s,variables:t,logFile:i,varFile:o,assertFile:l,cancelFile:d,reqFile:u,respFile:y,userScriptFile:p}=e,m=Object.entries(s).map(([f,c])=>`_VD_ENV_${f.replace(/[^A-Za-z0-9_]/g,"_")}=${T(String(c))}`).join(`
2
- `)||"# (no env vars)",b=Object.entries(t).map(([f,c])=>`_VD_VAR_${f.replace(/[^A-Za-z0-9_]/g,"_")}=${T(String(c))}`).join(`
3
- `)||"# (no variables)",g=!!n,a=T;return["#!/bin/bash","set +e",`_VD_LOG_FILE=${a(i)}`,`_VD_VAR_FILE=${a(o)}`,`_VD_ASSERT_FILE=${a(l)}`,`_VD_CANCEL_FILE=${a(d)}`,`_VD_REQUEST_FILE=${a(u)}`,`_VD_RESPONSE_FILE=${a(y)}`,`_VD_USERSCRIPT_FILE=${a(p)}`,'touch "$_VD_LOG_FILE" "$_VD_VAR_FILE" "$_VD_ASSERT_FILE" "$_VD_REQUEST_FILE" "$_VD_RESPONSE_FILE"','_vd_b64() { printf "%s" "$1" | base64 | tr -d "\\n"; }',"voiden_log() {",' local _level="log"',' case "$1" in log|info|debug|warn|warning|error) _level="$1"; shift;; esac',' [ "$_level" = "warning" ] && _level="warn"',' printf "%s\\t%s\\n" "$(_vd_b64 "$_level")" "$(_vd_b64 "$*")" >> "$_VD_LOG_FILE"',"}",'voiden_env_get() { local _k="_VD_ENV_${1//[^A-Za-z0-9_]/_}"; printf "%s" "${!_k}"; }','voiden_variables_get() { local _k="_VD_VAR_${1//[^A-Za-z0-9_]/_}"; printf "%s" "${!_k}"; }',"voiden_variables_set() {",' local _key="$1" _val="$2"',' local _k="_VD_VAR_${_key//[^A-Za-z0-9_]/_}"',' export "${_k}=${_val}"',' printf "%s\\t%s\\n" "$(_vd_b64 "$_key")" "$(_vd_b64 "$_val")" >> "$_VD_VAR_FILE"',"}",'voiden_cancel() { touch "$_VD_CANCEL_FILE"; }',"","# voiden.* dot-notation aliases (same API as JS / Python)",'voiden.log() { voiden_log "$@"; }','voiden.env.get() { voiden_env_get "$@"; }','voiden.variables.get() { voiden_variables_get "$@"; }','voiden.variables.set() { voiden_variables_set "$@"; }','voiden.assert() { voiden_assert "$@"; }',"voiden.cancel() { voiden_cancel; }","# request getters / setters","# Supports both call styles:",'# voiden.request.url "https://new.com" (bash style)','# voiden.request.url = "https://new.com" (JS-like style \u2014 = is treated as separator)','_vd_val() { [ "$1" = "=" ] && printf "%s" "$2" || printf "%s" "$1"; }','voiden.request.url() { [ $# -gt 0 ] && export VOIDEN_REQUEST_URL="$(_vd_val "$@")" || printf "%s" "$VOIDEN_REQUEST_URL"; }','voiden.request.method() { [ $# -gt 0 ] && export VOIDEN_REQUEST_METHOD="$(_vd_val "$@")" || printf "%s" "$VOIDEN_REQUEST_METHOD"; }','voiden.request.body() { [ $# -gt 0 ] && export VOIDEN_REQUEST_BODY="$(_vd_val "$@")" || printf "%s" "$VOIDEN_REQUEST_BODY"; }',"# shared entry builder \u2014 stores result in $_VD_KV_ENTRY","_vd_build_kv_entry() {",` local _Q='"' _k _v`,' _k="${1//$_Q/\\\\$_Q}"',' _v="${2//$_Q/\\\\$_Q}"',` printf -v _VD_KV_ENTRY '{"key":"%s","value":"%s","enabled":true}' "$_k" "$_v"`,"}","# _vd_set_kv: replace the array with a single entry","_vd_set_kv() {",' local _var="$1"',' _vd_build_kv_entry "$2" "$3"',` printf -v "$_var" '[%s]' "$_VD_KV_ENTRY"`,' export "$_var"',"}","# _vd_push_kv: append an entry to the existing array","_vd_push_kv() {",' local _var="$1" _cur',' _vd_build_kv_entry "$2" "$3"',' _cur="${!_var}"',' if [ -z "$_cur" ] || [ "$_cur" = "[]" ]; then',` printf -v "$_var" '[%s]' "$_VD_KV_ENTRY"`," else",` printf -v "$_var" '%s,%s]' "\${_cur%]}" "$_VD_KV_ENTRY"`," fi",' export "$_var"',"}","# collection setters: 2 args = set as single {key,value}; 1 arg = raw JSON; 0 args = getter",'voiden.request.headers() { if [ $# -ge 2 ]; then _vd_set_kv VOIDEN_REQUEST_HEADERS "$1" "$2"; elif [ $# -gt 0 ]; then export VOIDEN_REQUEST_HEADERS="$(_vd_val "$@")"; else printf "%s" "$VOIDEN_REQUEST_HEADERS"; fi; }','voiden.request.queryParams() { if [ $# -ge 2 ]; then _vd_set_kv VOIDEN_REQUEST_QUERY_PARAMS "$1" "$2"; elif [ $# -gt 0 ]; then export VOIDEN_REQUEST_QUERY_PARAMS="$(_vd_val "$@")"; else printf "%s" "$VOIDEN_REQUEST_QUERY_PARAMS"; fi; }','voiden.request.pathParams() { if [ $# -ge 2 ]; then _vd_set_kv VOIDEN_REQUEST_PATH_PARAMS "$1" "$2"; elif [ $# -gt 0 ]; then export VOIDEN_REQUEST_PATH_PARAMS="$(_vd_val "$@")"; else printf "%s" "$VOIDEN_REQUEST_PATH_PARAMS"; fi; }','voiden.request.headers.push() { _vd_push_kv VOIDEN_REQUEST_HEADERS "$1" "$2"; }','voiden.request.queryParams.push() { _vd_push_kv VOIDEN_REQUEST_QUERY_PARAMS "$1" "$2"; }','voiden.request.pathParams.push() { _vd_push_kv VOIDEN_REQUEST_PATH_PARAMS "$1" "$2"; }',"# response getters and writable setters (status, statusText, body)",'voiden.response.status() { [ $# -gt 0 ] && export VOIDEN_RESPONSE_STATUS="$(_vd_val "$@")" || printf "%s" "$VOIDEN_RESPONSE_STATUS"; }','voiden.response.statusText() { [ $# -gt 0 ] && export VOIDEN_RESPONSE_STATUS_TEXT="$(_vd_val "$@")" || printf "%s" "$VOIDEN_RESPONSE_STATUS_TEXT"; }','voiden.response.body() { [ $# -gt 0 ] && export VOIDEN_RESPONSE_BODY="$(_vd_val "$@")" || printf "%s" "$VOIDEN_RESPONSE_BODY"; }',"# response read-only fields",'voiden.response.headers() { printf "%s" "$VOIDEN_RESPONSE_HEADERS"; }','voiden.response.time() { printf "%s" "$VOIDEN_RESPONSE_TIME"; }','voiden.response.size() { printf "%s" "$VOIDEN_RESPONSE_SIZE"; }',"","voiden_assert() {",' local _actual="$1" _op="$2" _expected="$3" _msg="${4:-}" _passed="false"',' case "$_op" in',' "=="|eq|equal) [ "$_actual" = "$_expected" ] && _passed="true" ;;',' "===") [ "$_actual" = "$_expected" ] && _passed="true" ;;',' "!="|neq|notequal) [ "$_actual" != "$_expected" ] && _passed="true" ;;',' "!==") [ "$_actual" != "$_expected" ] && _passed="true" ;;',' contains|includes) case "$_actual" in *"$_expected"*) _passed="true";; esac ;;',' matches|regex) printf "%s" "$_actual" | grep -qE "$_expected" 2>/dev/null && _passed="true"; true ;;',' truthy) [ -n "$_actual" ] && _passed="true" ;;',' falsy) [ -z "$_actual" ] && _passed="true" ;;',' ">"|greater|greaterthan) (( _actual > _expected )) 2>/dev/null && _passed="true"; true ;;',' ">="|gte) (( _actual >= _expected )) 2>/dev/null && _passed="true"; true ;;',' "<"|less|lessthan) (( _actual < _expected )) 2>/dev/null && _passed="true"; true ;;',' "<="|lte) (( _actual <= _expected )) 2>/dev/null && _passed="true"; true ;;'," esac",' printf "%s\\t%s\\t%s\\t%s\\t%s\\n" "$(_vd_b64 "$_passed")" "$(_vd_b64 "$_actual")" "$(_vd_b64 "$_op")" "$(_vd_b64 "$_expected")" "$(_vd_b64 "$_msg")" >> "$_VD_ASSERT_FILE"',"}","","# Pre-loaded env vars",m,"","# Pre-loaded variables",b,"",`export VOIDEN_REQUEST_URL=${a(r?.url??"")}`,`export VOIDEN_REQUEST_METHOD=${a(r?.method??"GET")}`,`export VOIDEN_REQUEST_BODY=${a(r?.body!=null?typeof r.body=="object"?JSON.stringify(r.body):String(r.body):"")}`,`export VOIDEN_REQUEST_HEADERS=${a(JSON.stringify(r?.headers??[]))}`,`export VOIDEN_REQUEST_QUERY_PARAMS=${a(JSON.stringify(r?.queryParams??[]))}`,`export VOIDEN_REQUEST_PATH_PARAMS=${a(JSON.stringify(r?.pathParams??[]))}`,`export VOIDEN_RESPONSE_STATUS=${a(g?String(n?.status??""):"")}`,`export VOIDEN_RESPONSE_STATUS_TEXT=${a(g?String(n?.statusText??""):"")}`,`export VOIDEN_RESPONSE_BODY=${a(g&&n?.body!=null?typeof n.body=="object"?JSON.stringify(n.body):String(n.body):"")}`,`export VOIDEN_RESPONSE_HEADERS=${a(g?JSON.stringify(n?.headers??{}):"{}")}`,`export VOIDEN_RESPONSE_TIME=${a(g?String(n?.time??0):"0")}`,`export VOIDEN_RESPONSE_SIZE=${a(g?String(n?.size??0):"0")}`,"","# --- User Script (sourced from separate file; errors are caught) ---",'. "$_VD_USERSCRIPT_FILE" || true',"# --- End User Script ---","",'printf "%s\\t%s\\n" "$(_vd_b64 "url")" "$(_vd_b64 "$VOIDEN_REQUEST_URL")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "method")" "$(_vd_b64 "$VOIDEN_REQUEST_METHOD")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "body")" "$(_vd_b64 "$VOIDEN_REQUEST_BODY")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "headers")" "$(_vd_b64 "$VOIDEN_REQUEST_HEADERS")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "queryParams")" "$(_vd_b64 "$VOIDEN_REQUEST_QUERY_PARAMS")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "pathParams")" "$(_vd_b64 "$VOIDEN_REQUEST_PATH_PARAMS")" >> "$_VD_REQUEST_FILE"',"# Write modified response fields (only when a response exists)",`[ -n ${a(g?"1":"")} ] && {`,'printf "%s\\t%s\\n" "$(_vd_b64 "status")" "$(_vd_b64 "$VOIDEN_RESPONSE_STATUS")" >> "$_VD_RESPONSE_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "statusText")" "$(_vd_b64 "$VOIDEN_RESPONSE_STATUS_TEXT")" >> "$_VD_RESPONSE_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "body")" "$(_vd_b64 "$VOIDEN_RESPONSE_BODY")" >> "$_VD_RESPONSE_FILE"',"}","true"].join(`
4
- `)}var A,I,L,U=q(()=>{"use strict";A=`
1
+ "use strict";var D=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var ue=Object.prototype.hasOwnProperty;var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var C=(e,t)=>{for(var r in t)D(e,r,{get:t[r],enumerable:!0})},de=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ce(t))!ue.call(e,s)&&s!==r&&D(e,s,{get:()=>t[s],enumerable:!(n=le(t,s))||n.enumerable});return e};var _e=e=>de(D({},"__esModule",{value:!0}),e);function N(e){return"'"+String(e).replace(/'/g,"'\\''")+"'"}function Q(e){let{request:t,response:r,envVars:n,variables:s,logFile:i,varFile:o,assertFile:l,cancelFile:d,reqFile:c,respFile:f,userScriptFile:u}=e,S=Object.entries(n).map(([g,_])=>`_VD_ENV_${g.replace(/[^A-Za-z0-9_]/g,"_")}=${N(String(_))}`).join(`
2
+ `)||"# (no env vars)",b=Object.entries(s).map(([g,_])=>`_VD_VAR_${g.replace(/[^A-Za-z0-9_]/g,"_")}=${N(String(_))}`).join(`
3
+ `)||"# (no variables)",m=!!r,a=N;return["#!/bin/bash","set +e",`_VD_LOG_FILE=${a(i)}`,`_VD_VAR_FILE=${a(o)}`,`_VD_ASSERT_FILE=${a(l)}`,`_VD_CANCEL_FILE=${a(d)}`,`_VD_REQUEST_FILE=${a(c)}`,`_VD_RESPONSE_FILE=${a(f)}`,`_VD_USERSCRIPT_FILE=${a(u)}`,'touch "$_VD_LOG_FILE" "$_VD_VAR_FILE" "$_VD_ASSERT_FILE" "$_VD_REQUEST_FILE" "$_VD_RESPONSE_FILE"','_vd_b64() { printf "%s" "$1" | base64 | tr -d "\\n"; }',"voiden_log() {",' local _level="log"',' case "$1" in log|info|debug|warn|warning|error) _level="$1"; shift;; esac',' [ "$_level" = "warning" ] && _level="warn"',' printf "%s\\t%s\\n" "$(_vd_b64 "$_level")" "$(_vd_b64 "$*")" >> "$_VD_LOG_FILE"',"}",'voiden_env_get() { local _k="_VD_ENV_${1//[^A-Za-z0-9_]/_}"; printf "%s" "${!_k}"; }','voiden_variables_get() { local _k="_VD_VAR_${1//[^A-Za-z0-9_]/_}"; printf "%s" "${!_k}"; }',"voiden_variables_set() {",' local _key="$1" _val="$2"',' local _k="_VD_VAR_${_key//[^A-Za-z0-9_]/_}"',' export "${_k}=${_val}"',' printf "%s\\t%s\\n" "$(_vd_b64 "$_key")" "$(_vd_b64 "$_val")" >> "$_VD_VAR_FILE"',"}",'voiden_cancel() { touch "$_VD_CANCEL_FILE"; }',"","# voiden.* dot-notation aliases (same API as JS / Python)",'voiden.log() { voiden_log "$@"; }','voiden.env.get() { voiden_env_get "$@"; }','voiden.variables.get() { voiden_variables_get "$@"; }','voiden.variables.set() { voiden_variables_set "$@"; }','voiden.assert() { voiden_assert "$@"; }',"voiden.cancel() { voiden_cancel; }","# request getters / setters","# Supports both call styles:",'# voiden.request.url "https://new.com" (bash style)','# voiden.request.url = "https://new.com" (JS-like style \u2014 = is treated as separator)','_vd_val() { [ "$1" = "=" ] && printf "%s" "$2" || printf "%s" "$1"; }','voiden.request.url() { [ $# -gt 0 ] && export VOIDEN_REQUEST_URL="$(_vd_val "$@")" || printf "%s" "$VOIDEN_REQUEST_URL"; }','voiden.request.method() { [ $# -gt 0 ] && export VOIDEN_REQUEST_METHOD="$(_vd_val "$@")" || printf "%s" "$VOIDEN_REQUEST_METHOD"; }','voiden.request.body() { [ $# -gt 0 ] && export VOIDEN_REQUEST_BODY="$(_vd_val "$@")" || printf "%s" "$VOIDEN_REQUEST_BODY"; }',"# shared entry builder \u2014 stores result in $_VD_KV_ENTRY","_vd_build_kv_entry() {",` local _Q='"' _k _v`,' _k="${1//$_Q/\\\\$_Q}"',' _v="${2//$_Q/\\\\$_Q}"',` printf -v _VD_KV_ENTRY '{"key":"%s","value":"%s","enabled":true}' "$_k" "$_v"`,"}","# _vd_set_kv: replace the array with a single entry","_vd_set_kv() {",' local _var="$1"',' _vd_build_kv_entry "$2" "$3"',` printf -v "$_var" '[%s]' "$_VD_KV_ENTRY"`,' export "$_var"',"}","# _vd_push_kv: append an entry to the existing array","_vd_push_kv() {",' local _var="$1" _cur',' _vd_build_kv_entry "$2" "$3"',' _cur="${!_var}"',' if [ -z "$_cur" ] || [ "$_cur" = "[]" ]; then',` printf -v "$_var" '[%s]' "$_VD_KV_ENTRY"`," else",` printf -v "$_var" '%s,%s]' "\${_cur%]}" "$_VD_KV_ENTRY"`," fi",' export "$_var"',"}","# collection setters: 2 args = set as single {key,value}; 1 arg = raw JSON; 0 args = getter",'voiden.request.headers() { if [ $# -ge 2 ]; then _vd_set_kv VOIDEN_REQUEST_HEADERS "$1" "$2"; elif [ $# -gt 0 ]; then export VOIDEN_REQUEST_HEADERS="$(_vd_val "$@")"; else printf "%s" "$VOIDEN_REQUEST_HEADERS"; fi; }','voiden.request.queryParams() { if [ $# -ge 2 ]; then _vd_set_kv VOIDEN_REQUEST_QUERY_PARAMS "$1" "$2"; elif [ $# -gt 0 ]; then export VOIDEN_REQUEST_QUERY_PARAMS="$(_vd_val "$@")"; else printf "%s" "$VOIDEN_REQUEST_QUERY_PARAMS"; fi; }','voiden.request.pathParams() { if [ $# -ge 2 ]; then _vd_set_kv VOIDEN_REQUEST_PATH_PARAMS "$1" "$2"; elif [ $# -gt 0 ]; then export VOIDEN_REQUEST_PATH_PARAMS="$(_vd_val "$@")"; else printf "%s" "$VOIDEN_REQUEST_PATH_PARAMS"; fi; }','voiden.request.headers.push() { _vd_push_kv VOIDEN_REQUEST_HEADERS "$1" "$2"; }','voiden.request.queryParams.push() { _vd_push_kv VOIDEN_REQUEST_QUERY_PARAMS "$1" "$2"; }','voiden.request.pathParams.push() { _vd_push_kv VOIDEN_REQUEST_PATH_PARAMS "$1" "$2"; }',"# response getters and writable setters (status, statusText, body)",'voiden.response.status() { [ $# -gt 0 ] && export VOIDEN_RESPONSE_STATUS="$(_vd_val "$@")" || printf "%s" "$VOIDEN_RESPONSE_STATUS"; }','voiden.response.statusText() { [ $# -gt 0 ] && export VOIDEN_RESPONSE_STATUS_TEXT="$(_vd_val "$@")" || printf "%s" "$VOIDEN_RESPONSE_STATUS_TEXT"; }','voiden.response.body() { [ $# -gt 0 ] && export VOIDEN_RESPONSE_BODY="$(_vd_val "$@")" || printf "%s" "$VOIDEN_RESPONSE_BODY"; }',"# response read-only fields",'voiden.response.headers() { printf "%s" "$VOIDEN_RESPONSE_HEADERS"; }','voiden.response.time() { printf "%s" "$VOIDEN_RESPONSE_TIME"; }','voiden.response.size() { printf "%s" "$VOIDEN_RESPONSE_SIZE"; }',"","voiden_assert() {",' local _actual="$1" _op="$2" _expected="$3" _msg="${4:-}" _passed="false"',' case "$_op" in',' "=="|eq|equal) [ "$_actual" = "$_expected" ] && _passed="true" ;;',' "===") [ "$_actual" = "$_expected" ] && _passed="true" ;;',' "!="|neq|notequal) [ "$_actual" != "$_expected" ] && _passed="true" ;;',' "!==") [ "$_actual" != "$_expected" ] && _passed="true" ;;',' contains|includes) case "$_actual" in *"$_expected"*) _passed="true";; esac ;;',' matches|regex) printf "%s" "$_actual" | grep -qE "$_expected" 2>/dev/null && _passed="true"; true ;;',' truthy) [ -n "$_actual" ] && _passed="true" ;;',' falsy) [ -z "$_actual" ] && _passed="true" ;;',' ">"|greater|greaterthan) (( _actual > _expected )) 2>/dev/null && _passed="true"; true ;;',' ">="|gte) (( _actual >= _expected )) 2>/dev/null && _passed="true"; true ;;',' "<"|less|lessthan) (( _actual < _expected )) 2>/dev/null && _passed="true"; true ;;',' "<="|lte) (( _actual <= _expected )) 2>/dev/null && _passed="true"; true ;;'," esac",' printf "%s\\t%s\\t%s\\t%s\\t%s\\n" "$(_vd_b64 "$_passed")" "$(_vd_b64 "$_actual")" "$(_vd_b64 "$_op")" "$(_vd_b64 "$_expected")" "$(_vd_b64 "$_msg")" >> "$_VD_ASSERT_FILE"',"}","","# Pre-loaded env vars",S,"","# Pre-loaded variables",b,"",`export VOIDEN_REQUEST_URL=${a(t?.url??"")}`,`export VOIDEN_REQUEST_METHOD=${a(t?.method??"GET")}`,`export VOIDEN_REQUEST_BODY=${a(t?.body!=null?typeof t.body=="object"?JSON.stringify(t.body):String(t.body):"")}`,`export VOIDEN_REQUEST_HEADERS=${a(JSON.stringify(t?.headers??[]))}`,`export VOIDEN_REQUEST_QUERY_PARAMS=${a(JSON.stringify(t?.queryParams??[]))}`,`export VOIDEN_REQUEST_PATH_PARAMS=${a(JSON.stringify(t?.pathParams??[]))}`,`export VOIDEN_RESPONSE_STATUS=${a(m?String(r?.status??""):"")}`,`export VOIDEN_RESPONSE_STATUS_TEXT=${a(m?String(r?.statusText??""):"")}`,`export VOIDEN_RESPONSE_BODY=${a(m&&r?.body!=null?typeof r.body=="object"?JSON.stringify(r.body):String(r.body):"")}`,`export VOIDEN_RESPONSE_HEADERS=${a(m?JSON.stringify(r?.headers??{}):"{}")}`,`export VOIDEN_RESPONSE_TIME=${a(m?String(r?.time??0):"0")}`,`export VOIDEN_RESPONSE_SIZE=${a(m?String(r?.size??0):"0")}`,"","# --- User Script (sourced from separate file; errors are caught) ---",'. "$_VD_USERSCRIPT_FILE" || true',"# --- End User Script ---","",'printf "%s\\t%s\\n" "$(_vd_b64 "url")" "$(_vd_b64 "$VOIDEN_REQUEST_URL")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "method")" "$(_vd_b64 "$VOIDEN_REQUEST_METHOD")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "body")" "$(_vd_b64 "$VOIDEN_REQUEST_BODY")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "headers")" "$(_vd_b64 "$VOIDEN_REQUEST_HEADERS")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "queryParams")" "$(_vd_b64 "$VOIDEN_REQUEST_QUERY_PARAMS")" >> "$_VD_REQUEST_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "pathParams")" "$(_vd_b64 "$VOIDEN_REQUEST_PATH_PARAMS")" >> "$_VD_REQUEST_FILE"',"# Write modified response fields (only when a response exists)",`[ -n ${a(m?"1":"")} ] && {`,'printf "%s\\t%s\\n" "$(_vd_b64 "status")" "$(_vd_b64 "$VOIDEN_RESPONSE_STATUS")" >> "$_VD_RESPONSE_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "statusText")" "$(_vd_b64 "$VOIDEN_RESPONSE_STATUS_TEXT")" >> "$_VD_RESPONSE_FILE"','printf "%s\\t%s\\n" "$(_vd_b64 "body")" "$(_vd_b64 "$VOIDEN_RESPONSE_BODY")" >> "$_VD_RESPONSE_FILE"',"}","true"].join(`
4
+ `)}var U,j,z,H=F(()=>{"use strict";U=`
5
5
  const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor;
6
6
 
7
7
  let requestState = null;
@@ -119,7 +119,7 @@
119
119
  }
120
120
  }
121
121
  };
122
- `,I=`
122
+ `,j=`
123
123
  'use strict';
124
124
  var Worker = require('worker_threads').Worker;
125
125
  var _chunks = [];
@@ -162,7 +162,7 @@ process.stdin.on('end', function() {
162
162
 
163
163
  _worker.postMessage({ type: 'start', script: _input.scriptBody, request: _input.request || {}, response: _input.response || null, envData: _envData, variablesData: _variablesData });
164
164
  });
165
- `,L=`
165
+ `,z=`
166
166
  import sys, json
167
167
  import traceback
168
168
 
@@ -388,10 +388,10 @@ def main():
388
388
  sys.exit(0 if result.get("success") else 1)
389
389
 
390
390
  main()
391
- `});var w={};P(w,{executeHeadlessScript:()=>ye,getPythonBin:()=>j,isNodeAvailable:()=>oe,loadHeadlessVariables:()=>ie});function j(){if(h!==void 0)return h;for(let e of["python3","python"])try{return(0,R.execFileSync)(e,["--version"],{stdio:"pipe",timeout:3e3}),h=e,e}catch{}return h=null,null}function oe(){try{return require("worker_threads"),!0}catch{return!1}}function ie(){let e=(0,v.join)((0,k.homedir)(),".voiden",".process.env.json");if(!(0,_.existsSync)(e))return{};try{return JSON.parse((0,_.readFileSync)(e,"utf-8"))}catch{return{}}}function C(e,r,n){return new Promise(s=>{let t=(0,R.spawn)(e,r,{stdio:["pipe","pipe","pipe"]}),i="",o="";t.stdout.on("data",d=>{i+=d.toString()}),t.stderr.on("data",d=>{o+=d.toString()});let l=setTimeout(()=>{t.kill("SIGKILL"),s({stdout:"",stderr:`Timed out after ${V}ms`,code:-1})},V);t.on("close",d=>{clearTimeout(l),s({stdout:i,stderr:o,code:d})}),t.stdin.write(n,"utf-8"),t.stdin.end()})}function z(e,r,n){let s=e.trim().split(`
392
- `).pop()??"";try{let t=JSON.parse(s);return{success:!!t.success,logs:Array.isArray(t.logs)?t.logs:[],assertions:Array.isArray(t.assertions)?t.assertions:[],cancelled:!!t.cancelled,error:t.error,exitCode:n??0,modifiedRequest:t.modifiedRequest,modifiedResponse:t.modifiedResponse}}catch{let t=r.trim()||`Script output could not be parsed: ${s.slice(0,300)}`;return{success:!1,logs:[],error:t,cancelled:!1,exitCode:n??1}}}async function le(e,r,n,s,t){let i=Object.getPrototypeOf(async function(){}).constructor,o=[],l=[],d=!1,u={...t},y={},p=a=>({"==":"==","===":"===",eq:"==",equal:"==","!=":"!=","!==":"!==",neq:"!=",notequal:"!=",">":">",">=":">=","<":"<","<=":"<=",greater:">",greaterthan:">",gte:">=",less:"<",lessthan:"<",lte:"<=",contains:"contains",includes:"contains",matches:"matches",regex:"matches",truthy:"truthy",falsy:"falsy"})[a.trim().toLowerCase().replace(/\s+/g,"")]??null,m=(a,f,c)=>{try{switch(f){case"==":return a==c;case"===":return a===c;case"!=":return a!=c;case"!==":return a!==c;case">":return a>c;case">=":return a>=c;case"<":return a<c;case"<=":return a<=c;case"contains":return typeof a=="string"?a.includes(String(c)):Array.isArray(a)&&a.includes(c);case"matches":return new RegExp(String(c)).test(String(a));case"truthy":return!!a;case"falsy":return!a;default:return!!a}}catch{return!1}},b=a=>{try{return JSON.stringify(a)}catch{return String(a)}},g={request:r,response:n,env:{get:a=>s[a]},variables:{get:a=>u[a],set:(a,f)=>{u[a]=f,y[a]=f}},log:(a,...f)=>{let S=typeof a=="string"&&["log","info","debug","warn","warning","error"].includes(a.toLowerCase()),E=S?a==="warning"?"warn":a:"log";o.push({level:E,args:S?f:[a,...f]})},assert:(a,f,c,S)=>{let E=p(f);if(!E){l.push({passed:!1,message:S??"",reason:`Unsupported operator: ${f}`,actualValue:a,operator:f,expectedValue:c});return}l.push({passed:m(a,E,c),message:S??"",condition:`${b(a)} ${E} ${b(c)}`,actualValue:a,operator:E,expectedValue:c})},cancel:()=>{d=!0}};try{return await new i("voiden","vd",e)(g,g),{success:!0,logs:o,assertions:l,cancelled:d,exitCode:0,modifiedRequest:g.request,modifiedResponse:g.response,modifiedVariables:y}}catch(a){return{success:!1,logs:o,assertions:l,error:String(a?.stack||a?.message||a),cancelled:d,exitCode:1,modifiedVariables:y}}}async function ce(e,r,n,s,t){let i=JSON.stringify({scriptBody:e,workerSource:A,request:r??{},response:n??null,envVars:s,variables:t}),{stdout:o,stderr:l,code:d}=await C("node",["-e",I],i);return z(o,l,d)}async function ue(e,r,n,s,t){let i=j();if(!i)return{success:!1,logs:[],error:"python3 not found in PATH. Install Python 3 to run Python scripts in voiden-runner.",cancelled:!1,exitCode:-1};let o=JSON.stringify({scriptBody:e,request:r??{},response:n??null,envVars:s,variables:t}),{stdout:l,stderr:d,code:u}=await C(i,["-c",L],o);return z(l,d,u)}async function de(e,r,n,s,t){let i=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,o=(0,v.join)((0,k.tmpdir)(),`voiden-runner-${i}`);(0,_.mkdirSync)(o,{recursive:!0});let l=(0,v.join)(o,"log.tsv"),d=(0,v.join)(o,"vars.tsv"),u=(0,v.join)(o,"assertions.tsv"),y=(0,v.join)(o,"cancel"),p=(0,v.join)(o,"request.tsv"),m=(0,v.join)(o,"response.tsv"),b=(0,v.join)(o,"user.sh"),g=(0,v.join)(o,"wrapper.sh");(0,_.writeFileSync)(b,e,"utf-8");for(let c of[l,d,u,p,m])(0,_.writeFileSync)(c,"","utf-8");let a=F({request:r??{},response:n??null,envVars:s,variables:t,logFile:l,varFile:d,assertFile:u,cancelFile:y,reqFile:p,respFile:m,userScriptFile:b});return(0,_.writeFileSync)(g,a,"utf-8"),new Promise(c=>{let S=(0,R.spawn)("bash",[g],{stdio:["ignore","pipe","pipe"]}),E=setTimeout(()=>{S.kill("SIGKILL"),f(),c({success:!1,logs:[],error:`Shell script timed out after ${V}ms`,cancelled:!1,exitCode:-1})},V);S.on("close",N=>{clearTimeout(E);let G=_e(l),K=pe(u),Z=fe(p,r),X=ge(m,n),ee=(0,_.existsSync)(y);f(),c({success:N===0,logs:G,assertions:K,cancelled:ee,exitCode:N??0,modifiedRequest:Z,modifiedResponse:X})})});function f(){try{(0,_.rmSync)(o,{recursive:!0,force:!0})}catch{}}}function $(e){return Buffer.from(e??"","base64").toString("utf-8")}function _e(e){return(0,_.existsSync)(e)?(0,_.readFileSync)(e,"utf-8").split(`
393
- `).filter(Boolean).map(r=>{let[n,s]=r.split(" ");return{level:$(n)||"log",args:[$(s)]}}):[]}function pe(e){return(0,_.existsSync)(e)?(0,_.readFileSync)(e,"utf-8").split(`
394
- `).filter(Boolean).map(r=>{let n=r.split(" ").map($),[s,t,i,o,l]=n;return{passed:s==="true",actualValue:t,operator:i,expectedValue:o,message:l??""}}):[]}function fe(e,r){if(!(0,_.existsSync)(e))return r;let n={...r};return(0,_.readFileSync)(e,"utf-8").split(`
395
- `).filter(Boolean).forEach(s=>{let[t,i]=s.split(" "),o=$(t),l=$(i);if(o)if(["headers","queryParams","pathParams"].includes(o))try{n[o]=JSON.parse(l)}catch{n[o]=l}else n[o]=l}),n}function ge(e,r){if(!(0,_.existsSync)(e)||!r)return r;let n={...r};return(0,_.readFileSync)(e,"utf-8").split(`
396
- `).filter(Boolean).forEach(s=>{let[t,i]=s.split(" "),o=$(t),l=$(i);if(o)if(o==="status")n[o]=parseInt(l,10)||0;else if(o==="body")try{n[o]=JSON.parse(l)}catch{n[o]=l}else n[o]=l}),n}async function ye(e,r,n,s,t={},i={},o=!1){return r==="python"?ue(e,n,s,t,i):r==="shell"?de(e,n,s,t,i):o?ce(e,n,s,t,i):le(e,n,s,t,i)}var R,_,v,k,V,h,D=q(()=>{"use strict";R=require("child_process"),_=require("fs"),v=require("path"),k=require("os");U();V=1e4});var Re={};P(Re,{default:()=>$e});module.exports=ae(Re);var J=require("@voiden/sdk/shared"),x=require("fs"),Y=require("path"),W=require("os");function Q(e,r){if(!e?.content)return null;let n=null,s=t=>{t.type===r&&t.attrs?.body&&(n={body:t.attrs.body,language:t.attrs.language??"javascript"}),t.content?.forEach?.(i=>s(i))};return s(e),n}function M(e,r){return r==="python"?e.replace(/#.*$/gm,"").trim():e.replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").trim()}function H(){let e=(0,Y.join)((0,W.homedir)(),".voiden",".process.env.json");if(!(0,x.existsSync)(e))return{};try{return JSON.parse((0,x.readFileSync)(e,"utf-8"))}catch{return{}}}function B(e){let r=n=>Array.isArray(n)?n:n&&typeof n=="object"?Object.entries(n).map(([s,t])=>({key:s,value:String(t),enabled:!0})):[];return{url:e.url??"",method:e.method??"GET",headers:r(e.headers),body:e.body,queryParams:r(e.queryParams),pathParams:r(e.pathParams)}}function ve(e){let r=e.headers??[],n={},s=[];r.forEach(i=>{i.key.toLowerCase()==="set-cookie"?s.push(i.value):n[i.key]=i.value}),s.length>0&&(n["set-cookie"]=s.join(`
397
- `));let t=(0,J.parseCookies)(r);return{status:e.status,statusText:e.statusText,headers:n,cookies:t,body:e.body,time:e.durationMs??0,size:e.size??0}}function me(e,r){r.url=e.url,r.method=e.method;let n=s=>Array.isArray(s)?s:s&&typeof s=="object"?Object.entries(s).map(([t,i])=>({key:t,value:String(i),enabled:!0})):[];if(r.headers=n(e.headers),r.queryParams=n(e.queryParams),r.pathParams=n(e.pathParams),e.body!=null&&typeof e.body=="object")try{r.body=JSON.stringify(e.body)}catch{r.body=String(e.body)}else r.body=e.body}function Se(e,r){e.status!==void 0&&(r.status=e.status),e.statusText!==void 0&&(r.statusText=e.statusText),e.body!==void 0&&(r.body=e.body)}function Ee(e,r,n){Array.isArray(e.reportEntries)||(e.reportEntries=[]);let s=e.reportEntries;for(let t of r.assertions??[])s.push({type:"assertion",message:t.message||t.condition||"Script assertion",passed:t.passed,actual:t.actualValue,expected:t.expectedValue,operator:t.operator});for(let t of n){let i=Array.isArray(t.args)?t.args.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(" "):String(t.args??"");i&&s.push({type:"log",message:i,level:t.level??"log"})}r.error&&s.push({type:"log",message:`Script error: ${r.error}`,level:"error"})}var be=e=>({onload(){let r=null,n={};e.pipeline.registerHook("pre-processing",s=>{if(!s.editor)return;s.requestState.metadata||(s.requestState.metadata={});let t=s.editor.getJSON();s.requestState.metadata.editorDocument=t,r=t,n=s.editor.__cliEnv??{},s.requestState.metadata._cliVarsRef=s.editor.__cliVars??{}},5),e.pipeline.registerHook("pre-send",async s=>{if(!r)return;let t=Q(r,"pre_script");if(!t||!M(t.body,t.language))return;let{executeHeadlessScript:i}=await Promise.resolve().then(()=>(D(),w)),o=s.requestState.metadata?._cliVarsRef??{},l={...H(),...o},d=B(s.requestState),u=await i(t.body,t.language,d,null,n,l);if(u.success&&u.modifiedRequest&&me(u.modifiedRequest,s.requestState),u.modifiedVariables&&Object.assign(o,u.modifiedVariables),s.requestState.metadata||(s.requestState.metadata={}),s.requestState.metadata.preScriptLogs=u.logs??[],s.requestState.metadata.preScriptAssertions=u.assertions??[],u.error&&(s.requestState.metadata.preScriptError=u.error),u.cancelled)throw s.requestState.metadata.scriptCancelled=!0,new Error("Request cancelled by pre-request script")},15),e.pipeline.registerHook("post-processing",async s=>{s.responseState.metadata||(s.responseState.metadata={});let t=s.responseState.metadata;if(!r)return;let i=Q(r,"post_script");if(!i||!M(i.body,i.language))return;let{executeHeadlessScript:o}=await Promise.resolve().then(()=>(D(),w)),l=s.requestState?.metadata?._cliVarsRef??{},d={...H(),...l},u=B(s.requestState),y=ve(s.responseState),p=await o(i.body,i.language,u,y,n,d);p.success&&p.modifiedResponse&&Se(p.modifiedResponse,s.responseState),p.modifiedVariables&&Object.assign(l,p.modifiedVariables),t.postScriptLogs=p.logs??[],t.postScriptAssertions=p.assertions??[],p.error&&(t.postScriptError=p.error),r=null},25),e.pipeline.registerHook("post-processing",s=>{let t=s.responseState;if(!t)return;t.metadata||(t.metadata={});let i=s.requestState?.metadata?.preScriptLogs??[],o=s.requestState?.metadata?.preScriptAssertions??[],l=t.metadata.postScriptLogs??[],d=t.metadata.postScriptAssertions??[],u=s.requestState?.metadata?.preScriptError,y=t.metadata.postScriptError,p={assertions:[...o,...d],error:y??u},m=[...i,...l];Ee(t.metadata,p,m)},60)}}),$e=be;
391
+ `});var A={};C(A,{executeHeadlessScript:()=>Ve,getPythonBin:()=>B,isNodeAvailable:()=>ye,loadHeadlessVariables:()=>me});async function pe(){if(process.platform==="win32")return null;if(P!==void 0)return P;let e=process.env.SHELL||"/bin/zsh",t="__VOIDEN_PATH__",r="echo "+t+"${PATH}"+t,n=await new Promise(s=>{(0,R.execFile)(e,["-ilc",r],{timeout:5e3},(i,o)=>{if(i){s(null);return}let l=new RegExp(`${t}(.*)${t}`,"s").exec(o);s(l?l[1].trim():null)})});return P=n,n}async function fe(){let e=await pe();return e?`${e}${y.delimiter}${M}`:M}function ge(e,t){let r=process.platform==="win32"?"where":"which";return new Promise(n=>{(0,R.execFile)(r,[e],{timeout:3e3,env:{...process.env,PATH:t}},(s,i)=>{n(s||!i.trim()?null:i.trim().split(/\r?\n/)[0])})})}async function w(){return q===void 0&&(q=await fe()),q}async function B(){if(k!==void 0)return k;let e=await w();for(let t of["python3","python"]){let r=await ge(t,e);if(r)return k=r,r}for(let t of process.platform==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/usr/bin/python3"])try{return await(0,J.access)(t,p.constants.X_OK),k=t,t}catch{continue}return k=null,null}function ye(){try{return require("worker_threads"),!0}catch{return!1}}function me(){let e=(0,y.join)((0,x.homedir)(),".voiden",".process.env.json");if(!(0,p.existsSync)(e))return{};try{return JSON.parse((0,p.readFileSync)(e,"utf-8"))}catch{return{}}}function Y(e,t,r,n){return new Promise(s=>{let i=(0,R.spawn)(e,t,{stdio:["pipe","pipe","pipe"],env:n?{...process.env,PATH:n}:process.env}),o="",l="",d=!1;i.stdout.on("data",u=>{o+=u.toString()}),i.stderr.on("data",u=>{l+=u.toString()});let c=setTimeout(()=>{i.kill("SIGKILL"),f({stdout:"",stderr:`Timed out after ${V}ms`,code:-1})},V),f=u=>{d||(d=!0,clearTimeout(c),s(u))};i.on("error",u=>{f({stdout:"",stderr:`Failed to run "${e}": ${u.message}`,code:-1})}),i.on("close",u=>f({stdout:o,stderr:l,code:u}));try{i.stdin.write(r,"utf-8"),i.stdin.end()}catch{}})}function W(e,t,r){let n=e.trim().split(`
392
+ `).pop()??"";try{let s=JSON.parse(n);return{success:!!s.success,logs:Array.isArray(s.logs)?s.logs:[],assertions:Array.isArray(s.assertions)?s.assertions:[],cancelled:!!s.cancelled,error:s.error,exitCode:r??0,modifiedRequest:s.modifiedRequest,modifiedResponse:s.modifiedResponse}}catch{let s=t.trim()||`Script output could not be parsed: ${n.slice(0,300)}`;return{success:!1,logs:[],error:s,cancelled:!1,exitCode:r??1}}}async function ve(e,t,r,n,s){let i=Object.getPrototypeOf(async function(){}).constructor,o=[],l=[],d=!1,c={...s},f={},u=a=>({"==":"==","===":"===",eq:"==",equal:"==","!=":"!=","!==":"!==",neq:"!=",notequal:"!=",">":">",">=":">=","<":"<","<=":"<=",greater:">",greaterthan:">",gte:">=",less:"<",lessthan:"<",lte:"<=",contains:"contains",includes:"contains",matches:"matches",regex:"matches",truthy:"truthy",falsy:"falsy"})[a.trim().toLowerCase().replace(/\s+/g,"")]??null,S=(a,g,_)=>{try{switch(g){case"==":return a==_;case"===":return a===_;case"!=":return a!=_;case"!==":return a!==_;case">":return a>_;case">=":return a>=_;case"<":return a<_;case"<=":return a<=_;case"contains":return typeof a=="string"?a.includes(String(_)):Array.isArray(a)&&a.includes(_);case"matches":return new RegExp(String(_)).test(String(a));case"truthy":return!!a;case"falsy":return!a;default:return!!a}}catch{return!1}},b=a=>{try{return JSON.stringify(a)}catch{return String(a)}},m={request:t,response:r,env:{get:a=>n[a]},variables:{get:a=>c[a],set:(a,g)=>{c[a]=g,f[a]=g}},log:(a,...g)=>{let E=typeof a=="string"&&["log","info","debug","warn","warning","error"].includes(a.toLowerCase()),v=E?a==="warning"?"warn":a:"log";o.push({level:v,args:E?g:[a,...g]})},assert:(a,g,_,E)=>{let v=u(g);if(!v){l.push({passed:!1,message:E??"",reason:`Unsupported operator: ${g}`,actualValue:a,operator:g,expectedValue:_});return}l.push({passed:S(a,v,_),message:E??"",condition:`${b(a)} ${v} ${b(_)}`,actualValue:a,operator:v,expectedValue:_})},cancel:()=>{d=!0}};try{return await new i("voiden","vd",e)(m,m),{success:!0,logs:o,assertions:l,cancelled:d,exitCode:0,modifiedRequest:m.request,modifiedResponse:m.response,modifiedVariables:f}}catch(a){return{success:!1,logs:o,assertions:l,error:String(a?.stack||a?.message||a),cancelled:d,exitCode:1,modifiedVariables:f}}}async function Se(e,t,r,n,s){let i=JSON.stringify({scriptBody:e,workerSource:U,request:t??{},response:r??null,envVars:n,variables:s}),o=await w(),{stdout:l,stderr:d,code:c}=await Y("node",["-e",j],i,o);return W(l,d,c)}async function Ee(e,t,r,n,s){let i=await B();if(!i)return{success:!1,logs:[],error:"python3 not found. Checked your login shell's PATH (sourcing .zshrc/.bash_profile/etc.), Homebrew, volta/fnm/pyenv, and common install locations \u2014 install Python 3 or make sure it's reachable from a terminal.",cancelled:!1,exitCode:-1};let o=JSON.stringify({scriptBody:e,request:t??{},response:r??null,envVars:n,variables:s}),l=await w(),{stdout:d,stderr:c,code:f}=await Y(i,["-c",z],o,l);return W(d,c,f)}async function be(e,t,r,n,s){let i=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,o=(0,y.join)((0,x.tmpdir)(),`voiden-runner-${i}`);(0,p.mkdirSync)(o,{recursive:!0});let l=(0,y.join)(o,"log.tsv"),d=(0,y.join)(o,"vars.tsv"),c=(0,y.join)(o,"assertions.tsv"),f=(0,y.join)(o,"cancel"),u=(0,y.join)(o,"request.tsv"),S=(0,y.join)(o,"response.tsv"),b=(0,y.join)(o,"user.sh"),m=(0,y.join)(o,"wrapper.sh");(0,p.writeFileSync)(b,e,"utf-8");for(let E of[l,d,c,u,S])(0,p.writeFileSync)(E,"","utf-8");let a=Q({request:t??{},response:r??null,envVars:n,variables:s,logFile:l,varFile:d,assertFile:c,cancelFile:f,reqFile:u,respFile:S,userScriptFile:b});(0,p.writeFileSync)(m,a,"utf-8");let g=await w();return new Promise(E=>{let v=(0,R.spawn)("bash",[m],{stdio:["ignore","pipe","pipe"],env:{...process.env,PATH:g}}),L=!1,T=$=>{L||(L=!0,clearTimeout(re),_(),E($))},re=setTimeout(()=>{v.kill("SIGKILL"),T({success:!1,logs:[],error:`Shell script timed out after ${V}ms`,cancelled:!1,exitCode:-1})},V);v.on("error",$=>{T({success:!1,logs:[],error:`Failed to run bash: ${$.message}`,cancelled:!1,exitCode:-1})}),v.on("close",$=>{let se=he(l),ne=$e(c),ae=Re(u,t),oe=ke(S,r),ie=(0,p.existsSync)(f);T({success:$===0,logs:se,assertions:ne,cancelled:ie,exitCode:$??0,modifiedRequest:ae,modifiedResponse:oe})})});function _(){try{(0,p.rmSync)(o,{recursive:!0,force:!0})}catch{}}}function h(e){return Buffer.from(e??"","base64").toString("utf-8")}function he(e){return(0,p.existsSync)(e)?(0,p.readFileSync)(e,"utf-8").split(`
393
+ `).filter(Boolean).map(t=>{let[r,n]=t.split(" ");return{level:h(r)||"log",args:[h(n)]}}):[]}function $e(e){return(0,p.existsSync)(e)?(0,p.readFileSync)(e,"utf-8").split(`
394
+ `).filter(Boolean).map(t=>{let r=t.split(" ").map(h),[n,s,i,o,l]=r;return{passed:n==="true",actualValue:s,operator:i,expectedValue:o,message:l??""}}):[]}function Re(e,t){if(!(0,p.existsSync)(e))return t;let r={...t};return(0,p.readFileSync)(e,"utf-8").split(`
395
+ `).filter(Boolean).forEach(n=>{let[s,i]=n.split(" "),o=h(s),l=h(i);if(o)if(["headers","queryParams","pathParams"].includes(o))try{r[o]=JSON.parse(l)}catch{r[o]=l}else r[o]=l}),r}function ke(e,t){if(!(0,p.existsSync)(e)||!t)return t;let r={...t};return(0,p.readFileSync)(e,"utf-8").split(`
396
+ `).filter(Boolean).forEach(n=>{let[s,i]=n.split(" "),o=h(s),l=h(i);if(o)if(o==="status")r[o]=parseInt(l,10)||0;else if(o==="body")try{r[o]=JSON.parse(l)}catch{r[o]=l}else r[o]=l}),r}async function Ve(e,t,r,n,s={},i={},o=!1){return t==="python"?Ee(e,r,n,s,i):t==="shell"?be(e,r,n,s,i):o?Se(e,r,n,s,i):ve(e,r,n,s,i)}var R,p,J,y,x,V,M,P,k,q,I=F(()=>{"use strict";R=require("child_process"),p=require("fs"),J=require("fs/promises"),y=require("path"),x=require("os");H();V=1e4,M=[process.env.PATH||"","/usr/local/bin","/opt/homebrew/bin","/usr/bin",(0,y.join)(process.env.HOME||"~",".volta/bin"),(0,y.join)(process.env.HOME||"~",".fnm/current/bin"),(0,y.join)(process.env.HOME||"~",".local/bin"),(0,y.join)(process.env.HOME||"~",".pyenv/shims")].join(y.delimiter)});var Ie={};C(Ie,{default:()=>Ae});module.exports=_e(Ie);var O=require("fs"),ee=require("path"),te=require("os");function xe(e){let t=e.indexOf("=");return t===-1?[e,!0]:[e.substring(0,t).trim(),e.substring(t+1).trim()]}function we(e){let t=e.split(";").map(o=>o.trim());if(t.length===0)return null;let r=t[0].indexOf("="),n=t[0].substring(0,r).trim(),s=t[0].substring(r+1).trim();if(!n)return null;let i={value:s};for(let o=1;o<t.length;o++){let[l,d]=xe(t[o]);i[l]=d}return{name:n,attributes:i}}function Oe(e){if(!e||!Array.isArray(e))return{};let t={};return e.filter(r=>r.key.toLowerCase()==="set-cookie").map(r=>we(r.value)).filter(r=>r!==null).forEach(r=>{t[r.name]=r.attributes}),t}function G(e,t){if(!e?.content)return null;let r=null,n=s=>{s.type===t&&s.attrs?.body&&(r={body:s.attrs.body,language:s.attrs.language??"javascript"}),s.content?.forEach?.(i=>n(i))};return n(e),r}function K(e,t){return t==="python"?e.replace(/#.*$/gm,"").trim():e.replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").trim()}function Z(){let e=(0,ee.join)((0,te.homedir)(),".voiden",".process.env.json");if(!(0,O.existsSync)(e))return{};try{return JSON.parse((0,O.readFileSync)(e,"utf-8"))}catch{return{}}}function X(e){let t=r=>Array.isArray(r)?r:r&&typeof r=="object"?Object.entries(r).map(([n,s])=>({key:n,value:String(s),enabled:!0})):[];return{url:e.url??"",method:e.method??"GET",headers:t(e.headers),body:e.body,queryParams:t(e.queryParams),pathParams:t(e.pathParams)}}function Te(e){let t=e.headers??[],r={},n=[];t.forEach(i=>{i.key.toLowerCase()==="set-cookie"?n.push(i.value):r[i.key]=i.value}),n.length>0&&(r["set-cookie"]=n.join(`
397
+ `));let s=Oe(t);return{status:e.status,statusText:e.statusText,headers:r,cookies:s,body:e.body,time:e.durationMs??0,size:e.size??0}}function De(e,t){t.url=e.url,t.method=e.method;let r=n=>Array.isArray(n)?n:n&&typeof n=="object"?Object.entries(n).map(([s,i])=>({key:s,value:String(i),enabled:!0})):[];if(t.headers=r(e.headers),t.queryParams=r(e.queryParams),t.pathParams=r(e.pathParams),e.body!=null&&typeof e.body=="object")try{t.body=JSON.stringify(e.body)}catch{t.body=String(e.body)}else t.body=e.body}function Ne(e,t){e.status!==void 0&&(t.status=e.status),e.statusText!==void 0&&(t.statusText=e.statusText),e.body!==void 0&&(t.body=e.body)}function Pe(e,t,r){Array.isArray(e.reportEntries)||(e.reportEntries=[]);let n=e.reportEntries;for(let s of t.assertions??[])n.push({type:"assertion",message:s.message||s.condition||"Script assertion",passed:s.passed,actual:s.actualValue,expected:s.expectedValue,operator:s.operator});for(let s of r){let i=Array.isArray(s.args)?s.args.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(" "):String(s.args??"");i&&n.push({type:"log",message:i,level:s.level??"log"})}t.error&&n.push({type:"log",message:`Script error: ${t.error}`,level:"error"})}var qe=e=>({onload(){let t=null,r={};e.pipeline.registerHook("pre-processing",n=>{if(!n.editor)return;n.requestState.metadata||(n.requestState.metadata={});let s=n.editor.getJSON();n.requestState.metadata.editorDocument=s,t=s,r=n.editor.__cliEnv??{},n.requestState.metadata._cliVarsRef=n.editor.__cliVars??{}},5),e.pipeline.registerHook("pre-send",async n=>{if(!t)return;let s=G(t,"pre_script");if(!s||!K(s.body,s.language))return;let{executeHeadlessScript:i}=await Promise.resolve().then(()=>(I(),A)),o=n.requestState.metadata?._cliVarsRef??{},l={...Z(),...o},d=X(n.requestState),c=await i(s.body,s.language,d,null,r,l);if(c.success&&c.modifiedRequest&&De(c.modifiedRequest,n.requestState),c.modifiedVariables&&Object.assign(o,c.modifiedVariables),n.requestState.metadata||(n.requestState.metadata={}),n.requestState.metadata.preScriptLogs=c.logs??[],n.requestState.metadata.preScriptAssertions=c.assertions??[],c.error&&(n.requestState.metadata.preScriptError=c.error),c.cancelled)throw n.requestState.metadata.scriptCancelled=!0,new Error("Request cancelled by pre-request script")},15),e.pipeline.registerHook("post-processing",async n=>{n.responseState.metadata||(n.responseState.metadata={});let s=n.responseState.metadata;if(!t)return;let i=G(t,"post_script");if(!i||!K(i.body,i.language))return;let{executeHeadlessScript:o}=await Promise.resolve().then(()=>(I(),A)),l=n.requestState?.metadata?._cliVarsRef??{},d={...Z(),...l},c=X(n.requestState),f=Te(n.responseState),u=await o(i.body,i.language,c,f,r,d);u.success&&u.modifiedResponse&&Ne(u.modifiedResponse,n.responseState),u.modifiedVariables&&Object.assign(l,u.modifiedVariables),s.postScriptLogs=u.logs??[],s.postScriptAssertions=u.assertions??[],u.error&&(s.postScriptError=u.error),t=null},25),e.pipeline.registerHook("post-processing",n=>{let s=n.responseState;if(!s)return;s.metadata||(s.metadata={});let i=n.requestState?.metadata?.preScriptLogs??[],o=n.requestState?.metadata?.preScriptAssertions??[],l=s.metadata.postScriptLogs??[],d=s.metadata.postScriptAssertions??[],c=n.requestState?.metadata?.preScriptError,f=s.metadata.postScriptError,u={assertions:[...o,...d],error:f??c},S=[...i,...l];Pe(s.metadata,u,S)},60)}}),Ae=qe;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyCH;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B/I;AAcD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAuDD,wBAAsB,kBAAkB,CACtC,OAAO,UAAQ,EACf,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAC3C,OAAO,CAAC,MAAM,EAAE,CAAC,CAwEnB"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyCH;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B/I;AAcD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AA8DD,wBAAsB,kBAAkB,CACtC,OAAO,UAAQ,EACf,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAC3C,OAAO,CAAC,MAAM,EAAE,CAAC,CAwEnB"}
@@ -142,9 +142,16 @@ async function loadPlugin(pluginPath, pluginName, verbose) {
142
142
  return true;
143
143
  }
144
144
  catch (err) {
145
- if (verbose) {
146
- console.warn(` [plugins] Failed to load "${pluginName}": ${err?.message ?? String(err)}`);
147
- }
145
+ // Always surfaced, not gated behind --verbose (matching the "not
146
+ // installed" message above) a plugin that's enabled and has a runner
147
+ // present but still fails to actually load is a real, unexpected
148
+ // problem (e.g. a bundled runner.js with an unresolvable external
149
+ // dependency — see voiden-scripting's own history), not a normal,
150
+ // silent "nothing to do here" case. Without this, the failure was
151
+ // invisible everywhere: install_plugin's own response only shows
152
+ // `active: false`, with no indication of why, unless the caller happens
153
+ // to be running with --verbose already.
154
+ console.warn(` [plugins] Failed to load "${pluginName}": ${err?.message ?? String(err)}`);
148
155
  return false;
149
156
  }
150
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voiden/runner",
3
- "version": "2.3.0-beta.18",
3
+ "version": "2.3.0-beta.19",
4
4
  "description": "CLI runner for .void files — execute REST, WebSocket, and gRPC requests headlessly",
5
5
  "type": "module",
6
6
  "license": "MIT",