popeye-cli 2.2.0 → 2.7.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 (323) hide show
  1. package/dist/adapters/gemini.d.ts +14 -0
  2. package/dist/adapters/gemini.d.ts.map +1 -1
  3. package/dist/adapters/gemini.js +41 -6
  4. package/dist/adapters/gemini.js.map +1 -1
  5. package/dist/adapters/grok.d.ts +14 -0
  6. package/dist/adapters/grok.d.ts.map +1 -1
  7. package/dist/adapters/grok.js +42 -6
  8. package/dist/adapters/grok.js.map +1 -1
  9. package/dist/adapters/openai.d.ts +10 -0
  10. package/dist/adapters/openai.d.ts.map +1 -1
  11. package/dist/adapters/openai.js +44 -5
  12. package/dist/adapters/openai.js.map +1 -1
  13. package/dist/cli/commands/create.js +1 -1
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/interactive.d.ts.map +1 -1
  16. package/dist/cli/interactive.js +324 -20
  17. package/dist/cli/interactive.js.map +1 -1
  18. package/dist/generators/all.d.ts.map +1 -1
  19. package/dist/generators/all.js +3 -2
  20. package/dist/generators/all.js.map +1 -1
  21. package/dist/generators/doc-parser.d.ts +21 -6
  22. package/dist/generators/doc-parser.d.ts.map +1 -1
  23. package/dist/generators/doc-parser.js +55 -4
  24. package/dist/generators/doc-parser.js.map +1 -1
  25. package/dist/generators/templates/fullstack.js +1 -1
  26. package/dist/generators/templates/website-components.js +1 -1
  27. package/dist/generators/templates/website-components.js.map +1 -1
  28. package/dist/generators/templates/website-config.d.ts +4 -1
  29. package/dist/generators/templates/website-config.d.ts.map +1 -1
  30. package/dist/generators/templates/website-config.js +17 -11
  31. package/dist/generators/templates/website-config.js.map +1 -1
  32. package/dist/generators/templates/website-conversion.js +1 -1
  33. package/dist/generators/templates/website-conversion.js.map +1 -1
  34. package/dist/generators/templates/website-landing.js +1 -1
  35. package/dist/generators/templates/website-landing.js.map +1 -1
  36. package/dist/generators/templates/website-layout.d.ts +36 -4
  37. package/dist/generators/templates/website-layout.d.ts.map +1 -1
  38. package/dist/generators/templates/website-layout.js +466 -23
  39. package/dist/generators/templates/website-layout.js.map +1 -1
  40. package/dist/generators/templates/website-pricing.js +1 -1
  41. package/dist/generators/templates/website-pricing.js.map +1 -1
  42. package/dist/generators/templates/website-sections.js +1 -1
  43. package/dist/generators/templates/website-sections.js.map +1 -1
  44. package/dist/generators/templates/website-seo.d.ts.map +1 -1
  45. package/dist/generators/templates/website-seo.js +4 -1
  46. package/dist/generators/templates/website-seo.js.map +1 -1
  47. package/dist/generators/templates/website.d.ts +1 -1
  48. package/dist/generators/templates/website.d.ts.map +1 -1
  49. package/dist/generators/templates/website.js +1 -1
  50. package/dist/generators/templates/website.js.map +1 -1
  51. package/dist/generators/website-content-ai.d.ts +52 -0
  52. package/dist/generators/website-content-ai.d.ts.map +1 -0
  53. package/dist/generators/website-content-ai.js +141 -0
  54. package/dist/generators/website-content-ai.js.map +1 -0
  55. package/dist/generators/website-content-scanner.d.ts +1 -1
  56. package/dist/generators/website-content-scanner.d.ts.map +1 -1
  57. package/dist/generators/website-content-scanner.js +98 -1
  58. package/dist/generators/website-content-scanner.js.map +1 -1
  59. package/dist/generators/website-context.d.ts +34 -1
  60. package/dist/generators/website-context.d.ts.map +1 -1
  61. package/dist/generators/website-context.js +131 -9
  62. package/dist/generators/website-context.js.map +1 -1
  63. package/dist/generators/website-debug.d.ts +12 -0
  64. package/dist/generators/website-debug.d.ts.map +1 -1
  65. package/dist/generators/website-debug.js +16 -0
  66. package/dist/generators/website-debug.js.map +1 -1
  67. package/dist/generators/website.d.ts.map +1 -1
  68. package/dist/generators/website.js +26 -4
  69. package/dist/generators/website.js.map +1 -1
  70. package/dist/pipeline/auto-recovery.d.ts +56 -0
  71. package/dist/pipeline/auto-recovery.d.ts.map +1 -0
  72. package/dist/pipeline/auto-recovery.js +185 -0
  73. package/dist/pipeline/auto-recovery.js.map +1 -0
  74. package/dist/pipeline/change-request.d.ts +39 -0
  75. package/dist/pipeline/change-request.d.ts.map +1 -1
  76. package/dist/pipeline/change-request.js +40 -1
  77. package/dist/pipeline/change-request.js.map +1 -1
  78. package/dist/pipeline/check-runner.d.ts +30 -1
  79. package/dist/pipeline/check-runner.d.ts.map +1 -1
  80. package/dist/pipeline/check-runner.js +122 -1
  81. package/dist/pipeline/check-runner.js.map +1 -1
  82. package/dist/pipeline/command-resolver.d.ts.map +1 -1
  83. package/dist/pipeline/command-resolver.js +33 -2
  84. package/dist/pipeline/command-resolver.js.map +1 -1
  85. package/dist/pipeline/consensus/arbitrator-query.d.ts +22 -0
  86. package/dist/pipeline/consensus/arbitrator-query.d.ts.map +1 -0
  87. package/dist/pipeline/consensus/arbitrator-query.js +70 -0
  88. package/dist/pipeline/consensus/arbitrator-query.js.map +1 -0
  89. package/dist/pipeline/consensus/consensus-runner.d.ts +131 -7
  90. package/dist/pipeline/consensus/consensus-runner.d.ts.map +1 -1
  91. package/dist/pipeline/consensus/consensus-runner.js +809 -35
  92. package/dist/pipeline/consensus/consensus-runner.js.map +1 -1
  93. package/dist/pipeline/cr-lifecycle.d.ts +42 -0
  94. package/dist/pipeline/cr-lifecycle.d.ts.map +1 -0
  95. package/dist/pipeline/cr-lifecycle.js +89 -0
  96. package/dist/pipeline/cr-lifecycle.js.map +1 -0
  97. package/dist/pipeline/gate-engine.d.ts +1 -0
  98. package/dist/pipeline/gate-engine.d.ts.map +1 -1
  99. package/dist/pipeline/gate-engine.js +26 -7
  100. package/dist/pipeline/gate-engine.js.map +1 -1
  101. package/dist/pipeline/orchestrator.d.ts +1 -1
  102. package/dist/pipeline/orchestrator.d.ts.map +1 -1
  103. package/dist/pipeline/orchestrator.js +306 -16
  104. package/dist/pipeline/orchestrator.js.map +1 -1
  105. package/dist/pipeline/packets/consensus-packet-builder.d.ts +15 -4
  106. package/dist/pipeline/packets/consensus-packet-builder.d.ts.map +1 -1
  107. package/dist/pipeline/packets/consensus-packet-builder.js +29 -17
  108. package/dist/pipeline/packets/consensus-packet-builder.js.map +1 -1
  109. package/dist/pipeline/phases/architecture.d.ts.map +1 -1
  110. package/dist/pipeline/phases/architecture.js +5 -3
  111. package/dist/pipeline/phases/architecture.js.map +1 -1
  112. package/dist/pipeline/phases/audit.d.ts.map +1 -1
  113. package/dist/pipeline/phases/audit.js +5 -3
  114. package/dist/pipeline/phases/audit.js.map +1 -1
  115. package/dist/pipeline/phases/consensus-architecture.d.ts.map +1 -1
  116. package/dist/pipeline/phases/consensus-architecture.js +10 -1
  117. package/dist/pipeline/phases/consensus-architecture.js.map +1 -1
  118. package/dist/pipeline/phases/consensus-master-plan.d.ts.map +1 -1
  119. package/dist/pipeline/phases/consensus-master-plan.js +10 -3
  120. package/dist/pipeline/phases/consensus-master-plan.js.map +1 -1
  121. package/dist/pipeline/phases/consensus-role-plans.d.ts.map +1 -1
  122. package/dist/pipeline/phases/consensus-role-plans.js +10 -1
  123. package/dist/pipeline/phases/consensus-role-plans.js.map +1 -1
  124. package/dist/pipeline/phases/done.d.ts.map +1 -1
  125. package/dist/pipeline/phases/done.js +9 -4
  126. package/dist/pipeline/phases/done.js.map +1 -1
  127. package/dist/pipeline/phases/intake.d.ts.map +1 -1
  128. package/dist/pipeline/phases/intake.js +7 -3
  129. package/dist/pipeline/phases/intake.js.map +1 -1
  130. package/dist/pipeline/phases/phase-context.d.ts +2 -0
  131. package/dist/pipeline/phases/phase-context.d.ts.map +1 -1
  132. package/dist/pipeline/phases/phase-context.js +3 -1
  133. package/dist/pipeline/phases/phase-context.js.map +1 -1
  134. package/dist/pipeline/phases/production-gate.d.ts.map +1 -1
  135. package/dist/pipeline/phases/production-gate.js +28 -3
  136. package/dist/pipeline/phases/production-gate.js.map +1 -1
  137. package/dist/pipeline/phases/qa-validation.d.ts.map +1 -1
  138. package/dist/pipeline/phases/qa-validation.js +38 -5
  139. package/dist/pipeline/phases/qa-validation.js.map +1 -1
  140. package/dist/pipeline/phases/recovery-loop.d.ts +2 -0
  141. package/dist/pipeline/phases/recovery-loop.d.ts.map +1 -1
  142. package/dist/pipeline/phases/recovery-loop.js +200 -6
  143. package/dist/pipeline/phases/recovery-loop.js.map +1 -1
  144. package/dist/pipeline/phases/review.d.ts.map +1 -1
  145. package/dist/pipeline/phases/review.js +58 -28
  146. package/dist/pipeline/phases/review.js.map +1 -1
  147. package/dist/pipeline/phases/role-planning.d.ts.map +1 -1
  148. package/dist/pipeline/phases/role-planning.js +18 -2
  149. package/dist/pipeline/phases/role-planning.js.map +1 -1
  150. package/dist/pipeline/phases/stuck.d.ts.map +1 -1
  151. package/dist/pipeline/phases/stuck.js +10 -0
  152. package/dist/pipeline/phases/stuck.js.map +1 -1
  153. package/dist/pipeline/repo-snapshot.d.ts.map +1 -1
  154. package/dist/pipeline/repo-snapshot.js +3 -0
  155. package/dist/pipeline/repo-snapshot.js.map +1 -1
  156. package/dist/pipeline/role-execution-adapter.d.ts +2 -1
  157. package/dist/pipeline/role-execution-adapter.d.ts.map +1 -1
  158. package/dist/pipeline/role-execution-adapter.js +22 -7
  159. package/dist/pipeline/role-execution-adapter.js.map +1 -1
  160. package/dist/pipeline/skill-loader.d.ts +19 -0
  161. package/dist/pipeline/skill-loader.d.ts.map +1 -1
  162. package/dist/pipeline/skill-loader.js +22 -0
  163. package/dist/pipeline/skill-loader.js.map +1 -1
  164. package/dist/pipeline/skills/coverage-gate.d.ts +44 -0
  165. package/dist/pipeline/skills/coverage-gate.d.ts.map +1 -0
  166. package/dist/pipeline/skills/coverage-gate.js +143 -0
  167. package/dist/pipeline/skills/coverage-gate.js.map +1 -0
  168. package/dist/pipeline/skills/usage-registry.d.ts +48 -0
  169. package/dist/pipeline/skills/usage-registry.d.ts.map +1 -0
  170. package/dist/pipeline/skills/usage-registry.js +55 -0
  171. package/dist/pipeline/skills/usage-registry.js.map +1 -0
  172. package/dist/pipeline/strategy-context.d.ts +20 -0
  173. package/dist/pipeline/strategy-context.d.ts.map +1 -0
  174. package/dist/pipeline/strategy-context.js +55 -0
  175. package/dist/pipeline/strategy-context.js.map +1 -0
  176. package/dist/pipeline/type-defs/artifacts.d.ts +25 -5
  177. package/dist/pipeline/type-defs/artifacts.d.ts.map +1 -1
  178. package/dist/pipeline/type-defs/artifacts.js +4 -0
  179. package/dist/pipeline/type-defs/artifacts.js.map +1 -1
  180. package/dist/pipeline/type-defs/audit.d.ts +25 -13
  181. package/dist/pipeline/type-defs/audit.d.ts.map +1 -1
  182. package/dist/pipeline/type-defs/checks.d.ts +18 -8
  183. package/dist/pipeline/type-defs/checks.d.ts.map +1 -1
  184. package/dist/pipeline/type-defs/checks.js +4 -0
  185. package/dist/pipeline/type-defs/checks.js.map +1 -1
  186. package/dist/pipeline/type-defs/packets.d.ts +104 -18
  187. package/dist/pipeline/type-defs/packets.d.ts.map +1 -1
  188. package/dist/pipeline/type-defs/packets.js +17 -1
  189. package/dist/pipeline/type-defs/packets.js.map +1 -1
  190. package/dist/pipeline/type-defs/state.d.ts +160 -16
  191. package/dist/pipeline/type-defs/state.d.ts.map +1 -1
  192. package/dist/pipeline/type-defs/state.js +26 -1
  193. package/dist/pipeline/type-defs/state.js.map +1 -1
  194. package/dist/shared/text-utils.d.ts +23 -0
  195. package/dist/shared/text-utils.d.ts.map +1 -0
  196. package/dist/shared/text-utils.js +66 -0
  197. package/dist/shared/text-utils.js.map +1 -0
  198. package/dist/shared/website-strategy-format.d.ts +18 -0
  199. package/dist/shared/website-strategy-format.d.ts.map +1 -0
  200. package/dist/shared/website-strategy-format.js +47 -0
  201. package/dist/shared/website-strategy-format.js.map +1 -0
  202. package/dist/state/index.d.ts +2 -0
  203. package/dist/state/index.d.ts.map +1 -1
  204. package/dist/state/index.js +57 -8
  205. package/dist/state/index.js.map +1 -1
  206. package/dist/types/consensus.d.ts +1 -0
  207. package/dist/types/consensus.d.ts.map +1 -1
  208. package/dist/types/consensus.js.map +1 -1
  209. package/dist/types/website-strategy.d.ts +1 -1
  210. package/dist/types/workflow.d.ts +447 -0
  211. package/dist/types/workflow.d.ts.map +1 -1
  212. package/dist/types/workflow.js +3 -0
  213. package/dist/types/workflow.js.map +1 -1
  214. package/dist/upgrade/handlers.d.ts.map +1 -1
  215. package/dist/upgrade/handlers.js +6 -3
  216. package/dist/upgrade/handlers.js.map +1 -1
  217. package/dist/workflow/consensus.d.ts.map +1 -1
  218. package/dist/workflow/consensus.js +1 -0
  219. package/dist/workflow/consensus.js.map +1 -1
  220. package/dist/workflow/website-strategy.d.ts.map +1 -1
  221. package/dist/workflow/website-strategy.js +2 -29
  222. package/dist/workflow/website-strategy.js.map +1 -1
  223. package/dist/workflow/website-updater.d.ts.map +1 -1
  224. package/dist/workflow/website-updater.js +3 -2
  225. package/dist/workflow/website-updater.js.map +1 -1
  226. package/package.json +1 -1
  227. package/src/adapters/gemini.ts +51 -6
  228. package/src/adapters/grok.ts +51 -6
  229. package/src/adapters/openai.ts +53 -5
  230. package/src/cli/commands/create.ts +1 -1
  231. package/src/cli/interactive.ts +333 -19
  232. package/src/generators/all.ts +3 -2
  233. package/src/generators/doc-parser.ts +75 -15
  234. package/src/generators/templates/fullstack.ts +1 -1
  235. package/src/generators/templates/website-components.ts +1 -1
  236. package/src/generators/templates/website-config.ts +23 -11
  237. package/src/generators/templates/website-conversion.ts +1 -1
  238. package/src/generators/templates/website-landing.ts +1 -1
  239. package/src/generators/templates/website-layout.ts +491 -23
  240. package/src/generators/templates/website-pricing.ts +1 -1
  241. package/src/generators/templates/website-sections.ts +1 -1
  242. package/src/generators/templates/website-seo.ts +4 -1
  243. package/src/generators/templates/website.ts +3 -0
  244. package/src/generators/website-content-ai.ts +186 -0
  245. package/src/generators/website-content-scanner.ts +113 -1
  246. package/src/generators/website-context.ts +151 -12
  247. package/src/generators/website-debug.ts +26 -0
  248. package/src/generators/website.ts +28 -3
  249. package/src/pipeline/auto-recovery.ts +283 -0
  250. package/src/pipeline/change-request.ts +63 -1
  251. package/src/pipeline/check-runner.ts +141 -2
  252. package/src/pipeline/command-resolver.ts +34 -2
  253. package/src/pipeline/consensus/arbitrator-query.ts +101 -0
  254. package/src/pipeline/consensus/consensus-runner.ts +1099 -42
  255. package/src/pipeline/cr-lifecycle.ts +103 -0
  256. package/src/pipeline/gate-engine.ts +35 -7
  257. package/src/pipeline/orchestrator.ts +361 -16
  258. package/src/pipeline/packets/consensus-packet-builder.ts +44 -18
  259. package/src/pipeline/phases/architecture.ts +6 -3
  260. package/src/pipeline/phases/audit.ts +6 -3
  261. package/src/pipeline/phases/consensus-architecture.ts +10 -1
  262. package/src/pipeline/phases/consensus-master-plan.ts +10 -3
  263. package/src/pipeline/phases/consensus-role-plans.ts +10 -1
  264. package/src/pipeline/phases/done.ts +15 -4
  265. package/src/pipeline/phases/intake.ts +7 -3
  266. package/src/pipeline/phases/phase-context.ts +6 -1
  267. package/src/pipeline/phases/production-gate.ts +41 -3
  268. package/src/pipeline/phases/qa-validation.ts +51 -5
  269. package/src/pipeline/phases/recovery-loop.ts +229 -7
  270. package/src/pipeline/phases/review.ts +73 -30
  271. package/src/pipeline/phases/role-planning.ts +21 -2
  272. package/src/pipeline/phases/stuck.ts +10 -0
  273. package/src/pipeline/repo-snapshot.ts +3 -0
  274. package/src/pipeline/role-execution-adapter.ts +30 -4
  275. package/src/pipeline/skill-loader.ts +33 -0
  276. package/src/pipeline/skills/coverage-gate.ts +199 -0
  277. package/src/pipeline/skills/usage-registry.ts +87 -0
  278. package/src/pipeline/strategy-context.ts +60 -0
  279. package/src/pipeline/type-defs/artifacts.ts +4 -0
  280. package/src/pipeline/type-defs/checks.ts +4 -0
  281. package/src/pipeline/type-defs/packets.ts +18 -1
  282. package/src/pipeline/type-defs/state.ts +26 -1
  283. package/src/shared/text-utils.ts +70 -0
  284. package/src/shared/website-strategy-format.ts +56 -0
  285. package/src/state/index.ts +60 -8
  286. package/src/types/consensus.ts +1 -0
  287. package/src/types/workflow.ts +6 -0
  288. package/src/upgrade/handlers.ts +9 -3
  289. package/src/workflow/consensus.ts +1 -0
  290. package/src/workflow/website-strategy.ts +2 -36
  291. package/src/workflow/website-updater.ts +4 -2
  292. package/tests/adapters/gemini.test.ts +165 -0
  293. package/tests/adapters/grok.test.ts +137 -0
  294. package/tests/adapters/openai.test.ts +128 -0
  295. package/tests/generators/doc-parser.test.ts +88 -9
  296. package/tests/generators/quality-gate.test.ts +19 -3
  297. package/tests/generators/website-components.test.ts +34 -0
  298. package/tests/generators/website-content-ai.test.ts +308 -0
  299. package/tests/generators/website-content-scanner.test.ts +86 -0
  300. package/tests/generators/website-context.test.ts +3 -2
  301. package/tests/integration/smokestack-scaffold.test.ts +385 -0
  302. package/tests/pipeline/auto-recovery.test.ts +337 -0
  303. package/tests/pipeline/change-request.test.ts +70 -0
  304. package/tests/pipeline/command-resolver.test.ts +42 -0
  305. package/tests/pipeline/consensus/arbitrator-query.test.ts +107 -0
  306. package/tests/pipeline/consensus-runner.test.ts +1333 -10
  307. package/tests/pipeline/consensus-scoring.test.ts +602 -18
  308. package/tests/pipeline/gate-engine.test.ts +34 -0
  309. package/tests/pipeline/install-check.test.ts +261 -0
  310. package/tests/pipeline/orchestrator.test.ts +1506 -15
  311. package/tests/pipeline/packets/builders.test.ts +29 -6
  312. package/tests/pipeline/phases/role-planning.strategy.test.ts +204 -0
  313. package/tests/pipeline/pipeline-persistence.test.ts +230 -0
  314. package/tests/pipeline/recovery-loop-guidance.test.ts +280 -0
  315. package/tests/pipeline/role-execution-adapter.test.ts +88 -0
  316. package/tests/pipeline/skills/coverage-gate.test.ts +370 -0
  317. package/tests/pipeline/skills/usage-registry.test.ts +114 -0
  318. package/tests/pipeline/strategy-context.test.ts +148 -0
  319. package/tests/shared/text-utils.test.ts +155 -0
  320. package/tests/state/progress-analysis.test.ts +375 -0
  321. package/tests/upgrade/handlers.test.ts +33 -2
  322. package/tests/workflow/consensus.test.ts +6 -0
  323. package/tsconfig.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"website-seo.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/website-seo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAa/E;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAqBhD;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAaR;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,uBAAuB,GACjC,MAAM,CAuDR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBlE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA8BR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA8B5D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA2BR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,uBAAuB,GACjC,MAAM,CAoDR"}
1
+ {"version":3,"file":"website-seo.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/website-seo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAa/E;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAqBhD;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAaR;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,uBAAuB,GACjC,MAAM,CA0DR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBlE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA8BR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA8B5D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA2BR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,uBAAuB,GACjC,MAAM,CAoDR"}
@@ -11,7 +11,7 @@ function escapeJsx(str) {
11
11
  .replace(/\\/g, '\\\\')
12
12
  .replace(/'/g, "\\'")
13
13
  .replace(/`/g, '\\`')
14
- .replace(/\$/g, '\\$');
14
+ .replace(/\$(?=\{)/g, '\\$');
15
15
  }
16
16
  /**
17
17
  * Generate reusable JSON-LD component
@@ -92,6 +92,9 @@ export function generateEnhancedSitemap(projectName, strategy) {
92
92
  { path: '/pricing', pageType: 'pricing' },
93
93
  { path: '/docs', pageType: 'docs' },
94
94
  { path: '/blog', pageType: 'blog' },
95
+ { path: '/contact', pageType: 'contact' },
96
+ { path: '/privacy', pageType: 'legal' },
97
+ { path: '/terms', pageType: 'legal' },
95
98
  ];
96
99
  const priorityMap = {
97
100
  landing: 1.0,
@@ -1 +1 @@
1
- {"version":3,"file":"website-seo.js","sourceRoot":"","sources":["../../../src/generators/templates/website-seo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"website-seo.js","sourceRoot":"","sources":["../../../src/generators/templates/website-seo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG;SACP,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,WAAmB,EACnB,OAA+B;IAE/B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,WAAW,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,GAAG,WAAW,2BAA2B,CAAC;IAEtF,OAAO;;;aAGI,SAAS,CAAC,WAAW,CAAC;oBACf,SAAS,CAAC,WAAW,CAAC;wDACc,WAAW;EACjE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,OAA+B;IAE/B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,WAAW,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,GAAG,WAAW,2BAA2B,CAAC;IAEtF,OAAO;;;aAGI,SAAS,CAAC,WAAW,CAAC;oBACf,SAAS,CAAC,WAAW,CAAC;;;wDAGc,WAAW;EACjE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAmB,EACnB,QAAkC;IAElC,+CAA+C;IAC/C,MAAM,KAAK,GAAG,QAAQ,EAAE,gBAAgB,CAAC,KAAK,IAAI;QAChD,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;QACzC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;QACnC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;QACnC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;QACzC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;QACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;KACtC,CAAC;IAEF,MAAM,WAAW,GAA2B;QAC1C,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,GAAG;QAChB,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,GAAG;KACX,CAAC;IAEF,MAAM,YAAY,GAA2B;QAC3C,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,QAAQ;KAChB,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;QACnD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,OAAO;0BACe,OAAO;;0BAEP,SAAS;kBACjB,QAAQ;MACpB,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;;;iEAGwD,WAAW;;;EAG1E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;;CAGpB,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,OAAO;;;iEAGwD,WAAW;;;;;;;;;;;;;CAa3E,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,OAA+B;IAE/B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,WAAW;SACpD,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;;;;;;;;;;;;;;;;sBAgBa,SAAS,CAAC,WAAW,CAAC;;;;;;;CAO3C,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BR,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,OAA+B;IAE/B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,WAAW;SACpD,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,YAAY,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,IAAI,SAAS,CAAC;IAC/D,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,GAAG,WAAW,2BAA2B,CAAC;IAEtF,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,WAAW;QACvB,WAAW;QACX,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,YAAY;QACrB,gBAAgB,EAAE,SAAS;QAC3B,WAAW,EAAE,YAAY;QACzB,KAAK,EAAE;YACL,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE;YAC7D,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;YAC7D,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;SAC9D;KACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,QAAkC;IAElC,MAAM,eAAe,GAAG,QAAQ,EAAE,WAAW,CAAC,eAAe,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7E,OAAO;;gEAEuD,WAAW;;;;;;;;;;;;;;;;;;;;;;;qCAuBtC,WAAW;;;;;;;;;;;;;;;;;;;;;;CAsB/C,CAAC;AACF,CAAC"}
@@ -6,7 +6,7 @@
6
6
  export { generateWebsiteLandingPage, generateWebsiteLandingPageWithInfo } from './website-landing.js';
7
7
  export type { LandingPageResult } from './website-landing.js';
8
8
  export { generateWebsitePricingPage } from './website-pricing.js';
9
- export { generateWebsiteLayout, generateWebsiteGlobalsCss, generateWebsiteSitemap, generateWebsiteRobots, generateWebsiteReadme, generateWebsiteSpec, generateWebsiteTest, generateWebsiteDocsPage, generateWebsiteBlogPage, } from './website-layout.js';
9
+ export { generateWebsiteLayout, generateWebsiteGlobalsCss, generateWebsiteSitemap, generateWebsiteRobots, generateWebsiteReadme, generateWebsiteSpec, generateWebsiteTest, generateWebsiteDocsPage, generateWebsiteBlogPage, generateWebsiteContactPage, generateWebsitePrivacyPage, generateWebsiteTermsPage, } from './website-layout.js';
10
10
  export { mapFeatureIcon, isNumericMetric, generatePainPointsSection, generateDifferentiatorsSection, generateHowItWorksSection, generateStatsSection, generateSocialProofSection, generatePricingTeaserSection, generateFaqSection, generateFaqSectionComponent, } from './website-sections.js';
11
11
  export type { SectionRenderInfo } from './website-sections.js';
12
12
  //# sourceMappingURL=website.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"website.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/website.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AACtG,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"website.d.ts","sourceRoot":"","sources":["../../../src/generators/templates/website.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AACtG,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -8,7 +8,7 @@ export { generateWebsiteLandingPage, generateWebsiteLandingPageWithInfo } from '
8
8
  // Pricing page (with toggle + comparison)
9
9
  export { generateWebsitePricingPage } from './website-pricing.js';
10
10
  // Layout, CSS, utility pages
11
- export { generateWebsiteLayout, generateWebsiteGlobalsCss, generateWebsiteSitemap, generateWebsiteRobots, generateWebsiteReadme, generateWebsiteSpec, generateWebsiteTest, generateWebsiteDocsPage, generateWebsiteBlogPage, } from './website-layout.js';
11
+ export { generateWebsiteLayout, generateWebsiteGlobalsCss, generateWebsiteSitemap, generateWebsiteRobots, generateWebsiteReadme, generateWebsiteSpec, generateWebsiteTest, generateWebsiteDocsPage, generateWebsiteBlogPage, generateWebsiteContactPage, generateWebsitePrivacyPage, generateWebsiteTermsPage, } from './website-layout.js';
12
12
  // Reusable section generators
13
13
  export { mapFeatureIcon, isNumericMetric, generatePainPointsSection, generateDifferentiatorsSection, generateHowItWorksSection, generateStatsSection, generateSocialProofSection, generatePricingTeaserSection, generateFaqSection, generateFaqSectionComponent, } from './website-sections.js';
14
14
  //# sourceMappingURL=website.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"website.js","sourceRoot":"","sources":["../../../src/generators/templates/website.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AAGtG,0CAA0C;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,6BAA6B;AAC7B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,8BAA8B;AAC9B,OAAO,EACL,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"website.js","sourceRoot":"","sources":["../../../src/generators/templates/website.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AAGtG,0CAA0C;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE,6BAA6B;AAC7B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,8BAA8B;AAC9B,OAAO,EACL,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * AI Website Content Generator — fills missing website content
3
+ * when doc parser fails to extract tagline/description/features/pricing.
4
+ *
5
+ * Uses OpenAI gpt-4.1 with Zod-validated JSON response.
6
+ * Includes pricing hallucination guard to prevent inventing prices
7
+ * without evidence in source docs.
8
+ */
9
+ export interface AIContentResult {
10
+ tagline?: string;
11
+ description?: string;
12
+ features?: Array<{
13
+ title: string;
14
+ description: string;
15
+ icon?: string;
16
+ }>;
17
+ pricing?: Array<{
18
+ name: string;
19
+ price: string;
20
+ period?: string;
21
+ description: string;
22
+ features: string[];
23
+ cta: string;
24
+ featured?: boolean;
25
+ }>;
26
+ }
27
+ /**
28
+ * Check if source docs contain evidence of pricing information.
29
+ *
30
+ * Args:
31
+ * rawDocs: Combined documentation content.
32
+ * specification: Expanded specification text.
33
+ *
34
+ * Returns:
35
+ * true if pricing evidence is found in either source.
36
+ */
37
+ export declare function hasPricingEvidence(rawDocs: string, specification: string): boolean;
38
+ /**
39
+ * Generate missing website content using AI.
40
+ * Single OpenAI gpt-4.1 call with Zod-validated JSON response.
41
+ * Non-blocking: returns empty {} on any failure.
42
+ *
43
+ * Args:
44
+ * productName: The product name.
45
+ * specification: Expanded specification text.
46
+ * rawDocs: Combined documentation content.
47
+ *
48
+ * Returns:
49
+ * AIContentResult with any fields the AI could generate.
50
+ */
51
+ export declare function generateMissingWebsiteContent(productName: string, specification: string, rawDocs: string): Promise<AIContentResult>;
52
+ //# sourceMappingURL=website-content-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"website-content-ai.d.ts","sourceRoot":"","sources":["../../src/generators/website-content-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ;AA+BD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAElF;AAoCD;;;;;;;;;;;;GAYG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CA+D1B"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * AI Website Content Generator — fills missing website content
3
+ * when doc parser fails to extract tagline/description/features/pricing.
4
+ *
5
+ * Uses OpenAI gpt-4.1 with Zod-validated JSON response.
6
+ * Includes pricing hallucination guard to prevent inventing prices
7
+ * without evidence in source docs.
8
+ */
9
+ import { z } from 'zod';
10
+ // ─── Response Schema ─────────────────────────────────────
11
+ const AIContentResponseSchema = z.object({
12
+ tagline: z.string().optional(),
13
+ description: z.string().optional(),
14
+ features: z.array(z.object({
15
+ title: z.string(),
16
+ description: z.string(),
17
+ icon: z.string().optional(),
18
+ })).optional(),
19
+ pricing: z.array(z.object({
20
+ name: z.string(),
21
+ price: z.string(),
22
+ period: z.string().optional(),
23
+ description: z.string(),
24
+ features: z.array(z.string()),
25
+ cta: z.string().default('Get Started'),
26
+ featured: z.boolean().optional(),
27
+ })).optional(),
28
+ });
29
+ // ─── Pricing Hallucination Guard ─────────────────────────
30
+ /** Broad pricing evidence detection */
31
+ const PRICING_EVIDENCE = /\$\d|€\d|£\d|USD\s*\d|\d+\s*\/\s*mo|per\s*month|monthly|yearly|\/yr|per\s*year|pricing\s*(?:plan|tier|model)|subscription|free\s*(?:plan|tier)/i;
32
+ /** Pattern that detects numeric pricing in AI output */
33
+ const NUMERIC_PRICING_PATTERN = /[\$€£]\d|USD\s*\d|\d+\s*\/\s*mo/;
34
+ /**
35
+ * Check if source docs contain evidence of pricing information.
36
+ *
37
+ * Args:
38
+ * rawDocs: Combined documentation content.
39
+ * specification: Expanded specification text.
40
+ *
41
+ * Returns:
42
+ * true if pricing evidence is found in either source.
43
+ */
44
+ export function hasPricingEvidence(rawDocs, specification) {
45
+ return PRICING_EVIDENCE.test(rawDocs) || PRICING_EVIDENCE.test(specification);
46
+ }
47
+ /**
48
+ * Post-validate AI-generated pricing to prevent hallucinated prices.
49
+ * If no pricing evidence exists in source docs, reject any numeric prices.
50
+ * "Free" is always allowed (low risk).
51
+ *
52
+ * Args:
53
+ * pricing: AI-generated pricing array.
54
+ * hasEvidence: Whether pricing evidence was found in source docs.
55
+ *
56
+ * Returns:
57
+ * Sanitized pricing array (empty if hallucinated prices detected).
58
+ */
59
+ function sanitizePricing(pricing, hasEvidence) {
60
+ if (hasEvidence)
61
+ return pricing;
62
+ // No evidence — check if AI invented numeric prices
63
+ const hasNumericPrices = pricing.some((tier) => NUMERIC_PRICING_PATTERN.test(tier.price));
64
+ if (hasNumericPrices) {
65
+ // Reject entire pricing array — AI hallucinated prices
66
+ return undefined;
67
+ }
68
+ // Allow "Free", "TBD", "Contact us" etc.
69
+ return pricing;
70
+ }
71
+ // ─── AI Content Generation ──────────────────────────────
72
+ /**
73
+ * Generate missing website content using AI.
74
+ * Single OpenAI gpt-4.1 call with Zod-validated JSON response.
75
+ * Non-blocking: returns empty {} on any failure.
76
+ *
77
+ * Args:
78
+ * productName: The product name.
79
+ * specification: Expanded specification text.
80
+ * rawDocs: Combined documentation content.
81
+ *
82
+ * Returns:
83
+ * AIContentResult with any fields the AI could generate.
84
+ */
85
+ export async function generateMissingWebsiteContent(productName, specification, rawDocs) {
86
+ try {
87
+ const hasEvidence = hasPricingEvidence(rawDocs, specification);
88
+ const pricingInstruction = hasEvidence
89
+ ? 'Infer pricing tiers from the documentation. Use exact prices if mentioned.'
90
+ : 'Set all prices to "Contact us" or "TBD". Do not invent numeric pricing.';
91
+ const systemPrompt = [
92
+ 'You are a marketing content expert. Generate website content for a software product.',
93
+ 'Return a JSON object with these fields (all optional):',
94
+ '- tagline: short marketing tagline (max 80 chars)',
95
+ '- description: product description (max 200 chars)',
96
+ '- features: array of {title, description, icon?} (3-6 features, icon is a lucide icon name)',
97
+ '- pricing: array of {name, price, period?, description, features[], cta, featured?} (2-4 tiers, cta is the button text like "Get Started")',
98
+ '',
99
+ `PRICING RULES: ${pricingInstruction}`,
100
+ '',
101
+ 'Base all content on the product documentation provided. Do not invent facts.',
102
+ 'Return ONLY valid JSON, no markdown or explanation.',
103
+ ].join('\n');
104
+ const userPrompt = [
105
+ `Product: ${productName}`,
106
+ '',
107
+ specification ? `Specification:\n${specification.slice(0, 3000)}` : '',
108
+ '',
109
+ rawDocs ? `Documentation:\n${rawDocs.slice(0, 5000)}` : '',
110
+ ].filter(Boolean).join('\n');
111
+ const { createClient } = await import('../adapters/openai.js');
112
+ const client = await createClient();
113
+ const completion = await client.chat.completions.create({
114
+ model: 'gpt-4.1',
115
+ messages: [
116
+ { role: 'system', content: systemPrompt },
117
+ { role: 'user', content: userPrompt },
118
+ ],
119
+ temperature: 0.3,
120
+ response_format: { type: 'json_object' },
121
+ });
122
+ const response = completion.choices[0]?.message?.content ?? '{}';
123
+ // Parse and validate response
124
+ const parsed = JSON.parse(response);
125
+ const validated = AIContentResponseSchema.safeParse(parsed);
126
+ if (!validated.success) {
127
+ return {};
128
+ }
129
+ const result = { ...validated.data };
130
+ // Apply pricing hallucination guard
131
+ if (result.pricing && result.pricing.length > 0) {
132
+ result.pricing = sanitizePricing(result.pricing, hasEvidence);
133
+ }
134
+ return result;
135
+ }
136
+ catch {
137
+ // Non-blocking: return empty on any failure
138
+ return {};
139
+ }
140
+ }
141
+ //# sourceMappingURL=website-content-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"website-content-ai.js","sourceRoot":"","sources":["../../src/generators/website-content-ai.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ export interface ScanResult {
28
28
  score: number;
29
29
  }
30
30
  /**
31
- * Scan generated website files for placeholder fingerprints
31
+ * Scan generated website files for placeholder fingerprints and broken internal links
32
32
  *
33
33
  * @param websiteDir - The website project directory to scan
34
34
  * @returns Scan result with issues and quality score
@@ -1 +1 @@
1
- {"version":3,"file":"website-content-scanner.d.ts","sourceRoot":"","sources":["../../src/generators/website-content-scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;CACf;AA4HD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA4ClF"}
1
+ {"version":3,"file":"website-content-scanner.d.ts","sourceRoot":"","sources":["../../src/generators/website-content-scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;CACf;AAmOD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDlF"}
@@ -44,6 +44,16 @@ const PLACEHOLDER_PATTERNS = [
44
44
  message: 'Default pricing amount ($29/mo)',
45
45
  severity: 'warning',
46
46
  },
47
+ {
48
+ pattern: /coming soon/i,
49
+ message: 'Contains "coming soon" placeholder text',
50
+ severity: 'error',
51
+ },
52
+ {
53
+ pattern: /placeholder/i,
54
+ message: 'Contains "placeholder" text',
55
+ severity: 'error',
56
+ },
47
57
  ];
48
58
  /**
49
59
  * Multi-line patterns checked against the full file content
@@ -115,7 +125,85 @@ function findLineNumber(content, pattern) {
115
125
  return beforeMatch.split('\n').length;
116
126
  }
117
127
  /**
118
- * Scan generated website files for placeholder fingerprints
128
+ * Collect all page routes from the src/app directory structure.
129
+ * A route exists if there is a page.tsx (or page.jsx/page.ts/page.js) in a directory.
130
+ *
131
+ * @param appDir - The src/app directory path
132
+ * @returns Set of route paths (e.g., '/', '/pricing', '/blog')
133
+ */
134
+ async function collectPageRoutes(appDir) {
135
+ const routes = new Set();
136
+ async function walk(dir, routePrefix) {
137
+ try {
138
+ const entries = await fs.readdir(dir, { withFileTypes: true });
139
+ // Check if this directory has a page file
140
+ const hasPage = entries.some((e) => e.isFile() && /^page\.(tsx|jsx|ts|js)$/.test(e.name));
141
+ if (hasPage) {
142
+ routes.add(routePrefix || '/');
143
+ }
144
+ // Recurse into subdirectories (skip special dirs)
145
+ for (const entry of entries) {
146
+ if (!entry.isDirectory())
147
+ continue;
148
+ if (entry.name.startsWith('_') || entry.name === 'api' || SKIP_DIRS.has(entry.name))
149
+ continue;
150
+ await walk(path.join(dir, entry.name), `${routePrefix}/${entry.name}`);
151
+ }
152
+ }
153
+ catch {
154
+ // Directory not accessible
155
+ }
156
+ }
157
+ await walk(appDir, '');
158
+ return routes;
159
+ }
160
+ /**
161
+ * Scan for internal links that point to pages that do not exist.
162
+ *
163
+ * @param websiteDir - The website project directory
164
+ * @param files - Already-collected source file paths
165
+ * @returns Array of scan issues for broken internal links
166
+ */
167
+ async function scanInternalLinks(websiteDir, files) {
168
+ const issues = [];
169
+ const appDir = path.join(websiteDir, 'src', 'app');
170
+ // Collect existing page routes
171
+ const routes = await collectPageRoutes(appDir);
172
+ // Regex to find href="/..." values in source files
173
+ const hrefPattern = /href=["'](\/([\w-/]*)?)["']/g;
174
+ for (const filePath of files) {
175
+ try {
176
+ const content = await fs.readFile(filePath, 'utf-8');
177
+ const relativePath = path.relative(websiteDir, filePath);
178
+ let match;
179
+ while ((match = hrefPattern.exec(content)) !== null) {
180
+ const href = match[1];
181
+ // Skip anchor links (/#section), API routes, and external/protocol links
182
+ if (href.startsWith('/#') || href.startsWith('/api/') || href.startsWith('/api'))
183
+ continue;
184
+ // Normalize: strip trailing slash for comparison
185
+ const normalizedHref = href === '/' ? '/' : href.replace(/\/$/, '');
186
+ if (!routes.has(normalizedHref)) {
187
+ const lineNum = content.slice(0, match.index).split('\n').length;
188
+ issues.push({
189
+ file: relativePath,
190
+ message: `Internal link "${href}" points to a page that does not exist`,
191
+ severity: 'error',
192
+ line: lineNum,
193
+ });
194
+ }
195
+ }
196
+ // Reset regex lastIndex for next file
197
+ hrefPattern.lastIndex = 0;
198
+ }
199
+ catch {
200
+ // Skip unreadable files
201
+ }
202
+ }
203
+ return issues;
204
+ }
205
+ /**
206
+ * Scan generated website files for placeholder fingerprints and broken internal links
119
207
  *
120
208
  * @param websiteDir - The website project directory to scan
121
209
  * @returns Scan result with issues and quality score
@@ -156,6 +244,15 @@ export async function scanGeneratedContent(websiteDir) {
156
244
  // Skip unreadable files
157
245
  }
158
246
  }
247
+ // Scan for broken internal links
248
+ try {
249
+ const linkIssues = await scanInternalLinks(websiteDir, files);
250
+ issues.push(...linkIssues);
251
+ score -= linkIssues.length * 15;
252
+ }
253
+ catch {
254
+ // Non-blocking: link scan failures should not stop the overall scan
255
+ }
159
256
  return {
160
257
  issues,
161
258
  filesScanned: files.length,
@@ -1 +1 @@
1
- {"version":3,"file":"website-content-scanner.js","sourceRoot":"","sources":["../../src/generators/website-content-scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"website-content-scanner.js","sourceRoot":"","sources":["../../src/generators/website-content-scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AA4B7B;;GAEG;AACH,MAAM,oBAAoB,GAIrB;IACH;QACE,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,2BAA2B;QACpC,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,OAAO,EAAE,yBAAyB;QAClC,OAAO,EAAE,2CAA2C;QACpD,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE,mDAAmD;QAC5D,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,uCAAuC;QAChD,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,iCAAiC;QAC1C,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,yCAAyC;QAClD,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,6BAA6B;QACtC,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,kBAAkB,GAInB;IACH;QACE,OAAO,EAAE,gGAAgG;QACzG,OAAO,EAAE,gDAAgD;QACzD,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,OAAO,EAAE,qGAAqG;QAC9G,OAAO,EAAE,yDAAyD;QAClE,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7E;;GAEG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,OAAe;IACtD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACxC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,OAAe,EAAE,OAAe;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,WAAmB;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/D,0CAA0C;YAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5D,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;YACjC,CAAC;YAED,kDAAkD;YAClD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAAE,SAAS;gBACnC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC9F,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAC9B,UAAkB,EAClB,KAAe;IAEf,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEnD,+BAA+B;IAC/B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE/C,mDAAmD;IACnD,MAAM,WAAW,GAAG,8BAA8B,CAAC;IAEnD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEzD,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEtB,yEAAyE;gBACzE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAE3F,iDAAiD;gBACjD,MAAM,cAAc,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;oBACjE,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,kBAAkB,IAAI,wCAAwC;wBACvE,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,OAAO;qBACd,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,sCAAsC;YACtC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAkB;IAC3D,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3E,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEzD,0BAA0B;YAC1B,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,oBAAoB,EAAE,CAAC;gBAClE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,YAAY;wBAClB,OAAO;wBACP,QAAQ;wBACR,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;qBACvC,CAAC,CAAC;oBACH,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,wCAAwC;YACxC,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,kBAAkB,EAAE,CAAC;gBAChE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,YAAY;wBAClB,OAAO;wBACP,QAAQ;qBACT,CAAC,CAAC;oBACH,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC3B,KAAK,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;IAED,OAAO;QACL,MAAM;QACN,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACzC,CAAC;AACJ,CAAC"}
@@ -34,6 +34,18 @@ export interface WebsiteContentContext {
34
34
  strategy?: WebsiteStrategyDocument;
35
35
  /** Resolved brand assets contract for deterministic logo/favicon placement */
36
36
  brandAssets?: BrandAssetsContract;
37
+ /** Diagnostics for pricing extraction pipeline */
38
+ pricingDiagnostics?: {
39
+ charsScanned: number;
40
+ foundPricingHeader: boolean;
41
+ extractionMethod: 'known_plan_names' | 'table_fallback' | 'ai' | 'none';
42
+ extractedTiers?: Array<{
43
+ name: string;
44
+ price: string;
45
+ }>;
46
+ reasonIfEmpty?: string;
47
+ source: 'docs' | 'ai' | 'default' | 'none';
48
+ };
37
49
  }
38
50
  /**
39
51
  * Resolve brand assets into a deterministic contract
@@ -73,15 +85,36 @@ export declare function findBrandAssets(cwd: string): Promise<{
73
85
  * @returns Combined documentation content with file headers
74
86
  */
75
87
  export declare function readProjectDocs(docPaths: string[], maxLength?: number): Promise<string>;
88
+ /**
89
+ * Extract absolute file paths from user-provided text (idea/specification).
90
+ * Supports:
91
+ * - Unix paths: '/path/to/file.md'
92
+ * - Windows paths: "C:\Users\me\file.md"
93
+ * - Paths with spaces: '/Users/me/My Docs/pricing.md'
94
+ * - Extensions: .md, .mdx, .txt
95
+ *
96
+ * @param text - User-provided idea or specification text
97
+ * @returns Array of absolute file paths found in the text
98
+ */
99
+ export declare function extractDocPathsFromText(text: string): string[];
100
+ /**
101
+ * Validate and filter doc paths for safe ingestion.
102
+ * Checks: isAbsolute, file exists, size < 2MB, extension allowed.
103
+ *
104
+ * @param paths - Array of absolute paths to validate
105
+ * @returns Array of valid, readable paths
106
+ */
107
+ export declare function validateAndFilterDocPaths(paths: string[]): Promise<string[]>;
76
108
  /**
77
109
  * Build a structured website content context from discovered docs
78
110
  *
79
111
  * @param cwd - Working directory to scan for docs
80
112
  * @param projectName - The project name (folder name fallback)
81
113
  * @param specification - Optional expanded specification text
114
+ * @param extraDocPaths - Optional extra doc paths extracted from user idea text
82
115
  * @returns Structured content context for website templates
83
116
  */
84
- export declare function buildWebsiteContext(cwd: string, projectName: string, specification?: string): Promise<WebsiteContentContext>;
117
+ export declare function buildWebsiteContext(cwd: string, projectName: string, specification?: string, extraDocPaths?: string[]): Promise<WebsiteContentContext>;
85
118
  /**
86
119
  * Result of soft (non-throwing) website context validation
87
120
  */
@@ -1 +1 @@
1
- {"version":3,"file":"website-context.d.ts","sourceRoot":"","sources":["../../src/generators/website-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAKjG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAAC,mBAAmB,CAAC,CAU9B;AA6BD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BxE;AAyDD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAShC;AA6BD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,qBAAqB,CAAC,CA6BhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;CACtB;AAQD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,qBAAqB,EAC9B,YAAY,EAAE,MAAM,GACnB,gBAAgB,CAgHlB;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,qBAAqB,EAC9B,WAAW,EAAE,MAAM,GAClB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAYvC"}
1
+ {"version":3,"file":"website-context.d.ts","sourceRoot":"","sources":["../../src/generators/website-context.ts"],"names":[],"mappings":"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"}