mustard-claude 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +198 -0
  2. package/bin/mustard.js +5 -0
  3. package/dist/analyzers/llm.d.ts +13 -0
  4. package/dist/analyzers/llm.js +339 -0
  5. package/dist/analyzers/llm.js.map +1 -0
  6. package/dist/analyzers/semantic.d.ts +13 -0
  7. package/dist/analyzers/semantic.js +215 -0
  8. package/dist/analyzers/semantic.js.map +1 -0
  9. package/dist/cli.d.ts +1 -0
  10. package/dist/cli.js +42 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/commands/init.d.ts +5 -0
  13. package/dist/commands/init.js +377 -0
  14. package/dist/commands/init.js.map +1 -0
  15. package/dist/commands/sync.d.ts +5 -0
  16. package/dist/commands/sync.js +235 -0
  17. package/dist/commands/sync.js.map +1 -0
  18. package/dist/commands/update.d.ts +8 -0
  19. package/dist/commands/update.js +237 -0
  20. package/dist/commands/update.js.map +1 -0
  21. package/dist/generators/claude-md-llm.d.ts +5 -0
  22. package/dist/generators/claude-md-llm.js +101 -0
  23. package/dist/generators/claude-md-llm.js.map +1 -0
  24. package/dist/generators/claude-md-template.d.ts +5 -0
  25. package/dist/generators/claude-md-template.js +273 -0
  26. package/dist/generators/claude-md-template.js.map +1 -0
  27. package/dist/generators/commands.d.ts +17 -0
  28. package/dist/generators/commands.js +845 -0
  29. package/dist/generators/commands.js.map +1 -0
  30. package/dist/generators/context.d.ts +11 -0
  31. package/dist/generators/context.js +621 -0
  32. package/dist/generators/context.js.map +1 -0
  33. package/dist/generators/hooks.d.ts +5 -0
  34. package/dist/generators/hooks.js +128 -0
  35. package/dist/generators/hooks.js.map +1 -0
  36. package/dist/generators/index.d.ts +11 -0
  37. package/dist/generators/index.js +541 -0
  38. package/dist/generators/index.js.map +1 -0
  39. package/dist/generators/prompts.d.ts +13 -0
  40. package/dist/generators/prompts.js +579 -0
  41. package/dist/generators/prompts.js.map +1 -0
  42. package/dist/generators/registry.d.ts +5 -0
  43. package/dist/generators/registry.js +93 -0
  44. package/dist/generators/registry.js.map +1 -0
  45. package/dist/scanners/dependencies.d.ts +7 -0
  46. package/dist/scanners/dependencies.js +195 -0
  47. package/dist/scanners/dependencies.js.map +1 -0
  48. package/dist/scanners/index.d.ts +6 -0
  49. package/dist/scanners/index.js +37 -0
  50. package/dist/scanners/index.js.map +1 -0
  51. package/dist/scanners/samples.d.ts +8 -0
  52. package/dist/scanners/samples.js +193 -0
  53. package/dist/scanners/samples.js.map +1 -0
  54. package/dist/scanners/stack.d.ts +5 -0
  55. package/dist/scanners/stack.js +294 -0
  56. package/dist/scanners/stack.js.map +1 -0
  57. package/dist/scanners/structure.d.ts +5 -0
  58. package/dist/scanners/structure.js +274 -0
  59. package/dist/scanners/structure.js.map +1 -0
  60. package/dist/services/grepai.d.ts +25 -0
  61. package/dist/services/grepai.js +89 -0
  62. package/dist/services/grepai.js.map +1 -0
  63. package/dist/services/ollama.d.ts +22 -0
  64. package/dist/services/ollama.js +86 -0
  65. package/dist/services/ollama.js.map +1 -0
  66. package/dist/services/package-manager.d.ts +95 -0
  67. package/dist/services/package-manager.js +164 -0
  68. package/dist/services/package-manager.js.map +1 -0
  69. package/dist/types.d.ts +233 -0
  70. package/dist/types.js +5 -0
  71. package/dist/types.js.map +1 -0
  72. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C;;GAEG;AACH,SAAS,SAAS,CAAoC,MAAS,EAAE,MAAkB;IACjF,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAmB,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,IACE,WAAW,KAAK,IAAI;YACpB,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3B,WAAW,KAAK,IAAI;YACpB,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,WAAsC,EACtC,WAAsC,CACzB,CAAC;QAClB,CAAC;aAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,GAAG,WAAyB,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,WAAwB,EAAE,QAAkB,EAAE,UAA4B,EAAE;IACjI,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACzG,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,qCAAqC;IACrC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,wDAAwD;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEhD,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC/B,IAAI,CAAC,cAAc,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,eAAe,GAAkB,IAAI,CAAC;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAe,GAAG,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAC/C,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,mBAAmB;IACnB,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,yBAAyB;IACzB,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;IACxE,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEzC,4CAA4C;IAC5C,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,uBAAuB,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9F,cAAc,CAAC,IAAI,CAAC,YAAY,uBAAuB,IAAI,IAAI,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,iBAAiB;IACjB,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,2BAA2B;IAC3B,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAE5C,uEAAuE;IACvE,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChC,MAAM,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACjD,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;IAE/D,sCAAsC;IACtC,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACxC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEzC,mCAAmC;IACnC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChC,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACnC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAErC,sBAAsB;IACtB,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1B,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAE7C,kFAAkF;IAClF,GAAG,CAAC,8CAA8C,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE;QACzF,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC,CAAC;IACH,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAErC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,WAAqB;IACjD,OAAO;;;;;;EAMP,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;CAmBnE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACrD,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEvB,CAAC;IAEA,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;IAEzE,gDAAgD;IAChD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAAC,UAAkB,EAAE,WAAwB;IAC3E,qCAAqC;IACrC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrB,CAAC;IAEA,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,WAAW,CAAC,CAAC;IAEzE,yBAAyB;IACzB,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiClB,CAAC;IAEA,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IAChD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAErD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,2CAA2C;QAC3C,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,wDAAwD;YACnE,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ;wBACE,SAAS,EAAE,YAAY;wBACvB,OAAO,EAAE;4BACP;gCACE,MAAM,EAAE,SAAS;gCACjB,SAAS,EAAE,wCAAwC;gCACnD,SAAS,EAAE,CAAC;6BACb;yBACF;qBACF;iBACF;aACF;SACF,CAAC;QACF,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,UAAkB;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE9C,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,qBAAqB;IACrB,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAErD,wBAAwB;IACxB,IAAI,gBAAgB,GAA4B,EAAE,CAAC;IACnD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG;YACjB,SAAS,EAAE,wDAAwD;YACnE,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ;wBACE,SAAS,EAAE,YAAY;wBACvB,OAAO,EAAE;4BACP;gCACE,MAAM,EAAE,SAAS;gCACjB,SAAS,EAAE,wCAAwC;gCACnD,SAAS,EAAE,CAAC;6BACb;yBACF;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,IAAI,gBAAgB,GAA4B,EAAE,CAAC;IACnD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpD,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAE7D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,WAAwB,EACxB,QAAkB,EAClB,UAA4B,EAAE;IAE9B,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,iBAAiB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACzF,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,GAAG,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,oCAAoC;IACpC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,kDAAkD;IAClD,IAAI,iBAAiB,EAAE,CAAC;QACtB,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,eAAe,GAAkB,IAAI,CAAC;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAe,GAAG,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAC/C,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,qEAAqE;IACrE,qDAAqD;IAErD,uFAAuF;IACvF,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,uBAAuB,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9F,cAAc,CAAC,IAAI,CAAC,YAAY,uBAAuB,IAAI,IAAI,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,iBAAiB;IACjB,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,2BAA2B;IAC3B,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAE5C,uEAAuE;IACvE,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChC,MAAM,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACjD,cAAc,CAAC,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;IAE/D,+DAA+D;IAC/D,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACrC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACxC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAErC,eAAe;IACf,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1B,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAE7C,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACrD,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEvB,CAAC;IAEA,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ProjectInfo, Analysis, GeneratedPrompts, PromptGeneratorOptions, DiscoveredPatterns } from '../types.js';
2
+ /**
3
+ * Generate prompt files
4
+ */
5
+ export declare function generatePrompts(projectInfo: ProjectInfo, analysis: Analysis, options?: PromptGeneratorOptions): Promise<GeneratedPrompts>;
6
+ /**
7
+ * Generate auto-populated context section for a prompt
8
+ */
9
+ export declare function generateAutoSection(promptType: string, projectInfo: ProjectInfo, analysis: Analysis, patterns: DiscoveredPatterns): string;
10
+ /**
11
+ * Merge auto-generated content with existing prompt, preserving user content
12
+ */
13
+ export declare function mergePromptContext(existingContent: string, newAutoSection: string): string;
@@ -0,0 +1,579 @@
1
+ import * as llm from '../analyzers/llm.js';
2
+ /**
3
+ * Get the run command for a package manager
4
+ */
5
+ function getRunCommand(packageManager, script) {
6
+ switch (packageManager) {
7
+ case 'pnpm':
8
+ return `pnpm ${script}`;
9
+ case 'yarn':
10
+ return `yarn ${script}`;
11
+ case 'bun':
12
+ return `bun run ${script}`;
13
+ case 'npm':
14
+ default:
15
+ return `npm run ${script}`;
16
+ }
17
+ }
18
+ /**
19
+ * Generate prompt files
20
+ */
21
+ export async function generatePrompts(projectInfo, analysis, options = {}) {
22
+ const { useOllama = true, model } = options;
23
+ // Determine which prompts to generate
24
+ const hasBackend = projectInfo.stacks.some(s => ['dotnet', 'node', 'python', 'java', 'go', 'rust'].includes(s.name));
25
+ const hasFrontend = projectInfo.stacks.some(s => ['react', 'nextjs', 'vue', 'angular', 'svelte'].includes(s.name));
26
+ const hasDatabase = projectInfo.stacks.some(s => ['drizzle', 'prisma', 'typeorm', 'sequelize'].includes(s.name));
27
+ // Generate bugfix and review (always template-based)
28
+ const bugfix = generateBugfixTemplate(projectInfo);
29
+ const review = generateReviewTemplate(projectInfo);
30
+ // Generate naming conventions (central reference for L3)
31
+ const naming = generateNamingTemplate(projectInfo);
32
+ const prompts = {
33
+ orchestrator: generateOrchestratorTemplate(projectInfo),
34
+ bugfix,
35
+ review,
36
+ naming
37
+ };
38
+ // If using Ollama, call llm.generatePrompts() ONCE and reuse results
39
+ if (useOllama) {
40
+ try {
41
+ const llmResult = await llm.generatePrompts(projectInfo, analysis, { model });
42
+ if (llmResult.orchestrator)
43
+ prompts.orchestrator = llmResult.orchestrator;
44
+ if (hasBackend && llmResult.backend)
45
+ prompts.backend = llmResult.backend;
46
+ if (hasFrontend && llmResult.frontend)
47
+ prompts.frontend = llmResult.frontend;
48
+ if (hasDatabase && llmResult.database)
49
+ prompts.database = llmResult.database;
50
+ }
51
+ catch {
52
+ // Ollama failed - fall through to templates below
53
+ }
54
+ }
55
+ // Fill missing prompts with templates
56
+ if (hasBackend && !prompts.backend) {
57
+ prompts.backend = generateBackendTemplate(projectInfo);
58
+ }
59
+ if (hasFrontend && !prompts.frontend) {
60
+ prompts.frontend = generateFrontendTemplate(projectInfo);
61
+ }
62
+ if (hasDatabase && !prompts.database) {
63
+ prompts.database = generateDatabaseTemplate(projectInfo);
64
+ }
65
+ return prompts;
66
+ }
67
+ // ============== Template Generation ==============
68
+ function generateOrchestratorTemplate(projectInfo) {
69
+ return `# Orchestrator
70
+
71
+ ## Identity
72
+
73
+ You are the **Orchestrator**. You coordinate the development pipeline but **DO NOT implement code directly**.
74
+
75
+ ## Required Pipeline
76
+
77
+ \`\`\`
78
+ 1. EXPLORE → Task(Explore) to analyze requirements
79
+ 2. SPEC → Create spec at spec/active/{name}/spec.md
80
+ 3. APPROVE → Present spec for user approval
81
+ 4. IMPLEMENT → Task(general-purpose) with specialized prompts
82
+ 5. REVIEW → Task(general-purpose) with review prompt
83
+ 6. COMPLETE → Update registry, move spec to completed/
84
+ \`\`\`
85
+
86
+ ## Rules
87
+
88
+ - **NEVER** write code directly
89
+ - **ALWAYS** delegate via Task tool
90
+ - **FOLLOW** the pipeline strictly
91
+ - **PRESENT** spec before implementing
92
+
93
+ ## Delegation
94
+
95
+ | Task | subagent_type | model |
96
+ |------|---------------|-------|
97
+ | Explore | Explore | haiku |
98
+ | Backend | general-purpose | opus |
99
+ | Frontend | general-purpose | opus |
100
+ | Database | general-purpose | opus |
101
+ | Review | general-purpose | opus |
102
+
103
+ ## Usage Example
104
+
105
+ \`\`\`javascript
106
+ // 1. Explore
107
+ Task({
108
+ subagent_type: "Explore",
109
+ model: "haiku",
110
+ description: "Explore feature X",
111
+ prompt: "Analyze requirements for feature X..."
112
+ })
113
+
114
+ // 2. Implement Backend
115
+ Task({
116
+ subagent_type: "general-purpose",
117
+ model: "opus",
118
+ description: "Implement backend X",
119
+ prompt: \`
120
+ # You are the BACKEND SPECIALIST
121
+ [backend prompt]
122
+
123
+ # TASK
124
+ Implement feature X according to spec...
125
+ \`
126
+ })
127
+ \`\`\`
128
+ `;
129
+ }
130
+ function generateBugfixTemplate(projectInfo) {
131
+ return `# Bugfix Specialist
132
+
133
+ ## Identity
134
+
135
+ You are the **Bugfix Specialist**. You diagnose and fix bugs in the code.
136
+
137
+ ## Process
138
+
139
+ 1. **REPRODUCE** - Understand how the bug manifests
140
+ 2. **DIAGNOSE** - Find the root cause using grepai
141
+ 3. **FIX** - Apply the minimal necessary fix
142
+ 4. **VALIDATE** - Verify the fix works
143
+
144
+ ## Rules
145
+
146
+ - **NEVER** make changes unrelated to the bug
147
+ - **ALWAYS** use grepai to search related code
148
+ - **DOCUMENT** the root cause before fixing
149
+ - **TEST** the fix before finalizing
150
+
151
+ ## Using grepai
152
+
153
+ \`\`\`javascript
154
+ // Search for code related to the error
155
+ grepai_search({ query: "error message or symptom" })
156
+
157
+ // Trace who calls the buggy function
158
+ grepai_trace_callers({ symbol: "FunctionWithBug" })
159
+
160
+ // Trace what the function calls
161
+ grepai_trace_callees({ symbol: "FunctionWithBug" })
162
+ \`\`\`
163
+
164
+ ## Checklist
165
+
166
+ - [ ] Reproduced the bug
167
+ - [ ] Identified root cause
168
+ - [ ] Applied minimal fix
169
+ - [ ] Verified nothing broke
170
+ - [ ] Tested the fix
171
+ `;
172
+ }
173
+ function generateReviewTemplate(projectInfo) {
174
+ return `# Review Specialist
175
+
176
+ ## Identity
177
+
178
+ You are the **Review Specialist**. You validate implementations and ensure quality.
179
+
180
+ ## Review Checklist
181
+
182
+ ### Code
183
+
184
+ - [ ] Follows project naming conventions
185
+ - [ ] Uses dependency injection correctly
186
+ - [ ] Has no duplicate code
187
+ - [ ] Handles errors appropriately
188
+ - [ ] Is testable
189
+
190
+ ### Architecture
191
+
192
+ - [ ] Follows established patterns
193
+ - [ ] Does not violate layers (e.g., Service accessing DbContext)
194
+ - [ ] Maintains separation of concerns
195
+
196
+ ### Security
197
+
198
+ - [ ] Does not expose sensitive data
199
+ - [ ] Validates inputs appropriately
200
+ - [ ] Uses authentication/authorization when needed
201
+
202
+ ### Completeness
203
+
204
+ - [ ] Implements all spec requirements
205
+ - [ ] Updates entity registry if needed
206
+ - [ ] Has no TODOs or commented code
207
+
208
+ ## Result
209
+
210
+ After review, respond with:
211
+ - **APPROVED** - If everything is correct
212
+ - **ADJUSTMENTS** - List of issues found
213
+ `;
214
+ }
215
+ function generateBackendTemplate(projectInfo) {
216
+ const backendStack = projectInfo.stacks.find(s => ['dotnet', 'node', 'python', 'java', 'go', 'rust'].includes(s.name));
217
+ const stackName = backendStack?.name ?? 'unknown';
218
+ const stackVersion = backendStack?.version ?? '';
219
+ return `# Backend Specialist
220
+
221
+ ## Identity
222
+
223
+ You are the **Backend Specialist**. You implement server-side code.
224
+
225
+ ## Stack
226
+
227
+ - **Language/Framework:** ${stackName} ${stackVersion}
228
+ - **Architecture:** ${projectInfo.structure?.architecture?.type ?? 'layered'}
229
+
230
+ ## Responsibilities
231
+
232
+ - Implement endpoints/APIs
233
+ - Create services and business logic
234
+ - Configure repositories/data access
235
+ - Manage authentication/authorization
236
+ - Handle errors and validations
237
+
238
+ ## Rules
239
+
240
+ ${stackName === 'dotnet' ? `
241
+ ### .NET Specific
242
+
243
+ - Service does NOT access DbContext directly (use Repository)
244
+ - Service only injects its own Repository + external Services
245
+ - Prefer segregated interfaces (ISP)
246
+ - Validate inputs at the boundary (endpoints)
247
+ - Use DTOs for data transfer
248
+ ` : `
249
+ ### General
250
+
251
+ - Separate business logic into services
252
+ - Use repository pattern for data access
253
+ - Validate inputs at the boundary
254
+ - Return consistent errors
255
+ `}
256
+
257
+ ## File Structure
258
+
259
+ \`\`\`
260
+ ${stackName === 'dotnet' ? `
261
+ Modules/
262
+ └── {Entity}/
263
+ ├── Endpoints/
264
+ │ ├── Get{Entity}.cs
265
+ │ ├── Create{Entity}.cs
266
+ │ └── ...
267
+ ├── Services/
268
+ │ └── {Entity}Service.cs
269
+ ├── Mappers/
270
+ │ └── {Entity}Mapper.cs
271
+ └── Interfaces/
272
+ └── I{Entity}Service.cs
273
+ ` : `
274
+ src/
275
+ └── modules/
276
+ └── {entity}/
277
+ ├── {entity}.controller.ts
278
+ ├── {entity}.service.ts
279
+ └── {entity}.repository.ts
280
+ `}
281
+ \`\`\`
282
+ `;
283
+ }
284
+ function generateFrontendTemplate(projectInfo) {
285
+ const frontendStack = projectInfo.stacks.find(s => ['react', 'nextjs', 'vue', 'angular', 'svelte'].includes(s.name));
286
+ const stackName = frontendStack?.name ?? 'react';
287
+ const stackVersion = frontendStack?.version ?? '';
288
+ return `# Frontend Specialist
289
+
290
+ ## Identity
291
+
292
+ You are the **Frontend Specialist**. You implement client-side code.
293
+
294
+ ## Stack
295
+
296
+ - **Framework:** ${stackName} ${stackVersion}
297
+
298
+ ## Responsibilities
299
+
300
+ - Create React/Vue/etc components
301
+ - Implement custom hooks
302
+ - Manage state
303
+ - Integrate with APIs
304
+ - Ensure accessibility
305
+
306
+ ## Rules
307
+
308
+ ${stackName === 'react' || stackName === 'nextjs' ? `
309
+ ### React Specific
310
+
311
+ - Functional components with hooks
312
+ - Custom hooks for reusable logic
313
+ - TypeScript for type safety
314
+ - TanStack Query for data fetching
315
+ - Handle loading/error states
316
+ ` : `
317
+ ### General
318
+
319
+ - Reusable components
320
+ - Separation of concerns
321
+ - Type safety
322
+ - Async state handling
323
+ `}
324
+
325
+ ## File Structure
326
+
327
+ \`\`\`
328
+ ${stackName === 'nextjs' ? `
329
+ src/
330
+ ├── app/
331
+ │ └── {route}/
332
+ │ └── page.tsx
333
+ └── features/
334
+ └── {entity}/
335
+ ├── components/
336
+ ├── hooks/
337
+ └── types.ts
338
+ ` : `
339
+ src/
340
+ └── features/
341
+ └── {entity}/
342
+ ├── components/
343
+ │ ├── {Entity}Form.tsx
344
+ │ ├── {Entity}List.tsx
345
+ │ └── {Entity}Card.tsx
346
+ ├── hooks/
347
+ │ └── use{Entity}.ts
348
+ └── pages/
349
+ └── {Entity}Page.tsx
350
+ `}
351
+ \`\`\`
352
+ `;
353
+ }
354
+ function generateDatabaseTemplate(projectInfo) {
355
+ const dbStack = projectInfo.stacks.find(s => ['drizzle', 'prisma', 'typeorm', 'sequelize'].includes(s.name));
356
+ const ormName = dbStack?.name ?? 'drizzle';
357
+ return `# Database Specialist
358
+
359
+ ## Identity
360
+
361
+ You are the **Database Specialist**. You manage schemas and migrations.
362
+
363
+ ## ORM
364
+
365
+ - **ORM:** ${ormName}
366
+
367
+ ## Responsibilities
368
+
369
+ - Create/modify table schemas
370
+ - Manage migrations
371
+ - Define relationships
372
+ - Configure indexes
373
+
374
+ ## Rules
375
+
376
+ ${ormName === 'drizzle' ? `
377
+ ### Drizzle Specific
378
+
379
+ - Schemas in \`schema/{entity}.ts\`
380
+ - Use \`pgTable\` for PostgreSQL
381
+ - Convention: tables in snake_case plural
382
+ - Explicit foreign keys
383
+ - Soft delete with \`deletedAt\`
384
+ ` : `
385
+ ### General
386
+
387
+ - Table names in snake_case plural
388
+ - Primary keys as UUID or bigint
389
+ - Timestamps (createdAt, updatedAt)
390
+ - Soft delete when appropriate
391
+ `}
392
+
393
+ ## Schema Example
394
+
395
+ \`\`\`typescript
396
+ ${ormName === 'drizzle' ? `
397
+ import { pgTable, uuid, varchar, timestamp } from 'drizzle-orm/pg-core';
398
+
399
+ export const contracts = pgTable('contracts', {
400
+ id: uuid('id').primaryKey().defaultRandom(),
401
+ name: varchar('name', { length: 255 }).notNull(),
402
+ createdAt: timestamp('created_at').defaultNow().notNull(),
403
+ updatedAt: timestamp('updated_at').defaultNow().notNull(),
404
+ deletedAt: timestamp('deleted_at'),
405
+ });
406
+ ` : `
407
+ // Schema example for ${ormName}
408
+ `}
409
+ \`\`\`
410
+
411
+ ## Commands
412
+
413
+ - Generate migration: \`${getRunCommand(projectInfo.packageManager, 'db:generate')}\`
414
+ - Run migration: \`${getRunCommand(projectInfo.packageManager, 'db:migrate')}\`
415
+ - Push (dev): \`${getRunCommand(projectInfo.packageManager, 'db:push')}\`
416
+ `;
417
+ }
418
+ function generateNamingTemplate(projectInfo) {
419
+ const classPattern = projectInfo.patterns?.classes ?? 'PascalCase';
420
+ const filePattern = projectInfo.patterns?.files ?? 'kebab-case';
421
+ const folderPattern = projectInfo.patterns?.folders ?? 'plural';
422
+ return `# Naming Conventions Prompt
423
+
424
+ > Central reference for naming conventions (L3).
425
+ > Other prompts (backend, frontend, database) should reference this file.
426
+
427
+ ## Rule L3
428
+
429
+ > **L3 - Naming:** All implementations MUST follow the project naming conventions.
430
+
431
+ ## Detected Conventions
432
+
433
+ | Type | Pattern |
434
+ |------|---------|
435
+ | Classes | ${classPattern} |
436
+ | Files | ${typeof filePattern === 'object' ? JSON.stringify(filePattern) : filePattern} |
437
+ | Folders | ${folderPattern} |
438
+
439
+ ## Quick Reference
440
+
441
+ | Type | Pattern | Example |
442
+ |------|---------|---------|
443
+ | Entity/Class | PascalCase singular | \`Contract\`, \`Person\` |
444
+ | DB Table | snake_case plural | \`contracts\`, \`people\` |
445
+ | DB Column | snake_case | \`created_at\`, \`tenant_id\` |
446
+ | Foreign Key | {table}_id | \`contract_id\` |
447
+ | Index | idx_{table}_{cols} | \`idx_contracts_tenant\` |
448
+ | Endpoint/Route | kebab-case | \`/api/contracts\` |
449
+ | Component | PascalCase | \`ContractForm\` |
450
+ | Hook | use + camelCase | \`useContracts\` |
451
+ | Service | PascalCase + Service | \`ContractService\` |
452
+
453
+ ## Entities / Classes
454
+
455
+ \`\`\`
456
+ ✅ Contract
457
+ ✅ Person
458
+ ✅ InvoiceItem
459
+
460
+ ❌ Contracts (not plural)
461
+ ❌ contract (not lowercase)
462
+ ❌ invoice_item (not snake_case)
463
+ \`\`\`
464
+
465
+ ## Database Tables
466
+
467
+ \`\`\`
468
+ ✅ contracts
469
+ ✅ people
470
+ ✅ invoice_items
471
+
472
+ ❌ Contract (not singular)
473
+ ❌ InvoiceItems (not PascalCase)
474
+ \`\`\`
475
+
476
+ ## Endpoints / Routes
477
+
478
+ \`\`\`
479
+ ✅ /api/contracts
480
+ ✅ /api/contracts/{id}
481
+ ✅ /api/invoice-items
482
+
483
+ ❌ /api/Contracts
484
+ ❌ /api/contract
485
+ ❌ /api/invoiceItems
486
+ \`\`\`
487
+
488
+ ## Hooks (Frontend)
489
+
490
+ \`\`\`
491
+ ✅ useContract
492
+ ✅ useContracts
493
+ ✅ useContractMutations
494
+
495
+ ❌ UseContract
496
+ ❌ use-contract
497
+ ❌ contractHook
498
+ \`\`\`
499
+
500
+ ## Abbreviations
501
+
502
+ **Avoid** abbreviations in names:
503
+
504
+ - ✅ Configuration, ❌ Config
505
+ - ✅ Application, ❌ App
506
+ - ✅ Repository, ❌ Repo
507
+
508
+ **Accepted exceptions:** \`Id\`, \`Dto\`, \`Api\`
509
+
510
+ ## Validation Checklist (L3)
511
+
512
+ \`\`\`
513
+ □ Class names in PascalCase singular
514
+ □ Table names in snake_case plural
515
+ □ Column names in snake_case
516
+ □ Foreign keys with _id suffix
517
+ □ Endpoints in kebab-case
518
+ □ Hooks with use prefix
519
+ □ No abbreviations (except Id, Dto, Api)
520
+ \`\`\`
521
+
522
+ ## See Also
523
+
524
+ - [enforcement.md](../core/enforcement.md) - Rule L3
525
+ - [backend.md](./backend.md) - Backend patterns
526
+ - [frontend.md](./frontend.md) - Frontend patterns
527
+ - [database.md](./database.md) - Database patterns
528
+ `;
529
+ }
530
+ // ============== Sync/Merge Functions ==============
531
+ const AUTO_START = '<!-- MUSTARD:AUTO-START -->';
532
+ const AUTO_END = '<!-- MUSTARD:AUTO-END -->';
533
+ /**
534
+ * Generate auto-populated context section for a prompt
535
+ */
536
+ export function generateAutoSection(promptType, projectInfo, analysis, patterns) {
537
+ const stacks = projectInfo.stacks.map(s => `${s.name} ${s.version || ''}`).join(', ');
538
+ const entities = patterns.entities?.map(e => e.name).slice(0, 10).join(', ') || 'None detected';
539
+ const architecture = analysis.architecture?.type || projectInfo.structure?.architecture?.type || 'unknown';
540
+ const detectedPatterns = analysis.patterns?.length > 0 ? analysis.patterns.join(', ') : 'Standard';
541
+ return `${AUTO_START}
542
+ ## Project Context (Auto-Generated)
543
+
544
+ - **Stacks:** ${stacks}
545
+ - **Architecture:** ${architecture}
546
+ - **Entities:** ${entities}${patterns.entities && patterns.entities.length > 10 ? ` (+${patterns.entities.length - 10} more)` : ''}
547
+ - **Patterns:** ${detectedPatterns}
548
+
549
+ > This section is auto-updated by \`mustard sync\`. Edit content below the marker.
550
+ ${AUTO_END}`;
551
+ }
552
+ /**
553
+ * Merge auto-generated content with existing prompt, preserving user content
554
+ */
555
+ export function mergePromptContext(existingContent, newAutoSection) {
556
+ const hasAutoSection = existingContent.includes(AUTO_START) && existingContent.includes(AUTO_END);
557
+ if (hasAutoSection) {
558
+ // Replace existing auto section
559
+ const regex = new RegExp(`${escapeRegex(AUTO_START)}[\\s\\S]*?${escapeRegex(AUTO_END)}`, 'g');
560
+ return existingContent.replace(regex, newAutoSection);
561
+ }
562
+ else {
563
+ // Insert auto section after the title (first # line)
564
+ const lines = existingContent.split('\n');
565
+ const titleIndex = lines.findIndex(l => l.startsWith('# '));
566
+ if (titleIndex >= 0) {
567
+ lines.splice(titleIndex + 1, 0, '', newAutoSection, '');
568
+ return lines.join('\n');
569
+ }
570
+ else {
571
+ // No title found, prepend
572
+ return newAutoSection + '\n\n' + existingContent;
573
+ }
574
+ }
575
+ }
576
+ function escapeRegex(str) {
577
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
578
+ }
579
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/generators/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ProjectInfo, Analysis, EntityRegistry } from '../types.js';
2
+ /**
3
+ * Generate entity-registry.json
4
+ */
5
+ export declare function generateRegistry(projectInfo: ProjectInfo, analysis: Analysis): EntityRegistry;