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.
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/templates/.gitkeep +0 -0
- package/templates/shopping-app/.context/schema.json +11 -51
- package/templates/shopping-app/.context/server/server/package.json +26 -0
- package/templates/shopping-app/.context/server/server/scripts/generate-schema.ts +34 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/commands.ts +8 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/decide.specs.ts +46 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/decide.ts +33 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/events.ts +10 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/evolve.ts +28 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/handle.ts +24 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/mutation.resolver.ts +25 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/register.ts +7 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/accepts-items-and-adds-to-their-cart/state.ts +47 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/creates-a-chat-session-/react.specs.ts +51 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/creates-a-chat-session-/react.ts +43 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/creates-a-chat-session-/register.ts +24 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/commands.ts +8 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/decide.specs.ts +38 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/decide.ts +33 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/events.ts +10 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/evolve.ts +28 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/handle.ts +24 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/mutation.resolver.ts +25 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/register.ts +7 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/enters-shopping-criteria-into-assistant/state.ts +47 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/commands.ts +8 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/decide.specs.ts +61 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/decide.ts +35 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/events.ts +9 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/evolve.ts +28 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/handle.ts +49 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/mutation.resolver.ts +25 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/register.ts +7 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/selects-items-relevant-to-the-shopping-criteria-/state.ts +47 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/projection.specs.ts +94 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/projection.ts +37 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/query.resolver.ts +56 -0
- package/templates/shopping-app/.context/server/server/src/domain/flows/seasonal-assistant/views-suggested-items/state.ts +4 -0
- package/templates/shopping-app/.context/server/server/src/domain/shared/ReadModel.ts +26 -0
- package/templates/shopping-app/{server/src/domain/shared/index.d.ts → .context/server/server/src/domain/shared/index.ts} +0 -1
- package/templates/shopping-app/{server/src/domain/shared/reactorSpecification.js → .context/server/server/src/domain/shared/reactorSpecification.ts} +116 -22
- package/templates/shopping-app/.context/server/server/src/domain/shared/sendCommand.ts +21 -0
- package/templates/shopping-app/{server/src/domain/shared/types.d.ts → .context/server/server/src/domain/shared/types.ts} +17 -5
- package/templates/shopping-app/.context/server/server/src/server.ts +43 -0
- package/templates/shopping-app/{server/src/utils/index.d.ts → .context/server/server/src/utils/index.ts} +0 -1
- package/templates/shopping-app/{server/src/utils/loadProjections.js → .context/server/server/src/utils/loadProjections.ts} +11 -6
- package/templates/shopping-app/.context/server/server/src/utils/loadRegisterFiles.ts +41 -0
- package/templates/shopping-app/{server/src/utils/loadResolvers.js → .context/server/server/src/utils/loadResolvers.ts} +16 -7
- package/templates/shopping-app/.context/server/server/tsconfig.json +13 -0
- package/templates/shopping-app/.context/server/server/vitest.config.ts +7 -0
- package/templates/shopping-app/auto.config.ts +78 -45
- package/templates/shopping-app/client/src/App.tsx +13 -13
- package/templates/shopping-app/client/src/components/molecules/QuantitySelector.tsx +4 -4
- package/templates/shopping-app/client/src/components/molecules/ShoppingCriteriaForm.tsx +4 -4
- package/templates/shopping-app/client/src/components/molecules/SuggestedItemCard.tsx +6 -6
- package/templates/shopping-app/client/src/components/organisms/AssistantChatInterface.tsx +3 -3
- package/templates/shopping-app/client/src/components/organisms/PageHeader.tsx +2 -3
- package/templates/shopping-app/client/src/components/organisms/SuggestedItemsList.tsx +3 -3
- package/templates/shopping-app/client/src/index.css +10 -14
- package/templates/shopping-app/client/src/pages/AssistantChatPage.tsx +4 -4
- package/templates/shopping-app/client/src/pages/SuggestedItemsPage.tsx +4 -4
- package/templates/shopping-app/example-integrations/product-catalogue/src/product-catalogue-integration.ts +122 -115
- package/templates/shopping-app/flows/shopping-assistant.flow.ts +0 -1
- package/templates/shopping-app/package.json +13 -10
- package/templates/shopping-app/server/package.json +1 -1
- package/templates/shopping-app/.env +0 -8
- package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-build.log +0 -4
- package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-format.log +0 -12
- package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-lint.log +0 -4
- package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-test.log +0 -12
- package/templates/shopping-app/example-integrations/ai-chat-completion/.turbo/turbo-type-check.log +0 -5
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.d.ts +0 -23
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.js +0 -41
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/ai-integration.js.map +0 -1
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.d.ts +0 -2
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.js +0 -2
- package/templates/shopping-app/example-integrations/ai-chat-completion/dist/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/eslint +0 -21
- package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/jiti +0 -21
- package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/msw +0 -21
- package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/tsc +0 -21
- package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/tsserver +0 -21
- package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/vite +0 -21
- package/templates/shopping-app/example-integrations/ai-chat-completion/node_modules/.bin/vitest +0 -21
- package/templates/shopping-app/example-integrations/cart/.turbo/turbo-build.log +0 -4
- package/templates/shopping-app/example-integrations/cart/.turbo/turbo-format.log +0 -12
- package/templates/shopping-app/example-integrations/cart/.turbo/turbo-lint.log +0 -5
- package/templates/shopping-app/example-integrations/cart/.turbo/turbo-test.log +0 -12
- package/templates/shopping-app/example-integrations/cart/.turbo/turbo-type-check.log +0 -5
- package/templates/shopping-app/example-integrations/cart/dist/cart-integration.d.ts +0 -30
- package/templates/shopping-app/example-integrations/cart/dist/cart-integration.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/cart-integration.js +0 -134
- package/templates/shopping-app/example-integrations/cart/dist/cart-integration.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.d.ts +0 -3
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.js +0 -149
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/client.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.d.ts +0 -8
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.js +0 -6
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.d.ts +0 -123
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.js +0 -3
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/types.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.d.ts +0 -46
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.js +0 -285
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client/utils.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.d.ts +0 -13
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.js +0 -6
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/client.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.d.ts +0 -19
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.js +0 -15
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/auth.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.d.ts +0 -18
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.js +0 -58
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/bodySerializer.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.d.ts +0 -34
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.js +0 -89
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/params.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.d.ts +0 -34
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.js +0 -115
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/pathSerializer.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.d.ts +0 -79
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.js +0 -3
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/core/types.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.d.ts +0 -2
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.js +0 -3
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.d.ts +0 -158
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.js +0 -3
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/types.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.d.ts +0 -382
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.js +0 -68
- package/templates/shopping-app/example-integrations/cart/dist/generated/cart/zod.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/index.d.ts +0 -2
- package/templates/shopping-app/example-integrations/cart/dist/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart/dist/index.js +0 -2
- package/templates/shopping-app/example-integrations/cart/dist/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart/node_modules/.bin/eslint +0 -21
- package/templates/shopping-app/example-integrations/cart/node_modules/.bin/jiti +0 -21
- package/templates/shopping-app/example-integrations/cart/node_modules/.bin/msw +0 -21
- package/templates/shopping-app/example-integrations/cart/node_modules/.bin/tsc +0 -21
- package/templates/shopping-app/example-integrations/cart/node_modules/.bin/tsserver +0 -21
- package/templates/shopping-app/example-integrations/cart/node_modules/.bin/vitest +0 -21
- package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-build.log +0 -4
- package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-format.log +0 -10
- package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-lint.log +0 -4
- package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-test.log +0 -12
- package/templates/shopping-app/example-integrations/cart-api/.turbo/turbo-type-check.log +0 -4
- package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.d.ts +0 -18
- package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.js +0 -28
- package/templates/shopping-app/example-integrations/cart-api/dist/data/cart.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart-api/dist/index.d.ts +0 -4
- package/templates/shopping-app/example-integrations/cart-api/dist/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart-api/dist/index.js +0 -49
- package/templates/shopping-app/example-integrations/cart-api/dist/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.d.ts +0 -4
- package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.js +0 -261
- package/templates/shopping-app/example-integrations/cart-api/dist/routes/cart.js.map +0 -1
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/nodemon +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/swagger-jsdoc +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-cwd +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-esm +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-script +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-node-transpile-only +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/ts-script +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/tsc +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/tsserver +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/tsx +0 -21
- package/templates/shopping-app/example-integrations/cart-api/node_modules/.bin/vitest +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-build.log +0 -4
- package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-format.log +0 -12
- package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-lint.log +0 -5
- package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-test.log +0 -12
- package/templates/shopping-app/example-integrations/product-catalogue/.turbo/turbo-type-check.log +0 -5
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.d.ts +0 -3
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.js +0 -149
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/client.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.d.ts +0 -8
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.js +0 -6
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.d.ts +0 -123
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.js +0 -3
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/types.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.d.ts +0 -46
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.js +0 -285
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client/utils.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.d.ts +0 -13
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.js +0 -6
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/client.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.d.ts +0 -19
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.js +0 -15
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/auth.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.d.ts +0 -18
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.js +0 -58
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/bodySerializer.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.d.ts +0 -34
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.js +0 -89
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/params.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.d.ts +0 -34
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.js +0 -115
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/pathSerializer.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.d.ts +0 -79
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.js +0 -3
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/core/types.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.d.ts +0 -2
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.js +0 -3
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.d.ts +0 -115
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.js +0 -3
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/types.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.d.ts +0 -206
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.js +0 -53
- package/templates/shopping-app/example-integrations/product-catalogue/dist/generated/product-catalog/zod.gen.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/index.d.ts +0 -2
- package/templates/shopping-app/example-integrations/product-catalogue/dist/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/index.js +0 -2
- package/templates/shopping-app/example-integrations/product-catalogue/dist/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.d.ts +0 -32
- package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.js +0 -163
- package/templates/shopping-app/example-integrations/product-catalogue/dist/product-catalogue-integration.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/eslint +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/jiti +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/msw +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/tsc +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/tsserver +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue/node_modules/.bin/vitest +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-build.log +0 -4
- package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-format.log +0 -10
- package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-lint.log +0 -5
- package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-test.log +0 -13
- package/templates/shopping-app/example-integrations/product-catalogue-api/.turbo/turbo-type-check.log +0 -5
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.d.ts +0 -10
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.js +0 -75
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/data/products.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.d.ts +0 -4
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.js +0 -49
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/index.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.d.ts +0 -4
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.d.ts.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.js +0 -170
- package/templates/shopping-app/example-integrations/product-catalogue-api/dist/routes/products.js.map +0 -1
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/nodemon +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/swagger-jsdoc +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-cwd +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-esm +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-script +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-node-transpile-only +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/ts-script +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/tsc +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/tsserver +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/tsx +0 -21
- package/templates/shopping-app/example-integrations/product-catalogue-api/node_modules/.bin/vitest +0 -21
- package/templates/shopping-app/pnpm-workspace.yaml +0 -2
- package/templates/shopping-app/server/src/domain/shared/ReadModel.d.ts +0 -10
- package/templates/shopping-app/server/src/domain/shared/ReadModel.d.ts.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/ReadModel.js +0 -19
- package/templates/shopping-app/server/src/domain/shared/ReadModel.js.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/index.d.ts.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/index.js +0 -5
- package/templates/shopping-app/server/src/domain/shared/index.js.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/reactorSpecification.d.ts +0 -56
- package/templates/shopping-app/server/src/domain/shared/reactorSpecification.d.ts.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/reactorSpecification.js.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/sendCommand.d.ts +0 -7
- package/templates/shopping-app/server/src/domain/shared/sendCommand.d.ts.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/sendCommand.js +0 -16
- package/templates/shopping-app/server/src/domain/shared/sendCommand.js.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/types.d.ts.map +0 -1
- package/templates/shopping-app/server/src/domain/shared/types.js +0 -40
- package/templates/shopping-app/server/src/domain/shared/types.js.map +0 -1
- package/templates/shopping-app/server/src/utils/index.d.ts.map +0 -1
- package/templates/shopping-app/server/src/utils/index.js +0 -4
- package/templates/shopping-app/server/src/utils/index.js.map +0 -1
- package/templates/shopping-app/server/src/utils/loadProjections.d.ts +0 -3
- package/templates/shopping-app/server/src/utils/loadProjections.d.ts.map +0 -1
- package/templates/shopping-app/server/src/utils/loadProjections.js.map +0 -1
- package/templates/shopping-app/server/src/utils/loadRegisterFiles.d.ts +0 -6
- package/templates/shopping-app/server/src/utils/loadRegisterFiles.d.ts.map +0 -1
- package/templates/shopping-app/server/src/utils/loadRegisterFiles.js +0 -26
- package/templates/shopping-app/server/src/utils/loadRegisterFiles.js.map +0 -1
- package/templates/shopping-app/server/src/utils/loadResolvers.d.ts +0 -5
- package/templates/shopping-app/server/src/utils/loadResolvers.d.ts.map +0 -1
- 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 {
|
|
5
|
-
|
|
6
|
-
|
|
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 {
|
|
9
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
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) =>
|
|
85
|
-
{
|
|
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) =>
|
|
89
|
-
|
|
90
|
-
|
|
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) =>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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) =>
|
|
100
|
-
{
|
|
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) =>
|
|
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
|
-
|
|
7
|
-
|
|
6
|
+
import { AssistantChatPage } from '@/pages/AssistantChatPage';
|
|
7
|
+
import { SuggestedItemsPage } from '@/pages/SuggestedItemsPage';
|
|
8
8
|
|
|
9
9
|
export const App = () => (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
-
|
|
8
|
-
}
|
|
7
|
+
return <div />;
|
|
8
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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
|
-
|
|
8
|
-
}
|
|
7
|
+
return <div />;
|
|
8
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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
|
-
|
|
10
|
-
}
|
|
9
|
+
return <div />;
|
|
10
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ShoppingCriteriaForm } from
|
|
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
|
-
|
|
14
|
-
}
|
|
13
|
+
return <div />;
|
|
14
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SuggestedItemCard } from
|
|
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
|
-
|
|
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
|
|
2
|
-
import { AssistantChatInterface } from
|
|
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
|
-
|
|
8
|
-
}
|
|
7
|
+
return <div />;
|
|
8
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { PageHeader } from
|
|
2
|
-
import { SuggestedItemsList } from
|
|
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
|
-
|
|
8
|
-
}
|
|
7
|
+
return <div />;
|
|
8
|
+
}
|
|
@@ -38,7 +38,7 @@ type ProductCatalogQueries = {
|
|
|
38
38
|
ProductDetails: (params: { id: string }) => Promise<ProductDetails>;
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
|
|
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
|
|
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
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
//
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
|
|
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
|
-
//
|
|
197
|
-
interface
|
|
198
|
-
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
+
});
|