@tomako/tools-runtime 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/README.md +12 -0
  2. package/package.json +629 -0
  3. package/src/assets/icons/brands/social/bluesky-icon.tsx +9 -0
  4. package/src/assets/icons/brands/social/facebook-icon.tsx +9 -0
  5. package/src/assets/icons/brands/social/index.ts +8 -0
  6. package/src/assets/icons/brands/social/instagram-icon.tsx +9 -0
  7. package/src/assets/icons/brands/social/linkedin-icon.tsx +9 -0
  8. package/src/assets/icons/brands/social/threads-icon.tsx +9 -0
  9. package/src/assets/icons/brands/social/tiktok-icon.tsx +10 -0
  10. package/src/assets/icons/brands/social/x-icon.tsx +9 -0
  11. package/src/assets/icons/brands/social/youtube-icon.tsx +9 -0
  12. package/src/assets/icons/social-profile/facebook-icon.tsx +12 -0
  13. package/src/assets/icons/social-profile/index.ts +29 -0
  14. package/src/assets/icons/social-profile/instagram-icon.tsx +18 -0
  15. package/src/assets/icons/social-profile/linkedin-icon.tsx +12 -0
  16. package/src/assets/icons/social-profile/tiktok-icon.tsx +12 -0
  17. package/src/assets/icons/social-profile/x-icon.tsx +13 -0
  18. package/src/assets/icons/social-profile/youtube-icon.tsx +12 -0
  19. package/src/components/tools/engine/form-builder.tsx +219 -0
  20. package/src/components/tools/engine/package-widget-loader.tsx +38 -0
  21. package/src/components/tools/engine/package-widget-runtime.tsx +409 -0
  22. package/src/components/tools/engine/package-widget.tsx +77 -0
  23. package/src/components/tools/engine/result-view.tsx +596 -0
  24. package/src/components/tools/engine/use-legacy-llm-task.ts +64 -0
  25. package/src/components/tools/engine/use-tool-task.ts +195 -0
  26. package/src/components/tools/market-forecast-report.tsx +1150 -0
  27. package/src/components/tools/registry.ts +13 -0
  28. package/src/components/tools/workspace/index.ts +39 -0
  29. package/src/components/tools/workspace/tool-action-bar.tsx +99 -0
  30. package/src/components/tools/workspace/tool-empty-panel.tsx +32 -0
  31. package/src/components/tools/workspace/tool-error-panel.tsx +40 -0
  32. package/src/components/tools/workspace/tool-field.tsx +124 -0
  33. package/src/components/tools/workspace/tool-file-upload.tsx +112 -0
  34. package/src/components/tools/workspace/tool-form-section.tsx +21 -0
  35. package/src/components/tools/workspace/tool-form-shell.tsx +36 -0
  36. package/src/components/tools/workspace/tool-loading-panel.tsx +269 -0
  37. package/src/components/tools/workspace/tool-option-row.tsx +97 -0
  38. package/src/components/tools/workspace/tool-preview-panel.tsx +31 -0
  39. package/src/components/tools/workspace/tool-result-actions.tsx +67 -0
  40. package/src/components/tools/workspace/tool-result-file-actions.ts +31 -0
  41. package/src/components/tools/workspace/tool-result-header.tsx +39 -0
  42. package/src/components/tools/workspace/tool-status.tsx +13 -0
  43. package/src/components/tools/workspace/tool-workspace-layout.tsx +226 -0
  44. package/src/constants/LKS.ts +29 -0
  45. package/src/constants/related-tools.ts +18 -0
  46. package/src/constants/social-profile-kit.ts +284 -0
  47. package/src/constants/tool-assets.ts +7 -0
  48. package/src/env.d.ts +3 -0
  49. package/src/features/tools/_templates/standard-tool.container.tsx +90 -0
  50. package/src/features/tools/app-icon-resizer/app-icon-resizer.container.tsx +11 -0
  51. package/src/features/tools/app-icon-resizer/app-icon-resizer.spec.ts +15 -0
  52. package/src/features/tools/app-icon-resizer/widget/app-icon-resizer.tsx +444 -0
  53. package/src/features/tools/app-icon-resizer/widget/constants.ts +19 -0
  54. package/src/features/tools/app-icon-resizer/widget/helpers.ts +314 -0
  55. package/src/features/tools/app-icon-resizer/widget/index.ts +7 -0
  56. package/src/features/tools/app-icon-resizer/widget/platform-icons.tsx +59 -0
  57. package/src/features/tools/app-icon-resizer/widget/preview-dialogs.tsx +139 -0
  58. package/src/features/tools/app-icon-resizer/widget/result-shell.tsx +165 -0
  59. package/src/features/tools/app-icon-resizer/widget/types.ts +36 -0
  60. package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.container.tsx +108 -0
  61. package/src/features/tools/app-store-screenshot-generator/app-store-screenshot-generator.spec.ts +14 -0
  62. package/src/features/tools/app-store-screenshot-generator/config.ts +3 -0
  63. package/src/features/tools/app-store-screenshot-generator/widget/app-store-screenshot-generator.tsx +1250 -0
  64. package/src/features/tools/app-store-screenshot-generator/widget/asset-slots.ts +76 -0
  65. package/src/features/tools/app-store-screenshot-generator/widget/constants.ts +43 -0
  66. package/src/features/tools/app-store-screenshot-generator/widget/form-controls.tsx +214 -0
  67. package/src/features/tools/app-store-screenshot-generator/widget/generation.ts +528 -0
  68. package/src/features/tools/app-store-screenshot-generator/widget/index.ts +7 -0
  69. package/src/features/tools/app-store-screenshot-generator/widget/input-media.ts +175 -0
  70. package/src/features/tools/app-store-screenshot-generator/widget/types.ts +60 -0
  71. package/src/features/tools/app-store-screenshot-generator/widget/zip.ts +119 -0
  72. package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.container.tsx +135 -0
  73. package/src/features/tools/build-in-public-story-generator/build-in-public-story-generator.spec.ts +15 -0
  74. package/src/features/tools/build-in-public-story-generator/widget/build-in-public-story-generator.tsx +314 -0
  75. package/src/features/tools/build-in-public-story-generator/widget/constants.ts +3 -0
  76. package/src/features/tools/build-in-public-story-generator/widget/helpers.ts +25 -0
  77. package/src/features/tools/build-in-public-story-generator/widget/index.ts +7 -0
  78. package/src/features/tools/build-in-public-story-generator/widget/preview-panels.tsx +58 -0
  79. package/src/features/tools/build-in-public-story-generator/widget/result-shell.tsx +164 -0
  80. package/src/features/tools/build-in-public-story-generator/widget/types.ts +6 -0
  81. package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.container.tsx +30 -0
  82. package/src/features/tools/cold-start-channel-selector/cold-start-channel-selector.spec.ts +15 -0
  83. package/src/features/tools/cold-start-channel-selector/widget/cold-start-channel-selector.tsx +417 -0
  84. package/src/features/tools/cold-start-channel-selector/widget/constants.ts +46 -0
  85. package/src/features/tools/cold-start-channel-selector/widget/form-controls.tsx +41 -0
  86. package/src/features/tools/cold-start-channel-selector/widget/helpers.ts +75 -0
  87. package/src/features/tools/cold-start-channel-selector/widget/index.ts +7 -0
  88. package/src/features/tools/cold-start-channel-selector/widget/preview-panels.tsx +250 -0
  89. package/src/features/tools/cold-start-channel-selector/widget/result-shell.tsx +199 -0
  90. package/src/features/tools/cold-start-channel-selector/widget/types.ts +21 -0
  91. package/src/features/tools/commercial-bp-generator/commercial-bp-generator.container.tsx +102 -0
  92. package/src/features/tools/commercial-bp-generator/commercial-bp-generator.spec.ts +14 -0
  93. package/src/features/tools/commercial-bp-generator/widget/commercial-bp-generator.tsx +676 -0
  94. package/src/features/tools/commercial-bp-generator/widget/constants.ts +32 -0
  95. package/src/features/tools/commercial-bp-generator/widget/helpers.ts +147 -0
  96. package/src/features/tools/commercial-bp-generator/widget/index.ts +7 -0
  97. package/src/features/tools/commercial-bp-generator/widget/result-shell.tsx +271 -0
  98. package/src/features/tools/commercial-bp-generator/widget/style-option.tsx +54 -0
  99. package/src/features/tools/commercial-bp-generator/widget/types.ts +33 -0
  100. package/src/features/tools/community-feedback-inbox/community-feedback-inbox.container.tsx +126 -0
  101. package/src/features/tools/community-feedback-inbox/community-feedback-inbox.spec.ts +15 -0
  102. package/src/features/tools/community-feedback-inbox/widget/community-feedback-inbox.tsx +271 -0
  103. package/src/features/tools/community-feedback-inbox/widget/constants.ts +3 -0
  104. package/src/features/tools/community-feedback-inbox/widget/helpers.ts +28 -0
  105. package/src/features/tools/community-feedback-inbox/widget/index.ts +7 -0
  106. package/src/features/tools/community-feedback-inbox/widget/preview-panels.tsx +92 -0
  107. package/src/features/tools/community-feedback-inbox/widget/result-shell.tsx +266 -0
  108. package/src/features/tools/community-feedback-inbox/widget/types.ts +6 -0
  109. package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.container.tsx +124 -0
  110. package/src/features/tools/community-pain-point-extractor/community-pain-point-extractor.spec.ts +15 -0
  111. package/src/features/tools/community-pain-point-extractor/widget/community-pain-point-extractor.tsx +404 -0
  112. package/src/features/tools/community-pain-point-extractor/widget/constants.ts +41 -0
  113. package/src/features/tools/community-pain-point-extractor/widget/helpers.ts +76 -0
  114. package/src/features/tools/community-pain-point-extractor/widget/index.ts +8 -0
  115. package/src/features/tools/community-pain-point-extractor/widget/progress-panels.tsx +251 -0
  116. package/src/features/tools/community-pain-point-extractor/widget/result-shell.tsx +478 -0
  117. package/src/features/tools/community-pain-point-extractor/widget/types.ts +33 -0
  118. package/src/features/tools/community-post-risk-checker/community-post-risk-checker.package.ts +792 -0
  119. package/src/features/tools/competitor-analysis/competitor-analysis.container.tsx +136 -0
  120. package/src/features/tools/competitor-analysis/competitor-analysis.spec.ts +15 -0
  121. package/src/features/tools/competitor-analysis/widget/competitor-analysis.tsx +241 -0
  122. package/src/features/tools/competitor-analysis/widget/constants.ts +9 -0
  123. package/src/features/tools/competitor-analysis/widget/index.ts +7 -0
  124. package/src/features/tools/competitor-analysis/widget/preview-panels.tsx +60 -0
  125. package/src/features/tools/competitor-analysis/widget/result-shell.tsx +418 -0
  126. package/src/features/tools/competitor-analysis/widget/types.ts +13 -0
  127. package/src/features/tools/disclaimer-generator/disclaimer-generator.package.ts +339 -0
  128. package/src/features/tools/email-template-generator/email-template-generator.container.tsx +224 -0
  129. package/src/features/tools/email-template-generator/email-template-generator.spec.ts +14 -0
  130. package/src/features/tools/email-template-generator/widget/email-template-generator.tsx +358 -0
  131. package/src/features/tools/email-template-generator/widget/helpers.ts +39 -0
  132. package/src/features/tools/email-template-generator/widget/index.ts +7 -0
  133. package/src/features/tools/email-template-generator/widget/preview-panel.tsx +311 -0
  134. package/src/features/tools/email-template-generator/widget/result-text-block.tsx +7 -0
  135. package/src/features/tools/email-template-generator/widget/types.ts +24 -0
  136. package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.container.tsx +75 -0
  137. package/src/features/tools/gtm-readiness-checklist/gtm-readiness-checklist.spec.ts +15 -0
  138. package/src/features/tools/gtm-readiness-checklist/widget/gtm-readiness-checklist.tsx +122 -0
  139. package/src/features/tools/gtm-readiness-checklist/widget/index.ts +7 -0
  140. package/src/features/tools/investor-matching-planner/investor-matching-planner.package.ts +869 -0
  141. package/src/features/tools/koko-codex-assistant/koko-codex-assistant.container.tsx +151 -0
  142. package/src/features/tools/koko-codex-assistant/koko-codex-assistant.spec.ts +14 -0
  143. package/src/features/tools/koko-codex-assistant/widget/index.ts +7 -0
  144. package/src/features/tools/koko-codex-assistant/widget/koko-codex-assistant-download.tsx +192 -0
  145. package/src/features/tools/logo-generator/logo-generator.container.tsx +112 -0
  146. package/src/features/tools/logo-generator/logo-generator.spec.ts +15 -0
  147. package/src/features/tools/logo-generator/widget/index.ts +7 -0
  148. package/src/features/tools/logo-generator/widget/logo-generator.tsx +1244 -0
  149. package/src/features/tools/market-forecast-report/market-forecast-report.container.tsx +73 -0
  150. package/src/features/tools/market-forecast-report/market-forecast-report.spec.ts +15 -0
  151. package/src/features/tools/million-user-growth-test/million-user-growth-test.container.tsx +123 -0
  152. package/src/features/tools/million-user-growth-test/million-user-growth-test.spec.ts +14 -0
  153. package/src/features/tools/million-user-growth-test/widget/index.ts +7 -0
  154. package/src/features/tools/million-user-growth-test/widget/million-user-growth-test.tsx +433 -0
  155. package/src/features/tools/module-loader.ts +107 -0
  156. package/src/features/tools/og-image-generator/og-image-generator.container.tsx +86 -0
  157. package/src/features/tools/og-image-generator/og-image-generator.spec.ts +14 -0
  158. package/src/features/tools/og-image-generator/widget/constants.ts +38 -0
  159. package/src/features/tools/og-image-generator/widget/form-fields.tsx +240 -0
  160. package/src/features/tools/og-image-generator/widget/index.ts +7 -0
  161. package/src/features/tools/og-image-generator/widget/og-image-generator.tsx +742 -0
  162. package/src/features/tools/og-image-generator/widget/preview-panel.tsx +305 -0
  163. package/src/features/tools/og-image-generator/widget/types.ts +1 -0
  164. package/src/features/tools/package/direct-models.ts +20 -0
  165. package/src/features/tools/package/form.ts +38 -0
  166. package/src/features/tools/package/l10n.ts +22 -0
  167. package/src/features/tools/package/package-container.tsx +285 -0
  168. package/src/features/tools/package/package-loaders.ts +22 -0
  169. package/src/features/tools/package/package-registry.ts +36 -0
  170. package/src/features/tools/package/result-markdown.ts +142 -0
  171. package/src/features/tools/package/schema.ts +379 -0
  172. package/src/features/tools/package/to-tool-module.ts +20 -0
  173. package/src/features/tools/package/to-tool-spec.ts +52 -0
  174. package/src/features/tools/package/types.ts +381 -0
  175. package/src/features/tools/pitch-deck-generator/pitch-deck-generator.container.tsx +175 -0
  176. package/src/features/tools/pitch-deck-generator/pitch-deck-generator.spec.ts +14 -0
  177. package/src/features/tools/pitch-deck-generator/pitch-deck-library-data.ts +476 -0
  178. package/src/features/tools/pitch-deck-generator/pitch-deck-library.tsx +159 -0
  179. package/src/features/tools/pitch-deck-generator/widget/ceremony-line.tsx +27 -0
  180. package/src/features/tools/pitch-deck-generator/widget/constants.ts +27 -0
  181. package/src/features/tools/pitch-deck-generator/widget/index.ts +7 -0
  182. package/src/features/tools/pitch-deck-generator/widget/pitch-deck-generator.tsx +763 -0
  183. package/src/features/tools/pitch-deck-generator/widget/result-helpers.ts +102 -0
  184. package/src/features/tools/pitch-deck-generator/widget/result-shell.tsx +263 -0
  185. package/src/features/tools/pitch-deck-generator/widget/slide-frame.tsx +106 -0
  186. package/src/features/tools/pitch-deck-generator/widget/slide-lightbox.tsx +149 -0
  187. package/src/features/tools/pitch-deck-generator/widget/style-option.tsx +54 -0
  188. package/src/features/tools/pitch-deck-generator/widget/types.ts +44 -0
  189. package/src/features/tools/product-agreement-generator/product-agreement-generator.container.tsx +137 -0
  190. package/src/features/tools/product-agreement-generator/product-agreement-generator.spec.ts +14 -0
  191. package/src/features/tools/product-agreement-generator/widget/constants.ts +27 -0
  192. package/src/features/tools/product-agreement-generator/widget/form-controls.tsx +218 -0
  193. package/src/features/tools/product-agreement-generator/widget/helpers.ts +68 -0
  194. package/src/features/tools/product-agreement-generator/widget/index.ts +7 -0
  195. package/src/features/tools/product-agreement-generator/widget/product-agreement-generator.tsx +671 -0
  196. package/src/features/tools/product-agreement-generator/widget/result-shell.tsx +473 -0
  197. package/src/features/tools/product-agreement-generator/widget/types.ts +89 -0
  198. package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.container.tsx +122 -0
  199. package/src/features/tools/product-hunt-launch-planner/product-hunt-launch-planner.spec.ts +15 -0
  200. package/src/features/tools/product-hunt-launch-planner/widget/constants.ts +5 -0
  201. package/src/features/tools/product-hunt-launch-planner/widget/helpers.ts +44 -0
  202. package/src/features/tools/product-hunt-launch-planner/widget/index.ts +7 -0
  203. package/src/features/tools/product-hunt-launch-planner/widget/preview-panel.tsx +143 -0
  204. package/src/features/tools/product-hunt-launch-planner/widget/product-hunt-launch-planner.tsx +504 -0
  205. package/src/features/tools/product-hunt-launch-planner/widget/result-shell.tsx +176 -0
  206. package/src/features/tools/product-hunt-launch-planner/widget/types.ts +20 -0
  207. package/src/features/tools/product-name-generator/product-name-generator.container.tsx +14 -0
  208. package/src/features/tools/product-name-generator/product-name-generator.spec.ts +15 -0
  209. package/src/features/tools/product-name-generator/widget/candidate-card.tsx +273 -0
  210. package/src/features/tools/product-name-generator/widget/constants.ts +21 -0
  211. package/src/features/tools/product-name-generator/widget/form-controls.tsx +136 -0
  212. package/src/features/tools/product-name-generator/widget/helpers.ts +41 -0
  213. package/src/features/tools/product-name-generator/widget/index.ts +7 -0
  214. package/src/features/tools/product-name-generator/widget/product-name-generator.tsx +776 -0
  215. package/src/features/tools/product-name-generator/widget/types.ts +36 -0
  216. package/src/features/tools/product-positioning-analyzer/product-positioning-analyzer.package.ts +801 -0
  217. package/src/features/tools/product-poster-generator/product-poster-generator.container.tsx +14 -0
  218. package/src/features/tools/product-poster-generator/product-poster-generator.spec.ts +15 -0
  219. package/src/features/tools/product-poster-generator/widget/constants.ts +125 -0
  220. package/src/features/tools/product-poster-generator/widget/form-controls.tsx +204 -0
  221. package/src/features/tools/product-poster-generator/widget/helpers.ts +155 -0
  222. package/src/features/tools/product-poster-generator/widget/index.ts +7 -0
  223. package/src/features/tools/product-poster-generator/widget/product-poster-generator.tsx +663 -0
  224. package/src/features/tools/product-poster-generator/widget/result-shell.tsx +12 -0
  225. package/src/features/tools/product-poster-generator/widget/types.ts +83 -0
  226. package/src/features/tools/product-ui-generator/product-ui-generator.container.tsx +116 -0
  227. package/src/features/tools/product-ui-generator/product-ui-generator.spec.ts +14 -0
  228. package/src/features/tools/product-ui-generator/widget/constants.ts +18 -0
  229. package/src/features/tools/product-ui-generator/widget/helpers.ts +11 -0
  230. package/src/features/tools/product-ui-generator/widget/index.ts +7 -0
  231. package/src/features/tools/product-ui-generator/widget/preview-panels.tsx +73 -0
  232. package/src/features/tools/product-ui-generator/widget/product-ui-generator.tsx +304 -0
  233. package/src/features/tools/product-ui-generator/widget/result-shell.tsx +118 -0
  234. package/src/features/tools/product-ui-generator/widget/types.ts +9 -0
  235. package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.container.tsx +113 -0
  236. package/src/features/tools/reddit-pain-point-finder/reddit-pain-point-finder.spec.ts +15 -0
  237. package/src/features/tools/reddit-pain-point-finder/widget/constants.ts +5 -0
  238. package/src/features/tools/reddit-pain-point-finder/widget/index.ts +7 -0
  239. package/src/features/tools/reddit-pain-point-finder/widget/preview-panels.tsx +73 -0
  240. package/src/features/tools/reddit-pain-point-finder/widget/reddit-pain-point-finder.tsx +281 -0
  241. package/src/features/tools/reddit-pain-point-finder/widget/result-shell.tsx +203 -0
  242. package/src/features/tools/reddit-pain-point-finder/widget/types.ts +15 -0
  243. package/src/features/tools/registry.ts +288 -0
  244. package/src/features/tools/runtime-registry.ts +186 -0
  245. package/src/features/tools/shared/create-guide-stack-container.tsx +176 -0
  246. package/src/features/tools/shared/create-standard-landing-container.tsx +163 -0
  247. package/src/features/tools/shared/tool-content-sections.tsx +659 -0
  248. package/src/features/tools/shared/tool-cta.tsx +66 -0
  249. package/src/features/tools/shared/tool-draft-view.tsx +53 -0
  250. package/src/features/tools/shared/tool-guide-section.tsx +191 -0
  251. package/src/features/tools/shared/tool-handoff.tsx +38 -0
  252. package/src/features/tools/shared/tool-mcp-badge.tsx +23 -0
  253. package/src/features/tools/shared/tool-message-translator.ts +37 -0
  254. package/src/features/tools/shared/tool-page-shell.tsx +348 -0
  255. package/src/features/tools/shared/tool-standard-generation-steps.tsx +52 -0
  256. package/src/features/tools/shared/tool-standard-landing-sections.tsx +447 -0
  257. package/src/features/tools/shared/tool-ui-registry.ts +237 -0
  258. package/src/features/tools/shared/tool-widget-slot.tsx +29 -0
  259. package/src/features/tools/slogan-generator/slogan-generator.package.ts +641 -0
  260. package/src/features/tools/social-listening-research-report/social-listening-research-report.container.tsx +124 -0
  261. package/src/features/tools/social-listening-research-report/social-listening-research-report.spec.ts +15 -0
  262. package/src/features/tools/social-listening-research-report/widget/constants.ts +4 -0
  263. package/src/features/tools/social-listening-research-report/widget/index.ts +7 -0
  264. package/src/features/tools/social-listening-research-report/widget/preview-panels.tsx +73 -0
  265. package/src/features/tools/social-listening-research-report/widget/result-shell.tsx +216 -0
  266. package/src/features/tools/social-listening-research-report/widget/social-listening-research-report.tsx +303 -0
  267. package/src/features/tools/social-listening-research-report/widget/types.ts +15 -0
  268. package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.container.tsx +123 -0
  269. package/src/features/tools/social-platform-asset-adapter/social-platform-asset-adapter.spec.ts +15 -0
  270. package/src/features/tools/social-platform-asset-adapter/widget/constants.ts +43 -0
  271. package/src/features/tools/social-platform-asset-adapter/widget/helpers.ts +249 -0
  272. package/src/features/tools/social-platform-asset-adapter/widget/index.ts +7 -0
  273. package/src/features/tools/social-platform-asset-adapter/widget/result-shell.tsx +350 -0
  274. package/src/features/tools/social-platform-asset-adapter/widget/section-heading.tsx +18 -0
  275. package/src/features/tools/social-platform-asset-adapter/widget/social-platform-asset-adapter.tsx +641 -0
  276. package/src/features/tools/social-platform-asset-adapter/widget/types.ts +40 -0
  277. package/src/features/tools/social-profile-kit/social-profile-kit.container.tsx +177 -0
  278. package/src/features/tools/social-profile-kit/social-profile-kit.spec.ts +15 -0
  279. package/src/features/tools/social-profile-kit/widget/context-editor.tsx +171 -0
  280. package/src/features/tools/social-profile-kit/widget/generation-runtime.ts +281 -0
  281. package/src/features/tools/social-profile-kit/widget/index.ts +7 -0
  282. package/src/features/tools/social-profile-kit/widget/input-panel.tsx +294 -0
  283. package/src/features/tools/social-profile-kit/widget/platform-dock.tsx +115 -0
  284. package/src/features/tools/social-profile-kit/widget/profile-canvas.tsx +318 -0
  285. package/src/features/tools/social-profile-kit/widget/profile-preview/bluesky-preview.tsx +188 -0
  286. package/src/features/tools/social-profile-kit/widget/profile-preview/facebook-preview.tsx +168 -0
  287. package/src/features/tools/social-profile-kit/widget/profile-preview/index.ts +1 -0
  288. package/src/features/tools/social-profile-kit/widget/profile-preview/instagram-preview.tsx +278 -0
  289. package/src/features/tools/social-profile-kit/widget/profile-preview/linkedin-preview.tsx +358 -0
  290. package/src/features/tools/social-profile-kit/widget/profile-preview/profile-preview.tsx +348 -0
  291. package/src/features/tools/social-profile-kit/widget/profile-preview/shared.tsx +391 -0
  292. package/src/features/tools/social-profile-kit/widget/profile-preview/threads-preview.tsx +148 -0
  293. package/src/features/tools/social-profile-kit/widget/profile-preview/tiktok-preview.tsx +319 -0
  294. package/src/features/tools/social-profile-kit/widget/profile-preview/x-preview.tsx +341 -0
  295. package/src/features/tools/social-profile-kit/widget/profile-preview/youtube-preview.tsx +297 -0
  296. package/src/features/tools/social-profile-kit/widget/social-profile-kit-generator.tsx +1059 -0
  297. package/src/features/tools/social-profile-kit/widget/types.ts +104 -0
  298. package/src/features/tools/spec-registry.ts +158 -0
  299. package/src/features/tools/startup-idea-research/startup-idea-research.container.tsx +111 -0
  300. package/src/features/tools/startup-idea-research/startup-idea-research.spec.ts +15 -0
  301. package/src/features/tools/startup-idea-research/widget/constants.ts +11 -0
  302. package/src/features/tools/startup-idea-research/widget/index.ts +7 -0
  303. package/src/features/tools/startup-idea-research/widget/preview-panels.tsx +67 -0
  304. package/src/features/tools/startup-idea-research/widget/result-shell.tsx +323 -0
  305. package/src/features/tools/startup-idea-research/widget/startup-idea-research.tsx +272 -0
  306. package/src/features/tools/startup-idea-research/widget/types.ts +21 -0
  307. package/src/features/tools/tarot-reading/tarot-reading.container.tsx +412 -0
  308. package/src/features/tools/tarot-reading/tarot-reading.spec.ts +15 -0
  309. package/src/features/tools/tarot-reading/widget/cards.tsx +152 -0
  310. package/src/features/tools/tarot-reading/widget/constants.ts +69 -0
  311. package/src/features/tools/tarot-reading/widget/deck-view.tsx +86 -0
  312. package/src/features/tools/tarot-reading/widget/deck.ts +86 -0
  313. package/src/features/tools/tarot-reading/widget/index.ts +7 -0
  314. package/src/features/tools/tarot-reading/widget/landing-view.tsx +209 -0
  315. package/src/features/tools/tarot-reading/widget/reading-copy.tsx +138 -0
  316. package/src/features/tools/tarot-reading/widget/reading-view.tsx +189 -0
  317. package/src/features/tools/tarot-reading/widget/reveal-view.tsx +50 -0
  318. package/src/features/tools/tarot-reading/widget/ritual-view.tsx +276 -0
  319. package/src/features/tools/tarot-reading/widget/tarot-reading.tsx +262 -0
  320. package/src/features/tools/tarot-reading/widget/types.ts +22 -0
  321. package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.container.tsx +114 -0
  322. package/src/features/tools/twitter-gif-downloader/twitter-gif-downloader.spec.ts +14 -0
  323. package/src/features/tools/twitter-gif-downloader/widget/index.ts +7 -0
  324. package/src/features/tools/twitter-gif-downloader/widget/twitter-gif-downloader.tsx +351 -0
  325. package/src/features/tools/types.ts +68 -0
  326. package/src/features/tools/user-interview-guide-generator/user-interview-guide-generator.package.ts +774 -0
  327. package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.container.tsx +23 -0
  328. package/src/features/tools/user-interview-insight-report-generator/user-interview-insight-report-generator.spec.ts +14 -0
  329. package/src/features/tools/user-interview-insight-report-generator/widget/constants.ts +8 -0
  330. package/src/features/tools/user-interview-insight-report-generator/widget/helpers.ts +4 -0
  331. package/src/features/tools/user-interview-insight-report-generator/widget/index.ts +7 -0
  332. package/src/features/tools/user-interview-insight-report-generator/widget/preview-panels.tsx +55 -0
  333. package/src/features/tools/user-interview-insight-report-generator/widget/result-shell.tsx +122 -0
  334. package/src/features/tools/user-interview-insight-report-generator/widget/types.ts +16 -0
  335. package/src/features/tools/user-interview-insight-report-generator/widget/user-interview-insight-report-generator.tsx +293 -0
  336. package/src/features/tools/user-interview-record-generator/user-interview-record-generator.container.tsx +18 -0
  337. package/src/features/tools/user-interview-record-generator/user-interview-record-generator.spec.ts +14 -0
  338. package/src/features/tools/user-interview-record-generator/widget/constants.ts +9 -0
  339. package/src/features/tools/user-interview-record-generator/widget/helpers.ts +4 -0
  340. package/src/features/tools/user-interview-record-generator/widget/index.ts +7 -0
  341. package/src/features/tools/user-interview-record-generator/widget/preview-panels.tsx +48 -0
  342. package/src/features/tools/user-interview-record-generator/widget/result-shell.tsx +128 -0
  343. package/src/features/tools/user-interview-record-generator/widget/types.ts +16 -0
  344. package/src/features/tools/user-interview-record-generator/widget/user-interview-record-generator.tsx +305 -0
  345. package/src/features/tools/utm-builder/utm-builder.package.ts +846 -0
  346. package/src/features/tools/widget-registry.ts +73 -0
  347. package/src/generated/mcp-tools-registry.json +17 -0
  348. package/src/host/client-proxy.test.ts +33 -0
  349. package/src/host/client.ts +678 -0
  350. package/src/host/server.ts +119 -0
  351. package/src/i18n/client.ts +11 -0
  352. package/src/i18n/locale-fallback.ts +38 -0
  353. package/src/i18n/locale.ts +18 -0
  354. package/src/i18n/messages/en/page/tools.ts +124 -0
  355. package/src/i18n/messages/en/tools/app-icon-resizer.ts +244 -0
  356. package/src/i18n/messages/en/tools/app-store-screenshot-generator.ts +145 -0
  357. package/src/i18n/messages/en/tools/build-in-public-story-generator.ts +229 -0
  358. package/src/i18n/messages/en/tools/cold-start-channel-selector.ts +423 -0
  359. package/src/i18n/messages/en/tools/commercial-bp-generator.ts +304 -0
  360. package/src/i18n/messages/en/tools/community-feedback-inbox.ts +218 -0
  361. package/src/i18n/messages/en/tools/community-pain-point-extractor.ts +230 -0
  362. package/src/i18n/messages/en/tools/community-post-risk-checker.ts +209 -0
  363. package/src/i18n/messages/en/tools/competitor-analysis.ts +197 -0
  364. package/src/i18n/messages/en/tools/email-template-generator.ts +302 -0
  365. package/src/i18n/messages/en/tools/engine.ts +69 -0
  366. package/src/i18n/messages/en/tools/gtm-readiness-checklist.ts +166 -0
  367. package/src/i18n/messages/en/tools/index.ts +73 -0
  368. package/src/i18n/messages/en/tools/koko-codex-assistant.ts +171 -0
  369. package/src/i18n/messages/en/tools/logo-generator.ts +173 -0
  370. package/src/i18n/messages/en/tools/market-forecast-report.ts +228 -0
  371. package/src/i18n/messages/en/tools/million-user-growth-test.ts +386 -0
  372. package/src/i18n/messages/en/tools/og-image-generator.ts +172 -0
  373. package/src/i18n/messages/en/tools/pitch-deck-generator.ts +358 -0
  374. package/src/i18n/messages/en/tools/product-agreement-generator.ts +411 -0
  375. package/src/i18n/messages/en/tools/product-hunt-launch-planner.ts +272 -0
  376. package/src/i18n/messages/en/tools/product-name-generator.ts +383 -0
  377. package/src/i18n/messages/en/tools/product-poster-generator.ts +294 -0
  378. package/src/i18n/messages/en/tools/product-ui-generator.ts +234 -0
  379. package/src/i18n/messages/en/tools/reddit-pain-point-finder.ts +163 -0
  380. package/src/i18n/messages/en/tools/shared.ts +24 -0
  381. package/src/i18n/messages/en/tools/social-listening-research-report.ts +185 -0
  382. package/src/i18n/messages/en/tools/social-media-profile-generator.ts +22 -0
  383. package/src/i18n/messages/en/tools/social-platform-asset-adapter.ts +287 -0
  384. package/src/i18n/messages/en/tools/social-profile-kit.ts +150 -0
  385. package/src/i18n/messages/en/tools/startup-idea-research.ts +170 -0
  386. package/src/i18n/messages/en/tools/tarot-reading.ts +230 -0
  387. package/src/i18n/messages/en/tools/twitter-gif-downloader.ts +145 -0
  388. package/src/i18n/messages/en/tools/user-interview-insight-report-generator.ts +242 -0
  389. package/src/i18n/messages/en/tools/user-interview-record-generator.ts +244 -0
  390. package/src/i18n/messages/en/tools-ui.ts +704 -0
  391. package/src/i18n/messages/zh/page/tools.ts +124 -0
  392. package/src/i18n/messages/zh/tools/app-icon-resizer.ts +242 -0
  393. package/src/i18n/messages/zh/tools/app-store-screenshot-generator.ts +145 -0
  394. package/src/i18n/messages/zh/tools/build-in-public-story-generator.ts +230 -0
  395. package/src/i18n/messages/zh/tools/cold-start-channel-selector.ts +422 -0
  396. package/src/i18n/messages/zh/tools/commercial-bp-generator.ts +302 -0
  397. package/src/i18n/messages/zh/tools/community-feedback-inbox.ts +217 -0
  398. package/src/i18n/messages/zh/tools/community-pain-point-extractor.ts +230 -0
  399. package/src/i18n/messages/zh/tools/community-post-risk-checker.ts +200 -0
  400. package/src/i18n/messages/zh/tools/competitor-analysis.ts +192 -0
  401. package/src/i18n/messages/zh/tools/email-template-generator.ts +302 -0
  402. package/src/i18n/messages/zh/tools/engine.ts +68 -0
  403. package/src/i18n/messages/zh/tools/gtm-readiness-checklist.ts +166 -0
  404. package/src/i18n/messages/zh/tools/index.ts +73 -0
  405. package/src/i18n/messages/zh/tools/koko-codex-assistant.ts +170 -0
  406. package/src/i18n/messages/zh/tools/logo-generator.ts +172 -0
  407. package/src/i18n/messages/zh/tools/market-forecast-report.ts +228 -0
  408. package/src/i18n/messages/zh/tools/million-user-growth-test.ts +385 -0
  409. package/src/i18n/messages/zh/tools/og-image-generator.ts +173 -0
  410. package/src/i18n/messages/zh/tools/pitch-deck-generator.ts +358 -0
  411. package/src/i18n/messages/zh/tools/product-agreement-generator.ts +401 -0
  412. package/src/i18n/messages/zh/tools/product-hunt-launch-planner.ts +267 -0
  413. package/src/i18n/messages/zh/tools/product-name-generator.ts +383 -0
  414. package/src/i18n/messages/zh/tools/product-poster-generator.ts +282 -0
  415. package/src/i18n/messages/zh/tools/product-ui-generator.ts +234 -0
  416. package/src/i18n/messages/zh/tools/reddit-pain-point-finder.ts +162 -0
  417. package/src/i18n/messages/zh/tools/shared.ts +24 -0
  418. package/src/i18n/messages/zh/tools/social-listening-research-report.ts +181 -0
  419. package/src/i18n/messages/zh/tools/social-media-profile-generator.ts +22 -0
  420. package/src/i18n/messages/zh/tools/social-platform-asset-adapter.ts +284 -0
  421. package/src/i18n/messages/zh/tools/social-profile-kit.ts +150 -0
  422. package/src/i18n/messages/zh/tools/startup-idea-research.ts +165 -0
  423. package/src/i18n/messages/zh/tools/tarot-reading.ts +228 -0
  424. package/src/i18n/messages/zh/tools/twitter-gif-downloader.ts +138 -0
  425. package/src/i18n/messages/zh/tools/user-interview-insight-report-generator.ts +224 -0
  426. package/src/i18n/messages/zh/tools/user-interview-record-generator.ts +226 -0
  427. package/src/i18n/messages/zh/tools-ui.ts +684 -0
  428. package/src/i18n/messages/zh-tw/page/tools.ts +115 -0
  429. package/src/i18n/messages/zh-tw/tools/app-icon-resizer.ts +242 -0
  430. package/src/i18n/messages/zh-tw/tools/app-store-screenshot-generator.ts +145 -0
  431. package/src/i18n/messages/zh-tw/tools/build-in-public-story-generator.ts +230 -0
  432. package/src/i18n/messages/zh-tw/tools/cold-start-channel-selector.ts +440 -0
  433. package/src/i18n/messages/zh-tw/tools/commercial-bp-generator.ts +302 -0
  434. package/src/i18n/messages/zh-tw/tools/community-feedback-inbox.ts +217 -0
  435. package/src/i18n/messages/zh-tw/tools/community-pain-point-extractor.ts +230 -0
  436. package/src/i18n/messages/zh-tw/tools/community-post-risk-checker.ts +200 -0
  437. package/src/i18n/messages/zh-tw/tools/competitor-analysis.ts +192 -0
  438. package/src/i18n/messages/zh-tw/tools/email-template-generator.ts +302 -0
  439. package/src/i18n/messages/zh-tw/tools/engine.ts +68 -0
  440. package/src/i18n/messages/zh-tw/tools/gtm-readiness-checklist.ts +166 -0
  441. package/src/i18n/messages/zh-tw/tools/index.ts +73 -0
  442. package/src/i18n/messages/zh-tw/tools/koko-codex-assistant.ts +170 -0
  443. package/src/i18n/messages/zh-tw/tools/logo-generator.ts +71 -0
  444. package/src/i18n/messages/zh-tw/tools/market-forecast-report.ts +228 -0
  445. package/src/i18n/messages/zh-tw/tools/million-user-growth-test.ts +385 -0
  446. package/src/i18n/messages/zh-tw/tools/og-image-generator.ts +173 -0
  447. package/src/i18n/messages/zh-tw/tools/pitch-deck-generator.ts +358 -0
  448. package/src/i18n/messages/zh-tw/tools/product-agreement-generator.ts +401 -0
  449. package/src/i18n/messages/zh-tw/tools/product-hunt-launch-planner.ts +267 -0
  450. package/src/i18n/messages/zh-tw/tools/product-name-generator.ts +383 -0
  451. package/src/i18n/messages/zh-tw/tools/product-poster-generator.ts +282 -0
  452. package/src/i18n/messages/zh-tw/tools/product-ui-generator.ts +234 -0
  453. package/src/i18n/messages/zh-tw/tools/reddit-pain-point-finder.ts +162 -0
  454. package/src/i18n/messages/zh-tw/tools/shared.ts +24 -0
  455. package/src/i18n/messages/zh-tw/tools/social-listening-research-report.ts +181 -0
  456. package/src/i18n/messages/zh-tw/tools/social-media-profile-generator.ts +22 -0
  457. package/src/i18n/messages/zh-tw/tools/social-platform-asset-adapter.ts +284 -0
  458. package/src/i18n/messages/zh-tw/tools/social-profile-kit.ts +150 -0
  459. package/src/i18n/messages/zh-tw/tools/startup-idea-research.ts +165 -0
  460. package/src/i18n/messages/zh-tw/tools/tarot-reading.ts +228 -0
  461. package/src/i18n/messages/zh-tw/tools/twitter-gif-downloader.ts +138 -0
  462. package/src/i18n/messages/zh-tw/tools/user-interview-insight-report-generator.ts +224 -0
  463. package/src/i18n/messages/zh-tw/tools/user-interview-record-generator.ts +226 -0
  464. package/src/i18n/messages/zh-tw/tools-ui.ts +525 -0
  465. package/src/index.ts +15 -0
  466. package/src/lib/activity-task-handoff.ts +404 -0
  467. package/src/lib/api/errors.ts +39 -0
  468. package/src/lib/app-origin.ts +30 -0
  469. package/src/lib/fact-claim-contract.ts +68 -0
  470. package/src/lib/fake-delay.ts +3 -0
  471. package/src/lib/file/download.ts +10 -0
  472. package/src/lib/routing/locale-paths.ts +27 -0
  473. package/src/lib/seo-meta.ts +3 -0
  474. package/src/lib/tools/app-icon-resizer-schema.ts +191 -0
  475. package/src/lib/tools/app-store-screenshot-generator-schema.ts +185 -0
  476. package/src/lib/tools/build-in-public-story-generator-schema.ts +67 -0
  477. package/src/lib/tools/build-in-public-story-generator.format.ts +507 -0
  478. package/src/lib/tools/cold-start-channel-selector-schema.ts +147 -0
  479. package/src/lib/tools/commercial-bp-generator-schema.ts +222 -0
  480. package/src/lib/tools/community-feedback-inbox-schema.ts +125 -0
  481. package/src/lib/tools/community-feedback-inbox.format.ts +764 -0
  482. package/src/lib/tools/community-pain-point-extractor-schema.ts +166 -0
  483. package/src/lib/tools/community-post-risk-checker-schema.ts +99 -0
  484. package/src/lib/tools/community-post-risk-checker.format.ts +557 -0
  485. package/src/lib/tools/competitor-analysis-schema.ts +144 -0
  486. package/src/lib/tools/draft-preview-access.ts +3 -0
  487. package/src/lib/tools/draft-store.ts +69 -0
  488. package/src/lib/tools/email-template-generator-schema.ts +124 -0
  489. package/src/lib/tools/gtm-checklist-copy.ts +57 -0
  490. package/src/lib/tools/gtm-checklist-structure.ts +37 -0
  491. package/src/lib/tools/image-download.ts +68 -0
  492. package/src/lib/tools/input-quality.ts +97 -0
  493. package/src/lib/tools/logo-generator-schema.ts +224 -0
  494. package/src/lib/tools/market-forecast-report-schema.ts +299 -0
  495. package/src/lib/tools/mcp-registry.ts +16 -0
  496. package/src/lib/tools/mcp-types.ts +18 -0
  497. package/src/lib/tools/million-user-growth-test-schema.ts +49 -0
  498. package/src/lib/tools/million-user-growth-test.ts +181 -0
  499. package/src/lib/tools/og-image-generator-render.ts +448 -0
  500. package/src/lib/tools/og-image-generator-schema.ts +140 -0
  501. package/src/lib/tools/ops-catalog.ts +102 -0
  502. package/src/lib/tools/pitch-deck-generator-schema.ts +182 -0
  503. package/src/lib/tools/pitch-deck-package.ts +0 -0
  504. package/src/lib/tools/product-agreement-generator-schema.ts +168 -0
  505. package/src/lib/tools/product-hunt-launch-planner-schema.ts +136 -0
  506. package/src/lib/tools/product-hunt-launch-planner.format.ts +72 -0
  507. package/src/lib/tools/product-name-generator-schema.ts +563 -0
  508. package/src/lib/tools/product-poster-generator-schema.ts +215 -0
  509. package/src/lib/tools/product-ui-generator-schema.ts +157 -0
  510. package/src/lib/tools/reddit-pain-point-finder-schema.ts +88 -0
  511. package/src/lib/tools/resolve-tool-locale-copy.ts +75 -0
  512. package/src/lib/tools/slug.ts +60 -0
  513. package/src/lib/tools/social-listening-research-report-schema.ts +105 -0
  514. package/src/lib/tools/social-platform-asset-adapter-schema.ts +152 -0
  515. package/src/lib/tools/social-profile-kit.constants.ts +12 -0
  516. package/src/lib/tools/social-profile-kit.generation.ts +257 -0
  517. package/src/lib/tools/social-profile-kit.input.ts +290 -0
  518. package/src/lib/tools/social-profile-kit.manual.ts +481 -0
  519. package/src/lib/tools/social-profile-kit.package.ts +220 -0
  520. package/src/lib/tools/social-profile-kit.schema.ts +328 -0
  521. package/src/lib/tools/startup-idea-research-schema.ts +107 -0
  522. package/src/lib/tools/tarot-imagery.ts +89 -0
  523. package/src/lib/tools/tarot-reading.ts +1044 -0
  524. package/src/lib/tools/tool-message-keys.ts +18 -0
  525. package/src/lib/tools/types.ts +32 -0
  526. package/src/lib/tools/user-interview.format.ts +147 -0
  527. package/src/lib/tools/user-interview.generation.ts +670 -0
  528. package/src/lib/tools/user-interview.schema.ts +192 -0
  529. package/src/lib/zip.ts +106 -0
  530. package/src/services/tools/handlers/gtm-readiness-checklist.ts +71 -0
  531. package/src/services/tools/handlers/types.ts +7 -0
@@ -0,0 +1,304 @@
1
+ const commercialBpGenerator = {
2
+ meta: {
3
+ title: "AI Business Plan Deck Generator",
4
+ description: "Enter a product website or manual product context, then let an online Agent create a business plan outline, image-based deck pages, style direction, per-slide downloads, and a full package.",
5
+ intro: "Turn rough product context, brand constraints, audience, and go-to-market goals into an image-based business plan deck for fundraising, hiring, launches, and partnerships.",
6
+ category: "Commercial tools",
7
+ keywords: [
8
+ "AI business plan generator",
9
+ "pitch deck image generator",
10
+ "startup BP generator",
11
+ "business plan deck",
12
+ ],
13
+ inputSignal: "Product URL or brief, brand rules, deck purpose",
14
+ outputSignal: "Deck outline, image slides, sources, QA, download package",
15
+ boundarySignal: "Market data and in-image text need review",
16
+ },
17
+ guide: {
18
+ heroImageAlt: "Product context becoming a business plan outline, image slides, and a download package.",
19
+ workspaceHeading: "Tool workspace",
20
+ workspaceHint:
21
+ "Enter a product website or write the product context manually. The Agent returns the deck outline first, then generates image-based BP pages in order.",
22
+ workspaceBadge: "Image business plan deck",
23
+ outputs: "What you get",
24
+ outputsIntro:
25
+ "The output is not just business-plan prose. It is a reviewable, downloadable, revisable image deck production package.",
26
+ outputItems: [
27
+ {
28
+ title: "Deck outline",
29
+ body: "See the page list, core message, density, and visual role before the image generation queue starts.",
30
+ },
31
+ {
32
+ title: "Ordered image pages",
33
+ body: "Each slide appears as it is generated, while the front end preserves the intended order across batches.",
34
+ },
35
+ {
36
+ title: "Style direction",
37
+ body: "Pick one of three abstract visual directions, or skip selection and let the Agent choose from the product context.",
38
+ },
39
+ {
40
+ title: "Sources and QA",
41
+ body: "Market evidence, public sources, image-text risks, missing information, and review notes are returned separately.",
42
+ },
43
+ {
44
+ title: "Single-page downloads",
45
+ body: "Download each generated page for replacement, review, or reuse in another presentation flow.",
46
+ },
47
+ {
48
+ title: "Full package download",
49
+ body: "The final package supports batch download with recognizable product and slide names instead of random filenames.",
50
+ },
51
+ ],
52
+ pipelineVisualAlt: "A business plan production workflow with outline, sources, prompts, QA, and final image deck package.",
53
+ standards: "What a good BP generator should do",
54
+ standardsIntro:
55
+ "A useful BP Agent needs more than a filled template. It must coordinate narrative, evidence, brand consistency, image quality, and delivery rules.",
56
+ standardsItems: [
57
+ {
58
+ title: "Narrative before images",
59
+ body: "Clarify why the product exists, who needs it, why now, how it works, and who should join before producing pages.",
60
+ },
61
+ {
62
+ title: "Low page density",
63
+ body: "Each page should carry one core judgment. If the content is too much, split the page instead of shrinking type.",
64
+ },
65
+ {
66
+ title: "Brand constraints first",
67
+ body: "Product name, logo, banned terms, old names, IP rules, and visual constraints are locked into the brief.",
68
+ },
69
+ {
70
+ title: "Traceable evidence",
71
+ body: "Market, trend, and numeric claims need sources. Uncertain facts become QA notes rather than confident claims.",
72
+ },
73
+ {
74
+ title: "Progressive generation",
75
+ body: "The user sees the outline and current stage first, then image pages appear in batches with clear status.",
76
+ },
77
+ {
78
+ title: "Clear versioning",
79
+ body: "Final images, contact sheet, outline, sources, QA, and package links should all point to one authoritative version.",
80
+ },
81
+ ],
82
+ boundary: "Support, limits, and recovery",
83
+ boundaryIntro:
84
+ "A business plan can affect fundraising, hiring, and public commitments, so the output should be treated as a strong first draft, not an unreviewed final asset.",
85
+ boundaryGroups: [
86
+ {
87
+ title: "Good fit",
88
+ items: [
89
+ "Internet products, SaaS, AI agents, developer tools, consumer apps, platforms, and early-stage startup brands.",
90
+ "Fundraising decks, hiring decks, launch materials, partnership decks, and mixed-audience business narratives.",
91
+ "Brands with a website, product notes, brand rules, logo/IP references, audience definition, and commercial goals.",
92
+ ],
93
+ },
94
+ {
95
+ title: "Needs review",
96
+ items: [
97
+ "Funding amounts, financial forecasts, market sizing, user metrics, customer stories, competitor claims, and legal wording.",
98
+ "In-image text, numbers, sources, logos, mascot/IP details, banned terms, and old product names.",
99
+ "Disclosure level and wording differences between investor, hiring, launch, and partnership versions.",
100
+ ],
101
+ },
102
+ {
103
+ title: "How to recover",
104
+ items: [
105
+ "If the outline is generic, add audience, real product capabilities, stage, differentiation, and existing data.",
106
+ "If the visual system drifts, choose a style direction and add colors, logo rules, banned visuals, or references.",
107
+ "If market pages feel weak, add citable sources or ask the Agent to downgrade exact numbers into trend evidence.",
108
+ ],
109
+ },
110
+ ],
111
+ useCases: "Use cases",
112
+ useCaseItems: [
113
+ {
114
+ title: "Indie founder fundraising or hiring",
115
+ body: "Turn product progress and long-term vision into material investors, candidates, and supporters can understand.",
116
+ },
117
+ {
118
+ title: "Early-stage team communication",
119
+ body: "Create a discussable first version for pitches, partnerships, internal strategy reviews, and product introductions.",
120
+ },
121
+ {
122
+ title: "Internet product launches",
123
+ body: "Package positioning, pain points, timing, and commercialization path into image assets that are easier to share.",
124
+ },
125
+ {
126
+ title: "Accelerator or advisory workflows",
127
+ body: "Help teams with uneven starting points reach a decent BP baseline before focusing on evidence and story quality.",
128
+ },
129
+ ],
130
+ faq: "FAQ",
131
+ faqItems: [
132
+ {
133
+ question: "Why generate the outline before images?",
134
+ answer:
135
+ "The value of a BP starts with narrative order and page-level judgment. Direct image generation often creates nice pages that do not tell a clear story.",
136
+ },
137
+ {
138
+ question: "Can I only enter a product website?",
139
+ answer:
140
+ "Yes. URL mode can start from a website, but if the site is thin, the result will list missing information such as audience, commercial goals, brand rules, or data sources.",
141
+ },
142
+ {
143
+ question: "Are the style presets industry categories?",
144
+ answer:
145
+ "No. They are lower-level visual directions such as narrative impact, operating structure, and market mapping. They can apply across internet product categories.",
146
+ },
147
+ {
148
+ question: "Will it generate editable PPT?",
149
+ answer:
150
+ "This version is image-based. It does not promise HTML or editable PPT output yet, though the manifest can support future export flows.",
151
+ },
152
+ {
153
+ question: "Can the in-image text be used directly?",
154
+ answer:
155
+ "It needs review. Image models can alter words, numbers, or punctuation, especially for long text and market-data pages.",
156
+ },
157
+ {
158
+ question: "How are downloads named?",
159
+ answer:
160
+ "The Agent should return product, page index, and slide-topic based filenames such as tomako-business-bp-01-cover.png instead of random task IDs.",
161
+ },
162
+ ],
163
+ ctaTitle: "Keep building your go-to-market package",
164
+ ctaPrimary: "Plan a Product Hunt launch",
165
+ ctaSecondary: "Back to all tools",
166
+ ctaHint:
167
+ "After the BP is clear, continue with launch plans, store screenshots, social profiles, and campaign assets.",
168
+ },
169
+ widget: {
170
+ urlMode: "Use URL",
171
+ manualMode: "Write manually",
172
+ productUrlLabel: "Product website URL",
173
+ productUrlPlaceholder: "https://your-product.com",
174
+ productContextLabel: "Product context",
175
+ productContextPlaceholder:
176
+ "Describe product features, audience, stage, commercial goals, vision, evidence, brand rules, and who the BP should persuade.",
177
+ productNameLabel: "Product name",
178
+ productNamePlaceholder: "e.g. Tomako",
179
+ positioningLabel: "One-line positioning",
180
+ positioningPlaceholder: "e.g. An AI commercialization Agent platform for indie founders",
181
+ targetUsersLabel: "Target users",
182
+ targetUsersPlaceholder: "e.g. indie developers, solo operators, early-stage teams",
183
+ purposeLabel: "BP purpose",
184
+ densityLabel: "Density",
185
+ languageLabel: "Output language",
186
+ styleLabel: "Style direction",
187
+ styleHint: "Swipe horizontally, or skip it",
188
+ brandNotesLabel: "Brand, logo, IP, and visual rules",
189
+ brandNotesPlaceholder:
190
+ "Add colors, logo links, mascot rules, fonts, reference images, or visuals to avoid.",
191
+ referenceImagesLabel: "Reference and context images",
192
+ referenceImagesHint:
193
+ "PNG, JPG, or WebP. Up to 6 images; they are compressed before being sent to the Agent.",
194
+ referenceImagesButton: "Upload images",
195
+ referenceImagesEmpty: "No reference images uploaded yet",
196
+ referenceImagesPlaceholder:
197
+ "Upload logos, product screenshots, old BP pages, style references, or competitor screenshots.",
198
+ referenceImagesCount: "{count} / {max} images uploaded",
199
+ referenceImageMeta: "{width} x {height} · {size}",
200
+ removeReferenceImage: "Remove {name}",
201
+ mustIncludeLabel: "Must include",
202
+ mustIncludePlaceholder:
203
+ "Market data, team strengths, a feature, a user scenario, or a required page.",
204
+ mustAvoidLabel: "Must avoid",
205
+ mustAvoidPlaceholder:
206
+ "Old product names, wrong mascots, funding amounts, unconfirmed customers, or hype claims.",
207
+ optional: "Optional",
208
+ generate: "Generate BP deck",
209
+ submitting: "Submitting request...",
210
+ running: "Generating BP deck...",
211
+ retry: "Retry",
212
+ emptyTitle: "The BP outline and image pages will appear here",
213
+ emptyHint:
214
+ "You will see the page outline and thinking process first, then generated images appear in order. Final output supports single-page and package downloads.",
215
+ resultReady: "Business plan deck ready",
216
+ resultRunning: "Agent is generating the BP deck",
217
+ resultFallbackTitle: "Business plan deck in progress",
218
+ resultFallbackSummary:
219
+ "The Agent is organizing product context, narrative structure, visual direction, and the image generation queue.",
220
+ progressFallback: "Preparing the next slide batch",
221
+ outlineTitle: "Deck outline",
222
+ slidesTitle: "Image pages",
223
+ downloadAll: "Download full deck",
224
+ downloadManifest: "Download manifest",
225
+ downloadContactSheet: "Download contact sheet",
226
+ downloadSlide: "Download page",
227
+ workspaceVisualAlt: "A rough product brief becoming ordered business plan image pages and a download package.",
228
+ revisionLabel: "Ask the Agent to revise",
229
+ revisionHint: "Be specific",
230
+ revisionPlaceholder:
231
+ "For example: split market size into two pages, make the cover calmer, redraw page 6, and include the product name in every filename.",
232
+ sendRevision: "Send revision",
233
+ status: {
234
+ PENDING: "Queued",
235
+ STREAMING: "Generating",
236
+ AWAITING_INPUT: "Waiting for structured result",
237
+ AWAITING_FINAL: "Generating more image pages",
238
+ SUCCEEDED: "Finishing result",
239
+ default: "Processing",
240
+ },
241
+ slideStatus: {
242
+ queued: "Queued",
243
+ generating: "Generating",
244
+ ready: "Ready",
245
+ failed: "Failed",
246
+ },
247
+ errors: {
248
+ invalid:
249
+ "URL mode only needs a valid product website. Manual mode needs real product context, product name, positioning, and target users.",
250
+ revision: "Write a concrete revision instruction before sending it to the Agent.",
251
+ referenceImageType: "Only PNG, JPG, or WebP images are supported.",
252
+ referenceImageSize: "Each image must be under 8 MB.",
253
+ referenceImageLarge: "This image is still too large after compression. Use a smaller image.",
254
+ referenceImageRead: "Could not read this image. Please upload it again.",
255
+ referenceImageLimit: "You can upload up to 6 reference images.",
256
+ submit: "Request submission failed.",
257
+ task: "Generation task failed.",
258
+ timeout: "Structured result did not arrive in time.",
259
+ schema: "The Agent result does not match the BP schema.",
260
+ generic: "BP generation failed.",
261
+ recover:
262
+ "Check the product URL or add more product context, brand rules, audience, and required content before retrying.",
263
+ },
264
+ copy: {
265
+ purposes: {
266
+ fundraising: "Fundraising",
267
+ recruiting: "Hiring",
268
+ launch: "Launch",
269
+ partnership: "Partnership",
270
+ strategy: "Strategy",
271
+ combined: "Combined",
272
+ },
273
+ languages: {
274
+ zh: "Chinese",
275
+ en: "English",
276
+ },
277
+ densities: {
278
+ lean: "Lean",
279
+ standard: "Standard",
280
+ complete: "Complete",
281
+ },
282
+ styles: {
283
+ none: {
284
+ name: "No preset",
285
+ summary: "Let the Agent choose based on product, audience, and brand rules.",
286
+ },
287
+ signalEditorial: {
288
+ name: "Signal Editorial",
289
+ summary: "More belief, emotion, shareability, photography, and breathing room.",
290
+ },
291
+ operatorGrid: {
292
+ name: "Operator Grid",
293
+ summary: "More workflows, metrics, product systems, and execution clarity.",
294
+ },
295
+ marketAtlas: {
296
+ name: "Market Atlas",
297
+ summary: "More ecosystem, growth, market evidence, and business structure.",
298
+ },
299
+ },
300
+ },
301
+ },
302
+ };
303
+
304
+ export default commercialBpGenerator;
@@ -0,0 +1,218 @@
1
+ const communityFeedbackInbox = {
2
+ meta: {
3
+ title: "Community Feedback Inbox",
4
+ description: "Paste Reddit, Indie Hackers, Product Hunt, or X comments and turn scattered community feedback into pain points, objections, competitor signals, feature requests, beta invite leads, build-in-public material, backlog candidates, and landing page FAQ.",
5
+ intro: "Turn post-launch comments, DMs, and trial feedback into a learning system: classify user language, find beta invite candidates, capture backlog evidence, and turn objections into landing page copy.",
6
+ category: "User feedback tools",
7
+ keywords: [
8
+ "community feedback inbox",
9
+ "Reddit product feedback analyzer",
10
+ "build in public feedback organizer",
11
+ "customer feedback categorizer",
12
+ "product feedback to roadmap tool",
13
+ ],
14
+ inputSignal: "Community comments + product context",
15
+ outputSignal: "Feedback clusters + beta leads + content/backlog assets",
16
+ boundarySignal: "Review prototype; local heuristic analysis, no scraping or user messaging",
17
+ },
18
+ examples: [
19
+ {
20
+ label: "Reddit launch comments",
21
+ input: "Product: a GTM learning tool for indie founders. Comments include pricing doubts, comparisons with Canny and Notion, export requests, and beta interest.",
22
+ expectedOutput: "Pain, objection, competitor, feature, pricing, and copy clusters plus beta invite leads, build-in-public angles, backlog candidates, and FAQ drafts.",
23
+ },
24
+ ],
25
+ guide: {
26
+ heroVisualAlt:
27
+ "A workspace where scattered community comments become feedback clusters, beta leads, content material, and product backlog evidence.",
28
+ workspaceHeading: "Turn community comments into growth learning assets",
29
+ workspaceHint:
30
+ "Paste Reddit, Indie Hackers, Product Hunt, X, or Discord comments. This review prototype classifies feedback into pain points, objections, competitors, feature requests, pricing feedback, and copy feedback, then suggests reviewable next steps.",
31
+ workspaceBadge: "Review prototype",
32
+ workspaceVisualAlt:
33
+ "Scattered community feedback turning from loose paper notes into a report with signal clusters, beta candidates, content, and backlog tabs.",
34
+ outputs: "What you get",
35
+ outputItems: [
36
+ {
37
+ title: "Feedback clusters",
38
+ body: "Classify comments into pain points, objections, competitors, feature requests, pricing feedback, and copy feedback with evidence snippets.",
39
+ },
40
+ {
41
+ title: "Beta invite shortlist",
42
+ body: "Flag people who show a clear workflow, trial intent, or useful follow-up question, with an editable DM draft.",
43
+ },
44
+ {
45
+ title: "Build-in-public material",
46
+ body: "Turn high-quality comments into the angle, hook, and user language for the next public building post.",
47
+ },
48
+ {
49
+ title: "Backlog and FAQ candidates",
50
+ body: "Convert repeated feedback into backlog hypotheses, landing page FAQ, and objection-handling material.",
51
+ },
52
+ ],
53
+ supportHeading: "For learning after a post, not just counting exposure",
54
+ supportVisualAlt:
55
+ "Community comments, DMs, and trial feedback organized into product learning assets.",
56
+ supportItems: [
57
+ "Useful for indie founders, early SaaS teams, developer tools, AI tools, open-source brands, and build-in-public creators.",
58
+ "Best for post-launch comments, DMs, trial feedback, Product Hunt comments, Reddit discussions, and Indie Hackers replies.",
59
+ "This is not a public voting board. It turns real community language into the next product and GTM decision.",
60
+ "If comments include usernames or sources, beta leads become more useful. Anonymous comments can still be clustered.",
61
+ ],
62
+ boundaryHeading: "This version intentionally avoids scraping and auto-DMs",
63
+ boundaryVisualAlt:
64
+ "A community feedback analysis workspace with manual boundaries and privacy review markers.",
65
+ boundaryItems: [
66
+ "It does not connect to Reddit, Indie Hackers, Product Hunt, X, or Discord APIs, and does not bypass platform rules.",
67
+ "It does not message users automatically. Beta invites are candidate leads and drafts for manual judgment.",
68
+ "Classification uses local heuristics, not a formal AI research result. Review original comments before adding backlog items.",
69
+ "Before publishing build-in-public content, remove usernames, private details, and anything that could misquote a user.",
70
+ ],
71
+ resultUseHeading: "Connect the result to Tomako's GTM workflow",
72
+ resultUseVisualAlt:
73
+ "Community feedback flowing into build-in-public posts, landing page FAQ, beta invites, and backlog.",
74
+ resultUseItems: [
75
+ "Send content angles to the Social Platform Asset Adapter and rewrite them for X, LinkedIn, Reddit, or Product Hunt follow-up.",
76
+ "Turn high-signal beta candidates into a manual DM list. Ask about the workflow before inviting them to try the beta.",
77
+ "Move objections into landing page FAQ and comment replies instead of leaving them in internal notes.",
78
+ "Write repeated feedback as a hypothesis, evidence count, and acceptance criteria before adding it to backlog.",
79
+ ],
80
+ whyTomakoHeading: "Why not just use a spreadsheet or feedback board",
81
+ whyTomakoItems: [
82
+ {
83
+ title: "Built around the post-feedback loop",
84
+ body: "Classic feedback boards focus on collection and voting. This tool focuses on turning community comments into content, beta users, and the next validation loop.",
85
+ },
86
+ {
87
+ title: "Keeps the original language",
88
+ body: "The result includes evidence snippets, so you can return to the source instead of prioritizing from vague tags.",
89
+ },
90
+ {
91
+ title: "Turns objections into assets",
92
+ body: "When users are confused, concerned, or comparing alternatives, that language becomes FAQ, reply, and landing page material.",
93
+ },
94
+ {
95
+ title: "Avoids over-automation",
96
+ body: "Community growth breaks when real conversations become bulk workflows. Tomako organizes signals while keeping DMs and product decisions human.",
97
+ },
98
+ ],
99
+ standardHeading: "A good community feedback tool helps you judge, not blindly obey",
100
+ standardVisualAlt:
101
+ "Community feedback split into evidence, priority, human review, and next actions.",
102
+ standardItems: [
103
+ "Evidence: every cluster should point back to original comments, not just abstract labels.",
104
+ "Restraint: feature requests should be merged and validated before entering a roadmap.",
105
+ "Actionability: results should become beta invites, FAQ, content angles, or backlog hypotheses.",
106
+ "Boundaries: the tool should be clear about no scraping, no auto-DM, and no replacement for product judgment.",
107
+ "Workflow: community feedback should return to GTM instead of staying as one-time exposure data.",
108
+ ],
109
+ faq: "Frequently asked questions",
110
+ faqItems: [
111
+ {
112
+ question: "Does this tool scrape Reddit or Indie Hackers automatically?",
113
+ answer:
114
+ "No. The current version only processes comments you paste manually, which keeps platform rules, login access, and privacy boundaries clearer.",
115
+ },
116
+ {
117
+ question: "How is this different from Canny, Productboard, or Featurebase?",
118
+ answer:
119
+ "Those products are stronger for long-running feedback portals, roadmaps, and voting. This tool is lighter and focuses on turning community launch comments into GTM learning assets.",
120
+ },
121
+ {
122
+ question: "Can I put these results directly into backlog?",
123
+ answer:
124
+ "Not directly. The report gives candidates, evidence counts, and next actions, but you should still review original comments and product strategy.",
125
+ },
126
+ {
127
+ question: "Can this help invite beta users?",
128
+ answer:
129
+ "Yes, as a shortlist. Final outreach should stay manual, especially to avoid mass-DM behavior.",
130
+ },
131
+ ],
132
+ ctaHint:
133
+ "After organizing community feedback, turn one high-quality comment into a user interview record or rewrite the content angles for platform-specific follow-up.",
134
+ ctaPrimary: "Structure one user interview",
135
+ ctaSecondary: "Adapt follow-up content",
136
+ },
137
+ widget: {
138
+ formTitle: "Feedback brief",
139
+ formHint:
140
+ "Paste real comments and keep usernames or source context when possible. The more specific the input, the more useful the beta leads, FAQ, and backlog candidates become.",
141
+ productNameLabel: "Product name",
142
+ productNamePlaceholder: "Tomako",
143
+ sourceLabel: "Main source",
144
+ productContextLabel: "Product context",
145
+ productContextPlaceholder:
146
+ "Tomako helps indie founders turn product launches, community feedback, and growth actions into an executable GTM workflow.",
147
+ commentsLabel: "Paste comments, DMs, or trial feedback",
148
+ commentsPlaceholder:
149
+ "@founder42: I like the idea, but I already use Notion and Canny. How is this different?\n\n@maker_jane: Would love export to Linear. I would try the beta if it handles Reddit comments.\n\nanonymous: Pricing as a subscription makes me hesitate unless it helps me update the landing page directly.",
150
+ goalLabel: "Goal for this pass",
151
+ generate: "Organize feedback",
152
+ status: {
153
+ idle: "Waiting for comments",
154
+ done: "Feedback organized",
155
+ error: "Needs clearer input",
156
+ },
157
+ previewItems: [
158
+ "Comments",
159
+ "Signals",
160
+ "Beta",
161
+ "The main feedback theme will appear here",
162
+ "The strongest evidence comment will appear here",
163
+ "The report will suggest the next GTM action",
164
+ ],
165
+ sources: {
166
+ mixed: "Mixed sources",
167
+ reddit: "Reddit",
168
+ indieHackers: "Indie Hackers",
169
+ hackerNews: "Hacker News",
170
+ productHunt: "Product Hunt",
171
+ x: "X",
172
+ discord: "Discord",
173
+ },
174
+ goals: {
175
+ launchLearning: "Post-launch learning",
176
+ betaRecruiting: "Invite beta users",
177
+ roadmap: "Organize product backlog",
178
+ landingPage: "Improve landing page / FAQ",
179
+ },
180
+ errors: {
181
+ validation: {
182
+ title: "Add the minimum feedback brief first",
183
+ body: "Add product context and at least two specific comments so the tool can create useful clusters, beta candidates, and next actions.",
184
+ },
185
+ weakInput: {
186
+ title: "Paste more realistic community feedback",
187
+ body: "The current input looks like placeholder text, too-short text, or a single comment. Paste at least two comments and keep the user's context when possible.",
188
+ },
189
+ },
190
+ resultReady: "Community feedback learning report generated",
191
+ copied: "Copied",
192
+ copy: "Copy Markdown",
193
+ download: "Download",
194
+ reset: "Reset",
195
+ totalComments: "Comments",
196
+ highSignals: "High signals",
197
+ betaCandidates: "Beta leads",
198
+ categories: "Feedback clusters",
199
+ signalCount: "{count} signals",
200
+ inviteShortlist: "Beta invite shortlist",
201
+ emptyInvite:
202
+ "No strong beta candidate yet. Add usernames, trial intent, or specific workflow context.",
203
+ contentAngles: "Build-in-public material",
204
+ backlog: "Backlog candidates",
205
+ faq: "Landing page FAQ candidates",
206
+ objections: "Objection handling",
207
+ emptyObjections:
208
+ "No clear objections yet. Comments about confusion, concern, or alternatives are especially useful here.",
209
+ reviewChecklist: "Missing info and human review",
210
+ confidence: {
211
+ low: "Low evidence",
212
+ medium: "Medium evidence",
213
+ high: "High evidence",
214
+ },
215
+ },
216
+ } as const;
217
+
218
+ export default communityFeedbackInbox;