nawabari 0.2.0 → 0.4.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 +230 -15
- package/dist/cli.d.ts +5 -0
- package/dist/cli.js +704 -115
- package/dist/cli.js.map +1 -1
- package/dist/contract.js +135 -2
- package/dist/contract.js.map +1 -1
- package/dist/domain/errors.d.ts +1 -1
- package/dist/domain/errors.js +4 -1
- package/dist/domain/errors.js.map +1 -1
- package/dist/domain/sandbox-launcher.d.ts +35 -0
- package/dist/domain/sandbox-launcher.js +679 -0
- package/dist/domain/sandbox-launcher.js.map +1 -0
- package/dist/domain/sandbox.d.ts +190 -0
- package/dist/domain/sandbox.js +363 -0
- package/dist/domain/sandbox.js.map +1 -0
- package/dist/domain/session-backend.d.ts +5 -3
- package/dist/domain/session-backend.js +102 -4
- package/dist/domain/session-backend.js.map +1 -1
- package/dist/domain/session.d.ts +116 -2
- package/dist/domain/session.js +36 -0
- package/dist/domain/session.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/git.d.ts +62 -0
- package/dist/git.js +299 -0
- package/dist/git.js.map +1 -1
- package/dist/operation-authorization.d.ts +5 -2
- package/dist/operation-authorization.js +6 -7
- package/dist/operation-authorization.js.map +1 -1
- package/dist/output-budget.d.ts +16 -0
- package/dist/output-budget.js +58 -0
- package/dist/output-budget.js.map +1 -0
- package/dist/presentation.js +28 -4
- package/dist/presentation.js.map +1 -1
- package/dist/registry/atomic.d.ts +24 -0
- package/dist/registry/atomic.js +35 -2
- package/dist/registry/atomic.js.map +1 -1
- package/dist/registry/errors.d.ts +1 -1
- package/dist/registry/errors.js +1 -0
- package/dist/registry/errors.js.map +1 -1
- package/dist/repository-evidence.d.ts +74 -0
- package/dist/repository-evidence.js +7 -0
- package/dist/repository-evidence.js.map +1 -0
- package/dist/resource-claims.d.ts +25 -3
- package/dist/resource-claims.js +57 -5
- package/dist/resource-claims.js.map +1 -1
- package/dist/session-registry.d.ts +68 -7
- package/dist/session-registry.js +422 -149
- package/dist/session-registry.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-launcher.js","sourceRoot":"","sources":["../../src/domain/sandbox-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAsC,MAAM,aAAa,CAAC;AAGhG,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,mBAAmB,GAAG,GAAG,YAAY,UAAU,CAAC;AACtD,MAAM,kBAAkB,GAAG,GAAG,YAAY,SAAS,CAAC;AACpD,MAAM,kBAAkB,GAAG,GAAG,YAAY,SAAS,CAAC;AACpD,MAAM,mBAAmB,GAAG,GAAG,YAAY,YAAY,CAAC;AACxD,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AAC1C,MAAM,wBAAwB,GAAG,KAAK,GAAG,KAAK,CAAC;AAyC/C,SAAS,aAAa,CAAC,OAAe,EAAE,OAAmB;IACzD,OAAO,OAAO,CAAC,IAAI,WAAW,CAAC,0BAA0B,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,SAAiB;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,aAAa,CAAC,SAAiB,EAAE,KAAa;IACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,aAAa,CAAC,GAAG,KAAK,8CAA8C,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,OAAO,aAAa,CAAC,GAAG,KAAK,gDAAgD,EAAE;gBAC7E,KAAK;gBACL,IAAI,EAAE,SAAS;gBACf,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,GAAG,KAAK,6CAA6C,EAAE;YAC1E,KAAK;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAiB,EAAE,UAAkB,EAAE,KAAa;IACnF,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QACjE,OAAO,aAAa,CAAC,GAAG,KAAK,kEAAkE,EAAE;YAC/F,KAAK;YACL,IAAI,EAAE,SAAS;YACf,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IACD,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,OAAO,aAAa,CAAC,GAAG,KAAK,iCAAiC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,gBAAgB,GAAG,MAAM,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC5C,OAAO,aAAa,CAAC,GAAG,KAAK,uDAAuD,EAAE;gBACpF,KAAK;gBACL,IAAI,EAAE,SAAS;gBACf,iBAAiB,EAAE,gBAAgB;gBACnC,iBAAiB,EAAE,gBAAgB;gBACnC,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,GAAG,KAAK,8BAA8B,EAAE;YAC3D,KAAK;YACL,IAAI,EAAE,SAAS;YACf,iBAAiB,EAAE,gBAAgB;YACnC,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,GAAG,KAAK,yBAAyB,EAAE;YACtD,KAAK;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgC;IACxD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3D,OAAO,aAAa,CAAC,iFAAiF,EAAE;YACtG,gBAAgB,EAAE,OAAO,CAAC,QAAQ;YAClC,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc;SACrD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChG,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACnG,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,cAAc,GAAG,uBAAuB,CAC5C,OAAO,CAAC,UAAU,CAAC,eAAe,EAClC,UAAU,CAAC,KAAK,EAChB,4BAA4B,CAC7B,CAAC;IACF,IAAI,CAAC,cAAc,CAAC,EAAE;QAAE,OAAO,cAAc,CAAC;IAC9C,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/G,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACxF,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC,+DAA+D,EAAE;YACpF,UAAU,EAAE,UAAU,CAAC,KAAK;YAC5B,WAAW,EAAE,UAAU,CAAC,KAAK;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACxF,OAAO,aAAa,CAAC,6DAA6D,EAAE;YAClF,UAAU,EAAE,UAAU,CAAC,KAAK;YAC5B,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;QACb,UAAU,EAAE,UAAU,CAAC,KAAK;QAC5B,QAAQ,EAAE,QAAQ,CAAC,KAAK;QACxB,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,cAAc,CAAC,KAAK;QACrC,YAAY,EAAE,WAAW,CAAC,KAAK;QAC/B,WAAW,EAAE,UAAU,CAAC,KAAK;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB,EAAE,IAAY;IAClD,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,MAAM;QACN,MAAM;QACN,QAAQ;QACR,YAAY;QACZ,qBAAqB;QACrB,eAAe;QACf,sBAAsB;QACtB,qBAAqB;QACrB,UAAU;QACV,eAAe;QACf,mBAAmB;QACnB,UAAU;QACV,UAAU;QACV,sBAAsB;KACvB,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxH,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,CACL,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,OAAO;QACtB,UAAU,KAAK,MAAM;QACrB,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC;QACrC,WAAW,CAAC,UAAU,EAAE,qBAAqB,CAAC;QAC9C,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC;QACxC,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAiB,EACjB,WAAsC,OAAO,CAAC,GAAG,CAAC,IAAI;IAEtD,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACxE,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACxE,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;QAAE,OAAO,UAAU,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB,EAAE,KAAa;IACxD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,OAAO,aAAa,CAAC,GAAG,KAAK,sCAAsC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,GAAG,KAAK,kBAAkB,EAAE;YAC/C,KAAK;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,WAAmB,EAAE,IAAiB;IAC1E,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAc,EAAE,MAAc,EAAE,WAAmB,EAAE,eAA4B;IACxG,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc,EAAE,MAAc,EAAE,WAAmB,EAAE,eAA4B;IACzG,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgC;IACjE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACvE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,MAAM,CAAC,CAAC;IACrG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,aAAa,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC5F,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgC;IAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,OAAO,CACZ,IAAI,WAAW,CACb,gCAAgC,EAChC,sFAAsF,EACtF,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CACnD,CACF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACxF,OAAO,OAAO,CACZ,IAAI,WAAW,CACb,gCAAgC,EAChC,kEAAkE,EAClE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CACnC,CACF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;IACtF,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,OAAO,CACZ,IAAI,WAAW,CAAC,gCAAgC,EAAE,iDAAiD,EAAE;gBACnG,IAAI,EAAE,OAAO,CAAC,kBAAkB;aACjC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IACE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAC5B,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI;YACzE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAC7B,CAAC;YACD,OAAO,aAAa,CAAC,wDAAwD,EAAE;gBAC7E,IAAI,EAAE,OAAO,CAAC,kBAAkB;gBAChC,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CACZ,IAAI,WAAW,CAAC,gCAAgC,EAAE,uDAAuD,EAAE;YACzG,IAAI,EAAE,OAAO,CAAC,kBAAkB;SACjC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgC;IAC5D,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACtD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,aAAa,CAAC,oDAAoD,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM;YAAE,SAAS;QAC3E,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,OAAO,aAAa,CAAC,kEAAkE,EAAE;oBACvF,IAAI,EAAE,MAAM;oBACZ,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,aAAa,CAAC,2CAA2C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACrD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,aAAa,CAAC,mDAAmD,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,OAAO,aAAa,CAAC,iEAAiE,EAAE;oBACtF,IAAI,EAAE,MAAM;oBACZ,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,aAAa,CAAC,0CAA0C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACxD,IAAI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5E,OAAO,aAAa,CAAC,gEAAgE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9E,OAAO,aAAa,CAAC,mEAAmE,EAAE;oBACxF,IAAI,EAAE,MAAM;oBACZ,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,aAAa,CAAC,6CAA6C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,WAAmB;IACxD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;YAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgC,EAAE,QAA2B;IACvF,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,EAC1C,yDAAyD,EACzD,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACF,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YAClF,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YACpF,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,SAAS,GAAG,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACvE,OAAO,aAAa,CAAC,yDAAyD,EAAE;wBAC9E,UAAU,EAAE,OAAO,CAAC,UAAU;wBAC9B,SAAS;qBACV,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;gBAChE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1E,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YAC7D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,wBAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,qDAAqD,EAAE;YAC1E,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAgC,EAChC,OAAuB;IAEvB,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACtC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO,aAAa,CAAC,iEAAiE,EAAE;YACtF,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,aAAa,CAAC,qDAAqD,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAClH,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAa;QACrB,mBAAmB;QACnB,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,eAAe;QACf,eAAe;QACf,kBAAkB;QAClB,OAAO;QACP,GAAG;QACH,OAAO;QACP,GAAG;QACH,YAAY;QACZ,KAAK;QACL,YAAY;QACZ,UAAU;QACV,MAAM;QACN,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,MAAM;QACN,UAAU;QACV,iBAAiB;QACjB,mBAAmB;QACnB,UAAU;QACV,gBAAgB;QAChB,kBAAkB;QAClB,UAAU;QACV,eAAe;QACf,GAAG,kBAAkB,QAAQ;QAC7B,UAAU;QACV,MAAM;QACN,UAAU;QACV,UAAU;QACV,SAAS;QACT,UAAU;QACV,UAAU;QACV,qBAAqB;QACrB,OAAO,CAAC,UAAU;QAClB,UAAU;QACV,MAAM;QACN,SAAS;QACT,UAAU;QACV,SAAS;QACT,eAAe;QACf,UAAU;QACV,eAAe;QACf,QAAQ,CAAC,KAAK,CAAC,QAAQ;QACvB,UAAU;QACV,qBAAqB;QACrB,GAAG;QACH,UAAU;QACV,mBAAmB;QACnB,WAAW;QACX,SAAS;QACT,GAAG;QACH,OAAO;QACP,MAAM;QACN,QAAQ;QACR,OAAO;QACP,SAAS;QACT,MAAM;KACP,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,MAAM,mBAAmB,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpD,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;IACtF,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAC3E,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;IAClF,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;IAC7F,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IACtF,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,uBAAuB,EAAE,eAAe,CAAC,CAAC;IAE5F,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC5E,IAAI,IAAI,KAAK,WAAW;YAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,MAAM,EAAE,eAAe,CAAC,CAAC;QACtG,IAAI,IAAI,KAAK,WAAW;YAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,MAAM,EAAE,eAAe,CAAC,CAAC;QACtG,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,aAAa,EAAE,eAAe,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACtD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM;YAAE,SAAS;QAC3E,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY;QAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IAE7G,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC7D,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAC1C,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC;IAEjF,MAAM,GAAG,GAA2B;QAClC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,kBAAkB;QAClC,aAAa,EAAE,GAAG,kBAAkB,QAAQ;QAC5C,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,UAAU;QACnB,mBAAmB,EAAE,OAAO,CAAC,UAAU;KACxC,CAAC;IACF,OAAO,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,aAAa,CACpB,MAAgB,EAChB,KAAa,EACb,QAAgB,EAChB,KAAsB;IAEtB,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC;IAC9D,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CACjC,OAAgC,EAChC,OAAuB,EACvB,UAAkC,EAAE;IAEpC,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,kBAAkB,CAAC;IAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,IAAI,wBAAwB,CAAC;IAC5E,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;QAChC,SAAS,GAAG,CAAC;QACb,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC;QACrC,cAAc,GAAG,CAAC,EAClB,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CACpB,OAAO,CACL,IAAI,WAAW,CAAC,kBAAkB,EAAE,0DAA0D,EAAE;YAC9F,UAAU,EAAE,SAAS;YACrB,gBAAgB,EAAE,cAAc;SACjC,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG;YACzB,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE;YAChC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,CACpB,OAAO,CACL,IAAI,WAAW,CAAC,0BAA0B,EAAE,kCAAkC,EAAE;YAC9E,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,UAAU,GAAiB,IAAI,CAAC;QACpC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,MAAM,MAAM,GAAG,CAAC,IAAmB,EAAE,MAA6B,EAAQ,EAAE;YAC1E,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,CACL,OAAO,CACL,IAAI,WAAW,CAAC,0BAA0B,EAAE,iDAAiD,EAAE;oBAC7F,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBACzC,CAAC,CACH,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CACL,OAAO,CACL,IAAI,WAAW,CAAC,2BAA2B,EAAE,uDAAuD,EAAE;oBACpG,UAAU,EAAE,SAAS;iBACtB,CAAC,CACH,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CACL,OAAO,CACL,IAAI,WAAW,CAAC,sBAAsB,EAAE,kDAAkD,EAAE;oBAC1F,gBAAgB,EAAE,cAAc;iBACjC,CAAC,CACH,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,OAAO,CACL,OAAO,CAAC;gBACN,SAAS,EAAE,IAAI;gBACf,MAAM;gBACN,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;aAClC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YAClD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;YAC5E,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;YAC9B,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,cAAc,GAAG,IAAI,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YAClD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;YAC5E,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;YAC9B,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,cAAc,GAAG,IAAI,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACjC,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { type DomainResult, type ErrorCode, type JsonObject } from "./errors.js";
|
|
2
|
+
import type { SessionBackend, SessionContext } from "./session.js";
|
|
3
|
+
/**
|
|
4
|
+
* Versioned identity for the Linux sandbox execution contract (Issue #81).
|
|
5
|
+
* This contract binds exactly one existing Nawabari session to an execution
|
|
6
|
+
* request; it does not create a parallel session identity. It defines
|
|
7
|
+
* capability/doctor state and one typed execution request/result. It does
|
|
8
|
+
* not implement bubblewrap mounts; that is the next, downstream child.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SANDBOX_CONTRACT_ID: "nawabari.sandbox-execution.v1";
|
|
11
|
+
export declare const SANDBOX_CONTRACT_SCHEMA_VERSION: 1;
|
|
12
|
+
/** Nawabari's only supported sandbox execution platform. */
|
|
13
|
+
export declare const SANDBOX_SUPPORTED_PLATFORM: "linux";
|
|
14
|
+
export type SandboxCapabilityId = "bubblewrap" | "user_namespaces" | "mount_namespaces" | "pid_namespace" | "ipc_namespace" | "uts_namespace" | "cgroups_v2" | "landlock" | "seccomp" | "capabilities";
|
|
15
|
+
/**
|
|
16
|
+
* Capabilities without which protected execution cannot be established at
|
|
17
|
+
* all: the bwrap binary plus the namespace classes bwrap unshares by
|
|
18
|
+
* default. Missing any of these fails resolution closed.
|
|
19
|
+
*/
|
|
20
|
+
export declare const SANDBOX_REQUIRED_CAPABILITIES: readonly SandboxCapabilityId[];
|
|
21
|
+
/** Defense-in-depth capabilities that strengthen but do not gate readiness. */
|
|
22
|
+
export declare const SANDBOX_OPTIONAL_CAPABILITIES: readonly SandboxCapabilityId[];
|
|
23
|
+
export type SandboxCapabilityRequirement = "required" | "optional";
|
|
24
|
+
export type SandboxCapabilityStatus = "available" | "unavailable" | "not_applicable";
|
|
25
|
+
export type SandboxCapabilityCheck = {
|
|
26
|
+
id: SandboxCapabilityId;
|
|
27
|
+
requirement: SandboxCapabilityRequirement;
|
|
28
|
+
status: SandboxCapabilityStatus;
|
|
29
|
+
code: ErrorCode | null;
|
|
30
|
+
message: string;
|
|
31
|
+
details: JsonObject;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Network isolation is a non-goal of this first contract. `inherited` is the
|
|
35
|
+
* only honest value: the sandbox process shares the host network namespace.
|
|
36
|
+
*/
|
|
37
|
+
export type SandboxNetworkMode = "inherited";
|
|
38
|
+
export type SandboxDoctorReport = {
|
|
39
|
+
schema_version: number;
|
|
40
|
+
contract_id: string;
|
|
41
|
+
platform: string;
|
|
42
|
+
platform_supported: boolean;
|
|
43
|
+
network_mode: SandboxNetworkMode;
|
|
44
|
+
capabilities: SandboxCapabilityCheck[];
|
|
45
|
+
ready: boolean;
|
|
46
|
+
missing_required: SandboxCapabilityId[];
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* The real repository UID/GID is never equated with the namespace-local
|
|
50
|
+
* identity a sandboxed process observes; the two are represented separately.
|
|
51
|
+
*/
|
|
52
|
+
export type SandboxIdentity = {
|
|
53
|
+
real_uid: number | null;
|
|
54
|
+
real_gid: number | null;
|
|
55
|
+
namespace_uid: number;
|
|
56
|
+
namespace_gid: number;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Typed filesystem topology inputs. These are derived from authoritative
|
|
60
|
+
* session/runtime configuration only; there is no caller-supplied mount
|
|
61
|
+
* string policy language.
|
|
62
|
+
*/
|
|
63
|
+
export type SandboxFilesystemTopology = {
|
|
64
|
+
owned_worktree: string;
|
|
65
|
+
home: string;
|
|
66
|
+
cache: string;
|
|
67
|
+
/** Repository-owned state shared by sessions; only this selected subtree is mounted. */
|
|
68
|
+
persistent_home: string;
|
|
69
|
+
/** Session-private Git admin view; the host worktree admin directory is never mounted. */
|
|
70
|
+
git_metadata: string;
|
|
71
|
+
/** Repository object database, exposed read-only for Git inspection. */
|
|
72
|
+
git_objects: string;
|
|
73
|
+
/** Host user-tool directories selected by the canonical profile and mounted read-only. */
|
|
74
|
+
user_tool_paths: string[];
|
|
75
|
+
/** Host HOME used to derive the selected user-tool paths; never mounted itself. */
|
|
76
|
+
user_tool_home?: string | null;
|
|
77
|
+
runtime_paths: string[];
|
|
78
|
+
system_paths: string[];
|
|
79
|
+
};
|
|
80
|
+
export type SandboxExecutionRequest = {
|
|
81
|
+
schema_version: number;
|
|
82
|
+
contract_id: string;
|
|
83
|
+
/**
|
|
84
|
+
* Mirrors `SandboxExecutionOptions.enforce`. `true` means capability
|
|
85
|
+
* resolution already proved readiness and a downstream executor must
|
|
86
|
+
* establish protected execution. `false` means readiness was not required
|
|
87
|
+
* to reach this request, so a downstream executor may still need to fall
|
|
88
|
+
* back to the legacy unsandboxed path.
|
|
89
|
+
*/
|
|
90
|
+
enforce: boolean;
|
|
91
|
+
session_id: string;
|
|
92
|
+
repository: string;
|
|
93
|
+
worktree: string;
|
|
94
|
+
branch: string;
|
|
95
|
+
network_mode: SandboxNetworkMode;
|
|
96
|
+
/** Resolved host path to bubblewrap; null is valid only for advisory requests. */
|
|
97
|
+
sandbox_executable: string | null;
|
|
98
|
+
identity: SandboxIdentity;
|
|
99
|
+
filesystem: SandboxFilesystemTopology;
|
|
100
|
+
required_capabilities: SandboxCapabilityId[];
|
|
101
|
+
};
|
|
102
|
+
export type SandboxExecutionOptions = {
|
|
103
|
+
session_id: string | null;
|
|
104
|
+
/** When true, resolution fails closed instead of returning an unsandboxed request. */
|
|
105
|
+
enforce: boolean;
|
|
106
|
+
};
|
|
107
|
+
/** Injectable capability probe so doctor/resolution logic stays host-independent and testable. */
|
|
108
|
+
export type SandboxProbe = {
|
|
109
|
+
platform(): string;
|
|
110
|
+
uid(): number | null;
|
|
111
|
+
gid(): number | null;
|
|
112
|
+
hasBubblewrap(): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Proves user, mount, PID, IPC, and UTS namespace creation together by
|
|
115
|
+
* actually asking bubblewrap to unshare all of them, not by inferring
|
|
116
|
+
* support from `/proc/self/ns/*` existence. Those files describe the
|
|
117
|
+
* calling process's own current namespace membership — present on any
|
|
118
|
+
* modern kernel — and prove nothing about whether this host or its
|
|
119
|
+
* container/seccomp/AppArmor policy permits `clone(CLONE_NEWUSER)` and
|
|
120
|
+
* friends. False-positive readiness here would let `enforce: true`
|
|
121
|
+
* resolve successfully even though bwrap cannot actually sandbox.
|
|
122
|
+
*/
|
|
123
|
+
hasNamespaceSupport(): boolean;
|
|
124
|
+
hasCgroupsV2(): boolean;
|
|
125
|
+
hasLandlock(): boolean;
|
|
126
|
+
hasSeccomp(): boolean;
|
|
127
|
+
hasCapabilities(): boolean;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Explicit runtime inputs consumed by the canonical profile. The shape is
|
|
131
|
+
* intentionally fixed: callers can select a supported runtime layout, but
|
|
132
|
+
* cannot supply an arbitrary list of mount source/destination pairs.
|
|
133
|
+
*/
|
|
134
|
+
export type SandboxRuntimeLayout = {
|
|
135
|
+
bubblewrap: string | null;
|
|
136
|
+
/** Host HOME used only to resolve the selected read-only tool directories. */
|
|
137
|
+
user_home?: string | null;
|
|
138
|
+
user_local_bin: string | null;
|
|
139
|
+
user_local_lib: string | null;
|
|
140
|
+
user_pnpm_bin: string | null;
|
|
141
|
+
nix_store: string | null;
|
|
142
|
+
nix_current_system: string | null;
|
|
143
|
+
nix_wrappers: string | null;
|
|
144
|
+
nix_user_profile: string | null;
|
|
145
|
+
usr: string | null;
|
|
146
|
+
bin: string | null;
|
|
147
|
+
lib: string | null;
|
|
148
|
+
lib64: string | null;
|
|
149
|
+
passwd: string | null;
|
|
150
|
+
group: string | null;
|
|
151
|
+
nsswitch: string | null;
|
|
152
|
+
hosts: string | null;
|
|
153
|
+
resolv_conf: string | null;
|
|
154
|
+
alternatives: string | null;
|
|
155
|
+
ssl_certs: string | null;
|
|
156
|
+
pki_certs: string | null;
|
|
157
|
+
ca_certificates: string | null;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Local kernel/runtime capability probes. Required namespace support is
|
|
161
|
+
* verified by an actual bubblewrap execution probe; optional capabilities
|
|
162
|
+
* remain best-effort static filesystem evidence since they never gate
|
|
163
|
+
* `ready`.
|
|
164
|
+
*/
|
|
165
|
+
export declare const defaultSandboxProbe: SandboxProbe;
|
|
166
|
+
/**
|
|
167
|
+
* Pure, side-effect-free capability/doctor inspection. Always returns a
|
|
168
|
+
* report; it never throws and never selects an unsandboxed path itself.
|
|
169
|
+
*/
|
|
170
|
+
export declare function sandboxDoctorReport(probe?: SandboxProbe): SandboxDoctorReport;
|
|
171
|
+
/**
|
|
172
|
+
* Discover only paths from the fixed standalone-Linux and NixOS layouts.
|
|
173
|
+
* `/usr` is a conditional standalone input, never the assumed root of the
|
|
174
|
+
* runtime; NixOS paths are selected when they actually exist.
|
|
175
|
+
*/
|
|
176
|
+
export declare function discoverSandboxRuntimeLayout(environment?: NodeJS.ProcessEnv): SandboxRuntimeLayout;
|
|
177
|
+
/**
|
|
178
|
+
* Resolve one typed sandbox execution request for a single, already
|
|
179
|
+
* authoritative Nawabari session. Repository/worktree/branch/session
|
|
180
|
+
* identity is derived exclusively from `backend.guard`, the same
|
|
181
|
+
* registry/guard authority every other governed operation uses; this
|
|
182
|
+
* function does not re-verify Git or registry state on its own.
|
|
183
|
+
*
|
|
184
|
+
* When `options.enforce` is true and required sandbox capabilities are
|
|
185
|
+
* unavailable (including an unsupported platform), resolution fails closed:
|
|
186
|
+
* it never returns a request that silently downgrades to the legacy
|
|
187
|
+
* unsandboxed path.
|
|
188
|
+
*/
|
|
189
|
+
export declare function resolveSandboxExecutionRequest(backend: SessionBackend, context: SessionContext, options: SandboxExecutionOptions, probe?: SandboxProbe, runtimeLayout?: SandboxRuntimeLayout): Promise<DomainResult<SandboxExecutionRequest>>;
|
|
190
|
+
export { compileSandboxInvocation, runSandboxedCommand, type SandboxCommand, type SandboxExecutionResult, type SandboxInvocation, type SandboxLauncherOptions, } from "./sandbox-launcher.js";
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import process from "node:process";
|
|
6
|
+
import { DomainError, failure, success } from "./errors.js";
|
|
7
|
+
/**
|
|
8
|
+
* Versioned identity for the Linux sandbox execution contract (Issue #81).
|
|
9
|
+
* This contract binds exactly one existing Nawabari session to an execution
|
|
10
|
+
* request; it does not create a parallel session identity. It defines
|
|
11
|
+
* capability/doctor state and one typed execution request/result. It does
|
|
12
|
+
* not implement bubblewrap mounts; that is the next, downstream child.
|
|
13
|
+
*/
|
|
14
|
+
export const SANDBOX_CONTRACT_ID = "nawabari.sandbox-execution.v1";
|
|
15
|
+
export const SANDBOX_CONTRACT_SCHEMA_VERSION = 1;
|
|
16
|
+
/** Nawabari's only supported sandbox execution platform. */
|
|
17
|
+
export const SANDBOX_SUPPORTED_PLATFORM = "linux";
|
|
18
|
+
/**
|
|
19
|
+
* Capabilities without which protected execution cannot be established at
|
|
20
|
+
* all: the bwrap binary plus the namespace classes bwrap unshares by
|
|
21
|
+
* default. Missing any of these fails resolution closed.
|
|
22
|
+
*/
|
|
23
|
+
export const SANDBOX_REQUIRED_CAPABILITIES = Object.freeze([
|
|
24
|
+
"bubblewrap",
|
|
25
|
+
"user_namespaces",
|
|
26
|
+
"mount_namespaces",
|
|
27
|
+
"pid_namespace",
|
|
28
|
+
"ipc_namespace",
|
|
29
|
+
"uts_namespace",
|
|
30
|
+
]);
|
|
31
|
+
/** Defense-in-depth capabilities that strengthen but do not gate readiness. */
|
|
32
|
+
export const SANDBOX_OPTIONAL_CAPABILITIES = Object.freeze([
|
|
33
|
+
"cgroups_v2",
|
|
34
|
+
"landlock",
|
|
35
|
+
"seccomp",
|
|
36
|
+
"capabilities",
|
|
37
|
+
]);
|
|
38
|
+
function pathExists(candidate) {
|
|
39
|
+
try {
|
|
40
|
+
return existsSync(candidate);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function existingPath(candidate) {
|
|
47
|
+
return pathExists(candidate) ? candidate : null;
|
|
48
|
+
}
|
|
49
|
+
function commandExistsOnPath(command, environment = process.env) {
|
|
50
|
+
return executableOnPath(command, environment) !== null;
|
|
51
|
+
}
|
|
52
|
+
function executableOnPath(command, environment = process.env) {
|
|
53
|
+
const pathEnvironment = environment.PATH ?? "";
|
|
54
|
+
const separator = process.platform === "win32" ? ";" : ":";
|
|
55
|
+
for (const directory of pathEnvironment.split(separator)) {
|
|
56
|
+
if (directory.length === 0)
|
|
57
|
+
continue;
|
|
58
|
+
const candidate = path.join(directory, command);
|
|
59
|
+
if (pathExists(candidate))
|
|
60
|
+
return candidate;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
function kernelSupportsLandlockAbi() {
|
|
65
|
+
const [majorText, minorText] = os.release().split(".");
|
|
66
|
+
const major = Number(majorText);
|
|
67
|
+
const minor = Number(minorText);
|
|
68
|
+
if (!Number.isFinite(major) || !Number.isFinite(minor))
|
|
69
|
+
return false;
|
|
70
|
+
return major > 5 || (major === 5 && minor >= 13);
|
|
71
|
+
}
|
|
72
|
+
const BUBBLEWRAP_NAMESPACE_PROBE_TIMEOUT_MS = 5_000;
|
|
73
|
+
/**
|
|
74
|
+
* Execution-level evidence: actually unshare every required namespace class
|
|
75
|
+
* through bwrap itself instead of trusting static filesystem evidence. A
|
|
76
|
+
* process that already has its own namespace handles (every process does)
|
|
77
|
+
* says nothing about whether creating *new* ones is permitted here.
|
|
78
|
+
*/
|
|
79
|
+
function probeBubblewrapNamespaceSupport(hasBwrap) {
|
|
80
|
+
if (!hasBwrap)
|
|
81
|
+
return false;
|
|
82
|
+
const bwrap = executableOnPath("bwrap");
|
|
83
|
+
if (bwrap === null)
|
|
84
|
+
return false;
|
|
85
|
+
try {
|
|
86
|
+
execFileSync(bwrap, ["--unshare-user", "--unshare-pid", "--unshare-ipc", "--unshare-uts", "--ro-bind", "/", "/", "true"], { stdio: ["ignore", "ignore", "ignore"], timeout: BUBBLEWRAP_NAMESPACE_PROBE_TIMEOUT_MS });
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Local kernel/runtime capability probes. Required namespace support is
|
|
95
|
+
* verified by an actual bubblewrap execution probe; optional capabilities
|
|
96
|
+
* remain best-effort static filesystem evidence since they never gate
|
|
97
|
+
* `ready`.
|
|
98
|
+
*/
|
|
99
|
+
export const defaultSandboxProbe = Object.freeze({
|
|
100
|
+
platform: () => process.platform,
|
|
101
|
+
uid: () => (typeof process.getuid === "function" ? process.getuid() : null),
|
|
102
|
+
gid: () => (typeof process.getgid === "function" ? process.getgid() : null),
|
|
103
|
+
hasBubblewrap: () => commandExistsOnPath("bwrap"),
|
|
104
|
+
hasNamespaceSupport: () => probeBubblewrapNamespaceSupport(commandExistsOnPath("bwrap")),
|
|
105
|
+
hasCgroupsV2: () => pathExists("/sys/fs/cgroup/cgroup.controllers"),
|
|
106
|
+
hasLandlock: () => pathExists("/sys/kernel/security/landlock") || kernelSupportsLandlockAbi(),
|
|
107
|
+
hasSeccomp: () => pathExists("/proc/sys/kernel/seccomp"),
|
|
108
|
+
hasCapabilities: () => pathExists("/proc/self/status"),
|
|
109
|
+
});
|
|
110
|
+
/**
|
|
111
|
+
* user_namespaces/mount_namespaces/pid_namespace/ipc_namespace/uts_namespace
|
|
112
|
+
* are reported as distinct capability ids for machine-readability, but all
|
|
113
|
+
* five share one execution-level probe: bwrap needs every one of them
|
|
114
|
+
* together to sandbox anything, so proving them together is what the
|
|
115
|
+
* doctor's `ready` signal actually needs.
|
|
116
|
+
*/
|
|
117
|
+
const CAPABILITY_PROBE = Object.freeze({
|
|
118
|
+
bubblewrap: (probe) => probe.hasBubblewrap(),
|
|
119
|
+
user_namespaces: (probe) => probe.hasNamespaceSupport(),
|
|
120
|
+
mount_namespaces: (probe) => probe.hasNamespaceSupport(),
|
|
121
|
+
pid_namespace: (probe) => probe.hasNamespaceSupport(),
|
|
122
|
+
ipc_namespace: (probe) => probe.hasNamespaceSupport(),
|
|
123
|
+
uts_namespace: (probe) => probe.hasNamespaceSupport(),
|
|
124
|
+
cgroups_v2: (probe) => probe.hasCgroupsV2(),
|
|
125
|
+
landlock: (probe) => probe.hasLandlock(),
|
|
126
|
+
seccomp: (probe) => probe.hasSeccomp(),
|
|
127
|
+
capabilities: (probe) => probe.hasCapabilities(),
|
|
128
|
+
});
|
|
129
|
+
const NAMESPACE_CAPABILITIES = new Set([
|
|
130
|
+
"user_namespaces",
|
|
131
|
+
"mount_namespaces",
|
|
132
|
+
"pid_namespace",
|
|
133
|
+
"ipc_namespace",
|
|
134
|
+
"uts_namespace",
|
|
135
|
+
]);
|
|
136
|
+
const CAPABILITY_LABEL = Object.freeze({
|
|
137
|
+
bubblewrap: "The bwrap executable",
|
|
138
|
+
user_namespaces: "Linux user namespaces",
|
|
139
|
+
mount_namespaces: "Linux mount namespaces",
|
|
140
|
+
pid_namespace: "Linux PID namespace isolation",
|
|
141
|
+
ipc_namespace: "Linux IPC namespace isolation",
|
|
142
|
+
uts_namespace: "Linux UTS namespace isolation",
|
|
143
|
+
cgroups_v2: "The unified cgroups v2 hierarchy",
|
|
144
|
+
landlock: "The Landlock LSM ABI",
|
|
145
|
+
seccomp: "seccomp filtering",
|
|
146
|
+
capabilities: "Linux capability-set inspection",
|
|
147
|
+
});
|
|
148
|
+
function capabilityCheck(id, requirement, platformSupported, probe, namespaceSupport) {
|
|
149
|
+
const label = CAPABILITY_LABEL[id];
|
|
150
|
+
if (!platformSupported) {
|
|
151
|
+
return {
|
|
152
|
+
id,
|
|
153
|
+
requirement,
|
|
154
|
+
status: "not_applicable",
|
|
155
|
+
code: "SANDBOX_UNSUPPORTED_PLATFORM",
|
|
156
|
+
message: `${label} was not evaluated because the platform does not support Nawabari sandbox execution.`,
|
|
157
|
+
details: {},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const available = NAMESPACE_CAPABILITIES.has(id) ? namespaceSupport : CAPABILITY_PROBE[id](probe);
|
|
161
|
+
return {
|
|
162
|
+
id,
|
|
163
|
+
requirement,
|
|
164
|
+
status: available ? "available" : "unavailable",
|
|
165
|
+
code: available ? null : "SANDBOX_CAPABILITY_UNAVAILABLE",
|
|
166
|
+
message: available ? `${label} is available.` : `${label} is not available.`,
|
|
167
|
+
details: {},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Pure, side-effect-free capability/doctor inspection. Always returns a
|
|
172
|
+
* report; it never throws and never selects an unsandboxed path itself.
|
|
173
|
+
*/
|
|
174
|
+
export function sandboxDoctorReport(probe = defaultSandboxProbe) {
|
|
175
|
+
const platform = probe.platform();
|
|
176
|
+
const platformSupported = platform === SANDBOX_SUPPORTED_PLATFORM;
|
|
177
|
+
const namespaceSupport = platformSupported && probe.hasNamespaceSupport();
|
|
178
|
+
const capabilities = [
|
|
179
|
+
...SANDBOX_REQUIRED_CAPABILITIES.map((id) => capabilityCheck(id, "required", platformSupported, probe, namespaceSupport)),
|
|
180
|
+
...SANDBOX_OPTIONAL_CAPABILITIES.map((id) => capabilityCheck(id, "optional", platformSupported, probe, namespaceSupport)),
|
|
181
|
+
];
|
|
182
|
+
const missingRequired = capabilities
|
|
183
|
+
.filter((entry) => entry.requirement === "required" && entry.status !== "available")
|
|
184
|
+
.map((entry) => entry.id);
|
|
185
|
+
return {
|
|
186
|
+
schema_version: SANDBOX_CONTRACT_SCHEMA_VERSION,
|
|
187
|
+
contract_id: SANDBOX_CONTRACT_ID,
|
|
188
|
+
platform,
|
|
189
|
+
platform_supported: platformSupported,
|
|
190
|
+
network_mode: "inherited",
|
|
191
|
+
capabilities,
|
|
192
|
+
ready: platformSupported && missingRequired.length === 0,
|
|
193
|
+
missing_required: missingRequired,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Discover only paths from the fixed standalone-Linux and NixOS layouts.
|
|
198
|
+
* `/usr` is a conditional standalone input, never the assumed root of the
|
|
199
|
+
* runtime; NixOS paths are selected when they actually exist.
|
|
200
|
+
*/
|
|
201
|
+
export function discoverSandboxRuntimeLayout(environment = process.env) {
|
|
202
|
+
const candidateHome = environment.HOME ?? null;
|
|
203
|
+
const home = candidateHome !== null && path.isAbsolute(candidateHome) && !candidateHome.includes("\0") ? candidateHome : null;
|
|
204
|
+
const user = environment.USER ?? environment.LOGNAME ?? null;
|
|
205
|
+
const perUserProfile = user === null ? null : `/etc/profiles/per-user/${user}`;
|
|
206
|
+
return {
|
|
207
|
+
bubblewrap: executableOnPath("bwrap", environment),
|
|
208
|
+
user_home: home,
|
|
209
|
+
user_local_bin: home === null ? null : existingPath(path.join(home, ".local", "bin")),
|
|
210
|
+
user_local_lib: home === null ? null : existingPath(path.join(home, ".local", "lib")),
|
|
211
|
+
user_pnpm_bin: home === null ? null : existingPath(path.join(home, ".local", "share", "pnpm")),
|
|
212
|
+
nix_store: existingPath("/nix/store"),
|
|
213
|
+
nix_current_system: existingPath("/run/current-system"),
|
|
214
|
+
nix_wrappers: existingPath("/run/wrappers"),
|
|
215
|
+
nix_user_profile: perUserProfile === null ? null : existingPath(perUserProfile),
|
|
216
|
+
usr: existingPath("/usr"),
|
|
217
|
+
bin: existingPath("/bin"),
|
|
218
|
+
lib: existingPath("/lib"),
|
|
219
|
+
lib64: existingPath("/lib64"),
|
|
220
|
+
passwd: existingPath("/etc/passwd"),
|
|
221
|
+
group: existingPath("/etc/group"),
|
|
222
|
+
nsswitch: existingPath("/etc/nsswitch.conf"),
|
|
223
|
+
hosts: existingPath("/etc/hosts"),
|
|
224
|
+
resolv_conf: existingPath("/etc/resolv.conf"),
|
|
225
|
+
alternatives: existingPath("/etc/alternatives"),
|
|
226
|
+
ssl_certs: existingPath("/etc/ssl"),
|
|
227
|
+
pki_certs: existingPath("/etc/pki"),
|
|
228
|
+
ca_certificates: existingPath("/etc/ca-certificates"),
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function nonNullPaths(paths) {
|
|
232
|
+
return paths.filter((candidate) => candidate !== null);
|
|
233
|
+
}
|
|
234
|
+
function sandboxRuntimePaths(layout) {
|
|
235
|
+
return [
|
|
236
|
+
"/dev",
|
|
237
|
+
"/proc",
|
|
238
|
+
"/tmp",
|
|
239
|
+
...nonNullPaths([layout.nix_store, layout.nix_current_system, layout.nix_wrappers, layout.nix_user_profile]),
|
|
240
|
+
];
|
|
241
|
+
}
|
|
242
|
+
function sandboxSystemPaths(layout) {
|
|
243
|
+
return nonNullPaths([
|
|
244
|
+
layout.usr,
|
|
245
|
+
layout.bin,
|
|
246
|
+
layout.lib,
|
|
247
|
+
layout.lib64,
|
|
248
|
+
layout.passwd,
|
|
249
|
+
layout.group,
|
|
250
|
+
layout.nsswitch,
|
|
251
|
+
layout.hosts,
|
|
252
|
+
layout.resolv_conf,
|
|
253
|
+
layout.alternatives,
|
|
254
|
+
layout.ssl_certs,
|
|
255
|
+
layout.pki_certs,
|
|
256
|
+
layout.ca_certificates,
|
|
257
|
+
]);
|
|
258
|
+
}
|
|
259
|
+
function deriveGitObjectsPath(repository, worktree) {
|
|
260
|
+
try {
|
|
261
|
+
const worktreeGitPath = path.join(worktree, ".git");
|
|
262
|
+
const gitEntry = readFileSync(worktreeGitPath, "utf8").trim();
|
|
263
|
+
const gitDirectory = gitEntry.startsWith("gitdir:")
|
|
264
|
+
? path.resolve(worktree, gitEntry.slice("gitdir:".length).trim())
|
|
265
|
+
: worktreeGitPath;
|
|
266
|
+
const commonDirFile = path.join(gitDirectory, "commondir");
|
|
267
|
+
const commonDirectory = existsSync(commonDirFile)
|
|
268
|
+
? path.resolve(gitDirectory, readFileSync(commonDirFile, "utf8").trim())
|
|
269
|
+
: gitDirectory;
|
|
270
|
+
const objects = path.join(commonDirectory, "objects");
|
|
271
|
+
if (existsSync(objects))
|
|
272
|
+
return objects;
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
// The guard has already established the session's physical authority;
|
|
276
|
+
// retain a deterministic fallback for unusual non-linked Git layouts.
|
|
277
|
+
}
|
|
278
|
+
return path.join(repository, ".git", "objects");
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Typed filesystem topology derived from the authoritative repository common
|
|
282
|
+
* Git directory and the resolved session identity only; callers cannot
|
|
283
|
+
* inject arbitrary mount paths through this contract.
|
|
284
|
+
*/
|
|
285
|
+
function deriveFilesystemTopology(repository, worktree, sessionId, runtimeLayout) {
|
|
286
|
+
const sandboxStateRoot = path.join(repository, "nawabari", "sandbox", sessionId);
|
|
287
|
+
return {
|
|
288
|
+
owned_worktree: worktree,
|
|
289
|
+
home: path.join(sandboxStateRoot, "home"),
|
|
290
|
+
cache: path.join(sandboxStateRoot, "cache"),
|
|
291
|
+
persistent_home: path.join(repository, "nawabari", "sandbox", "shared-home"),
|
|
292
|
+
git_metadata: path.join(sandboxStateRoot, "git"),
|
|
293
|
+
git_objects: deriveGitObjectsPath(repository, worktree),
|
|
294
|
+
user_tool_paths: nonNullPaths([
|
|
295
|
+
runtimeLayout.user_local_bin,
|
|
296
|
+
runtimeLayout.user_local_lib,
|
|
297
|
+
runtimeLayout.user_pnpm_bin,
|
|
298
|
+
]),
|
|
299
|
+
user_tool_home: runtimeLayout.user_home,
|
|
300
|
+
runtime_paths: sandboxRuntimePaths(runtimeLayout),
|
|
301
|
+
system_paths: sandboxSystemPaths(runtimeLayout),
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
function resolveIdentity(probe) {
|
|
305
|
+
return {
|
|
306
|
+
real_uid: probe.uid(),
|
|
307
|
+
real_gid: probe.gid(),
|
|
308
|
+
namespace_uid: 0,
|
|
309
|
+
namespace_gid: 0,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Resolve one typed sandbox execution request for a single, already
|
|
314
|
+
* authoritative Nawabari session. Repository/worktree/branch/session
|
|
315
|
+
* identity is derived exclusively from `backend.guard`, the same
|
|
316
|
+
* registry/guard authority every other governed operation uses; this
|
|
317
|
+
* function does not re-verify Git or registry state on its own.
|
|
318
|
+
*
|
|
319
|
+
* When `options.enforce` is true and required sandbox capabilities are
|
|
320
|
+
* unavailable (including an unsupported platform), resolution fails closed:
|
|
321
|
+
* it never returns a request that silently downgrades to the legacy
|
|
322
|
+
* unsandboxed path.
|
|
323
|
+
*/
|
|
324
|
+
export async function resolveSandboxExecutionRequest(backend, context, options, probe = defaultSandboxProbe, runtimeLayout = discoverSandboxRuntimeLayout()) {
|
|
325
|
+
const guardResult = await backend.guard(context, { session_id: options.session_id });
|
|
326
|
+
if (!guardResult.ok)
|
|
327
|
+
return failure(guardResult.error);
|
|
328
|
+
const decision = guardResult.value;
|
|
329
|
+
if (!decision.allowed || decision.session_id === null || decision.branch === null) {
|
|
330
|
+
const code = decision.code === "ALLOWED" ? "OPERATION_REJECTED" : decision.code;
|
|
331
|
+
return failure(new DomainError(code, `Sandbox execution request was denied by the Nawabari session guard: ${code}.`, {
|
|
332
|
+
guard: decision,
|
|
333
|
+
}));
|
|
334
|
+
}
|
|
335
|
+
const doctor = sandboxDoctorReport(probe);
|
|
336
|
+
if (options.enforce && !doctor.ready) {
|
|
337
|
+
const code = doctor.platform_supported
|
|
338
|
+
? "SANDBOX_CAPABILITY_UNAVAILABLE"
|
|
339
|
+
: "SANDBOX_UNSUPPORTED_PLATFORM";
|
|
340
|
+
return failure(new DomainError(code, "Sandbox execution was required but could not be established; the legacy unsandboxed path was not selected.", {
|
|
341
|
+
session_id: decision.session_id,
|
|
342
|
+
platform: doctor.platform,
|
|
343
|
+
platform_supported: doctor.platform_supported,
|
|
344
|
+
missing_required: doctor.missing_required,
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
return success({
|
|
348
|
+
schema_version: SANDBOX_CONTRACT_SCHEMA_VERSION,
|
|
349
|
+
contract_id: SANDBOX_CONTRACT_ID,
|
|
350
|
+
enforce: options.enforce,
|
|
351
|
+
session_id: decision.session_id,
|
|
352
|
+
repository: decision.repository,
|
|
353
|
+
worktree: decision.worktree,
|
|
354
|
+
branch: decision.branch,
|
|
355
|
+
network_mode: doctor.network_mode,
|
|
356
|
+
sandbox_executable: runtimeLayout.bubblewrap,
|
|
357
|
+
identity: resolveIdentity(probe),
|
|
358
|
+
filesystem: deriveFilesystemTopology(decision.repository, decision.worktree, decision.session_id, runtimeLayout),
|
|
359
|
+
required_capabilities: [...SANDBOX_REQUIRED_CAPABILITIES],
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
export { compileSandboxInvocation, runSandboxedCommand, } from "./sandbox-launcher.js";
|
|
363
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/domain/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type SessionRegistryOptions } from "../session-registry.js";
|
|
2
2
|
import { type DomainResult } from "./errors.js";
|
|
3
|
-
import { type BackendCapabilities, type CheckpointEvidence, type CheckpointOptions, type CommitOptions, type CommitResult, type ClaimResourcesOptions, type ClaimResourcesResult, type GarbageCollectOptions, type GarbageCollectResult, type GuardDecision, type GuardOptions, type OperationAuthorizationDecision, type OperationAuthorizationOptions, type PushOptions, type PushResult, type SessionBackend, type SessionCloseOptions, type SessionCloseResult, type SessionContext, type SessionCreateOptions, type SessionListResult, type SessionRecord, type ReleaseClaimsOptions, type ReleaseClaimsResult, type ResourceClaim, type StatusResult, type UpdateClaimsOptions } from "./session.js";
|
|
3
|
+
import { type BackendCapabilities, type CheckpointEvidence, type CheckpointOptions, type RepositoryDiffEvidence, type RepositoryDiffOptions, type RepositoryEvidence, type RepositoryEvidenceOptions, type CommitOptions, type CommitResult, type ClaimResourcesOptions, type ClaimResourcesResult, type GarbageCollectOptions, type GarbageCollectResult, type GuardDecision, type GuardOptions, type OperationAuthorizationDecision, type OperationAuthorizationOptions, type PushOptions, type PushResult, type SessionBackend, type SessionCloseOptions, type SessionCloseResult, type SessionContext, type SessionCreateOptions, type SessionListResult, type SessionListOptions, type SessionRecord, type ReleaseClaimsOptions, type ReleaseClaimsResult, type ResourceClaim, type StatusResult, type UpdateClaimsOptions } from "./session.js";
|
|
4
4
|
export interface LocalSessionBackendOptions {
|
|
5
5
|
readonly git?: SessionRegistryOptions["git"];
|
|
6
6
|
readonly registry?: Omit<SessionRegistryOptions, "cwd" | "git">;
|
|
@@ -17,10 +17,12 @@ export declare class LocalSessionBackend implements SessionBackend {
|
|
|
17
17
|
guard(context: SessionContext, options: GuardOptions): Promise<DomainResult<GuardDecision>>;
|
|
18
18
|
authorizeOperation(context: SessionContext, options: OperationAuthorizationOptions): Promise<DomainResult<OperationAuthorizationDecision>>;
|
|
19
19
|
checkpoint(context: SessionContext, options: CheckpointOptions): Promise<DomainResult<CheckpointEvidence>>;
|
|
20
|
+
repositoryEvidence(context: SessionContext, options: RepositoryEvidenceOptions): Promise<DomainResult<RepositoryEvidence>>;
|
|
21
|
+
repositoryDiff(context: SessionContext, options: RepositoryDiffOptions): Promise<DomainResult<RepositoryDiffEvidence>>;
|
|
20
22
|
commit(context: SessionContext, options: CommitOptions): Promise<DomainResult<CommitResult>>;
|
|
21
23
|
push(context: SessionContext, options: PushOptions): Promise<DomainResult<PushResult>>;
|
|
22
|
-
listSessions(context: SessionContext): Promise<DomainResult<SessionListResult>>;
|
|
23
|
-
status(context: SessionContext): Promise<DomainResult<StatusResult>>;
|
|
24
|
+
listSessions(context: SessionContext, options?: SessionListOptions): Promise<DomainResult<SessionListResult>>;
|
|
25
|
+
status(context: SessionContext, options?: SessionListOptions): Promise<DomainResult<StatusResult>>;
|
|
24
26
|
closeSession(context: SessionContext, options: SessionCloseOptions): Promise<DomainResult<SessionCloseResult>>;
|
|
25
27
|
garbageCollect(context: SessionContext, options: GarbageCollectOptions): Promise<DomainResult<GarbageCollectResult>>;
|
|
26
28
|
claimResources(context: SessionContext, options: ClaimResourcesOptions): Promise<DomainResult<ClaimResourcesResult>>;
|