codex-computer-use-mcp 0.1.0 → 0.3.0
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/ARCHITECTURE.md +150 -0
- package/CONTRIBUTING.md +16 -10
- package/MIGRATION.md +94 -0
- package/PROOF.md +128 -54
- package/README.md +97 -115
- package/SECURITY.md +45 -22
- package/dist/audit.d.ts +15 -14
- package/dist/audit.js +1 -1
- package/dist/audit.js.map +1 -1
- package/dist/config.d.ts +8 -8
- package/dist/config.js +8 -103
- package/dist/config.js.map +1 -1
- package/dist/direct-broker.d.ts +71 -0
- package/dist/direct-broker.js +652 -0
- package/dist/direct-broker.js.map +1 -0
- package/dist/direct-service.d.ts +33 -0
- package/dist/direct-service.js +350 -0
- package/dist/direct-service.js.map +1 -0
- package/dist/lock.d.ts +1 -0
- package/dist/lock.js +32 -3
- package/dist/lock.js.map +1 -1
- package/dist/mcp-elicitation.d.ts +8 -0
- package/dist/mcp-elicitation.js +47 -0
- package/dist/mcp-elicitation.js.map +1 -0
- package/dist/mcp-server.js +43 -100
- package/dist/mcp-server.js.map +1 -1
- package/dist/system.d.ts +0 -1
- package/dist/system.js +12 -37
- package/dist/system.js.map +1 -1
- package/dist/tools.d.ts +84 -0
- package/dist/tools.js +262 -0
- package/dist/tools.js.map +1 -0
- package/docs/adr/0001-standalone-code-mode-mcp.md +45 -0
- package/integrations/pi/README.md +51 -27
- package/integrations/pi/index.ts +237 -125
- package/integrations/pi/mcp.json.example +3 -3
- package/npm-shrinkwrap.json +3275 -48
- package/package.json +41 -13
- package/dist/policy.d.ts +0 -42
- package/dist/policy.js +0 -428
- package/dist/policy.js.map +0 -1
- package/dist/prompt.d.ts +0 -62
- package/dist/prompt.js +0 -119
- package/dist/prompt.js.map +0 -1
- package/dist/runner.d.ts +0 -55
- package/dist/runner.js +0 -494
- package/dist/runner.js.map +0 -1
- package/dist/service.d.ts +0 -17
- package/dist/service.js +0 -382
- package/dist/service.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-broker.js","sourceRoot":"","sources":["../src/direct-broker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAuC,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACN,+BAA+B,EAC/B,gBAAgB,GAGhB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG,oDAAoD,CAAC;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GACpC,0FAA0F,CAAC;AAC5F,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,wBAAwB,6GAA6G,CAAC;AACjL,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,uBAAuB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAiD1C,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACjD,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACvC,CAAC;CACD;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,eAAe,CAAU;IACzB,WAAW,CAAS;IACpB,iBAAiB,CAAS;IAC1B,eAAe,CAAU;IACzB,mBAAmB,CAAS;IAC5B,aAAa,CAAS;IACtB,WAAW,CAAS;IAC7B,YACC,OAAe,EACf,eAAwB,EACxB,KAAe,EACf,QAAQ,GAOJ,EAAE;QAEN,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,KAAK,CAAC;QACzD,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,IAAI,SAAS,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,SAAS,CAAC;IACtD,CAAC;CACD;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;QACnF,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,qCAAqC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7H,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE;QAClF,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,KAAK,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,cAAc,EAAE,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,uBAAuB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,4CAA4C,CAAC,CAAC;IAC7G,CAAC;AACF,CAAC;AAED,SAAS,WAAW;IACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CACtB,wBAAwB,EACxB,wBAAwB,EACxB,UAAU,EACV,YAAY,CACZ,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;QAC1F,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACb,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,uBAAuB,CAAC,yDAAyD,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,0BAA0B;IACzC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/B,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,uBAAuB,CAAC,2DAA2D,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,QAAgB;IAC1D,MAAM,GAAG,GAAsB;QAC9B,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;KACb,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACtF,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAM,GAAG,wBAAwB;IACzE,MAAM,QAAQ,GAAG,iCAAiC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,uEAAuE,CAAC;IACnN,MAAM,gBAAgB,GAAG,wNAAwN,CAAC;IAClP,OAAO;QACN,IAAI,EAAE,kCAAkC;QACxC,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,mCAAmC,gBAAgB,EAAE;QAC3D,IAAI,EAAE,2BAA2B;QACjC,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,kCAAkC;QACxC,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,+BAA+B;QACrC,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,eAAe,QAAQ,EAAE;QAC/B,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,SAAS;KACvB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC9C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CACtD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,KAAc;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAe;IACzC,MAAM,IAAI,GAAI,MAAc,EAAE,IAAI,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,8CAA8C,CAAC,CAAC;IAC5G,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,cAAc,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAM,IAAI,uBAAuB,CAAC,oDAAoD,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,uBAAuB,CAAC,wEAAwE,CAAC,CAAC;IAC7G,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,QAAQ,EAAE,WAAW,IAAI,QAAQ,EAAE,YAAY,CAAC;QAC/D,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,+BAA+B,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,uBAAuB,CAAC,4CAA4C,MAAM,4BAA4B,CAAC,CAAC;QACnH,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IAKrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACrI,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC5I,MAAM,OAAO,GAAG,MAAM,CAAC,OAAyC,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YACjH,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACpI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;YACnG,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC;QACJ,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACpH,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,YAAY,GAAG,gBAAgB;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACpH,OAAO;QACN,OAAO;QACP,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;KAChC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IACjC,IAAI,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACrB,OAAO,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IAChC,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACtC,IAAI,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACrB,OAAO,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IAChC,CAAC;AACF,CAAC;AAED,MAAM,uBAAwB,SAAQ,KAAK;IACjC,WAAW,CAAc;IAClC,YAAY,OAAe,EAAE,WAAwB,EAAE,KAAe;QACrE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;CACD;AAED,SAAS,kBAAkB,CAAC,OAAe,EAAE,wBAAwB,GAAG,gBAAgB;IACvF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,WAAW,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAC7B,MAAM,IAAI,uBAAuB,CAAC,6DAA6D,EAAE,WAAW,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAChH,IACC,MAAM,CAAC,KAAK;eACT,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;eAC5C,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAClE,CAAC;YACF,MAAM,IAAI,uBAAuB,CAAC,0DAA0D,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1H,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACxG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe,EAAE,oBAAoB,GAAG,gBAAgB;IACxF,MAAM,MAAM,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE;QACzF,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI;KACb,CAAC,CAAC;IACH,IACC,MAAM,CAAC,KAAK;WACT,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;WAC5C,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAClE,CAAC;QACF,MAAM,IAAI,uBAAuB,CAAC,6EAA6E,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3I,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,cAAc,CAC5B,IAAgD,EAChD,OAAe,EACf,wBAAwB,GAAG,gBAAgB,EAC3C,oBAAoB,GAAG,gBAAgB;IAEvC,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC;IACtB,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,YAA+B,CAAC;IACpC,MAAM,SAAS,GAAG,GAAgB,EAAE;QACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,IAAI,CAAC;YACJ,KAAK,MAAM,KAAK,IAAI,kBAAkB,CAAC,GAAG,EAAE,wBAAwB,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW;oBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YACD,YAAY,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC;YACJ,KAAK,MAAM,KAAK,IAAI,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW;oBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YACD,YAAY,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;QAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAExD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC9B,UAAU,GAAG,IAAI,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACR,IAAI,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,YAAY,IAAI,CAAC,UAAU;QAAE,YAAY,KAAK,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAEvH,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvB,KAAK,GAAG,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;YACvC,MAAM,CAAC;gBAAC,IAAI,aAAa,CAAC,KAAK,CAAC;oBAAE,YAAY,KAAK,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAAC,CAAC;QAChH,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,MAAM;QAAC,CAAC;QACjD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,YAAY,KAAK,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAE1G,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,IAAI,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAAC,CAAC;IACrG,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,EAAE,CAAC;YACjC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC/D,CAAC;IACF,CAAC;IACD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM;QAChG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,CAAC;QAAC,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAAC,CAAC;IAC9E,OAAO,KAAK,EAAE,CAAC;QAAC,YAAY,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAAC,CAAC;IAC7F,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACrC,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxG,YAAY,KAAK,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,YAAY;QAAE,MAAM,YAAY,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,MAAoB,EACpB,IAAyB,EACzB,OAAO,GAAwB,EAAE;IAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,yBAAyB;QACrD,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE;QAClE,CAAC,CAAC,0BAA0B,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,MAAM,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE9B,IAAI,IAAgD,CAAC;IACrD,IAAI,aAAwC,CAAC;IAC7C,IAAI,WAAsC,CAAC;IAC3C,IAAI,YAAsC,CAAC;IAC3C,IAAI,UAA6B,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,WAA2C,CAAC;IAChD,IAAI,YAA+B,CAAC;IACpC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgG,CAAC;IACxH,MAAM,SAAS,GAAG,CAAC,KAAY,EAAQ,EAAE;QACxC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAkB,EAAE;QAC5C,WAAW,KAAK,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9G,OAAO,WAAW,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAY,EAAQ,EAAE;QACnC,UAAU,KAAK,KAAK,CAAC;QACrB,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,KAAK,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,OAAgB,EAAQ,EAAE;QACvC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,UAAkB,EAAE,MAAe,EAAE,SAAiB,EAAoB,EAAE;QAC5F,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC,CAAC;gBAC1E,KAAK,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAChD,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC;gBACJ,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnB,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,IAAI,UAAU,CAAC;QACvD,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE;YAClC,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,GAAG,EAAE,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC;SACxC,CAAC,CAAC;QACH,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YACvD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,KAAK,CAAC,6DAA6D,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QAC1H,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAQ,EAAE;YAClD,IAAI,OAAY,CAAC;YACjB,IAAI,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAC1C,IAAI,CAAC,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACR,CAAC;YACD,IAAI,OAAO,OAAO,EAAE,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBACvH,iBAAiB,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC,CAAC;gBACvG,OAAO;YACR,CAAC;YACD,IAAI,UAAU;gBAAE,OAAO;YACvB,IAAI,CAAC;gBACJ,IAAI,OAAO,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;oBAChJ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/C,IAAI,CAAC,MAAM;wBAAE,OAAO;oBACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,OAAO,CAAC,KAAK;wBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;wBACnH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACpC,OAAO;gBACR,CAAC;gBACD,IAAI,OAAO,EAAE,EAAE,IAAI,IAAI,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,+BAA+B,EAAE,CAAC;wBACxD,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAC;wBACzF,OAAO;oBACR,CAAC;oBACD,mBAAmB,IAAI,CAAC,CAAC;oBACzB,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;wBAC3G,CAAC,CAAC,OAAO,CAAC,MAAwC;wBAClD,CAAC,CAAC,EAAE,CAAC;oBACN,KAAK,CAAC,KAAK,IAAI,EAAE;wBAChB,IAAI,QAAQ,GAAoC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;wBACrE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;4BAC3B,IAAI,CAAC;gCACJ,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;gCAC7D,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;oCAAE,QAAQ,GAAG,SAAS,CAAC;4BACnG,CAAC;4BAAC,MAAM,CAAC;gCACR,QAAQ,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;4BACjC,CAAC;wBACF,CAAC;wBACD,IAAI,UAAU,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ;4BAAE,OAAO;wBAChD,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC5C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvF,OAAO;gBACR,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;QACF,CAAC,CAAC;QACF,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACzC,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,uBAAuB,EAAE,CAAC;oBAC5G,IAAI,CAAC,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC,CAAC;oBACnF,OAAO;gBACR,CAAC;gBACD,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;oBACpB,YAAY,IAAI,OAAO,CAAC;oBACxB,OAAO;gBACR,CAAC;gBACD,MAAM,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC;gBACpC,YAAY,GAAG,EAAE,CAAC;gBAClB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;YACtB,CAAC;QACF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC1B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAC/D,YAAY,GAAG,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,YAAY,GAAG,GAAG,EAAE;gBACnB,IAAI,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,YAAY,EAAE,CAAC;;gBACtC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,UAAU;YAAE,MAAM,UAAU,CAAC;QACjC,MAAM,OAAO,CACZ,YAAY,EACZ;YACC,UAAU,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,OAAO,EAAE;YACjG,YAAY,EAAE,EAAE,8BAA8B,EAAE,OAAO,CAAC,6BAA6B,KAAK,IAAI,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE;SACvI,EACD,MAAM,CACN,CAAC;QACF,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAChC,kFAAkF;QAClF,wFAAwF;QACxF,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAC7B,cAAc,EACd,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,wBAAwB,EAAE,EAChI,MAAM,CACN,CAAQ,CAAC;QACV,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE,EAAE,CAAC;QAC5B,IACC,OAAO,QAAQ,KAAK,QAAQ;eACzB,MAAM,CAAC,SAAS,KAAK,IAAI;eACzB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;eACrD,MAAM,CAAC,IAAI,KAAK,IAAI;eACpB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;eAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAC3B,CAAC;YACF,MAAM,IAAI,uBAAuB,CAAC,uEAAuE,CAAC,CAAC;QAC5G,CAAC;QACD,eAAe,GAAG,IAAI,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC9B,sBAAsB,EACtB,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,EACxC,MAAM,CACN,CAAC;QACF,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,OAAO,CACxB,qBAAqB,EACrB,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EACnE,OAAO,CAAC,SAAS,IAAI,OAAO,CAC5B,CAAC;QACF,WAAW,GAAG,CAAC,CAAC;QAChB,IAAI,iBAAiB,KAAK,CAAC;YAAE,MAAM,IAAI,uBAAuB,CAAC,yDAAyD,CAAC,CAAC;QAC1H,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,WAAW,GAAG;YACb,GAAG,MAAM;YACT,aAAa,EAAE,YAAY,CAAC,aAAa;YACzC,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,mBAAmB;YACnB,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,IAAI;YACrB,qBAAqB,EAAE,IAAI;SAC3B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,YAAY,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC/E,CAAC,CAAC,IAAI,KAAK,CAAC,wEAAwE,CAAC;YACrF,CAAC,CAAC,IAAI,CAAC;IACT,CAAC;YAAS,CAAC;QACV,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC9F,SAAS,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC;YACJ,MAAM,gBAAgB,EAAE,CAAC;YACzB,IAAI,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACpG,aAAc,CAAC,IAAI,CAAC,GAAG,EAAE;wBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;wBACpB,OAAO,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5D,IAAI,UAAU,IAAI,iBAAiB,KAAK,CAAC,EAAE,CAAC;gBAC3C,YAAY,GAAG,UAAU,IAAI,IAAI,uBAAuB,CAAC,yDAAyD,CAAC,CAAC;YACrH,CAAC;YACD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,eAAe,GAAG,IAAI,CAAC;QACxB,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACvB,YAAY,GAAG,IAAI,KAAK,CAAC,oDAAoD,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACzG,CAAC;IACF,CAAC;IACD,MAAM,eAAe,GAAG;QACvB,WAAW;QACX,iBAAiB;QACjB,eAAe;QACf,mBAAmB;QACnB,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,WAAW,EAAE,YAAY,CAAC,WAAW;KACrC,CAAC;IACF,IAAI,YAAY;QAAE,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IACxH,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,qBAAqB,CAAC,qDAAqD,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACtJ,OAAO,WAAW,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { callOfficialDirectTool, type DirectBrokerElicitationRequest, type DirectBrokerElicitationResponse } from "./direct-broker.ts";
|
|
2
|
+
import { acquireAppLock } from "./lock.ts";
|
|
3
|
+
import { frontmostBundleId, frontmostBundleIdAsync, resolveAppIdentity, watchTargetFrontmost } from "./system.ts";
|
|
4
|
+
import { type DirectMethod, type DirectToolArguments } from "./tools.ts";
|
|
5
|
+
export interface DirectRequest {
|
|
6
|
+
method: DirectMethod;
|
|
7
|
+
arguments: DirectToolArguments;
|
|
8
|
+
}
|
|
9
|
+
export interface DirectResponse {
|
|
10
|
+
ok: boolean;
|
|
11
|
+
isError: boolean;
|
|
12
|
+
content: Array<Record<string, unknown>>;
|
|
13
|
+
details: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export interface DirectServiceDependencies {
|
|
16
|
+
stateRoot?: string;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
onProgress?: (message: string) => void | Promise<void>;
|
|
19
|
+
onElicitation?: (request: DirectBrokerElicitationRequest) => DirectBrokerElicitationResponse | Promise<DirectBrokerElicitationResponse>;
|
|
20
|
+
supportsOpenAiFormElicitation?: boolean;
|
|
21
|
+
callTool?: typeof callOfficialDirectTool;
|
|
22
|
+
resolveIdentity?: typeof resolveAppIdentity;
|
|
23
|
+
frontmost?: typeof frontmostBundleId;
|
|
24
|
+
frontmostAsync?: typeof frontmostBundleIdAsync;
|
|
25
|
+
watchFocus?: typeof watchTargetFrontmost;
|
|
26
|
+
acquireLock?: typeof acquireAppLock;
|
|
27
|
+
}
|
|
28
|
+
export declare class DirectPolicyError extends Error {
|
|
29
|
+
constructor(message: string);
|
|
30
|
+
}
|
|
31
|
+
export declare function defaultStateRoot(): string;
|
|
32
|
+
export declare function executeDirectTool(raw: unknown, deps?: DirectServiceDependencies): Promise<DirectResponse>;
|
|
33
|
+
export declare function getDirectStatus(stateRoot?: string): Promise<Record<string, unknown>>;
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { appendAudit } from "./audit.js";
|
|
5
|
+
import { loadConfig } from "./config.js";
|
|
6
|
+
import { callOfficialDirectTool, DirectBrokerCallError, verifyOfficialDirectBroker, } from "./direct-broker.js";
|
|
7
|
+
import { acquireAppLock, globalAppLockRoot } from "./lock.js";
|
|
8
|
+
import { frontmostBundleId, frontmostBundleIdAsync, resolveAppIdentity, watchTargetFrontmost, } from "./system.js";
|
|
9
|
+
import { MUTATING_METHODS, OFFICIAL_METHODS, isDirectMethod, targetAppFor, validateDirectArguments, } from "./tools.js";
|
|
10
|
+
export class DirectPolicyError extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "DirectPolicyError";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function defaultStateRoot() {
|
|
17
|
+
return process.env.CODEX_COMPUTER_USE_HOME || path.join(homedir(), ".direct-computer-use");
|
|
18
|
+
}
|
|
19
|
+
function auditAppIdentifier(rawApp, identity) {
|
|
20
|
+
if (!rawApp)
|
|
21
|
+
return null;
|
|
22
|
+
if (identity?.bundleId)
|
|
23
|
+
return identity.bundleId;
|
|
24
|
+
return `target-sha256:${crypto.createHash("sha256").update(rawApp).digest("hex").slice(0, 16)}`;
|
|
25
|
+
}
|
|
26
|
+
function inputByteCount(args) {
|
|
27
|
+
try {
|
|
28
|
+
return Buffer.byteLength(JSON.stringify(args), "utf8");
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function contentMetadata(content) {
|
|
35
|
+
const types = [...new Set(content.map((item) => String(item.type ?? "unknown")))].sort();
|
|
36
|
+
let bytes = 0;
|
|
37
|
+
try {
|
|
38
|
+
bytes = Buffer.byteLength(JSON.stringify(content), "utf8");
|
|
39
|
+
}
|
|
40
|
+
catch { /* already validated by broker */ }
|
|
41
|
+
return { types, bytes };
|
|
42
|
+
}
|
|
43
|
+
function safeErrorMessage(error) {
|
|
44
|
+
const message = error instanceof Error ? error.message : "Direct Computer Use failed";
|
|
45
|
+
return message
|
|
46
|
+
.replace(/\/Users\/[^/\s]+/g, "~")
|
|
47
|
+
.replace(/https?:\/\/\S+/g, "[url]")
|
|
48
|
+
.replace(/[A-Za-z0-9_-]{32,}/g, "[redacted]")
|
|
49
|
+
.replace(/[\u0000-\u001f\u007f]+/g, " ")
|
|
50
|
+
.slice(0, 500);
|
|
51
|
+
}
|
|
52
|
+
function rejectedMetadata(raw) {
|
|
53
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
54
|
+
return { method: "invalid_request", inputBytes: 0, mutating: false };
|
|
55
|
+
const record = raw;
|
|
56
|
+
const method = typeof record.method === "string" && isDirectMethod(record.method) ? record.method : "invalid_request";
|
|
57
|
+
return {
|
|
58
|
+
method,
|
|
59
|
+
inputBytes: inputByteCount((record.arguments && typeof record.arguments === "object" ? record.arguments : {})),
|
|
60
|
+
mutating: method !== "invalid_request" && MUTATING_METHODS.has(method),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function authorizationFor(_mode, _method) {
|
|
64
|
+
return "no_permissions_unrestricted";
|
|
65
|
+
}
|
|
66
|
+
export async function executeDirectTool(raw, deps = {}) {
|
|
67
|
+
const stateRoot = deps.stateRoot ?? defaultStateRoot();
|
|
68
|
+
const runId = crypto.randomUUID();
|
|
69
|
+
const startedAt = Date.now();
|
|
70
|
+
const config = await loadConfig();
|
|
71
|
+
let request;
|
|
72
|
+
try {
|
|
73
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
74
|
+
throw new DirectPolicyError("Direct Computer Use request must be an object");
|
|
75
|
+
const record = raw;
|
|
76
|
+
if (typeof record.method !== "string" || !isDirectMethod(record.method))
|
|
77
|
+
throw new DirectPolicyError("Unknown direct Computer Use method");
|
|
78
|
+
const args = validateDirectArguments(record.method, record.arguments ?? {});
|
|
79
|
+
request = { method: record.method, arguments: args };
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
const rejected = rejectedMetadata(raw);
|
|
83
|
+
const record = {
|
|
84
|
+
timestamp: new Date().toISOString(),
|
|
85
|
+
runId,
|
|
86
|
+
method: rejected.method,
|
|
87
|
+
permissionMode: config.permissionMode,
|
|
88
|
+
app: null,
|
|
89
|
+
mutating: rejected.mutating,
|
|
90
|
+
authorization: "none",
|
|
91
|
+
inputBytes: rejected.inputBytes,
|
|
92
|
+
outcome: "policy_rejected",
|
|
93
|
+
durationMs: Date.now() - startedAt,
|
|
94
|
+
brokerVersion: null,
|
|
95
|
+
clientBuild: null,
|
|
96
|
+
directCalls: 0,
|
|
97
|
+
modelTurnsStarted: 0,
|
|
98
|
+
ephemeralThread: null,
|
|
99
|
+
elicitationRequests: 0,
|
|
100
|
+
backgroundPreserved: null,
|
|
101
|
+
brokerCleanupVerified: true,
|
|
102
|
+
appLeaseReleased: true,
|
|
103
|
+
resultContentTypes: [],
|
|
104
|
+
resultBytes: 0,
|
|
105
|
+
};
|
|
106
|
+
try {
|
|
107
|
+
await appendAudit(stateRoot, record);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
throw new Error("Direct Computer Use request was rejected, but secure audit logging failed");
|
|
111
|
+
}
|
|
112
|
+
if (error instanceof DirectPolicyError)
|
|
113
|
+
throw error;
|
|
114
|
+
throw new DirectPolicyError("Direct Computer Use arguments did not match the typed schema");
|
|
115
|
+
}
|
|
116
|
+
const rawApp = targetAppFor(request.method, request.arguments);
|
|
117
|
+
const identity = rawApp ? (deps.resolveIdentity ?? resolveAppIdentity)(rawApp) : undefined;
|
|
118
|
+
if (rawApp && !identity?.bundleId) {
|
|
119
|
+
const audit = {
|
|
120
|
+
timestamp: new Date().toISOString(), runId, method: request.method, permissionMode: config.permissionMode,
|
|
121
|
+
app: auditAppIdentifier(rawApp, identity), mutating: MUTATING_METHODS.has(request.method),
|
|
122
|
+
authorization: authorizationFor(config.permissionMode, request.method), inputBytes: inputByteCount(request.arguments),
|
|
123
|
+
outcome: "identity_rejected", durationMs: Date.now() - startedAt, brokerVersion: null, clientBuild: null,
|
|
124
|
+
directCalls: 0, modelTurnsStarted: 0, ephemeralThread: null, elicitationRequests: 0,
|
|
125
|
+
backgroundPreserved: null, brokerCleanupVerified: true, appLeaseReleased: true, resultContentTypes: [], resultBytes: 0,
|
|
126
|
+
};
|
|
127
|
+
try {
|
|
128
|
+
await appendAudit(stateRoot, audit);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
throw new Error("Direct Computer Use identity validation failed, and secure audit logging also failed");
|
|
132
|
+
}
|
|
133
|
+
throw new DirectPolicyError("Target app could not be resolved to a canonical installed bundle identifier");
|
|
134
|
+
}
|
|
135
|
+
const canonicalArgs = identity?.bundleId
|
|
136
|
+
? { ...request.arguments, app: identity.bundleId }
|
|
137
|
+
: { ...request.arguments };
|
|
138
|
+
let lock;
|
|
139
|
+
let watcher;
|
|
140
|
+
let focusTimer;
|
|
141
|
+
let focusSample;
|
|
142
|
+
let focusSamplingFailed = false;
|
|
143
|
+
let frontBefore;
|
|
144
|
+
let targetBecameFrontmost = false;
|
|
145
|
+
let unrelatedFocusChanges = false;
|
|
146
|
+
let broker;
|
|
147
|
+
let brokerFailure;
|
|
148
|
+
let brokerDispatchAttempted = false;
|
|
149
|
+
let outcome = "failed";
|
|
150
|
+
let brokerCleanupVerified = false;
|
|
151
|
+
let response;
|
|
152
|
+
let thrown;
|
|
153
|
+
try {
|
|
154
|
+
if (identity)
|
|
155
|
+
lock = await (deps.acquireLock ?? acquireAppLock)(globalAppLockRoot(), identity.leaseId, runId);
|
|
156
|
+
if (identity?.bundleId) {
|
|
157
|
+
frontBefore = (deps.frontmost ?? frontmostBundleId)();
|
|
158
|
+
if (!frontBefore)
|
|
159
|
+
throw new DirectPolicyError("Could not observe the frontmost app before direct dispatch");
|
|
160
|
+
if (frontBefore.toLowerCase() === identity.bundleId.toLowerCase()) {
|
|
161
|
+
throw new DirectPolicyError("Target app is already frontmost; direct background-only dispatch was refused");
|
|
162
|
+
}
|
|
163
|
+
watcher = await (deps.watchFocus ?? watchTargetFrontmost)();
|
|
164
|
+
const sample = async () => {
|
|
165
|
+
if (focusSample)
|
|
166
|
+
return focusSample;
|
|
167
|
+
focusSample = (async () => {
|
|
168
|
+
const current = await (deps.frontmostAsync ?? frontmostBundleIdAsync)();
|
|
169
|
+
if (!current)
|
|
170
|
+
return;
|
|
171
|
+
if (current.toLowerCase() === identity.bundleId.toLowerCase())
|
|
172
|
+
targetBecameFrontmost = true;
|
|
173
|
+
else if (current !== frontBefore)
|
|
174
|
+
unrelatedFocusChanges = true;
|
|
175
|
+
})().finally(() => { focusSample = undefined; });
|
|
176
|
+
return focusSample;
|
|
177
|
+
};
|
|
178
|
+
await sample().catch(() => { focusSamplingFailed = true; });
|
|
179
|
+
focusTimer = setInterval(() => {
|
|
180
|
+
void sample().catch(() => { focusSamplingFailed = true; });
|
|
181
|
+
}, 100);
|
|
182
|
+
focusTimer.unref();
|
|
183
|
+
}
|
|
184
|
+
await deps.onProgress?.(`Direct ${request.method}: verified target lease; calling the signed official tool without a model turn…`);
|
|
185
|
+
try {
|
|
186
|
+
brokerDispatchAttempted = true;
|
|
187
|
+
broker = await (deps.callTool ?? callOfficialDirectTool)(request.method, canonicalArgs, {
|
|
188
|
+
signal: deps.signal,
|
|
189
|
+
timeoutMs: 120_000,
|
|
190
|
+
onElicitation: deps.onElicitation,
|
|
191
|
+
supportsOpenAiFormElicitation: deps.supportsOpenAiFormElicitation,
|
|
192
|
+
});
|
|
193
|
+
brokerCleanupVerified = broker.brokerCleanupVerified;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
if (error instanceof DirectBrokerCallError) {
|
|
197
|
+
brokerFailure = error;
|
|
198
|
+
brokerCleanupVerified = error.cleanupVerified;
|
|
199
|
+
}
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
202
|
+
if (broker.modelTurnsStarted !== 0 || broker.ephemeralThread !== true) {
|
|
203
|
+
throw new DirectPolicyError("Direct broker violated the zero-model-turn architecture");
|
|
204
|
+
}
|
|
205
|
+
outcome = broker.isError ? "official_error" : "ok";
|
|
206
|
+
response = {
|
|
207
|
+
ok: !broker.isError,
|
|
208
|
+
isError: broker.isError,
|
|
209
|
+
content: broker.content,
|
|
210
|
+
details: {
|
|
211
|
+
runId,
|
|
212
|
+
method: request.method,
|
|
213
|
+
permissionMode: config.permissionMode,
|
|
214
|
+
app: identity?.bundleId ?? null,
|
|
215
|
+
outcome,
|
|
216
|
+
directCalls: 1,
|
|
217
|
+
modelTurnsStarted: 0,
|
|
218
|
+
ephemeralRuntimeContext: true,
|
|
219
|
+
elicitationRequests: broker.elicitationRequests,
|
|
220
|
+
brokerVersion: broker.brokerVersion,
|
|
221
|
+
clientBuild: broker.clientBuild,
|
|
222
|
+
durationMs: broker.durationMs,
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
outcome = error instanceof DirectPolicyError ? "policy_violation" : deps.signal?.aborted ? "cancelled" : "broker_failed";
|
|
228
|
+
if (!brokerDispatchAttempted)
|
|
229
|
+
brokerCleanupVerified = true;
|
|
230
|
+
thrown = new Error(safeErrorMessage(error));
|
|
231
|
+
}
|
|
232
|
+
finally {
|
|
233
|
+
if (focusTimer)
|
|
234
|
+
clearInterval(focusTimer);
|
|
235
|
+
if (focusSample)
|
|
236
|
+
await focusSample.catch(() => { focusSamplingFailed = true; });
|
|
237
|
+
let watcherFailed = focusSamplingFailed;
|
|
238
|
+
if (watcher) {
|
|
239
|
+
watcherFailed ||= !watcher.healthy();
|
|
240
|
+
try {
|
|
241
|
+
await watcher.stop();
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
watcherFailed = true;
|
|
245
|
+
}
|
|
246
|
+
if (identity?.bundleId)
|
|
247
|
+
targetBecameFrontmost ||= watcher.becameFrontmost(identity.bundleId);
|
|
248
|
+
}
|
|
249
|
+
if (identity?.bundleId) {
|
|
250
|
+
const frontAfter = (deps.frontmost ?? frontmostBundleId)();
|
|
251
|
+
if (!frontAfter)
|
|
252
|
+
watcherFailed = true;
|
|
253
|
+
else if (frontAfter.toLowerCase() === identity.bundleId.toLowerCase())
|
|
254
|
+
targetBecameFrontmost = true;
|
|
255
|
+
else if (frontBefore && frontAfter !== frontBefore)
|
|
256
|
+
unrelatedFocusChanges = true;
|
|
257
|
+
}
|
|
258
|
+
const backgroundPreserved = identity ? !targetBecameFrontmost && !watcherFailed : null;
|
|
259
|
+
if (identity && backgroundPreserved !== true && !thrown) {
|
|
260
|
+
outcome = "focus_violation";
|
|
261
|
+
thrown = new DirectPolicyError("Target focus changed or focus telemetry failed; the completed tool call is not trusted as background-safe");
|
|
262
|
+
response = undefined;
|
|
263
|
+
}
|
|
264
|
+
let releaseFailed = false;
|
|
265
|
+
try {
|
|
266
|
+
await lock?.release();
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
releaseFailed = true;
|
|
270
|
+
}
|
|
271
|
+
if (releaseFailed) {
|
|
272
|
+
outcome = "lease_cleanup_failed";
|
|
273
|
+
thrown = new Error("Direct Computer Use app lease did not release cleanly");
|
|
274
|
+
response = undefined;
|
|
275
|
+
}
|
|
276
|
+
const metadata = broker ? contentMetadata(broker.content) : { types: [], bytes: 0 };
|
|
277
|
+
const audit = {
|
|
278
|
+
timestamp: new Date().toISOString(),
|
|
279
|
+
runId,
|
|
280
|
+
method: request.method,
|
|
281
|
+
permissionMode: config.permissionMode,
|
|
282
|
+
app: auditAppIdentifier(rawApp, identity),
|
|
283
|
+
mutating: MUTATING_METHODS.has(request.method),
|
|
284
|
+
authorization: authorizationFor(config.permissionMode, request.method),
|
|
285
|
+
inputBytes: inputByteCount(canonicalArgs),
|
|
286
|
+
outcome,
|
|
287
|
+
durationMs: Date.now() - startedAt,
|
|
288
|
+
brokerVersion: broker?.brokerVersion ?? brokerFailure?.brokerVersion ?? null,
|
|
289
|
+
clientBuild: broker?.clientBuild ?? brokerFailure?.clientBuild ?? null,
|
|
290
|
+
directCalls: broker ? 1 : brokerFailure?.directCalls ?? 0,
|
|
291
|
+
modelTurnsStarted: broker?.modelTurnsStarted ?? brokerFailure?.modelTurnsStarted ?? 0,
|
|
292
|
+
ephemeralThread: broker?.ephemeralThread ?? brokerFailure?.ephemeralThread ?? null,
|
|
293
|
+
elicitationRequests: broker?.elicitationRequests ?? brokerFailure?.elicitationRequests ?? 0,
|
|
294
|
+
backgroundPreserved,
|
|
295
|
+
brokerCleanupVerified,
|
|
296
|
+
appLeaseReleased: !releaseFailed,
|
|
297
|
+
resultContentTypes: metadata.types,
|
|
298
|
+
resultBytes: metadata.bytes,
|
|
299
|
+
};
|
|
300
|
+
try {
|
|
301
|
+
await appendAudit(stateRoot, audit);
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
throw new Error(`Direct Computer Use ended with outcome ${outcome}, but secure audit logging failed`);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
if (thrown)
|
|
308
|
+
throw thrown;
|
|
309
|
+
if (!response)
|
|
310
|
+
throw new Error("Direct Computer Use ended without a result");
|
|
311
|
+
response.details.backgroundPreserved = identity ? true : null;
|
|
312
|
+
response.details.unrelatedFocusChanges = unrelatedFocusChanges;
|
|
313
|
+
response.details.brokerCleanupVerified = brokerCleanupVerified;
|
|
314
|
+
return response;
|
|
315
|
+
}
|
|
316
|
+
export async function getDirectStatus(stateRoot = defaultStateRoot()) {
|
|
317
|
+
const config = await loadConfig();
|
|
318
|
+
let brokerVerified = false;
|
|
319
|
+
let brokerVersion;
|
|
320
|
+
let clientBuild;
|
|
321
|
+
try {
|
|
322
|
+
({ brokerVersion, clientBuild } = verifyOfficialDirectBroker());
|
|
323
|
+
brokerVerified = true;
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Status remains readable without exposing local verification details.
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
stateRoot,
|
|
330
|
+
permissionMode: config.permissionMode,
|
|
331
|
+
brokerVerified,
|
|
332
|
+
...(brokerVersion ? { brokerVersion } : {}),
|
|
333
|
+
...(clientBuild ? { clientBuild } : {}),
|
|
334
|
+
officialElicitationsAuthoritative: true,
|
|
335
|
+
architecture: "official-codex-app-server-direct-mcp-tool-call",
|
|
336
|
+
nestedModel: false,
|
|
337
|
+
modelUsage: false,
|
|
338
|
+
ephemeralZeroTurnRuntimeContextRequired: true,
|
|
339
|
+
wrapperPermissionPrompts: false,
|
|
340
|
+
officialApprovalPolicy: "full-access",
|
|
341
|
+
officialAppApprovalHandling: "auto-approved-by-codex-full-access",
|
|
342
|
+
officialElicitationHandling: "forwarded-if-emitted",
|
|
343
|
+
wrapperAuthorization: "unrestricted",
|
|
344
|
+
availableMethods: [...OFFICIAL_METHODS],
|
|
345
|
+
supportedMethods: [...OFFICIAL_METHODS],
|
|
346
|
+
appLockRoot: globalAppLockRoot(),
|
|
347
|
+
auditPath: path.join(stateRoot, "audit", "direct-computer-use.jsonl"),
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=direct-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-service.js","sourceRoot":"","sources":["../src/direct-service.ts"],"names":[],"mappings":"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"}
|
package/dist/lock.d.ts
CHANGED
|
@@ -13,4 +13,5 @@ export interface AppLock {
|
|
|
13
13
|
owner: LockOwner;
|
|
14
14
|
release(): Promise<void>;
|
|
15
15
|
}
|
|
16
|
+
export declare function globalAppLockRoot(): string;
|
|
16
17
|
export declare function acquireAppLock(stateDir: string, app: string, runId: string, _staleAfterMs?: number): Promise<AppLock>;
|
package/dist/lock.js
CHANGED
|
@@ -1,15 +1,43 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
-
import { mkdir, open, readFile, rename, rm } from "node:fs/promises";
|
|
3
|
+
import { chmod, lstat, mkdir, open, readFile, rename, rm } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
export class AppBusyError extends Error {
|
|
6
6
|
owner;
|
|
7
7
|
constructor(app, owner) {
|
|
8
|
-
super(`${app} is already leased by another
|
|
8
|
+
super(`${app} is already leased by another direct Computer Use task; concurrent same-app access is blocked`);
|
|
9
9
|
this.name = "AppBusyError";
|
|
10
10
|
this.owner = owner;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
+
export function globalAppLockRoot() {
|
|
14
|
+
const uid = process.getuid?.();
|
|
15
|
+
if (!Number.isSafeInteger(uid))
|
|
16
|
+
throw new Error("Could not determine the current user for global app locking");
|
|
17
|
+
return path.join("/tmp", `codex-computer-use-mcp-${uid}`);
|
|
18
|
+
}
|
|
19
|
+
async function ensurePrivateDirectory(directory) {
|
|
20
|
+
try {
|
|
21
|
+
const info = await lstat(directory);
|
|
22
|
+
if (info.isSymbolicLink() || !info.isDirectory())
|
|
23
|
+
throw new Error("App-lock path must be a non-symlink directory");
|
|
24
|
+
if (process.getuid && info.uid !== process.getuid())
|
|
25
|
+
throw new Error("App-lock path must be owned by the current user");
|
|
26
|
+
if ((info.mode & 0o077) !== 0)
|
|
27
|
+
throw new Error("App-lock path permissions must be private");
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error?.code !== "ENOENT")
|
|
31
|
+
throw error;
|
|
32
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
33
|
+
const info = await lstat(directory);
|
|
34
|
+
if (info.isSymbolicLink() || !info.isDirectory())
|
|
35
|
+
throw new Error("App-lock path must be a non-symlink directory");
|
|
36
|
+
if (process.getuid && info.uid !== process.getuid())
|
|
37
|
+
throw new Error("App-lock path must be owned by the current user");
|
|
38
|
+
}
|
|
39
|
+
await chmod(directory, 0o700);
|
|
40
|
+
}
|
|
13
41
|
function lockKey(value) {
|
|
14
42
|
return crypto.createHash("sha256").update(value).digest("hex");
|
|
15
43
|
}
|
|
@@ -39,8 +67,9 @@ async function publishOwner(ownerPath, owner) {
|
|
|
39
67
|
}
|
|
40
68
|
}
|
|
41
69
|
export async function acquireAppLock(stateDir, app, runId, _staleAfterMs = 10 * 60_000) {
|
|
70
|
+
await ensurePrivateDirectory(stateDir);
|
|
42
71
|
const locksDir = path.join(stateDir, "locks");
|
|
43
|
-
await
|
|
72
|
+
await ensurePrivateDirectory(locksDir);
|
|
44
73
|
const key = lockKey(app);
|
|
45
74
|
const lockPath = path.join(locksDir, `${key}.lock`);
|
|
46
75
|
const ownerPath = path.join(locksDir, `${key}.owner.json`);
|
package/dist/lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RequestOptions } from "@modelcontextprotocol/sdk/shared/protocol.js";
|
|
2
|
+
import type { ElicitRequestParams, ElicitResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import type { DirectBrokerElicitationRequest, DirectBrokerElicitationResponse } from "./direct-broker.ts";
|
|
4
|
+
export interface McpElicitationClient {
|
|
5
|
+
elicitInput(params: ElicitRequestParams, options?: RequestOptions): Promise<ElicitResult>;
|
|
6
|
+
}
|
|
7
|
+
/** Forward a signed app-server elicitation over standard MCP without changing its meaning. */
|
|
8
|
+
export declare function forwardOfficialElicitationToMcpClient(client: McpElicitationClient, request: DirectBrokerElicitationRequest, signal?: AbortSignal): Promise<DirectBrokerElicitationResponse>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function isRecord(value) {
|
|
2
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
3
|
+
}
|
|
4
|
+
/** Forward a signed app-server elicitation over standard MCP without changing its meaning. */
|
|
5
|
+
export async function forwardOfficialElicitationToMcpClient(client, request, signal) {
|
|
6
|
+
let params;
|
|
7
|
+
if (request.mode === "url") {
|
|
8
|
+
if (typeof request.message !== "string"
|
|
9
|
+
|| typeof request.url !== "string"
|
|
10
|
+
|| typeof request.elicitationId !== "string")
|
|
11
|
+
return { action: "cancel" };
|
|
12
|
+
params = {
|
|
13
|
+
mode: "url",
|
|
14
|
+
message: request.message,
|
|
15
|
+
url: request.url,
|
|
16
|
+
elicitationId: request.elicitationId,
|
|
17
|
+
...(isRecord(request._meta) ? { _meta: request._meta } : {}),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
else if (request.mode === undefined || request.mode === "form") {
|
|
21
|
+
if (typeof request.message !== "string" || !isRecord(request.requestedSchema))
|
|
22
|
+
return { action: "cancel" };
|
|
23
|
+
params = {
|
|
24
|
+
mode: "form",
|
|
25
|
+
message: request.message,
|
|
26
|
+
requestedSchema: request.requestedSchema,
|
|
27
|
+
...(isRecord(request._meta) ? { _meta: request._meta } : {}),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// OpenAI's richer openai/form mode is advertised only by clients that can render it.
|
|
32
|
+
return { action: "cancel" };
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const response = await client.elicitInput(params, signal ? { signal } : undefined);
|
|
36
|
+
return {
|
|
37
|
+
action: response.action,
|
|
38
|
+
...(response.content !== undefined ? { content: response.content } : {}),
|
|
39
|
+
...(isRecord(response._meta) ? { _meta: response._meta } : {}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// This is the MCP headless/unsupported-client outcome, not a fabricated decline.
|
|
44
|
+
return { action: "cancel" };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=mcp-elicitation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-elicitation.js","sourceRoot":"","sources":["../src/mcp-elicitation.ts"],"names":[],"mappings":"AAWA,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAC1D,MAA4B,EAC5B,OAAuC,EACvC,MAAoB;IAEpB,IAAI,MAA2B,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC5B,IACC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;eAChC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;eAC/B,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ;YAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG;YACR,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAClE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC3G,MAAM,GAAG;YACR,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACP,qFAAqF;QACrF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,OAAO;YACN,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,iFAAiF;QACjF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;AACF,CAAC"}
|