browser-debug-mcp-bridge 1.10.0 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +267 -195
  2. package/apps/mcp-server/dist/db/events-repository.js +61 -9
  3. package/apps/mcp-server/dist/db/events-repository.js.map +1 -1
  4. package/apps/mcp-server/dist/db/migrations.js +470 -70
  5. package/apps/mcp-server/dist/db/migrations.js.map +1 -1
  6. package/apps/mcp-server/dist/db/schema.js +134 -1
  7. package/apps/mcp-server/dist/db/schema.js.map +1 -1
  8. package/apps/mcp-server/dist/document-response-rewriter.js +196 -0
  9. package/apps/mcp-server/dist/document-response-rewriter.js.map +1 -0
  10. package/apps/mcp-server/dist/json-rewrite.js +189 -0
  11. package/apps/mcp-server/dist/json-rewrite.js.map +1 -0
  12. package/apps/mcp-server/dist/main.js +339 -2
  13. package/apps/mcp-server/dist/main.js.map +1 -1
  14. package/apps/mcp-server/dist/mcp/server.js +2712 -246
  15. package/apps/mcp-server/dist/mcp/server.js.map +1 -1
  16. package/apps/mcp-server/dist/next-asset-mapper.js +701 -0
  17. package/apps/mcp-server/dist/next-asset-mapper.js.map +1 -0
  18. package/apps/mcp-server/dist/next-source-override-planner.js +601 -0
  19. package/apps/mcp-server/dist/next-source-override-planner.js.map +1 -0
  20. package/apps/mcp-server/dist/override-audit-contract.js +51 -0
  21. package/apps/mcp-server/dist/override-audit-contract.js.map +1 -0
  22. package/apps/mcp-server/dist/override-audit.js +740 -0
  23. package/apps/mcp-server/dist/override-audit.js.map +1 -0
  24. package/apps/mcp-server/dist/override-capabilities.js +157 -0
  25. package/apps/mcp-server/dist/override-capabilities.js.map +1 -0
  26. package/apps/mcp-server/dist/override-observed-assets.js +179 -0
  27. package/apps/mcp-server/dist/override-observed-assets.js.map +1 -0
  28. package/apps/mcp-server/dist/override-poc.js +336 -0
  29. package/apps/mcp-server/dist/override-poc.js.map +1 -0
  30. package/apps/mcp-server/dist/override-profile-generator.js +403 -0
  31. package/apps/mcp-server/dist/override-profile-generator.js.map +1 -0
  32. package/apps/mcp-server/dist/override-response-planner.js +559 -0
  33. package/apps/mcp-server/dist/override-response-planner.js.map +1 -0
  34. package/apps/mcp-server/dist/override-rule-types.js +32 -0
  35. package/apps/mcp-server/dist/override-rule-types.js.map +1 -0
  36. package/apps/mcp-server/dist/retention.js +4 -3
  37. package/apps/mcp-server/dist/retention.js.map +1 -1
  38. package/apps/mcp-server/dist/rsc-flight-patch-safety.js +269 -0
  39. package/apps/mcp-server/dist/rsc-flight-patch-safety.js.map +1 -0
  40. package/apps/mcp-server/dist/websocket/messages.js +5 -0
  41. package/apps/mcp-server/dist/websocket/messages.js.map +1 -1
  42. package/apps/mcp-server/dist/websocket/websocket-server.js +10 -0
  43. package/apps/mcp-server/dist/websocket/websocket-server.js.map +1 -1
  44. package/apps/mcp-server/package.json +1 -0
  45. package/package.json +12 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-asset-mapper.js","sourceRoot":"","sources":["../src/next-asset-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EACL,qBAAqB,EACrB,8BAA8B,GAE/B,MAAM,0BAA0B,CAAC;AAsHlC,MAAM,4BAA4B,GAAG;IACnC,qBAAqB;IACrB,yBAAyB;IACzB,8BAA8B;CAC/B,CAAC;AAEF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD,MAAM,mCAAmC,GAAG,KAAK,CAAC;AAClD,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC3D,MAAM,4BAA4B,GAAG,EAAE,CAAC;AACxC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAE1C,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA8B,EAAE,GAAW,EAAE,UAA0D;IACpI,IAAI,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IAChE,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAChF,MAAM,aAAa,GAAG,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAClF,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;IAE9E,IAAI,IAAI,KAAK,UAAU,IAAI,YAAY,KAAK,UAAU,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACxF,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACtH,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACjD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,aAAa,KAAK,OAAO,IAAI,aAAa,KAAK,gBAAgB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrH,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa;IAC9C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnF,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAC7D,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC;WACzC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC;WACnC,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/D,OAAO;QACL,GAAG;QACH,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,QAAQ;QACR,aAAa,EAAE,8BAA8B,CAAC,KAAK,CAAC,aAAa,CAAC;QAClE,YAAY,EAAE,uBAAuB,CAAC,KAAK,CAAC,YAAY,CAAC;QACzD,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,WAAW,CAAC;QACvD,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC,UAAU,CAAC;QACtD,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC;QACzC,aAAa,EAAE,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC;QAC3D,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,EAAE,EAAE,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,SAAS,EAAE,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC;QACnD,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI;QAC/B,eAAe,EAAE,KAAK,CAAC,eAAe,KAAK,IAAI;QAC/C,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI;QAC7C,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,MAAe;IAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2C,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,aAAa,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;YAC1D,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,UAAU,CAAC,eAAe,CAAC;YAClF,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC;YAChE,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;YACjD,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC;YAC5E,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5F,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC;YACzE,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC;YACtE,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC;YACnE,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,IAAI,UAAU,CAAC,cAAc,CAAC;YAC/E,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC;YAChE,SAAS;QACX,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAc,EACd,OAAiD,EACjD,UAA8F;IAE9F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,EAAU,EAAE,SAAS,EAAE,IAAI,GAAG,EAAU,EAAE,OAAO,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;QAClJ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9C,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACxD,yBAAyB,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB,EAAE,OAAsC,EAAE,SAAmB;IAChG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,oCAAoC,CAC3C,OAAe,EACf,UAA8F,EAC9F,QAAkB;IAElB,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,SAAS,CACP,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EACjC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAC/D,aAAa,CACd,CAAC;IAEF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAClG,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,8CAA8C,YAAY,EAAE,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QAED,KAAK,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,SAAS;YACX,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,SAAS;gBACX,CAAC;gBACD,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,EAAU,EAAE,SAAS,EAAE,IAAI,GAAG,EAAU,EAAE,OAAO,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;gBAClJ,IAAI,KAAK,EAAE,CAAC;oBACV,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACtC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC;gBACjE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,UAAkB,EAAE,UAAoB;IACxE,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,aAAqB;IACjD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,aAAa,MAAM,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QAC9E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,aAAa;QACb,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,IAAI,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IAC5D,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAClD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7C,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,WAAmB,EAAE,UAAkB;IAC7E,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,eAAuB,EAAE,eAAuB;IACrF,MAAM,mBAAmB,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,mBAAmB,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAC1D,OAAO,mBAAmB,KAAK,mBAAmB;WAC7C,mBAAmB,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC;WACvD,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB;IAChC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,OAAO,OAAO;SACX,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC;SAC3C,OAAO,CAAC,oBAAoB,EAAE,QAAQ,CAAC;SACvC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,QAAkB,EAClB,QAAgB;IAEhB,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IACnF,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,QAAQ,EAAE,CAAC;QAC/D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAClG,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QACD,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,UAAU,GAAG,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,GAAW,EACX,OAAgD;IAEhD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAExE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,MAAM,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,MAAW,EACX,WAAmB,EACnB,MAAmC;IAEnC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;QAC/D,OAAO,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS,IAAI,CAAC,CAAC;YACf,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,gBAAwB,EAAE,YAAqB;IAClF,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,YAAY,IAAI,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAiF,CAAC;IAEpH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,yCAAyC,OAAO,iDAAiD,CAAC,CAAC;QACjH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChF,CAAC;IAED,KAAK,MAAM,oBAAoB,IAAI,4BAA4B,EAAE,CAAC;QAChE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,yBAAyB,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC5E,CAAC;IAED,oCAAoC,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,yCAAyC,UAAU,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAC/F,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACtD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC;QAC3C,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;YACjC,GAAG,gBAAgB;YACnB,GAAG,eAAe;SACnB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,OAAO;YACL,SAAS;YACT,aAAa;YACb,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAC3C,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC;YAC/B,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,EAAE;YACzC,eAAe,EAAE,eAAe,CAAC,IAAI,EAAE;YACvC,OAAO;YACP,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAClE,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SAC3C,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,OAAO;QACP,MAAM;QACN,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACrE,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAuC,EAAE,QAAkB;IACnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,iFAAiF,EAAE,CAAC,CAAC;IACpI,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,OAAO,EAAE,sIAAsI,EAAE,CAAC,CAAC;IACvM,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,uFAAuF,EAAE,CAAC,CAAC;IAC5I,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,iGAAiG,EAAE,CAAC,CAAC;IAC3J,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0EAA0E,EAAE,CAAC,CAAC;IAC3H,CAAC;IAED,OAAO,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,wHAAwH,EAAE,CAAC,CAAC;AAC9K,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAOrC;IACC,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClG,MAAM,cAAc,GAAG,+BAA+B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/E,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QACpD,CAAC,CAAC,OAAO,CAAC,WAAW;aAClB,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACxF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAG,cAAc,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAC9F,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAgC,EAAE,CAAC;IACnD,MAAM,uBAAuB,GAAsC,EAAE,CAAC;IAEtE,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACzB,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,SAAS;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;YAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1E,MAAM,OAAO,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,KAAK,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC/B,KAAK,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,YAAY,EAAE,CAAC;gBACjB,KAAK,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,KAAK,IAAI,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,KAAK,IAAI,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACzD,CAAC;QAED,UAAU,CAAC,IAAI,CAAC;YACd,cAAc,EAAE,QAAQ,CAAC,GAAG;YAC5B,SAAS;YACT,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC;YACtC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO;YACP,QAAQ;YACR,kBAAkB;YAClB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU;SAChC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACtG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAExB,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK;QACL,WAAW;QACX,kBAAkB,EAAE,cAAc,CAAC,MAAM;QACzC,sBAAsB,EAAE,kBAAkB,CAAC,MAAM;QACjD,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QACtC,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM;QAClF,UAAU,EAAE,gBAAgB;QAC5B,uBAAuB;QACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAkB,EAAE,WAAmB;IACtE,OAAO;QACL,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,UAAU;QACV,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAoC,EAAE,KAA0B;IAC7F,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACrD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;QAC9C,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACxC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACpD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACxC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACzE,CAAC;IAED,SAAS,CAAC,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,SAAoC,EACpC,OAAgD,EAChD,UAA8E;IAE9E,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrD,KAAK,GAAG;YACN,MAAM;YACN,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;YAC1B,SAAS,EAAE,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC5D,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO;YACL,SAAS;YACT,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;SACpC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO;YACL,SAAS;YACT,MAAM,EAAE,aAAa;YACrB,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;YACnC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,gBAAgB,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO;YACL,SAAS;YACT,MAAM,EAAE,SAAS;YACjB,gBAAgB;YAChB,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;YACzC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;YACnC,wBAAwB,EAAE,IAAI;SAC/B,CAAC;IACJ,CAAC;IAED,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7G,OAAO;QACL,SAAS;QACT,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW;QAClE,gBAAgB;QAChB,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;QACzC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;QACnC,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAYpD;IACC,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,qBAAqB,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,wBAAwB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC;QACzH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC7D,CAAC,CAAC,mCAAmC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,uBAAuB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACtH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7D,CAAC,CAAC,kCAAkC,CAAC;IACvC,MAAM,kBAAkB,GAAG,OAAO,OAAO,CAAC,kBAAkB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACtH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACrD,CAAC,CAAC,4BAA4B,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,0BAA0B,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC;QAC/H,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,+BAA+B,CAAC;IACpC,MAAM,YAAY,GAAG,uBAAuB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAC9E,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAiE,CAAC;IAE5F,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxF,IAAI,YAAY,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,OAAO,0CAA0C,kBAAkB,gCAAgC,CAAC,CAAC;IACpJ,CAAC;IAED,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QAC3E,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;QACrF,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;YAC9C,YAAY,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxC,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxC,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,WAAW,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7I,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,601 @@
1
+ import { spawn } from 'child_process';
2
+ import { createHash, randomUUID } from 'crypto';
3
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from 'fs';
4
+ import { dirname, extname, isAbsolute, relative, resolve } from 'path';
5
+ import { createNextAssetIndex, mapNextOverrideAssets, mapNextOverrideAssetsWithDrift, nextAssetSourceMatches, normalizeNextSourcePath, } from './next-asset-mapper.js';
6
+ const DEFAULT_BUILD_TIMEOUT_MS = 180_000;
7
+ const DEFAULT_OVERLAY_TTL_MS = 24 * 60 * 60 * 1000;
8
+ const CAPTURED_OUTPUT_TAIL_BYTES = 24 * 1024;
9
+ const LOW_CONFIDENCE_SCORE = 44;
10
+ function isRecord(value) {
11
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
12
+ }
13
+ function normalizeOptionalString(value) {
14
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
15
+ }
16
+ function normalizeSourceEdits(values) {
17
+ if (!Array.isArray(values)) {
18
+ return [];
19
+ }
20
+ const edits = [];
21
+ for (const value of values) {
22
+ if (!isRecord(value)) {
23
+ continue;
24
+ }
25
+ const filePath = normalizeOptionalString(value.filePath);
26
+ if (!filePath) {
27
+ continue;
28
+ }
29
+ const content = typeof value.content === 'string' ? value.content : undefined;
30
+ const search = typeof value.search === 'string' ? value.search : undefined;
31
+ const replacement = typeof value.replacement === 'string'
32
+ ? value.replacement
33
+ : typeof value.replace === 'string'
34
+ ? value.replace
35
+ : undefined;
36
+ edits.push({
37
+ filePath,
38
+ content,
39
+ search,
40
+ replacement,
41
+ replaceAll: value.replaceAll === true,
42
+ });
43
+ }
44
+ return edits;
45
+ }
46
+ function isInsidePath(parent, child) {
47
+ const relativePath = relative(parent, child);
48
+ return relativePath === '' || (!relativePath.startsWith('..') && !isAbsolute(relativePath));
49
+ }
50
+ function findWorkspaceRoot(projectRoot) {
51
+ let current = resolve(projectRoot);
52
+ while (true) {
53
+ if (existsSync(resolve(current, 'package.json'))) {
54
+ return current;
55
+ }
56
+ const parent = resolve(current, '..');
57
+ if (parent === current) {
58
+ return resolve(projectRoot);
59
+ }
60
+ current = parent;
61
+ }
62
+ }
63
+ function findNextBin(projectRoot, workspaceRoot) {
64
+ let current = resolve(projectRoot);
65
+ while (true) {
66
+ const candidate = resolve(current, 'node_modules', 'next', 'dist', 'bin', 'next');
67
+ if (existsSync(candidate)) {
68
+ return candidate;
69
+ }
70
+ const parent = resolve(current, '..');
71
+ if (parent === current) {
72
+ break;
73
+ }
74
+ current = parent;
75
+ }
76
+ const workspaceCandidate = resolve(workspaceRoot, 'node_modules', 'next', 'dist', 'bin', 'next');
77
+ if (existsSync(workspaceCandidate)) {
78
+ return workspaceCandidate;
79
+ }
80
+ throw new Error(`Unable to locate Next.js CLI from ${projectRoot}. Install next in the project workspace before planning source overrides.`);
81
+ }
82
+ function createOverlay(projectRoot, workspaceRoot) {
83
+ const relativeProjectRoot = relative(workspaceRoot, projectRoot);
84
+ if (relativeProjectRoot.startsWith('..')) {
85
+ throw new Error(`projectRoot must be inside the detected workspace root (${workspaceRoot})`);
86
+ }
87
+ const overlayRoot = resolve(workspaceRoot, 'tmp', 'bn', randomUUID().slice(0, 8));
88
+ const overlayProjectRoot = resolve(overlayRoot, relativeProjectRoot);
89
+ mkdirSync(dirname(overlayProjectRoot), { recursive: true });
90
+ const rootFiles = ['package.json', 'nx.json', 'tsconfig.base.json', 'tsconfig.json', 'jsconfig.json'];
91
+ for (const rootFile of rootFiles) {
92
+ const sourcePath = resolve(workspaceRoot, rootFile);
93
+ if (!existsSync(sourcePath)) {
94
+ continue;
95
+ }
96
+ const targetPath = resolve(overlayRoot, rootFile);
97
+ mkdirSync(dirname(targetPath), { recursive: true });
98
+ cpSync(sourcePath, targetPath);
99
+ }
100
+ cpSync(projectRoot, overlayProjectRoot, {
101
+ recursive: true,
102
+ filter: (sourcePath) => {
103
+ const name = sourcePath.split(/[\\/]/).pop() ?? '';
104
+ return !['.next', 'node_modules', 'dist', 'out', 'coverage', '.turbo'].includes(name);
105
+ },
106
+ });
107
+ return { overlayRoot, overlayProjectRoot };
108
+ }
109
+ export function cleanupNextSourceOverlayRoots(workspaceRoot, ttlMs = DEFAULT_OVERLAY_TTL_MS, now = Date.now()) {
110
+ const overlayBase = resolve(workspaceRoot, 'tmp', 'bn');
111
+ if (!existsSync(overlayBase)) {
112
+ return 0;
113
+ }
114
+ let removed = 0;
115
+ for (const entry of readdirSync(overlayBase, { withFileTypes: true })) {
116
+ if (!entry.isDirectory()) {
117
+ continue;
118
+ }
119
+ const fullPath = resolve(overlayBase, entry.name);
120
+ if (ttlMs <= 0) {
121
+ rmSync(fullPath, { recursive: true, force: true });
122
+ removed += 1;
123
+ continue;
124
+ }
125
+ const ageMs = now - statSync(fullPath).mtimeMs;
126
+ if (ageMs >= ttlMs) {
127
+ rmSync(fullPath, { recursive: true, force: true });
128
+ removed += 1;
129
+ }
130
+ }
131
+ return removed;
132
+ }
133
+ function applySourceEdits(overlayProjectRoot, edits) {
134
+ const applied = [];
135
+ for (const edit of edits) {
136
+ const absolutePath = resolve(overlayProjectRoot, edit.filePath);
137
+ if (!isInsidePath(overlayProjectRoot, absolutePath)) {
138
+ throw new Error(`source edit path escapes projectRoot: ${edit.filePath}`);
139
+ }
140
+ if (edit.content !== undefined) {
141
+ mkdirSync(dirname(absolutePath), { recursive: true });
142
+ writeFileSync(absolutePath, edit.content, 'utf8');
143
+ applied.push({
144
+ filePath: edit.filePath,
145
+ absolutePath,
146
+ operation: 'replace_content',
147
+ replacements: existsSync(absolutePath) ? 1 : 0,
148
+ });
149
+ continue;
150
+ }
151
+ if (edit.search === undefined || edit.replacement === undefined) {
152
+ throw new Error(`source edit for ${edit.filePath} must provide content or search plus replacement`);
153
+ }
154
+ if (!existsSync(absolutePath)) {
155
+ throw new Error(`source edit target not found: ${edit.filePath}`);
156
+ }
157
+ const originalContent = readFileSync(absolutePath, 'utf8');
158
+ if (!originalContent.includes(edit.search)) {
159
+ throw new Error(`source edit search text not found in ${edit.filePath}`);
160
+ }
161
+ const replacements = edit.replaceAll ? originalContent.split(edit.search).length - 1 : 1;
162
+ const updatedContent = edit.replaceAll
163
+ ? originalContent.split(edit.search).join(edit.replacement)
164
+ : originalContent.replace(edit.search, edit.replacement);
165
+ writeFileSync(absolutePath, updatedContent, 'utf8');
166
+ applied.push({
167
+ filePath: edit.filePath,
168
+ absolutePath,
169
+ operation: 'replace_text',
170
+ replacements,
171
+ });
172
+ }
173
+ return applied;
174
+ }
175
+ function appendOutputTail(current, chunk) {
176
+ const next = current + chunk.toString('utf8');
177
+ if (Buffer.byteLength(next, 'utf8') <= CAPTURED_OUTPUT_TAIL_BYTES) {
178
+ return next;
179
+ }
180
+ return next.slice(next.length - CAPTURED_OUTPUT_TAIL_BYTES);
181
+ }
182
+ async function runNextBuild(options) {
183
+ const nextBin = findNextBin(options.projectRoot, options.workspaceRoot);
184
+ const startedAt = Date.now();
185
+ const args = [nextBin, 'build', options.overlayProjectRoot];
186
+ const child = spawn(process.execPath, args, {
187
+ cwd: options.workspaceRoot,
188
+ env: {
189
+ ...process.env,
190
+ NEXT_TELEMETRY_DISABLED: '1',
191
+ },
192
+ windowsHide: true,
193
+ });
194
+ let stdoutTail = '';
195
+ let stderrTail = '';
196
+ child.stdout.on('data', (chunk) => {
197
+ stdoutTail = appendOutputTail(stdoutTail, chunk);
198
+ });
199
+ child.stderr.on('data', (chunk) => {
200
+ stderrTail = appendOutputTail(stderrTail, chunk);
201
+ });
202
+ const exitCode = await new Promise((resolvePromise, reject) => {
203
+ const timeout = setTimeout(() => {
204
+ child.kill();
205
+ reject(new Error(`Next.js overlay build timed out after ${options.timeoutMs}ms`));
206
+ }, options.timeoutMs);
207
+ child.on('error', (error) => {
208
+ clearTimeout(timeout);
209
+ reject(error);
210
+ });
211
+ child.on('close', (code) => {
212
+ clearTimeout(timeout);
213
+ resolvePromise(code ?? 1);
214
+ });
215
+ });
216
+ const build = {
217
+ command: `${process.execPath} ${nextBin} build ${options.overlayProjectRoot}`,
218
+ cwd: options.workspaceRoot,
219
+ exitCode,
220
+ durationMs: Date.now() - startedAt,
221
+ stdoutTail,
222
+ stderrTail,
223
+ };
224
+ if (exitCode !== 0) {
225
+ throw new Error(`Next.js overlay build failed with exit code ${exitCode}\n${stderrTail || stdoutTail}`);
226
+ }
227
+ return build;
228
+ }
229
+ function getContentType(assetPath) {
230
+ const extension = extname(assetPath).toLowerCase();
231
+ if (extension === '.css') {
232
+ return 'text/css; charset=utf-8';
233
+ }
234
+ return 'application/javascript; charset=utf-8';
235
+ }
236
+ function hashFile(filePath) {
237
+ return createHash('sha256').update(readFileSync(filePath)).digest('hex');
238
+ }
239
+ function extractQuotedLiterals(value) {
240
+ const literals = [];
241
+ for (const match of value.matchAll(/(['"])((?:\\.|(?!\1)[\s\S])*?)\1/g)) {
242
+ if (match[2] !== undefined) {
243
+ literals.push(match[2].replace(/\\'/g, "'").replace(/\\"/g, '"'));
244
+ }
245
+ }
246
+ return literals;
247
+ }
248
+ function inferAssetTextReplacements(edits) {
249
+ const replacements = new Map();
250
+ for (const edit of edits) {
251
+ if (!edit.search || edit.replacement === undefined) {
252
+ continue;
253
+ }
254
+ const oldLiterals = extractQuotedLiterals(edit.search);
255
+ const newLiterals = extractQuotedLiterals(edit.replacement);
256
+ const pairCount = Math.min(oldLiterals.length, newLiterals.length);
257
+ for (let index = 0; index < pairCount; index += 1) {
258
+ const search = oldLiterals[index];
259
+ const replacement = newLiterals[index];
260
+ if (search && replacement !== undefined && search !== replacement) {
261
+ replacements.set(search, replacement);
262
+ }
263
+ }
264
+ }
265
+ return Array.from(replacements.entries()).map(([search, replacement]) => ({ search, replacement }));
266
+ }
267
+ function createPatchedObservedAsset(options) {
268
+ if (options.replacements.length === 0) {
269
+ return undefined;
270
+ }
271
+ let content = readFileSync(options.originalAsset.localFilePath, 'utf8');
272
+ let replacementCount = 0;
273
+ for (const replacement of options.replacements) {
274
+ if (!content.includes(replacement.search)) {
275
+ continue;
276
+ }
277
+ replacementCount += content.split(replacement.search).length - 1;
278
+ content = content.split(replacement.search).join(replacement.replacement);
279
+ }
280
+ if (replacementCount === 0) {
281
+ return undefined;
282
+ }
283
+ const patchDir = resolve(options.overlayRoot, 'patches');
284
+ mkdirSync(patchDir, { recursive: true });
285
+ const patchPath = resolve(patchDir, `${options.ruleIndex}-${options.originalAsset.assetPath.replace(/[\\/]/g, '_')}`);
286
+ writeFileSync(patchPath, content, 'utf8');
287
+ const stat = statSync(patchPath);
288
+ return {
289
+ ...options.originalAsset,
290
+ localFilePath: patchPath,
291
+ sizeBytes: stat.size,
292
+ sha256: hashFile(patchPath),
293
+ };
294
+ }
295
+ function candidateUrlPrefix(candidate) {
296
+ const index = candidate.targetAssetUrl.indexOf(candidate.assetPath);
297
+ if (index < 0) {
298
+ return undefined;
299
+ }
300
+ return candidate.targetAssetUrl.slice(0, index);
301
+ }
302
+ function assetSourceMapMatchesAnySource(asset, sourcePaths) {
303
+ return sourcePaths.filter((sourcePath) => {
304
+ return asset.sourceMapSources.some((source) => nextAssetSourceMatches(source, sourcePath));
305
+ });
306
+ }
307
+ function scoreTempAssetForCandidate(asset, candidate, sourcePaths) {
308
+ const requestedSources = candidate.matchedSourcePaths.length > 0 ? candidate.matchedSourcePaths : sourcePaths;
309
+ const sourceScore = assetSourceMapMatchesAnySource(asset, requestedSources).length * 100;
310
+ const extensionScore = extname(candidate.localFilePath).toLowerCase() === asset.extension ? 20 : 0;
311
+ const routeScore = candidate.manifestRoutes.some((route) => asset.manifestRoutes.includes(route)) ? 10 : 0;
312
+ return sourceScore + extensionScore + routeScore;
313
+ }
314
+ function findBestTempAssetForCandidate(tempAssets, candidate, sourcePaths) {
315
+ return tempAssets
316
+ .map((asset) => ({ asset, score: scoreTempAssetForCandidate(asset, candidate, sourcePaths) }))
317
+ .filter((entry) => entry.score > 0)
318
+ .sort((first, second) => second.score - first.score || first.asset.assetPath.localeCompare(second.asset.assetPath))[0]?.asset;
319
+ }
320
+ function extractReferencedNextAssets(asset) {
321
+ const content = readFileSync(asset.localFilePath, 'utf8');
322
+ const references = new Set();
323
+ const patterns = [
324
+ /\/_next\/(static\/[^"'`)\s]+?\.(?:js|css))(?:[?#][^"'`)\s]*)?/g,
325
+ /(?<![A-Za-z0-9_/-])(static\/[^"'`)\s]+?\.(?:js|css))(?:[?#][^"'`)\s]*)?/g,
326
+ ];
327
+ for (const pattern of patterns) {
328
+ for (const match of content.matchAll(pattern)) {
329
+ if (match[1]) {
330
+ references.add(match[1]);
331
+ }
332
+ }
333
+ }
334
+ return Array.from(references).sort();
335
+ }
336
+ function confidenceAllowed(confidence) {
337
+ return confidence === 'high';
338
+ }
339
+ function createRule(options) {
340
+ return {
341
+ ruleId: options.ruleId,
342
+ ruleType: 'asset',
343
+ requestMethod: 'GET',
344
+ matchMode: 'exact',
345
+ targetAssetUrl: options.targetAssetUrl,
346
+ localFilePath: options.localAsset.localFilePath,
347
+ localAssetPath: options.localAsset.assetPath,
348
+ contentType: getContentType(options.localAsset.assetPath),
349
+ confidence: options.confidence,
350
+ score: options.score,
351
+ reason: options.reason,
352
+ matchedSourcePaths: options.matchedSourcePaths,
353
+ originalAssetPath: options.originalAssetPath,
354
+ blockers: options.blockers ?? [],
355
+ };
356
+ }
357
+ function writeOverrideConfig(options) {
358
+ if (existsSync(options.configPath) && options.overwrite === false) {
359
+ throw new Error(`Refusing to overwrite existing override config: ${options.configPath}`);
360
+ }
361
+ mkdirSync(dirname(options.configPath), { recursive: true });
362
+ const profileId = options.profileId ?? 'next-source-overlay';
363
+ writeFileSync(options.configPath, `${JSON.stringify({
364
+ enabled: options.enabled ?? true,
365
+ activeProfileId: profileId,
366
+ profiles: [{
367
+ profileId,
368
+ name: options.profileName ?? 'Next.js source overlay',
369
+ enabled: options.profileEnabled ?? true,
370
+ autoReload: options.autoReload ?? true,
371
+ rules: options.rules.map((rule) => ({
372
+ ruleId: rule.ruleId,
373
+ ruleType: rule.ruleType,
374
+ requestMethod: rule.requestMethod,
375
+ matchMode: rule.matchMode,
376
+ targetAssetUrl: rule.targetAssetUrl,
377
+ localFilePath: rule.localFilePath,
378
+ contentType: rule.contentType,
379
+ enabled: true,
380
+ })),
381
+ }],
382
+ }, null, 2)}\n`, 'utf8');
383
+ }
384
+ function buildNextActions(result) {
385
+ if (result.blockers.length > 0 && result.rules.length === 0) {
386
+ return [{ code: 'FIX_BLOCKERS', message: 'Resolve source mapping or build blockers before enabling overrides.' }];
387
+ }
388
+ if (result.configWritten) {
389
+ return [{ code: 'ENABLE_OVERRIDES', message: 'Enable overrides for the selected session/tab to load the planned temp overlay chunks.' }];
390
+ }
391
+ if (result.rules.length > 0) {
392
+ return [{ code: 'WRITE_CONFIG', message: 'Write these planned rules to an override profile config before enabling overrides.' }];
393
+ }
394
+ return [{ code: 'OBSERVE_ASSETS', message: 'Observe the live Next.js route assets, then plan the source override again.' }];
395
+ }
396
+ export async function planNextSourceOverride(options) {
397
+ const projectRoot = resolve(options.projectRoot);
398
+ const workspaceRoot = findWorkspaceRoot(projectRoot);
399
+ const overlayTtlMs = typeof options.overlayTtlMs === 'number' && Number.isFinite(options.overlayTtlMs)
400
+ ? Math.max(0, Math.floor(options.overlayTtlMs))
401
+ : DEFAULT_OVERLAY_TTL_MS;
402
+ const cleanedOverlayCount = cleanupNextSourceOverlayRoots(workspaceRoot, overlayTtlMs);
403
+ const edits = normalizeSourceEdits(options.sourceEdits);
404
+ if (edits.length === 0) {
405
+ throw new Error('sourceEdits must include at least one file edit');
406
+ }
407
+ const sourcePathsFromInput = Array.isArray(options.sourcePaths)
408
+ ? options.sourcePaths.filter((entry) => typeof entry === 'string' && entry.trim().length > 0)
409
+ : [];
410
+ const sourcePaths = Array.from(new Set([
411
+ ...edits.map((edit) => normalizeNextSourcePath(projectRoot, edit.filePath)),
412
+ ...sourcePathsFromInput.map((sourcePath) => normalizeNextSourcePath(projectRoot, sourcePath)),
413
+ ])).sort();
414
+ const originalNextDir = normalizeOptionalString(options.nextDir);
415
+ const mapping = options.fetchProductionAssets === true
416
+ ? await mapNextOverrideAssetsWithDrift({
417
+ projectRoot,
418
+ nextDir: originalNextDir,
419
+ route: options.route,
420
+ observedAssets: options.observedAssets,
421
+ sourcePaths,
422
+ maxResults: 100,
423
+ fetchProductionAssets: true,
424
+ productionFetchTimeoutMs: options.productionFetchTimeoutMs,
425
+ maxProductionAssetBytes: options.maxProductionAssetBytes,
426
+ maxDriftCandidates: options.maxDriftCandidates,
427
+ productionFetchConcurrency: options.productionFetchConcurrency,
428
+ })
429
+ : mapNextOverrideAssets({
430
+ projectRoot,
431
+ nextDir: originalNextDir,
432
+ route: options.route,
433
+ observedAssets: options.observedAssets,
434
+ sourcePaths,
435
+ maxResults: 100,
436
+ });
437
+ const mappingCandidates = mapping.candidates.filter((candidate) => confidenceAllowed(candidate.confidence));
438
+ const blockers = [];
439
+ const warnings = [...mapping.warnings];
440
+ if (cleanedOverlayCount > 0) {
441
+ warnings.push(`Cleaned ${cleanedOverlayCount} expired Next.js source overlay folder(s).`);
442
+ }
443
+ for (const candidate of mapping.candidates) {
444
+ for (const blocker of candidate.blockers) {
445
+ blockers.push(`${candidate.targetAssetUrl}: ${blocker}`);
446
+ }
447
+ }
448
+ if (mappingCandidates.length === 0) {
449
+ blockers.push('No medium/high confidence observed production Next.js asset matched the requested source paths.');
450
+ }
451
+ const { overlayRoot, overlayProjectRoot } = createOverlay(projectRoot, workspaceRoot);
452
+ const editsApplied = applySourceEdits(overlayProjectRoot, edits);
453
+ const timeoutMs = typeof options.buildTimeoutMs === 'number' && Number.isFinite(options.buildTimeoutMs)
454
+ ? Math.max(1_000, Math.floor(options.buildTimeoutMs))
455
+ : DEFAULT_BUILD_TIMEOUT_MS;
456
+ const build = await runNextBuild({ projectRoot, overlayProjectRoot, workspaceRoot, timeoutMs });
457
+ const overlayNextDir = resolve(overlayProjectRoot, originalNextDir ?? '.next');
458
+ const originalIndex = createNextAssetIndex(projectRoot, originalNextDir);
459
+ const overlayIndex = createNextAssetIndex(overlayProjectRoot, originalNextDir);
460
+ warnings.push(...overlayIndex.warnings.map((warning) => `overlay: ${warning}`));
461
+ const tempAssetsForSources = overlayIndex.assets.filter((asset) => assetSourceMapMatchesAnySource(asset, sourcePaths).length > 0);
462
+ const changedAssets = tempAssetsForSources.filter((asset) => {
463
+ const original = originalIndex.byAssetPath.get(asset.assetPath);
464
+ return !original || original.sha256 !== asset.sha256 || original.sizeBytes !== asset.sizeBytes;
465
+ });
466
+ const rules = [];
467
+ const usedTargetUrls = new Set();
468
+ const selectedOverlayPrimaryAssets = [];
469
+ const assetTextReplacements = inferAssetTextReplacements(edits);
470
+ for (const candidate of mappingCandidates) {
471
+ if (candidate.blockers.length > 0) {
472
+ continue;
473
+ }
474
+ const tempAsset = findBestTempAssetForCandidate(changedAssets, candidate, sourcePaths);
475
+ const originalAsset = originalIndex.byAssetPath.get(candidate.assetPath);
476
+ const originalSourceMapMatches = originalAsset ? assetSourceMapMatchesAnySource(originalAsset, sourcePaths) : [];
477
+ const exactChangedAsset = changedAssets.find((asset) => asset.assetPath === candidate.assetPath);
478
+ const patchedAsset = originalAsset
479
+ ? createPatchedObservedAsset({
480
+ originalAsset,
481
+ overlayRoot,
482
+ replacements: assetTextReplacements,
483
+ ruleIndex: rules.length + 1,
484
+ })
485
+ : undefined;
486
+ const localAsset = patchedAsset ?? exactChangedAsset ?? (originalSourceMapMatches.length > 0 ? tempAsset : undefined);
487
+ if (!localAsset) {
488
+ warnings.push(`No changed overlay chunk matched observed asset ${candidate.targetAssetUrl}.`);
489
+ continue;
490
+ }
491
+ const matchedSourcePaths = patchedAsset ? candidate.matchedSourcePaths : assetSourceMapMatchesAnySource(localAsset, sourcePaths);
492
+ const rule = createRule({
493
+ ruleId: `source-${rules.length + 1}`,
494
+ targetAssetUrl: candidate.targetAssetUrl,
495
+ localAsset,
496
+ reason: patchedAsset ? 'observed_asset_patched_from_source_edit' : 'observed_asset_rebuilt_from_source_edit',
497
+ confidence: candidate.confidence,
498
+ score: candidate.score,
499
+ matchedSourcePaths,
500
+ originalAssetPath: candidate.assetPath,
501
+ });
502
+ rules.push(rule);
503
+ usedTargetUrls.add(rule.targetAssetUrl);
504
+ if (!patchedAsset && tempAsset) {
505
+ selectedOverlayPrimaryAssets.push(tempAsset);
506
+ }
507
+ }
508
+ const firstPrefix = mappingCandidates.map(candidateUrlPrefix).find((entry) => typeof entry === 'string');
509
+ if (firstPrefix && selectedOverlayPrimaryAssets.length > 0) {
510
+ const dependencyAssetPaths = new Set();
511
+ for (const asset of selectedOverlayPrimaryAssets) {
512
+ for (const referencedAssetPath of extractReferencedNextAssets(asset)) {
513
+ if (referencedAssetPath !== asset.assetPath) {
514
+ dependencyAssetPaths.add(referencedAssetPath);
515
+ }
516
+ }
517
+ }
518
+ for (const asset of changedAssets) {
519
+ if (!selectedOverlayPrimaryAssets.some((selected) => selected.assetPath === asset.assetPath)) {
520
+ dependencyAssetPaths.add(asset.assetPath);
521
+ }
522
+ }
523
+ for (const dependencyAssetPath of dependencyAssetPaths) {
524
+ const dependencyAsset = overlayIndex.byAssetPath.get(dependencyAssetPath);
525
+ if (!dependencyAsset || !existsSync(dependencyAsset.localFilePath) || !statSync(dependencyAsset.localFilePath).isFile()) {
526
+ continue;
527
+ }
528
+ const targetAssetUrl = `${firstPrefix}${dependencyAsset.assetPath}`;
529
+ if (usedTargetUrls.has(targetAssetUrl)) {
530
+ continue;
531
+ }
532
+ usedTargetUrls.add(targetAssetUrl);
533
+ rules.push(createRule({
534
+ ruleId: `dependency-${rules.length + 1}`,
535
+ targetAssetUrl,
536
+ localAsset: dependencyAsset,
537
+ reason: selectedOverlayPrimaryAssets.some((selected) => extractReferencedNextAssets(selected).includes(dependencyAsset.assetPath))
538
+ ? 'referenced_overlay_dependency_chunk'
539
+ : 'edited_source_chunk_without_observed_original',
540
+ confidence: 'medium',
541
+ score: LOW_CONFIDENCE_SCORE + 1,
542
+ matchedSourcePaths: assetSourceMapMatchesAnySource(dependencyAsset, sourcePaths),
543
+ }));
544
+ }
545
+ }
546
+ else if (changedAssets.length > 0) {
547
+ warnings.push('Unable to infer production Next.js asset URL prefix for dependency chunks.');
548
+ }
549
+ const maxRules = typeof options.maxRules === 'number' && Number.isFinite(options.maxRules)
550
+ ? Math.max(1, Math.floor(options.maxRules))
551
+ : 200;
552
+ const limitedRules = rules.slice(0, maxRules);
553
+ if (rules.length > limitedRules.length) {
554
+ warnings.push(`Rule list truncated from ${rules.length} to ${limitedRules.length}.`);
555
+ }
556
+ if (limitedRules.length === 0) {
557
+ blockers.push('No override rules could be planned from the edited source files.');
558
+ }
559
+ const patchedObservedAssetCount = limitedRules.filter((rule) => rule.reason === 'observed_asset_patched_from_source_edit').length;
560
+ const configPath = normalizeOptionalString(options.configPath);
561
+ const shouldWriteConfig = options.writeConfig === true;
562
+ if (shouldWriteConfig) {
563
+ if (!configPath) {
564
+ throw new Error('configPath is required when writeConfig is true');
565
+ }
566
+ writeOverrideConfig({
567
+ configPath,
568
+ rules: limitedRules,
569
+ profileId: normalizeOptionalString(options.profileId),
570
+ profileName: normalizeOptionalString(options.profileName),
571
+ enabled: options.enabled === false ? false : true,
572
+ profileEnabled: options.profileEnabled === false ? false : true,
573
+ autoReload: options.autoReload !== false,
574
+ overwrite: typeof options.overwrite === 'boolean' ? options.overwrite : undefined,
575
+ });
576
+ }
577
+ const resultWithoutActions = {
578
+ projectRoot,
579
+ workspaceRoot,
580
+ overlayRoot,
581
+ overlayProjectRoot,
582
+ overlayNextDir,
583
+ route: mapping.route,
584
+ sourcePaths,
585
+ editsApplied,
586
+ build,
587
+ mappingCandidateCount: mappingCandidates.length,
588
+ changedAssetCount: changedAssets.length + patchedObservedAssetCount,
589
+ dependencyRuleCount: limitedRules.filter((rule) => rule.reason.includes('dependency') || rule.reason.includes('without_observed')).length,
590
+ rules: limitedRules,
591
+ configPath,
592
+ configWritten: shouldWriteConfig,
593
+ warnings,
594
+ blockers,
595
+ };
596
+ return {
597
+ ...resultWithoutActions,
598
+ nextActions: buildNextActions(resultWithoutActions),
599
+ };
600
+ }
601
+ //# sourceMappingURL=next-source-override-planner.js.map