@rcrsr/rill 0.7.2 → 0.8.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.
- package/README.md +29 -1
- package/dist/ast-nodes.d.ts +635 -0
- package/dist/ast-nodes.d.ts.map +1 -0
- package/dist/ast-nodes.js +2 -0
- package/dist/ast-nodes.js.map +1 -0
- package/dist/ast-unions.d.ts +6 -0
- package/dist/ast-unions.d.ts.map +1 -0
- package/dist/ast-unions.js +6 -0
- package/dist/ast-unions.js.map +1 -0
- package/dist/error-classes.d.ts +90 -0
- package/dist/error-classes.d.ts.map +1 -0
- package/dist/error-classes.js +185 -0
- package/dist/error-classes.js.map +1 -0
- package/dist/error-registry.d.ts +93 -0
- package/dist/error-registry.d.ts.map +1 -0
- package/dist/error-registry.js +876 -0
- package/dist/error-registry.js.map +1 -0
- package/dist/ext/crypto/index.d.ts +32 -0
- package/dist/ext/crypto/index.d.ts.map +1 -0
- package/dist/ext/crypto/index.js +143 -0
- package/dist/ext/crypto/index.js.map +1 -0
- package/dist/ext/exec/index.d.ts +45 -0
- package/dist/ext/exec/index.d.ts.map +1 -0
- package/dist/ext/exec/index.js +168 -0
- package/dist/ext/exec/index.js.map +1 -0
- package/dist/ext/exec/runner.d.ts +62 -0
- package/dist/ext/exec/runner.d.ts.map +1 -0
- package/dist/ext/exec/runner.js +168 -0
- package/dist/ext/exec/runner.js.map +1 -0
- package/dist/ext/fetch/index.d.ts +68 -0
- package/dist/ext/fetch/index.d.ts.map +1 -0
- package/dist/ext/fetch/index.js +259 -0
- package/dist/ext/fetch/index.js.map +1 -0
- package/dist/ext/fetch/request.d.ts +90 -0
- package/dist/ext/fetch/request.d.ts.map +1 -0
- package/dist/ext/fetch/request.js +413 -0
- package/dist/ext/fetch/request.js.map +1 -0
- package/dist/ext/fs/index.d.ts +39 -0
- package/dist/ext/fs/index.d.ts.map +1 -0
- package/dist/ext/fs/index.js +560 -0
- package/dist/ext/fs/index.js.map +1 -0
- package/dist/ext/fs/sandbox.d.ts +78 -0
- package/dist/ext/fs/sandbox.d.ts.map +1 -0
- package/dist/ext/fs/sandbox.js +208 -0
- package/dist/ext/fs/sandbox.js.map +1 -0
- package/dist/ext/kv/index.d.ts +46 -0
- package/dist/ext/kv/index.d.ts.map +1 -0
- package/dist/ext/kv/index.js +215 -0
- package/dist/ext/kv/index.js.map +1 -0
- package/dist/ext/kv/store.d.ts +46 -0
- package/dist/ext/kv/store.d.ts.map +1 -0
- package/dist/ext/kv/store.js +256 -0
- package/dist/ext/kv/store.js.map +1 -0
- package/dist/generated/introspection-data.d.ts +1 -1
- package/dist/generated/introspection-data.d.ts.map +1 -1
- package/dist/generated/introspection-data.js +509 -481
- package/dist/generated/introspection-data.js.map +1 -1
- package/dist/generated/version-data.d.ts +1 -1
- package/dist/generated/version-data.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/core/callable.d.ts +5 -5
- package/dist/runtime/core/callable.d.ts.map +1 -1
- package/dist/runtime/core/callable.js +2 -1
- package/dist/runtime/core/callable.js.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/collections.js +5 -1
- package/dist/runtime/core/eval/mixins/collections.js.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -1
- package/dist/runtime/core/eval/mixins/literals.js +5 -1
- package/dist/runtime/core/eval/mixins/literals.js.map +1 -1
- package/dist/runtime/core/eval/mixins/variables.js +12 -12
- package/dist/runtime/core/eval/mixins/variables.js.map +1 -1
- package/dist/runtime/core/values.d.ts +31 -3
- package/dist/runtime/core/values.d.ts.map +1 -1
- package/dist/runtime/core/values.js +47 -1
- package/dist/runtime/core/values.js.map +1 -1
- package/dist/runtime/ext/builtins.d.ts.map +1 -1
- package/dist/runtime/ext/builtins.js +202 -1
- package/dist/runtime/ext/builtins.js.map +1 -1
- package/dist/runtime/ext/extensions.d.ts +39 -3
- package/dist/runtime/ext/extensions.d.ts.map +1 -1
- package/dist/runtime/ext/extensions.js +77 -12
- package/dist/runtime/ext/extensions.js.map +1 -1
- package/dist/runtime/index.d.ts +5 -5
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/source-location.d.ts +10 -0
- package/dist/source-location.d.ts.map +1 -0
- package/dist/source-location.js +5 -0
- package/dist/source-location.js.map +1 -0
- package/dist/token-types.d.ts +68 -0
- package/dist/token-types.d.ts.map +1 -0
- package/dist/token-types.js +79 -0
- package/dist/token-types.js.map +1 -0
- package/dist/types.d.ts +9 -882
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -958
- package/dist/types.js.map +1 -1
- package/dist/value-types.d.ts +3 -0
- package/dist/value-types.d.ts.map +1 -0
- package/dist/value-types.js +2 -0
- package/dist/value-types.js.map +1 -0
- package/package.json +50 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-registry.js","sourceRoot":"","sources":["../src/error-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0DH,MAAM,iBAAiB;IACJ,IAAI,CAAuC;IAE5D,YAAY,WAA8B;QACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEjD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,iBAAiB,GAAsB;IAC3C,2BAA2B;IAC3B;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,6BAA6B;QAC1C,eAAe,EAAE,2CAA2C;QAC5D,KAAK,EACH,uEAAuE;QACzE,UAAU,EACR,qHAAqH;QACvH,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,sCAAsC;gBACnD,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,WAAW,EAAE,qCAAqC;gBAClD,IAAI,EAAE,gBAAgB;aACvB;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,mBAAmB;QAChC,eAAe,EAAE,wCAAwC;QACzD,KAAK,EAAE,kEAAkE;QACzE,UAAU,EACR,4IAA4I;QAC9I,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,wCAAwC;aAC/C;YACD;gBACE,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,gCAAgC;aACvC;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uBAAuB;QACpC,eAAe,EAAE,gCAAgC;QACjD,KAAK,EACH,uFAAuF;QACzF,UAAU,EACR,qJAAqJ;QACvJ,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,OAAO;aACd;YACD;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,MAAM;aACb;YACD;gBACE,WAAW,EAAE,8CAA8C;gBAC3D,IAAI,EAAE,MAAM;aACb;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,+BAA+B;QAC5C,eAAe,EAAE,sDAAsD;QACvE,KAAK,EAAE,oEAAoE;QAC3E,UAAU,EACR,mEAAmE;QACrE,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,+BAA+B;gBAC5C,IAAI,EAAE,iBAAiB;aACxB;YACD;gBACE,WAAW,EAAE,0CAA0C;gBACvD,IAAI,EAAE,cAAc;aACrB;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yBAAyB;QACtC,eAAe,EAAE,kDAAkD;QACnE,KAAK,EAAE,gEAAgE;QACvE,UAAU,EACR,oIAAoI;QACtI,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,sCAAsC;aAC7C;YACD;gBACE,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,SAAS;aAChB;SACF;KACF;IAED,2BAA2B;IAC3B;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,kBAAkB;QAC/B,eAAe,EAAE,+CAA+C;QAChE,KAAK,EAAE,+DAA+D;QACtE,UAAU,EACR,gIAAgI;QAClI,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,2CAA2C;gBACxD,IAAI,EAAE,uCAAuC;aAC9C;YACD;gBACE,WAAW,EAAE,kCAAkC;gBAC/C,IAAI,EAAE,iCAAiC;aACxC;YACD;gBACE,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,qCAAqC;aAC5C;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yBAAyB;QACtC,eAAe,EAAE,8CAA8C;QAC/D,KAAK,EACH,6FAA6F;QAC/F,UAAU,EACR,kIAAkI;QACpI,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,YAAY;aACnB;YACD;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,wCAAwC;aAC/C;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,yBAAyB;QACtC,eAAe,EAAE,iCAAiC;QAClD,KAAK,EACH,4FAA4F;QAC9F,UAAU,EACR,0FAA0F;QAC5F,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,2CAA2C;aAClD;YACD;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,iDAAiD;aACxD;YACD;gBACE,WAAW,EAAE,mCAAmC;gBAChD,IAAI,EAAE,uCAAuC;aAC9C;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,oBAAoB;QACjC,eAAe,EAAE,+BAA+B;QAChD,KAAK,EACH,iFAAiF;QACnF,UAAU,EACR,8HAA8H;QAChI,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,WAAW;aAClB;YACD;gBACE,WAAW,EAAE,qCAAqC;gBAClD,IAAI,EAAE,iCAAiC;aACxC;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,mBAAmB;QAChC,eAAe,EAAE,oCAAoC;QACrD,KAAK,EACH,qEAAqE;QACvE,UAAU,EACR,yEAAyE;QAC3E,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,6BAA6B;gBAC1C,IAAI,EAAE,aAAa;aACpB;YACD;gBACE,WAAW,EAAE,kCAAkC;gBAC/C,IAAI,EAAE,UAAU;aACjB;YACD;gBACE,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,+CAA+C;aACtD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,iCAAiC;QAC9C,eAAe,EAAE,gDAAgD;QACjE,KAAK,EACH,yEAAyE;QAC3E,UAAU,EACR,sFAAsF;QACxF,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,0CAA0C;aACjD;YACD;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,4CAA4C;aACnD;SACF;KACF;IAED,6BAA6B;IAC7B;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yBAAyB;QACtC,eAAe,EACb,oGAAoG;QACtG,KAAK,EACH,qEAAqE;QACvE,UAAU,EACR,+GAA+G;QACjH,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,mCAAmC;gBAChD,IAAI,EAAE,gCAAgC;aACvC;YACD;gBACE,WAAW,EAAE,gCAAgC;gBAC7C,IAAI,EAAE,4CAA4C;aACnD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wBAAwB;QACrC,eAAe,EACb,qEAAqE;QACvE,KAAK,EACH,8FAA8F;QAChG,UAAU,EACR,6GAA6G;QAC/G,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,wCAAwC;aAC/C;YACD;gBACE,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,yCAAyC;aAChD;YACD;gBACE,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,aAAa;aACpB;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+BAA+B;QAC5C,eAAe,EAAE,4CAA4C;QAC7D,KAAK,EACH,wGAAwG;QAC1G,UAAU,EACR,6GAA6G;QAC/G,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,6CAA6C;aACpD;YACD;gBACE,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,+CAA+C;aACtD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yBAAyB;QACtC,eAAe,EAAE,wCAAwC;QACzD,KAAK,EACH,kFAAkF;QACpF,UAAU,EACR,4IAA4I;QAC9I,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,uCAAuC;aAC9C;YACD;gBACE,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,8BAA8B;aACrC;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oBAAoB;QACjC,eAAe,EAAE,gCAAgC;QACjD,KAAK,EACH,qEAAqE;QACvE,UAAU,EACR,sHAAsH;QACxH,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,iCAAiC;gBAC9C,IAAI,EAAE,qCAAqC;aAC5C;YACD;gBACE,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,sDAAsD;aAC7D;YACD;gBACE,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,sDAAsD;aAC7D;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oBAAoB;QACjC,eAAe,EAAE,gCAAgC;QACjD,KAAK,EACH,wFAAwF;QAC1F,UAAU,EACR,0GAA0G;QAC5G,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,qCAAqC;aAC5C;YACD;gBACE,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,kDAAkD;aACzD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kBAAkB;QAC/B,eAAe,EAAE,0CAA0C;QAC3D,KAAK,EACH,0EAA0E;QAC5E,UAAU,EACR,wGAAwG;QAC1G,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,0CAA0C;aACjD;YACD;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,4CAA4C;aACnD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sBAAsB;QACnC,eAAe,EAAE,iCAAiC;QAClD,KAAK,EAAE,gEAAgE;QACvE,UAAU,EACR,oFAAoF;QACtF,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,gCAAgC;gBAC7C,IAAI,EAAE,0CAA0C;aACjD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oBAAoB;QACjC,eAAe,EAAE,yCAAyC;QAC1D,KAAK,EAAE,sDAAsD;QAC7D,UAAU,EACR,6IAA6I;QAC/I,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,4CAA4C;aACnD;YACD;gBACE,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,2CAA2C;aAClD;YACD;gBACE,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,kDAAkD;aACzD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,eAAe,EAAE,qCAAqC;QACtD,KAAK,EACH,6FAA6F;QAC/F,UAAU,EACR,qGAAqG;QACvG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,mCAAmC;gBAChD,IAAI,EAAE,4CAA4C;aACnD;YACD;gBACE,WAAW,EAAE,qCAAqC;gBAClD,IAAI,EAAE,8DAA8D;aACrE;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,uBAAuB;QACpC,eAAe,EAAE,kCAAkC;QACnD,KAAK,EACH,wEAAwE;QAC1E,UAAU,EACR,2GAA2G;QAC7G,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,+CAA+C;aACtD;YACD;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,iDAAiD;aACxD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mBAAmB;QAChC,eAAe,EAAE,uCAAuC;QACxD,KAAK,EAAE,0DAA0D;QACjE,UAAU,EACR,oHAAoH;QACtH,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,+CAA+C;aACtD;YACD;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,iDAAiD;aACxD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mBAAmB;QAChC,eAAe,EAAE,6BAA6B;QAC9C,KAAK,EAAE,uDAAuD;QAC9D,UAAU,EACR,+FAA+F;QACjG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,yCAAyC;aAChD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,eAAe,EAAE,qDAAqD;QACtE,KAAK,EACH,iGAAiG;QACnG,UAAU,EACR,mGAAmG;QACrG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,yEAAyE;aAChF;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kBAAkB;QAC/B,eAAe,EAAE,+BAA+B;QAChD,KAAK,EAAE,yCAAyC;QAChD,UAAU,EACR,oGAAoG;QACtG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,2CAA2C;aAClD;YACD;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,mCAAmC;aAC1C;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0BAA0B;QACvC,eAAe,EAAE,yBAAyB;QAC1C,KAAK,EAAE,8CAA8C;QACrD,UAAU,EACR,+HAA+H;QACjI,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,+BAA+B;aACtC;YACD;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,2DAA2D;aAClE;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6BAA6B;QAC1C,eAAe,EAAE,oCAAoC;QACrD,KAAK,EACH,2GAA2G;QAC7G,UAAU,EACR,oHAAoH;QACtH,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,kEAAkE;aACzE;YACD;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,mFAAmF;aAC1F;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,2CAA2C;QACxD,eAAe,EAAE,6BAA6B;QAC9C,KAAK,EACH,kFAAkF;QACpF,UAAU,EACR,oGAAoG;QACtG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,yDAAyD;aAChE;YACD;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,qEAAqE;aAC5E;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gDAAgD;QAC7D,eAAe,EAAE,gDAAgD;QACjE,KAAK,EACH,iGAAiG;QACnG,UAAU,EACR,yFAAyF;QAC3F,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,0EAA0E;aACjF;YACD;gBACE,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,+DAA+D;aACtE;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,+CAA+C;QAC5D,eAAe,EAAE,iDAAiD;QAClE,KAAK,EACH,yFAAyF;QAC3F,UAAU,EACR,2EAA2E;QAC7E,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,0BAA0B;gBACvC,IAAI,EAAE,iEAAiE;aACxE;YACD;gBACE,WAAW,EAAE,4BAA4B;gBACzC,IAAI,EAAE,0DAA0D;aACjE;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,mDAAmD;QAChE,eAAe,EAAE,2BAA2B;QAC5C,KAAK,EACH,yFAAyF;QAC3F,UAAU,EACR,wFAAwF;QAC1F,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,yEAAyE;aAChF;YACD;gBACE,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,wDAAwD;aAC/D;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wCAAwC;QACrD,eAAe,EAAE,qCAAqC;QACtD,KAAK,EAAE,uDAAuD;QAC9D,UAAU,EACR,6EAA6E;QAC/E,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,kDAAkD;aACzD;YACD;gBACE,WAAW,EAAE,sBAAsB;gBACnC,IAAI,EAAE,gEAAgE;aACvE;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yCAAyC;QACtD,eAAe,EAAE,oDAAoD;QACrE,KAAK,EAAE,oEAAoE;QAC3E,UAAU,EACR,yEAAyE;QAC3E,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,sDAAsD;aAC7D;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,kCAAkC;QAC/C,eAAe,EAAE,8CAA8C;QAC/D,KAAK,EAAE,oDAAoD;QAC3D,UAAU,EACR,iFAAiF;QACnF,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,0DAA0D;aACjE;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gCAAgC;QAC7C,eAAe,EAAE,wCAAwC;QACzD,KAAK,EACH,sFAAsF;QACxF,UAAU,EACR,qFAAqF;QACvF,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,sDAAsD;aAC7D;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,wCAAwC;QACrD,eAAe,EAAE,oCAAoC;QACrD,KAAK,EAAE,4CAA4C;QACnD,UAAU,EACR,oGAAoG;QACtG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,kCAAkC;gBAC/C,IAAI,EAAE,uEAAuE;aAC9E;SACF;KACF;IAED,2BAA2B;IAC3B;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,gBAAgB;QAC7B,eAAe,EAAE,wBAAwB;QACzC,KAAK,EAAE,mDAAmD;QAC1D,UAAU,EACR,wFAAwF;QAC1F,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,yBAAyB;aAChC;YACD;gBACE,WAAW,EAAE,sBAAsB;gBACnC,IAAI,EAAE,gDAAgD;aACvD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,iBAAiB;QAC9B,eAAe,EAAE,yBAAyB;QAC1C,KAAK,EAAE,iEAAiE;QACxE,UAAU,EACR,8FAA8F;QAChG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,iEAAiE;aACxE;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,uBAAuB;QACpC,eAAe,EAAE,kCAAkC;QACnD,KAAK,EAAE,oEAAoE;QAC3E,UAAU,EACR,mGAAmG;QACrG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,wCAAwC;aAC/C;YACD;gBACE,WAAW,EAAE,uBAAuB;gBACpC,IAAI,EAAE,0CAA0C;aACjD;SACF;KACF;IACD;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,wBAAwB;QACrC,eAAe,EAAE,uCAAuC;QACxD,KAAK,EACH,qEAAqE;QACvE,UAAU,EACR,sGAAsG;QACxG,QAAQ,EAAE;YACR;gBACE,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,0CAA0C;aACjD;SACF;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB,IAAI,iBAAiB,CAChE,iBAAiB,CAClB,CAAC;AAEF,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,OAAgC;IAEhC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAE1B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrB,yBAAyB;gBACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAClD,CAAC,EAAE,CAAC;gBACN,CAAC;gBAED,oCAAoC;gBACpC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACzB,6CAA6C;oBAC7C,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAED,4CAA4C;gBAC5C,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;gBAEvC,wEAAwE;gBACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,IAAI,EAAE,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC;wBACH,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;oBAAC,MAAM,CAAC;wBACP,2DAA2D;wBAC3D,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;gBAED,8EAA8E;gBAC9E,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACV,SAAS;YACX,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,MAAM,IAAI,IAAI,CAAC;QACf,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,OAAe;IACzD,oDAAoD;IACpD,mEAAmE;IACnE,MAAM,cAAc,GAAG,oBAAoB,CAAC;IAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0CAA0C;IAC1C,MAAM,cAAc,GAAG,iBAAiB,CAAC;IACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8CAA8C;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,uCAAuC,OAAO,uBAAuB,MAAM,EAAE,CAAC;AACvF,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crypto Extension Factory
|
|
3
|
+
*
|
|
4
|
+
* Provides cryptographic functions via thin wrapper around node:crypto.
|
|
5
|
+
* Functions: hash, hmac, uuid, random
|
|
6
|
+
*/
|
|
7
|
+
import type { ExtensionResult } from '../../runtime/ext/extensions.js';
|
|
8
|
+
/** Crypto extension configuration */
|
|
9
|
+
export interface CryptoConfig {
|
|
10
|
+
/** Default hash algorithm (default: 'sha256') */
|
|
11
|
+
defaultAlgorithm?: string | undefined;
|
|
12
|
+
/** HMAC key (required only if hmac() used) */
|
|
13
|
+
hmacKey?: string | undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create crypto extension with hashing and random generation.
|
|
17
|
+
*
|
|
18
|
+
* Returns 4 functions: hash, hmac, uuid, random.
|
|
19
|
+
*
|
|
20
|
+
* @param config - Crypto configuration
|
|
21
|
+
* @returns ExtensionResult with 4 crypto functions
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const cryptoExt = createCryptoExtension({
|
|
26
|
+
* defaultAlgorithm: 'sha256',
|
|
27
|
+
* hmacKey: 'secret'
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function createCryptoExtension(config?: CryptoConfig): ExtensionResult;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ext/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAOvE,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,GAAE,YAAiB,GACxB,eAAe,CA2IjB"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crypto Extension Factory
|
|
3
|
+
*
|
|
4
|
+
* Provides cryptographic functions via thin wrapper around node:crypto.
|
|
5
|
+
* Functions: hash, hmac, uuid, random
|
|
6
|
+
*/
|
|
7
|
+
import crypto from 'node:crypto';
|
|
8
|
+
import { RuntimeError } from '../../error-classes.js';
|
|
9
|
+
// ============================================================
|
|
10
|
+
// FACTORY
|
|
11
|
+
// ============================================================
|
|
12
|
+
/**
|
|
13
|
+
* Create crypto extension with hashing and random generation.
|
|
14
|
+
*
|
|
15
|
+
* Returns 4 functions: hash, hmac, uuid, random.
|
|
16
|
+
*
|
|
17
|
+
* @param config - Crypto configuration
|
|
18
|
+
* @returns ExtensionResult with 4 crypto functions
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const cryptoExt = createCryptoExtension({
|
|
23
|
+
* defaultAlgorithm: 'sha256',
|
|
24
|
+
* hmacKey: 'secret'
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function createCryptoExtension(config = {}) {
|
|
29
|
+
const defaultAlgorithm = config.defaultAlgorithm ?? 'sha256';
|
|
30
|
+
const hmacKey = config.hmacKey;
|
|
31
|
+
// Get supported hash algorithms from crypto module
|
|
32
|
+
const supportedAlgorithms = new Set(crypto.getHashes());
|
|
33
|
+
// ============================================================
|
|
34
|
+
// HELPERS
|
|
35
|
+
// ============================================================
|
|
36
|
+
/** Validate algorithm is supported */
|
|
37
|
+
function validateAlgorithm(algorithm) {
|
|
38
|
+
if (!supportedAlgorithms.has(algorithm)) {
|
|
39
|
+
// EC-27: Invalid algorithm
|
|
40
|
+
throw new RuntimeError('RILL-R004', `unsupported algorithm: ${algorithm}`, undefined, { algorithm, supported: Array.from(supportedAlgorithms) });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// ============================================================
|
|
44
|
+
// FUNCTIONS
|
|
45
|
+
// ============================================================
|
|
46
|
+
/**
|
|
47
|
+
* Hash content with specified or default algorithm.
|
|
48
|
+
* IR-23
|
|
49
|
+
*/
|
|
50
|
+
const hash = async (args) => {
|
|
51
|
+
const input = args[0];
|
|
52
|
+
const algorithm = args[1] ?? defaultAlgorithm;
|
|
53
|
+
// EC-27: Invalid algorithm
|
|
54
|
+
validateAlgorithm(algorithm);
|
|
55
|
+
const hashObject = crypto.createHash(algorithm);
|
|
56
|
+
hashObject.update(input);
|
|
57
|
+
return hashObject.digest('hex');
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Generate HMAC signature.
|
|
61
|
+
* IR-24, EC-26 (missing hmacKey)
|
|
62
|
+
*/
|
|
63
|
+
const hmac = async (args) => {
|
|
64
|
+
// EC-26: hmacKey missing
|
|
65
|
+
if (!hmacKey) {
|
|
66
|
+
throw new RuntimeError('RILL-R004', 'hmacKey required for hmac() — set in config', undefined, {});
|
|
67
|
+
}
|
|
68
|
+
const input = args[0];
|
|
69
|
+
const algorithm = args[1] ?? defaultAlgorithm;
|
|
70
|
+
// EC-27: Invalid algorithm
|
|
71
|
+
validateAlgorithm(algorithm);
|
|
72
|
+
const hmacObject = crypto.createHmac(algorithm, hmacKey);
|
|
73
|
+
hmacObject.update(input);
|
|
74
|
+
return hmacObject.digest('hex');
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Generate random UUID v4.
|
|
78
|
+
* IR-25
|
|
79
|
+
*/
|
|
80
|
+
const uuid = async () => {
|
|
81
|
+
return crypto.randomUUID();
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Generate random bytes as hex string.
|
|
85
|
+
* IR-26
|
|
86
|
+
*/
|
|
87
|
+
const random = async (args) => {
|
|
88
|
+
const bytes = args[0];
|
|
89
|
+
return crypto.randomBytes(bytes).toString('hex');
|
|
90
|
+
};
|
|
91
|
+
// ============================================================
|
|
92
|
+
// EXTENSION RESULT
|
|
93
|
+
// ============================================================
|
|
94
|
+
return {
|
|
95
|
+
hash: {
|
|
96
|
+
params: [
|
|
97
|
+
{ name: 'input', type: 'string', description: 'Content to hash' },
|
|
98
|
+
{
|
|
99
|
+
name: 'algorithm',
|
|
100
|
+
type: 'string',
|
|
101
|
+
description: 'Hash algorithm',
|
|
102
|
+
defaultValue: defaultAlgorithm,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
fn: hash,
|
|
106
|
+
description: 'Hash content, returns hex output',
|
|
107
|
+
returnType: 'string',
|
|
108
|
+
},
|
|
109
|
+
hmac: {
|
|
110
|
+
params: [
|
|
111
|
+
{
|
|
112
|
+
name: 'input',
|
|
113
|
+
type: 'string',
|
|
114
|
+
description: 'Content to authenticate',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'algorithm',
|
|
118
|
+
type: 'string',
|
|
119
|
+
description: 'Hash algorithm',
|
|
120
|
+
defaultValue: defaultAlgorithm,
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
fn: hmac,
|
|
124
|
+
description: 'Generate HMAC signature, returns hex output',
|
|
125
|
+
returnType: 'string',
|
|
126
|
+
},
|
|
127
|
+
uuid: {
|
|
128
|
+
params: [],
|
|
129
|
+
fn: uuid,
|
|
130
|
+
description: 'Generate random UUID v4',
|
|
131
|
+
returnType: 'string',
|
|
132
|
+
},
|
|
133
|
+
random: {
|
|
134
|
+
params: [
|
|
135
|
+
{ name: 'bytes', type: 'number', description: 'Number of bytes' },
|
|
136
|
+
],
|
|
137
|
+
fn: random,
|
|
138
|
+
description: 'Generate random bytes as hex string',
|
|
139
|
+
returnType: 'string',
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ext/crypto/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* exec Extension Factory
|
|
3
|
+
*
|
|
4
|
+
* Provides sandboxed command execution via allowlist/blocklist security controls.
|
|
5
|
+
* Each declared command becomes a function with argument validation and process isolation.
|
|
6
|
+
*/
|
|
7
|
+
import type { ExtensionResult } from '../../runtime/ext/extensions.js';
|
|
8
|
+
import { type CommandConfig } from './runner.js';
|
|
9
|
+
/** exec extension configuration */
|
|
10
|
+
export interface ExecConfig {
|
|
11
|
+
/** Command definitions keyed by command name */
|
|
12
|
+
commands: Record<string, CommandConfig>;
|
|
13
|
+
/** Global timeout in milliseconds (default: 30000 = 30s) */
|
|
14
|
+
timeout?: number | undefined;
|
|
15
|
+
/** Global output size limit in bytes (default: 1048576 = 1MB) */
|
|
16
|
+
maxOutputSize?: number | undefined;
|
|
17
|
+
/** Inherit parent process environment (default: false) */
|
|
18
|
+
inheritEnv?: boolean | undefined;
|
|
19
|
+
}
|
|
20
|
+
export type { CommandConfig };
|
|
21
|
+
/**
|
|
22
|
+
* Create exec extension with sandboxed command execution.
|
|
23
|
+
*
|
|
24
|
+
* Generates one host function per declared command.
|
|
25
|
+
* Each function validates arguments and spawns processes with security controls.
|
|
26
|
+
* Returns dispose() function to abort in-flight processes.
|
|
27
|
+
*
|
|
28
|
+
* @param config - Command definitions and defaults
|
|
29
|
+
* @returns ExtensionResult with command functions and dispose
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const execExt = createExecExtension({
|
|
34
|
+
* commands: {
|
|
35
|
+
* git: {
|
|
36
|
+
* binary: 'git',
|
|
37
|
+
* allowedArgs: ['status', '--short', 'log'],
|
|
38
|
+
* cwd: '/home/user/repo'
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function createExecExtension(config: ExecConfig): ExtensionResult;
|
|
45
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ext/exec/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,aAAa,CAAC;AAMrB,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAGD,YAAY,EAAE,aAAa,EAAE,CAAC;AAM9B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,CAwKvE"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* exec Extension Factory
|
|
3
|
+
*
|
|
4
|
+
* Provides sandboxed command execution via allowlist/blocklist security controls.
|
|
5
|
+
* Each declared command becomes a function with argument validation and process isolation.
|
|
6
|
+
*/
|
|
7
|
+
import { runCommand, } from './runner.js';
|
|
8
|
+
// ============================================================
|
|
9
|
+
// FACTORY
|
|
10
|
+
// ============================================================
|
|
11
|
+
/**
|
|
12
|
+
* Create exec extension with sandboxed command execution.
|
|
13
|
+
*
|
|
14
|
+
* Generates one host function per declared command.
|
|
15
|
+
* Each function validates arguments and spawns processes with security controls.
|
|
16
|
+
* Returns dispose() function to abort in-flight processes.
|
|
17
|
+
*
|
|
18
|
+
* @param config - Command definitions and defaults
|
|
19
|
+
* @returns ExtensionResult with command functions and dispose
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const execExt = createExecExtension({
|
|
24
|
+
* commands: {
|
|
25
|
+
* git: {
|
|
26
|
+
* binary: 'git',
|
|
27
|
+
* allowedArgs: ['status', '--short', 'log'],
|
|
28
|
+
* cwd: '/home/user/repo'
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function createExecExtension(config) {
|
|
35
|
+
// Apply defaults
|
|
36
|
+
const globalTimeout = config.timeout ?? 30000; // 30s
|
|
37
|
+
const globalMaxOutputSize = config.maxOutputSize ?? 1048576; // 1MB
|
|
38
|
+
const inheritEnv = config.inheritEnv ?? false;
|
|
39
|
+
// Track in-flight processes for dispose
|
|
40
|
+
const abortControllers = [];
|
|
41
|
+
// Helper: get effective timeout (command-specific or global)
|
|
42
|
+
const getTimeout = (commandConfig) => {
|
|
43
|
+
return commandConfig.timeout ?? globalTimeout;
|
|
44
|
+
};
|
|
45
|
+
// Helper: get effective maxBuffer (command-specific or global)
|
|
46
|
+
const getMaxBuffer = (commandConfig) => {
|
|
47
|
+
return commandConfig.maxBuffer ?? globalMaxOutputSize;
|
|
48
|
+
};
|
|
49
|
+
// Helper: get effective env (merge parent env if inheritEnv, then overlay command env)
|
|
50
|
+
const getEnv = (commandConfig) => {
|
|
51
|
+
if (!inheritEnv && !commandConfig.env) {
|
|
52
|
+
return undefined; // No env needed
|
|
53
|
+
}
|
|
54
|
+
const baseEnv = {};
|
|
55
|
+
// Copy process.env if inheritEnv is true, filtering out undefined
|
|
56
|
+
if (inheritEnv) {
|
|
57
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
58
|
+
if (value !== undefined) {
|
|
59
|
+
baseEnv[key] = value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Overlay command-specific env
|
|
64
|
+
if (commandConfig.env) {
|
|
65
|
+
Object.assign(baseEnv, commandConfig.env);
|
|
66
|
+
}
|
|
67
|
+
return baseEnv;
|
|
68
|
+
};
|
|
69
|
+
// ============================================================
|
|
70
|
+
// GENERATE COMMAND FUNCTIONS
|
|
71
|
+
// ============================================================
|
|
72
|
+
const functions = {};
|
|
73
|
+
for (const [commandName, commandConfig] of Object.entries(config.commands)) {
|
|
74
|
+
// Create function for this command
|
|
75
|
+
const commandFn = async (args) => {
|
|
76
|
+
// Extract args and stdin from RillValue array
|
|
77
|
+
const argsParam = args[0] ?? [];
|
|
78
|
+
const stdinParam = args[1];
|
|
79
|
+
// Convert args to string array
|
|
80
|
+
const stringArgs = argsParam.map((arg) => String(arg));
|
|
81
|
+
// Create abort controller for this execution
|
|
82
|
+
const controller = new AbortController();
|
|
83
|
+
abortControllers.push(controller);
|
|
84
|
+
try {
|
|
85
|
+
// Build effective config with merged defaults
|
|
86
|
+
const effectiveConfig = {
|
|
87
|
+
...commandConfig,
|
|
88
|
+
timeout: getTimeout(commandConfig),
|
|
89
|
+
maxBuffer: getMaxBuffer(commandConfig),
|
|
90
|
+
env: getEnv(commandConfig),
|
|
91
|
+
};
|
|
92
|
+
// Execute command
|
|
93
|
+
const result = await runCommand(commandName, effectiveConfig, stringArgs, stdinParam, controller.signal);
|
|
94
|
+
// Return as dict
|
|
95
|
+
return {
|
|
96
|
+
stdout: result.stdout,
|
|
97
|
+
stderr: result.stderr,
|
|
98
|
+
exitCode: result.exitCode,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
// Remove from tracking list
|
|
103
|
+
const index = abortControllers.indexOf(controller);
|
|
104
|
+
if (index !== -1) {
|
|
105
|
+
abortControllers.splice(index, 1);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
// Add to functions object with HostFunctionDefinition structure
|
|
110
|
+
functions[commandName] = {
|
|
111
|
+
params: [
|
|
112
|
+
{
|
|
113
|
+
name: 'args',
|
|
114
|
+
type: 'list',
|
|
115
|
+
description: 'Command arguments',
|
|
116
|
+
defaultValue: [],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'stdin',
|
|
120
|
+
type: 'string',
|
|
121
|
+
description: 'Standard input data',
|
|
122
|
+
defaultValue: '',
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
fn: commandFn,
|
|
126
|
+
description: commandConfig.description ?? `Execute ${commandName} command`,
|
|
127
|
+
returnType: 'dict',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
// ============================================================
|
|
131
|
+
// INTROSPECTION FUNCTION
|
|
132
|
+
// ============================================================
|
|
133
|
+
const commands = async () => {
|
|
134
|
+
const result = [];
|
|
135
|
+
for (const [name, commandConfig] of Object.entries(config.commands)) {
|
|
136
|
+
result.push({
|
|
137
|
+
name,
|
|
138
|
+
description: commandConfig.description ?? '',
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
};
|
|
143
|
+
functions['commands'] = {
|
|
144
|
+
params: [],
|
|
145
|
+
fn: commands,
|
|
146
|
+
description: 'List all configured commands',
|
|
147
|
+
returnType: 'list',
|
|
148
|
+
};
|
|
149
|
+
// ============================================================
|
|
150
|
+
// DISPOSE FUNCTION
|
|
151
|
+
// ============================================================
|
|
152
|
+
const dispose = async () => {
|
|
153
|
+
// Abort all in-flight processes
|
|
154
|
+
for (const controller of abortControllers) {
|
|
155
|
+
controller.abort();
|
|
156
|
+
}
|
|
157
|
+
// Clear tracking array
|
|
158
|
+
abortControllers.length = 0;
|
|
159
|
+
};
|
|
160
|
+
// ============================================================
|
|
161
|
+
// EXTENSION RESULT
|
|
162
|
+
// ============================================================
|
|
163
|
+
return {
|
|
164
|
+
...functions,
|
|
165
|
+
dispose,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ext/exec/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* exec Extension Runner
|
|
3
|
+
*
|
|
4
|
+
* Handles process spawning with argument validation and security controls.
|
|
5
|
+
* Uses child_process.execFile() for shell injection prevention.
|
|
6
|
+
*/
|
|
7
|
+
/** Command configuration with security controls */
|
|
8
|
+
export interface CommandConfig {
|
|
9
|
+
/** Binary executable path */
|
|
10
|
+
readonly binary: string;
|
|
11
|
+
/** Optional timeout in milliseconds */
|
|
12
|
+
readonly timeout?: number | undefined;
|
|
13
|
+
/** Optional output size limit in bytes */
|
|
14
|
+
readonly maxBuffer?: number | undefined;
|
|
15
|
+
/** Allowed arguments (allowlist mode) */
|
|
16
|
+
readonly allowedArgs?: readonly string[] | undefined;
|
|
17
|
+
/** Blocked arguments (blocklist mode) */
|
|
18
|
+
readonly blockedArgs?: readonly string[] | undefined;
|
|
19
|
+
/** Working directory for command execution */
|
|
20
|
+
readonly cwd?: string | undefined;
|
|
21
|
+
/** Environment variables for command */
|
|
22
|
+
readonly env?: Record<string, string> | undefined;
|
|
23
|
+
/** Whether command accepts stdin */
|
|
24
|
+
readonly stdin?: boolean | undefined;
|
|
25
|
+
/** Optional description for introspection */
|
|
26
|
+
readonly description?: string | undefined;
|
|
27
|
+
}
|
|
28
|
+
/** Command execution result */
|
|
29
|
+
export interface CommandResult {
|
|
30
|
+
readonly stdout: string;
|
|
31
|
+
readonly stderr: string;
|
|
32
|
+
readonly exitCode: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Execute command with process spawning and security controls.
|
|
36
|
+
*
|
|
37
|
+
* Uses execFile() to prevent shell injection attacks.
|
|
38
|
+
* Validates arguments against allowlist/blocklist rules.
|
|
39
|
+
* Returns stdout, stderr, and exit code (non-zero exit is not an error).
|
|
40
|
+
*
|
|
41
|
+
* @param commandName - Command name for error messages
|
|
42
|
+
* @param config - Command configuration with security rules
|
|
43
|
+
* @param args - Command arguments
|
|
44
|
+
* @param stdinData - Optional stdin data
|
|
45
|
+
* @param signal - Optional AbortSignal for cancellation
|
|
46
|
+
* @returns Command result with stdout, stderr, and exitCode
|
|
47
|
+
* @throws RuntimeError RILL-R004 for validation failures
|
|
48
|
+
* @throws RuntimeError RILL-R012 for timeout
|
|
49
|
+
* @throws RuntimeError RILL-R004 for output size limit exceeded
|
|
50
|
+
* @throws RuntimeError RILL-R004 for binary not found
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const result = await runCommand('git', {
|
|
55
|
+
* binary: 'git',
|
|
56
|
+
* allowedArgs: ['status', '--short']
|
|
57
|
+
* }, ['status', '--short']);
|
|
58
|
+
* // Returns: { stdout: "...", stderr: "", exitCode: 0 }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function runCommand(commandName: string, config: CommandConfig, args: readonly string[], stdinData?: string | undefined, signal?: AbortSignal | undefined): Promise<CommandResult>;
|
|
62
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/ext/exec/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,wCAAwC;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,oCAAoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,+BAA+B;AAC/B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAgFD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GAC/B,OAAO,CAAC,aAAa,CAAC,CAoIxB"}
|