@classcad/mcp 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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +361 -0
  3. package/dist/auth.d.ts +32 -0
  4. package/dist/auth.js +272 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/bridge/protocol.d.ts +87 -0
  7. package/dist/bridge/protocol.js +14 -0
  8. package/dist/bridge/protocol.js.map +1 -0
  9. package/dist/bridge/server.d.ts +35 -0
  10. package/dist/bridge/server.js +236 -0
  11. package/dist/bridge/server.js.map +1 -0
  12. package/dist/client.d.ts +98 -0
  13. package/dist/client.js +879 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/daemon.d.ts +38 -0
  16. package/dist/daemon.js +390 -0
  17. package/dist/daemon.js.map +1 -0
  18. package/dist/engine/wasm-worker.d.ts +1 -0
  19. package/dist/engine/wasm-worker.js +176 -0
  20. package/dist/engine/wasm-worker.js.map +1 -0
  21. package/dist/engine/wasm.d.ts +60 -0
  22. package/dist/engine/wasm.js +212 -0
  23. package/dist/engine/wasm.js.map +1 -0
  24. package/dist/mcp-server.d.ts +23 -0
  25. package/dist/mcp-server.js +141 -0
  26. package/dist/mcp-server.js.map +1 -0
  27. package/dist/ports.d.ts +2 -0
  28. package/dist/ports.js +5 -0
  29. package/dist/ports.js.map +1 -0
  30. package/dist/queue.d.ts +9 -0
  31. package/dist/queue.js +50 -0
  32. package/dist/queue.js.map +1 -0
  33. package/dist/server.d.ts +2 -0
  34. package/dist/server.js +423 -0
  35. package/dist/server.js.map +1 -0
  36. package/dist/tools/auth.d.ts +7 -0
  37. package/dist/tools/auth.js +63 -0
  38. package/dist/tools/auth.js.map +1 -0
  39. package/dist/tools/bridge.d.ts +4 -0
  40. package/dist/tools/bridge.js +115 -0
  41. package/dist/tools/bridge.js.map +1 -0
  42. package/dist/tools/docs.d.ts +13 -0
  43. package/dist/tools/docs.js +180 -0
  44. package/dist/tools/docs.js.map +1 -0
  45. package/dist/tools/lifecycle.d.ts +3 -0
  46. package/dist/tools/lifecycle.js +156 -0
  47. package/dist/tools/lifecycle.js.map +1 -0
  48. package/dist/tools/script.d.ts +3 -0
  49. package/dist/tools/script.js +102 -0
  50. package/dist/tools/script.js.map +1 -0
  51. package/dist/tools/snapshot.d.ts +3 -0
  52. package/dist/tools/snapshot.js +174 -0
  53. package/dist/tools/snapshot.js.map +1 -0
  54. package/dist/tools/state.d.ts +3 -0
  55. package/dist/tools/state.js +95 -0
  56. package/dist/tools/state.js.map +1 -0
  57. package/dist/types.d.ts +46 -0
  58. package/dist/types.js +3 -0
  59. package/dist/types.js.map +1 -0
  60. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,yEAAyE;AACzE,EAAE;AACF,+EAA+E;AAC/E,sEAAsE;AACtE,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,sCAAsC;AACtC,uEAAuE;AACvE,sEAAsE;AACtE,kEAAkE;AAClE,yEAAyE;AACzE,yEAAyE;AACzE,gDAAgD;AAChD,EAAE;AACF,+EAA+E;AAC/E,+DAA+D;AAC/D,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,wCAAwC;AACxC,4EAA4E;AAC5E,oEAAoE;AACpE,6EAA6E;AAC7E,iEAAiE;AACjE,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,yEAAyE;AACzE,6EAA6E;AAC7E,kEAAkE;AAElE,OAAO,SAAS,MAAM,IAAI,CAAA;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,KAAK,CAAA;AAI3C,OAAO,EAAE,gBAAgB,EAA2C,MAAM,kBAAkB,CAAA;AAK5F,MAAM,WAAW,GAAG,oBAAoB,CAAA;AACxC,MAAM,eAAe,GAAG,MAAM,CAAA;AAC9B,MAAM,eAAe,GAAG,KAAK,CAAA;AAC7B,wFAAwF;AACxF,MAAM,eAAe,GAAG,KAAK,CAAA;AAE7B,iFAAiF;AACjF,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,IAAY,CAAA;IAChB,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QACzC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACvC,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,CAAC,EAAE,CAAC,CAAA;QACb,CAAC,CAAA;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAA4B,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAA;AA2BpF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,gBAAgB,IAAI,OAAO,KAAK,wBAAwB;YAAE,SAAQ;QAClF,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAqD,CAAA;QACzG,MAAM,QAAQ,GAAG,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACjI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACxE,IAAI,MAAM,KAAK,KAAK;YAClB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,4JAA4J,CAAA;IAC1L,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAwDD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,WAAW,EAAE,OAAuB,EAAE;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAA;IACjC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,MAAM,OAAO,GAAG,IAAI,eAAe,EAAa,CAAA;IAChD,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,gFAAgF;IAChF,MAAM,OAAO,GAAG,GAAG,CAAA;IACnB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,UAAU,GAAG,GAAG,CAAA;IAEpB,IAAI,WAAW,GAAmB,IAAI,CAAA;IACtC,IAAI,aAAa,GAAqB,IAAI,CAAA;IAC1C,2EAA2E;IAC3E,2EAA2E;IAC3E,qEAAqE;IACrE,sEAAsE;IACtE,gDAAgD;IAChD,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,WAAW,GAAG,CAAC,CAAC,CAAA;IACpB,IAAI,cAAc,GAAG,CAAC,CAAC,CAAA;IACvB,4EAA4E;IAC5E,oEAAoE;IACpE,kEAAkE;IAClE,IAAI,WAAW,GAAmB,IAAI,CAAA;IACtC,IAAI,EAAE,GAA0B,SAAS,CAAA;IACzC,4EAA4E;IAC5E,sEAAsE;IACtE,sEAAsE;IACtE,IAAI,gBAAgB,GAAkB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAA;IAC5D,uEAAuE;IACvE,IAAI,cAAc,GAAyB,IAAI,CAAA;IAE/C,0CAA0C;IAC1C,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,SAAS,GAAc,IAAI,CAAA;IAC/B,IAAI,UAAU,GAAyB,IAAI,CAAA;IAC3C,2CAA2C;IAC3C,0EAA0E;IAC1E,yEAAyE;IACzE,qEAAqE;IACrE,IAAI,WAAW,GAAuB,IAAI,CAAA;IAC1C,IAAI,MAAM,GAAiB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;IAChD,6EAA6E;IAC7E,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,YAAY,GAAG,KAAK,CAAA;IACxB,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,IAAI,mBAAmB,GAAG,KAAK,CAAA;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAA;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAClC,IAAI,WAAW,GAAkB,IAAI,CAAA;IACrC,IAAI,gBAAgB,GAAwB,IAAI,CAAA;IAChD,IAAI,YAAY,GAAkB,IAAI,CAAA;IACtC,4EAA4E;IAC5E,IAAI,WAAW,GAAkB,IAAI,CAAA;IACrC,yEAAyE;IACzE,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAe,CAAA;IAE/C,SAAS,IAAI,CAAC,GAA4B;QACxC,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACnD,aAAa,CAAC,GAAG,CAAC,CAAA;YAClB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAC9C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9B,CAAC;IAED,iFAAiF;IACjF,SAAS,aAAa,CAAC,GAA4B;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACtC,IAAI,GAAiC,CAAA;QACrC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACpB,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAA;gBAC5D,OAAM;YACR,CAAC;YACD,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,UAAU,CAAA;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACpB,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC,CAAA;gBAC7F,OAAM;YACR,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAsB,gBAAgB,EAAE,GAAG,CAAC,CAAA;QAChE,CAAC;QACD,GAAG,CAAC,IAAI,CACN,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,GAAG,CAAC,EAAE;YACJ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACpB,KAAK,CAAC,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACnE,CAAC;QACH,CAAC,CACF,CAAA;IACH,CAAC;IAED,uGAAuG;IACvG,SAAS,mBAAmB,CAAC,GAA4B,EAAE,GAAwB;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACpB,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC,CAAA;QACD,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM;YAAE,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,wCAAwC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/H,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAK,GAAW,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;gBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI;oBAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;QACD,8EAA8E;QAC9E,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;aACnF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC,CAAA;QAClJ,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ;gBAAE,SAAQ;YACpC,MAAM,KAAK,GAAwB;gBACjC,GAAG,CAAC;gBACJ,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO;gBACzC,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa;aAC3E,CAAA;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,uEAAuE;gBACvE,kEAAkE;gBAClE,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACnD,IAAI,CAAC,uCAAuC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBACnE,OAAM;gBACR,CAAC;gBACD,8EAA8E;gBAC9E,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;gBAChC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;oBACpE,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAA;oBACnB,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAA;gBAC5F,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1D,0FAA0F;gBAC1F,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACnG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAA;oBAC9B,OAAO,KAAK,CAAC,MAAM,CAAA;gBACrB,CAAC;gBACD,oEAAoE;gBACpE,KAAK,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAA;YAChE,CAAC;YACD,SAAS,GAAG,IAAI,CAAA;YAChB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAA;YAC/E,IAAI,CAAC,iCAAiC,eAAe,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAChH,CAAC;IACH,CAAC;IAED,SAAS,eAAe,CAAC,GAA4B;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAyC,CAAC,CAAC,CAAC,SAAS,CAAA;QACvG,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACtD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1E,CAAC;IAED,SAAS,YAAY;QACnB,IAAI,gBAAgB;YAAE,gBAAgB,EAAE,CAAA;QACxC,gBAAgB,GAAG,IAAI,CAAA;QACvB,MAAM,IAAI,GAAG,UAAU,CAAA;QACvB,UAAU,GAAG,IAAI,CAAA;QACjB,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC5E,CAAC;QACD,YAAY,GAAG,IAAI,CAAA;QACnB,WAAW,GAAG,IAAI,CAAA;QAClB,gBAAgB,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,SAAS,WAAW,CAAC,IAAuB,EAAE,QAAiB;QAC7D,IAAI,QAAQ;YAAE,OAAM;QACpB,IAAI,KAAU,CAAA;QACd,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAA;QAClC,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAM;QACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEpB,uEAAuE;QACvE,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAA;YAC9B,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,0EAA0E;QAC1E,IAAI,KAAK,CAAC,SAAS,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9F,aAAa,GAAG,KAAK,CAAC,SAAsB,CAAA;YAC5C,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/C,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,UAAU,OAAO,CAAc,OAAe,EAAE,QAAgB,EAAE,EAAE,IAAyB,EAAE;QAClG,IAAI,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;QACnH,MAAM,UAAU,EAAE,CAAA;QAClB,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,EAAE,CAAA;QAChC,MAAM,aAAa,GAAG,UAAU,EAAE,CAAA;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,OAAiC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE;oBACvM,qEAAqE;oBACrE,sEAAsE;oBACtE,qEAAqE;oBACrE,IAAI,SAAS,KAAK,MAAM,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;wBAC/D,GAAG,CAAC,oCAAoC,OAAO,mGAAmG,CAAC,CAAA;wBACnJ,WAAW,CAAC,KAAK,CAAC,kBAAkB,OAAO,6BAA6B,CAAC,CAAA;oBAC3E,CAAC;;wBAAM,cAAc,GAAG,IAAI,CAAA;gBAC9B,CAAC,EAAE,CAAC,CAAA;YACJ,sEAAsE;YACtE,oEAAoE;YACpE,IAAI,CAAC;gBAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;YAAC,CAAC;YACxE,OAAO,KAAK,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAAC,MAAM,CAAC,KAAc,CAAC,CAAA;YAAC,CAAC;QAEzE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,sCAAsC;IACtC,KAAK,UAAU,UAAU;QACvB,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,UAAU;gBAAE,OAAM;YACtB,MAAM,IAAI,KAAK,CACb,oIAAoI;gBAClI,6IAA6I,CAChJ,CAAA;QACH,CAAC;QACD,IAAI,SAAS,KAAK,MAAM,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;YAChD,IAAI,cAAc;gBAAE,OAAO,cAAc,CAAA;YACzC,cAAc,GAAG,kBAAkB,CAAC,WAAW,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpF,cAAc,GAAG,IAAI,CAAA;YACvB,CAAC,CAAC,CAAA;YACF,OAAO,cAAc,CAAA;QACvB,CAAC;QACD,IAAI,SAAS,KAAK,MAAM,IAAI,WAAW,EAAE,CAAC;YACxC,wEAAwE;YACxE,wEAAwE;YACxE,IAAI,YAAY,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClD,OAAO,GAAG,IAAI,CAAA;gBACd,IAAI,CAAC;oBACH,MAAM,YAAY,EAAE,CAAA;gBACtB,CAAC;wBAAS,CAAC;oBACT,OAAO,GAAG,KAAK,CAAA;gBACjB,CAAC;YACH,CAAC;YACD,OAAM;QACR,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,OAAM;QACxE,IAAI,cAAc;YAAE,OAAO,cAAc,CAAA;QACzC,cAAc,GAAG,YAAY,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACnE,cAAc,GAAG,IAAI,CAAA;QACvB,CAAC,CAAC,CAAA;QACF,OAAO,cAAc,CAAA;IACvB,CAAC;IAED;;;;;OAKG;IACH,KAAK,UAAU,YAAY,CAAC,GAAiB,EAAE,SAAwB;QACrE,YAAY,GAAG,KAAK,CAAA;QACpB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,kLAAkL,CAAC,CAAA;YACzN,MAAM,QAAQ,EAAE,CAAA;YAChB,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,GAAG,YAAY,KAAK,IAAK,GAA4C,CAAC,cAAc,KAAK,IAAI,CAAA;YACjH,IAAI,GAAG,KAAK,MAAM,IAAI,WAAW,IAAI,CAAC,SAAS,IAAI,aAAa,EAAE,EAAE,CAAC;gBACnE,GAAG,CAAC,yBAAyB,UAAU,KAAM,GAAa,CAAC,OAAO,IAAK,GAAyB,CAAC,IAAI,IAAI,SAAS,iDAAiD,CAAC,CAAA;gBACpK,MAAM,QAAQ,EAAE,CAAA;gBAChB,YAAY,GAAG,IAAI,CAAA;gBACnB,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAC5B,OAAM;YACR,CAAC;YACD,IAAI,WAAW,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CACb,mCAAmC,UAAU,KAAM,GAAa,CAAC,OAAO,8DAA8D;oBACpI,8EAA8E,CACjF,CAAA;YACH,CAAC;YACD,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,YAAY;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,GAAG,GAAG,eAAe,GAAG,eAAe;YAAE,OAAM;QACnD,eAAe,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;YAAE,OAAM;QAChD,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7C,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,YAAY,CAAC,CAAA;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,GAAG,CAAC,sBAAsB,UAAU,0IAA0I,CAAC,CAAA;gBAC/K,mBAAmB,GAAG,IAAI,CAAA;YAC5B,CAAC;YACD,YAAY,GAAG,KAAK,CAAA;YACpB,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;YAClB,YAAY,GAAG,KAAK,CAAA;YACpB,GAAG,CAAC,sBAAsB,UAAU,oFAAoF,CAAC,CAAA;QAC3H,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,aAAa,UAAU,8BAA+B,GAAa,CAAC,OAAO,sCAAsC,CAAC,CAAA;YACtH,MAAM,QAAQ,EAAE,CAAA;QAClB,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,KAAK,UAAU,QAAQ;QACrB,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAA;YACZ,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,EAAE,GAAG,SAAS,CAAA;QAChB,CAAC;QACD,IAAI,SAAS,KAAK,QAAQ;YAAE,YAAY,EAAE,CAAA;QAC1C,WAAW,EAAE,CAAA;QACb,SAAS,GAAG,MAAM,CAAA;QAClB,gBAAgB,GAAG,IAAI,CAAA;QACvB,WAAW,GAAG,IAAI,CAAA;QAClB,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,IAAI,+BAA+B,CAAA;YACtE,GAAG,CAAC,qBAAqB,GAAG,6CAA6C,CAAC,CAAA;YAC1E,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACtB,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,GAAG,MAAM,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5D,gEAAgE;YAChE,oEAAoE;YACpE,iBAAiB,GAAG,CAAC,CAAC,CAAA;YACtB,MAAM,gBAAgB,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK,UAAU,kBAAkB,CAAC,GAAW;QAC3C,GAAG,CAAC,8BAA8B,GAAG,8CAA8C,CAAC,CAAA;QACpF,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,WAAW,GAAG,IAAI,CAAA;QAClB,MAAM,QAAQ,EAAE,CAAA;IAClB,CAAC;IAED,SAAS,OAAO,CAAc,IAAY,EAAE,OAAkC,EAAE;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAChE,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QACtD,OAAO,OAAO,CAAI,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED,SAAS,KAAK;QACZ,IAAI,SAAS,KAAK,QAAQ;YAAE,YAAY,EAAE,CAAA;QAC1C,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI;YAAE,EAAE,CAAC,KAAK,EAAE,CAAA;QACrD,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,KAAK,EAAE,CAAA;YACnB,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;IACH,CAAC;IAED,SAAS,cAAc;QACrB,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,SAAS,YAAY;QACnB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,8DAA8D;IAC9D,SAAS,cAAc,CAAC,GAAwC;QAC9D,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,kBAAkB,KAAK,SAAS;YAAE,WAAW,GAAG,GAAG,CAAC,kBAAkB,CAAA;QAC5F,OAAO,GAA8B,CAAA;IACvC,CAAC;IACD,KAAK,UAAU,iBAAiB;QAC9B,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAA;IACrH,CAAC;IACD,KAAK,UAAU,iBAAiB,CAAC,OAAgC;QAC/D,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAA;IACtI,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,IAAI;QACjB,MAAM,EAAE,GAAG,OAAO,CAAA;QAClB,MAAM,MAAM,GAAG,QAAQ,IAAI,WAAW,KAAK,KAAK,CAAA;QAChD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACtB,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;YAC9C,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QAC/C,CAAC,CAAA;QACD,IAAI,MAAM;YAAE,MAAM,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA;;YAClG,MAAM,IAAI,EAAE,CAAA;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,WAAW,KAAK,OAAO,IAAI,aAAa,KAAK,IAAI,CAAA;IAC3E,iHAAiH;IACjH,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,cAAc,KAAK,OAAO,CAAA;IAEvD,KAAK,UAAU,OAAO,CAAC,CAAyB;QAC9C,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,WAAW,EAAE;YAAE,MAAM,IAAI,EAAE,CAAA;QAC9C,OAAO,CAAC,aAAa,EAAE,IAAI,IAAI,EAAE,CAAsB,CAAA;IACzD,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,wDAAwD;IACxD,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAC1B,KAAK,UAAU,cAAc;QAC3B,IAAI,iBAAiB,KAAK,UAAU;YAAE,OAAM;QAC5C,iBAAiB,GAAG,UAAU,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,OAAO,CACX,SAAS,EACT;gBACE,IAAI,EAAE;oBACJ;wBACE,+BAA+B,EAAE;4BAC/B,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE;yBAC9G;qBACF;iBACF;gBACD,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;aAC7B,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,CAAwB;QAChD,MAAM,cAAc,EAAE,CAAA;QACtB,gEAAgE;QAChE,sEAAsE;QACtE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QACpH,CAAC;QAED,IAAI,CAAC,cAAc,EAAE;YAAE,MAAM,IAAI,EAAE,CAAA;QACnC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,KAAK,UAAU,WAAW;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,oEAAoE;IACpE,iCAAiC;IACjC,yDAAyD;IACzD,uEAAuE;IACvE,4CAA4C;IAC5C,2EAA2E;IAC3E,2DAA2D;IAC3D,KAAK,UAAU,gBAAgB;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAM;QACR,CAAC;QACD,MAAM,CAAC,GAAG,aAAa,CAAA;QACvB,IAAI,CAAC,CAAC;YAAE,OAAM;QACd,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,CAAA;QAC1C,IAAI,GAAG;YAAE,OAAM;QACf,IAAI,MAAM,GAAc,IAAI,CAAA;QAC5B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/C,IAAI,IAAI,IAAK,IAA2B,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;gBACrE,MAAM,GAAI,IAAmB,CAAC,EAAE,CAAA;gBAChC,MAAK;YACP,CAAC;QACH,CAAC;QACD,IAAI,MAAM,IAAI,IAAI;YAAE,OAAM;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,EAAE;gBACvB,IAAI,EAAE,CAAC,EAAE,gCAAgC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;aAC7B,CAAC,CAAA;YACF,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,SAAS,WAAW;QAClB,cAAc,GAAG,KAAK,CAAA;QACtB,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;YACnD,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,WAAW,GAAG,IAAI,CAAA;QAClB,aAAa,GAAG,IAAI,CAAA;QACpB,WAAW,GAAG,CAAC,CAAC,CAAA;QAChB,cAAc,GAAG,CAAC,CAAC,CAAA;QACnB,WAAW,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,KAAa;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAA;QACxC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sIAAsI,CAAC,CAAA;QACtK,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAA;YACZ,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,EAAE,GAAG,SAAS,CAAA;QAChB,CAAC;QACD,YAAY,EAAE,CAAA;QACd,WAAW,EAAE,CAAA;QACb,SAAS,GAAG,QAAQ,CAAA;QACpB,WAAW,GAAG,KAAK,CAAA;QACnB,2EAA2E;QAC3E,6DAA6D;QAC7D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACjD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS,GAAG,IAAI,CAAA;YAChB,WAAW,GAAG,IAAI,CAAA;YAClB,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,QAAQ,QAAQ,CAAC,GAAG,IAAI;gBAChE,oHAAoH,CACvH,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,SAAS,GAAG,IAAI,CAAA;YAChB,WAAW,GAAG,IAAI,CAAA;YAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,6FAA6F,CAAC,CAAA;QAC/H,CAAC;QACD,UAAU,GAAG,IAAI,CAAA;QACjB,YAAY,GAAG,UAAU,EAAE,CAAA;QAC3B,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACnC,IAAI,UAAU,KAAK,IAAI;gBAAE,OAAM;YAC/B,UAAU,GAAG,IAAI,CAAA;YACjB,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAA;gBACnF,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAA;QACxG,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;QAC7E,CAAC;QACD,MAAM,gBAAgB,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,SAAwB;QAC5C,IAAI,SAAS,KAAK,QAAQ;YAAE,YAAY,EAAE,CAAA;QAC1C,uEAAuE;QACvE,8DAA8D;QAC9D,SAAS,GAAG,IAAI,CAAA;QAChB,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAA;YACZ,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;YACnD,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,WAAW,GAAG,IAAI,CAAA;QAClB,aAAa,GAAG,IAAI,CAAA;QACpB,WAAW,GAAG,CAAC,CAAC,CAAA;QAChB,cAAc,GAAG,CAAC,CAAC,CAAA;QACnB,WAAW,GAAG,IAAI,CAAA;QAElB,MAAM,MAAM,GAA4B,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1G,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAC9C,EAAE,GAAG,IAAI,CAAA;QAET,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAE1E,yEAAyE;QACzE,uEAAuE;QACvE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,KAAgD,CAAA;YACpD,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAA;gBAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACxB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACzB,CAAC,CAAA;YACD,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,OAAO,EAAE,CAAA;gBACT,OAAO,EAAE,CAAA;YACX,CAAC,CAAA;YACD,MAAM,IAAI,GAAG,CAAC,GAAU,EAAE,EAAE;gBAC1B,OAAO,EAAE,CACR;gBAAC,GAA4C,CAAC,cAAc,GAAG,IAAI,CAAA;gBACpE,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,EAAE,CAAA;gBACd,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACV,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC,CAAA;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAA;QACvH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAM;YACvB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;gBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAA;YACxH,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC,CAAC,CAAA;QAGA,kEAAkE;QAClE,wEAAwE;QACxE,kEAAkE;QAClE,MAAM,gBAAgB,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,SAAS,CAAC,SAAwB,EAAE,MAAqB;QACtE,UAAU,EAAE,CAAA;QACZ,WAAW,GAAG,IAAI,CAAA;QAClB,qEAAqE;QACrE,yEAAyE;QACzE,cAAc,GAAG,IAAI,CAAA;QACrB,UAAU,GAAG,OAAO,CAAA;QACpB,gBAAgB,GAAG,SAAS,CAAA;QAC5B,IAAI,MAAM;YAAE,MAAM,GAAG,MAAM,CAAA;QAC3B,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,MAAc;QACxC,UAAU,EAAE,CAAA;QACZ,wEAAwE;QACxE,cAAc,GAAG,IAAI,CAAA;QACrB,UAAU,GAAG,MAAM,CAAA;QACnB,gBAAgB,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAED,KAAK,UAAU,eAAe,CAAC,KAAa;QAC1C,UAAU,EAAE,CAAA;QACZ,cAAc,GAAG,IAAI,CAAA;QACrB,gBAAgB,GAAG,IAAI,CAAA;QACvB,WAAW,GAAG,IAAI,CAAA;QAClB,MAAM,UAAU,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,0EAA0E;IAC1E,qEAAqE;IACrE,2EAA2E;IAE3E,OAAO;QACL,OAAO;QACP,OAAO;QACP,KAAK;QACL,YAAY;QACZ,cAAc;QACd,OAAO;QACP,UAAU;QACV,IAAI;QACJ,iBAAiB;QACjB,iBAAiB;QACjB,WAAW;QACX,SAAS;QACT,YAAY;QACZ,eAAe;QACf,IAAI,EAAE;YACJ,OAAO,EAAE,CAAA;QACX,CAAC;QACD,IAAI,SAAS;YACX,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,MAAM;YACR,OAAO,MAAM,CAAA;QACf,CAAC;QACD,IAAI,aAAa;YACf,OAAO,aAAa,EAAE,CAAA;QACxB,CAAC;QACD,IAAI,WAAW;YACb,OAAO,WAAW,CAAA;QACpB,CAAC;QACD,IAAI,UAAU;YACZ,OAAO,WAAW,IAAI,WAAW,CAAA;QACnC,CAAC;QACD,IAAI,SAAS;YACX,IAAI,SAAS,KAAK,QAAQ;gBAAE,OAAO,UAAU,KAAK,IAAI,CAAA;YACtD,IAAI,SAAS,KAAK,MAAM;gBAAE,OAAO,WAAW,KAAK,IAAI,CAAA;YACrD,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,CAAA;QACjD,CAAC;QACD,IAAI,SAAS;YACX,OAAO,gBAAgB,CAAA;QACzB,CAAC;QACD,IAAI,GAAG;YACL,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,IAAI,UAAU;YACZ,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ import type { EnginePolicy } from './client.js';
3
+ import { type LocalWasmOptions } from './engine/wasm.js';
4
+ import { DEFAULT_DAEMON_PORT } from './ports.js';
5
+ export declare const DAEMON_HOST = "127.0.0.1";
6
+ /**
7
+ * Build stamp of the daemon code: the newest mtime of daemon.js and the
8
+ * workspace packages it runs (renderer, script). The package version only
9
+ * changes on releases; during development every `npm run build` must make the
10
+ * next shim replace a running (idle) daemon, so /health reports the stamp the
11
+ * daemon STARTED with and the shim compares it with the files on disk now.
12
+ */
13
+ export declare function daemonBuildStamp(): string;
14
+ export { DEFAULT_DAEMON_PORT };
15
+ export declare const DEFAULT_BRIDGE_LISTEN = "ws://127.0.0.1:9096/bridge";
16
+ /** Exit after this long without any session (ms). */
17
+ export declare const DEFAULT_IDLE_MS = 60000;
18
+ export type DaemonOptions = {
19
+ port?: number;
20
+ wsUrl?: string;
21
+ bridgeListen?: string;
22
+ idleMs?: number;
23
+ /** Where to log (a file path); undefined = stderr. */
24
+ logFile?: string;
25
+ /** Default engine policy for sessions that do not name one. */
26
+ engine?: EnginePolicy;
27
+ /** Default local WASM settings (a session may pass its own key/origin in headers). */
28
+ wasm?: LocalWasmOptions | null;
29
+ };
30
+ export type DaemonHandle = {
31
+ url: string;
32
+ port: number;
33
+ close: () => Promise<void>;
34
+ };
35
+ /** Starts the daemon; resolves once the HTTP port is bound. Rejects (EADDRINUSE etc.) otherwise. */
36
+ export declare function startDaemon(opts?: DaemonOptions): Promise<DaemonHandle>;
37
+ /** Default log file of a detached daemon (stderr is not connected then). */
38
+ export declare function defaultDaemonLogFile(): string;
package/dist/daemon.js ADDED
@@ -0,0 +1,390 @@
1
+ #!/usr/bin/env node
2
+ // daemon.ts — the one ClassCAD MCP process per machine.
3
+ //
4
+ // Why a daemon: stdio MCP servers are child processes of their host, one per
5
+ // Claude tab. That was fine while the MCP was only a WebSocket client of a
6
+ // ClassCAD worker. With the app bridge it also LISTENS (apps announce share
7
+ // tokens on ws://127.0.0.1:9096/bridge), and a listening port belongs to
8
+ // exactly one process — a second tab would either fail to bind or, worse,
9
+ // bind the other address family of "localhost" and receive half the apps.
10
+ //
11
+ // So the MCP itself is a thin stdio shim (server.ts) that finds or starts
12
+ // this daemon and forwards its host's JSON-RPC to it over HTTP (MCP
13
+ // Streamable HTTP transport). The daemon holds:
14
+ // • the single bridge listener,
15
+ // • one MCP server instance PER SESSION — every tab gets its own engine
16
+ // client, emission config, caches and tool queue (mcp-server.ts),
17
+ // • an idle timer: with no sessions and no app attached it exits by itself
18
+ // (a Drogon-only user never notices it; a WASM user has it running while
19
+ // a tab is shared).
20
+ //
21
+ // HTTP surface (127.0.0.1 only; requests with an Origin header or a
22
+ // non-loopback Host are refused with 403 — no browser may drive it):
23
+ // GET /health → { name:'classcad-mcp', version, build, pid, sessions, apps, bridge, bridgeListen, logFile, uptimeMs }
24
+ // POST /shutdown → exits when no session is active (409 otherwise);
25
+ // ?drain=1 → stops taking NEW sessions (503) and exits as
26
+ // soon as the current ones are gone (a newer build waits)
27
+ // POST/GET/DELETE /mcp → MCP Streamable HTTP (session id in mcp-session-id)
28
+ // A shim may pass `x-classcad-ws-url` on its initialize request to choose the
29
+ // worker URL for that session (defaults to the daemon's CLASSCAD_WS_URL).
30
+ import { createServer } from 'node:http';
31
+ import { randomUUID } from 'node:crypto';
32
+ import { appendFileSync, mkdirSync, statSync } from 'node:fs';
33
+ import { join, dirname } from 'node:path';
34
+ import { tmpdir } from 'node:os';
35
+ import { fileURLToPath } from 'node:url';
36
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
37
+ import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
38
+ import { createMcpServer, DEFAULT_WS_URL, VERSION } from './mcp-server.js';
39
+ import { startBridgeServer } from './bridge/server.js';
40
+ import { wasmOptionsFromEnv } from './engine/wasm.js';
41
+ import { DEFAULT_DAEMON_PORT } from './ports.js';
42
+ export const DAEMON_HOST = '127.0.0.1';
43
+ /** Code the daemon loads besides its own dist: a rebuild of any of them is a new build. */
44
+ const BUILD_DEPENDENCIES = ['@classcad/renderer/node', '@classcad/script'];
45
+ /**
46
+ * Build stamp of the daemon code: the newest mtime of daemon.js and the
47
+ * workspace packages it runs (renderer, script). The package version only
48
+ * changes on releases; during development every `npm run build` must make the
49
+ * next shim replace a running (idle) daemon, so /health reports the stamp the
50
+ * daemon STARTED with and the shim compares it with the files on disk now.
51
+ */
52
+ export function daemonBuildStamp() {
53
+ // Test hook: lets the daemon contract simulate "another build".
54
+ if (process.env.CLASSCAD_MCP_BUILD)
55
+ return process.env.CLASSCAD_MCP_BUILD;
56
+ const files = [import.meta.url];
57
+ for (const dep of BUILD_DEPENDENCIES) {
58
+ try {
59
+ files.push(import.meta.resolve(dep));
60
+ }
61
+ catch {
62
+ /* not resolvable from here: only daemon.js counts */
63
+ }
64
+ }
65
+ let newest = 0;
66
+ for (const file of files) {
67
+ try {
68
+ newest = Math.max(newest, statSync(fileURLToPath(file)).mtimeMs);
69
+ }
70
+ catch {
71
+ /* missing file: ignore */
72
+ }
73
+ }
74
+ return newest > 0 ? new Date(newest).toISOString() : 'unknown';
75
+ }
76
+ const LOOPBACK_HOSTNAMES = new Set(['127.0.0.1', 'localhost', '[::1]']);
77
+ /**
78
+ * Only local non-browser clients (the shims, curl, the CLI) may talk to the
79
+ * daemon. Binding 127.0.0.1 keeps the network out but not web pages: a page can
80
+ * fire simple requests at loopback, and DNS rebinding makes it same-origin.
81
+ * Browsers always send Origin on POST and cross-origin requests, and a rebound
82
+ * request carries the attacker's hostname in Host — reject both.
83
+ */
84
+ function isLoopbackClient(req) {
85
+ if (req.headers.origin !== undefined)
86
+ return false;
87
+ const host = req.headers.host;
88
+ if (!host)
89
+ return false;
90
+ try {
91
+ return LOOPBACK_HOSTNAMES.has(new URL(`http://${host}`).hostname);
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ export { DEFAULT_DAEMON_PORT };
98
+ export const DEFAULT_BRIDGE_LISTEN = 'ws://127.0.0.1:9096/bridge';
99
+ /** Exit after this long without any session (ms). */
100
+ export const DEFAULT_IDLE_MS = 60_000;
101
+ /** Retry interval when the bridge port is taken (ms). */
102
+ const BRIDGE_RETRY_MS = 5_000;
103
+ function makeLog(logFile) {
104
+ if (!logFile)
105
+ return msg => process.stderr.write(`[classcad-mcp daemon] ${msg}\n`);
106
+ try {
107
+ mkdirSync(dirname(logFile), { recursive: true });
108
+ }
109
+ catch {
110
+ /* best effort */
111
+ }
112
+ return msg => {
113
+ try {
114
+ appendFileSync(logFile, `${new Date().toISOString()} ${msg}\n`);
115
+ }
116
+ catch {
117
+ /* never fail on logging */
118
+ }
119
+ };
120
+ }
121
+ function readJsonBody(req) {
122
+ return new Promise((resolve, reject) => {
123
+ const chunks = [];
124
+ req.on('data', c => chunks.push(Buffer.isBuffer(c) ? c : Buffer.from(c)));
125
+ req.on('end', () => {
126
+ if (chunks.length === 0)
127
+ return resolve(undefined);
128
+ try {
129
+ resolve(JSON.parse(Buffer.concat(chunks).toString('utf8')));
130
+ }
131
+ catch (e) {
132
+ reject(e);
133
+ }
134
+ });
135
+ req.on('error', reject);
136
+ });
137
+ }
138
+ function sendJson(res, status, body) {
139
+ const text = JSON.stringify(body);
140
+ res.writeHead(status, { 'content-type': 'application/json', 'content-length': Buffer.byteLength(text) });
141
+ res.end(text);
142
+ }
143
+ /** Starts the daemon; resolves once the HTTP port is bound. Rejects (EADDRINUSE etc.) otherwise. */
144
+ export async function startDaemon(opts = {}) {
145
+ const port = opts.port ?? DEFAULT_DAEMON_PORT;
146
+ const wsUrl = opts.wsUrl ?? DEFAULT_WS_URL;
147
+ const bridgeListen = opts.bridgeListen ?? DEFAULT_BRIDGE_LISTEN;
148
+ const idleMs = opts.idleMs ?? DEFAULT_IDLE_MS;
149
+ const log = makeLog(opts.logFile);
150
+ const startedAt = Date.now();
151
+ // Taken once: the code this process runs, not whatever a later build left on disk.
152
+ const build = daemonBuildStamp();
153
+ // The bridge listener: one per machine, hence one per daemon. Apps announce
154
+ // their share tokens here; sessions attach to them through the registry.
155
+ // If the port is taken (typically an MCP of the previous, pre-daemon build
156
+ // that a still-open tab keeps alive) the daemon runs without a bridge and
157
+ // keeps retrying: as soon as the old process is gone the listener comes up,
158
+ // no restart needed.
159
+ let bridgeRegistry = null;
160
+ let bridgeRetry = null;
161
+ let closing = false;
162
+ // Draining: a newer build asked us to go. Existing sessions run to their
163
+ // end, new ones are refused, exit right after the last one closes.
164
+ let draining = false;
165
+ const bindBridge = async () => {
166
+ try {
167
+ bridgeRegistry = await startBridgeServer({ listen: bridgeListen, log });
168
+ log(`bridge listener on ${bridgeRegistry.url}`);
169
+ }
170
+ catch (err) {
171
+ log(`bridge listener failed (${bridgeListen}): ${err instanceof Error ? err.message : err} — retrying every ${BRIDGE_RETRY_MS / 1000}s`);
172
+ if (!closing)
173
+ bridgeRetry = setTimeout(() => void bindBridge(), BRIDGE_RETRY_MS);
174
+ }
175
+ };
176
+ await bindBridge();
177
+ const sessions = new Map();
178
+ let idleTimer = null;
179
+ // "Idle" = no MCP session AND no app holding a bridge connection. A shared
180
+ // WASM tab counts as use: its bridge must stay up so the next tab's
181
+ // use_session attaches at once instead of waiting for the app's reconnect
182
+ // backoff. The registry has no change event, so the timer re-checks itself.
183
+ const appCount = () => bridgeRegistry?.list().length ?? 0;
184
+ const armIdle = () => {
185
+ if (idleTimer)
186
+ clearTimeout(idleTimer);
187
+ idleTimer = setTimeout(() => {
188
+ if (closing || sessions.size > 0)
189
+ return;
190
+ if (appCount() > 0) {
191
+ armIdle();
192
+ return;
193
+ }
194
+ log(`idle for ${idleMs} ms with no sessions and no apps — exiting`);
195
+ void shutdown(0);
196
+ }, idleMs);
197
+ };
198
+ const disarmIdle = () => {
199
+ if (idleTimer)
200
+ clearTimeout(idleTimer);
201
+ idleTimer = null;
202
+ };
203
+ const dropSession = (id, why) => {
204
+ const s = sessions.get(id);
205
+ if (!s)
206
+ return;
207
+ sessions.delete(id);
208
+ try {
209
+ s.client.close();
210
+ }
211
+ catch {
212
+ /* already closed */
213
+ }
214
+ log(`session ${id} closed (${why}); ${sessions.size} left`);
215
+ if (sessions.size === 0) {
216
+ if (draining) {
217
+ log('drained — exiting for the newer build');
218
+ setTimeout(() => void shutdown(0), 50);
219
+ }
220
+ else
221
+ armIdle();
222
+ }
223
+ };
224
+ const httpServer = createServer(async (req, res) => {
225
+ try {
226
+ if (!isLoopbackClient(req)) {
227
+ log(`refused ${req.method} ${req.url} (host ${req.headers.host ?? '-'}, origin ${req.headers.origin ?? '-'})`);
228
+ sendJson(res, 403, { error: 'forbidden: local non-browser clients only' });
229
+ return;
230
+ }
231
+ const url = new URL(req.url ?? '/', `http://${DAEMON_HOST}`);
232
+ if (url.pathname === '/health') {
233
+ sendJson(res, 200, {
234
+ name: 'classcad-mcp',
235
+ version: VERSION,
236
+ build,
237
+ pid: process.pid,
238
+ sessions: sessions.size,
239
+ draining,
240
+ apps: appCount(),
241
+ bridge: bridgeRegistry?.url ?? null,
242
+ bridgeListen,
243
+ logFile: opts.logFile ?? null,
244
+ uptimeMs: Date.now() - startedAt,
245
+ });
246
+ return;
247
+ }
248
+ if (url.pathname === '/shutdown' && req.method === 'POST') {
249
+ if (sessions.size > 0) {
250
+ if (url.searchParams.get('drain') === '1') {
251
+ draining = true;
252
+ log(`draining: ${sessions.size} session(s) keep running, no new ones; exit when they are gone`);
253
+ sendJson(res, 202, { ok: true, draining: true, sessions: sessions.size });
254
+ return;
255
+ }
256
+ sendJson(res, 409, { ok: false, sessions: sessions.size, error: 'sessions active' });
257
+ return;
258
+ }
259
+ sendJson(res, 200, { ok: true });
260
+ log('shutdown requested');
261
+ setTimeout(() => void shutdown(0), 50);
262
+ return;
263
+ }
264
+ if (url.pathname !== '/mcp') {
265
+ sendJson(res, 404, { error: 'not found' });
266
+ return;
267
+ }
268
+ const sid = typeof req.headers['mcp-session-id'] === 'string' ? req.headers['mcp-session-id'] : undefined;
269
+ if (sid) {
270
+ const s = sessions.get(sid);
271
+ if (!s) {
272
+ sendJson(res, 404, { jsonrpc: '2.0', error: { code: -32001, message: 'Session not found' }, id: null });
273
+ return;
274
+ }
275
+ const body = req.method === 'POST' ? await readJsonBody(req) : undefined;
276
+ await s.transport.handleRequest(req, res, body);
277
+ return;
278
+ }
279
+ if (req.method !== 'POST') {
280
+ sendJson(res, 400, { jsonrpc: '2.0', error: { code: -32000, message: 'Bad request: no session' }, id: null });
281
+ return;
282
+ }
283
+ const body = await readJsonBody(req);
284
+ if (!isInitializeRequest(body)) {
285
+ sendJson(res, 400, { jsonrpc: '2.0', error: { code: -32000, message: 'Bad request: expected initialize' }, id: null });
286
+ return;
287
+ }
288
+ if (draining) {
289
+ sendJson(res, 503, { jsonrpc: '2.0', error: { code: -32000, message: 'daemon is draining (a newer build is waiting)' }, id: null });
290
+ return;
291
+ }
292
+ // A new MCP session: its own server instance and engine client. The shim
293
+ // may name the worker, the engine policy and the local-WASM key/origin it
294
+ // was configured with (loopback headers; the daemon's own env is the default).
295
+ const hdr = (name) => {
296
+ const v = req.headers[name];
297
+ return typeof v === 'string' && v.length > 0 ? v : undefined;
298
+ };
299
+ const sessionWsUrl = hdr('x-classcad-ws-url') ?? wsUrl;
300
+ const enginePolicy = hdr('x-classcad-engine') ?? opts.engine ?? 'auto';
301
+ const key = hdr('x-classcad-wasm-key') ?? opts.wasm?.key;
302
+ const sessionWasm = key
303
+ ? { ...(opts.wasm ?? { key }), key, origin: hdr('x-classcad-wasm-origin') ?? opts.wasm?.origin }
304
+ : null;
305
+ const sessionLog = (msg) => log(`[${transport.sessionId ?? 'new'}] ${msg}`);
306
+ const { server, client } = await createMcpServer({ wsUrl: sessionWsUrl, bridge: () => bridgeRegistry, engine: enginePolicy, wasm: sessionWasm, log: sessionLog });
307
+ const transport = new StreamableHTTPServerTransport({
308
+ sessionIdGenerator: () => randomUUID(),
309
+ onsessioninitialized: id => {
310
+ disarmIdle();
311
+ sessions.set(id, { transport, server, client, createdAt: Date.now() });
312
+ log(`session ${id} opened (worker ${sessionWsUrl}, engine ${enginePolicy}, local wasm ${sessionWasm ? 'available' : 'no key'}); ${sessions.size} active`);
313
+ },
314
+ });
315
+ transport.onclose = () => {
316
+ if (transport.sessionId)
317
+ dropSession(transport.sessionId, 'transport closed');
318
+ };
319
+ await server.connect(transport);
320
+ await transport.handleRequest(req, res, body);
321
+ }
322
+ catch (err) {
323
+ log(`request failed: ${err instanceof Error ? err.stack ?? err.message : err}`);
324
+ if (!res.headersSent)
325
+ sendJson(res, 500, { error: err instanceof Error ? err.message : String(err) });
326
+ else
327
+ res.end();
328
+ }
329
+ });
330
+ await new Promise((resolve, reject) => {
331
+ httpServer.once('error', reject);
332
+ httpServer.listen(port, DAEMON_HOST, () => {
333
+ httpServer.off('error', reject);
334
+ resolve();
335
+ });
336
+ });
337
+ const url = `http://${DAEMON_HOST}:${port}`;
338
+ log(`daemon ${VERSION} pid ${process.pid} listening on ${url}`);
339
+ armIdle();
340
+ const shutdown = async (code) => {
341
+ if (closing)
342
+ return;
343
+ closing = true;
344
+ disarmIdle();
345
+ if (bridgeRetry)
346
+ clearTimeout(bridgeRetry);
347
+ for (const [id] of sessions)
348
+ dropSession(id, 'daemon shutdown');
349
+ if (bridgeRegistry)
350
+ await bridgeRegistry.close().catch(() => { });
351
+ await new Promise(r => httpServer.close(() => r()));
352
+ log('stopped');
353
+ if (process.env.CLASSCAD_MCP_DAEMON === '1')
354
+ process.exit(code);
355
+ };
356
+ process.once('SIGINT', () => void shutdown(0));
357
+ process.once('SIGTERM', () => void shutdown(0));
358
+ return { url, port, close: () => shutdown(0) };
359
+ }
360
+ /** Default log file of a detached daemon (stderr is not connected then). */
361
+ export function defaultDaemonLogFile() {
362
+ return join(tmpdir(), 'classcad-mcp', 'daemon.log');
363
+ }
364
+ // Run directly: `node dist/daemon.js` (what the shim spawns, detached).
365
+ const isMain = (() => {
366
+ try {
367
+ return process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1];
368
+ }
369
+ catch {
370
+ return false;
371
+ }
372
+ })();
373
+ if (isMain) {
374
+ const port = Number(process.env.CLASSCAD_MCP_PORT ?? DEFAULT_DAEMON_PORT);
375
+ startDaemon({
376
+ port,
377
+ wsUrl: process.env.CLASSCAD_WS_URL,
378
+ bridgeListen: process.env.CLASSCAD_BRIDGE_LISTEN,
379
+ idleMs: process.env.CLASSCAD_DAEMON_IDLE_MS ? Number(process.env.CLASSCAD_DAEMON_IDLE_MS) : undefined,
380
+ logFile: process.env.CLASSCAD_MCP_LOG ?? (process.env.CLASSCAD_MCP_DAEMON === '1' ? defaultDaemonLogFile() : undefined),
381
+ engine: process.env.CLASSCAD_ENGINE,
382
+ wasm: wasmOptionsFromEnv(),
383
+ }).catch(err => {
384
+ // Typically EADDRINUSE: another daemon won the race, or a foreign program
385
+ // holds the port. The shim polls /health and decides what to do.
386
+ process.stderr.write(`[classcad-mcp daemon] cannot start on ${DAEMON_HOST}:${port}: ${err?.message ?? err}\n`);
387
+ process.exit(3);
388
+ });
389
+ }
390
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};