alaska-ai 0.1.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/README.md +56 -0
- package/dist/adapters/slack.d.ts +130 -0
- package/dist/adapters/slack.js +1484 -0
- package/dist/adapters/slack.js.map +1 -0
- package/dist/backends/claude.d.ts +78 -0
- package/dist/backends/claude.js +452 -0
- package/dist/backends/claude.js.map +1 -0
- package/dist/backends/codex.d.ts +53 -0
- package/dist/backends/codex.js +324 -0
- package/dist/backends/codex.js.map +1 -0
- package/dist/cli/init.d.ts +50 -0
- package/dist/cli/init.js +386 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/prompt.d.ts +31 -0
- package/dist/cli/prompt.js +145 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/start.d.ts +28 -0
- package/dist/cli/start.js +522 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/callbacks.d.ts +32 -0
- package/dist/mcp/callbacks.js +181 -0
- package/dist/mcp/callbacks.js.map +1 -0
- package/dist/mcp/config.d.ts +15 -0
- package/dist/mcp/config.js +22 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/entry.d.ts +13 -0
- package/dist/mcp/entry.js +119 -0
- package/dist/mcp/entry.js.map +1 -0
- package/dist/mcp/file-browser.d.ts +15 -0
- package/dist/mcp/file-browser.js +135 -0
- package/dist/mcp/file-browser.js.map +1 -0
- package/dist/mcp/ipc-server.d.ts +64 -0
- package/dist/mcp/ipc-server.js +380 -0
- package/dist/mcp/ipc-server.js.map +1 -0
- package/dist/mcp/preview-server.d.ts +33 -0
- package/dist/mcp/preview-server.js +254 -0
- package/dist/mcp/preview-server.js.map +1 -0
- package/dist/mcp/server.d.ts +51 -0
- package/dist/mcp/server.js +257 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tunnel.d.ts +17 -0
- package/dist/mcp/tunnel.js +154 -0
- package/dist/mcp/tunnel.js.map +1 -0
- package/dist/router.d.ts +113 -0
- package/dist/router.js +511 -0
- package/dist/router.js.map +1 -0
- package/dist/sandbox-policy.d.ts +6 -0
- package/dist/sandbox-policy.js +46 -0
- package/dist/sandbox-policy.js.map +1 -0
- package/dist/scheduler.d.ts +42 -0
- package/dist/scheduler.js +169 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/store.d.ts +95 -0
- package/dist/store.js +353 -0
- package/dist/store.js.map +1 -0
- package/dist/types/adapter.d.ts +50 -0
- package/dist/types/adapter.js +9 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/backend.d.ts +73 -0
- package/dist/types/backend.js +8 -0
- package/dist/types/backend.js.map +1 -0
- package/dist/types/events.d.ts +47 -0
- package/dist/types/events.js +9 -0
- package/dist/types/events.js.map +1 -0
- package/dist/utils.d.ts +59 -0
- package/dist/utils.js +272 -0
- package/dist/utils.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/backends/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,uCAAuC;AACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AAE9D,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,iCAAiC;IACjC,6BAA6B;IAC7B,0BAA0B;IAC1B,2BAA2B;IAC3B,iCAAiC;CAClC,CAAC;AAaF;;;;;kFAKkF;AAClF,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,IAAc,EACd,GAAW,EACX,aAAsB,EACtB,GAA4B,EAC5B,SAAkB;IAElB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QAChC,GAAG;QACH,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACtD,QAAQ,EAAE,IAAI;QACd,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC,CAAC;IAEH,6BAA6B;IAC7B,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,mDAAmD;IACnD,IAAI,SAAS,GAA0B,IAAI,CAAC;IAC5C,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAChE,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvF,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,sCAAsC,aAAa,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1D,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,sBAAsB,IAAI,IAAI,CAAC,CAAC;gBAC9E,SAAS,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,IAAI;YACF,yEAAyE;YACzE,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,oFAAoF;QACpF,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,MAAc,EACd,QAAgB;IAEhB,MAAM,KAAK,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,8BAA8B;QAC9B,IACE,KAAK,CAAC,IAAI,KAAK,QAAQ;YACvB,KAAK,CAAC,OAAO,KAAK,MAAM;YACxB,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EACpC,CAAC;YACD,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,iBAAiB;QACjB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAA8C,CAAC;YACrE,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,MAAM,SAAS,GAAI,OAAO,CAAC,OAA0C;qBAClE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;qBAC9D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC;gBAChC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,uCAAuC;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACvE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,kBAAoD,EAAE,CAAC;gBAChF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;oBAAE,SAAS;gBACpD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,mBAAmB;oBACzB,QAAQ,EAAG,MAAM,CAAC,SAAoB,IAAI,SAAS;oBACnD,SAAS,EAAG,MAAM,CAAC,UAAsC,IAAI,EAAE;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAA8C,CAAC;YACrE,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAyC,EAAE,CAAC;oBACrE,IACE,IAAI;wBACJ,IAAI,CAAC,QAAQ,KAAK,IAAI;wBACtB,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAChC,CAAC;wBACD,MAAM,IAAI,GAAI,IAAI,CAAC,OAAkB,CAAC,IAAI,EAAE,CAAC;wBAC7C,IAAI,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACxD,2DAA2D;4BAC3D,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC;iCAC3B,OAAO,EAAE;iCACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC;4BAC/C,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gCAC1D,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;4BAC5B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAA8B,CAAC;YACpD,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBACxC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,4BAA6B,KAAK,CAAC,OAAkB,IAAI,SAAS,GAAG,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,iBAAiB;IACjB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAExC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,EAAE;YACL,UAAU,EAAE,CAAC;oBACX,OAAO,EAAE,GAAG;oBACZ,KAAK,EAAE,CAAC;4BACN,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,QAAQ,aAAa,wBAAwB;4BACtD,OAAO,EAAE,GAAG;yBACb,CAAC;iBACH,CAAC;SACH;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,KAAwB;IACzE,MAAM,OAAO,GAAmC,EAAE,CAAC;IAEnD,iFAAiF;IACjF,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI,CAAC,SAAS;wBAC1B,IAAI,EAAE,IAAI,CAAC,MAAM;qBAClB;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,iBAAiB;wBAC7B,IAAI,EAAE,IAAI,CAAC,MAAM;qBAClB;iBACF,CAAC,CAAC;YACL,CAAC;YACD,6EAA6E;QAC/E,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,OAAO;SACR;KACF,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AACxC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,SAAwB,EACxB,YAAuB,EACvB,aAAsB,EACtB,YAAqB,EACrB,0BAAoC,EACpC,kBAA4B;IAE5B,MAAM,IAAI,GAAG;QACX,IAAI;QACJ,WAAW;QACX,iBAAiB,EAAE,aAAa;QAChC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;KAC9D,CAAC;IAEF,yDAAyD;IACzD,IAAI,0BAA0B,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,kDAAkD;IAClD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,qEAAqE;IACvE,CAAC;SAAM,CAAC;QACN,gEAAgE;QAChE,+EAA+E;QAC/E,0EAA0E;QAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,SAAyB;IAChF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAEvD,gFAAgF;IAChF,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACrD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,kDAAkD,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,4DAA4D;IAC9D,CAAC;IAED,kCAAkC;IAClC,MAAM,UAAU,GAAI,QAAQ,CAAC,UAAsC,IAAI,EAAE,CAAC;IAC1E,UAAU,CAAC,QAAQ,CAAC,GAAG;QACrB,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;IACF,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IAEjC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,OAAO,aAAa;IAChB,SAAS,GAAkB,IAAI,CAAC;IAChC,UAAU,GAAW,EAAE,CAAC;IACxB,SAAS,CAA6B;IACtC,YAAY,GAAuB,IAAI,CAAC;IACxC,YAAY,GAAa,EAAE,CAAC;IAC5B,GAAG,CAAoC;IACvC,SAAS,CAAU;IACnB,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAClB,aAAa,CAAU;IACvB,cAAc,CAAU;IAEhC,KAAK,CAAC,KAAK,CAAC,OAAuB;QACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAE7C,oEAAoE;QACpE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,KAAwB;QAC/C,uDAAuD;QACvD,IAAI,aAAiC,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7B,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;wBAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;wBACzB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC3D;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,CAAC;QAE9B,mDAAmD;QACnD,gEAAgE;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa;YACrC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC;YACvC,CAAC,CAAC,SAAS,CAAC;QAEd,4EAA4E;QAC5E,kEAAkE;QAClE,MAAM,aAAa,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC;QACxF,IAAI,SAA6B,CAAC;QAClC,IAAI,aAAa,EAAE,CAAC;YAClB,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,GAAG,eAAe,CAC1B,IAAI,EACJ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAC5D,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,CACd,CAAC;QACF,oDAAoD;QACpD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,wFAAwF;QACxF,IAAI,OAA2C,CAAC;QAChD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,GAAG;gBACR,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtC,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;gBAClC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChF,CAAC;QACJ,CAAC;QAED,6FAA6F;QAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAE3B,IAAI,MAAmB,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEhF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,EAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,KAAe;QAC7B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,yDAAyD;QACzD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex CLI backend wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Spawns `codex` CLI in oneshot mode with `--json` output.
|
|
5
|
+
* Parses JSONL output into normalized events. Supports session resume
|
|
6
|
+
* via `codex exec resume` subcommand.
|
|
7
|
+
*
|
|
8
|
+
* Reference: prototype/io-harness/run.js (parseCodexJson)
|
|
9
|
+
*/
|
|
10
|
+
import type { Backend, BackendOptions, FileAttachment, McpServerEntry, SendResult } from '../types/backend.js';
|
|
11
|
+
import type { NormalizedEvent } from '../types/events.js';
|
|
12
|
+
export type SandboxMode = 'workspace-write';
|
|
13
|
+
export interface CodexBackendConfig {
|
|
14
|
+
sandbox?: SandboxMode;
|
|
15
|
+
}
|
|
16
|
+
/** Parse Codex CLI JSON output into normalized events. */
|
|
17
|
+
export declare function parseCodexOutput(stdout: string, stderr: string, exitCode: number): {
|
|
18
|
+
events: NormalizedEvent[];
|
|
19
|
+
sessionId: string | null;
|
|
20
|
+
};
|
|
21
|
+
/** Map MIME type to file extension for temp image files. */
|
|
22
|
+
export declare function mimeToExtension(mediaType: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Save images to temp files and return their paths.
|
|
25
|
+
* Caller is responsible for cleaning up the files.
|
|
26
|
+
*/
|
|
27
|
+
export declare function saveImagesToTemp(images: FileAttachment[]): string[];
|
|
28
|
+
/** Clean up temp image files (best-effort, ignores errors). */
|
|
29
|
+
export declare function cleanupTempImages(paths: string[]): void;
|
|
30
|
+
/** Build CLI args for a codex oneshot invocation. */
|
|
31
|
+
export declare function buildCodexArgs(text: string, sessionId: string | null, sandbox: SandboxMode, imagePaths?: string[], mcpConfig?: McpServerEntry): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Write a .codex/config.toml file with the bridge MCP server config.
|
|
34
|
+
* Codex CLI reads project-scoped .codex/config.toml for MCP servers.
|
|
35
|
+
* Uses a minimal TOML serializer (no dependency needed for simple structures).
|
|
36
|
+
*/
|
|
37
|
+
export declare function writeCodexMcpConfig(projectDir: string, mcpConfig: McpServerEntry): void;
|
|
38
|
+
export declare class CodexBackend implements Backend {
|
|
39
|
+
private sessionId;
|
|
40
|
+
private projectDir;
|
|
41
|
+
private sandbox;
|
|
42
|
+
private mcpConfig;
|
|
43
|
+
private activeHandle;
|
|
44
|
+
constructor(config?: CodexBackendConfig);
|
|
45
|
+
start(options: BackendOptions): Promise<void>;
|
|
46
|
+
send(text: string, files?: FileAttachment[]): Promise<SendResult>;
|
|
47
|
+
getSessionId(): string | null;
|
|
48
|
+
setSessionId(id: string | null): void;
|
|
49
|
+
setAllowedTools(_tools: string[]): void;
|
|
50
|
+
interrupt(): Promise<void>;
|
|
51
|
+
isAlive(): boolean;
|
|
52
|
+
stop(): Promise<void>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex CLI backend wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Spawns `codex` CLI in oneshot mode with `--json` output.
|
|
5
|
+
* Parses JSONL output into normalized events. Supports session resume
|
|
6
|
+
* via `codex exec resume` subcommand.
|
|
7
|
+
*
|
|
8
|
+
* Reference: prototype/io-harness/run.js (parseCodexJson)
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as os from 'node:os';
|
|
12
|
+
import * as path from 'node:path';
|
|
13
|
+
import { spawnCollect } from './claude.js';
|
|
14
|
+
const SANDBOX_DENIAL_RE = /operation not permitted|permission denied|sandbox.*(?:block|denied|restrict)|read.only.*file.?system/i;
|
|
15
|
+
function parseJsonLine(line) {
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(line);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
if (line.startsWith('{') || line.startsWith('[')) {
|
|
21
|
+
console.warn(`[codex] malformed JSON line: ${line.slice(0, 200)}`);
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** Parse Codex CLI JSON output into normalized events. */
|
|
27
|
+
export function parseCodexOutput(stdout, stderr, exitCode) {
|
|
28
|
+
const lines = `${stdout}\n${stderr}`.split(/\r?\n/);
|
|
29
|
+
let sessionId = null;
|
|
30
|
+
const events = [];
|
|
31
|
+
for (const line of lines) {
|
|
32
|
+
const trimmed = line.trim();
|
|
33
|
+
if (!trimmed)
|
|
34
|
+
continue;
|
|
35
|
+
const event = parseJsonLine(trimmed);
|
|
36
|
+
if (!event)
|
|
37
|
+
continue;
|
|
38
|
+
// Thread ID from thread.started
|
|
39
|
+
if (event.type === 'thread.started' && typeof event.thread_id === 'string') {
|
|
40
|
+
sessionId = event.thread_id;
|
|
41
|
+
events.push({ type: 'session_started', sessionId });
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
// Agent message text
|
|
45
|
+
if (event.type === 'item.completed') {
|
|
46
|
+
const item = event.item;
|
|
47
|
+
if (!item)
|
|
48
|
+
continue;
|
|
49
|
+
if (item.type === 'agent_message' && typeof item.text === 'string') {
|
|
50
|
+
const text = item.text;
|
|
51
|
+
events.push({ type: 'assistant_text', text });
|
|
52
|
+
// Check for sandbox denial patterns in agent message
|
|
53
|
+
if (SANDBOX_DENIAL_RE.test(text)) {
|
|
54
|
+
events.push({
|
|
55
|
+
type: 'permission_denied',
|
|
56
|
+
toolName: 'sandbox',
|
|
57
|
+
toolInput: {},
|
|
58
|
+
context: text.slice(0, 500),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
// Command execution
|
|
64
|
+
if (item.type === 'command_execution') {
|
|
65
|
+
const command = item.command || '';
|
|
66
|
+
const exitCodeVal = item.exit_code ?? -1;
|
|
67
|
+
const output = item.aggregated_output || '';
|
|
68
|
+
events.push({
|
|
69
|
+
type: 'command_execution',
|
|
70
|
+
command,
|
|
71
|
+
exitCode: exitCodeVal,
|
|
72
|
+
output,
|
|
73
|
+
});
|
|
74
|
+
// Check for sandbox denial in command output (only on non-zero exit)
|
|
75
|
+
if (exitCodeVal !== 0 && SANDBOX_DENIAL_RE.test(output)) {
|
|
76
|
+
events.push({
|
|
77
|
+
type: 'permission_denied',
|
|
78
|
+
toolName: 'sandbox',
|
|
79
|
+
toolInput: { command },
|
|
80
|
+
context: output.slice(0, 500),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
// Reasoning events — ignored
|
|
86
|
+
if (item.type === 'reasoning')
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
// Error events
|
|
90
|
+
if (event.type === 'error' && typeof event.message === 'string') {
|
|
91
|
+
events.push({ type: 'error', message: event.message });
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
if (event.type === 'turn.failed') {
|
|
95
|
+
const error = event.error;
|
|
96
|
+
const message = error && typeof error.message === 'string'
|
|
97
|
+
? error.message
|
|
98
|
+
: 'Codex turn failed';
|
|
99
|
+
events.push({ type: 'error', message });
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Non-zero exit with no structured error
|
|
104
|
+
if (exitCode !== 0 && !events.some((e) => e.type === 'error')) {
|
|
105
|
+
events.push({ type: 'error', message: `Codex exited with code ${exitCode}` });
|
|
106
|
+
}
|
|
107
|
+
// Turn completed
|
|
108
|
+
events.push({ type: 'turn_completed' });
|
|
109
|
+
return { events, sessionId };
|
|
110
|
+
}
|
|
111
|
+
/** Map MIME type to file extension for temp image files. */
|
|
112
|
+
export function mimeToExtension(mediaType) {
|
|
113
|
+
const map = {
|
|
114
|
+
'image/png': '.png',
|
|
115
|
+
'image/jpeg': '.jpg',
|
|
116
|
+
'image/gif': '.gif',
|
|
117
|
+
'image/webp': '.webp',
|
|
118
|
+
};
|
|
119
|
+
return map[mediaType] || '.png';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Save images to temp files and return their paths.
|
|
123
|
+
* Caller is responsible for cleaning up the files.
|
|
124
|
+
*/
|
|
125
|
+
export function saveImagesToTemp(images) {
|
|
126
|
+
const tmpDir = os.tmpdir();
|
|
127
|
+
const paths = [];
|
|
128
|
+
for (let i = 0; i < images.length; i++) {
|
|
129
|
+
const ext = mimeToExtension(images[i].mediaType);
|
|
130
|
+
const tmpPath = path.join(tmpDir, `alaska-img-${Date.now()}-${i}${ext}`);
|
|
131
|
+
fs.writeFileSync(tmpPath, Buffer.from(images[i].base64, 'base64'));
|
|
132
|
+
paths.push(tmpPath);
|
|
133
|
+
}
|
|
134
|
+
return paths;
|
|
135
|
+
}
|
|
136
|
+
/** Clean up temp image files (best-effort, ignores errors). */
|
|
137
|
+
export function cleanupTempImages(paths) {
|
|
138
|
+
for (const p of paths) {
|
|
139
|
+
try {
|
|
140
|
+
fs.unlinkSync(p);
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
if (err.code !== 'ENOENT') {
|
|
144
|
+
console.error(`[codex] failed to clean up temp image ${p}: ${err.message}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** Build CLI args for a codex oneshot invocation. */
|
|
150
|
+
export function buildCodexArgs(text, sessionId, sandbox, imagePaths, mcpConfig) {
|
|
151
|
+
if (sessionId) {
|
|
152
|
+
// Resume: codex exec resume --skip-git-repo-check --json SESSION_ID -- "prompt"
|
|
153
|
+
// Note: --sandbox, -i, and -c are NOT included in resume (persists from initial invocation)
|
|
154
|
+
return ['exec', 'resume', '--skip-git-repo-check', '--json', sessionId, '--', text];
|
|
155
|
+
}
|
|
156
|
+
const args = ['exec', '--skip-git-repo-check', '--json', '--sandbox', sandbox];
|
|
157
|
+
// Inject MCP server config via -c flag so Codex picks it up at runtime
|
|
158
|
+
if (mcpConfig) {
|
|
159
|
+
const argsToml = mcpConfig.args.map((a) => `"${a}"`).join(', ');
|
|
160
|
+
const configValue = `mcp_servers.alaska={command = "${mcpConfig.command}", args = [${argsToml}]}`;
|
|
161
|
+
args.push('-c', configValue);
|
|
162
|
+
}
|
|
163
|
+
// Attach images via -i/--image flag (Codex CLI multimodal input)
|
|
164
|
+
if (imagePaths) {
|
|
165
|
+
for (const imgPath of imagePaths) {
|
|
166
|
+
args.push('-i', imgPath);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Use -- to separate options from the prompt positional argument.
|
|
170
|
+
// Without this, the arg parser can misinterpret the prompt as a flag value.
|
|
171
|
+
args.push('--', text);
|
|
172
|
+
return args;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Write a .codex/config.toml file with the bridge MCP server config.
|
|
176
|
+
* Codex CLI reads project-scoped .codex/config.toml for MCP servers.
|
|
177
|
+
* Uses a minimal TOML serializer (no dependency needed for simple structures).
|
|
178
|
+
*/
|
|
179
|
+
export function writeCodexMcpConfig(projectDir, mcpConfig) {
|
|
180
|
+
const codexDir = path.join(projectDir, '.codex');
|
|
181
|
+
if (!fs.existsSync(codexDir)) {
|
|
182
|
+
fs.mkdirSync(codexDir, { recursive: true });
|
|
183
|
+
}
|
|
184
|
+
const configPath = path.join(codexDir, 'config.toml');
|
|
185
|
+
// Read existing config lines (preserve non-MCP settings)
|
|
186
|
+
let existingLines = [];
|
|
187
|
+
try {
|
|
188
|
+
existingLines = fs.readFileSync(configPath, 'utf8').split('\n');
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
if (err.code !== 'ENOENT') {
|
|
192
|
+
console.error(`[codex] failed to read existing config at ${configPath}: ${err.message}`);
|
|
193
|
+
}
|
|
194
|
+
// ENOENT is expected (file doesn't exist yet) — start fresh
|
|
195
|
+
}
|
|
196
|
+
// Remove any existing alaska MCP server block
|
|
197
|
+
const filtered = [];
|
|
198
|
+
let inAlaskaBlock = false;
|
|
199
|
+
for (const line of existingLines) {
|
|
200
|
+
if (line.trim() === '[mcp_servers.alaska]') {
|
|
201
|
+
inAlaskaBlock = true;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (inAlaskaBlock && line.startsWith('[')) {
|
|
205
|
+
inAlaskaBlock = false;
|
|
206
|
+
}
|
|
207
|
+
if (!inAlaskaBlock) {
|
|
208
|
+
filtered.push(line);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
// Build the alaska MCP server TOML block
|
|
212
|
+
const argsToml = mcpConfig.args.map((a) => `"${a}"`).join(', ');
|
|
213
|
+
const lines = [
|
|
214
|
+
...filtered.filter((l) => l.trim() !== ''), // Remove trailing blank lines
|
|
215
|
+
'',
|
|
216
|
+
'[mcp_servers.alaska]',
|
|
217
|
+
`command = "${mcpConfig.command}"`,
|
|
218
|
+
`args = [${argsToml}]`,
|
|
219
|
+
'enabled = true',
|
|
220
|
+
];
|
|
221
|
+
if (mcpConfig.env && Object.keys(mcpConfig.env).length > 0) {
|
|
222
|
+
const envEntries = Object.entries(mcpConfig.env)
|
|
223
|
+
.map(([k, v]) => `${k} = "${v}"`)
|
|
224
|
+
.join(', ');
|
|
225
|
+
lines.push(`env = { ${envEntries} }`);
|
|
226
|
+
}
|
|
227
|
+
lines.push('');
|
|
228
|
+
fs.writeFileSync(configPath, lines.join('\n'));
|
|
229
|
+
console.log(`[codex] wrote MCP config to ${configPath}`);
|
|
230
|
+
}
|
|
231
|
+
export class CodexBackend {
|
|
232
|
+
sessionId = null;
|
|
233
|
+
projectDir = '';
|
|
234
|
+
sandbox;
|
|
235
|
+
mcpConfig;
|
|
236
|
+
activeHandle = null;
|
|
237
|
+
constructor(config = {}) {
|
|
238
|
+
this.sandbox = config.sandbox || 'workspace-write';
|
|
239
|
+
}
|
|
240
|
+
async start(options) {
|
|
241
|
+
this.projectDir = options.projectDir;
|
|
242
|
+
this.mcpConfig = options.mcpConfig;
|
|
243
|
+
if (options.sandboxMode === 'workspace-write') {
|
|
244
|
+
this.sandbox = options.sandboxMode;
|
|
245
|
+
}
|
|
246
|
+
// Write MCP config if provided so Codex discovers the bridge tools
|
|
247
|
+
if (this.mcpConfig) {
|
|
248
|
+
writeCodexMcpConfig(this.projectDir, this.mcpConfig);
|
|
249
|
+
}
|
|
250
|
+
console.log(`[codex] initialized for project: ${this.projectDir} (sandbox: ${this.sandbox})`);
|
|
251
|
+
}
|
|
252
|
+
async send(text, files) {
|
|
253
|
+
// Filter to image files for the -i flag (Codex CLI multimodal input)
|
|
254
|
+
const imageFiles = files?.filter((f) => f.kind === 'image');
|
|
255
|
+
let imagePaths;
|
|
256
|
+
let shouldCleanupImages = false;
|
|
257
|
+
if (imageFiles && imageFiles.length > 0) {
|
|
258
|
+
const allHaveStaging = imageFiles.every((img) => !!img.stagingPath);
|
|
259
|
+
if (allHaveStaging) {
|
|
260
|
+
imagePaths = imageFiles.map((img) => img.stagingPath);
|
|
261
|
+
console.log(`[codex] reusing ${imagePaths.length} staging file(s) for -i`);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
imagePaths = saveImagesToTemp(imageFiles);
|
|
265
|
+
shouldCleanupImages = true;
|
|
266
|
+
console.log(`[codex] saved ${imagePaths.length} image(s) to temp files`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const args = buildCodexArgs(text, this.sessionId, this.sandbox, imagePaths, this.mcpConfig);
|
|
270
|
+
console.log(`[codex] spawning: codex ${args.join(' ')}`);
|
|
271
|
+
const handle = spawnCollect('codex', args, this.projectDir);
|
|
272
|
+
this.activeHandle = handle;
|
|
273
|
+
let result;
|
|
274
|
+
try {
|
|
275
|
+
result = await handle.result;
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
this.activeHandle = null;
|
|
279
|
+
if (imagePaths && shouldCleanupImages)
|
|
280
|
+
cleanupTempImages(imagePaths);
|
|
281
|
+
if (err?.code === 'ENOENT') {
|
|
282
|
+
throw new Error('Codex CLI not found. Install it with: npm install -g @openai/codex');
|
|
283
|
+
}
|
|
284
|
+
throw err;
|
|
285
|
+
}
|
|
286
|
+
this.activeHandle = null;
|
|
287
|
+
if (imagePaths && shouldCleanupImages)
|
|
288
|
+
cleanupTempImages(imagePaths);
|
|
289
|
+
console.log(`[codex] process exited with code ${result.exitCode}`);
|
|
290
|
+
const parsed = parseCodexOutput(result.stdout, result.stderr, result.exitCode);
|
|
291
|
+
if (parsed.sessionId) {
|
|
292
|
+
this.sessionId = parsed.sessionId;
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
events: parsed.events,
|
|
296
|
+
sessionId: this.sessionId,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
getSessionId() {
|
|
300
|
+
return this.sessionId;
|
|
301
|
+
}
|
|
302
|
+
setSessionId(id) {
|
|
303
|
+
this.sessionId = id;
|
|
304
|
+
}
|
|
305
|
+
setAllowedTools(_tools) {
|
|
306
|
+
// Codex uses OS-level sandbox — tool-level approval is not supported
|
|
307
|
+
}
|
|
308
|
+
async interrupt() {
|
|
309
|
+
// CLI backend has no clean interrupt — fall back to stop
|
|
310
|
+
await this.stop();
|
|
311
|
+
}
|
|
312
|
+
isAlive() {
|
|
313
|
+
return this.activeHandle !== null;
|
|
314
|
+
}
|
|
315
|
+
async stop() {
|
|
316
|
+
console.log('[codex] stopping');
|
|
317
|
+
if (this.activeHandle) {
|
|
318
|
+
this.activeHandle.kill();
|
|
319
|
+
this.activeHandle = null;
|
|
320
|
+
}
|
|
321
|
+
this.sessionId = null;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/backends/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* alaska init 鈥?Interactive setup wizard.
|
|
3
|
+
*
|
|
4
|
+
* Guides the user through platform selection, token input (with inline
|
|
5
|
+
* setup instructions and verification), and backend detection. Writes
|
|
6
|
+
* config to .alaska/ and .env.local.
|
|
7
|
+
*/
|
|
8
|
+
import { type Store } from '../store.js';
|
|
9
|
+
import { type PromptIO } from './prompt.js';
|
|
10
|
+
export type Platform = 'slack';
|
|
11
|
+
export interface InitConfig {
|
|
12
|
+
platforms: Platform[];
|
|
13
|
+
slackBotToken?: string;
|
|
14
|
+
slackAppToken?: string;
|
|
15
|
+
defaultBackend: string;
|
|
16
|
+
}
|
|
17
|
+
/** Validate a Slack bot token format. */
|
|
18
|
+
export declare function validateSlackBotToken(token: string): string | null;
|
|
19
|
+
/** Validate a Slack app token format. */
|
|
20
|
+
export declare function validateSlackAppToken(token: string): string | null;
|
|
21
|
+
/** Verify a Slack bot token by calling auth.test. Returns bot name on success, null on failure. */
|
|
22
|
+
export declare function verifySlackToken(botToken: string): Promise<string | null>;
|
|
23
|
+
/** Check if a CLI tool is available on PATH. */
|
|
24
|
+
export declare function detectCli(name: string): boolean;
|
|
25
|
+
/** Step 1: Platform selection (P6.2) */
|
|
26
|
+
export declare function selectPlatforms(io: PromptIO | null): Promise<Platform[]>;
|
|
27
|
+
/** Step 2: Token input with inline setup instructions and verification (P6.3) */
|
|
28
|
+
export declare function inputTokens(io: PromptIO | null, platforms: Platform[]): Promise<Pick<InitConfig, 'slackBotToken' | 'slackAppToken'>>;
|
|
29
|
+
/** Step 3: Backend auto-detection (P6.4) */
|
|
30
|
+
export declare function detectBackend(io: PromptIO | null): Promise<string>;
|
|
31
|
+
/** Write tokens to .env.local (P6.6) */
|
|
32
|
+
export declare function writeEnvFile(envPath: string, tokens: Pick<InitConfig, 'slackBotToken' | 'slackAppToken'>): void;
|
|
33
|
+
/** Read existing .env.local, merge new tokens, and write back. */
|
|
34
|
+
export declare function mergeEnvFile(envPath: string, newTokens: Pick<InitConfig, 'slackBotToken' | 'slackAppToken'>): void;
|
|
35
|
+
/** Save platform and backend config to the store (P6.6) */
|
|
36
|
+
export declare function saveConfig(store: Store, platforms: Platform[], defaultBackend: string): Promise<void>;
|
|
37
|
+
/** Detect available tunnel tools on PATH. */
|
|
38
|
+
export declare function detectTunnelTools(): {
|
|
39
|
+
hasCloudflared: boolean;
|
|
40
|
+
hasNgrok: boolean;
|
|
41
|
+
};
|
|
42
|
+
/** Step: File previews setup (tunnel tool detection) */
|
|
43
|
+
export declare function setupFilePreviews(io: PromptIO | null): Promise<void>;
|
|
44
|
+
/** Step: Set sandbox root directory (required). */
|
|
45
|
+
export declare function setProjectsRoot(io: PromptIO | null, store: Store): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Run the full init wizard.
|
|
48
|
+
* Accepts optional PromptIO for testing (defaults to interactive @clack/prompts).
|
|
49
|
+
*/
|
|
50
|
+
export declare function runInit(io?: PromptIO): Promise<void>;
|