create-auto-app 0.2.3 → 0.3.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 (320) hide show
  1. package/dist/index.js +5 -0
  2. package/dist/index.js.map +1 -1
  3. package/package.json +4 -3
  4. package/templates/.gitkeep +0 -0
  5. package/templates/shopping-app/.context/schema.json +11 -51
  6. package/templates/shopping-app/.context/server/server/package.json +26 -0
  7. package/templates/shopping-app/.context/server/server/scripts/generate-schema.ts +34 -0
  8. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/commands.ts +8 -0
  9. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/decide.specs.ts +46 -0
  10. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/decide.ts +33 -0
  11. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/events.ts +10 -0
  12. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/evolve.ts +28 -0
  13. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/handle.ts +24 -0
  14. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/mutation.resolver.ts +25 -0
  15. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/register.ts +7 -0
  16. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/state.ts +47 -0
  17. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/creates-a-chat-session-/react.specs.ts +51 -0
  18. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/creates-a-chat-session-/react.ts +43 -0
  19. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/creates-a-chat-session-/register.ts +24 -0
  20. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/commands.ts +8 -0
  21. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/decide.specs.ts +38 -0
  22. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/decide.ts +33 -0
  23. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/events.ts +10 -0
  24. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/evolve.ts +28 -0
  25. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/handle.ts +24 -0
  26. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/mutation.resolver.ts +25 -0
  27. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/register.ts +7 -0
  28. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/state.ts +47 -0
  29. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/commands.ts +8 -0
  30. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/decide.specs.ts +61 -0
  31. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/decide.ts +35 -0
  32. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/events.ts +9 -0
  33. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/evolve.ts +28 -0
  34. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/handle.ts +49 -0
  35. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/mutation.resolver.ts +25 -0
  36. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/register.ts +7 -0
  37. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/state.ts +47 -0
  38. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/projection.specs.ts +94 -0
  39. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/projection.ts +37 -0
  40. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/query.resolver.ts +56 -0
  41. package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/state.ts +4 -0
  42. package/templates/shopping-app/.context/server/server/src/domain/shared/ReadModel.ts +26 -0
  43. package/templates/shopping-app/{server/src/domain/shared/index.d.ts → .context/server/server/src/domain/shared/index.ts} +0 -1
  44. package/templates/shopping-app/{server/src/domain/shared/reactorSpecification.js → .context/server/server/src/domain/shared/reactorSpecification.ts} +116 -22
  45. package/templates/shopping-app/.context/server/server/src/domain/shared/sendCommand.ts +21 -0
  46. package/templates/shopping-app/{server/src/domain/shared/types.d.ts → .context/server/server/src/domain/shared/types.ts} +17 -5
  47. package/templates/shopping-app/.context/server/server/src/server.ts +43 -0
  48. package/templates/shopping-app/{server/src/utils/index.d.ts → .context/server/server/src/utils/index.ts} +0 -1
  49. package/templates/shopping-app/{server/src/utils/loadProjections.js → .context/server/server/src/utils/loadProjections.ts} +11 -6
  50. package/templates/shopping-app/.context/server/server/src/utils/loadRegisterFiles.ts +41 -0
  51. package/templates/shopping-app/{server/src/utils/loadResolvers.js → .context/server/server/src/utils/loadResolvers.ts} +16 -7
  52. package/templates/shopping-app/.context/server/server/tsconfig.json +13 -0
  53. package/templates/shopping-app/.context/server/server/vitest.config.ts +7 -0
  54. package/templates/shopping-app/auto.config.ts +78 -45
  55. package/templates/shopping-app/client/src/App.tsx +13 -13
  56. package/templates/shopping-app/client/src/components/molecules/QuantitySelector.tsx +4 -4
  57. package/templates/shopping-app/client/src/components/molecules/ShoppingCriteriaForm.tsx +4 -4
  58. package/templates/shopping-app/client/src/components/molecules/SuggestedItemCard.tsx +6 -6
  59. package/templates/shopping-app/client/src/components/organisms/AssistantChatInterface.tsx +3 -3
  60. package/templates/shopping-app/client/src/components/organisms/PageHeader.tsx +2 -3
  61. package/templates/shopping-app/client/src/components/organisms/SuggestedItemsList.tsx +3 -3
  62. package/templates/shopping-app/client/src/index.css +10 -14
  63. package/templates/shopping-app/client/src/pages/AssistantChatPage.tsx +4 -4
  64. package/templates/shopping-app/client/src/pages/SuggestedItemsPage.tsx +4 -4
  65. package/templates/shopping-app/example-integrations/product-catalogue/src/product-catalogue-integration.ts +122 -115
  66. package/templates/shopping-app/flows/shopping-assistant.flow.ts +0 -1
  67. package/templates/shopping-app/package.json +13 -10
  68. package/templates/shopping-app/server/package.json +1 -1
  69. package/templates/shopping-app/.env +0 -8
  70. package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-build.log +0 -4
  71. package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-format.log +0 -12
  72. package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-lint.log +0 -4
  73. package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-test.log +0 -12
  74. package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-type-check.log +0 -5
  75. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.d.ts +0 -23
  76. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.d.ts.map +0 -1
  77. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.js +0 -41
  78. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.js.map +0 -1
  79. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.d.ts +0 -2
  80. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.d.ts.map +0 -1
  81. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.js +0 -2
  82. package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.js.map +0 -1
  83. package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/eslint +0 -21
  84. package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/jiti +0 -21
  85. package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/msw +0 -21
  86. package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/tsc +0 -21
  87. package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/tsserver +0 -21
  88. package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/vite +0 -21
  89. package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/vitest +0 -21
  90. package/templates/shopping-app/example-integrations/cart/.turbo/turbo-build.log +0 -4
  91. package/templates/shopping-app/example-integrations/cart/.turbo/turbo-format.log +0 -12
  92. package/templates/shopping-app/example-integrations/cart/.turbo/turbo-lint.log +0 -5
  93. package/templates/shopping-app/example-integrations/cart/.turbo/turbo-test.log +0 -12
  94. package/templates/shopping-app/example-integrations/cart/.turbo/turbo-type-check.log +0 -5
  95. package/templates/shopping-app/example-integrations/cart/dist/cart-integration.d.ts +0 -30
  96. package/templates/shopping-app/example-integrations/cart/dist/cart-integration.d.ts.map +0 -1
  97. package/templates/shopping-app/example-integrations/cart/dist/cart-integration.js +0 -134
  98. package/templates/shopping-app/example-integrations/cart/dist/cart-integration.js.map +0 -1
  99. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.d.ts +0 -3
  100. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.d.ts.map +0 -1
  101. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.js +0 -149
  102. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.js.map +0 -1
  103. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.d.ts +0 -8
  104. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.d.ts.map +0 -1
  105. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.js +0 -6
  106. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.js.map +0 -1
  107. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.d.ts +0 -123
  108. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.d.ts.map +0 -1
  109. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.js +0 -3
  110. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.js.map +0 -1
  111. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.d.ts +0 -46
  112. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.d.ts.map +0 -1
  113. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.js +0 -285
  114. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.js.map +0 -1
  115. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.d.ts +0 -13
  116. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.d.ts.map +0 -1
  117. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.js +0 -6
  118. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.js.map +0 -1
  119. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.d.ts +0 -19
  120. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.d.ts.map +0 -1
  121. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.js +0 -15
  122. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.js.map +0 -1
  123. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.d.ts +0 -18
  124. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.d.ts.map +0 -1
  125. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.js +0 -58
  126. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.js.map +0 -1
  127. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.d.ts +0 -34
  128. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.d.ts.map +0 -1
  129. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.js +0 -89
  130. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.js.map +0 -1
  131. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.d.ts +0 -34
  132. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.d.ts.map +0 -1
  133. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.js +0 -115
  134. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.js.map +0 -1
  135. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.d.ts +0 -79
  136. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.d.ts.map +0 -1
  137. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.js +0 -3
  138. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.js.map +0 -1
  139. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.d.ts +0 -2
  140. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.d.ts.map +0 -1
  141. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.js +0 -3
  142. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.js.map +0 -1
  143. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.d.ts +0 -158
  144. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.d.ts.map +0 -1
  145. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.js +0 -3
  146. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.js.map +0 -1
  147. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.d.ts +0 -382
  148. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.d.ts.map +0 -1
  149. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.js +0 -68
  150. package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.js.map +0 -1
  151. package/templates/shopping-app/example-integrations/cart/dist/index.d.ts +0 -2
  152. package/templates/shopping-app/example-integrations/cart/dist/index.d.ts.map +0 -1
  153. package/templates/shopping-app/example-integrations/cart/dist/index.js +0 -2
  154. package/templates/shopping-app/example-integrations/cart/dist/index.js.map +0 -1
  155. package/templates/shopping-app/example-integrations/cart/node_modules/.bin/eslint +0 -21
  156. package/templates/shopping-app/example-integrations/cart/node_modules/.bin/jiti +0 -21
  157. package/templates/shopping-app/example-integrations/cart/node_modules/.bin/msw +0 -21
  158. package/templates/shopping-app/example-integrations/cart/node_modules/.bin/tsc +0 -21
  159. package/templates/shopping-app/example-integrations/cart/node_modules/.bin/tsserver +0 -21
  160. package/templates/shopping-app/example-integrations/cart/node_modules/.bin/vitest +0 -21
  161. package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-build.log +0 -4
  162. package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-format.log +0 -10
  163. package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-lint.log +0 -4
  164. package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-test.log +0 -12
  165. package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-type-check.log +0 -4
  166. package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.d.ts +0 -18
  167. package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.d.ts.map +0 -1
  168. package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.js +0 -28
  169. package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.js.map +0 -1
  170. package/templates/shopping-app/example-integrations/cart-api/dist/index.d.ts +0 -4
  171. package/templates/shopping-app/example-integrations/cart-api/dist/index.d.ts.map +0 -1
  172. package/templates/shopping-app/example-integrations/cart-api/dist/index.js +0 -49
  173. package/templates/shopping-app/example-integrations/cart-api/dist/index.js.map +0 -1
  174. package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.d.ts +0 -4
  175. package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.d.ts.map +0 -1
  176. package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.js +0 -261
  177. package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.js.map +0 -1
  178. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/nodemon +0 -21
  179. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/swagger-jsdoc +0 -21
  180. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node +0 -21
  181. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-cwd +0 -21
  182. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-esm +0 -21
  183. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-script +0 -21
  184. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-transpile-only +0 -21
  185. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-script +0 -21
  186. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/tsc +0 -21
  187. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/tsserver +0 -21
  188. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/tsx +0 -21
  189. package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/vitest +0 -21
  190. package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-build.log +0 -4
  191. package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-format.log +0 -12
  192. package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-lint.log +0 -5
  193. package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-test.log +0 -12
  194. package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-type-check.log +0 -5
  195. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.d.ts +0 -3
  196. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.d.ts.map +0 -1
  197. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.js +0 -149
  198. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.js.map +0 -1
  199. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.d.ts +0 -8
  200. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.d.ts.map +0 -1
  201. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.js +0 -6
  202. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.js.map +0 -1
  203. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.d.ts +0 -123
  204. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.d.ts.map +0 -1
  205. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.js +0 -3
  206. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.js.map +0 -1
  207. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.d.ts +0 -46
  208. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.d.ts.map +0 -1
  209. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.js +0 -285
  210. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.js.map +0 -1
  211. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.d.ts +0 -13
  212. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.d.ts.map +0 -1
  213. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.js +0 -6
  214. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.js.map +0 -1
  215. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.d.ts +0 -19
  216. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.d.ts.map +0 -1
  217. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.js +0 -15
  218. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.js.map +0 -1
  219. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.d.ts +0 -18
  220. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.d.ts.map +0 -1
  221. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.js +0 -58
  222. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.js.map +0 -1
  223. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.d.ts +0 -34
  224. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.d.ts.map +0 -1
  225. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.js +0 -89
  226. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.js.map +0 -1
  227. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.d.ts +0 -34
  228. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.d.ts.map +0 -1
  229. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.js +0 -115
  230. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.js.map +0 -1
  231. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.d.ts +0 -79
  232. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.d.ts.map +0 -1
  233. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.js +0 -3
  234. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.js.map +0 -1
  235. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.d.ts +0 -2
  236. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.d.ts.map +0 -1
  237. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.js +0 -3
  238. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.js.map +0 -1
  239. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.d.ts +0 -115
  240. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.d.ts.map +0 -1
  241. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.js +0 -3
  242. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.js.map +0 -1
  243. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.d.ts +0 -206
  244. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.d.ts.map +0 -1
  245. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.js +0 -53
  246. package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.js.map +0 -1
  247. package/templates/shopping-app/example-integrations/product-catalogue/dist/index.d.ts +0 -2
  248. package/templates/shopping-app/example-integrations/product-catalogue/dist/index.d.ts.map +0 -1
  249. package/templates/shopping-app/example-integrations/product-catalogue/dist/index.js +0 -2
  250. package/templates/shopping-app/example-integrations/product-catalogue/dist/index.js.map +0 -1
  251. package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.d.ts +0 -32
  252. package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.d.ts.map +0 -1
  253. package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.js +0 -163
  254. package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.js.map +0 -1
  255. package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/eslint +0 -21
  256. package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/jiti +0 -21
  257. package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/msw +0 -21
  258. package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/tsc +0 -21
  259. package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/tsserver +0 -21
  260. package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/vitest +0 -21
  261. package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-build.log +0 -4
  262. package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-format.log +0 -10
  263. package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-lint.log +0 -5
  264. package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-test.log +0 -13
  265. package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-type-check.log +0 -5
  266. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.d.ts +0 -10
  267. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.d.ts.map +0 -1
  268. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.js +0 -75
  269. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.js.map +0 -1
  270. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.d.ts +0 -4
  271. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.d.ts.map +0 -1
  272. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.js +0 -49
  273. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.js.map +0 -1
  274. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.d.ts +0 -4
  275. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.d.ts.map +0 -1
  276. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.js +0 -170
  277. package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.js.map +0 -1
  278. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/nodemon +0 -21
  279. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/swagger-jsdoc +0 -21
  280. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node +0 -21
  281. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-cwd +0 -21
  282. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-esm +0 -21
  283. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-script +0 -21
  284. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-transpile-only +0 -21
  285. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-script +0 -21
  286. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/tsc +0 -21
  287. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/tsserver +0 -21
  288. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/tsx +0 -21
  289. package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/vitest +0 -21
  290. package/templates/shopping-app/pnpm-workspace.yaml +0 -2
  291. package/templates/shopping-app/server/src/domain/shared/ReadModel.d.ts +0 -10
  292. package/templates/shopping-app/server/src/domain/shared/ReadModel.d.ts.map +0 -1
  293. package/templates/shopping-app/server/src/domain/shared/ReadModel.js +0 -19
  294. package/templates/shopping-app/server/src/domain/shared/ReadModel.js.map +0 -1
  295. package/templates/shopping-app/server/src/domain/shared/index.d.ts.map +0 -1
  296. package/templates/shopping-app/server/src/domain/shared/index.js +0 -5
  297. package/templates/shopping-app/server/src/domain/shared/index.js.map +0 -1
  298. package/templates/shopping-app/server/src/domain/shared/reactorSpecification.d.ts +0 -56
  299. package/templates/shopping-app/server/src/domain/shared/reactorSpecification.d.ts.map +0 -1
  300. package/templates/shopping-app/server/src/domain/shared/reactorSpecification.js.map +0 -1
  301. package/templates/shopping-app/server/src/domain/shared/sendCommand.d.ts +0 -7
  302. package/templates/shopping-app/server/src/domain/shared/sendCommand.d.ts.map +0 -1
  303. package/templates/shopping-app/server/src/domain/shared/sendCommand.js +0 -16
  304. package/templates/shopping-app/server/src/domain/shared/sendCommand.js.map +0 -1
  305. package/templates/shopping-app/server/src/domain/shared/types.d.ts.map +0 -1
  306. package/templates/shopping-app/server/src/domain/shared/types.js +0 -40
  307. package/templates/shopping-app/server/src/domain/shared/types.js.map +0 -1
  308. package/templates/shopping-app/server/src/utils/index.d.ts.map +0 -1
  309. package/templates/shopping-app/server/src/utils/index.js +0 -4
  310. package/templates/shopping-app/server/src/utils/index.js.map +0 -1
  311. package/templates/shopping-app/server/src/utils/loadProjections.d.ts +0 -3
  312. package/templates/shopping-app/server/src/utils/loadProjections.d.ts.map +0 -1
  313. package/templates/shopping-app/server/src/utils/loadProjections.js.map +0 -1
  314. package/templates/shopping-app/server/src/utils/loadRegisterFiles.d.ts +0 -6
  315. package/templates/shopping-app/server/src/utils/loadRegisterFiles.d.ts.map +0 -1
  316. package/templates/shopping-app/server/src/utils/loadRegisterFiles.js +0 -26
  317. package/templates/shopping-app/server/src/utils/loadRegisterFiles.js.map +0 -1
  318. package/templates/shopping-app/server/src/utils/loadResolvers.d.ts +0 -5
  319. package/templates/shopping-app/server/src/utils/loadResolvers.d.ts.map +0 -1
  320. package/templates/shopping-app/server/src/utils/loadResolvers.js.map +0 -1
@@ -1,12 +1,34 @@
1
1
  import { on, dispatch, fold } from '@auto-engineer/cli';
2
2
  import type { Command, Event } from '@auto-engineer/message-bus';
3
3
  import { type ExportSchemaCommand, type SchemaExportedEvent, type SchemaExportFailedEvent } from '@auto-engineer/flow';
4
- import { type GenerateServerCommand, type ServerGeneratedEvent, type ServerGenerationFailedEvent } from '@auto-engineer/server-generator-apollo-emmett';
5
- import { type ImplementServerCommand, type ServerImplementedEvent, type ServerImplementationFailedEvent } from '@auto-engineer/server-implementer';
6
- import { type CheckTypesCommand, type TypeCheckPassedEvent, type TypeCheckFailedEvent, CheckTestsCommand, CheckLintCommand } from '@auto-engineer/server-checks';
4
+ import {
5
+ type GenerateServerCommand,
6
+ type ServerGeneratedEvent,
7
+ type ServerGenerationFailedEvent,
8
+ } from '@auto-engineer/server-generator-apollo-emmett';
9
+ import {
10
+ type ImplementServerCommand,
11
+ type ServerImplementedEvent,
12
+ type ServerImplementationFailedEvent,
13
+ } from '@auto-engineer/server-implementer';
14
+ import {
15
+ type CheckTypesCommand,
16
+ type TypeCheckPassedEvent,
17
+ type TypeCheckFailedEvent,
18
+ CheckTestsCommand,
19
+ CheckLintCommand,
20
+ } from '@auto-engineer/server-checks';
7
21
  import { CheckClientCommand } from '@auto-engineer/frontend-checks';
8
- import { type GenerateIACommand, type IAGeneratedEvent, type IAGenerationFailedEvent } from '@auto-engineer/information-architect';
9
- import { type ImplementClientCommand, type ClientImplementedEvent, type ClientImplementationFailedEvent } from '@auto-engineer/frontend-implementer';
22
+ import {
23
+ type GenerateIACommand,
24
+ type IAGeneratedEvent,
25
+ type IAGenerationFailedEvent,
26
+ } from '@auto-engineer/information-architect';
27
+ import {
28
+ type ImplementClientCommand,
29
+ type ClientImplementedEvent,
30
+ type ClientImplementationFailedEvent,
31
+ } from '@auto-engineer/frontend-implementer';
10
32
 
11
33
  // Plugin configuration
12
34
  export default {
@@ -52,57 +74,68 @@ const pipelineStatus = fold<string, Event>(
52
74
  default:
53
75
  return state;
54
76
  }
55
- }
77
+ },
56
78
  );
57
79
 
58
80
  // State: Track last error
59
- const lastError = fold<any, Event>(
60
- '*',
61
- (state = null, event) => {
62
- if (event.type.endsWith('Failed') || event.type.endsWith('Error')) {
63
- return {
64
- type: event.type,
65
- data: event.data,
66
- timestamp: new Date().toISOString(),
67
- };
68
- }
69
- return state;
81
+ const lastError = fold<any, Event>('*', (state = null, event) => {
82
+ if (event.type.endsWith('Failed') || event.type.endsWith('Error')) {
83
+ return {
84
+ type: event.type,
85
+ data: event.data,
86
+ timestamp: new Date().toISOString(),
87
+ };
70
88
  }
71
- );
89
+ return state;
90
+ });
72
91
 
73
92
  // State: Track completed operations
74
- const completedOperations = fold<string[], Event>(
75
- '*',
76
- (state = [], event) => {
77
- if (event.type.endsWith('Passed') || event.type.endsWith('Generated') || event.type.endsWith('Implemented')) {
78
- return [...state, event.type];
79
- }
80
- return state;
93
+ const completedOperations = fold<string[], Event>('*', (state = [], event) => {
94
+ if (event.type.endsWith('Passed') || event.type.endsWith('Generated') || event.type.endsWith('Implemented')) {
95
+ return [...state, event.type];
81
96
  }
82
- );
97
+ return state;
98
+ });
83
99
 
84
- on<SchemaExportedEvent>('SchemaExported', (event) => dispatch<GenerateServerCommand>(
85
- { type: 'GenerateServer', data: { schemaPath: event.data.outputPath, destination: event.data.outputPath.replace('/schema.json', '/server') } }
86
- ));
100
+ on<SchemaExportedEvent>('SchemaExported', (event) =>
101
+ dispatch<GenerateServerCommand>({
102
+ type: 'GenerateServer',
103
+ data: { schemaPath: event.data.outputPath, destination: event.data.outputPath.replace('/schema.json', '/server') },
104
+ }),
105
+ );
87
106
 
88
- on<ServerGeneratedEvent>('ServerGenerated', (event) => dispatch.parallel<ImplementServerCommand | GenerateIACommand>([
89
- { type: 'ImplementServer', data: { serverDirectory: event.data.serverDir } },
90
- { type: 'GenerateIA', data: { outputDir: event.data.destination + '/.context', flowFiles: [event.data.schemaPath] } },
91
- ]));
107
+ on<ServerGeneratedEvent>('ServerGenerated', (event) =>
108
+ dispatch.parallel<ImplementServerCommand | GenerateIACommand>([
109
+ { type: 'ImplementServer', data: { serverDirectory: event.data.serverDir } },
110
+ {
111
+ type: 'GenerateIA',
112
+ data: { outputDir: event.data.destination + '/.context', flowFiles: [event.data.schemaPath] },
113
+ },
114
+ ]),
115
+ );
92
116
 
93
- on<ServerImplementedEvent>('ServerImplemented', (event) => dispatch.parallel<CheckTypesCommand | CheckTestsCommand | CheckLintCommand>([
94
- { type: 'CheckTypes', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } },
95
- { type: 'CheckTests', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } },
96
- { type: 'CheckLint', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } }
97
- ]));
117
+ on<ServerImplementedEvent>('ServerImplemented', (event) =>
118
+ dispatch.parallel<CheckTypesCommand | CheckTestsCommand | CheckLintCommand>([
119
+ { type: 'CheckTypes', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } },
120
+ { type: 'CheckTests', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } },
121
+ { type: 'CheckLint', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } },
122
+ ]),
123
+ );
98
124
 
99
- on<IAGeneratedEvent>('IAGenerated', (event) => dispatch<ImplementClientCommand>(
100
- { type: 'ImplementClient', data: { projectDir: event.data.outputDir.replace('/.context', '/client'), iaSchemeDir: event.data.outputDir, designSystemPath: './.context/design-system.md' } }
101
- ));
125
+ on<IAGeneratedEvent>('IAGenerated', (event) =>
126
+ dispatch<ImplementClientCommand>({
127
+ type: 'ImplementClient',
128
+ data: {
129
+ projectDir: event.data.outputDir.replace('/.context', '/client'),
130
+ iaSchemeDir: event.data.outputDir,
131
+ designSystemPath: './.context/design-system.md',
132
+ },
133
+ }),
134
+ );
102
135
 
103
- on<ClientImplementedEvent>('ClientImplemented', (event) => dispatch<CheckClientCommand>(
104
- { type: 'CheckClient', data: { clientDirectory: './client', skipBrowserChecks: true } }
105
- ));
136
+ on<ClientImplementedEvent>('ClientImplemented', (event) =>
137
+ dispatch<CheckClientCommand>({ type: 'CheckClient', data: { clientDirectory: './client', skipBrowserChecks: true } }),
138
+ );
106
139
 
107
140
  // on<ClientImplementationFailedEvent>('ClientImplementationFailed', (event) =>
108
141
  // dispatch<ImplementClientCommand>({
@@ -143,4 +176,4 @@ on<ClientImplementedEvent>('ClientImplemented', (event) => dispatch<CheckClientC
143
176
  // // Reset retry count on success
144
177
  // on<TypeCheckPassedEvent>('TypeCheckPassed', () => {
145
178
  // retryCount = 0;
146
- // });
179
+ // });
@@ -3,18 +3,18 @@ import { BrowserRouter, Route, Routes } from 'react-router-dom';
3
3
  import { apolloClient } from '@/apolloClient';
4
4
  import { Index } from '@/pages/Index';
5
5
  import { NotFound } from '@/pages/NotFound';
6
- import { AssistantChatPage } from '@/pages/AssistantChatPage';
7
- import { SuggestedItemsPage } from '@/pages/SuggestedItemsPage';
6
+ import { AssistantChatPage } from '@/pages/AssistantChatPage';
7
+ import { SuggestedItemsPage } from '@/pages/SuggestedItemsPage';
8
8
 
9
9
  export const App = () => (
10
- <ApolloProvider client={apolloClient}>
11
- <BrowserRouter>
12
- <Routes>
13
- <Route path="/" element={<Index />} />
14
- <Route path="/" element={<AssistantChatPage />} />
15
- <Route path="/suggested-items/:sessionId" element={<SuggestedItemsPage />} />
16
- <Route path="*" element={<NotFound />} />
17
- </Routes>
18
- </BrowserRouter>
19
- </ApolloProvider>
20
- );
10
+ <ApolloProvider client={apolloClient}>
11
+ <BrowserRouter>
12
+ <Routes>
13
+ <Route path="/" element={<Index />} />
14
+ <Route path="/" element={<AssistantChatPage />} />
15
+ <Route path="/suggested-items/:sessionId" element={<SuggestedItemsPage />} />
16
+ <Route path="*" element={<NotFound />} />
17
+ </Routes>
18
+ </BrowserRouter>
19
+ </ApolloProvider>
20
+ );
@@ -1,8 +1,8 @@
1
- import { &lt;TextField&gt; } from "@/components/atoms/&lt;textfield&gt;";
2
- import { !!&lt;IconButton&gt; } from "@/components/atoms/!!&lt;iconbutton&gt;";
1
+ import { TextField } from '@/components/atoms/textfield';
2
+ import { IconButton } from '@/components/atoms/iconbutton';
3
3
 
4
4
  // Component for adjusting item quantities
5
5
 
6
6
  export function QuantitySelector() {
7
- return <div />;
8
- }
7
+ return <div />;
8
+ }
@@ -1,8 +1,8 @@
1
- import { &lt;TextField&gt; | Multiline } from "@/components/atoms/&lt;textfield&gt; | multiline";
2
- import { &lt;Button&gt; } from "@/components/atoms/&lt;button&gt;";
1
+ import { TextField } from '@/components/atoms/textfield';
2
+ import { Button } from '@/components/atoms/button';
3
3
 
4
4
  // Form for entering shopping criteria with examples and submission
5
5
 
6
6
  export function ShoppingCriteriaForm() {
7
- return <div />;
8
- }
7
+ return <div />;
8
+ }
@@ -1,10 +1,10 @@
1
- import { &lt;Card&gt; } from "@/components/atoms/&lt;card&gt;";
2
- import { &lt;CardHeader&gt; } from "@/components/atoms/&lt;cardheader&gt;";
3
- import { &lt;TextField&gt; } from "@/components/atoms/&lt;textfield&gt;";
4
- import { &lt;Button&gt; } from "@/components/atoms/&lt;button&gt;";
1
+ import { Card } from '@/components/atoms/card';
2
+ import { CardHeader } from '@/components/atoms/cardheader';
3
+ import { TextField } from '@/components/atoms/textfield';
4
+ import { Button } from '@/components/atoms/button';
5
5
 
6
6
  // Card displaying a suggested item with quantity selector and reason
7
7
 
8
8
  export function SuggestedItemCard() {
9
- return <div />;
10
- }
9
+ return <div />;
10
+ }
@@ -1,4 +1,4 @@
1
- import { ShoppingCriteriaForm } from "@/components/molecules/ShoppingCriteriaForm";
1
+ import { ShoppingCriteriaForm } from '@/components/molecules/ShoppingCriteriaForm';
2
2
 
3
3
  // Main interface for entering shopping criteria and starting a session
4
4
  // Specs:
@@ -10,5 +10,5 @@ import { ShoppingCriteriaForm } from "@/components/molecules/ShoppingCriteriaFor
10
10
  // - show the header on top of the page
11
11
 
12
12
  export function AssistantChatInterface() {
13
- return <div />;
14
- }
13
+ return <div />;
14
+ }
@@ -1,6 +1,5 @@
1
-
2
1
  // Header component shown on top of pages
3
2
 
4
3
  export function PageHeader() {
5
- return <div />;
6
- }
4
+ return <div />;
5
+ }
@@ -1,4 +1,4 @@
1
- import { SuggestedItemCard } from "@/components/molecules/SuggestedItemCard";
1
+ import { SuggestedItemCard } from '@/components/molecules/SuggestedItemCard';
2
2
 
3
3
  // Display suggested items with selection and cart functionality
4
4
  // Specs:
@@ -11,5 +11,5 @@ import { SuggestedItemCard } from "@/components/molecules/SuggestedItemCard";
11
11
  // - provide feedback when items are added
12
12
 
13
13
  export function SuggestedItemsList() {
14
- return <div />;
15
- }
14
+ return <div />;
15
+ }
@@ -3,8 +3,7 @@
3
3
  @tailwind utilities;
4
4
 
5
5
  @layer base {
6
- :root {
7
-
6
+ :root {
8
7
  --radius: 0.5rem;
9
8
 
10
9
  --background: 0 0% 100%;
@@ -70,11 +69,9 @@
70
69
  --sidebar-border: 240 6% 90%;
71
70
 
72
71
  --sidebar-ring: 240 6% 10%;
72
+ }
73
73
 
74
- }
75
-
76
- .dark {
77
-
74
+ .dark {
78
75
  --background: 240 6% 10%;
79
76
 
80
77
  --foreground: 0 0% 98%;
@@ -138,16 +135,15 @@
138
135
  --sidebar-border: 240 5% 34%;
139
136
 
140
137
  --sidebar-ring: 240 5% 84%;
141
-
142
- }
138
+ }
143
139
  }
144
140
 
145
141
  @layer base {
146
- * {
147
- @apply border-border;
148
- }
142
+ * {
143
+ @apply border-border;
144
+ }
149
145
 
150
- body {
151
- @apply bg-background text-foreground;
152
- }
146
+ body {
147
+ @apply bg-background text-foreground;
148
+ }
153
149
  }
@@ -1,8 +1,8 @@
1
- import { PageHeader } from "@/components/organisms/PageHeader";
2
- import { AssistantChatInterface } from "@/components/organisms/AssistantChatInterface";
1
+ import { PageHeader } from '@/components/organisms/PageHeader';
2
+ import { AssistantChatInterface } from '@/components/organisms/AssistantChatInterface';
3
3
 
4
4
  // Main page where users enter shopping criteria
5
5
 
6
6
  export function AssistantChatPage() {
7
- return <div />;
8
- }
7
+ return <div />;
8
+ }
@@ -1,8 +1,8 @@
1
- import { PageHeader } from "@/components/organisms/PageHeader";
2
- import { SuggestedItemsList } from "@/components/organisms/SuggestedItemsList";
1
+ import { PageHeader } from '@/components/organisms/PageHeader';
2
+ import { SuggestedItemsList } from '@/components/organisms/SuggestedItemsList';
3
3
 
4
4
  // Page displaying AI-suggested items for the shopping criteria
5
5
 
6
6
  export function SuggestedItemsPage() {
7
- return <div />;
8
- }
7
+ return <div />;
8
+ }
@@ -38,7 +38,7 @@ type ProductCatalogQueries = {
38
38
  ProductDetails: (params: { id: string }) => Promise<ProductDetails>;
39
39
  };
40
40
 
41
- export const ProductCatalog: Integration<'product-catalog', ProductCatalogQueries> = {
41
+ const _ProductCatalog: Integration<'product-catalog', ProductCatalogQueries> = {
42
42
  __brand: 'Integration' as const,
43
43
  type: 'product-catalog' as const,
44
44
  name: 'product-catalog',
@@ -47,9 +47,7 @@ export const ProductCatalog: Integration<'product-catalog', ProductCatalogQuerie
47
47
  // GET /api/products
48
48
  Products: async (): Promise<Products> => {
49
49
  try {
50
- const res = await productClient.get<GetApiProductsResponses, unknown, false>({
51
- url: '/api/products',
52
- });
50
+ const res = await productClient.get<GetApiProductsResponses, unknown, false>({ url: '/api/products' });
53
51
  if (res.error !== undefined) console.error('Failed to fetch products:', res.error);
54
52
  return { type: 'Products', data: { products: (res.data as Product[]) ?? [] } };
55
53
  } catch (err) {
@@ -96,9 +94,7 @@ export const ProductCatalog: Integration<'product-catalog', ProductCatalogQuerie
96
94
  path: { id },
97
95
  });
98
96
  if (res.response.status === 404 || res.error !== undefined) {
99
- if (res.response.status !== 404) {
100
- console.error(`Error fetching product "${id}":`, res.error);
101
- }
97
+ if (res.response.status !== 404) console.error(`Error fetching product "${id}":`, res.error);
102
98
  return { type: 'ProductDetails', data: { product: null } };
103
99
  }
104
100
  return { type: 'ProductDetails', data: { product: res.data ?? null } };
@@ -110,116 +106,127 @@ export const ProductCatalog: Integration<'product-catalog', ProductCatalogQuerie
110
106
  },
111
107
  };
112
108
 
113
- // ---------- MCP tools ----------
114
-
115
- // All products
116
- registerTool<Record<string, unknown>>(
117
- 'PRODUCT_CATALOGUE_PRODUCTS',
118
- {
119
- title: 'Get All Products',
120
- description: 'Fetches all products from the product catalog',
121
- inputSchema: {},
122
- schema: zGetApiProductsResponse,
123
- schemaName: 'GetApiProductsResponse',
124
- schemaDescription: 'Array of ProductCatalogItem',
125
- },
126
- async () => {
127
- const queries = ProductCatalog.Queries as ProductCatalogQueries;
128
- if (queries?.Products == null) {
129
- return {
130
- content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.Products is not available' }],
131
- isError: true,
132
- };
133
- }
134
- const productsQuery = queries.Products;
135
- const result = await productsQuery();
136
- return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.products, null, 2) }] };
137
- },
138
- );
109
+ // ---------- Lazy MCP tool registration ----------
110
+ let _toolsRegistered = false;
139
111
 
140
- // By category
141
- interface ProductsByCategoryParams extends Record<string, unknown> {
142
- category: string;
143
- }
144
- registerTool<ProductsByCategoryParams>(
145
- 'PRODUCT_CATALOGUE_PRODUCTS_BY_CATEGORY',
146
- {
147
- title: 'Get Products by Category',
148
- description: 'Fetches products from a specific category',
149
- inputSchema: { category: z.string().min(1, 'Category is required') },
150
- schema: zGetApiProductsCategoryByCategoryResponse,
151
- schemaName: 'GetApiProductsCategoryByCategoryResponse',
152
- schemaDescription: 'Array of ProductCatalogItem',
153
- },
154
- async ({ category }) => {
155
- const queries = ProductCatalog.Queries as ProductCatalogQueries;
156
- if (queries?.ProductsByCategory == null) {
157
- return {
158
- content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.ProductsByCategory is not available' }],
159
- isError: true,
160
- };
161
- }
162
- const categoryQuery = queries.ProductsByCategory;
163
- const result = await categoryQuery({ category });
164
- return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.products, null, 2) }] };
165
- },
166
- );
112
+ function registerProductCatalogToolsOnce(): void {
113
+ if (_toolsRegistered) return;
114
+ _toolsRegistered = true;
167
115
 
168
- // Search
169
- interface ProductSearchParams extends Record<string, unknown> {
170
- query: string;
171
- }
172
- registerTool<ProductSearchParams>(
173
- 'PRODUCT_CATALOGUE_SEARCH',
174
- {
175
- title: 'Search Products',
176
- description: 'Search for products using a query string',
177
- inputSchema: { query: z.string().min(1, 'Search query is required') },
178
- schema: zGetApiProductsSearchResponse,
179
- schemaName: 'GetApiProductsSearchResponse',
180
- schemaDescription: 'Array of ProductCatalogItem',
181
- },
182
- async ({ query }) => {
183
- const queries = ProductCatalog.Queries as ProductCatalogQueries;
184
- if (queries?.ProductSearchResults == null) {
185
- return {
186
- content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.ProductSearchResults is not available' }],
187
- isError: true,
188
- };
189
- }
190
- const searchQuery = queries.ProductSearchResults;
191
- const result = await searchQuery({ query });
192
- return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.products, null, 2) }] };
193
- },
194
- );
116
+ // All products
117
+ registerTool<Record<string, unknown>>(
118
+ 'PRODUCT_CATALOGUE_PRODUCTS',
119
+ {
120
+ title: 'Get All Products',
121
+ description: 'Fetches all products from the product catalog',
122
+ inputSchema: {},
123
+ schema: zGetApiProductsResponse,
124
+ schemaName: 'GetApiProductsResponse',
125
+ schemaDescription: 'Array of ProductCatalogItem',
126
+ },
127
+ async () => {
128
+ const queries = _ProductCatalog.Queries as ProductCatalogQueries;
129
+ if (!queries?.Products) {
130
+ return {
131
+ content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.Products is not available' }],
132
+ isError: true,
133
+ };
134
+ }
135
+ const result = await queries.Products();
136
+ return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.products, null, 2) }] };
137
+ },
138
+ );
195
139
 
196
- // Details
197
- interface ProductDetailsParams extends Record<string, unknown> {
198
- id: string;
140
+ // By category
141
+ interface ProductsByCategoryParams extends Record<string, unknown> {
142
+ category: string;
143
+ }
144
+ registerTool<ProductsByCategoryParams>(
145
+ 'PRODUCT_CATALOGUE_PRODUCTS_BY_CATEGORY',
146
+ {
147
+ title: 'Get Products by Category',
148
+ description: 'Fetches products from a specific category',
149
+ inputSchema: { category: z.string().min(1, 'Category is required') },
150
+ schema: zGetApiProductsCategoryByCategoryResponse,
151
+ schemaName: 'GetApiProductsCategoryByCategoryResponse',
152
+ schemaDescription: 'Array of ProductCatalogItem',
153
+ },
154
+ async ({ category }) => {
155
+ const queries = _ProductCatalog.Queries as ProductCatalogQueries;
156
+ if (!queries?.ProductsByCategory) {
157
+ return {
158
+ content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.ProductsByCategory is not available' }],
159
+ isError: true,
160
+ };
161
+ }
162
+ const result = await queries.ProductsByCategory({ category });
163
+ return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.products, null, 2) }] };
164
+ },
165
+ );
166
+
167
+ // Search
168
+ interface ProductSearchParams extends Record<string, unknown> {
169
+ query: string;
170
+ }
171
+ registerTool<ProductSearchParams>(
172
+ 'PRODUCT_CATALOGUE_SEARCH',
173
+ {
174
+ title: 'Search Products',
175
+ description: 'Search for products using a query string',
176
+ inputSchema: { query: z.string().min(1, 'Search query is required') },
177
+ schema: zGetApiProductsSearchResponse,
178
+ schemaName: 'GetApiProductsSearchResponse',
179
+ schemaDescription: 'Array of ProductCatalogItem',
180
+ },
181
+ async ({ query }) => {
182
+ const queries = _ProductCatalog.Queries as ProductCatalogQueries;
183
+ if (!queries?.ProductSearchResults) {
184
+ return {
185
+ content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.ProductSearchResults is not available' }],
186
+ isError: true,
187
+ };
188
+ }
189
+ const result = await queries.ProductSearchResults({ query });
190
+ return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.products, null, 2) }] };
191
+ },
192
+ );
193
+
194
+ // Details
195
+ interface ProductDetailsParams extends Record<string, unknown> {
196
+ id: string;
197
+ }
198
+ registerTool<ProductDetailsParams>(
199
+ 'PRODUCT_CATALOGUE_PRODUCT_DETAILS',
200
+ {
201
+ title: 'Get Product Details',
202
+ description: 'Fetches detailed information about a specific product',
203
+ inputSchema: { id: z.string().min(1, 'Product ID is required') },
204
+ schema: zGetApiProductsByIdResponse,
205
+ schemaName: 'GetApiProductsByIdResponse',
206
+ schemaDescription: 'Single ProductCatalogItem',
207
+ },
208
+ async ({ id }) => {
209
+ const queries = _ProductCatalog.Queries as ProductCatalogQueries;
210
+ if (!queries?.ProductDetails) {
211
+ return {
212
+ content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.ProductDetails is not available' }],
213
+ isError: true,
214
+ };
215
+ }
216
+ const result = await queries.ProductDetails({ id });
217
+ if (result.data.product === null) {
218
+ return { content: [{ type: 'text' as const, text: `Product with ID "${id}" not found` }], isError: true };
219
+ }
220
+ return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.product, null, 2) }] };
221
+ },
222
+ );
199
223
  }
200
- registerTool<ProductDetailsParams>(
201
- 'PRODUCT_CATALOGUE_PRODUCT_DETAILS',
202
- {
203
- title: 'Get Product Details',
204
- description: 'Fetches detailed information about a specific product',
205
- inputSchema: { id: z.string().min(1, 'Product ID is required') },
206
- schema: zGetApiProductsByIdResponse,
207
- schemaName: 'GetApiProductsByIdResponse',
208
- schemaDescription: 'Single ProductCatalogItem',
209
- },
210
- async ({ id }) => {
211
- const queries = ProductCatalog.Queries as ProductCatalogQueries;
212
- if (queries?.ProductDetails == null) {
213
- return {
214
- content: [{ type: 'text' as const, text: 'ProductCatalog.Queries.ProductDetails is not available' }],
215
- isError: true,
216
- };
217
- }
218
- const detailsQuery = queries.ProductDetails;
219
- const result = await detailsQuery({ id });
220
- if (result.data.product === null) {
221
- return { content: [{ type: 'text' as const, text: `Product with ID "${id}" not found` }], isError: true };
222
- }
223
- return { content: [{ type: 'text' as const, text: JSON.stringify(result.data.product, null, 2) }] };
224
+
225
+ // registers tools on *first usage* of the integration
226
+ export const ProductCatalog: Integration<'product-catalog', ProductCatalogQueries> = new Proxy(_ProductCatalog, {
227
+ get(target, prop, receiver) {
228
+ // First touch of ProductCatalog triggers tool registration
229
+ registerProductCatalogToolsOnce();
230
+ return Reflect.get(target, prop, receiver);
224
231
  },
225
- );
232
+ });
@@ -19,7 +19,6 @@ import {
19
19
 
20
20
  import { AI, ProductCatalog, type DoChat, type ChatCompleted, type Products } from '../server/src/integrations';
21
21
 
22
-
23
22
  type ShoppingCriteriaEntered = Event<
24
23
  'ShoppingCriteriaEntered',
25
24
  {