@voiden/runner 2.1.1 → 2.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/bundled-runners/versions.json +6 -6
  3. package/bundled-runners/voiden-advanced-auth-runner.js +1 -1
  4. package/bundled-runners/voiden-graphql-runner.js +1 -1
  5. package/bundled-runners/voiden-rest-api-runner.js +1 -1
  6. package/bundled-runners/voiden-sockets-grpcs-runner.js +1 -1
  7. package/dist/discovery.d.ts +11 -0
  8. package/dist/discovery.d.ts.map +1 -0
  9. package/dist/discovery.js +54 -0
  10. package/dist/discovery.js.map +1 -0
  11. package/dist/envFile.d.ts +2 -0
  12. package/dist/envFile.d.ts.map +1 -0
  13. package/dist/envFile.js +59 -0
  14. package/dist/envFile.js.map +1 -0
  15. package/dist/headlessContext.d.ts.map +1 -1
  16. package/dist/headlessContext.js +9 -0
  17. package/dist/headlessContext.js.map +1 -1
  18. package/dist/index.js +261 -130
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib.d.ts +16 -0
  21. package/dist/lib.d.ts.map +1 -0
  22. package/dist/lib.js +18 -0
  23. package/dist/lib.js.map +1 -0
  24. package/dist/plugins/loader.d.ts.map +1 -1
  25. package/dist/plugins/loader.js +2 -0
  26. package/dist/plugins/loader.js.map +1 -1
  27. package/dist/plugins/registry.d.ts +8 -1
  28. package/dist/plugins/registry.d.ts.map +1 -1
  29. package/dist/plugins/registry.js +13 -2
  30. package/dist/plugins/registry.js.map +1 -1
  31. package/dist/plugins/store.d.ts +28 -1
  32. package/dist/plugins/store.d.ts.map +1 -1
  33. package/dist/plugins/store.js +46 -9
  34. package/dist/plugins/store.js.map +1 -1
  35. package/dist/plugins/versionInfo.d.ts +15 -0
  36. package/dist/plugins/versionInfo.d.ts.map +1 -0
  37. package/dist/plugins/versionInfo.js +18 -0
  38. package/dist/plugins/versionInfo.js.map +1 -0
  39. package/dist/requestContainerRegistry.d.ts +36 -0
  40. package/dist/requestContainerRegistry.d.ts.map +1 -0
  41. package/dist/requestContainerRegistry.js +42 -0
  42. package/dist/requestContainerRegistry.js.map +1 -0
  43. package/dist/resultBlock.d.ts +37 -0
  44. package/dist/resultBlock.d.ts.map +1 -0
  45. package/dist/resultBlock.js +143 -0
  46. package/dist/resultBlock.js.map +1 -0
  47. package/dist/runner.d.ts +20 -0
  48. package/dist/runner.d.ts.map +1 -1
  49. package/dist/runner.js +85 -10
  50. package/dist/runner.js.map +1 -1
  51. package/dist/runtimeVars.js +3 -3
  52. package/dist/runtimeVars.js.map +1 -1
  53. package/dist/types.d.ts +1 -5
  54. package/dist/types.d.ts.map +1 -1
  55. package/package.json +11 -2
  56. package/dist/parser.d.ts +0 -24
  57. package/dist/parser.d.ts.map +0 -1
  58. package/dist/parser.js +0 -87
  59. package/dist/parser.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
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.2.0 - 2026-07-23
7
+
8
+ ### Added
9
+ - Deterministic exit codes for `run`: `0` success, `1` one or more requests failed (assertions/errors, or `--bail`/`--fail-on-error` — unchanged from prior releases), `2` the runner could not execute the run at all (bad CLI args, missing files, missing plugins, invalid env). Previously every non-success path exited `1`, so CI couldn't tell "the API broke" from "the pipeline is misconfigured." See [CI/CD Integration](https://docs.voiden.md/docs/developer-tools/voiden-runner/ci-cd) for the full table.
10
+ - `schemaVersion` field on the `--json` and `--output-json` payloads for `run` and `report generate` — a stable, versioned contract for tooling that parses runner output. Currently `"1"`.
11
+
6
12
  ## v2.1.1 - 2026-06-25
7
13
 
8
14
  ### Fixed
@@ -1,9 +1,9 @@
1
1
  {
2
- "simple-assertions": "1.0.1",
3
- "voiden-advanced-auth": "2.0.2",
2
+ "simple-assertions": "1.0.4",
3
+ "voiden-advanced-auth": "2.0.7",
4
4
  "voiden-faker": "1.1.0",
5
- "voiden-graphql": "1.0.2",
6
- "voiden-rest-api": "1.4.3",
7
- "voiden-scripting": "1.1.1",
8
- "voiden-sockets-grpcs": "1.1.3"
5
+ "voiden-graphql": "1.0.6",
6
+ "voiden-rest-api": "1.4.8",
7
+ "voiden-scripting": "1.1.6",
8
+ "voiden-sockets-grpcs": "1.1.6"
9
9
  }
@@ -1 +1 @@
1
- "use strict";var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var R=(e,n)=>{for(var r in n)o(e,r,{get:n[r],enumerable:!0})},x=(e,n,r,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of c(n))!d.call(e,t)&&t!==r&&o(e,t,{get:()=>n[t],enumerable:!(u=a(n,t))||u.enumerable});return e};var p=e=>x(o({},"__esModule",{value:!0}),e);var i={};R(i,{default:()=>f});module.exports=p(i);var y=e=>({onload(){}}),f=y;
1
+ "use strict";var c=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var p=(o,r)=>{for(var n in r)c(o,n,{get:r[n],enumerable:!0})},w=(o,r,n,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of h(r))!f.call(o,t)&&t!==n&&c(o,t,{get:()=>r[t],enumerable:!(e=l(r,t))||e.enumerable});return o};var b=o=>w(c({},"__esModule",{value:!0}),o);var A={};p(A,{buildAuthRows:()=>d,default:()=>R});module.exports=b(A);var y=require("node:buffer");function k(o){let r=[];if(!Array.isArray(o?.content))return r;for(let n of o.content)if(n.type==="table"&&Array.isArray(n.rows))for(let e of n.rows){let t=e.attrs?.disabled===!0;if(Array.isArray(e.row)&&e.row.length>=2){let s=String(e.row[0]??"").trim(),a=String(e.row[1]??"").trim();s&&r.push({key:s,value:a,enabled:!t})}}return r}function d(o){let r=o.find(a=>a.type==="auth"),n=r?.attrs?.authType;if(!r||!n||n==="inherit"||n==="none")return{headers:[],queryParams:[]};let e={};for(let a of k(r))e[a.key]=a.value;let t=[],s=[];switch(n){case"bearer":{let a=e.token||"";t.push({key:"Authorization",value:`Bearer ${a}`,enabled:!0});break}case"basic":{let a=e.username||"",u=e.password||"",i=y.Buffer.from(`${a}:${u}`).toString("base64");t.push({key:"Authorization",value:`Basic ${i}`,enabled:!0});break}case"apiKey":{let a=e.key||"",u=e.value||"",i=e.add_to||"header";a&&i==="query"?s.push({key:a,value:u,enabled:!0}):a&&t.push({key:a,value:u,enabled:!0});break}default:break}return{headers:t,queryParams:s}}var m=o=>({onload(){o.onBuildRequest((r,n)=>{let{headers:e,queryParams:t}=d(n);if(e.length===0&&t.length===0)return r;let s=Array.isArray(r?.headers)?r.headers:[],a=Array.isArray(r?.queryParams)?r.queryParams:[];return{...r,headers:[...s,...e],queryParams:[...a,...t]}})}}),R=m;0&&(module.exports={buildAuthRows});
@@ -1 +1 @@
1
- "use strict";var d=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var S=(r,e)=>{for(var n in e)d(r,n,{get:e[n],enumerable:!0})},v=(r,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of k(e))!w.call(r,a)&&a!==n&&d(r,a,{get:()=>e[a],enumerable:!(o=A(e,a))||o.enumerable});return r};var B=r=>v(d({},"__esModule",{value:!0}),r);var N={};S(N,{buildRequest:()=>R,default:()=>x});module.exports=B(N);function R(r){let e=r.find(t=>t.type==="gqlquery");if(!e)return null;let n=e.content?.find(t=>t.type==="gqlbody")||"",o=n.attrs?.body||"";if(!o.trim())return{errorMessage:"GraphQL query is empty"};let a=n.attrs?.operationType||"query",i=n.attrs?.operationName;if(!i){let t=o.match(/^\s*(query|mutation|subscription)\s+([\w]+)?/);t&&(a=t[1],i=t[2])}let p={},f=r.find(t=>t.type==="gqlvariables");if(f?.attrs?.body)try{p=JSON.parse(f.attrs.body)}catch{}let y="",l=e;if(l&&Array.isArray(l.content)){let t=l.content.find(s=>s.type==="gqlurl");t&&typeof t.content=="string"&&(y=t.content.trim())}if(y||(y=e.attrs?.endpoint||e.attrs?.schemaUrl||""),!y)return{errorMessage:"GraphQL url is empty"};let u=[{key:"Content-Type",value:"application/json",enabled:!0}],c=r.find(t=>t.type==="headers-table");if(c&&Array.isArray(c.content)){for(let t of c.content)if(t.type==="table"&&Array.isArray(t.rows)){for(let s of t.rows)if(!s.attrs?.disabled&&Array.isArray(s.row)&&s.row[0]){let m=String(s.row[0]).trim(),q=String(s.row[1]??"").trim(),g=u.findIndex(h=>h.key.toLowerCase()===m.toLowerCase());g>=0?u[g].value=q:u.push({key:m,value:q,enabled:!0})}}}let b={query:o,variables:p};return i&&(b.operationName=i),{method:"POST",url:y,headers:u,queryParams:[],pathParams:[],body:JSON.stringify(b),contentType:"application/json",metadata:{operationType:a,operationName:i}}}var C=r=>({onload(){r.onBuildRequest((e,n)=>R(n)??e)}}),x=C;0&&(module.exports={buildRequest});
1
+ "use strict";var c=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var w=(r,e)=>{for(var n in e)c(r,n,{get:e[n],enumerable:!0})},v=(r,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of S(e))!k.call(r,o)&&o!==n&&c(r,o,{get:()=>e[o],enumerable:!(a=A(e,o))||a.enumerable});return r};var C=r=>v(c({},"__esModule",{value:!0}),r);var N={};w(N,{buildRequest:()=>h,default:()=>T});module.exports=C(N);function h(r){let e=r.find(t=>t.type==="gqlquery");if(!e)return null;let n=e.content?.find(t=>t.type==="gqlbody")||"",a=n.attrs?.body||"";if(!a.trim())return{errorMessage:"GraphQL query is empty"};let o=n.attrs?.operationType||"query",i=n.attrs?.operationName;if(!i){let t=a.match(/^\s*(query|mutation|subscription)\s+([\w]+)?/);t&&(o=t[1],i=t[2])}let p={},f=r.find(t=>t.type==="gqlvariables");if(f?.attrs?.body)try{p=JSON.parse(f.attrs.body)}catch{}let y="",u=e;if(u&&Array.isArray(u.content)){let t=u.content.find(s=>s.type==="gqlurl");t&&typeof t.content=="string"&&(y=t.content.trim())}if(y||(y=e.attrs?.endpoint||e.attrs?.schemaUrl||""),!y)return{errorMessage:"GraphQL url is empty"};let l=[{key:"Content-Type",value:"application/json",enabled:!0}],d=r.find(t=>t.type==="headers-table");if(d&&Array.isArray(d.content)){for(let t of d.content)if(t.type==="table"&&Array.isArray(t.rows)){for(let s of t.rows)if(!s.attrs?.disabled&&Array.isArray(s.row)&&s.row[0]){let m=String(s.row[0]).trim(),b=String(s.row[1]??"").trim(),g=l.findIndex(R=>R.key.toLowerCase()===m.toLowerCase());g>=0?l[g].value=b:l.push({key:m,value:b,enabled:!0})}}}let q={query:a,variables:p};return i&&(q.operationName=i),{method:"POST",url:y,headers:l,queryParams:[],pathParams:[],body:JSON.stringify(q),contentType:"application/json",metadata:{operationType:o,operationName:i}}}var B=r=>({onload(){r.registerRequestContainer?.({type:"gqlquery",urlType:"gqlurl",defaultMethod:"POST"}),r.onBuildRequest((e,n)=>{let a=h(n);if(!a)return e;let o=Array.isArray(e?.headers)?e.headers:[];return{...a,headers:[...o,...a.headers]}})}}),T=B;0&&(module.exports={buildRequest});
@@ -1 +1 @@
1
- "use strict";var d=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var g=(e,n)=>{for(var r in n)d(e,r,{get:n[r],enumerable:!0})},q=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of R(n))!b.call(e,a)&&a!==r&&d(e,a,{get:()=>n[a],enumerable:!(o=x(n,a))||o.enumerable});return e};var h=e=>q(d({},"__esModule",{value:!0}),e);var A={};g(A,{buildRequest:()=>m,default:()=>w});module.exports=h(A);function f(e){let n=[];if(!Array.isArray(e.content))return n;for(let r of e.content)if(r.type==="table"&&Array.isArray(r.rows))for(let o of r.rows){let a=o.attrs?.disabled===!0;if(Array.isArray(o.row)&&o.row.length>=2){let i=String(o.row[0]??"").trim(),u=String(o.row[1]??"").trim();i&&n.push({key:i,value:u,enabled:!a})}}return n}function m(e){if(e.some(t=>t.type==="gqlquery")||e.some(t=>t.type==="socket-request"))return null;let n=e.find(t=>t.type==="request");if(!n)return null;let r="GET",o="";if(Array.isArray(n.content))for(let t of n.content)t.type==="method"&&typeof t.content=="string"&&(r=t.content.trim().toUpperCase()||"GET"),t.type==="url"&&typeof t.content=="string"&&(o=t.content.trim());if(!o)return null;let a=f(e.find(t=>t.type==="headers-table")??{}),i=f(e.find(t=>t.type==="query-table")??{}),u=f(e.find(t=>t.type==="path-table")??{}),y,s,c=e.find(t=>t.type==="json_body");if(c?.attrs?.body){y=String(c.attrs.body);let t=c.attrs.contentType;s=t==="html"?"text/html":t==="text"?"text/plain":"application/json"}let l=e.find(t=>t.type==="xml_body");l?.attrs?.body&&(y=String(l.attrs.body),s=["application/xml","text/xml","application/xhtml+xml"].includes(l.attrs.contentType)?l.attrs.contentType:"application/xml");let p=e.find(t=>t.type==="yml_body");return p?.attrs?.body&&(y=String(p.attrs.body),s=["application/x-yaml","application/yaml","text/yaml","text/x-yaml"].includes(p.attrs.contentType)?p.attrs.contentType:"application/x-yaml"),{method:r,url:o,headers:a,queryParams:i,pathParams:u,body:y,contentType:s,metadata:{}}}var T=e=>({onload(){e.onBuildRequest((n,r)=>m(r)??n)}}),w=T;0&&(module.exports={buildRequest});
1
+ "use strict";var c=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var q=(e,n)=>{for(var a in n)c(e,a,{get:n[a],enumerable:!0})},A=(e,n,a,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of R(n))!h.call(e,o)&&o!==a&&c(e,o,{get:()=>n[o],enumerable:!(r=x(n,o))||r.enumerable});return e};var g=e=>A(c({},"__esModule",{value:!0}),e);var w={};q(w,{buildRequest:()=>f,default:()=>b});module.exports=g(w);function m(e){let n=[];if(!Array.isArray(e.content))return n;for(let a of e.content)if(a.type==="table"&&Array.isArray(a.rows))for(let r of a.rows){let o=r.attrs?.disabled===!0;if(Array.isArray(r.row)&&r.row.length>=2){let y=String(r.row[0]??"").trim(),u=String(r.row[1]??"").trim();y&&n.push({key:y,value:u,enabled:!o})}}return n}function f(e){if(e.some(t=>t.type==="gqlquery")||e.some(t=>t.type==="socket-request"))return null;let n=e.find(t=>t.type==="request");if(!n)return null;let a="GET",r="";if(Array.isArray(n.content))for(let t of n.content)t.type==="method"&&typeof t.content=="string"&&(a=t.content.trim().toUpperCase()||"GET"),t.type==="url"&&typeof t.content=="string"&&(r=t.content.trim());if(!r)return null;let o=m(e.find(t=>t.type==="headers-table")??{}),y=m(e.find(t=>t.type==="query-table")??{}),u=m(e.find(t=>t.type==="path-table")??{}),s,i,d=e.find(t=>t.type==="json_body");if(d?.attrs?.body){s=String(d.attrs.body);let t=d.attrs.contentType;i=t==="html"?"text/html":t==="text"?"text/plain":"application/json"}let l=e.find(t=>t.type==="xml_body");l?.attrs?.body&&(s=String(l.attrs.body),i=["application/xml","text/xml","application/xhtml+xml"].includes(l.attrs.contentType)?l.attrs.contentType:"application/xml");let p=e.find(t=>t.type==="yml_body");return p?.attrs?.body&&(s=String(p.attrs.body),i=["application/x-yaml","application/yaml","text/yaml","text/x-yaml"].includes(p.attrs.contentType)?p.attrs.contentType:"application/x-yaml"),{method:a,url:r,headers:o,queryParams:y,pathParams:u,body:s,contentType:i,metadata:{}}}var T=e=>({onload(){e.registerRequestContainer?.({type:"request",urlType:"url",methodType:"method"}),e.onBuildRequest((n,a)=>{let r=f(a);if(!r)return n;let o=Array.isArray(n?.headers)?n.headers:[],y=Array.isArray(n?.queryParams)?n.queryParams:[];return{...r,headers:[...o,...r.headers],queryParams:[...y,...r.queryParams]}})}}),b=T;0&&(module.exports={buildRequest});
@@ -1 +1 @@
1
- "use strict";var f=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var m=(o,e)=>{for(var a in e)f(o,a,{get:e[a],enumerable:!0})},w=(o,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of g(e))!h.call(o,s)&&s!==a&&f(o,s,{get:()=>e[s],enumerable:!(r=p(e,s))||r.enumerable});return o};var R=o=>w(f({},"__esModule",{value:!0}),o);var C={};m(C,{buildRequest:()=>y,default:()=>k});module.exports=R(C);function y(o){let e=o.find(t=>t.type==="socket-request");if(!e)return null;let a="";if(Array.isArray(e.content))for(let t of e.content)t.type==="surl"&&typeof t.content=="string"&&(a=t.content.trim());if(!a)return null;let r=a.toLowerCase(),s="ws";r.startsWith("wss://")?s="wss":r.startsWith("ws://")?s="ws":r.startsWith("grpcs://")?s="grpcs":r.startsWith("grpc://")&&(s="grpc");let l=o.find(t=>t.type==="headers-table"),d=[];if(l&&Array.isArray(l.content)){for(let t of l.content)if(t.type==="table"&&Array.isArray(t.rows))for(let c of t.rows)!c.attrs?.disabled&&Array.isArray(c.row)&&c.row[0]&&d.push({key:String(c.row[0]).trim(),value:String(c.row[1]??"").trim(),enabled:!0})}let u=e.content?.find?.(t=>t.type==="proto"),i={};if(u?.attrs){let t=u.attrs;t.protoFilePath&&(i.protoFilePath=t.protoFilePath),t.service&&(i.service=t.service),t.method&&(i.method=t.method),t.package&&(i.package=t.package),t.callType&&(i.callType=t.callType)}return{method:s.toUpperCase(),url:a,headers:d,queryParams:[],pathParams:[],grpc:Object.keys(i).length?i:void 0,metadata:{protocol:s}}}var b=o=>({onload(){o.onBuildRequest((e,a)=>y(a)??e),o.onProcessResponse(async e=>{let a=e?.metadata?.handoff;if(!a)return;let{protocol:r,url:s,headers:l,grpc:d,body:u}=a,i=Object.entries(l).map(([t,c])=>({key:t,value:c,enabled:!0}));if(r==="ws"||r==="wss"){let t=await o.protocols?.executeWebSocket({protocol:r,url:s,headers:i});if(!t)return;let c={connected:t.connected??!1,protocol:r,url:s,durationMs:t.durationMs,...t.error?{error:t.error}:{}},n=e;n.statusCode=t.connected?101:0,n.statusMessage=t.connected?"Switching Protocols":t.error??"Connection Failed",n.status=n.statusCode,n.statusText=n.statusMessage,e.body=JSON.stringify(c,null,2),e.metadata&&delete e.metadata.handoff}else if(r==="grpc"||r==="grpcs"){let t=await o.protocols?.executeGrpc({protocol:r,url:s,metadata:l,body:u,...d??{}});if(!t)return;let c={connected:t.connected??!1,protocol:r,url:s,durationMs:t.durationMs,...d?.service?{service:d.service}:{},...d?.method?{method:d.method}:{},...t.error?{error:t.error}:{}},n=e;n.statusCode=t.connected?200:0,n.statusMessage=t.connected?"Connected":t.error??"Connection Failed",n.status=n.statusCode,n.statusText=n.statusMessage,e.body=JSON.stringify(c,null,2),e.metadata&&delete e.metadata.handoff}})}}),k=b;0&&(module.exports={buildRequest});
1
+ "use strict";var f=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var m=(a,t)=>{for(var o in t)f(a,o,{get:t[o],enumerable:!0})},w=(a,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of h(t))!g.call(a,s)&&s!==o&&f(a,s,{get:()=>t[s],enumerable:!(r=p(t,s))||r.enumerable});return a};var R=a=>w(f({},"__esModule",{value:!0}),a);var b={};m(b,{buildRequest:()=>y,default:()=>C});module.exports=R(b);function y(a){let t=a.find(e=>e.type==="socket-request");if(!t)return null;let o="";if(Array.isArray(t.content))for(let e of t.content)e.type==="surl"&&typeof e.content=="string"&&(o=e.content.trim());if(!o)return null;let r=o.toLowerCase(),s="ws";r.startsWith("wss://")?s="wss":r.startsWith("ws://")?s="ws":r.startsWith("grpcs://")?s="grpcs":r.startsWith("grpc://")&&(s="grpc");let l=a.find(e=>e.type==="headers-table"),d=[];if(l&&Array.isArray(l.content)){for(let e of l.content)if(e.type==="table"&&Array.isArray(e.rows))for(let c of e.rows)!c.attrs?.disabled&&Array.isArray(c.row)&&c.row[0]&&d.push({key:String(c.row[0]).trim(),value:String(c.row[1]??"").trim(),enabled:!0})}let u=t.content?.find?.(e=>e.type==="proto"),i={};if(u?.attrs){let e=u.attrs;e.protoFilePath&&(i.protoFilePath=e.protoFilePath),e.service&&(i.service=e.service),e.method&&(i.method=e.method),e.package&&(i.package=e.package),e.callType&&(i.callType=e.callType)}return{method:s.toUpperCase(),url:o,headers:d,queryParams:[],pathParams:[],grpc:Object.keys(i).length?i:void 0,metadata:{protocol:s}}}var k=a=>({onload(){a.registerRequestContainer?.({type:"socket-request",urlType:"surl",methodType:"smethod"}),a.onBuildRequest((t,o)=>{let r=y(o);if(!r)return t;let s=Array.isArray(t?.headers)?t.headers:[];return{...r,headers:[...s,...r.headers]}}),a.onProcessResponse(async t=>{let o=t?.metadata?.handoff;if(!o)return;let{protocol:r,url:s,headers:l,grpc:d,body:u}=o,i=Object.entries(l).map(([e,c])=>({key:e,value:c,enabled:!0}));if(r==="ws"||r==="wss"){let e=await a.protocols?.executeWebSocket({protocol:r,url:s,headers:i});if(!e)return;let c={connected:e.connected??!1,protocol:r,url:s,durationMs:e.durationMs,...e.error?{error:e.error}:{}},n=t;n.statusCode=e.connected?101:0,n.statusMessage=e.connected?"Switching Protocols":e.error??"Connection Failed",n.status=n.statusCode,n.statusText=n.statusMessage,t.body=JSON.stringify(c,null,2),t.metadata&&delete t.metadata.handoff}else if(r==="grpc"||r==="grpcs"){let e=await a.protocols?.executeGrpc({protocol:r,url:s,metadata:l,body:u,...d??{}});if(!e)return;let c={connected:e.connected??!1,protocol:r,url:s,durationMs:e.durationMs,...d?.service?{service:d.service}:{},...d?.method?{method:d.method}:{},...e.error?{error:e.error}:{}},n=t;n.statusCode=e.connected?200:0,n.statusMessage=e.connected?"Connected":e.error??"Connection Failed",n.status=n.statusCode,n.statusText=n.statusMessage,t.body=JSON.stringify(c,null,2),t.metadata&&delete t.metadata.handoff}})}}),C=k;0&&(module.exports={buildRequest});
@@ -0,0 +1,11 @@
1
+ /**
2
+ * File discovery — resolve CLI-style paths/globs and recursively find .void files.
3
+ *
4
+ * Extracted from index.ts so the MCP server (and any other consumer) can list
5
+ * a project's .void files without duplicating this logic.
6
+ */
7
+ /** Recursively collect all .void files under a directory. */
8
+ export declare function collectVoidFiles(inputPath: string): Promise<string[]>;
9
+ /** Expand a list of paths/globs into resolved .void file paths. */
10
+ export declare function resolveFiles(patterns: string[]): Promise<string[]>;
11
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,6DAA6D;AAC7D,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwB3E;AAED,mEAAmE;AACnE,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBxE"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * File discovery — resolve CLI-style paths/globs and recursively find .void files.
3
+ *
4
+ * Extracted from index.ts so the MCP server (and any other consumer) can list
5
+ * a project's .void files without duplicating this logic.
6
+ */
7
+ import { existsSync, statSync } from 'fs';
8
+ import { resolve } from 'path';
9
+ import { readdir } from 'fs/promises';
10
+ /** Recursively collect all .void files under a directory. */
11
+ export async function collectVoidFiles(inputPath) {
12
+ const abs = resolve(inputPath);
13
+ if (!existsSync(abs))
14
+ return [];
15
+ const stat = statSync(abs);
16
+ if (stat.isFile()) {
17
+ return abs.endsWith('.void') ? [abs] : [];
18
+ }
19
+ if (stat.isDirectory()) {
20
+ const entries = await readdir(abs, { withFileTypes: true });
21
+ const results = [];
22
+ for (const entry of entries) {
23
+ const full = resolve(abs, entry.name);
24
+ if (entry.isDirectory()) {
25
+ results.push(...(await collectVoidFiles(full)));
26
+ }
27
+ else if (entry.isFile() && entry.name.endsWith('.void')) {
28
+ results.push(full);
29
+ }
30
+ }
31
+ return results;
32
+ }
33
+ return [];
34
+ }
35
+ /** Expand a list of paths/globs into resolved .void file paths. */
36
+ export async function resolveFiles(patterns) {
37
+ const resolved = [];
38
+ for (const pattern of patterns) {
39
+ if (pattern.includes('*')) {
40
+ const dir = resolve(pattern.replace(/\/?\*.*$/, '') || '.');
41
+ const entries = await readdir(dir, { withFileTypes: true });
42
+ for (const entry of entries) {
43
+ if (entry.isFile() && entry.name.endsWith('.void')) {
44
+ resolved.push(resolve(dir, entry.name));
45
+ }
46
+ }
47
+ }
48
+ else {
49
+ resolved.push(...(await collectVoidFiles(pattern)));
50
+ }
51
+ }
52
+ return resolved;
53
+ }
54
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3C,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjD,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAkB;IACnD,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAA;YAC3D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function loadEnvFile(envPath: string): Record<string, string>;
2
+ //# sourceMappingURL=envFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envFile.d.ts","sourceRoot":"","sources":["../src/envFile.ts"],"names":[],"mappings":"AASA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASnE"}
@@ -0,0 +1,59 @@
1
+ import { readFileSync } from 'fs';
2
+ import { extname } from 'path';
3
+ import YAML from 'yaml';
4
+ export function loadEnvFile(envPath) {
5
+ const content = readFileSync(envPath, 'utf-8');
6
+ const ext = extname(envPath).toLowerCase();
7
+ if (ext === '.yaml' || ext === '.yml') {
8
+ return parseYamlEnv(content);
9
+ }
10
+ return parseDotEnv(content);
11
+ }
12
+ function parseDotEnv(content) {
13
+ const env = {};
14
+ const lines = content.split('\n');
15
+ for (let i = 0; i < lines.length; i++) {
16
+ const line = lines[i].trim();
17
+ if (!line || line.startsWith('#'))
18
+ continue;
19
+ const eq = line.indexOf('=');
20
+ if (eq === -1)
21
+ throw new Error(`Malformed line ${i + 1} in .env file: missing "="`);
22
+ const key = line.slice(0, eq).trim();
23
+ const val = line.slice(eq + 1).trim().replace(/^["']|["']$/g, '');
24
+ if (!key)
25
+ throw new Error(`Malformed line ${i + 1} in .env file: empty key`);
26
+ env[key] = val;
27
+ }
28
+ return env;
29
+ }
30
+ function parseYamlEnv(content) {
31
+ const env = {};
32
+ const collect = (tree) => {
33
+ for (const [key, value] of Object.entries(tree)) {
34
+ if (value === null || value === undefined || Array.isArray(value))
35
+ continue;
36
+ if (typeof value !== 'object') {
37
+ env[key] = String(value);
38
+ continue;
39
+ }
40
+ const node = value;
41
+ const hasVariables = node.variables != null && typeof node.variables === 'object';
42
+ const hasChildren = node.children != null && typeof node.children === 'object';
43
+ if (hasVariables) {
44
+ for (const [k, v] of Object.entries(node.variables)) {
45
+ if (v != null && typeof v !== 'object')
46
+ env[k] = String(v);
47
+ }
48
+ }
49
+ if (hasChildren)
50
+ collect(node.children);
51
+ }
52
+ };
53
+ const parsed = YAML.parse(content);
54
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
55
+ collect(parsed);
56
+ }
57
+ return env;
58
+ }
59
+ //# sourceMappingURL=envFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envFile.js","sourceRoot":"","sources":["../src/envFile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"headlessContext.d.ts","sourceRoot":"","sources":["../src/headlessContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,aAAa,EAA+C,MAAM,oBAAoB,CAAA;AAEpG,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,aAAa,CA0Ef"}
1
+ {"version":3,"file":"headlessContext.d.ts","sourceRoot":"","sources":["../src/headlessContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,aAAa,EAA+C,MAAM,oBAAoB,CAAA;AAEpG,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAe,GACvB,aAAa,CAmFf"}
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import { hookRegistry, requestOrchestrator, executeWebSocket, executeGrpc } from '@voiden/executors';
17
17
  import { registerBlockSchema } from './blockSchemaRegistry.js';
18
+ import { registerRequestContainer as registerContainerDef } from './requestContainerRegistry.js';
18
19
  export function createHeadlessPluginContext(extensionId, verbose = false) {
19
20
  return {
20
21
  // ── Pipeline hook registration (for hook plugins: scripting, auth, etc.) ─
@@ -79,6 +80,14 @@ export function createHeadlessPluginContext(extensionId, verbose = false) {
79
80
  exposeHelpers: () => { },
80
81
  paste: { registerBlockOwner: () => { } },
81
82
  project: { openFile: () => { } },
83
+ // Host capability not yet in the published @voiden/sdk RunnerContext
84
+ // type — lets a protocol plugin (REST, GraphQL, sockets/gRPC, or a
85
+ // third-party protocol plugin) declare its own request-container block
86
+ // shape, so list_requests/write_result work for it without voiden-runner's
87
+ // core needing to hardcode knowledge of every plugin's block types.
88
+ registerRequestContainer: (def) => {
89
+ registerContainerDef(def);
90
+ },
82
91
  },
83
92
  };
84
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"headlessContext.js","sourceRoot":"","sources":["../src/headlessContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headlessContext.js","sourceRoot":"","sources":["../src/headlessContext.ts"],"names":[],"mappings":"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"}