@beignet/cli 0.0.34 → 0.0.35

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 (56) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +27 -0
  3. package/dist/config.d.ts +1 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +1 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/inspect.js +49 -13
  8. package/dist/inspect.js.map +1 -1
  9. package/dist/lint.js +10 -3
  10. package/dist/lint.js.map +1 -1
  11. package/dist/make/inbox.d.ts.map +1 -1
  12. package/dist/make/inbox.js +2 -3
  13. package/dist/make/inbox.js.map +1 -1
  14. package/dist/make/payments.d.ts.map +1 -1
  15. package/dist/make/payments.js +3 -5
  16. package/dist/make/payments.js.map +1 -1
  17. package/dist/make/tenancy.d.ts.map +1 -1
  18. package/dist/make/tenancy.js +2 -4
  19. package/dist/make/tenancy.js.map +1 -1
  20. package/dist/make.js +4 -5
  21. package/dist/make.js.map +1 -1
  22. package/dist/schedule.d.ts.map +1 -1
  23. package/dist/schedule.js +1 -1
  24. package/dist/schedule.js.map +1 -1
  25. package/dist/templates/agents.d.ts.map +1 -1
  26. package/dist/templates/agents.js +2 -0
  27. package/dist/templates/agents.js.map +1 -1
  28. package/dist/templates/index.d.ts.map +1 -1
  29. package/dist/templates/index.js +1 -0
  30. package/dist/templates/index.js.map +1 -1
  31. package/dist/templates/server.d.ts +1 -0
  32. package/dist/templates/server.d.ts.map +1 -1
  33. package/dist/templates/server.js +8 -2
  34. package/dist/templates/server.js.map +1 -1
  35. package/dist/templates/testing.d.ts.map +1 -1
  36. package/dist/templates/testing.js +55 -26
  37. package/dist/templates/testing.js.map +1 -1
  38. package/dist/templates/todos.d.ts.map +1 -1
  39. package/dist/templates/todos.js +2 -3
  40. package/dist/templates/todos.js.map +1 -1
  41. package/package.json +3 -2
  42. package/skills/app-structure/SKILL.md +12 -1
  43. package/src/config.ts +2 -0
  44. package/src/inspect.ts +82 -15
  45. package/src/lint.ts +15 -3
  46. package/src/make/inbox.ts +2 -3
  47. package/src/make/payments.ts +2 -6
  48. package/src/make/tenancy.ts +2 -8
  49. package/src/make.ts +4 -5
  50. package/src/schedule.ts +4 -3
  51. package/src/templates/agents.ts +2 -0
  52. package/src/templates/index.ts +1 -0
  53. package/src/templates/server.ts +8 -2
  54. package/src/templates/testing.ts +55 -26
  55. package/src/templates/todos.ts +2 -3
  56. package/src/test-helpers/generated-app.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../src/schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA+D/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,aAAa,CAC9B,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAC7C,CAAC;IACF,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,YAAY,CAC3B,cAAc,CAAC,SAAS,EACxB,OAAO,CAAC,IAAI,EACZ,UAAU,CACX,CAAC;IACF,MAAM,WAAW,GAAG;QAClB,QAAQ;QACR,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,GAAG,EAAE,UAAU;KAChB,CAAC;IACF,MAAM,GAAG,GAAG,cAAc,CAAC,qBAAqB;QAC9C,CAAC,CAAC,MAAM,cAAc,CAAC,qBAAqB,CAAC,WAAW,CAAC;QACzD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,0EAA0E;QAC1E,sDAAsD;QACtD,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CACjD,yBAAyB,CAC1B,CAAC;QACF,MAAM,MAAM,GAAG,0BAA0B,CAAU;YACjD,GAAG;YACH,eAAe,EAAE,eAAe,CAAC,KAAK,EAAE,QAAQ;YAChD,sBAAsB,EAAE;gBACtB,SAAS,EAAE,eAAe,CAAC,SAAS;gBACpC,OAAO,EAAE,eAAe,CAAC,OAAO;aACjC;YACD,OAAO,CAAC,EAAE,KAAK,EAAE;gBACf,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,iBAAiB,EAAE;oBACtD,KAAK;oBACL,YAAY,EAAE,QAAQ,CAAC,IAAI;iBAC5B,CAAC,CAAC;YACL,CAAC;YACD,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;gBACzB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CACnC,gCAAgC,EAChC;oBACE,KAAK;oBACL,IAAI;oBACJ,YAAY,EAAE,QAAQ,CAAC,IAAI;iBAC5B,CACF,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEvC,OAAO;YACL,aAAa,EAAE,CAAC;YAChB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,GAAG;YACH,UAAU;YACV,GAAG,EAAE;gBACH,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,WAAW,EAAE,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC;gBACvD,WAAW,EAAE,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC;gBACvD,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,aAAa;aAC3C;YACD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;SACtD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,cAAc,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,UAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,2CAA2C,UAAU,iFAAiF,CACvI,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,EAAE;QACpC,aAAa,EAAE,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK;KACvE,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAmB,CAAC;AAC7D,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAA8B;IAE9B,MAAM,UAAU,GAAgC;QAC9C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,aAAa;QACvC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC7D,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,UAAU,CAAC,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;QAAE,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACzD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACxE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QACnC,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAE/C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAoD;IAEpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,SAAyC,EACzC,IAAY,EACZ,UAAkB;IAElB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qBAAqB,UAAU,iCAAiC,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAC7B,CAAC,SAAS,EAA+B,EAAE,CACzC,OAAO,SAAS,KAAK,QAAQ;QAC7B,SAAS,KAAK,IAAI;QACjB,SAA4B,CAAC,IAAI,KAAK,UAAU;QAChD,SAA4B,CAAC,IAAI,KAAK,IAAI;QAC3C,OAAQ,SAA4B,CAAC,MAAM,KAAK,UAAU,CAC7D,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,SAAS;aACxB,MAAM,CACL,CAAC,SAAS,EAA+B,EAAE,CACzC,OAAO,SAAS,KAAK,QAAQ;YAC7B,SAAS,KAAK,IAAI;YACjB,SAA4B,CAAC,IAAI,KAAK,UAAU;YACjD,OAAQ,SAA4B,CAAC,IAAI,KAAK,QAAQ,CACzD;aACA,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;aAClC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,SAAS,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,qBAAqB,IAAI,2BAA2B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC7E,CAAC,CAAC,qBAAqB,IAAI,sCAAsC,UAAU,GAAG,CACjF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAiD;IAEjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../src/schedule.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/templates/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA2IrD;AAeD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CASrD"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/templates/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA6IrD;AAeD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CASrD"}
@@ -42,6 +42,8 @@ is a silent failure — the file exists but never runs:
42
42
 
43
43
  - Feature route groups in \`features/<feature>/routes.ts\` must be composed in
44
44
  \`server/routes.ts\` via \`defineRoutes([...])\`.
45
+ - Feature route files import the app-bound \`defineRouteGroup\` from
46
+ \`lib/routes.ts\`; that builder owns the shared \`AppContext\` binding.
45
47
  - Schedules must be added to the \`schedules\` array in \`server/schedules.ts\`.
46
48
  - Tasks must be added to \`defineTasks([...])\` in \`server/tasks.ts\`.
47
49
  - Outbox events and jobs must be registered in \`defineOutboxRegistry({...})\`
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/templates/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GACR,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,WAAW,CAAC;IACvC,MAAM,IAAI,GACR,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,WAAW,CAAC;IACvC,MAAM,MAAM,GACV,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,aAAa,CAAC;IACzC,MAAM,SAAS,GACb,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,gBAAgB,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,mBAAmB,GAAG,GAAG,CAAC,GAAG;QACjC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,yQAAyQ;YACzQ,6TAA6T;YAC7T,+SAA+S,CAAC;IACpT,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG;QAC5B,CAAC,CAAC,sKAAsK;QACxK,CAAC,CAAC,uOAAuO,CAAC;IAE5O,OAAO,KAAK,GAAG,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;mCAsBa,GAAG,oBAAoB,GAAG;IACzD,GAAG,uBAAuB,GAAG,uBAAuB,GAAG;IACvD,GAAG,uBAAuB,GAAG;;IAE7B,GAAG,2CAA2C,GAAG;;;;;IAKjD,GAAG;kDAC2C,GAAG;uBAC9B,GAAG;;;8BAGI,GAAG,yBAAyB,GAAG;;;;;;;;eAQ9C,mBAAmB;;;;;;;;;;;;;;;;EAgBhC,GAAG;;;YAGO,GAAG;IACX,GAAG;;oDAE6C,MAAM;yCACjB,IAAI,SAAS,GAAG;IACrD,GAAG,yBAAyB,IAAI,SAAS,SAAS;;;;;;;;;EASpD,MAAM;EACN,MAAM;;;kEAG0D,cAAc;QACxE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA2BqB,GAAG;CACrC,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,GAAoB;IACxC,QAAQ,GAAG,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,KAAK;YACR,OAAO,6BAA6B,CAAC;QACvC,KAAK,MAAM;YACT,OAAO,kCAAkC,CAAC;QAC5C,KAAK,MAAM;YACT,OAAO,kCAAkC,CAAC;QAC5C;YACE,OAAO,8BAA8B,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAqB;IAC3C,OAAO,IAAI,CAAC;QACV,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,OAAO,EAAE,6BAA6B;gBACtC,IAAI,EAAE,CAAC,KAAK,CAAC;aACd;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/templates/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAwB,MAAM,aAAa,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAoB;IAC3C,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GACR,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,WAAW,CAAC;IACvC,MAAM,IAAI,GACR,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,WAAW,CAAC;IACvC,MAAM,MAAM,GACV,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,aAAa,CAAC;IACzC,MAAM,SAAS,GACb,GAAG,CAAC,cAAc,KAAK,KAAK;QAC1B,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,gBAAgB,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,mBAAmB,GAAG,GAAG,CAAC,GAAG;QACjC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,yQAAyQ;YACzQ,6TAA6T;YAC7T,+SAA+S,CAAC;IACpT,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG;QAC5B,CAAC,CAAC,sKAAsK;QACxK,CAAC,CAAC,uOAAuO,CAAC;IAE5O,OAAO,KAAK,GAAG,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;mCAwBa,GAAG,oBAAoB,GAAG;IACzD,GAAG,uBAAuB,GAAG,uBAAuB,GAAG;IACvD,GAAG,uBAAuB,GAAG;;IAE7B,GAAG,2CAA2C,GAAG;;;;;IAKjD,GAAG;kDAC2C,GAAG;uBAC9B,GAAG;;;8BAGI,GAAG,yBAAyB,GAAG;;;;;;;;eAQ9C,mBAAmB;;;;;;;;;;;;;;;;EAgBhC,GAAG;;;YAGO,GAAG;IACX,GAAG;;oDAE6C,MAAM;yCACjB,IAAI,SAAS,GAAG;IACrD,GAAG,yBAAyB,IAAI,SAAS,SAAS;;;;;;;;;EASpD,MAAM;EACN,MAAM;;;kEAG0D,cAAc;QACxE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA2BqB,GAAG;CACrC,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,GAAoB;IACxC,QAAQ,GAAG,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,KAAK;YACR,OAAO,6BAA6B,CAAC;QACvC,KAAK,MAAM;YACT,OAAO,kCAAkC,CAAC;QAC5C,KAAK,MAAM;YACT,OAAO,kCAAkC,CAAC;QAC5C;YACE,OAAO,8BAA8B,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAqB;IAC3C,OAAO,IAAI,CAAC;QACV,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,OAAO,EAAE,6BAA6B;gBACtC,IAAI,EAAE,CAAC,KAAK,CAAC;aACd;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqBjE,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKjE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,YAAY,EAAE,CAyHrE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqBjE,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKjE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,YAAY,EAAE,CA0HrE"}
@@ -112,6 +112,7 @@ export function getTemplateFiles(ctx) {
112
112
  { path: "lib/tenant.ts", content: serverFiles.tenantHelper },
113
113
  ...testSupportTemplateFiles,
114
114
  { path: "lib/use-case.ts", content: serverFiles.useCaseBuilder },
115
+ { path: "lib/routes.ts", content: serverFiles.routesBuilder },
115
116
  { path: "server/index.ts", content: server(ctx) },
116
117
  { path: "server/context.ts", content: serverFiles.serverContext },
117
118
  { path: "server/routes.ts", content: serverFiles.serverRoutes },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,EACX,MAAM,GACP,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,UAAU,EACV,GAAG,EACH,mBAAmB,EACnB,KAAK,EACL,MAAM,EACN,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAoB;IACnD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,aAAa,GAAmB;QACpC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE;QACnD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;QAC3C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC7C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC7C,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,SAAS,EAAE;QACpD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;QAClD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE;QACrD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE;QACzD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE;QACtD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE;QACtD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE;QAC3D;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,WAAW,CAAC,gBAAgB;SACtC;QACD,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE;QACrE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE;QACnE;YACE,IAAI,EAAE,uCAAuC;YAC7C,OAAO,EAAE,WAAW,CAAC,aAAa;SACnC;QACD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,EAAE;QACvE;YACE,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,WAAW,CAAC,SAAS;SAC/B;QACD,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,EAAE;QACxE,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,UAAU,CAAC,SAAS,EAAE;QACtE,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;QAClE,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE;QAChE,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE;QAChE,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE;QAC9D;YACE,IAAI,EAAE,yCAAyC;YAC/C,OAAO,EAAE,UAAU,CAAC,iBAAiB;SACtC;QACD;YACE,IAAI,EAAE,yCAAyC;YAC/C,OAAO,EAAE,UAAU,CAAC,iBAAiB;SACtC;QACD;YACE,IAAI,EAAE,wCAAwC;YAC9C,OAAO,EAAE,UAAU,CAAC,gBAAgB;SACrC;QACD;YACE,IAAI,EAAE,yCAAyC;YAC/C,OAAO,EAAE,UAAU,CAAC,iBAAiB;SACtC;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,UAAU,CAAC,aAAa;SAClC;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,UAAU,CAAC,WAAW;SAChC;QACD;YACE,IAAI,EAAE,oCAAoC;YAC1C,OAAO,EAAE,UAAU,CAAC,WAAW;SAChC;QACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,OAAO,EAAE,UAAU,CAAC,UAAU;SAC/B;QACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;QAC/C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;QACxD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE;QACjE,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,EAAE;QACjE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,EAAE;QACxD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,EAAE,CAAC,cAAc,EAAE;QAChE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;QAClD,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,EAAE,CAAC,cAAc,EAAE;QACjE,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE;QAC1D;YACE,IAAI,EAAE,wCAAwC;YAC9C,OAAO,EAAE,EAAE,CAAC,qBAAqB;SAClC;QACD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,EAAE;QACxD,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,EAAE,CAAC,mBAAmB,EAAE;QACrE;YACE,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,EAAE,CAAC,uBAAuB;SACpC;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,EAAE,CAAC,wBAAwB;SACrC;QACD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;QACzC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE;QACzD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;QACxD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,EAAE;QAC5D,GAAG,wBAAwB;QAC3B,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE;QAChE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE;QAC7D,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;QACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE;QACjE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,EAAE;QAC/D,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE;KAC/D,CAAC;IAEF,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,aAAa,CAAC,IAAI,CAChB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC,SAAS,EAAE,EAC1D,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,EACtD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,CACjE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,IAAI,CAAC,GAAG,mBAAmB,EAAE,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -9,6 +9,7 @@ declare const files: {
9
9
  appContext: string;
10
10
  sharedErrors: string;
11
11
  useCaseBuilder: string;
12
+ routesBuilder: string;
12
13
  authHelpers: string;
13
14
  authPort: string;
14
15
  serverRoutes: string;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/templates/server.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA8C5D;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA0ClD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA6ChE;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAsDhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAmFvD;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA4DnD;AAED,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;CA8WV,CAAC;AAEF,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/templates/server.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA8C5D;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA0ClD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA6ChE;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAsDhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAmFvD;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CA4DnD;AAED,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;CAoXV,CAAC;AAEF,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC"}
@@ -5,7 +5,7 @@ export function serverProviders(ctx) {
5
5
  const imports = [
6
6
  'import "@beignet/core/server-only";',
7
7
  'import { createDevtoolsProvider } from "@beignet/devtools";',
8
- 'import { createAuthBetterAuthProvider } from "@beignet/provider-auth-better-auth";',
8
+ 'import { createBetterAuthProvider } from "@beignet/provider-auth-better-auth";',
9
9
  `import { ${db.providerFactory} } from "@beignet/provider-db-drizzle/${db.subpath}";`,
10
10
  hasIntegration(ctx, "inngest")
11
11
  ? 'import { createInngestJobsProvider } from "@beignet/provider-jobs-inngest";'
@@ -24,7 +24,7 @@ export function serverProviders(ctx) {
24
24
  ].filter((line) => Boolean(line));
25
25
  const entries = [
26
26
  "\tcreateDevtoolsProvider(),",
27
- "\tcreateAuthBetterAuthProvider<AuthUser, AuthSessionMetadata>(auth),",
27
+ "\tcreateBetterAuthProvider<AuthUser, AuthSessionMetadata>(auth),",
28
28
  "\tcreatePinoLoggerProvider(),",
29
29
  `\t${db.providerInstance},`,
30
30
  "\tstarterDatabaseProvider,",
@@ -376,6 +376,12 @@ import { createUseCase } from "@beignet/core/application";
376
376
  import type { AppContext } from "@/app-context";
377
377
 
378
378
  export const useCase = createUseCase<AppContext>();
379
+ `,
380
+ routesBuilder: `import "@beignet/core/server-only";
381
+ import { createRoutes } from "@beignet/core/server";
382
+ import type { AppContext } from "@/app-context";
383
+
384
+ export const { defineRoute, defineRouteGroup } = createRoutes<AppContext>();
379
385
  `,
380
386
  authHelpers: `import type { AppContext } from "@/app-context";
381
387
  import type { AuthSession, AuthUser } from "@/ports/auth";
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/templates/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/templates/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/templates/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,sBAAsB,EAAE,YA+YpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAwIpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,EAGlD,CAAC"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/templates/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,sBAAsB,EAAE,YA+YpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAqKpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,EAGlD,CAAC"}
@@ -403,6 +403,7 @@ export const testRunnerTemplateFile = {
403
403
  content: `import { spawnSync } from "node:child_process";
404
404
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
405
405
  import path from "node:path";
406
+ import { pathToFileURL } from "node:url";
406
407
 
407
408
  const defaultTestRoots = [
408
409
  "app",
@@ -425,11 +426,18 @@ const ignoredDirectories = new Set([
425
426
  ]);
426
427
  const testFilePattern = /\\.(test|spec)\\.[cm]?[tj]sx?$/;
427
428
 
429
+ const configFileNames = [
430
+ "beignet.config.ts",
431
+ "beignet.config.json",
432
+ "beignet.config.mjs",
433
+ "beignet.config.js",
434
+ ];
435
+
428
436
  const explicitArgs = process.argv.slice(2);
429
437
  const testArgs =
430
438
  explicitArgs.length > 0
431
439
  ? resolveTestArgs(process.cwd(), explicitArgs)
432
- : discoverTestFiles(process.cwd());
440
+ : await discoverTestFiles(process.cwd());
433
441
 
434
442
  if (testArgs.length === 0) {
435
443
  console.log("No test files found.");
@@ -453,9 +461,9 @@ if (result.error) {
453
461
 
454
462
  process.exit(result.status ?? 1);
455
463
 
456
- function discoverTestFiles(cwd: string): string[] {
464
+ async function discoverTestFiles(cwd: string): Promise<string[]> {
457
465
  const files: string[] = [];
458
- for (const root of testRoots(cwd)) {
466
+ for (const root of await testRoots(cwd)) {
459
467
  const rootPath = path.join(cwd, root);
460
468
  if (existsSync(rootPath)) {
461
469
  walk(rootPath, cwd, files);
@@ -491,32 +499,53 @@ function resolveTestArgs(cwd: string, args: string[]): string[] {
491
499
  return Array.from(new Set(resolved));
492
500
  }
493
501
 
494
- function testRoots(cwd: string): string[] {
495
- return Array.from(new Set([...defaultTestRoots, ...configuredRoots(cwd)]));
502
+ async function testRoots(cwd: string): Promise<string[]> {
503
+ return Array.from(
504
+ new Set([...defaultTestRoots, ...(await configuredRoots(cwd))]),
505
+ );
496
506
  }
497
507
 
498
- function configuredRoots(cwd: string): string[] {
499
- const configPath = path.join(cwd, "beignet.config.json");
500
- if (!existsSync(configPath)) return [];
501
- try {
502
- const config = JSON.parse(readFileSync(configPath, "utf8")) as {
503
- paths?: Record<string, string>;
504
- };
505
- const paths = config.paths ?? {};
506
- return [
507
- paths.tests,
508
- paths.features,
509
- paths.routes ? path.dirname(paths.routes) : undefined,
510
- paths.server ? path.dirname(paths.server) : undefined,
511
- paths.infrastructurePorts
512
- ? path.dirname(paths.infrastructurePorts)
513
- : undefined,
514
- paths.ports ? path.dirname(paths.ports) : undefined,
515
- paths.useCaseBuilder ? path.dirname(paths.useCaseBuilder) : undefined,
516
- ].filter((root): root is string => Boolean(root) && root !== ".");
517
- } catch {
518
- return [];
508
+ async function configuredRoots(cwd: string): Promise<string[]> {
509
+ const configFiles = configFileNames.filter((file) =>
510
+ existsSync(path.join(cwd, file)),
511
+ );
512
+ if (configFiles.length === 0) return [];
513
+ if (configFiles.length > 1) {
514
+ throw new Error(
515
+ "Multiple Beignet config files found: " +
516
+ configFiles.join(", ") +
517
+ ". Keep only one config file.",
518
+ );
519
519
  }
520
+
521
+ const configFile = configFiles[0];
522
+ const configPath = path.join(cwd, configFile);
523
+ const config = configFile.endsWith(".json")
524
+ ? JSON.parse(readFileSync(configPath, "utf8"))
525
+ : ((await import(pathToFileURL(configPath).href)) as { default?: unknown })
526
+ .default;
527
+ if (!isObjectRecord(config)) {
528
+ throw new Error(configFile + " must export a Beignet config object.");
529
+ }
530
+ const paths = isObjectRecord(config.paths) ? config.paths : {};
531
+ return [
532
+ paths.tests,
533
+ paths.features,
534
+ parentPath(paths.routes),
535
+ parentPath(paths.server),
536
+ parentPath(paths.infrastructurePorts),
537
+ parentPath(paths.ports),
538
+ parentPath(paths.useCaseBuilder),
539
+ parentPath(paths.routesBuilder),
540
+ ].filter((root): root is string => Boolean(root) && root !== ".");
541
+ }
542
+
543
+ function parentPath(value: unknown): string | undefined {
544
+ return typeof value === "string" ? path.dirname(value) : undefined;
545
+ }
546
+
547
+ function isObjectRecord(value: unknown): value is Record<string, unknown> {
548
+ return value !== null && typeof value === "object" && !Array.isArray(value);
520
549
  }
521
550
 
522
551
  function walk(directory: string, cwd: string, files: string[]): void {
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/templates/testing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4YV;CACA,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD,IAAI,EAAE,4BAA4B;IAClC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqIV;CACA,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAmB;IACtD,sBAAsB;IACtB,sBAAsB;CACvB,CAAC"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/templates/testing.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD,IAAI,EAAE,qBAAqB;IAC3B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4YV;CACA,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD,IAAI,EAAE,4BAA4B;IAClC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkKV;CACA,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAmB;IACtD,sBAAsB;IACtB,sBAAsB;CACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../src/templates/todos.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;;;;;;;CA4lBV,CAAC;AAEF,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../src/templates/todos.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;;;;;;;CA2lBV,CAAC;AAEF,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAC"}
@@ -175,8 +175,7 @@ export const todoPolicy = definePolicy({
175
175
  });
176
176
  `,
177
177
  routes: `import "@beignet/core/server-only";
178
- import { defineRouteGroup } from "@beignet/core/server";
179
- import type { AppContext } from "@/app-context";
178
+ import { defineRouteGroup } from "@/lib/routes";
180
179
  import {
181
180
  createTodo,
182
181
  deleteTodo,
@@ -190,7 +189,7 @@ import {
190
189
  updateTodoUseCase,
191
190
  } from "@/features/todos/use-cases";
192
191
 
193
- export const todoRoutes = defineRouteGroup<AppContext>()({
192
+ export const todoRoutes = defineRouteGroup({
194
193
  name: "todos",
195
194
  routes: [
196
195
  { contract: listTodos, useCase: listTodosUseCase },
@@ -1 +1 @@
1
- {"version":3,"file":"todos.js","sourceRoot":"","sources":["../../src/templates/todos.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG;IACZ,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDV;IACC,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DZ;IACC,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyBR;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCT;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyBT;IACC,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;CAmBnB;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;CAiBpB;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB;IACC,aAAa,EAAE;;;;;;;;;;;;;;;;CAgBhB;IACC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDd;IACC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHd;IACC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Hb;CACA,CAAC;AAEF,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"todos.js","sourceRoot":"","sources":["../../src/templates/todos.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG;IACZ,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDV;IACC,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DZ;IACC,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyBR;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCT;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBT;IACC,gBAAgB,EAAE;;;;;;;;;;;;;;;;;;;CAmBnB;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;CAiBpB;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB;IACC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB;IACC,aAAa,EAAE;;;;;;;;;;;;;;;;CAgBhB;IACC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDd;IACC,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHd;IACC,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Hb;CACA,CAAC;AAEF,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/cli",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "type": "module",
5
5
  "description": "CLI for creating and maintaining Beignet apps.",
6
6
  "main": "./dist/lib.js",
@@ -66,10 +66,11 @@
66
66
  "@types/bun": "^1.3.13",
67
67
  "@types/node": "^20.10.0",
68
68
  "next-themes": "^0.4.6",
69
+ "tsx": "^4.22.4",
69
70
  "typescript": "^5.3.0"
70
71
  },
71
72
  "dependencies": {
72
- "@beignet/core": "^0.0.34",
73
+ "@beignet/core": "^0.0.35",
73
74
  "@clack/prompts": "^1.5.1",
74
75
  "@modelcontextprotocol/sdk": "^1.29.0",
75
76
  "@stricli/core": "^1.2.7",
@@ -15,6 +15,8 @@ Generated apps include:
15
15
  - `AGENTS.md` and `CLAUDE.md` for local agent guidance
16
16
  - `.mcp.json` for `beignet mcp`
17
17
  - `beignet.config.*` only when paths are moved
18
+ - `lib/routes.ts` with route declarations bound once through
19
+ `createRoutes<AppContext>()`
18
20
  - canonical folders for app routes, client setup, features, infra, ports,
19
21
  server composition, and tests
20
22
 
@@ -73,6 +75,10 @@ aligned with those central registries. The boot check is pure and
73
75
  serverless-safe: it compares declared listeners, schedules, tasks, and outbox
74
76
  artifacts against runtime registries before providers start.
75
77
 
78
+ Feature route groups should import the app-bound `defineRouteGroup` from
79
+ `lib/routes.ts`. `doctor` checks both that feature routes use that builder and
80
+ that the builder itself calls `createRoutes<AppContext>()`.
81
+
76
82
  Run `beignet doctor --strict` after hand edits. Use `beignet doctor --fix` for
77
83
  low-risk route-group, schedule, task, outbox, and listener registry repair.
78
84
 
@@ -90,13 +96,16 @@ export default defineConfig({
90
96
  features: "src/features",
91
97
  contracts: "src/features",
92
98
  routes: "src/app/api",
99
+ routesBuilder: "src/lib/routes.ts",
93
100
  server: "src/server/index.ts",
94
101
  },
95
102
  });
96
103
  ```
97
104
 
98
105
  When `appContext` moves under `src/`, root client setup follows that source
99
- root at `src/client/index.ts`.
106
+ root at `src/client/index.ts`. Other registries and app-bound builders are not
107
+ relocated implicitly; override each path the app has moved, such as
108
+ `listeners`, `schedules`, `tasks`, `outbox`, and their matching builder paths.
100
109
 
101
110
  ## Lint And Doctor
102
111
 
@@ -111,6 +120,8 @@ root at `src/client/index.ts`.
111
120
  `beignet doctor --strict` reports structure and registration drift:
112
121
 
113
122
  - missing route group registration
123
+ - route files that bypass the configured app-bound route builder
124
+ - route builders that are not bound with `createRoutes<AppContext>()`
114
125
  - stale OpenAPI contract arrays
115
126
  - provider packages installed but not registered
116
127
  - provider env drift
package/src/config.ts CHANGED
@@ -28,6 +28,7 @@ export type BeignetPaths = {
28
28
  policies: string;
29
29
  useCases: string;
30
30
  useCaseBuilder: string;
31
+ routesBuilder: string;
31
32
  listenersBuilder: string;
32
33
  jobsBuilder: string;
33
34
  schedulesBuilder: string;
@@ -98,6 +99,7 @@ export const defaultBeignetConfig: ResolvedBeignetConfig = {
98
99
  policies: "features",
99
100
  useCases: "features",
100
101
  useCaseBuilder: "lib/use-case.ts",
102
+ routesBuilder: "lib/routes.ts",
101
103
  listenersBuilder: "lib/listeners.ts",
102
104
  jobsBuilder: "lib/jobs.ts",
103
105
  schedulesBuilder: "lib/schedules.ts",
package/src/inspect.ts CHANGED
@@ -1519,6 +1519,11 @@ async function inspectCanonicalConformance(
1519
1519
  reason:
1520
1520
  "infra/app-ports.ts should wire concrete app ports for the selected runtime.",
1521
1521
  },
1522
+ {
1523
+ file: config.paths.routesBuilder,
1524
+ reason:
1525
+ "lib/routes.ts should bind route declarations to the shared AppContext type.",
1526
+ },
1522
1527
  ];
1523
1528
 
1524
1529
  if (hasClientSurface) {
@@ -1657,6 +1662,30 @@ async function inspectCanonicalConformance(
1657
1662
  }
1658
1663
  }
1659
1664
 
1665
+ if (files.includes(config.paths.routesBuilder)) {
1666
+ const routesBuilderSource = await readCachedSource(
1667
+ targetDir,
1668
+ config.paths.routesBuilder,
1669
+ sourceCache,
1670
+ );
1671
+ if (
1672
+ !importsAppContext(
1673
+ routesBuilderSource,
1674
+ config.paths.routesBuilder,
1675
+ config,
1676
+ files,
1677
+ ) ||
1678
+ !/\bcreateRoutes\s*<\s*AppContext\s*>\s*\(\s*\)/.test(routesBuilderSource)
1679
+ ) {
1680
+ diagnostics.push({
1681
+ severity: "warning",
1682
+ code: "BEIGNET_ROUTE_BUILDER_CONTEXT",
1683
+ file: config.paths.routesBuilder,
1684
+ message: `${config.paths.routesBuilder} should import AppContext from ${config.paths.appContext} and export route builders from createRoutes<AppContext>().`,
1685
+ });
1686
+ }
1687
+ }
1688
+
1660
1689
  const featureRoutesPath = `${featuresPath}/`;
1661
1690
  for (const file of files) {
1662
1691
  if (!file.startsWith(featureRoutesPath) || !file.endsWith("/routes.ts")) {
@@ -1666,21 +1695,20 @@ async function inspectCanonicalConformance(
1666
1695
  const source = await readCachedSource(targetDir, file, sourceCache);
1667
1696
  if (!source.includes("defineRouteGroup")) continue;
1668
1697
 
1669
- if (!importsAppContext(source, file, config, files)) {
1670
- diagnostics.push({
1671
- severity: "warning",
1672
- code: "BEIGNET_FEATURE_ROUTE_APP_CONTEXT",
1698
+ if (
1699
+ !importsNamedFromFile(
1700
+ source,
1673
1701
  file,
1674
- message: `${file} should import type { AppContext } from ${config.paths.appContext} so feature routes use the app-wide context type.`,
1675
- });
1676
- }
1677
-
1678
- if (!/defineRouteGroup\s*<\s*AppContext\s*>\s*\(\s*\)\s*\(/.test(source)) {
1702
+ config.paths.routesBuilder,
1703
+ "defineRouteGroup",
1704
+ files,
1705
+ )
1706
+ ) {
1679
1707
  diagnostics.push({
1680
1708
  severity: "warning",
1681
- code: "BEIGNET_FEATURE_ROUTE_GROUP_CONTEXT",
1709
+ code: "BEIGNET_FEATURE_ROUTE_BUILDER",
1682
1710
  file,
1683
- message: `${file} should call defineRouteGroup<AppContext>()({ ... }) so route groups preserve per-route contract and use-case type checks.`,
1711
+ message: `${file} should import { defineRouteGroup } from ${config.paths.routesBuilder} so route groups use the app-bound context type.`,
1684
1712
  });
1685
1713
  }
1686
1714
  }
@@ -1743,6 +1771,28 @@ function importsAppContext(
1743
1771
  return false;
1744
1772
  }
1745
1773
 
1774
+ function importsNamedFromFile(
1775
+ source: string,
1776
+ importerFile: string,
1777
+ expectedFile: string,
1778
+ importedName: string,
1779
+ files: string[],
1780
+ ): boolean {
1781
+ const importRegex = /import\s+\{([^}]+)\}\s+from\s+["']([^"']+)["']/g;
1782
+
1783
+ for (const match of source.matchAll(importRegex)) {
1784
+ const sourceFile = sourceFileFromImport(match[2], importerFile, files);
1785
+ if (sourceFile !== expectedFile) continue;
1786
+
1787
+ for (const member of match[1].split(",")) {
1788
+ const parsed = parseImportMember(member);
1789
+ if (parsed?.importedName === importedName) return true;
1790
+ }
1791
+ }
1792
+
1793
+ return false;
1794
+ }
1795
+
1746
1796
  async function inspectAuthzAuditDrift(
1747
1797
  targetDir: string,
1748
1798
  files: string[],
@@ -3941,10 +3991,27 @@ async function listenedEventNames(
3941
3991
  if (!listenerPattern.test(file) || isWorkflowTestFile(file)) continue;
3942
3992
 
3943
3993
  const source = await readFile(path.join(targetDir, file), "utf8");
3944
- for (const match of source.matchAll(
3945
- /\bdefineListener\s*(?:<[^>]*>\s*)?\(\s*([A-Za-z_$][\w$]*)/g,
3946
- )) {
3947
- listened.add(match[1]);
3994
+ const callPattern = /\bdefineListener\s*\(/g;
3995
+ for (const match of source.matchAll(callPattern)) {
3996
+ const openIndex = source.indexOf("(", match.index ?? 0);
3997
+ if (openIndex === -1) continue;
3998
+
3999
+ const closeIndex = matchingDelimiterIndex(source, openIndex, "(", ")");
4000
+ if (closeIndex === -1) continue;
4001
+
4002
+ const args = splitTopLevelArguments(
4003
+ source.slice(openIndex + 1, closeIndex),
4004
+ );
4005
+ const options = args[1]?.trim();
4006
+ if (!options?.startsWith("{") || !options.endsWith("}")) continue;
4007
+
4008
+ const eventProperty = splitTopLevelArguments(options.slice(1, -1)).find(
4009
+ (property) => /^\s*event\s*:/.test(property),
4010
+ );
4011
+ const eventName = /^\s*event\s*:\s*([A-Za-z_$][\w$]*)/.exec(
4012
+ eventProperty ?? "",
4013
+ )?.[1];
4014
+ if (eventName) listened.add(eventName);
3948
4015
  }
3949
4016
  }
3950
4017
 
package/src/lint.ts CHANGED
@@ -1123,6 +1123,8 @@ const serverRuntimePackages = new Set([
1123
1123
  "@beignet/next",
1124
1124
  "@beignet/core/openapi",
1125
1125
  "@beignet/core/server",
1126
+ "@beignet/webhooks-github",
1127
+ "@beignet/webhooks-stripe",
1126
1128
  ]);
1127
1129
 
1128
1130
  function appImportMessage(
@@ -1185,6 +1187,7 @@ function classifyPath(
1185
1187
  const layerSegment = featurePath.split("/")[1];
1186
1188
  if (layerSegment === "domain") return "domain";
1187
1189
  if (layerSegment === "contracts") return "contract";
1190
+ if (layerSegment?.endsWith("-contracts")) return "contract";
1188
1191
  if (layerSegment === "routes") return "route";
1189
1192
  if (layerSegment === "ports") return "feature-port";
1190
1193
  if (layerSegment === "policy") return "policy";
@@ -1205,13 +1208,22 @@ function classifyPath(
1205
1208
  if (layerSegment === "client") return "client";
1206
1209
  }
1207
1210
 
1208
- if (isUnder(normalizedPath, directoryPath(config.paths.contracts))) {
1211
+ if (
1212
+ directoryPath(config.paths.contracts) !== featuresPath &&
1213
+ isUnder(normalizedPath, directoryPath(config.paths.contracts))
1214
+ ) {
1209
1215
  return "contract";
1210
1216
  }
1211
- if (isUnder(normalizedPath, directoryPath(config.paths.useCases))) {
1217
+ if (
1218
+ directoryPath(config.paths.useCases) !== featuresPath &&
1219
+ isUnder(normalizedPath, directoryPath(config.paths.useCases))
1220
+ ) {
1212
1221
  return "use-case";
1213
1222
  }
1214
- if (isUnder(normalizedPath, directoryPath(config.paths.policies))) {
1223
+ if (
1224
+ directoryPath(config.paths.policies) !== featuresPath &&
1225
+ isUnder(normalizedPath, directoryPath(config.paths.policies))
1226
+ ) {
1215
1227
  return "policy";
1216
1228
  }
1217
1229
 
package/src/make/inbox.ts CHANGED
@@ -856,8 +856,7 @@ export function inboxRoutesFile(config: ResolvedBeignetConfig): string {
856
856
  path.join(config.paths.features, "inbox/use-cases/index.ts"),
857
857
  );
858
858
 
859
- return `import { defineRouteGroup } from "@beignet/core/server";
860
- import type { AppContext } from "${aliasModule(config.paths.appContext)}";
859
+ return `import { defineRouteGroup } from "${aliasModule(config.paths.routesBuilder)}";
861
860
  import {
862
861
  \tlistInbox,
863
862
  \tmarkAllRead,
@@ -871,7 +870,7 @@ import {
871
870
  \tmarkReadUseCase,
872
871
  } from "${useCasesModule}";
873
872
 
874
- export const inboxRoutes = defineRouteGroup<AppContext>()({
873
+ export const inboxRoutes = defineRouteGroup({
875
874
  \tname: "inbox",
876
875
  \troutes: [
877
876
  \t\t{ contract: listInbox, useCase: listInboxUseCase },
@@ -31,7 +31,6 @@ import {
31
31
  planGeneratedFiles,
32
32
  type ResourceNames,
33
33
  readOptionalFile,
34
- relativeModule,
35
34
  resourceNames,
36
35
  resourceSharedErrorsPath,
37
36
  seedEntrypointPath,
@@ -1375,14 +1374,11 @@ export const handlePaymentWebhookUseCase = useCase
1375
1374
  }
1376
1375
 
1377
1376
  export function billingRoutesFile(config: ResolvedBeignetConfig): string {
1378
- const routeFilePath = path.join(config.paths.features, "billing/routes.ts");
1379
-
1380
- return `import { defineRouteGroup } from "@beignet/core/server";
1381
- import type { AppContext } from "${relativeModule(routeFilePath, config.paths.appContext)}";
1377
+ return `import { defineRouteGroup } from "${aliasModule(config.paths.routesBuilder)}";
1382
1378
  import * as billingContracts from "@/features/billing/contracts";
1383
1379
  import * as billingUseCases from "@/features/billing/use-cases";
1384
1380
 
1385
- export const billingRoutes = defineRouteGroup<AppContext>()({
1381
+ export const billingRoutes = defineRouteGroup({
1386
1382
  \tname: "billing",
1387
1383
  \troutes: [
1388
1384
  \t\t{